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

Estátuas de astros de Breaking Bad irritam americanos: 'Figuras de tráfico'

Aaron Paul diante da estátuas erguidas no Novo México em homenagem a "Breaking Bad" - Sam Wasson/Getty Images
Aaron Paul diante da estátuas erguidas no Novo México em homenagem a 'Breaking Bad' Imagem: Sam Wasson/Getty Images

Colaboração para Splash

17/08/2022 23h39

A criação de duas estátuas representando os personagens Walter White (Bryan Cranston) e Jesse Pinkman (Aaron Paul), protagonistas da aclamada série de TV "Breaking Bad", gerou controvérsia entre os moradores da cidade de Albuquerque, no Novo México, nos Estados Unidos.

Um dos maiores representantes do movimento conservador na mídia local, o apresentador de rádio Eddy Aragon criticou com veemência a homenagem ao programa. "Não é o tipo de reconhecimento que queremos para a cidade de Albuquerque ou para o nosso estado", afirmou ele, em declaração reproduzida pela revista Variety.

Aragon traçou ainda um paralelo entre a inauguração das estátuas inspiradas em "Breaking Bad" e a recente derrubada de um outro monumento, que representava o conquistador espanhol Juan de Oñate, o primeiro governador hispânico do Novo México.

"Agora temos estátuas novinhas em folha. Agora estamos colocando personagens fictícios na frente. Temos Jesse Pinkman e, claro, Heisenberg, e agora erigimos estátuas e nosso prefeito progressista da cidade de Albuquerque [Tim Keller] apoiou-as. Estamos financiando isso, então não há problema em se livrar de figuras históricas reais e agora, de alguma forma, é ainda melhor, [ter] figuras fictícias de tráfico de drogas", criticou o comunicador.

O deputado estadual republicano Rod Montoya é de opinião similar. "Estou feliz que o Novo México tenha conseguido o negócio. Mas realmente estamos seguindo o caminho de literalmente glorificar os fabricantes de metanfetamina?", apontou.

As estátuas em homenagem a "Breaking Bad" foram inauguradas em 30 de julho, em uma cerimônia com a presença dos atores Bryan Cranston e Aaron Paul e do criador do programa, Vince Gilligan - que, curiosamente, 'previu' as críticas conservadoras ao discursar no evento.

"Com toda a seriedade, sem dúvida algumas pessoas vão dizer: 'uau, exatamente o que nossa cidade necessitara." E eu entendo isso. [Mas] vejo dois dos melhores atores que a América já produziu. Eu os vejo, no personagem, como duas figuras trágicas maiores que a vida, contos de advertência", filosofou.