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

'Gente humilde pode ter esperança', diz mãe de catador morto por militares

Ruben Berta

Do UOL, no Rio

14/10/2021 17h49

Foram mais de dois anos de espera, mas Aparecida Macedo deixou, na madrugada desta quinta-feira (14), o auditório do prédio da Justiça Militar da União, no Rio, de cabeça erguida. Oito militares foram condenados pela ação que provocou a morte de seu filho, o catador de material reciclável Luciano Macedo, e do músico Evaldo Rosa.

"Sei que não é algo que traz o meu filho de volta, mas foi um resultado importante. Ao menos, a Justiça foi feita. A gente só costuma ver, do lado da gente que é mais humilde, injustiça. Ao menos essa decisão mostra que a Justiça não está ao lado só de quem tem (dinheiro). Gente humilde pode ter esperança", afirmou Aparecida.

Luciano Macedo foi baleado quando tentava socorrer o músico Evaldo Rosa, cujo carro foi atingido por 62 disparos efetuados pelos militares. O catador chegou a ficar 11 dias internado, mas morreu em 18 de abril de 2019.

"Durmo e acordo todos os dias pensando nele. A gente vai morrendo aos poucos quando o filho da gente se vai", disse a mãe de Luciano.

aparecida, luciano - Reprodução/Arquivo Pessoal - Reprodução/Arquivo Pessoal
Aparecida Macedo e o filho, o catador Luciano Macedo, morto por militares em abril de 2019
Imagem: Reprodução/Arquivo Pessoal

Revolta

Durante as mais de 15 horas do julgamento, ela precisou ser socorrida fora do auditório quando a defesa dos militares tentou, sem qualquer prova, acusar Luciano de ter matado Evaldo.

"Meu filho morreu ajudando uma outra pessoa, aquilo foi revoltante. Não tinha a menor lógica nessa tese. O Luciano mal tinha o que comer, quanto mais ter dinheiro para comprar uma arma. Quando ele foi atingido, estava indo buscar as telhas para colocar num barraco que estava construindo", completou Aparecida.

Não há nos autos provas que sustentem a tese da defesa dos militares. Os familiares que estavam no carro com Evaldo não relataram nada contra Luciano e também não foi encontrada nenhuma arma com o catador.

Durante a sessão de julgamento, a promotora responsável pela denúncia, Najla Nassif Palma, disse que o uso dessa tese pela defesa dos militares era como matar Luciano pela segunda vez.

Condenações

Os oito militares foram condenados pelos crimes de duplo homicídio, de Evaldo e Luciano, e de tentativa de homicídio de Sérgio Gonçalves de Araújo, sogro de Evaldo, ferido dentro do carro.

O tenente Ítalo da Silva Nunes Romualdo recebeu a pena maior, de 31 anos e seis meses de prisão. Fabio Henrique Souza Braz da Silva, Gabriel Christian Honorato, Gabriel da Silva de Barros Lins, João Lucas da Costa Gonçalo, Leonardo de Oliveira de Souza, Marlon Conceição da Silva e Matheus Santanna Claudino foram condenados a 28 anos.

Quatro participantes da ação foram absolvidos porque ficou constatado que eles não atiraram.

O julgamento foi feito por um conselho presidido pela juíza Mariana Aquino e formado por outros quatro membros, militares escolhidos através de sorteio.

Além da juíza, outros dois militares decidiram pela condenação.

A magistrada terá agora o prazo de oito dias para fazer a leitura da sentença, em audiência pública. Cabe então apelação ao Superior Tribunal Militar (STM), no prazo de cinco dias, contados da data da leitura.

A defesa dos militares já confirmou que irá recorrer. Os oito condenados seguirão respondendo em liberdade até que haja decisão definitiva do STM.