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

FHC pede protestos contra governo, e Heleno rebate: "Por qué no te callas"

O ex-presidente Fernando Henrique Cardoso  - Felix Lima/BBC News Brasil
O ex-presidente Fernando Henrique Cardoso Imagem: Felix Lima/BBC News Brasil

Do UOL, em São Paulo

05/10/2019 21h51

O ex-presidente Fernando Henrique Cardoso (PSDB) usou sua conta no Twitter neste sábado (5) para criticar medidas do governo federal, ainda que de forma velada, e convocar protestos em defesa da democracia brasileira.

"A violência dos bandidos assim como as do governo preocupam", escreveu FHC na rede social. "Armas nas mãos de bandidos ou de quem não sabe usá-las aumenta o medo. Demitir funcionários em áreas culturais por ideologia repete o desatino. Sem reação as democracias morrem. Há liberdade para protestar. Usemo-la", completou no post FHC.

Na postagem, ao criticar as violências do governo, listá-las em seguida e pedir protestos contra as medidas, FHC não deixa dúvidas sobre o alvo das críticas.

No trecho em que afirma que as armas nas mãos de quem não sabe usá-las, é possível aferir uma crítica ao projeto de liberação generalizada de posse e porte de armas no Brasil do presidente Jair Bolsonaro.

O governo federal também demitiu funcionários da Ancine, supostamente por questões ideológicas, e instaurou uma espécie de comissão de censura ideológica para projetos culturais receberem apoio da Caixa -- movimento chamado de "desatino" pelo ex-presidente.

Chefe do GSI reage

Horas depois da postagem do ex-presidente, foi a vez do general Heleno, chefe do GSI (Gabinete de Segurança Institucional), rebater em espanhol: "Por qué no te callas", afirmou o integrante do governo Bolsonaro.

A resposta de Heleno é uma referência a uma resposta do então rei da Espanha, Juan Carlos, ao então presidente da Venezuela, Hugo Chávez, em 2007.

Na ocasião, durante a XVII Conferência Ibero-Americana, realizada na cidade de Santiago do Chile, o rei mandou Chávez ficar quieto após as interrupções do presidente venezuelano durante fala do então primeiro-ministro espanhol José Luis Rodríguez Zapatero em defesa do ex-primeiro-ministro José María Aznar. Chávez criticava duramente Aznar devido ao suposto apoio ao fracassado golpe de estado contra o presidente venezuelano em 2002.