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

CBF planeja setor só para vacinados e estádios com até 30% de ocupação

Gramado do Maracanã em 6 de julho de 2021, na semana da final da Copa América - Acervo pessoal
Gramado do Maracanã em 6 de julho de 2021, na semana da final da Copa América Imagem: Acervo pessoal

Igor Siqueira

Do UOL, no Rio de Janeiro

29/07/2021 04h00

Apesar do caos político que chacoalha a CBF, a entidade tem avançado na discussão das diretrizes para o projeto-piloto que prevê a presença de público nos estádios das partidas pelas quartas de final da Copa do Brasil. Os duelos de ida estão previstos para 25 de agosto. Pelos planos da entidade, a ideia é trabalhar com um teto de 30% de ocupação das arquibancadas, reservando um setor exclusivo para quem tiver sido vacinado (imunização completa).

A vacinação não será a única exigência. O UOL Esporte apurou que plano da comissão médica é exigir de quem não estiver imunizado apresente exame PCR feito até 72 horas antes da partida ou antígeno de até 48 horas de antecedência. O motivo é que a testagem via antígeno é mais rápida e mais barata para a população, o que tenderia a evitar um afastamento da torcida por motivos financeiros.

O plano da CBF é espalhar os torcedores por setores, observando a distribuição de assentos para gerar distanciamento social. Se for possível separar o espaço em quatro partes, uma delas seria o espaço exclusivo para vacinados. Quem tiver sido imunizado e quiser acompanhar outra pessoa em setor diferente, pelo plano atual, deve fazer algum dos exames exigidos. A verificação para checar se quem comprou o ingresso realmente foi imunizado será feita via base de dados do SUS.

A questão dos testes faz parte de uma das quatro matrizes que a CBF está desenvolvendo para o projeto-piloto. Desse bloco fazem parte questões de segurança, controle de fraudes em exames e uma forma de auditar os dados antes dos jogos.

O que gera maior dor de cabeça para a CBF é encontrar uma maneira de barrar qualquer tentativa de fraude. A final da Copa América, da qual vários torcedores foram barrados por apresentarem resultados falsos, é um exemplo recente. Há uma tentativa de estabelecer conexão com laboratórios e farmácias para que os resultados sejam remetidos diretamente para um sistema da CBF, mas a entidade reconhece que há cidades do interior em que esse processo será mais difícil. Por isso, também se prepara para uma frente de verificação de dados presencialmente.

Na comissão médica, há um trabalho que envolve identificar o nível de segurança nas 12 possíveis cidades que sediarão os jogos de ida e volta das quartas de final da Copa do Brasil — o número considera os times que estão na fase atual. O trabalho visa à criação de índices de segurança para cada cidade. As variáveis consideradas são incidência de infecção por 100 mil nos últimos 14 dias, índice de imunizados e índice de mortalidade por milhão de habitante.

A partir daí, seria feito um cálculo com uma fórmula complexa para saber se o município atende os parâmetros. Com um percentual acima de 50% no índice, poderia haver 10% de público. Com um percentual acima de 75%, poderia se ter 30% do público.

Há algumas cidades que preocupam mais, como Curitiba e Porto Alegre. A liberação será submetida, em última instância, às autoridades locais, que podem aumentar o sarrafo na exigência de itens para presença de torcedores. A diretoria de competições pode discutir com os clubes, caso os números sejam impeditivo, a transferência para outra cidade, caso o custo-benefício seja positivo.