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

Pantanal

Tudo sobre a novela da Globo


Reta final de 'Pantanal' será marcada por mortes e violência

Juma (Alanis Guillen) e Solano (Rafa Sieg) em Pantanal  - Divulgação/TV Globo
Juma (Alanis Guillen) e Solano (Rafa Sieg) em Pantanal Imagem: Divulgação/TV Globo

De Splash, no Rio

22/09/2022 04h00

"Pantanal" está na sua reta final, mas o remake da Globo ainda prevê a morte de três personagens até o dia 7 de outubro — data de exibição do último capítulo. A história reserva dois assassinatos e um ataque cardíaco antes de se despedir das telinhas.

Recentemente, quem disse adeus à trama foi o filho mais novo de Tenório (Murilo Benício), o jovem Roberto (Cauê Campos). O rapaz foi afogado por Solano (Rafa Sieg) após desconfiar do envolvimento do matador no atentado contra José Lucas (Irandhir Santos).

Mas o vilão, que foi contratado por Tenório para ass Maria Bruaca (Isabel Teixeira) e a família de Zé Leôncio (Marcos Palmeira), também está com os dias contados. Segundo sinopse da emissora, ele se despede hoje da trama adaptada por Bruno Luperi.

Como Solano vai morrer?

Após embate sobrenatural com o Velho do Rio na última terça-feira, Solano insistiu em viver na tapera de Juma (Alanis Guillen). No capítulo de hoje, a protagonista chega ao casebre dar à luz e, inesperadamente, encontra o matador por lá.

O vilão rende Juma, ameaça a moça e pergunta pelo Velho do Rio. Ele ainda vai confirmar que atirou no guardião da floresta, deixando Juma revoltada. Na sequência, segundo resumo da Globo, ela vira uma onça, cerca Solano dentro da tapera e devora o matador. Mais tarde, ainda arrasta o corpo dele até o rio a fim de alimentar as piranhas.

Muda se assustará ao ver a amiga arrastando o corpo de Solano. Já Zé Leôncio e Alcides serão os encarregados de avisar Tenório da morte do vilão.

Solano foi contratado por Tenório para matar - Globo/João Miguel Júnior - Globo/João Miguel Júnior
Solano foi contratado por Tenório para matar
Imagem: Globo/João Miguel Júnior

O fim de Tenório

O pai de Guta (Julia Dalavia) também vai se despedir da trama antes de a história acabar. Diferente da versão original, Tenório não vai castrar o ex-peão Alcides, mas sim estuprá-lo. Com raiva do ex-patrão pela violência cometida, Alcides vai contar com a ajuda de Zaqueu (Silvero Pereira) para revidar e criar uma emboscada para o latifundiário na beira do rio.

Se Bruno Luperi seguir a história escrita por Benedito Ruy Barbosa, Tenório será mais um personagem que morrerá ao ser comido pelas piranhas.

Final do vilão Tenório deve ser trágico - Reprodução/TV Globo  - Reprodução/TV Globo
Final do vilão Tenório deve ser trágico
Imagem: Reprodução/TV Globo

José Leôncio

Já o personagem de Marcos Palmeira deve se despedir da trama no último capítulo. Zé, que já apresenta sintomas cardíacos na trama, vai sofrer um infarto após se casar com Filó (Dira Paes) em uma cerimônia na fazenda.

Na versão original, antes de morrer, Zé reencontra o pai, Seu Joventino, que despareceu no primeiro capítulo da novela e está encarnado na figura do Velho do Rio (Osmar Prado). Zé ainda herda o lugar de novo Velho do Rio.

José Leôncio vai morrer no último capítulo da novela - Divulgação/ Globo  - Divulgação/ Globo
José Leôncio vai morrer no último capítulo da novela
Imagem: Divulgação/ Globo