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

'Não tem pão? Coma osso': brasileiros protestam contra governo em Paris

14/11/2021 - Brasileiros protestam contra o governo Bolsonaro em frente à embaixada de Paris - Liliane Mutti
14/11/2021 - Brasileiros protestam contra o governo Bolsonaro em frente à embaixada de Paris Imagem: Liliane Mutti

14/11/2021 10h06

A embaixada do Brasil em Paris voltou a ser alvo neste domingo (14) de um novo protesto contra o governo de Jair Bolsonaro. Com o tema "Não tem pão? Coma osso", brasileiros residentes na França instalaram na fachada do prédio 25 quilos de ossos, faixas, pés de galinha e 40 as velhas para denunciar a volta da fome ao país.

Este foi o quarto protesto em forma de instalação artística realizado pelos coletivos Alerta França Brasil/MD18 e Ubuntu Audiovisual Amigos do MST desde o início da pandemia de covid-19. Eles escolhem com frequência o domingo, que é um dia em que a embaixada está fechada e o policiamento é menor, para evitar atritos.

Em comunicado, os organizadores explicaram que o ato faz para a opinião pública sa um "retrato da tragédia brasileira".

Realizado na véspera da comemoração da Proclamação de República, ele denuncia a política sanitária, econômica e social ultraliberal do governo, que é responsável por "cinco milhões de pessoas ando fome; 19 milhões de famílias na miséria; 14 milhões de cidadãos desempregados (...) e mais de 600 mil mortos por covid".

protesto2 -  Liliane Mutti -  Liliane Mutti
14/11/2021 - Protesto de brasileiros em frente à embaixada em Paris teve as vazias e ossos
Imagem: Liliane Mutti

A jornalista e escritora Marcia Camargos, representante do grupo militante Alerta França/Brasil, declarou à RFI que "este é mais um grito contra a necropolítica do governo de extrema-direita. No Brasil do genocida, morre-se de covid ou de fome. Vida ou Bolsonaro".

protesto - Liliane Mutti - Liliane Mutti
Imagem: Liliane Mutti

as vazias e ossos

As faixas instaladas na fachada traziam os dados dessa "situação desastrosa do país" e slogans como: ""Tá caro? Culpa do Bolsonaro"; "Não tem pão, coma osso". Nas grades do prédio, foram amarrados as vazias, ossos e boi e pés de galinha, que são os "alimentos que grande parte da população tem sido obrigada a consumir para não morrer de fome".

Os organizadores concluem que "não há nada a comemorar nesse 15 de novembro, Dia Nacional da República, proclamada em 1889.

A ideia inicial de fazer uma instalação artística em forma de protesto em frente da embaixada brasileira de foi do artista plástico Julio Villani, radiado em Paris. Em maio da 2020, ele pintou e instalou vários painéis na fachada do prédio, em protesto contra o presidente brasileiro Jair Bolsonaro. Depois disso, os grupos de brasileiros residentes na França realizaram vários atos parecidos no local em defesa da "democracia".