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

DF: Ex-secretário diz que Torres aprovou plano de segurança antes de ataque

Fernando de Sousa Oliveira, ex-secretário-executivo do Distrito Federal - Agência Brasil
Fernando de Sousa Oliveira, ex-secretário-executivo do Distrito Federal Imagem: Agência Brasil

Vinícius Nunes

Colaboração para o UOL, em Brasília

19/01/2023 15h15Atualizada em 19/01/2023 15h36

Fernando de Sousa Oliveira, ex-secretário-executivo do Distrito Federal, disse em depoimento que à Polícia Federal Anderson Torres aprovou, em 6 de janeiro, o Plano de Ações Integradas — o que definiu as ações das forças policiais e o tamanho do efetivo em 8 de janeiro.

Ouvido pela PF nesta quinta (19), Fernando Oliveira disse que o então secretário de Segurança Pública do DF, Anderson Torres, não ou nenhuma orientação específica para inibir a manifestação golpista que depredou o Palácio do Planalto, o Congresso Nacional e o Supremo Tribunal Federal.

Fernando Oliveira afirma que Torres não o "apresentou aos comandantes das forças policiais" antes de viajar aos Estados Unidos, onde aria "férias". Oliveira ficou como substituto na SSP-DF enquanto o titular estava em Orlando —mesmo local onde ainda está o ex-presidente Jair Bolsonaro.

Torres voltou ao Brasil no último final de semana e está preso no 4º Batalhão da PMDF. Ele é investigado em inquérito no STF por ter supostamente facilitado a ação dos bolsonaristas radicalizados. Apesar da alegação de férias, o ex-ministro da Justiça só poderia entrar em licença em 9 de janeiro, um dia depois do ato golpista.

Depois de se calar em depoimento ontem (18), Torres deve prestar novo depoimento na próxima segunda (23).

O ex-secretário Fernando Oliveira foi demitido pelo interventor da Segurança Pública do Distrito Federal, Ricardo Cappelli, em 10 de janeiro. Ele foi alvo de críticas depois que um áudio em que relata "clima tranquilo" antes da insurreição bolsonarista veio a público. O destinatário da mensagem de voz era o governador afastado do DF, Ibaneis Rocha (MDB).