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

Coreia do Norte desenvolveu arsenal nuclear e de mísseis, apesar das sanções, diz ONU

26.mar.2021 -  Coreia do Norte testa "novo projétil tático guiado" de motor com combustível sólido - North Korea"s Korean Central News Agency (KCNA)/Reuters
26.mar.2021 - Coreia do Norte testa "novo projétil tático guiado" de motor com combustível sólido Imagem: North Korea's Korean Central News Agency (KCNA)/Reuters

06/02/2022 09h12Atualizada em 06/02/2022 10h28

A Coreia do Norte continuou desenvolvendo seu arsenal nuclear e capacidades de mísseis durante um ano, apesar das sanções internacionais impostas a Pyongyang, diz um relatório confidencial da ONU ao qual a AFP teve o no sábado.

"Os ciberataques, especialmente sobre os ativos de criptomoedas, continuam sendo uma importante fonte de renda para o governo da Coreia do Norte", diz este documento anual que acaba de ser entregue aos 15 membros do Conselho de Segurança da ONU.

"A quantidade de importações ilícitas de petróleo refinado aumentou consideravelmente" há um ano, "mas a um nível muito inferior ao de anos anteriores", afirma também o relatório, elaborado por especialistas da ONU encarregados do monitoramento do embargo de armas e econômico internacional e das sanções contra a Coreia do Norte.

Quuanto ao armamento norte-coreano que a comunidade internacional tenta limitar, Pyongyang "continuou mantendo e desenvolvendo seus programas nucleares e de mísseis balísticos em violação das resoluções do Conselho de Segurança", destacam os especialistas.

"Embora não haja informações de testes nucleares ou lançamentos de mísseis intercontinentais, a Coreia do Norte continuou desenvolvendo sua capacidade de produção de material nuclear", acrescentam.

Durante um ano, Pyongyang "demonstrou uma maior capacidade de lançamento rápido, alta mobilidade (inclusive no mar) e uma maior resistência de suas forças de mísseis", destaca o relatório.

Desde 2017, o Conselho de Segurança nunca encontrou um consenso sobre a questão da Coreia do Norte, como comprovado novamente por uma reunião fechada realizada na sexta-feira no Conselho de Segurança e solicitada por Washington para condenar os últimos testes de mísseis da Coreia do Norte.

Para sair do ponto morto, China e Rússia ofereceram um alívio das sanções com finalidades humanitárias, proposta recusada pelo Ocidente. Espera-se que Moscou e Pequim voltem a defender seu caso na segunda-feira durante um debate no Conselho sobre os efeitos prejudiciais das sanções, convocado pela Rússia.