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

Flamengo

Fla encara duelo de paciência com agente e negócio travado por Balotelli

Balotelli segue sendo sonho de consumo dos dirigentes do Flamengo, que estão na Europa para tentar sua contratação - Eric Gaillard/Reuters
Balotelli segue sendo sonho de consumo dos dirigentes do Flamengo, que estão na Europa para tentar sua contratação Imagem: Eric Gaillard/Reuters

Leo Burlá, Marcus Alves, Pedro Ivo Almeida e Rodrigo Mattos

Do UOL, no Rio de Janeiro, em São Paulo e em Lisboa (Portugal)

14/08/2019 04h00

A caravana vermelha e preta desembarcou ontem (13) em Portugal, base escolhida pela cúpula do Flamengo para o caso de necessidade de uma investida por Balotelli na Itália, país natal do jogador.

Apesar de terem uma breve sinalização positiva do atacante, que já demonstrou ter interesse em aprofundar as conversas com o Rubro-negro, a trinca formada por Marcos Braz (vice de futebol), Bruno Spindel (diretor-executivo) e Marcos Motta (advogado) terá de dobrar o agente do craque, Mino Raiola, que prefere negociar o atleta com algum clube do futebol italiano.

Raiola, que no início não levava fé que o desejo rubro-negro fosse concreto, está de olho em comissões mais gordas pagas no futebol europeu e quer esperar até o fim do mês para obter uma transação mais vantajosa, o que torna o caso ainda mais desafiador para os cariocas, que terão de travar um jogo de paciência por um final feliz.

Tempo, no entanto, é artigo escasso para o Fla, que sonha em ter o reforço apto ao menos para o segundo jogo das quartas de final da Libertadores, dia 28 de agosto, contra o Internacional. Até sexta-feira, a Conmebol permite a substituição de dois nomes na lista de jogadores para esta fase.

Marcos Braz - UOL - UOL
Marcos Braz, vice de futebol do Fla, está hospedado em hotel em Lisboa
Imagem: UOL

O clube apostou na tática "olho no olho" para levar a melhor. Ao desembarcar em Portugal, deixou claro para os envolvidos que o interesse é real. O trio aposta que esta tática poderá fazer a diferença, embora um encontro presencial não tenha sido agendado até o momento. O empresário se encontra em Mônaco, balneário francês, e ainda não deu o ok para um encontro.

Enquanto flerta à distância, o Flamengo estuda até onde pode esticar a corda pelo "Super Mario". Até que não haja um papo com Mino Raiola, proposta formal não será feita pela cúpula.

Ainda que o acerto seja missão para lá de complicada, o Fla aposta na vontade do jogador e no poder de convencimento de seus dirigentes, que foram dispostos a voltar com um reforço de peso na bagagem. Ainda que o embarque rumo ao continente europeu anime parte da torcida e possa indicar algo mais encaminhado, a direção mantém os pés no chão e evita euforia.

Mino Raiola - false - false
Mino Raiola é agente de nomes como Balotelli, Pogba e Ibrahimovic

Flamengo