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

Vivo a guerra que o clã Bolsonaro organiza contra mim, diz Manuela D'Ávila

Colaboração para o UOL, em São Paulo

23/10/2020 15h49

A candidata do PCdoB à Prefeitura de Porto Alegre, Manuela D'Ávila, declarou sofrer ataques da família do presidente Jair Bolsonaro (sem partido) e que sua rejeição não é alta diante deste cenário.

"Vivo a guerra que o clã Bolsonaro organiza contra mim há muitos anos", disse em sabatina do UOL, em parceria com a Folha de S. Paulo, transmitida hoje, ao comentar um post do deputado federal Eduardo Bolsonaro (PSL-SP), que chamava os gaúchos a se voluntariarem para uma guerra contra a candidata.

"É uma guerra que impôs violência física, inclusive, a mim, a minha filha quando era ainda menor do que é, aos meus familiares. A minha vida, nos últimos anos, é uma vida atravessada pela violência, pela mentira, promovida, financiada, distribuída e organizada pelo gabinete do ódio e liderado pelos filhos do presidente da República", disse.

"Inclusive, acho que ela [rejeição nas pesquisas] é bastante baixa diante dos ataques que eu sou alvo desde 2015, com um crescimento exponencial em 2018, que segue acontecendo agora", afirmou Manuela D'Ávila, que foi vice na chapa de Fernando Haddad (PT) na eleição presidencial de 2018.

A última pesquisa Ibope apontou a liderança de Manuela D'Ávila com 24% das intenções de votos. Ela também aparecia como a segunda com a maior taxa de rejeição, com 28%, atrás apenas do atual prefeito e candidato à reeleição, Nelson Marchezan Júnior (PSDB).

"Como pessoa que está entre os principais alvos dessas redes de ódio, dessas redes de mentira, dessas redes de destruição, da honra, do meu corpo, como vocês assistem na internet, da minha vida, da minha trajetória, acredito que estamos muito bem", disse ao colunista do UOL Leonardo Sakamoto e à jornalista da Folha Paula Sperb.

Relação com Bolsonaro se for eleita

Questionada sobre como seguiria se relacionando com o presidente da república caso seja eleita, ela respondeu que seguirá "lutando para que o Brasil vença a violência política".

"Serei uma prefeita que vai se relacionar com o presidente da maneira que acho que todos os prefeitos e prefeitas devem se relacionar. Disputando investimentos para o povo da minha cidade", afirmou.

Unidade e frente ampla de esquerda

Falando sobre os partidos de esquerda durante as eleições no país, Manuela D'Ávila afirmou: "Eu sei que nós queríamos estar mais unidos nas eleições municipais". Mas, segundo ela, os partidos de esquerda 'não estão totalmente divididos'.

Gestão na pandemia

A candidata disse que, durante a pandemia, sugeriu ao prefeito Marchezan um comitê de crise para a cidade, que foi negada.

"Entendo que a tomada de decisões numa pandemia que afeta, impacta a vida de toda a sociedade de maneira tão dramática, tenham que ser pactuadas, e eu imaginei, talvez ingenuamente, talvez abstraindo algumas características do prefeito, que seria bastante positivo para ele contar com aquela que seria, virtualmente, sua adversária. Porque é um símbolo, né? De uma unidade em defesa de uma pauta", disse.