;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

ANA declara situação crítica de escassez hídrica na região da bacia do Paraná

Hidrelétrica de Ilha Solteira no rio Paraná (MS/SP) - Raylton Alves/Banco de Imagens ANA
Hidrelétrica de Ilha Solteira no rio Paraná (MS/SP) Imagem: Raylton Alves/Banco de Imagens ANA

Luciano Costa

Em São Paulo

02/06/2021 09h06

A ANA (Agência Nacional de Águas) decidiu declarar situação crítica de escassez de recursos hídricos na região da bacia do Paraná, que abriga os principais reservatórios hidrelétricos do Brasil, até 30 de novembro, em meio a uma crise de falta de chuvas que atinge o país e tem pressionado o setor de energia.

Com isso, a agência "poderá definir condições transitórias para a operação de reservatórios ou sistemas hídricos específicos", visando assegurar usos múltiplos das águas, segundo portaria publicada em edição extra do Diário Oficial da União na noite de ontem.

"Caso necessário, serão emitidos atos específicos para o estabelecimento de outras regras de uso da água a fim de assegurar os usos múltiplos", aponta a publicação, assinada pela diretora-presidente da ANA, Christianne Dias Ferreira.

A autarquia destacou que a região hidrográfica do Paraná atende diversas funções "de relevância econômica e social", além de concentrar os maiores reservatórios de hidrelétricas, principal fonte de energia do Brasil.

Segundo a ANA, a declaração da emergência hídrica leva em consideração a necessidade de adoção de medidas específicas em meio ao cenário de seca, incluindo atribulação intensa com órgãos estaduais.

A agência poderá ainda estabelecer outras regras de uso da água a fim de assegurar os usos múltiplos durante o período crítico.

A ANA também estabelecerá um grupo técnico para acompanhar a situação, com participação de órgãos estaduais de gestão de recursos hídricos.

Em paralelo, o CMSE (Comitê de Monitoramento do Setor Elétrico), liderado pelo Ministério de Minas e Energia, disse após reunião na noite de ontem que "permanece o cenário de atenção quanto às condições de atendimento", dada a falta de perspectiva de chuvas relevantes o curto prazo.

O comitê voltou a ressaltar que será importante flexibilizar restrições à operação de diversas hidrelétricas para preservar o nível dos reservatórios e atender à demanda por energia até novembro, em meio ao período seco.

Representantes da ANA, do Ibama e do Ministério Público Federal participaram da reunião do CMSE.

O colegiado "reiterou a garantia do suprimento de energia elétrica em 2021 aos consumidores brasileiros", mas destacou "a importância do uso eficiente de água e energia elétrica, evitando desperdícios".

O ministro de Minas e Energia, Bento Albuquerque, voltou a afirmar na noite de ontem, em entrevista à CNN, que não vê risco de racionamento de energia apesar da crise hídrica.

"Acho que estamos conduzindo as coisas de forma adequada e com bastante transparência", afirmou.

Ele disse ainda que "a situação hoje é completamente diferente de 2001", quando o país enfrentou um racionamento de eletricidade histórico, e de 2014 e 2015, quando o sistema ficou pressionado também pela falta de chuvas.

Segundo ele, o governo iniciou "campanhas de esclarecimento" no final do ano ado sobre economia de energia e tem intenção de manter essas iniciativas ao longo de 2021.