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

Rock in Rio 2022 começa com 'Fora Bolsonaro' e muito heavy metal

Primeiro dia de Rock in Rio foi marcado por protestos políticos e metal - Júlio César Guimarães
Primeiro dia de Rock in Rio foi marcado por protestos políticos e metal Imagem: Júlio César Guimarães

Colaboração para Splash, no Rio

03/09/2022 00h22

Além de música e muito heavy metal, o primeiro dia do Rock in Rio 2022 teve bastantes protestos políticos. A multidão não perdeu tempo, e desde o começo do dia aproveita o silêncio dos instrumentos para puxar coros xingando o presidente Jair Bolsonaro. As bandas também não ficam atrás; sem medo de polêmica, posicionam-se.

Bandas brasileiras criticam política

Black Pantera, banda mineira, abriu o Rock in Rio 2022 recitando o poema Me Gritaron Negra, de Victoria Santa Cruz. O texto fala sobre crescer com preconceito. Citaram: "E vou rir daquelas pessoas que, por educação e por nos evitar, chamam os negros de 'gente de cor'. E que cor é essa? NEGRA! E que linda soa! NEGRA! E que ritmo tem, NEGRA, NEGRA, NEGRA!" No telão, a banda piscou a mensagem "vidas negras importam."

Na plateia, uma bandeira com as frases "Fora Bolsonaro" chamou a atenção. Em contraposto, diversas bandeiras do Brasil desfilaram pela aglomeração.

Ratos de Porão também tinham algo a mostrar. A banda paulista se apresentou com a bandeira do Movimento Sem Terra, MST, pendurada em uma caixa de som. O baixista Juninho vestia uma camiseta do movimento. Enquanto o público entoava "ei, Bolsonaro, vai tomar no c*", o grupo acompanhou com os instrumentos.

Protestos internacionais

A banda Living Colour, de Nova York, também tinha alguns dizeres sobre a política brasileira. Corey Glover, vocalista, dedicou o show à Marielle Franco, e gritou frases como "f*da-se o fascismo", e segurou durante alguns minutos uma placa na qual lia-se "vote" de um lado e "democracia" do outro. O público reagiu com um coro de "Fora Bolsonaro", e o vocalista ficou quieto durante alguns minutos, sorrindo.

Gojira, banda sa, falou sobre desmatamento e sustentabilidade no Brasil. O vocalista, Joe Duplantier, é conhecido ativista da natureza, e em 2021 visitou Brasília para participar de um protesto indígena:

"A próxima música é muito, muito especial. De certa maneira, envolve vocês aqui do Brasil, e suas lindas terras. Esta música é sobre a destruição da casa dos indígenas [brasileiros] e de outros povos da Floresta Amazônica. Precisamos mudar as coisas. No geral, em muitos lugares deste planeta. Contamos com vocês para defender o que é certo, defender seu povo, seu país, sua natureza. Essa música vai para todos os povos indígenas ao redor do mundo. Se chama 'Amazonia'"

Política ao vivo

Uma repórter da Globo tentou mostrar a empolgação da multidão pré-Iron Maiden em uma entrada ao vivo. Entre a multidão, falava ao microfone sobre a animação, mas foi interrompida por coros xingando o presidente. Algumas pessoas também fizeram "L" com a mão, símbolo associado ao candidato à presidência Lula.

Apoio ao presidente

Embora nenhum artista tenha se posicionado a favor do governo atual, na plateia não era raro ver bandeiras do Brasil - constantemente usada como símbolo de apoio ao Bolsonaro. As bandeiras, usadas amarradas às costas, flamulando ou ando de mão e mão, coloriram de verde e amarelo a multidão, majoritariamente vestida de preta no dia do metal do Rock in Rio 2022.

Rock in Rio: dia do metal abre o festival