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

André Rocha

Bayern retoma Champions no mesmo ritmo avassalador

Leon Goretzka e Robert Lewandowski comemoram o gol do Bayern de Munique sobre o Atlético de Madri - Andreas Gebert/Reuters
Leon Goretzka e Robert Lewandowski comemoram o gol do Bayern de Munique sobre o Atlético de Madri Imagem: Andreas Gebert/Reuters

Colunista do UOL Esporte

21/10/2020 18h07

O Bayern de Munique foi campeão da Liga dos Campeões 2019/20 no dia 25 de agosto. Menos de dois meses depois, já estreia na fase de grupos da edição 2020/21 contra o Atlético de Madri. Um retorno rápido dentro da adequação do calendário europeu ao período sem futebol por conta da pandemia.

Se o Paris Saint-Germain deu a impressão de ainda viver o "luto" pela derrota na final em Lisboa ao perder em casa para o Manchester United por 2 a 1, o time bávaro manda um recado ao continente e ao mundo: segue com a mesma fome.

Os 4 a 0 na Allianz Arena não foram exatamente um atropelamento. Até pelas mudanças na equipe em relação à campanha 100% do título. Pavard entra na lateral direita para Kimmich ser a reposição natural de Thiago Alcântara no meio-campo. Na zaga, Süle começou como titular, com Boateng no banco. Pela esquerda, o campeão mundial pela França Lucas Hernández iniciou na lateral e Davies, a grande revelação da temporada ada, na reserva. Já no trio atrás de Lewandowski, as ausências dos ponteiros Gnabry, com Covid-19, e Leroy Sané, mais uma vez lesionado, fizeram o treinador Hans-Dieter Flick efetuar um revezamento pela direita e por dentro com Tolisso e Muller e Coman pela esquerda.

A formação muda e impacta no entrosamento. A ideia, porém, não muda. Muita intensidade e volume de jogo baseado em pressão pós-perda e, na retomada, muita gente se apresentando para jogar e também entrando na área para finalizar. Arriscando muito ao adiantar as linhas e confiar no goleiro Neuer para fazer a cobertura.

Coragem mesmo enfrentando atacantes de alto nível. Contra o time de Simeone, João Félix e Luis Suárez deram algum trabalho, assim como os avanços de Renan Lodi pela esquerda. Até deu a impressão de jogo igual, mas é preciso colocar muita concentração e força física e mental para ar um Bayern ligado.

No primeiro tempo durou 25 minutos. Aos 27, o lançamento primoroso de Kimmich para Coman abrir o placar. Ponteiro francês que aproveitou erro de Llorente e Lewandowski atento para servir Goretzka. 2 a 0 e, ao olhar as estatísticas, vemos que a visão inicial de jogo equilibrado foi apenas uma impressão: 10 finalizações a três e 61% de posse do atual campeão. E ainda teve uma bola na trave de Süle.

Mesma batida no segundo tempo. Gol anulado de João Félix, por impedimento de Suárez atrapalhando a ação de Neuer, e Atlético organizado e mais ofensivo, ainda nas quase imutáveis duas linhas de quatro de Simeone. Até o Bayern retomar o ritmo e matar o jogo com um chute espetacular de Tolisso no ângulo de Oblak. Com espaços e um adversário já com a guarda baixa, Coman acelerou pela direita, fez o que quis com Felipe e marcou mais um golaço.

Os 4 a 0 podem parecer duros demais para o time espanhol, mas são consequência natural de uma superioridade inquestionável. Foram 16 finalizações, cinco no alvo. Quatro nas redes. Só uma do Atlético na direção da meta de Neuer. Mesmo com os visitantes subindo a posse de 39% para 41% e melhorando a efetividade nos es: 72% contra 80% do adversário.

O Bayern se beneficia do contexto de uma retomada rápida do futebol na Europa e mostra na estreia que segue no mesmo ritmo avassalador.

(Estatísticas: UEFA)