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

Juliana Dal Piva

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

PGR intimou advogadas de Flávio Bolsonaro a depor sobre relatórios da Abin

Atendendo a um pedido da defesa de Flávio Bolsonaro, filho do presidente Jair Bolsonaro, o ministro Dias Toffoli suspendeu todos os inquéritos abertos a partir de dados compartilhados por órgãos de controle como o Conselho de Controle de Atividades Financeiras (Coaf) e a Receita Federal. - SERGIO LIMA/AFP
Atendendo a um pedido da defesa de Flávio Bolsonaro, filho do presidente Jair Bolsonaro, o ministro Dias Toffoli suspendeu todos os inquéritos abertos a partir de dados compartilhados por órgãos de controle como o Conselho de Controle de Atividades Financeiras (Coaf) e a Receita Federal. Imagem: SERGIO LIMA/AFP

Colunista do UOL

06/04/2021 19h35

A Procuradoria-Geral da República intimou nos últimos dias as advogadas Luciana Pires e Juliana Bierrenbach para prestar depoimento no procedimento que apura a existência e a produção de relatórios da Agência Brasileira de Inteligência (Abin) para auxiliar a defesa do senador Flávio Bolsonaro (Republicanos-RJ). A intimação era para que Luciana Pires prestasse esclarecimentos no dia 13 de abril e Juliana Bierrenbach no dia 20 deste mês. As oitivas seriam feitas por videoconferência. A coluna apurou que as duas já responderam à PGR invocando o direito ao sigilo profissional e não vão comparecer.

As duas advogadas atuam na defesa do senador no processo de investigação criminal que investiga as rachadinhas no antigo gabinete de Flávio na Alerj (Assembleia Legislativa do Rio). Elas se encontraram com o presidente Jair Bolsonaro, com o ministro Augusto Heleno, do GSI (Gabinete de Segurança Institucional), e com o diretor da Abin, Alexandre Ramagem, em 25 de agosto.

O caso foi revelado pela revista Época no ano ado. Na ocasião, segundo a revista, elas relataram que acreditavam que funcionários da Receita Federal estariam usando uma senha invisível para ar dados de Flávio de modo ilegal e essas informações teriam sido usadas na produção do relatório do Coaf (Conselho de Controle de Atividades Financeiras) que deu origem à investigação sobre o filho mais velho do presidente.

A revista revelou, ainda, que elas estavam procurando uma prova para, com isso, tentar anular toda a investigação. Depois do encontro, segundo a Época, teriam sido produzidos dois relatórios na Abin para ajudar a instruir a defesa de Flávio a obter as informações que procurava. Após essa revelação, a PGR recebeu notícias de fato para apurar o uso da Abin no caso e instaurou um procedimento de investigação preliminar para verificar as informações.

A PGR já tinha intimado o GSI a falar sobre o episódio e o ministro Augusto Heleno negou a existência dos relatórios. A explicação foi apresentada após a ministra do Supremo Tribunal Federal Carmén Lúcia dar 24 horas para que Heleno e Ramagem se manifestassem sobre a acusação. A revista reproduziu cópias das mensagens recebidas com o conteúdo do que seriam os relatórios no início de fevereiro deste ano.

Segundo a revista, os relatórios foram enviados via WhatsApp e fugiam dos "padrões" de textos da Abin, o que reforçaria a ideia de que os envios teriam sido feitos em uma estrutura paralela e não de forma oficial.

Desde que o caso veio à tona, a Abin a negou que tenha produzido relatórios para ajudar o senador. Em dezembro, divulgou nota dizendo que "supostos trechos divulgados apresentam-se mal redigidos, com linguajar técnico que não guarda relação com as atividades de inteligência", diz. A agência também afirmou que não existe "Abin Paralela" nem "Abin Clandestina".