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

Flamengo renova contrato de Arrascaeta até 2026

Arrascaeta comemora seu gol pelo Flamengo diante do Vélez. Meia acertou novo contrato até 2026 - Marcelo Cortes/Flamengo
Arrascaeta comemora seu gol pelo Flamengo diante do Vélez. Meia acertou novo contrato até 2026 Imagem: Marcelo Cortes/Flamengo

Leo Burlá

Do UOL, no Rio de Janeiro

18/01/2022 08h04

Assunto prioritário no departamento de futebol do Flamengo, a renovação do contrato de Arrascaeta até 2026 foi anunciada hoje (18).

O contrato atual, que vence em dezembro de 2023, estabelecia que um novo vínculo só poderia ser sacramentado a partir de janeiro deste ano, e isso acelerou as conversas. Na última semana, Marcos Braz, vice de futebol, e Bruno Spindel, diretor executivo do Fla, se reuniram com o agente do jogador, Daniel Fonseca.

  • De segunda a sexta, às 17h, o Canal UOL traz, ao vivo, as últimas informações do mercado da bola. Inscreva-se no YouTube de UOL Esporte e confira também as lives dos clubes, Posse de Bola e UOL News Esporte

Na conversa, os lados deixaram muito bem encaminhado o "fico", que será oficializado pelo Rubro-negro. Parceiro do uruguaio, Gabigol já havia indicado a permanência em uma postagem em sua rede social.

O caso

Apesar da relação entre as partes ter melhorado consideravelmente nos últimos meses, o encontro não havia sido decisivo para o desfecho do caso. O clima, no entanto, já era de otimismo e convicção de que o meia irá até dezembro de 2026.

Já havia um entendimento quanto ao reajuste salarial e luvas, porém o que está em jogo é a modelagem do negócio. Fonseca queria que os rubro-negros comprassem os 25% que ainda são do Defensor (URU), mas essa hipótese foi descartada pelo clube, que detém boa parte dos direitos e se via em situação confortável na mesa de negociação.

Os dois lados debateram as alternativas para o caso e ficou acertado que o Fla comprará parte dessa fatia de forma parcelada.

O Flamengo não tem dúvida alguma em relação ao papel de protagonista do meia e estava mais do que disposto a valorizá-lo. O clube, no entanto, avaliava formas de diluir o investimento e dar alguma contrapartida ao atleta, seja ela financeira ou até mesmo de alguma cláusula contratual compensatória que facilite uma eventual saída, por exemplo. Haverá bônus por taças conquistadas também. Esta informação foi inicialmente divulgada pelo "Globoesporte" e confirmada pela reportagem.

Antes da decisão da Libertadores, o Flamengo manteve a conversa em temperatura mais morna, mas o jogador já iniciará a nova temporada com um novo contrato assinado.

Flamengo