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

Esse conteúdo é antigo

Freixo e Molon criticam rejeição do pedido de impeachment de Crivella

Marcelo Freixo (PSOL) enfrentou Crivella no segundo turno das eleições de 2016 - Ricardo Borges/UOL
Marcelo Freixo (PSOL) enfrentou Crivella no segundo turno das eleições de 2016 Imagem: Ricardo Borges/UOL

Do UOL, em São Paulo

03/09/2020 20h40

Os deputados federais Marcelo Freixo (PSOL-RJ) e Alessandro Molon (PSB-RJ) criticaram os membros da Câmara de Vereadores do Rio de Janeiro que rejeitaram hoje o pedido de impeachment do prefeito da cidade, o bispo Marcelo Crivella (Republicanos).

A ação de impedimento foi motivada pela denúncia de que servidores comissionados atuavam para impedir o trabalho de jornalistas e demandas da população em unidades de saúde do Rio, segundo revelou reportagem da TV Globo. Investigada em diferentes frentes, a ação seria coordenada por meio de grupos em aplicativos de mensagens — o maior deles batizado de "Guardiões do Crivella"

Em seu perfil oficial do Twitter, Freixo — que enfrentou o bispo no segundo turno das eleições municipais de 2016 — chamou os vereadores cariocas de "capachos" do prefeito e comparou o plenário aos Guardiões do Crivella.

"Os guardiões do Crivella não estão apenas na frente dos hospitais para censurar a população", disse Freixo. "Vergonha", concluiu.

A crítica de Molon — que foi o candidato da Rede à Prefeitura do Rio em 2016 — seguiu no mesmo tom e também comparou os membros da Câmara com os funcionários que recebiam para impedir que jornalistas tivessem o aos problemas da saúde do Rio.

"Pelo visto os "Guardiões do Crivella" não se restringem ao vergonhoso esquema de intimidação a jornalistas e pacientes nas portas dos hospitais", escreveu o deputado em seu Twitter.

"O Rio de Janeiro não merece isso", declarou.

Votação no Câmara

Apesar da rejeição, Crivella ainda pode ser investigado por uma I na Câmara dos Vereadores por esse esquema. Em sua maioria, os vereadores da base do prefeito argumentaram que o mandato encontra-se em sua reta final e que itir a abertura de um processo de impeachment poderia "tumultuar" a disputa à Prefeitura do Rio, na qual ele é candidato à reeleição.

O vereador Marcelo Siciliano (PP) foi um dos poucos que disse acreditar que Crivella não tinha responsabilidade sobre as atitudes dos seus "guardiões". "Não podemos culpar uma pessoa pelos atos de terceiros, nós nem sequer temos a certeza da ingerência do prefeito nesse esquema. Não podemos ser levianos", afirmou.

De acordo com a reportagem da TV Globo, contudo, o próprio prefeito participava das trocas de mensagens e parabenizava os integrantes do grupo por intimidações aos jornalistas que faziam reportagens sobre a crise na saúde municipal.

A fala dele foi contestada pelo vereador Brizola Neto (PSOL): "[Os guardiões] São jagunços do prefeito pagos com dinheiro público. Em nome da democracia, precisamos afastar o bispo Crivella da Prefeitura já, agora".