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

Marcel Rizzo

Protocolo faz argentinos toparem Libertadores antes de retomarem campeonato

Estádio do Maracanã receberá o Flamengo na volta da Libertadores, em setembro, mas sem torcida no estádio por enquanto - Reprodução / Internet
Estádio do Maracanã receberá o Flamengo na volta da Libertadores, em setembro, mas sem torcida no estádio por enquanto Imagem: Reprodução / Internet

Colunista do UOL

26/08/2020 17h05

A Conmebol definiu nesta quarta-feira (26) os locais de todas as partidas da Libertadores, que será retomada na terceira rodada da fase de grupos no dia 15 de setembro. Todos os clubes jogarão em seus países, com portões fechados. E a pergunta que ficou no ar foi: como haverá jogos na Argentina, por exemplo, país que mantém duras restrições por causa da Covid-19 e está com o campeonato local parado?

A Conmebol definiu um protocolo único para os dez países filiados que precisou do ok governamental de cada um deles. O teor principal: dar anuência à entrada das delegações dos times participantes, mesmo se houver restrição nas fronteiras. Todos am, mas com algumas regras a serem seguidas, independentemente do grau de quarentena imposta a cada país neste momento:

- Cada delegação só poderá permanecer no país visitado por 72 horas. Ou seja, viajar um dia antes, jogar e ir embora no seguinte.

- Toda a delegação, incluindo jogadores, comissão técnica e diretoria, deve ficar confinada no hotel. A saída só é permitida para treinar (o que nem deve acontecer pelo tempo máximo de permanência autorizado) e jogar. Haverá punição ao profissional e ao clube se houver descumprimento dessa regra.

.- Todos os times viajarão de voos fretados. A Conmebol pagará por esses charters, apenas para os times visitantes, claro, em valores que vão variar de US$ 15 mil (R$ 84 mil) a US$ 70 mil (R$ 392 mil), dependendo da distância.

- É uma recomendação, não uma exigência, mas a Conmebol conversou com membros dos governos dos dez países para facilitarem isso, se possível: que as delegações usem bases aéreas para chegar e sair dos países, evitando assim uso de saguões com outros ageiros. O aeroporto do Galeão foi até usado como exemplo por ter uma base aérea próxima aos terminais.

- Os times visitantes têm que enviar à Conmebol os exames PCR de todos os membros da delegação até 24 horas antes da viagem. Qualquer profissional positivado será proibido de embarcar. O time local tem que mandar o exame até 24h antes da partida, mas 12h antes do confronto todos os que participarão serão submetidos a novos testes, sorológicos, com resultado imediato. Caso positivo é afastado e também não pode ir ao estádio.

Argentinos e uruguaios foram mais exigentes para a aprovação do protocolo e fizeram isso no último dia, terça-feira (25). A Conmebol havia estipulado esta data para que os clubes enviassem os estádios onde jogariam na retomada da Libertadores, com a permissão de ser em outro país. O Peñarol, por exemplo, colocou o Beira-Rio, em Porto Alegre, como opção caso o governo uruguaio não aprovasse o protocolo da confederação.

Nas reuniões dirigentes demonstraram preocupação com jogos no Brasil e no Peru, países que ainda estão com muitos casos diários registrados. O governo peruano até proibiu o Binacional de jogar em sua cidade, Juliaca, a quase 4 mil metros de altitude, para facilitar o deslocamento dos adversários, LDU e River Plate. Os confrontos serão na capital Lima.