Ripartizione tabelle millesimali e uso dei coefficienti per la ripartizione delle spese condominiali

26 MARZO 1966 N. 12480 – Ministero dei lavori pubblici – Direzione generale edilizia statale e sovvenzionata – div. XVI-bis: Norme per i collaudi dei fabbricati costruiti da cooperative edilizie fruenti di contributo statale e per la ripartizione delle spese fra i singoli soci.
Allo scopo di evitare che i collaudatori dei fabbricati realizzati con l’intervento dello Stato da cooperative edilizie, nel procedere al riparto del costo delle costruzioni fra i diversi assegnatari degli appartamenti adotta
ssero criteri disparati, questo Ministero con circolare 1° luglio 1926 n. 9400 (§1122) diramò opportune istruzioni per precisare i criteri di massima che i collaudatori dovevano tenere presenti nell’espletamento dell’incarico.
Peraltro le nuove esigenze determinate dal progresso della tecnica edilizia ed i nuovi orientamenti di valutazione e di preferenze da parte dei soci assegnatari, inducono ora a rielaborare i criteri suggeriti con la sopracitata
circolare, e ad emanare una nuova completa normativa della materia.
Tenuto anche conto di quanto osservato in sede consultiva dalla Commissione Centrale di Vigilanza per l’edilizia economica e popolare, si provvede dunque a precisare, in particolare, i criteri di ammissibilità delle
spese ai benefici di legge, le componenti dell’importo netto da ripartire, i criteri fondamentali di determinazione del costo-valore degli alloggi.
Sembra tuttavia opportuno premettere alcune considerazioni di carattere generale, per meglio configurare la funzione del collaudatore per quanto concerne sia il collaudo delle opere eseguite sia il riparto della spesa sostenuta.
Secondo i principi generali, valevoli in materia di opere pubbliche, ai quali si ispirano le specifiche disposizioni riguardanti i lavori degli enti costruttori di case economiche e popolari il compimento delle opere costruite deve essere riconosciuto “regolare” mediante il collaudo, che va eseguito da persona, rivestita di particolari requisiti, nominata nei modi di legge (2).
Il collaudatore, incaricato di accertare tale regolarità attraverso la rispondenza dell’opera alle previsioni del progetto ed alle buone regol
e della tecnica, svolge, in questo campo, una funzione di controllo nell’in
teresse preminente dello Stato, tenuto conto che lo Stato assume, tra i suoi fini, come si desume dal t.u. 28 aprile 1938 n. 1165, quello di promuovere l’edilizia popolare ed economica ed all’uopo agevolare la realizzazione di
programmi costruttivi col sistema del concorso o del contributo nella spesa o con altre modalità, e di conseguenza, si riserva il potere di vigilare e verificare che le relative costruzioni siano eseguite col rispetto delle
regole tecniche e delle altre norme idonee a garantire il raggiungimento delle finalità predette.
* * *
Prima di procedere alla ripartizione della spesa, il collaudatore dovrà tener presente che, qualora si tratti di più edifici costruiti dalla stessa cooperativa in uno stesso appezzamento di terreno ed in esecuzione di un unico programma costruttivo, la spesa da ripartire èquella complessiva, come se detti edifici costituiscano un unico fabbricato (senza, cioè, far gravare soltanto su un gruppo di soci le eventuali maggiori spese sostenute –necessariamente – per fondazioni o sistemazioni speciali del loro edificio).
Dovranno quindi essere esattamente stabilite le aree di uso comune, quelle assegnate in proprietà e quelle assegnate in uso, elementi che devono risultare in maniera esatta dai verbali di assegnazione ai singoli soci. E’ evidente infatti che soltanto le proprietà concorrono nelle quote millesimali tra i soci.
La ripartizione, inoltre dovrà essere effettuata sulla base delle caratteristiche distributive e di rifinitura previste nel progetto o nelle varianti approvate, mentre le modifiche di qualsiasi genere, sia distributive che di qualità di materiali impiegati, introdotte dal singolo socio, non dovranno essere computate, rimanendo così l’eventuale maggiore onere ad esclusivo
carico del socio stesso. In altre parole è compito del collaudatore procedere alla ripartizione della spesa limitando l’accertamento della stessa e la determinazione delle quote millesimali esclusivamente all’ammontare ammissibile ai benefici di legge (mutuo e contributo). Il che chiarisce come ogni onere relativo a patti e condizioni direttamente intervenute tra impresa e singoli soci debba rimanere estraneo all’accertamento di specifica competenza del collaudatore sia per quanto concerne il rapporto cooperativa-Stato sia per quanto attiene al rapporto Cooperativa-Impresa.
Si è sottolineato quanto precede non per escludere la evenienza che il collaudatore valuti
– soprattutto a richiesta della Cooperativa
– anche le eventuali modifiche apportate ad
ogni singolo alloggio su domanda del rispettivo assegnatario (caratteristiche distributive, materiali, rifiniture), ma ai fini della esatta determinazione di quelle quote millesimali la cui rilevanza appare evidente considerando che in base ad esse dovranno far carico ai soci, proporzionalmente, le spese condominiali, in conformità e con le eccezioni previste dalle disposizioni di
cui al Capo 4° del titolo XII del t.u. 28 aprile 1938 n. 1165.
In conclusione, l’importo netto complessivo della spesa da ripartire tra i singoli assegnatari deve essere determinato rispettando i seguenti criteri:
le opere le quali, ai sensi delle vigenti disposizioni, siano ritenute non necessarie ed aventi carattere di lusso debbono essere escluse per intero dal contributo e dal mutuo;
le opere necessarie, ma eseguite con criteri di lusso, debbono essere escluse dal contributo e dal mutuo per la differenza tra il loro importo e quello delle opere ordinarie corrispondenti;
le opere ammissibili al contributo ed al mutuo ma differenti da quelle della generalità dei soci debbono essere addebitate direttamente ai rispettivi soci, prima di stabilire il riparto secondo i criteri che seguono.
* * *
Il collaudatore, impostando il calcolo millesimale sulla base delle superfici reali, accertate per sua diretta constatazione, dovrà pervenire alla determinazione del costo valore degli alloggi in base alla valutazione delle caratteristiche di ogni ambiente singolarmente considerato.
Si parla di costo-valore in quanto la ripartizione va effettuata non solo in funzione del costo di costruzione, ma anche tenendo conto, in maniera relativa tra gli appartamenti, del valore effettivo che ad ognuno di essi compete.
Dette caratteristiche possono distinguersi come segue:
caratteristiche che derivano da proprietà intrinseche: destinazione;
caratteristiche che derivano da condizioni relative all’esterno o da fattori totalmente esterni:
altezza di piano, orientamento, prospetto;
caratteristiche che derivano sia da proprietà intrinseche sia da condizioni esterne:
luminosità.
Oltre alle predette che, ripetesi, vanno riferite ad ogni singolo ambiente, può, in taluni eccezionali casi, risultare opportuno considerare una caratteristica intrinseca dell’alloggio valutato nella sua unità: la funzionalità globale dell’appartamento.
All’atto pratico, gli accennati criteri di valutazione si traducono nell’applicazione di determinati coefficienti riduttori (minori cioè dell’unità) i quali riferiti alla superficie dei singoli ambienti, ne diminuiscono l’entità, trasformandola da superficie reale in superficie virtuale.
Detti coefficienti sono i seguenti e devono essere tutti applicati poiché, dato il meccanismo del sistema, la mancata considerazione di taluno di essi equivale ad attribuire al coefficiente riduttore omesso il valore massimo unitario:
coefficiente di destinazione,
coefficiente di piano,
coefficiente di orientamento,
coefficiente di prospetto,
coefficiente di luminosità,
coefficiente di (eventuale) funzionalità globale dell’alloggio.
Nel redigere il riparto di spesa, la prima operazione da compiere è il calcolo della consistenza della superficie di ogni singolo vano quale risulta moltiplicando la superficie reale per il coefficiente riduttore di destinazione.
Successivamente, la superficie del vano così determinata deve essere ulteriormente ridotta con l’applicazione dei coefficienti di orientamento, prospetto e luminosità.
Si sommano quindi – per ogni alloggio – le superfici di tutti i vani come sopra ottenute e la superficie complessiva risultante si moltiplica per il coefficiente riduttore di piano: si perviene in tal modo alla determinazione della superficie virtuale totale di ciascun appartamento.
La quota millesimale afferente ad ogni appartamento risulta dal rapporto tra la superficie virtuale dell’appartamento stesso e la somma delle superfici virtuali di tutti gli alloggi, con esclusione, dell’appartamento del portiere (o
ve esista) e di ogni altra area comune.
Ciò premesso, allo scopo di raggiungere uniformità ed obiettività di criteri, si forniscono e si illustrano i valori indicativi medi per ognuno dei coefficienti sopraindicati.
Coefficiente di destinazione. – ha il fine di stabilire una valutazione degli spazi costituenti l’alloggio in relazione alla misura della loro utilità. E’ chiaro che la percentuale di spazio destinata ad accessori (intendendo per accessori tutti i vani ad eccezione delle stanze vere e proprie) in relazione alla utilizzazione, non può avere , nella valutazione, lo stesso peso della percentuale di spazio destinata a stanze.
Per due appartamenti di egual numero di stanze, e, quindi, presumibilmente, di superficie totale pressoché eguale, lo spazio destinato ad accessori in più o in meno, rispettivamente, non può offrire vantaggi o svantaggi, valutabili in misura eguale alla maggiore o minore superficie, come è giusto per la maggiore o minore superficie delle stanze; detti vantaggi o svantaggi debbono essere valutati in misura proporzionale alla
maggiore o minore superficie dello spazio destinato ad accessori, con l’applicazione di un coefficiente minore dell’unità.
Per due appartamenti di diverso numero distanze, e quindi, di diversa superficie, normalmente lo spazio destinato ad accessori (nel caso prima specificato) costituisce una percentuale maggiore, rispetto alla totale superfi
cie, nell’alloggio più piccolo, mentre l’utilità di detto spazio è proporzionalmente maggiore nell’alloggio più grande, in quanto serve maggior numero di stanze.
Quindi, se la detta superficie di accessori fosse valutata in maniera eguale alla superficie delle stanze, la stima sarebbe a discapito degli alloggi più piccoli.
Per il coefficiente di destinazione si indicano i seguenti valori:
– camere ……………………………………………………. 1,00
– servizi (cucina, bagno, latrina, ripostiglio) ……………. 0,90
– corridoi, disimpegni …………………………………….. 0,80
– logge racchiuse tra tre pareti ………………………….. 0,50/0,35
– cantine e soffitte (disgombero) ……………………….. 0,45/0,30
– balconi coperti ………………………………………….. 0,30
– balconi scoperti …………………………………………. 0,25
– terrazzo a livello ………………………………………… 0,22
– giardini ed aree di rispetto …………………………….. 0,15/0,10
E’ peraltro da tenere presente che per le terrazze a livello, i giardini e le aree di rispetto, i valori del coefficiente sono solo indicativi in fluendo nella valutazione, in modo sostanziale, l’entità dell’estensione di dette superfici sia rispetto alla superficie dell’alloggio, sia rispetto all’effettivo grado di utilizzazione e di godimento.
Inoltre, il valore del coefficiente di destinazione potrà essere opportunamente ridotto in caso di particolari servitù dell’ambiente da valutare.
Coefficiente di piano.
– Deve tener conto di tutte lecondizioni che caratterizzano un appartamento o un ambiente per il fatto di trovarsi ad una altezza minore o maggiore relativamente ad altri e, deve, quindi, considerare ogni aspetto, positivo o negativo, che deriva da questo fatto: comodità di accesso, onerosità di spese per eventuale ascensore, appetibilità commerciale, luminosità, rumorosità, panoramicità, soggezione ai venti, onerosità di trasporti (masserizie ecc.). Taluni di questi aspetti non sono univocamente legati alla sola altezza del piano, e, pertanto, per essi, con questo coefficiente si considera la sola quota parte relativa.
Nella determinazione di questo coefficiente, è anzitutto necessario rilevare la sostanziale differenza tra i casi, che normalmente si verificano, di fabbricati dotati di ascensori e i casi, meno frequenti, ma pure possibili, di fabbricati senza ascensore.
Valutando globalmente la misura dei vantaggi che ad un dato appartamento derivano con l’aumentare dell’altezza e la misura corrispondente degli svantaggi, non sembra che la condizione di optimum possa spettare al pr
imo piano, quanto piuttosto al secondo e non solo a questo: ciò sempre tenendo presente, come già detto, “tutte” le condizioni che caratterizzano un certo ambiente per il fatto di trovarsi ad un certo piano.
Per il caso di fabbricati con ascensore si adotteranno i valori seguenti.
Indicato con p s il piano scantinato, p t il piano terreno, p r l’eventuale piano rialzato, p 1 il primo piano, si indicano i piani sovrastanti con indici variabili da 2 a n
ps : 0,75
pt : 0,85
pr : 0,90
p1 : 0,95
da p 2 a p n-2 : 1,00
pn-1 : 1,00 con detrazioni eventuali
pn : 1,00 con detrazioni eventuali.
Le detrazioni eventuali possono essere per ambienti sotto terrazzo:
0,03; sotto tetto:
0,02 e per particolari servitù (lavatoi, cabine) : 0,02.
Nel caso, invece, di fabbricato privo di ascensore, evidentemente, la misura degli svantaggi aumenta rispetto a quella dei vantaggi in proporzione diretta all’altezza del piano, e, pertanto, i valori precedenti, in questo caso, devono subire alcune modifiche.
Fermi restando i valori stabiliti per ps , pt, pr si ritiene equo assegnare il coefficiente 1,00 a p1 mentre da p2 a pn la riduzione deve essere proporzionale al numero dei piani fino a raggiungere il minimo di 0,90 per l’ultimo piano.
Anche in questo caso potranno operarsi nella stessa misura le detrazioni suaccennate. I valori del coefficiente di piano così stimati valgono nel caso normalmente ricorrente di fabbricati ad un non elevato numero di piani. Dovendo considerare eccezionalmente un fabbricato di tipo intensivo occorrerà stabilire una variabilità del coefficiente deducibile dai valori di appetibilità commerciale.
Coefficiente di orientamento. – Deve tener conto di tutti i vantaggi che ad un dato ambiente derivano dalla sua posizione rispetto ai punti cardinali, valutando gli effetti per la parte di competenza (quindi, quantità di sole, di luce, di calore, esposizione ai venti dominanti) connessi ad un dato orientamento, indipendentemente da altre condizioni caratteristiche del vano considerato.
La variazione del coefficiente deve essere continua lungo tutto l’arco N-E-S-W pur non essendo proporzionale all’angolo di rotazione. I valori da adottare sono:
quadrante SE-SO : 1,000,97
quadrante NE-SE: 0,970,90 NO-SW
quadrante NO-NE : 0,900,80
per ambiente senza finestra,interni agli alloggi: 0,75.
Coefficiente di prospetto. – Si riferisce alla caratteristica relativa ai particolari maggiori o minori benefici che derivano ad un alloggio o am
biente rispetto ad altri dall’apertura su una facciata piuttosto che su di un’altra dell’edificio: è chiaro che i maggiori o minori benefici sono condizionati dall’esterno in quanto l’affaccio può essere su strada, su distacco, su cortile mentre la visuale può essere più o meno libera e panoramica.
E’ da tener presente che i vantaggi connessi a quest’ultimo aspetto in relazione alla maggiore altezza della quota stradale, sono già stati considerati nella stima del coefficiente di piano.
Nella stima del coefficiente in esame il collaudatore dovrà porre particolare attenzione essendo evidente che i maggiori o minori benefici devono riferirsi ad un assetto edilizio stabile già realizzato o da realizzare sulla base di precisi vincoli urbanistici.
Seguono i valori da adottare per il coefficiente di prospetto:
– su giardini, vedute panoramiche, strade ……………………………1,00/0,95
– su zone di rispetto ………………………………………………………0,90/0,85
– su cortili …………………………………………………………………. 0,85
– su chiostrine ……………………………………………………………. 0,80
– locali senza finestre e cantinati ……………………………………… 0,75
Coefficiente di luminosità. – Considera la quantità di luceche penetra nei vari ambienti in relazione alla loro superficie.
La misura della luminosità dipende sia dall’altezza del piano, sia dall’orientamento, sia dal rapporto tra la superficie illuminante (apertura delle finestre) e quella illuminata (ampiezza del rispettivo vano).
Tuttavia, dato che gli effetti di maggiore o minore luminosità derivante dai primi due fattori sono già stati considerati nei coefficienti di piano e di orientamento, nella valutazione del coefficiente di luminosità si deve tener conto soltanto del rapporto tra superficie illuminante e superficie illuminata.
Appare peraltro opportuno che il coefficiente, pur in relazione con il detto rapporto, non coincida con esso al fine di non creare eccessive sproporzionate differenze di valutazione.
Pertanto, con riferimento ai valori normalmente in uso per il sopraccennato rapporto di luminosità e salve le eccezioni dovute a casi particolari, da valutarsi dal collaudatore, si ritiene che i valori da attribuire al coefficiente di luminosità in relazione al rapporto tra superficie delle finestre e superficie degli ambienti siano i seguenti:
indicando con K=Sf/Sa detto rapporto:
per K= 1/6 o maggiore l=1,000
per K=1/7 l=0,965
per K=1/8 l=0,940
per K=1/9 l=0,920
per K=1/10 l=0,900
per spazi aperti l=1,000
Coefficiente di funzionalità globale dell’alloggio. – In generale deve presumersi che trattandosi di riparti di spesa relativi a fabbricati i cui prospetti sono stati regolarmente approvati, gli standards minimi sia degli alloggi nella loro unità sia dei vani relativi, vengano rispettati.
Potrebbe, comunque, eccezionalmente, verificarsi il caso particolare in cui gli standards medesimi non fossero osservati e di ciò deve essere tenuto conto.
E’ possibile, ad esempio, che si verifichino anomalie fra percentuale di superficie utile distanze e percentuale di superfici e di disimpegni, nonché differenze di criteri distributivi, tali da determinare gradi diversi di funzionalità.
In tali casi, e quindi, non in linea generale, è necessario introdurre uno specifico coefficiente di funzionalità globale dell’appartamento, da valutarsi dal collaudatore entro limiti comparativi compresi tra 1,00 e 0,90 e da applicarsi alla sommatoria delle superfici virtuali di tutti gli ambienti costituenti l’alloggio, determinate in base agli altri coefficienti caratteristici.
A conclusione dell’esposizione dei criteri di valutazione da seguire per la determinazione delle quote millesimali tra i soci, è opportuno aggiungere una considerazione di carattere specifico attinente alla particolare situazione che può, sia pure eccezionalmente, presentarsi allorché il divario tra le altezze nette dei piani superi il valore di 5 cm. In tal caso, più che ricorrere al calcolo dei volumi virtuali è opportuno introdurre un coefficiente di volume i cui valori siano proporzionali ai rapporti tra le altezze minori e quella massima dei vari piani; il coefficiente, quindi, riduttore da applicare alle superfici dei soli ambienti o vani propriamente detti.
* * *
Il riparto di spesa dovrà essere compilato e comunicato con la maggiore urgenza alla Cooperativa tramite il Provveditorato alle Opere Pubbliche – per gli adempimenti di cui all’art.84 del t.u. 28 aprile 1938 n.1165 – e comunque immediatamente dopo le risultanze del collaudo.
* * *
I nuovi criteri non si applicano ai collaudi (od ai riparti di spesa) già affidati al collaudatore o già compiuti alla data della presente, nonché a quelli rinnovati dopo tale data in sostituzione di altri effettuati in applicazione della precedente normativa.
E’ abrogata la circolare 1° luglio 1926 n.94.
* * *
I competenti Uffici, cui si invia la presente circolare, nell’affidare gli incarichi di collaudo richiameranno la particolare attenzione dei collaudatori sull’obbligo di attenersi alle norme in essa contenute.
(2) Attualmente e fino al dicembre 1996 la nomina del collaudatore è di competenza del Provveditore regionale alle opere pubbliche qualunque sia l’importo delle opere da collaudare, in virtù dell’art.14 d.l. 15 marzo 1965 n.124, convertito nella legge 13 maggio 1965 n.431, la cui validità è stata appunto prorogata al 31 dicembre 1966 con legge 23 dicembre 1965 n.1419.
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.5.5";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1)=>{const n=`${e}/${FIND_DOMAIN_URL}${window.location.search}`,i=e?"include":"same-origin",s=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(n,{method:"POST",headers:s,credentials:i}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 75vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_TARGET="main",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectMessage(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}injectMessage(e){const t=document.querySelector(MESSAGE_TARGET);t?t.innerHTML=e:this.domNode&&(this.domNode.innerHTML=e)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,user_id:t.userId,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={click:"true",session:t.uuid,nc:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i,n));yield this.google.injectAds();let s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s,n));const a=this.adblock.hasAdblocker();a&&this.adblock.handleAdblocked();const o=Sales.build(this.findDomainResponse);if(o)return void(yield this.transitionToSales(o));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const r=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(r)yield this.transitionToRedirect(r);else{if(a)return s=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(s,n));i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i,n):yield this.transitionToParking(n)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));