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

Polícia do Rio oferece proteção à viúva de Marielle após relato de ameaças

Armando Paiva/Parceiro/Agência O Globo
Imagem: Armando Paiva/Parceiro/Agência O Globo

Marina Lang

Colaboração para o UOL, no Rio

06/08/2018 19h13

A DH (Divisão de Homicídios) da Polícia Civil do Rio de Janeiro ofereceu proteção a Monica Benício, viúva da vereadora de Marielle Franco (PSOL), nesta segunda-feira (6). A parlamentar foi assassinada com seu motorista, Anderson Gomes, em 14 de março, na região central da capital fluminense.

A proteção foi oferecida porque Monica relatou ter sofrido ameaças na rua e em redes sociais, além de ter sido perseguida por um carro branco duas vezes no mesmo dia, perto de sua casa, há cerca de dois meses. As ameaças levaram-na a procurar a Comissão Interamericana de Direitos Humanos, que é vinculada à OEA (Organização dos Estados Americanos). A comissão então pediu que o Brasil adotasse medidas protetivas.

Monica prestou depoimento hoje na DH Capital, na Barra da Tijuca, zona oeste carioca, durante quase três horas, mas não revelou o teor porque, segundo ela, as investigações estão sob sigilo.

"Eles ofereceram [proteção] e se colocaram à disposição, e o que tem que acontecer agora é o estado se dirigir a mim para decidir quais medidas serão adotadas", declarou ela em entrevista logo depois de prestar depoimento.

Ela negou, no entanto, que vá ingressar no Programa de Proteção a Testemunhas. "A princípio não [vai entrar no programa]. Isso [medidas de segurança] vai ter que ser discutido e eu não tenho muita informação sobre isso ainda", afirmou.

Monica disse ainda que estudará nesta semana quais medidas de segurança pessoal deve adotar. A OEA, de acordo com ela, apenas cobra o estado brasileiro em relação à proteção.

Sobre as ameaças, ela disse que foi abordada por um homem na rua. "Um cara ou por mim e disse: "ô, sapatão, tá falando demais, hein?Cuidado para não ser a próxima", afirmou.

Em relação às ameaças recebidas na internet, ela disse que mensagens chegaram via redes sociais. "São mensagens que vi no Twitter, com discurso de ódio", resumiu.

Apesar dos 145 dias sem respostas sobre o homicídio, ela disse que confia no trabalho da polícia em relação ao caso. "Eles estão trabalhando efetivamente. Sei que a polícia está fazendo seu trabalho, mas vou continuar cobrando", declarou.