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

Corinthians

Danilo Avelar explica silêncio e diz que se envergonha de fala racista

Danilo Avelar ite erro e explica episódio de racismo  - Reprodução/Band
Danilo Avelar ite erro e explica episódio de racismo Imagem: Reprodução/Band

Colaboração para o UOL, em São Paulo

23/09/2021 13h52Atualizada em 23/09/2021 14h59

O zagueiro Danilo Avelar quebrou o silêncio sobre o episódio de racismo que culminou em seu afastamento do elenco principal do Corinthians. Ao programa 'Os Donos da Bola, da Band, o jogador itiu que "se envergonha" do ocorrido, mas que aproveitou para "melhorar a pessoa que eu sou".

Em entrevista, Avelar explicou que o período em silêncio após a frase de conotação racista e misógina usada durante uma partida de CS:GO (Counter-Strike: Global Offensive) foi importante "para entender as coisas que aconteceram". Neste período, o jogador aproveitou para estudar sobre racismo no Brasil.

"Foi um silêncio importante para mim, para entender todas as coisas que aconteceram. Jamais me senti, fui ou tive algum episódio de racismo, e fui infeliz sim naquele jogo, onde me exaltei. Estava em confronto com um argentino. Quem joga esses jogos sabe que o ambiente é muito perturbador. Não tem meu rosto, minha imagem, ali eu sou um anônimo. Eu fui provocado por esse estrangeiro e acabei usando palavras de conotação racista. Fui muito infeliz, me envergonho disso. Errei muito, tenho plena consciência disso", falou o zagueiro.

"Só silenciar o problema não resolve, e talvez era o que eu fazia antigamente. Eu não fazia nada para combater o racismo, e tive que errar para poder me alertar e melhorar. (...) Quando eu cometi o ato e vi toda a repercussão, eu entendi que tinha algo a fazer. Aquilo me incomodou, porque eu queria melhorar como ser humano. Só um pedido de desculpas, fazer uma ação, comprar uma cesta básica, para mim não seria suficiente", completou.

Em relação a sua permanência, ou não, no Corinthians, o jogador desconversou, e afirmou que o "tema racismo é muito superior" à sua carreira profissional.

"Um simples pedido de desculpas não seria suficiente, primeiramente para melhorar a pessoa que eu sou. Muito se falou de clube, de emprego, mas o tema racismo é muito superior a todas as coisas. Eu fiquei em silêncio porque precisei evoluir como ser humano. Busquei informações, sai da minha zona de conforto e ei a entender o porquê eu acabo cometendo certos deslizes. Minha maior preocupação foi: O que eu vou poder ensinar para o meu filho sobre ter cometido um erro e não perceber?", disse.

Mesmo assim, o zagueiro não esconde o desejo de permanecer no clube. Avelar tem contrato até 31 de dezembro de 2022 e frequenta o clube por estar em recuperação de uma lesão no joelho.

"Meu sonho é continuar a jogar pelo Corinthians, mas eu estou aqui pela causa", completou.

Corinthians