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

Esse conteúdo é antigo

Secretário de 'voo imoral' demitido por Bolsonaro em 2020 volta ao Planalto

Vicente Santini é amigo da família Bolsonaro - Reprodução/Twitter
Vicente Santini é amigo da família Bolsonaro Imagem: Reprodução/Twitter

Colaboração para o UOL

08/02/2021 07h58Atualizada em 08/02/2021 09h34

Em janeiro de 2020, José Vicente Santini era secretário-executivo da Casa Civil, mas se envolveu em uma polêmica. Sem autorização, usou um avião da FAB (Força Aérea Brasileira) para ir até a Índia. Ele foi criticado e exonerado do cargo. Mas hoje, foi nomeado novamente para uma função no Planalto. A indicação dele a secretário-executivo da Secretaria Geral da República, feita pelo presidente Jair Bolsonaro (sem partido), apareceu no Diário Oficial da União.

O voo de Santini aconteceu depois do Fórum Econômico Mundial de Davos, na Suíça. Ele estava representando o Ministro Onyx Lorenzoni e usou o avião da FAB para ir até a Índia, onde estava a comitiva de Bolsonaro.

Na época, o presidente criticou a atitude de Santini. Disse que era "imoral", pois os ministros costumavam usar voos comerciais para evitar gastos.

"Inissível o que aconteceu. Já está destituído da função de executivo do Onyx. Destituído por mim. Vou conversar com Onyx para decidir quais outras medidas podem ser tomadas contra ele. É inissível o que aconteceu, ponto final", disse Bolsonaro.

Santini foi exonerado, mas assumiu outro cargo dentro do governo em setembro. Foi nomeado para assessor do Ministro do Meio Ambiente, Ricardo Salles. Agora, voltará a assumir um posto dentro do Palácio do Planalto.

Errata: este conteúdo foi atualizado
Diferentemente do que informaram a matéria e a chamada na Home Page, José Vicente Santini não voltou para o mesmo cargo. Ele era secretário-executivo da Casa Civil e agora será secretário-executivo da Secretaria Geral da República. Os dois postos são dentro do Palácio do Planalto. A informação foi corrigida.