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

Vídeo: Homem agride estudante de 14 anos por barulho em hotel de SP

Maurício Businari

Colaboração para o UOL

21/09/2022 23h24

Um homem de 26 anos foi flagrado por câmeras de segurança de um hotel de São Paulo agredindo um adolescente de 14 anos, aluno da escola Eliezer Max, do Rio de Janeiro. O estudante estava hospedado no hotel com colegas de classe, participando de uma excursão à capital paulista.

Nas imagens, é possível ver o adolescente brincando com um colega no corredor do 10° andar do hotel Travel Inn Ibirapuera, que fica na rua Borges Lagoa, na Vila Clementino. De repente, o homem abre a porta do quarto onde estava hospedado e segura um dos meninos pela camiseta, empurrando-o contra a parede.

Na sequência, ele imobiliza o rapaz com o braço e inicia uma sequência de tapas na cabeça e no rosto. Depois, o homem pega o chinelo e volta a bater no rosto e na cabeça do jovem. Por fim, após conseguir se desvencilhar, o estudante recebe um último golpe na cabeça.

Como se pode ver pelas câmeras de segurança, as agressões aconteceram às 20h04. Uma fonte ligada ao hotel informou que, logo após as agressões, o jovem procurou os seguranças do estabelecimento e ligou para os pais no Rio de Janeiro.

Em nota, a SSP-SP (Secretaria de Segurança Pública de São Paulo) informou que o caso foi registrado como lesão corporal pelo 27º Distrito Policial (Campo Belo) e encaminhado ao 16º Distrito Policial (Vila Clementino), responsável pela área, que prossegue com as investigações.

Um parente do garoto, que é advogado, está na capital paulista nesta quarta-feira (21) para acompanhar os desdobramentos do caso. O jovem deve ar por um exame de corpo de delito.

Em nota encaminhada à imprensa, a escola carioca Eliezer Max disse que está "focada em garantir a segurança do aluno". A instituição de ensino afirmou também que "atua com a família para a responsabilização do agressor".

Em nota ao UOL, a rede de hotéis Travel Inn afirmou que os responsáveis pela unidade do Ibirapuera tomaram "todas as providências para acolher e proteger o estudante agredido" após serem notificados sobre a agressão.

"A gerente do hotel, se prontificou a dar todo o e necessário no encaminhamento e denúncia do agressor à Polícia Civil, bem como o acompanhamento com os responsáveis pelo menor em depoimento na delegacia de polícia. Para contribuir com as investigações, após a denúncia efetivada, o hotel Travel Inn Ibirapuera apresentou as imagens das câmeras de segurança do local a polícia, além de estar à disposição das autoridades para quaisquer outras informações, se necessárias", completou o comunicado.