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

Crivella xinga Doria de 'vagabundo' e usa termo homofóbico; assista

Colaboração para o UOL

19/11/2020 08h35Atualizada em 19/11/2020 10h35

Prefeito do Rio de Janeiro e candidato à reeleição, Marcelo Crivella (Republicanos) aparece xingando o governador de São Paulo, João Doria (PSDB), em um vídeo que viralizou hoje nas redes sociais. Depois, em nota enviada ao UOL, Crivella pediu desculpas ao tucano, que lamentou o ocorrido e disse que o carioca "se apequena". (leia mais abaixo).

Nas imagens, Crivella, em tom exaltado, grita que Doria é "vagabundo" e também usa um termo homofóbico, "viado", para ofendê-lo. O prefeito estava falando sobre as OS (Organizações Sociais) de saúde.

Eu entrei na Justiça contra esses vagabundos. Sabe o que eles fizeram? Dei dinheiro para pagar aos funcionários, eles pegaram e pagaram fornecedor, que tinha que pagar dia 10 de dezembro. E faltou dinheiro. Sabe de quem é essa OS? Essa OS é de São Paulo. É do Doria. Viado! Vagabundo!
Marcelo Crivella, prefeito do Rio

De acordo com o jornal O Globo, os xingamentos aconteceram em uma reunião com filiados do Republicanos que disputaram a eleição para vereador. O evento aconteceu ontem, na Barra da Tijuca, no Rio de Janeiro. Após os gritos de Crivella, os presentes vibram com as ofensas e aplaudem o prefeito.

O vídeo foi publicado no Facebook por Sandro Avelar, presidente da escola de samba Império Serrano. Ele apoia Eduardo Paes (DEM) no segundo turno da disputa pela prefeitura do Rio.

Em pesquisa divulgada ontem pelo Ibope, Paes lidera a disputa pelo segundo turno com 53% das intenções de voto, contra 23% de Crivella.

"Momento de revolta", diz Crivella

Em nota enviada ao UOL, a campanha de Crivella disse que a manifestação do prefeito foi um "momento de revolta" e pediu desculpas ao governador de São Paulo.

"A fala foi um momento de revolta pela OS reter o salário de médicos e enfermeiros mesmo tendo recebido da prefeitura. Em tempos de pandemia isso pode custar vidas. Marcelo Crivella pede desculpas pelos excessos, e ao governador João Doria."

Depois Crivella divulgou a mesma mensagem nas redes sociais.

Crivella "se apequena", diz Doria

A reportagem também procurou a assessoria de João Doria, que se manifestou pelo Twitter. O governador disse que o prefeito deveria dar exemplo, mas "se apequena" com as ofensas. E apostou que Crivella não conseguirá a reeleição para prefeito.