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

Após prisão decretada, Monteiro alega inocência: 'Soube e vim me entregar'

Do UOL, em São Paulo

07/11/2022 19h19Atualizada em 07/11/2022 19h33

O ex-vereador bolsonarista Gabriel Monteiro (PL) gravou um vídeo (assista acima) em frente ao 77ª DP (Delegacia de Polícia), em Icaraí, bairro de Niterói, ao cumprir o mandado de prisão contra ele. O ex-policial afirmou que ficou sabendo do mandado através da advogada por um "crime em que não fui escutado na delegacia" e decidiu se entregar assim que soube da decisão judicial.

Monteiro teve a prisão preventiva decretada hoje pelo juiz Rudi Baldi Loewenkron, da 34ª Vara Criminal do Rio de Janeiro. Segundo a assessoria de imprensa do TJ-RJ (Tribunal de Justiça do Rio de Janeiro), a prisão é relacionada a um caso de estupro, cujo processo corre em segredo de justiça.

"Respeito as autoridades, por isso, eu estou vindo aqui, não fui conduzido pela polícia. Assim que eu fiquei sabendo, vim imediatamente me entregar para a justiça porque eu acredito nela e sei que a minha inocência ficará provada. Não só tecnicamente, mas para todo o Brasil de forma que fique incontestável qualquer acusação contra mim."

Na legenda da publicação, o ex-vereador ainda escreveu: "Acredito em Deus e na Justiça".

Segundo informou o jornalista Ancelmo Gois, do jornal O Globo, o caso teria ocorrido em 15 de julho — pouco mais de um mês antes de ter o mandato cassado na Câmara Municipal do Rio de Janeiro. Na ocasião, a vítima conheceu o ex-vereador em uma boate na Barra da Tijuca, na zona oeste carioca, e foi com ele à casa de um amigo no bairro do Joá, na zona sul, segundo relata o jornal.

Ainda de acordo com o colunista, Gabriel constrangeu a vítima a praticar sexo com ele, ando uma arma em seu rosto e dando tapas na sua face.

Perda de mandato e acusações de abuso sexual. Gabriel Monteiro foi cassado na Câmara Municipal em 18 de agosto, quando já era candidato a deputado federal, após uma série de denúncias de estupro e assédio moral e sexual. Entre elas, a TV Globo revelou um áudio no qual Monteiro dizia "gostar de novinha".

Ele teve o apoio de apenas de apenas dois colegas no plenário enquanto 48 vereadores votaram favoravelmente à cassação.

Antes de ser pivô de um escândalo sexual — que também envolveu denúncias de fraudes em vídeos e uso de pessoal do seu gabinete para obter lucro com seu canal no YouTube —, Monteiro era tido como um dos principais puxadores de voto do PL.

Ao menos três ex-assessores de Gabriel Monteiro (PL) relataram que o ex-vereador praticava sexo com menores de idade na presença de seus funcionários e pedia para que as adolescentes mostrassem os seios para eles, segundo relatório apresentado ao Conselho de Ética da Câmara.

Irmã e pai eleitos. Apesar da cassação e investigações, Monteiro conseguiu eleger o pai e a irmã como deputados no Rio de Janeiro.

Gisele Monteiro (PL), irmã de Gabriel, foi eleita para um mandato na Alerj (Assembleia Legislativa do Rio de Janeiro). Já Roberto Monteiro (PL) — pai do youtuber — obteve um assento na Câmara dos Deputados.