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

Fluminense

Fred dá esperança de retorno ao Flu em quarentena por coronavírus

Fred conquistou dois Campeonatos Brasileiros pelo Fluminense - Nelson Perez/Fluminense FC
Fred conquistou dois Campeonatos Brasileiros pelo Fluminense Imagem: Nelson Perez/Fluminense FC

Do UOL, no Rio de Janeiro

03/04/2020 04h00

Com os campeonatos paralisados por conta da epidemia de coronavírus, o atacante Fred segue dando indícios de que irá retornar ao Fluminense, onde é ídolo. Enquanto aguarda a resolução judicial de sua rescisão com o Cruzeiro, ele tem alimentado a esperança dos tricolores com depoimentos em suas redes sociais.

Nesta semana, por exemplo, fez campanha para seu gol de voleio sobre o Flamengo, no Campeonato Brasileiro de 2012, em uma enquete no site "Globoesporte.com", "chantageando" em tom de brincadeira:

"Se votarem no meu do Fla-Flu e ganhar, eu prometo que vou voltar para o Fluzão".

A declaração foi o suficiente para "enlouquecer" muitos tricolores nas redes sociais, que chegaram a colocar a hastag #FredNoFlu como um dos assuntos mais comentados no Twitter.

Anteriormente, o atacante de 36 anos já havia sido enfático ao ser questionado sobre um possível retorno pelo jornalista Rica Perrone em uma live.

"Eu vou voltar. Eu vou voltar", disse ele na ocasião.

Ter Fred novamente no Fluminense é um sonho antigo da diretoria. O presidente Mario Bittencourt tem boa relação com o jogador e não esconde o desejo de contar com o camisa 9 no elenco. Recentemente, o mandatário falou sobre as conversas e apontou que aguarda a resolução da questão entre o atacante e o Cruzeiro:

"No dia seguinte que for resolvido, ou a gente pega um avião para lá ou ele pega para cá. A gente vai trazer o nosso ídolo de volta para casa. É o que a gente quer, a torcida quer e tenho certeza que ele quer também. Até imagino que ele possa retornar, mas só para o Campeonato Brasileiro. Estamos na expectativa de que ele se resolva com o Cruzeiro", declarou.

Fred já está livre de seu contrato com o clube mineiro desde 29 de fevereiro, quando conseguiu uma decisão em caráter liminar junto à Justiça do Trabalho. Tanto o atacante quanto o Flu preferem dar sequência às negociações apenas depois da liberação definitiva, o que deveria ocorrer assim que houvesse a audiência de conciliação.

A pandemia de coronavírus, porém, pode alongar a novela que já se arrasta no mercado da bola. O Tribunal Regional do Trabalho de Minas Gerais (TRT-MG) suspendeu todas as audiências marcadas para o mês de março, incluindo um encontro entre o jogador e o Cruzeiro para tratar a rescisão.

O atacante não desejava seguir o caminho da Justiça, mas, após tentativas infrutíferas de um acordo extrajudicial, decidiu por judicializar o caso. A dívida do Cruzeiro com Fred é de cerca de R$ 30 milhões entre salários, direitos de imagem e outros encargos.

Fluminense