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

Tivemos várias falhas nesse caso, diz Gilmar Mendes sobre André do Rap

Para Gilmar Mendes, caso de André do Rap teve erros da defesa, do MP e do STF - Marcello Casal Jr./Agência Brasil
Para Gilmar Mendes, caso de André do Rap teve erros da defesa, do MP e do STF Imagem: Marcello Casal Jr./Agência Brasil

Colaboração para o UOL, em São Paulo

16/10/2020 09h32Atualizada em 16/10/2020 11h54

O ministro Gilmar Mendes comentou hoje a decisão do plenário do STF (Supremo Trbunal Federal) de manter o pedido de prisão do traficante André do Rap. Para ele, houve muitas falhas no processo, desde a não renovação da prisão preventiva, até a decisão que acatou o habeas corpus e a crise instalada no tribunal por causa da guerra de decisões.

"Um avião não cai por uma falha só, há muitas falhas e nós tivemos esse contexto não só na concessão desse habeas corpus, mas também nos episódios que se seguiram para tentar reparar", disse Gilmar em entrevista à Rádio Bandeirantes.

André do Rap, considerado um dos líderes do PCC, foi solto no último sábado, após decisão do ministro Marco Aurélio Mello. Ele utilizou como argumento um artigo do pacote anticrime que exige que as prisões preventivas, quando necessárias, sejam renovadas a cada 90 dias - o que não ocorreu. No mesmo dia, porém, o presidente do STF, Luiz Fux, derrubou a decisão do colega. Àquela altura, André já havia deixado o Brasil e agora é considerado foragido.

Na avaliação de Gilmar Mendes, uma "reclamação efetiva" do Ministério Público resolveria e, assim, o caso não precisaria chegar ao presidente do STF e ao plenário. "Um mandado de segurança que a procuradoria tivesse impetrado contra o ato do ministro Marco Aurélio muito provavelmente teria suspendido a ordem", completou, lembrando que o mandado seria distribuído para outro ministro dentro da corte.

Gilmar apontou como prejudicial uma outra prática comum entre defesas de réus para, indiretamente, escolher qual ministro relatará seus pedidos. Segundo ele, alguns advogados desistem dos recursos ao notarem que o pedido está nas mãos de determinado magistrado. Com a desistência, a apresentação de um novo recurso vai, automaticamente, para outro ministro, de acordo com o regimento do Supremo.

"Nós sabemos que certos grupamentos de defesa de vários réus são muito ativos e criativos, como no caso do Supremo Tribunal Federal. Eles tinham um processo que deveria ir à ministra Rosa, desistiram desse processo, e procuraram uma distribuição que chegasse ao ministro Marco Aurélio, que eles avaliaram que seria muito mais sensível ao seu pleito", afirmou.

Apesar de ter criticado o presidente do STF ontem, Gilmar Mendes disse que a preocupação de Fux era de "ar uma diretriz aos juízes" para que não houvesse essa impressão de que houve um 'liberou geral' a partir da lei.

Veja o que Gilmar Mendes disse na sessão de ontem.