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

Guerra da Rússia-Ucrânia

Notícias do conflito entre Rússia e Ucrânia


Esse conteúdo é antigo

Ucrânia acusa Rússia de bombardear maternidade em Mariupol, no sul do país

Colaboração para o UOL, em Brasília*

09/03/2022 12h19Atualizada em 09/03/2022 18h47

Militares russos lançaram hoje bombas em um hospital infantil e maternidade na cidade ucraniana de Mariupol, no sul do país —crucial para a estratégia russa na Ucrânia—, informaram o governo e o porta-voz da polícia local. O ataque teria deixado pelo menos 17 feridos, segundo funcionários do centro de saúde.

O prédio ficou completamente destruído, segundo imagens publicadas pela Câmara Municipal em redes sociais.

"Os nazistas [russos] bombardearam deliberadamente um hospital infantil em Mariupol de aviões. Até agora, as forças de ocupação russas lançaram várias bombas em um hospital infantil. A destruição é enorme. O prédio da instituição médica onde as crianças foram atendidas recentemente foi completamente destruído. As informações sobre as crianças afetadas estão sendo esclarecidas", disse o órgão.

"Os ocupantes russos dispararam contra a maternidade nº 2 em Mariupol. Segundo testemunhas oculares, a maternidade não existe mais, muitas mulheres estão feridas e mortas. Russos desgraçados, vocês vão queimar no inferno!", escreveu o porta-voz da polícia regional, Vyacheslav Abroskin.

Repúdio ao ataque em Mariupol

O presidente da Ucrânia, Volodymyr Zelensky, classificou o ataque como uma "atrocidade" e voltou a pedir que a Otan (Organização do Tratado do Atlântico Norte) proteja seu espaço aéreo contra a Rússia.

"O ataque direto de tropas russas na maternidade. Pessoas sob os escombros. Crianças sob os escombros. Isso é uma atrocidade! Por quanto tempo mais o mundo será cúmplice em ignorar o terror? Feche o céu imediatamente! Pare os assassinatos imediatamente! Você tem poder. Mas você parece estar perdendo a humanidade", escreveu em suas redes sociais o mandatário.

Mais tarde, ele voltou a falar dos ataques. No seu canal no Telegram, Zelensky publicou um vídeo no qual diz que os bombardeios estão "além das atrocidades".

"Tudo o que os ocupantes estão fazendo com Mariupol está além das atrocidades. Europeus! Ucranianos! Moradores de Mariupol! Hoje, devemos estar unidos na condenação deste crime de guerra na Rússia, que reflete todo o mal que os ocupantes trouxeram à nossa terra", escreveu na legenda.

O secretário de Estado do Vaticano, o cardeal Pietro Parolin, chamou o atentado de "inaceitável".

"Eu digo que bombardear um hospital é inaceitável. Não há razões, não há motivações para fazer isso", disse o cardeal Pietro Parolin a jornalistas em uma coletiva de imprensa em Roma.

O secretário de Estado norte-americano, Antony Blinken, disse na segunda-feira (7), que os Estados Unidos não têm intenção neste momento de, junto a aliados da Otan, decretar o bloqueio do espaço aéreo da Ucrânia para Rússia.

Sul da Ucrânia

O sul da Ucrânia é crucial para a estratégia russa na guerra. Nos dias que antecederam a invasão, a Rússia posicionou ao longo da costa ucraniana navios carregados com tanques de guerra, veículos blindados e soldados, prontos para desembarcar no mar Negro e no mar de Azov.

A meta era cercar as cidades da região para impedir o o da Ucrânia ao mar e criar uma conexão direta com a península da Crimeia —dominada pelos russos desde 2014— e a região de Donbass, à leste, aliada da Rússia e com duas regiões que já declararam independência: Lugansk e Donetsk.

* Com informações da Reuters