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

Chico Alves

Escolha para a Suprema Corte mais uma vez aproxima Trump de Bolsonaro

Os presidentes Jair Bolsonaro e Donald Trump, em reunião de 2019 em Washington - Mark Wilson/Getty Images
Os presidentes Jair Bolsonaro e Donald Trump, em reunião de 2019 em Washington Imagem: Mark Wilson/Getty Images

Colunista do UOL

26/09/2020 19h57

Além da bajulação que dedica a Donald Trump, o presidente Jair Bolsonaro muitas vezes força a barra para aumentar as semelhanças com o homem mais poderoso dos Estados Unidos. Bolsonaro copia Trump nas crítcas à Venezuela, nos ataques à OMS, nas acusações à China, no negacionismo da crise ambiental e até na exaltação das propriedades não comprovadas da cloroquina.

Nesse roteiro de imitação mal-acabada do chefão da Casa Branca, quis o destino que Bolsonaro tivesse outra grande oportunidade de mostrar-se como avatar de Trump no Hemisfério Sul.

Nos Estados Unidos, a morte da juíza progressista Ruth Bader Ginsburg abriu para o presidente a oportunidade de convocar para a Suprema Corte um nome conservador, mais afeito à sua ideologia.

Assim, Amy Coney Barrett foi anunciada hoje como a escolhida. Falta a confirmação no Senado.

Como disse Trump, sem sequer se dar ao trabalho de esconder seus objetivos casuísticos, ele não abriria mão de fazer essa escolha — como pediu Ginsburg pouco antes de morrer — porque a eleição presidencial desse ano pode ser decidida na Suprema Corte.

A indicação de Barrett muda a composição do mais importante tribunal americano, que a partir de sua posse vai ampliar a maioria conservadora.

Por aqui, o ministro Celso de Mello, do Supremo Tribunal Federal, informou ontem que vai antecipar a aposentadoria para outubro. Bolsonaro, então, já está em processo de escolha de um substituto que combine com sua ideologia.

Não há nesse momento nenhuma eleição presidencial no Brasil para ser resolvida pelo STF, mas são muitas as pautas de interesse de Bolsonaro prestes a serem julgadas, desde temas ideológicos a processos que envolvem seus três filhos.

Até onde a vista alcança, o ministro Jorge Oliveira, da Secretaria-Geral da Presidência, é o favorito. Mas André Mendonça, o ministro da Justiça, e Augusto Aras, o Procurador-Geral da República, também têm chances.

Diferente da corte americana, a escolha de Bolsonaro para substituir Celso de Mello não constituiria uma maioria conservadora no Supremo, mas a correlação de forças começa a mudar.

Tanto lá como cá, o notório saber jurídico não é, nem de longe, um item a ser considerado. Trump e Bolsonaro querem apenas magistrados que votem a seu favor, nada mais. Os dois governantes, assim, estão mais uma vez afinados: importam-se mais com seus próprios umbigos que com os países que presidem.

A grande diferença é que Bolsonaro já anunciou que um dos insólitos critérios para indicar o próximo ministro é que ele seja parceiro de cerveja nos fins de semana. Ao contrário do colega brasileiro, o bilionário Trump não tem nenhum jeitão de que curtiria uma loira gelada nos domingos de churrasco na Barra da Tijuca.