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

João Pedro foi baleado pelas costas, aponta laudo cadavérico

João Pedro, 14, foi morto após operação policial em São Gonçalo (RJ) - Reprodução/Twitter/@_danblaz
João Pedro, 14, foi morto após operação policial em São Gonçalo (RJ) Imagem: Reprodução/Twitter/@_danblaz

Do UOL, em São Paulo

28/05/2020 13h09

O adolescente João Pedro Mattos Pinto, de 14 anos, foi morto por um tiro de fuzil disparado em direção às suas costas, segundo informação que consta no laudo cadavérico, que faz parte do inquérito que investiga o homicídio. De acordo com a Delegacia de Homicídios de Niterói, São Gonçalo e Itaboraí (DHNSGI), o projétil entrou no corpo pela região torácica posterior — nas costas, na altura da axila direita.

Ainda de acordo com este exame, a bala foi encontrada na região escapular esquerda, o que indica uma trajetória de baixo para cima na diagonal. A delegacia destaca a necessidade de se realizar uma simulação dos eventos que levaram à morte do garoto.

O projétil que atingiu o garoto foi calibre 556, que foi recolhido por peritos da Polícia Civil, mesmo calibre de um fuzil que foi utilizado por um agente da Coordenadoria de Recursos Especiais (Core) durante a operação.

Segundo O Globo, a Delegacia de Homicídios de Niterói, São Gonçalo e Itaboraí (DHNSGI), responsável por investigar o crime, aguarda resultado de um confronto balístico que vai determinar de que arma saiu o projétil, entre as usadas pelos três policiais que atiraram na ocasião.

Os policiais foram afastados e estão realizando, no momento, apenas atividades burocráticas.

Familiares e amigos da vítima disseram ao UOL que ele brincava no quintal da casa de um tio quando os policiais invadiram o imóvel e o atingiram na barriga. Já a Polícia Civil alega que o menino foi atingido durante uma troca de tiros entre bandidos e policiais, sendo socorrido de helicóptero.

O corpo do jovem só foi encontrado pela família 17 horas depois, no IML (Instituto Médio Legal), sem vida. A delegacia de homicídios da Baixada Fluminense alega que a família do menino foi avisada sobre a morte no dia do socorro.

Allan Duarte, delegado e titular da Divisão de Homicídios de Niterói e São Gonçalo (DHNSG), responsável pela investigação, disse acreditar que o caso será solucionado rápido. Ontem, o piloto e o comandante da aeronave que fizeram o resgate de João Pedro foram ouvidos na delegacia.