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

Angra: Após corpo de corretora, boia é achada nas buscas por ex-marido

Polícia acredita que boia pode ser do barco desaparecido em Angra. O corpo de Cristiane Nogueira já foi resgatado. Buscas por Leonardo Machado continuam - Divulgação Polícia Civil
Polícia acredita que boia pode ser do barco desaparecido em Angra. O corpo de Cristiane Nogueira já foi resgatado. Buscas por Leonardo Machado continuam Imagem: Divulgação Polícia Civil

Tatiana Campbell

Colaboração para o UOL, no Rio de Janeiro

03/09/2021 11h21Atualizada em 03/09/2021 12h04

A Capitania dos Portos encontrou uma boia que acredita ser da embarcação usada pelo casal Leonardo Machado e Cristiane Nogueira, que desapareceu em Angra dos Reis, na Costa Verde Fluminense. O corpo da corretora já foi resgatado.

"A boia foi encontrada próxima ao local onde foi localizado o corpo da Cristiane. As buscas continuam, as investigações continuam até encontrarmos o barco, o Leonardo e entendermos o que aconteceu com esse casal. As buscas estão concentradas na Baía de Sepetiba", disse ao UOL Vilson de Almeida, delegado responsável pelo caso.

Os dois desapareceram no dia 22 de agosto quando saíram de barco para ver o pôr do sol na Lagoa Verde, um dos pontos turísticos mais visitados da Ilha Grande. A polícia acredita que a embarcação tenha naufragado.

Nesta quarta-feira (1) a polícia informou que teve o a um vídeo, feito por um frequentador da praia da Restinga de Marambaia, em Barra de Guaratiba, na Zona Oeste do Rio de Janeiro, onde é possível ver um sinalizador sendo disparado, na noite de segunda-feira (30), no mesmo local onde o corpo da corretora apareceu.

A Polícia Civil já descartou a possibilidade de violência contra Cristiane Nogueira já que o laudo do Instituto de Médico Legal não indicou sinais de lesão no corpo da mulher. Apesar disso, a causa da morte não pôde ser determinada devido ao avançado estado de decomposição do corpo. O laudo do IML apontou que a causa provável da morte de Cristiane foi afogamento.

De acordo com familiares, o casal estava separado há três anos e tentava uma reconciliação. Cristiane e Leonardo moraram juntos por 8 anos. Ela morava no Rio de Janeiro e, de acordo com relato do filho, foi para Angra dos Reis a convite do ex-marido para ar o final de semana.