;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Frota faz vídeo irônico 'apresentando' a Tarcísio locais de São Paulo

Do UOL, em São Paulo

23/09/2022 10h59

O deputado federal e candidato à reeleição Alexandre Frota (PSDB-SP) fez um vídeo "mostrando" pontos turísticos e de relevância na cidade de São Paulo a Tarcísio de Freitas (Republicanos), candidato ao governo do estado que, durante entrevista, não soube responder qual era seu local de votação.

"Grande Tarcísio, carioca, gente boa. São Paulo recebe o Brasil de braços abertos, e você que chegou agora, seja bem-vindo. Eu vou te apresentar São Paulo", diz o deputado, que também é carioca.

"Você conhece a Mooca? E a Bela Vista? São Paulo é uma terra de oportunidades. Isso tudo é um pouco da cidade de São Paulo, onde fica o Palácio dos Bandeirantes. Eu vi que você nunca pagou um imposto para o estado de São Paulo", continua o candidato.

Críticas sobre falta de vínculo de Tarcísio com São Paulo vêm desde candidatura. A crítica de Frota — de que Tarcísio não conhece o estado que pretende governar — já foi repetida em outros momentos para além do esquecimento do endereço do colégio de votação, que fica na cidade de São José dos Campos.

Nascido no Rio de Janeiro, Tarcísio morava em Brasília e transferiu seu título de eleitor em setembro de 2021, após declarar endereço em São José dos Campos, no interior paulista, onde alega ter familiares residindo há mais de 20 anos.

Anteriormente, ações no TRE-SP (Tribunal Regional Eleitoral de São Paulo) contestaram a mudança de domicílio eleitoral de Tarcísio, mas foram derrotadas.

A transferência foi feita para que ele pudesse se candidatar por São Paulo, já que a Justiça Eleitoral exige uma residência mínima de três meses no novo domicílio eleitoral.

No entanto, reportagem da Folha de S.Paulo apontou que o ex-ministro não morava no endereço declarado. Tarcísio indicou como residência um apartamento em um bairro nobre que, segundo os papéis, foi alugado diretamente de seu cunhado.

Em entrevista ao programa Roda Viva em junho, após decisão favorável a sua candidatura, Tarcísio disse não temer qualquer impedimento à sua candidatura em função das ações jurídicas questionando a validade da transferência de domicílio.

"Há relação de afinidade, trabalho, afetiva, não é simplesmente o domicílio físico", completou, destacando que seu caso é diferente do de Sergio Moro, que teve a transferência para São Paulo impugnada.

"Eu comecei minha trajetória profissional nas Forças Armadas em Campinas. É um pouco 'forçação' de barra dizer que não tenho vínculo com o Estado. Eu tenho família em São José dos Campos", declarou Tarcísio na ocasião.