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

Filho de 1 ano de bombeiro morto em incêndios na Austrália recebe medalha

Foto divulgada pelo Serviço Rural de Bombeiros da Nova Gales do Sul mostra comissário fixando uma medalha no bebê Harvey Keaton, que usava chupetas - AFP PHOTO / New South Wales Rural Fire Service
Foto divulgada pelo Serviço Rural de Bombeiros da Nova Gales do Sul mostra comissário fixando uma medalha no bebê Harvey Keaton, que usava chupetas Imagem: AFP PHOTO / New South Wales Rural Fire Service

Do UOL, em São Paulo

02/01/2020 15h47

Usando uma chupeta, um bebê de apenas 1 ano e 9 meses chamado Harvey recebeu uma medalha para homenagear seu pai, o bombeiro Geoffrey Keaton, morto durante os incêndios que atingem a Austrália.

Geoffrey é um dos voluntários que perderam a vida enquanto combatiam o fogo que se alastrou pelo país nos últimos dias. Ele tinha 32 anos e morreu no dia 19 de dezembro, após o caminhão onde estava atingir uma árvore em chamas.

A foto do momento da homenagem ao bombeiro aconteceu durante seu funeral e foi divulgada pelo Serviço Rural de Bombeiros da Nova Gales do Sul.

Na imagem, o comissário Shane Fitzsimmons aparece colocando a medalha no filho do voluntário - que recebeu o mérito por "Bravura" e "Serviços Extraordinários".

Dezenas de bombeiros, segundo o site Sky News, formaram uma espécie de guarda de honra assim que o carro funerário do pai de Harvey entrou em um cemitério de Sydney.

Velório do bombeiro Geoffrey Keaton, que morreu após ter seu veículo atingido por uma árvore enquanto combatia incêndios na Austrália - HANDOUT/AFP - HANDOUT/AFP
Velório do bombeiro Geoffrey Keaton, que morreu após ter seu veículo atingido por uma árvore enquanto combatia incêndios na Austrália
Imagem: HANDOUT/AFP

Situação caótica

Desde a semana ada, milhares de australianos que viajaram no feriado precisaram fugir da aproximação de novos incêndios florestais, que são originários de cidades no litoral leste do país.

De acordo com a Reuters, mais de 200 incêndios estão ativos nos estados de Nova Gales do Sul e Vitória. Nestas duas regiões, oito pessoas morreram desde a última segunda-feira (30) e há outras desaparecidas.

Nos últimos meses, incêndios florestais já devastaram mais de 4 milhões de hectares de terras áridas e mais de mil casas foram destruídas - 381 delas só nesta semana.