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

Como presença de Neymar virou 'desastre' para prefeito de cidade na França

Neymar, atacante brasileiro de 31 anos do PSG - Glenn Gervot/Getty
Neymar, atacante brasileiro de 31 anos do PSG Imagem: Glenn Gervot/Getty

Do UOL, em São Paulo (SP)

06/05/2023 04h00

O prefeito da cidade sa Bougival, Luc Wattele, já fez mais de uma reclamação pública sobre o morador Neymar Jr.

O que aconteceu

O astro brasileiro possui uma mansão na cidadezinha sa, localizada a cerca de 30 km do centro de Paris. A população de Bougival gira em torno de 8.790 habitantes, segundo dados do Instituto Nacional de Estatística e Estudos Econômicos da França.

A casa de Neymar foi palco de um protesto de torcedores do PSG na última quarta-feira (3). O atacante está se recuperando de lesão no ligamento direito e não atua desde fevereiro, mas foi alvo da insatisfação de parte da torcida após mais uma derrota do time no Francês.

O prefeito de Bougival falou em "desastre" e reclamou do transtorno causado pelo episódio, segundo o jornal Le Parisien. Torcedores fecharam a rua e ficaram gritando para que o brasileiro deixasse o clube.

"Mais uma vez, com o sr. Neymar, a cidade fica refém de fatos que nada têm a ver com ela", afirmou Wattele. "Não entendo como o futebol se transforma em um acerto de contas em qualquer lugar que não seja um campo de futebol", acrescentou.

Polêmica por festas

As festas organizadas na casa de Neymar irritaram os vizinhos do jogador em Bougival no início do ano. O ápice da reclamação teria vindo depois da comemoração do aniversário de 31 anos do atacante, em 5 de fevereiro.

O prefeito também ficou incomodado com o barulho que se estendia às madrugadas. Ele conversou com o próprio Le Parisien sobre o ocorrido.

Watelle chegou a falar em denunciar Neymar por "problemas de ordem pública" se a situação não mudasse. O político ponderou que tal medida poderia ser necessária porque uma multa não afetaria o bolso de Neymar.

Podemos punir, mas o que você faz com alguém que realmente não se importa em pagar uma multa pelo tanto que ganha? Em algum momento, enviaremos um processo à Fiscalização [equivalente ao Ministério Público] por repetidos problemas de ordem pública.[...] Não era apenas barulho, foi prodigiosamente irritante." Luc Wattele, ao Le Parisien, em fevereiro

Saída do PSG

Neymar vive o momento mais conturbado desde que chegou ao PSG, em agosto de 2017. O clube parisiense falhou no projeto de conquistar a Liga dos Campeões pelo sexto ano consecutivo, mesmo com um time estrelado, e vem decaindo no Francês.

O clube, inclusive, estaria estudando opções para se livrar do brasileiro já na próxima janela de transferências, apesar do contrato válido até 2027. A informação é do jornal L'Équipe.

Um empréstimo com opção de compra fixada pode ser uma opção. O Manchester United aparece como um possível destino para o atacante.