(function() { 'use strict'; // ========================================================================= // SECAO 1: CONFIGURACOES CENTRALIZADAS // ========================================================================= const CONFIG = { loaderControl: { manage: true, zIndex: 10000, fadeOutMs: 400, backdropColor: 'rgba(255,255,255,0.6)', blurPx: 10, }, // ------------------------------------------------------------------------- // MODO DE OPERACAO // enabled: true -> Modo RetryStep (1 bloco, ignora no-fill, timeout global) // enabled: false -> Modo Cascata (3 blocos em sequencia, no-fill pula bloco) // ------------------------------------------------------------------------- retryStep: { enabled: true, timeoutMs: 10000, logAttempts: true, }, // ------------------------------------------------------------------------- // BLOCO ATIVO // Usado apenas quando retryStep.enabled = true. // ------------------------------------------------------------------------- activePlacement: 'bloco2', // ------------------------------------------------------------------------- // ORDEM DE CASCATA // Usado apenas quando retryStep.enabled = false. // ------------------------------------------------------------------------- executionOrder: ['bloco2', 'bloco1', 'bloco3'], // ------------------------------------------------------------------------- // CADASTRO DE BLOCOS // ------------------------------------------------------------------------- placements: { 'bloco1': { cookieName: 'AutoRewardCompleted_1', placementId: 'vja_rewarded_gift', adUnitPath: 'vja_rewarded_gift', divId: 'vja_rewarded_gift', timeoutMs: 10000 }, 'bloco2': { cookieName: 'AutoRewardCompleted_2', placementId: 'av_rewarded', adUnitPath: 'vja_rewarded', divClass: 'av-rewarded', timeoutMs: 8000 }, 'bloco3': { cookieName: 'AutoRewardCompleted_3', placementId: 'vja_rewarded_quizz', adUnitPath: 'vja_rewarded_quizz', divId: 'vja_rewarded_quizz', timeoutMs: 8000 } }, // --- Cookies --- // Mesmo cookie para completo e abandonado; muda apenas a duracao. cookie: { duration_minutes: 60, duration_closed_minutes: 2, samesite: 'Lax', secure: false, }, // --- Loader Textos --- loader: { loader_text_element_id: 'av-loader__text', text: 'O conteudo sera liberado apos o anuncio.', text_initial: 'O conteudo sera liberado apos o anuncio.', text_fallback1:'O conteudo sera liberado apos o anuncio.', text_fallback2:'O conteudo sera liberado apos o anuncio.', loaderBloqueado: 'Carregando...', }, // --- Prevencao Contra Multi-Requests --- guard_flag: '__autoRewardRunning', // --- Rastreamento (Analytics GA4) --- analytics: { enable_ga4: false }, // --- Fallback Top --- fallbackTop: { targetWrapperId: 'vja_top_wrapper2', adElementId: 'vja_top', insertPosition: 'afterend', htmlTemplate: `

Anuncios

` } }; // ========================================================================= // SECAO 2: FUNCOES AUXILIARES E UI // ========================================================================= // ---- LOADER ---- let _rewardLoaderEl = null; let _fallbackTopInserido = false; function criarRewardLoader(text) { if (!CONFIG.loaderControl.manage) return; if (document.getElementById('av-reward-loader')) return; if (!document.getElementById('av-reward-loader-style')) { const style = document.createElement('style'); style.id = 'av-reward-loader-style'; style.innerHTML = ` #av-reward-loader { position: fixed; width: 100vw; height: 100vh; z-index: ${CONFIG.loaderControl.zIndex}; top: 0; left: 0; background-color: ${CONFIG.loaderControl.backdropColor}; backdrop-filter: blur(${CONFIG.loaderControl.blurPx}px); -webkit-backdrop-filter: blur(${CONFIG.loaderControl.blurPx}px); opacity: 0; animation: rl-fadeIn 0.4s forwards; display: flex; flex-direction: column; align-items: center; justify-content: center; } @keyframes rl-fadeIn { from { opacity: 0 } to { opacity: 1 } } @keyframes rl-fadeOut { from { opacity: 1 } to { opacity: 0 } } #av-reward-loader__spinner { width: 52px; height: 52px; border: 7px solid #f3f3f3; border-radius: 50%; border-top: 7px solid #808080; animation: rl-spin 0.9s linear infinite; } @keyframes rl-spin { 0%{transform:rotate(0deg)} 100%{transform:rotate(360deg)} } #av-reward-loader__text { margin-top: 18px; font-size: 17px; font-weight: bold; text-align: center; padding: 0 24px; color: #222; } `; document.head.appendChild(style); } const el = document.createElement('div'); el.id = 'av-reward-loader'; el.innerHTML = `
${text || ''}
`; document.body.appendChild(el); _rewardLoaderEl = el; window.scrollTo({ top: 0, behavior: 'smooth' }); } function setRewardLoaderText(text) { try { const avEl = document.getElementById(CONFIG.loader.loader_text_element_id); if (avEl) avEl.textContent = text; } catch(e) {} const el = document.getElementById('av-reward-loader__text'); if (el) el.textContent = text; } function fecharRewardLoader(motivo) { if (!CONFIG.loaderControl.manage) return; const el = document.getElementById('av-reward-loader'); if (!el) return; console.log(`[Reward Loader] Fechando loader. Motivo: ${motivo}`); el.style.animation = `rl-fadeOut ${CONFIG.loaderControl.fadeOutMs}ms forwards`; setTimeout(() => { el.remove(); _rewardLoaderEl = null; }, CONFIG.loaderControl.fadeOutMs + 50); } // ---- COOKIES ---- function setCookie(name, value, minutes) { const date = new Date(); date.setTime(date.getTime() + (minutes * 60 * 1000)); const expires = 'expires=' + date.toUTCString(); const samesite = 'SameSite=' + CONFIG.cookie.samesite; const secure = CONFIG.cookie.secure ? '; Secure' : ''; document.cookie = name + '=' + (value || '') + '; ' + expires + '; path=/; ' + samesite + secure; } function getCookie(name) { const nameEQ = name + '='; const ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i].trimStart(); if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length); } return null; } function usuarioJaInteragiu(placement) { return !!(placement && getCookie(placement.cookieName)); } function motivoCookieAtivo(placement) { return usuarioJaInteragiu(placement) ? 'already_interacted' : null; } // ---- ANALYTICS ---- function getTrackerData() { const params = new URLSearchParams(window.location.search); const getVal = (paramName, storageKey) => { let val = params.get(paramName); if (val) return val; val = sessionStorage.getItem(storageKey); if (val) return val; val = localStorage.getItem(storageKey); if (val) return val; return ''; }; return { utm_source: getVal('utm_source', 'avUtmSource'), utm_medium: getVal('utm_medium', 'avUtmMedium'), utm_campaign: getVal('utm_campaign', 'avUtmCampaign'), utm_term: getVal('utm_term', 'avUtmTerm'), utm_content: getVal('utm_content', 'avUtmContent'), gclid: getVal('gclid', 'avGclid'), fbclid: getVal('fbclid', 'avFbclid'), tbclid: getVal('tbclid', 'avTbclid'), ttclid: getVal('ttclid', 'avTtclid'), user_id: localStorage.getItem('avUserId') || '', session_id: sessionStorage.getItem('avSessionId') || '', experiment: sessionStorage.getItem('avExperiment') || '', marketplace: sessionStorage.getItem('avMarketplace') || '' }; } function trackGA4(eventName, placement, extraParams = {}) { if (!CONFIG.analytics.enable_ga4) return; if (!window.dataLayer) window.dataLayer = []; const payload = { event: eventName, country: window.av?.country || sessionStorage.getItem('avCountry') || 'unknown', ...getTrackerData(), ...extraParams }; if (placement) payload.reward_block = placement.placementId; window.dataLayer.push(payload); console.log(`[GA4 Track] ${eventName}`, payload); } // ---- FALLBACK TOP ---- function inserirAnuncioTop(reason = 'unknown') { if (_fallbackTopInserido) { fecharRewardLoader(reason); return; } fecharRewardLoader(reason); const targetDiv = document.getElementById(CONFIG.fallbackTop.targetWrapperId); if (!targetDiv) { console.warn(`[Reward] Fallback (${CONFIG.fallbackTop.targetWrapperId}) nao encontrado.`); return; } if (document.getElementById(CONFIG.fallbackTop.adElementId)) { _fallbackTopInserido = true; return; } console.log(`[Reward] Inserindo fallback top. Motivo: ${reason}`); trackGA4('reward_ad_fallback_top', null, { fallback_reason: reason }); targetDiv.insertAdjacentHTML(CONFIG.fallbackTop.insertPosition, CONFIG.fallbackTop.htmlTemplate); _fallbackTopInserido = true; } // ---- DIV ISCA ---- function inserirDivGenerica(placement) { if (placement.divId) { if (document.getElementById(placement.divId)) return; const div = document.createElement('div'); div.id = placement.divId; div.style.display = 'none'; document.body.appendChild(div); } else if (placement.divClass) { if (document.querySelector('.' + placement.divClass)) return; const div = document.createElement('div'); div.className = placement.divClass; div.style.display = 'none'; if (placement.divClass === 'av-rewarded') { div.dataset.avRewarded = 'true'; div.setAttribute('aria-hidden', 'true'); } document.body.appendChild(div); } } // ========================================================================= // SECAO 3A: MOTOR RETRYSTEP // ========================================================================= let activePlacementAdUnitPath = null; let activePlacement = null; let grantOcorreu = false; let globalActiveCleanup = null; let activeOnFail = null; function limparEstadoReward() { activePlacementAdUnitPath = null; activePlacement = null; activeOnFail = null; grantOcorreu = false; } function executarRewardComRetry(placement) { console.log(`[Reward][RetryStep] Iniciando para bloco: '${placement.placementId}'`); activePlacementAdUnitPath = placement.adUnitPath; activePlacement = placement; grantOcorreu = false; activeOnFail = null; trackGA4('reward_ad_request', placement); inserirDivGenerica(placement); let timeoutHandle = null; let isResolved = false; const cleanup = () => { isResolved = true; if (timeoutHandle) clearTimeout(timeoutHandle); globalActiveCleanup = null; }; globalActiveCleanup = cleanup; timeoutHandle = setTimeout(() => { if (isResolved) return; cleanup(); console.warn(`[Reward][RetryStep] Timeout (${CONFIG.retryStep.timeoutMs}ms) esgotado. Abrindo top.`); trackGA4('reward_ad_timeout', placement); limparEstadoReward(); inserirAnuncioTop('timeout'); }, CONFIG.retryStep.timeoutMs); window.av.waitFor(() => { if (isResolved) return true; const slot = window.av?.definedSlots?.find(s => s.placement === placement.placementId); return slot && slot.lifecycle === 'ready'; }).then(() => { if (isResolved) return; cleanup(); const rewardedSlot = window.av.definedSlots.find(s => s.placement === placement.placementId); if (!rewardedSlot) { console.error(`[Reward][RetryStep] Slot ausente apos retry. Abrindo top.`); trackGA4('reward_ad_nofill', placement); limparEstadoReward(); inserirAnuncioTop('slot_missing'); return; } console.log(`[Reward][RetryStep] Slot VENDIDO. Exibindo...`); trackGA4('reward_ad_filled', placement); rewardedSlot.show(function() { console.log(`[Reward][RetryStep] Usuario assistiu tudo.`); trackGA4('reward_ad_completed', placement); setCookie(placement.cookieName, 'true', CONFIG.cookie.duration_minutes); limparEstadoReward(); inserirAnuncioTop('completed'); }); }); } // ========================================================================= // SECAO 3B: MOTOR CASCATA // ========================================================================= function tentarPlacement(placement, onFail) { console.log(`[Reward][Cascata] Tentando bloco: '${placement.placementId}'`); activeOnFail = onFail; activePlacementAdUnitPath = placement.adUnitPath; activePlacement = placement; grantOcorreu = false; trackGA4('reward_ad_request', placement); inserirDivGenerica(placement); let timeoutHandle = null; let isResolved = false; const cleanup = () => { isResolved = true; if (timeoutHandle) clearTimeout(timeoutHandle); globalActiveCleanup = null; }; globalActiveCleanup = cleanup; timeoutHandle = setTimeout(() => { if (isResolved) return; cleanup(); console.warn(`[Reward][Cascata] Timeout em '${placement.placementId}'. Pulando...`); onFail(); }, placement.timeoutMs || 10000); window.av.waitFor(() => { if (isResolved) return true; const slot = window.av?.definedSlots?.find(s => s.placement === placement.placementId); return slot && slot.lifecycle === 'ready'; }).then(() => { if (isResolved) return; cleanup(); const rewardedSlot = window.av.definedSlots.find(s => s.placement === placement.placementId); if (!rewardedSlot) { console.error(`[Reward][Cascata] Slot '${placement.placementId}' ausente. Pulando...`); onFail(); return; } console.log(`[Reward][Cascata] Anuncio '${placement.placementId}' PRONTO. Exibindo...`); trackGA4('reward_ad_filled', placement); rewardedSlot.show(function() { console.log(`[Reward][Cascata] Usuario assistiu tudo em '${placement.placementId}'.`); trackGA4('reward_ad_completed', placement); setCookie(placement.cookieName, 'true', CONFIG.cookie.duration_minutes); limparEstadoReward(); inserirAnuncioTop('completed'); }); }); } function determinarPontoDeEntrada() { for (let i = 0; i < CONFIG.executionOrder.length; i++) { const blockKey = CONFIG.executionOrder[i]; const placement = CONFIG.placements[blockKey]; if (placement && !usuarioJaInteragiu(placement)) return i; } return -1; } function executarCascata(startIndex) { const loaderTexts = [ CONFIG.loader.text_initial, CONFIG.loader.text_fallback1, CONFIG.loader.text_fallback2 ]; let cadeia = function() { limparEstadoReward(); inserirAnuncioTop('all_empty_or_timeout'); }; for (let i = CONFIG.executionOrder.length - 1; i >= startIndex; i--) { (function(index, nextFail) { const blockKey = CONFIG.executionOrder[index]; const placement = CONFIG.placements[blockKey]; const loaderText = loaderTexts[index] || CONFIG.loader.text_initial; const thisOnFail = function() { if (index < CONFIG.executionOrder.length - 1) { setRewardLoaderText(loaderTexts[index + 1] || CONFIG.loader.text_fallback2); } nextFail(); }; cadeia = function() { if (!placement) { console.error(`[Reward][Cascata] Bloco '${blockKey}' faltante. Queimando etapa.`); thisOnFail(); return; } if (usuarioJaInteragiu(placement)) { console.log(`[Reward][Cascata] Cookie ativo em '${placement.placementId}'. Pulando bloco.`); thisOnFail(); return; } setRewardLoaderText(loaderText); tentarPlacement(placement, thisOnFail); }; })(i, cadeia); } cadeia(); } // ========================================================================= // SECAO 4: INTEGRACAO GAM // ========================================================================= window.googletag = window.googletag || { cmd: [] }; googletag.cmd.push(function() { googletag.pubads().addEventListener('rewardedSlotGranted', function(event) { const adUnitPath = event.slot.getAdUnitPath(); if (activePlacementAdUnitPath && adUnitPath.includes(activePlacementAdUnitPath)) { grantOcorreu = true; } }); googletag.pubads().addEventListener('rewardedSlotClosed', function(event) { const adUnitPath = event.slot.getAdUnitPath(); if (!activePlacementAdUnitPath || !adUnitPath.includes(activePlacementAdUnitPath)) return; if (grantOcorreu) return; console.warn(`[Reward] Usuario fechou o reward sem completar.`); trackGA4('reward_ad_abandoned', activePlacement); if (globalActiveCleanup) globalActiveCleanup(); if (activePlacement) { setCookie(activePlacement.cookieName, 'true', CONFIG.cookie.duration_closed_minutes); } limparEstadoReward(); inserirAnuncioTop('abandoned'); }); googletag.pubads().addEventListener('slotRenderEnded', function(event) { if (!event.isEmpty) return; const adUnitPath = event.slot.getAdUnitPath(); if (!activePlacementAdUnitPath || !adUnitPath.includes(activePlacementAdUnitPath)) return; if (CONFIG.retryStep.enabled) { if (CONFIG.retryStep.logAttempts) { console.log(`[Reward][RetryStep] Tentativa sem fill em '${activePlacement?.placementId}'. Aguardando proximo retry...`); } trackGA4('reward_ad_retry_attempt', activePlacement); } else { trackGA4('reward_ad_nofill', activePlacement); if (globalActiveCleanup) globalActiveCleanup(); if (activeOnFail) { console.warn(`[Reward][Cascata] NO FILL. Pulando para proximo bloco...`); const fail = activeOnFail; activeOnFail = null; fail(); } } }); }); // ========================================================================= // SECAO 5: INICIALIZACAO // ========================================================================= document.addEventListener('DOMContentLoaded', function() { if (window[CONFIG.guard_flag]) { console.warn('[Reward] Execucao paralela abortada.'); return; } window[CONFIG.guard_flag] = true; if (window.av?.skipAds) { console.warn('[Reward] AdBlock detectado.'); inserirAnuncioTop('adblock'); return; } if (!window.av) { inserirAnuncioTop('av_not_loaded'); return; } window.av.waitFor(() => window.av.isSafe !== null).then(() => { if (!window.av.isSafe) { console.warn('[Reward] Bot / trafego invalido. Negando reward.'); inserirAnuncioTop('bot_traffic'); return; } if (CONFIG.retryStep.enabled) { const placement = CONFIG.placements[CONFIG.activePlacement]; if (!placement) { console.error(`[Reward] activePlacement '${CONFIG.activePlacement}' nao encontrado.`); inserirAnuncioTop('config_error'); return; } const cookieReason = motivoCookieAtivo(placement); if (cookieReason) { console.log(`[Reward][RetryStep] Cookie ativo. Abrindo top direto.`); trackGA4('reward_ad_already_interacted', placement); criarRewardLoader(CONFIG.loader.loaderBloqueado); setRewardLoaderText(CONFIG.loader.loaderBloqueado); inserirAnuncioTop(cookieReason); return; } criarRewardLoader(CONFIG.loader.text); setRewardLoaderText(CONFIG.loader.text); executarRewardComRetry(placement); } else { const pontoDeEntrada = determinarPontoDeEntrada(); if (pontoDeEntrada === -1) { console.log('[Reward][Cascata] Todos os cookies ativos. Abrindo top direto.'); trackGA4('reward_ad_already_interacted_all', null); criarRewardLoader(CONFIG.loader.loaderBloqueado); setRewardLoaderText(CONFIG.loader.loaderBloqueado); inserirAnuncioTop('already_interacted_all'); return; } criarRewardLoader(CONFIG.loader.text_initial); setRewardLoaderText(CONFIG.loader.text_initial); executarCascata(pontoDeEntrada); } }); }); })();

Minha Casa Minha Vida: O Sonho da Casa Própria

Minha Casa Minha Vida é uma iniciativa do governo que visa proporcionar moradia digna.

Introdução

Desde seu lançamento, o programa tem sido uma luz no fim do túnel para milhares de brasileiros que sonham com a casa própria.

Neste artigo, exploraremos o processo de inscrição no Minha Casa Minha Vida, destacando os passos necessários, os benefícios oferecidos e como essa oportunidade pode transformar vidas.

Conteúdo

1. A Importância do Programa Minha Casa Minha Vida

Anúncios

O déficit habitacional no Brasil é uma realidade que afeta inúmeras famílias. O Minha Casa Minha Vida surge como uma resposta a esse desafio, oferecendo uma chance de mudança de vida para aqueles que antes viam a aquisição de uma casa própria como um sonho distante.

Com taxas de juros acessíveis e condições facilitadas, o programa se tornou uma esperança tangível para muitos.

2. Passo a Passo da Inscrição

O primeiro passo para ingressar no programa é realizar a inscrição, um processo que pode parecer complexo à primeira vista, mas que, na prática, busca garantir que as famílias realmente necessitadas sejam beneficiadas.

O candidato deve procurar a prefeitura de sua cidade ou o órgão responsável pela gestão do programa em seu município. A documentação necessária geralmente inclui comprovantes de renda, residência e documentação pessoal.

Além disso, é importante estar atento aos prazos estabelecidos para inscrição, pois o programa opera com uma alta demanda. É recomendável que os interessados fiquem atentos aos canais oficiais de divulgação e aos meios digitais para obterem informações atualizadas.

3. Benefícios do Programa Minha Casa Minha Vida

Os benefícios oferecidos pelo programa são multifacetados e vão além da simples aquisição de um imóvel. Um dos principais atrativos é a possibilidade de financiamento com taxas de juros reduzidas, o que torna a casa própria mais acessível para as famílias de baixa renda.

Além disso, o programa contempla diferentes faixas de renda, possibilitando que uma variedade de perfis familiares seja atendida.

Outro benefício notável é a segurança proporcionada pela aquisição de um imóvel. A estabilidade proporcionada pelo Minha Casa Minha Vida não se limita apenas à questão financeira, mas também à garantia de um lar para as futuras gerações. Isso tem um impacto significativo na qualidade de vida, na autoestima e no desenvolvimento das comunidades beneficiadas.

4. Desafios e Mitos

Apesar dos benefícios, o programa enfrenta desafios, como a burocracia inerente aos processos governamentais e a falta de recursos em algumas regiões. É importante destacar que a transparência e o acesso à informação são essenciais para dissipar mitos que possam desencorajar potenciais beneficiários.

A compreensão correta do funcionamento do programa é fundamental para que as famílias interessadas possam aproveitar ao máximo essa oportunidade.

Conclusão

A inscrição no Minha Casa Minha Vida representa muito mais do que o preenchimento de formulários. É a abertura de portas para uma realidade diferente, uma oportunidade de conquistar um sonho que parecia inatingível. Este programa governamental não apenas oferece um teto, mas também constrói alicerces para um futuro mais estável e promissor.

Ao entender o processo de inscrição, os benefícios proporcionados e enfrentar os desafios com informação, as famílias podem trilhar o caminho para a realização da tão sonhada casa própria.

O Minha Casa Minha Vida não é apenas um programa habitacional; é uma ferramenta de transformação social, dando esperança e oportunidades para aqueles que mais precisam.

Portanto, ao considerar a inscrição no Minha Casa Minha Vida, é essencial não apenas enxergar os documentos e requisitos necessários, mas também compreender o impacto positivo que essa jornada pode ter na vida das famílias brasileiras. Ao alinhar esforços, governo e cidadãos constroem não apenas casas, mas um país mais justo e igualitário.

Marcos Eduardo
Marcos Eduardo

Marcos Eduardo é o criador de conteúdo por trás do Vagas Jovem Aprendiz. Com foco em simplificar temas importantes, ele se dedica a pesquisar e escrever sobre Carreira, Benefícios, Finanças e Planejamento Pessoal. Seu trabalho visa empoderar jovens para que tomem decisões mais inteligentes e seguras no início de suas jornadas.