;(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();
})();
"É realmente inacreditável. Uma ação, um ataque a pessoas inocentes na Ucrânia, apenas para intimidá-los. Também atacando civis, orfanatos, hospitais, escolas, grandes marcos do país. E está tentando usar o inverno como arma contra os ucranianos. Mas o povo ucraniano continua a inspirar o mundo", disse Biden.
A Rússia tem atacado repetidamente o abastecimento de energia e água da Ucrânia antes do começo do inverno no hemisfério norte.
Além de se encontrar com Biden, Zelensky vai discursar no Congresso dos EUA e buscar "armas, armas e mais armas". Esta é a primeira visita formal de Zelenskyao país, em sua primeira viagem desde o início da guerra, e o ucraniano agradeceu o apoio dos EUA.
"Muito obrigado, senhor presidente. Obrigado pelo apoio bipartidário, obrigado ao Congresso e obrigado aos americanos comuns. Eu realmente aprecio", disse Zelensky.
Biden anunciou cerca de US$ 2 bilhões em assistência militar para a Ucrânia —o que incluirá uma bateria de mísseis Patriot —, disse uma autoridade dos EUA. A defesa aérea da Ucrânia foi fundamental para evitar que o exército obtivesse vantagem no conflito.
O presidente dos EUA também explicou que o país enviará mais de 374 milhões de dólares em ajuda humanitária à Ucrânia ainda hoje. O valor será dividido entre comida e assistência em dinheiro para mais de 1,5 milhão de ucranianos, além de "o a cuidados de saúde, água potável e ajuda para se manter aquecido no inverno" para mais de 2,5 milhões de moradores da Ucrânia.
Mais cedo, o porta-voz russo, DmitryPeskov, disse que o fornecimento contínuo de armas ocidentais à Ucrânia levaria a um "aprofundamento" do conflito. O Kremlin afirmou nesta quarta-feira que não vê chance de negociações de paz com Kiev.
Na chegada aos EUA, Zelensky escreveu em seu canal de mensagens no Telegram que está em Washington "para agradecer ao povo americano, ao presidente e ao Congresso pelo apoio tão necessário". Mais cedo, Biden desejou boa viagem e disse ter "muito a discutir" com o ucraniano.
No próximo ano, será devolvida a bandeira ucraniana e a liberdade a toda a nossa terra, a todo o nosso povo Volodymyr Zelensky
21.dez.2022 - O presidente dos EUA, Joe Biden, e a primeira-dama, Jill Biden, recebem o presidente da Ucrânia, Volodymyr Zelensky, na Casa Branca
Imagem: DREW ANGERER / GETTY IMAGES VIA AFP
Zelensky presenteia Biden com cruz ucraniana por mérito militar. O presidente da Ucrânia ofereceu ao norte-americano um símbolo de herói, que ele disse ter sido enviado por um capitão do exército ucraniano.
"Um cara que é realmente um herói, ele me pediu para ar seu prêmio para o presidente Biden. Ele é muito corajoso e disse para dar [a cruz ucraniana] a um presidente muito corajoso, e eu quero dá-la a você", afirmou Zelensky.
Biden agradeceu pela medalha, apesar de dizer que "não a merecia". O presidente dos EUA disse que enviaria ao capitão ucraniano um presente semelhante: uma moeda de comando do exército norte-americano.
"Bem, nós temos uma tradição aqui, e eu vou dar a ele. Meu filho que lutou no Iraque, eles têm o que chamam de moeda de comando. Você viu aquelas moedas que ganhamos no campo de batalha? Vou me certificar de que ele ganhe um desses. Obrigado", disse.
ID: {{comments.info.id}}
URL: {{comments.info.url}}
Ocorreu um erro ao carregar os comentários.
Por favor, tente novamente mais tarde.
{{comments.total}} Comentário
{{comments.total}} Comentários
Seja o primeiro a comentar
Essa discussão está encerrada
Não é possivel enviar novos comentários.
Essa área é exclusiva para você, , ler e comentar.
Só s do UOL podem comentar
Ainda não é ? Assine já.
Se você já é do UOL, faça seu .
O autor da mensagem, e não o UOL, é o responsável pelo comentário. Reserve um tempo para ler as Regras de Uso para comentários.