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

Bolsonaro: proibição de live no Alvorada é estapafúrdia e seguirei fazendo

Do UOL, em Brasília

25/09/2022 15h35

O presidente Jair Bolsonaro (PL) classificou hoje (25) a decisão do TSE (Tribunal Superior Eleitoral) que proibiu a gravação de lives de cunho eleitoral no Palácio do Alvorada de "estapafúrdia" e disse que é "invasão de propriedade privada". O chefe do Executivo afirmou ainda que fará uma transmissão ainda neste domingo, mas não informou o horário.

"É uma decisão estapafúrdia. Invasão de propriedade privada. Enquanto sou presidente, é minha casa", disse Bolsonaro a jornalistas enquanto cumprimentava apoiadores em frente ao Palácio do Itamaraty. "Vou fazer live. Hoje vai ter live", completou. O vídeo da declaração do presidente foi gravado pelo jornalista Hamilton Ferrari, do Poder360.

O Alvorada é a residência oficial do presidente da República. Projetado pelo arquiteto Oscar Niemeyer, foi inaugurado em 1958 e ou a ser habitado por Juscelino Kubitschek. Segundo o governo federal, as primeiras obras de restauração aconteceram entre 2004 e 2006 —durante o governo de Luiz Inácio Lula da Silva (PT).

Hoje, sem compromissos na agenda oficial, Bolsonaro deixou o Palácio do Alvorada e ou pelo Guará e pela Esplanada dos Ministérios. Durante as paradas, falou com apoiadores e tirou fotos.

Questionado se iria recorrer da decisão do ministro Benedito Gonçalves, Bolsonaro evitou responder e disse para consultar a AGU (Advocacia-Geral da União). A multa para descumprimento é de R$ 20 mil reais por live.

Entenda a decisão. O ministro ainda determinou que o YouTube, o Instagram e o Facebook removam postagens de transmissões ao vivo do presidente com conteúdo considerado eleitoral. Gonçalves analisou um pedido do PDT, partido do presidenciável Ciro Gomes.

"Os indícios até aqui reunidos indicam que, no caso, tanto o imóvel destinado à residência oficial do Presidente da República quanto os serviços de tradução para libras custeados com recursos públicos foram destinados à produção de material de campanha", escreveu o ministro.

Isonomia entre candidatos. Segundo o magistrado, as lives podem "ferir a isonomia entre candidatos e candidatas da eleição presidencial, uma vez a destinação de bens e recursos públicos em favor do candidato à reeleição, especialmente a residência oficial do Presidente, redunda em vantagem não autorizada pela legislação eleitoral ao atual incumbente do cargo".

Bolsonaro se nega a responder sobre ida ao debate

O presidente Jair Bolsonaro não quis responder se iria ao debate presidencial da TV Globo, marcado para a próxima quinta-feira (29). "Não vou responder isso", reforçou o presidente.

Bolsonaro foi ao debate promovido pelo SBT, que ocorreu ontem (24), mas a presença no último debate ainda envolve suspense. Segundo a apuração da colunista Carla Araújo, a decisão deve acontecer apenas nas vésperas do evento —mas aliados haviam afirmado que ele considerava ir.