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

Menino coberto de óleo traduz em imagem a tragédia do litoral nordestino

Menino coberto de óleo deixa água na praia de Cabo de Santo Agostinho (PE) - Leo Malafaia/AFP
Menino coberto de óleo deixa água na praia de Cabo de Santo Agostinho (PE)
Imagem: Leo Malafaia/AFP

25/10/2019 10h55

A imagem deu a volta ao mundo: um menino sai da água do mar com os olhos fechados e os braços abertos, em um gesto de impotência, com o corpo coberto por um saco de lixo, empapado do óleo que há quase dois meses se espalha pelo litoral nordestino.

Foi registrada por um fotógrafo colaborador da AFP, Léo Malafaia, na praia de Itapuama, em Cabo de Santo Agostinho (Pernambuco), em 21 de outubro, por volta das 11h da manhã.

O fotógrafo compartilhou sua foto no Instagram, junto à uma sequência de registros. Veja abaixo.

Naquele dia, Everton Miguel dos Anjos, de 13 anos, junto com os quatro irmãos e vários primos se somaram às centenas de voluntários que retiravam os resíduos de petróleo cru espalhados na areia ou incrustados nas pedras.

Entrou no mar com uma camiseta, mas a tirou quando viu o corpo enegrecido. Improvisou uma túnica com um saco de lixo e voltou para a água.

O jovem contou ao fotógrafo que sua mãe, que istra um bar na praia, brigou com ele quando viu as fotos, publicadas por muitos dos principais veículos de comunicação pelo mundo.

"Eu tinha pedido permissão para ajudar a limpar a praia e ela me deu, mas com a condição de que eu não me sujasse!", disse Everton.

Menino coberto de óleo simboliza a tragédia no litoral do Nordeste

AFP

O Ministério da Saúde lembrou na semana ada que a inalação de vapores de petróleo ou o contato físico com suas substâncias tóxicas é perigoso.

Nesta quinta-feira, quatro dias depois do registro fotográfico, apenas alguns fragmentos de petróleo eram vistos na praia. O Exército tinha se encarregado da operação de limpeza, proibindo a participação de crianças. Desde o início da catástrofe, foram recolhidas mil toneladas de petróleo, segundo dados da Marinha.

O vazamento foi avistado pela primeira vez na Paraíba em 30 de agosto e desde então foi detectado ao longo de 2.250 quilômetros, chegando a praias paradisíacas em uma região pobre e fortemente dependente do turismo.

Cerca de 200 localidades foram afetadas.

Várias ONGs têm denunciado a lentidão das autoridades em reagir e a falta de recursos para combater o que muitos especialistas consideram a pior catástrofe ambiental do nordeste brasileiro.