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

PMs atiram bala de borracha em mulheres pelas costas em MG

Leonardo Martins e Herculano Barreto Filho

Do UOL, em São Paulo

28/07/2022 04h00

Policiais militares de Minas Gerais foram filmados atirando balas de borracha contra um grupo de mulheres em São João del-Rei, distante 189 km da capital, Belo Horizonte. O caso aconteceu no último dia 16 de julho.

No vídeo, é possível ver e ouvir os disparos efetuados pelo agente, que grita "sai fora". A Polícia Militar de Minas Gerais, em nota, alegou "injusta agressão" contra os policiais. O Comando Geral da corporação foi acionado pelo Ministério Público de MG e irá investigar o episódio.

É possível ouvir ao menos quatro disparos do PM, enquanto as mulheres fogem do agente. O advogado Lincoln Lopes Barros Júnior, do Instituto Anjos da Liberdade, que representa uma das mulheres atingidas, afirma que duas saíram feridas e precisaram de atendimento médico — entre elas uma menor de idade. Ambas foram conduzidas à delegacia.

Segundo a Polícia Militar de Minas Gerais, os agentes atuavam na região após uma denúncia de tráfico de drogas. Lá, ainda segundo a PM, um homem e um menor de idade foram detidos.

"Um segundo menor de idade em razão do fato descrito acima, danificou uma das viaturas sendo apreendido em virtude do dano. Populares se voltaram contra as guarnições, ando a arremessar pedras contra as viaturas e policiais militares, na tentativa de resgatar o segundo menor", disse a PM.

A corporação ainda escreveu que usou tiros de borracha para conter "injusta agressão". "Sendo necessário o uso de munição de elastômero [bala de borracha] e espargidor de pimenta para conter a injusta agressão que os militares sofriam e ainda preservar a integridade física dos autores que estavam preso/apreendidos". A corporação reconheceu que as duas mulheres tinham lesões causadas pelos disparos.

O advogado Lincoln Lopes Barros Júnior, no entanto, afirma que os policiais tenaram encobertar uma "ação ilegal". "Sem saber que a ação havia sido gravada por moradores, os PMs afirmaram que somente agiram para repelir injusta agressão, mas as imagens são claras em demonstrar que o número de mulheres, a distância que estavam das viaturas e que os disparos aconteceram enquanto elas recuavam e estavam correndo, de costas para os militares, não indica verdade na narrativa da polícia", afirmou à reportagem.

Barros Júnior prossegue: "A prisão da vítima foi grave afronta à dignidade da pessoa humana e a sua inocência será provada em juízo".

O advogado denunciou o caso ao Ministério Público, que confirmou ter recebido a representação e a encaminhado, por meio da 4ª Promotoria de Justiça de São João del-Rei, ao Comando Geral da PM. O comando irá "apurar eventual crime de abuso de autoridade, por meio do inquérito policial militar respectivo", ainda de acordo com o MP.

"Dessa forma não foi instaurado Procedimento Investigatório Criminal (PIC) pela Promotoria de Justiça, uma vez que o fato será apurado no inquérito policial militar com o acompanhamento do MP", concluiu o órgão.