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

Gilberto Gil critica ataque de bolsonaristas: 'coisa estúpida'; assista

Colaboração para o UOL, em Santos (SP)

27/11/2022 10h03

Classificação e Jogos

O cantor Gilberto Gil usou suas redes sociais para se manifestar depois de ser atacado por um grupo de apoiadores de Jair Bolsonaro (PL) durante a vitória do Brasil sobre a Sérvia, por 2 a 0, na última quinta-feira (24), no estádio Lusail Iconic.

Gil gravou um vídeo para agradecer o apoio que recebeu após os ataques, os quais classificou como 'coisa estúpida'. Ele disse que a revolta dos bolsonaristas nada mais é que um 'terceiro turno' das eleições, com os 'inconformados querendo manter essa coisa do ódio'.

"Nossos agradecimentos, meus, da Flora, por essa solidariedade, essa corrente solidária, diante dessa agressão, essa coisa estúpida. É o terceiro turno na verdade, né, os inconformados querendo manter essa coisa do ódio, da agressividade, e amanhã Brasil de novo", disse.

"De novo nossos agradecimentos, meus e da Flora, a todos vocês que se fizeram solidários conosco nesse episódio que, na verdade, é mais um dessa sequência do ódio, que essa coisa que eles gostam de fazer. Muito obrigado a todos vocês e bom jogo para o Brasil amanhã", complementou.

Em imagens publicadas no Twitter de André Janones (Avante), deputado federal nas últimas eleições e integrante do governo de transição do presidente eleito Lula (PT), o artista de 80 anos é visto em um corredor com Flora Gil, sua esposa.

Assim que é reconhecido, Gilberto Gil (que nas imagens aparece de azul) ou a ser alvo de ironias e insultos de alguns bolsonaristas.

"Vamo, Bolsonaro. Vamo, Lei Rouanet", iniciaram alguns em tom de ironia enquanto o cantor caminhava em direção às arquibancadas do Lusail.

Pouco depois, os bolsonaristas aram na frente e "chamaram" Gil para se encaminhar às cadeiras. O ex-ministro da Cultura no governo Lula (2003-2008) parou para tirar foto com um fã e não respondeu.

"Vem, vem. Você ajudou o Brasil pra c... Vamo lá. Vai lá. Valeu, Lei Rouanet. Obrigado, filho da p...", finalizaram os brasileiros.

Assista ao momento do ataque:

Quem deve ocupar a vaga de Neymar na seleção brasileira?

Resultado parcial

Total de 7548 votos
8,33%
Lucas Figueiredo/CBF