;(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

Voto impresso é necessidade, diz Bolsonaro ao criticar voto eletrônico

Tatiana Campbell

Colaboração para o UOL, no Rio

29/11/2020 10h47Atualizada em 29/11/2020 16h01

O presidente Jair Bolsonaro (sem partido) votou hoje de manhã na escola municipal Rosa Da Fonseca, na Vila Militar, na zona oeste do Rio de Janeiro. Sem apresentar provas de possíveis fraudes, ele voltou a questionar a segurança do voto eletrônico e declarou ter votado em Marcelo Crivella (Republicanos).

"Eu espero do sistema eleitoral brasileiro que em 2022 tenhamos um sistema seguro, que possa dar garantias ao eleitor que, em quem ele votou, o voto foi efetivamente para aquela pessoa. O voto impresso é uma necessidade, as reclamações são demais. Eu estou vendo trabalho de hacker aqui e em qualquer lugar. A apuração tem que ser pública. Quem não quer entender isso, eu não sei o que pensa da democracia", afirmou o presidente.

A fala do presidente acontece no dia seguinte à prisão, em Portugal, de um suspeito de ter participado de um ataque hacker ao TSE (Tribunal Superior Eleitoral). A invasão no sistema no primeiro turno divulgou informações de funcionários, mas não colocou em risco o sistema de votação, de acordo com o tribunal. As urnas não ficam conectadas à internet, e a transmissão dos votos para totalização do resultado é feita por uma rede própria do tribunal que usa comunicação criptografada.

Neste domingo, Bolsonaro disse ainda que tem conversado com as lideranças do Congresso para avaliar a volta do voto impresso.

"Podemos continuar votando e não tendo a certeza se aquele voto foi ou não para aquela pessoa. E deixar bem claro, o voto impresso, ninguém bota a mão no papel, fica atrás do visor. Ele concorda depois de seu voto ser imprimido (SIC) e cai dentro da urna. Qualquer delegado de partido pode pedir recontagem naquela área e você vai ter a comprovação do voto eletrônico no papel, é pedir muito? No meu entender, quem não quer entender isso, não sei o que pensa da democracia", afirmou o presidente.

Logo na sequência, o presidente da Câmara, Rodrigo Maia (DEM-RJ), reagiu, dizendo que falar em voto impresso "coloca em xeque" o atual sistema eleitoral, que ele considera "muito seguro".

'O povo decidiu'

Acompanhado por seguranças, o presidente chegou por volta das 10h40 a escola e falou rapidamente com cerca de 30 apoiadores que o aguardavam no local. Usando máscara, Bolsonaro pegou uma criança no colo antes de entrar na escola para votar.

Na saída, já sem máscara, ele falou com a imprensa. "Eu votei no Crivella, todo mundo sabe disso. Fiz carreata, comício para alguém? Discretamente meu nome para alguns candidatos e o povo decidiu", declarou. O presidente deve retornar a Brasília no início da tarde.

Crivella, atual prefeito, disputa a reeleição no Rio com o ex-prefeito Eduardo Paes (DEM). O envolvimento de Bolsonaro era visto pela campanha do prefeito como fundamental para reverter a desvantagem em relação a Paes, que lidera com folga as pesquisas de intenção de voto.

Você utiliza a Alexa? O UOL é o parceiro oficial da assistente de voz da Amazon, com boletins de notícias e dados atualizados das últimas pesquisas eleitorais e dos resultados do 2º turno. Para saber sobre a eleição na sua cidade com a credibilidade do UOL, pergunte: "Alexa, qual é o resultado da pesquisa eleitoral em São Paulo?", por exemplo, ou "Alexa, quem ganhou a eleição no Rio de Janeiro?". Nos encontramos lá!