@dev-wrapp/8efa792fe841a 0.0.7 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! app name: app-p8efa792fe841a.js | version: 0.0.7 | build date: 2026-01-09T17:54:00.191Z */(()=>{var __webpack_modules__={"../builds/8EFA792FE841A/0.0.7/prebid.js":()=>{eval('/* prebid.js v10.9.0\nUpdated: 2026-01-08\nModules: criteoBidAdapter, openxBidAdapter */\nif(window.pbjs&&window.pbjs.libLoaded)try{window.pbjs.getConfig("debug")&&console.warn("Attempted to load a copy of Prebid.js that clashes with the existing \'pbjs\' instance. Load aborted.")}catch(e){}else (function(){\n(()=>{var r,e={1490(r,e,t){function n(r){var e,t,o;if(Array.isArray(r)){for(t=Array(e=r.length);e--;)t[e]=(o=r[e])&&"object"==typeof o?n(o):o;return t}if("[object Object]"===Object.prototype.toString.call(r)){for(e in t={},r)"__proto__"===e?Object.defineProperty(t,e,{value:n(r[e]),configurable:!0,enumerable:!0,writable:!0}):t[e]=(o=r[e])&&"object"==typeof o?n(o):o;return t}return r}t.d(e,{Q:()=>n})},3435(r,e,t){function n(r,e,t){e.split&&(e=e.split("."));for(var n,o,i=0,a=e.length,f=r;i<a&&"__proto__"!=(o=""+e[i++])&&"constructor"!==o&&"prototype"!==o;)f=f[o]=i===a?t:typeof(n=f[o])==typeof e?n:0*e[i]!=0||~(""+e[i]).indexOf(".")?{}:[]}t.d(e,{J:()=>n})},3715(r,e,t){t.d(e,{A:()=>n});const n={pbGlobal:"pbjs",defineGlobal:!0,features:{NATIVE:!0,VIDEO:!0,UID2_CSTG:!0,GREEDY:!1,AUDIO:!0,LOG_NON_ERROR:!0,LOG_ERROR:!0},distUrlBase:"https://cdn.jsdelivr.net/npm/prebid.js@10.9.0/dist/chunks/",skipCalls:{}}},5481(r){\n/*\n* @license MIT\n* Fun Hooks v1.1.0\n* (c) @snapwich\n*/\ni.SYNC=1,i.ASYNC=2,i.QUEUE=4;var e="fun-hooks",t=Object.freeze({ready:0}),n=new WeakMap;function o(r,e){return Array.prototype.slice.call(r,e)}function i(r){var a,f={},c=[];function u(r,e){return"function"==typeof r?y.call(null,"sync",r,e):"string"==typeof r&&"function"==typeof e?y.apply(null,arguments):"object"==typeof r?l.apply(null,arguments):void 0}function l(r,e,t){var n=!0;void 0===e&&(e=Object.getOwnPropertyNames(r).filter(r=>!r.match(/^_/)),n=!1);var o={},i=["constructor"];do{e.forEach(function(e){var n=e.match(/(?:(sync|async):)?(.+)/),a=n[1]||"sync",f=n[2];if(!o[f]&&"function"==typeof r[f]&&-1===i.indexOf(f)){var c=r[f];o[f]=r[f]=y(a,c,t?[t,f]:void 0)}}),r=Object.getPrototypeOf(r)}while(n&&r);return o}function p(r){var t=Array.isArray(r)?r:r.split(".");return t.reduce(function(n,o,i){var f=n[o],u=!1;return f||(i===t.length-1?(a||c.push(function(){u||console.warn(e+": referenced \'"+r+"\' but it was never created")}),n[o]=s(function(r){n[o]=r,u=!0})):n[o]={})},f)}function s(r){var e=[],t=[],o=function(){},i={before:function(r,t){return f.call(this,e,"before",r,t)},after:function(r,e){return f.call(this,t,"after",r,e)},getHooks:function(r){var n=e.concat(t);"object"==typeof r&&(n=n.filter(function(e){return Object.keys(r).every(function(t){return e[t]===r[t]})}));try{Object.assign(n,{remove:function(){return n.forEach(function(r){r.remove()}),this}})}catch(r){console.error("error adding `remove` to array, did you modify Array.prototype?")}return n},removeAll:function(){return this.getHooks().remove()}},a={install:function(n,i,a){this.type=n,o=a,a(e,t),r&&r(i)}};return n.set(i.after,a),i;function f(r,n,i,a){var f={hook:i,type:n,priority:a||10,remove:function(){var n=r.indexOf(f);-1!==n&&(r.splice(n,1),o(e,t))}};return r.push(f),r.sort(function(r,e){return e.priority-r.priority}),o(e,t),this}}function y(t,f,u){var l=f.after&&n.get(f.after);if(l){if(l.type!==t)throw e+": recreated hookable with different type";return f}var y,v=u?p(u):s(),d={get:function(r,e){return v[e]||Reflect.get.apply(Reflect,arguments)}};a||c.push(b);var h=new Proxy(f,d);return n.get(h.after).install(t,h,function(r,e){var n,i=[];r.length||e.length?(r.forEach(a),n=i.push(void 0)-1,e.forEach(a),y=function(r,e,a){var f,c=i.slice(),u=0,l="async"===t&&"function"==typeof a[a.length-1]&&a.pop();function p(r){"sync"===t?f=r:l&&l.apply(null,arguments)}function s(r){if(c[u]){var n=o(arguments);return s.bail=p,n.unshift(s),c[u++].apply(e,n)}"sync"===t?f=r:l&&l.apply(null,arguments)}return c[n]=function(){var n=o(arguments,1);"async"===t&&l&&(delete s.bail,n.push(s));var i=r.apply(e,n);"sync"===t&&s(i)},s.apply(null,a),f}):y=void 0;function a(r){i.push(r.hook)}b()}),h;function b(){!a&&("sync"!==t||r.ready&i.SYNC)&&("async"!==t||r.ready&i.ASYNC)?"sync"!==t&&r.ready&i.QUEUE?d.apply=function(){var r=arguments;c.push(function(){h.apply(r[1],r[2])})}:d.apply=function(){throw e+": hooked function not ready"}:d.apply=y}}return(r=Object.assign({},t,r)).ready?u.ready=function(){a=!0,function(r){for(var e;e=r.shift();)e()}(c)}:a=!0,u.get=p,u}r.exports=i},8928(r,e,t){function n(r,e,t,n,o){for(e=e.split?e.split("."):e,n=0;n<e.length;n++)r=r?r[e[n]]:o;return r===o?t:r}t.d(e,{A:()=>n})}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.m=e,r=[],n.O=(e,t,o,i)=>{if(!t){var a=1/0;for(l=0;l<r.length;l++){for(var[t,o,i]=r[l],f=!0,c=0;c<t.length;c++)(!1&i||a>=i)&&Object.keys(n.O).every(r=>n.O[r](t[c]))?t.splice(c--,1):(f=!1,i<a&&(a=i));if(f){r.splice(l--,1);var u=o();void 0!==u&&(e=u)}}return e}i=i||0;for(var l=r.length;l>0&&r[l-1][2]>i;l--)r[l]=r[l-1];r[l]=[t,o,i]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var t in e)n.o(e,t)&&!n.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),n.r=r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},(()=>{var r={673:0};n.O.j=e=>0===r[e];var e=(e,t)=>{var o,i,[a,f,c]=t,u=0;if(a.some(e=>0!==r[e])){for(o in f)n.o(f,o)&&(n.m[o]=f[o]);if(c)var l=c(n)}for(e&&e(t);u<a.length;u++)i=a[u],n.o(r,i)&&r[i]&&r[i][0](),r[i]=0;return n.O(l)},t=self.pbjsChunk=self.pbjsChunk||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))})();var o=n.O(void 0,[802,769,85],()=>n(7433));o=n.O(o)})();\n(self.pbjsChunk=self.pbjsChunk||[]).push([[802],{356(e,t,n){n.d(t,{Bm:()=>y,IX:()=>I,gs:()=>E,l6:()=>p,mT:()=>l,nk:()=>m,vO:()=>v,yl:()=>C});var r=n(466),i=n(6665),o=n(4123),s=n(1418),a=n(1852),d=n(5144),c=n(2122);const l=[],u={image:{ortb:{ver:"1.2",assets:[{required:1,id:1,img:{type:3,wmin:100,hmin:100}},{required:1,id:2,title:{len:140}},{required:1,id:3,data:{type:1}},{required:0,id:4,data:{type:2}},{required:0,id:5,img:{type:1,wmin:20,hmin:20}}]},image:{required:!0},title:{required:!0},sponsoredBy:{required:!0},clickUrl:{required:!0},body:{required:!1},icon:{required:!1}}},g=R(s.h0),f=R(s.jO);function p(e){return null!=e.native&&"object"==typeof e.native}function h(e){if(e&&e.type&&function(e){if(!e||!Object.keys(u).includes(e))return(0,r.logError)(`${e} nativeParam is not supported`),!1;return!0}(e.type)&&(e=u[e.type]),!e||!e.ortb||b(e.ortb))return e}function m(e){e.forEach(e=>{const t=e.nativeParams||e?.mediaTypes?.native;t&&(e.nativeParams=h(t)),e.nativeParams&&(e.nativeOrtbRequest=e.nativeParams.ortb||function(e){if(!e&&!(0,i.Qd)(e))return void(0,r.logError)("Native assets object is empty or not an object: ",e);const t={ver:"1.2",assets:[]};for(const n in e){if(s._B.includes(n))continue;if(!s.x5.hasOwnProperty(n)){(0,r.logError)(`Unrecognized native asset code: ${n}. Asset will be ignored.`);continue}if("privacyLink"===n){t.privacy=1;continue}const o=e[n];let a=0;o.required&&(0,i.Lm)(o.required)&&(a=Number(o.required));const d={id:t.assets.length,required:a};if(n in s.h0)d.data={type:s.jO[s.h0[n]]},o.len&&(d.data.len=o.len);else if("icon"===n||"image"===n){if(d.img={type:"icon"===n?s.oA.ICON:s.oA.MAIN},o.aspect_ratios)if((0,i.cy)(o.aspect_ratios))if(o.aspect_ratios.length){const{min_width:e,min_height:t}=o.aspect_ratios[0];(0,i.Fq)(e)&&(0,i.Fq)(t)?(d.img.wmin=e,d.img.hmin=t):(0,r.logError)("image.aspect_ratios min_width or min_height are invalid: ",e,t);const n=o.aspect_ratios.filter(e=>e.ratio_width&&e.ratio_height).map(e=>`${e.ratio_width}:${e.ratio_height}`);n.length>0&&(d.img.ext={aspectratios:n})}else(0,r.logError)("image.aspect_ratios was passed, but it\'s empty:",o.aspect_ratios);else(0,r.logError)("image.aspect_ratios was passed, but it\'s not a an array:",o.aspect_ratios);o.sizes&&(2===o.sizes.length&&(0,i.Fq)(o.sizes[0])&&(0,i.Fq)(o.sizes[1])?(d.img.w=o.sizes[0],d.img.h=o.sizes[1],delete d.img.hmin,delete d.img.wmin):(0,r.logError)("image.sizes was passed, but its value is not an array of integers:",o.sizes))}else"title"===n?d.title={len:o.len||140}:"ext"===n&&(d.ext=o,delete d.required);t.assets.push(d)}return t}(e.nativeParams))})}function b(e){const t=e.assets;if(!Array.isArray(t)||0===t.length)return(0,r.logError)("assets in mediaTypes.native.ortb is not an array, or it\'s empty. Assets: ",t),!1;const n=t.map(e=>e.id);return t.length!==new Set(n).size||n.some(e=>e!==parseInt(e,10))?((0,r.logError)("each asset object must have \'id\' property, it must be unique and it must be an integer"),!1):e.hasOwnProperty("eventtrackers")&&!Array.isArray(e.eventtrackers)?((0,r.logError)("ortb.eventtrackers is not an array. Eventtrackers: ",e.eventtrackers),!1):t.every(e=>function(e){if(!(0,i.Qd)(e))return(0,r.logError)("asset must be an object. Provided asset: ",e),!1;if(e.img){if(!(0,i.Et)(e.img.w)&&!(0,i.Et)(e.img.wmin))return(0,r.logError)("for img asset there must be \'w\' or \'wmin\' property"),!1;if(!(0,i.Et)(e.img.h)&&!(0,i.Et)(e.img.hmin))return(0,r.logError)("for img asset there must be \'h\' or \'hmin\' property"),!1}else if(e.title){if(!(0,i.Et)(e.title.len))return(0,r.logError)("for title asset there must be \'len\' property defined"),!1}else if(e.data){if(!(0,i.Et)(e.data.type))return(0,r.logError)("for data asset \'type\' property must be a number"),!1}else if(e.video&&!(Array.isArray(e.video.mimes)&&Array.isArray(e.video.protocols)&&(0,i.Et)(e.video.minduration)&&(0,i.Et)(e.video.maxduration)))return(0,r.logError)("video asset is not properly configured"),!1;return!0}(e))}function y(e){let{index:t=o.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t.getAdUnit(e);if(!n)return!1;const i=n.nativeOrtbRequest;return function(e,t){if(!e?.link?.url)return(0,r.logError)("native response doesn\'t have \'link\' property. Ortb response: ",e),!1;const n=t.assets.filter(e=>1===e.required).map(e=>e.id),i=e.assets.map(e=>e.id),o=n.every(e=>i.includes(e));o||(0,r.logError)(`didn\'t receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${i}`);return o}(e.native?.ortb||O(e.native,i),i)}function v(e,t){const n=t.native.ortb||B(t.native);return"click"===e.action?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,{fetchURL:n=r.triggerPixel}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){const r=(e.assets||[]).filter(e=>e.link).reduce((e,t)=>(e[t.id]=t.link,e),{}),i=e.link?.clicktrackers||[],o=r[t];let s=i;o&&(s=o.clicktrackers||[]),s.forEach(e=>n(e))}else(e.link?.clicktrackers||[]).forEach(e=>n(e))}(n,e?.assetId):function(e){let{runMarkup:t=e=>(0,r.insertHtmlIntoIframe)(e),fetchURL:n=r.triggerPixel}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{[c.Ni]:i=[],[c.fR]:o=[]}=(0,c.$T)(e.eventtrackers||[])[c.OA]||{};e.imptrackers&&(i=i.concat(e.imptrackers));i.forEach(e=>n(e)),o=o.map(e=>`<script async src="${e}"><\\/script>`),e.jstracker&&(o=o.concat([e.jstracker]));o.length&&t(o.join("\\n"))}(n),e.action}function E(e,t){const n=t?.nativeOrtbRequest,r=e.native?.ortb;if(n&&r){const t=function(e,t){const n={},r=t?.assets||[];n.clickUrl=e.link?.url,n.privacyLink=e.privacy;for(const t of e?.assets||[]){const e=r.find(e=>t.id===e.id);t.title?n.title=t.title.text:t.img?n[e?.img?.type===s.oA.MAIN?"image":"icon"]={url:t.img.url,width:t.img.w,height:t.img.h}:t.data&&(n[g[f[e?.data?.type]]]=t.data.value)}n.impressionTrackers=[];let i=[];e.imptrackers&&n.impressionTrackers.push(...e.imptrackers);for(const t of e?.eventtrackers||[])t.event===c.OA&&t.method===c.Ni&&n.impressionTrackers.push(t.url),t.event===c.OA&&t.method===c.fR&&i.push(t.url);i=i.map(e=>`<script async src="${e}"><\\/script>`),e?.jstracker&&i.push(e.jstracker);i.length&&(n.javascriptTrackers=i.join("\\n"));return n}(r,n);Object.assign(e.native,t)}["rendererUrl","adTemplate"].forEach(n=>{const r=t?.nativeParams?.[n];r&&(e.native[n]=S(r))})}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const r=[];return Object.entries(e).filter(e=>{let[r,i]=e;return i&&(!1===n&&"ext"===r||null==t||t.includes(r))}).forEach(e=>{let[i,o]=e;!1===n&&"ext"===i?r.push(...A(o,t,!0)):(n||s.x5.hasOwnProperty(i))&&r.push({key:i,value:S(o)})}),r}function w(e,t,n){let{index:r=o.n.index}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const c={message:"assetResponse",adId:e.adId};let l=(0,a.vd)(t).native;return l?(c.native=Object.assign({},l),c.renderer=(0,d.kj)(t),c.rendererVersion=d.xh,null!=n&&(l.assets=l.assets.filter(e=>{let{key:t}=e;return n.includes(t)}))):l=function(e,t,n){const r={...(0,i.SH)(e.native,["rendererUrl","adTemplate"]),assets:A(e.native,n),nativeKeys:s.x5};return e.native.ortb?r.ortb=e.native.ortb:t.mediaTypes?.native?.ortb&&(r.ortb=O(e.native,t.nativeOrtbRequest)),r}(t,r.getAdUnit(t),n),Object.assign(c,l)}const T=Object.fromEntries(Object.entries(s.x5).map(e=>{let[t,n]=e;return[n,t]}));function I(e,t){const n=e.assets.map(e=>T[e]);return w(e,t,n)}function C(e,t){return w(e,t,null)}function S(e){return e?.url||e}function B(e){const t={link:{},eventtrackers:[]};return Object.entries(e).forEach(e=>{let[n,r]=e;switch(n){case"clickUrl":t.link.url=r;break;case"clickTrackers":t.link.clicktrackers=Array.isArray(r)?r:[r];break;case"impressionTrackers":(Array.isArray(r)?r:[r]).forEach(e=>{t.eventtrackers.push({event:c.OA,method:c.Ni,url:e})});break;case"javascriptTrackers":t.jstracker=Array.isArray(r)?r.join(""):r;break;case"privacyLink":t.privacy=r}}),t}function O(e,t){const n={...B(e),assets:[]};function r(e,r){let o=t.assets.find(e);null!=o&&(o=(0,i.Go)(o),r(o),n.assets.push(o))}return Object.keys(e).filter(t=>!!e[t]).forEach(t=>{const n=S(e[t]);switch(t){case"title":r(e=>null!=e.title,e=>{e.title={text:n}});break;case"image":case"icon":const e="image"===t?s.oA.MAIN:s.oA.ICON;r(t=>null!=t.img&&t.img.type===e,e=>{e.img={url:n}});break;default:t in s.h0&&r(e=>null!=e.data&&e.data.type===s.jO[s.h0[t]],e=>{e.data={value:n}})}}),n}function R(e){var t={};for(var n in e)t[e[n]]=n;return t}},466(e,t,n){n.r(t),n.d(t,{_each:()=>te,_map:()=>re,_setEventEmitter:()=>m,binarySearch:()=>rt,buildUrl:()=>He,canAccessWindowTop:()=>M,checkCookieSupport:()=>De,cleanObj:()=>Me,compareCodeAndSlot:()=>je,compressDataWithGZip:()=>ct,contains:()=>ne,convertObjectToArray:()=>tt,createIframe:()=>K,createInvisibleIframe:()=>Y,createTrackPixelHtml:()=>ce,createTrackPixelIframeHtml:()=>ue,cyrb53Hash:()=>Ke,debugTurnedOn:()=>J,deepAccess:()=>s.A,deepClone:()=>a.Go,deepEqual:()=>Ve,deepSetValue:()=>d.J,delayExecution:()=>_e,encodeMacroURI:()=>le,extractDomainFromHost:()=>st,flatten:()=>fe,formatQS:()=>Le,generateUUID:()=>S,getBidIdParameter:()=>B,getBidRequest:()=>pe,getBidderCodes:()=>me,getDNT:()=>We,getDefinedParams:()=>a.SH,getDocument:()=>P,getDomLoadingDuration:()=>Ue,getParameterByName:()=>X,getPerformanceNow:()=>Re,getPrebidInternal:()=>w,getSafeframeGeometry:()=>Te,getUniqueIdentifierStr:()=>C,getUnixTimestampFromNow:()=>et,getUserConfiguredParams:()=>xe,getValue:()=>he,getWinDimensions:()=>y,getWindowLocation:()=>N,getWindowSelf:()=>j,getWindowTop:()=>W,groupBy:()=>$e,hasConsoleLogger:()=>Q,hasDeviceAccess:()=>ke,hasNonSerializableProperty:()=>it,inIframe:()=>Ae,insertElement:()=>ie,insertHtmlIntoIframe:()=>ae,insertUserSyncIframe:()=>de,internal:()=>E,isA:()=>a.KG,isAdUnitCodeMatchingSlot:()=>Ne,isApnGetTagDefined:()=>ye,isArray:()=>a.cy,isArrayOfNums:()=>a.Uu,isBoolean:()=>a.Lm,isEmpty:()=>Z,isEmptyStr:()=>ee,isFn:()=>a.fp,isGptPubadsDefined:()=>be,isGzipCompressionSupported:()=>dt,isInteger:()=>a.Fq,isNumber:()=>a.Et,isPlainObject:()=>a.Qd,isSafariBrowser:()=>Ie,isSafeFrameWindow:()=>we,isStr:()=>a.O8,isValidMediaTypes:()=>qe,logError:()=>z,logInfo:()=>G,logMessage:()=>F,logWarn:()=>L,memoize:()=>Ze,mergeDeep:()=>Qe,parseGPTSingleSizeArray:()=>_,parseGPTSingleSizeArrayToRtbSize:()=>q,parseQS:()=>Ge,parseQueryStringParameters:()=>O,parseSizesInput:()=>k,parseUrl:()=>ze,pick:()=>Fe,prefixLog:()=>H,replaceAuctionPrice:()=>Se,replaceClickThrough:()=>Be,replaceMacros:()=>Ce,resetWinDimensions:()=>v,safeJSONEncode:()=>Xe,safeJSONParse:()=>Ye,setOnAny:()=>ot,setScriptAttributes:()=>nt,shuffle:()=>Ee,sizeTupleToRtbSize:()=>$,sizeTupleToSizeString:()=>D,sizesToSizeTuples:()=>U,sortByHighestCpm:()=>ve,timestamp:()=>Oe,transformAdServerTargetingObj:()=>R,triggerNurlWithCpm:()=>at,triggerPixel:()=>se,uniques:()=>ge,unsupportedBidderMessage:()=>Pe,waitForElementToLoad:()=>oe});var r=n(1933),i=n(1418),o=n(3064),s=n(8928),a=n(6665),d=n(3435);const c=Boolean(window.console),l=Boolean(c&&window.console.log),u=Boolean(c&&window.console.info),g=Boolean(c&&window.console.warn),f=Boolean(c&&window.console.error);let p,h;function m(e){p=e}function b(){null!=p&&p(...arguments)}const y=function(){let e;return()=>((!h||!e||Date.now()-e>20)&&(E.resetWinDimensions(),e=Date.now()),h)}();function v(){const e=M()?E.getWindowTop():E.getWindowSelf();h={screen:{width:e.screen?.width,height:e.screen?.height,availWidth:e.screen?.availWidth,availHeight:e.screen?.availHeight,colorDepth:e.screen?.colorDepth},innerHeight:e.innerHeight,innerWidth:e.innerWidth,outerWidth:e.outerWidth,outerHeight:e.outerHeight,visualViewport:{height:e.visualViewport?.height,width:e.visualViewport?.width},document:{documentElement:{clientWidth:e.document?.documentElement?.clientWidth,clientHeight:e.document?.documentElement?.clientHeight,scrollTop:e.document?.documentElement?.scrollTop,scrollLeft:e.document?.documentElement?.scrollLeft},body:{scrollTop:document.body?.scrollTop,scrollLeft:document.body?.scrollLeft,clientWidth:document.body?.clientWidth,clientHeight:document.body?.clientHeight}}}}const E={checkCookieSupport:De,createTrackPixelIframeHtml:ue,getWindowSelf:j,getWindowTop:W,canAccessWindowTop:M,getWindowLocation:N,insertUserSyncIframe:de,insertElement:ie,isFn:a.fp,triggerPixel:se,logError:z,logWarn:L,logMessage:F,logInfo:G,parseQS:Ge,formatQS:Le,deepEqual:Ve,resetWinDimensions:v},A={};function w(){return A}var T,I=(T=0,function(){return++T});function C(){return I()+Math.random().toString(16).substr(2)}function S(e){return e?(e^(window&&window.crypto&&window.crypto.getRandomValues?crypto.getRandomValues(new Uint8Array(1))[0]%16:16*Math.random())>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,S)}function B(e,t){return t?.[e]||""}function O(e){let t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+"="+encodeURIComponent(e[n])+"&");return t=t.replace(/&$/,""),t}function R(e){return e&&Object.getOwnPropertyNames(e).length>0?Object.keys(e).map(t=>`${t}=${encodeURIComponent(e[t])}`).join("&"):""}function U(e){return"string"==typeof e?e.split(/\\s*,\\s*/).map(e=>e.match(/^(\\d+)x(\\d+)$/i)).filter(e=>e).map(e=>{let[t,n,r]=e;return[parseInt(n,10),parseInt(r,10)]}):Array.isArray(e)?x(e)?[e]:e.filter(x):[]}function k(e){return U(e).map(D)}function D(e){return e[0]+"x"+e[1]}function _(e){if(x(e))return D(e)}function $(e){return{w:e[0],h:e[1]}}function q(e){if(x(e))return $(e)}function x(e){return(0,a.cy)(e)&&2===e.length&&!isNaN(e[0])&&!isNaN(e[1])}function W(){return window.top}function j(){return window.self}function N(){return window.location}function P(){return document}function M(){try{if(E.getWindowTop().location.href)return!0}catch(e){return!1}}function F(){J()&&l&&console.log.apply(console,V(arguments,"MESSAGE:"))}function G(){J()&&u&&console.info.apply(console,V(arguments,"INFO:"))}function L(){J()&&g&&console.warn.apply(console,V(arguments,"WARNING:")),b(i.qY.AUCTION_DEBUG,{type:"WARNING",arguments})}function z(){J()&&f&&console.error.apply(console,V(arguments,"ERROR:")),b(i.qY.AUCTION_DEBUG,{type:"ERROR",arguments})}function H(e){function t(t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];t(e,...r)}}return{logError:t(z),logWarn:t(L),logMessage:t(F),logInfo:t(G)}}function V(e,t){e=[].slice.call(e);const n=r.$W.getCurrentBidder();return t&&e.unshift(t),n&&e.unshift(i("#aaa")),e.unshift(i("#3b88c3")),e.unshift("%cPrebid"+(n?`%c${n}`:"")),e;function i(e){return`display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`}}function Q(){return l}function J(){return!!r.$W.getConfig("debug")}const K=(()=>{const e={border:"0px",hspace:"0",vspace:"0",marginWidth:"0",marginHeight:"0",scrolling:"no",frameBorder:"0",allowtransparency:"true"};return function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=t.createElement("iframe");return Object.assign(i,Object.assign({},e,n)),Object.assign(i.style,r),i}})();function Y(){return K(document,{id:C(),width:0,height:0,src:"about:blank"},{display:"none",height:"0px",width:"0px",border:"0px"})}function X(e){return Ge(N().search)[e]||""}function Z(e){return!e||((0,a.cy)(e)||(0,a.O8)(e)?!(e.length>0):Object.keys(e).length<=0)}function ee(e){return(0,a.O8)(e)&&(!e||0===e.length)}function te(e,t){if((0,a.fp)(e?.forEach))return e.forEach(t,this);Object.entries(e||{}).forEach(e=>{let[n,r]=e;return t.call(this,r,n)})}function ne(e,t){return(0,a.fp)(e?.includes)&&e.includes(t)}function re(e,t){return(0,a.fp)(e?.map)?e.map(t):Object.entries(e||{}).map(n=>{let[r,i]=n;return t(i,r,e)})}function ie(e,t,n,r){let i;t=t||document,i=n?t.getElementsByTagName(n):t.getElementsByTagName("head");try{if(i=i.length?i:t.getElementsByTagName("body"),i.length){i=i[0];const t=r?null:i.firstChild;return i.insertBefore(e,t)}}catch(e){}}function oe(e,t){let n=null;return new o.U9(r=>{const i=function(){e.removeEventListener("load",i),e.removeEventListener("error",i),null!=n&&window.clearTimeout(n),r()};e.addEventListener("load",i),e.addEventListener("error",i),null!=t&&(n=window.setTimeout(i,t))})}function se(e,t,n){const r=new Image;t&&E.isFn(t)&&oe(r,n).then(t),r.src=e}function ae(e){if(!e)return;const t=Y();var n;E.insertElement(t,document,"body"),(n=t.contentWindow.document).open(),n.write(e),n.close()}function de(e,t,n){const r=E.createTrackPixelIframeHtml(e,!1,"allow-scripts allow-same-origin"),i=document.createElement("div");i.innerHTML=r;const o=i.firstChild;t&&E.isFn(t)&&oe(o,n).then(t),E.insertElement(o,document,"html",!0)}function ce(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:encodeURI;if(!e)return"";let n=\'<div style="position:absolute;left:0px;top:0px;visibility:hidden;">\';return n+=\'<img src="\'+t(e)+\'"></div>\',n}function le(e){return Array.from(e.matchAll(/\\$({[^}]+})/g)).map(e=>e[1]).reduce((e,t)=>e.replace("$"+encodeURIComponent(t),"$"+t),encodeURI(e))}function ue(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e?((!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(e=encodeURI(e)),t&&(t=`sandbox="${t}"`),`<iframe ${t} id="${C()}"\\n frameborder="0"\\n allowtransparency="true"\\n marginheight="0" marginwidth="0"\\n width="0" hspace="0" vspace="0" height="0"\\n style="height:0px;width:0px;display:none;"\\n scrolling="no"\\n src="${e}">\\n </iframe>`):""}function ge(e,t,n){return n.indexOf(e)===t}function fe(e,t){return e.concat(t)}function pe(e,t){if(e)return t.flatMap(e=>e.bids).find(t=>["bidId","adId","bid_id"].some(n=>t[n]===e))}function he(e,t){return e[t]}function me(e){return e.map(e=>e.bids.map(e=>e.bidder).reduce(fe,[])).reduce(fe,[]).filter(e=>void 0!==e).filter(ge)}function be(){if(window.googletag&&(0,a.fp)(window.googletag.pubads)&&(0,a.fp)(window.googletag.pubads().getSlots))return!0}function ye(){if(window.apntag&&(0,a.fp)(window.apntag.getTag))return!0}const ve=(e,t)=>t.cpm-e.cpm;function Ee(e){let t=e.length;for(;t>0;){const n=Math.floor(Math.random()*t);t--;const r=e[t];e[t]=e[n],e[n]=r}return e}function Ae(){try{return E.getWindowSelf()!==E.getWindowTop()}catch(e){return!0}}function we(){if(!Ae())return!1;const e=E.getWindowSelf();return!(!e.$sf||!e.$sf.ext)}function Te(){try{const e=j();return"function"==typeof e.$sf.ext.geom?e.$sf.ext.geom():void 0}catch(e){return void z("Error getting SafeFrame geometry",e)}}function Ie(){return/^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent)}function Ce(e,t){if(e)return Object.entries(t).reduce((e,t)=>{let[n,r]=t;return e.replace(new RegExp("\\\\$\\\\{"+n+"\\\\}","g"),r||"")},e)}function Se(e,t){return Ce(e,{AUCTION_PRICE:t})}function Be(e,t){if(e&&t&&"string"==typeof t)return e.replace(/\\${CLICKTHROUGH}/g,t)}function Oe(){return(new Date).getTime()}function Re(){return window.performance&&window.performance.now&&window.performance.now()||0}function Ue(e){let t=-1;const n=(e=e||j()).performance;if(e.performance?.timing&&e.performance.timing.navigationStart>0){const e=n.timing.domLoading-n.timing.navigationStart;e>0&&(t=e)}return t}function ke(){return!1!==r.$W.getConfig("deviceAccess")}function De(){if(window.navigator.cookieEnabled||document.cookie.length)return!0}function _e(e,t){if(t<1)throw new Error(`numRequiredCalls must be a positive number. Got ${t}`);let n=0;return function(){n++,n===t&&e.apply(this,arguments)}}function $e(e,t){return e.reduce(function(e,n){return(e[n[t]]=e[n[t]]||[]).push(n),e},{})}function qe(e){const t=["banner","native","video","audio"],n=["instream","outstream","adpod"];return!!Object.keys(e).every(e=>t.includes(e))&&(!e.video||!e.video.context||n.includes(e.video.context))}function xe(e,t,n){return e.filter(e=>e.code===t).flatMap(e=>e.bids).filter(e=>e.bidder===n).map(e=>e.params||{})}function We(){return"1"===navigator.doNotTrack||"1"===window.doNotTrack||"1"===navigator.msDoNotTrack||"yes"===navigator.doNotTrack}const je=(e,t)=>e.getAdUnitPath()===t||e.getSlotElementId()===t;function Ne(e){return t=>je(e,t)}function Pe(e,t){const n=Object.keys(e.mediaTypes||{banner:"banner"}).join(", ");return`\\n ${e.code} is a ${n} ad unit\\n containing bidders that don\'t support ${n}: ${t}.\\n This bidder won\'t fetch demand.\\n `}function Me(e){return Object.fromEntries(Object.entries(e).filter(e=>{let[t,n]=e;return void 0!==n}))}function Fe(e,t){return"object"!=typeof e?{}:t.reduce((n,r,i)=>{if("function"==typeof r)return n;let o=r;const s=r.match(/^(.+?)\\sas\\s(.+?)$/i);s&&(r=s[1],o=s[2]);let a=e[r];return"function"==typeof t[i+1]&&(a=t[i+1](a,n)),void 0!==a&&(n[o]=a),n},{})}function Ge(e){return e?e.replace(/^\\?/,"").split("&").reduce((e,t)=>{let[n,r]=t.split("=");return/\\[\\]$/.test(n)?(n=n.replace("[]",""),e[n]=e[n]||[],e[n].push(r)):e[n]=r||"",e},{}):{}}function Le(e){return Object.keys(e).map(t=>Array.isArray(e[t])?e[t].map(e=>`${t}[]=${e}`).join("&"):`${t}=${e[t]}`).join("&")}function ze(e,t){const n=document.createElement("a");t&&"noDecodeWholeURL"in t&&t.noDecodeWholeURL?n.href=e:n.href=decodeURIComponent(e);const r=t&&"decodeSearchAsString"in t&&t.decodeSearchAsString;return{href:n.href,protocol:(n.protocol||"").replace(/:$/,""),hostname:n.hostname,port:+n.port,pathname:n.pathname.replace(/^(?!\\/)/,"/"),search:r?n.search:E.parseQS(n.search||""),hash:(n.hash||"").replace(/^#/,""),host:n.host||window.location.host}}function He(e){return(e.protocol||"http")+"://"+(e.host||e.hostname+(e.port?`:${e.port}`:""))+(e.pathname||"")+(e.search?`?${E.formatQS(e.search||"")}`:"")+(e.hash?`#${e.hash}`:"")}function Ve(e,t){let{checkTypes:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const r=Array.isArray(e),i=Array.isArray(t);if(r&&i){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Ve(e[r],t[r],{checkTypes:n}))return!1;return!0}if(r||i)return!1;if(n&&e.constructor!==t.constructor)return!1;const o=Object.keys(e),s=Object.keys(t);if(o.length!==s.length)return!1;for(const r of o){if(!Object.prototype.hasOwnProperty.call(t,r))return!1;if(!Ve(e[r],t[r],{checkTypes:n}))return!1}return!0}function Qe(e){for(let t=0;t<(arguments.length<=1?0:arguments.length-1);t++){const n=t+1<1||arguments.length<=t+1?void 0:arguments[t+1];(0,a.Qd)(n)&&Je(e,n)}return e}function Je(e,t){if(!(0,a.Qd)(e)||!(0,a.Qd)(t))return;const n=Object.keys(t);for(let r=0;r<n.length;r++){const i=n[r];if("__proto__"===i||"constructor"===i)continue;const o=t[i];(0,a.Qd)(o)?(e[i]||(e[i]={}),Je(e[i],o)):Array.isArray(o)?Array.isArray(e[i])?o.forEach(t=>{e[i].some(e=>Ve(e,t))||e[i].push(t)}):e[i]=[...o]:e[i]=o}}function Ke(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=function(e,t){if((0,a.fp)(Math.imul))return Math.imul(e,t);var n=(4194303&e)*(t|=0);return 4290772992&e&&(n+=(4290772992&e)*t|0),0|n};let r=3735928559^t,i=1103547991^t;for(let t,o=0;o<e.length;o++)t=e.charCodeAt(o),r=n(r^t,2654435761),i=n(i^t,1597334677);return r=n(r^r>>>16,2246822507)^n(i^i>>>13,3266489909),i=n(i^i>>>16,2246822507)^n(r^r>>>13,3266489909),(4294967296*(2097151&i)+(r>>>0)).toString()}function Ye(e){try{return JSON.parse(e)}catch(e){}}function Xe(e){try{return JSON.stringify(e)}catch(e){return""}}function Ze(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e};const n=new Map,r=function(){const r=t.apply(this,arguments);return n.has(r)||n.set(r,e.apply(this,arguments)),n.get(r)};return r.clear=n.clear.bind(n),r}function et(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"d";if(["m","d"].indexOf(t)<0)return Date.now();const n=e/("m"===t?1440:1);return Date.now()+(e&&e>0?864e5*n:0)}function tt(e){return Object.keys(e).map(t=>({[t]:e[t]}))}function nt(e,t){Object.entries(t).forEach(t=>{let[n,r]=t;return e.setAttribute(n,r)})}function rt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>e,r=0,i=e.length&&e.length-1;const o=n(t);for(;i-r>1;){const t=r+Math.round((i-r)/2);o>n(e[t])?r=t:i=t}for(;e.length>r&&o>n(e[r]);)r++;return r}function it(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;for(const n in e){const r=e[n],i=typeof r;if(void 0===r||"function"===i||"symbol"===i||r instanceof RegExp||r instanceof Map||r instanceof Set||r instanceof Date||null!==r&&"object"===i&&r.hasOwnProperty("toJSON"))return!0;if(null!==r&&"object"===i&&r.constructor===Object){if(t.has(r))return!0;if(t.add(r),it(r,t))return!0}}return!1}function ot(e,t){for(let n,r=0;r<e.length;r++)if(n=(0,s.A)(e[r],t),n)return n}function st(e){let t=null;try{const n=/[-\\w]+\\.([-\\w]+|[-\\w]{3,}|[-\\w]{1,3}\\.[-\\w]{2})$/i.exec(e);if(null!=n&&n.length>0){t=n[0];for(let e=1;e<n.length;e++)n[e].length>t.length&&(t=n[e])}}catch(e){t=null}return t}function at(e,t){(0,a.O8)(e.nurl)&&""!==e.nurl&&(e.nurl=e.nurl.replace(/\\${AUCTION_PRICE}/,t),se(e.nurl))}const dt=function(){let e;return function(){if(void 0!==e)return e;try{void 0===window.CompressionStream?e=!1:(new window.CompressionStream("gzip"),e=!0)}catch(t){e=!1}return e}}();async function ct(e){"string"!=typeof e&&(e=JSON.stringify(e));const t=(new TextEncoder).encode(e),n=new Blob([t]).stream().pipeThrough(new window.CompressionStream("gzip")),r=await new Response(n).blob(),i=await r.arrayBuffer();return new Uint8Array(i)}},736(e,t,n){n.d(t,{Tn:()=>o,tW:()=>i,tp:()=>r});const r="prebid",i="bidder",o="analytics"},765(e,t,n){n.d(t,{k:()=>i,rT:()=>s,uP:()=>o});var r=n(3715);function i(){return r.A.pbGlobal}function o(){return r.A.defineGlobal}function s(){return r.A.distUrlBase}},867(e,t,n){n.d(t,{EN:()=>d,gR:()=>s});var r=n(1933),i=n(466);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;if(!e)return e;if(/\\w+:\\/\\//.exec(e))return e;let n=t.location.protocol;try{n=t.top.location.protocol}catch(e){}return/^\\/\\//.exec(e)?n+e:`${n}//${e}`}function s(e){let t,{noLeadingWww:n=!1,noPort:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{t=new URL(o(e))}catch(e){return}return t=r?t.hostname:t.host,n&&t.startsWith("www.")&&(t=t.substring(4)),t}function a(e){try{const t=e.querySelector("link[rel=\'canonical\']");if(null!==t)return t.href}catch(e){}return null}const d=function(e){let t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;return i.top!==i?e:function(){const o=a(i.document),s=i.location.href;return t===o&&s===n||(t=o,n=s,r=e()),r}}((c=window,function(){const e=[],t=function(e){try{if(!e.location.ancestorOrigins)return;return e.location.ancestorOrigins}catch(e){}}(c),n=r.$W.getConfig("maxNestedIframes");let d,l,u,g,f=!1,p=0,h=!1,m=!1,b=!1;do{const n=d,r=m;let o,s=!1,g=null;m=!1,d=d?d.parent:c;try{o=d.location.href||null}catch(e){s=!0}if(s)if(r){const e=n.context;try{g=e.sourceUrl,l=g,b=!0,h=!0,d===c.top&&(f=!0),e.canonicalUrl&&(u=e.canonicalUrl)}catch(e){}}else{(0,i.logWarn)("Trying to access cross domain iframe. Continuing without referrer and location");try{const e=n.document.referrer;e&&(g=e,d===c.top&&(f=!0))}catch(e){}!g&&t&&t[p-1]&&(g=t[p-1],d===c.top&&(b=!0)),g&&!h&&(l=g)}else{if(o&&(g=o,l=g,h=!1,d===c.top)){f=!0;const e=a(d.document);e&&(u=e)}d.context&&d.context.sourceUrl&&(m=!0)}e.push(g),p++}while(d!==c.top&&p<n);e.reverse();try{g=c.top.document.referrer}catch(e){}const y=f||b?l:null,v=r.$W.getConfig("pageUrl")||u||null;let E=r.$W.getConfig("pageUrl")||y||o(v,c);return y&&y.indexOf("?")>-1&&-1===E.indexOf("?")&&(E=`${E}${y.substring(y.indexOf("?"))}`),{reachedTop:f,isAmp:h,numIframes:p-1,stack:e,topmostLocation:l||null,location:y,canonicalUrl:v,page:E,domain:s(E)||null,ref:g||null,legacy:{reachedTop:f,isAmp:h,numIframes:p-1,stack:e,referer:l||null,canonicalUrl:v}}}));var c},869(e,t,n){n.d(t,{uW:()=>I,Yl:()=>C,iS:()=>O});var r=n(4123),i=n(5482),o=n(7156),s=n(1933),a=n(1418),d=n(8014),c=n(2592),l=n(9794),u=n(466),g=n(6665),f=n(8928),p=n(9236),h=n(939);const m=3e3;const b=function(){let e,t,n=(0,h.H)({monotonic:!0,ttl:()=>e,slack:0});s.$W.getConfig("targetingControls",r=>{({lock:t,lockTimeout:e=m}=r.targetingControls??{}),null==t||Array.isArray(t)?null==t&&i():t=[t],n.clear()});const[r,i]=(()=>{let e=!1;function r(e){let{slot:r}=e;t?.forEach(e=>r.getTargeting(e)?.forEach(n.delete))}return[()=>{null!=t&&!e&&(0,u.isGptPubadsDefined)()&&(googletag.pubads().addEventListener?.("slotRenderEnded",r),e=!0)},()=>{e&&(0,u.isGptPubadsDefined)()&&(googletag.pubads().removeEventListener?.("slotRenderEnded",r),e=!1)}]})();return{isLocked:e=>t?.some(t=>null!=e[t]&&n.has(e[t]))??!1,lock(e){r(),t?.forEach(t=>null!=e[t]&&n.add(e[t]))}}}();var y=[];const v=20,E="targetingControls.allowTargetingKeys",A="targetingControls.addTargetingKeys",w=`Only one of "${E}" or "${A}" can be set`,T=Object.keys(a.xS).map(e=>a.xS[e]),I={isBidNotExpired:e=>e.responseTimestamp+1e3*(0,i.cT)(e)>(0,u.timestamp)(),isUnusedBid:e=>e&&(e.status&&![a.tl.RENDERED].includes(e.status)||!e.status),isBidNotLocked:e=>!b.isLocked(e.adserverTargeting)};function C(e){return!Object.values(I).some(t=>!t(e))}const S=(0,c.A_)("sync",function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:u.sortByHighestCpm;if(!r){const r=[],o=s.$W.getConfig("sendBidsControl.dealPrioritization"),a=(0,u.groupBy)(e,"adUnitCode");return Object.keys(a).forEach(e=>{let s=[];const d=(0,u.groupBy)(a[e],"bidderCode");Object.keys(d).forEach(e=>{s.push(d[e].reduce(t))}),n?(s=o?s.sort(B(!0)):s.sort((e,t)=>t.cpm-e.cpm),r.push(...s.slice(0,n))):(s=s.sort(i),r.push(...s))}),r}return e});function B(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return function(t,n){return void 0!==t.adserverTargeting.hb_deal&&void 0===n.adserverTargeting.hb_deal?-1:void 0===t.adserverTargeting.hb_deal&&void 0!==n.adserverTargeting.hb_deal?1:e?n.cpm-t.cpm:n.adserverTargeting.hb_pb-t.adserverTargeting.hb_pb}}const O=function(e){const t={},n={setLatestAuctionForAdUnit(e,n){t[e]=n},resetPresetTargetingAST(e){r(e).forEach(function(e){const t=window.apntag.getTag(e);if(t&&t.keywords){const n=Object.keys(t.keywords),r={};n.forEach(e=>{y.includes(e.toLowerCase())||(r[e]=t.keywords[e])}),window.apntag.modifyTag(e,{keywords:r})}})},getAllTargeting(t,n,d){let c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:p.Vk,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:u.sortByHighestCpm;d||=i(c,l);const f=r(t),b=s.$W.getConfig("enableSendAllBids"),I=s.$W.getConfig("sendBidsControl.bidLimit"),C=b&&(n||I)||0,{customKeysByUnit:O,filteredBids:R}=function(e,t){const n=[],r={},i=s.$W.getConfig("targetingControls.alwaysIncludeDeals");return t.forEach(t=>{const s=e.includes(t.adUnitCode),a=!0===o.u.get(t.bidderCode,"allowZeroCpmBids")?t.cpm>=0:t.cpm>0,d=i&&t.dealId;s&&(d||a)&&(n.push(t),Object.keys(t.adserverTargeting).filter(function(){const e=m();return function(t){return-1===e.indexOf(t)}}()).forEach(e=>{const n=e.substring(0,20),i=r[t.adUnitCode]||{},o=[t.adserverTargeting[e]];i[n]?i[n]=i[n].concat(o).filter(u.uniques):i[n]=o,r[t.adUnitCode]=i}))}),{filteredBids:n,customKeysByUnit:r}}(f,d);let U=function(t,n,r){const i=!0===s.$W.getConfig("targetingControls.allBidsCustomTargeting"),o=h(t,r).concat(function(e){const t=s.$W.getConfig("targetingControls.alwaysIncludeDeals"),n=s.$W.getConfig("enableSendAllBids");return function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const r=T.slice(),i=s.$W.getConfig("targetingControls.allowSendAllBidsTargetingKeys"),o=i?i.map(e=>a.xS[e]):r;return e.reduce((e,i)=>{if(t||n&&i.dealId){const t=function(e,t){return t.reduce((t,n)=>(e.adserverTargeting[n]&&t.push({[`${n}_${e.bidderCode}`.substring(0,v)]:[e.adserverTargeting[n]]}),t),[])}(i,r.filter(e=>void 0!==i.adserverTargeting[e]&&(n||-1!==o.indexOf(e))));t&&e.push({[i.adUnitCode]:t})}return e},[])}(e,n,t)}(t)).concat(function(t){function n(e){return e?.[a.iD.ADSERVER_TARGETING]}function r(e){const t=n(e);return Object.keys(t).map(function(e){return(0,g.O8)(t[e])&&(t[e]=t[e].split(",").map(e=>e.trim())),(0,g.cy)(t[e])||(t[e]=[t[e]]),{[e]:t[e]}})}return e.getAdUnits().filter(e=>t.includes(e.code)&&n(e)).reduce((e,t)=>{const n=r(t);return n&&e.push({[t.code]:n}),e},[])}(r));i&&o.push(...function(e,t){return e.reduce((e,n)=>{const r=Object.assign({},n),i=t[r.adUnitCode],o=[];return i&&Object.keys(i).forEach(e=>{e&&i[e]&&o.push({[e]:i[e]})}),e.push({[r.adUnitCode]:o}),e},[])}(t,n));return o.forEach(e=>{!function(e){Object.keys(e).forEach(t=>{e[t].forEach(e=>{const t=Object.keys(e);-1===y.indexOf(t[0])&&(y=t.concat(y))})})}(e)}),o}(S(R,c,C,void 0,l),O,f);const k=Object.keys(Object.assign({},a.Zh));let D=s.$W.getConfig(E);const _=s.$W.getConfig(A);if(null!=_&&null!=D)throw new Error(w);D=null!=_?k.concat(_):D||k,Array.isArray(D)&&D.length>0&&(U=function(e,t){const n=Object.assign({},a.xS),r=Object.keys(a.xS),i={};(0,u.logInfo)(`allowTargetingKeys - allowed keys [ ${t.map(e=>n[e]).join(", ")} ]`),e.map(e=>{const o=Object.keys(e)[0],s=e[o].filter(e=>{const o=Object.keys(e)[0],s=0===r.filter(e=>0===o.indexOf(n[e])).length||t.find(e=>{const t=n[e];return 0===o.indexOf(t)});return i[o]=!s,s});e[o]=s});const o=Object.keys(i).filter(e=>i[e]);(0,u.logInfo)(`allowTargetingKeys - removed keys [ ${o.join(", ")} ]`);const s=e.filter(e=>e[Object.keys(e)[0]].length>0);return s}(U,D));let $=function(e){return e.map(e=>({[Object.keys(e)[0]]:e[Object.keys(e)[0]].map(e=>({[Object.keys(e)[0]]:e[Object.keys(e)[0]].join(",")})).reduce((e,t)=>Object.assign(t,e),{})})).reduce(function(e,t){var n=Object.keys(t)[0];return e[n]=Object.assign({},e[n],t[n]),e},{})}(U);const q=s.$W.getConfig("targetingControls.auctionKeyMaxChars");return q&&((0,u.logInfo)(`Detected \'targetingControls.auctionKeyMaxChars\' was active for this auction; set with a limit of ${q} characters. Running checks on auction keys...`),$=function(e,t){const n=(0,g.Go)(e),r=Object.keys(n).map(e=>({adUnitCode:e,adserverTargeting:n[e]})).sort(B());return r.reduce(function(e,r,i,o){let s=(a=r.adserverTargeting,Object.keys(a).reduce(function(e,t){return e+=`${t}%3d${encodeURIComponent(a[t])}%26`},""));var a;i+1===o.length&&(s=s.slice(0,-3));const d=r.adUnitCode,c=s.length;return c<=t?(t-=c,(0,u.logInfo)(`AdUnit \'${d}\' auction keys comprised of ${c} characters. Deducted from running threshold; new limit is ${t}`,n[d]),e[d]=n[d]):(0,u.logWarn)(`The following keys for adUnitCode \'${d}\' exceeded the current limit of the \'auctionKeyMaxChars\' setting.\\nThe key-set size was ${c}, the current allotted amount was ${t}.\\n`,n[d]),i+1===o.length&&0===Object.keys(e).length&&(0,u.logError)("No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting."),e},{})}($,q)),f.forEach(e=>{$[e]||($[e]={})}),$},setTargetingForGPT:(0,c.A_)("sync",function(t,r){const i=n.getAllTargeting(t),o=Object.fromEntries(y.map(e=>[e,null]));Object.entries(function(e,t){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>window.googletag.pubads().getSlots())().reduce((e,n)=>{const r=(0,g.fp)(t)&&t(n);return Object.keys(e).filter((0,g.fp)(r)?r:(0,u.isAdUnitCodeMatchingSlot)(n)).forEach(t=>e[t].push(n)),e},Object.fromEntries(e.map(e=>[e,[]])))}(Object.keys(i),r)).forEach(e=>{let[t,n]=e;n.forEach(e=>{Object.keys(i[t]).forEach(e=>{let n=i[t][e];"string"==typeof n&&-1!==n.indexOf(",")&&(n=n.split(",")),i[t][e]=n}),(0,u.logMessage)(`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`,i[t]),e.updateTargetingFromMap(Object.assign({},o,i[t])),b.lock(i[t])})}),Object.keys(i).forEach(t=>{Object.keys(i[t]).forEach(n=>{"hb_adid"===n&&e.setStatusForBids(i[t][n],a.tl.BID_TARGETING_SET)})}),n.targetingDone(i),d.Ic(a.qY.SET_TARGETING,i)},"setTargetingForGPT"),targetingDone:(0,c.A_)("sync",function(e){return e},"targetingDone"),getWinningBids(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:p.Vk,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:u.sortByHighestCpm;const a=t||i(n,s),d=r(e);return a.filter(e=>d.includes(e.adUnitCode)).filter(e=>!0===o.u.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0).map(e=>e.adUnitCode).filter(u.uniques).map(e=>a.filter(t=>t.adUnitCode===e?t:null).reduce(p.Vk))},setTargetingForAst(e){const t=n.getAllTargeting(e);try{n.resetPresetTargetingAST(e)}catch(e){(0,u.logError)("unable to reset targeting for AST"+e)}Object.keys(t).forEach(e=>{b.lock(t[e]),Object.keys(t[e]).forEach(n=>{if((0,u.logMessage)(`Attempting to set targeting for targetId: ${e} key: ${n} value: ${t[e][n]}`),(0,g.O8)(t[e][n])||(0,g.cy)(t[e][n])){const r={},i=/pt[0-9]/;n.search(i)<0?r[n.toUpperCase()]=t[e][n]:r[n]=t[e][n],window.apntag.setKeywords(e,r,{overrideKeyValue:!0})}})})},isApntagDefined(){if(window.apntag&&(0,g.fp)(window.apntag.setKeywords))return!0}};function r(t){return"string"==typeof t?[t]:(0,g.cy)(t)?t:e.getAdUnitCodes()||[]}function i(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.Bq,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;const i=e.getBidsReceived().reduce((e,n)=>{const r=s.$W.getConfig("useBidCache"),i=s.$W.getConfig("bidCacheFilterFunction"),o=t[n.adUnitCode]===n.auctionId,a=!(r&&!o&&"function"==typeof i)||!!i(n);return(r||o)&&a&&n?.video?.context!==l.LM&&C(n)&&(n.latestTargetedAuctionId=t[n.adUnitCode],e.push(n)),e},[]);return S(i,n,void 0,void 0,r)}function h(e,t){const r=n.getWinningBids(t,e),i=m();return r.map(e=>({[e.adUnitCode]:Object.keys(e.adserverTargeting).filter(t=>void 0===e.sendStandardTargeting||e.sendStandardTargeting||-1===i.indexOf(t)).reduce((t,n)=>{const r=[e.adserverTargeting[n]],i={[n.substring(0,v)]:r};if(n===a.xS.DEAL){const o=`${n}_${e.bidderCode}`.substring(0,v),s={[o]:r};return[...t,i,s]}return[...t,i]},[])}))}function m(){return e.getStandardBidderAdServerTargeting().map(e=>e.key).concat(T).filter(u.uniques)}return s.$W.getConfig("targetingControls",function(e){null!=(0,f.A)(e,E)&&null!=(0,f.A)(e,A)&&(0,u.logError)(w)}),n}(r.n)},939(e,t,n){n.d(t,{H:()=>l});var r=n(3064),i=n(466);let o=null,s=0,a=[];function d(){document.hidden?o=Date.now():(s+=Date.now()-(o??0),o=null,a.forEach(e=>{let{callback:t,startTime:n,setTimerId:r}=e;return r(c(t,s-n)())}),a=[])}function c(e,t){const n=s;let r=setTimeout(()=>{s===n&&null==o?e():null!=o?a.push({callback:e,startTime:n,setTimerId(e){r=e}}):r=c(e,s-n)()},t);return()=>r}function l(){let{startTime:e=i.timestamp,ttl:t=()=>null,monotonic:n=!1,slack:o=5e3}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=new Map,a=[],d=[],l=n?e=>d.push(e):e=>d.splice((0,i.binarySearch)(d,e,e=>e.expiry),0,e);let u,g;function f(){if(g&&clearTimeout(g),d.length>0){const e=(0,i.timestamp)();u=Math.max(e,d[0].expiry+o),g=c(()=>{const e=(0,i.timestamp)();let t=0;for(const n of d){if(n.expiry>e)break;a.forEach(e=>{try{e(n.item)}catch(e){(0,i.logError)(e)}}),s.delete(n.item),t++}d.splice(0,t),g=null,f()},u-e)}else g=null}function p(n){const i={},s=h;let a;const[d,c]=Object.entries({start:e,delta:t}).map(e=>{let t,[d,c]=e;return function(){const e=t={};r.U9.resolve(c(n)).then(n=>{e===t&&(i[d]=n,s===h&&null!=i.start&&null!=i.delta&&(a=i.start+i.delta,l(p),(null==g||u>a+o)&&f()))})}}),p={item:n,refresh:c,get expiry(){return a}};return d(),c(),p}let h={};return{[Symbol.iterator]:()=>s.keys(),add(e){!s.has(e)&&s.set(e,p(e))},has:e=>s.has(e),delete(e){const t=s.get(e);if(t)for(let e=0;e<d.length&&d[e].expiry<=t.expiry;e++)if(d[e]===t){d.splice(e,1);break}return s.delete(e)},clear(){d.length=0,f(),s.clear(),h={}},toArray:()=>Array.from(s.keys()),refresh(){d.length=0,f();for(const e of s.values())e.refresh()},onExpiry:e=>(a.push(e),()=>{const t=a.indexOf(e);t>=0&&a.splice(t,1)})}}document.addEventListener("visibilitychange",d)},1124(e,t,n){n.d(t,{j:()=>l,q:()=>g});var r=n(466),i=n(1933);const o={buckets:[{max:5,increment:.5}]},s={buckets:[{max:20,increment:.1}]},a={buckets:[{max:20,increment:.01}]},d={buckets:[{max:3,increment:.01},{max:8,increment:.05},{max:20,increment:.5}]},c={buckets:[{max:5,increment:.05},{max:10,increment:.1},{max:20,increment:.5}]};function l(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=parseFloat(e);return isNaN(r)&&(r=""),{low:""===r?"":u(e,o,n),med:""===r?"":u(e,s,n),high:""===r?"":u(e,a,n),auto:""===r?"":u(e,c,n),dense:""===r?"":u(e,d,n),custom:""===r?"":u(e,t,n)}}function u(e,t,n){let o="";if(!g(t))return o;const s=t.buckets.reduce((e,t)=>e.max>t.max?e:t,{max:0});let a=0;const d=t.buckets.find(t=>{if(e>s.max*n){let e=t.precision;void 0===e&&(e=2),o=(t.max*n).toFixed(e)}else{if(e<=t.max*n&&e>=a*n)return t.min=a,t;a=t.max}});return d&&(o=function(e,t,n){const o=void 0!==t.precision?t.precision:2,s=t.increment*n,a=t.min*n;let d=Math.floor;const c=i.$W.getConfig("cpmRoundingFunction");"function"==typeof c&&(d=c);const l=Math.pow(10,o+2),u=(e*l-a*l)/(s*l);let g,f;try{g=d(u)*s+a}catch(e){f=!0}(f||"number"!=typeof g)&&((0,r.logWarn)("Invalid rounding function passed in config"),g=Math.floor(u)*s+a);return g=Number(g.toFixed(10)),g.toFixed(o)}(e,d,n)),o}function g(e){if((0,r.isEmpty)(e)||!e.buckets||!Array.isArray(e.buckets))return!1;let t=!0;return e.buckets.forEach(e=>{e.max&&e.increment||(t=!1)}),t}},1385(e,t,n){n.d(t,{SL:()=>y,ad:()=>p,mW:()=>g,o2:()=>m,t6:()=>f});var r=n(466),i=n(6665),o=n(3064),s=n(1933);Object.freeze({});const a="gdpr",d="gpp",c="usp",l="coppa";class u{#e;#t;#n;#r;#i=!0;#o;constructor(){this.reset()}#s(e){this.#r=!0,this.#t=e,this.#n.resolve(e)}reset(){this.#n=(0,o.v6)(),this.#e=!1,this.#t=null,this.#r=!1,this.generatedTime=null}enable(){this.#e=!0}get enabled(){return this.#e}get ready(){return this.#r}get promise(){return this.#r?o.U9.resolve(this.#t):(this.#e||this.#s(null),this.#n.promise)}setConsentData(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,r.timestamp)();this.generatedTime=t,this.#i=!0,this.#s(e)}getConsentData(){return this.#t}get hash(){return this.#i&&(this.#o=(0,r.cyrb53Hash)(JSON.stringify(this.#t&&this.hashFields?this.hashFields.map(e=>this.#t[e]):this.#t)),this.#i=!1),this.#o}}const g=new class extends u{hashFields=["gdprApplies","consentString"];getConsentMeta(){const e=this.getConsentData();if(e&&e.vendorData&&this.generatedTime)return{gdprApplies:e.gdprApplies,consentStringSize:(0,i.O8)(e.vendorData.tcString)?e.vendorData.tcString.length:0,generatedAt:this.generatedTime,apiVersion:e.apiVersion}}},f=new class extends u{getConsentMeta(){if(this.getConsentData()&&this.generatedTime)return{generatedAt:this.generatedTime}}},p=new class extends u{hashFields=["applicableSections","gppString"];getConsentMeta(){if(this.getConsentData()&&this.generatedTime)return{generatedAt:this.generatedTime}}},h=(()=>{function e(){return!!s.$W.getConfig("coppa")}return{getCoppa:e,getConsentData:e,getConsentMeta:e,reset(){},get promise(){return o.U9.resolve(e())},get hash(){return e()?"1":"0"}}})(),m=function(){const e={},t={},n={};return{register(r,i,o){o&&((e[i]=e[i]||{})[r]=o,t.hasOwnProperty(i)?t[i]!==o&&(t[i]=n):t[i]=o)},get(r){const i={modules:e[r]||{}};return t.hasOwnProperty(r)&&t[r]!==n&&(i.gvlid=t[r]),i}}}(),b={[a]:g,[c]:f,[d]:p,[l]:h};const y=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b;const t=Object.entries(e);return Object.assign({get promise(){return o.U9.all(t.map(e=>{let[t,n]=e;return n.promise.then(e=>[t,e])})).then(e=>Object.fromEntries(e))},get hash(){return(0,r.cyrb53Hash)(t.map(e=>{let[t,n]=e;return n.hash}).join(":"))}},Object.fromEntries(["getConsentData","getConsentMeta","reset"].map(e=>{return[e,(n=e,function(){return Object.fromEntries(t.map(e=>{let[t,r]=e;return[t,r[n]()]}))})];var n})))}()},1418(e,t,n){n.d(t,{IY:()=>E,M:()=>i,RW:()=>g,Tf:()=>p,UE:()=>d,Zh:()=>l,_B:()=>y,as:()=>s,cA:()=>a,h0:()=>h,iD:()=>r,jO:()=>m,nl:()=>v,oA:()=>b,qY:()=>o,tl:()=>f,x5:()=>u,xS:()=>c});const r={PL_CODE:"code",PL_SIZE:"sizes",PL_BIDS:"bids",BD_BIDDER:"bidder",BD_ID:"paramsd",BD_PL_ID:"placementId",ADSERVER_TARGETING:"adserverTargeting",BD_SETTING_STANDARD:"standard"},i="pbjs_debug",o={AUCTION_INIT:"auctionInit",AUCTION_TIMEOUT:"auctionTimeout",AUCTION_END:"auctionEnd",BID_ADJUSTMENT:"bidAdjustment",BID_TIMEOUT:"bidTimeout",BID_REQUESTED:"bidRequested",BID_RESPONSE:"bidResponse",BID_REJECTED:"bidRejected",NO_BID:"noBid",SEAT_NON_BID:"seatNonBid",BID_WON:"bidWon",BIDDER_DONE:"bidderDone",BIDDER_ERROR:"bidderError",SET_TARGETING:"setTargeting",BEFORE_REQUEST_BIDS:"beforeRequestBids",BEFORE_BIDDER_HTTP:"beforeBidderHttp",REQUEST_BIDS:"requestBids",ADD_AD_UNITS:"addAdUnits",AD_RENDER_FAILED:"adRenderFailed",AD_RENDER_SUCCEEDED:"adRenderSucceeded",TCF2_ENFORCEMENT:"tcf2Enforcement",AUCTION_DEBUG:"auctionDebug",BID_VIEWABLE:"bidViewable",STALE_RENDER:"staleRender",EXPIRED_RENDER:"expiredRender",BILLABLE_EVENT:"billableEvent",BID_ACCEPTED:"bidAccepted",RUN_PAAPI_AUCTION:"paapiRunAuction",PBS_ANALYTICS:"pbsAnalytics",PAAPI_BID:"paapiBid",PAAPI_NO_BID:"paapiNoBid",PAAPI_ERROR:"paapiError",BEFORE_PBS_HTTP:"beforePBSHttp",BROWSI_INIT:"browsiInit",BROWSI_DATA:"browsiData"},s={PREVENT_WRITING_ON_MAIN_DOCUMENT:"preventWritingOnMainDocument",NO_AD:"noAd",EXCEPTION:"exception",CANNOT_FIND_AD:"cannotFindAd",MISSING_DOC_OR_ADID:"missingDocOrAdid"},a={bidWon:"adUnitCode"},d={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"},c={BIDDER:"hb_bidder",AD_ID:"hb_adid",PRICE_BUCKET:"hb_pb",SIZE:"hb_size",DEAL:"hb_deal",SOURCE:"hb_source",FORMAT:"hb_format",UUID:"hb_uuid",CACHE_ID:"hb_cache_id",CACHE_HOST:"hb_cache_host",ADOMAIN:"hb_adomain",ACAT:"hb_acat",CRID:"hb_crid",DSP:"hb_dsp"},l={BIDDER:"hb_bidder",AD_ID:"hb_adid",PRICE_BUCKET:"hb_pb",SIZE:"hb_size",DEAL:"hb_deal",FORMAT:"hb_format",UUID:"hb_uuid",CACHE_HOST:"hb_cache_host"},u={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",privacyIcon:"hb_native_privicon",sponsoredBy:"hb_native_brand",image:"hb_native_image",icon:"hb_native_icon",clickUrl:"hb_native_linkurl",displayUrl:"hb_native_displayurl",cta:"hb_native_cta",rating:"hb_native_rating",address:"hb_native_address",downloads:"hb_native_downloads",likes:"hb_native_likes",phone:"hb_native_phone",price:"hb_native_price",salePrice:"hb_native_saleprice",rendererUrl:"hb_renderer_url",adTemplate:"hb_adTemplate"},g={SRC:"s2s",DEFAULT_ENDPOINT:"https://prebid.adnxs.com/pbs/v1/openrtb2/auction",SYNCED_BIDDERS_KEY:"pbjsSyncs"},f={BID_TARGETING_SET:"targetingSet",RENDERED:"rendered",BID_REJECTED:"bidRejected"},p={INVALID:"Bid has missing or invalid properties",INVALID_REQUEST_ID:"Invalid request ID",BIDDER_DISALLOWED:"Bidder code is not allowed by allowedAlternateBidderCodes / allowUnknownBidderCodes",FLOOR_NOT_MET:"Bid does not meet price floor",CANNOT_CONVERT_CURRENCY:"Unable to convert currency",DSA_REQUIRED:"Bid does not provide required DSA transparency info",DSA_MISMATCH:"Bid indicates inappropriate DSA rendering method",PRICE_TOO_HIGH:"Bid price exceeds maximum value"},h={body:"desc",body2:"desc2",sponsoredBy:"sponsored",cta:"ctatext",rating:"rating",address:"address",downloads:"downloads",likes:"likes",phone:"phone",price:"price",salePrice:"saleprice",displayUrl:"displayurl"},m={sponsored:1,desc:2,rating:3,likes:4,downloads:5,price:6,saleprice:7,phone:8,address:9,desc2:10,displayurl:11,ctatext:12},b={ICON:1,MAIN:3},y=["privacyIcon","clickUrl","adTemplate","rendererUrl","type"],v={REQUEST:"Prebid Request",RESPONSE:"Prebid Response",NATIVE:"Prebid Native",EVENT:"Prebid Event"},E="__pb_locator__"},1443(e,t,n){n.d(t,{CK:()=>y,s0:()=>h,vM:()=>b});var r=n(466),i=n(7156),o=n(736),s=n(3202),a=n(5291),d=n(5808),c=n(1933),l=n(2592),u=n(8668),g=n(7610);const f="html5",p="cookie";let h=[];function m(){let{moduleName:e,moduleType:t,advertiseKeys:n=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{isAllowed:i=s.io}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};function l(r,s,l,f){let p=e;const h=c.$W.getCurrentBidder();h&&t===o.tW&&u.Ay.aliasRegistry[h]===e&&(p=h);const m={[a.Zw]:s,[a.OI]:f};n&&null!=l&&(m[a.Ez]=l);return r({valid:i(d.Ue,(0,g.s)(t,p,m))})}function m(e,t,n,r,i){if(!i||"function"!=typeof i)return l(e,t,n,r);h.push(function(){let o=l(e,t,n,r);i(o)})}function b(e){const t=e.charAt(0).toUpperCase()+e.substring(1),n=()=>window[e],i=function(t){return m(function(t){if(t&&t.valid)try{return!!n()}catch(t){(0,r.logError)(`${e} api disabled`)}return!1},f,null,!1,t)};return{[`has${t}`]:i,[`${e}IsEnabled`]:e=>m(function(e){if(e&&e.valid)try{return n().setItem("prebid.cookieTest","1"),"1"===n().getItem("prebid.cookieTest")}catch(e){}finally{try{n().removeItem("prebid.cookieTest")}catch(e){}}return!1},f,null,!1,e),[`setDataIn${t}`]:(e,t,r)=>m(function(r){r&&r.valid&&i()&&n().setItem(e,t)},f,e,!0,r),[`getDataFrom${t}`]:(e,t)=>m(function(t){return t&&t.valid&&i()?n().getItem(e):null},f,e,!1,t),[`removeDataFrom${t}`]:(e,t)=>m(function(t){t&&t.valid&&i()&&n().removeItem(e)},f,e,!0,t)}}return{setCookie:function(e,t,n,r,i,o){return m(function(o){if(o&&o.valid){const o=i&&""!==i?` ;domain=${encodeURIComponent(i)}`:"",s=n&&""!==n?` ;expires=${n}`:"",a=null!=r&&"none"==r.toLowerCase()?"; Secure":"";document.cookie=`${e}=${encodeURIComponent(t)}${s}; path=/${o}${r?`; SameSite=${r}`:""}${a}`}},p,e,!0,o)},getCookie:function(e,t){return m(function(t){if(t&&t.valid){let t=window.document.cookie.match("(^|;)\\\\s*"+e+"\\\\s*=\\\\s*([^;]*)\\\\s*(;|$)");return t?decodeURIComponent(t[2]):null}return null},p,e,!1,t)},cookiesAreEnabled:function(e){return m(function(e){return!(!e||!e.valid)&&(0,r.checkCookieSupport)()},p,null,!1,e)},...b("localStorage"),...b("sessionStorage"),findSimilarCookies:function(e,t){return m(function(t){if(t&&t.valid){const t=[];if((0,r.hasDeviceAccess)()){const n=document.cookie.split(";");for(;n.length;){const r=n.pop();let i=r.indexOf("=");i=i<0?r.length:i;decodeURIComponent(r.slice(0,i).replace(/^\\s+/,"")).indexOf(e)>=0&&t.push(decodeURIComponent(r.slice(i+1)))}}return t}},p,e,!1,t)}}}function b(){let{moduleType:e,moduleName:t,bidderCode:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};function r(){throw new Error("Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName")}return n?((e&&e!==o.tW||t)&&r(),e=o.tW,t=n):t&&e||r(),m({moduleType:e,moduleName:t})}function y(e){return m({moduleName:e,moduleType:o.tp})}function v(){if(!(0,r.hasDeviceAccess)())return{allow:!1}}(0,s.qB)(d.Ue,"deviceAccess config",v),(0,s.qB)(d.yg,"deviceAccess config",v),(0,s.qB)(d.Ue,"bidderSettings.*.storageAllowed",function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.u;if(e[a.Dk]!==o.tW)return;let n=t.get(e[a.q7],"storageAllowed");if(n&&!0!==n){const t=e[a.Zw];n=Array.isArray(n)?n.some(e=>e===t):n===t}else n=!!n;return n?void 0:{allow:n}});(0,l.A_)("sync",(e,t)=>{})},1748(e,t,n){n.d(t,{E:()=>a,m:()=>s});var r=n(765);const i=(0,r.uP)()?window:{},o=i[(0,r.k)()]=i[(0,r.k)()]||{};function s(){return o}function a(e){o.installedModules.push(e)}o.cmd=o.cmd||[],o.que=o.que||[],o.installedModules=o.installedModules||[],i===window&&(i._pbjsGlobals=i._pbjsGlobals||[],i._pbjsGlobals.push((0,r.k)()))},1833(e,t,n){n.d(t,{Dy:()=>i,O$:()=>s,i8:()=>o});var r=n(466);const i=["dooh","app","site"];function o(e){return function(t){return i.reduce((n,i)=>(s(t,i)&&(null!=n?((0,r.logWarn)(`${e} specifies both \'${n}\' and \'${i}\'; dropping the latter.`),delete t[i]):n=i),n),null),t}}function s(e,t){return null!=e[t]&&Object.keys(e[t]).length>0}},1852(e,t,n){n.d(t,{$A:()=>I,BS:()=>P,Hh:()=>W,Pk:()=>j,Uc:()=>O,XO:()=>M,bw:()=>_,n6:()=>C,qn:()=>$,vB:()=>N,vW:()=>R,vd:()=>k});var r=n(466),i=n(8014),o=n(1418),s=n(1933),a=n(7464),d=n(9794),c=n(4123),l=n(5144),u=n(2592),g=n(356),f=n(3064),p=n(8668),h=n(7841),m=n(869),b=n(2122);const{AD_RENDER_FAILED:y,AD_RENDER_SUCCEEDED:v,STALE_RENDER:E,BID_WON:A,EXPIRED_RENDER:w}=o.qY,{EXCEPTION:T}=o.as,I=(0,u.A_)("sync",function(e){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:f.U9.resolve()).then(t=>t??c.n.findBidByAdId(e)).catch(()=>{})}),C=(0,u.A_)("sync",function(e){((0,b.$T)(e.eventtrackers)[b.RO]?.[b.Ni]||[]).forEach(e=>(0,r.triggerPixel)(e)),i.Ic(A,e),c.n.addWinningBid(e)});function S(e){let{reason:t,message:n,bid:o,id:s}=e;const a={reason:t,message:n};o&&(a.bid=o,a.adId=o.adId),s&&(a.adId=s),(0,r.logError)(`Error rendering ad (id: ${s}): ${n}`),i.Ic(y,a)}function B(e){let{doc:t,bid:n,id:r}=e;const o={doc:t,bid:n,adId:r};p.Ay.callAdRenderSucceededBidder(n.adapterCode||n.bidder,n),i.Ic(v,o)}function O(e,t){switch(e.event){case o.qY.AD_RENDER_FAILED:S({bid:t,id:t.adId,reason:e.info.reason,message:e.info.message});break;case o.qY.AD_RENDER_SUCCEEDED:B({doc:null,bid:t,id:t.adId});break;default:(0,r.logError)(`Received event request for unsupported event: \'${e.event}\' (adId: \'${t.adId}\')`)}}function R(e,t,n){let{resizeFn:r,fireTrackers:i=g.vO}=n;if("resizeNativeHeight"===e.action)r(e.width,e.height);else i(e,t)}const U={[o.nl.EVENT]:O};U[o.nl.NATIVE]=R;const k=(0,u.A_)("sync",function(e,t){const{ad:n,adUrl:i,cpm:o,originalCpm:s,width:a,height:d,instl:c}=e,l={AUCTION_PRICE:s||o,CLICKTHROUGH:t?.clickUrl||""};return{ad:(0,r.replaceMacros)(n,l),adUrl:(0,r.replaceMacros)(i,l),width:a,height:d,instl:c}}),D=(0,u.A_)("sync",function(e){let{renderFn:t,resizeFn:n,bidResponse:i,options:s,doc:a,isMainDocument:c=a===document&&!(0,r.inIframe)()}=e;const l=i.mediaType===d.G_;if(c||l)return void S({reason:o.as.PREVENT_WRITING_ON_MAIN_DOCUMENT,message:l?"Cannot render video ad without a renderer":"renderAd was prevented from writing to the main document.",bid:i,id:i.adId});const u=k(i,s);t(Object.assign({adId:i.adId},u));const{width:g,height:f}=u;null!=(g??f)&&n(g,f)});function _(e){let{renderFn:t,resizeFn:n,adId:a,options:d,bidResponse:c,doc:l}=e;W(c,()=>{if(null!=c){if((c.status!==o.tl.RENDERED||((0,r.logWarn)(`Ad id ${a} has been rendered before`),i.Ic(E,c),!s.$W.getConfig("auctionOptions")?.suppressStaleRender))&&(m.uW.isBidNotExpired(c)||((0,r.logWarn)(`Ad id ${a} has been expired`),i.Ic(w,c),!s.$W.getConfig("auctionOptions")?.suppressExpiredRender)))try{D({renderFn:t,resizeFn:n,bidResponse:c,options:d,doc:l})}catch(e){S({reason:o.as.EXCEPTION,message:e.message,id:a,bid:c})}}else S({reason:o.as.CANNOT_FIND_AD,message:`Cannot find ad \'${a}\'`,id:a})})}function $(e){const t=(0,h.BO)(e.metrics);t.checkpoint("bidRender"),t.timeBetween("bidWon","bidRender","render.deferred"),t.timeBetween("auctionEnd","bidRender","render.pending"),t.timeBetween("requestBids","bidRender","render.e2e"),e.status=o.tl.RENDERED}D.before(function(e,t){const{bidResponse:n,doc:r}=t;(0,a.J7)(n.renderer)?((0,a.Pg)(n.renderer,n,r),B({doc:r,bid:n,id:n.adId}),e.bail()):e(t)},100);const q=new WeakMap,x=new WeakSet;function W(e,t){null!=e?(q.set(e,t),e.deferRendering||N(e),j(e)):t()}function j(e){x.has(e)||(x.add(e),C(e))}function N(e){const t=q.get(e);t&&(t(),$(e),q.delete(e))}function P(e,t,n){let i;function s(e,n){S(Object.assign({id:t,bid:i},{reason:e,message:n}))}function a(t,n){const r=e.defaultView?.frameElement;r&&(t&&(r.width=t,r.style.width&&(r.style.width=`${t}px`)),n&&(r.height=n,r.style.height&&(r.style.height=`${n}px`)))}const d=(c={resizeFn:a},function(e,t,n){U.hasOwnProperty(e)&&U[e](t,n,c)});var c;function u(t){t.ad?(e.write(t.ad),e.close(),B({doc:e,bid:i,id:i.adId})):(0,l.HH)(i).then(n=>n(t,{sendMessage:(e,t)=>d(e,t,i),mkFrame:r.createIframe},e.defaultView)).then(()=>B({doc:e,bid:i,id:i.adId}),e=>{s(e?.reason||o.as.EXCEPTION,e?.message),e?.stack&&(0,r.logError)(e)});const n=document.createComment(`Creative ${i.creativeId} served by ${i.bidder} Prebid.js Header Bidding`);(0,r.insertElement)(n,e,"html")}try{t&&e?I(t).then(r=>{i=r,_({renderFn:u,resizeFn:a,adId:t,options:{clickUrl:n?.clickThrough},bidResponse:r,doc:e})}):s(o.as.MISSING_DOC_OR_ADID,"missing "+(t?"doc":"adId"))}catch(e){s(T,e.message)}}function M(){if(!window.frames[o.IY])if(document.body){const e=(0,r.createInvisibleIframe)();e.name=o.IY,document.body.appendChild(e)}else window.requestAnimationFrame(M)}},1933(e,t,n){n.d(t,{$W:()=>h,Ov:()=>l});var r=n(1124),i=n(466),o=n(8928),s=n(6665),a=n(1418);const d="TRUE"===(0,i.getParameterByName)(a.M).toUpperCase(),c={},l="random",u={};u[l]=!0,u.fixed=!0;const g=l,f={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"};function p(e){const t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?{priceGranularity:f.MEDIUM,customPriceBucket:{},mediaTypePriceGranularity:{},bidderSequence:g,auctionOptions:{}}:{};function n(e){return t[e]}function o(n,r){t.hasOwnProperty(n)||Object.defineProperty(e,n,{enumerable:!0}),t[n]=r}const a={publisherDomain:{set(e){null!=e&&(0,i.logWarn)("publisherDomain is deprecated and has no effect since v7 - use pageUrl instead"),o("publisherDomain",e)}},priceGranularity:{set(e){c(e)&&("string"==typeof e?o("priceGranularity",d(e)?e:f.MEDIUM):(0,s.Qd)(e)&&(o("customPriceBucket",e),o("priceGranularity",f.CUSTOM),(0,i.logMessage)("Using custom price granularity")))}},customPriceBucket:{},mediaTypePriceGranularity:{set(e){null!=e&&o("mediaTypePriceGranularity",Object.keys(e).reduce((t,r)=>(c(e[r])?"string"==typeof e?t[r]=d(e[r])?e[r]:n("priceGranularity"):(0,s.Qd)(e)&&(t[r]=e[r],(0,i.logMessage)(`Using custom price granularity for ${r}`)):(0,i.logWarn)(`Invalid price granularity for media type: ${r}`),t),{}))}},bidderSequence:{set(e){u[e]?o("bidderSequence",e):(0,i.logWarn)(`Invalid order: ${e}. Bidder Sequence was not set.`)}},auctionOptions:{set(e){(function(e){if(!(0,s.Qd)(e))return(0,i.logWarn)("Auction Options must be an object"),!1;for(const t of Object.keys(e)){if("secondaryBidders"!==t&&"suppressStaleRender"!==t&&"suppressExpiredRender"!==t)return(0,i.logWarn)(`Auction Options given an incorrect param: ${t}`),!1;if("secondaryBidders"===t){if(!(0,s.cy)(e[t]))return(0,i.logWarn)(`Auction Options ${t} must be of type Array`),!1;if(!e[t].every(s.O8))return(0,i.logWarn)(`Auction Options ${t} must be only string`),!1}else if(("suppressStaleRender"===t||"suppressExpiredRender"===t)&&!(0,s.Lm)(e[t]))return(0,i.logWarn)(`Auction Options ${t} must be of type boolean`),!1}return!0})(e)&&o("auctionOptions",e)}}};return Object.defineProperties(e,Object.fromEntries(Object.entries(a).map(e=>{let[r,i]=e;return[r,Object.assign({get:n.bind(null,r),set:o.bind(null,r),enumerable:t.hasOwnProperty(r),configurable:!t.hasOwnProperty(r)},i)]}))),e;function d(e){return Object.keys(f).find(t=>e===f[t])}function c(e){if(!e)return(0,i.logError)("Prebid Error: no value passed to `setPriceGranularity()`"),!1;if("string"==typeof e)d(e)||(0,i.logWarn)("Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default.");else if((0,s.Qd)(e)&&!(0,r.q)(e))return(0,i.logError)("Invalid custom price value passed to `setPriceGranularity()`"),!1;return!0}}const h=function(){const e=[];let t,n,r,a=null;function l(){t={};const e=p({debug:d,bidderTimeout:3e3,enableSendAllBids:true,useBidCache:false,deviceAccess:true,disableAjaxTimeout:false,maxNestedIframes:10,maxBid:5e3,userSync:{topics:c}});n&&v(Object.keys(n).reduce((t,r)=>(n[r]!==e[r]&&(t[r]=e[r]||{}),t),{})),n=e,r={}}function u(){if(a&&r&&(0,s.Qd)(r[a])){const e=r[a],t=new Set([...Object.keys(n),...Object.keys(e)]),o={};for(const r of t){const t=n[r],a=e[r];o[r]=void 0===a?t:void 0===t?a:(0,s.Qd)(a)?(0,i.mergeDeep)({},t,a):a}return o}return{...n}}const[g,f]=[u,function(){const e=u();return Object.defineProperty(e,"ortb2",{get:function(){throw new Error("invalid access to \'orbt2\' config - use request parameters instead")}}),e}].map(e=>function(){if(arguments.length<=1&&"function"!=typeof(arguments.length<=0?void 0:arguments[0])){const t=arguments.length<=0?void 0:arguments[0];return t?(0,o.A)(e(),t):u()}return y(...arguments)}),[h,m]=[f,g].map(e=>function(){let t=e(...arguments);return t&&"object"==typeof t&&(t=(0,s.Go)(t)),t});function b(e){if(!(0,s.Qd)(e))return void(0,i.logError)("setConfig options must be an object");const r=Object.keys(e),o={};r.forEach(r=>{let a=e[r];(0,s.Qd)(t[r])&&(0,s.Qd)(a)&&(a=Object.assign({},t[r],a));try{o[r]=n[r]=a}catch(e){(0,i.logWarn)(`Cannot set config for property ${r} : `,e)}}),v(o)}function y(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n;if("string"!=typeof t&&(o=t,t="*",r=n||{}),"function"!=typeof o)return void(0,i.logError)("listener must be a function");const s={topic:t,callback:o};return e.push(s),r.init&&o("*"===t?f():{[t]:f(t)}),function(){e.splice(e.indexOf(s),1)}}function v(t){const n=Object.keys(t);e.filter(e=>n.includes(e.topic)).forEach(e=>{e.callback({[e.topic]:t[e.topic]})}),e.filter(e=>"*"===e.topic).forEach(e=>e.callback(t))}function E(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{!function(e){if(!(0,s.Qd)(e))throw new Error("setBidderConfig bidder options must be an object");if(!Array.isArray(e.bidders)||!e.bidders.length)throw new Error("setBidderConfig bidder options must contain a bidders list with at least 1 bidder");if(!(0,s.Qd)(e.config))throw new Error("setBidderConfig bidder options must contain a config object")}(e),e.bidders.forEach(n=>{r[n]||(r[n]=p({},!1)),Object.keys(e.config).forEach(o=>{const a=e.config[o],d=r[n][o];if((0,s.Qd)(a)&&(null==d||(0,s.Qd)(d))){const e=t?i.mergeDeep:Object.assign;r[n][o]=e({},d||{},a)}else r[n][o]=a})})}catch(e){(0,i.logError)(e)}}function A(e,t){a=e;try{return t()}finally{w()}}function w(){a=null}return l(),{getCurrentBidder:function(){return a},resetBidder:w,getConfig:f,getAnyConfig:g,readConfig:h,readAnyConfig:m,setConfig:b,mergeConfig:function(e){if(!(0,s.Qd)(e))return void(0,i.logError)("mergeConfig input must be an object");const t=(0,i.mergeDeep)(u(),e);return b({...t}),t},setDefaults:function(e){(0,s.Qd)(t)?(Object.assign(t,e),Object.assign(n,e)):(0,i.logError)("defaults must be an object")},resetConfig:l,runWithBidder:A,callbackWithBidder:function(e){return function(t){return function(){if("function"==typeof t){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return A(e,t.bind(this,...r))}(0,i.logWarn)("config.callbackWithBidder callback is not a function")}}},setBidderConfig:E,getBidderConfig:function(){return r},mergeBidderConfig:function(e){return E(e,!0)}}}()},2122(e,t,n){n.d(t,{$T:()=>a,Ni:()=>r,OA:()=>o,RO:()=>s,fR:()=>i});const r=1,i=2,o=1,s=500;function a(e){return(e??[]).reduce((e,t)=>{let{event:n,method:r,url:i}=t;const o=e[n]=e[n]??{};return(o[r]=o[r]??[]).push(i),e},{})}},2201(e,t,n){n.d(t,{RD:()=>m,g4:()=>h});var r=n(5808),i=n(7610),o=n(3202),s=n(1933),a=n(2592),d=n(466);const c={fetch:window.fetch.bind(window),makeRequest:(e,t)=>new Request(e,t),timeout(e,t){const n=new AbortController;let r=setTimeout(()=>{n.abort(),(0,d.logError)(`Request timeout after ${e}ms`,t),r=null},e);return{signal:n.signal,done(){r&&clearTimeout(r)}}}},l="GET",u="Content-Type",g=(0,a.A_)("async",function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;return e.withCredentials&&(e.withCredentials=t&&n?(0,o.io)(r.yg,(0,i.s)(t,n)):(0,d.hasDeviceAccess)()),e},"processRequestOptions");function f(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,{request:t,done:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,o=(t,n)=>{let o;null==e||null!=n?.signal||s.$W.getConfig("disableAjaxTimeout")||(o=c.timeout(e,t),n=Object.assign({signal:o.signal},n)),g(n,r,i);let a=c.fetch(t,n);return null!=o?.done&&(a=a.finally(o.done)),a};return null==t&&null==n||(o=(e=>function(r,i){const o=new URL(null==r?.url?r:r.url,document.location).origin;let s=e(r,i);return t&&t(o),n&&(s=s.finally(()=>n(o))),s})(o)),o}function p(e,t){let n,{status:r,statusText:i="",headers:o,url:s}=e;function a(e){if(void 0===n)try{n=(new DOMParser).parseFromString(t,o?.get(u)?.split(";")?.[0])}catch(t){n=null,e&&e(t)}return n}return{readyState:XMLHttpRequest.DONE,status:r,statusText:i,responseText:t,response:t,responseType:"",responseURL:s,get responseXML(){return a(d.logError)},getResponseHeader:e=>o?.has(e)?o.get(e):null,toJSON(){return Object.assign({responseXML:a()},this)},timedOut:!1}}function h(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,{request:t,done:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=f(e,{request:t,done:n},arguments.length>2?arguments[2]:void 0,arguments.length>3?arguments[3]:void 0);return function(e,t,n){!function(e,t){const{success:n,error:r}="object"==typeof t&&null!=t?t:{success:"function"==typeof t?t:()=>null,error:(e,t)=>(0,d.logError)("Network error",e,t)};e.then(e=>e.text().then(t=>[e,t])).then(e=>{let[t,i]=e;const o=p(t,i);t.ok||304===t.status?n(i,o):r(t.statusText,o)},e=>r("",Object.assign(p({status:0},""),{reason:e,timedOut:"AbortError"===e?.name})))}(r(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=n.method||(t?"POST":l);if(r===l&&t){const r=(0,d.parseUrl)(e,n);Object.assign(r.search,t),e=(0,d.buildUrl)(r)}const i=new Headers(n.customHeaders);i.set(u,n.contentType||"text/plain");const o={method:r,headers:i};return r!==l&&t&&(o.body=t),n.withCredentials&&(o.credentials="include"),isSecureContext&&(["browsingTopics","adAuctionHeaders"].forEach(e=>{n[e]&&(o[e]=!0)}),null!=n.suppressTopicsEnrollmentWarning&&(o.suppressTopicsEnrollmentWarning=n.suppressTopicsEnrollmentWarning)),n.keepalive&&(o.keepalive=!0),c.makeRequest(e,o)}(e,n,arguments.length>3&&void 0!==arguments[3]?arguments[3]:{})),t)}}const m=h();f()},2517(e,t,n){n.d(t,{Cf:()=>a,S3:()=>i,Tb:()=>o,WR:()=>s,qN:()=>d,yB:()=>g,zt:()=>r});const r=["request","imp","bidResponse","response"],[i,o,s,a]=r,[d,c]=["default","pbs"],l=new Set(r);const{registerOrtbProcessor:u,getProcessors:g}=function(){const e={};return{registerOrtbProcessor(t){let{type:n,name:i,fn:o,priority:s=0,dialects:a=[d]}=t;if(!l.has(n))throw new Error(`ORTB processor type must be one of: ${r.join(", ")}`);a.forEach(t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(n)||(e[t][n]={}),e[t][n][i]={priority:s,fn:o}})},getProcessors:t=>e[t]||{}}}()},2592(e,t,n){n.d(t,{A_:()=>s,Y6:()=>c,Yn:()=>d,u2:()=>l});var r=n(5481),i=n.n(r),o=n(3064);const s=i()({ready:i().SYNC|i().ASYNC|i().QUEUE}),a=(0,o.v6)();s.ready=(()=>{const e=s.ready;return function(){try{return e.apply(s)}finally{a.resolve()}}})();a.promise;const d=s.get;function c(e,t){return Object.defineProperties(t,Object.fromEntries(["before","after","getHooks","removeAll"].map(t=>[t,{get:()=>e[t]}]))),t}function l(e){return c(e,function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return n.push(function(){}),e.apply(this,n)})}},3064(e,t,n){n.d(t,{U9:()=>i,v6:()=>o});var r=n(1748);(0,r.m)().setTimeout??setTimeout;const i=(0,r.m)().Promise??Promise;function o(){let e,t,{promiseFactory:n=e=>new i(e)}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};function r(e){return t=>e(t)}return{promise:n((n,r)=>{e=n,t=r}),resolve:r(e),reject:r(t)}}},3202(e,t,n){n.d(t,{io:()=>s,qB:()=>o});var r=n(466),i=n(5291);const[o,s]=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,r.prefixLog)("Activity control:");const t={};function n(e){return t[e]=t[e]||[],t[e]}function o(t,n,r,o){let s;try{s=r(o)}catch(r){e.logError(`Exception in rule ${n} for \'${t}\'`,r),s={allow:!1,reason:r}}return s&&Object.assign({activity:t,name:n,component:o[i.Ii]},s)}const s={};function a(t){let{activity:n,name:r,allow:i,reason:o,component:a}=t;const d=`${r} ${i?"allowed":"denied"} \'${n}\' for \'${a}\'${o?":":""}`,c=s.hasOwnProperty(d);if(c&&clearTimeout(s[d]),s[d]=setTimeout(()=>delete s[d],1e3),!c){const t=[d];o&&t.push(o),(i?e.logInfo:e.logWarn).apply(e,t)}}return[function(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;const o=n(e),s=o.findIndex(e=>{let[t]=e;return i<t}),a=[i,t,r];return o.splice(s<0?o.length:s,0,a),function(){const e=o.indexOf(a);e>=0&&o.splice(e,1)}},function(e,t){let r,i;for(const[s,d,c]of n(e)){if(r!==s&&i)break;r=s;const n=o(e,d,c,t);if(n){if(!n.allow)return a(n),!1;i=n}}return i&&a(i),!0}]}()},3320(e,t,n){n.d(t,{O:()=>o});var r=n(466);function i(){let{src:e="client",bidder:t="",bidId:n,transactionId:i,adUnitId:o,auctionId:s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var a=e;Object.assign(this,{bidderCode:t,width:0,height:0,adId:(0,r.getUniqueIdentifierStr)(),requestId:n,transactionId:i,adUnitId:o,auctionId:s,mediaType:"banner",source:a}),this.getSize=function(){return this.width+"x"+this.height}}function o(e){return new i(e)}},3391(e,t,n){n.d(t,{zt:()=>f});var r=n(466),i=n(6665),o=n(1933),s=n(1443),a=n(3202),d=n(5808),c=n(5291),l=n(736),u=n(7610);o.$W.setDefaults({userSync:(0,i.Go)({syncEnabled:!0,filterSettings:{image:{bidders:"*",filter:"include"}},syncsPerBidder:5,syncDelay:3e3,auctionDelay:500})});const g=(0,s.CK)("usersync");const f=function(e){const t={};let n={image:[],iframe:[]};const s=new Set;let a={};const g={image:!0,iframe:!1};let f=e.config;function p(){if(f.syncEnabled&&e.browserSupportsCookies){try{!function(){if(!g.iframe)return;h(n.iframe,e=>{const[t,i]=e;(0,r.logMessage)(`Invoking iframe user sync for bidder: ${t}`),(0,r.insertUserSyncIframe)(i),function(e,t){e.image=e.image.filter(e=>e[0]!==t)}(n,t)})}(),function(){if(!g.image)return;h(n.image,e=>{const[t,n]=e;(0,r.logMessage)(`Invoking image pixel user sync for bidder: ${t}`),(0,r.triggerPixel)(n)})}()}catch(e){return(0,r.logError)("Error firing user syncs",e)}n={image:[],iframe:[]}}}function h(e,t){(0,r.shuffle)(e).forEach(t)}function m(e,t){const n=f.filterSettings;if(function(e,t){if(e.all&&e[t])return(0,r.logWarn)(`Detected presence of the "filterSettings.all" and "filterSettings.${t}" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`),!1;const n=e.all?e.all:e[t],o=e.all?"all":t;if(!n)return!1;const s=n.filter,a=n.bidders;if(s&&"include"!==s&&"exclude"!==s)return(0,r.logWarn)(`UserSync "filterSettings.${o}.filter" setting \'${s}\' is not a valid option; use either \'include\' or \'exclude\'.`),!1;if("*"!==a&&!(Array.isArray(a)&&a.length>0&&a.every(e=>(0,i.O8)(e)&&"*"!==e)))return(0,r.logWarn)(`Detected an invalid setup in userSync "filterSettings.${o}.bidders"; use either \'*\' (to represent all bidders) or an array of bidders.`),!1;return!0}(n,e)){g[e]=!0;const r=n.all?n.all:n[e],i="*"===r.bidders?[t]:r.bidders,o={include:(e,t)=>!e.includes(t),exclude:(e,t)=>e.includes(t)};return o[r.filter||"include"](i,t)}return!g[e]}return o.$W.getConfig("userSync",e=>{if(e.userSync){const t=e.userSync.filterSettings;(0,i.Qd)(t)&&(t.image||t.all||(e.userSync.filterSettings.image={bidders:"*",filter:"include"}))}f=Object.assign(f,e.userSync)}),e.regRule(d.Ml,"userSync config",e=>{if(!f.syncEnabled)return{allow:!1,reason:"syncs are disabled"};if(e[c.Dk]===l.tW){const n=e[c.bt],r=e[c.iK];if(!t.canBidderRegisterSync(n,r))return{allow:!1,reason:`${n} syncs are not enabled for ${r}`}}}),t.registerSync=(t,o,g)=>s.has(o)?(0,r.logMessage)(`already fired syncs for "${o}", ignoring registerSync call`):f.syncEnabled&&(0,i.cy)(n[t])?o?0!==f.syncsPerBidder&&Number(a[o])>=f.syncsPerBidder?(0,r.logWarn)(`Number of user syncs exceeded for "${o}"`):void(e.isAllowed(d.Ml,(0,u.s)(l.tW,o,{[c.bt]:t,[c.e3]:g}))&&(n[t].push([o,g]),a=function(e,t){return e[t]?e[t]+=1:e[t]=1,e}(a,o))):(0,r.logWarn)("Bidder is required for registering sync"):(0,r.logWarn)(`User sync type "${t}" not supported`),t.bidderDone=s.add.bind(s),t.syncUsers=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(e)return setTimeout(p,Number(e));p()},t.triggerUserSyncs=()=>{f.enableOverride&&t.syncUsers()},t.canBidderRegisterSync=(e,t)=>!f.filterSettings||!m(e,t),t}(Object.defineProperties({config:o.$W.getConfig("userSync"),isAllowed:a.io,regRule:a.qB},{browserSupportsCookies:{get:function(){return!(0,r.isSafariBrowser)()&&g.cookiesAreEnabled()}}}))},3448(e,t,n){function r(e){return!e?.gdprApplies||!0===e?.vendorData?.purpose?.consents?.[1]}n.d(t,{C:()=>r})},3556(e,t,n){n.d(t,{xb:()=>C,a$:()=>T});var r=n(8668),i=n(1933),o=n(3320),s=n(3391),a=n(356),d=n(6220),c=n(1418),l=n(8014),u=n(6665),g=n(466),f=n(2592),p=n(4123),h=n(7156),m=n(7841),b=n(3202),y=n(7610),v=n(736),E=n(5808);const A=["cpm","ttl","creativeId","netRevenue","currency"],w={auctionId:e=>e.ortb2?.source?.tid,transactionId:e=>e.ortb2Imp?.ext?.tid};function T(e){const t=Array.isArray(e.supportedMediaTypes)?{supportedMediaTypes:e.supportedMediaTypes}:void 0;function n(e){const n=C(e);r.Ay.registerBidAdapter(n,e.code,t)}n(e),Array.isArray(e.aliases)&&e.aliases.forEach(t=>{let i,o,s=t;(0,u.Qd)(t)&&(s=t.code,i=t.gvlid,o=t.skipPbsAliasing),r.Ay.aliasRegistry[s]=e.code,n(Object.assign({},e,{code:s,gvlid:i,skipPbsAliasing:o}))})}const I=(0,g.memoize)(e=>{let{bidderCode:t}=e;const n=(0,b.io)(E.VJ,(0,y.s)(v.tW,t));function r(e,t,r){return w.hasOwnProperty(t)?n?w[t](e):null:Reflect.get(e,t,r)}function i(e,t){const n=new Proxy(e,t);return Object.entries(e).filter(e=>{let[t,n]=e;return"function"==typeof n}).forEach(t=>{let[r,i]=t;n[r]=i.bind(e)}),n}const o=(0,g.memoize)(e=>i(e,{get:r}),e=>e.bidId);return{bidRequest:o,bidderRequest:e=>i(e,{get:(t,n,i)=>"bids"===n?e.bids.map(o):r(t,n,i)})}});function C(e){return Object.assign((t=e.code,n=t,{callBids:function(){},setBidderCode:function(e){n=e},getBidderCode:function(){return n}}),{getSpec:function(){return Object.freeze(Object.assign({},e))},registerSyncs:s,callBids:function(t,n,f,b,y,v){if(!Array.isArray(t.bids))return;const E=I(t),T={};function C(e,t){const r=(0,m.BO)(t.metrics);r.checkpoint("addBidResponse"),T[e]=!0,r.measureTime("addBidResponse.validate",()=>function(e,t){let{index:n=p.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function r(){const e=Object.keys(t);return A.every(n=>e.includes(n)&&![void 0,null].includes(t[n]))}function i(e){return`Invalid bid from ${t.bidderCode}. Ignoring bid: ${e}`}if(!e)return(0,g.logWarn)("No adUnitCode was supplied to addBidResponse."),!1;if(!t)return(0,g.logWarn)(`Some adapter tried to add an undefined bid for ${e}.`),!1;if(!r())return(0,g.logError)(i(`Bidder ${t.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`)),!1;if("native"===t.mediaType&&!(0,a.Bm)(t,{index:n}))return(0,g.logError)(i("Native bid missing some required properties.")),!1;if("video"===t.mediaType&&!(0,d.vk)(t,{index:n}))return(0,g.logError)(i("Video bid does not have required vastUrl or renderer property")),!1;if("banner"===t.mediaType&&!function(e,t){let{index:n=p.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((t.width||0===parseInt(t.width,10))&&(t.height||0===parseInt(t.height,10)))return t.width=parseInt(t.width,10),t.height=parseInt(t.height,10),!0;if(null!=t.wratio&&null!=t.hratio)return t.wratio=parseInt(t.wratio,10),t.hratio=parseInt(t.hratio,10),!0;const r=n.getBidRequest(t),i=n.getMediaTypes(t),o=r&&r.sizes||i&&i.banner&&i.banner.sizes,s=(0,g.parseSizesInput)(o);if(1===s.length){const[e,n]=s[0].split("x");return t.width=parseInt(e,10),t.height=parseInt(n,10),!0}return!1}(e,t,{index:n}))return(0,g.logError)(i("Banner bids require a width and height")),!1;return!0}(e,t))?n(e,t):n.reject(e,t,c.Tf.INVALID)}const S=[];function O(){f(),i.$W.runWithBidder(e.code,()=>{l.Ic(c.qY.BIDDER_DONE,t),s(S,t.gdprConsent,t.uspConsent,t.gppConsent)})}const k=U(t).measureTime("validate",()=>t.bids.filter(t=>function(t){if(!e.isBidRequestValid(t))return(0,g.logWarn)(`Invalid bid sent to bidder ${e.code}: ${JSON.stringify(t)}`),!1;return!0}(E.bidRequest(t))));if(0===k.length)return void O();const D={};k.forEach(e=>{D[e.bidId]=e}),B(e,k,t,b,v,{onRequest:e=>l.Ic(c.qY.BEFORE_BIDDER_HTTP,t,e),onResponse:t=>{y(e.code),S.push(t)},onPaapi:e=>{const t=D[e.bidId];t?R(t,e):(0,g.logWarn)("Received fledge auction configuration for an unknown bidId",e)},onError:(n,i)=>{i.timedOut||y(e.code),r.Ay.callBidderError(e.code,i,t),l.Ic(c.qY.BIDDER_ERROR,{error:i,bidderRequest:t}),(0,g.logError)(`Server call for ${e.code} failed: ${n} ${i.status}. Continuing without bids.`,{bidRequests:k})},onBid:t=>{const r=D[t.requestId],i=t;if(r){if(i.adapterCode=r.bidder,function(e,t){const n=h.u.get(t,"allowAlternateBidderCodes")||!1;let r=h.u.get(t,"allowedAlternateBidderCodes");if(e&&t&&t!==e&&(r=(0,u.cy)(r)?r.map(e=>e.trim().toLowerCase()).filter(e=>!!e).filter(g.uniques):r,!n||(0,u.cy)(r)&&"*"!==r[0]&&!r.includes(e)))return!0;return!1}(t.bidderCode,r.bidder))return(0,g.logWarn)(`${t.bidderCode} is not a registered partner or known bidder of ${r.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`),void n.reject(r.adUnitCode,t,c.Tf.BIDDER_DISALLOWED);i.originalCpm=t.cpm,i.originalCurrency=t.currency,i.meta=t.meta||Object.assign({},t[r.bidder]),i.deferBilling=r.deferBilling,i.deferRendering=i.deferBilling&&(t.deferRendering??"function"!=typeof e.onBidBillable);const s=Object.assign((0,o.O)(r),i,(0,g.pick)(r,Object.keys(w)));C(r.adUnitCode,s)}else(0,g.logWarn)(`Bidder ${e.code} made bid for unknown request ID: ${t.requestId}. Ignoring.`),n.reject(null,t,c.Tf.INVALID_REQUEST_ID)},onCompletion:O})}});var t,n;function s(t,n,r,i){O(e,t,n,r,i)}}const S=["bids","paapi"],B=(0,f.A_)("async",function(e,t,n,r,i,o){let{onRequest:s,onResponse:a,onPaapi:d,onError:l,onBid:f,onCompletion:p}=o;const m=U(n);p=m.startTiming("total").stopBefore(p);const A=I(n);let w=m.measureTime("buildRequests",()=>e.buildRequests(t.map(A.bidRequest),A.bidderRequest(n)));if(Array.isArray(w)||(w=[w]),!w||0===w.length)return void p();const T=(0,g.delayExecution)(p,w.length);w.forEach(t=>{const n=m.fork();function o(e){null!=e&&(e.metrics=n.fork().renameWith()),f(e)}const p=i(function(r,i){w();try{r=JSON.parse(r)}catch(e){}r={body:r,headers:{get:i.getResponseHeader.bind(i)}},a(r);try{r=n.measureTime("interpretResponse",()=>e.interpretResponse(r,t))}catch(t){return(0,g.logError)(`Bidder ${e.code} failed to interpret the server\'s response. Continuing without bids`,null,t),void T()}let s,c;r&&!Object.keys(r).some(e=>!S.includes(e))?(s=r.bids,c=r.paapi):s=r,(0,u.cy)(c)&&c.forEach(d),s&&((0,u.cy)(s)?s.forEach(o):o(s)),T()}),A=i(function(e,t){w(),l(e,t),T()});s(t);const w=n.startTiming("net"),I="TRUE"===(0,g.getParameterByName)(c.M).toUpperCase()||(0,g.debugTurnedOn)();function C(n){const r=t.options;return Object.assign(n,r,{browsingTopics:!(r?.hasOwnProperty("browsingTopics")&&!r.browsingTopics)&&((h.u.get(e.code,"topicsHeader")??!0)&&(0,b.io)(E.DL,(0,y.s)(v.tW,e.code))),suppressTopicsEnrollmentWarning:r?.hasOwnProperty("suppressTopicsEnrollmentWarning")?r.suppressTopicsEnrollmentWarning:!I})}switch(t.method){case"GET":r(`${t.url}${function(e){if(e)return`?${"object"==typeof e?(0,g.parseQueryStringParameters)(e):e}`;return""}(t.data)}`,{success:p,error:A},void 0,C({method:"GET",withCredentials:!0}));break;case"POST":const n=t.options?.endpointCompression,i=e=>{let{url:t,payload:n}=e;r(t,{success:p,error:A},n,C({method:"POST",contentType:"text/plain",withCredentials:!0}))};n&&I&&(0,g.logWarn)(`Skipping GZIP compression for ${e.code} as debug mode is enabled`),n&&!I&&(0,g.isGzipCompressionSupported)()?(0,g.compressDataWithGZip)(t.data).then(e=>{const n=new URL(t.url,window.location.origin);n.searchParams.has("gzip")||n.searchParams.set("gzip","1"),i({url:n.href,payload:e})}):i({url:t.url,payload:"string"==typeof t.data?t.data:JSON.stringify(t.data)});break;default:(0,g.logWarn)(`Skipping invalid request from ${e.code}. Request type ${t.method} must be GET or POST`),T()}})},"processBidderRequests"),O=(0,f.A_)("async",function(e,t,n,o,a){const d=i.$W.getConfig("userSync.aliasSyncEnabled");if(e.getUserSyncs&&(d||!r.Ay.aliasRegistry[e.code])){let r=e.getUserSyncs({iframeEnabled:s.zt.canBidderRegisterSync("iframe",e.code),pixelEnabled:s.zt.canBidderRegisterSync("image",e.code)},t,n,o,a);r&&(Array.isArray(r)||(r=[r]),r.forEach(t=>{s.zt.registerSync(t.type,e.code,t.url)}),s.zt.bidderDone(e.code))}},"registerSyncs"),R=(0,f.A_)("sync",(e,t)=>{},"addPaapiConfig");function U(e){return(0,m.BO)(e.metrics).renameWith(t=>[`adapter.client.${t}`,`adapters.client.${e.bidderCode}.${t}`])}},4123(e,t,n){n.d(t,{n:()=>Z});var r=n(466),i=n(6665),o=n(1124),s=n(356),a=n(2201),d=n(1933);const c=new Map;function l(e){return e.vastXml?e.vastXml:(t=e.vastUrl,n=e.vastImpUrl,`<VAST version="3.0">\\n <Ad>\\n <Wrapper>\\n <AdSystem>prebid.org wrapper</AdSystem>\\n <VASTAdTagURI><![CDATA[${t}]]></VASTAdTagURI>\\n ${(n=n&&(Array.isArray(n)?n:[n]))?n.map(e=>`<Impression><![CDATA[${e}]]></Impression>`).join(""):""}\\n <Creatives></Creatives>\\n </Wrapper>\\n </Ad>\\n </VAST>`);var t,n}const u=(e,t,n)=>{e.videoCacheKey=n||(0,r.generateUUID)(),e.vastUrl||(e.vastUrl=t)},g={store:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.g4;const r={puts:e.map(e=>function(e){let{index:t=Z.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=l(e),r=t.getAuction(e),i={type:"xml",value:n,ttlseconds:Number(e.ttl)+15};return d.$W.getConfig("cache.vasttrack")&&(i.bidder=e.bidder,i.bidid=e.requestId,i.aid=e.auctionId),null!=r&&(i.timestamp=r.getAuctionStart()),"string"==typeof e.customCacheKey&&""!==e.customCacheKey&&(i.key=e.customCacheKey),i}(e))};n(d.$W.getConfig("cache.timeout"))(d.$W.getConfig("cache.url"),function(e){return{success:function(t){let n;try{n=JSON.parse(t).responses}catch(t){return void e(t,[])}n?e(null,n):e(new Error("The cache server didn\'t respond with a responses property."),[])},error:function(t,n){e(new Error(`Error storing video ad in the cache: ${t}: ${JSON.stringify(n)}`),[])}}}(t),JSON.stringify(r),{contentType:"text/plain",withCredentials:!0})}};function f(e){const t=e.map(e=>e.bidResponse);g.store(t,function(n,i){var o;n?(o=n,(0,r.logError)(`Failed to save to the video cache: ${o}. Video bids will be discarded:`,t)):e.length!==i.length?(0,r.logError)(`expected ${e.length} cache IDs, got ${i.length} instead`):i.forEach((t,n)=>{const{auctionInstance:i,bidResponse:o,afterBidAdded:s}=e[n];var a;""===t.uuid?(0,r.logWarn)("Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded."):(u(o,(a=t.uuid,`${d.$W.getConfig("cache.url")}?uuid=${a}`),t.uuid),L(i,o),s())})})}let p,h,m;d.$W.getConfig("cache",e=>{let{cache:t}=e;p="number"==typeof t.batchSize&&t.batchSize>0?t.batchSize:1,h="number"==typeof t.batchTimeout&&t.batchTimeout>0?t.batchTimeout:0,t.useLocal&&!m&&(m=Z.onExpiry(e=>{e.getBidsReceived().forEach(e=>{const t=c.get(e.videoCacheKey);t&&t.startsWith("blob")&&URL.revokeObjectURL(t),c.delete(e.videoCacheKey)})}))});const b=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:setTimeout,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f,n=[[]],r=!1;const i=e=>e();return function(o,s,a){const d=h>0?e:i;n[n.length-1].length>=p&&n.push([]),n[n.length-1].push({auctionInstance:o,bidResponse:s,afterBidAdded:a}),r||(r=!0,d(()=>{n.forEach(t),n=[[]],r=!1},h))}}();var y=n(7464),v=n(3391),E=n(2592),A=n(6220),w=n(9794),T=n(7156),I=n(8014),C=n(8668),S=n(1418),B=n(3064),O=n(7841);var R=n(1748),U=n(939),k=n(5482);const{syncUsers:D}=v.zt,_="completed";I.on(S.qY.BID_ADJUSTMENT,function(e){!function(e){const t=function(e,t,n){let{index:i=Z.index,bs:o=T.u}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};n=n||i.getBidRequest(t);const s=t?.adapterCode,a=t?.bidderCode||n?.bidder,d=o.get(t?.adapterCode,"adjustAlternateBids"),c=o.getOwn(a,"bidCpmAdjustment")||o.get(d?s:a,"bidCpmAdjustment");if(c&&"function"==typeof c)try{return c(e,Object.assign({},t),n)}catch(e){(0,r.logError)("Error during bid adjustment",e)}return e}(e.cpm,e);t>=0&&(e.cpm=t)}(e)});const $={},q={},x=[],W=(0,R.m)();const j=(0,E.A_)("sync",e=>{});function N(e){let{adUnits:t,adUnitCodes:n,callback:i,cbTimeout:a,labels:g,auctionId:f,ortb2Fragments:p,metrics:h}=e;h=(0,O.BO)(h);const m=t,b=g,v=n,E=f||(0,r.generateUUID)(),T=a,R=new Set,N=(0,B.v6)(),V=(0,B.v6)();let Q=[],J=i,K=[];const X=(0,U.H)({startTime:e=>e.responseTimestamp,ttl:e=>null==(0,k.S9)()?null:1e3*Math.max((0,k.S9)(),e.ttl)});let ee,te,ne,re,ie=[],oe=[],se=[];function ae(){return{auctionId:E,timestamp:ee,auctionEnd:te,auctionStatus:re,adUnits:m,adUnitCodes:v,labels:b,bidderRequests:K,noBids:ie,bidsReceived:X.toArray(),bidsRejected:Q,winningBids:oe,timeout:T,metrics:h,seatNonBids:se}}function de(e){if(e?I.Ic(S.qY.AUCTION_TIMEOUT,ae()):clearTimeout(ne),void 0===te){let n=[];e&&((0,r.logMessage)(`Auction ${E} timedOut`),n=K.filter(e=>!R.has(e.bidderRequestId)).flatMap(e=>e.bids),n.length&&I.Ic(S.qY.BID_TIMEOUT,n)),re=_,te=Date.now(),h.checkpoint("auctionEnd"),h.timeBetween("requestBids","auctionEnd","requestBids.total"),h.timeBetween("callBids","auctionEnd","requestBids.callBids"),N.resolve(),I.Ic(S.qY.AUCTION_END,ae()),G(m,function(){try{if(null!=J){const t=X.toArray().filter(e=>v.includes(e.adUnitCode)).reduce(Y,{});J.apply(W,[t,e,E]),J=null}}catch(e){(0,r.logError)("Error executing bidsBackHandler",null,e)}finally{n.length&&C.Ay.callTimedOutBidders(t,n,T);const e=d.$W.getConfig("userSync")??{};e.enableOverride||D(e.syncDelay)}})}}function ce(){d.$W.resetBidder(),(0,r.logInfo)(`Bids Received for Auction with id: ${E}`,X.toArray()),re=_,de(!1)}function le(e){R.add(e)}function ue(e){e.forEach(e=>{var t;t=e,K=K.concat(t)});const t={},n={bidRequests:e,run:()=>{j(this),ne=setTimeout(()=>de(!0),T),re="inProgress",I.Ic(S.qY.AUCTION_INIT,ae());const n=function(e,t){let{index:n=Z.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=0,a=!1;const g=new Set,f={};function p(){i--,a&&0===i&&e()}function h(e,t,n){return f[t.requestId]=!0,function(e,t){let{index:n=Z.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=n.getBidderRequest(e),o=n.getAdUnit(e),s=i&&i.start||e.requestTimestamp;Object.assign(e,{responseTimestamp:e.responseTimestamp||(0,r.timestamp)(),requestTimestamp:e.requestTimestamp||s,cpm:parseFloat(e.cpm)||0,bidder:e.bidder||e.bidderCode,adUnitCode:t}),null!=o?.ttlBuffer&&(e.ttlBuffer=o.ttlBuffer);e.timeToRespond=e.responseTimestamp-e.requestTimestamp}(t,e),i++,n(p)}function m(e,i){h(e,i,e=>{const a=function(e){let{index:t=Z.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};I.Ic(S.qY.BID_ADJUSTMENT,e);const n=t.getAdUnit(e);e.instl=1===n?.ortb2Imp?.instl;const r=t.getBidRequest(e)?.renderer||n.renderer,i=e.mediaType,s=t.getMediaTypes(e),a=s&&s[i];var c=a&&a.renderer,l=null;!c||!c.render||!0===c.backupOnly&&e.renderer?!r||!r.render||!0===r.backupOnly&&e.renderer||(l=r):l=c;l&&(e.renderer=y.A4.install({url:l.url,config:l.options,renderNow:null==l.url}),e.renderer.setRender(l.render));const u=H(e.mediaType,s,d.$W.getConfig("mediaTypePriceGranularity")),g=(0,o.j)(e.cpm,"object"==typeof u?u:d.$W.getConfig("customPriceBucket"),d.$W.getConfig("currency.granularityMultiplier"));return e.pbLg=g.low,e.pbMg=g.med,e.pbHg=g.high,e.pbAg=g.auto,e.pbDg=g.dense,e.pbCg=g.custom,e}(i);I.Ic(S.qY.BID_ACCEPTED,a),a.mediaType===w.G_||a.mediaType===w.FY?function(e,t,n){let{index:i=Z.index}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=!0;const s=i.getMediaTypes({requestId:t.originalRequestId||t.requestId,adUnitId:t.adUnitId})?.video,a=s&&s?.context,g=s&&s?.useCacheKey,{useLocal:f,url:p,ignoreBidderCacheKey:h}=d.$W.getConfig("cache")||{};f?(e=>{const t=l(e),n=URL.createObjectURL(new Blob([t],{type:"text/xml"}));u(e,n),c.set(e.videoCacheKey,n)})(t):p&&(g||a!==A.H6)&&(!t.videoCacheKey||h?(o=!1,z(e,t,n,s)):t.vastUrl||((0,r.logError)("videoCacheKey specified but not required vastUrl for video bid"),o=!1));o&&(L(e,t),n())}(t,a,e):((0,s.l6)(a)&&(0,s.gs)(a,n.getAdUnit(a)),L(t,a),e())})}function b(e,n,i){return h(e,n,e=>{n.rejectionReason=i,(0,r.logWarn)(`Bid from ${n.bidder||"unknown bidder"} was rejected: ${i}`,n),I.Ic(S.qY.BID_REJECTED,n),t.addBidRejected(n),e()})}function v(){const n=this;let o=t.getBidRequests();const s=d.$W.getConfig("auctionOptions");if(g.add(n),s&&!(0,r.isEmpty)(s)){const e=s.secondaryBidders;e&&!o.every(t=>e.includes(t.bidderCode))&&(o=o.filter(t=>!e.includes(t.bidderCode)))}a=o.every(e=>g.has(e)),n.bids.forEach(e=>{f[e.bidId]||(t.addNoBid(e),I.Ic(S.qY.NO_BID,e))}),a&&0===i&&e()}return{addBidResponse:function(){function e(e,t){P.call({dispatch:m},e,t,(()=>{let n=!1;return r=>{n||(b(e,t,r),n=!0)}})())}return e.reject=b,e}(),adapterDone:function(){M(B.U9.resolve()).finally(()=>v.call(this))}}}(ce,this);C.Ay.callBids(m,e,n.addBidResponse,n.adapterDone,{request(e,n){a($,n),a(t,e),q[e]||(q[e]={SRA:!0,origin:n}),t[e]>1&&(q[e].SRA=!1)},done(e){$[e]--,x[0]&&i(x[0])&&x.shift()}},T,le,p),V.resolve()}};function i(e){let t=!0;const n=d.$W.getConfig("maxRequestsPerOrigin")||4;return e.bidRequests.some(e=>{let r=1;const i=void 0!==e.src&&e.src===S.RW.SRC?"s2s":e.bidderCode;return q[i]&&(!1===q[i].SRA&&(r=Math.min(e.bids.length,n)),$[q[i].origin]+r>n&&(t=!1)),!t}),t&&e.run(),t}function a(e,t){void 0===e[t]?e[t]=1:e[t]++}i(n)||((0,r.logWarn)("queueing auction due to limited endpoint capacity"),x.push(n))}return(0,k.lc)(()=>X.refresh()),I.on(S.qY.SEAT_NON_BID,e=>{var t;e.auctionId===E&&(t=e.seatnonbid,se=se.concat(t))}),{addBidReceived:function(e){X.add(e)},addBidRejected:function(e){Q=Q.concat(e)},addNoBid:function(e){ie=ie.concat(e)},callBids:function(){re="started",ee=Date.now();const e=h.measureTime("requestBids.makeRequests",()=>C.Ay.makeBidRequests(m,ee,E,T,b,p,h));(0,r.logInfo)(`Bids Requested for Auction with id: ${E}`,e),h.checkpoint("callBids"),e.length<1?((0,r.logWarn)("No valid bid requests returned for auction"),ce()):F.call({dispatch:ue,context:this},e)},addWinningBid:function(e){oe=oe.concat(e),C.Ay.callBidWonBidder(e.adapterCode||e.bidder,e,t),e.deferBilling||C.Ay.triggerBilling(e)},setBidTargeting:function(e){C.Ay.callSetTargetingBidder(e.adapterCode||e.bidder,e)},getWinningBids:()=>oe,getAuctionStart:()=>ee,getAuctionEnd:()=>te,getTimeout:()=>T,getAuctionId:()=>E,getAuctionStatus:()=>re,getAdUnits:()=>m,getAdUnitCodes:()=>v,getBidRequests:()=>K,getBidsReceived:()=>X.toArray(),getNoBids:()=>ie,getNonBids:()=>se,getFPD:()=>p,getMetrics:()=>h,end:N.promise,requestsDone:V.promise,getProperties:ae}}const P=(0,E.u2)((0,E.A_)("async",function(e,t,n){!function(e){const t=d.$W.getConfig("maxBid");return!t||!e.cpm||t>=Number(e.cpm)}(t)?n(S.Tf.PRICE_TOO_HIGH):this.dispatch.call(null,e,t)},"addBidResponse")),M=(0,E.A_)("sync",e=>e,"responsesReady"),F=(0,E.A_)("sync",function(e){this.dispatch.call(this.context,e)},"addBidderRequests"),G=(0,E.A_)("async",function(e,t){t&&t()},"bidsBackCallback");function L(e,t){!function(e){let t;const n=!0===T.u.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0;e.bidderCode&&(n||e.dealId)&&(t=function(e,t){let{index:n=Z.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return{};const r=n.getBidRequest(t);var i={};const o=J(t.mediaType,e);K(i,o,t,r),e&&T.u.getOwn(e,S.iD.ADSERVER_TARGETING)&&(K(i,T.u.ownSettingsFor(e),t,r),t.sendStandardTargeting=T.u.get(e,"sendStandardTargeting"));return i}(e.bidderCode,e));e.adserverTargeting=Object.assign(e.adserverTargeting||{},t)}(t),(0,O.BO)(t.metrics).timeSince("addBidResponse","addBidResponse.total"),e.addBidReceived(t),I.Ic(S.qY.BID_RESPONSE,t)}const z=(0,E.A_)("async",function(e,t,n,r){b(e,t,n)},"callPrebidCache");function H(e,t,n){if(e&&n){if(e===w.G_){const e=t?.[w.G_]?.context??"instream";if(n[`${w.G_}-${e}`])return n[`${w.G_}-${e}`]}return n[e]}}const V=e=>t=>{const n=e||function(e){let{index:t=Z.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=H(e.mediaType,t.getMediaTypes(e),d.$W.getConfig("mediaTypePriceGranularity"));return"string"==typeof e.mediaType&&n?"string"==typeof n?n:"custom":d.$W.getConfig("priceGranularity")}(t);return n===S.UE.AUTO?t.pbAg:n===S.UE.DENSE?t.pbDg:n===S.UE.LOW?t.pbLg:n===S.UE.MEDIUM?t.pbMg:n===S.UE.HIGH?t.pbHg:n===S.UE.CUSTOM?t.pbCg:void 0};function Q(e,t){return{key:e,val:"function"==typeof t?function(e,n){return t(e,n)}:function(e){return e[t]}}}function J(e,t){const n=Object.assign({},T.u.settingsFor(null));if(n[S.iD.ADSERVER_TARGETING]||(n[S.iD.ADSERVER_TARGETING]=[Q(S.xS.BIDDER,"bidderCode"),Q(S.xS.AD_ID,"adId"),Q(S.xS.PRICE_BUCKET,V()),Q(S.xS.SIZE,"size"),Q(S.xS.DEAL,"dealId"),Q(S.xS.SOURCE,"source"),Q(S.xS.FORMAT,"mediaType"),Q(S.xS.ADOMAIN,e=>e.meta&&e.meta.advertiserDomains&&e.meta.advertiserDomains.length>0?[e.meta.advertiserDomains].flat()[0]:""),Q(S.xS.ACAT,e=>{const t=e?.meta?.primaryCatId;return Array.isArray(t)?t[0]||"":t||""}),Q(S.xS.DSP,e=>e.meta&&(e.meta.networkId||e.meta.networkName)?e?.meta?.networkName||e?.meta?.networkId:""),Q(S.xS.CRID,e=>e.creativeId?e.creativeId:"")]),"video"===e){const e=n[S.iD.ADSERVER_TARGETING].slice();if(n[S.iD.ADSERVER_TARGETING]=e,[S.xS.UUID,S.xS.CACHE_ID].forEach(t=>{void 0===e.find(e=>e.key===t)&&e.push(Q(t,"videoCacheKey"))}),d.$W.getConfig("cache.url")&&(!t||!1!==T.u.get(t,"sendStandardTargeting"))){const t=(0,r.parseUrl)(d.$W.getConfig("cache.url"));void 0===e.find(e=>e.key===S.xS.CACHE_HOST)&&e.push(Q(S.xS.CACHE_HOST,function(e){return e?.adserverTargeting?.[S.xS.CACHE_HOST]||t.hostname}))}}return n}function K(e,t,n,o){var s=t[S.iD.ADSERVER_TARGETING];return n.size=n.getSize(),(s||[]).forEach(function(s){var a=s.key,d=s.val;if(e[a]&&(0,r.logWarn)("The key: "+a+" is being overwritten"),(0,i.fp)(d))try{d=d(n,o)}catch(e){(0,r.logError)("bidmanager","ERROR",e)}(void 0===t.suppressEmptyKeys||!0!==t.suppressEmptyKeys)&&a!==S.xS.DEAL&&a!==S.xS.ACAT&&a!==S.xS.DSP&&a!==S.xS.CRID||!(0,r.isEmptyStr)(d)&&null!=d?e[a]=d:(0,r.logInfo)("suppressing empty key \'"+a+"\' from adserver targeting")}),e}function Y(e,t){return e[t.adUnitCode]||(e[t.adUnitCode]={bids:[]}),e[t.adUnitCode].bids.push(t),e}function X(e){Object.assign(this,{getAuction(t){let{auctionId:n}=t;if(null!=n)return e().find(e=>e.getAuctionId()===n)},getAdUnit(t){let{adUnitId:n}=t;if(null!=n)return e().flatMap(e=>e.getAdUnits()).find(e=>e.adUnitId===n)},getMediaTypes(e){let{adUnitId:t,requestId:n}=e;if(null!=n){const e=this.getBidRequest({requestId:n});if(null!=e&&(null==t||e.adUnitId===t))return e.mediaTypes}else if(null!=t){const e=this.getAdUnit({adUnitId:t});if(null!=e)return e.mediaTypes}},getBidderRequest(t){let{requestId:n,bidderRequestId:r}=t;if(null!=n||null!=r){let t=e().flatMap(e=>e.getBidRequests());return null!=r&&(t=t.filter(e=>e.bidderRequestId===r)),null==n?t[0]:t.find(e=>e.bids&&null!=e.bids.find(e=>e.bidId===n))}},getBidRequest(t){let{requestId:n}=t;if(null!=n)return e().flatMap(e=>e.getBidRequests()).flatMap(e=>e.bids).find(e=>e&&e.bidId===n)},getOrtb2(e){return this.getBidderRequest(e)?.ortb2||this.getAuction(e)?.getFPD()?.global?.ortb2}})}const Z=function(){const e=(0,U.H)({startTime:e=>e.end.then(()=>e.getAuctionEnd()),ttl:e=>null==(0,k.S9)()?null:e.end.then(()=>1e3*Math.max((0,k.S9)(),...e.getBidsReceived().map(e=>e.ttl)))});(0,k.lc)(()=>e.refresh());const t={onExpiry:e.onExpiry};function n(t){for(const n of e)if(n.getAuctionId()===t)return n}function i(){return e.toArray().flatMap(e=>e.getBidsReceived())}return t.addWinningBid=function(e){const t=(0,O.BO)(e.metrics);t.checkpoint("bidWon"),t.timeBetween("auctionEnd","bidWon","adserver.pending"),t.timeBetween("requestBids","bidWon","adserver.e2e");const i=n(e.auctionId);i?i.addWinningBid(e):(0,r.logWarn)("Auction not found when adding winning bid")},Object.entries({getAllWinningBids:{name:"getWinningBids"},getBidsRequested:{name:"getBidRequests"},getNoBids:{},getAdUnits:{},getBidsReceived:{pre:e=>e.getAuctionStatus()===_},getAdUnitCodes:{post:r.uniques}}).forEach(n=>{let[r,{name:i=r,pre:o,post:s}]=n;const a=null==o?e=>e[i]():e=>o(e)?e[i]():[],d=null==s?e=>e:e=>e.filter(s);t[r]=()=>d(e.toArray().flatMap(a))}),t.getAllBidsForAdUnitCode=function(e){return i().filter(t=>t&&t.adUnitCode===e)},t.createAuction=function(t){const n=N(t);return function(t){e.add(t)}(n),n},t.findBidByAdId=function(e){return i().find(t=>t.adId===e)},t.getStandardBidderAdServerTargeting=function(){return J()[S.iD.ADSERVER_TARGETING]},t.setStatusForBids=function(e,r){const i=t.findBidByAdId(e);if(i&&(i.status=r),i&&r===S.tl.BID_TARGETING_SET){const e=n(i.auctionId);e&&e.setBidTargeting(i)}},t.getLastAuctionId=function(){const t=e.toArray();return t.length&&t[t.length-1].getAuctionId()},t.clearAllAuctions=function(){e.clear()},t.index=new X(()=>e.toArray()),t}()},5049(e,t,n){n.d(t,{R:()=>c});var r=n(5808),i=n(7610),o=n(3202),s=n(466);const a=new WeakMap,d=["debugging","outstream","aaxBlockmeter","adagio","adloox","arcspan","airgrid","browsi","brandmetrics","clean.io","humansecurityMalvDefense","humansecurity","confiant","contxtful","hadron","mediafilter","medianet","azerionedge","a1Media","geoedge","qortex","dynamicAdBoost","51Degrees","symitridap","wurfl","nodalsAi","anonymised","optable","justtag","tncId","ftrackId","id5"];function c(e,t,n,c,l,u){if(!(0,o.io)(r.pY,(0,i.s)(t,n)))return;if(!n||!e)return void(0,s.logError)("cannot load external script without url and moduleCode");if(!d.includes(n))return void(0,s.logError)(`${n} not whitelisted for loading external JavaScript`);l||(l=document);const g=h(l,e);if(g)return c&&"function"==typeof c&&(g.loaded?c():g.callbacks.push(c)),g.tag;const f=a.get(l)||{},p={loaded:!1,tag:null,callbacks:[]};return f[e]=p,a.set(l,f),c&&"function"==typeof c&&p.callbacks.push(c),(0,s.logWarn)(`module ${n} is loading external JavaScript`),function(t,n,r,i){r||(r=document);var o=r.createElement("script");o.type="text/javascript",o.async=!0;const a=h(r,e);a&&(a.tag=o);o.readyState?o.onreadystatechange=function(){"loaded"!==o.readyState&&"complete"!==o.readyState||(o.onreadystatechange=null,n())}:o.onload=function(){n()};o.src=t,i&&(0,s.setScriptAttributes)(o,i);return(0,s.insertElement)(o,r),o}(e,function(){p.loaded=!0;try{for(let e=0;e<p.callbacks.length;e++)p.callbacks[e]()}catch(e){(0,s.logError)("Error executing callback","adloader.js:loadExternalScript",e)}},l,u);function h(e,t){const n=a.get(e);return n&&n[t]?n[t]:null}}},5144(e,t,n){n.d(t,{HH:()=>c,kj:()=>d,xh:()=>a});var r=n(3064),i=n(466),o=n(3293),s=n(2592);const a=3,d=(0,s.A_)("sync",function(e){return o.G}),c=function(){const e={};return function(t){const n=d(t);return e.hasOwnProperty(n)||(e[n]=new r.U9(e=>{const t=(0,i.createInvisibleIframe)();t.srcdoc=`<script>${n}<\\/script>`,t.onload=()=>e(t.contentWindow.render),document.body.appendChild(t)})),e[n]}}()},5291(e,t,n){n.d(t,{Dk:()=>s,Ez:()=>l,Ii:()=>o,OI:()=>u,TQ:()=>h,XG:()=>g,ZI:()=>m,Zw:()=>c,bt:()=>f,e3:()=>p,iK:()=>a,q7:()=>d});var r=n(736),i=n(2592);const o="component",s=o+"Type",a=o+"Name",d="adapterCode",c="storageType",l="storageKey",u="write",g="configName",f="syncType",p="syncUrl",h="_config";function m(e){return function(t,n,i){const c={[s]:t,[a]:n,[o]:`${t}.${n}`};return t===r.tW&&(c[d]=e(n)),b(Object.assign(c,i))}}const b=(0,i.A_)("sync",e=>e)},5482(e,t,n){n.d(t,{S9:()=>l,cT:()=>c,lc:()=>u});var r=n(1933),i=n(466);const o="minBidCacheTTL";let s=1,a=null;const d=[];function c(e){return e.ttl-(e.hasOwnProperty("ttlBuffer")?e.ttlBuffer:s)}function l(){return a}function u(e){d.push(e)}r.$W.getConfig("ttlBuffer",e=>{"number"==typeof e.ttlBuffer?s=e.ttlBuffer:(0,i.logError)("Invalid value for ttlBuffer",e.ttlBuffer)}),r.$W.getConfig(o,e=>{const t=a;a=e?.[o],a="number"==typeof a?a:null,t!==a&&d.forEach(e=>e(a))})},5808(e,t,n){n.d(t,{DL:()=>d,Ml:()=>i,Ue:()=>r,VJ:()=>l,hE:()=>c,hq:()=>a,mo:()=>s,pY:()=>u,uc:()=>o,yg:()=>g});const r="accessDevice",i="syncUser",o="fetchBids",s="reportAnalytics",a="transmitEids",d="transmitUfpd",c="transmitPreciseGeo",l="transmitTid",u="loadExternalScript",g="accessRequestCredentials"},6220(e,t,n){n.d(t,{H6:()=>c,V0:()=>g,Zy:()=>u,vk:()=>f});var r=n(466),i=n(6665),o=n(1933),s=n(2592),a=n(4123),d=n(765);const c="outstream",l=[["mimes",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)],["minduration",i.Fq],["maxduration",i.Fq],["startdelay",i.Fq],["maxseq",i.Fq],["poddur",i.Fq],["protocols",i.Uu],["w",i.Fq],["h",i.Fq],["podid",i.O8],["podseq",i.Fq],["rqddurs",i.Uu],["placement",i.Fq],["plcmt",i.Fq],["linearity",i.Fq],["skip",e=>[1,0].includes(e)],["skipmin",i.Fq],["skipafter",i.Fq],["sequence",i.Fq],["slotinpod",i.Fq],["mincpmpersec",i.Et],["battr",i.Uu],["maxextended",i.Fq],["minbitrate",i.Fq],["maxbitrate",i.Fq],["boxingallowed",i.Fq],["playbackmethod",i.Uu],["playbackend",i.Fq],["delivery",i.Uu],["pos",i.Fq],["api",i.Uu],["companiontype",i.Uu],["poddedupe",i.Uu]],u=new Map(l);function g(e){const t=e?.mediaTypes?.video;if(null!=t){null==t.plcmt&&(t.context===c||[2,3,4].includes(t.placement)?t.plcmt=4:t.playbackmethod?.some?.(e=>[2,6].includes(e))&&(t.plcmt=2));const n=(0,i.Uu)(t.playerSize,2)?t.playerSize:Array.isArray(t.playerSize)&&(0,i.Uu)(t.playerSize[0])?t.playerSize[0]:null,o=(0,i.Et)(t.w)&&(0,i.Et)(t.h)?[t.w,t.h]:null;let s=!1;null==n?null!=o&&(null!=t.playerSize?s=!0:t.playerSize=[o]):["w","h"].forEach((e,r)=>{null!=t[e]&&t[e]!==n[r]?s=!0:t[e]=n[r]}),s&&(0,r.logWarn)(`Ad unit "${e.code} has conflicting playerSize and w/h`,e)}}function f(e){let{index:t=a.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t.getMediaTypes(e)?.video,r=n&&n?.context,i=n&&n?.useCacheKey,o=t.getAdUnit(e);return p(e,o,n,r,i)}const p=(0,s.A_)("sync",function(e,t,n,i,s){if(n&&(s||i!==c)){const{url:t,useLocal:n}=o.$W.getConfig("cache")||{};return t||n||!e.vastXml||e.vastUrl?!(!e.vastUrl&&!e.vastXml):((0,r.logError)(`\\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\\n Try enabling either prebid cache with ${(0,d.k)()}.setConfig({ cache: {url: "..."} });\\n or local cache with ${(0,d.k)()}.setConfig({ cache: { useLocal: true }});\\n `),!1)}return!(i===c&&!s)||!!(e.renderer||t&&t.renderer||n.renderer)},"checkVideoBidSetup")},6665(e,t,n){n.d(t,{Et:()=>u,Fq:()=>p,Go:()=>i,KG:()=>a,Lm:()=>f,O8:()=>c,Qd:()=>g,SH:()=>o,Uu:()=>h,cy:()=>l,fp:()=>d});var r=n(1490);function i(e){return(0,r.Q)(e)||{}}function o(e,t){return t.filter(t=>e[t]).reduce((t,n)=>Object.assign(t,{[n]:e[n]}),{})}const s=Object.prototype.toString;function a(e,t){return s.call(e)==="[object "+t+"]"}function d(e){return a(e,"Function")}function c(e){return a(e,"String")}const l=Array.isArray.bind(Array);function u(e){return a(e,"Number")}function g(e){return a(e,"Object")}function f(e){return a(e,"Boolean")}const p=Number.isInteger.bind(Number);function h(e,t){return l(e)&&(!t||e.length===t)&&e.every(e=>p(e))}},7156(e,t,n){n.d(t,{u:()=>a});var r=n(466),i=n(8928),o=n(1748),s=n(1418);const a=new class{constructor(e,t){this.getSettings=e,this.defaultScope=t}get(e,t){let n=this.getOwn(e,t);return void 0===n&&(n=this.getOwn(null,t)),n}getOwn(e,t){return e=this.#a(e),(0,i.A)(this.getSettings(),`${e}.${t}`)}getScopes(){return Object.keys(this.getSettings()).filter(e=>e!==this.defaultScope)}settingsFor(e){return(0,r.mergeDeep)({},this.ownSettingsFor(null),this.ownSettingsFor(e))}ownSettingsFor(e){return e=this.#a(e),this.getSettings()[e]||{}}#a(e){return null==e?this.defaultScope:e}}(()=>(0,o.m)().bidderSettings||{},s.iD.BD_SETTING_STANDARD)},7433(e,t,n){var r=n(1748),i=n(466),o=n(6665),s=n(8928),a=n(3435),d=n(356),c=n(1418),l=n(1852),u=n(5144);const{REQUEST:g,RESPONSE:f,NATIVE:p,EVENT:h}=c.nl,m={[g]:function(e,t,n){(0,l.bw)({renderFn(t){e(Object.assign({message:f,renderer:(0,u.kj)(n),rendererVersion:u.xh},t))},resizeFn:y(t.adId,n),options:t.options,adId:t.adId,bidResponse:n})},[h]:function(e,t,n){if(null==n)return void(0,i.logError)(`Cannot find ad \'${t.adId}\' for x-origin event request`);if(n.status!==c.tl.RENDERED)return void(0,i.logWarn)(`Received x-origin event request without corresponding render request for ad \'${n.adId}\'`);return(0,l.Uc)(t,n)}};function b(){window.addEventListener("message",function(e){!function(e){var t=e.message?"message":"data",n={};try{n=JSON.parse(e[t])}catch(e){return}if(n&&n.adId&&n.message&&m.hasOwnProperty(n.message))(0,l.$A)(n.adId,n.message===c.nl.REQUEST).then(t=>{var r,o;m[n.message]((r=n.adId,o=function(e){return null==e.origin&&0===e.ports.length?function(){const e="Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870";throw(0,i.logError)(e),new Error(e)}:e.ports.length>0?function(t){e.ports[0].postMessage(JSON.stringify(t))}:function(t){e.source.postMessage(JSON.stringify(t),e.origin)}}(e),function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return o(Object.assign({},e,{adId:r}),...n)}),n,t)})}(e)},!1)}function y(e,t){return function(n,r){!function(e){let{instl:t,adId:n,adUnitCode:r,width:o,height:s}=e;if(t)return;function a(e){return e?e+"px":"100%"}function d(e){if(e){const t=e.style;t.width=a(o),t.height=a(s)}else(0,i.logError)(`Unable to locate matching page element for adUnitCode ${r}. Can\'t resize it to ad\'s dimensions. Please review setup.`)}const c=l(\'iframe:not([style*="display: none"])\');function l(e){const t=u(n,r),i=document.getElementById(t);return i&&i.querySelector(e)}function u(e,t){if((0,i.isGptPubadsDefined)()){const t=g(e);if(t)return t}if((0,i.isApnGetTagDefined)()){const e=f(t);if(e)return e}return t}function g(e){const t=window.googletag.pubads().getSlots().find(t=>t.getTargetingKeys().find(n=>t.getTargeting(n).includes(e)));return t?t.getSlotElementId():null}function f(e){const t=window.apntag.getTag(e);return t&&t.targetId}[c,c?.parentElement].forEach(d)}({...t,width:n,height:r,adId:e})}}Object.assign(m,{[p]:function(e,t,n){if(null==n)return void(0,i.logError)(`Cannot find ad for x-origin event request: \'${t.adId}\'`);switch(t.action){case"assetRequest":(0,l.Hh)(n,()=>e((0,d.IX)(t,n)));break;case"allAssetRequest":(0,l.Hh)(n,()=>e((0,d.yl)(t,n)));break;default:(0,l.vW)(t,n,{resizeFn:y(t.adId,n)}),(0,l.Pk)(n)}}});var v=n(3391),E=n(1933),A=n(4123),w=n(869),T=n(2592),I=n(3320),C=n(5049),S=n(3064),B=n(736),O=n(9794),R=n(7464),U=n(765);const k=`__${(0,U.k)()}_debugging__`;function D(){return(0,r.m)().installedModules.includes("debugging")}function _(e){return new S.U9(t=>{(0,C.R)(e,B.tp,"debugging",t)})}function $(){let{alreadyInstalled:e=D,script:t=_}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null;return function(){return null==n&&(n=new S.U9((n,o)=>{setTimeout(()=>{if(e())n();else{const e=`${(0,U.rT)()}debugging-standalone.js`;(0,i.logMessage)(`Debugging module not installed, loading it from "${e}"...`),(0,r.m)()._installDebugging=!0,t(e).then(()=>{(0,r.m)()._installDebugging({DEBUG_KEY:k,hook:T.A_,config:E.$W,createBid:I.O,logger:(0,i.prefixLog)("DEBUG:"),utils:i,BANNER:O.D4,NATIVE:O.s6,VIDEO:O.G_,Renderer:R.A4})}).then(n,o)}})})),n}}const q=function(){let{load:e=$(),hook:t=(0,T.Yn)("requestBids")}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null,r=!1;function i(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return(n||S.U9.resolve()).then(()=>e.apply(this,r))}function o(){t.getHooks({hook:i}).remove(),r=!1}return{enable:function(){r||(n=e(),t.before(i,99),r=!0)},disable:o,reset:function(){n=null,o()}}}();q.reset;E.$W.getConfig("debugging",function(e){let{debugging:t}=e;t?.enabled?q.enable():q.disable()});var x=n(1443),W=n(8668),j=n(8014),N=n(7841);function P(){const e=(0,r.m)().scheduler??window.scheduler;return e?.yield?e.yield():S.U9.resolve()}var M=n(867);const F=(0,x.CK)("fpdEnrichment"),G=(0,i.memoize)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.host;if(!F.cookiesAreEnabled())return e;const t=e.split(".");if(2===t.length)return e;let n,r,o=-2;const s=`_rdc${Date.now()}`,a="writeable";do{n=t.slice(o).join(".");const e=new Date((0,i.timestamp)()+1e4).toUTCString();F.setCookie(s,a,e,"Lax",n,void 0);F.getCookie(s,void 0)===a?(r=!1,F.setCookie(s,"","Thu, 01 Jan 1970 00:00:01 GMT",void 0,n,void 0)):(o+=-1,r=Math.abs(o)<=t.length)}while(r);return n}),L=["architecture","bitness","model","platformVersion","fullVersionList"],z=["brands","mobile","platform"],H=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator?.userAgentData;const t=e&&z.some(t=>void 0!==e[t])?Object.freeze(Q(1,e)):null;return function(){return t}}(),V=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator?.userAgentData;const t={},n=new WeakMap;return function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:L;if(!n.has(r)){const e=Array.from(r);e.sort(),n.set(r,e.join("|"))}const o=n.get(r);if(!t.hasOwnProperty(o))try{t[o]=e.getHighEntropyValues(r).then(e=>(0,i.isEmpty)(e)?null:Object.freeze(Q(2,e))).catch(()=>null)}catch(e){t[o]=S.U9.resolve(null)}return t[o]}}();function Q(e,t){function n(e,t){const n={brand:e};return(0,o.O8)(t)&&!(0,i.isEmptyStr)(t)&&(n.version=t.split(".")),n}const r={source:e};return t.platform&&(r.platform=n(t.platform,t.platformVersion)),(t.fullVersionList||t.brands)&&(r.browsers=(t.fullVersionList||t.brands).map(e=>{let{brand:t,version:r}=e;return n(t,r)})),void 0!==t.mobile&&(r.mobile=t.mobile?1:0),["model","bitness","architecture"].forEach(e=>{const n=t[e];(0,o.O8)(n)&&(r[e]=n)}),r}var J=n(1833),K=n(3202),Y=n(7610),X=n(5808),Z=n(183);const ee={getRefererInfo:M.EN,findRootDomain:G,getWindowTop:i.getWindowTop,getWindowSelf:i.getWindowSelf,getHighEntropySUA:V,getLowEntropySUA:H,getDocument:i.getDocument},te=(0,J.i8)("FPD"),ne=(0,T.A_)("sync",e=>{const t=[e,ie().catch(()=>null),S.U9.resolve("cookieDeprecationLabel"in navigator&&(0,K.io)(X.Ue,(0,Y.s)(B.tp,"cdep"))&&navigator.cookieDeprecationLabel.getValue()).catch(()=>null)];return S.U9.all(t).then(e=>{let[t,n,r]=e;const o=ee.getRefererInfo();if(Object.entries(se).forEach(e=>{let[n,r]=e;const s=r(t,o);s&&Object.keys(s).length>0&&(t[n]=(0,i.mergeDeep)({},s,t[n]))}),n&&(0,a.J)(t,"device.sua",Object.assign({},n,t.device.sua)),r){const e={cdep:r};(0,a.J)(t,"device.ext",Object.assign({},e,t.device.ext))}const d=ee.getDocument().documentElement.lang;if(d&&((0,a.J)(t,"site.ext.data.documentLang",d),!(0,s.A)(t,"site.content.language"))){const e=d.split("-")[0];(0,a.J)(t,"site.content.language",e)}t=te(t);for(const e of J.Dy)if((0,J.O$)(t,e)){t[e]=(0,i.mergeDeep)({},ae(t,o),t[e]);break}return t})});function re(e){try{return e(ee.getWindowTop())}catch(t){return e(ee.getWindowSelf())}}function ie(){const e=E.$W.getConfig("firstPartyData.uaHints");return Array.isArray(e)&&0!==e.length?ee.getHighEntropySUA(e):S.U9.resolve(ee.getLowEntropySUA())}function oe(e){return(0,o.SH)(e,Object.keys(e))}const se={site(e,t){if(!J.Dy.filter(e=>"site"!==e).some(J.O$.bind(null,e)))return oe({page:t.page,ref:t.ref})},device:()=>re(e=>{const t=(0,i.getWinDimensions)().screen.width,n=(0,i.getWinDimensions)().screen.height,{width:r,height:o}=(0,Z.M)(),s={w:t,h:n,dnt:(0,i.getDNT)()?1:0,ua:e.navigator.userAgent,language:e.navigator.language.split("-").shift(),ext:{vpw:r,vph:o}};return e.navigator?.webdriver&&(0,a.J)(s,"ext.webdriver",!0),s}),regs(){const e={};re(e=>e.navigator.globalPrivacyControl)&&(0,a.J)(e,"ext.gpc","1");const t=E.$W.getConfig("coppa");return"boolean"==typeof t&&(e.coppa=t?1:0),e}};function ae(e,t){const n=(0,M.gR)(t.page,{noLeadingWww:!0}),r=re(e=>e.document.querySelector("meta[name=\'keywords\']"))?.content?.replace?.(/\\s/g,"");return oe({domain:n,keywords:r,publisher:oe({domain:ee.findRootDomain(n)})})}var de=n(1385),ce=n(9236),le=n(6220);const ue=[["format",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"object"==typeof e)],["w",o.Fq],["h",o.Fq],["btype",o.Uu],["battr",o.Uu],["pos",o.Fq],["mimes",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)],["topframe",e=>[1,0].includes(e)],["expdir",o.Uu],["api",o.Uu],["id",o.O8],["vcm",e=>[1,0].includes(e)]],ge=new Map(ue);function fe(e,t){var n=this;return function(){for(var r=arguments.length,o=new Array(r),s=0;s<r;s++)o[s]=arguments[s];return document.prerendering&&e()?new Promise(e=>{document.addEventListener("prerenderingchange",()=>{(0,i.logInfo)("Auctions were suspended while page was prerendering"),e(t.apply(n,o))},{once:!0})}):Promise.resolve(t.apply(n,o))}}var pe=n(3556);const he=(0,T.A_)("sync",function(e){return[me,be].forEach(t=>function(e,t){t.global=e(t.global,"global FPD"),Object.entries(t.bidder).forEach(n=>{let[r,i]=n;t.bidder[r]=e(i,`bidder \'${r}\' FPD`)})}(t,e)),e});function me(e,t){if(!e)return e;const n=[],r=[...(e?.user?.eids??[]).map(e=>[0,e]),...(e?.user?.ext?.eids??[]).map(e=>[1,e])].filter(e=>{let[r,o]=e;return n.findIndex(e=>{let[t,n]=e;return r!==t&&(0,i.deepEqual)(n,o)})>-1?((0,i.logWarn)(`Found duplicate EID in user.eids and user.ext.eids (${t})`,o),!1):(n.push([r,o]),!0)});return r.length>0&&(0,a.J)(e,"user.ext.eids",r.map(e=>{let[t,n]=e;return n})),delete e?.user?.eids,e}function be(e,t){if(!e)return e;const n=e.source?.schain,r=e.source?.ext?.schain;return null==n||null==r||(0,i.deepEqual)(n,r)||(0,i.logWarn)(`Conflicting source.schain and source.ext.schain (${t}), preferring source.schain`,{"source.schain":n,"source.ext.schain":r}),null!=(n??r)&&(0,a.J)(e,"source.ext.schain",n??r),delete e.source?.schain,e}var ye=n(8417);const ve=(0,r.m)(),{triggerUserSyncs:Ee}=v.zt,{ADD_AD_UNITS:Ae,REQUEST_BIDS:we,SET_TARGETING:Te}=c.qY;function Ie(e,t){let n=[];return(0,o.cy)(e)&&(t?e.length===t:e.length>0)&&(e.every(e=>(0,o.Uu)(e,2))?n=e:(0,o.Uu)(e,2)&&n.push(e)),n}function Ce(e,t){const n=(0,s.A)(e,`ortb2Imp.${t}`),r=(0,s.A)(e,`mediaTypes.${t}`);if(!n&&!r)return;const o={[O.G_]:le.Zy,[O.D4]:ge}[t];o&&[...o].forEach(n=>{let[r,o]=n;const d=(0,s.A)(e,`mediaTypes.${t}.${r}`),c=(0,s.A)(e,`ortb2Imp.${t}.${r}`);null==d&&null==c||(null==d?(0,a.J)(e,`mediaTypes.${t}.${r}`,c):null==c?(0,a.J)(e,`ortb2Imp.${t}.${r}`,d):((0,i.logWarn)(`adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${r} and mediaTypes.${t}.${r}, the latter will be ignored`,e),(0,a.J)(e,`mediaTypes.${t}.${r}`,c)))})}function Se(e){const t=(0,o.Go)(e),n=t.mediaTypes.banner,r=null==n.sizes?null:Ie(n.sizes),s=e.ortb2Imp?.banner?.format??n?.format;let d;if(null!=s){(0,a.J)(t,"ortb2Imp.banner.format",s),n.format=s;try{d=s.filter(t=>{let{w:n,h:r,wratio:o,hratio:s}=t;return null!=(n??r)&&null!=(o??s)?((0,i.logWarn)("Ad unit banner.format specifies both w/h and wratio/hratio",e),!1):null!=n&&null!=r||null!=o&&null!=s}).map(e=>{let{w:t,h:n,wratio:r,hratio:i}=e;return[t??r,n??i]})}catch(t){(0,i.logError)(`Invalid format definition on ad unit ${e.code}`,s)}null==d||null==r||(0,i.deepEqual)(r,d)||(0,i.logWarn)(`Ad unit ${e.code} has conflicting sizes and format definitions`,e)}const c=d??r??[],l=e.ortb2Imp?.banner?.expdir??n.expdir;return null!=l&&(n.expdir=l,(0,a.J)(t,"ortb2Imp.banner.expdir",l)),c.length>0?(n.sizes=c,t.sizes=c):((0,i.logError)("Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], ...]. Removing invalid mediaTypes.banner object from request."),delete t.mediaTypes.banner),Re(t,"banner"),Ce(t,"banner"),t}function Be(e){const t=(0,o.Go)(e);return Re(t,"audio"),Ce(t,"audio"),t}function Oe(e){const t=(0,o.Go)(e),n=t.mediaTypes.video;if(n.playerSize){const e="number"==typeof n.playerSize[0]?2:1,r=Ie(n.playerSize,e);r.length>0?(2===e&&(0,i.logInfo)("Transforming video.playerSize from [640,480] to [[640,480]] so it\'s in the proper format."),n.playerSize=r,t.sizes=r):((0,i.logError)("Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request."),delete t.mediaTypes.video.playerSize)}return Re(t,"video"),Ce(t,"video"),t}function Re(e,t,n){const r=(e?.mediaTypes||{})[t],s={banner:ge,audio:ye.Ai,video:le.Zy}[t];(0,o.Qd)(r)?null!=r&&Object.entries(r).forEach(o=>{let[a,d]=o;if(!s.has(a))return;s.get(a)(d)||("function"==typeof n?n(a,d,e):(delete r[a],(0,i.logWarn)(`Invalid prop in adUnit "${e.code}": Invalid value for mediaTypes.${t}.${a} ORTB property. The property has been removed.`)))}):(0,i.logWarn)(`validateOrtb${t}Fields: ${t}Params must be an object.`)}function Ue(e){function t(t){return(0,i.logError)(`Error in adUnit "${e.code}": ${t}. Removing native request from ad unit`,e),delete r.mediaTypes.native,r}function n(e){for(const t of["types"])if(s.hasOwnProperty(t)){const n=e(t);if(n)return n}}const r=(0,o.Go)(e),s=r.mediaTypes.native;if(s.ortb){if(s.ortb.assets?.some(e=>!(0,o.Et)(e.id)||e.id<0||e.id%1!=0))return t("native asset ID must be a nonnegative integer");if(n(e=>t(`ORTB native requests cannot specify "${e}"`)))return r;const e=Object.keys(c.x5).filter(e=>c.x5[e].includes("hb_native_")),a=Object.keys(s).filter(t=>e.includes(t));a.length>0&&((0,i.logError)(`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${a} keys from request.`),a.forEach(e=>delete r.mediaTypes.native[e]))}else n(t=>(0,i.logWarn)(`mediaTypes.native.${t} is deprecated, consider using native ORTB instead`,e));return s.image&&s.image.sizes&&!Array.isArray(s.image.sizes)&&((0,i.logError)("Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request."),delete r.mediaTypes.native.image.sizes),s.image&&s.image.aspect_ratios&&!Array.isArray(s.image.aspect_ratios)&&((0,i.logError)("Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request."),delete r.mediaTypes.native.image.aspect_ratios),s.icon&&s.icon.sizes&&!Array.isArray(s.icon.sizes)&&((0,i.logError)("Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request."),delete r.mediaTypes.native.icon.sizes),r}function ke(e,t){const n=e?.mediaTypes?.[t]?.pos;if(!(0,o.Et)(n)||isNaN(n)||!isFinite(n)){const n=`Value of property \'pos\' on ad unit ${e.code} should be of type: Number`;(0,i.logWarn)(n),delete e.mediaTypes[t].pos}return e}function De(e){const t=e=>`adUnit.code \'${n.code}\' ${e}`,n=e,r=n.mediaTypes,s=n.bids;return null==s||(0,o.cy)(s)?null==s&&null==n.ortb2Imp?((0,i.logError)(t("has no \'adUnit.bids\' and no \'adUnit.ortb2Imp\'. Removing adUnit from auction")),null):r&&0!==Object.keys(r).length?(null==n.ortb2Imp||null!=s&&0!==s.length||(n.bids=[{bidder:null}],(0,i.logMessage)(t("defines \'adUnit.ortb2Imp\' with no \'adUnit.bids\'; it will be seen only by S2S adapters"))),n):((0,i.logError)(t("does not define a \'mediaTypes\' object. This is a required field for the auction, so this adUnit has been removed.")),null):((0,i.logError)(t("defines \'adUnit.bids\' that is not an array. Removing adUnit from auction")),null)}!function(){let e=null;try{e=window.sessionStorage}catch(e){}if(null!==e){const t=q;let n=null;try{n=e.getItem(k)}catch(e){}null!==n&&t.enable()}}(),ve.bidderSettings=ve.bidderSettings||{},ve.libLoaded=!0,ve.version="v10.9.0",(0,i.logInfo)("Prebid.js v10.9.0 loaded"),ve.adUnits=ve.adUnits||[];const _e={validateAdUnit:De,validateBannerMediaType:Se,validateSizes:Ie};Object.assign(_e,{validateNativeMediaType:Ue}),Object.assign(_e,{validateVideoMediaType:Oe}),Object.assign(_e,{validateAudioMediaType:Be});const $e=(0,T.A_)("sync",function(e){const t=[];return e.forEach(e=>{const n=De(e);if(null==n)return;const r=n.mediaTypes;let i,o,s,a;r.banner&&(i=Se(n),r.banner.hasOwnProperty("pos")&&(i=ke(i,"banner"))),r.video&&(o=Oe(i||n),r.video.hasOwnProperty("pos")&&(o=ke(o,"video"))),r.native&&(s=Ue(o||(i||n))),r.audio&&(a=Be(s||n));const d=Object.assign({},i,o,s,a);t.push(d)}),t},"checkAdUnitSetup");function qe(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];(0,r.m)()[e]=n?function(e,t){return function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(0,i.logInfo)(`Invoking ${(0,U.k)()}.${e}`,r),t.apply(this,r)}}(e,t):t}function xe(e){return We(e)[e]}function We(e){return w.iS.getAllTargeting(e)}function je(e){return(e=e.slice()).bids=e,e}function Ne(e){const t=A.n[e]().filter(e=>A.n.getAdUnitCodes().includes(e.adUnitCode)),n=A.n.getLastAuctionId();return t.map(e=>e.adUnitCode).filter(i.uniques).map(e=>t.filter(t=>t.auctionId===n&&t.adUnitCode===e)).filter(e=>e&&e[0]&&e[0].adUnitCode).map(e=>({[e[0].adUnitCode]:je(e)})).reduce((e,t)=>Object.assign(e,t),{})}qe("triggerUserSyncs",Ee),qe("getAdserverTargetingForAdUnitCodeStr",function(e){if(e){const t=xe(e);return(0,i.transformAdServerTargetingObj)(t)}(0,i.logMessage)("Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode")}),qe("getHighestUnusedBidResponseForAdUnitCode",function(e){if(e){const t=A.n.getAllBidsForAdUnitCode(e).filter(w.Yl);return t.length?t.reduce(ce.Vk):null}(0,i.logMessage)("Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode")}),qe("getAdserverTargetingForAdUnitCode",xe),qe("getAdserverTargeting",We),qe("getConsentMetadata",function(){return de.SL.getConsentMeta()}),qe("getNoBids",function(){return Ne("getNoBids")}),qe("getNoBidsForAdUnitCode",function(e){return je(A.n.getNoBids().filter(t=>t.adUnitCode===e))}),qe("getBidResponses",function(){return Ne("getBidsReceived")}),qe("getBidResponsesForAdUnitCode",function(e){return je(A.n.getBidsReceived().filter(t=>t.adUnitCode===e))}),qe("setTargetingForGPTAsync",function(e,t){(0,i.isGptPubadsDefined)()?w.iS.setTargetingForGPT(e,t):(0,i.logError)("window.googletag is not defined on the page")}),qe("setTargetingForAst",function(e){w.iS.isApntagDefined()?(w.iS.setTargetingForAst(e),j.Ic(Te,w.iS.getAllTargeting())):(0,i.logError)("window.apntag is not defined on the page")}),qe("renderAd",async function(e,t,n){await P(),(0,l.BS)(e,t,n)}),qe("removeAdUnit",function(e){if(!e)return void(ve.adUnits=[]);let t;t=(0,o.cy)(e)?e:[e],t.forEach(e=>{for(let t=ve.adUnits.length-1;t>=0;t--)ve.adUnits[t].code===e&&ve.adUnits.splice(t,1)})});const Pe=function(){const e=(0,T.A_)("async",function(e){let{bidsBackHandler:t,timeout:n,adUnits:r,adUnitCodes:s,labels:a,auctionId:d,ttlBuffer:c,ortb2:l,metrics:u,defer:g}=e??{};j.Ic(we);const f=n||E.$W.getConfig("bidderTimeout");null==s||Array.isArray(s)||(s=[s]),s&&s.length?r=r.filter(e=>s.includes(e.code)):s=r&&r.map(e=>e.code),s=s.filter(i.uniques);let p={global:(0,i.mergeDeep)({},E.$W.getAnyConfig("ortb2")||{},l||{}),bidder:Object.fromEntries(Object.entries(E.$W.getBidderConfig()).map(e=>{let[t,n]=e;return[t,(0,o.Go)(n.ortb2)]}).filter(e=>{let[t,n]=e;return null!=n}))};p=he(p),ne(S.U9.resolve(p.global)).then(e=>(p.global=e,Me({bidsBackHandler:t,timeout:f,adUnits:r,adUnitCodes:s,labels:a,auctionId:d,ttlBuffer:c,ortb2Fragments:p,metrics:u,defer:g})))},"requestBids");return(0,T.Y6)(e,fe(()=>!E.$W.getConfig("allowPrerendering"),function(){const t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.adUnits||ve.adUnits;return t.adUnits=Array.isArray(n)?n.slice():[n],t.metrics=(0,N.K7)(),t.metrics.checkpoint("requestBids"),t.defer=(0,S.v6)({promiseFactory:e=>new Promise(e)}),e.call(this,t),t.defer.promise}))}();qe("requestBids",Pe);const Me=(0,T.A_)("async",function(){let{bidsBackHandler:e,timeout:t,adUnits:n,ttlBuffer:r,adUnitCodes:o,labels:s,auctionId:a,ortb2Fragments:d,metrics:c,defer:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const u=(0,W.pX)(E.$W.getConfig("s2sConfig")||[]);!function(e){e.forEach(e=>(0,le.V0)(e)),e.forEach(e=>(0,ye.kl)(e))}(n);const g=(0,N.BO)(c).measureTime("requestBids.validate",()=>$e(n));function f(t,n,r){if("function"==typeof e)try{e(t,n,r)}catch(e){(0,i.logError)("Error executing bidsBackHandler",null,e)}l.resolve({bids:t,timedOut:n,auctionId:r})}const p={};if(g.forEach(e=>{const t=Object.keys(e.mediaTypes||{banner:"banner"}),n=e.bids.map(e=>e.bidder),o=W.Ay.bidderRegistry,s=n.filter(e=>!u.has(e));e.adUnitId=(0,i.generateUUID)();const a=e.ortb2Imp?.ext?.tid;a&&(p.hasOwnProperty(e.code)?(0,i.logWarn)(`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units \'${e.code}\'`):p[e.code]=a),null==r||e.hasOwnProperty("ttlBuffer")||(e.ttlBuffer=r),s.forEach(n=>{const r=o[n],s=r&&r.getSpec&&r.getSpec(),a=s&&s.supportedMediaTypes||["banner"];t.some(e=>a.includes(e))||((0,i.logWarn)((0,i.unsupportedBidderMessage)(e,n)),e.bids=e.bids.filter(e=>e.bidder!==n))})}),g&&0!==g.length){g.forEach(e=>{const t=e.ortb2Imp?.ext?.tid||p[e.code]||(0,i.generateUUID)();p.hasOwnProperty(e.code)||(p[e.code]=t),e.transactionId=t});const e=A.n.createAuction({adUnits:g,adUnitCodes:o,callback:f,cbTimeout:t,labels:s,auctionId:a,ortb2Fragments:d,metrics:c}),n=g.length;n>15&&(0,i.logInfo)(`Current auction ${e.getAuctionId()} contains ${n} adUnits.`,g),o.forEach(t=>w.iS.setLatestAuctionForAdUnit(t,e.getAuctionId())),e.callBids()}else(0,i.logMessage)("No adUnits configured. No bids requested."),f()},"startAuction");Pe.before(function(e,t){function n(e){let t;for(;t=e.shift();)t()}n(x.s0),n(Le),e.call(this,t)},49),qe("addAdUnits",function(e){ve.adUnits.push(...Array.isArray(e)?e:[e]),j.Ic(Ae)});const Fe={bidWon(e){if(A.n.getBidsRequested().map(e=>e.bids.map(e=>e.adUnitCode)).reduce(i.flatten).filter(i.uniques).includes(e))return!0;(0,i.logError)(\'The "\'+e+\'" placement is not defined.\')}};function Ge(e,t){return Fe.hasOwnProperty(e)&&Fe[e](t)}qe("onEvent",function(e,t,n){(0,o.fp)(t)?!n||Ge(e,n)?j.on(e,t,n):(0,i.logError)(\'The id provided is not valid for event "\'+e+\'" and no handler was set.\'):(0,i.logError)(\'The event handler provided is not a function and was not set on event "\'+e+\'".\')}),qe("offEvent",function(e,t,n){n&&!Ge(e,n)||j.AU(e,t,n)}),qe("getEvents",function(){return j.kQ()}),qe("registerBidAdapter",function(e,t,n){try{const r=n?(0,pe.xb)(n):e();W.Ay.registerBidAdapter(r,t)}catch(e){(0,i.logError)("Error registering bidder adapter : "+e.message)}}),qe("registerAnalyticsAdapter",function(e){try{W.Ay.registerAnalyticsAdapter(e)}catch(e){(0,i.logError)("Error registering analytics adapter : "+e.message)}});const Le=[],ze=(0,T.A_)("async",function(e){e&&!(0,i.isEmpty)(e)?W.Ay.enableAnalytics(e):(0,i.logError)(`${(0,U.k)()}.enableAnalytics should be called with option {}`)},"enableAnalyticsCb");function He(e){if("function"==typeof e)try{e.call()}catch(e){(0,i.logError)("Error processing command :",e.message,e.stack)}else(0,i.logError)(`Commands written into ${(0,U.k)()}.cmd.push must be wrapped in a function`)}async function Ve(e){for(const t of e){if(void 0===t.called)try{t.call(),t.called=!0}catch(e){(0,i.logError)("Error processing command :","prebid.js",e)}await P()}}qe("enableAnalytics",function(e){Le.push(ze.bind(this,e))}),qe("aliasBidder",function(e,t,n){e&&t?W.Ay.aliasBidAdapter(e,t,n):(0,i.logError)("bidderCode and alias must be passed as arguments",`${(0,U.k)()}.aliasBidder`)}),ve.aliasRegistry=W.Ay.aliasRegistry,E.$W.getConfig("aliasRegistry",e=>{"private"===e.aliasRegistry&&delete ve.aliasRegistry}),qe("getAllWinningBids",function(){return A.n.getAllWinningBids()}),qe("getAllPrebidWinningBids",function(){return(0,i.logWarn)("getAllPrebidWinningBids may be removed or renamed in a future version. This function returns bids that have won in prebid and have had targeting set but have not (yet?) won in the ad server. It excludes bids that have been rendered."),A.n.getBidsReceived().filter(e=>e.status===c.tl.BID_TARGETING_SET)}),qe("getHighestCpmBids",function(e){return w.iS.getWinningBids(e)}),qe("clearAllAuctions",function(){A.n.clearAllAuctions()}),qe("markWinningBidAsUsed",function(e){let t,{adId:n,adUnitCode:r,analytics:o=!1,events:s=!1}=e;r&&null==n?t=w.iS.getWinningBids(r):n?t=A.n.getBidsReceived().filter(e=>e.adId===n):(0,i.logWarn)("Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function."),t.length>0&&(o||s?(0,l.n6)(t[0]):A.n.addWinningBid(t[0]),(0,l.qn)(t[0]))}),qe("getConfig",E.$W.getAnyConfig),qe("readConfig",E.$W.readAnyConfig),qe("mergeConfig",E.$W.mergeConfig),qe("mergeBidderConfig",E.$W.mergeBidderConfig),qe("setConfig",E.$W.setConfig),qe("setBidderConfig",E.$W.setBidderConfig),ve.que.push(()=>b());qe("processQueue",fe(()=>ve.delayPrerendering,async function(){ve.que.push=ve.cmd.push=He,(0,l.XO)(),T.A_.ready(),await Ve(ve.que),await Ve(ve.cmd)}),!1),qe("triggerBilling",function(e){let{adId:t,adUnitCode:n}=e;A.n.getAllWinningBids().filter(e=>e.adId===t||null==t&&e.adUnitCode===n).forEach(e=>{W.Ay.triggerBilling(e),(0,l.vB)(e)})})},7464(e,t,n){n.d(t,{A4:()=>d,J7:()=>c,Pg:()=>l});var r=n(5049),i=n(466),o=n(1748),s=n(736);const a=(0,o.m)();function d(e){const{url:t,config:n,id:o,callback:d,loaded:c,adUnitCode:l,renderNow:u}=e;this.url=t,this.config=n,this.handlers={},this.id=o,this.renderNow=u,this.adUnitCode=l,this.loaded=c,this.cmd=[],this.push=e=>{"function"==typeof e?this.loaded?e.call():this.cmd.push(e):(0,i.logError)("Commands given to Renderer.push must be wrapped in a function")},this.callback=d||(()=>{this.loaded=!0,this.process()}),this.render=function(){const e=arguments,n=()=>{this._render?this._render.apply(this,e):(0,i.logWarn)("No render function was provided, please use .setRender on the renderer")};!function(e){const t=a.adUnits.find(t=>t.code===e);if(!t)return!1;const n=t?.renderer,r=!!(n&&n.url&&n.render),i=t?.mediaTypes?.video?.renderer,o=!!(i&&i.url&&i.render);return!!(r&&!0!==n.backupOnly||o&&!0!==i.backupOnly)}(l)?u?n():(this.cmd.unshift(n),(0,r.R)(t,s.tp,"outstream",this.callback,this.documentContext)):((0,i.logWarn)(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${l}`),n())}.bind(this)}function c(e){return!(!e||!e.url&&!e.renderNow)}function l(e,t,n){let r=null;e.config&&e.config.documentResolver&&(r=e.config.documentResolver(t,document,n)),r||(r=document),e.documentContext=r,e.render(t,e.documentContext)}d.install=function(e){let{url:t,config:n,id:r,callback:i,loaded:o,adUnitCode:s,renderNow:a}=e;return new d({url:t,config:n,id:r,callback:i,loaded:o,adUnitCode:s,renderNow:a})},d.prototype.getConfig=function(){return this.config},d.prototype.setRender=function(e){this._render=e},d.prototype.setEventHandlers=function(e){this.handlers=e},d.prototype.handleVideoEvent=function(e){let{id:t,eventName:n}=e;"function"==typeof this.handlers[n]&&this.handlers[n](),(0,i.logMessage)(`Prebid Renderer event for id ${t} type ${n}`)},d.prototype.process=function(){for(;this.cmd.length>0;)try{this.cmd.shift().call()}catch(e){(0,i.logError)(`Error processing Renderer command on ad unit \'${this.adUnitCode}\':`,e)}}},7610(e,t,n){n.d(t,{s:()=>i});var r=n(8668);const i=(0,n(5291).ZI)(e=>r.Ay.resolveAlias(e))},7841(e,t,n){n.d(t,{BO:()=>f,K7:()=>p});var r=n(1933);const i="performanceMetrics",o=window.performance&&window.performance.now?()=>window.performance.now():()=>Date.now(),s=new WeakMap;function a(e,t,n){return function(){t&&t();try{for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return e.apply(this,i)}finally{n&&n()}}}function d(){let{now:e=o,mkNode:t=l,mkTimer:n=c,mkRenamer:r=e=>e,nodes:i=s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(){return function o(s){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>({forEach(t){t(e)}});a=r(a);const d=(c="timestamps",function(e){return s.dfWalk({visit(t,n){const r=n[c];if(r.hasOwnProperty(e))return r[e]}})});var c;function l(e,t){const n=a(e);s.dfWalk({follow:(e,t)=>t.propagate&&(!e||!e.stopPropagation),visit(e,r){n.forEach(n=>{null==e?r.metrics[n]=t:(r.groups.hasOwnProperty(n)||(r.groups[n]=[]),r.groups[n].push(t))})}})}function u(t){return n(e,e=>l(t,e))}function g(){let e={};return s.dfWalk({visit(t,n){e=Object.assign({},!t||t.includeGroups?n.groups:null,n.metrics,e)}}),e}const f={startTiming:u,measureTime:function(e,t){return u(e).stopAfter(t)()},measureHookTime:function(e,t,n){const r=u(e);return n(function(e){const t=r.stopBefore(e);return t.bail=e.bail&&r.stopBefore(e.bail),t.stopTiming=r,t.untimed=e,t}(t))},checkpoint:function(t){s.timestamps[t]=e()},timeSince:function(t,n){const r=d(t),i=null!=r?e()-r:null;return null!=n&&l(n,i),i},timeBetween:function(e,t,n){const r=d(e),i=d(t),o=null!=r&&null!=i?i-r:null;return null!=n&&l(n,o),o},setMetric:l,getMetrics:g,fork:function(){let{propagate:e=!0,stopPropagation:n=!1,includeGroups:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o(t([[s,{propagate:e,stopPropagation:n,includeGroups:r}]]),a)},join:function(e){let{propagate:t=!0,stopPropagation:n=!1,includeGroups:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=i.get(e);null!=o&&o.addParent(s,{propagate:t,stopPropagation:n,includeGroups:r})},newMetrics:function(){return o(s.newSibling(),a)},renameWith:function(e){return o(s,e)},toJSON:()=>g()};return i.set(f,s),f}(t([]))}}function c(e,t){const n=e();let r=!1;function i(){r||(t(e()-n),r=!0)}return i.stopBefore=e=>a(e,i),i.stopAfter=e=>a(e,null,i),i}function l(e){return{metrics:{},timestamps:{},groups:{},addParent(t,n){e.push([t,n])},newSibling:()=>l(e.slice()),dfWalk(){let t,{visit:n,follow:r=()=>!0,visited:i=new Set,inEdge:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!i.has(this)){if(i.add(this),t=n(o,this),null!=t)return t;for(const[s,a]of e)if(r(o,a)&&(t=s.dfWalk({visit:n,follow:r,visited:i,inEdge:a}),null!=t))return t}}}}const u=(()=>{const e=function(){},t=()=>({}),n={forEach:e},r=()=>null;r.stopBefore=e=>e,r.stopAfter=e=>e;const i=Object.defineProperties({dfWalk:e,newSibling:()=>i,addParent:e},Object.fromEntries(["metrics","timestamps","groups"].map(e=>[e,{get:t}])));return d({now:()=>0,mkNode:()=>i,mkRenamer:()=>()=>n,mkTimer:()=>r,nodes:{get:e,set:e}})()})();let g=!0;function f(e){return g&&e||u}r.$W.getConfig(i,e=>{g=!!e[i]});const p=(()=>{const e=d();return function(){return g?e():u}})();function h(e,t){return function(n,r){var i=this;return function(o){for(var s=arguments.length,a=new Array(s>1?s-1:0),d=1;d<s;d++)a[d-1]=arguments[d];return f(t.apply(i,a)).measureHookTime(e+n,o,e=>r.call(i,e,...a))}}}h("requestBids.",e=>e.metrics),h("addBidResponse.",(e,t)=>t.metrics)},8014(e,t,n){n.d(t,{AU:()=>p,Ic:()=>b,kQ:()=>m,on:()=>f});var r=n(466),i=n(1418),o=n(939),s=n(1933);const a="eventHistoryTTL";let d=null;const c=(0,o.H)({monotonic:!0,ttl:()=>d});s.$W.getConfig(a,e=>{const t=d,n=e?.[a];d="number"==typeof n?1e3*n:null,t!==d&&c.refresh()});let l=Object.values(i.qY);const u=i.cA,g=function(){const e={};function t(e){return l.includes(e)}return{has:t,on:function(n,i,o){if(t(n)){const t=e[n]||{que:[]};o?(t[o]=t[o]||{que:[]},t[o].que.push(i)):t.que.push(i),e[n]=t}else r.logError("Wrong event name : "+n+" Valid event names :"+l)},emit:function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];!function(t,n){r.logMessage("Emitting event for: "+t);const i=n[0]||{},o=i[u[t]],s=e[t]||{que:[]};var a=Object.keys(s);const d=[];c.add({eventType:t,args:i,id:o,elapsedTime:r.getPerformanceNow()}),o&&a.includes(o)&&d.push(...s[o].que),d.push(...s.que),(d||[]).forEach(function(e){if(e)try{e(...n)}catch(e){r.logError("Error executing handler:","events.js",e,t)}})}(t,i)},off:function(t,n,i){const o=e[t];r.isEmpty(o)||r.isEmpty(o.que)&&r.isEmpty(o[i])||i&&(r.isEmpty(o[i])||r.isEmpty(o[i].que))||(i?(o[i].que||[]).forEach(function(e){const t=o[i].que;e===n&&t.splice(t.indexOf(e),1)}):(o.que||[]).forEach(function(e){const t=o.que;e===n&&t.splice(t.indexOf(e),1)}),e[t]=o)},get:function(){return e},addEvents:function(e){l=l.concat(e)},getEvents:function(){return c.toArray().map(e=>Object.assign({},e))}}}();r._setEventEmitter(g.emit.bind(g));const{on:f,off:p,get:h,getEvents:m,emit:b,addEvents:y,has:v}=g},8417(e,t,n){n.d(t,{Ai:()=>l,kl:()=>u});var r=n(466),i=n(6665),o=n(1933),s=n(2592),a=n(765);const d="outstream",c=[["mimes",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)],["minduration",i.Fq],["maxduration",i.Fq],["startdelay",i.Fq],["maxseq",i.Fq],["poddur",i.Fq],["protocols",i.Uu],["battr",i.Uu],["maxextended",i.Fq],["minbitrate",i.Fq],["maxbitrate",i.Fq],["delivery",i.Uu],["api",i.Uu],["companiontype",i.Uu],["feed",i.Fq],["stitched",i.Fq],["nvol",i.Fq]],l=new Map(c);function u(e){}(0,s.A_)("sync",function(e,t,n,i,s){if(n&&(s||i!==d)){const{url:t,useLocal:n}=o.$W.getConfig("cache")||{};return t||n||!e.vastXml||e.vastUrl?!(!e.vastUrl&&!e.vastXml):((0,r.logError)(`\\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\\n Try enabling either prebid cache with ${(0,a.k)()}.setConfig({ cache: {url: "..."} });\\n or local cache with ${(0,a.k)()}.setConfig({ cache: { useLocal: true }});\\n `),!1)}return!(i===d&&!s)||!!(e.renderer||t&&t.renderer||n.renderer)},"checkAudioBidSetup")},8668(e,t,n){n.d(t,{Ay:()=>ge,pX:()=>se});var r=n(6665),i=n(466),o=n(356),s=n(3556),a=n(2201),d=n(1933),c=n(2592);const l="requests",u="wins",g="auctions";let f={};function p(e,t){const n=f[e]=f[e]||{bidders:{}};return t?(n.bidders[t]=n.bidders[t]||{},n.bidders[t]):n}function h(e,t){return function(n,r){const i=p(n,t&&r);return i[e]=(i[e]??0)+1,i[e]}}function m(e,t){return function(n,r){return p(n,t&&r)[e]??0}}const b=h(l,!1),y=h(l,!0),v=h(u,!0),E=h(g,!1),A=m(l,!1),w=m(l,!0),T=m(u,!0),I=m(g,!1);var C=n(867),S=n(1385),B=n(8014),O=n(1418),R=n(7841),U=n(4123),k=n(736),D=n(3202),_=n(5808),$=n(5291),q=n(8928);const x=["data","ext.data","yob","gender","keywords","kwarray","id","buyeruid","customdata"].map(e=>`user.${e}`).concat("device.ext.cdep"),W=["user.eids","user.ext.eids"],j=["user.geo.lat","user.geo.lon","device.geo.lat","device.geo.lon"],N=["device.ip"],P=["device.ipv6"];function M(e){return Object.assign({get(){},run(e,t,n,r,i){const o=n&&n[r];if(function(e){return null!=e&&("object"!=typeof e||Object.keys(e).length>0)}(o)&&i()){const e=this.get(o);void 0===e?delete n[r]:n[r]=e}}},e)}function F(e){return e.forEach(e=>{e.paths=e.paths.map(e=>{const t=e.split("."),n=t.pop();return[t.length>0?t.join("."):null,n]})}),function(t,n){const r=[];for(var i=arguments.length,o=new Array(i>2?i-2:0),s=2;s<i;s++)o[s-2]=arguments[s];const a=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(t){return e.hasOwnProperty(t.name)||(e[t.name]=!!t.applies(...n)),e[t.name]}}(t,...o);return e.forEach(e=>{if(!1!==t[e.name])for(const[i,o]of e.paths){const s=null==i?n:(0,q.A)(n,i);if(r.push(e.run(n,i,s,o,a.bind(null,e))),!1===t[e.name])return}}),r.filter(e=>null!=e)}}function G(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:D.io;return function(n){return!t(e,n)}}function L(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D.io;return[{name:_.DL,paths:x,applies:G(_.DL,e)},{name:_.hq,paths:W,applies:G(_.hq,e)},{name:_.hE,paths:j,applies:G(_.hE,e),get:e=>Math.round(100*(e+Number.EPSILON))/100},{name:_.hE,paths:N,applies:G(_.hE,e),get:e=>function(e){if(!e)return null;const t=e.split(".").map(Number);if(4!=t.length)return null;const n=[];for(let e=0;e<4;e++){const t=Math.max(0,Math.min(8,24-8*e));n.push(255<<8-t&255)}return t.map((e,t)=>e&n[t]).join(".")}(e)},{name:_.hE,paths:P,applies:G(_.hE,e),get:e=>function(e){if(!e)return null;let t=e.split(":").map(e=>parseInt(e,16));for(t=t.map(e=>isNaN(e)?0:e);t.length<8;)t.push(0);if(8!=t.length)return null;const n=[];for(let e=0;e<8;e++){const t=Math.max(0,Math.min(16,64-16*e));n.push(65535<<16-t&65535)}return t.map((e,t)=>e&n[t]).map(e=>e.toString(16)).join(":")}(e)},{name:_.VJ,paths:["source.tid"],applies:G(_.VJ,e)}].map(M)}const z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D.io;const t=F(L(e)),n=F(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D.io;return[{name:_.hq,paths:["userId","userIdAsEids"],applies:G(_.hq,e)},{name:_.VJ,paths:["ortb2Imp.ext.tid"],applies:G(_.VJ,e)}].map(M)}(e));return function(e){const r={};return{ortb2:n=>(t(r,n,e),n),bidRequest:t=>(n(r,t,e),t)}}}();(0,D.qB)(_.VJ,"enableTIDs config",()=>{if(!d.$W.getConfig("enableTIDs"))return{allow:!1,reason:"TIDs are disabled"}});var H=n(2122);const V="pbsBidAdapter",Q={CLIENT:"client",SERVER:"server"},J={isAllowed:D.io,redact:z},K={},Y={},X={};let Z=[];d.$W.getConfig("s2sConfig",e=>{e&&e.s2sConfig&&(Z=(0,r.cy)(e.s2sConfig)?e.s2sConfig:[e.s2sConfig])});const ee=(0,$.ZI)(e=>de.resolveAlias(e));function te(e){return e.configName??e.name}const ne=["nativeParams","nativeOrtbRequest","renderer"];function re(e){let{bidderCode:t,auctionId:n,bidderRequestId:o,adUnits:s,src:a,metrics:d,tids:c}=e;return s.reduce((e,s)=>{const l=s.bids.filter(e=>e.bidder===t);return null==t&&0===l.length&&null!=s.s2sBid&&l.push({bidder:null}),e.push(l.reduce((e,l)=>{c.hasOwnProperty(s.transactionId)||(c[s.transactionId]=(0,i.generateUUID)());const u=null==(l=Object.assign({},l,{ortb2Imp:(0,i.mergeDeep)({},s.ortb2Imp,l.ortb2Imp,{ext:{tid:c[s.transactionId]}})},(0,r.SH)(s,ne))).mediaTypes?s.mediaTypes:l.mediaTypes;return(0,i.isValidMediaTypes)(u)?l=Object.assign({},l,{mediaTypes:u}):(0,i.logError)(`mediaTypes is not correctly configured for adunit ${s.code}`),"client"===a&&y(s.code,t),e.push(Object.assign({},l,{adUnitCode:s.code,transactionId:s.transactionId,adUnitId:s.adUnitId,sizes:u?.banner?.sizes||u?.video?.playerSize||[],bidId:l.bid_id||(0,i.generateUUID)(),bidderRequestId:o,auctionId:n,src:a,metrics:d,auctionsCount:I(s.code),bidRequestsCount:A(s.code),bidderRequestsCount:w(s.code,l.bidder),bidderWinsCount:T(s.code,l.bidder),deferBilling:!!s.deferBilling})),e},[])),e},[]).reduce(i.flatten,[]).filter(e=>""!==e)}const ie=(0,c.A_)("sync",function(e,t){let{getS2SBidders:n=se}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null==t)return e;{const r=n(t);return e.filter(e=>{if(!r.has(e.bidder))return!1;if(null==e.s2sConfigName)return!0;const n=te(t);return(Array.isArray(e.s2sConfigName)?e.s2sConfigName:[e.s2sConfigName]).includes(n)})}},"filterBidsForAdUnit");const oe=(0,c.A_)("sync",(e,t)=>e,"setupAdUnitMediaTypes");function se(e){(0,r.cy)(e)||(e=[e]);const t=new Set([null]);return e.filter(e=>e&&e.enabled).flatMap(e=>e.bidders).forEach(e=>t.add(e)),t}const ae=(0,c.A_)("sync",function(e,t){let{getS2SBidders:n=se}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=n(t);return(0,i.getBidderCodes)(e).reduce((e,t)=>(e[r.has(t)?Q.SERVER:Q.CLIENT].push(t),e),{[Q.CLIENT]:[],[Q.SERVER]:[]})},"partitionBidders"),de={bidderRegistry:K,analyticsRegistry:X,aliasRegistry:Y,makeBidRequests:(0,c.A_)("sync",function(e,t,n,s,a){let c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},l=arguments.length>6?arguments[6]:void 0;l=(0,R.BO)(l),B.Ic(O.qY.BEFORE_REQUEST_BIDS,e),(0,o.nk)(e),e.map(e=>e.code).filter(i.uniques).forEach(E),e.forEach(e=>{(0,r.Qd)(e.mediaTypes)||(e.mediaTypes={}),e.bids=e.bids.filter(e=>!e.bidder||J.isAllowed(_.uc,ee(k.tW,e.bidder))),b(e.code)}),e=oe(e,a);let{[Q.CLIENT]:u,[Q.SERVER]:g}=ae(e,Z);d.$W.getConfig("bidderSequence")===d.Ov&&(u=(0,i.shuffle)(u));const f=(0,C.EN)(),p=[],h=c.global||{},m=c.bidder||{},y={},v={};function A(e,t,n){const r=e.hasOwnProperty(t)?e[t]:n();return null!=t&&(e[t]=r),r}function w(e,t){const n=J.redact(null!=t?t:ee(k.tW,e.bidderCode)),r=A(y,e.bidderCode,i.generateUUID),o=Object.freeze(n.ortb2((0,i.mergeDeep)({},h,m[e.bidderCode],{source:{tid:r}})));return e.ortb2=o,e.bids=e.bids.map(e=>(e.ortb2=o,n.bidRequest(e))),e}Z.forEach(o=>{const s=function(e){return ee(k.tp,V,{[$.XG]:te(e)})}(o);if(o&&o.enabled&&J.isAllowed(_.uc,s)){const{adUnits:a,hasModuleBids:d}=function(e,t){let n=(0,r.Go)(e),o=!1;return n.forEach(e=>{const n=e.bids.filter(e=>e.module===V&&e.params?.configName===te(t));1===n.length?(e.s2sBid=n[0],o=!0,e.ortb2Imp=(0,i.mergeDeep)({},e.s2sBid.ortb2Imp,e.ortb2Imp)):n.length>1&&(0,i.logWarn)(\'Multiple "module" bids for the same s2s configuration; all will be ignored\',n),e.bids=ie(e.bids,t).map(e=>(e.bid_id=(0,i.getUniqueIdentifierStr)(),e))}),n=n.filter(e=>!(t.filterBidderlessCalls&&1===e.bids.length&&null==e.bids[0].bidder||0===e.bids.length&&null==e.s2sBid)),{adUnits:n,hasModuleBids:o}}(e,o),c=(0,i.generateUUID)();(0===g.length&&d?[null]:g).forEach(e=>{const d=A(v,e,()=>({})),u=(0,i.generateUUID)(),g=l.fork(),h=w({bidderCode:e,auctionId:n,bidderRequestId:u,uniquePbsTid:c,bids:re({bidderCode:e,auctionId:n,bidderRequestId:u,adUnits:(0,r.Go)(a),src:O.RW.SRC,metrics:g,tids:d}),auctionStart:t,timeout:o.timeout,src:O.RW.SRC,refererInfo:f,metrics:g},s);0!==h.bids.length&&p.push(h)}),a.forEach(e=>{const t=e.bids.filter(e=>p.find(t=>t.bids.find(t=>t.bidId===e.bid_id)));e.bids=t}),p.forEach(e=>{void 0===e.adUnitsS2SCopy&&(e.adUnitsS2SCopy=a.filter(e=>e.bids.length>0||null!=e.s2sBid))})}});const T=function(e){let t=(0,r.Go)(e);return t.forEach(e=>{e.bids=ie(e.bids,null)}),t=t.filter(e=>0!==e.bids.length),t}(e);return u.forEach(e=>{const o=A(v,e,()=>({})),a=(0,i.generateUUID)(),d=l.fork(),c=w({bidderCode:e,auctionId:n,bidderRequestId:a,bids:re({bidderCode:e,auctionId:n,bidderRequestId:a,adUnits:(0,r.Go)(T),src:"client",metrics:d,tids:o}),auctionStart:t,timeout:s,refererInfo:f,metrics:d}),u=K[e];u||(0,i.logError)(`Trying to make a request for bidder that does not exist: ${e}`),u&&c.bids&&0!==c.bids.length&&p.push(c)}),p.forEach(e=>{S.mW.getConsentData()&&(e.gdprConsent=S.mW.getConsentData()),S.t6.getConsentData()&&(e.uspConsent=S.t6.getConsentData()),S.ad.getConsentData()&&(e.gppConsent=S.ad.getConsentData())}),p},"makeBidRequests"),callBids(e,t,n,r,o,s,c){let l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{};if(!t.length)return void(0,i.logWarn)("callBids executed with no bidRequests. Were they filtered by labels or sizing?");const[u,g]=t.reduce((e,t)=>(e[Number(void 0!==t.src&&t.src===O.RW.SRC)].push(t),e),[[],[]]);var f=[];g.forEach(e=>{for(var t=-1,n=0;n<f.length;++n)if(e.uniquePbsTid===f[n].uniquePbsTid){t=n;break}t<=-1&&f.push(e)});let p=0;Z.forEach(e=>{if(e&&f[p]&&se(e).has(f[p].bidderCode)){const t=(0,a.g4)(s,o?{request:o.request.bind(null,"s2s"),done:o.done}:void 0),d=e.bidders,u=K[e.adapter],h=f[p].uniquePbsTid,m=f[p].adUnitsS2SCopy,b=g.filter(e=>e.uniquePbsTid===h);if(u){const o={ad_units:m,s2sConfig:e,ortb2Fragments:l,requestBidsTimeout:s};if(o.ad_units.length){const e=b.map(e=>(e.start=(0,i.timestamp)(),function(t){t||c(e.bidderRequestId);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];r.apply(e,[t,...i])})),s=(0,i.getBidderCodes)(o.ad_units).filter(e=>d.includes(e));(0,i.logMessage)(`CALLING S2S HEADER BIDDERS ==== ${s.length>0?s.join(", "):\'No bidder specified, using "ortb2Imp" definition(s) only\'}`),b.forEach(e=>{B.Ic(O.qY.BID_REQUESTED,{...e,tid:e.auctionId})}),u.callBids(o,g,n,t=>e.forEach(e=>e(t)),t)}}else(0,i.logError)("missing "+e.adapter);p++}}),u.forEach(e=>{e.start=(0,i.timestamp)();const t=K[e.bidderCode];d.$W.runWithBidder(e.bidderCode,()=>{(0,i.logMessage)("CALLING BIDDER"),B.Ic(O.qY.BID_REQUESTED,e)});const l=(0,a.g4)(s,o?{request:o.request.bind(null,e.bidderCode),done:o.done}:void 0),u=r.bind(e);try{d.$W.runWithBidder(e.bidderCode,t.callBids.bind(t,e,n,u,l,()=>c(e.bidderRequestId),d.$W.callbackWithBidder(e.bidderCode)))}catch(t){(0,i.logError)(`${e.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`,{e:t,bidRequest:e}),u()}})},videoAdapters:[],registerBidAdapter(e,t){let{supportedMediaTypes:n=[]}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e&&t?"function"==typeof e.callBids?(K[t]=e,S.o2.register(k.tW,t,e.getSpec?.().gvlid),n.includes("video")&&de.videoAdapters.push(t),n.includes("native")&&o.mT.push(t)):(0,i.logError)("Bidder adaptor error for bidder code: "+t+"bidder must implement a callBids() function"):(0,i.logError)("bidAdapter or bidderCode not specified")},aliasBidAdapter(e,t,n){if(void 0===K[t]){const r=K[e];if(void 0===r){const n=[];Z.forEach(r=>{if(r.bidders&&r.bidders.length){const i=r&&r.bidders;r&&i.includes(t)?Y[t]=e:n.push(e)}}),n.forEach(e=>{(0,i.logError)(\'bidderCode "\'+e+\'" is not an existing bidder.\',"adapterManager.aliasBidAdapter")})}else try{let a;const d=function(e){const t=[];de.videoAdapters.includes(e)&&t.push("video");o.mT.includes(e)&&t.push("native");return t}(e);if(r.constructor.prototype!=Object.prototype)a=new r.constructor,a.setBidderCode(t);else{const{useBaseGvlid:o=!1}=n||{},d=r.getSpec(),c=o?d.gvlid:n?.gvlid;null==c&&null!=d.gvlid&&(0,i.logWarn)(`Alias \'${t}\' will NOT re-use the GVL ID of the original adapter (\'${d.code}\', gvlid: ${d.gvlid}). Functionality that requires TCF consent may not work as expected.`);const l=n&&n.skipPbsAliasing;a=(0,s.xb)(Object.assign({},d,{code:t,gvlid:c,skipPbsAliasing:l})),Y[t]=e}de.registerBidAdapter(a,t,{supportedMediaTypes:d})}catch(t){(0,i.logError)(e+" bidder does not currently support aliasing.","adapterManager.aliasBidAdapter")}}else(0,i.logMessage)(\'alias name "\'+t+\'" has been already specified.\')},resolveAlias(e){let t,n=e;for(;Y[n]&&(!t||!t.has(n));)n=Y[n],(t=t||new Set).add(n);return n},registerAnalyticsAdapter(e){let{adapter:t,code:n,gvlid:r}=e;t&&n?"function"==typeof t.enableAnalytics?(t.code=n,X[n]={adapter:t,gvlid:r},S.o2.register(k.Tn,n,r)):(0,i.logError)(`Prebid Error: Analytics adaptor error for analytics "${n}"\\n analytics adapter must implement an enableAnalytics() function`):(0,i.logError)("Prebid Error: analyticsAdapter or analyticsCode not specified")},enableAnalytics(e){(0,r.cy)(e)||(e=[e]),e.forEach(e=>{const t=X[e.provider];t&&t.adapter?J.isAllowed(_.mo,ee(k.Tn,e.provider,{[$.TQ]:e}))&&t.adapter.enableAnalytics(e):(0,i.logError)(`Prebid Error: no analytics adapter found in registry for \'${e.provider}\'.`)})},getBidAdapter:e=>K[e],getAnalyticsAdapter:e=>X[e],callTimedOutBidders(e,t,n){t=t.map(t=>(t.params=(0,i.getUserConfiguredParams)(e,t.adUnitCode,t.bidder),t.timeout=n,t)),t=(0,i.groupBy)(t,"bidder"),Object.keys(t).forEach(e=>{ue(e,"onTimeout",t[e])})},callBidWonBidder(e,t,n){t.params=(0,i.getUserConfiguredParams)(n,t.adUnitCode,t.bidder),v(t.adUnitCode,t.bidder),ue(e,"onBidWon",t)},triggerBilling:(()=>{const e=new WeakSet;return t=>{e.has(t)||(e.add(t),((0,H.$T)(t.eventtrackers)[H.OA]?.[H.Ni]||[]).forEach(e=>i.internal.triggerPixel(e)),ue(t.bidder,"onBidBillable",t))}})(),callSetTargetingBidder(e,t){ue(e,"onSetTargeting",t)},callBidViewableBidder(e,t){ue(e,"onBidViewable",t)},callBidderError(e,t,n){ue(e,"onBidderError",{error:t,bidderRequest:n})},callAdRenderSucceededBidder(e,t){ue(e,"onAdRenderSucceeded",t)},callDataDeletionRequest:(0,c.A_)("sync",function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const r="onDataDeletionRequest";Object.keys(K).filter(e=>!Y.hasOwnProperty(e)).forEach(e=>{const n=ce(e,r);if(null!=n){const i=U.n.getBidsRequested().filter(t=>function(e){const t=new Set;for(;Y.hasOwnProperty(e)&&!t.has(e);)t.add(e),e=Y[e];return e}(t.bidderCode)===e);le(e,r,...n,i,...t)}}),Object.entries(X).forEach(e=>{let[n,o]=e;const s=o?.adapter?.[r];if("function"==typeof s)try{s.apply(o.adapter,t)}catch(e){(0,i.logError)(`error calling ${r} of ${n}`,e)}})})};function ce(e,t){const n=K[e],r=n?.getSpec&&n.getSpec();if(r&&r[t]&&"function"==typeof r[t])return[r,r[t]]}function le(e,t,n,r){try{(0,i.logInfo)(`Invoking ${e}.${t}`);for(var o=arguments.length,s=new Array(o>4?o-4:0),a=4;a<o;a++)s[a-4]=arguments[a];d.$W.runWithBidder(e,r.bind(n,...s))}catch(n){(0,i.logWarn)(`Error calling ${t} of ${e}`)}}function ue(e,t,n){if(n?.source!==O.RW.SRC){const r=ce(e,t);null!=r&&le(e,t,...r,n)}}const ge=de},9236(e,t,n){function r(e,t){return e===t?0:e<t?-1:1}function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e=>e;return(t,n)=>r(e(t),e(n))}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;return(t,n)=>-e(t,n)||0}function s(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,n){for(const r of t){const t=r(e,n);if(0!==t)return t}return 0}}function a(){return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;return(t,n)=>e(n,t)<0?n:t}(o(arguments.length>0&&void 0!==arguments[0]?arguments[0]:r))}n.d(t,{Bq:()=>u,Vk:()=>l});const d=i(e=>e.cpm),c=i(e=>e.responseTimestamp),l=a(s(d,o(i(e=>e.timeToRespond)))),u=a(s(d,o(c)));a(s(d,c))},9794(e,t,n){n.d(t,{D4:()=>o,FY:()=>a,G_:()=>i,LM:()=>s,s6:()=>r});const r="native",i="video",o="banner",s="adpod",a="audio"}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[769],{183(t,n,e){e.d(n,{M:()=>c});var i=e(466);function c(){const t=(0,i.getWinDimensions)();try{const n=t.innerHeight||t.document.documentElement.clientHeight||t.document.body.clientHeight||0;return{width:t.innerWidth||t.document.documentElement.clientWidth||t.document.body.clientWidth||0,height:n}}catch(t){return{}}}}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[85],{3293(e,t,n){n.d(t,{G:()=>r});const r=\'(()=>{"use strict";window.render=function(e,t,n){let{ad:r,adUrl:i,width:o,height:d,instl:h}=e,{mkFrame:l}=t;if(!r&&!i){const e=new Error("Missing ad markup or URL");throw e.reason="noAd",e}{if(null==d){const e=n.document?.body;[e,e?.parentElement].filter(e=>null!=e?.style).forEach(e=>{e.style.height="100%"})}const e=n.document,t={width:o??"100%",height:d??"100%"};if(i&&!r?t.src=i:t.srcdoc=r,e.body.appendChild(l(e,t)),h&&n.frameElement){const e=n.frameElement.style;e.width=o?`${o}px`:"100vw",e.height=d?`${d}px`:"100vh"}}}})();\'}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[117],{611(e,t,r){r.d(t,{A:()=>f});const n=new WeakMap;var i=r(466),o=r(9794);var s=r(6220);const a={1:o.D4,2:o.G_,4:o.s6};var d=r(6665);var p=r(2517),c=r(1833),u=r(8417);const m={[p.S3]:{fpd:{priority:99,fn(e,t){(0,i.mergeDeep)(e,t.ortb2)}},onlyOneClient:{priority:-99,fn:(0,c.i8)("ORTB request")},props:{fn(e,t){Object.assign(e,{id:e.id||(0,i.generateUUID)(),test:e.test||0});const r=parseInt(t.timeout,10);isNaN(r)||(e.tmax=r)}}},[p.Tb]:{fpd:{priority:99,fn(e,t){(0,i.mergeDeep)(e,t.ortb2Imp)}},id:{fn(e,t){e.id=t.bidId}},banner:{fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.D4)return;const n=t?.mediaTypes?.banner;if(n){const r={topframe:!0===(0,i.inIframe)()?0:1};n.sizes&&null==t.ortb2Imp?.banner?.format&&(r.format=(0,i.sizesToSizeTuples)(n.sizes).map(i.sizeTupleToRtbSize)),n.hasOwnProperty("pos")&&(r.pos=n.pos),e.banner=(0,i.mergeDeep)(r,e.banner)}}},secure:{fn(e,t){e.secure=e.secure??1}}},[p.WR]:{mediaType:{priority:99,fn:function(e,t,r){if(e.mediaType)return;const n=r.mediaType;if(!n&&!a.hasOwnProperty(t.mtype))throw new Error("Cannot determine mediaType for response");e.mediaType=n||a[t.mtype]}},banner:{fn:function(){let{createPixel:e=e=>(0,i.createTrackPixelHtml)(decodeURIComponent(e),i.encodeMacroURI)}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,r){t.mediaType===o.D4&&(r.adm&&r.nurl?t.ad=e(r.nurl)+r.adm:r.adm?t.ad=r.adm:r.nurl&&(t.adUrl=r.nurl))}}()},props:{fn(e,t,r){Object.entries({requestId:r.bidRequest?.bidId,seatBidId:t.id,cpm:t.price,currency:r.ortbResponse.cur||r.currency,width:t.w,height:t.h,wratio:t.wratio,hratio:t.hratio,dealId:t.dealid,creative_id:t.crid,creativeId:t.crid,burl:t.burl,ttl:t.exp||r.ttl,netRevenue:r.netRevenue}).filter(e=>{let[t,r]=e;return void 0!==r}).forEach(t=>{let[r,n]=t;e[r]=n}),e.meta||(e.meta={}),t.adomain&&(e.meta.advertiserDomains=t.adomain),t.ext?.dsa&&(e.meta.dsa=t.ext.dsa),t.cat&&(e.meta.primaryCatId=t.cat[0],e.meta.secondaryCatIds=t.cat.slice(1)),t.attr&&(e.meta.attr=t.attr),t.ext?.eventtrackers&&(e.eventtrackers=(e.eventtrackers??[]).concat(t.ext.eventtrackers))}}}};function l(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];const n=t.shift(),i=t.length>1?l(...t):t[0];return Object.fromEntries(p.zt.map(e=>[e,Object.assign({},n[e],i[e])]))}function f(){let{context:e={},processors:t=b,overrides:r={},imp:o,request:s,bidResponse:a,response:d}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const c=new WeakMap;function u(e,i,o,s){let a;return function(){null==a&&(a=function(){let a=o.bind(this,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!n.has(e)){const t=Object.entries(e);t.sort((e,t)=>(e=e[1].priority||0)===(t=t[1].priority||0)?0:e>t?-1:1),n.set(e,t.map(e=>{let[t,r]=e;return[t,r.fn]}))}const r=n.get(e).filter(e=>{let[r]=e;return!t.hasOwnProperty(r)||t[r]}).map(function(e){let[r,n]=e;return t.hasOwnProperty(r)?t[r].bind(this,n):n});return function(){const e=Array.from(arguments);r.forEach(t=>{t.apply(this,e)})}}(t()[e]||{},r[e]||{}));return i&&(a=i.bind(this,a)),function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];try{return a.apply(this,t)}catch(e){s.call(this,e,...t)}}}());for(var d=arguments.length,p=new Array(d),c=0;c<d;c++)p[c]=arguments[c];return a.apply(this,p)}}const m=u(p.Tb,o,function(e,t,r){const n={};return e(n,t,r),n},function(e,t,r){(0,i.logError)("Error while converting bidRequest to ORTB imp; request skipped.",{error:e,bidRequest:t,context:r})}),l=u(p.S3,s,function(e,t,r,n){const i={imp:t};return e(i,r,n),i},function(e,t,r,n){throw(0,i.logError)("Error while converting to ORTB request",{error:e,imps:t,bidderRequest:r,context:n}),e}),f=u(p.WR,a,function(e,t,r){const n={};return e(n,t,r),n},function(e,t,r){(0,i.logError)("Error while converting ORTB seatbid.bid to bidResponse; bid skipped.",{error:e,bid:t,context:r})}),y=u(p.Cf,d,function(e,t,r,n){const i={bids:t};return e(i,r,n),i},function(e,t,r,n){throw(0,i.logError)("Error while converting from ORTB response",{error:e,bidResponses:t,ortbResponse:r,context:n}),e});return{toORTB(t){let{bidderRequest:r,bidRequests:n,context:o={}}=t;n=n||r.bids;const s={req:Object.assign({bidRequests:n},e,o),imp:{}};s.req.impContext=s.imp;const a=n.map(t=>{const n=Object.assign({bidderRequest:r,reqContext:s.req},e,o),a=m(t,n);if(null!=a){if(a.hasOwnProperty("id"))return Object.assign(n,{bidRequest:t,imp:a}),s.imp[a.id]=n,a;(0,i.logError)("Converted ORTB imp does not specify an id, ignoring bid request",t,a)}}).filter(Boolean),d=l(a,r,s.req);return s.req.bidderRequest=r,null!=d&&c.set(d,s),d},fromORTB(e){let{request:t,response:r}=e;const n=c.get(t);if(null==n)throw new Error("ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`");function o(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign(e,{ortbRequest:t},r)}const s=Object.fromEntries((t.imp||[]).map(e=>[e.id,e])),a=(r?.seatbid||[]).flatMap(e=>(e.bid||[]).map(t=>{if(s.hasOwnProperty(t.impid)&&n.imp.hasOwnProperty(t.impid))return f(t,o(n.imp[t.impid],{imp:s[t.impid],seatbid:e,ortbResponse:r}));(0,i.logError)("ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid",t)})).filter(Boolean);return y(a,r,o(n.req))}}}m[p.Tb].native={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.s6)return;let n=t.nativeOrtbRequest;n&&(n=Object.assign({},r.nativeRequest,n),n.assets?.length?e.native=(0,i.mergeDeep)({},{request:JSON.stringify(n),ver:n.ver},e.native):(0,i.logWarn)("mediaTypes.native is set, but no assets were specified. Native request skipped.",t))}},m[p.WR].native={fn:function(e,t){if(e.mediaType===o.s6){let r;if(r="string"==typeof t.adm?JSON.parse(t.adm):t.adm,!(0,d.Qd)(r)||!Array.isArray(r.assets))throw new Error("ORTB native response contained no assets");e.native={ortb:r}}}},m[p.Tb].video={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.G_)return;const n=t?.mediaTypes?.video;if(!(0,i.isEmpty)(n)){const t=Object.fromEntries(Object.entries(n).filter(e=>{let[t]=e;return s.Zy.has(t)}));if(n.playerSize){const e=(0,i.sizesToSizeTuples)(n.playerSize).map(i.sizeTupleToRtbSize);e.length>1&&(0,i.logWarn)("video request specifies more than one playerSize; all but the first will be ignored"),Object.assign(t,e[0])}e.video=(0,i.mergeDeep)(t,e.video)}}},m[p.WR].video={fn:function(e,t,r){e.mediaType===o.G_&&(r?.imp?.video?.w&&r?.imp?.video?.h&&([e.playerWidth,e.playerHeight]=[r.imp.video.w,r.imp.video.h]),t.adm&&(e.vastXml=t.adm),t.nurl&&(e.vastUrl=t.nurl))}},m[p.Tb].audio={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.FY)return;const n=t?.mediaTypes?.audio;if(!(0,i.isEmpty)(n)){const t=Object.fromEntries(Object.entries(n).filter(e=>{let[t]=e;return u.Ai.has(t)}));e.audio=(0,i.mergeDeep)(t,e.audio)}}},m[p.WR].audio={fn:function(e,t){e.mediaType===o.FY&&(t.adm&&(e.vastXml=t.adm),t.nurl&&(e.vastUrl=t.nurl))}};const b=(0,i.memoize)(()=>l(m,(0,p.yB)(p.qN)))}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[889],{9547(e,r,n){n.d(r,{FE:()=>c});var t=n(466),s=n(8928),o=n(3435);const u=Object.freeze([...["device.sua","source.schain","regs.gdpr","regs.us_privacy","regs.gpp","regs.gpp_sid","user.consent","user.eids"].map(e=>function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e,r)=>`${e}.ext.${r}`;const[n,t]=function(e){const r=e.split(".");return[r.slice(0,r.length-1).join("."),r[r.length-1]]}(e);return r=r(n,t),e=>{const u=(0,s.A)(e,n);if(null!=u?.[t])return(0,o.J)(e,r,u[t]),()=>delete u[t]}}(e)),...["app","content","site","user"].map(function(e){return r=>{const n=r[e]?.kwarray;if(null!=n){const t=(r[e].keywords||"").split(",");return Array.isArray(n)&&t.push(...n),r[e].keywords=t.join(","),()=>delete r[e].kwarray}}})]);function c(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u;return function(n){return r.forEach(r=>{try{const t=r(n);"function"==typeof t&&e&&t()}catch(e){(0,t.logError)("Error translating request to ORTB 2.5",e)}}),n}}c()}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[829],{196(e,t,i){var r=i(1748),o=i(466),a=i(8928),n=i(3435),s=i(6665),d=i(3556),p=i(9794),l=i(1443),c=i(867),u=i(3448),m=i(7464),v=i(6220),g=i(2201),f=i(611),y=i(9547),b=i(1933);const h="criteo",I="https://grid-bidder.criteo.com/openrtb_2_5/pbjs/auction/request",T=(0,l.vM)({bidderCode:h}),k="Criteo: ",x=(0,y.FE)(),C="https://static.criteo.net/js/ld/publishertag.renderer.js",S="cto_optout",E="cto_bundle",w=!0,P=(0,f.A)({context:{netRevenue:!0,ttl:60},imp:function(e,t,i){const r=e(t,i),o=t.params;r.tagid=t.adUnitCode,(0,n.J)(r,"ext",{...t.params.ext,...r.ext,rwdd:r.rwdd,floors:L(t),bidder:{publishersubid:o?.publisherSubId,zoneid:o?.zoneId,uid:o?.uid}}),delete r.rwdd,!i.fledgeEnabled&&r.ext.igs?.ae&&delete r.ext.igs.ae;if(J(t)){const e=t.params.video;void 0!==e&&(0,n.J)(r,"video",{...r.video,skip:r.video.skip||e.skip||0,placement:r.video.placement||e.placement,minduration:r.video.minduration||e.minduration,playbackmethod:r.video.playbackmethod||e.playbackmethod,startdelay:r.video.startdelay||e.startdelay||0}),(0,n.J)(r,"video.ext",{context:t.mediaTypes.video.context,playersizes:$(t?.mediaTypes?.video?.playerSize,z),plcmt:t.mediaTypes.video.plcmt,poddur:t.mediaTypes.video.adPodDurationSec,rqddurs:t.mediaTypes.video.durationRangeSec})}if(r.native&&void 0!==r.native.request){const e=JSON.parse(r.native.request);e.assets&&(1!==e.assets.length||Object.keys(e.assets[0]).length)||delete e.assets,(0,n.J)(r,"native.request_native",e),delete r.native.request}return r},request:function(e,t,i,r){let o=e(t,i,r);void 0!==r.publisherId&&(void 0!==o.app?(0,n.J)(o,"app.publisher.id",r.publisherId):(0,n.J)(o,"site.publisher.id",r.publisherId));i&&i.gdprConsent&&(0,n.J)(o,"regs.ext.gdprversion",i.gdprConsent.apiVersion);return o=x(o),o},bidResponse:function(e,t,i){i.mediaType=t?.ext?.mediatype,i.mediaType===p.s6&&void 0!==t.adm_native&&(t.adm=t.adm_native,delete t.adm_native);const r=e(t,i),{bidRequest:o}=i;r.currency=t?.ext?.cur,void 0!==t?.ext?.meta&&(0,n.J)(r,"meta",{...r.meta,...t.ext.meta});void 0!==t?.ext?.paf?.content_id&&(0,n.J)(r,"meta.paf.content_id",t.ext.paf.content_id);r.mediaType===p.G_&&(r.vastUrl=t.ext?.displayurl,o?.mediaTypes?.video?.context===v.H6&&(r.renderer=function(e){if(void 0===e.ext?.videoPlayerConfig||void 0===e.ext?.videoPlayerType)return;const t={documentResolver:(e,t,i)=>i??t},i=(t,i)=>{const r={slotid:e.id,vastUrl:e.ext?.displayurl,vastXml:e.adm,documentContext:i},o=e.ext.videoPlayerConfig;window.CriteoOutStream[e.ext.videoPlayerType].play(r,o)},r=m.A4.install({url:C,config:t});return r.setRender(i),r}(t)));return r},response:function(e,t,i,r){const o=e(t,i,r),a=i?.ext?.paf?.transmission;return o.bids.forEach(e=>{void 0!==a&&void 0!==e?.meta?.paf?.content_id?(0,n.J)(e,"meta.paf.transmission",a):delete e.meta.paf}),o}});const q={code:h,gvlid:91,supportedMediaTypes:[p.D4,p.G_,p.s6],getUserSyncs:function(e,t,i,r){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const{gppString:n="",applicableSections:s=[]}=a,d=(0,c.EN)(),p="criteoPrebidAdapter";if(e.iframeEnabled&&(0,u.C)(i)){const l=[];if(l.push(`origin=${p}`),l.push(`topUrl=${d.domain}`),i&&(i.gdprApplies&&l.push("gdpr="+(1==i.gdprApplies?1:0)),i.consentString&&l.push(`gdpr_consent=${i.consentString}`)),r&&l.push(`us_privacy=${r}`),l.push(`gpp=${n}`),Array.isArray(s))for(const y of s)l.push(`gpp_sid=${y}`);const m=Math.random().toString(),v={bundle:R(E),cw:T.cookiesAreEnabled(),lsw:T.localStorageIsEnabled(),optoutCookie:R(S),origin:p,requestId:m,tld:d.domain,topUrl:d.domain,version:"10.9.0".replace(/\\./g,"_")};function g(e){if(!e.data||"https://gum.criteo.com"!=e.origin)return;if(e.data.requestId!==m)return;window.removeEventListener("message",g,!0),e.stopImmediatePropagation();const t=e.data;t.optout?(A(E),U(S,!0,43200,d.domain)):(t.bundle&&U(E,t.bundle,9360,d.domain),t?.callbacks?.forEach?.(o.triggerPixel))}window.removeEventListener("message",g,!0),window.addEventListener("message",g,!0);const f=JSON.stringify(v).replace(/"/g,"%22");return[{type:"iframe",url:`https://gum.criteo.com/syncframe?${l.join("&")}#${f}`}]}if(e.pixelEnabled&&(0,u.C)(i)){const b=[];if(b.push("profile=207"),i&&(!0===i.gdprApplies&&b.push("gdprapplies=true"),i.consentString&&b.push(`gdpr=${i.consentString}`)),r&&b.push(`ccpa=${r}`),b.push(`gpp=${n}`),Array.isArray(s))for(const h of s)b.push(`gpp_sid=${h}`);return[{type:"image",url:`https://ssp-sync.criteo.com/user-sync/redirect?${b.join("&")}`}]}return[]},isBidRequestValid:e=>!(!e||!e.params||!e.params.zoneId&&!e.params.networkId)&&!(J(e)&&!function(e){let t=!0;return["mimes","playerSize","maxduration","protocols","api","skip","placement","playbackmethod"].forEach(function(i){"placement"===i?void 0===e?.mediaTypes?.video?.[i]&&void 0===e?.params?.video?.[i]&&void 0===e?.mediaTypes?.video?.plcmt&&void 0===e?.params?.video?.plcmt&&(t=!1,(0,o.logError)("Criteo Bid Adapter: mediaTypes.video."+i+" or mediaTypes.video.plcmt is required")):void 0===e?.mediaTypes?.video?.[i]&&void 0===e?.params?.video?.[i]&&(t=!1,(0,o.logError)("Criteo Bid Adapter: mediaTypes.video."+i+" is required"))}),t}(e)),buildRequests:(e,t)=>{e.forEach(e=>{(function(e){return void 0!==e?.mediaTypes?.native})(e)&&(function(e){return!(e.nativeParams&&(e.nativeParams.image&&!0!==e.nativeParams.image.sendId||e.nativeParams.icon&&!0!==e.nativeParams.icon.sendId||e.nativeParams.clickUrl&&!0!==e.nativeParams.clickUrl.sendId||e.nativeParams.displayUrl&&!0!==e.nativeParams.displayUrl.sendId||e.nativeParams.privacyLink&&!0!==e.nativeParams.privacyLink.sendId||e.nativeParams.privacyIcon&&!0!==e.nativeParams.privacyIcon.sendId))}(e)||(0,o.logWarn)(k+"all native assets containing URL should be sent as placeholders with sendId(icon, image, clickUrl, displayUrl, privacyLink, privacyIcon)"),null==e?.nativeOrtbRequest?.assets&&((0,o.logWarn)(k+"native asset requirements are missing"),(0,n.J)(e,"nativeOrtbRequest.assets",[{}])))});const i=function(e,t){const i=(0,o.parseUrl)(t?.refererInfo?.topmostLocation).search;return{url:t?.refererInfo?.page||"",debug:"1"===i.pbt_debug,noLog:"1"===i.pbt_nolog,fledgeEnabled:t.paapi?.enabled,amp:e.some(e=>"amp"===e.params.integrationMode),networkId:e.find(e=>e.params?.networkId)?.params.networkId,publisherId:e.find(e=>e.params?.pubid)?.params.pubid}}(e,t),r=function(e){let t=I;t+="?profileId=207",t+="&av="+String(37),t+="&wv="+encodeURIComponent("10.9.0"),t+="&cb="+String(Math.floor(99999999999*Math.random())),T.localStorageIsEnabled()?t+="&lsavail=1":t+="&lsavail=0";e.amp&&(t+="&im=1");e.debug&&(t+="&debug=1");e.noLog&&(t+="&nolog=1");const i=R(E);i&&(t+=`&bundle=${i}`);R(S)&&(t+="&optout=1");e.networkId&&(t+="&networkId="+e.networkId);return t}(i),a=P.toORTB({bidderRequest:t,bidRequests:e,context:i});if(a)return{method:"POST",url:r,data:a,bidRequests:e,options:{endpointCompression:_()}}},interpretResponse:(e,t)=>{if(void 0===e?.body)return[];const i=P.fromORTB({response:e.body,request:t.data}).bids||[],r=e.body?.ext?.igi?.filter(e=>(0,s.cy)(e?.igs)).flatMap(e=>e.igs);return r?.length?{bids:i,paapi:r}:i},onDataDeletionRequest:e=>{const t=R(E);t&&(A(E),(0,g.RD)("https://privacy.criteo.com/api/privacy/datadeletionrequest",null,JSON.stringify({publisherUserId:t}),{contentType:"application/json",method:"POST"}))}};function _(){try{const e=(0,a.A)(b.$W.getBidderConfig(),"criteo.gzipEnabled");if(void 0!==e){const t=String(e).toLowerCase().trim();if("true"===t||"false"===t){const e="true"===t;return(0,o.logInfo)("Criteo: Using bidder-specific gzipEnabled setting:",e),e}(0,o.logWarn)("Criteo: Invalid gzipEnabled value in bidder config:",e)}}catch(e){(0,o.logWarn)("Criteo: Error accessing bidder config:",e)}return(0,o.logInfo)("Criteo: Using default gzipEnabled setting:",w),w}function R(e){const t=T.getCookie(e),i=T.getDataFromLocalStorage(e);return t||i||void 0}function U(e,t,i,r){const o=new Date;o.setTime(o.getTime()+60*i*60*1e3);const a=`expires=${o.toUTCString()}`,n=r.split(".");for(let i=0;i<n.length;++i){const r=n.slice(n.length-i-1,n.length).join(".");try{T.setCookie(e,t,a,null,"."+r);const i=T.getCookie(e);if(i&&i===t)break}catch(e){}}T.setDataInLocalStorage(e,t)}function A(e){T.setCookie(e,"",0),T.removeDataFromLocalStorage(e)}function $(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return null==e?[]:Array.isArray(e[0])?e.map(e=>t(e)):[t(e)]}function z(e){return e[0]+"x"+e[1]}function J(e){return void 0!==e?.mediaTypes?.video}function L(e){try{const t={},i=function(e){if(e.getFloor)return e.getFloor;if(e.params.bidFloor&&e.params.bidFloorCur)try{const t=parseFloat(e.params.bidFloor);return()=>({currency:e.params.bidFloorCur,floor:t})}catch{}}(e);if(i){if(e.mediaTypes?.banner){t.banner={};$(e?.mediaTypes?.banner?.sizes).forEach(r=>{t.banner[z(r).toString()]=i.call(e,{size:r,mediaType:p.D4})})}if(e.mediaTypes?.video){t.video={};$(e?.mediaTypes?.video?.playerSize).forEach(r=>{t.video[z(r).toString()]=i.call(e,{size:r,mediaType:p.G_})})}return e.mediaTypes?.native&&(t.native={},t.native["*"]=i.call(e,{size:"*",mediaType:p.s6})),t}}catch(e){(0,o.logError)("Could not parse floors from Prebid: "+e)}}(0,d.a$)(q),(0,r.E)("criteoBidAdapter")}},e=>{e.O(0,[802,769,85,117,889],()=>{return t=196,e(e.s=t);var t});e.O()}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[879],{3686(e,t,n){var a=n(1748),r=n(1933),s=n(3556),o=n(8928),p=n(3435),i=n(466),d=n(9794),m=n(611);const u={code:"openx",gvlid:69,supportedMediaTypes:[d.D4,d.G_,d.s6],isBidRequestValid:function(e){const t=e.params.delDomain||e.params.platform;if(o.A(e,"mediaTypes.banner")&&t)return!!e.params.unit||o.A(e,"mediaTypes.banner.sizes.length")>0;return!(!e.params.unit||!t)},buildRequests:function(e,t){const n=e.filter(e=>b(e)),a=e.filter(e=>function(e){const t=!b(e)&&!f(e);return o.A(e,"mediaTypes.banner")||t}(e)||f(e)).map(e=>({...e,mediaTypes:{...e.mediaTypes,video:void 0}})),r=a.length?[c(a,t,null)]:[];return n.forEach(e=>{r.push(c([e],t,d.G_))}),r},interpretResponse:function(e,t){e.body||(e.body={nbr:0});return l.fromORTB({request:t.data,response:e.body})},getUserSyncs:function(e,t,n,a,r){if(e.iframeEnabled||e.pixelEnabled){const s=e.iframeEnabled?"iframe":"image",o=[];let p="https://u.openx.net/w/1.0/pd";if(n&&(o.push("gdpr="+(n.gdprApplies?1:0)),o.push("gdpr_consent="+encodeURIComponent(n.consentString||""))),a&&o.push("us_privacy="+encodeURIComponent(a)),r?.gppString&&r?.applicableSections?.length&&(o.push("gpp="+encodeURIComponent(r.gppString)),o.push("gpp_sid="+r.applicableSections.join(","))),t.length>0&&t[0].body&&t[0].body.ext){const e=t[0].body.ext;e.delDomain?p=`https://${e.delDomain}/w/1.0/pd`:e.platform&&o.push("ph="+e.platform)}else o.push("ph=2d1251ae-7f3a-47cf-bd2a-2f288854a0ba");return[{type:s,url:`${p}${o.length>0?"?"+o.join("&"):""}`}]}}};(0,s.a$)(u);const l=(0,m.A)({context:{netRevenue:!0,ttl:300,nativeRequest:{eventtrackers:[{event:1,methods:[1,2]}]}},imp(e,t,n){const a=e(t,n);return(0,i.mergeDeep)(a,{tagid:t.params.unit,ext:{divid:t.adUnitCode}}),t.params.customParams&&p.J(a,"ext.customParams",t.params.customParams),t.params.customFloor&&!a.bidfloor&&(a.bidfloor=t.params.customFloor),a},request(e,t,n,a){const r=e(t,n,a);(0,i.mergeDeep)(r,{at:1,ext:{bc:"hb_pb_ortb_2.0",pv:"10.9.0"}});const s=a.bidRequests[0];return s.params.coppa&&p.J(r,"regs.coppa",1),s.params.doNotTrack&&p.J(r,"device.dnt",1),s.params.platform&&p.J(r,"ext.platform",s.params.platform),s.params.delDomain&&p.J(r,"ext.delDomain",s.params.delDomain),s.params.response_template_name&&p.J(r,"ext.response_template_name",s.params.response_template_name),s.params.test&&(r.test=1),r},bidResponse(e,t,n){const a=e(t,n);return t.ext&&(a.meta.networkId=t.ext.dsp_id,a.meta.advertiserId=t.ext.buyer_id,a.meta.brandId=t.ext.brand_id),a},response(e,t,n,a){const{ortbRequest:r}=a;r.ext&&(r.ext.delDomain&&p.J(n,"ext.delDomain",r.ext.delDomain),r.ext.platform&&p.J(n,"ext.platform",r.ext.platform));const s=e(t,n,a);let d=o.A(n,"ext.fledge_auction_configs");return d?(d=Object.entries(d).map(e=>{let[t,n]=e;return{bidId:t,config:(0,i.mergeDeep)(Object.assign({},n),{auctionSignals:{ortb2Imp:a.impContext[t]?.imp}})}}),{bids:s.bids,paapi:d}):s},overrides:{imp:{bidfloor(e,t,n,a){const r={};e(r,n,{...a,currency:"USD"}),"USD"===r.bidfloorcur&&Object.assign(t,r)},video(e,t,n,a){{let r=n.mediaTypes[d.G_];r&&(r=Object.assign({},r,n.params.video),n={...n,mediaTypes:{[d.G_]:r}}),e(t,n,a)}}}}});function c(e,t,n){return{method:"POST",url:r.$W.getConfig("openxOrtbUrl")||"https://rtb.openx.net/openrtbb/prebidjs",data:l.toORTB({bidRequests:e,bidderRequest:t,context:{mediaType:n}})}}function b(e){return o.A(e,"mediaTypes.video")}function f(e){return o.A(e,"mediaTypes.native")}(0,a.E)("openxBidAdapter")}},e=>{e.O(0,[802,769,85,117],()=>{return t=3686,e(e.s=t);var t});e.O()}]);\n})(),pbjs.processQueue();\n\n//# sourceURL=webpack://@wrapp/wrapper/../builds/8EFA792FE841A/0.0.7/prebid.js?')},"../node_modules/css-loader/dist/cjs.js!./css/sticky.css":(module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "../node_modules/css-loader/dist/runtime/noSourceMaps.js");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "../node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.ad-anchor {\n box-sizing: border-box;\n z-index: 9999;\n background-color: #f0f0f0;\n border: 1px dotted #ccc;\n place-items: center;\n padding: 5px;\n transition: all 0.3s ease;\n display: flex;\n align-items: flex-start;\n justify-content: space-between; /* space between .ad-slot and .ad-action-buttons */\n}\n\n.ad-slot {\n flex-grow: 1; /* take up remaining space in center */\n flex-shrink: 1;\n color: #888; /* text color */\n text-align: center; /* center-align content inside div */\n display: flex;\n align-items: center; /* vertically center align all children */\n justify-content: center; /* horizontally center align all children */\n overflow: hidden;\n}\n\n.ad-action-buttons {\n display: flex; /* use flexbox for the buttons */\n gap: 5px; /* add 5px horizontal gap between buttons */\n flex-shrink: 0;\n}\n\n.ad-action-btn {\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n color: #888;\n background: #f0f0f0;\n border: 1px solid #ccc;\n font-size: 20px;\n font-weight: normal;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n line-height: 18px;\n text-align: center;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n/* top sticky ad */\n.ad-TP {\n position: sticky;\n top: 0;\n left: 0;\n width: calc(100vw - 25px);\n height: auto;\n min-height: 10vh; /* minimum height 10% of viewport */\n max-height: 30vh; /* maximum height 30% of viewport */\n}\n\n/* bottom sticky ad */\n.ad-BM {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%; /* "fixed" position width goes by view port */\n height: auto;\n min-height: 10vh; /* minimum height 10% of viewport */\n max-height: 30vh; /* maximum height 30% of viewport */\n/* \n max-width: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-left: calc(-50vw + 50%); */\n}\n\n/* right rail sticky ad */\n.ad-RG {\n position: fixed;\n top: 50%;\n right: 0;\n width: 300px;\n height: 600px;\n transform: translateY(-50%);\n}\n\n/* left rail sticky ad */\n.ad-LF {\n position: fixed;\n top: 50%;\n left: 0;\n width: 300px;\n height: 600px;\n transform: translateY(-50%);\n}\n\n/* minimized states */\n.horizontal-minimized {\n height: 30px;\n min-height: 30px;\n overflow: hidden;\n}\n\n.vertical-minimized {\n width: 55px;\n min-width: 55px;\n overflow: hidden;\n}\n\n/* hidden state */\n.hidden {\n display: none;\n}\n\n`, ""]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./css/sticky.css?../node_modules/css-loader/dist/cjs.js')},"../node_modules/css-loader/dist/runtime/api.js":module=>{"use strict";eval('\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = "";\n var needLayer = typeof item[5] !== "undefined";\n if (item[4]) {\n content += "@supports (".concat(item[4], ") {");\n }\n if (item[2]) {\n content += "@media ".concat(item[2], " {");\n }\n if (needLayer) {\n content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += "}";\n }\n if (item[2]) {\n content += "}";\n }\n if (item[4]) {\n content += "}";\n }\n return content;\n }).join("");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === "string") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== "undefined") {\n if (typeof item[5] === "undefined") {\n item[5] = layer;\n } else {\n item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = "".concat(supports);\n } else {\n item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/css-loader/dist/runtime/api.js?')},"../node_modules/css-loader/dist/runtime/noSourceMaps.js":module=>{"use strict";eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/css-loader/dist/runtime/noSourceMaps.js?")},"./css/sticky.css":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./sticky.css */ "../node_modules/css-loader/dist/cjs.js!./css/sticky.css");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./css/sticky.css?')},"../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":module=>{"use strict";eval('\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = "".concat(id, " ").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?')},"../node_modules/style-loader/dist/runtime/insertBySelector.js":module=>{"use strict";eval('\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === "undefined") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error("Couldn\'t find a style target. This probably means that the value for the \'insert\' parameter is invalid.");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/insertBySelector.js?')},"../node_modules/style-loader/dist/runtime/insertStyleElement.js":module=>{"use strict";eval('\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement("style");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/insertStyleElement.js?')},"../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = true ? __webpack_require__.nc : 0;\n if (nonce) {\n styleElement.setAttribute("nonce", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?')},"../node_modules/style-loader/dist/runtime/styleDomAPI.js":module=>{"use strict";eval('\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = "";\n if (obj.supports) {\n css += "@supports (".concat(obj.supports, ") {");\n }\n if (obj.media) {\n css += "@media ".concat(obj.media, " {");\n }\n var needLayer = typeof obj.layer !== "undefined";\n if (needLayer) {\n css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");\n }\n css += obj.css;\n if (needLayer) {\n css += "}";\n }\n if (obj.media) {\n css += "}";\n }\n if (obj.supports) {\n css += "}";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== "undefined") {\n css += "\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === "undefined") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/styleDomAPI.js?')},"../node_modules/style-loader/dist/runtime/styleTagTransform.js":module=>{"use strict";eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/styleTagTransform.js?")},"./src/auctionConductor.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setRegisterSlotWorker: () => (/* binding */ setRegisterSlotWorker),\n/* harmony export */ setServeAdWorker: () => (/* binding */ setServeAdWorker)\n/* harmony export */ });\n/* harmony import */ var _refreshEventHandlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./refreshEventHandlers */ "./src/refreshEventHandlers.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types/enums */ "./src/types/enums.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n// file: wrapper/src/auctionConductor.ts\n\n\n\n\n\n/**\n *\n * auction is event based and conducted in 3 steps\n * 1) register ad slot after parent div element is added - setRegisterSlotWorker()\n * 2) start auction\n * 3)\n *\n */\n// register handler: to register ad slot after div has loaded in body\nfunction setRegisterSlotWorker(slot, window = globalThis.window) {\n const slot_div_id = slot?.getSlotElementId();\n if (!slot_div_id) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.consoleError)(\'setRegisterSlotWorker: Undefined slot element id, cannot register slot.\', false, slot);\n return;\n }\n const element = window.document.getElementById(slot_div_id);\n if (element) { // element already exists\n registerSlot(element);\n return;\n }\n if (window.document.body) { // page has already loaded\n setupMutationObserver(slot_div_id);\n }\n else {\n window.document.addEventListener(\'DOMContentLoaded\', () => {\n const element = window.document.getElementById(slot_div_id);\n if (element) { // element exists in dom now\n registerSlot(element);\n }\n else { // for future additions\n setupMutationObserver(slot_div_id);\n }\n });\n }\n // set up MutationObserver for future additions\n function setupMutationObserver(slot_div_id) {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const element = window.document.getElementById(slot_div_id);\n if (element) { // element exists in dom now\n observer.disconnect();\n registerSlot(element);\n return;\n }\n }\n });\n // start observing document for changes\n observer.observe(window.document.body, {\n childList: true, // listen for direct children added/removed\n subtree: true // listen for changes in the entire subtree\n });\n }\n function registerSlot(element) {\n googletag.cmd.push(() => {\n googletag.display(element.id); // called to register slot, disableInitialLoad() should still apply\n // fetch ads for "lazy" load ad units only\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.getAuctionEntry)(element.id);\n if (entry?.adSlot?.l /*load*/ === _types_enums__WEBPACK_IMPORTED_MODULE_2__.Load.Lazy) {\n setFetchAdWorker(element);\n }\n else {\n // register refresh handlers for "eager" load ad units\n (0,_refreshEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setRefreshWorker)(element.id);\n }\n });\n }\n}\n// meant to be called for "lazy" load ad slots only\nfunction setFetchAdWorker(element) {\n // check if intersection observer already exists for element\n const existingEntry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.getAuctionEntry)(element.id);\n if (existingEntry?.intersectionObserver) {\n return;\n }\n const options = {\n root: null, // element to intersect with browser viewport\n rootMargin: "1000px", // margin to grow or shrink intersection frame of root, default 100px (10% of most popular viewport 1080px)\n threshold: 0.0 // % element visible\n };\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if ((entry.intersectionRatio > 0) && !(0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.isAuctionInProgress)(element.id)) {\n // disconnect observer, set auction in progress\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.clearIntersectionObserver)(element.id);\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.setAuctionInProgress)(element.id, _types_enums__WEBPACK_IMPORTED_MODULE_2__.ServeType.Initial);\n const pbjs = window.pbjs;\n const adSlot = (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.getAuctionEntry)(element.id)?.adSlot;\n pbjs.que.push(() => {\n pbjs.requestBids({\n // adslot element (div) id used as unique prebid adunit code\n adUnitCodes: [element.id],\n timeout: adSlot?.o /*auctionTimeout*/ ?? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.o /*auctionTimeout*/, window)\n });\n });\n // register refresh handlers for "lazy" load ad slots\n (0,_refreshEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setRefreshWorker)(element.id);\n }\n });\n }, options);\n // store observer instance in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.setIntersectionObserver)(element.id, observer);\n observer.observe(element);\n}\nfunction setServeAdWorker() {\n const pbjs = window.pbjs;\n pbjs.onEvent(\'auctionEnd\', (auction) => {\n // clear auction in progress flags for completed auction slots\n const renderAdSlotCodes = auction.adUnitCodes;\n renderAdSlotCodes.forEach(adUnitCode => {\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.clearAuctionInProgress)(adUnitCode);\n });\n googletag.cmd.push(() => {\n const renderSlots = googletag.pubads()\n .getSlots()\n // filter adslot element (div) id used as unique prebid adunit code\n .filter(slot => renderAdSlotCodes.includes(slot.getSlotElementId()));\n if (renderSlots.length > 0) {\n const pbjs = window.pbjs;\n pbjs.que.push(() => {\n pbjs.setTargetingForGPTAsync(renderAdSlotCodes);\n googletag.pubads().refresh(renderSlots);\n });\n }\n });\n });\n // TODO: should this part be moved to a different function?\n pbjs.onEvent(\'bidWon\', (bid) => {\n const slot = googletag.pubads()\n .getSlots()\n // find by adslot element (div) id used as unique prebid adunit code\n .find(slot => slot.getSlotElementId() === bid.adUnitCode)\n ?? null;\n // TODO: add prefix to targeting keys to make it obvious that this is specific to our wrapper\n if (slot) {\n googletag.cmd.push(() => {\n slot.setTargeting(`${_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.p /*targetKeyPrefix*/}_bidder_code`, bid.bidderCode);\n slot.setTargeting(`${_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.p /*targetKeyPrefix*/}_cpm`, bid.cpm);\n slot.setTargeting(`${_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.p /*targetKeyPrefix*/}_cpm_currency`, bid.currency);\n });\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/auctionConductor.ts?')},"./src/auctionState.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearAllIntersectionObservers: () => (/* binding */ clearAllIntersectionObservers),\n/* harmony export */ clearAuctionInProgress: () => (/* binding */ clearAuctionInProgress),\n/* harmony export */ clearIntersectionObserver: () => (/* binding */ clearIntersectionObserver),\n/* harmony export */ deleteAuctionEntry: () => (/* binding */ deleteAuctionEntry),\n/* harmony export */ getAllAdSlots: () => (/* binding */ getAllAdSlots),\n/* harmony export */ getAllAuctionEntries: () => (/* binding */ getAllAuctionEntries),\n/* harmony export */ getAuctionEntry: () => (/* binding */ getAuctionEntry),\n/* harmony export */ getInventoryConfig: () => (/* binding */ getInventoryConfig),\n/* harmony export */ isAuctionInProgress: () => (/* binding */ isAuctionInProgress),\n/* harmony export */ resolveInventoryConfig: () => (/* binding */ resolveInventoryConfig),\n/* harmony export */ setAuctionEntry: () => (/* binding */ setAuctionEntry),\n/* harmony export */ setAuctionInProgress: () => (/* binding */ setAuctionInProgress),\n/* harmony export */ setIntersectionObserver: () => (/* binding */ setIntersectionObserver),\n/* harmony export */ updateAuctionEntry: () => (/* binding */ updateAuctionEntry)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _experiments__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./experiments */ \"./src/experiments.ts\");\n// file: wrapper/src/auctionState.ts\n\n\n\n// Inventory Config State\nlet inventoryConfigPromise = null;\nlet resolvedInventoryConfig = null;\n/**\n * Resolves inventory config, applying experiment variant if configured.\n * Memoized - subsequent calls return the same promise.\n *\n * If wrapperConfig.x (experimentId) is set:\n * - Fetches allocations from API\n * - Applies variant delta to config\n * Otherwise:\n * - Returns base inventory config directly\n */\nfunction resolveInventoryConfig() {\n if (!inventoryConfigPromise) {\n if (_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.x /*experimentId*/) {\n inventoryConfigPromise = (0,_experiments__WEBPACK_IMPORTED_MODULE_2__.applyExperimentVariant)(_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig)\n .then(config => { resolvedInventoryConfig = config; return config; });\n }\n else {\n // extract base inventory config with direct assignment, WrapperConfig extends InventoryConfig\n resolvedInventoryConfig = _constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig;\n inventoryConfigPromise = Promise.resolve(resolvedInventoryConfig);\n }\n }\n return inventoryConfigPromise;\n}\n/**\n * Gets resolved inventory config synchronously.\n * Throws if resolveInventoryConfig() hasn't been called or hasn't completed yet.\n * Use resolveInventoryConfig() for guaranteed result.\n */\nfunction getInventoryConfig() {\n if (!resolvedInventoryConfig) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleError)('getInventoryConfig() called before resolveInventoryConfig() completed', true, globalThis.window);\n }\n return resolvedInventoryConfig;\n}\n// persistent state management for ad slots across entire lifecycle\n// tracks auction progression, to maintain data integrity during refresh cycles\n// maps adUnit.code (div id) to slot state (auction ids, winning bid data, configuration)\nconst adSlotAuctionMap = new Map();\nfunction getAuctionEntry(adUnitCode) {\n return adSlotAuctionMap.get(adUnitCode);\n}\nfunction getAllAuctionEntries() {\n return Array.from(adSlotAuctionMap.values());\n}\nfunction getAllAdSlots() {\n return getAllAuctionEntries()\n .map(entry => entry.adSlot)\n .filter((slot) => !!slot);\n}\nfunction setAuctionEntry(adUnitCode, entry) {\n adSlotAuctionMap.set(adUnitCode, entry);\n}\nfunction updateAuctionEntry(adUnitCode, updates) {\n const currentEntry = adSlotAuctionMap.get(adUnitCode) || {};\n adSlotAuctionMap.set(adUnitCode, {\n ...currentEntry,\n ...updates\n });\n}\nfunction deleteAuctionEntry(adUnitCode) {\n return adSlotAuctionMap.delete(adUnitCode);\n}\nfunction isAuctionInProgress(adUnitCode) {\n const entry = adSlotAuctionMap.get(adUnitCode);\n if (entry?.isAuctionInProgress) {\n const caller = new Error().stack?.split('\\n')[2]?.trim().split(' ')[1] || 'unknown';\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`${caller}: Auction already in progress for slot, skipping`, adUnitCode);\n return true;\n }\n return false;\n}\nfunction setAuctionInProgress(adUnitCode, serveType, adSlot) {\n const entry = adSlotAuctionMap.get(adUnitCode) || { adSlot: adSlot };\n updateAuctionEntry(adUnitCode, {\n isAuctionInProgress: true,\n serveType: serveType\n });\n}\nfunction clearAuctionInProgress(adUnitCode) {\n const entry = adSlotAuctionMap.get(adUnitCode);\n if (entry) {\n updateAuctionEntry(adUnitCode, {\n isAuctionInProgress: false\n });\n }\n}\nfunction setIntersectionObserver(adUnitCode, observer) {\n updateAuctionEntry(adUnitCode, {\n intersectionObserver: observer\n });\n}\nfunction clearIntersectionObserver(adUnitCode) {\n const entry = adSlotAuctionMap.get(adUnitCode);\n if (entry?.intersectionObserver) {\n entry.intersectionObserver.disconnect();\n updateAuctionEntry(adUnitCode, {\n intersectionObserver: undefined\n });\n }\n}\nfunction clearAllIntersectionObservers() {\n adSlotAuctionMap.forEach((entry, adUnitCode) => {\n if (entry.intersectionObserver) {\n clearIntersectionObserver(adUnitCode);\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/auctionState.ts?")},"./src/audiences.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getUserBrowser: () => (/* binding */ getUserBrowser),\n/* harmony export */ getUserCountry: () => (/* binding */ getUserCountry),\n/* harmony export */ matchAudience: () => (/* binding */ matchAudience)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n// file: wrapper/src/audiences.ts\n\n\nfunction getUserBrowser() {\n const userAgent = navigator?.userAgent;\n if (!userAgent) {\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Other;\n }\n const ua = userAgent.toLowerCase();\n // check edge first, its ua string often includes \"chrome\"\n // modern edge uses \"edg/\", older edge used \"edge/\"\n if (ua.indexOf('edg/') > -1 || ua.indexOf('edge/') > -1 || ua.indexOf('edge') > -1) { // a bit more robust for edge\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Edge;\n }\n else if (ua.indexOf('chrome') > -1 && ua.indexOf('safari') > -1) {\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Chrome;\n }\n else if (ua.indexOf('safari') > -1) { // safari only (no \"chrome\" or \"edg\")\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Safari;\n }\n else if (ua.indexOf('firefox') > -1) {\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Firefox;\n }\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Other;\n}\nfunction getUserCountry() {\n let localeString;\n try {\n localeString = Intl.DateTimeFormat().resolvedOptions().locale;\n }\n catch (error) {\n localeString = undefined;\n }\n let localeCountryCode;\n if (localeString) {\n const parts = localeString.split('-');\n if (parts.length > 1) {\n localeCountryCode = parts[parts.length - 1]; // take last part\n }\n }\n const langString = navigator?.language;\n let langCountryCode;\n if (langString) {\n const parts = langString.split('-');\n if (parts.length > 1) {\n langCountryCode = parts[parts.length - 1]; // take last part\n }\n }\n // return uppercase country code if found\n if (localeCountryCode)\n return localeCountryCode.toUpperCase();\n if (langCountryCode)\n return langCountryCode.toUpperCase();\n return null;\n}\nfunction matchAudience(layout, window = globalThis.window) {\n for (const inc of layout.t /*targetAudience*/?.ic /*includes*/ ?? []) {\n if (inc.bw /*browser*/ && !inc.bw /*browser*/.includes(getUserBrowser()))\n return null;\n if (inc.dv /*device*/ && !inc.dv /*device*/.includes((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getUserDevice)(window)))\n return null;\n if (inc.cy /*country*/ && !inc.cy /*country*/.includes(getUserCountry() ?? ''))\n return null;\n }\n for (const exc of layout.t /*targetAudience*/?.ex /*excludes*/ ?? []) {\n if (exc.bw /*browser*/ && exc.bw /*browser*/.includes(getUserBrowser()))\n return null;\n if (exc.dv /*device*/ && exc.dv /*device*/.includes((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getUserDevice)(window)))\n return null;\n if (exc.cy /*country*/ && exc.cy /*country*/.includes(getUserCountry() ?? ''))\n return null;\n }\n return layout;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/audiences.ts?")},"./src/bootstrap.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bootstrapWrapper: () => (/* binding */ bootstrapWrapper),\n/* harmony export */ initAdserver: () => (/* binding */ initAdserver),\n/* harmony export */ processAdSlots: () => (/* binding */ processAdSlots)\n/* harmony export */ });\n/* harmony import */ var _logEventHandlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logEventHandlers */ \"./src/logEventHandlers.ts\");\n/* harmony import */ var _auctionConductor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./auctionConductor */ \"./src/auctionConductor.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logger */ \"./src/logger.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _audiences__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./audiences */ \"./src/audiences.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _stickySlot__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stickySlot */ \"./src/stickySlot.ts\");\n/* harmony import */ var _customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./customDimensions/dimensions */ \"./src/customDimensions/dimensions.ts\");\n/* harmony import */ var _wrapperTag__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./wrapperTag */ \"./src/wrapperTag.ts\");\n/* harmony import */ var _customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./customDimensions/destinations */ \"./src/customDimensions/destinations.ts\");\n// file: wrapper/src/bootstrap.ts\n\n\n\n\n\n\n\n\n\n\n\n\nfunction initAdserver(window = globalThis.window) {\n const googletag = window.googletag;\n const pbjs = window.pbjs;\n if (!googletag.pubads) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)('googletag (google publisher tag) did not load properly...', false, window);\n return;\n }\n if (pbjs.initAdserverSet)\n return;\n pbjs.initAdserverSet = true;\n googletag.cmd.push(() => {\n if (pbjs.setTargetingForGPTAsync) {\n pbjs.setTargetingForGPTAsync();\n googletag.pubads().refresh();\n }\n else {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)('Prebid did not load properly: setTargetingForGPTAsync is undefined', false, window);\n googletag.pubads().refresh(); // fallback to direct googletag refresh\n //TODO log error\n }\n });\n}\nfunction processAdSlots(adSlots, config, window = globalThis.window) {\n const pbjs = window.pbjs;\n const googletag = window.googletag;\n let pageAdSlots = [];\n // insert dom elements for static slots, before configuring ads\n function processStaticSlots() {\n pageAdSlots = adSlots.filter(adSlot => {\n // filter to slots with reference elements on page\n return (adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_4__.Anchor.Window) ||\n (window.document.getElementById(adSlot.n /*insert*/.d /*divId*/) !== null);\n });\n pageAdSlots.forEach(adSlot => {\n if (adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_4__.Anchor.StaticElement) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.addSlotElement)(adSlot.n /*insert*/, window);\n }\n });\n }\n ;\n if (window.document.readyState === 'loading') {\n // dom not ready, wait for it\n window.document.addEventListener('DOMContentLoaded', processStaticSlots, { once: true });\n }\n else {\n // dom already ready (interactive | complete)\n processStaticSlots();\n }\n pbjs.que.push(() => {\n // add all ad units to prebid auction, update auction map\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleDebug)(`Processing ${pageAdSlots.length} ad slots on page`, window, pageAdSlots);\n // register bidder aliases with Prebid.js (Always Alias approach)\n // each demand seat gets a unique alias: {bidderCode}-{label}\n // uses activeInventoryConfig to support experiment variants with different demand seats\n const activeBa = (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getInventoryConfig)().ba /*bidderAliases*/;\n Object.entries(activeBa).forEach(([alias, bidderAlias]) => {\n pbjs.aliasBidder(bidderAlias.b /*bidder*/, alias);\n });\n const pbjsAdUnits = [];\n pageAdSlots.forEach(adSlot => {\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(adSlot);\n const ortb2Imp = (0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildORTB2Imp)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), adUnitCode, window);\n // Price Floor Precedence (highest to lowest):\n // 1. Demand Seat floor (bidderAlias.f) - most specific, per-bidder\n // 2. Ad Slot floor (adSlot.f) - per-placement\n // 3. Config floor (config.pf) - global default\n // Prebid enforces via: bidder|*|* rules override default floor\n const defaultFloor = adSlot.f /*priceFloor*/ ??\n (config.pf /*priceFloor*/ ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(config.pf /*priceFloor*/, window) : undefined);\n // collect bidder-specific floors from demand seats\n const bidderFloors = {};\n adSlot.tg /*tagIds*/.forEach(tagId => {\n const bidderAlias = activeBa[tagId.a /*alias*/];\n if (bidderAlias?.f /*floor*/ && bidderAlias.f /*floor*/ > 0) {\n // format: bidderCode|*|* for any mediaType and size\n bidderFloors[`${tagId.a /*alias*/}|*|*`] = bidderAlias.f /*floor*/;\n }\n });\n const hasBidderFloors = Object.keys(bidderFloors).length > 0;\n // create prebid ad unit\n const pbjsAdUnit = {\n code: adUnitCode, // adslot element (div) id used as unique prebid adunit code\n div: adUnitCode,\n mediaTypes: {\n banner: {\n sizes: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(adSlot.m /*media*/.sz /*sizes*/, window)\n }\n },\n bids: adSlot.tg /*tagIds*/.map(tagId => ({\n bidder: tagId.a /*alias*/,\n params: tagId.pm /*params*/\n })),\n ...((defaultFloor || hasBidderFloors) && {\n floors: {\n currency: config.c /*currencyCode*/,\n ...(defaultFloor && { default: defaultFloor }),\n ...(hasBidderFloors && { values: bidderFloors })\n }\n }),\n // add ORTB2 imp for slot-level custom dimensions\n ...(ortb2Imp ? { ortb2Imp } : {})\n };\n pbjsAdUnits.push(pbjsAdUnit);\n // set pbjs registered status in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.updateAuctionEntry)(adUnitCode, {\n adSlot: adSlot,\n adUnit: pbjsAdUnit\n });\n });\n // add all units to prebid\n if (pbjsAdUnits.length > 0) {\n pbjs.addAdUnits(pbjsAdUnits);\n }\n // start prebid auction for initial load ad slots\n const initialSlots = pageAdSlots\n .filter(slot => [_types_enums__WEBPACK_IMPORTED_MODULE_4__.Load.Eager, _types_enums__WEBPACK_IMPORTED_MODULE_4__.Load.Dynamic, _types_enums__WEBPACK_IMPORTED_MODULE_4__.Load.OnDemand].includes(slot.l /*load*/));\n // filter out slots with auctions in progress and set flags for valid slots\n const validInitialSlots = initialSlots.filter(slot => {\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(slot);\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.isAuctionInProgress)(adUnitCode)) {\n return false;\n }\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.setAuctionInProgress)(adUnitCode, _types_enums__WEBPACK_IMPORTED_MODULE_4__.ServeType.Initial);\n return true;\n });\n if (validInitialSlots.length > 0) {\n const configTimeout = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(config.o /*auctionTimeout*/, window);\n const maxSlotTimeout = Math.max(...validInitialSlots.map(slot => slot.o /*auctionTimeout*/ ?? 0));\n pbjs.requestBids({\n adUnitCodes: validInitialSlots.map(slot => (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(slot)),\n timeout: maxSlotTimeout > 0 ? maxSlotTimeout : configTimeout\n });\n }\n });\n googletag.cmd.push(() => {\n pageAdSlots\n .forEach((adSlot) => {\n var sizes = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(adSlot.m /*media*/.sz /*sizes*/, window);\n const divId = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(adSlot);\n const resolvedFloor = adSlot.f /*priceFloor*/ ??\n (config.pf /*priceFloor*/ ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(config.pf, window) : undefined);\n const gptSlot = googletag\n .defineSlot(adSlot.g /*gamAdUnitCode*/, sizes, divId)\n ?.addService(googletag.pubads());\n if (gptSlot) {\n // set googletag slot in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.updateAuctionEntry)(divId, {\n gptSlot: gptSlot\n });\n // merge all targeting sources (later sources take precedence)\n // order: kv (freeform) < gk (validated GAM) < dimensions (ad_server destination)\n const slotTargeting = {\n ...adSlot.tr?.kv,\n ...adSlot.tr?.gk,\n ...(0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildSlotTargeting)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), divId, window),\n };\n // slot level targeting (google publisher tag)\n Object.entries(slotTargeting).forEach(([key, value]) => {\n gptSlot.setTargeting(key, value);\n });\n if (resolvedFloor) {\n gptSlot.setTargeting(`${config.p /*targetKeyPrefix*/}_floor`, resolvedFloor.toString());\n }\n if (adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_4__.Anchor.Window) {\n (0,_stickySlot__WEBPACK_IMPORTED_MODULE_8__.setInsertSlotWorker)(adSlot, window); // add ad slot element to body before registering slot\n }\n (0,_auctionConductor__WEBPACK_IMPORTED_MODULE_1__.setRegisterSlotWorker)(gptSlot, window);\n }\n });\n });\n}\nasync function bootstrapWrapper(window = globalThis.window) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleDebug)(\"app info\" +\n \"\\n name: \" + \"app-p8efa792fe841a.js\" +\n \"\\n version: \" + \"0.0.7\" +\n \"\\n build date: \" + \"2026-01-09T17:54:00.026Z\", window);\n // set up failsafe early, so ads load even if pbjs fails\n setTimeout(() => {\n initAdserver(window);\n }, _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.f /*failsafeTimeout*/);\n // compute domain strings synchronously (needed for hash computation)\n const secondLevelDomain = window.location.hostname.split('.').slice(-2).join('.');\n const thirdLevelDomain = window.location.hostname.split('.').slice(-3).join('.');\n // run all async operations in parallel:\n // - experiment API call\n // - domain hash computations (crypto operations)\n const [activeInventory, sldHash, tldHash] = await Promise.all([\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.resolveInventoryConfig)(),\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.generateHash)(secondLevelDomain, 13),\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.generateHash)(thirdLevelDomain, 13)\n ]);\n // check config domain covers publisher domain\n if (![sldHash, tldHash].includes(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.d /*domain*/)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)(`inventory defined for different domain with ID '${_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.d /*domain*/}', no ads will be served`, false, window);\n return;\n }\n //TODO: check wrapper version compatibility with config version\n const pbjs = window.pbjs;\n const googletag = window.googletag;\n // initialize custom dimensions and wrapperTag API\n // 1. initialize dimension state (registry + validate PageVariable)\n // 2. initialize wrapperTag API (command queue processing)\n (0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.initializeDimension)(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.cd /*customDimensions*/, window);\n (0,_wrapperTag__WEBPACK_IMPORTED_MODULE_10__.initializeWrapperTag)(window);\n pbjs.que.push(() => {\n pbjs.initAdserverSet = true; // execute first once pbjs setup is complete\n // validate required Prebid modules are installed\n const installedModules = pbjs.installedModules || [];\n // check currency module for non-USD currencies\n if (_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c !== 'USD' && !installedModules.includes('currency')) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)(`CRITICAL: 'currency' module not included in prebid build, though currency set to '${_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c}'.`, false, window);\n }\n // check for priceFloors module if floors are configured\n const hasGlobalFloor = activeInventory.pf /*priceFloor*/ && ('a' /*all*/ in activeInventory.pf /*priceFloor*/ || 'd' /*desktop*/ in activeInventory.pf /*priceFloor*/ || 'm' /*mobile*/ in activeInventory.pf /*priceFloor*/);\n const hasSlotFloor = activeInventory.as /*adSlots*/.some(slot => slot.f /*floor*/ !== undefined) ||\n activeInventory.ly /*layouts*/.some(layout => layout.as.some(slot => slot.f /*floor*/ !== undefined));\n if ((hasGlobalFloor || hasSlotFloor) && !installedModules.includes('priceFloors')) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)(\"WARNING: 'priceFloors' module not included in prebid build, price floors will not be enforced.\", false, window);\n }\n const ortb2Config = (0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildORTB2Config)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), window);\n pbjs.setConfig({\n ...(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c !== 'USD' ? {\n currency: {\n adServerCurrency: _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c /*currencyCode*/ || 'USD',\n // prebid.org maintained currency file, updated daily\n conversionUrl: 'https://cdn.example.com/currency/latest.json',\n // fallback rates if needed\n // rates: wrapperConfig.cr/*currencyRates*/ || {}\n }\n } : {}),\n priceGranularity: {\n buckets: _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.pb /*priceBuckets*/.map((bucket) => ({\n min: Number(bucket.f /*floor*/),\n max: Number(bucket.c /*ceiling*/),\n increment: Number(bucket.s /*step*/),\n }))\n },\n ...((hasGlobalFloor || hasSlotFloor) ? {\n floors: {\n enforcement: {\n enforceJS: true, // enforce floors in prebidjs (reject low bids)\n floorDeals: true, // apply floors to deal bids\n bidAdjustment: true // apply floors after bid adjustments\n },\n ...(hasGlobalFloor ? {\n data: {\n currency: _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c /*currencyCode*/,\n skipRate: 0, // never skip floor enforcement (0 = always enforce)\n floorsSchemaVersion: 1, // v1: direct default value\n // v2: requires modelGroups for a/b testing floor strategies\n default: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(activeInventory.pf, window)\n }\n } : {})\n }\n } : {}),\n // add ORTB2 first-party data for custom dimensions\n ...(ortb2Config ? { ortb2: ortb2Config } : {})\n });\n // register event handlers and workers early\n (0,_logger__WEBPACK_IMPORTED_MODULE_3__.initLogger)(window);\n (0,_logEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setDocumentEventLogHandlers)(window);\n (0,_logEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setAuctionEventLogHandlers)(window);\n // ensure googletag api is ready before registering log handlers for googletag events\n googletag.cmd.push(() => {\n (0,_logEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setGPTEventLogHandlers)(window);\n });\n (0,_auctionConductor__WEBPACK_IMPORTED_MODULE_1__.setServeAdWorker)();\n });\n googletag.cmd.push(() => {\n googletag.pubads().disableInitialLoad();\n });\n // filter layouts applicable to current page\n const layouts = (activeInventory.ly /*layout*/\n ?.filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_5__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/))\n ?.filter((ly) => (0,_audiences__WEBPACK_IMPORTED_MODULE_6__.matchAudience)(ly, window) !== null)) ?? [];\n // collect all ad slots from matching layouts\n const layoutAdSlots = layouts.flatMap(ly => ly.as /*adSlots*/);\n // combine layout and global ad slots (config ad slots override layout ad slots)\n [\n ...layoutAdSlots,\n ...activeInventory.as /*adSlots*/,\n ].forEach((adSlot) => {\n const key = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(adSlot);\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.updateAuctionEntry)(key, {\n adSlot: adSlot\n });\n });\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getAllAuctionEntries)().length === 0) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleDebug)(`no ad slots defined for pagepath '${window.location.pathname}', ads will not be served`, window);\n return;\n }\n // Process ad slots with wrapper config\n processAdSlots((0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getAllAdSlots)(), _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig, window);\n googletag.cmd.push(() => {\n // page-level targeting from layouts (merge kv and gk from all layouts)\n const layoutKVTargeting = Object.values(layouts)\n .map(layout => layout.tr?.kv || {})\n .reduce((acc, kv) => ({ ...acc, ...kv }), {});\n const layoutGKTargeting = Object.values(layouts)\n .map(layout => layout.tr?.gk || {})\n .reduce((acc, gk) => ({ ...acc, ...gk }), {});\n // merge all targeting sources (later sources take precedence)\n // order: kv (freeform) < gk (validated GAM) < dimensions (ad_server destination)\n const allPageLevelTargeting = {\n ...layoutKVTargeting,\n ...layoutGKTargeting,\n ...(0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildPageTargeting)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), window),\n };\n Object.entries(allPageLevelTargeting).forEach(([key, value]) => {\n googletag.pubads().setTargeting(key, value);\n });\n });\n googletag.cmd.push(() => {\n googletag.pubads().enableSingleRequest(); // all ad slots should be defined and added to service before\n googletag.enableServices();\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/bootstrap.ts?")},"./src/constants/config.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ wrapperConfig: () => (/* binding */ wrapperConfig)\n/* harmony export */ });\n// file: wrapper/src/constants/config.ts\n// webpack compile-time construct (not commonjs runtime call)\n// WRAPP_CONFIG_FILE_PATH replaced by DefinePlugin with actual config file path\n// webpack bundles json config directly into js bundle during build\nconst wrapperConfig = __webpack_require__(/*! ../builds/8EFA792FE841A/0.0.7/config-d8efa792fe841a-v0-0-7.json */ "../builds/8EFA792FE841A/0.0.7/config-d8efa792fe841a-v0-0-7.json");\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/constants/config.ts?')},"./src/constants/loggerEndpoints.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AD_IMPRESSION_ENDPOINT: () => (/* binding */ AD_IMPRESSION_ENDPOINT),\n/* harmony export */ AD_SERVE_ENDPOINT: () => (/* binding */ AD_SERVE_ENDPOINT),\n/* harmony export */ AD_UNFILLED_ENDPOINT: () => (/* binding */ AD_UNFILLED_ENDPOINT),\n/* harmony export */ AD_VIEWABLE_ENDPOINT: () => (/* binding */ AD_VIEWABLE_ENDPOINT),\n/* harmony export */ AUCTION_END_ENDPOINT: () => (/* binding */ AUCTION_END_ENDPOINT),\n/* harmony export */ AUCTION_INIT_ENDPOINT: () => (/* binding */ AUCTION_INIT_ENDPOINT),\n/* harmony export */ BATCH_ENDPOINT: () => (/* binding */ BATCH_ENDPOINT),\n/* harmony export */ BID_REJECT_ENDPOINT: () => (/* binding */ BID_REJECT_ENDPOINT),\n/* harmony export */ BID_RESPONSE_ENDPOINT: () => (/* binding */ BID_RESPONSE_ENDPOINT),\n/* harmony export */ BID_TIMEOUTS_ENDPOINT: () => (/* binding */ BID_TIMEOUTS_ENDPOINT),\n/* harmony export */ BID_WON_ENDPOINT: () => (/* binding */ BID_WON_ENDPOINT),\n/* harmony export */ LOGGER_API_PATH: () => (/* binding */ LOGGER_API_PATH),\n/* harmony export */ LOGGER_API_V1_PATH: () => (/* binding */ LOGGER_API_V1_PATH),\n/* harmony export */ PAGE_VIEW_ENDPOINT: () => (/* binding */ PAGE_VIEW_ENDPOINT)\n/* harmony export */ });\n// file: wrapper/src/constants/loggerEndpoints.ts\nconst LOGGER_API_PATH = '/api/logger';\nconst LOGGER_API_V1_PATH = `${LOGGER_API_PATH}/v1`;\n// batch events\nconst BATCH_ENDPOINT = '/batch';\n// page events\nconst PAGE_VIEW_ENDPOINT = '/page/view';\n// auction events\nconst AUCTION_INIT_ENDPOINT = '/auction/init';\nconst AUCTION_END_ENDPOINT = '/auction/end';\n// bid events\nconst BID_RESPONSE_ENDPOINT = '/bid/response';\nconst BID_WON_ENDPOINT = '/bid/won';\nconst BID_REJECT_ENDPOINT = '/bid/reject';\nconst BID_TIMEOUTS_ENDPOINT = '/bid/timeout';\n// ad serve events\nconst AD_SERVE_ENDPOINT = '/ad/serve';\nconst AD_IMPRESSION_ENDPOINT = '/ad/impression';\nconst AD_VIEWABLE_ENDPOINT = '/ad/viewable';\nconst AD_UNFILLED_ENDPOINT = '/ad/unfilled';\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/constants/loggerEndpoints.ts?")},"./src/customDimensions/api.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDimensions: () => (/* binding */ getDimensions),\n/* harmony export */ setPageDimensions: () => (/* binding */ setPageDimensions),\n/* harmony export */ setSlotDimensions: () => (/* binding */ setSlotDimensions)\n/* harmony export */ });\n/* harmony import */ var _dimensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dimensions */ \"./src/customDimensions/dimensions.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"./src/utils.ts\");\n// file: wrapper/src/customDimensions/api.ts\n/**\n * Custom Dimensions API\n *\n * Internal API for custom dimensions:\n * - setPageDimensions, setSlotDimensions, getDimensions\n *\n * These functions are exposed via wrapperTag.\n */\n\n\n/**\n * Validate a single dimension value by key\n * Looks up dimension, validates value, logs debug on failure\n * Returns validated value or undefined if invalid\n */\nfunction validateDimensionValue(key, value, window) {\n const dim = (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.getDimensionByKey)(key);\n if (!dim) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`[CustomDimensions] Unknown dimension \"${key}\"`, window);\n return undefined;\n }\n const result = (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.validateValue)(dim, value);\n if (!result.valid) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`[CustomDimensions] Invalid value for \"${key}\": ${result.error}`, window);\n return undefined;\n }\n return value;\n}\n/**\n * Set page-level dimension values\n *\n * These values apply to all ad slots unless overridden by setSlotDimensions.\n * Values are validated against registered dimension schemas.\n *\n * @example\n * wrapperTag.setPageDimensions({\n * content_tier: 'premium',\n * page_section: 'sports'\n * });\n */\nfunction setPageDimensions(values, window = globalThis.window) {\n if (!values || typeof values !== 'object') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('[CustomDimensions] setPageDimensions requires an object', window);\n return;\n }\n const validValues = {};\n for (const [key, value] of Object.entries(values)) {\n const validated = validateDimensionValue(key, value, window);\n if (validated !== undefined) {\n validValues[key] = validated;\n }\n }\n if (Object.keys(validValues).length > 0) {\n (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.setPageDimensionsState)(validValues);\n }\n}\n/**\n * Set slot-specific dimension values\n *\n * These values override page-level values for the specified slot.\n * Values are validated against registered dimension schemas.\n *\n * @example\n * wrapperTag.setSlotDimensions('header-banner', {\n * pos: 'top',\n * content_tier: 'standard'\n * });\n */\nfunction setSlotDimensions(slotId, values, window = globalThis.window) {\n if (!slotId || typeof slotId !== 'string') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('[CustomDimensions] setSlotDimensions requires a slot ID', window);\n return;\n }\n if (!values || typeof values !== 'object') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('[CustomDimensions] setSlotDimensions requires an object', window);\n return;\n }\n const validValues = {};\n for (const [key, value] of Object.entries(values)) {\n const validated = validateDimensionValue(key, value, window);\n if (validated !== undefined) {\n validValues[key] = validated;\n }\n }\n if (Object.keys(validValues).length > 0) {\n (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.setSlotDimensionsState)(slotId, validValues);\n }\n}\n/**\n * Get all dimension values (for debugging)\n *\n * Returns resolved values for all registered dimensions.\n * Precedence: slot override > page value > inline config > config source\n *\n * @example\n * console.log(wrapperTag.getDimensions()); // page-level values\n * console.log(wrapperTag.getDimensions('slot-123')); // slot-specific values\n */\nfunction getDimensions(slotId, window = globalThis.window) {\n const result = {};\n for (const dim of (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.getAllDimensions)()) {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.resolveValue)(dim, slotId, window);\n if (value !== undefined) {\n result[dim.k /*key*/] = value;\n }\n }\n return result;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customDimensions/api.ts?")},"./src/customDimensions/destinations.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ buildORTB2Config: () => (/* binding */ buildORTB2Config),\n/* harmony export */ buildORTB2Imp: () => (/* binding */ buildORTB2Imp),\n/* harmony export */ buildPageTargeting: () => (/* binding */ buildPageTargeting),\n/* harmony export */ buildSlotTargeting: () => (/* binding */ buildSlotTargeting)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _dimensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dimensions */ \"./src/customDimensions/dimensions.ts\");\n// file: wrapper/src/customDimensions/destinations.ts\n\n\n// =============================================================================\n// ORTB2 Builders (Auction Destination)\n// =============================================================================\n/**\n * Build global ORTB2 config for Prebid.js\n *\n * Routes dimensions with SITE or USER placement to ortb2.site.ext.data or ortb2.user.ext.data\n * Used with pbjs.setConfig({ ortb2: ... })\n *\n * @param dimensions Array of dimension configs\n * @param window Window object for value resolution\n * @returns ORTB2 config object or undefined if no global dimensions\n */\nfunction buildORTB2Config(dimensions, window = globalThis.window) {\n const siteData = {};\n const userData = {};\n // Filter to Site/User placements (Slot handled in buildORTB2Imp)\n dimensions\n .filter(dim => dim.ds /*destinations*/.au /*auction*/ && dim.ds.au.p /*placement*/ !== _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Slot)\n .forEach(dim => {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_1__.resolveValue)(dim, undefined, window);\n if (value === undefined)\n return;\n switch (dim.ds.au.p /*placement*/ || _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Site) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Site:\n siteData[dim.k /*key*/] = value;\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.User:\n userData[dim.k /*key*/] = value;\n break;\n }\n });\n if (Object.keys(siteData).length === 0 && Object.keys(userData).length === 0) {\n return undefined;\n }\n const result = {};\n if (Object.keys(siteData).length > 0)\n result.site = { ext: { data: siteData } };\n if (Object.keys(userData).length > 0)\n result.user = { ext: { data: userData } };\n return result;\n}\n/**\n * Build per-impression ORTB2 config for a single ad slot\n *\n * Routes dimensions with SLOT placement to ortb2Imp.ext.data\n * Used on individual Prebid ad units\n *\n * @param dimensions Array of dimension configs\n * @param slotId Slot ID for value resolution\n * @param window Window object for value resolution\n * @returns ORTB2Imp config or undefined if no slot-level dimensions\n */\nfunction buildORTB2Imp(dimensions, slotId, window = globalThis.window) {\n const slotData = {};\n dimensions\n .filter(dim => dim.ds /*destinations*/.au /*auction*/?.p /*placement*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Slot)\n .forEach(dim => {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_1__.resolveValue)(dim, slotId, window);\n if (value !== undefined)\n slotData[dim.k /*key*/] = value;\n });\n if (Object.keys(slotData).length === 0) {\n return undefined;\n }\n return { ext: { data: slotData } };\n}\n// =============================================================================\n// GAM Targeting Builder (Ad Server Destination)\n// =============================================================================\n/**\n * Build GAM targeting key-values from custom dimensions (internal)\n */\nfunction buildTargeting(dimensions, slotId, window) {\n const result = {};\n dimensions\n .filter(dim => dim.ds /*destinations*/.as /*adServer*/?.g /*gamKeyName*/)\n .forEach(dim => {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_1__.resolveValue)(dim, slotId, window);\n if (value === undefined)\n return;\n const targetingKey = dim.ds.as.g;\n result[targetingKey] = typeof value === 'boolean' ? (value ? 'true' : 'false') : String(value);\n });\n return result;\n}\n/**\n * Build page-level GAM targeting from custom dimensions\n */\nfunction buildPageTargeting(dimensions, window = globalThis.window) {\n return buildTargeting(dimensions, undefined, window);\n}\n/**\n * Build slot-level GAM targeting from custom dimensions\n */\nfunction buildSlotTargeting(dimensions, slotId, window = globalThis.window) {\n return buildTargeting(dimensions, slotId, window);\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customDimensions/destinations.ts?")},"./src/customDimensions/dimensions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAllDimensions: () => (/* binding */ getAllDimensions),\n/* harmony export */ getDimensionByKey: () => (/* binding */ getDimensionByKey),\n/* harmony export */ initializeDimension: () => (/* binding */ initializeDimension),\n/* harmony export */ resolveValue: () => (/* binding */ resolveValue),\n/* harmony export */ setPageDimensionsState: () => (/* binding */ setPageDimensionsState),\n/* harmony export */ setSlotDimensionsState: () => (/* binding */ setSlotDimensionsState),\n/* harmony export */ validateValue: () => (/* binding */ validateValue)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types/enums */ \"./src/types/enums.ts\");\n// file: wrapper/src/customDimensions/dimensions.ts\n\n// Registry (dimension schemas from config)\n/** Map of dimension key to config */\nconst dimensionsByKey = new Map();\n/**\n * Get dimension config by key\n */\nfunction getDimensionByKey(key) {\n return dimensionsByKey.get(key);\n}\n/**\n * Get all dimension configs\n */\nfunction getAllDimensions() {\n return Array.from(dimensionsByKey.values());\n}\n// Value Storage (runtime values from publisher API)\n/** Page-level dimension values (apply to all slots unless overridden) */\nconst pageDimensions = {};\n/** Slot-specific dimension values (override page-level) */\nconst slotDimensions = new Map();\n/**\n * Set page-level dimension values\n * Merges with existing values (later calls override earlier)\n */\nfunction setPageDimensionsState(values) {\n Object.assign(pageDimensions, values);\n}\n/**\n * Set slot-specific dimension values\n * Merges with existing values for that slot\n */\nfunction setSlotDimensionsState(slotId, values) {\n const existing = slotDimensions.get(slotId) || {};\n slotDimensions.set(slotId, { ...existing, ...values });\n}\n// Resolution (value resolution with precedence)\n/**\n * Get a nested property from an object using dot notation\n * e.g., getNestedProperty(window, 'PAGE_DATA.section') -> window.PAGE_DATA.section\n */\nfunction getNestedProperty(obj, path) {\n const parts = path.split('.');\n let current = obj;\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined;\n }\n current = current[part];\n }\n return current;\n}\n/**\n * Get inline dimensions from window.__WRAPP_DIMENSIONS__\n */\nfunction getInlineDimensions(window) {\n return window.__WRAPP_DIMENSIONS__ || {};\n}\n/**\n * Resolve value for a dimension\n *\n * Precedence (highest to lowest):\n * 1. Slot-specific runtime value (wrapp.setSlotDimensions)\n * 2. Page-level runtime value (wrapp.setPageDimensions)\n * 3. Inline config (window.__WRAPP_DIMENSIONS__)\n * 4. Value source config (static value, page variable)\n *\n * @param dim Dimension configuration\n * @param slotId Ad slot ID for slot-specific resolution\n * @param window Window object for accessing page variables\n * @returns Resolved value or undefined if not available\n */\nfunction resolveValue(dim, slotId, window = globalThis.window) {\n // 1. Check slot-specific runtime override (only if slotId provided)\n const slotValue = slotId && slotDimensions.get(slotId)?.[dim.k /*key*/];\n if (slotValue !== undefined) {\n return slotValue;\n }\n // 2. Check page-level runtime value\n const pageValue = pageDimensions[dim.k /*key*/];\n if (pageValue !== undefined) {\n return pageValue;\n }\n // 3. Check inline config (window.__WRAPP_DIMENSIONS__)\n const inlineValue = getInlineDimensions(window)[dim.k /*key*/];\n if (inlineValue !== undefined) {\n return inlineValue;\n }\n // 4. Resolve from value source config\n const vs = dim.vs; /*valueSource*/\n switch (vs.t /*type*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.Static:\n return vs.g /*gamPredefinedValue*/ || vs.v /*staticValue*/;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.PageVariable:\n if (vs.v /*variable*/) {\n const rawValue = getNestedProperty(window, vs.v /*variable*/);\n if (validateValue(dim, rawValue).valid) {\n return rawValue;\n }\n }\n return undefined;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.Runtime:\n default:\n // Runtime has no default - value must be provided via API\n return undefined;\n }\n}\n/**\n * Validate a value against dimension schema\n * Checks basic type (string, number, boolean) for all dimensions,\n * plus schema constraints (max length, enum values) when validation config exists.\n */\nfunction validateValue(dim, value) {\n // Check value is not null/undefined\n if (value === null || value === undefined) {\n return { valid: false, error: 'Value is required' };\n }\n // Basic type check for all dimensions\n if (!['string', 'number', 'boolean'].includes(typeof value)) {\n return { valid: false, error: 'Expected string, number, or boolean' };\n }\n // Additional schema validation when validation config exists\n if (!dim.vl /*validation*/) {\n return { valid: true };\n }\n const vl = dim.vl /*validation*/;\n switch (vl.t /*type*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.String:\n if (typeof value !== 'string') {\n return { valid: false, error: 'Expected string value' };\n }\n if (vl.m /*maxLength*/ !== undefined && value.length > vl.m /*maxLength*/) {\n return { valid: false, error: `Value exceeds max length of ${vl.m /*maxLength*/}` };\n }\n return { valid: true };\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.Enum:\n if (typeof value !== 'string') {\n return { valid: false, error: 'Expected string value for enum' };\n }\n if (!vl.av /*allowedValues*/.includes(value)) {\n return { valid: false, error: `Value must be one of: ${vl.av /*allowedValues*/.join(', ')}` };\n }\n return { valid: true };\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.Boolean:\n if (typeof value !== 'boolean') {\n return { valid: false, error: 'Expected boolean value' };\n }\n return { valid: true };\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.Number:\n if (typeof value !== 'number' || isNaN(value)) {\n return { valid: false, error: 'Expected numeric value' };\n }\n return { valid: true };\n default:\n return { valid: true };\n }\n}\n// Initialization\n/**\n * Initialize dimension state from config\n *\n * Sets up registry from config and applies inline config (window.__WRAPP_DIMENSIONS__).\n * Call this before initializeWrapperTag() to ensure registry is ready for validation.\n *\n * @param configs Array of dimension configs from server (config.cd)\n * @param window Window object for accessing inline config\n */\nfunction initializeDimension(configs, window = globalThis.window) {\n // 1. Initialize registry from config\n dimensionsByKey.clear();\n if (configs) {\n for (const config of configs) {\n dimensionsByKey.set(config.k /*key*/, config);\n }\n }\n // 2. Validate PageVariable dimensions at init (warn about misconfigurations)\n // Values are read from window in real-time by resolveValue(), not cached\n Array.from(dimensionsByKey.values())\n .filter(dim => dim.vs /*valueSource*/.t /*type*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.PageVariable)\n .forEach(dim => {\n const v = dim.vs.v /*variable*/;\n const rawValue = getNestedProperty(window, v);\n const result = validateValue(dim, rawValue);\n if (!result.valid) {\n console.warn(`[Dimensions] Invalid PageVariable value for '${dim.k /*key*/}' ` +\n `from '${v}': ${result.error}`);\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customDimensions/dimensions.ts?")},"./src/dynamicSlot.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deleteDynamicAdSlot: () => (/* binding */ deleteDynamicAdSlot),\n/* harmony export */ insertDynamicAdSlot: () => (/* binding */ insertDynamicAdSlot),\n/* harmony export */ insertStickyAdSlot: () => (/* binding */ insertStickyAdSlot),\n/* harmony export */ setDynamicSlotHandler: () => (/* binding */ setDynamicSlotHandler)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/enums */ "./src/types/enums.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");\n/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bootstrap */ "./src/bootstrap.ts");\n/* harmony import */ var _stickySlot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stickySlot */ "./src/stickySlot.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n// file: wrapper/src/dynamicSlot.ts\n\n\n\n\n\n\nfunction setDynamicSlotHandler() {\n // setup event listener for new elements to have been added or getting close to view, and invoke insertDynamicAdSlot() when applicable\n // invoke deleteDynamicSlot() when dynamic ad slot far from view port\n}\nasync function insertDynamicAdSlot(divId, reference, window = globalThis.window) {\n // check if slot already exists to prevent duplicates\n const slotElementId = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.slotId)(reference, divId);\n if (window.document.getElementById(slotElementId)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleError)(`Dynamic slot already exists: ${slotElementId}`, true, window);\n }\n const inventoryConfig = await (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.resolveInventoryConfig)();\n // filter layouts applicable to current page\n const layouts = inventoryConfig.ly /*layout*/\n .filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_2__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/));\n // find matching dynamic ad slot (Dynamic or OnDemand load types)\n const adSlot = inventoryConfig.as /*adSlots*/\n .concat(layouts.flatMap(ly => ly.as /*adSlots*/))\n .find(slot => slot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.Anchor.DynamicElement &&\n [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.Dynamic, _types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.OnDemand].includes(slot.l /*load*/) &&\n slot.n /*insert*/.d /*divId*/ === divId &&\n slot.n /*insert*/.r /*reference*/ === reference);\n if (!adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleError)(`no dynamic ad slot config defined for element id \'${divId}\' and reference \'${reference}\'`, true, window);\n }\n const adSlotInstance = {\n ...adSlot,\n n: { ...adSlot.n, d: divId }\n };\n const slotDiv = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.addSlotElement)(adSlotInstance.n /*insert*/, window);\n if (slotDiv) {\n (0,_bootstrap__WEBPACK_IMPORTED_MODULE_3__.processAdSlots)([adSlotInstance], _constants_config__WEBPACK_IMPORTED_MODULE_5__.wrapperConfig, window);\n }\n}\nasync function insertStickyAdSlot(reference, window = globalThis.window) {\n const inventoryConfig = await (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.resolveInventoryConfig)();\n // filter layouts applicable to current page\n const layouts = inventoryConfig.ly /*layout*/\n .filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_2__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/));\n // find matching sticky ad slot (Dynamic or OnDemand load types, Window anchor)\n const adSlot = inventoryConfig.as /*adSlots*/\n .concat(layouts.flatMap(ly => ly.as /*adSlots*/))\n .find(slot => slot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.Anchor.Window &&\n [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.Dynamic, _types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.OnDemand].includes(slot.l /*load*/) &&\n slot.n /*insert*/.r /*reference*/ === reference);\n if (!adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`no dynamic sticky ad slot config defined for reference \'${reference}\'`, window);\n return;\n }\n // create sticky slot\n (0,_stickySlot__WEBPACK_IMPORTED_MODULE_4__.addStickySlot)(adSlot.n /*insert*/, window);\n (0,_bootstrap__WEBPACK_IMPORTED_MODULE_3__.processAdSlots)([adSlot], _constants_config__WEBPACK_IMPORTED_MODULE_5__.wrapperConfig, window);\n}\nfunction deleteDynamicAdSlot(divId, window = globalThis.window) {\n // get dynamic slot data\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.getAuctionEntry)(divId);\n // clean up auction map, googletag and prebid\n if (entry) {\n if (entry.gptSlot) {\n const googletag = window.googletag;\n if (googletag) {\n googletag.cmd.push(() => {\n googletag.destroySlots([entry.gptSlot]);\n });\n }\n }\n if (entry.adUnit) {\n const pbjs = window.pbjs;\n pbjs.que.push(() => {\n pbjs.removeAdUnit(entry.adUnit.code);\n });\n }\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.deleteAuctionEntry)(divId);\n }\n else {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`No dynamic slot found for divId: ${divId}`, window);\n }\n // TODO: remove any handlers associated with this slot\n // remove element from dom, even if not in auction map\n const element = window.document.getElementById(divId);\n if (element) {\n element.remove();\n }\n else {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`No element found for divId: ${divId}`, window);\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/dynamicSlot.ts?')},"./src/experiments.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyExperimentVariant: () => (/* binding */ applyExperimentVariant)\n/* harmony export */ });\n/* harmony import */ var xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xxhash-wasm */ \"../node_modules/xxhash-wasm/esm/xxhash-wasm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n// file: wrapper/src/experiments.ts\n\n\n\nconst MAX_HASH_32 = 4294967295; // 2^32 - 1\n/**\n * apply variation delta changes to base configuration\n * handles nested objects, arrays, and removed keys\n */\nfunction applyJsonDelta(base, delta) {\n const result = { ...base };\n // apply changes\n for (const [key, value] of Object.entries(delta)) {\n if (key === 'v')\n continue; // skip 'v' as it's variation id metadata, not a config field\n if (value === undefined || value === null) {\n delete result[key];\n }\n else if (typeof value === 'object' &&\n !Array.isArray(value) &&\n typeof result[key] === 'object' &&\n result[key] !== null &&\n !Array.isArray(result[key])) {\n // recursively merge nested objects\n result[key] = applyJsonDelta(result[key], value);\n }\n else {\n // direct replacement (including arrays and primitives)\n result[key] = value;\n }\n }\n return result;\n}\n/**\n * @param audienceId can be either userId or sessionId\n * @param experimentId experiment identifier\n * @returns number between [0, 1]\n */\nasync function getProjection(audienceId, experimentId) {\n const { h32 } = await (0,xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n const data = `${audienceId}:${experimentId}`;\n // compute hash\n const xxHash32 = h32(data, 0); // seed 0 explicitly\n // normalize to [0, 1]\n const projection = parseFloat((Number(xxHash32) / Number(MAX_HASH_32)).toFixed(2));\n if (projection < 0 || projection > 1) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Invalid projection ${projection} for experiment ${experimentId}`, true);\n }\n return projection;\n}\n/**\n * fetch variant allocations from test api\n * returns array of {v: variationId, a: allocation percentage}\n */\nasync function getVariantAllocation(experimentId, testsApiPath) {\n const apiUrl = `https://${_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.e}${testsApiPath}/${experimentId}/allocations/`;\n return fetch(apiUrl, {\n method: \"GET\"\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(`API error: ${response.status} ${response.statusText}`);\n }\n return response.json();\n })\n .then(allocations => {\n if (!Array.isArray(allocations)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Invalid allocation response: expected array, got ${typeof allocations}`);\n return [];\n }\n return allocations.map(a => ({\n v /*variationId*/: a.i || a.v, // handle both 'i' and 'v' field names\n a /*allocation*/: a.a\n }));\n })\n .catch(error => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Error fetching variant allocations for ${experimentId}:`, false, error);\n return [];\n });\n}\n/**\n * apply experiment variant to wrapper config\n * returns inventory config after applying variant deltas\n */\nasync function applyExperimentVariant(config) {\n // extract base inventory config with direct assignment, WrapperConfig extends InventoryConfig\n const baseInventory = config;\n // Get user projection for this experiment\n const userId = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getUserId)();\n const projection = await getProjection(userId, config.x /*experimentId*/);\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`User projection for experiment ${config.x /*experimentId*/}: ${projection}`);\n // Get variant allocations from API\n const allocations = await getVariantAllocation(config.x /*experimentId*/, config.t /*testsApiPath*/);\n // Determine which variant applies to this user\n let selectedVariant = null;\n let cumAlloc = 0;\n for (const allocation of allocations) {\n cumAlloc += allocation.a /*trafficAllocation*/ / 100; // convert percentage to decimal\n if (projection <= cumAlloc) {\n if (allocation.v /*variationId*/ === config.b /*baseVariationId*/) {\n // base/control variation applies, no delta to apply\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Running experiment ${config.x /*experimentId*/} with base variation ${config.b /*baseVariationId*/} for projection ${projection}`);\n return baseInventory;\n }\n // Find variant config for allocation\n selectedVariant = config.vr.find(v => v.v /*variationId*/ === allocation.v /*variationId*/) || null;\n if (!selectedVariant) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Variant ${allocation.v /*variationId*/} in allocation but not found in config`);\n }\n break;\n }\n }\n // apply selected variant\n if (selectedVariant) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Running experiment ${config.x} with variation ${selectedVariant.v} for projection ${projection}`);\n // apply delta to reconstruct full config\n // extract base inventory config with direct assignment, WrapperConfig extends InventoryConfig\n const mergedConfig = applyJsonDelta(config, selectedVariant);\n return mergedConfig;\n }\n // no variant matched projection (should not happen when 100% allocation)\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`No variant matched projection ${projection} for experiment ${config.x /*experimentId*/}`);\n return baseInventory;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/experiments.ts?")},"./src/index.ts":(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n// file: wrapper/src/index.ts\nconst WRAPPER_VERSION = '0.1';\n// queue to execute ad server tasks in order\nwindow.googletag = window.googletag || { cmd: [] };\n// queue to execute auction tasks in order\nwindow.pbjs = window.pbjs || { que: [] };\n// window.__gpp = {\n// getSection: function(sectionId, callback) {\n// callback({\n// gppString: 'DBABMA~CPXxRfAPXxRfABABQBENB-CgAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA',\n// applicableSections: ['tcfeu', 'usca'], // GDPR and US Privacy\n// });\n// },\n// };\nPromise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./bootstrap */ \"./src/bootstrap.ts\")).then(({ bootstrapWrapper }) => {\n bootstrapWrapper().catch(error => {\n console.error('Wrapper bootstrap failed:', error);\n });\n});\n// anchor to view_port (sticky ads) -- always loaded eager\n// anchor to static_content (standard ads) -- loaded eager or lazy\n// anchor to dynamic_content; --\x3e div id regex or class name -- loaded lazy\n// ad slots can be insertion can be on page content, sticky, and dynamic\n// ads can be loaded -- eager or lazy\n//TODOs\n//for eager slots auction can end before winner has been declared from bid responses\n//auction end includes array of bid responses\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/index.ts?")},"./src/logEventHandlers.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setAuctionEventLogHandlers: () => (/* binding */ setAuctionEventLogHandlers),\n/* harmony export */ setDocumentEventLogHandlers: () => (/* binding */ setDocumentEventLogHandlers),\n/* harmony export */ setGPTEventLogHandlers: () => (/* binding */ setGPTEventLogHandlers)\n/* harmony export */ });\n/* harmony import */ var _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logObjectBuilder */ \"./src/logObjectBuilder.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \"./src/logger.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constants/loggerEndpoints */ \"./src/constants/loggerEndpoints.ts\");\n// file: wrapper/src/logEventHandlers.ts\n\n\n\n\n\n\nfunction setAuctionEventLogHandlers(window = globalThis.window) {\n const pbjs = window.pbjs;\n pbjs.onEvent('auctionInit', (auction) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.auctionInit', auction);\n // update auction map with latest auction ids\n if (auction?.adUnits && Array.isArray(auction.adUnits)) {\n auction.adUnits.forEach((adUnit) => {\n const key = adUnit.div; // TODO: use adUnit.adUnitId instead of adUnit.div ?\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.updateAuctionEntry)(key, {\n pbAuctionId: auction.auctionId,\n pbAdUnitId: adUnit.adUnitId,\n pbTransactionId: adUnit.transactionId\n });\n });\n }\n const auctionInit = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.auctionInitObject(auction);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AUCTION_INIT_ENDPOINT, auctionInit, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in auctionInit handler', false, window, error);\n }\n });\n pbjs.onEvent('bidResponse', (bid) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidResponse', bid);\n const bidResponse = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidResponseObject(bid);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_RESPONSE_ENDPOINT, bidResponse, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in bidResponse handler', false, window, error);\n }\n });\n pbjs.onEvent('bidWon', (bid) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidWon', bid);\n const bidWon = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidWonObject(bid);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_WON_ENDPOINT, bidWon, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in bidWon handler', false, window, error);\n }\n });\n pbjs.onEvent('bidRejected', (bid) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidRejected', bid);\n const bidRejected = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidRejectedObject(bid, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_REJECT_ENDPOINT, bidRejected, window);\n });\n pbjs.onEvent('bidTimeout', (bids) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidTimeout', bids);\n bids.forEach(bid => {\n const bidTimeout = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidTimeoutObject(bid);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_TIMEOUTS_ENDPOINT, bidTimeout, window);\n });\n });\n pbjs.onEvent('auctionEnd', (auction) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.auctionEnd', auction);\n const auctionEnd = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.auctionEndObject(auction);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AUCTION_END_ENDPOINT, auctionEnd, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in auctionEnd handler', false, window, error);\n }\n });\n pbjs.onEvent('adRenderSucceeded', (data) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.adRenderSucceeded', data);\n const adServe = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adServeObject(data.bid, { serveStatus: _types_enums__WEBPACK_IMPORTED_MODULE_4__.ServeStatus.Success, serveTimestamp: Date.now() /*utc timestamp*/, failReason: null });\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_SERVE_ENDPOINT, adServe, window);\n });\n pbjs.onEvent('adRenderFailed', (data) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.adRenderFailed', data);\n const adServe = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adServeObject(data.bid, { serveStatus: _types_enums__WEBPACK_IMPORTED_MODULE_4__.ServeStatus.Fail, failReason: data.reason, serveTimestamp: null });\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_SERVE_ENDPOINT, adServe, window);\n });\n}\nfunction setDocumentEventLogHandlers(window = globalThis.window) {\n if (window.document.readyState === 'loading') {\n window.document.addEventListener('DOMContentLoaded', logPageView);\n }\n else {\n // DOMContentLoaded already fired, call function immediately\n logPageView();\n }\n function logPageView() {\n const pageView = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.pageViewObject(window);\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pageView', pageView);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.PAGE_VIEW_ENDPOINT, pageView, window);\n }\n}\nfunction setGPTEventLogHandlers(window = globalThis.window) {\n googletag.pubads().addEventListener('slotRequested', (event) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.slotRequested', event);\n // save auction ids to served when slot is requested\n if (!event.slot || typeof event.slot.getSlotElementId !== 'function') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Invalid slot in slotRequested event', false, window, event);\n return;\n }\n const slotId = event.slot.getSlotElementId();\n const current = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(slotId);\n if (current?.pbAuctionId) {\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.updateAuctionEntry)(slotId, {\n pbServedAuctionId: current.pbAuctionId,\n pbServedTransactionId: current.pbTransactionId\n });\n }\n });\n googletag.pubads().addEventListener('slotResponseReceived', (event) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.slotResponseReceived', event);\n });\n googletag.pubads().addEventListener('slotRenderEnded', (event) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.SlotRenderEndedEvent', event);\n // skip event log for slots not managed by wrapper\n const slotId = event.slot.getSlotElementId();\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(slotId);\n if (!entry?.adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('Skipping slotRenderEnded for non-wrapper slot', slotId);\n return;\n }\n if (event.isEmpty) { // no impression\n const adUnfilled = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adUnfilledObject(event.slot, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_UNFILLED_ENDPOINT, adUnfilled, window);\n }\n else { //impression\n // TODO: look into slot renders with sizes 1x1\n // if (event.size && (event.size[0] === 1 && event.size[1] === 1)) {\n // ignore pixel renders\n // }\n // else {\n const adImpression = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adImpressionObject(event, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_IMPRESSION_ENDPOINT, adImpression, window);\n // }\n }\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in slotRenderEnded handler', false, window, error);\n }\n });\n googletag.pubads().addEventListener(\"impressionViewable\", (event) => {\n try {\n if (!event.slot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Invalid slot in impressionViewable event', false, window, event);\n return;\n }\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.ImpressionViewableEvent', event, event.slot.getResponseInformation ? event.slot.getResponseInformation() : 'no response info');\n if (typeof event.slot.getSlotElementId !== 'function') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Invalid slot.getSlotElementId in impressionViewable event', false, window, event);\n return;\n }\n const slotId = event.slot.getSlotElementId();\n // skip event log for slots not managed by wrapper\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(slotId);\n if (!entry?.adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('Skipping impressionViewable for non-wrapper slot', slotId);\n return;\n }\n const slotDiv = window.document.getElementById(slotId);\n const iframe = slotDiv?.querySelector('iframe') ?? null;\n const size = iframe?.width + 'x' + iframe?.height;\n if (size === '1x1') {\n // ignore pixel renders\n }\n else {\n const adView = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adViewableObject(event.slot, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_VIEWABLE_ENDPOINT, adView, window);\n }\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in impressionViewable handler', false, window, error);\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/logEventHandlers.ts?")},"./src/logObjectBuilder.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ adImpressionObject: () => (/* binding */ adImpressionObject),\n/* harmony export */ adServeObject: () => (/* binding */ adServeObject),\n/* harmony export */ adUnfilledObject: () => (/* binding */ adUnfilledObject),\n/* harmony export */ adViewableObject: () => (/* binding */ adViewableObject),\n/* harmony export */ auctionEndObject: () => (/* binding */ auctionEndObject),\n/* harmony export */ auctionInitObject: () => (/* binding */ auctionInitObject),\n/* harmony export */ bidRejectedObject: () => (/* binding */ bidRejectedObject),\n/* harmony export */ bidResponseObject: () => (/* binding */ bidResponseObject),\n/* harmony export */ bidTimeoutObject: () => (/* binding */ bidTimeoutObject),\n/* harmony export */ bidWonObject: () => (/* binding */ bidWonObject),\n/* harmony export */ pageViewObject: () => (/* binding */ pageViewObject)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _audiences__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audiences */ \"./src/audiences.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n// file: wrapper/src/logObjectBuilder.ts\n\n\n\n\n\n\nconst page_view_id = (0,uuid__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\nfunction pageViewObject(window = globalThis.window) {\n // TODO: return timezone when locale unavailable\n const pageView = {\n page_view_id: page_view_id,\n app_ver: \"0.0.7\",\n view_start_time: Date.now(),\n domain: window.location.hostname,\n page_path: window.location.pathname,\n session_id: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSessionId)(),\n user_id: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUserId)(),\n device: {\n user_agent: navigator.userAgent,\n // some browsers return comma-separated language lists; extract primary language to ensure 5-char limit\n language: (navigator.language || '').split(',')[0].trim().substring(0, 5),\n mobile: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUserDevice)(window) === _types_enums__WEBPACK_IMPORTED_MODULE_2__.Device.Mobile,\n view_port: {\n width: window.innerWidth,\n height: window.innerHeight\n },\n geo_location: (0,_audiences__WEBPACK_IMPORTED_MODULE_1__.getUserCountry)()\n },\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return pageView;\n}\nfunction auctionInitObject(auction) {\n const auctionInit = {\n page_view_id: page_view_id,\n pb_auction_id: auction.auctionId,\n auction_start_time: auction.timestamp, /* UTC timestamp */\n auction_end_time: null, /* UTC timestamp */\n ad_slots: [],\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n auction.adUnits.forEach((adUnit) => {\n const key = adUnit.div;\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key) ?? {};\n const adSlot = entry.adSlot ?? null;\n if (!adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`[auctionInitObject] no ad slot match for divId='${adUnit.div}'`, adUnit, (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAllAuctionEntries)());\n }\n const layoutIds = _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.ly /*layouts*/\n .filter((layout) => layout.as /*adSlots*/.some((slot) => slot.i /*id*/ === adSlot?.i /*id*/))\n .map((layout) => layout.i /*id*/);\n const priceFloor = adSlot?.f /*priceFloor*/\n ?? (_constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.pf /*priceFloor*/ ? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.pf /*priceFloor*/, globalThis.window) : null);\n const demandSeatIds = adSlot?.tg /*tagIds*/\n ?.map(tagId => (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[tagId.a /*alias*/]?.d /*demandSeatId*/) ?? [];\n auctionInit.ad_slots.push({\n pb_adunit_id: adUnit.adUnitId ?? null,\n pb_transaction_id: adUnit.transactionId ?? null,\n adslot_id: adSlot?.i /*id*/ ?? null,\n layout_ids: layoutIds,\n adunit_code: adSlot?.g /*gamAdUnitCode*/ ?? null,\n div_id: adUnit.div,\n price_floor: priceFloor,\n deal_id: null,\n demand_seat_ids: demandSeatIds,\n serve_type: entry?.serveType ?? null\n });\n });\n return auctionInit;\n}\n/**\n * Note: bid.bidderCode contains alias registered via pbjs.aliasBidder(bidder, alias).\n */\nfunction bidResponseObject(bid) {\n const bidResponse = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n cpm: bid.cpm ? bid.cpm : null, // TODO handle scenario if bidder responds with 0\n cpm_currency: bid.currency,\n size: bid.size,\n deal_id: bid.dealId ?? null,\n time_to_respond: bid.timeToRespond,\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidResponse;\n}\nfunction bidWonObject(bid) {\n const bidWon = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n cpm: bid.cpm,\n cpm_currency: bid.currency,\n size: bid.size,\n response_timestamp: bid.responseTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidWon;\n}\nfunction bidTimeoutObject(bid) {\n const bidTimeout = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n // BidTimeoutEvent has bid.bidder (not bidderCode) - Prebid timeout event structure differs\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidder /*alias*/]?.d /*demandSeatId*/,\n timeout: 0, //TODO bid.timeout not populated, need to figure out why\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidTimeout;\n}\nfunction bidRejectedObject(bid, adRejectTimestamp) {\n const bidRejected = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n cpm: bid.cpm ? bid.cpm : null,\n cpm_currency: bid.currency,\n size: bid.width + 'x' + bid.height,\n deal_id: bid.dealId ?? '',\n reject_reason: bid.rejectionReason ?? '',\n reject_timestamp: adRejectTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidRejected;\n}\nfunction adServeObject(bid, ad) {\n const adServe = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n ad_id: bid.adId ?? '',\n bid_cpm: bid.cpm,\n bid_cpm_currency: bid.currency,\n size: bid.size,\n status: ad.serveStatus,\n fail_reason: ad.failReason ?? '',\n ad_serve_timestamp: ad.serveTimestamp ?? 0,\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adServe;\n}\nfunction auctionEndObject(auction) {\n if (!auction.auctionId || !auction.auctionEnd) {\n throw new Error('invalid parameter auction in auctionEndObject()');\n }\n const auctionEnd = {\n pb_auction_id: auction.auctionId,\n auction_end_time: auction.auctionEnd, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return auctionEnd;\n}\nfunction adImpressionObject(event, adImpressionTimestamp) {\n // const size: [number, number] = event.size;\n const size = event?.size ? `${event.size[0]}x${event.size[1]}` : '';\n const key = event.slot.getSlotElementId();\n const adImpression = {\n pb_auction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedAuctionId ?? null,\n pb_transaction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedTransactionId ?? null,\n advertiser_id: event.advertiserId,\n campaign_id: event.campaignId,\n creative_id: event.creativeId,\n line_item_id: event.lineItemId,\n size: size,\n ad_impression_timestamp: adImpressionTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adImpression;\n}\nfunction adUnfilledObject(slot, adUnfilledTimestamp) {\n const key = slot.getSlotElementId();\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key) ?? {};\n const adUnfilled = {\n // fall back to pbAuctionId/pbTransactionId if pbServed* not set (slotRequested not fired for unfilled slots)\n pb_auction_id: entry.pbServedAuctionId ?? entry.pbAuctionId ?? null,\n pb_transaction_id: entry.pbServedTransactionId ?? entry.pbTransactionId ?? null,\n ad_unfilled_timestamp: adUnfilledTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adUnfilled;\n}\nfunction adViewableObject(slot, adViewableTimestamp) {\n const key = slot.getSlotElementId();\n const adViewable = {\n pb_auction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedAuctionId ?? null,\n pb_transaction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedTransactionId ?? null,\n ad_viewable_timestamp: adViewableTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adViewable;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/logObjectBuilder.ts?")},"./src/logger.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ flushQue: () => (/* binding */ flushQue),\n/* harmony export */ initLogger: () => (/* binding */ initLogger),\n/* harmony export */ logEvent: () => (/* binding */ logEvent)\n/* harmony export */ });\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants/loggerEndpoints */ \"./src/constants/loggerEndpoints.ts\");\n// file: wrapper/src/logger.ts\n\n\n\n\nconst loggerAPIEndpoint = `https://${_constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.e}${_constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.p /*apiPath*/}`;\n// module state\nlet eventQue = [];\nlet timeoutId = null;\nlet logMode = _types_enums__WEBPACK_IMPORTED_MODULE_2__.LogMode.Async;\nfunction initLogger(window = globalThis.window) {\n // follow config log mode\n const setLogMode = () => {\n logMode = _constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.m /*mode*/;\n if (logMode === _types_enums__WEBPACK_IMPORTED_MODULE_2__.LogMode.Sync) {\n flushQue(window); // flush events before page load\n }\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Page loaded, log mode '${logMode}' now follows config`, window);\n };\n if (window.document.readyState === 'complete') {\n setLogMode();\n }\n else {\n window.addEventListener('load', setLogMode);\n }\n // set unload flush to prevent data loss\n window.addEventListener('beforeunload', () => flushQue(window));\n window.addEventListener('pagehide', () => flushQue(window));\n}\nfunction flushQue(window = globalThis.window) {\n if (eventQue.length === 0) {\n return;\n }\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n const events = [...eventQue];\n eventQue = [];\n const batchData = events.map(event => ({\n endpoint: event.path,\n payload: event.payload,\n timestamp: event.timestamp\n }));\n postLogData(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_3__.BATCH_ENDPOINT, batchData, window);\n}\nfunction postLogData(path, payload, window = globalThis.window) {\n const strPayload = JSON.stringify(payload);\n fetch(`${loggerAPIEndpoint}${path}`, {\n method: 'POST',\n body: strPayload,\n headers: {\n 'Content-Type': 'text/plain'\n },\n keepalive: strPayload.length < 60000 // safety margin for 64KB limit\n })\n .then(response => {\n if (response.status !== 200) {\n throw new Error(`HTTP error! ${response.status} ${response.statusText}`);\n }\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Logged event(s) to ${loggerAPIEndpoint}${path}`, payload, window);\n })\n .catch(error => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Failed to log event(s) to ${loggerAPIEndpoint}${path}`, false, window, payload, error);\n });\n}\nfunction logEvent(path, payload, window = globalThis.window) {\n if (logMode === _types_enums__WEBPACK_IMPORTED_MODULE_2__.LogMode.Sync) {\n // synchronous logging\n postLogData(path, payload, window);\n return;\n }\n // asynchronous logging\n eventQue.push({\n path,\n payload,\n timestamp: Date.now()\n });\n // setup flush for asynchronous logging\n switch (_constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.t /*flushTrigger*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_2__.FlushTrigger.Event:\n if (eventQue.length >= _constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.v /*thresholdValue*/) {\n flushQue(window);\n }\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_2__.FlushTrigger.Time:\n if (timeoutId === null) {\n timeoutId = window.setTimeout(() => {\n flushQue(window);\n }, _constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.v /*thresholdValue*/);\n }\n break;\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/logger.ts?")},"./src/refreshEventHandlers.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setRefreshWorker: () => (/* binding */ setRefreshWorker)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types/enums */ "./src/types/enums.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n// file: wrapper/src/refreshEventHandlers.ts\n\n\n\n\nconst DEFAULT_REFRESH_INTERVAL = 30; // in seconds\nfunction setRefreshWorker(adUnitCode, window = globalThis.window) {\n // filter layouts applicable to current page\n const layouts = _constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.ly /*layout*/\n .filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_0__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/)) ?? [];\n const allAdSlots = _constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.as /*adSlots*/\n .concat(layouts.flatMap(ly => ly.as /*adSlots*/));\n if (allAdSlots.length === 0) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`no ad slots defined for pagepath \'${window.location.pathname}\', ads will not be refreshed`, window);\n return;\n }\n const refreshAdSlot = allAdSlots.find(\n // ({ g/*gam ad unit code*/ }) => g/*gam ad unit code*/ === adUnitPath\n slot => (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(slot) === adUnitCode);\n if (refreshAdSlot) {\n const resolvedRefresh = refreshAdSlot.r /*refresh*/ ?? _constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.r /*refresh*/;\n if (resolvedRefresh) {\n const slotDivId = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(refreshAdSlot);\n const element = window.document.getElementById(slotDivId);\n const refreshSetting = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(resolvedRefresh, window);\n const refreshType = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.enumFromString)(_types_enums__WEBPACK_IMPORTED_MODULE_1__.RefreshTrigger, refreshSetting.t /*trigger*/ ?? \'\');\n if (element && refreshType) {\n switch (refreshType) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.RefreshTrigger.InView:\n refreshInView(element, refreshAdSlot, refreshSetting, window);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.RefreshTrigger.AfterInterval:\n refreshAfterInterval(element, refreshAdSlot, refreshSetting, window);\n break;\n default:\n break;\n }\n }\n }\n }\n}\n/**\n *\n * refresh in view, only after interval\n * max refresh applies (if specified)\n *\n **/\nfunction refreshInView(element, adSlot, refreshSetting, window = globalThis.window) {\n const maxRefreshes = refreshSetting.c /*count of times*/ ?? Number.MAX_SAFE_INTEGER;\n const timeout = (refreshSetting.i /*interval*/ ?? DEFAULT_REFRESH_INTERVAL) * 1000; // refresh interval in miliseconds\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(adSlot); // adslot element (div) id used as unique prebid adunit code\n var refreshCount = 0; // initialize refresh counter\n var isWaitingForView = true; // waiting for ad to be in view to start next refresh\n const options = {\n root: null, // element to intersect with browser viewport\n rootMargin: "0px", // margin to grow or shrink intersection frame of root\n threshold: 0.0 // % element visible\n };\n var isAdslotVisible = false; // track current visibility\n const scheduleNextRefresh = () => {\n if (refreshCount >= maxRefreshes) {\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.clearIntersectionObserver)(adUnitCode); // disconnect, clear observer\n return;\n }\n // start timer for next refresh\n setTimeout(() => {\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.isAuctionInProgress)(adUnitCode)) {\n return;\n }\n refreshCount++;\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setAuctionInProgress)(adUnitCode, _types_enums__WEBPACK_IMPORTED_MODULE_1__.ServeType.Refresh);\n window.pbjs.que.push(() => {\n window.pbjs.requestBids({\n adUnitCodes: [adUnitCode],\n timeout: adSlot.o /*auctionTimeout*/ ?? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.o /*auctionTimeout*/, window)\n });\n });\n // if still visible, schedule next refresh immediately\n if (isAdslotVisible) {\n scheduleNextRefresh();\n }\n else {\n // reset to wait mode for next visibility\n isWaitingForView = true;\n }\n }, timeout);\n };\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n isAdslotVisible = entry.intersectionRatio > 0;\n // schedule refresh, if waiting for view and element just became visible\n if (isWaitingForView && isAdslotVisible) {\n isWaitingForView = false;\n scheduleNextRefresh();\n }\n });\n }, options);\n // store observer instance in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setIntersectionObserver)(adUnitCode, observer);\n observer.observe(element);\n}\n/**\n *\n * refresh after interval, only if ad was viewable\n * max refresh applies (if specified)\n *\n **/\nfunction refreshAfterInterval(element, adSlot, refreshSetting, window = globalThis.window) {\n const maxRefreshes = refreshSetting.c /*countOfTimes*/ ?? Number.MAX_SAFE_INTEGER;\n const timeout = (refreshSetting.i /*interval*/ ?? DEFAULT_REFRESH_INTERVAL) * 1000; // refresh interval in miliseconds\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(adSlot); // adslot element (div) id used as unique prebid adunit code\n var refreshCount = 0; // initialize refresh counter\n var intervalId = null;\n const options = {\n root: null, // element to intersect with browser viewport\n rootMargin: "0px", // margin to grow or shrink intersection frame of root\n threshold: 0.0 // % element visible\n };\n var hasFirstView = false; // track if element has been viewed at least once\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (!hasFirstView && entry.intersectionRatio > 0) {\n hasFirstView = true;\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.clearIntersectionObserver)(adUnitCode); // disconnect observer after first view\n intervalId = setInterval(() => {\n if (refreshCount < maxRefreshes) {\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.isAuctionInProgress)(adUnitCode)) {\n return;\n }\n refreshCount++;\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setAuctionInProgress)(adUnitCode, _types_enums__WEBPACK_IMPORTED_MODULE_1__.ServeType.Refresh);\n window.pbjs.que.push(() => {\n window.pbjs.requestBids({\n adUnitCodes: [adUnitCode],\n timeout: adSlot.o /*auctionTimeout*/ ?? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.o /*auctionTimeout*/, window)\n });\n });\n }\n if (refreshCount >= maxRefreshes && intervalId) {\n clearInterval(intervalId);\n intervalId = null;\n }\n }, timeout);\n }\n });\n }, options);\n // store observer instance in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setIntersectionObserver)(adUnitCode, observer);\n observer.observe(element);\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/refreshEventHandlers.ts?')},"./src/stickySlot.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BUTTON_SYMBOLS: () => (/* binding */ BUTTON_SYMBOLS),\n/* harmony export */ BUTTON_TITLES: () => (/* binding */ BUTTON_TITLES),\n/* harmony export */ SLOT_CONTENT: () => (/* binding */ SLOT_CONTENT),\n/* harmony export */ STICKY_SLOT_CLASSES: () => (/* binding */ STICKY_SLOT_CLASSES),\n/* harmony export */ StickyAction: () => (/* binding */ StickyAction),\n/* harmony export */ addStickySlot: () => (/* binding */ addStickySlot),\n/* harmony export */ anchorAction: () => (/* binding */ anchorAction),\n/* harmony export */ anchorId: () => (/* binding */ anchorId),\n/* harmony export */ buttonId: () => (/* binding */ buttonId),\n/* harmony export */ setInsertSlotWorker: () => (/* binding */ setInsertSlotWorker)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n// file: wrapper/src/stickySlot.ts\n\n\nvar StickyAction;\n(function (StickyAction) {\n StickyAction[\"Minimize\"] = \"minimize\";\n StickyAction[\"Restore\"] = \"restore\";\n StickyAction[\"Dismiss\"] = \"dismiss\";\n})(StickyAction || (StickyAction = {}));\n// css class names used for sticky slots\nconst STICKY_SLOT_CLASSES = {\n ANCHOR: 'ad-anchor',\n SLOT: 'ad-slot',\n ACTION_BUTTONS: 'ad-action-buttons',\n ACTION_BTN: 'ad-action-btn',\n HORIZONTAL_MINIMIZED: 'horizontal-minimized',\n VERTICAL_MINIMIZED: 'vertical-minimized',\n HIDDEN: 'hidden'\n};\n// button symbols\nconst BUTTON_SYMBOLS = {\n RESTORE: '+',\n MINIMIZE: '-',\n DISMISS: 'x'\n};\n// button titles for accessibility\nconst BUTTON_TITLES = {\n RESTORE: 'Restore Ad',\n MINIMIZE: 'Minimize Ad',\n DISMISS: 'Dismiss Ad'\n};\n// slot content\nconst SLOT_CONTENT = {\n DEFAULT: 'Advertisement'\n};\n// track pending DOMContentLoaded handlers\nconst stickySlotDOMHandlers = new Set();\nfunction setInsertSlotWorker(adUnit, window = globalThis.window) {\n // TODO add all sticky slots at one time\n if (window.document.body) { // page has already loaded\n addStickySlot(adUnit.n /*insert*/, window);\n }\n else {\n const handlerId = anchorId(adUnit.n.r /*reference*/);\n if (stickySlotDOMHandlers.has(handlerId)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`DOMContentLoaded handler already registered for ${handlerId}, skipping duplicate`, window);\n return;\n }\n stickySlotDOMHandlers.add(handlerId);\n window.document.addEventListener('DOMContentLoaded', () => {\n addStickySlot(adUnit.n /*insert*/, window);\n stickySlotDOMHandlers.delete(handlerId);\n }, { once: true });\n }\n}\nconst anchorId = (ref) => `ad-${ref}-anchor`;\nconst buttonId = (ref, action) => `ad-${ref}-${action}`;\nfunction addStickySlot(insert, window = globalThis.window) {\n const anchorElementId = anchorId(insert.r /*reference*/);\n const existingAnchor = window.document.getElementById(anchorElementId);\n if (existingAnchor) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Sticky slot anchor ${anchorElementId} already exists in DOM, skipping creation`, window);\n return;\n }\n const slotId = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.stickySlotId)(insert.r /*reference*/);\n const anchorClass = `${STICKY_SLOT_CLASSES.ANCHOR} ad-${insert.r /*reference*/}`;\n const anchor = window.document.createElement('div');\n anchor.id = anchorElementId;\n anchor.className = anchorClass;\n const actionButtonsDiv = window.document.createElement('div');\n actionButtonsDiv.className = STICKY_SLOT_CLASSES.ACTION_BUTTONS;\n const btnRes = window.document.createElement('div');\n btnRes.id = buttonId(insert.r /*reference*/, StickyAction.Restore);\n btnRes.innerHTML = BUTTON_SYMBOLS.RESTORE;\n btnRes.className = STICKY_SLOT_CLASSES.ACTION_BTN;\n btnRes.title = BUTTON_TITLES.RESTORE;\n btnRes.style.display = 'none';\n btnRes.onclick = () => anchorAction(insert.r /*reference*/, StickyAction.Restore, window);\n actionButtonsDiv.appendChild(btnRes);\n if (insert.z /*minimize*/) {\n const btnMin = window.document.createElement('div');\n btnMin.id = buttonId(insert.r /*reference*/, StickyAction.Minimize);\n btnMin.innerHTML = BUTTON_SYMBOLS.MINIMIZE;\n btnMin.className = STICKY_SLOT_CLASSES.ACTION_BTN;\n btnMin.title = BUTTON_TITLES.MINIMIZE;\n btnMin.onclick = () => anchorAction(insert.r /*reference*/, StickyAction.Minimize, window);\n actionButtonsDiv.appendChild(btnMin);\n }\n if (insert.s /*dismiss*/) {\n const btnDis = window.document.createElement('div');\n btnDis.id = buttonId(insert.r /*reference*/, StickyAction.Dismiss);\n btnDis.innerHTML = BUTTON_SYMBOLS.DISMISS;\n btnDis.className = STICKY_SLOT_CLASSES.ACTION_BTN;\n btnDis.title = BUTTON_TITLES.DISMISS;\n btnDis.onclick = () => anchorAction(insert.r /*reference*/, StickyAction.Dismiss, window);\n actionButtonsDiv.appendChild(btnDis);\n }\n anchor.appendChild(Object.assign(window.document.createElement('div'), {\n id: slotId,\n className: STICKY_SLOT_CLASSES.SLOT,\n innerHTML: SLOT_CONTENT.DEFAULT\n }));\n anchor.appendChild(actionButtonsDiv);\n switch (insert.r /*reference*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Top:\n window.document.body.prepend(anchor);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Bottom:\n window.document.body.append(anchor);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Left:\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Right:\n window.document.body.append(anchor);\n break;\n }\n}\n/**\n * handle ad actions (hide, minimize, restore)\n * @param {string} reference - anchor reference (WindowReference)\n * @param {string} action - action to take (StickyAction)\n */\nfunction anchorAction(reference, action, window = globalThis.window) {\n const adAnchor = window.document.getElementById(anchorId(reference));\n const restoreBtn = window.document.getElementById(buttonId(reference, StickyAction.Restore));\n const minimizeBtn = window.document.getElementById(buttonId(reference, StickyAction.Minimize));\n const dismissBtn = window.document.getElementById(buttonId(reference, StickyAction.Dismiss));\n var minimizeClassName = '';\n switch (reference) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Top:\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Bottom:\n minimizeClassName = STICKY_SLOT_CLASSES.HORIZONTAL_MINIMIZED;\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Left:\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Right:\n minimizeClassName = STICKY_SLOT_CLASSES.VERTICAL_MINIMIZED;\n break;\n default:\n throw new Error(`invalid reference parameter '${reference}' to anchorAction()`);\n }\n switch (action) {\n case StickyAction.Restore:\n adAnchor?.classList.remove(minimizeClassName); // restore\n restoreBtn?.style && (restoreBtn.style.display = 'none'); // hide restore button \n minimizeBtn?.style && (minimizeBtn.style.display = 'block'); // show minimize button\n dismissBtn?.style && (dismissBtn.style.display = 'block'); // show dismiss button\n break;\n case StickyAction.Minimize:\n adAnchor?.classList.add(minimizeClassName); // minimize\n minimizeBtn?.style && (minimizeBtn.style.display = 'none'); // hide minimize button\n restoreBtn?.style && (restoreBtn.style.display = 'block'); // show restore button\n dismissBtn?.style && (dismissBtn.style.display = 'block'); // show dismiss button\n //TODO how to handle refresh?\n break;\n case StickyAction.Dismiss:\n adAnchor?.classList.add(STICKY_SLOT_CLASSES.HIDDEN); // dismiss\n //TODO delete google slot and pbjs ad unit, should we remove element?\n break;\n default:\n throw new Error(`invalid action parameter '${action}' to anchorAction()`);\n }\n}\n//TODO minimized ad slot maximized on refresh\n//TODO should not have unfilled -- house ad or immediate refresh, after which automatically minimized\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/stickySlot.ts?")},"./src/types/enums.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Anchor: () => (/* binding */ Anchor),\n/* harmony export */ Browser: () => (/* binding */ Browser),\n/* harmony export */ Device: () => (/* binding */ Device),\n/* harmony export */ DimensionValueType: () => (/* binding */ DimensionValueType),\n/* harmony export */ ElementReference: () => (/* binding */ ElementReference),\n/* harmony export */ FlushTrigger: () => (/* binding */ FlushTrigger),\n/* harmony export */ Load: () => (/* binding */ Load),\n/* harmony export */ LogMode: () => (/* binding */ LogMode),\n/* harmony export */ MediaFormat: () => (/* binding */ MediaFormat),\n/* harmony export */ ORTBPlacement: () => (/* binding */ ORTBPlacement),\n/* harmony export */ PagePathPattern: () => (/* binding */ PagePathPattern),\n/* harmony export */ RefreshTrigger: () => (/* binding */ RefreshTrigger),\n/* harmony export */ RunMode: () => (/* binding */ RunMode),\n/* harmony export */ ServeStatus: () => (/* binding */ ServeStatus),\n/* harmony export */ ServeType: () => (/* binding */ ServeType),\n/* harmony export */ ValueSourceType: () => (/* binding */ ValueSourceType),\n/* harmony export */ WindowReference: () => (/* binding */ WindowReference)\n/* harmony export */ });\n// file: wrapper/src/types/enums.ts\nvar RunMode;\n(function (RunMode) {\n RunMode["TEST"] = "TS";\n RunMode["NON_MONETARY"] = "NM";\n RunMode["MONETIZED"] = "MZ";\n})(RunMode || (RunMode = {}));\nvar WindowReference;\n(function (WindowReference) {\n WindowReference["Top"] = "TP";\n WindowReference["Bottom"] = "BM";\n WindowReference["Left"] = "LF";\n WindowReference["Right"] = "RG";\n})(WindowReference || (WindowReference = {}));\nvar ElementReference;\n(function (ElementReference) {\n ElementReference["Before"] = "BF";\n ElementReference["After"] = "AT";\n ElementReference["Inside"] = "IN";\n})(ElementReference || (ElementReference = {}));\nvar Anchor;\n(function (Anchor) {\n Anchor["Window"] = "WN";\n Anchor["StaticElement"] = "ST";\n Anchor["DynamicElement"] = "DY";\n})(Anchor || (Anchor = {}));\nvar Load;\n(function (Load) {\n /**\n * Eager Loading:\n * Ads are loaded as soon as the page loads, regardless of whether they are visible to the user.\n * Use Case: Pages with high-priority ad slots above the fold where immediate visibility is crucial.\n */\n Load["Eager"] = "EG";\n /**\n * Deferred Loading:\n * Ads are loaded after the entire page has finished loading or after a specific delay.\n * Use Case: Ensures critical content is loaded first to improve perceived performance.\n */\n Load["Deferred"] = "DF";\n /**\n * Lazy Loading:\n * Ads are loaded only when they are about to come into the viewport (or are close to it).\n * Use Case: Improves performance and reduces resource usage by deferring ad requests for offscreen ads.\n */\n Load["Lazy"] = "LZ";\n /**\n * Dynamic Loading:\n * Ads are loaded for slots created dynamically after the initial page load, such as in infinite scroll scenarios.\n * Use Case: Pages with content that expands dynamically, where new ad slots are introduced as the user scrolls.\n */\n Load["Dynamic"] = "YM";\n /**\n * On-Demand Loading:\n * Ads are loaded based on specific user actions, such as clicking a button or interacting with a part of the page.\n * Use Case: When ads need to be shown only after user engagement (e.g., inside a collapsible menu).\n */\n Load["OnDemand"] = "ON";\n})(Load || (Load = {}));\nvar ServeType;\n(function (ServeType) {\n ServeType["Initial"] = "IN";\n ServeType["Refresh"] = "RF";\n})(ServeType || (ServeType = {}));\nvar ServeStatus;\n(function (ServeStatus) {\n ServeStatus["Success"] = "SC";\n ServeStatus["Fail"] = "FL";\n})(ServeStatus || (ServeStatus = {}));\nvar MediaFormat;\n(function (MediaFormat) {\n MediaFormat["Banner"] = "BN";\n})(MediaFormat || (MediaFormat = {}));\nvar RefreshTrigger;\n(function (RefreshTrigger) {\n RefreshTrigger["InView"] = "IV";\n RefreshTrigger["AfterInterval"] = "AV";\n})(RefreshTrigger || (RefreshTrigger = {}));\nvar Device;\n(function (Device) {\n Device["Mobile"] = "MB";\n Device["Desktop"] = "DK";\n})(Device || (Device = {}));\nvar Browser;\n(function (Browser) {\n Browser["Chrome"] = "CR";\n Browser["Safari"] = "SF";\n Browser["Edge"] = "EG";\n Browser["Firefox"] = "FX";\n Browser["Other"] = "OR";\n})(Browser || (Browser = {}));\nvar PagePathPattern;\n(function (PagePathPattern) {\n PagePathPattern["Prefix"] = "PR";\n PagePathPattern["Contains"] = "CT";\n PagePathPattern["Suffix"] = "SF";\n PagePathPattern["Exact"] = "EX";\n PagePathPattern["Regex"] = "RG";\n})(PagePathPattern || (PagePathPattern = {}));\nvar LogMode;\n(function (LogMode) {\n LogMode["Sync"] = "SY";\n LogMode["Async"] = "AS";\n})(LogMode || (LogMode = {}));\nvar FlushTrigger;\n(function (FlushTrigger) {\n FlushTrigger["Event"] = "EV";\n FlushTrigger["Time"] = "TM";\n})(FlushTrigger || (FlushTrigger = {}));\n/**\n * Custom Dimension Enums for multi-destination dimension routing\n */\n/* How dimension value is obtained */\nvar ValueSourceType;\n(function (ValueSourceType) {\n ValueSourceType["Static"] = "ST";\n ValueSourceType["PageVariable"] = "PV";\n ValueSourceType["Runtime"] = "RT";\n})(ValueSourceType || (ValueSourceType = {}));\n/* ORTB2 placement for auction destination */\nvar ORTBPlacement;\n(function (ORTBPlacement) {\n ORTBPlacement["Site"] = "SI";\n ORTBPlacement["Slot"] = "SL";\n ORTBPlacement["User"] = "US";\n})(ORTBPlacement || (ORTBPlacement = {}));\n/* Data type for dimension values (used for validation) */\nvar DimensionValueType;\n(function (DimensionValueType) {\n DimensionValueType["String"] = "ST";\n DimensionValueType["Enum"] = "EN";\n DimensionValueType["Boolean"] = "BL";\n DimensionValueType["Number"] = "NM";\n})(DimensionValueType || (DimensionValueType = {}));\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/types/enums.ts?')},"./src/utils.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addSlotElement: () => (/* binding */ addSlotElement),\n/* harmony export */ consoleDebug: () => (/* binding */ consoleDebug),\n/* harmony export */ consoleError: () => (/* binding */ consoleError),\n/* harmony export */ enumFromString: () => (/* binding */ enumFromString),\n/* harmony export */ generateHash: () => (/* binding */ generateHash),\n/* harmony export */ getPrimaryDomain: () => (/* binding */ getPrimaryDomain),\n/* harmony export */ getSessionId: () => (/* binding */ getSessionId),\n/* harmony export */ getSlotDivId: () => (/* binding */ getSlotDivId),\n/* harmony export */ getUserDevice: () => (/* binding */ getUserDevice),\n/* harmony export */ getUserId: () => (/* binding */ getUserId),\n/* harmony export */ getValueByDevice: () => (/* binding */ getValueByDevice),\n/* harmony export */ matchPagePath: () => (/* binding */ matchPagePath),\n/* harmony export */ slotId: () => (/* binding */ slotId),\n/* harmony export */ stickySlotId: () => (/* binding */ stickySlotId)\n/* harmony export */ });\n/* harmony import */ var xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xxhash-wasm */ \"../node_modules/xxhash-wasm/esm/xxhash-wasm.js\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n// file: wrapper/src/utils.ts\n\n\nconst SESSION_LENGTH_MS = 10 * 60 * 1000; // 10 minutes, in milliseconds\nconst generateId = () => Math.random().toString(36).substring(2, 15)\n .padEnd(13, Math.random().toString(36).substring(2, 15));\nfunction getSessionId() {\n let result;\n try {\n var sessionId = localStorage.getItem('sessionId');\n var sessionIdLastRead = localStorage.getItem('sessionIdLastRead');\n const currentTime = Date.now(); /* UTC timestamp */\n if ((!sessionId) || (!sessionIdLastRead) ||\n ((currentTime - parseInt(sessionIdLastRead)) > SESSION_LENGTH_MS)) {\n sessionId = generateId();\n localStorage.setItem('sessionId', sessionId);\n }\n localStorage.setItem('sessionIdLastRead', currentTime.toString());\n result = sessionId;\n }\n catch (error) {\n // if localStorage fails, generate unique session id and log issue\n consoleError('getSessionId: localStorage unavailable:', false, error);\n result = generateId();\n }\n return result;\n}\nfunction getUserId() {\n let result;\n try {\n var userId = localStorage.getItem('userId');\n if (!userId) {\n const newUserId = generateId();\n localStorage.setItem('userId', newUserId);\n result = newUserId;\n }\n else {\n result = userId;\n }\n }\n catch (error) {\n // if localStorage fails, generate unique id and log issue\n consoleError('getUserId: localStorage unavailable:', false, error);\n result = generateId();\n }\n return result;\n}\nfunction getUserDevice(window = globalThis.window) {\n const isMobileViewport = window.matchMedia(\"(max-width: 760px), (max-width: 1024px) and (orientation: landscape)\").matches;\n const isMobileUserAgent = navigator?.userAgent ? /Android|iPhone|iPad/i.test(navigator.userAgent) : false;\n return (isMobileViewport || isMobileUserAgent) ? _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Mobile : _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Desktop;\n}\nconst stickySlotId = (ref) => `ad-${ref}-slot`;\n/**\n * generate id for ad slots based on position and reference element\n */\nconst slotId = (ref, divId) => `ad-slot-${ref}-${divId}`;\n/**\n * add slot element to dom with Insert configuration\n * @param insert Insert configuration specifying anchor, reference, and divId\n * @param window window object (defaults to globalThis.window)\n * @returns created slot element, or null if insertion fails\n */\nfunction addSlotElement(insert, window = globalThis.window) {\n const refElement = window.document.getElementById(insert.d /*divId*/);\n if (!refElement) {\n consoleError(`Reference element not found for slot: ${insert.d /*divId*/}`, false, window);\n return null;\n }\n // derive className based on anchor type\n const className = insert.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_1__.Anchor.StaticElement ? 'ad-static' : 'ad-dynamic';\n // create ad slot div\n const slotDiv = window.document.createElement('div');\n slotDiv.id = slotId(insert.r /*reference*/, insert.d /*divId*/);\n slotDiv.className = className;\n slotDiv.innerHTML = 'Advertisement';\n // insert slot div based on reference position\n switch (insert.r /*reference*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.ElementReference.Before:\n refElement.before(slotDiv);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.ElementReference.After:\n refElement.after(slotDiv);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.ElementReference.Inside:\n refElement.appendChild(slotDiv);\n break;\n // default case not necessary since config validated at build time\n }\n consoleDebug(`Inserted static slot ${slotDiv.id} at ${insert.r /*reference*/} of element ${insert.d /*divId*/}`, window);\n return slotDiv;\n}\nfunction consoleDebug(message, windowOrFirstArg, ...additionalArgs) {\n // check if first argument is Window object\n const isWindowArg = windowOrFirstArg && typeof windowOrFirstArg === 'object' && 'location' in windowOrFirstArg;\n const window = isWindowArg ? windowOrFirstArg : globalThis.window;\n const args = isWindowArg ? additionalArgs : (windowOrFirstArg !== undefined ? [windowOrFirstArg, ...additionalArgs] : []);\n try {\n const searchString = (window.location && typeof window.location.search === 'string') ? window.location.search : '';\n const urlParams = new URLSearchParams(searchString);\n const pbjs = window.pbjs;\n if ((urlParams.get('pbjs_debug') === 'true') ||\n (pbjs && pbjs.readConfig && pbjs.readConfig('debug') === true)) {\n console.log('%cAAM', 'background: navy; color: white; padding: 2px 5px; border-radius: 3px;', message, ...args);\n }\n }\n catch (error) {\n console.error('Console logging failed:', message);\n }\n}\nfunction consoleError(message, escalate = false, windowOrSecondArg, ...additionalArgs) {\n // check if third argument is Window object\n const isWindowArg = windowOrSecondArg && typeof windowOrSecondArg === 'object' && 'location' in windowOrSecondArg;\n const window = isWindowArg ? windowOrSecondArg : globalThis.window;\n const args = isWindowArg ? additionalArgs : (windowOrSecondArg !== undefined ? [windowOrSecondArg, ...additionalArgs] : []);\n try {\n const searchString = (window.location && typeof window.location.search === 'string') ? window.location.search : '';\n const urlParams = new URLSearchParams(searchString);\n const pbjs = window.pbjs;\n if ((urlParams.get('pbjs_debug') === 'true') ||\n (pbjs && pbjs.readConfig && pbjs.readConfig('debug') === true)) {\n console.error('%cAAM', 'background: navy; color: white; padding: 2px 5px; border-radius: 3px;', message, ...args);\n }\n }\n catch (error) {\n console.error('Console logging failed:', message);\n }\n if (escalate) {\n throw Error(message);\n }\n}\nconst enumFromString = (enumType, value) => Object.values(enumType).includes(value) ? value : undefined;\nconst getPrimaryDomain = (hostname) => {\n // hostname from web api, should be type safe\n return hostname.split('.').slice(-2).join('.');\n};\nasync function generateHash(data, length) {\n const { h64 } = await (0,xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n const hash64Value = h64(data, BigInt(0));\n const hexHash = hash64Value.toString(16).padStart(16, '0').toUpperCase();\n return hexHash.slice(0, length);\n}\nfunction matchPagePath(currentPath, pagePaths) {\n return pagePaths.some((pathObj) => {\n const { t /*pattern*/, p /*path*/ } = pathObj;\n switch (t /*pattern*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Prefix:\n return currentPath.startsWith(p /*path*/);\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Contains:\n return currentPath.includes(p /*path*/);\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Suffix:\n return currentPath.endsWith(p /*path*/);\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Exact:\n return currentPath === p /*path*/;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Regex:\n try {\n const regex = new RegExp(p /*path*/);\n return regex.test(currentPath);\n }\n catch {\n consoleError(`Invalid regex pattern: ${p /*path*/}`, false);\n return false;\n }\n default:\n return false;\n }\n });\n}\n/**\n * get device-specific or global value based on discriminated union pattern\n * works for any type T where value is either global (a) or device-specific (d/m)\n */\nfunction getValueByDevice(value, window = globalThis.window) {\n // build time validation ensures type (discriminated union) safety\n if ('a' in value) {\n return value.a /*all*/;\n }\n // Otherwise it's device-specific (both d and m must exist per union type)\n const device = getUserDevice(window);\n switch (device) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Desktop:\n return value.d /*desktop*/;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Mobile:\n return value.m /*mobile*/;\n default:\n // default to desktop for unknown devices\n consoleDebug('getValueByDevice: Unknown device type, using desktop value', device, value);\n return value.d /*desktop*/;\n }\n}\nconst getSlotDivId = (adSlot) => {\n // build time validation ensures type safety\n return adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_1__.Anchor.Window\n ? stickySlotId(adSlot.n /*insert*/.r /*reference*/)\n : slotId(adSlot.n /*insert*/.r /*reference*/, adSlot.n /*insert*/.d /*divId*/);\n};\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/utils.ts?")},"./src/wrapperTag.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeWrapperTag: () => (/* binding */ initializeWrapperTag)\n/* harmony export */ });\n/* harmony import */ var _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dynamicSlot */ "./src/dynamicSlot.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n/* harmony import */ var _customDimensions_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./customDimensions/api */ "./src/customDimensions/api.ts");\n// file: wrapper/src/wrapperTag.ts\n/**\n * WrapperTag Public API\n *\n * Provides command queue pattern for pre-load queuing (like GPT/Prebid):\n *\n * // Publisher can do this BEFORE wrapper loads:\n * window.wrapperTag = window.wrapperTag || {};\n * wrapperTag.cmd = wrapperTag.cmd || [];\n * wrapperTag.cmd.push(function() {\n * wrapperTag.insertAdSlot(\'my-div\', \'after\');\n * wrapperTag.setPageDimensions({ content_tier: \'premium\' });\n * });\n */\n\n\n\n\n/**\n * Initialize wrapperTag API and process command queue.\n *\n * Command Queue Pattern (similar to GPT/Prebid):\n * 1. Capture any commands queued before wrapper loaded (from existingTag.cmd array)\n * 2. Create new wrapperTag with immediate executor (cmd.push executes immediately)\n * 3. Assign to window.wrapperTag (new commands now execute immediately)\n * 4. Process previously queued commands\n *\n * Order matters: immediate executor must be set BEFORE processing queued commands,\n * so if a queued command pushes more commands, they execute immediately.\n *\n * @param win Window object (for testing or iframe support)\n */\nfunction initializeWrapperTag(win = globalThis.window) {\n // Step 1: Capture any commands queued before wrapper loaded\n // Publishers may have pushed to wrapperTag.cmd before this runs\n const existingTag = win.wrapperTag || {};\n const queuedCommands = Array.isArray(existingTag.cmd) ? existingTag.cmd : [];\n // Step 2: Create full API with immediate executor for cmd.push\n // After this, any call to wrapperTag.cmd.push() executes immediately\n const wrapperTag = {\n // build information\n appVersion: "0.0.7",\n appBuildDate: "2026-01-09T17:54:00.026Z",\n appName: "app-p8efa792fe841a.js",\n // configuration\n config: _constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig,\n get inventoryConfig() {\n return (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getInventoryConfig)();\n },\n // dynamic slot management api\n insertAdSlot: async (refDivId, position) => await _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__.insertDynamicAdSlot(refDivId, position, win),\n deleteAdSlot: (divId) => _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__.deleteDynamicAdSlot(divId, win),\n insertStickyAdSlot: async (reference) => await _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__.insertStickyAdSlot(reference, win),\n // custom dimensions api\n setPageDimensions: (values) => (0,_customDimensions_api__WEBPACK_IMPORTED_MODULE_3__.setPageDimensions)(values, win),\n setSlotDimensions: (slotId, values) => (0,_customDimensions_api__WEBPACK_IMPORTED_MODULE_3__.setSlotDimensions)(slotId, values, win),\n getDimensions: (slotId) => (0,_customDimensions_api__WEBPACK_IMPORTED_MODULE_3__.getDimensions)(slotId, win),\n // command queue - immediate executor replaces array\n // any new cmd.push() calls after initialization execute immediately\n cmd: {\n push: (fn) => {\n try {\n fn();\n }\n catch (e) {\n console.error(\'[wrapperTag] Command queue error:\', e);\n }\n }\n }\n };\n // Step 3: Assign to window - immediate executor now active\n win.wrapperTag = wrapperTag;\n // Step 4: Process previously queued commands\n // If these commands push more commands, they execute immediately (step 3 completed)\n for (const fn of queuedCommands) {\n try {\n fn();\n }\n catch (e) {\n console.error(\'[wrapperTag] Command queue error:\', e);\n }\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/wrapperTag.ts?')},"../node_modules/uuid/dist/esm-browser/native.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ randomUUID });\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/native.js?")},"../node_modules/uuid/dist/esm-browser/regex.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/regex.js?')},"../node_modules/uuid/dist/esm-browser/rng.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rng)\n/* harmony export */ });\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/rng.js?")},"../node_modules/uuid/dist/esm-browser/stringify.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ unsafeStringify: () => (/* binding */ unsafeStringify)\n/* harmony export */ });\n/* harmony import */ var _validate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.js */ \"../node_modules/uuid/dist/esm-browser/validate.js\");\n\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!(0,_validate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stringify);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/stringify.js?")},"../node_modules/uuid/dist/esm-browser/v4.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _native_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./native.js */ "../node_modules/uuid/dist/esm-browser/native.js");\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng.js */ "../node_modules/uuid/dist/esm-browser/rng.js");\n/* harmony import */ var _stringify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stringify.js */ "../node_modules/uuid/dist/esm-browser/stringify.js");\n\n\n\nfunction v4(options, buf, offset) {\n if (_native_js__WEBPACK_IMPORTED_MODULE_0__["default"].randomUUID && !buf && !options) {\n return _native_js__WEBPACK_IMPORTED_MODULE_0__["default"].randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? (0,_rng_js__WEBPACK_IMPORTED_MODULE_1__["default"])();\n if (rnds.length < 16) {\n throw new Error(\'Random bytes length must be >= 16\');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return (0,_stringify_js__WEBPACK_IMPORTED_MODULE_2__.unsafeStringify)(rnds);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v4);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/v4.js?')},"../node_modules/uuid/dist/esm-browser/validate.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _regex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./regex.js */ "../node_modules/uuid/dist/esm-browser/regex.js");\n\nfunction validate(uuid) {\n return typeof uuid === \'string\' && _regex_js__WEBPACK_IMPORTED_MODULE_0__["default"].test(uuid);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (validate);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/validate.js?')},"../node_modules/xxhash-wasm/esm/xxhash-wasm.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ e)\n/* harmony export */ });\nconst t=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function e(){return function(t){const{exports:{mem:e,xxh32:n,xxh64:r,init32:i,update32:a,digest32:o,init64:s,update64:u,digest64:c}}=t;let h=new Uint8Array(e.buffer);function g(t,n){if(e.buffer.byteLength<t+n){const r=Math.ceil((t+n-e.buffer.byteLength)/65536);e.grow(r),h=new Uint8Array(e.buffer)}}function f(t,e,n,r,i,a){g(t);const o=new Uint8Array(t);return h.set(o),n(0,e),o.set(h.subarray(0,t)),{update(e){let n;return h.set(o),"string"==typeof e?(g(3*e.length,t),n=w.encodeInto(e,h.subarray(t)).written):(g(e.byteLength,t),h.set(e,t),n=e.byteLength),r(0,t,n),o.set(h.subarray(0,t)),this},digest:()=>(h.set(o),a(i(0)))}}function y(t){return t>>>0}const b=2n**64n-1n;function d(t){return t&b}const w=new TextEncoder,l=0,p=0n;function x(t,e=l){return g(3*t.length,0),y(n(0,w.encodeInto(t,h).written,e))}function L(t,e=p){return g(3*t.length,0),d(r(0,w.encodeInto(t,h).written,e))}return{h32:x,h32ToString:(t,e=l)=>x(t,e).toString(16).padStart(8,"0"),h32Raw:(t,e=l)=>(g(t.byteLength,0),h.set(t),y(n(0,t.byteLength,e))),create32:(t=l)=>f(48,t,i,a,o,y),h64:L,h64ToString:(t,e=p)=>L(t,e).toString(16).padStart(16,"0"),h64Raw:(t,e=p)=>(g(t.byteLength,0),h.set(t),d(r(0,t.byteLength,e))),create64:(t=p)=>f(88,t,s,u,c,d)}}((await WebAssembly.instantiate(t)).instance)}\n//# sourceMappingURL=xxhash-wasm.js.map\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/xxhash-wasm/esm/xxhash-wasm.js?')},"../builds/8EFA792FE841A/0.0.7/config-d8efa792fe841a-v0-0-7.json":module=>{"use strict";eval('module.exports = /*#__PURE__*/JSON.parse(\'{"v":"","e":"app.animaadtech.localhost","m":"MZ","d":"8EFA792FE841A","c":"USD","p":"hb","o":{"m":3000,"d":3005},"f":5000,"l":{"p":"/api/logger/v1","m":"AS","t":"EV","v":10},"pb":[{"f":0,"c":100,"s":10}],"ly":[{"i":"XCA7KZ8AYO06C","pp":[{"t":"PR","p":"/"}],"t":{"ic":[{"bw":["CR","SF","EG","FX","OR"],"dv":["MB","DK"]}]},"as":[{"i":"EX6ZLK2DHJ9D6","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"IN","d":"div-2"},"r":{"a":{"t":"IV","i":60,"c":5}},"m":{"f":"BN","sz":{"a":[[300,600],[120,600]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"123"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"34"}}]},{"i":"BZHBUZG1MB59L","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"BF","d":"div-2"},"m":{"f":"BN","sz":{"a":[[300,100],[300,250]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"456"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"23"}}]}]},{"i":"ERRSW1YKT5FAI","pp":[{"t":"PR","p":"/"}],"t":{"ic":[{"bw":["CR","SF","EG","FX","OR"],"dv":["MB","DK"]}]},"as":[{"i":"EX6ZLK2DHJ9D6","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"IN","d":"div-2"},"r":{"a":{"t":"IV","i":60,"c":5}},"m":{"f":"BN","sz":{"a":[[300,600],[120,600]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"123"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"34"}}]},{"i":"BZHBUZG1MB59L","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"BF","d":"div-2"},"m":{"f":"BN","sz":{"a":[[300,100],[300,250]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"456"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"23"}}]}]}],"cd":[{"i":"AZCU5M4FLHG7U","k":"cd1","vs":{"t":"ST","v":"testval"},"ds":{"au":{"p":"SL"},"as":{"g":"hb_deal"},"an":{}}},{"i":"SKJPNC6CAKPA9","k":"cd1_copy","vs":{"t":"ST","v":"123"},"ds":{"an":{}}}],"ba":{"criteo-first-seat":{"b":"criteo","d":"B3GE7TXE33SK1"},"openx-first-one":{"b":"openx","d":"ZDDWI2FH8H2KW"}},"as":[{"i":"OWJ6B1HARDRXH","g":"/23068547170/ca-pub-5635953502767638/23073267091","l":"EG","n":{"a":"WN","r":"BM","z":true,"s":true},"r":{"a":{"t":"IV","i":60,"c":15}},"m":{"f":"BN","sz":{"a":[[300,100],[300,600]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"1234"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"1234"}}]},{"i":"28COIKEYI4NDW","g":"/23068547170/ca-pub-5635953502767638/23073267091","l":"EG","n":{"a":"ST","r":"BF","d":"div-2"},"m":{"f":"BN","sz":{"a":[[300,250]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"3456"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"2345"}}]}]}\');\n\n//# sourceURL=webpack://@wrapp/wrapper/../builds/8EFA792FE841A/0.0.7/config-d8efa792fe841a-v0-0-7.json?')}},__webpack_module_cache__={};function __webpack_require__(e){var n=__webpack_module_cache__[e];if(void 0!==n)return n.exports;var t=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.exports}__webpack_require__.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(n,{a:n}),n},__webpack_require__.d=(e,n)=>{for(var t in n)__webpack_require__.o(n,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},__webpack_require__.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nc=void 0,__webpack_require__("./src/index.ts"),__webpack_require__("./src/wrapperTag.ts"),__webpack_require__("../builds/8EFA792FE841A/0.0.7/prebid.js");var __webpack_exports__=__webpack_require__("./css/sticky.css")})();
|
|
1
|
+
/*! app name: app-p8efa792fe841a.js | version: 0.0.10 | build date: 2026-01-11T07:23:11.595Z */(()=>{var __webpack_modules__={"../builds/8EFA792FE841A/0.0.10/prebid.js":()=>{eval('/* prebid.js v10.9.0\nUpdated: 2026-01-08\nModules: criteoBidAdapter, openxBidAdapter */\nif(window.pbjs&&window.pbjs.libLoaded)try{window.pbjs.getConfig("debug")&&console.warn("Attempted to load a copy of Prebid.js that clashes with the existing \'pbjs\' instance. Load aborted.")}catch(e){}else (function(){\n(()=>{var r,e={1490(r,e,t){function n(r){var e,t,o;if(Array.isArray(r)){for(t=Array(e=r.length);e--;)t[e]=(o=r[e])&&"object"==typeof o?n(o):o;return t}if("[object Object]"===Object.prototype.toString.call(r)){for(e in t={},r)"__proto__"===e?Object.defineProperty(t,e,{value:n(r[e]),configurable:!0,enumerable:!0,writable:!0}):t[e]=(o=r[e])&&"object"==typeof o?n(o):o;return t}return r}t.d(e,{Q:()=>n})},3435(r,e,t){function n(r,e,t){e.split&&(e=e.split("."));for(var n,o,i=0,a=e.length,f=r;i<a&&"__proto__"!=(o=""+e[i++])&&"constructor"!==o&&"prototype"!==o;)f=f[o]=i===a?t:typeof(n=f[o])==typeof e?n:0*e[i]!=0||~(""+e[i]).indexOf(".")?{}:[]}t.d(e,{J:()=>n})},3715(r,e,t){t.d(e,{A:()=>n});const n={pbGlobal:"pbjs",defineGlobal:!0,features:{NATIVE:!0,VIDEO:!0,UID2_CSTG:!0,GREEDY:!1,AUDIO:!0,LOG_NON_ERROR:!0,LOG_ERROR:!0},distUrlBase:"https://cdn.jsdelivr.net/npm/prebid.js@10.9.0/dist/chunks/",skipCalls:{}}},5481(r){\n/*\n* @license MIT\n* Fun Hooks v1.1.0\n* (c) @snapwich\n*/\ni.SYNC=1,i.ASYNC=2,i.QUEUE=4;var e="fun-hooks",t=Object.freeze({ready:0}),n=new WeakMap;function o(r,e){return Array.prototype.slice.call(r,e)}function i(r){var a,f={},c=[];function u(r,e){return"function"==typeof r?y.call(null,"sync",r,e):"string"==typeof r&&"function"==typeof e?y.apply(null,arguments):"object"==typeof r?l.apply(null,arguments):void 0}function l(r,e,t){var n=!0;void 0===e&&(e=Object.getOwnPropertyNames(r).filter(r=>!r.match(/^_/)),n=!1);var o={},i=["constructor"];do{e.forEach(function(e){var n=e.match(/(?:(sync|async):)?(.+)/),a=n[1]||"sync",f=n[2];if(!o[f]&&"function"==typeof r[f]&&-1===i.indexOf(f)){var c=r[f];o[f]=r[f]=y(a,c,t?[t,f]:void 0)}}),r=Object.getPrototypeOf(r)}while(n&&r);return o}function p(r){var t=Array.isArray(r)?r:r.split(".");return t.reduce(function(n,o,i){var f=n[o],u=!1;return f||(i===t.length-1?(a||c.push(function(){u||console.warn(e+": referenced \'"+r+"\' but it was never created")}),n[o]=s(function(r){n[o]=r,u=!0})):n[o]={})},f)}function s(r){var e=[],t=[],o=function(){},i={before:function(r,t){return f.call(this,e,"before",r,t)},after:function(r,e){return f.call(this,t,"after",r,e)},getHooks:function(r){var n=e.concat(t);"object"==typeof r&&(n=n.filter(function(e){return Object.keys(r).every(function(t){return e[t]===r[t]})}));try{Object.assign(n,{remove:function(){return n.forEach(function(r){r.remove()}),this}})}catch(r){console.error("error adding `remove` to array, did you modify Array.prototype?")}return n},removeAll:function(){return this.getHooks().remove()}},a={install:function(n,i,a){this.type=n,o=a,a(e,t),r&&r(i)}};return n.set(i.after,a),i;function f(r,n,i,a){var f={hook:i,type:n,priority:a||10,remove:function(){var n=r.indexOf(f);-1!==n&&(r.splice(n,1),o(e,t))}};return r.push(f),r.sort(function(r,e){return e.priority-r.priority}),o(e,t),this}}function y(t,f,u){var l=f.after&&n.get(f.after);if(l){if(l.type!==t)throw e+": recreated hookable with different type";return f}var y,v=u?p(u):s(),d={get:function(r,e){return v[e]||Reflect.get.apply(Reflect,arguments)}};a||c.push(b);var h=new Proxy(f,d);return n.get(h.after).install(t,h,function(r,e){var n,i=[];r.length||e.length?(r.forEach(a),n=i.push(void 0)-1,e.forEach(a),y=function(r,e,a){var f,c=i.slice(),u=0,l="async"===t&&"function"==typeof a[a.length-1]&&a.pop();function p(r){"sync"===t?f=r:l&&l.apply(null,arguments)}function s(r){if(c[u]){var n=o(arguments);return s.bail=p,n.unshift(s),c[u++].apply(e,n)}"sync"===t?f=r:l&&l.apply(null,arguments)}return c[n]=function(){var n=o(arguments,1);"async"===t&&l&&(delete s.bail,n.push(s));var i=r.apply(e,n);"sync"===t&&s(i)},s.apply(null,a),f}):y=void 0;function a(r){i.push(r.hook)}b()}),h;function b(){!a&&("sync"!==t||r.ready&i.SYNC)&&("async"!==t||r.ready&i.ASYNC)?"sync"!==t&&r.ready&i.QUEUE?d.apply=function(){var r=arguments;c.push(function(){h.apply(r[1],r[2])})}:d.apply=function(){throw e+": hooked function not ready"}:d.apply=y}}return(r=Object.assign({},t,r)).ready?u.ready=function(){a=!0,function(r){for(var e;e=r.shift();)e()}(c)}:a=!0,u.get=p,u}r.exports=i},8928(r,e,t){function n(r,e,t,n,o){for(e=e.split?e.split("."):e,n=0;n<e.length;n++)r=r?r[e[n]]:o;return r===o?t:r}t.d(e,{A:()=>n})}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.m=e,r=[],n.O=(e,t,o,i)=>{if(!t){var a=1/0;for(l=0;l<r.length;l++){for(var[t,o,i]=r[l],f=!0,c=0;c<t.length;c++)(!1&i||a>=i)&&Object.keys(n.O).every(r=>n.O[r](t[c]))?t.splice(c--,1):(f=!1,i<a&&(a=i));if(f){r.splice(l--,1);var u=o();void 0!==u&&(e=u)}}return e}i=i||0;for(var l=r.length;l>0&&r[l-1][2]>i;l--)r[l]=r[l-1];r[l]=[t,o,i]},n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var t in e)n.o(e,t)&&!n.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),n.r=r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},(()=>{var r={673:0};n.O.j=e=>0===r[e];var e=(e,t)=>{var o,i,[a,f,c]=t,u=0;if(a.some(e=>0!==r[e])){for(o in f)n.o(f,o)&&(n.m[o]=f[o]);if(c)var l=c(n)}for(e&&e(t);u<a.length;u++)i=a[u],n.o(r,i)&&r[i]&&r[i][0](),r[i]=0;return n.O(l)},t=self.pbjsChunk=self.pbjsChunk||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))})();var o=n.O(void 0,[802,769,85],()=>n(7433));o=n.O(o)})();\n(self.pbjsChunk=self.pbjsChunk||[]).push([[802],{356(e,t,n){n.d(t,{Bm:()=>y,IX:()=>I,gs:()=>E,l6:()=>p,mT:()=>l,nk:()=>m,vO:()=>v,yl:()=>C});var r=n(466),i=n(6665),o=n(4123),s=n(1418),a=n(1852),d=n(5144),c=n(2122);const l=[],u={image:{ortb:{ver:"1.2",assets:[{required:1,id:1,img:{type:3,wmin:100,hmin:100}},{required:1,id:2,title:{len:140}},{required:1,id:3,data:{type:1}},{required:0,id:4,data:{type:2}},{required:0,id:5,img:{type:1,wmin:20,hmin:20}}]},image:{required:!0},title:{required:!0},sponsoredBy:{required:!0},clickUrl:{required:!0},body:{required:!1},icon:{required:!1}}},g=R(s.h0),f=R(s.jO);function p(e){return null!=e.native&&"object"==typeof e.native}function h(e){if(e&&e.type&&function(e){if(!e||!Object.keys(u).includes(e))return(0,r.logError)(`${e} nativeParam is not supported`),!1;return!0}(e.type)&&(e=u[e.type]),!e||!e.ortb||b(e.ortb))return e}function m(e){e.forEach(e=>{const t=e.nativeParams||e?.mediaTypes?.native;t&&(e.nativeParams=h(t)),e.nativeParams&&(e.nativeOrtbRequest=e.nativeParams.ortb||function(e){if(!e&&!(0,i.Qd)(e))return void(0,r.logError)("Native assets object is empty or not an object: ",e);const t={ver:"1.2",assets:[]};for(const n in e){if(s._B.includes(n))continue;if(!s.x5.hasOwnProperty(n)){(0,r.logError)(`Unrecognized native asset code: ${n}. Asset will be ignored.`);continue}if("privacyLink"===n){t.privacy=1;continue}const o=e[n];let a=0;o.required&&(0,i.Lm)(o.required)&&(a=Number(o.required));const d={id:t.assets.length,required:a};if(n in s.h0)d.data={type:s.jO[s.h0[n]]},o.len&&(d.data.len=o.len);else if("icon"===n||"image"===n){if(d.img={type:"icon"===n?s.oA.ICON:s.oA.MAIN},o.aspect_ratios)if((0,i.cy)(o.aspect_ratios))if(o.aspect_ratios.length){const{min_width:e,min_height:t}=o.aspect_ratios[0];(0,i.Fq)(e)&&(0,i.Fq)(t)?(d.img.wmin=e,d.img.hmin=t):(0,r.logError)("image.aspect_ratios min_width or min_height are invalid: ",e,t);const n=o.aspect_ratios.filter(e=>e.ratio_width&&e.ratio_height).map(e=>`${e.ratio_width}:${e.ratio_height}`);n.length>0&&(d.img.ext={aspectratios:n})}else(0,r.logError)("image.aspect_ratios was passed, but it\'s empty:",o.aspect_ratios);else(0,r.logError)("image.aspect_ratios was passed, but it\'s not a an array:",o.aspect_ratios);o.sizes&&(2===o.sizes.length&&(0,i.Fq)(o.sizes[0])&&(0,i.Fq)(o.sizes[1])?(d.img.w=o.sizes[0],d.img.h=o.sizes[1],delete d.img.hmin,delete d.img.wmin):(0,r.logError)("image.sizes was passed, but its value is not an array of integers:",o.sizes))}else"title"===n?d.title={len:o.len||140}:"ext"===n&&(d.ext=o,delete d.required);t.assets.push(d)}return t}(e.nativeParams))})}function b(e){const t=e.assets;if(!Array.isArray(t)||0===t.length)return(0,r.logError)("assets in mediaTypes.native.ortb is not an array, or it\'s empty. Assets: ",t),!1;const n=t.map(e=>e.id);return t.length!==new Set(n).size||n.some(e=>e!==parseInt(e,10))?((0,r.logError)("each asset object must have \'id\' property, it must be unique and it must be an integer"),!1):e.hasOwnProperty("eventtrackers")&&!Array.isArray(e.eventtrackers)?((0,r.logError)("ortb.eventtrackers is not an array. Eventtrackers: ",e.eventtrackers),!1):t.every(e=>function(e){if(!(0,i.Qd)(e))return(0,r.logError)("asset must be an object. Provided asset: ",e),!1;if(e.img){if(!(0,i.Et)(e.img.w)&&!(0,i.Et)(e.img.wmin))return(0,r.logError)("for img asset there must be \'w\' or \'wmin\' property"),!1;if(!(0,i.Et)(e.img.h)&&!(0,i.Et)(e.img.hmin))return(0,r.logError)("for img asset there must be \'h\' or \'hmin\' property"),!1}else if(e.title){if(!(0,i.Et)(e.title.len))return(0,r.logError)("for title asset there must be \'len\' property defined"),!1}else if(e.data){if(!(0,i.Et)(e.data.type))return(0,r.logError)("for data asset \'type\' property must be a number"),!1}else if(e.video&&!(Array.isArray(e.video.mimes)&&Array.isArray(e.video.protocols)&&(0,i.Et)(e.video.minduration)&&(0,i.Et)(e.video.maxduration)))return(0,r.logError)("video asset is not properly configured"),!1;return!0}(e))}function y(e){let{index:t=o.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t.getAdUnit(e);if(!n)return!1;const i=n.nativeOrtbRequest;return function(e,t){if(!e?.link?.url)return(0,r.logError)("native response doesn\'t have \'link\' property. Ortb response: ",e),!1;const n=t.assets.filter(e=>1===e.required).map(e=>e.id),i=e.assets.map(e=>e.id),o=n.every(e=>i.includes(e));o||(0,r.logError)(`didn\'t receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${i}`);return o}(e.native?.ortb||O(e.native,i),i)}function v(e,t){const n=t.native.ortb||B(t.native);return"click"===e.action?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,{fetchURL:n=r.triggerPixel}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){const r=(e.assets||[]).filter(e=>e.link).reduce((e,t)=>(e[t.id]=t.link,e),{}),i=e.link?.clicktrackers||[],o=r[t];let s=i;o&&(s=o.clicktrackers||[]),s.forEach(e=>n(e))}else(e.link?.clicktrackers||[]).forEach(e=>n(e))}(n,e?.assetId):function(e){let{runMarkup:t=e=>(0,r.insertHtmlIntoIframe)(e),fetchURL:n=r.triggerPixel}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{[c.Ni]:i=[],[c.fR]:o=[]}=(0,c.$T)(e.eventtrackers||[])[c.OA]||{};e.imptrackers&&(i=i.concat(e.imptrackers));i.forEach(e=>n(e)),o=o.map(e=>`<script async src="${e}"><\\/script>`),e.jstracker&&(o=o.concat([e.jstracker]));o.length&&t(o.join("\\n"))}(n),e.action}function E(e,t){const n=t?.nativeOrtbRequest,r=e.native?.ortb;if(n&&r){const t=function(e,t){const n={},r=t?.assets||[];n.clickUrl=e.link?.url,n.privacyLink=e.privacy;for(const t of e?.assets||[]){const e=r.find(e=>t.id===e.id);t.title?n.title=t.title.text:t.img?n[e?.img?.type===s.oA.MAIN?"image":"icon"]={url:t.img.url,width:t.img.w,height:t.img.h}:t.data&&(n[g[f[e?.data?.type]]]=t.data.value)}n.impressionTrackers=[];let i=[];e.imptrackers&&n.impressionTrackers.push(...e.imptrackers);for(const t of e?.eventtrackers||[])t.event===c.OA&&t.method===c.Ni&&n.impressionTrackers.push(t.url),t.event===c.OA&&t.method===c.fR&&i.push(t.url);i=i.map(e=>`<script async src="${e}"><\\/script>`),e?.jstracker&&i.push(e.jstracker);i.length&&(n.javascriptTrackers=i.join("\\n"));return n}(r,n);Object.assign(e.native,t)}["rendererUrl","adTemplate"].forEach(n=>{const r=t?.nativeParams?.[n];r&&(e.native[n]=S(r))})}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const r=[];return Object.entries(e).filter(e=>{let[r,i]=e;return i&&(!1===n&&"ext"===r||null==t||t.includes(r))}).forEach(e=>{let[i,o]=e;!1===n&&"ext"===i?r.push(...A(o,t,!0)):(n||s.x5.hasOwnProperty(i))&&r.push({key:i,value:S(o)})}),r}function w(e,t,n){let{index:r=o.n.index}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const c={message:"assetResponse",adId:e.adId};let l=(0,a.vd)(t).native;return l?(c.native=Object.assign({},l),c.renderer=(0,d.kj)(t),c.rendererVersion=d.xh,null!=n&&(l.assets=l.assets.filter(e=>{let{key:t}=e;return n.includes(t)}))):l=function(e,t,n){const r={...(0,i.SH)(e.native,["rendererUrl","adTemplate"]),assets:A(e.native,n),nativeKeys:s.x5};return e.native.ortb?r.ortb=e.native.ortb:t.mediaTypes?.native?.ortb&&(r.ortb=O(e.native,t.nativeOrtbRequest)),r}(t,r.getAdUnit(t),n),Object.assign(c,l)}const T=Object.fromEntries(Object.entries(s.x5).map(e=>{let[t,n]=e;return[n,t]}));function I(e,t){const n=e.assets.map(e=>T[e]);return w(e,t,n)}function C(e,t){return w(e,t,null)}function S(e){return e?.url||e}function B(e){const t={link:{},eventtrackers:[]};return Object.entries(e).forEach(e=>{let[n,r]=e;switch(n){case"clickUrl":t.link.url=r;break;case"clickTrackers":t.link.clicktrackers=Array.isArray(r)?r:[r];break;case"impressionTrackers":(Array.isArray(r)?r:[r]).forEach(e=>{t.eventtrackers.push({event:c.OA,method:c.Ni,url:e})});break;case"javascriptTrackers":t.jstracker=Array.isArray(r)?r.join(""):r;break;case"privacyLink":t.privacy=r}}),t}function O(e,t){const n={...B(e),assets:[]};function r(e,r){let o=t.assets.find(e);null!=o&&(o=(0,i.Go)(o),r(o),n.assets.push(o))}return Object.keys(e).filter(t=>!!e[t]).forEach(t=>{const n=S(e[t]);switch(t){case"title":r(e=>null!=e.title,e=>{e.title={text:n}});break;case"image":case"icon":const e="image"===t?s.oA.MAIN:s.oA.ICON;r(t=>null!=t.img&&t.img.type===e,e=>{e.img={url:n}});break;default:t in s.h0&&r(e=>null!=e.data&&e.data.type===s.jO[s.h0[t]],e=>{e.data={value:n}})}}),n}function R(e){var t={};for(var n in e)t[e[n]]=n;return t}},466(e,t,n){n.r(t),n.d(t,{_each:()=>te,_map:()=>re,_setEventEmitter:()=>m,binarySearch:()=>rt,buildUrl:()=>He,canAccessWindowTop:()=>M,checkCookieSupport:()=>De,cleanObj:()=>Me,compareCodeAndSlot:()=>je,compressDataWithGZip:()=>ct,contains:()=>ne,convertObjectToArray:()=>tt,createIframe:()=>K,createInvisibleIframe:()=>Y,createTrackPixelHtml:()=>ce,createTrackPixelIframeHtml:()=>ue,cyrb53Hash:()=>Ke,debugTurnedOn:()=>J,deepAccess:()=>s.A,deepClone:()=>a.Go,deepEqual:()=>Ve,deepSetValue:()=>d.J,delayExecution:()=>_e,encodeMacroURI:()=>le,extractDomainFromHost:()=>st,flatten:()=>fe,formatQS:()=>Le,generateUUID:()=>S,getBidIdParameter:()=>B,getBidRequest:()=>pe,getBidderCodes:()=>me,getDNT:()=>We,getDefinedParams:()=>a.SH,getDocument:()=>P,getDomLoadingDuration:()=>Ue,getParameterByName:()=>X,getPerformanceNow:()=>Re,getPrebidInternal:()=>w,getSafeframeGeometry:()=>Te,getUniqueIdentifierStr:()=>C,getUnixTimestampFromNow:()=>et,getUserConfiguredParams:()=>xe,getValue:()=>he,getWinDimensions:()=>y,getWindowLocation:()=>N,getWindowSelf:()=>j,getWindowTop:()=>W,groupBy:()=>$e,hasConsoleLogger:()=>Q,hasDeviceAccess:()=>ke,hasNonSerializableProperty:()=>it,inIframe:()=>Ae,insertElement:()=>ie,insertHtmlIntoIframe:()=>ae,insertUserSyncIframe:()=>de,internal:()=>E,isA:()=>a.KG,isAdUnitCodeMatchingSlot:()=>Ne,isApnGetTagDefined:()=>ye,isArray:()=>a.cy,isArrayOfNums:()=>a.Uu,isBoolean:()=>a.Lm,isEmpty:()=>Z,isEmptyStr:()=>ee,isFn:()=>a.fp,isGptPubadsDefined:()=>be,isGzipCompressionSupported:()=>dt,isInteger:()=>a.Fq,isNumber:()=>a.Et,isPlainObject:()=>a.Qd,isSafariBrowser:()=>Ie,isSafeFrameWindow:()=>we,isStr:()=>a.O8,isValidMediaTypes:()=>qe,logError:()=>z,logInfo:()=>G,logMessage:()=>F,logWarn:()=>L,memoize:()=>Ze,mergeDeep:()=>Qe,parseGPTSingleSizeArray:()=>_,parseGPTSingleSizeArrayToRtbSize:()=>q,parseQS:()=>Ge,parseQueryStringParameters:()=>O,parseSizesInput:()=>k,parseUrl:()=>ze,pick:()=>Fe,prefixLog:()=>H,replaceAuctionPrice:()=>Se,replaceClickThrough:()=>Be,replaceMacros:()=>Ce,resetWinDimensions:()=>v,safeJSONEncode:()=>Xe,safeJSONParse:()=>Ye,setOnAny:()=>ot,setScriptAttributes:()=>nt,shuffle:()=>Ee,sizeTupleToRtbSize:()=>$,sizeTupleToSizeString:()=>D,sizesToSizeTuples:()=>U,sortByHighestCpm:()=>ve,timestamp:()=>Oe,transformAdServerTargetingObj:()=>R,triggerNurlWithCpm:()=>at,triggerPixel:()=>se,uniques:()=>ge,unsupportedBidderMessage:()=>Pe,waitForElementToLoad:()=>oe});var r=n(1933),i=n(1418),o=n(3064),s=n(8928),a=n(6665),d=n(3435);const c=Boolean(window.console),l=Boolean(c&&window.console.log),u=Boolean(c&&window.console.info),g=Boolean(c&&window.console.warn),f=Boolean(c&&window.console.error);let p,h;function m(e){p=e}function b(){null!=p&&p(...arguments)}const y=function(){let e;return()=>((!h||!e||Date.now()-e>20)&&(E.resetWinDimensions(),e=Date.now()),h)}();function v(){const e=M()?E.getWindowTop():E.getWindowSelf();h={screen:{width:e.screen?.width,height:e.screen?.height,availWidth:e.screen?.availWidth,availHeight:e.screen?.availHeight,colorDepth:e.screen?.colorDepth},innerHeight:e.innerHeight,innerWidth:e.innerWidth,outerWidth:e.outerWidth,outerHeight:e.outerHeight,visualViewport:{height:e.visualViewport?.height,width:e.visualViewport?.width},document:{documentElement:{clientWidth:e.document?.documentElement?.clientWidth,clientHeight:e.document?.documentElement?.clientHeight,scrollTop:e.document?.documentElement?.scrollTop,scrollLeft:e.document?.documentElement?.scrollLeft},body:{scrollTop:document.body?.scrollTop,scrollLeft:document.body?.scrollLeft,clientWidth:document.body?.clientWidth,clientHeight:document.body?.clientHeight}}}}const E={checkCookieSupport:De,createTrackPixelIframeHtml:ue,getWindowSelf:j,getWindowTop:W,canAccessWindowTop:M,getWindowLocation:N,insertUserSyncIframe:de,insertElement:ie,isFn:a.fp,triggerPixel:se,logError:z,logWarn:L,logMessage:F,logInfo:G,parseQS:Ge,formatQS:Le,deepEqual:Ve,resetWinDimensions:v},A={};function w(){return A}var T,I=(T=0,function(){return++T});function C(){return I()+Math.random().toString(16).substr(2)}function S(e){return e?(e^(window&&window.crypto&&window.crypto.getRandomValues?crypto.getRandomValues(new Uint8Array(1))[0]%16:16*Math.random())>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,S)}function B(e,t){return t?.[e]||""}function O(e){let t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+"="+encodeURIComponent(e[n])+"&");return t=t.replace(/&$/,""),t}function R(e){return e&&Object.getOwnPropertyNames(e).length>0?Object.keys(e).map(t=>`${t}=${encodeURIComponent(e[t])}`).join("&"):""}function U(e){return"string"==typeof e?e.split(/\\s*,\\s*/).map(e=>e.match(/^(\\d+)x(\\d+)$/i)).filter(e=>e).map(e=>{let[t,n,r]=e;return[parseInt(n,10),parseInt(r,10)]}):Array.isArray(e)?x(e)?[e]:e.filter(x):[]}function k(e){return U(e).map(D)}function D(e){return e[0]+"x"+e[1]}function _(e){if(x(e))return D(e)}function $(e){return{w:e[0],h:e[1]}}function q(e){if(x(e))return $(e)}function x(e){return(0,a.cy)(e)&&2===e.length&&!isNaN(e[0])&&!isNaN(e[1])}function W(){return window.top}function j(){return window.self}function N(){return window.location}function P(){return document}function M(){try{if(E.getWindowTop().location.href)return!0}catch(e){return!1}}function F(){J()&&l&&console.log.apply(console,V(arguments,"MESSAGE:"))}function G(){J()&&u&&console.info.apply(console,V(arguments,"INFO:"))}function L(){J()&&g&&console.warn.apply(console,V(arguments,"WARNING:")),b(i.qY.AUCTION_DEBUG,{type:"WARNING",arguments})}function z(){J()&&f&&console.error.apply(console,V(arguments,"ERROR:")),b(i.qY.AUCTION_DEBUG,{type:"ERROR",arguments})}function H(e){function t(t){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];t(e,...r)}}return{logError:t(z),logWarn:t(L),logMessage:t(F),logInfo:t(G)}}function V(e,t){e=[].slice.call(e);const n=r.$W.getCurrentBidder();return t&&e.unshift(t),n&&e.unshift(i("#aaa")),e.unshift(i("#3b88c3")),e.unshift("%cPrebid"+(n?`%c${n}`:"")),e;function i(e){return`display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`}}function Q(){return l}function J(){return!!r.$W.getConfig("debug")}const K=(()=>{const e={border:"0px",hspace:"0",vspace:"0",marginWidth:"0",marginHeight:"0",scrolling:"no",frameBorder:"0",allowtransparency:"true"};return function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=t.createElement("iframe");return Object.assign(i,Object.assign({},e,n)),Object.assign(i.style,r),i}})();function Y(){return K(document,{id:C(),width:0,height:0,src:"about:blank"},{display:"none",height:"0px",width:"0px",border:"0px"})}function X(e){return Ge(N().search)[e]||""}function Z(e){return!e||((0,a.cy)(e)||(0,a.O8)(e)?!(e.length>0):Object.keys(e).length<=0)}function ee(e){return(0,a.O8)(e)&&(!e||0===e.length)}function te(e,t){if((0,a.fp)(e?.forEach))return e.forEach(t,this);Object.entries(e||{}).forEach(e=>{let[n,r]=e;return t.call(this,r,n)})}function ne(e,t){return(0,a.fp)(e?.includes)&&e.includes(t)}function re(e,t){return(0,a.fp)(e?.map)?e.map(t):Object.entries(e||{}).map(n=>{let[r,i]=n;return t(i,r,e)})}function ie(e,t,n,r){let i;t=t||document,i=n?t.getElementsByTagName(n):t.getElementsByTagName("head");try{if(i=i.length?i:t.getElementsByTagName("body"),i.length){i=i[0];const t=r?null:i.firstChild;return i.insertBefore(e,t)}}catch(e){}}function oe(e,t){let n=null;return new o.U9(r=>{const i=function(){e.removeEventListener("load",i),e.removeEventListener("error",i),null!=n&&window.clearTimeout(n),r()};e.addEventListener("load",i),e.addEventListener("error",i),null!=t&&(n=window.setTimeout(i,t))})}function se(e,t,n){const r=new Image;t&&E.isFn(t)&&oe(r,n).then(t),r.src=e}function ae(e){if(!e)return;const t=Y();var n;E.insertElement(t,document,"body"),(n=t.contentWindow.document).open(),n.write(e),n.close()}function de(e,t,n){const r=E.createTrackPixelIframeHtml(e,!1,"allow-scripts allow-same-origin"),i=document.createElement("div");i.innerHTML=r;const o=i.firstChild;t&&E.isFn(t)&&oe(o,n).then(t),E.insertElement(o,document,"html",!0)}function ce(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:encodeURI;if(!e)return"";let n=\'<div style="position:absolute;left:0px;top:0px;visibility:hidden;">\';return n+=\'<img src="\'+t(e)+\'"></div>\',n}function le(e){return Array.from(e.matchAll(/\\$({[^}]+})/g)).map(e=>e[1]).reduce((e,t)=>e.replace("$"+encodeURIComponent(t),"$"+t),encodeURI(e))}function ue(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e?((!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(e=encodeURI(e)),t&&(t=`sandbox="${t}"`),`<iframe ${t} id="${C()}"\\n frameborder="0"\\n allowtransparency="true"\\n marginheight="0" marginwidth="0"\\n width="0" hspace="0" vspace="0" height="0"\\n style="height:0px;width:0px;display:none;"\\n scrolling="no"\\n src="${e}">\\n </iframe>`):""}function ge(e,t,n){return n.indexOf(e)===t}function fe(e,t){return e.concat(t)}function pe(e,t){if(e)return t.flatMap(e=>e.bids).find(t=>["bidId","adId","bid_id"].some(n=>t[n]===e))}function he(e,t){return e[t]}function me(e){return e.map(e=>e.bids.map(e=>e.bidder).reduce(fe,[])).reduce(fe,[]).filter(e=>void 0!==e).filter(ge)}function be(){if(window.googletag&&(0,a.fp)(window.googletag.pubads)&&(0,a.fp)(window.googletag.pubads().getSlots))return!0}function ye(){if(window.apntag&&(0,a.fp)(window.apntag.getTag))return!0}const ve=(e,t)=>t.cpm-e.cpm;function Ee(e){let t=e.length;for(;t>0;){const n=Math.floor(Math.random()*t);t--;const r=e[t];e[t]=e[n],e[n]=r}return e}function Ae(){try{return E.getWindowSelf()!==E.getWindowTop()}catch(e){return!0}}function we(){if(!Ae())return!1;const e=E.getWindowSelf();return!(!e.$sf||!e.$sf.ext)}function Te(){try{const e=j();return"function"==typeof e.$sf.ext.geom?e.$sf.ext.geom():void 0}catch(e){return void z("Error getting SafeFrame geometry",e)}}function Ie(){return/^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent)}function Ce(e,t){if(e)return Object.entries(t).reduce((e,t)=>{let[n,r]=t;return e.replace(new RegExp("\\\\$\\\\{"+n+"\\\\}","g"),r||"")},e)}function Se(e,t){return Ce(e,{AUCTION_PRICE:t})}function Be(e,t){if(e&&t&&"string"==typeof t)return e.replace(/\\${CLICKTHROUGH}/g,t)}function Oe(){return(new Date).getTime()}function Re(){return window.performance&&window.performance.now&&window.performance.now()||0}function Ue(e){let t=-1;const n=(e=e||j()).performance;if(e.performance?.timing&&e.performance.timing.navigationStart>0){const e=n.timing.domLoading-n.timing.navigationStart;e>0&&(t=e)}return t}function ke(){return!1!==r.$W.getConfig("deviceAccess")}function De(){if(window.navigator.cookieEnabled||document.cookie.length)return!0}function _e(e,t){if(t<1)throw new Error(`numRequiredCalls must be a positive number. Got ${t}`);let n=0;return function(){n++,n===t&&e.apply(this,arguments)}}function $e(e,t){return e.reduce(function(e,n){return(e[n[t]]=e[n[t]]||[]).push(n),e},{})}function qe(e){const t=["banner","native","video","audio"],n=["instream","outstream","adpod"];return!!Object.keys(e).every(e=>t.includes(e))&&(!e.video||!e.video.context||n.includes(e.video.context))}function xe(e,t,n){return e.filter(e=>e.code===t).flatMap(e=>e.bids).filter(e=>e.bidder===n).map(e=>e.params||{})}function We(){return"1"===navigator.doNotTrack||"1"===window.doNotTrack||"1"===navigator.msDoNotTrack||"yes"===navigator.doNotTrack}const je=(e,t)=>e.getAdUnitPath()===t||e.getSlotElementId()===t;function Ne(e){return t=>je(e,t)}function Pe(e,t){const n=Object.keys(e.mediaTypes||{banner:"banner"}).join(", ");return`\\n ${e.code} is a ${n} ad unit\\n containing bidders that don\'t support ${n}: ${t}.\\n This bidder won\'t fetch demand.\\n `}function Me(e){return Object.fromEntries(Object.entries(e).filter(e=>{let[t,n]=e;return void 0!==n}))}function Fe(e,t){return"object"!=typeof e?{}:t.reduce((n,r,i)=>{if("function"==typeof r)return n;let o=r;const s=r.match(/^(.+?)\\sas\\s(.+?)$/i);s&&(r=s[1],o=s[2]);let a=e[r];return"function"==typeof t[i+1]&&(a=t[i+1](a,n)),void 0!==a&&(n[o]=a),n},{})}function Ge(e){return e?e.replace(/^\\?/,"").split("&").reduce((e,t)=>{let[n,r]=t.split("=");return/\\[\\]$/.test(n)?(n=n.replace("[]",""),e[n]=e[n]||[],e[n].push(r)):e[n]=r||"",e},{}):{}}function Le(e){return Object.keys(e).map(t=>Array.isArray(e[t])?e[t].map(e=>`${t}[]=${e}`).join("&"):`${t}=${e[t]}`).join("&")}function ze(e,t){const n=document.createElement("a");t&&"noDecodeWholeURL"in t&&t.noDecodeWholeURL?n.href=e:n.href=decodeURIComponent(e);const r=t&&"decodeSearchAsString"in t&&t.decodeSearchAsString;return{href:n.href,protocol:(n.protocol||"").replace(/:$/,""),hostname:n.hostname,port:+n.port,pathname:n.pathname.replace(/^(?!\\/)/,"/"),search:r?n.search:E.parseQS(n.search||""),hash:(n.hash||"").replace(/^#/,""),host:n.host||window.location.host}}function He(e){return(e.protocol||"http")+"://"+(e.host||e.hostname+(e.port?`:${e.port}`:""))+(e.pathname||"")+(e.search?`?${E.formatQS(e.search||"")}`:"")+(e.hash?`#${e.hash}`:"")}function Ve(e,t){let{checkTypes:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const r=Array.isArray(e),i=Array.isArray(t);if(r&&i){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Ve(e[r],t[r],{checkTypes:n}))return!1;return!0}if(r||i)return!1;if(n&&e.constructor!==t.constructor)return!1;const o=Object.keys(e),s=Object.keys(t);if(o.length!==s.length)return!1;for(const r of o){if(!Object.prototype.hasOwnProperty.call(t,r))return!1;if(!Ve(e[r],t[r],{checkTypes:n}))return!1}return!0}function Qe(e){for(let t=0;t<(arguments.length<=1?0:arguments.length-1);t++){const n=t+1<1||arguments.length<=t+1?void 0:arguments[t+1];(0,a.Qd)(n)&&Je(e,n)}return e}function Je(e,t){if(!(0,a.Qd)(e)||!(0,a.Qd)(t))return;const n=Object.keys(t);for(let r=0;r<n.length;r++){const i=n[r];if("__proto__"===i||"constructor"===i)continue;const o=t[i];(0,a.Qd)(o)?(e[i]||(e[i]={}),Je(e[i],o)):Array.isArray(o)?Array.isArray(e[i])?o.forEach(t=>{e[i].some(e=>Ve(e,t))||e[i].push(t)}):e[i]=[...o]:e[i]=o}}function Ke(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=function(e,t){if((0,a.fp)(Math.imul))return Math.imul(e,t);var n=(4194303&e)*(t|=0);return 4290772992&e&&(n+=(4290772992&e)*t|0),0|n};let r=3735928559^t,i=1103547991^t;for(let t,o=0;o<e.length;o++)t=e.charCodeAt(o),r=n(r^t,2654435761),i=n(i^t,1597334677);return r=n(r^r>>>16,2246822507)^n(i^i>>>13,3266489909),i=n(i^i>>>16,2246822507)^n(r^r>>>13,3266489909),(4294967296*(2097151&i)+(r>>>0)).toString()}function Ye(e){try{return JSON.parse(e)}catch(e){}}function Xe(e){try{return JSON.stringify(e)}catch(e){return""}}function Ze(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e};const n=new Map,r=function(){const r=t.apply(this,arguments);return n.has(r)||n.set(r,e.apply(this,arguments)),n.get(r)};return r.clear=n.clear.bind(n),r}function et(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"d";if(["m","d"].indexOf(t)<0)return Date.now();const n=e/("m"===t?1440:1);return Date.now()+(e&&e>0?864e5*n:0)}function tt(e){return Object.keys(e).map(t=>({[t]:e[t]}))}function nt(e,t){Object.entries(t).forEach(t=>{let[n,r]=t;return e.setAttribute(n,r)})}function rt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>e,r=0,i=e.length&&e.length-1;const o=n(t);for(;i-r>1;){const t=r+Math.round((i-r)/2);o>n(e[t])?r=t:i=t}for(;e.length>r&&o>n(e[r]);)r++;return r}function it(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;for(const n in e){const r=e[n],i=typeof r;if(void 0===r||"function"===i||"symbol"===i||r instanceof RegExp||r instanceof Map||r instanceof Set||r instanceof Date||null!==r&&"object"===i&&r.hasOwnProperty("toJSON"))return!0;if(null!==r&&"object"===i&&r.constructor===Object){if(t.has(r))return!0;if(t.add(r),it(r,t))return!0}}return!1}function ot(e,t){for(let n,r=0;r<e.length;r++)if(n=(0,s.A)(e[r],t),n)return n}function st(e){let t=null;try{const n=/[-\\w]+\\.([-\\w]+|[-\\w]{3,}|[-\\w]{1,3}\\.[-\\w]{2})$/i.exec(e);if(null!=n&&n.length>0){t=n[0];for(let e=1;e<n.length;e++)n[e].length>t.length&&(t=n[e])}}catch(e){t=null}return t}function at(e,t){(0,a.O8)(e.nurl)&&""!==e.nurl&&(e.nurl=e.nurl.replace(/\\${AUCTION_PRICE}/,t),se(e.nurl))}const dt=function(){let e;return function(){if(void 0!==e)return e;try{void 0===window.CompressionStream?e=!1:(new window.CompressionStream("gzip"),e=!0)}catch(t){e=!1}return e}}();async function ct(e){"string"!=typeof e&&(e=JSON.stringify(e));const t=(new TextEncoder).encode(e),n=new Blob([t]).stream().pipeThrough(new window.CompressionStream("gzip")),r=await new Response(n).blob(),i=await r.arrayBuffer();return new Uint8Array(i)}},736(e,t,n){n.d(t,{Tn:()=>o,tW:()=>i,tp:()=>r});const r="prebid",i="bidder",o="analytics"},765(e,t,n){n.d(t,{k:()=>i,rT:()=>s,uP:()=>o});var r=n(3715);function i(){return r.A.pbGlobal}function o(){return r.A.defineGlobal}function s(){return r.A.distUrlBase}},867(e,t,n){n.d(t,{EN:()=>d,gR:()=>s});var r=n(1933),i=n(466);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;if(!e)return e;if(/\\w+:\\/\\//.exec(e))return e;let n=t.location.protocol;try{n=t.top.location.protocol}catch(e){}return/^\\/\\//.exec(e)?n+e:`${n}//${e}`}function s(e){let t,{noLeadingWww:n=!1,noPort:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{t=new URL(o(e))}catch(e){return}return t=r?t.hostname:t.host,n&&t.startsWith("www.")&&(t=t.substring(4)),t}function a(e){try{const t=e.querySelector("link[rel=\'canonical\']");if(null!==t)return t.href}catch(e){}return null}const d=function(e){let t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;return i.top!==i?e:function(){const o=a(i.document),s=i.location.href;return t===o&&s===n||(t=o,n=s,r=e()),r}}((c=window,function(){const e=[],t=function(e){try{if(!e.location.ancestorOrigins)return;return e.location.ancestorOrigins}catch(e){}}(c),n=r.$W.getConfig("maxNestedIframes");let d,l,u,g,f=!1,p=0,h=!1,m=!1,b=!1;do{const n=d,r=m;let o,s=!1,g=null;m=!1,d=d?d.parent:c;try{o=d.location.href||null}catch(e){s=!0}if(s)if(r){const e=n.context;try{g=e.sourceUrl,l=g,b=!0,h=!0,d===c.top&&(f=!0),e.canonicalUrl&&(u=e.canonicalUrl)}catch(e){}}else{(0,i.logWarn)("Trying to access cross domain iframe. Continuing without referrer and location");try{const e=n.document.referrer;e&&(g=e,d===c.top&&(f=!0))}catch(e){}!g&&t&&t[p-1]&&(g=t[p-1],d===c.top&&(b=!0)),g&&!h&&(l=g)}else{if(o&&(g=o,l=g,h=!1,d===c.top)){f=!0;const e=a(d.document);e&&(u=e)}d.context&&d.context.sourceUrl&&(m=!0)}e.push(g),p++}while(d!==c.top&&p<n);e.reverse();try{g=c.top.document.referrer}catch(e){}const y=f||b?l:null,v=r.$W.getConfig("pageUrl")||u||null;let E=r.$W.getConfig("pageUrl")||y||o(v,c);return y&&y.indexOf("?")>-1&&-1===E.indexOf("?")&&(E=`${E}${y.substring(y.indexOf("?"))}`),{reachedTop:f,isAmp:h,numIframes:p-1,stack:e,topmostLocation:l||null,location:y,canonicalUrl:v,page:E,domain:s(E)||null,ref:g||null,legacy:{reachedTop:f,isAmp:h,numIframes:p-1,stack:e,referer:l||null,canonicalUrl:v}}}));var c},869(e,t,n){n.d(t,{uW:()=>I,Yl:()=>C,iS:()=>O});var r=n(4123),i=n(5482),o=n(7156),s=n(1933),a=n(1418),d=n(8014),c=n(2592),l=n(9794),u=n(466),g=n(6665),f=n(8928),p=n(9236),h=n(939);const m=3e3;const b=function(){let e,t,n=(0,h.H)({monotonic:!0,ttl:()=>e,slack:0});s.$W.getConfig("targetingControls",r=>{({lock:t,lockTimeout:e=m}=r.targetingControls??{}),null==t||Array.isArray(t)?null==t&&i():t=[t],n.clear()});const[r,i]=(()=>{let e=!1;function r(e){let{slot:r}=e;t?.forEach(e=>r.getTargeting(e)?.forEach(n.delete))}return[()=>{null!=t&&!e&&(0,u.isGptPubadsDefined)()&&(googletag.pubads().addEventListener?.("slotRenderEnded",r),e=!0)},()=>{e&&(0,u.isGptPubadsDefined)()&&(googletag.pubads().removeEventListener?.("slotRenderEnded",r),e=!1)}]})();return{isLocked:e=>t?.some(t=>null!=e[t]&&n.has(e[t]))??!1,lock(e){r(),t?.forEach(t=>null!=e[t]&&n.add(e[t]))}}}();var y=[];const v=20,E="targetingControls.allowTargetingKeys",A="targetingControls.addTargetingKeys",w=`Only one of "${E}" or "${A}" can be set`,T=Object.keys(a.xS).map(e=>a.xS[e]),I={isBidNotExpired:e=>e.responseTimestamp+1e3*(0,i.cT)(e)>(0,u.timestamp)(),isUnusedBid:e=>e&&(e.status&&![a.tl.RENDERED].includes(e.status)||!e.status),isBidNotLocked:e=>!b.isLocked(e.adserverTargeting)};function C(e){return!Object.values(I).some(t=>!t(e))}const S=(0,c.A_)("sync",function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:u.sortByHighestCpm;if(!r){const r=[],o=s.$W.getConfig("sendBidsControl.dealPrioritization"),a=(0,u.groupBy)(e,"adUnitCode");return Object.keys(a).forEach(e=>{let s=[];const d=(0,u.groupBy)(a[e],"bidderCode");Object.keys(d).forEach(e=>{s.push(d[e].reduce(t))}),n?(s=o?s.sort(B(!0)):s.sort((e,t)=>t.cpm-e.cpm),r.push(...s.slice(0,n))):(s=s.sort(i),r.push(...s))}),r}return e});function B(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return function(t,n){return void 0!==t.adserverTargeting.hb_deal&&void 0===n.adserverTargeting.hb_deal?-1:void 0===t.adserverTargeting.hb_deal&&void 0!==n.adserverTargeting.hb_deal?1:e?n.cpm-t.cpm:n.adserverTargeting.hb_pb-t.adserverTargeting.hb_pb}}const O=function(e){const t={},n={setLatestAuctionForAdUnit(e,n){t[e]=n},resetPresetTargetingAST(e){r(e).forEach(function(e){const t=window.apntag.getTag(e);if(t&&t.keywords){const n=Object.keys(t.keywords),r={};n.forEach(e=>{y.includes(e.toLowerCase())||(r[e]=t.keywords[e])}),window.apntag.modifyTag(e,{keywords:r})}})},getAllTargeting(t,n,d){let c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:p.Vk,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:u.sortByHighestCpm;d||=i(c,l);const f=r(t),b=s.$W.getConfig("enableSendAllBids"),I=s.$W.getConfig("sendBidsControl.bidLimit"),C=b&&(n||I)||0,{customKeysByUnit:O,filteredBids:R}=function(e,t){const n=[],r={},i=s.$W.getConfig("targetingControls.alwaysIncludeDeals");return t.forEach(t=>{const s=e.includes(t.adUnitCode),a=!0===o.u.get(t.bidderCode,"allowZeroCpmBids")?t.cpm>=0:t.cpm>0,d=i&&t.dealId;s&&(d||a)&&(n.push(t),Object.keys(t.adserverTargeting).filter(function(){const e=m();return function(t){return-1===e.indexOf(t)}}()).forEach(e=>{const n=e.substring(0,20),i=r[t.adUnitCode]||{},o=[t.adserverTargeting[e]];i[n]?i[n]=i[n].concat(o).filter(u.uniques):i[n]=o,r[t.adUnitCode]=i}))}),{filteredBids:n,customKeysByUnit:r}}(f,d);let U=function(t,n,r){const i=!0===s.$W.getConfig("targetingControls.allBidsCustomTargeting"),o=h(t,r).concat(function(e){const t=s.$W.getConfig("targetingControls.alwaysIncludeDeals"),n=s.$W.getConfig("enableSendAllBids");return function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const r=T.slice(),i=s.$W.getConfig("targetingControls.allowSendAllBidsTargetingKeys"),o=i?i.map(e=>a.xS[e]):r;return e.reduce((e,i)=>{if(t||n&&i.dealId){const t=function(e,t){return t.reduce((t,n)=>(e.adserverTargeting[n]&&t.push({[`${n}_${e.bidderCode}`.substring(0,v)]:[e.adserverTargeting[n]]}),t),[])}(i,r.filter(e=>void 0!==i.adserverTargeting[e]&&(n||-1!==o.indexOf(e))));t&&e.push({[i.adUnitCode]:t})}return e},[])}(e,n,t)}(t)).concat(function(t){function n(e){return e?.[a.iD.ADSERVER_TARGETING]}function r(e){const t=n(e);return Object.keys(t).map(function(e){return(0,g.O8)(t[e])&&(t[e]=t[e].split(",").map(e=>e.trim())),(0,g.cy)(t[e])||(t[e]=[t[e]]),{[e]:t[e]}})}return e.getAdUnits().filter(e=>t.includes(e.code)&&n(e)).reduce((e,t)=>{const n=r(t);return n&&e.push({[t.code]:n}),e},[])}(r));i&&o.push(...function(e,t){return e.reduce((e,n)=>{const r=Object.assign({},n),i=t[r.adUnitCode],o=[];return i&&Object.keys(i).forEach(e=>{e&&i[e]&&o.push({[e]:i[e]})}),e.push({[r.adUnitCode]:o}),e},[])}(t,n));return o.forEach(e=>{!function(e){Object.keys(e).forEach(t=>{e[t].forEach(e=>{const t=Object.keys(e);-1===y.indexOf(t[0])&&(y=t.concat(y))})})}(e)}),o}(S(R,c,C,void 0,l),O,f);const k=Object.keys(Object.assign({},a.Zh));let D=s.$W.getConfig(E);const _=s.$W.getConfig(A);if(null!=_&&null!=D)throw new Error(w);D=null!=_?k.concat(_):D||k,Array.isArray(D)&&D.length>0&&(U=function(e,t){const n=Object.assign({},a.xS),r=Object.keys(a.xS),i={};(0,u.logInfo)(`allowTargetingKeys - allowed keys [ ${t.map(e=>n[e]).join(", ")} ]`),e.map(e=>{const o=Object.keys(e)[0],s=e[o].filter(e=>{const o=Object.keys(e)[0],s=0===r.filter(e=>0===o.indexOf(n[e])).length||t.find(e=>{const t=n[e];return 0===o.indexOf(t)});return i[o]=!s,s});e[o]=s});const o=Object.keys(i).filter(e=>i[e]);(0,u.logInfo)(`allowTargetingKeys - removed keys [ ${o.join(", ")} ]`);const s=e.filter(e=>e[Object.keys(e)[0]].length>0);return s}(U,D));let $=function(e){return e.map(e=>({[Object.keys(e)[0]]:e[Object.keys(e)[0]].map(e=>({[Object.keys(e)[0]]:e[Object.keys(e)[0]].join(",")})).reduce((e,t)=>Object.assign(t,e),{})})).reduce(function(e,t){var n=Object.keys(t)[0];return e[n]=Object.assign({},e[n],t[n]),e},{})}(U);const q=s.$W.getConfig("targetingControls.auctionKeyMaxChars");return q&&((0,u.logInfo)(`Detected \'targetingControls.auctionKeyMaxChars\' was active for this auction; set with a limit of ${q} characters. Running checks on auction keys...`),$=function(e,t){const n=(0,g.Go)(e),r=Object.keys(n).map(e=>({adUnitCode:e,adserverTargeting:n[e]})).sort(B());return r.reduce(function(e,r,i,o){let s=(a=r.adserverTargeting,Object.keys(a).reduce(function(e,t){return e+=`${t}%3d${encodeURIComponent(a[t])}%26`},""));var a;i+1===o.length&&(s=s.slice(0,-3));const d=r.adUnitCode,c=s.length;return c<=t?(t-=c,(0,u.logInfo)(`AdUnit \'${d}\' auction keys comprised of ${c} characters. Deducted from running threshold; new limit is ${t}`,n[d]),e[d]=n[d]):(0,u.logWarn)(`The following keys for adUnitCode \'${d}\' exceeded the current limit of the \'auctionKeyMaxChars\' setting.\\nThe key-set size was ${c}, the current allotted amount was ${t}.\\n`,n[d]),i+1===o.length&&0===Object.keys(e).length&&(0,u.logError)("No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting."),e},{})}($,q)),f.forEach(e=>{$[e]||($[e]={})}),$},setTargetingForGPT:(0,c.A_)("sync",function(t,r){const i=n.getAllTargeting(t),o=Object.fromEntries(y.map(e=>[e,null]));Object.entries(function(e,t){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>window.googletag.pubads().getSlots())().reduce((e,n)=>{const r=(0,g.fp)(t)&&t(n);return Object.keys(e).filter((0,g.fp)(r)?r:(0,u.isAdUnitCodeMatchingSlot)(n)).forEach(t=>e[t].push(n)),e},Object.fromEntries(e.map(e=>[e,[]])))}(Object.keys(i),r)).forEach(e=>{let[t,n]=e;n.forEach(e=>{Object.keys(i[t]).forEach(e=>{let n=i[t][e];"string"==typeof n&&-1!==n.indexOf(",")&&(n=n.split(",")),i[t][e]=n}),(0,u.logMessage)(`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`,i[t]),e.updateTargetingFromMap(Object.assign({},o,i[t])),b.lock(i[t])})}),Object.keys(i).forEach(t=>{Object.keys(i[t]).forEach(n=>{"hb_adid"===n&&e.setStatusForBids(i[t][n],a.tl.BID_TARGETING_SET)})}),n.targetingDone(i),d.Ic(a.qY.SET_TARGETING,i)},"setTargetingForGPT"),targetingDone:(0,c.A_)("sync",function(e){return e},"targetingDone"),getWinningBids(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:p.Vk,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:u.sortByHighestCpm;const a=t||i(n,s),d=r(e);return a.filter(e=>d.includes(e.adUnitCode)).filter(e=>!0===o.u.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0).map(e=>e.adUnitCode).filter(u.uniques).map(e=>a.filter(t=>t.adUnitCode===e?t:null).reduce(p.Vk))},setTargetingForAst(e){const t=n.getAllTargeting(e);try{n.resetPresetTargetingAST(e)}catch(e){(0,u.logError)("unable to reset targeting for AST"+e)}Object.keys(t).forEach(e=>{b.lock(t[e]),Object.keys(t[e]).forEach(n=>{if((0,u.logMessage)(`Attempting to set targeting for targetId: ${e} key: ${n} value: ${t[e][n]}`),(0,g.O8)(t[e][n])||(0,g.cy)(t[e][n])){const r={},i=/pt[0-9]/;n.search(i)<0?r[n.toUpperCase()]=t[e][n]:r[n]=t[e][n],window.apntag.setKeywords(e,r,{overrideKeyValue:!0})}})})},isApntagDefined(){if(window.apntag&&(0,g.fp)(window.apntag.setKeywords))return!0}};function r(t){return"string"==typeof t?[t]:(0,g.cy)(t)?t:e.getAdUnitCodes()||[]}function i(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.Bq,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;const i=e.getBidsReceived().reduce((e,n)=>{const r=s.$W.getConfig("useBidCache"),i=s.$W.getConfig("bidCacheFilterFunction"),o=t[n.adUnitCode]===n.auctionId,a=!(r&&!o&&"function"==typeof i)||!!i(n);return(r||o)&&a&&n?.video?.context!==l.LM&&C(n)&&(n.latestTargetedAuctionId=t[n.adUnitCode],e.push(n)),e},[]);return S(i,n,void 0,void 0,r)}function h(e,t){const r=n.getWinningBids(t,e),i=m();return r.map(e=>({[e.adUnitCode]:Object.keys(e.adserverTargeting).filter(t=>void 0===e.sendStandardTargeting||e.sendStandardTargeting||-1===i.indexOf(t)).reduce((t,n)=>{const r=[e.adserverTargeting[n]],i={[n.substring(0,v)]:r};if(n===a.xS.DEAL){const o=`${n}_${e.bidderCode}`.substring(0,v),s={[o]:r};return[...t,i,s]}return[...t,i]},[])}))}function m(){return e.getStandardBidderAdServerTargeting().map(e=>e.key).concat(T).filter(u.uniques)}return s.$W.getConfig("targetingControls",function(e){null!=(0,f.A)(e,E)&&null!=(0,f.A)(e,A)&&(0,u.logError)(w)}),n}(r.n)},939(e,t,n){n.d(t,{H:()=>l});var r=n(3064),i=n(466);let o=null,s=0,a=[];function d(){document.hidden?o=Date.now():(s+=Date.now()-(o??0),o=null,a.forEach(e=>{let{callback:t,startTime:n,setTimerId:r}=e;return r(c(t,s-n)())}),a=[])}function c(e,t){const n=s;let r=setTimeout(()=>{s===n&&null==o?e():null!=o?a.push({callback:e,startTime:n,setTimerId(e){r=e}}):r=c(e,s-n)()},t);return()=>r}function l(){let{startTime:e=i.timestamp,ttl:t=()=>null,monotonic:n=!1,slack:o=5e3}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=new Map,a=[],d=[],l=n?e=>d.push(e):e=>d.splice((0,i.binarySearch)(d,e,e=>e.expiry),0,e);let u,g;function f(){if(g&&clearTimeout(g),d.length>0){const e=(0,i.timestamp)();u=Math.max(e,d[0].expiry+o),g=c(()=>{const e=(0,i.timestamp)();let t=0;for(const n of d){if(n.expiry>e)break;a.forEach(e=>{try{e(n.item)}catch(e){(0,i.logError)(e)}}),s.delete(n.item),t++}d.splice(0,t),g=null,f()},u-e)}else g=null}function p(n){const i={},s=h;let a;const[d,c]=Object.entries({start:e,delta:t}).map(e=>{let t,[d,c]=e;return function(){const e=t={};r.U9.resolve(c(n)).then(n=>{e===t&&(i[d]=n,s===h&&null!=i.start&&null!=i.delta&&(a=i.start+i.delta,l(p),(null==g||u>a+o)&&f()))})}}),p={item:n,refresh:c,get expiry(){return a}};return d(),c(),p}let h={};return{[Symbol.iterator]:()=>s.keys(),add(e){!s.has(e)&&s.set(e,p(e))},has:e=>s.has(e),delete(e){const t=s.get(e);if(t)for(let e=0;e<d.length&&d[e].expiry<=t.expiry;e++)if(d[e]===t){d.splice(e,1);break}return s.delete(e)},clear(){d.length=0,f(),s.clear(),h={}},toArray:()=>Array.from(s.keys()),refresh(){d.length=0,f();for(const e of s.values())e.refresh()},onExpiry:e=>(a.push(e),()=>{const t=a.indexOf(e);t>=0&&a.splice(t,1)})}}document.addEventListener("visibilitychange",d)},1124(e,t,n){n.d(t,{j:()=>l,q:()=>g});var r=n(466),i=n(1933);const o={buckets:[{max:5,increment:.5}]},s={buckets:[{max:20,increment:.1}]},a={buckets:[{max:20,increment:.01}]},d={buckets:[{max:3,increment:.01},{max:8,increment:.05},{max:20,increment:.5}]},c={buckets:[{max:5,increment:.05},{max:10,increment:.1},{max:20,increment:.5}]};function l(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=parseFloat(e);return isNaN(r)&&(r=""),{low:""===r?"":u(e,o,n),med:""===r?"":u(e,s,n),high:""===r?"":u(e,a,n),auto:""===r?"":u(e,c,n),dense:""===r?"":u(e,d,n),custom:""===r?"":u(e,t,n)}}function u(e,t,n){let o="";if(!g(t))return o;const s=t.buckets.reduce((e,t)=>e.max>t.max?e:t,{max:0});let a=0;const d=t.buckets.find(t=>{if(e>s.max*n){let e=t.precision;void 0===e&&(e=2),o=(t.max*n).toFixed(e)}else{if(e<=t.max*n&&e>=a*n)return t.min=a,t;a=t.max}});return d&&(o=function(e,t,n){const o=void 0!==t.precision?t.precision:2,s=t.increment*n,a=t.min*n;let d=Math.floor;const c=i.$W.getConfig("cpmRoundingFunction");"function"==typeof c&&(d=c);const l=Math.pow(10,o+2),u=(e*l-a*l)/(s*l);let g,f;try{g=d(u)*s+a}catch(e){f=!0}(f||"number"!=typeof g)&&((0,r.logWarn)("Invalid rounding function passed in config"),g=Math.floor(u)*s+a);return g=Number(g.toFixed(10)),g.toFixed(o)}(e,d,n)),o}function g(e){if((0,r.isEmpty)(e)||!e.buckets||!Array.isArray(e.buckets))return!1;let t=!0;return e.buckets.forEach(e=>{e.max&&e.increment||(t=!1)}),t}},1385(e,t,n){n.d(t,{SL:()=>y,ad:()=>p,mW:()=>g,o2:()=>m,t6:()=>f});var r=n(466),i=n(6665),o=n(3064),s=n(1933);Object.freeze({});const a="gdpr",d="gpp",c="usp",l="coppa";class u{#e;#t;#n;#r;#i=!0;#o;constructor(){this.reset()}#s(e){this.#r=!0,this.#t=e,this.#n.resolve(e)}reset(){this.#n=(0,o.v6)(),this.#e=!1,this.#t=null,this.#r=!1,this.generatedTime=null}enable(){this.#e=!0}get enabled(){return this.#e}get ready(){return this.#r}get promise(){return this.#r?o.U9.resolve(this.#t):(this.#e||this.#s(null),this.#n.promise)}setConsentData(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,r.timestamp)();this.generatedTime=t,this.#i=!0,this.#s(e)}getConsentData(){return this.#t}get hash(){return this.#i&&(this.#o=(0,r.cyrb53Hash)(JSON.stringify(this.#t&&this.hashFields?this.hashFields.map(e=>this.#t[e]):this.#t)),this.#i=!1),this.#o}}const g=new class extends u{hashFields=["gdprApplies","consentString"];getConsentMeta(){const e=this.getConsentData();if(e&&e.vendorData&&this.generatedTime)return{gdprApplies:e.gdprApplies,consentStringSize:(0,i.O8)(e.vendorData.tcString)?e.vendorData.tcString.length:0,generatedAt:this.generatedTime,apiVersion:e.apiVersion}}},f=new class extends u{getConsentMeta(){if(this.getConsentData()&&this.generatedTime)return{generatedAt:this.generatedTime}}},p=new class extends u{hashFields=["applicableSections","gppString"];getConsentMeta(){if(this.getConsentData()&&this.generatedTime)return{generatedAt:this.generatedTime}}},h=(()=>{function e(){return!!s.$W.getConfig("coppa")}return{getCoppa:e,getConsentData:e,getConsentMeta:e,reset(){},get promise(){return o.U9.resolve(e())},get hash(){return e()?"1":"0"}}})(),m=function(){const e={},t={},n={};return{register(r,i,o){o&&((e[i]=e[i]||{})[r]=o,t.hasOwnProperty(i)?t[i]!==o&&(t[i]=n):t[i]=o)},get(r){const i={modules:e[r]||{}};return t.hasOwnProperty(r)&&t[r]!==n&&(i.gvlid=t[r]),i}}}(),b={[a]:g,[c]:f,[d]:p,[l]:h};const y=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b;const t=Object.entries(e);return Object.assign({get promise(){return o.U9.all(t.map(e=>{let[t,n]=e;return n.promise.then(e=>[t,e])})).then(e=>Object.fromEntries(e))},get hash(){return(0,r.cyrb53Hash)(t.map(e=>{let[t,n]=e;return n.hash}).join(":"))}},Object.fromEntries(["getConsentData","getConsentMeta","reset"].map(e=>{return[e,(n=e,function(){return Object.fromEntries(t.map(e=>{let[t,r]=e;return[t,r[n]()]}))})];var n})))}()},1418(e,t,n){n.d(t,{IY:()=>E,M:()=>i,RW:()=>g,Tf:()=>p,UE:()=>d,Zh:()=>l,_B:()=>y,as:()=>s,cA:()=>a,h0:()=>h,iD:()=>r,jO:()=>m,nl:()=>v,oA:()=>b,qY:()=>o,tl:()=>f,x5:()=>u,xS:()=>c});const r={PL_CODE:"code",PL_SIZE:"sizes",PL_BIDS:"bids",BD_BIDDER:"bidder",BD_ID:"paramsd",BD_PL_ID:"placementId",ADSERVER_TARGETING:"adserverTargeting",BD_SETTING_STANDARD:"standard"},i="pbjs_debug",o={AUCTION_INIT:"auctionInit",AUCTION_TIMEOUT:"auctionTimeout",AUCTION_END:"auctionEnd",BID_ADJUSTMENT:"bidAdjustment",BID_TIMEOUT:"bidTimeout",BID_REQUESTED:"bidRequested",BID_RESPONSE:"bidResponse",BID_REJECTED:"bidRejected",NO_BID:"noBid",SEAT_NON_BID:"seatNonBid",BID_WON:"bidWon",BIDDER_DONE:"bidderDone",BIDDER_ERROR:"bidderError",SET_TARGETING:"setTargeting",BEFORE_REQUEST_BIDS:"beforeRequestBids",BEFORE_BIDDER_HTTP:"beforeBidderHttp",REQUEST_BIDS:"requestBids",ADD_AD_UNITS:"addAdUnits",AD_RENDER_FAILED:"adRenderFailed",AD_RENDER_SUCCEEDED:"adRenderSucceeded",TCF2_ENFORCEMENT:"tcf2Enforcement",AUCTION_DEBUG:"auctionDebug",BID_VIEWABLE:"bidViewable",STALE_RENDER:"staleRender",EXPIRED_RENDER:"expiredRender",BILLABLE_EVENT:"billableEvent",BID_ACCEPTED:"bidAccepted",RUN_PAAPI_AUCTION:"paapiRunAuction",PBS_ANALYTICS:"pbsAnalytics",PAAPI_BID:"paapiBid",PAAPI_NO_BID:"paapiNoBid",PAAPI_ERROR:"paapiError",BEFORE_PBS_HTTP:"beforePBSHttp",BROWSI_INIT:"browsiInit",BROWSI_DATA:"browsiData"},s={PREVENT_WRITING_ON_MAIN_DOCUMENT:"preventWritingOnMainDocument",NO_AD:"noAd",EXCEPTION:"exception",CANNOT_FIND_AD:"cannotFindAd",MISSING_DOC_OR_ADID:"missingDocOrAdid"},a={bidWon:"adUnitCode"},d={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"},c={BIDDER:"hb_bidder",AD_ID:"hb_adid",PRICE_BUCKET:"hb_pb",SIZE:"hb_size",DEAL:"hb_deal",SOURCE:"hb_source",FORMAT:"hb_format",UUID:"hb_uuid",CACHE_ID:"hb_cache_id",CACHE_HOST:"hb_cache_host",ADOMAIN:"hb_adomain",ACAT:"hb_acat",CRID:"hb_crid",DSP:"hb_dsp"},l={BIDDER:"hb_bidder",AD_ID:"hb_adid",PRICE_BUCKET:"hb_pb",SIZE:"hb_size",DEAL:"hb_deal",FORMAT:"hb_format",UUID:"hb_uuid",CACHE_HOST:"hb_cache_host"},u={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",privacyIcon:"hb_native_privicon",sponsoredBy:"hb_native_brand",image:"hb_native_image",icon:"hb_native_icon",clickUrl:"hb_native_linkurl",displayUrl:"hb_native_displayurl",cta:"hb_native_cta",rating:"hb_native_rating",address:"hb_native_address",downloads:"hb_native_downloads",likes:"hb_native_likes",phone:"hb_native_phone",price:"hb_native_price",salePrice:"hb_native_saleprice",rendererUrl:"hb_renderer_url",adTemplate:"hb_adTemplate"},g={SRC:"s2s",DEFAULT_ENDPOINT:"https://prebid.adnxs.com/pbs/v1/openrtb2/auction",SYNCED_BIDDERS_KEY:"pbjsSyncs"},f={BID_TARGETING_SET:"targetingSet",RENDERED:"rendered",BID_REJECTED:"bidRejected"},p={INVALID:"Bid has missing or invalid properties",INVALID_REQUEST_ID:"Invalid request ID",BIDDER_DISALLOWED:"Bidder code is not allowed by allowedAlternateBidderCodes / allowUnknownBidderCodes",FLOOR_NOT_MET:"Bid does not meet price floor",CANNOT_CONVERT_CURRENCY:"Unable to convert currency",DSA_REQUIRED:"Bid does not provide required DSA transparency info",DSA_MISMATCH:"Bid indicates inappropriate DSA rendering method",PRICE_TOO_HIGH:"Bid price exceeds maximum value"},h={body:"desc",body2:"desc2",sponsoredBy:"sponsored",cta:"ctatext",rating:"rating",address:"address",downloads:"downloads",likes:"likes",phone:"phone",price:"price",salePrice:"saleprice",displayUrl:"displayurl"},m={sponsored:1,desc:2,rating:3,likes:4,downloads:5,price:6,saleprice:7,phone:8,address:9,desc2:10,displayurl:11,ctatext:12},b={ICON:1,MAIN:3},y=["privacyIcon","clickUrl","adTemplate","rendererUrl","type"],v={REQUEST:"Prebid Request",RESPONSE:"Prebid Response",NATIVE:"Prebid Native",EVENT:"Prebid Event"},E="__pb_locator__"},1443(e,t,n){n.d(t,{CK:()=>y,s0:()=>h,vM:()=>b});var r=n(466),i=n(7156),o=n(736),s=n(3202),a=n(5291),d=n(5808),c=n(1933),l=n(2592),u=n(8668),g=n(7610);const f="html5",p="cookie";let h=[];function m(){let{moduleName:e,moduleType:t,advertiseKeys:n=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{isAllowed:i=s.io}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};function l(r,s,l,f){let p=e;const h=c.$W.getCurrentBidder();h&&t===o.tW&&u.Ay.aliasRegistry[h]===e&&(p=h);const m={[a.Zw]:s,[a.OI]:f};n&&null!=l&&(m[a.Ez]=l);return r({valid:i(d.Ue,(0,g.s)(t,p,m))})}function m(e,t,n,r,i){if(!i||"function"!=typeof i)return l(e,t,n,r);h.push(function(){let o=l(e,t,n,r);i(o)})}function b(e){const t=e.charAt(0).toUpperCase()+e.substring(1),n=()=>window[e],i=function(t){return m(function(t){if(t&&t.valid)try{return!!n()}catch(t){(0,r.logError)(`${e} api disabled`)}return!1},f,null,!1,t)};return{[`has${t}`]:i,[`${e}IsEnabled`]:e=>m(function(e){if(e&&e.valid)try{return n().setItem("prebid.cookieTest","1"),"1"===n().getItem("prebid.cookieTest")}catch(e){}finally{try{n().removeItem("prebid.cookieTest")}catch(e){}}return!1},f,null,!1,e),[`setDataIn${t}`]:(e,t,r)=>m(function(r){r&&r.valid&&i()&&n().setItem(e,t)},f,e,!0,r),[`getDataFrom${t}`]:(e,t)=>m(function(t){return t&&t.valid&&i()?n().getItem(e):null},f,e,!1,t),[`removeDataFrom${t}`]:(e,t)=>m(function(t){t&&t.valid&&i()&&n().removeItem(e)},f,e,!0,t)}}return{setCookie:function(e,t,n,r,i,o){return m(function(o){if(o&&o.valid){const o=i&&""!==i?` ;domain=${encodeURIComponent(i)}`:"",s=n&&""!==n?` ;expires=${n}`:"",a=null!=r&&"none"==r.toLowerCase()?"; Secure":"";document.cookie=`${e}=${encodeURIComponent(t)}${s}; path=/${o}${r?`; SameSite=${r}`:""}${a}`}},p,e,!0,o)},getCookie:function(e,t){return m(function(t){if(t&&t.valid){let t=window.document.cookie.match("(^|;)\\\\s*"+e+"\\\\s*=\\\\s*([^;]*)\\\\s*(;|$)");return t?decodeURIComponent(t[2]):null}return null},p,e,!1,t)},cookiesAreEnabled:function(e){return m(function(e){return!(!e||!e.valid)&&(0,r.checkCookieSupport)()},p,null,!1,e)},...b("localStorage"),...b("sessionStorage"),findSimilarCookies:function(e,t){return m(function(t){if(t&&t.valid){const t=[];if((0,r.hasDeviceAccess)()){const n=document.cookie.split(";");for(;n.length;){const r=n.pop();let i=r.indexOf("=");i=i<0?r.length:i;decodeURIComponent(r.slice(0,i).replace(/^\\s+/,"")).indexOf(e)>=0&&t.push(decodeURIComponent(r.slice(i+1)))}}return t}},p,e,!1,t)}}}function b(){let{moduleType:e,moduleName:t,bidderCode:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};function r(){throw new Error("Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName")}return n?((e&&e!==o.tW||t)&&r(),e=o.tW,t=n):t&&e||r(),m({moduleType:e,moduleName:t})}function y(e){return m({moduleName:e,moduleType:o.tp})}function v(){if(!(0,r.hasDeviceAccess)())return{allow:!1}}(0,s.qB)(d.Ue,"deviceAccess config",v),(0,s.qB)(d.yg,"deviceAccess config",v),(0,s.qB)(d.Ue,"bidderSettings.*.storageAllowed",function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.u;if(e[a.Dk]!==o.tW)return;let n=t.get(e[a.q7],"storageAllowed");if(n&&!0!==n){const t=e[a.Zw];n=Array.isArray(n)?n.some(e=>e===t):n===t}else n=!!n;return n?void 0:{allow:n}});(0,l.A_)("sync",(e,t)=>{})},1748(e,t,n){n.d(t,{E:()=>a,m:()=>s});var r=n(765);const i=(0,r.uP)()?window:{},o=i[(0,r.k)()]=i[(0,r.k)()]||{};function s(){return o}function a(e){o.installedModules.push(e)}o.cmd=o.cmd||[],o.que=o.que||[],o.installedModules=o.installedModules||[],i===window&&(i._pbjsGlobals=i._pbjsGlobals||[],i._pbjsGlobals.push((0,r.k)()))},1833(e,t,n){n.d(t,{Dy:()=>i,O$:()=>s,i8:()=>o});var r=n(466);const i=["dooh","app","site"];function o(e){return function(t){return i.reduce((n,i)=>(s(t,i)&&(null!=n?((0,r.logWarn)(`${e} specifies both \'${n}\' and \'${i}\'; dropping the latter.`),delete t[i]):n=i),n),null),t}}function s(e,t){return null!=e[t]&&Object.keys(e[t]).length>0}},1852(e,t,n){n.d(t,{$A:()=>I,BS:()=>P,Hh:()=>W,Pk:()=>j,Uc:()=>O,XO:()=>M,bw:()=>_,n6:()=>C,qn:()=>$,vB:()=>N,vW:()=>R,vd:()=>k});var r=n(466),i=n(8014),o=n(1418),s=n(1933),a=n(7464),d=n(9794),c=n(4123),l=n(5144),u=n(2592),g=n(356),f=n(3064),p=n(8668),h=n(7841),m=n(869),b=n(2122);const{AD_RENDER_FAILED:y,AD_RENDER_SUCCEEDED:v,STALE_RENDER:E,BID_WON:A,EXPIRED_RENDER:w}=o.qY,{EXCEPTION:T}=o.as,I=(0,u.A_)("sync",function(e){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:f.U9.resolve()).then(t=>t??c.n.findBidByAdId(e)).catch(()=>{})}),C=(0,u.A_)("sync",function(e){((0,b.$T)(e.eventtrackers)[b.RO]?.[b.Ni]||[]).forEach(e=>(0,r.triggerPixel)(e)),i.Ic(A,e),c.n.addWinningBid(e)});function S(e){let{reason:t,message:n,bid:o,id:s}=e;const a={reason:t,message:n};o&&(a.bid=o,a.adId=o.adId),s&&(a.adId=s),(0,r.logError)(`Error rendering ad (id: ${s}): ${n}`),i.Ic(y,a)}function B(e){let{doc:t,bid:n,id:r}=e;const o={doc:t,bid:n,adId:r};p.Ay.callAdRenderSucceededBidder(n.adapterCode||n.bidder,n),i.Ic(v,o)}function O(e,t){switch(e.event){case o.qY.AD_RENDER_FAILED:S({bid:t,id:t.adId,reason:e.info.reason,message:e.info.message});break;case o.qY.AD_RENDER_SUCCEEDED:B({doc:null,bid:t,id:t.adId});break;default:(0,r.logError)(`Received event request for unsupported event: \'${e.event}\' (adId: \'${t.adId}\')`)}}function R(e,t,n){let{resizeFn:r,fireTrackers:i=g.vO}=n;if("resizeNativeHeight"===e.action)r(e.width,e.height);else i(e,t)}const U={[o.nl.EVENT]:O};U[o.nl.NATIVE]=R;const k=(0,u.A_)("sync",function(e,t){const{ad:n,adUrl:i,cpm:o,originalCpm:s,width:a,height:d,instl:c}=e,l={AUCTION_PRICE:s||o,CLICKTHROUGH:t?.clickUrl||""};return{ad:(0,r.replaceMacros)(n,l),adUrl:(0,r.replaceMacros)(i,l),width:a,height:d,instl:c}}),D=(0,u.A_)("sync",function(e){let{renderFn:t,resizeFn:n,bidResponse:i,options:s,doc:a,isMainDocument:c=a===document&&!(0,r.inIframe)()}=e;const l=i.mediaType===d.G_;if(c||l)return void S({reason:o.as.PREVENT_WRITING_ON_MAIN_DOCUMENT,message:l?"Cannot render video ad without a renderer":"renderAd was prevented from writing to the main document.",bid:i,id:i.adId});const u=k(i,s);t(Object.assign({adId:i.adId},u));const{width:g,height:f}=u;null!=(g??f)&&n(g,f)});function _(e){let{renderFn:t,resizeFn:n,adId:a,options:d,bidResponse:c,doc:l}=e;W(c,()=>{if(null!=c){if((c.status!==o.tl.RENDERED||((0,r.logWarn)(`Ad id ${a} has been rendered before`),i.Ic(E,c),!s.$W.getConfig("auctionOptions")?.suppressStaleRender))&&(m.uW.isBidNotExpired(c)||((0,r.logWarn)(`Ad id ${a} has been expired`),i.Ic(w,c),!s.$W.getConfig("auctionOptions")?.suppressExpiredRender)))try{D({renderFn:t,resizeFn:n,bidResponse:c,options:d,doc:l})}catch(e){S({reason:o.as.EXCEPTION,message:e.message,id:a,bid:c})}}else S({reason:o.as.CANNOT_FIND_AD,message:`Cannot find ad \'${a}\'`,id:a})})}function $(e){const t=(0,h.BO)(e.metrics);t.checkpoint("bidRender"),t.timeBetween("bidWon","bidRender","render.deferred"),t.timeBetween("auctionEnd","bidRender","render.pending"),t.timeBetween("requestBids","bidRender","render.e2e"),e.status=o.tl.RENDERED}D.before(function(e,t){const{bidResponse:n,doc:r}=t;(0,a.J7)(n.renderer)?((0,a.Pg)(n.renderer,n,r),B({doc:r,bid:n,id:n.adId}),e.bail()):e(t)},100);const q=new WeakMap,x=new WeakSet;function W(e,t){null!=e?(q.set(e,t),e.deferRendering||N(e),j(e)):t()}function j(e){x.has(e)||(x.add(e),C(e))}function N(e){const t=q.get(e);t&&(t(),$(e),q.delete(e))}function P(e,t,n){let i;function s(e,n){S(Object.assign({id:t,bid:i},{reason:e,message:n}))}function a(t,n){const r=e.defaultView?.frameElement;r&&(t&&(r.width=t,r.style.width&&(r.style.width=`${t}px`)),n&&(r.height=n,r.style.height&&(r.style.height=`${n}px`)))}const d=(c={resizeFn:a},function(e,t,n){U.hasOwnProperty(e)&&U[e](t,n,c)});var c;function u(t){t.ad?(e.write(t.ad),e.close(),B({doc:e,bid:i,id:i.adId})):(0,l.HH)(i).then(n=>n(t,{sendMessage:(e,t)=>d(e,t,i),mkFrame:r.createIframe},e.defaultView)).then(()=>B({doc:e,bid:i,id:i.adId}),e=>{s(e?.reason||o.as.EXCEPTION,e?.message),e?.stack&&(0,r.logError)(e)});const n=document.createComment(`Creative ${i.creativeId} served by ${i.bidder} Prebid.js Header Bidding`);(0,r.insertElement)(n,e,"html")}try{t&&e?I(t).then(r=>{i=r,_({renderFn:u,resizeFn:a,adId:t,options:{clickUrl:n?.clickThrough},bidResponse:r,doc:e})}):s(o.as.MISSING_DOC_OR_ADID,"missing "+(t?"doc":"adId"))}catch(e){s(T,e.message)}}function M(){if(!window.frames[o.IY])if(document.body){const e=(0,r.createInvisibleIframe)();e.name=o.IY,document.body.appendChild(e)}else window.requestAnimationFrame(M)}},1933(e,t,n){n.d(t,{$W:()=>h,Ov:()=>l});var r=n(1124),i=n(466),o=n(8928),s=n(6665),a=n(1418);const d="TRUE"===(0,i.getParameterByName)(a.M).toUpperCase(),c={},l="random",u={};u[l]=!0,u.fixed=!0;const g=l,f={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"};function p(e){const t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?{priceGranularity:f.MEDIUM,customPriceBucket:{},mediaTypePriceGranularity:{},bidderSequence:g,auctionOptions:{}}:{};function n(e){return t[e]}function o(n,r){t.hasOwnProperty(n)||Object.defineProperty(e,n,{enumerable:!0}),t[n]=r}const a={publisherDomain:{set(e){null!=e&&(0,i.logWarn)("publisherDomain is deprecated and has no effect since v7 - use pageUrl instead"),o("publisherDomain",e)}},priceGranularity:{set(e){c(e)&&("string"==typeof e?o("priceGranularity",d(e)?e:f.MEDIUM):(0,s.Qd)(e)&&(o("customPriceBucket",e),o("priceGranularity",f.CUSTOM),(0,i.logMessage)("Using custom price granularity")))}},customPriceBucket:{},mediaTypePriceGranularity:{set(e){null!=e&&o("mediaTypePriceGranularity",Object.keys(e).reduce((t,r)=>(c(e[r])?"string"==typeof e?t[r]=d(e[r])?e[r]:n("priceGranularity"):(0,s.Qd)(e)&&(t[r]=e[r],(0,i.logMessage)(`Using custom price granularity for ${r}`)):(0,i.logWarn)(`Invalid price granularity for media type: ${r}`),t),{}))}},bidderSequence:{set(e){u[e]?o("bidderSequence",e):(0,i.logWarn)(`Invalid order: ${e}. Bidder Sequence was not set.`)}},auctionOptions:{set(e){(function(e){if(!(0,s.Qd)(e))return(0,i.logWarn)("Auction Options must be an object"),!1;for(const t of Object.keys(e)){if("secondaryBidders"!==t&&"suppressStaleRender"!==t&&"suppressExpiredRender"!==t)return(0,i.logWarn)(`Auction Options given an incorrect param: ${t}`),!1;if("secondaryBidders"===t){if(!(0,s.cy)(e[t]))return(0,i.logWarn)(`Auction Options ${t} must be of type Array`),!1;if(!e[t].every(s.O8))return(0,i.logWarn)(`Auction Options ${t} must be only string`),!1}else if(("suppressStaleRender"===t||"suppressExpiredRender"===t)&&!(0,s.Lm)(e[t]))return(0,i.logWarn)(`Auction Options ${t} must be of type boolean`),!1}return!0})(e)&&o("auctionOptions",e)}}};return Object.defineProperties(e,Object.fromEntries(Object.entries(a).map(e=>{let[r,i]=e;return[r,Object.assign({get:n.bind(null,r),set:o.bind(null,r),enumerable:t.hasOwnProperty(r),configurable:!t.hasOwnProperty(r)},i)]}))),e;function d(e){return Object.keys(f).find(t=>e===f[t])}function c(e){if(!e)return(0,i.logError)("Prebid Error: no value passed to `setPriceGranularity()`"),!1;if("string"==typeof e)d(e)||(0,i.logWarn)("Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default.");else if((0,s.Qd)(e)&&!(0,r.q)(e))return(0,i.logError)("Invalid custom price value passed to `setPriceGranularity()`"),!1;return!0}}const h=function(){const e=[];let t,n,r,a=null;function l(){t={};const e=p({debug:d,bidderTimeout:3e3,enableSendAllBids:true,useBidCache:false,deviceAccess:true,disableAjaxTimeout:false,maxNestedIframes:10,maxBid:5e3,userSync:{topics:c}});n&&v(Object.keys(n).reduce((t,r)=>(n[r]!==e[r]&&(t[r]=e[r]||{}),t),{})),n=e,r={}}function u(){if(a&&r&&(0,s.Qd)(r[a])){const e=r[a],t=new Set([...Object.keys(n),...Object.keys(e)]),o={};for(const r of t){const t=n[r],a=e[r];o[r]=void 0===a?t:void 0===t?a:(0,s.Qd)(a)?(0,i.mergeDeep)({},t,a):a}return o}return{...n}}const[g,f]=[u,function(){const e=u();return Object.defineProperty(e,"ortb2",{get:function(){throw new Error("invalid access to \'orbt2\' config - use request parameters instead")}}),e}].map(e=>function(){if(arguments.length<=1&&"function"!=typeof(arguments.length<=0?void 0:arguments[0])){const t=arguments.length<=0?void 0:arguments[0];return t?(0,o.A)(e(),t):u()}return y(...arguments)}),[h,m]=[f,g].map(e=>function(){let t=e(...arguments);return t&&"object"==typeof t&&(t=(0,s.Go)(t)),t});function b(e){if(!(0,s.Qd)(e))return void(0,i.logError)("setConfig options must be an object");const r=Object.keys(e),o={};r.forEach(r=>{let a=e[r];(0,s.Qd)(t[r])&&(0,s.Qd)(a)&&(a=Object.assign({},t[r],a));try{o[r]=n[r]=a}catch(e){(0,i.logWarn)(`Cannot set config for property ${r} : `,e)}}),v(o)}function y(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n;if("string"!=typeof t&&(o=t,t="*",r=n||{}),"function"!=typeof o)return void(0,i.logError)("listener must be a function");const s={topic:t,callback:o};return e.push(s),r.init&&o("*"===t?f():{[t]:f(t)}),function(){e.splice(e.indexOf(s),1)}}function v(t){const n=Object.keys(t);e.filter(e=>n.includes(e.topic)).forEach(e=>{e.callback({[e.topic]:t[e.topic]})}),e.filter(e=>"*"===e.topic).forEach(e=>e.callback(t))}function E(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{!function(e){if(!(0,s.Qd)(e))throw new Error("setBidderConfig bidder options must be an object");if(!Array.isArray(e.bidders)||!e.bidders.length)throw new Error("setBidderConfig bidder options must contain a bidders list with at least 1 bidder");if(!(0,s.Qd)(e.config))throw new Error("setBidderConfig bidder options must contain a config object")}(e),e.bidders.forEach(n=>{r[n]||(r[n]=p({},!1)),Object.keys(e.config).forEach(o=>{const a=e.config[o],d=r[n][o];if((0,s.Qd)(a)&&(null==d||(0,s.Qd)(d))){const e=t?i.mergeDeep:Object.assign;r[n][o]=e({},d||{},a)}else r[n][o]=a})})}catch(e){(0,i.logError)(e)}}function A(e,t){a=e;try{return t()}finally{w()}}function w(){a=null}return l(),{getCurrentBidder:function(){return a},resetBidder:w,getConfig:f,getAnyConfig:g,readConfig:h,readAnyConfig:m,setConfig:b,mergeConfig:function(e){if(!(0,s.Qd)(e))return void(0,i.logError)("mergeConfig input must be an object");const t=(0,i.mergeDeep)(u(),e);return b({...t}),t},setDefaults:function(e){(0,s.Qd)(t)?(Object.assign(t,e),Object.assign(n,e)):(0,i.logError)("defaults must be an object")},resetConfig:l,runWithBidder:A,callbackWithBidder:function(e){return function(t){return function(){if("function"==typeof t){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return A(e,t.bind(this,...r))}(0,i.logWarn)("config.callbackWithBidder callback is not a function")}}},setBidderConfig:E,getBidderConfig:function(){return r},mergeBidderConfig:function(e){return E(e,!0)}}}()},2122(e,t,n){n.d(t,{$T:()=>a,Ni:()=>r,OA:()=>o,RO:()=>s,fR:()=>i});const r=1,i=2,o=1,s=500;function a(e){return(e??[]).reduce((e,t)=>{let{event:n,method:r,url:i}=t;const o=e[n]=e[n]??{};return(o[r]=o[r]??[]).push(i),e},{})}},2201(e,t,n){n.d(t,{RD:()=>m,g4:()=>h});var r=n(5808),i=n(7610),o=n(3202),s=n(1933),a=n(2592),d=n(466);const c={fetch:window.fetch.bind(window),makeRequest:(e,t)=>new Request(e,t),timeout(e,t){const n=new AbortController;let r=setTimeout(()=>{n.abort(),(0,d.logError)(`Request timeout after ${e}ms`,t),r=null},e);return{signal:n.signal,done(){r&&clearTimeout(r)}}}},l="GET",u="Content-Type",g=(0,a.A_)("async",function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;return e.withCredentials&&(e.withCredentials=t&&n?(0,o.io)(r.yg,(0,i.s)(t,n)):(0,d.hasDeviceAccess)()),e},"processRequestOptions");function f(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,{request:t,done:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,o=(t,n)=>{let o;null==e||null!=n?.signal||s.$W.getConfig("disableAjaxTimeout")||(o=c.timeout(e,t),n=Object.assign({signal:o.signal},n)),g(n,r,i);let a=c.fetch(t,n);return null!=o?.done&&(a=a.finally(o.done)),a};return null==t&&null==n||(o=(e=>function(r,i){const o=new URL(null==r?.url?r:r.url,document.location).origin;let s=e(r,i);return t&&t(o),n&&(s=s.finally(()=>n(o))),s})(o)),o}function p(e,t){let n,{status:r,statusText:i="",headers:o,url:s}=e;function a(e){if(void 0===n)try{n=(new DOMParser).parseFromString(t,o?.get(u)?.split(";")?.[0])}catch(t){n=null,e&&e(t)}return n}return{readyState:XMLHttpRequest.DONE,status:r,statusText:i,responseText:t,response:t,responseType:"",responseURL:s,get responseXML(){return a(d.logError)},getResponseHeader:e=>o?.has(e)?o.get(e):null,toJSON(){return Object.assign({responseXML:a()},this)},timedOut:!1}}function h(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,{request:t,done:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=f(e,{request:t,done:n},arguments.length>2?arguments[2]:void 0,arguments.length>3?arguments[3]:void 0);return function(e,t,n){!function(e,t){const{success:n,error:r}="object"==typeof t&&null!=t?t:{success:"function"==typeof t?t:()=>null,error:(e,t)=>(0,d.logError)("Network error",e,t)};e.then(e=>e.text().then(t=>[e,t])).then(e=>{let[t,i]=e;const o=p(t,i);t.ok||304===t.status?n(i,o):r(t.statusText,o)},e=>r("",Object.assign(p({status:0},""),{reason:e,timedOut:"AbortError"===e?.name})))}(r(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=n.method||(t?"POST":l);if(r===l&&t){const r=(0,d.parseUrl)(e,n);Object.assign(r.search,t),e=(0,d.buildUrl)(r)}const i=new Headers(n.customHeaders);i.set(u,n.contentType||"text/plain");const o={method:r,headers:i};return r!==l&&t&&(o.body=t),n.withCredentials&&(o.credentials="include"),isSecureContext&&(["browsingTopics","adAuctionHeaders"].forEach(e=>{n[e]&&(o[e]=!0)}),null!=n.suppressTopicsEnrollmentWarning&&(o.suppressTopicsEnrollmentWarning=n.suppressTopicsEnrollmentWarning)),n.keepalive&&(o.keepalive=!0),c.makeRequest(e,o)}(e,n,arguments.length>3&&void 0!==arguments[3]?arguments[3]:{})),t)}}const m=h();f()},2517(e,t,n){n.d(t,{Cf:()=>a,S3:()=>i,Tb:()=>o,WR:()=>s,qN:()=>d,yB:()=>g,zt:()=>r});const r=["request","imp","bidResponse","response"],[i,o,s,a]=r,[d,c]=["default","pbs"],l=new Set(r);const{registerOrtbProcessor:u,getProcessors:g}=function(){const e={};return{registerOrtbProcessor(t){let{type:n,name:i,fn:o,priority:s=0,dialects:a=[d]}=t;if(!l.has(n))throw new Error(`ORTB processor type must be one of: ${r.join(", ")}`);a.forEach(t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(n)||(e[t][n]={}),e[t][n][i]={priority:s,fn:o}})},getProcessors:t=>e[t]||{}}}()},2592(e,t,n){n.d(t,{A_:()=>s,Y6:()=>c,Yn:()=>d,u2:()=>l});var r=n(5481),i=n.n(r),o=n(3064);const s=i()({ready:i().SYNC|i().ASYNC|i().QUEUE}),a=(0,o.v6)();s.ready=(()=>{const e=s.ready;return function(){try{return e.apply(s)}finally{a.resolve()}}})();a.promise;const d=s.get;function c(e,t){return Object.defineProperties(t,Object.fromEntries(["before","after","getHooks","removeAll"].map(t=>[t,{get:()=>e[t]}]))),t}function l(e){return c(e,function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return n.push(function(){}),e.apply(this,n)})}},3064(e,t,n){n.d(t,{U9:()=>i,v6:()=>o});var r=n(1748);(0,r.m)().setTimeout??setTimeout;const i=(0,r.m)().Promise??Promise;function o(){let e,t,{promiseFactory:n=e=>new i(e)}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};function r(e){return t=>e(t)}return{promise:n((n,r)=>{e=n,t=r}),resolve:r(e),reject:r(t)}}},3202(e,t,n){n.d(t,{io:()=>s,qB:()=>o});var r=n(466),i=n(5291);const[o,s]=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,r.prefixLog)("Activity control:");const t={};function n(e){return t[e]=t[e]||[],t[e]}function o(t,n,r,o){let s;try{s=r(o)}catch(r){e.logError(`Exception in rule ${n} for \'${t}\'`,r),s={allow:!1,reason:r}}return s&&Object.assign({activity:t,name:n,component:o[i.Ii]},s)}const s={};function a(t){let{activity:n,name:r,allow:i,reason:o,component:a}=t;const d=`${r} ${i?"allowed":"denied"} \'${n}\' for \'${a}\'${o?":":""}`,c=s.hasOwnProperty(d);if(c&&clearTimeout(s[d]),s[d]=setTimeout(()=>delete s[d],1e3),!c){const t=[d];o&&t.push(o),(i?e.logInfo:e.logWarn).apply(e,t)}}return[function(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;const o=n(e),s=o.findIndex(e=>{let[t]=e;return i<t}),a=[i,t,r];return o.splice(s<0?o.length:s,0,a),function(){const e=o.indexOf(a);e>=0&&o.splice(e,1)}},function(e,t){let r,i;for(const[s,d,c]of n(e)){if(r!==s&&i)break;r=s;const n=o(e,d,c,t);if(n){if(!n.allow)return a(n),!1;i=n}}return i&&a(i),!0}]}()},3320(e,t,n){n.d(t,{O:()=>o});var r=n(466);function i(){let{src:e="client",bidder:t="",bidId:n,transactionId:i,adUnitId:o,auctionId:s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var a=e;Object.assign(this,{bidderCode:t,width:0,height:0,adId:(0,r.getUniqueIdentifierStr)(),requestId:n,transactionId:i,adUnitId:o,auctionId:s,mediaType:"banner",source:a}),this.getSize=function(){return this.width+"x"+this.height}}function o(e){return new i(e)}},3391(e,t,n){n.d(t,{zt:()=>f});var r=n(466),i=n(6665),o=n(1933),s=n(1443),a=n(3202),d=n(5808),c=n(5291),l=n(736),u=n(7610);o.$W.setDefaults({userSync:(0,i.Go)({syncEnabled:!0,filterSettings:{image:{bidders:"*",filter:"include"}},syncsPerBidder:5,syncDelay:3e3,auctionDelay:500})});const g=(0,s.CK)("usersync");const f=function(e){const t={};let n={image:[],iframe:[]};const s=new Set;let a={};const g={image:!0,iframe:!1};let f=e.config;function p(){if(f.syncEnabled&&e.browserSupportsCookies){try{!function(){if(!g.iframe)return;h(n.iframe,e=>{const[t,i]=e;(0,r.logMessage)(`Invoking iframe user sync for bidder: ${t}`),(0,r.insertUserSyncIframe)(i),function(e,t){e.image=e.image.filter(e=>e[0]!==t)}(n,t)})}(),function(){if(!g.image)return;h(n.image,e=>{const[t,n]=e;(0,r.logMessage)(`Invoking image pixel user sync for bidder: ${t}`),(0,r.triggerPixel)(n)})}()}catch(e){return(0,r.logError)("Error firing user syncs",e)}n={image:[],iframe:[]}}}function h(e,t){(0,r.shuffle)(e).forEach(t)}function m(e,t){const n=f.filterSettings;if(function(e,t){if(e.all&&e[t])return(0,r.logWarn)(`Detected presence of the "filterSettings.all" and "filterSettings.${t}" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`),!1;const n=e.all?e.all:e[t],o=e.all?"all":t;if(!n)return!1;const s=n.filter,a=n.bidders;if(s&&"include"!==s&&"exclude"!==s)return(0,r.logWarn)(`UserSync "filterSettings.${o}.filter" setting \'${s}\' is not a valid option; use either \'include\' or \'exclude\'.`),!1;if("*"!==a&&!(Array.isArray(a)&&a.length>0&&a.every(e=>(0,i.O8)(e)&&"*"!==e)))return(0,r.logWarn)(`Detected an invalid setup in userSync "filterSettings.${o}.bidders"; use either \'*\' (to represent all bidders) or an array of bidders.`),!1;return!0}(n,e)){g[e]=!0;const r=n.all?n.all:n[e],i="*"===r.bidders?[t]:r.bidders,o={include:(e,t)=>!e.includes(t),exclude:(e,t)=>e.includes(t)};return o[r.filter||"include"](i,t)}return!g[e]}return o.$W.getConfig("userSync",e=>{if(e.userSync){const t=e.userSync.filterSettings;(0,i.Qd)(t)&&(t.image||t.all||(e.userSync.filterSettings.image={bidders:"*",filter:"include"}))}f=Object.assign(f,e.userSync)}),e.regRule(d.Ml,"userSync config",e=>{if(!f.syncEnabled)return{allow:!1,reason:"syncs are disabled"};if(e[c.Dk]===l.tW){const n=e[c.bt],r=e[c.iK];if(!t.canBidderRegisterSync(n,r))return{allow:!1,reason:`${n} syncs are not enabled for ${r}`}}}),t.registerSync=(t,o,g)=>s.has(o)?(0,r.logMessage)(`already fired syncs for "${o}", ignoring registerSync call`):f.syncEnabled&&(0,i.cy)(n[t])?o?0!==f.syncsPerBidder&&Number(a[o])>=f.syncsPerBidder?(0,r.logWarn)(`Number of user syncs exceeded for "${o}"`):void(e.isAllowed(d.Ml,(0,u.s)(l.tW,o,{[c.bt]:t,[c.e3]:g}))&&(n[t].push([o,g]),a=function(e,t){return e[t]?e[t]+=1:e[t]=1,e}(a,o))):(0,r.logWarn)("Bidder is required for registering sync"):(0,r.logWarn)(`User sync type "${t}" not supported`),t.bidderDone=s.add.bind(s),t.syncUsers=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(e)return setTimeout(p,Number(e));p()},t.triggerUserSyncs=()=>{f.enableOverride&&t.syncUsers()},t.canBidderRegisterSync=(e,t)=>!f.filterSettings||!m(e,t),t}(Object.defineProperties({config:o.$W.getConfig("userSync"),isAllowed:a.io,regRule:a.qB},{browserSupportsCookies:{get:function(){return!(0,r.isSafariBrowser)()&&g.cookiesAreEnabled()}}}))},3448(e,t,n){function r(e){return!e?.gdprApplies||!0===e?.vendorData?.purpose?.consents?.[1]}n.d(t,{C:()=>r})},3556(e,t,n){n.d(t,{xb:()=>C,a$:()=>T});var r=n(8668),i=n(1933),o=n(3320),s=n(3391),a=n(356),d=n(6220),c=n(1418),l=n(8014),u=n(6665),g=n(466),f=n(2592),p=n(4123),h=n(7156),m=n(7841),b=n(3202),y=n(7610),v=n(736),E=n(5808);const A=["cpm","ttl","creativeId","netRevenue","currency"],w={auctionId:e=>e.ortb2?.source?.tid,transactionId:e=>e.ortb2Imp?.ext?.tid};function T(e){const t=Array.isArray(e.supportedMediaTypes)?{supportedMediaTypes:e.supportedMediaTypes}:void 0;function n(e){const n=C(e);r.Ay.registerBidAdapter(n,e.code,t)}n(e),Array.isArray(e.aliases)&&e.aliases.forEach(t=>{let i,o,s=t;(0,u.Qd)(t)&&(s=t.code,i=t.gvlid,o=t.skipPbsAliasing),r.Ay.aliasRegistry[s]=e.code,n(Object.assign({},e,{code:s,gvlid:i,skipPbsAliasing:o}))})}const I=(0,g.memoize)(e=>{let{bidderCode:t}=e;const n=(0,b.io)(E.VJ,(0,y.s)(v.tW,t));function r(e,t,r){return w.hasOwnProperty(t)?n?w[t](e):null:Reflect.get(e,t,r)}function i(e,t){const n=new Proxy(e,t);return Object.entries(e).filter(e=>{let[t,n]=e;return"function"==typeof n}).forEach(t=>{let[r,i]=t;n[r]=i.bind(e)}),n}const o=(0,g.memoize)(e=>i(e,{get:r}),e=>e.bidId);return{bidRequest:o,bidderRequest:e=>i(e,{get:(t,n,i)=>"bids"===n?e.bids.map(o):r(t,n,i)})}});function C(e){return Object.assign((t=e.code,n=t,{callBids:function(){},setBidderCode:function(e){n=e},getBidderCode:function(){return n}}),{getSpec:function(){return Object.freeze(Object.assign({},e))},registerSyncs:s,callBids:function(t,n,f,b,y,v){if(!Array.isArray(t.bids))return;const E=I(t),T={};function C(e,t){const r=(0,m.BO)(t.metrics);r.checkpoint("addBidResponse"),T[e]=!0,r.measureTime("addBidResponse.validate",()=>function(e,t){let{index:n=p.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function r(){const e=Object.keys(t);return A.every(n=>e.includes(n)&&![void 0,null].includes(t[n]))}function i(e){return`Invalid bid from ${t.bidderCode}. Ignoring bid: ${e}`}if(!e)return(0,g.logWarn)("No adUnitCode was supplied to addBidResponse."),!1;if(!t)return(0,g.logWarn)(`Some adapter tried to add an undefined bid for ${e}.`),!1;if(!r())return(0,g.logError)(i(`Bidder ${t.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`)),!1;if("native"===t.mediaType&&!(0,a.Bm)(t,{index:n}))return(0,g.logError)(i("Native bid missing some required properties.")),!1;if("video"===t.mediaType&&!(0,d.vk)(t,{index:n}))return(0,g.logError)(i("Video bid does not have required vastUrl or renderer property")),!1;if("banner"===t.mediaType&&!function(e,t){let{index:n=p.n.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((t.width||0===parseInt(t.width,10))&&(t.height||0===parseInt(t.height,10)))return t.width=parseInt(t.width,10),t.height=parseInt(t.height,10),!0;if(null!=t.wratio&&null!=t.hratio)return t.wratio=parseInt(t.wratio,10),t.hratio=parseInt(t.hratio,10),!0;const r=n.getBidRequest(t),i=n.getMediaTypes(t),o=r&&r.sizes||i&&i.banner&&i.banner.sizes,s=(0,g.parseSizesInput)(o);if(1===s.length){const[e,n]=s[0].split("x");return t.width=parseInt(e,10),t.height=parseInt(n,10),!0}return!1}(e,t,{index:n}))return(0,g.logError)(i("Banner bids require a width and height")),!1;return!0}(e,t))?n(e,t):n.reject(e,t,c.Tf.INVALID)}const S=[];function O(){f(),i.$W.runWithBidder(e.code,()=>{l.Ic(c.qY.BIDDER_DONE,t),s(S,t.gdprConsent,t.uspConsent,t.gppConsent)})}const k=U(t).measureTime("validate",()=>t.bids.filter(t=>function(t){if(!e.isBidRequestValid(t))return(0,g.logWarn)(`Invalid bid sent to bidder ${e.code}: ${JSON.stringify(t)}`),!1;return!0}(E.bidRequest(t))));if(0===k.length)return void O();const D={};k.forEach(e=>{D[e.bidId]=e}),B(e,k,t,b,v,{onRequest:e=>l.Ic(c.qY.BEFORE_BIDDER_HTTP,t,e),onResponse:t=>{y(e.code),S.push(t)},onPaapi:e=>{const t=D[e.bidId];t?R(t,e):(0,g.logWarn)("Received fledge auction configuration for an unknown bidId",e)},onError:(n,i)=>{i.timedOut||y(e.code),r.Ay.callBidderError(e.code,i,t),l.Ic(c.qY.BIDDER_ERROR,{error:i,bidderRequest:t}),(0,g.logError)(`Server call for ${e.code} failed: ${n} ${i.status}. Continuing without bids.`,{bidRequests:k})},onBid:t=>{const r=D[t.requestId],i=t;if(r){if(i.adapterCode=r.bidder,function(e,t){const n=h.u.get(t,"allowAlternateBidderCodes")||!1;let r=h.u.get(t,"allowedAlternateBidderCodes");if(e&&t&&t!==e&&(r=(0,u.cy)(r)?r.map(e=>e.trim().toLowerCase()).filter(e=>!!e).filter(g.uniques):r,!n||(0,u.cy)(r)&&"*"!==r[0]&&!r.includes(e)))return!0;return!1}(t.bidderCode,r.bidder))return(0,g.logWarn)(`${t.bidderCode} is not a registered partner or known bidder of ${r.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`),void n.reject(r.adUnitCode,t,c.Tf.BIDDER_DISALLOWED);i.originalCpm=t.cpm,i.originalCurrency=t.currency,i.meta=t.meta||Object.assign({},t[r.bidder]),i.deferBilling=r.deferBilling,i.deferRendering=i.deferBilling&&(t.deferRendering??"function"!=typeof e.onBidBillable);const s=Object.assign((0,o.O)(r),i,(0,g.pick)(r,Object.keys(w)));C(r.adUnitCode,s)}else(0,g.logWarn)(`Bidder ${e.code} made bid for unknown request ID: ${t.requestId}. Ignoring.`),n.reject(null,t,c.Tf.INVALID_REQUEST_ID)},onCompletion:O})}});var t,n;function s(t,n,r,i){O(e,t,n,r,i)}}const S=["bids","paapi"],B=(0,f.A_)("async",function(e,t,n,r,i,o){let{onRequest:s,onResponse:a,onPaapi:d,onError:l,onBid:f,onCompletion:p}=o;const m=U(n);p=m.startTiming("total").stopBefore(p);const A=I(n);let w=m.measureTime("buildRequests",()=>e.buildRequests(t.map(A.bidRequest),A.bidderRequest(n)));if(Array.isArray(w)||(w=[w]),!w||0===w.length)return void p();const T=(0,g.delayExecution)(p,w.length);w.forEach(t=>{const n=m.fork();function o(e){null!=e&&(e.metrics=n.fork().renameWith()),f(e)}const p=i(function(r,i){w();try{r=JSON.parse(r)}catch(e){}r={body:r,headers:{get:i.getResponseHeader.bind(i)}},a(r);try{r=n.measureTime("interpretResponse",()=>e.interpretResponse(r,t))}catch(t){return(0,g.logError)(`Bidder ${e.code} failed to interpret the server\'s response. Continuing without bids`,null,t),void T()}let s,c;r&&!Object.keys(r).some(e=>!S.includes(e))?(s=r.bids,c=r.paapi):s=r,(0,u.cy)(c)&&c.forEach(d),s&&((0,u.cy)(s)?s.forEach(o):o(s)),T()}),A=i(function(e,t){w(),l(e,t),T()});s(t);const w=n.startTiming("net"),I="TRUE"===(0,g.getParameterByName)(c.M).toUpperCase()||(0,g.debugTurnedOn)();function C(n){const r=t.options;return Object.assign(n,r,{browsingTopics:!(r?.hasOwnProperty("browsingTopics")&&!r.browsingTopics)&&((h.u.get(e.code,"topicsHeader")??!0)&&(0,b.io)(E.DL,(0,y.s)(v.tW,e.code))),suppressTopicsEnrollmentWarning:r?.hasOwnProperty("suppressTopicsEnrollmentWarning")?r.suppressTopicsEnrollmentWarning:!I})}switch(t.method){case"GET":r(`${t.url}${function(e){if(e)return`?${"object"==typeof e?(0,g.parseQueryStringParameters)(e):e}`;return""}(t.data)}`,{success:p,error:A},void 0,C({method:"GET",withCredentials:!0}));break;case"POST":const n=t.options?.endpointCompression,i=e=>{let{url:t,payload:n}=e;r(t,{success:p,error:A},n,C({method:"POST",contentType:"text/plain",withCredentials:!0}))};n&&I&&(0,g.logWarn)(`Skipping GZIP compression for ${e.code} as debug mode is enabled`),n&&!I&&(0,g.isGzipCompressionSupported)()?(0,g.compressDataWithGZip)(t.data).then(e=>{const n=new URL(t.url,window.location.origin);n.searchParams.has("gzip")||n.searchParams.set("gzip","1"),i({url:n.href,payload:e})}):i({url:t.url,payload:"string"==typeof t.data?t.data:JSON.stringify(t.data)});break;default:(0,g.logWarn)(`Skipping invalid request from ${e.code}. Request type ${t.method} must be GET or POST`),T()}})},"processBidderRequests"),O=(0,f.A_)("async",function(e,t,n,o,a){const d=i.$W.getConfig("userSync.aliasSyncEnabled");if(e.getUserSyncs&&(d||!r.Ay.aliasRegistry[e.code])){let r=e.getUserSyncs({iframeEnabled:s.zt.canBidderRegisterSync("iframe",e.code),pixelEnabled:s.zt.canBidderRegisterSync("image",e.code)},t,n,o,a);r&&(Array.isArray(r)||(r=[r]),r.forEach(t=>{s.zt.registerSync(t.type,e.code,t.url)}),s.zt.bidderDone(e.code))}},"registerSyncs"),R=(0,f.A_)("sync",(e,t)=>{},"addPaapiConfig");function U(e){return(0,m.BO)(e.metrics).renameWith(t=>[`adapter.client.${t}`,`adapters.client.${e.bidderCode}.${t}`])}},4123(e,t,n){n.d(t,{n:()=>Z});var r=n(466),i=n(6665),o=n(1124),s=n(356),a=n(2201),d=n(1933);const c=new Map;function l(e){return e.vastXml?e.vastXml:(t=e.vastUrl,n=e.vastImpUrl,`<VAST version="3.0">\\n <Ad>\\n <Wrapper>\\n <AdSystem>prebid.org wrapper</AdSystem>\\n <VASTAdTagURI><![CDATA[${t}]]></VASTAdTagURI>\\n ${(n=n&&(Array.isArray(n)?n:[n]))?n.map(e=>`<Impression><![CDATA[${e}]]></Impression>`).join(""):""}\\n <Creatives></Creatives>\\n </Wrapper>\\n </Ad>\\n </VAST>`);var t,n}const u=(e,t,n)=>{e.videoCacheKey=n||(0,r.generateUUID)(),e.vastUrl||(e.vastUrl=t)},g={store:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.g4;const r={puts:e.map(e=>function(e){let{index:t=Z.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=l(e),r=t.getAuction(e),i={type:"xml",value:n,ttlseconds:Number(e.ttl)+15};return d.$W.getConfig("cache.vasttrack")&&(i.bidder=e.bidder,i.bidid=e.requestId,i.aid=e.auctionId),null!=r&&(i.timestamp=r.getAuctionStart()),"string"==typeof e.customCacheKey&&""!==e.customCacheKey&&(i.key=e.customCacheKey),i}(e))};n(d.$W.getConfig("cache.timeout"))(d.$W.getConfig("cache.url"),function(e){return{success:function(t){let n;try{n=JSON.parse(t).responses}catch(t){return void e(t,[])}n?e(null,n):e(new Error("The cache server didn\'t respond with a responses property."),[])},error:function(t,n){e(new Error(`Error storing video ad in the cache: ${t}: ${JSON.stringify(n)}`),[])}}}(t),JSON.stringify(r),{contentType:"text/plain",withCredentials:!0})}};function f(e){const t=e.map(e=>e.bidResponse);g.store(t,function(n,i){var o;n?(o=n,(0,r.logError)(`Failed to save to the video cache: ${o}. Video bids will be discarded:`,t)):e.length!==i.length?(0,r.logError)(`expected ${e.length} cache IDs, got ${i.length} instead`):i.forEach((t,n)=>{const{auctionInstance:i,bidResponse:o,afterBidAdded:s}=e[n];var a;""===t.uuid?(0,r.logWarn)("Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded."):(u(o,(a=t.uuid,`${d.$W.getConfig("cache.url")}?uuid=${a}`),t.uuid),L(i,o),s())})})}let p,h,m;d.$W.getConfig("cache",e=>{let{cache:t}=e;p="number"==typeof t.batchSize&&t.batchSize>0?t.batchSize:1,h="number"==typeof t.batchTimeout&&t.batchTimeout>0?t.batchTimeout:0,t.useLocal&&!m&&(m=Z.onExpiry(e=>{e.getBidsReceived().forEach(e=>{const t=c.get(e.videoCacheKey);t&&t.startsWith("blob")&&URL.revokeObjectURL(t),c.delete(e.videoCacheKey)})}))});const b=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:setTimeout,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f,n=[[]],r=!1;const i=e=>e();return function(o,s,a){const d=h>0?e:i;n[n.length-1].length>=p&&n.push([]),n[n.length-1].push({auctionInstance:o,bidResponse:s,afterBidAdded:a}),r||(r=!0,d(()=>{n.forEach(t),n=[[]],r=!1},h))}}();var y=n(7464),v=n(3391),E=n(2592),A=n(6220),w=n(9794),T=n(7156),I=n(8014),C=n(8668),S=n(1418),B=n(3064),O=n(7841);var R=n(1748),U=n(939),k=n(5482);const{syncUsers:D}=v.zt,_="completed";I.on(S.qY.BID_ADJUSTMENT,function(e){!function(e){const t=function(e,t,n){let{index:i=Z.index,bs:o=T.u}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};n=n||i.getBidRequest(t);const s=t?.adapterCode,a=t?.bidderCode||n?.bidder,d=o.get(t?.adapterCode,"adjustAlternateBids"),c=o.getOwn(a,"bidCpmAdjustment")||o.get(d?s:a,"bidCpmAdjustment");if(c&&"function"==typeof c)try{return c(e,Object.assign({},t),n)}catch(e){(0,r.logError)("Error during bid adjustment",e)}return e}(e.cpm,e);t>=0&&(e.cpm=t)}(e)});const $={},q={},x=[],W=(0,R.m)();const j=(0,E.A_)("sync",e=>{});function N(e){let{adUnits:t,adUnitCodes:n,callback:i,cbTimeout:a,labels:g,auctionId:f,ortb2Fragments:p,metrics:h}=e;h=(0,O.BO)(h);const m=t,b=g,v=n,E=f||(0,r.generateUUID)(),T=a,R=new Set,N=(0,B.v6)(),V=(0,B.v6)();let Q=[],J=i,K=[];const X=(0,U.H)({startTime:e=>e.responseTimestamp,ttl:e=>null==(0,k.S9)()?null:1e3*Math.max((0,k.S9)(),e.ttl)});let ee,te,ne,re,ie=[],oe=[],se=[];function ae(){return{auctionId:E,timestamp:ee,auctionEnd:te,auctionStatus:re,adUnits:m,adUnitCodes:v,labels:b,bidderRequests:K,noBids:ie,bidsReceived:X.toArray(),bidsRejected:Q,winningBids:oe,timeout:T,metrics:h,seatNonBids:se}}function de(e){if(e?I.Ic(S.qY.AUCTION_TIMEOUT,ae()):clearTimeout(ne),void 0===te){let n=[];e&&((0,r.logMessage)(`Auction ${E} timedOut`),n=K.filter(e=>!R.has(e.bidderRequestId)).flatMap(e=>e.bids),n.length&&I.Ic(S.qY.BID_TIMEOUT,n)),re=_,te=Date.now(),h.checkpoint("auctionEnd"),h.timeBetween("requestBids","auctionEnd","requestBids.total"),h.timeBetween("callBids","auctionEnd","requestBids.callBids"),N.resolve(),I.Ic(S.qY.AUCTION_END,ae()),G(m,function(){try{if(null!=J){const t=X.toArray().filter(e=>v.includes(e.adUnitCode)).reduce(Y,{});J.apply(W,[t,e,E]),J=null}}catch(e){(0,r.logError)("Error executing bidsBackHandler",null,e)}finally{n.length&&C.Ay.callTimedOutBidders(t,n,T);const e=d.$W.getConfig("userSync")??{};e.enableOverride||D(e.syncDelay)}})}}function ce(){d.$W.resetBidder(),(0,r.logInfo)(`Bids Received for Auction with id: ${E}`,X.toArray()),re=_,de(!1)}function le(e){R.add(e)}function ue(e){e.forEach(e=>{var t;t=e,K=K.concat(t)});const t={},n={bidRequests:e,run:()=>{j(this),ne=setTimeout(()=>de(!0),T),re="inProgress",I.Ic(S.qY.AUCTION_INIT,ae());const n=function(e,t){let{index:n=Z.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=0,a=!1;const g=new Set,f={};function p(){i--,a&&0===i&&e()}function h(e,t,n){return f[t.requestId]=!0,function(e,t){let{index:n=Z.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=n.getBidderRequest(e),o=n.getAdUnit(e),s=i&&i.start||e.requestTimestamp;Object.assign(e,{responseTimestamp:e.responseTimestamp||(0,r.timestamp)(),requestTimestamp:e.requestTimestamp||s,cpm:parseFloat(e.cpm)||0,bidder:e.bidder||e.bidderCode,adUnitCode:t}),null!=o?.ttlBuffer&&(e.ttlBuffer=o.ttlBuffer);e.timeToRespond=e.responseTimestamp-e.requestTimestamp}(t,e),i++,n(p)}function m(e,i){h(e,i,e=>{const a=function(e){let{index:t=Z.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};I.Ic(S.qY.BID_ADJUSTMENT,e);const n=t.getAdUnit(e);e.instl=1===n?.ortb2Imp?.instl;const r=t.getBidRequest(e)?.renderer||n.renderer,i=e.mediaType,s=t.getMediaTypes(e),a=s&&s[i];var c=a&&a.renderer,l=null;!c||!c.render||!0===c.backupOnly&&e.renderer?!r||!r.render||!0===r.backupOnly&&e.renderer||(l=r):l=c;l&&(e.renderer=y.A4.install({url:l.url,config:l.options,renderNow:null==l.url}),e.renderer.setRender(l.render));const u=H(e.mediaType,s,d.$W.getConfig("mediaTypePriceGranularity")),g=(0,o.j)(e.cpm,"object"==typeof u?u:d.$W.getConfig("customPriceBucket"),d.$W.getConfig("currency.granularityMultiplier"));return e.pbLg=g.low,e.pbMg=g.med,e.pbHg=g.high,e.pbAg=g.auto,e.pbDg=g.dense,e.pbCg=g.custom,e}(i);I.Ic(S.qY.BID_ACCEPTED,a),a.mediaType===w.G_||a.mediaType===w.FY?function(e,t,n){let{index:i=Z.index}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=!0;const s=i.getMediaTypes({requestId:t.originalRequestId||t.requestId,adUnitId:t.adUnitId})?.video,a=s&&s?.context,g=s&&s?.useCacheKey,{useLocal:f,url:p,ignoreBidderCacheKey:h}=d.$W.getConfig("cache")||{};f?(e=>{const t=l(e),n=URL.createObjectURL(new Blob([t],{type:"text/xml"}));u(e,n),c.set(e.videoCacheKey,n)})(t):p&&(g||a!==A.H6)&&(!t.videoCacheKey||h?(o=!1,z(e,t,n,s)):t.vastUrl||((0,r.logError)("videoCacheKey specified but not required vastUrl for video bid"),o=!1));o&&(L(e,t),n())}(t,a,e):((0,s.l6)(a)&&(0,s.gs)(a,n.getAdUnit(a)),L(t,a),e())})}function b(e,n,i){return h(e,n,e=>{n.rejectionReason=i,(0,r.logWarn)(`Bid from ${n.bidder||"unknown bidder"} was rejected: ${i}`,n),I.Ic(S.qY.BID_REJECTED,n),t.addBidRejected(n),e()})}function v(){const n=this;let o=t.getBidRequests();const s=d.$W.getConfig("auctionOptions");if(g.add(n),s&&!(0,r.isEmpty)(s)){const e=s.secondaryBidders;e&&!o.every(t=>e.includes(t.bidderCode))&&(o=o.filter(t=>!e.includes(t.bidderCode)))}a=o.every(e=>g.has(e)),n.bids.forEach(e=>{f[e.bidId]||(t.addNoBid(e),I.Ic(S.qY.NO_BID,e))}),a&&0===i&&e()}return{addBidResponse:function(){function e(e,t){P.call({dispatch:m},e,t,(()=>{let n=!1;return r=>{n||(b(e,t,r),n=!0)}})())}return e.reject=b,e}(),adapterDone:function(){M(B.U9.resolve()).finally(()=>v.call(this))}}}(ce,this);C.Ay.callBids(m,e,n.addBidResponse,n.adapterDone,{request(e,n){a($,n),a(t,e),q[e]||(q[e]={SRA:!0,origin:n}),t[e]>1&&(q[e].SRA=!1)},done(e){$[e]--,x[0]&&i(x[0])&&x.shift()}},T,le,p),V.resolve()}};function i(e){let t=!0;const n=d.$W.getConfig("maxRequestsPerOrigin")||4;return e.bidRequests.some(e=>{let r=1;const i=void 0!==e.src&&e.src===S.RW.SRC?"s2s":e.bidderCode;return q[i]&&(!1===q[i].SRA&&(r=Math.min(e.bids.length,n)),$[q[i].origin]+r>n&&(t=!1)),!t}),t&&e.run(),t}function a(e,t){void 0===e[t]?e[t]=1:e[t]++}i(n)||((0,r.logWarn)("queueing auction due to limited endpoint capacity"),x.push(n))}return(0,k.lc)(()=>X.refresh()),I.on(S.qY.SEAT_NON_BID,e=>{var t;e.auctionId===E&&(t=e.seatnonbid,se=se.concat(t))}),{addBidReceived:function(e){X.add(e)},addBidRejected:function(e){Q=Q.concat(e)},addNoBid:function(e){ie=ie.concat(e)},callBids:function(){re="started",ee=Date.now();const e=h.measureTime("requestBids.makeRequests",()=>C.Ay.makeBidRequests(m,ee,E,T,b,p,h));(0,r.logInfo)(`Bids Requested for Auction with id: ${E}`,e),h.checkpoint("callBids"),e.length<1?((0,r.logWarn)("No valid bid requests returned for auction"),ce()):F.call({dispatch:ue,context:this},e)},addWinningBid:function(e){oe=oe.concat(e),C.Ay.callBidWonBidder(e.adapterCode||e.bidder,e,t),e.deferBilling||C.Ay.triggerBilling(e)},setBidTargeting:function(e){C.Ay.callSetTargetingBidder(e.adapterCode||e.bidder,e)},getWinningBids:()=>oe,getAuctionStart:()=>ee,getAuctionEnd:()=>te,getTimeout:()=>T,getAuctionId:()=>E,getAuctionStatus:()=>re,getAdUnits:()=>m,getAdUnitCodes:()=>v,getBidRequests:()=>K,getBidsReceived:()=>X.toArray(),getNoBids:()=>ie,getNonBids:()=>se,getFPD:()=>p,getMetrics:()=>h,end:N.promise,requestsDone:V.promise,getProperties:ae}}const P=(0,E.u2)((0,E.A_)("async",function(e,t,n){!function(e){const t=d.$W.getConfig("maxBid");return!t||!e.cpm||t>=Number(e.cpm)}(t)?n(S.Tf.PRICE_TOO_HIGH):this.dispatch.call(null,e,t)},"addBidResponse")),M=(0,E.A_)("sync",e=>e,"responsesReady"),F=(0,E.A_)("sync",function(e){this.dispatch.call(this.context,e)},"addBidderRequests"),G=(0,E.A_)("async",function(e,t){t&&t()},"bidsBackCallback");function L(e,t){!function(e){let t;const n=!0===T.u.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0;e.bidderCode&&(n||e.dealId)&&(t=function(e,t){let{index:n=Z.index}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return{};const r=n.getBidRequest(t);var i={};const o=J(t.mediaType,e);K(i,o,t,r),e&&T.u.getOwn(e,S.iD.ADSERVER_TARGETING)&&(K(i,T.u.ownSettingsFor(e),t,r),t.sendStandardTargeting=T.u.get(e,"sendStandardTargeting"));return i}(e.bidderCode,e));e.adserverTargeting=Object.assign(e.adserverTargeting||{},t)}(t),(0,O.BO)(t.metrics).timeSince("addBidResponse","addBidResponse.total"),e.addBidReceived(t),I.Ic(S.qY.BID_RESPONSE,t)}const z=(0,E.A_)("async",function(e,t,n,r){b(e,t,n)},"callPrebidCache");function H(e,t,n){if(e&&n){if(e===w.G_){const e=t?.[w.G_]?.context??"instream";if(n[`${w.G_}-${e}`])return n[`${w.G_}-${e}`]}return n[e]}}const V=e=>t=>{const n=e||function(e){let{index:t=Z.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=H(e.mediaType,t.getMediaTypes(e),d.$W.getConfig("mediaTypePriceGranularity"));return"string"==typeof e.mediaType&&n?"string"==typeof n?n:"custom":d.$W.getConfig("priceGranularity")}(t);return n===S.UE.AUTO?t.pbAg:n===S.UE.DENSE?t.pbDg:n===S.UE.LOW?t.pbLg:n===S.UE.MEDIUM?t.pbMg:n===S.UE.HIGH?t.pbHg:n===S.UE.CUSTOM?t.pbCg:void 0};function Q(e,t){return{key:e,val:"function"==typeof t?function(e,n){return t(e,n)}:function(e){return e[t]}}}function J(e,t){const n=Object.assign({},T.u.settingsFor(null));if(n[S.iD.ADSERVER_TARGETING]||(n[S.iD.ADSERVER_TARGETING]=[Q(S.xS.BIDDER,"bidderCode"),Q(S.xS.AD_ID,"adId"),Q(S.xS.PRICE_BUCKET,V()),Q(S.xS.SIZE,"size"),Q(S.xS.DEAL,"dealId"),Q(S.xS.SOURCE,"source"),Q(S.xS.FORMAT,"mediaType"),Q(S.xS.ADOMAIN,e=>e.meta&&e.meta.advertiserDomains&&e.meta.advertiserDomains.length>0?[e.meta.advertiserDomains].flat()[0]:""),Q(S.xS.ACAT,e=>{const t=e?.meta?.primaryCatId;return Array.isArray(t)?t[0]||"":t||""}),Q(S.xS.DSP,e=>e.meta&&(e.meta.networkId||e.meta.networkName)?e?.meta?.networkName||e?.meta?.networkId:""),Q(S.xS.CRID,e=>e.creativeId?e.creativeId:"")]),"video"===e){const e=n[S.iD.ADSERVER_TARGETING].slice();if(n[S.iD.ADSERVER_TARGETING]=e,[S.xS.UUID,S.xS.CACHE_ID].forEach(t=>{void 0===e.find(e=>e.key===t)&&e.push(Q(t,"videoCacheKey"))}),d.$W.getConfig("cache.url")&&(!t||!1!==T.u.get(t,"sendStandardTargeting"))){const t=(0,r.parseUrl)(d.$W.getConfig("cache.url"));void 0===e.find(e=>e.key===S.xS.CACHE_HOST)&&e.push(Q(S.xS.CACHE_HOST,function(e){return e?.adserverTargeting?.[S.xS.CACHE_HOST]||t.hostname}))}}return n}function K(e,t,n,o){var s=t[S.iD.ADSERVER_TARGETING];return n.size=n.getSize(),(s||[]).forEach(function(s){var a=s.key,d=s.val;if(e[a]&&(0,r.logWarn)("The key: "+a+" is being overwritten"),(0,i.fp)(d))try{d=d(n,o)}catch(e){(0,r.logError)("bidmanager","ERROR",e)}(void 0===t.suppressEmptyKeys||!0!==t.suppressEmptyKeys)&&a!==S.xS.DEAL&&a!==S.xS.ACAT&&a!==S.xS.DSP&&a!==S.xS.CRID||!(0,r.isEmptyStr)(d)&&null!=d?e[a]=d:(0,r.logInfo)("suppressing empty key \'"+a+"\' from adserver targeting")}),e}function Y(e,t){return e[t.adUnitCode]||(e[t.adUnitCode]={bids:[]}),e[t.adUnitCode].bids.push(t),e}function X(e){Object.assign(this,{getAuction(t){let{auctionId:n}=t;if(null!=n)return e().find(e=>e.getAuctionId()===n)},getAdUnit(t){let{adUnitId:n}=t;if(null!=n)return e().flatMap(e=>e.getAdUnits()).find(e=>e.adUnitId===n)},getMediaTypes(e){let{adUnitId:t,requestId:n}=e;if(null!=n){const e=this.getBidRequest({requestId:n});if(null!=e&&(null==t||e.adUnitId===t))return e.mediaTypes}else if(null!=t){const e=this.getAdUnit({adUnitId:t});if(null!=e)return e.mediaTypes}},getBidderRequest(t){let{requestId:n,bidderRequestId:r}=t;if(null!=n||null!=r){let t=e().flatMap(e=>e.getBidRequests());return null!=r&&(t=t.filter(e=>e.bidderRequestId===r)),null==n?t[0]:t.find(e=>e.bids&&null!=e.bids.find(e=>e.bidId===n))}},getBidRequest(t){let{requestId:n}=t;if(null!=n)return e().flatMap(e=>e.getBidRequests()).flatMap(e=>e.bids).find(e=>e&&e.bidId===n)},getOrtb2(e){return this.getBidderRequest(e)?.ortb2||this.getAuction(e)?.getFPD()?.global?.ortb2}})}const Z=function(){const e=(0,U.H)({startTime:e=>e.end.then(()=>e.getAuctionEnd()),ttl:e=>null==(0,k.S9)()?null:e.end.then(()=>1e3*Math.max((0,k.S9)(),...e.getBidsReceived().map(e=>e.ttl)))});(0,k.lc)(()=>e.refresh());const t={onExpiry:e.onExpiry};function n(t){for(const n of e)if(n.getAuctionId()===t)return n}function i(){return e.toArray().flatMap(e=>e.getBidsReceived())}return t.addWinningBid=function(e){const t=(0,O.BO)(e.metrics);t.checkpoint("bidWon"),t.timeBetween("auctionEnd","bidWon","adserver.pending"),t.timeBetween("requestBids","bidWon","adserver.e2e");const i=n(e.auctionId);i?i.addWinningBid(e):(0,r.logWarn)("Auction not found when adding winning bid")},Object.entries({getAllWinningBids:{name:"getWinningBids"},getBidsRequested:{name:"getBidRequests"},getNoBids:{},getAdUnits:{},getBidsReceived:{pre:e=>e.getAuctionStatus()===_},getAdUnitCodes:{post:r.uniques}}).forEach(n=>{let[r,{name:i=r,pre:o,post:s}]=n;const a=null==o?e=>e[i]():e=>o(e)?e[i]():[],d=null==s?e=>e:e=>e.filter(s);t[r]=()=>d(e.toArray().flatMap(a))}),t.getAllBidsForAdUnitCode=function(e){return i().filter(t=>t&&t.adUnitCode===e)},t.createAuction=function(t){const n=N(t);return function(t){e.add(t)}(n),n},t.findBidByAdId=function(e){return i().find(t=>t.adId===e)},t.getStandardBidderAdServerTargeting=function(){return J()[S.iD.ADSERVER_TARGETING]},t.setStatusForBids=function(e,r){const i=t.findBidByAdId(e);if(i&&(i.status=r),i&&r===S.tl.BID_TARGETING_SET){const e=n(i.auctionId);e&&e.setBidTargeting(i)}},t.getLastAuctionId=function(){const t=e.toArray();return t.length&&t[t.length-1].getAuctionId()},t.clearAllAuctions=function(){e.clear()},t.index=new X(()=>e.toArray()),t}()},5049(e,t,n){n.d(t,{R:()=>c});var r=n(5808),i=n(7610),o=n(3202),s=n(466);const a=new WeakMap,d=["debugging","outstream","aaxBlockmeter","adagio","adloox","arcspan","airgrid","browsi","brandmetrics","clean.io","humansecurityMalvDefense","humansecurity","confiant","contxtful","hadron","mediafilter","medianet","azerionedge","a1Media","geoedge","qortex","dynamicAdBoost","51Degrees","symitridap","wurfl","nodalsAi","anonymised","optable","justtag","tncId","ftrackId","id5"];function c(e,t,n,c,l,u){if(!(0,o.io)(r.pY,(0,i.s)(t,n)))return;if(!n||!e)return void(0,s.logError)("cannot load external script without url and moduleCode");if(!d.includes(n))return void(0,s.logError)(`${n} not whitelisted for loading external JavaScript`);l||(l=document);const g=h(l,e);if(g)return c&&"function"==typeof c&&(g.loaded?c():g.callbacks.push(c)),g.tag;const f=a.get(l)||{},p={loaded:!1,tag:null,callbacks:[]};return f[e]=p,a.set(l,f),c&&"function"==typeof c&&p.callbacks.push(c),(0,s.logWarn)(`module ${n} is loading external JavaScript`),function(t,n,r,i){r||(r=document);var o=r.createElement("script");o.type="text/javascript",o.async=!0;const a=h(r,e);a&&(a.tag=o);o.readyState?o.onreadystatechange=function(){"loaded"!==o.readyState&&"complete"!==o.readyState||(o.onreadystatechange=null,n())}:o.onload=function(){n()};o.src=t,i&&(0,s.setScriptAttributes)(o,i);return(0,s.insertElement)(o,r),o}(e,function(){p.loaded=!0;try{for(let e=0;e<p.callbacks.length;e++)p.callbacks[e]()}catch(e){(0,s.logError)("Error executing callback","adloader.js:loadExternalScript",e)}},l,u);function h(e,t){const n=a.get(e);return n&&n[t]?n[t]:null}}},5144(e,t,n){n.d(t,{HH:()=>c,kj:()=>d,xh:()=>a});var r=n(3064),i=n(466),o=n(3293),s=n(2592);const a=3,d=(0,s.A_)("sync",function(e){return o.G}),c=function(){const e={};return function(t){const n=d(t);return e.hasOwnProperty(n)||(e[n]=new r.U9(e=>{const t=(0,i.createInvisibleIframe)();t.srcdoc=`<script>${n}<\\/script>`,t.onload=()=>e(t.contentWindow.render),document.body.appendChild(t)})),e[n]}}()},5291(e,t,n){n.d(t,{Dk:()=>s,Ez:()=>l,Ii:()=>o,OI:()=>u,TQ:()=>h,XG:()=>g,ZI:()=>m,Zw:()=>c,bt:()=>f,e3:()=>p,iK:()=>a,q7:()=>d});var r=n(736),i=n(2592);const o="component",s=o+"Type",a=o+"Name",d="adapterCode",c="storageType",l="storageKey",u="write",g="configName",f="syncType",p="syncUrl",h="_config";function m(e){return function(t,n,i){const c={[s]:t,[a]:n,[o]:`${t}.${n}`};return t===r.tW&&(c[d]=e(n)),b(Object.assign(c,i))}}const b=(0,i.A_)("sync",e=>e)},5482(e,t,n){n.d(t,{S9:()=>l,cT:()=>c,lc:()=>u});var r=n(1933),i=n(466);const o="minBidCacheTTL";let s=1,a=null;const d=[];function c(e){return e.ttl-(e.hasOwnProperty("ttlBuffer")?e.ttlBuffer:s)}function l(){return a}function u(e){d.push(e)}r.$W.getConfig("ttlBuffer",e=>{"number"==typeof e.ttlBuffer?s=e.ttlBuffer:(0,i.logError)("Invalid value for ttlBuffer",e.ttlBuffer)}),r.$W.getConfig(o,e=>{const t=a;a=e?.[o],a="number"==typeof a?a:null,t!==a&&d.forEach(e=>e(a))})},5808(e,t,n){n.d(t,{DL:()=>d,Ml:()=>i,Ue:()=>r,VJ:()=>l,hE:()=>c,hq:()=>a,mo:()=>s,pY:()=>u,uc:()=>o,yg:()=>g});const r="accessDevice",i="syncUser",o="fetchBids",s="reportAnalytics",a="transmitEids",d="transmitUfpd",c="transmitPreciseGeo",l="transmitTid",u="loadExternalScript",g="accessRequestCredentials"},6220(e,t,n){n.d(t,{H6:()=>c,V0:()=>g,Zy:()=>u,vk:()=>f});var r=n(466),i=n(6665),o=n(1933),s=n(2592),a=n(4123),d=n(765);const c="outstream",l=[["mimes",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)],["minduration",i.Fq],["maxduration",i.Fq],["startdelay",i.Fq],["maxseq",i.Fq],["poddur",i.Fq],["protocols",i.Uu],["w",i.Fq],["h",i.Fq],["podid",i.O8],["podseq",i.Fq],["rqddurs",i.Uu],["placement",i.Fq],["plcmt",i.Fq],["linearity",i.Fq],["skip",e=>[1,0].includes(e)],["skipmin",i.Fq],["skipafter",i.Fq],["sequence",i.Fq],["slotinpod",i.Fq],["mincpmpersec",i.Et],["battr",i.Uu],["maxextended",i.Fq],["minbitrate",i.Fq],["maxbitrate",i.Fq],["boxingallowed",i.Fq],["playbackmethod",i.Uu],["playbackend",i.Fq],["delivery",i.Uu],["pos",i.Fq],["api",i.Uu],["companiontype",i.Uu],["poddedupe",i.Uu]],u=new Map(l);function g(e){const t=e?.mediaTypes?.video;if(null!=t){null==t.plcmt&&(t.context===c||[2,3,4].includes(t.placement)?t.plcmt=4:t.playbackmethod?.some?.(e=>[2,6].includes(e))&&(t.plcmt=2));const n=(0,i.Uu)(t.playerSize,2)?t.playerSize:Array.isArray(t.playerSize)&&(0,i.Uu)(t.playerSize[0])?t.playerSize[0]:null,o=(0,i.Et)(t.w)&&(0,i.Et)(t.h)?[t.w,t.h]:null;let s=!1;null==n?null!=o&&(null!=t.playerSize?s=!0:t.playerSize=[o]):["w","h"].forEach((e,r)=>{null!=t[e]&&t[e]!==n[r]?s=!0:t[e]=n[r]}),s&&(0,r.logWarn)(`Ad unit "${e.code} has conflicting playerSize and w/h`,e)}}function f(e){let{index:t=a.n.index}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t.getMediaTypes(e)?.video,r=n&&n?.context,i=n&&n?.useCacheKey,o=t.getAdUnit(e);return p(e,o,n,r,i)}const p=(0,s.A_)("sync",function(e,t,n,i,s){if(n&&(s||i!==c)){const{url:t,useLocal:n}=o.$W.getConfig("cache")||{};return t||n||!e.vastXml||e.vastUrl?!(!e.vastUrl&&!e.vastXml):((0,r.logError)(`\\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\\n Try enabling either prebid cache with ${(0,d.k)()}.setConfig({ cache: {url: "..."} });\\n or local cache with ${(0,d.k)()}.setConfig({ cache: { useLocal: true }});\\n `),!1)}return!(i===c&&!s)||!!(e.renderer||t&&t.renderer||n.renderer)},"checkVideoBidSetup")},6665(e,t,n){n.d(t,{Et:()=>u,Fq:()=>p,Go:()=>i,KG:()=>a,Lm:()=>f,O8:()=>c,Qd:()=>g,SH:()=>o,Uu:()=>h,cy:()=>l,fp:()=>d});var r=n(1490);function i(e){return(0,r.Q)(e)||{}}function o(e,t){return t.filter(t=>e[t]).reduce((t,n)=>Object.assign(t,{[n]:e[n]}),{})}const s=Object.prototype.toString;function a(e,t){return s.call(e)==="[object "+t+"]"}function d(e){return a(e,"Function")}function c(e){return a(e,"String")}const l=Array.isArray.bind(Array);function u(e){return a(e,"Number")}function g(e){return a(e,"Object")}function f(e){return a(e,"Boolean")}const p=Number.isInteger.bind(Number);function h(e,t){return l(e)&&(!t||e.length===t)&&e.every(e=>p(e))}},7156(e,t,n){n.d(t,{u:()=>a});var r=n(466),i=n(8928),o=n(1748),s=n(1418);const a=new class{constructor(e,t){this.getSettings=e,this.defaultScope=t}get(e,t){let n=this.getOwn(e,t);return void 0===n&&(n=this.getOwn(null,t)),n}getOwn(e,t){return e=this.#a(e),(0,i.A)(this.getSettings(),`${e}.${t}`)}getScopes(){return Object.keys(this.getSettings()).filter(e=>e!==this.defaultScope)}settingsFor(e){return(0,r.mergeDeep)({},this.ownSettingsFor(null),this.ownSettingsFor(e))}ownSettingsFor(e){return e=this.#a(e),this.getSettings()[e]||{}}#a(e){return null==e?this.defaultScope:e}}(()=>(0,o.m)().bidderSettings||{},s.iD.BD_SETTING_STANDARD)},7433(e,t,n){var r=n(1748),i=n(466),o=n(6665),s=n(8928),a=n(3435),d=n(356),c=n(1418),l=n(1852),u=n(5144);const{REQUEST:g,RESPONSE:f,NATIVE:p,EVENT:h}=c.nl,m={[g]:function(e,t,n){(0,l.bw)({renderFn(t){e(Object.assign({message:f,renderer:(0,u.kj)(n),rendererVersion:u.xh},t))},resizeFn:y(t.adId,n),options:t.options,adId:t.adId,bidResponse:n})},[h]:function(e,t,n){if(null==n)return void(0,i.logError)(`Cannot find ad \'${t.adId}\' for x-origin event request`);if(n.status!==c.tl.RENDERED)return void(0,i.logWarn)(`Received x-origin event request without corresponding render request for ad \'${n.adId}\'`);return(0,l.Uc)(t,n)}};function b(){window.addEventListener("message",function(e){!function(e){var t=e.message?"message":"data",n={};try{n=JSON.parse(e[t])}catch(e){return}if(n&&n.adId&&n.message&&m.hasOwnProperty(n.message))(0,l.$A)(n.adId,n.message===c.nl.REQUEST).then(t=>{var r,o;m[n.message]((r=n.adId,o=function(e){return null==e.origin&&0===e.ports.length?function(){const e="Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870";throw(0,i.logError)(e),new Error(e)}:e.ports.length>0?function(t){e.ports[0].postMessage(JSON.stringify(t))}:function(t){e.source.postMessage(JSON.stringify(t),e.origin)}}(e),function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return o(Object.assign({},e,{adId:r}),...n)}),n,t)})}(e)},!1)}function y(e,t){return function(n,r){!function(e){let{instl:t,adId:n,adUnitCode:r,width:o,height:s}=e;if(t)return;function a(e){return e?e+"px":"100%"}function d(e){if(e){const t=e.style;t.width=a(o),t.height=a(s)}else(0,i.logError)(`Unable to locate matching page element for adUnitCode ${r}. Can\'t resize it to ad\'s dimensions. Please review setup.`)}const c=l(\'iframe:not([style*="display: none"])\');function l(e){const t=u(n,r),i=document.getElementById(t);return i&&i.querySelector(e)}function u(e,t){if((0,i.isGptPubadsDefined)()){const t=g(e);if(t)return t}if((0,i.isApnGetTagDefined)()){const e=f(t);if(e)return e}return t}function g(e){const t=window.googletag.pubads().getSlots().find(t=>t.getTargetingKeys().find(n=>t.getTargeting(n).includes(e)));return t?t.getSlotElementId():null}function f(e){const t=window.apntag.getTag(e);return t&&t.targetId}[c,c?.parentElement].forEach(d)}({...t,width:n,height:r,adId:e})}}Object.assign(m,{[p]:function(e,t,n){if(null==n)return void(0,i.logError)(`Cannot find ad for x-origin event request: \'${t.adId}\'`);switch(t.action){case"assetRequest":(0,l.Hh)(n,()=>e((0,d.IX)(t,n)));break;case"allAssetRequest":(0,l.Hh)(n,()=>e((0,d.yl)(t,n)));break;default:(0,l.vW)(t,n,{resizeFn:y(t.adId,n)}),(0,l.Pk)(n)}}});var v=n(3391),E=n(1933),A=n(4123),w=n(869),T=n(2592),I=n(3320),C=n(5049),S=n(3064),B=n(736),O=n(9794),R=n(7464),U=n(765);const k=`__${(0,U.k)()}_debugging__`;function D(){return(0,r.m)().installedModules.includes("debugging")}function _(e){return new S.U9(t=>{(0,C.R)(e,B.tp,"debugging",t)})}function $(){let{alreadyInstalled:e=D,script:t=_}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null;return function(){return null==n&&(n=new S.U9((n,o)=>{setTimeout(()=>{if(e())n();else{const e=`${(0,U.rT)()}debugging-standalone.js`;(0,i.logMessage)(`Debugging module not installed, loading it from "${e}"...`),(0,r.m)()._installDebugging=!0,t(e).then(()=>{(0,r.m)()._installDebugging({DEBUG_KEY:k,hook:T.A_,config:E.$W,createBid:I.O,logger:(0,i.prefixLog)("DEBUG:"),utils:i,BANNER:O.D4,NATIVE:O.s6,VIDEO:O.G_,Renderer:R.A4})}).then(n,o)}})})),n}}const q=function(){let{load:e=$(),hook:t=(0,T.Yn)("requestBids")}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null,r=!1;function i(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return(n||S.U9.resolve()).then(()=>e.apply(this,r))}function o(){t.getHooks({hook:i}).remove(),r=!1}return{enable:function(){r||(n=e(),t.before(i,99),r=!0)},disable:o,reset:function(){n=null,o()}}}();q.reset;E.$W.getConfig("debugging",function(e){let{debugging:t}=e;t?.enabled?q.enable():q.disable()});var x=n(1443),W=n(8668),j=n(8014),N=n(7841);function P(){const e=(0,r.m)().scheduler??window.scheduler;return e?.yield?e.yield():S.U9.resolve()}var M=n(867);const F=(0,x.CK)("fpdEnrichment"),G=(0,i.memoize)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.host;if(!F.cookiesAreEnabled())return e;const t=e.split(".");if(2===t.length)return e;let n,r,o=-2;const s=`_rdc${Date.now()}`,a="writeable";do{n=t.slice(o).join(".");const e=new Date((0,i.timestamp)()+1e4).toUTCString();F.setCookie(s,a,e,"Lax",n,void 0);F.getCookie(s,void 0)===a?(r=!1,F.setCookie(s,"","Thu, 01 Jan 1970 00:00:01 GMT",void 0,n,void 0)):(o+=-1,r=Math.abs(o)<=t.length)}while(r);return n}),L=["architecture","bitness","model","platformVersion","fullVersionList"],z=["brands","mobile","platform"],H=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator?.userAgentData;const t=e&&z.some(t=>void 0!==e[t])?Object.freeze(Q(1,e)):null;return function(){return t}}(),V=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator?.userAgentData;const t={},n=new WeakMap;return function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:L;if(!n.has(r)){const e=Array.from(r);e.sort(),n.set(r,e.join("|"))}const o=n.get(r);if(!t.hasOwnProperty(o))try{t[o]=e.getHighEntropyValues(r).then(e=>(0,i.isEmpty)(e)?null:Object.freeze(Q(2,e))).catch(()=>null)}catch(e){t[o]=S.U9.resolve(null)}return t[o]}}();function Q(e,t){function n(e,t){const n={brand:e};return(0,o.O8)(t)&&!(0,i.isEmptyStr)(t)&&(n.version=t.split(".")),n}const r={source:e};return t.platform&&(r.platform=n(t.platform,t.platformVersion)),(t.fullVersionList||t.brands)&&(r.browsers=(t.fullVersionList||t.brands).map(e=>{let{brand:t,version:r}=e;return n(t,r)})),void 0!==t.mobile&&(r.mobile=t.mobile?1:0),["model","bitness","architecture"].forEach(e=>{const n=t[e];(0,o.O8)(n)&&(r[e]=n)}),r}var J=n(1833),K=n(3202),Y=n(7610),X=n(5808),Z=n(183);const ee={getRefererInfo:M.EN,findRootDomain:G,getWindowTop:i.getWindowTop,getWindowSelf:i.getWindowSelf,getHighEntropySUA:V,getLowEntropySUA:H,getDocument:i.getDocument},te=(0,J.i8)("FPD"),ne=(0,T.A_)("sync",e=>{const t=[e,ie().catch(()=>null),S.U9.resolve("cookieDeprecationLabel"in navigator&&(0,K.io)(X.Ue,(0,Y.s)(B.tp,"cdep"))&&navigator.cookieDeprecationLabel.getValue()).catch(()=>null)];return S.U9.all(t).then(e=>{let[t,n,r]=e;const o=ee.getRefererInfo();if(Object.entries(se).forEach(e=>{let[n,r]=e;const s=r(t,o);s&&Object.keys(s).length>0&&(t[n]=(0,i.mergeDeep)({},s,t[n]))}),n&&(0,a.J)(t,"device.sua",Object.assign({},n,t.device.sua)),r){const e={cdep:r};(0,a.J)(t,"device.ext",Object.assign({},e,t.device.ext))}const d=ee.getDocument().documentElement.lang;if(d&&((0,a.J)(t,"site.ext.data.documentLang",d),!(0,s.A)(t,"site.content.language"))){const e=d.split("-")[0];(0,a.J)(t,"site.content.language",e)}t=te(t);for(const e of J.Dy)if((0,J.O$)(t,e)){t[e]=(0,i.mergeDeep)({},ae(t,o),t[e]);break}return t})});function re(e){try{return e(ee.getWindowTop())}catch(t){return e(ee.getWindowSelf())}}function ie(){const e=E.$W.getConfig("firstPartyData.uaHints");return Array.isArray(e)&&0!==e.length?ee.getHighEntropySUA(e):S.U9.resolve(ee.getLowEntropySUA())}function oe(e){return(0,o.SH)(e,Object.keys(e))}const se={site(e,t){if(!J.Dy.filter(e=>"site"!==e).some(J.O$.bind(null,e)))return oe({page:t.page,ref:t.ref})},device:()=>re(e=>{const t=(0,i.getWinDimensions)().screen.width,n=(0,i.getWinDimensions)().screen.height,{width:r,height:o}=(0,Z.M)(),s={w:t,h:n,dnt:(0,i.getDNT)()?1:0,ua:e.navigator.userAgent,language:e.navigator.language.split("-").shift(),ext:{vpw:r,vph:o}};return e.navigator?.webdriver&&(0,a.J)(s,"ext.webdriver",!0),s}),regs(){const e={};re(e=>e.navigator.globalPrivacyControl)&&(0,a.J)(e,"ext.gpc","1");const t=E.$W.getConfig("coppa");return"boolean"==typeof t&&(e.coppa=t?1:0),e}};function ae(e,t){const n=(0,M.gR)(t.page,{noLeadingWww:!0}),r=re(e=>e.document.querySelector("meta[name=\'keywords\']"))?.content?.replace?.(/\\s/g,"");return oe({domain:n,keywords:r,publisher:oe({domain:ee.findRootDomain(n)})})}var de=n(1385),ce=n(9236),le=n(6220);const ue=[["format",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"object"==typeof e)],["w",o.Fq],["h",o.Fq],["btype",o.Uu],["battr",o.Uu],["pos",o.Fq],["mimes",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)],["topframe",e=>[1,0].includes(e)],["expdir",o.Uu],["api",o.Uu],["id",o.O8],["vcm",e=>[1,0].includes(e)]],ge=new Map(ue);function fe(e,t){var n=this;return function(){for(var r=arguments.length,o=new Array(r),s=0;s<r;s++)o[s]=arguments[s];return document.prerendering&&e()?new Promise(e=>{document.addEventListener("prerenderingchange",()=>{(0,i.logInfo)("Auctions were suspended while page was prerendering"),e(t.apply(n,o))},{once:!0})}):Promise.resolve(t.apply(n,o))}}var pe=n(3556);const he=(0,T.A_)("sync",function(e){return[me,be].forEach(t=>function(e,t){t.global=e(t.global,"global FPD"),Object.entries(t.bidder).forEach(n=>{let[r,i]=n;t.bidder[r]=e(i,`bidder \'${r}\' FPD`)})}(t,e)),e});function me(e,t){if(!e)return e;const n=[],r=[...(e?.user?.eids??[]).map(e=>[0,e]),...(e?.user?.ext?.eids??[]).map(e=>[1,e])].filter(e=>{let[r,o]=e;return n.findIndex(e=>{let[t,n]=e;return r!==t&&(0,i.deepEqual)(n,o)})>-1?((0,i.logWarn)(`Found duplicate EID in user.eids and user.ext.eids (${t})`,o),!1):(n.push([r,o]),!0)});return r.length>0&&(0,a.J)(e,"user.ext.eids",r.map(e=>{let[t,n]=e;return n})),delete e?.user?.eids,e}function be(e,t){if(!e)return e;const n=e.source?.schain,r=e.source?.ext?.schain;return null==n||null==r||(0,i.deepEqual)(n,r)||(0,i.logWarn)(`Conflicting source.schain and source.ext.schain (${t}), preferring source.schain`,{"source.schain":n,"source.ext.schain":r}),null!=(n??r)&&(0,a.J)(e,"source.ext.schain",n??r),delete e.source?.schain,e}var ye=n(8417);const ve=(0,r.m)(),{triggerUserSyncs:Ee}=v.zt,{ADD_AD_UNITS:Ae,REQUEST_BIDS:we,SET_TARGETING:Te}=c.qY;function Ie(e,t){let n=[];return(0,o.cy)(e)&&(t?e.length===t:e.length>0)&&(e.every(e=>(0,o.Uu)(e,2))?n=e:(0,o.Uu)(e,2)&&n.push(e)),n}function Ce(e,t){const n=(0,s.A)(e,`ortb2Imp.${t}`),r=(0,s.A)(e,`mediaTypes.${t}`);if(!n&&!r)return;const o={[O.G_]:le.Zy,[O.D4]:ge}[t];o&&[...o].forEach(n=>{let[r,o]=n;const d=(0,s.A)(e,`mediaTypes.${t}.${r}`),c=(0,s.A)(e,`ortb2Imp.${t}.${r}`);null==d&&null==c||(null==d?(0,a.J)(e,`mediaTypes.${t}.${r}`,c):null==c?(0,a.J)(e,`ortb2Imp.${t}.${r}`,d):((0,i.logWarn)(`adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${r} and mediaTypes.${t}.${r}, the latter will be ignored`,e),(0,a.J)(e,`mediaTypes.${t}.${r}`,c)))})}function Se(e){const t=(0,o.Go)(e),n=t.mediaTypes.banner,r=null==n.sizes?null:Ie(n.sizes),s=e.ortb2Imp?.banner?.format??n?.format;let d;if(null!=s){(0,a.J)(t,"ortb2Imp.banner.format",s),n.format=s;try{d=s.filter(t=>{let{w:n,h:r,wratio:o,hratio:s}=t;return null!=(n??r)&&null!=(o??s)?((0,i.logWarn)("Ad unit banner.format specifies both w/h and wratio/hratio",e),!1):null!=n&&null!=r||null!=o&&null!=s}).map(e=>{let{w:t,h:n,wratio:r,hratio:i}=e;return[t??r,n??i]})}catch(t){(0,i.logError)(`Invalid format definition on ad unit ${e.code}`,s)}null==d||null==r||(0,i.deepEqual)(r,d)||(0,i.logWarn)(`Ad unit ${e.code} has conflicting sizes and format definitions`,e)}const c=d??r??[],l=e.ortb2Imp?.banner?.expdir??n.expdir;return null!=l&&(n.expdir=l,(0,a.J)(t,"ortb2Imp.banner.expdir",l)),c.length>0?(n.sizes=c,t.sizes=c):((0,i.logError)("Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], ...]. Removing invalid mediaTypes.banner object from request."),delete t.mediaTypes.banner),Re(t,"banner"),Ce(t,"banner"),t}function Be(e){const t=(0,o.Go)(e);return Re(t,"audio"),Ce(t,"audio"),t}function Oe(e){const t=(0,o.Go)(e),n=t.mediaTypes.video;if(n.playerSize){const e="number"==typeof n.playerSize[0]?2:1,r=Ie(n.playerSize,e);r.length>0?(2===e&&(0,i.logInfo)("Transforming video.playerSize from [640,480] to [[640,480]] so it\'s in the proper format."),n.playerSize=r,t.sizes=r):((0,i.logError)("Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request."),delete t.mediaTypes.video.playerSize)}return Re(t,"video"),Ce(t,"video"),t}function Re(e,t,n){const r=(e?.mediaTypes||{})[t],s={banner:ge,audio:ye.Ai,video:le.Zy}[t];(0,o.Qd)(r)?null!=r&&Object.entries(r).forEach(o=>{let[a,d]=o;if(!s.has(a))return;s.get(a)(d)||("function"==typeof n?n(a,d,e):(delete r[a],(0,i.logWarn)(`Invalid prop in adUnit "${e.code}": Invalid value for mediaTypes.${t}.${a} ORTB property. The property has been removed.`)))}):(0,i.logWarn)(`validateOrtb${t}Fields: ${t}Params must be an object.`)}function Ue(e){function t(t){return(0,i.logError)(`Error in adUnit "${e.code}": ${t}. Removing native request from ad unit`,e),delete r.mediaTypes.native,r}function n(e){for(const t of["types"])if(s.hasOwnProperty(t)){const n=e(t);if(n)return n}}const r=(0,o.Go)(e),s=r.mediaTypes.native;if(s.ortb){if(s.ortb.assets?.some(e=>!(0,o.Et)(e.id)||e.id<0||e.id%1!=0))return t("native asset ID must be a nonnegative integer");if(n(e=>t(`ORTB native requests cannot specify "${e}"`)))return r;const e=Object.keys(c.x5).filter(e=>c.x5[e].includes("hb_native_")),a=Object.keys(s).filter(t=>e.includes(t));a.length>0&&((0,i.logError)(`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${a} keys from request.`),a.forEach(e=>delete r.mediaTypes.native[e]))}else n(t=>(0,i.logWarn)(`mediaTypes.native.${t} is deprecated, consider using native ORTB instead`,e));return s.image&&s.image.sizes&&!Array.isArray(s.image.sizes)&&((0,i.logError)("Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request."),delete r.mediaTypes.native.image.sizes),s.image&&s.image.aspect_ratios&&!Array.isArray(s.image.aspect_ratios)&&((0,i.logError)("Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request."),delete r.mediaTypes.native.image.aspect_ratios),s.icon&&s.icon.sizes&&!Array.isArray(s.icon.sizes)&&((0,i.logError)("Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request."),delete r.mediaTypes.native.icon.sizes),r}function ke(e,t){const n=e?.mediaTypes?.[t]?.pos;if(!(0,o.Et)(n)||isNaN(n)||!isFinite(n)){const n=`Value of property \'pos\' on ad unit ${e.code} should be of type: Number`;(0,i.logWarn)(n),delete e.mediaTypes[t].pos}return e}function De(e){const t=e=>`adUnit.code \'${n.code}\' ${e}`,n=e,r=n.mediaTypes,s=n.bids;return null==s||(0,o.cy)(s)?null==s&&null==n.ortb2Imp?((0,i.logError)(t("has no \'adUnit.bids\' and no \'adUnit.ortb2Imp\'. Removing adUnit from auction")),null):r&&0!==Object.keys(r).length?(null==n.ortb2Imp||null!=s&&0!==s.length||(n.bids=[{bidder:null}],(0,i.logMessage)(t("defines \'adUnit.ortb2Imp\' with no \'adUnit.bids\'; it will be seen only by S2S adapters"))),n):((0,i.logError)(t("does not define a \'mediaTypes\' object. This is a required field for the auction, so this adUnit has been removed.")),null):((0,i.logError)(t("defines \'adUnit.bids\' that is not an array. Removing adUnit from auction")),null)}!function(){let e=null;try{e=window.sessionStorage}catch(e){}if(null!==e){const t=q;let n=null;try{n=e.getItem(k)}catch(e){}null!==n&&t.enable()}}(),ve.bidderSettings=ve.bidderSettings||{},ve.libLoaded=!0,ve.version="v10.9.0",(0,i.logInfo)("Prebid.js v10.9.0 loaded"),ve.adUnits=ve.adUnits||[];const _e={validateAdUnit:De,validateBannerMediaType:Se,validateSizes:Ie};Object.assign(_e,{validateNativeMediaType:Ue}),Object.assign(_e,{validateVideoMediaType:Oe}),Object.assign(_e,{validateAudioMediaType:Be});const $e=(0,T.A_)("sync",function(e){const t=[];return e.forEach(e=>{const n=De(e);if(null==n)return;const r=n.mediaTypes;let i,o,s,a;r.banner&&(i=Se(n),r.banner.hasOwnProperty("pos")&&(i=ke(i,"banner"))),r.video&&(o=Oe(i||n),r.video.hasOwnProperty("pos")&&(o=ke(o,"video"))),r.native&&(s=Ue(o||(i||n))),r.audio&&(a=Be(s||n));const d=Object.assign({},i,o,s,a);t.push(d)}),t},"checkAdUnitSetup");function qe(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];(0,r.m)()[e]=n?function(e,t){return function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(0,i.logInfo)(`Invoking ${(0,U.k)()}.${e}`,r),t.apply(this,r)}}(e,t):t}function xe(e){return We(e)[e]}function We(e){return w.iS.getAllTargeting(e)}function je(e){return(e=e.slice()).bids=e,e}function Ne(e){const t=A.n[e]().filter(e=>A.n.getAdUnitCodes().includes(e.adUnitCode)),n=A.n.getLastAuctionId();return t.map(e=>e.adUnitCode).filter(i.uniques).map(e=>t.filter(t=>t.auctionId===n&&t.adUnitCode===e)).filter(e=>e&&e[0]&&e[0].adUnitCode).map(e=>({[e[0].adUnitCode]:je(e)})).reduce((e,t)=>Object.assign(e,t),{})}qe("triggerUserSyncs",Ee),qe("getAdserverTargetingForAdUnitCodeStr",function(e){if(e){const t=xe(e);return(0,i.transformAdServerTargetingObj)(t)}(0,i.logMessage)("Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode")}),qe("getHighestUnusedBidResponseForAdUnitCode",function(e){if(e){const t=A.n.getAllBidsForAdUnitCode(e).filter(w.Yl);return t.length?t.reduce(ce.Vk):null}(0,i.logMessage)("Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode")}),qe("getAdserverTargetingForAdUnitCode",xe),qe("getAdserverTargeting",We),qe("getConsentMetadata",function(){return de.SL.getConsentMeta()}),qe("getNoBids",function(){return Ne("getNoBids")}),qe("getNoBidsForAdUnitCode",function(e){return je(A.n.getNoBids().filter(t=>t.adUnitCode===e))}),qe("getBidResponses",function(){return Ne("getBidsReceived")}),qe("getBidResponsesForAdUnitCode",function(e){return je(A.n.getBidsReceived().filter(t=>t.adUnitCode===e))}),qe("setTargetingForGPTAsync",function(e,t){(0,i.isGptPubadsDefined)()?w.iS.setTargetingForGPT(e,t):(0,i.logError)("window.googletag is not defined on the page")}),qe("setTargetingForAst",function(e){w.iS.isApntagDefined()?(w.iS.setTargetingForAst(e),j.Ic(Te,w.iS.getAllTargeting())):(0,i.logError)("window.apntag is not defined on the page")}),qe("renderAd",async function(e,t,n){await P(),(0,l.BS)(e,t,n)}),qe("removeAdUnit",function(e){if(!e)return void(ve.adUnits=[]);let t;t=(0,o.cy)(e)?e:[e],t.forEach(e=>{for(let t=ve.adUnits.length-1;t>=0;t--)ve.adUnits[t].code===e&&ve.adUnits.splice(t,1)})});const Pe=function(){const e=(0,T.A_)("async",function(e){let{bidsBackHandler:t,timeout:n,adUnits:r,adUnitCodes:s,labels:a,auctionId:d,ttlBuffer:c,ortb2:l,metrics:u,defer:g}=e??{};j.Ic(we);const f=n||E.$W.getConfig("bidderTimeout");null==s||Array.isArray(s)||(s=[s]),s&&s.length?r=r.filter(e=>s.includes(e.code)):s=r&&r.map(e=>e.code),s=s.filter(i.uniques);let p={global:(0,i.mergeDeep)({},E.$W.getAnyConfig("ortb2")||{},l||{}),bidder:Object.fromEntries(Object.entries(E.$W.getBidderConfig()).map(e=>{let[t,n]=e;return[t,(0,o.Go)(n.ortb2)]}).filter(e=>{let[t,n]=e;return null!=n}))};p=he(p),ne(S.U9.resolve(p.global)).then(e=>(p.global=e,Me({bidsBackHandler:t,timeout:f,adUnits:r,adUnitCodes:s,labels:a,auctionId:d,ttlBuffer:c,ortb2Fragments:p,metrics:u,defer:g})))},"requestBids");return(0,T.Y6)(e,fe(()=>!E.$W.getConfig("allowPrerendering"),function(){const t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.adUnits||ve.adUnits;return t.adUnits=Array.isArray(n)?n.slice():[n],t.metrics=(0,N.K7)(),t.metrics.checkpoint("requestBids"),t.defer=(0,S.v6)({promiseFactory:e=>new Promise(e)}),e.call(this,t),t.defer.promise}))}();qe("requestBids",Pe);const Me=(0,T.A_)("async",function(){let{bidsBackHandler:e,timeout:t,adUnits:n,ttlBuffer:r,adUnitCodes:o,labels:s,auctionId:a,ortb2Fragments:d,metrics:c,defer:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const u=(0,W.pX)(E.$W.getConfig("s2sConfig")||[]);!function(e){e.forEach(e=>(0,le.V0)(e)),e.forEach(e=>(0,ye.kl)(e))}(n);const g=(0,N.BO)(c).measureTime("requestBids.validate",()=>$e(n));function f(t,n,r){if("function"==typeof e)try{e(t,n,r)}catch(e){(0,i.logError)("Error executing bidsBackHandler",null,e)}l.resolve({bids:t,timedOut:n,auctionId:r})}const p={};if(g.forEach(e=>{const t=Object.keys(e.mediaTypes||{banner:"banner"}),n=e.bids.map(e=>e.bidder),o=W.Ay.bidderRegistry,s=n.filter(e=>!u.has(e));e.adUnitId=(0,i.generateUUID)();const a=e.ortb2Imp?.ext?.tid;a&&(p.hasOwnProperty(e.code)?(0,i.logWarn)(`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units \'${e.code}\'`):p[e.code]=a),null==r||e.hasOwnProperty("ttlBuffer")||(e.ttlBuffer=r),s.forEach(n=>{const r=o[n],s=r&&r.getSpec&&r.getSpec(),a=s&&s.supportedMediaTypes||["banner"];t.some(e=>a.includes(e))||((0,i.logWarn)((0,i.unsupportedBidderMessage)(e,n)),e.bids=e.bids.filter(e=>e.bidder!==n))})}),g&&0!==g.length){g.forEach(e=>{const t=e.ortb2Imp?.ext?.tid||p[e.code]||(0,i.generateUUID)();p.hasOwnProperty(e.code)||(p[e.code]=t),e.transactionId=t});const e=A.n.createAuction({adUnits:g,adUnitCodes:o,callback:f,cbTimeout:t,labels:s,auctionId:a,ortb2Fragments:d,metrics:c}),n=g.length;n>15&&(0,i.logInfo)(`Current auction ${e.getAuctionId()} contains ${n} adUnits.`,g),o.forEach(t=>w.iS.setLatestAuctionForAdUnit(t,e.getAuctionId())),e.callBids()}else(0,i.logMessage)("No adUnits configured. No bids requested."),f()},"startAuction");Pe.before(function(e,t){function n(e){let t;for(;t=e.shift();)t()}n(x.s0),n(Le),e.call(this,t)},49),qe("addAdUnits",function(e){ve.adUnits.push(...Array.isArray(e)?e:[e]),j.Ic(Ae)});const Fe={bidWon(e){if(A.n.getBidsRequested().map(e=>e.bids.map(e=>e.adUnitCode)).reduce(i.flatten).filter(i.uniques).includes(e))return!0;(0,i.logError)(\'The "\'+e+\'" placement is not defined.\')}};function Ge(e,t){return Fe.hasOwnProperty(e)&&Fe[e](t)}qe("onEvent",function(e,t,n){(0,o.fp)(t)?!n||Ge(e,n)?j.on(e,t,n):(0,i.logError)(\'The id provided is not valid for event "\'+e+\'" and no handler was set.\'):(0,i.logError)(\'The event handler provided is not a function and was not set on event "\'+e+\'".\')}),qe("offEvent",function(e,t,n){n&&!Ge(e,n)||j.AU(e,t,n)}),qe("getEvents",function(){return j.kQ()}),qe("registerBidAdapter",function(e,t,n){try{const r=n?(0,pe.xb)(n):e();W.Ay.registerBidAdapter(r,t)}catch(e){(0,i.logError)("Error registering bidder adapter : "+e.message)}}),qe("registerAnalyticsAdapter",function(e){try{W.Ay.registerAnalyticsAdapter(e)}catch(e){(0,i.logError)("Error registering analytics adapter : "+e.message)}});const Le=[],ze=(0,T.A_)("async",function(e){e&&!(0,i.isEmpty)(e)?W.Ay.enableAnalytics(e):(0,i.logError)(`${(0,U.k)()}.enableAnalytics should be called with option {}`)},"enableAnalyticsCb");function He(e){if("function"==typeof e)try{e.call()}catch(e){(0,i.logError)("Error processing command :",e.message,e.stack)}else(0,i.logError)(`Commands written into ${(0,U.k)()}.cmd.push must be wrapped in a function`)}async function Ve(e){for(const t of e){if(void 0===t.called)try{t.call(),t.called=!0}catch(e){(0,i.logError)("Error processing command :","prebid.js",e)}await P()}}qe("enableAnalytics",function(e){Le.push(ze.bind(this,e))}),qe("aliasBidder",function(e,t,n){e&&t?W.Ay.aliasBidAdapter(e,t,n):(0,i.logError)("bidderCode and alias must be passed as arguments",`${(0,U.k)()}.aliasBidder`)}),ve.aliasRegistry=W.Ay.aliasRegistry,E.$W.getConfig("aliasRegistry",e=>{"private"===e.aliasRegistry&&delete ve.aliasRegistry}),qe("getAllWinningBids",function(){return A.n.getAllWinningBids()}),qe("getAllPrebidWinningBids",function(){return(0,i.logWarn)("getAllPrebidWinningBids may be removed or renamed in a future version. This function returns bids that have won in prebid and have had targeting set but have not (yet?) won in the ad server. It excludes bids that have been rendered."),A.n.getBidsReceived().filter(e=>e.status===c.tl.BID_TARGETING_SET)}),qe("getHighestCpmBids",function(e){return w.iS.getWinningBids(e)}),qe("clearAllAuctions",function(){A.n.clearAllAuctions()}),qe("markWinningBidAsUsed",function(e){let t,{adId:n,adUnitCode:r,analytics:o=!1,events:s=!1}=e;r&&null==n?t=w.iS.getWinningBids(r):n?t=A.n.getBidsReceived().filter(e=>e.adId===n):(0,i.logWarn)("Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function."),t.length>0&&(o||s?(0,l.n6)(t[0]):A.n.addWinningBid(t[0]),(0,l.qn)(t[0]))}),qe("getConfig",E.$W.getAnyConfig),qe("readConfig",E.$W.readAnyConfig),qe("mergeConfig",E.$W.mergeConfig),qe("mergeBidderConfig",E.$W.mergeBidderConfig),qe("setConfig",E.$W.setConfig),qe("setBidderConfig",E.$W.setBidderConfig),ve.que.push(()=>b());qe("processQueue",fe(()=>ve.delayPrerendering,async function(){ve.que.push=ve.cmd.push=He,(0,l.XO)(),T.A_.ready(),await Ve(ve.que),await Ve(ve.cmd)}),!1),qe("triggerBilling",function(e){let{adId:t,adUnitCode:n}=e;A.n.getAllWinningBids().filter(e=>e.adId===t||null==t&&e.adUnitCode===n).forEach(e=>{W.Ay.triggerBilling(e),(0,l.vB)(e)})})},7464(e,t,n){n.d(t,{A4:()=>d,J7:()=>c,Pg:()=>l});var r=n(5049),i=n(466),o=n(1748),s=n(736);const a=(0,o.m)();function d(e){const{url:t,config:n,id:o,callback:d,loaded:c,adUnitCode:l,renderNow:u}=e;this.url=t,this.config=n,this.handlers={},this.id=o,this.renderNow=u,this.adUnitCode=l,this.loaded=c,this.cmd=[],this.push=e=>{"function"==typeof e?this.loaded?e.call():this.cmd.push(e):(0,i.logError)("Commands given to Renderer.push must be wrapped in a function")},this.callback=d||(()=>{this.loaded=!0,this.process()}),this.render=function(){const e=arguments,n=()=>{this._render?this._render.apply(this,e):(0,i.logWarn)("No render function was provided, please use .setRender on the renderer")};!function(e){const t=a.adUnits.find(t=>t.code===e);if(!t)return!1;const n=t?.renderer,r=!!(n&&n.url&&n.render),i=t?.mediaTypes?.video?.renderer,o=!!(i&&i.url&&i.render);return!!(r&&!0!==n.backupOnly||o&&!0!==i.backupOnly)}(l)?u?n():(this.cmd.unshift(n),(0,r.R)(t,s.tp,"outstream",this.callback,this.documentContext)):((0,i.logWarn)(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${l}`),n())}.bind(this)}function c(e){return!(!e||!e.url&&!e.renderNow)}function l(e,t,n){let r=null;e.config&&e.config.documentResolver&&(r=e.config.documentResolver(t,document,n)),r||(r=document),e.documentContext=r,e.render(t,e.documentContext)}d.install=function(e){let{url:t,config:n,id:r,callback:i,loaded:o,adUnitCode:s,renderNow:a}=e;return new d({url:t,config:n,id:r,callback:i,loaded:o,adUnitCode:s,renderNow:a})},d.prototype.getConfig=function(){return this.config},d.prototype.setRender=function(e){this._render=e},d.prototype.setEventHandlers=function(e){this.handlers=e},d.prototype.handleVideoEvent=function(e){let{id:t,eventName:n}=e;"function"==typeof this.handlers[n]&&this.handlers[n](),(0,i.logMessage)(`Prebid Renderer event for id ${t} type ${n}`)},d.prototype.process=function(){for(;this.cmd.length>0;)try{this.cmd.shift().call()}catch(e){(0,i.logError)(`Error processing Renderer command on ad unit \'${this.adUnitCode}\':`,e)}}},7610(e,t,n){n.d(t,{s:()=>i});var r=n(8668);const i=(0,n(5291).ZI)(e=>r.Ay.resolveAlias(e))},7841(e,t,n){n.d(t,{BO:()=>f,K7:()=>p});var r=n(1933);const i="performanceMetrics",o=window.performance&&window.performance.now?()=>window.performance.now():()=>Date.now(),s=new WeakMap;function a(e,t,n){return function(){t&&t();try{for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return e.apply(this,i)}finally{n&&n()}}}function d(){let{now:e=o,mkNode:t=l,mkTimer:n=c,mkRenamer:r=e=>e,nodes:i=s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(){return function o(s){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>({forEach(t){t(e)}});a=r(a);const d=(c="timestamps",function(e){return s.dfWalk({visit(t,n){const r=n[c];if(r.hasOwnProperty(e))return r[e]}})});var c;function l(e,t){const n=a(e);s.dfWalk({follow:(e,t)=>t.propagate&&(!e||!e.stopPropagation),visit(e,r){n.forEach(n=>{null==e?r.metrics[n]=t:(r.groups.hasOwnProperty(n)||(r.groups[n]=[]),r.groups[n].push(t))})}})}function u(t){return n(e,e=>l(t,e))}function g(){let e={};return s.dfWalk({visit(t,n){e=Object.assign({},!t||t.includeGroups?n.groups:null,n.metrics,e)}}),e}const f={startTiming:u,measureTime:function(e,t){return u(e).stopAfter(t)()},measureHookTime:function(e,t,n){const r=u(e);return n(function(e){const t=r.stopBefore(e);return t.bail=e.bail&&r.stopBefore(e.bail),t.stopTiming=r,t.untimed=e,t}(t))},checkpoint:function(t){s.timestamps[t]=e()},timeSince:function(t,n){const r=d(t),i=null!=r?e()-r:null;return null!=n&&l(n,i),i},timeBetween:function(e,t,n){const r=d(e),i=d(t),o=null!=r&&null!=i?i-r:null;return null!=n&&l(n,o),o},setMetric:l,getMetrics:g,fork:function(){let{propagate:e=!0,stopPropagation:n=!1,includeGroups:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o(t([[s,{propagate:e,stopPropagation:n,includeGroups:r}]]),a)},join:function(e){let{propagate:t=!0,stopPropagation:n=!1,includeGroups:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=i.get(e);null!=o&&o.addParent(s,{propagate:t,stopPropagation:n,includeGroups:r})},newMetrics:function(){return o(s.newSibling(),a)},renameWith:function(e){return o(s,e)},toJSON:()=>g()};return i.set(f,s),f}(t([]))}}function c(e,t){const n=e();let r=!1;function i(){r||(t(e()-n),r=!0)}return i.stopBefore=e=>a(e,i),i.stopAfter=e=>a(e,null,i),i}function l(e){return{metrics:{},timestamps:{},groups:{},addParent(t,n){e.push([t,n])},newSibling:()=>l(e.slice()),dfWalk(){let t,{visit:n,follow:r=()=>!0,visited:i=new Set,inEdge:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!i.has(this)){if(i.add(this),t=n(o,this),null!=t)return t;for(const[s,a]of e)if(r(o,a)&&(t=s.dfWalk({visit:n,follow:r,visited:i,inEdge:a}),null!=t))return t}}}}const u=(()=>{const e=function(){},t=()=>({}),n={forEach:e},r=()=>null;r.stopBefore=e=>e,r.stopAfter=e=>e;const i=Object.defineProperties({dfWalk:e,newSibling:()=>i,addParent:e},Object.fromEntries(["metrics","timestamps","groups"].map(e=>[e,{get:t}])));return d({now:()=>0,mkNode:()=>i,mkRenamer:()=>()=>n,mkTimer:()=>r,nodes:{get:e,set:e}})()})();let g=!0;function f(e){return g&&e||u}r.$W.getConfig(i,e=>{g=!!e[i]});const p=(()=>{const e=d();return function(){return g?e():u}})();function h(e,t){return function(n,r){var i=this;return function(o){for(var s=arguments.length,a=new Array(s>1?s-1:0),d=1;d<s;d++)a[d-1]=arguments[d];return f(t.apply(i,a)).measureHookTime(e+n,o,e=>r.call(i,e,...a))}}}h("requestBids.",e=>e.metrics),h("addBidResponse.",(e,t)=>t.metrics)},8014(e,t,n){n.d(t,{AU:()=>p,Ic:()=>b,kQ:()=>m,on:()=>f});var r=n(466),i=n(1418),o=n(939),s=n(1933);const a="eventHistoryTTL";let d=null;const c=(0,o.H)({monotonic:!0,ttl:()=>d});s.$W.getConfig(a,e=>{const t=d,n=e?.[a];d="number"==typeof n?1e3*n:null,t!==d&&c.refresh()});let l=Object.values(i.qY);const u=i.cA,g=function(){const e={};function t(e){return l.includes(e)}return{has:t,on:function(n,i,o){if(t(n)){const t=e[n]||{que:[]};o?(t[o]=t[o]||{que:[]},t[o].que.push(i)):t.que.push(i),e[n]=t}else r.logError("Wrong event name : "+n+" Valid event names :"+l)},emit:function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];!function(t,n){r.logMessage("Emitting event for: "+t);const i=n[0]||{},o=i[u[t]],s=e[t]||{que:[]};var a=Object.keys(s);const d=[];c.add({eventType:t,args:i,id:o,elapsedTime:r.getPerformanceNow()}),o&&a.includes(o)&&d.push(...s[o].que),d.push(...s.que),(d||[]).forEach(function(e){if(e)try{e(...n)}catch(e){r.logError("Error executing handler:","events.js",e,t)}})}(t,i)},off:function(t,n,i){const o=e[t];r.isEmpty(o)||r.isEmpty(o.que)&&r.isEmpty(o[i])||i&&(r.isEmpty(o[i])||r.isEmpty(o[i].que))||(i?(o[i].que||[]).forEach(function(e){const t=o[i].que;e===n&&t.splice(t.indexOf(e),1)}):(o.que||[]).forEach(function(e){const t=o.que;e===n&&t.splice(t.indexOf(e),1)}),e[t]=o)},get:function(){return e},addEvents:function(e){l=l.concat(e)},getEvents:function(){return c.toArray().map(e=>Object.assign({},e))}}}();r._setEventEmitter(g.emit.bind(g));const{on:f,off:p,get:h,getEvents:m,emit:b,addEvents:y,has:v}=g},8417(e,t,n){n.d(t,{Ai:()=>l,kl:()=>u});var r=n(466),i=n(6665),o=n(1933),s=n(2592),a=n(765);const d="outstream",c=[["mimes",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)],["minduration",i.Fq],["maxduration",i.Fq],["startdelay",i.Fq],["maxseq",i.Fq],["poddur",i.Fq],["protocols",i.Uu],["battr",i.Uu],["maxextended",i.Fq],["minbitrate",i.Fq],["maxbitrate",i.Fq],["delivery",i.Uu],["api",i.Uu],["companiontype",i.Uu],["feed",i.Fq],["stitched",i.Fq],["nvol",i.Fq]],l=new Map(c);function u(e){}(0,s.A_)("sync",function(e,t,n,i,s){if(n&&(s||i!==d)){const{url:t,useLocal:n}=o.$W.getConfig("cache")||{};return t||n||!e.vastXml||e.vastUrl?!(!e.vastUrl&&!e.vastXml):((0,r.logError)(`\\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\\n Try enabling either prebid cache with ${(0,a.k)()}.setConfig({ cache: {url: "..."} });\\n or local cache with ${(0,a.k)()}.setConfig({ cache: { useLocal: true }});\\n `),!1)}return!(i===d&&!s)||!!(e.renderer||t&&t.renderer||n.renderer)},"checkAudioBidSetup")},8668(e,t,n){n.d(t,{Ay:()=>ge,pX:()=>se});var r=n(6665),i=n(466),o=n(356),s=n(3556),a=n(2201),d=n(1933),c=n(2592);const l="requests",u="wins",g="auctions";let f={};function p(e,t){const n=f[e]=f[e]||{bidders:{}};return t?(n.bidders[t]=n.bidders[t]||{},n.bidders[t]):n}function h(e,t){return function(n,r){const i=p(n,t&&r);return i[e]=(i[e]??0)+1,i[e]}}function m(e,t){return function(n,r){return p(n,t&&r)[e]??0}}const b=h(l,!1),y=h(l,!0),v=h(u,!0),E=h(g,!1),A=m(l,!1),w=m(l,!0),T=m(u,!0),I=m(g,!1);var C=n(867),S=n(1385),B=n(8014),O=n(1418),R=n(7841),U=n(4123),k=n(736),D=n(3202),_=n(5808),$=n(5291),q=n(8928);const x=["data","ext.data","yob","gender","keywords","kwarray","id","buyeruid","customdata"].map(e=>`user.${e}`).concat("device.ext.cdep"),W=["user.eids","user.ext.eids"],j=["user.geo.lat","user.geo.lon","device.geo.lat","device.geo.lon"],N=["device.ip"],P=["device.ipv6"];function M(e){return Object.assign({get(){},run(e,t,n,r,i){const o=n&&n[r];if(function(e){return null!=e&&("object"!=typeof e||Object.keys(e).length>0)}(o)&&i()){const e=this.get(o);void 0===e?delete n[r]:n[r]=e}}},e)}function F(e){return e.forEach(e=>{e.paths=e.paths.map(e=>{const t=e.split("."),n=t.pop();return[t.length>0?t.join("."):null,n]})}),function(t,n){const r=[];for(var i=arguments.length,o=new Array(i>2?i-2:0),s=2;s<i;s++)o[s-2]=arguments[s];const a=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(t){return e.hasOwnProperty(t.name)||(e[t.name]=!!t.applies(...n)),e[t.name]}}(t,...o);return e.forEach(e=>{if(!1!==t[e.name])for(const[i,o]of e.paths){const s=null==i?n:(0,q.A)(n,i);if(r.push(e.run(n,i,s,o,a.bind(null,e))),!1===t[e.name])return}}),r.filter(e=>null!=e)}}function G(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:D.io;return function(n){return!t(e,n)}}function L(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D.io;return[{name:_.DL,paths:x,applies:G(_.DL,e)},{name:_.hq,paths:W,applies:G(_.hq,e)},{name:_.hE,paths:j,applies:G(_.hE,e),get:e=>Math.round(100*(e+Number.EPSILON))/100},{name:_.hE,paths:N,applies:G(_.hE,e),get:e=>function(e){if(!e)return null;const t=e.split(".").map(Number);if(4!=t.length)return null;const n=[];for(let e=0;e<4;e++){const t=Math.max(0,Math.min(8,24-8*e));n.push(255<<8-t&255)}return t.map((e,t)=>e&n[t]).join(".")}(e)},{name:_.hE,paths:P,applies:G(_.hE,e),get:e=>function(e){if(!e)return null;let t=e.split(":").map(e=>parseInt(e,16));for(t=t.map(e=>isNaN(e)?0:e);t.length<8;)t.push(0);if(8!=t.length)return null;const n=[];for(let e=0;e<8;e++){const t=Math.max(0,Math.min(16,64-16*e));n.push(65535<<16-t&65535)}return t.map((e,t)=>e&n[t]).map(e=>e.toString(16)).join(":")}(e)},{name:_.VJ,paths:["source.tid"],applies:G(_.VJ,e)}].map(M)}const z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D.io;const t=F(L(e)),n=F(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D.io;return[{name:_.hq,paths:["userId","userIdAsEids"],applies:G(_.hq,e)},{name:_.VJ,paths:["ortb2Imp.ext.tid"],applies:G(_.VJ,e)}].map(M)}(e));return function(e){const r={};return{ortb2:n=>(t(r,n,e),n),bidRequest:t=>(n(r,t,e),t)}}}();(0,D.qB)(_.VJ,"enableTIDs config",()=>{if(!d.$W.getConfig("enableTIDs"))return{allow:!1,reason:"TIDs are disabled"}});var H=n(2122);const V="pbsBidAdapter",Q={CLIENT:"client",SERVER:"server"},J={isAllowed:D.io,redact:z},K={},Y={},X={};let Z=[];d.$W.getConfig("s2sConfig",e=>{e&&e.s2sConfig&&(Z=(0,r.cy)(e.s2sConfig)?e.s2sConfig:[e.s2sConfig])});const ee=(0,$.ZI)(e=>de.resolveAlias(e));function te(e){return e.configName??e.name}const ne=["nativeParams","nativeOrtbRequest","renderer"];function re(e){let{bidderCode:t,auctionId:n,bidderRequestId:o,adUnits:s,src:a,metrics:d,tids:c}=e;return s.reduce((e,s)=>{const l=s.bids.filter(e=>e.bidder===t);return null==t&&0===l.length&&null!=s.s2sBid&&l.push({bidder:null}),e.push(l.reduce((e,l)=>{c.hasOwnProperty(s.transactionId)||(c[s.transactionId]=(0,i.generateUUID)());const u=null==(l=Object.assign({},l,{ortb2Imp:(0,i.mergeDeep)({},s.ortb2Imp,l.ortb2Imp,{ext:{tid:c[s.transactionId]}})},(0,r.SH)(s,ne))).mediaTypes?s.mediaTypes:l.mediaTypes;return(0,i.isValidMediaTypes)(u)?l=Object.assign({},l,{mediaTypes:u}):(0,i.logError)(`mediaTypes is not correctly configured for adunit ${s.code}`),"client"===a&&y(s.code,t),e.push(Object.assign({},l,{adUnitCode:s.code,transactionId:s.transactionId,adUnitId:s.adUnitId,sizes:u?.banner?.sizes||u?.video?.playerSize||[],bidId:l.bid_id||(0,i.generateUUID)(),bidderRequestId:o,auctionId:n,src:a,metrics:d,auctionsCount:I(s.code),bidRequestsCount:A(s.code),bidderRequestsCount:w(s.code,l.bidder),bidderWinsCount:T(s.code,l.bidder),deferBilling:!!s.deferBilling})),e},[])),e},[]).reduce(i.flatten,[]).filter(e=>""!==e)}const ie=(0,c.A_)("sync",function(e,t){let{getS2SBidders:n=se}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null==t)return e;{const r=n(t);return e.filter(e=>{if(!r.has(e.bidder))return!1;if(null==e.s2sConfigName)return!0;const n=te(t);return(Array.isArray(e.s2sConfigName)?e.s2sConfigName:[e.s2sConfigName]).includes(n)})}},"filterBidsForAdUnit");const oe=(0,c.A_)("sync",(e,t)=>e,"setupAdUnitMediaTypes");function se(e){(0,r.cy)(e)||(e=[e]);const t=new Set([null]);return e.filter(e=>e&&e.enabled).flatMap(e=>e.bidders).forEach(e=>t.add(e)),t}const ae=(0,c.A_)("sync",function(e,t){let{getS2SBidders:n=se}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=n(t);return(0,i.getBidderCodes)(e).reduce((e,t)=>(e[r.has(t)?Q.SERVER:Q.CLIENT].push(t),e),{[Q.CLIENT]:[],[Q.SERVER]:[]})},"partitionBidders"),de={bidderRegistry:K,analyticsRegistry:X,aliasRegistry:Y,makeBidRequests:(0,c.A_)("sync",function(e,t,n,s,a){let c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},l=arguments.length>6?arguments[6]:void 0;l=(0,R.BO)(l),B.Ic(O.qY.BEFORE_REQUEST_BIDS,e),(0,o.nk)(e),e.map(e=>e.code).filter(i.uniques).forEach(E),e.forEach(e=>{(0,r.Qd)(e.mediaTypes)||(e.mediaTypes={}),e.bids=e.bids.filter(e=>!e.bidder||J.isAllowed(_.uc,ee(k.tW,e.bidder))),b(e.code)}),e=oe(e,a);let{[Q.CLIENT]:u,[Q.SERVER]:g}=ae(e,Z);d.$W.getConfig("bidderSequence")===d.Ov&&(u=(0,i.shuffle)(u));const f=(0,C.EN)(),p=[],h=c.global||{},m=c.bidder||{},y={},v={};function A(e,t,n){const r=e.hasOwnProperty(t)?e[t]:n();return null!=t&&(e[t]=r),r}function w(e,t){const n=J.redact(null!=t?t:ee(k.tW,e.bidderCode)),r=A(y,e.bidderCode,i.generateUUID),o=Object.freeze(n.ortb2((0,i.mergeDeep)({},h,m[e.bidderCode],{source:{tid:r}})));return e.ortb2=o,e.bids=e.bids.map(e=>(e.ortb2=o,n.bidRequest(e))),e}Z.forEach(o=>{const s=function(e){return ee(k.tp,V,{[$.XG]:te(e)})}(o);if(o&&o.enabled&&J.isAllowed(_.uc,s)){const{adUnits:a,hasModuleBids:d}=function(e,t){let n=(0,r.Go)(e),o=!1;return n.forEach(e=>{const n=e.bids.filter(e=>e.module===V&&e.params?.configName===te(t));1===n.length?(e.s2sBid=n[0],o=!0,e.ortb2Imp=(0,i.mergeDeep)({},e.s2sBid.ortb2Imp,e.ortb2Imp)):n.length>1&&(0,i.logWarn)(\'Multiple "module" bids for the same s2s configuration; all will be ignored\',n),e.bids=ie(e.bids,t).map(e=>(e.bid_id=(0,i.getUniqueIdentifierStr)(),e))}),n=n.filter(e=>!(t.filterBidderlessCalls&&1===e.bids.length&&null==e.bids[0].bidder||0===e.bids.length&&null==e.s2sBid)),{adUnits:n,hasModuleBids:o}}(e,o),c=(0,i.generateUUID)();(0===g.length&&d?[null]:g).forEach(e=>{const d=A(v,e,()=>({})),u=(0,i.generateUUID)(),g=l.fork(),h=w({bidderCode:e,auctionId:n,bidderRequestId:u,uniquePbsTid:c,bids:re({bidderCode:e,auctionId:n,bidderRequestId:u,adUnits:(0,r.Go)(a),src:O.RW.SRC,metrics:g,tids:d}),auctionStart:t,timeout:o.timeout,src:O.RW.SRC,refererInfo:f,metrics:g},s);0!==h.bids.length&&p.push(h)}),a.forEach(e=>{const t=e.bids.filter(e=>p.find(t=>t.bids.find(t=>t.bidId===e.bid_id)));e.bids=t}),p.forEach(e=>{void 0===e.adUnitsS2SCopy&&(e.adUnitsS2SCopy=a.filter(e=>e.bids.length>0||null!=e.s2sBid))})}});const T=function(e){let t=(0,r.Go)(e);return t.forEach(e=>{e.bids=ie(e.bids,null)}),t=t.filter(e=>0!==e.bids.length),t}(e);return u.forEach(e=>{const o=A(v,e,()=>({})),a=(0,i.generateUUID)(),d=l.fork(),c=w({bidderCode:e,auctionId:n,bidderRequestId:a,bids:re({bidderCode:e,auctionId:n,bidderRequestId:a,adUnits:(0,r.Go)(T),src:"client",metrics:d,tids:o}),auctionStart:t,timeout:s,refererInfo:f,metrics:d}),u=K[e];u||(0,i.logError)(`Trying to make a request for bidder that does not exist: ${e}`),u&&c.bids&&0!==c.bids.length&&p.push(c)}),p.forEach(e=>{S.mW.getConsentData()&&(e.gdprConsent=S.mW.getConsentData()),S.t6.getConsentData()&&(e.uspConsent=S.t6.getConsentData()),S.ad.getConsentData()&&(e.gppConsent=S.ad.getConsentData())}),p},"makeBidRequests"),callBids(e,t,n,r,o,s,c){let l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{};if(!t.length)return void(0,i.logWarn)("callBids executed with no bidRequests. Were they filtered by labels or sizing?");const[u,g]=t.reduce((e,t)=>(e[Number(void 0!==t.src&&t.src===O.RW.SRC)].push(t),e),[[],[]]);var f=[];g.forEach(e=>{for(var t=-1,n=0;n<f.length;++n)if(e.uniquePbsTid===f[n].uniquePbsTid){t=n;break}t<=-1&&f.push(e)});let p=0;Z.forEach(e=>{if(e&&f[p]&&se(e).has(f[p].bidderCode)){const t=(0,a.g4)(s,o?{request:o.request.bind(null,"s2s"),done:o.done}:void 0),d=e.bidders,u=K[e.adapter],h=f[p].uniquePbsTid,m=f[p].adUnitsS2SCopy,b=g.filter(e=>e.uniquePbsTid===h);if(u){const o={ad_units:m,s2sConfig:e,ortb2Fragments:l,requestBidsTimeout:s};if(o.ad_units.length){const e=b.map(e=>(e.start=(0,i.timestamp)(),function(t){t||c(e.bidderRequestId);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];r.apply(e,[t,...i])})),s=(0,i.getBidderCodes)(o.ad_units).filter(e=>d.includes(e));(0,i.logMessage)(`CALLING S2S HEADER BIDDERS ==== ${s.length>0?s.join(", "):\'No bidder specified, using "ortb2Imp" definition(s) only\'}`),b.forEach(e=>{B.Ic(O.qY.BID_REQUESTED,{...e,tid:e.auctionId})}),u.callBids(o,g,n,t=>e.forEach(e=>e(t)),t)}}else(0,i.logError)("missing "+e.adapter);p++}}),u.forEach(e=>{e.start=(0,i.timestamp)();const t=K[e.bidderCode];d.$W.runWithBidder(e.bidderCode,()=>{(0,i.logMessage)("CALLING BIDDER"),B.Ic(O.qY.BID_REQUESTED,e)});const l=(0,a.g4)(s,o?{request:o.request.bind(null,e.bidderCode),done:o.done}:void 0),u=r.bind(e);try{d.$W.runWithBidder(e.bidderCode,t.callBids.bind(t,e,n,u,l,()=>c(e.bidderRequestId),d.$W.callbackWithBidder(e.bidderCode)))}catch(t){(0,i.logError)(`${e.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`,{e:t,bidRequest:e}),u()}})},videoAdapters:[],registerBidAdapter(e,t){let{supportedMediaTypes:n=[]}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e&&t?"function"==typeof e.callBids?(K[t]=e,S.o2.register(k.tW,t,e.getSpec?.().gvlid),n.includes("video")&&de.videoAdapters.push(t),n.includes("native")&&o.mT.push(t)):(0,i.logError)("Bidder adaptor error for bidder code: "+t+"bidder must implement a callBids() function"):(0,i.logError)("bidAdapter or bidderCode not specified")},aliasBidAdapter(e,t,n){if(void 0===K[t]){const r=K[e];if(void 0===r){const n=[];Z.forEach(r=>{if(r.bidders&&r.bidders.length){const i=r&&r.bidders;r&&i.includes(t)?Y[t]=e:n.push(e)}}),n.forEach(e=>{(0,i.logError)(\'bidderCode "\'+e+\'" is not an existing bidder.\',"adapterManager.aliasBidAdapter")})}else try{let a;const d=function(e){const t=[];de.videoAdapters.includes(e)&&t.push("video");o.mT.includes(e)&&t.push("native");return t}(e);if(r.constructor.prototype!=Object.prototype)a=new r.constructor,a.setBidderCode(t);else{const{useBaseGvlid:o=!1}=n||{},d=r.getSpec(),c=o?d.gvlid:n?.gvlid;null==c&&null!=d.gvlid&&(0,i.logWarn)(`Alias \'${t}\' will NOT re-use the GVL ID of the original adapter (\'${d.code}\', gvlid: ${d.gvlid}). Functionality that requires TCF consent may not work as expected.`);const l=n&&n.skipPbsAliasing;a=(0,s.xb)(Object.assign({},d,{code:t,gvlid:c,skipPbsAliasing:l})),Y[t]=e}de.registerBidAdapter(a,t,{supportedMediaTypes:d})}catch(t){(0,i.logError)(e+" bidder does not currently support aliasing.","adapterManager.aliasBidAdapter")}}else(0,i.logMessage)(\'alias name "\'+t+\'" has been already specified.\')},resolveAlias(e){let t,n=e;for(;Y[n]&&(!t||!t.has(n));)n=Y[n],(t=t||new Set).add(n);return n},registerAnalyticsAdapter(e){let{adapter:t,code:n,gvlid:r}=e;t&&n?"function"==typeof t.enableAnalytics?(t.code=n,X[n]={adapter:t,gvlid:r},S.o2.register(k.Tn,n,r)):(0,i.logError)(`Prebid Error: Analytics adaptor error for analytics "${n}"\\n analytics adapter must implement an enableAnalytics() function`):(0,i.logError)("Prebid Error: analyticsAdapter or analyticsCode not specified")},enableAnalytics(e){(0,r.cy)(e)||(e=[e]),e.forEach(e=>{const t=X[e.provider];t&&t.adapter?J.isAllowed(_.mo,ee(k.Tn,e.provider,{[$.TQ]:e}))&&t.adapter.enableAnalytics(e):(0,i.logError)(`Prebid Error: no analytics adapter found in registry for \'${e.provider}\'.`)})},getBidAdapter:e=>K[e],getAnalyticsAdapter:e=>X[e],callTimedOutBidders(e,t,n){t=t.map(t=>(t.params=(0,i.getUserConfiguredParams)(e,t.adUnitCode,t.bidder),t.timeout=n,t)),t=(0,i.groupBy)(t,"bidder"),Object.keys(t).forEach(e=>{ue(e,"onTimeout",t[e])})},callBidWonBidder(e,t,n){t.params=(0,i.getUserConfiguredParams)(n,t.adUnitCode,t.bidder),v(t.adUnitCode,t.bidder),ue(e,"onBidWon",t)},triggerBilling:(()=>{const e=new WeakSet;return t=>{e.has(t)||(e.add(t),((0,H.$T)(t.eventtrackers)[H.OA]?.[H.Ni]||[]).forEach(e=>i.internal.triggerPixel(e)),ue(t.bidder,"onBidBillable",t))}})(),callSetTargetingBidder(e,t){ue(e,"onSetTargeting",t)},callBidViewableBidder(e,t){ue(e,"onBidViewable",t)},callBidderError(e,t,n){ue(e,"onBidderError",{error:t,bidderRequest:n})},callAdRenderSucceededBidder(e,t){ue(e,"onAdRenderSucceeded",t)},callDataDeletionRequest:(0,c.A_)("sync",function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const r="onDataDeletionRequest";Object.keys(K).filter(e=>!Y.hasOwnProperty(e)).forEach(e=>{const n=ce(e,r);if(null!=n){const i=U.n.getBidsRequested().filter(t=>function(e){const t=new Set;for(;Y.hasOwnProperty(e)&&!t.has(e);)t.add(e),e=Y[e];return e}(t.bidderCode)===e);le(e,r,...n,i,...t)}}),Object.entries(X).forEach(e=>{let[n,o]=e;const s=o?.adapter?.[r];if("function"==typeof s)try{s.apply(o.adapter,t)}catch(e){(0,i.logError)(`error calling ${r} of ${n}`,e)}})})};function ce(e,t){const n=K[e],r=n?.getSpec&&n.getSpec();if(r&&r[t]&&"function"==typeof r[t])return[r,r[t]]}function le(e,t,n,r){try{(0,i.logInfo)(`Invoking ${e}.${t}`);for(var o=arguments.length,s=new Array(o>4?o-4:0),a=4;a<o;a++)s[a-4]=arguments[a];d.$W.runWithBidder(e,r.bind(n,...s))}catch(n){(0,i.logWarn)(`Error calling ${t} of ${e}`)}}function ue(e,t,n){if(n?.source!==O.RW.SRC){const r=ce(e,t);null!=r&&le(e,t,...r,n)}}const ge=de},9236(e,t,n){function r(e,t){return e===t?0:e<t?-1:1}function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e=>e;return(t,n)=>r(e(t),e(n))}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;return(t,n)=>-e(t,n)||0}function s(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,n){for(const r of t){const t=r(e,n);if(0!==t)return t}return 0}}function a(){return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;return(t,n)=>e(n,t)<0?n:t}(o(arguments.length>0&&void 0!==arguments[0]?arguments[0]:r))}n.d(t,{Bq:()=>u,Vk:()=>l});const d=i(e=>e.cpm),c=i(e=>e.responseTimestamp),l=a(s(d,o(i(e=>e.timeToRespond)))),u=a(s(d,o(c)));a(s(d,c))},9794(e,t,n){n.d(t,{D4:()=>o,FY:()=>a,G_:()=>i,LM:()=>s,s6:()=>r});const r="native",i="video",o="banner",s="adpod",a="audio"}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[769],{183(t,n,e){e.d(n,{M:()=>c});var i=e(466);function c(){const t=(0,i.getWinDimensions)();try{const n=t.innerHeight||t.document.documentElement.clientHeight||t.document.body.clientHeight||0;return{width:t.innerWidth||t.document.documentElement.clientWidth||t.document.body.clientWidth||0,height:n}}catch(t){return{}}}}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[85],{3293(e,t,n){n.d(t,{G:()=>r});const r=\'(()=>{"use strict";window.render=function(e,t,n){let{ad:r,adUrl:i,width:o,height:d,instl:h}=e,{mkFrame:l}=t;if(!r&&!i){const e=new Error("Missing ad markup or URL");throw e.reason="noAd",e}{if(null==d){const e=n.document?.body;[e,e?.parentElement].filter(e=>null!=e?.style).forEach(e=>{e.style.height="100%"})}const e=n.document,t={width:o??"100%",height:d??"100%"};if(i&&!r?t.src=i:t.srcdoc=r,e.body.appendChild(l(e,t)),h&&n.frameElement){const e=n.frameElement.style;e.width=o?`${o}px`:"100vw",e.height=d?`${d}px`:"100vh"}}}})();\'}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[117],{611(e,t,r){r.d(t,{A:()=>f});const n=new WeakMap;var i=r(466),o=r(9794);var s=r(6220);const a={1:o.D4,2:o.G_,4:o.s6};var d=r(6665);var p=r(2517),c=r(1833),u=r(8417);const m={[p.S3]:{fpd:{priority:99,fn(e,t){(0,i.mergeDeep)(e,t.ortb2)}},onlyOneClient:{priority:-99,fn:(0,c.i8)("ORTB request")},props:{fn(e,t){Object.assign(e,{id:e.id||(0,i.generateUUID)(),test:e.test||0});const r=parseInt(t.timeout,10);isNaN(r)||(e.tmax=r)}}},[p.Tb]:{fpd:{priority:99,fn(e,t){(0,i.mergeDeep)(e,t.ortb2Imp)}},id:{fn(e,t){e.id=t.bidId}},banner:{fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.D4)return;const n=t?.mediaTypes?.banner;if(n){const r={topframe:!0===(0,i.inIframe)()?0:1};n.sizes&&null==t.ortb2Imp?.banner?.format&&(r.format=(0,i.sizesToSizeTuples)(n.sizes).map(i.sizeTupleToRtbSize)),n.hasOwnProperty("pos")&&(r.pos=n.pos),e.banner=(0,i.mergeDeep)(r,e.banner)}}},secure:{fn(e,t){e.secure=e.secure??1}}},[p.WR]:{mediaType:{priority:99,fn:function(e,t,r){if(e.mediaType)return;const n=r.mediaType;if(!n&&!a.hasOwnProperty(t.mtype))throw new Error("Cannot determine mediaType for response");e.mediaType=n||a[t.mtype]}},banner:{fn:function(){let{createPixel:e=e=>(0,i.createTrackPixelHtml)(decodeURIComponent(e),i.encodeMacroURI)}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,r){t.mediaType===o.D4&&(r.adm&&r.nurl?t.ad=e(r.nurl)+r.adm:r.adm?t.ad=r.adm:r.nurl&&(t.adUrl=r.nurl))}}()},props:{fn(e,t,r){Object.entries({requestId:r.bidRequest?.bidId,seatBidId:t.id,cpm:t.price,currency:r.ortbResponse.cur||r.currency,width:t.w,height:t.h,wratio:t.wratio,hratio:t.hratio,dealId:t.dealid,creative_id:t.crid,creativeId:t.crid,burl:t.burl,ttl:t.exp||r.ttl,netRevenue:r.netRevenue}).filter(e=>{let[t,r]=e;return void 0!==r}).forEach(t=>{let[r,n]=t;e[r]=n}),e.meta||(e.meta={}),t.adomain&&(e.meta.advertiserDomains=t.adomain),t.ext?.dsa&&(e.meta.dsa=t.ext.dsa),t.cat&&(e.meta.primaryCatId=t.cat[0],e.meta.secondaryCatIds=t.cat.slice(1)),t.attr&&(e.meta.attr=t.attr),t.ext?.eventtrackers&&(e.eventtrackers=(e.eventtrackers??[]).concat(t.ext.eventtrackers))}}}};function l(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];const n=t.shift(),i=t.length>1?l(...t):t[0];return Object.fromEntries(p.zt.map(e=>[e,Object.assign({},n[e],i[e])]))}function f(){let{context:e={},processors:t=b,overrides:r={},imp:o,request:s,bidResponse:a,response:d}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const c=new WeakMap;function u(e,i,o,s){let a;return function(){null==a&&(a=function(){let a=o.bind(this,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!n.has(e)){const t=Object.entries(e);t.sort((e,t)=>(e=e[1].priority||0)===(t=t[1].priority||0)?0:e>t?-1:1),n.set(e,t.map(e=>{let[t,r]=e;return[t,r.fn]}))}const r=n.get(e).filter(e=>{let[r]=e;return!t.hasOwnProperty(r)||t[r]}).map(function(e){let[r,n]=e;return t.hasOwnProperty(r)?t[r].bind(this,n):n});return function(){const e=Array.from(arguments);r.forEach(t=>{t.apply(this,e)})}}(t()[e]||{},r[e]||{}));return i&&(a=i.bind(this,a)),function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];try{return a.apply(this,t)}catch(e){s.call(this,e,...t)}}}());for(var d=arguments.length,p=new Array(d),c=0;c<d;c++)p[c]=arguments[c];return a.apply(this,p)}}const m=u(p.Tb,o,function(e,t,r){const n={};return e(n,t,r),n},function(e,t,r){(0,i.logError)("Error while converting bidRequest to ORTB imp; request skipped.",{error:e,bidRequest:t,context:r})}),l=u(p.S3,s,function(e,t,r,n){const i={imp:t};return e(i,r,n),i},function(e,t,r,n){throw(0,i.logError)("Error while converting to ORTB request",{error:e,imps:t,bidderRequest:r,context:n}),e}),f=u(p.WR,a,function(e,t,r){const n={};return e(n,t,r),n},function(e,t,r){(0,i.logError)("Error while converting ORTB seatbid.bid to bidResponse; bid skipped.",{error:e,bid:t,context:r})}),y=u(p.Cf,d,function(e,t,r,n){const i={bids:t};return e(i,r,n),i},function(e,t,r,n){throw(0,i.logError)("Error while converting from ORTB response",{error:e,bidResponses:t,ortbResponse:r,context:n}),e});return{toORTB(t){let{bidderRequest:r,bidRequests:n,context:o={}}=t;n=n||r.bids;const s={req:Object.assign({bidRequests:n},e,o),imp:{}};s.req.impContext=s.imp;const a=n.map(t=>{const n=Object.assign({bidderRequest:r,reqContext:s.req},e,o),a=m(t,n);if(null!=a){if(a.hasOwnProperty("id"))return Object.assign(n,{bidRequest:t,imp:a}),s.imp[a.id]=n,a;(0,i.logError)("Converted ORTB imp does not specify an id, ignoring bid request",t,a)}}).filter(Boolean),d=l(a,r,s.req);return s.req.bidderRequest=r,null!=d&&c.set(d,s),d},fromORTB(e){let{request:t,response:r}=e;const n=c.get(t);if(null==n)throw new Error("ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`");function o(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign(e,{ortbRequest:t},r)}const s=Object.fromEntries((t.imp||[]).map(e=>[e.id,e])),a=(r?.seatbid||[]).flatMap(e=>(e.bid||[]).map(t=>{if(s.hasOwnProperty(t.impid)&&n.imp.hasOwnProperty(t.impid))return f(t,o(n.imp[t.impid],{imp:s[t.impid],seatbid:e,ortbResponse:r}));(0,i.logError)("ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid",t)})).filter(Boolean);return y(a,r,o(n.req))}}}m[p.Tb].native={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.s6)return;let n=t.nativeOrtbRequest;n&&(n=Object.assign({},r.nativeRequest,n),n.assets?.length?e.native=(0,i.mergeDeep)({},{request:JSON.stringify(n),ver:n.ver},e.native):(0,i.logWarn)("mediaTypes.native is set, but no assets were specified. Native request skipped.",t))}},m[p.WR].native={fn:function(e,t){if(e.mediaType===o.s6){let r;if(r="string"==typeof t.adm?JSON.parse(t.adm):t.adm,!(0,d.Qd)(r)||!Array.isArray(r.assets))throw new Error("ORTB native response contained no assets");e.native={ortb:r}}}},m[p.Tb].video={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.G_)return;const n=t?.mediaTypes?.video;if(!(0,i.isEmpty)(n)){const t=Object.fromEntries(Object.entries(n).filter(e=>{let[t]=e;return s.Zy.has(t)}));if(n.playerSize){const e=(0,i.sizesToSizeTuples)(n.playerSize).map(i.sizeTupleToRtbSize);e.length>1&&(0,i.logWarn)("video request specifies more than one playerSize; all but the first will be ignored"),Object.assign(t,e[0])}e.video=(0,i.mergeDeep)(t,e.video)}}},m[p.WR].video={fn:function(e,t,r){e.mediaType===o.G_&&(r?.imp?.video?.w&&r?.imp?.video?.h&&([e.playerWidth,e.playerHeight]=[r.imp.video.w,r.imp.video.h]),t.adm&&(e.vastXml=t.adm),t.nurl&&(e.vastUrl=t.nurl))}},m[p.Tb].audio={fn:function(e,t,r){if(r.mediaType&&r.mediaType!==o.FY)return;const n=t?.mediaTypes?.audio;if(!(0,i.isEmpty)(n)){const t=Object.fromEntries(Object.entries(n).filter(e=>{let[t]=e;return u.Ai.has(t)}));e.audio=(0,i.mergeDeep)(t,e.audio)}}},m[p.WR].audio={fn:function(e,t){e.mediaType===o.FY&&(t.adm&&(e.vastXml=t.adm),t.nurl&&(e.vastUrl=t.nurl))}};const b=(0,i.memoize)(()=>l(m,(0,p.yB)(p.qN)))}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[889],{9547(e,r,n){n.d(r,{FE:()=>c});var t=n(466),s=n(8928),o=n(3435);const u=Object.freeze([...["device.sua","source.schain","regs.gdpr","regs.us_privacy","regs.gpp","regs.gpp_sid","user.consent","user.eids"].map(e=>function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e,r)=>`${e}.ext.${r}`;const[n,t]=function(e){const r=e.split(".");return[r.slice(0,r.length-1).join("."),r[r.length-1]]}(e);return r=r(n,t),e=>{const u=(0,s.A)(e,n);if(null!=u?.[t])return(0,o.J)(e,r,u[t]),()=>delete u[t]}}(e)),...["app","content","site","user"].map(function(e){return r=>{const n=r[e]?.kwarray;if(null!=n){const t=(r[e].keywords||"").split(",");return Array.isArray(n)&&t.push(...n),r[e].keywords=t.join(","),()=>delete r[e].kwarray}}})]);function c(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u;return function(n){return r.forEach(r=>{try{const t=r(n);"function"==typeof t&&e&&t()}catch(e){(0,t.logError)("Error translating request to ORTB 2.5",e)}}),n}}c()}}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[829],{196(e,t,i){var r=i(1748),o=i(466),a=i(8928),n=i(3435),s=i(6665),d=i(3556),p=i(9794),l=i(1443),c=i(867),u=i(3448),m=i(7464),v=i(6220),g=i(2201),f=i(611),y=i(9547),b=i(1933);const h="criteo",I="https://grid-bidder.criteo.com/openrtb_2_5/pbjs/auction/request",T=(0,l.vM)({bidderCode:h}),k="Criteo: ",x=(0,y.FE)(),C="https://static.criteo.net/js/ld/publishertag.renderer.js",S="cto_optout",E="cto_bundle",w=!0,P=(0,f.A)({context:{netRevenue:!0,ttl:60},imp:function(e,t,i){const r=e(t,i),o=t.params;r.tagid=t.adUnitCode,(0,n.J)(r,"ext",{...t.params.ext,...r.ext,rwdd:r.rwdd,floors:L(t),bidder:{publishersubid:o?.publisherSubId,zoneid:o?.zoneId,uid:o?.uid}}),delete r.rwdd,!i.fledgeEnabled&&r.ext.igs?.ae&&delete r.ext.igs.ae;if(J(t)){const e=t.params.video;void 0!==e&&(0,n.J)(r,"video",{...r.video,skip:r.video.skip||e.skip||0,placement:r.video.placement||e.placement,minduration:r.video.minduration||e.minduration,playbackmethod:r.video.playbackmethod||e.playbackmethod,startdelay:r.video.startdelay||e.startdelay||0}),(0,n.J)(r,"video.ext",{context:t.mediaTypes.video.context,playersizes:$(t?.mediaTypes?.video?.playerSize,z),plcmt:t.mediaTypes.video.plcmt,poddur:t.mediaTypes.video.adPodDurationSec,rqddurs:t.mediaTypes.video.durationRangeSec})}if(r.native&&void 0!==r.native.request){const e=JSON.parse(r.native.request);e.assets&&(1!==e.assets.length||Object.keys(e.assets[0]).length)||delete e.assets,(0,n.J)(r,"native.request_native",e),delete r.native.request}return r},request:function(e,t,i,r){let o=e(t,i,r);void 0!==r.publisherId&&(void 0!==o.app?(0,n.J)(o,"app.publisher.id",r.publisherId):(0,n.J)(o,"site.publisher.id",r.publisherId));i&&i.gdprConsent&&(0,n.J)(o,"regs.ext.gdprversion",i.gdprConsent.apiVersion);return o=x(o),o},bidResponse:function(e,t,i){i.mediaType=t?.ext?.mediatype,i.mediaType===p.s6&&void 0!==t.adm_native&&(t.adm=t.adm_native,delete t.adm_native);const r=e(t,i),{bidRequest:o}=i;r.currency=t?.ext?.cur,void 0!==t?.ext?.meta&&(0,n.J)(r,"meta",{...r.meta,...t.ext.meta});void 0!==t?.ext?.paf?.content_id&&(0,n.J)(r,"meta.paf.content_id",t.ext.paf.content_id);r.mediaType===p.G_&&(r.vastUrl=t.ext?.displayurl,o?.mediaTypes?.video?.context===v.H6&&(r.renderer=function(e){if(void 0===e.ext?.videoPlayerConfig||void 0===e.ext?.videoPlayerType)return;const t={documentResolver:(e,t,i)=>i??t},i=(t,i)=>{const r={slotid:e.id,vastUrl:e.ext?.displayurl,vastXml:e.adm,documentContext:i},o=e.ext.videoPlayerConfig;window.CriteoOutStream[e.ext.videoPlayerType].play(r,o)},r=m.A4.install({url:C,config:t});return r.setRender(i),r}(t)));return r},response:function(e,t,i,r){const o=e(t,i,r),a=i?.ext?.paf?.transmission;return o.bids.forEach(e=>{void 0!==a&&void 0!==e?.meta?.paf?.content_id?(0,n.J)(e,"meta.paf.transmission",a):delete e.meta.paf}),o}});const q={code:h,gvlid:91,supportedMediaTypes:[p.D4,p.G_,p.s6],getUserSyncs:function(e,t,i,r){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const{gppString:n="",applicableSections:s=[]}=a,d=(0,c.EN)(),p="criteoPrebidAdapter";if(e.iframeEnabled&&(0,u.C)(i)){const l=[];if(l.push(`origin=${p}`),l.push(`topUrl=${d.domain}`),i&&(i.gdprApplies&&l.push("gdpr="+(1==i.gdprApplies?1:0)),i.consentString&&l.push(`gdpr_consent=${i.consentString}`)),r&&l.push(`us_privacy=${r}`),l.push(`gpp=${n}`),Array.isArray(s))for(const y of s)l.push(`gpp_sid=${y}`);const m=Math.random().toString(),v={bundle:R(E),cw:T.cookiesAreEnabled(),lsw:T.localStorageIsEnabled(),optoutCookie:R(S),origin:p,requestId:m,tld:d.domain,topUrl:d.domain,version:"10.9.0".replace(/\\./g,"_")};function g(e){if(!e.data||"https://gum.criteo.com"!=e.origin)return;if(e.data.requestId!==m)return;window.removeEventListener("message",g,!0),e.stopImmediatePropagation();const t=e.data;t.optout?(A(E),U(S,!0,43200,d.domain)):(t.bundle&&U(E,t.bundle,9360,d.domain),t?.callbacks?.forEach?.(o.triggerPixel))}window.removeEventListener("message",g,!0),window.addEventListener("message",g,!0);const f=JSON.stringify(v).replace(/"/g,"%22");return[{type:"iframe",url:`https://gum.criteo.com/syncframe?${l.join("&")}#${f}`}]}if(e.pixelEnabled&&(0,u.C)(i)){const b=[];if(b.push("profile=207"),i&&(!0===i.gdprApplies&&b.push("gdprapplies=true"),i.consentString&&b.push(`gdpr=${i.consentString}`)),r&&b.push(`ccpa=${r}`),b.push(`gpp=${n}`),Array.isArray(s))for(const h of s)b.push(`gpp_sid=${h}`);return[{type:"image",url:`https://ssp-sync.criteo.com/user-sync/redirect?${b.join("&")}`}]}return[]},isBidRequestValid:e=>!(!e||!e.params||!e.params.zoneId&&!e.params.networkId)&&!(J(e)&&!function(e){let t=!0;return["mimes","playerSize","maxduration","protocols","api","skip","placement","playbackmethod"].forEach(function(i){"placement"===i?void 0===e?.mediaTypes?.video?.[i]&&void 0===e?.params?.video?.[i]&&void 0===e?.mediaTypes?.video?.plcmt&&void 0===e?.params?.video?.plcmt&&(t=!1,(0,o.logError)("Criteo Bid Adapter: mediaTypes.video."+i+" or mediaTypes.video.plcmt is required")):void 0===e?.mediaTypes?.video?.[i]&&void 0===e?.params?.video?.[i]&&(t=!1,(0,o.logError)("Criteo Bid Adapter: mediaTypes.video."+i+" is required"))}),t}(e)),buildRequests:(e,t)=>{e.forEach(e=>{(function(e){return void 0!==e?.mediaTypes?.native})(e)&&(function(e){return!(e.nativeParams&&(e.nativeParams.image&&!0!==e.nativeParams.image.sendId||e.nativeParams.icon&&!0!==e.nativeParams.icon.sendId||e.nativeParams.clickUrl&&!0!==e.nativeParams.clickUrl.sendId||e.nativeParams.displayUrl&&!0!==e.nativeParams.displayUrl.sendId||e.nativeParams.privacyLink&&!0!==e.nativeParams.privacyLink.sendId||e.nativeParams.privacyIcon&&!0!==e.nativeParams.privacyIcon.sendId))}(e)||(0,o.logWarn)(k+"all native assets containing URL should be sent as placeholders with sendId(icon, image, clickUrl, displayUrl, privacyLink, privacyIcon)"),null==e?.nativeOrtbRequest?.assets&&((0,o.logWarn)(k+"native asset requirements are missing"),(0,n.J)(e,"nativeOrtbRequest.assets",[{}])))});const i=function(e,t){const i=(0,o.parseUrl)(t?.refererInfo?.topmostLocation).search;return{url:t?.refererInfo?.page||"",debug:"1"===i.pbt_debug,noLog:"1"===i.pbt_nolog,fledgeEnabled:t.paapi?.enabled,amp:e.some(e=>"amp"===e.params.integrationMode),networkId:e.find(e=>e.params?.networkId)?.params.networkId,publisherId:e.find(e=>e.params?.pubid)?.params.pubid}}(e,t),r=function(e){let t=I;t+="?profileId=207",t+="&av="+String(37),t+="&wv="+encodeURIComponent("10.9.0"),t+="&cb="+String(Math.floor(99999999999*Math.random())),T.localStorageIsEnabled()?t+="&lsavail=1":t+="&lsavail=0";e.amp&&(t+="&im=1");e.debug&&(t+="&debug=1");e.noLog&&(t+="&nolog=1");const i=R(E);i&&(t+=`&bundle=${i}`);R(S)&&(t+="&optout=1");e.networkId&&(t+="&networkId="+e.networkId);return t}(i),a=P.toORTB({bidderRequest:t,bidRequests:e,context:i});if(a)return{method:"POST",url:r,data:a,bidRequests:e,options:{endpointCompression:_()}}},interpretResponse:(e,t)=>{if(void 0===e?.body)return[];const i=P.fromORTB({response:e.body,request:t.data}).bids||[],r=e.body?.ext?.igi?.filter(e=>(0,s.cy)(e?.igs)).flatMap(e=>e.igs);return r?.length?{bids:i,paapi:r}:i},onDataDeletionRequest:e=>{const t=R(E);t&&(A(E),(0,g.RD)("https://privacy.criteo.com/api/privacy/datadeletionrequest",null,JSON.stringify({publisherUserId:t}),{contentType:"application/json",method:"POST"}))}};function _(){try{const e=(0,a.A)(b.$W.getBidderConfig(),"criteo.gzipEnabled");if(void 0!==e){const t=String(e).toLowerCase().trim();if("true"===t||"false"===t){const e="true"===t;return(0,o.logInfo)("Criteo: Using bidder-specific gzipEnabled setting:",e),e}(0,o.logWarn)("Criteo: Invalid gzipEnabled value in bidder config:",e)}}catch(e){(0,o.logWarn)("Criteo: Error accessing bidder config:",e)}return(0,o.logInfo)("Criteo: Using default gzipEnabled setting:",w),w}function R(e){const t=T.getCookie(e),i=T.getDataFromLocalStorage(e);return t||i||void 0}function U(e,t,i,r){const o=new Date;o.setTime(o.getTime()+60*i*60*1e3);const a=`expires=${o.toUTCString()}`,n=r.split(".");for(let i=0;i<n.length;++i){const r=n.slice(n.length-i-1,n.length).join(".");try{T.setCookie(e,t,a,null,"."+r);const i=T.getCookie(e);if(i&&i===t)break}catch(e){}}T.setDataInLocalStorage(e,t)}function A(e){T.setCookie(e,"",0),T.removeDataFromLocalStorage(e)}function $(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e;return null==e?[]:Array.isArray(e[0])?e.map(e=>t(e)):[t(e)]}function z(e){return e[0]+"x"+e[1]}function J(e){return void 0!==e?.mediaTypes?.video}function L(e){try{const t={},i=function(e){if(e.getFloor)return e.getFloor;if(e.params.bidFloor&&e.params.bidFloorCur)try{const t=parseFloat(e.params.bidFloor);return()=>({currency:e.params.bidFloorCur,floor:t})}catch{}}(e);if(i){if(e.mediaTypes?.banner){t.banner={};$(e?.mediaTypes?.banner?.sizes).forEach(r=>{t.banner[z(r).toString()]=i.call(e,{size:r,mediaType:p.D4})})}if(e.mediaTypes?.video){t.video={};$(e?.mediaTypes?.video?.playerSize).forEach(r=>{t.video[z(r).toString()]=i.call(e,{size:r,mediaType:p.G_})})}return e.mediaTypes?.native&&(t.native={},t.native["*"]=i.call(e,{size:"*",mediaType:p.s6})),t}}catch(e){(0,o.logError)("Could not parse floors from Prebid: "+e)}}(0,d.a$)(q),(0,r.E)("criteoBidAdapter")}},e=>{e.O(0,[802,769,85,117,889],()=>{return t=196,e(e.s=t);var t});e.O()}]);\n(self.pbjsChunk=self.pbjsChunk||[]).push([[879],{3686(e,t,n){var a=n(1748),r=n(1933),s=n(3556),o=n(8928),p=n(3435),i=n(466),d=n(9794),m=n(611);const u={code:"openx",gvlid:69,supportedMediaTypes:[d.D4,d.G_,d.s6],isBidRequestValid:function(e){const t=e.params.delDomain||e.params.platform;if(o.A(e,"mediaTypes.banner")&&t)return!!e.params.unit||o.A(e,"mediaTypes.banner.sizes.length")>0;return!(!e.params.unit||!t)},buildRequests:function(e,t){const n=e.filter(e=>b(e)),a=e.filter(e=>function(e){const t=!b(e)&&!f(e);return o.A(e,"mediaTypes.banner")||t}(e)||f(e)).map(e=>({...e,mediaTypes:{...e.mediaTypes,video:void 0}})),r=a.length?[c(a,t,null)]:[];return n.forEach(e=>{r.push(c([e],t,d.G_))}),r},interpretResponse:function(e,t){e.body||(e.body={nbr:0});return l.fromORTB({request:t.data,response:e.body})},getUserSyncs:function(e,t,n,a,r){if(e.iframeEnabled||e.pixelEnabled){const s=e.iframeEnabled?"iframe":"image",o=[];let p="https://u.openx.net/w/1.0/pd";if(n&&(o.push("gdpr="+(n.gdprApplies?1:0)),o.push("gdpr_consent="+encodeURIComponent(n.consentString||""))),a&&o.push("us_privacy="+encodeURIComponent(a)),r?.gppString&&r?.applicableSections?.length&&(o.push("gpp="+encodeURIComponent(r.gppString)),o.push("gpp_sid="+r.applicableSections.join(","))),t.length>0&&t[0].body&&t[0].body.ext){const e=t[0].body.ext;e.delDomain?p=`https://${e.delDomain}/w/1.0/pd`:e.platform&&o.push("ph="+e.platform)}else o.push("ph=2d1251ae-7f3a-47cf-bd2a-2f288854a0ba");return[{type:s,url:`${p}${o.length>0?"?"+o.join("&"):""}`}]}}};(0,s.a$)(u);const l=(0,m.A)({context:{netRevenue:!0,ttl:300,nativeRequest:{eventtrackers:[{event:1,methods:[1,2]}]}},imp(e,t,n){const a=e(t,n);return(0,i.mergeDeep)(a,{tagid:t.params.unit,ext:{divid:t.adUnitCode}}),t.params.customParams&&p.J(a,"ext.customParams",t.params.customParams),t.params.customFloor&&!a.bidfloor&&(a.bidfloor=t.params.customFloor),a},request(e,t,n,a){const r=e(t,n,a);(0,i.mergeDeep)(r,{at:1,ext:{bc:"hb_pb_ortb_2.0",pv:"10.9.0"}});const s=a.bidRequests[0];return s.params.coppa&&p.J(r,"regs.coppa",1),s.params.doNotTrack&&p.J(r,"device.dnt",1),s.params.platform&&p.J(r,"ext.platform",s.params.platform),s.params.delDomain&&p.J(r,"ext.delDomain",s.params.delDomain),s.params.response_template_name&&p.J(r,"ext.response_template_name",s.params.response_template_name),s.params.test&&(r.test=1),r},bidResponse(e,t,n){const a=e(t,n);return t.ext&&(a.meta.networkId=t.ext.dsp_id,a.meta.advertiserId=t.ext.buyer_id,a.meta.brandId=t.ext.brand_id),a},response(e,t,n,a){const{ortbRequest:r}=a;r.ext&&(r.ext.delDomain&&p.J(n,"ext.delDomain",r.ext.delDomain),r.ext.platform&&p.J(n,"ext.platform",r.ext.platform));const s=e(t,n,a);let d=o.A(n,"ext.fledge_auction_configs");return d?(d=Object.entries(d).map(e=>{let[t,n]=e;return{bidId:t,config:(0,i.mergeDeep)(Object.assign({},n),{auctionSignals:{ortb2Imp:a.impContext[t]?.imp}})}}),{bids:s.bids,paapi:d}):s},overrides:{imp:{bidfloor(e,t,n,a){const r={};e(r,n,{...a,currency:"USD"}),"USD"===r.bidfloorcur&&Object.assign(t,r)},video(e,t,n,a){{let r=n.mediaTypes[d.G_];r&&(r=Object.assign({},r,n.params.video),n={...n,mediaTypes:{[d.G_]:r}}),e(t,n,a)}}}}});function c(e,t,n){return{method:"POST",url:r.$W.getConfig("openxOrtbUrl")||"https://rtb.openx.net/openrtbb/prebidjs",data:l.toORTB({bidRequests:e,bidderRequest:t,context:{mediaType:n}})}}function b(e){return o.A(e,"mediaTypes.video")}function f(e){return o.A(e,"mediaTypes.native")}(0,a.E)("openxBidAdapter")}},e=>{e.O(0,[802,769,85,117],()=>{return t=3686,e(e.s=t);var t});e.O()}]);\n})(),pbjs.processQueue();\n\n//# sourceURL=webpack://@wrapp/wrapper/../builds/8EFA792FE841A/0.0.10/prebid.js?')},"../node_modules/css-loader/dist/cjs.js!./css/sticky.css":(module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "../node_modules/css-loader/dist/runtime/noSourceMaps.js");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "../node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.ad-anchor {\n box-sizing: border-box;\n z-index: 9999;\n background-color: #f0f0f0;\n border: 1px dotted #ccc;\n place-items: center;\n padding: 5px;\n transition: all 0.3s ease;\n display: flex;\n align-items: flex-start;\n justify-content: space-between; /* space between .ad-slot and .ad-action-buttons */\n}\n\n.ad-slot {\n flex-grow: 1; /* take up remaining space in center */\n flex-shrink: 1;\n color: #888; /* text color */\n text-align: center; /* center-align content inside div */\n display: flex;\n align-items: center; /* vertically center align all children */\n justify-content: center; /* horizontally center align all children */\n overflow: hidden;\n}\n\n.ad-action-buttons {\n display: flex; /* use flexbox for the buttons */\n gap: 5px; /* add 5px horizontal gap between buttons */\n flex-shrink: 0;\n}\n\n.ad-action-btn {\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n color: #888;\n background: #f0f0f0;\n border: 1px solid #ccc;\n font-size: 20px;\n font-weight: normal;\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n line-height: 18px;\n text-align: center;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n/* top sticky ad */\n.ad-TP {\n position: sticky;\n top: 0;\n left: 0;\n width: calc(100vw - 25px);\n height: auto;\n min-height: 10vh; /* minimum height 10% of viewport */\n max-height: 30vh; /* maximum height 30% of viewport */\n}\n\n/* bottom sticky ad */\n.ad-BM {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%; /* "fixed" position width goes by view port */\n height: auto;\n min-height: 10vh; /* minimum height 10% of viewport */\n max-height: 30vh; /* maximum height 30% of viewport */\n/* \n max-width: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-left: calc(-50vw + 50%); */\n}\n\n/* right rail sticky ad */\n.ad-RG {\n position: fixed;\n top: 50%;\n right: 0;\n width: 300px;\n height: 600px;\n transform: translateY(-50%);\n}\n\n/* left rail sticky ad */\n.ad-LF {\n position: fixed;\n top: 50%;\n left: 0;\n width: 300px;\n height: 600px;\n transform: translateY(-50%);\n}\n\n/* minimized states */\n.horizontal-minimized {\n height: 30px;\n min-height: 30px;\n overflow: hidden;\n}\n\n.vertical-minimized {\n width: 55px;\n min-width: 55px;\n overflow: hidden;\n}\n\n/* hidden state */\n.hidden {\n display: none;\n}\n\n`, ""]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./css/sticky.css?../node_modules/css-loader/dist/cjs.js')},"../node_modules/css-loader/dist/runtime/api.js":module=>{"use strict";eval('\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = "";\n var needLayer = typeof item[5] !== "undefined";\n if (item[4]) {\n content += "@supports (".concat(item[4], ") {");\n }\n if (item[2]) {\n content += "@media ".concat(item[2], " {");\n }\n if (needLayer) {\n content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += "}";\n }\n if (item[2]) {\n content += "}";\n }\n if (item[4]) {\n content += "}";\n }\n return content;\n }).join("");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === "string") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== "undefined") {\n if (typeof item[5] === "undefined") {\n item[5] = layer;\n } else {\n item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = "".concat(supports);\n } else {\n item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/css-loader/dist/runtime/api.js?')},"../node_modules/css-loader/dist/runtime/noSourceMaps.js":module=>{"use strict";eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/css-loader/dist/runtime/noSourceMaps.js?")},"./css/sticky.css":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./sticky.css */ "../node_modules/css-loader/dist/cjs.js!./css/sticky.css");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_sticky_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./css/sticky.css?')},"../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":module=>{"use strict";eval('\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = "".concat(id, " ").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?')},"../node_modules/style-loader/dist/runtime/insertBySelector.js":module=>{"use strict";eval('\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === "undefined") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error("Couldn\'t find a style target. This probably means that the value for the \'insert\' parameter is invalid.");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/insertBySelector.js?')},"../node_modules/style-loader/dist/runtime/insertStyleElement.js":module=>{"use strict";eval('\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement("style");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/insertStyleElement.js?')},"../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = true ? __webpack_require__.nc : 0;\n if (nonce) {\n styleElement.setAttribute("nonce", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?')},"../node_modules/style-loader/dist/runtime/styleDomAPI.js":module=>{"use strict";eval('\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = "";\n if (obj.supports) {\n css += "@supports (".concat(obj.supports, ") {");\n }\n if (obj.media) {\n css += "@media ".concat(obj.media, " {");\n }\n var needLayer = typeof obj.layer !== "undefined";\n if (needLayer) {\n css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");\n }\n css += obj.css;\n if (needLayer) {\n css += "}";\n }\n if (obj.media) {\n css += "}";\n }\n if (obj.supports) {\n css += "}";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== "undefined") {\n css += "\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === "undefined") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/styleDomAPI.js?')},"../node_modules/style-loader/dist/runtime/styleTagTransform.js":module=>{"use strict";eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/style-loader/dist/runtime/styleTagTransform.js?")},"./src/auctionConductor.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setRegisterSlotWorker: () => (/* binding */ setRegisterSlotWorker),\n/* harmony export */ setServeAdWorker: () => (/* binding */ setServeAdWorker)\n/* harmony export */ });\n/* harmony import */ var _refreshEventHandlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./refreshEventHandlers */ "./src/refreshEventHandlers.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types/enums */ "./src/types/enums.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n// file: wrapper/src/auctionConductor.ts\n\n\n\n\n\n/**\n *\n * auction is event based and conducted in 3 steps\n * 1) register ad slot after parent div element is added - setRegisterSlotWorker()\n * 2) start auction\n * 3)\n *\n */\n// register handler: to register ad slot after div has loaded in body\nfunction setRegisterSlotWorker(slot, window = globalThis.window) {\n const slot_div_id = slot?.getSlotElementId();\n if (!slot_div_id) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.consoleError)(\'setRegisterSlotWorker: Undefined slot element id, cannot register slot.\', false, slot);\n return;\n }\n const element = window.document.getElementById(slot_div_id);\n if (element) { // element already exists\n registerSlot(element);\n return;\n }\n if (window.document.body) { // page has already loaded\n setupMutationObserver(slot_div_id);\n }\n else {\n window.document.addEventListener(\'DOMContentLoaded\', () => {\n const element = window.document.getElementById(slot_div_id);\n if (element) { // element exists in dom now\n registerSlot(element);\n }\n else { // for future additions\n setupMutationObserver(slot_div_id);\n }\n });\n }\n // set up MutationObserver for future additions\n function setupMutationObserver(slot_div_id) {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const element = window.document.getElementById(slot_div_id);\n if (element) { // element exists in dom now\n observer.disconnect();\n registerSlot(element);\n return;\n }\n }\n });\n // start observing document for changes\n observer.observe(window.document.body, {\n childList: true, // listen for direct children added/removed\n subtree: true // listen for changes in the entire subtree\n });\n }\n function registerSlot(element) {\n googletag.cmd.push(() => {\n googletag.display(element.id); // called to register slot, disableInitialLoad() should still apply\n // fetch ads for "lazy" load ad units only\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.getAuctionEntry)(element.id);\n if (entry?.adSlot?.l /*load*/ === _types_enums__WEBPACK_IMPORTED_MODULE_2__.Load.Lazy) {\n setFetchAdWorker(element);\n }\n else {\n // register refresh handlers for "eager" load ad units\n (0,_refreshEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setRefreshWorker)(element.id);\n }\n });\n }\n}\n// meant to be called for "lazy" load ad slots only\nfunction setFetchAdWorker(element) {\n // check if intersection observer already exists for element\n const existingEntry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.getAuctionEntry)(element.id);\n if (existingEntry?.intersectionObserver) {\n return;\n }\n const options = {\n root: null, // element to intersect with browser viewport\n rootMargin: "1000px", // margin to grow or shrink intersection frame of root, default 100px (10% of most popular viewport 1080px)\n threshold: 0.0 // % element visible\n };\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if ((entry.intersectionRatio > 0) && !(0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.isAuctionInProgress)(element.id)) {\n // disconnect observer, set auction in progress\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.clearIntersectionObserver)(element.id);\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.setAuctionInProgress)(element.id, _types_enums__WEBPACK_IMPORTED_MODULE_2__.ServeType.Initial);\n const pbjs = window.pbjs;\n const adSlot = (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.getAuctionEntry)(element.id)?.adSlot;\n pbjs.que.push(() => {\n pbjs.requestBids({\n // adslot element (div) id used as unique prebid adunit code\n adUnitCodes: [element.id],\n timeout: adSlot?.o /*auctionTimeout*/ ?? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.o /*auctionTimeout*/, window)\n });\n });\n // register refresh handlers for "lazy" load ad slots\n (0,_refreshEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setRefreshWorker)(element.id);\n }\n });\n }, options);\n // store observer instance in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.setIntersectionObserver)(element.id, observer);\n observer.observe(element);\n}\nfunction setServeAdWorker() {\n const pbjs = window.pbjs;\n pbjs.onEvent(\'auctionEnd\', (auction) => {\n // clear auction in progress flags for completed auction slots\n const renderAdSlotCodes = auction.adUnitCodes;\n renderAdSlotCodes.forEach(adUnitCode => {\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_4__.clearAuctionInProgress)(adUnitCode);\n });\n googletag.cmd.push(() => {\n const renderSlots = googletag.pubads()\n .getSlots()\n // filter adslot element (div) id used as unique prebid adunit code\n .filter(slot => renderAdSlotCodes.includes(slot.getSlotElementId()));\n if (renderSlots.length > 0) {\n const pbjs = window.pbjs;\n pbjs.que.push(() => {\n pbjs.setTargetingForGPTAsync(renderAdSlotCodes);\n googletag.pubads().refresh(renderSlots);\n });\n }\n });\n });\n // TODO: should this part be moved to a different function?\n pbjs.onEvent(\'bidWon\', (bid) => {\n const slot = googletag.pubads()\n .getSlots()\n // find by adslot element (div) id used as unique prebid adunit code\n .find(slot => slot.getSlotElementId() === bid.adUnitCode)\n ?? null;\n // TODO: add prefix to targeting keys to make it obvious that this is specific to our wrapper\n if (slot) {\n googletag.cmd.push(() => {\n slot.setTargeting(`${_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.p /*targetKeyPrefix*/}_bidder_code`, bid.bidderCode);\n slot.setTargeting(`${_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.p /*targetKeyPrefix*/}_cpm`, bid.cpm);\n slot.setTargeting(`${_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.p /*targetKeyPrefix*/}_cpm_currency`, bid.currency);\n });\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/auctionConductor.ts?')},"./src/auctionState.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearAllIntersectionObservers: () => (/* binding */ clearAllIntersectionObservers),\n/* harmony export */ clearAuctionInProgress: () => (/* binding */ clearAuctionInProgress),\n/* harmony export */ clearIntersectionObserver: () => (/* binding */ clearIntersectionObserver),\n/* harmony export */ deleteAuctionEntry: () => (/* binding */ deleteAuctionEntry),\n/* harmony export */ getAllAdSlots: () => (/* binding */ getAllAdSlots),\n/* harmony export */ getAllAuctionEntries: () => (/* binding */ getAllAuctionEntries),\n/* harmony export */ getAuctionEntry: () => (/* binding */ getAuctionEntry),\n/* harmony export */ getInventoryConfig: () => (/* binding */ getInventoryConfig),\n/* harmony export */ isAuctionInProgress: () => (/* binding */ isAuctionInProgress),\n/* harmony export */ resolveInventoryConfig: () => (/* binding */ resolveInventoryConfig),\n/* harmony export */ setAuctionEntry: () => (/* binding */ setAuctionEntry),\n/* harmony export */ setAuctionInProgress: () => (/* binding */ setAuctionInProgress),\n/* harmony export */ setIntersectionObserver: () => (/* binding */ setIntersectionObserver),\n/* harmony export */ updateAuctionEntry: () => (/* binding */ updateAuctionEntry)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _experiments__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./experiments */ \"./src/experiments.ts\");\n// file: wrapper/src/auctionState.ts\n\n\n\n// Inventory Config State\nlet inventoryConfigPromise = null;\nlet resolvedInventoryConfig = null;\n/**\n * Resolves inventory config, applying experiment variant if configured.\n * Memoized - subsequent calls return the same promise.\n *\n * If wrapperConfig.x (experimentId) is set:\n * - Fetches allocations from API\n * - Applies variant delta to config\n * Otherwise:\n * - Returns base inventory config directly\n */\nfunction resolveInventoryConfig() {\n if (!inventoryConfigPromise) {\n if (_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig.x /*experimentId*/) {\n inventoryConfigPromise = (0,_experiments__WEBPACK_IMPORTED_MODULE_2__.applyExperimentVariant)(_constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig)\n .then(config => { resolvedInventoryConfig = config; return config; });\n }\n else {\n // extract base inventory config with direct assignment, WrapperConfig extends InventoryConfig\n resolvedInventoryConfig = _constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig;\n inventoryConfigPromise = Promise.resolve(resolvedInventoryConfig);\n }\n }\n return inventoryConfigPromise;\n}\n/**\n * Gets resolved inventory config synchronously.\n * Throws if resolveInventoryConfig() hasn't been called or hasn't completed yet.\n * Use resolveInventoryConfig() for guaranteed result.\n */\nfunction getInventoryConfig() {\n if (!resolvedInventoryConfig) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleError)('getInventoryConfig() called before resolveInventoryConfig() completed', true, globalThis.window);\n }\n return resolvedInventoryConfig;\n}\n// persistent state management for ad slots across entire lifecycle\n// tracks auction progression, to maintain data integrity during refresh cycles\n// maps adUnit.code (div id) to slot state (auction ids, winning bid data, configuration)\nconst adSlotAuctionMap = new Map();\nfunction getAuctionEntry(adUnitCode) {\n return adSlotAuctionMap.get(adUnitCode);\n}\nfunction getAllAuctionEntries() {\n return Array.from(adSlotAuctionMap.values());\n}\nfunction getAllAdSlots() {\n return getAllAuctionEntries()\n .map(entry => entry.adSlot)\n .filter((slot) => !!slot);\n}\nfunction setAuctionEntry(adUnitCode, entry) {\n adSlotAuctionMap.set(adUnitCode, entry);\n}\nfunction updateAuctionEntry(adUnitCode, updates) {\n const currentEntry = adSlotAuctionMap.get(adUnitCode) || {};\n adSlotAuctionMap.set(adUnitCode, {\n ...currentEntry,\n ...updates\n });\n}\nfunction deleteAuctionEntry(adUnitCode) {\n return adSlotAuctionMap.delete(adUnitCode);\n}\nfunction isAuctionInProgress(adUnitCode) {\n const entry = adSlotAuctionMap.get(adUnitCode);\n if (entry?.isAuctionInProgress) {\n const caller = new Error().stack?.split('\\n')[2]?.trim().split(' ')[1] || 'unknown';\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`${caller}: Auction already in progress for slot, skipping`, adUnitCode);\n return true;\n }\n return false;\n}\nfunction setAuctionInProgress(adUnitCode, serveType, adSlot) {\n const entry = adSlotAuctionMap.get(adUnitCode) || { adSlot: adSlot };\n updateAuctionEntry(adUnitCode, {\n isAuctionInProgress: true,\n serveType: serveType\n });\n}\nfunction clearAuctionInProgress(adUnitCode) {\n const entry = adSlotAuctionMap.get(adUnitCode);\n if (entry) {\n updateAuctionEntry(adUnitCode, {\n isAuctionInProgress: false\n });\n }\n}\nfunction setIntersectionObserver(adUnitCode, observer) {\n updateAuctionEntry(adUnitCode, {\n intersectionObserver: observer\n });\n}\nfunction clearIntersectionObserver(adUnitCode) {\n const entry = adSlotAuctionMap.get(adUnitCode);\n if (entry?.intersectionObserver) {\n entry.intersectionObserver.disconnect();\n updateAuctionEntry(adUnitCode, {\n intersectionObserver: undefined\n });\n }\n}\nfunction clearAllIntersectionObservers() {\n adSlotAuctionMap.forEach((entry, adUnitCode) => {\n if (entry.intersectionObserver) {\n clearIntersectionObserver(adUnitCode);\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/auctionState.ts?")},"./src/audiences.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getUserBrowser: () => (/* binding */ getUserBrowser),\n/* harmony export */ getUserCountry: () => (/* binding */ getUserCountry),\n/* harmony export */ matchAudience: () => (/* binding */ matchAudience)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n// file: wrapper/src/audiences.ts\n\n\nfunction getUserBrowser() {\n const userAgent = navigator?.userAgent;\n if (!userAgent) {\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Other;\n }\n const ua = userAgent.toLowerCase();\n // check edge first, its ua string often includes \"chrome\"\n // modern edge uses \"edg/\", older edge used \"edge/\"\n if (ua.indexOf('edg/') > -1 || ua.indexOf('edge/') > -1 || ua.indexOf('edge') > -1) { // a bit more robust for edge\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Edge;\n }\n else if (ua.indexOf('chrome') > -1 && ua.indexOf('safari') > -1) {\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Chrome;\n }\n else if (ua.indexOf('safari') > -1) { // safari only (no \"chrome\" or \"edg\")\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Safari;\n }\n else if (ua.indexOf('firefox') > -1) {\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Firefox;\n }\n return _types_enums__WEBPACK_IMPORTED_MODULE_0__.Browser.Other;\n}\nfunction getUserCountry() {\n let localeString;\n try {\n localeString = Intl.DateTimeFormat().resolvedOptions().locale;\n }\n catch (error) {\n localeString = undefined;\n }\n let localeCountryCode;\n if (localeString) {\n const parts = localeString.split('-');\n if (parts.length > 1) {\n localeCountryCode = parts[parts.length - 1]; // take last part\n }\n }\n const langString = navigator?.language;\n let langCountryCode;\n if (langString) {\n const parts = langString.split('-');\n if (parts.length > 1) {\n langCountryCode = parts[parts.length - 1]; // take last part\n }\n }\n // return uppercase country code if found\n if (localeCountryCode)\n return localeCountryCode.toUpperCase();\n if (langCountryCode)\n return langCountryCode.toUpperCase();\n return null;\n}\nfunction matchAudience(layout, window = globalThis.window) {\n for (const inc of layout.t /*targetAudience*/?.ic /*includes*/ ?? []) {\n if (inc.bw /*browser*/ && !inc.bw /*browser*/.includes(getUserBrowser()))\n return null;\n if (inc.dv /*device*/ && !inc.dv /*device*/.includes((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getUserDevice)(window)))\n return null;\n if (inc.cy /*country*/ && !inc.cy /*country*/.includes(getUserCountry() ?? ''))\n return null;\n }\n for (const exc of layout.t /*targetAudience*/?.ex /*excludes*/ ?? []) {\n if (exc.bw /*browser*/ && exc.bw /*browser*/.includes(getUserBrowser()))\n return null;\n if (exc.dv /*device*/ && exc.dv /*device*/.includes((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getUserDevice)(window)))\n return null;\n if (exc.cy /*country*/ && exc.cy /*country*/.includes(getUserCountry() ?? ''))\n return null;\n }\n return layout;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/audiences.ts?")},"./src/bootstrap.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bootstrapWrapper: () => (/* binding */ bootstrapWrapper),\n/* harmony export */ initAdserver: () => (/* binding */ initAdserver),\n/* harmony export */ processAdSlots: () => (/* binding */ processAdSlots)\n/* harmony export */ });\n/* harmony import */ var _logEventHandlers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logEventHandlers */ \"./src/logEventHandlers.ts\");\n/* harmony import */ var _auctionConductor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./auctionConductor */ \"./src/auctionConductor.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logger */ \"./src/logger.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _audiences__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./audiences */ \"./src/audiences.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _stickySlot__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stickySlot */ \"./src/stickySlot.ts\");\n/* harmony import */ var _customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./customDimensions/dimensions */ \"./src/customDimensions/dimensions.ts\");\n/* harmony import */ var _wrapperTag__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./wrapperTag */ \"./src/wrapperTag.ts\");\n/* harmony import */ var _customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./customDimensions/destinations */ \"./src/customDimensions/destinations.ts\");\n/* harmony import */ var _customCode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./customCode */ \"./src/customCode.ts\");\n// file: wrapper/src/bootstrap.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction initAdserver(window = globalThis.window) {\n const googletag = window.googletag;\n const pbjs = window.pbjs;\n if (!googletag.pubads) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)('googletag (google publisher tag) did not load properly...', false, window);\n return;\n }\n if (pbjs.initAdserverSet)\n return;\n pbjs.initAdserverSet = true;\n googletag.cmd.push(() => {\n if (pbjs.setTargetingForGPTAsync) {\n pbjs.setTargetingForGPTAsync();\n googletag.pubads().refresh();\n }\n else {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)('Prebid did not load properly: setTargetingForGPTAsync is undefined', false, window);\n googletag.pubads().refresh(); // fallback to direct googletag refresh\n //TODO log error\n }\n });\n}\nfunction processAdSlots(adSlots, config, window = globalThis.window) {\n const pbjs = window.pbjs;\n const googletag = window.googletag;\n let pageAdSlots = [];\n // insert dom elements for static slots, before configuring ads\n function processStaticSlots() {\n pageAdSlots = adSlots.filter(adSlot => {\n // filter to slots with reference elements on page\n return (adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_4__.Anchor.Window) ||\n (window.document.getElementById(adSlot.n /*insert*/.d /*divId*/) !== null);\n });\n pageAdSlots.forEach(adSlot => {\n if (adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_4__.Anchor.StaticElement) {\n // addSlotElement handles CSS injection internally (CLS prevention)\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.addSlotElement)(adSlot.n /*insert*/, adSlot.cc /*customCSS*/, window);\n }\n });\n }\n ;\n if (window.document.readyState === 'loading') {\n // dom not ready, wait for it\n window.document.addEventListener('DOMContentLoaded', processStaticSlots, { once: true });\n }\n else {\n // dom already ready (interactive | complete)\n processStaticSlots();\n }\n pbjs.que.push(() => {\n // add all ad units to prebid auction, update auction map\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleDebug)(`Processing ${pageAdSlots.length} ad slots on page`, window, pageAdSlots);\n // register bidder aliases with Prebid.js (Always Alias approach)\n // each demand seat gets a unique alias: {bidderCode}-{label}\n // uses activeInventoryConfig to support experiment variants with different demand seats\n const activeBa = (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getInventoryConfig)().ba /*bidderAliases*/;\n Object.entries(activeBa).forEach(([alias, bidderAlias]) => {\n pbjs.aliasBidder(bidderAlias.b /*bidder*/, alias);\n });\n const pbjsAdUnits = [];\n pageAdSlots.forEach(adSlot => {\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(adSlot);\n const ortb2Imp = (0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildORTB2Imp)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), adUnitCode, window);\n // Price Floor Precedence (highest to lowest):\n // 1. Demand Seat floor (bidderAlias.f) - most specific, per-bidder\n // 2. Ad Slot floor (adSlot.f) - per-placement\n // 3. Config floor (config.pf) - global default\n // Prebid enforces via: bidder|*|* rules override default floor\n const defaultFloor = adSlot.f /*priceFloor*/ ??\n (config.pf /*priceFloor*/ ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(config.pf /*priceFloor*/, window) : undefined);\n // collect bidder-specific floors from demand seats\n const bidderFloors = {};\n adSlot.tg /*tagIds*/.forEach(tagId => {\n const bidderAlias = activeBa[tagId.a /*alias*/];\n if (bidderAlias?.f /*floor*/ && bidderAlias.f /*floor*/ > 0) {\n // format: bidderCode|*|* for any mediaType and size\n bidderFloors[`${tagId.a /*alias*/}|*|*`] = bidderAlias.f /*floor*/;\n }\n });\n const hasBidderFloors = Object.keys(bidderFloors).length > 0;\n // create prebid ad unit\n const pbjsAdUnit = {\n code: adUnitCode, // adslot element (div) id used as unique prebid adunit code\n div: adUnitCode,\n mediaTypes: {\n banner: {\n sizes: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(adSlot.m /*media*/.sz /*sizes*/, window)\n }\n },\n bids: adSlot.tg /*tagIds*/.map(tagId => ({\n bidder: tagId.a /*alias*/,\n params: tagId.pm /*params*/\n })),\n ...((defaultFloor || hasBidderFloors) && {\n floors: {\n currency: config.c /*currencyCode*/,\n ...(defaultFloor && { default: defaultFloor }),\n ...(hasBidderFloors && { values: bidderFloors })\n }\n }),\n // add ORTB2 imp for slot-level custom dimensions\n ...(ortb2Imp ? { ortb2Imp } : {})\n };\n pbjsAdUnits.push(pbjsAdUnit);\n // set pbjs registered status in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.updateAuctionEntry)(adUnitCode, {\n adSlot: adSlot,\n adUnit: pbjsAdUnit\n });\n });\n // add all units to prebid\n if (pbjsAdUnits.length > 0) {\n pbjs.addAdUnits(pbjsAdUnits);\n }\n // start prebid auction for initial load ad slots\n const initialSlots = pageAdSlots\n .filter(slot => [_types_enums__WEBPACK_IMPORTED_MODULE_4__.Load.Eager, _types_enums__WEBPACK_IMPORTED_MODULE_4__.Load.Dynamic, _types_enums__WEBPACK_IMPORTED_MODULE_4__.Load.OnDemand].includes(slot.l /*load*/));\n // filter out slots with auctions in progress and set flags for valid slots\n const validInitialSlots = initialSlots.filter(slot => {\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(slot);\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.isAuctionInProgress)(adUnitCode)) {\n return false;\n }\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.setAuctionInProgress)(adUnitCode, _types_enums__WEBPACK_IMPORTED_MODULE_4__.ServeType.Initial);\n return true;\n });\n if (validInitialSlots.length > 0) {\n const configTimeout = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(config.o /*auctionTimeout*/, window);\n const maxSlotTimeout = Math.max(...validInitialSlots.map(slot => slot.o /*auctionTimeout*/ ?? 0));\n pbjs.requestBids({\n adUnitCodes: validInitialSlots.map(slot => (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(slot)),\n timeout: maxSlotTimeout > 0 ? maxSlotTimeout : configTimeout\n });\n }\n });\n googletag.cmd.push(() => {\n pageAdSlots\n .forEach((adSlot) => {\n var sizes = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(adSlot.m /*media*/.sz /*sizes*/, window);\n const divId = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(adSlot);\n const resolvedFloor = adSlot.f /*priceFloor*/ ??\n (config.pf /*priceFloor*/ ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(config.pf, window) : undefined);\n const gptSlot = googletag\n .defineSlot(adSlot.g /*gamAdUnitCode*/, sizes, divId)\n ?.addService(googletag.pubads());\n if (gptSlot) {\n // set googletag slot in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.updateAuctionEntry)(divId, {\n gptSlot: gptSlot\n });\n // merge all targeting sources (later sources take precedence)\n // order: kv (freeform) < gk (validated GAM) < dimensions (ad_server destination)\n const slotTargeting = {\n ...adSlot.tr?.kv,\n ...adSlot.tr?.gk,\n ...(0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildSlotTargeting)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), divId, window),\n };\n // slot level targeting (google publisher tag)\n Object.entries(slotTargeting).forEach(([key, value]) => {\n gptSlot.setTargeting(key, value);\n });\n if (resolvedFloor) {\n gptSlot.setTargeting(`${config.p /*targetKeyPrefix*/}_floor`, resolvedFloor.toString());\n }\n if (adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_4__.Anchor.Window) {\n (0,_stickySlot__WEBPACK_IMPORTED_MODULE_8__.setInsertSlotWorker)(adSlot, window); // add ad slot element to body before registering slot\n }\n (0,_auctionConductor__WEBPACK_IMPORTED_MODULE_1__.setRegisterSlotWorker)(gptSlot, window);\n }\n });\n });\n}\nasync function bootstrapWrapper(window = globalThis.window) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleDebug)(\"app info\" +\n \"\\n name: \" + \"app-p8efa792fe841a.js\" +\n \"\\n version: \" + \"0.0.10\" +\n \"\\n build date: \" + \"2026-01-11T07:23:11.497Z\", window);\n // set up failsafe early, so ads load even if pbjs fails\n setTimeout(() => {\n initAdserver(window);\n }, _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.f /*failsafeTimeout*/);\n // inject custom css early (synchronous, blocking) to reduce cls\n // config-level css applies to all slots via [data-wrapp-custom-style] selector\n if (_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.cc /*customCSS*/) {\n (0,_customCode__WEBPACK_IMPORTED_MODULE_12__.addCustomCSS)(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.cc /*customCSS*/, undefined, window);\n }\n // compute domain strings synchronously (needed for hash computation)\n const secondLevelDomain = window.location.hostname.split('.').slice(-2).join('.');\n const thirdLevelDomain = window.location.hostname.split('.').slice(-3).join('.');\n // run all async operations in parallel:\n // - experiment API call\n // - domain hash computations (crypto operations)\n const [activeInventory, sldHash, tldHash] = await Promise.all([\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.resolveInventoryConfig)(),\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.generateHash)(secondLevelDomain, 13),\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.generateHash)(thirdLevelDomain, 13)\n ]);\n // check config domain covers publisher domain\n if (![sldHash, tldHash].includes(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.d /*domain*/)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)(`inventory defined for different domain with ID '${_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.d /*domain*/}', no ads will be served`, false, window);\n return;\n }\n //TODO: check wrapper version compatibility with config version\n const pbjs = window.pbjs;\n const googletag = window.googletag;\n // initialize custom dimensions and wrapperTag API\n // 1. initialize dimension state (registry + validate PageVariable)\n // 2. initialize wrapperTag API (command queue processing)\n (0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.initializeDimension)(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.cd /*customDimensions*/, window);\n (0,_wrapperTag__WEBPACK_IMPORTED_MODULE_10__.initializeWrapperTag)(window);\n pbjs.que.push(() => {\n pbjs.initAdserverSet = true; // execute first once pbjs setup is complete\n // validate required Prebid modules are installed\n const installedModules = pbjs.installedModules || [];\n // check currency module for non-USD currencies\n if (_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c !== 'USD' && !installedModules.includes('currency')) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)(`CRITICAL: 'currency' module not included in prebid build, though currency set to '${_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c}'.`, false, window);\n }\n // check for priceFloors module if floors are configured\n const hasGlobalFloor = activeInventory.pf /*priceFloor*/ && ('a' /*all*/ in activeInventory.pf /*priceFloor*/ || 'd' /*desktop*/ in activeInventory.pf /*priceFloor*/ || 'm' /*mobile*/ in activeInventory.pf /*priceFloor*/);\n const hasSlotFloor = activeInventory.as /*adSlots*/.some(slot => slot.f /*floor*/ !== undefined) ||\n activeInventory.ly /*layouts*/.some(layout => layout.as.some(slot => slot.f /*floor*/ !== undefined));\n if ((hasGlobalFloor || hasSlotFloor) && !installedModules.includes('priceFloors')) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleError)(\"WARNING: 'priceFloors' module not included in prebid build, price floors will not be enforced.\", false, window);\n }\n const ortb2Config = (0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildORTB2Config)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), window);\n pbjs.setConfig({\n ...(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c !== 'USD' ? {\n currency: {\n adServerCurrency: _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c /*currencyCode*/ || 'USD',\n // prebid.org maintained currency file, updated daily\n conversionUrl: 'https://cdn.example.com/currency/latest.json',\n // fallback rates if needed\n // rates: wrapperConfig.cr/*currencyRates*/ || {}\n }\n } : {}),\n priceGranularity: {\n buckets: _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.pb /*priceBuckets*/.map((bucket) => ({\n min: Number(bucket.f /*floor*/),\n max: Number(bucket.c /*ceiling*/),\n increment: Number(bucket.s /*step*/),\n }))\n },\n ...((hasGlobalFloor || hasSlotFloor) ? {\n floors: {\n enforcement: {\n enforceJS: true, // enforce floors in prebidjs (reject low bids)\n floorDeals: true, // apply floors to deal bids\n bidAdjustment: true // apply floors after bid adjustments\n },\n ...(hasGlobalFloor ? {\n data: {\n currency: _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.c /*currencyCode*/,\n skipRate: 0, // never skip floor enforcement (0 = always enforce)\n floorsSchemaVersion: 1, // v1: direct default value\n // v2: requires modelGroups for a/b testing floor strategies\n default: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getValueByDevice)(activeInventory.pf, window)\n }\n } : {})\n }\n } : {}),\n // add ORTB2 first-party data for custom dimensions\n ...(ortb2Config ? { ortb2: ortb2Config } : {})\n });\n // register event handlers and workers early\n (0,_logger__WEBPACK_IMPORTED_MODULE_3__.initLogger)(window);\n (0,_logEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setDocumentEventLogHandlers)(window);\n (0,_logEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setAuctionEventLogHandlers)(window);\n // ensure googletag api is ready before registering log handlers for googletag events\n googletag.cmd.push(() => {\n (0,_logEventHandlers__WEBPACK_IMPORTED_MODULE_0__.setGPTEventLogHandlers)(window);\n });\n (0,_auctionConductor__WEBPACK_IMPORTED_MODULE_1__.setServeAdWorker)();\n });\n googletag.cmd.push(() => {\n googletag.pubads().disableInitialLoad();\n });\n // filter layouts applicable to current page\n const layouts = (activeInventory.ly /*layout*/\n ?.filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_5__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/))\n ?.filter((ly) => (0,_audiences__WEBPACK_IMPORTED_MODULE_6__.matchAudience)(ly, window) !== null)) ?? [];\n // collect all ad slots from matching layouts\n const layoutAdSlots = layouts.flatMap(ly => ly.as /*adSlots*/);\n // combine layout and global ad slots (config ad slots override layout ad slots)\n [\n ...layoutAdSlots,\n ...activeInventory.as /*adSlots*/,\n ].forEach((adSlot) => {\n const key = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getSlotDivId)(adSlot);\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.updateAuctionEntry)(key, {\n adSlot: adSlot\n });\n });\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getAllAuctionEntries)().length === 0) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_5__.consoleDebug)(`no ad slots defined for pagepath '${window.location.pathname}', ads will not be served`, window);\n return;\n }\n // Process ad slots with wrapper config\n processAdSlots((0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getAllAdSlots)(), _constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig, window);\n googletag.cmd.push(() => {\n // page-level targeting from layouts (merge kv and gk from all layouts)\n const layoutKVTargeting = Object.values(layouts)\n .map(layout => layout.tr?.kv || {})\n .reduce((acc, kv) => ({ ...acc, ...kv }), {});\n const layoutGKTargeting = Object.values(layouts)\n .map(layout => layout.tr?.gk || {})\n .reduce((acc, gk) => ({ ...acc, ...gk }), {});\n // merge all targeting sources (later sources take precedence)\n // order: kv (freeform) < gk (validated GAM) < dimensions (ad_server destination)\n const allPageLevelTargeting = {\n ...layoutKVTargeting,\n ...layoutGKTargeting,\n ...(0,_customDimensions_destinations__WEBPACK_IMPORTED_MODULE_11__.buildPageTargeting)((0,_customDimensions_dimensions__WEBPACK_IMPORTED_MODULE_9__.getAllDimensions)(), window),\n };\n Object.entries(allPageLevelTargeting).forEach(([key, value]) => {\n googletag.pubads().setTargeting(key, value);\n });\n });\n googletag.cmd.push(() => {\n googletag.pubads().enableSingleRequest(); // all ad slots should be defined and added to service before\n googletag.enableServices();\n });\n // execute custom script after all initialization is complete\n // custom script has access to wrapperTag, pbjs, and googletag\n if (_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.cs /*customScript*/) {\n (0,_customCode__WEBPACK_IMPORTED_MODULE_12__.executeCustomScript)(_constants_config__WEBPACK_IMPORTED_MODULE_7__.wrapperConfig.cs /*customScript*/, {\n wrapperTag: window.wrapperTag,\n pbjs: window.pbjs,\n googletag: window.googletag\n }, window);\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/bootstrap.ts?")},"./src/constants/config.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ wrapperConfig: () => (/* binding */ wrapperConfig)\n/* harmony export */ });\n// file: wrapper/src/constants/config.ts\nconst wrapperConfig = true\n ? __webpack_require__(/*! ../builds/8EFA792FE841A/0.0.10/config-d8efa792fe841a-v0-0-10.json */ "../builds/8EFA792FE841A/0.0.10/config-d8efa792fe841a-v0-0-10.json")\n : 0;\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/constants/config.ts?')},"./src/constants/loggerEndpoints.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AD_IMPRESSION_ENDPOINT: () => (/* binding */ AD_IMPRESSION_ENDPOINT),\n/* harmony export */ AD_SERVE_ENDPOINT: () => (/* binding */ AD_SERVE_ENDPOINT),\n/* harmony export */ AD_UNFILLED_ENDPOINT: () => (/* binding */ AD_UNFILLED_ENDPOINT),\n/* harmony export */ AD_VIEWABLE_ENDPOINT: () => (/* binding */ AD_VIEWABLE_ENDPOINT),\n/* harmony export */ AUCTION_END_ENDPOINT: () => (/* binding */ AUCTION_END_ENDPOINT),\n/* harmony export */ AUCTION_INIT_ENDPOINT: () => (/* binding */ AUCTION_INIT_ENDPOINT),\n/* harmony export */ BATCH_ENDPOINT: () => (/* binding */ BATCH_ENDPOINT),\n/* harmony export */ BID_REJECT_ENDPOINT: () => (/* binding */ BID_REJECT_ENDPOINT),\n/* harmony export */ BID_RESPONSE_ENDPOINT: () => (/* binding */ BID_RESPONSE_ENDPOINT),\n/* harmony export */ BID_TIMEOUTS_ENDPOINT: () => (/* binding */ BID_TIMEOUTS_ENDPOINT),\n/* harmony export */ BID_WON_ENDPOINT: () => (/* binding */ BID_WON_ENDPOINT),\n/* harmony export */ LOGGER_API_PATH: () => (/* binding */ LOGGER_API_PATH),\n/* harmony export */ LOGGER_API_V1_PATH: () => (/* binding */ LOGGER_API_V1_PATH),\n/* harmony export */ PAGE_VIEW_ENDPOINT: () => (/* binding */ PAGE_VIEW_ENDPOINT)\n/* harmony export */ });\n// file: wrapper/src/constants/loggerEndpoints.ts\nconst LOGGER_API_PATH = '/api/logger';\nconst LOGGER_API_V1_PATH = `${LOGGER_API_PATH}/v1`;\n// batch events\nconst BATCH_ENDPOINT = '/batch';\n// page events\nconst PAGE_VIEW_ENDPOINT = '/page/view';\n// auction events\nconst AUCTION_INIT_ENDPOINT = '/auction/init';\nconst AUCTION_END_ENDPOINT = '/auction/end';\n// bid events\nconst BID_RESPONSE_ENDPOINT = '/bid/response';\nconst BID_WON_ENDPOINT = '/bid/won';\nconst BID_REJECT_ENDPOINT = '/bid/reject';\nconst BID_TIMEOUTS_ENDPOINT = '/bid/timeout';\n// ad serve events\nconst AD_SERVE_ENDPOINT = '/ad/serve';\nconst AD_IMPRESSION_ENDPOINT = '/ad/impression';\nconst AD_VIEWABLE_ENDPOINT = '/ad/viewable';\nconst AD_UNFILLED_ENDPOINT = '/ad/unfilled';\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/constants/loggerEndpoints.ts?")},"./src/customCode.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addCustomCSS: () => (/* binding */ addCustomCSS),\n/* harmony export */ executeCustomScript: () => (/* binding */ executeCustomScript),\n/* harmony export */ removeAllCustomCSS: () => (/* binding */ removeAllCustomCSS),\n/* harmony export */ removeCustomCSS: () => (/* binding */ removeCustomCSS)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n// file: wrapper/src/customCode.ts\n/**\n * Custom code injection utilities for CSS and JavaScript.\n *\n * CSS: Injects into <head> BEFORE DOM manipulation to prevent Cumulative Layout Shift (CLS).\n * JS: Executes publisher-provided JavaScript after Prebid.js initializes with sandboxed context.\n *\n * Two levels of custom CSS:\n * 1. Config-level (global): Uses [data-wrapp-custom-style] selector\n * 2. Slot-level (slot-specific): Uses [data-wrapp-custom-style=\"dom-id\"] selector\n *\n * Security notes for custom scripts:\n * - Uses new Function() for sandboxed execution (requires 'unsafe-eval' in CSP)\n * - Wraps execution in try/catch to prevent script errors from breaking ad serving\n * - Emits wrapp:error events for monitoring and debugging\n * - Logs execution timing to detect slow scripts\n */\n\n// CSS Injection\n/**\n * Generate style element ID.\n * @param domId Optional DOM element ID. If provided, generates slot-specific ID.\n * If omitted, generates config-level ID.\n */\nconst styleId = (domId) => `wrapp-${domId ? `slot-${domId}` : 'config'}-css`;\n/**\n * Add custom CSS to the document.\n *\n * @param css CSS content to inject\n * @param domId Optional DOM element ID. If provided, creates slot-specific style.\n * If omitted, creates config-level style.\n * @param window Window object for DOM access\n */\nfunction addCustomCSS(css, domId, window = globalThis.window) {\n const id = styleId(domId);\n // Prevent duplicate injection\n if (window.document.getElementById(id))\n return;\n const style = window.document.createElement('style');\n style.id = id;\n style.textContent = css;\n // Insert at end of <head> for proper cascade order\n window.document.head.appendChild(style);\n}\n/**\n * Remove custom CSS from the document.\n *\n * @param domId Optional DOM element ID. If provided, removes slot-specific style.\n * If omitted, removes config-level style.\n * @param window Window object for DOM access\n */\nfunction removeCustomCSS(domId, window = globalThis.window) {\n window.document.getElementById(styleId(domId))?.remove();\n}\n/**\n * Remove all slot custom CSS (SPA cleanup).\n * Preserves config-level CSS since it's shared across pages.\n *\n * @param window Window object for DOM access\n */\nfunction removeAllCustomCSS(window = globalThis.window) {\n window.document.querySelectorAll('style[id^=\"wrapp-slot-\"][id$=\"-css\"]').forEach(el => el.remove());\n}\n// JavaScript Execution\n// Timing thresholds for performance monitoring\nconst EXECUTION_WARNING_THRESHOLD_MS = 100;\nconst EXECUTION_ERROR_THRESHOLD_MS = 5000;\n/**\n * Execute custom script from config.cs with error isolation.\n *\n * @param script Script content from config.cs\n * @param context Script execution context (wrapperTag, pbjs, googletag)\n * @param window Window object for DOM/event access\n */\nfunction executeCustomScript(script, context, window = globalThis.window) {\n // Error emission callback for runtime errors\n const emitError = (error) => {\n window.dispatchEvent(new CustomEvent('wrapp:error', {\n detail: {\n source: 'customScript',\n type: 'runtime',\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined\n }\n }));\n };\n // Create sandboxed execution context\n // Script is passed as parameter (not interpolated) to avoid template literal injection\n // Direct eval() is used so script can access wrapperTag, pbjs, googletag in scope\n const sandboxedExecutor = new Function('wrapperTag', 'pbjs', 'googletag', 'emitError', '__script__', `\n \"use strict\";\n try {\n eval(__script__);\n } catch (e) {\n console.error('[Wrapp] Custom script runtime error:', e);\n emitError(e);\n }\n `);\n const startTime = performance.now();\n // Execute the sandboxed script\n // Note: new Function() won't throw since body is a static string template\n // Runtime errors are caught by the inner try/catch in the function body\n sandboxedExecutor(context.wrapperTag, context.pbjs, context.googletag, emitError, script);\n // Post-execution timing check\n // Note: This doesn't PREVENT long-running scripts, but logs them for debugging\n const executionTime = performance.now() - startTime;\n if (executionTime > EXECUTION_ERROR_THRESHOLD_MS) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleError)(`Custom script took ${executionTime.toFixed(0)}ms - may have degraded page performance`, false, window);\n }\n else if (executionTime > EXECUTION_WARNING_THRESHOLD_MS) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`Custom script took ${executionTime.toFixed(0)}ms - consider optimizing`, window);\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customCode.ts?")},"./src/customDimensions/api.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDimensions: () => (/* binding */ getDimensions),\n/* harmony export */ setPageDimensions: () => (/* binding */ setPageDimensions),\n/* harmony export */ setSlotDimensions: () => (/* binding */ setSlotDimensions)\n/* harmony export */ });\n/* harmony import */ var _dimensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dimensions */ \"./src/customDimensions/dimensions.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"./src/utils.ts\");\n// file: wrapper/src/customDimensions/api.ts\n/**\n * Custom Dimensions API\n *\n * Internal API for custom dimensions:\n * - setPageDimensions, setSlotDimensions, getDimensions\n *\n * These functions are exposed via wrapperTag.\n */\n\n\n/**\n * Validate a single dimension value by key\n * Looks up dimension, validates value, logs debug on failure\n * Returns validated value or undefined if invalid\n */\nfunction validateDimensionValue(key, value, window) {\n const dim = (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.getDimensionByKey)(key);\n if (!dim) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`[CustomDimensions] Unknown dimension \"${key}\"`, window);\n return undefined;\n }\n const result = (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.validateValue)(dim, value);\n if (!result.valid) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`[CustomDimensions] Invalid value for \"${key}\": ${result.error}`, window);\n return undefined;\n }\n return value;\n}\n/**\n * Set page-level dimension values\n *\n * These values apply to all ad slots unless overridden by setSlotDimensions.\n * Values are validated against registered dimension schemas.\n *\n * @example\n * wrapperTag.setPageDimensions({\n * content_tier: 'premium',\n * page_section: 'sports'\n * });\n */\nfunction setPageDimensions(values, window = globalThis.window) {\n if (!values || typeof values !== 'object') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('[CustomDimensions] setPageDimensions requires an object', window);\n return;\n }\n const validValues = {};\n for (const [key, value] of Object.entries(values)) {\n const validated = validateDimensionValue(key, value, window);\n if (validated !== undefined) {\n validValues[key] = validated;\n }\n }\n if (Object.keys(validValues).length > 0) {\n (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.setPageDimensionsState)(validValues);\n }\n}\n/**\n * Set slot-specific dimension values\n *\n * These values override page-level values for the specified slot.\n * Values are validated against registered dimension schemas.\n *\n * @example\n * wrapperTag.setSlotDimensions('header-banner', {\n * pos: 'top',\n * content_tier: 'standard'\n * });\n */\nfunction setSlotDimensions(slotId, values, window = globalThis.window) {\n if (!slotId || typeof slotId !== 'string') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('[CustomDimensions] setSlotDimensions requires a slot ID', window);\n return;\n }\n if (!values || typeof values !== 'object') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('[CustomDimensions] setSlotDimensions requires an object', window);\n return;\n }\n const validValues = {};\n for (const [key, value] of Object.entries(values)) {\n const validated = validateDimensionValue(key, value, window);\n if (validated !== undefined) {\n validValues[key] = validated;\n }\n }\n if (Object.keys(validValues).length > 0) {\n (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.setSlotDimensionsState)(slotId, validValues);\n }\n}\n/**\n * Get all dimension values (for debugging)\n *\n * Returns resolved values for all registered dimensions.\n * Precedence: slot override > page value > inline config > config source\n *\n * @example\n * console.log(wrapperTag.getDimensions()); // page-level values\n * console.log(wrapperTag.getDimensions('slot-123')); // slot-specific values\n */\nfunction getDimensions(slotId, window = globalThis.window) {\n const result = {};\n for (const dim of (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.getAllDimensions)()) {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_0__.resolveValue)(dim, slotId, window);\n if (value !== undefined) {\n result[dim.k /*key*/] = value;\n }\n }\n return result;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customDimensions/api.ts?")},"./src/customDimensions/destinations.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ buildORTB2Config: () => (/* binding */ buildORTB2Config),\n/* harmony export */ buildORTB2Imp: () => (/* binding */ buildORTB2Imp),\n/* harmony export */ buildPageTargeting: () => (/* binding */ buildPageTargeting),\n/* harmony export */ buildSlotTargeting: () => (/* binding */ buildSlotTargeting)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _dimensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dimensions */ \"./src/customDimensions/dimensions.ts\");\n// file: wrapper/src/customDimensions/destinations.ts\n\n\n// =============================================================================\n// ORTB2 Builders (Auction Destination)\n// =============================================================================\n/**\n * Build global ORTB2 config for Prebid.js\n *\n * Routes dimensions with SITE or USER placement to ortb2.site.ext.data or ortb2.user.ext.data\n * Used with pbjs.setConfig({ ortb2: ... })\n *\n * @param dimensions Array of dimension configs\n * @param window Window object for value resolution\n * @returns ORTB2 config object or undefined if no global dimensions\n */\nfunction buildORTB2Config(dimensions, window = globalThis.window) {\n const siteData = {};\n const userData = {};\n // Filter to Site/User placements (Slot handled in buildORTB2Imp)\n dimensions\n .filter(dim => dim.ds /*destinations*/.au /*auction*/ && dim.ds.au.p /*placement*/ !== _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Slot)\n .forEach(dim => {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_1__.resolveValue)(dim, undefined, window);\n if (value === undefined)\n return;\n switch (dim.ds.au.p /*placement*/ || _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Site) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Site:\n siteData[dim.k /*key*/] = value;\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.User:\n userData[dim.k /*key*/] = value;\n break;\n }\n });\n if (Object.keys(siteData).length === 0 && Object.keys(userData).length === 0) {\n return undefined;\n }\n const result = {};\n if (Object.keys(siteData).length > 0)\n result.site = { ext: { data: siteData } };\n if (Object.keys(userData).length > 0)\n result.user = { ext: { data: userData } };\n return result;\n}\n/**\n * Build per-impression ORTB2 config for a single ad slot\n *\n * Routes dimensions with SLOT placement to ortb2Imp.ext.data\n * Used on individual Prebid ad units\n *\n * @param dimensions Array of dimension configs\n * @param slotId Slot ID for value resolution\n * @param window Window object for value resolution\n * @returns ORTB2Imp config or undefined if no slot-level dimensions\n */\nfunction buildORTB2Imp(dimensions, slotId, window = globalThis.window) {\n const slotData = {};\n dimensions\n .filter(dim => dim.ds /*destinations*/.au /*auction*/?.p /*placement*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.ORTBPlacement.Slot)\n .forEach(dim => {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_1__.resolveValue)(dim, slotId, window);\n if (value !== undefined)\n slotData[dim.k /*key*/] = value;\n });\n if (Object.keys(slotData).length === 0) {\n return undefined;\n }\n return { ext: { data: slotData } };\n}\n// =============================================================================\n// GAM Targeting Builder (Ad Server Destination)\n// =============================================================================\n/**\n * Build GAM targeting key-values from custom dimensions (internal)\n */\nfunction buildTargeting(dimensions, slotId, window) {\n const result = {};\n dimensions\n .filter(dim => dim.ds /*destinations*/.as /*adServer*/?.g /*gamKeyName*/)\n .forEach(dim => {\n const value = (0,_dimensions__WEBPACK_IMPORTED_MODULE_1__.resolveValue)(dim, slotId, window);\n if (value === undefined)\n return;\n const targetingKey = dim.ds.as.g;\n result[targetingKey] = typeof value === 'boolean' ? (value ? 'true' : 'false') : String(value);\n });\n return result;\n}\n/**\n * Build page-level GAM targeting from custom dimensions\n */\nfunction buildPageTargeting(dimensions, window = globalThis.window) {\n return buildTargeting(dimensions, undefined, window);\n}\n/**\n * Build slot-level GAM targeting from custom dimensions\n */\nfunction buildSlotTargeting(dimensions, slotId, window = globalThis.window) {\n return buildTargeting(dimensions, slotId, window);\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customDimensions/destinations.ts?")},"./src/customDimensions/dimensions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAllDimensions: () => (/* binding */ getAllDimensions),\n/* harmony export */ getDimensionByKey: () => (/* binding */ getDimensionByKey),\n/* harmony export */ initializeDimension: () => (/* binding */ initializeDimension),\n/* harmony export */ resolveValue: () => (/* binding */ resolveValue),\n/* harmony export */ setPageDimensionsState: () => (/* binding */ setPageDimensionsState),\n/* harmony export */ setSlotDimensionsState: () => (/* binding */ setSlotDimensionsState),\n/* harmony export */ validateValue: () => (/* binding */ validateValue)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types/enums */ \"./src/types/enums.ts\");\n// file: wrapper/src/customDimensions/dimensions.ts\n\n// Registry (dimension schemas from config)\n/** Map of dimension key to config */\nconst dimensionsByKey = new Map();\n/**\n * Get dimension config by key\n */\nfunction getDimensionByKey(key) {\n return dimensionsByKey.get(key);\n}\n/**\n * Get all dimension configs\n */\nfunction getAllDimensions() {\n return Array.from(dimensionsByKey.values());\n}\n// Value Storage (runtime values from publisher API)\n/** Page-level dimension values (apply to all slots unless overridden) */\nconst pageDimensions = {};\n/** Slot-specific dimension values (override page-level) */\nconst slotDimensions = new Map();\n/**\n * Set page-level dimension values\n * Merges with existing values (later calls override earlier)\n */\nfunction setPageDimensionsState(values) {\n Object.assign(pageDimensions, values);\n}\n/**\n * Set slot-specific dimension values\n * Merges with existing values for that slot\n */\nfunction setSlotDimensionsState(slotId, values) {\n const existing = slotDimensions.get(slotId) || {};\n slotDimensions.set(slotId, { ...existing, ...values });\n}\n// Resolution (value resolution with precedence)\n/**\n * Get a nested property from an object using dot notation\n * e.g., getNestedProperty(window, 'PAGE_DATA.section') -> window.PAGE_DATA.section\n */\nfunction getNestedProperty(obj, path) {\n const parts = path.split('.');\n let current = obj;\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined;\n }\n current = current[part];\n }\n return current;\n}\n/**\n * Get inline dimensions from window.__WRAPP_DIMENSIONS__\n */\nfunction getInlineDimensions(window) {\n return window.__WRAPP_DIMENSIONS__ || {};\n}\n/**\n * Resolve value for a dimension\n *\n * Precedence (highest to lowest):\n * 1. Slot-specific runtime value (wrapp.setSlotDimensions)\n * 2. Page-level runtime value (wrapp.setPageDimensions)\n * 3. Inline config (window.__WRAPP_DIMENSIONS__)\n * 4. Value source config (static value, page variable)\n *\n * @param dim Dimension configuration\n * @param slotId Ad slot ID for slot-specific resolution\n * @param window Window object for accessing page variables\n * @returns Resolved value or undefined if not available\n */\nfunction resolveValue(dim, slotId, window = globalThis.window) {\n // 1. Check slot-specific runtime override (only if slotId provided)\n const slotValue = slotId && slotDimensions.get(slotId)?.[dim.k /*key*/];\n if (slotValue !== undefined) {\n return slotValue;\n }\n // 2. Check page-level runtime value\n const pageValue = pageDimensions[dim.k /*key*/];\n if (pageValue !== undefined) {\n return pageValue;\n }\n // 3. Check inline config (window.__WRAPP_DIMENSIONS__)\n const inlineValue = getInlineDimensions(window)[dim.k /*key*/];\n if (inlineValue !== undefined) {\n return inlineValue;\n }\n // 4. Resolve from value source config\n const vs = dim.vs; /*valueSource*/\n switch (vs.t /*type*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.Static:\n return vs.g /*gamPredefinedValue*/ || vs.v /*staticValue*/;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.PageVariable:\n if (vs.v /*variable*/) {\n const rawValue = getNestedProperty(window, vs.v /*variable*/);\n if (validateValue(dim, rawValue).valid) {\n return rawValue;\n }\n }\n return undefined;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.Runtime:\n default:\n // Runtime has no default - value must be provided via API\n return undefined;\n }\n}\n/**\n * Validate a value against dimension schema\n * Checks basic type (string, number, boolean) for all dimensions,\n * plus schema constraints (max length, enum values) when validation config exists.\n */\nfunction validateValue(dim, value) {\n // Check value is not null/undefined\n if (value === null || value === undefined) {\n return { valid: false, error: 'Value is required' };\n }\n // Basic type check for all dimensions\n if (!['string', 'number', 'boolean'].includes(typeof value)) {\n return { valid: false, error: 'Expected string, number, or boolean' };\n }\n // Additional schema validation when validation config exists\n if (!dim.vl /*validation*/) {\n return { valid: true };\n }\n const vl = dim.vl /*validation*/;\n switch (vl.t /*type*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.String:\n if (typeof value !== 'string') {\n return { valid: false, error: 'Expected string value' };\n }\n if (vl.m /*maxLength*/ !== undefined && value.length > vl.m /*maxLength*/) {\n return { valid: false, error: `Value exceeds max length of ${vl.m /*maxLength*/}` };\n }\n return { valid: true };\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.Enum:\n if (typeof value !== 'string') {\n return { valid: false, error: 'Expected string value for enum' };\n }\n if (!vl.av /*allowedValues*/.includes(value)) {\n return { valid: false, error: `Value must be one of: ${vl.av /*allowedValues*/.join(', ')}` };\n }\n return { valid: true };\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.Boolean:\n if (typeof value !== 'boolean') {\n return { valid: false, error: 'Expected boolean value' };\n }\n return { valid: true };\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.DimensionValueType.Number:\n if (typeof value !== 'number' || isNaN(value)) {\n return { valid: false, error: 'Expected numeric value' };\n }\n return { valid: true };\n default:\n return { valid: true };\n }\n}\n// Initialization\n/**\n * Initialize dimension state from config\n *\n * Sets up registry from config and applies inline config (window.__WRAPP_DIMENSIONS__).\n * Call this before initializeWrapperTag() to ensure registry is ready for validation.\n *\n * @param configs Array of dimension configs from server (config.cd)\n * @param window Window object for accessing inline config\n */\nfunction initializeDimension(configs, window = globalThis.window) {\n // 1. Initialize registry from config\n dimensionsByKey.clear();\n if (configs) {\n for (const config of configs) {\n dimensionsByKey.set(config.k /*key*/, config);\n }\n }\n // 2. Validate PageVariable dimensions at init (warn about misconfigurations)\n // Values are read from window in real-time by resolveValue(), not cached\n Array.from(dimensionsByKey.values())\n .filter(dim => dim.vs /*valueSource*/.t /*type*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.ValueSourceType.PageVariable)\n .forEach(dim => {\n const v = dim.vs.v /*variable*/;\n const rawValue = getNestedProperty(window, v);\n const result = validateValue(dim, rawValue);\n if (!result.valid) {\n console.warn(`[Dimensions] Invalid PageVariable value for '${dim.k /*key*/}' ` +\n `from '${v}': ${result.error}`);\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/customDimensions/dimensions.ts?")},"./src/dynamicSlot.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deleteDynamicAdSlot: () => (/* binding */ deleteDynamicAdSlot),\n/* harmony export */ insertDynamicAdSlot: () => (/* binding */ insertDynamicAdSlot),\n/* harmony export */ insertStickyAdSlot: () => (/* binding */ insertStickyAdSlot),\n/* harmony export */ setDynamicSlotHandler: () => (/* binding */ setDynamicSlotHandler)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bootstrap */ \"./src/bootstrap.ts\");\n/* harmony import */ var _stickySlot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stickySlot */ \"./src/stickySlot.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _customCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./customCode */ \"./src/customCode.ts\");\n// file: wrapper/src/dynamicSlot.ts\n\n\n\n\n\n\n\nfunction setDynamicSlotHandler() {\n // setup event listener for new elements to have been added or getting close to view, and invoke insertDynamicAdSlot() when applicable\n // invoke deleteDynamicSlot() when dynamic ad slot far from view port\n}\nasync function insertDynamicAdSlot(divId, reference, window = globalThis.window) {\n // check if slot already exists to prevent duplicates\n const slotElementId = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.slotId)(reference, divId);\n if (window.document.getElementById(slotElementId)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleError)(`Dynamic slot already exists: ${slotElementId}`, true, window);\n }\n const inventoryConfig = await (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.resolveInventoryConfig)();\n // filter layouts applicable to current page\n const layouts = inventoryConfig.ly /*layout*/\n .filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_2__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/));\n // find matching dynamic ad slot (Dynamic or OnDemand load types)\n const adSlot = inventoryConfig.as /*adSlots*/\n .concat(layouts.flatMap(ly => ly.as /*adSlots*/))\n .find(slot => slot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.Anchor.DynamicElement &&\n [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.Dynamic, _types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.OnDemand].includes(slot.l /*load*/) &&\n slot.n /*insert*/.d /*divId*/ === divId &&\n slot.n /*insert*/.r /*reference*/ === reference);\n if (!adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleError)(`no dynamic ad slot config defined for element id '${divId}' and reference '${reference}'`, true, window);\n }\n const adSlotInstance = {\n ...adSlot,\n n: { ...adSlot.n, d: divId }\n };\n const slotDiv = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.addSlotElement)(adSlotInstance.n /*insert*/, adSlot.cc /*customCSS*/, window);\n if (slotDiv) {\n (0,_bootstrap__WEBPACK_IMPORTED_MODULE_3__.processAdSlots)([adSlotInstance], _constants_config__WEBPACK_IMPORTED_MODULE_5__.wrapperConfig, window);\n }\n}\nasync function insertStickyAdSlot(reference, window = globalThis.window) {\n const inventoryConfig = await (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.resolveInventoryConfig)();\n // filter layouts applicable to current page\n const layouts = inventoryConfig.ly /*layout*/\n .filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_2__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/));\n // find matching sticky ad slot (Dynamic or OnDemand load types, Window anchor)\n const adSlot = inventoryConfig.as /*adSlots*/\n .concat(layouts.flatMap(ly => ly.as /*adSlots*/))\n .find(slot => slot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_0__.Anchor.Window &&\n [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.Dynamic, _types_enums__WEBPACK_IMPORTED_MODULE_0__.Load.OnDemand].includes(slot.l /*load*/) &&\n slot.n /*insert*/.r /*reference*/ === reference);\n if (!adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`no dynamic sticky ad slot config defined for reference '${reference}'`, window);\n return;\n }\n (0,_stickySlot__WEBPACK_IMPORTED_MODULE_4__.addStickySlot)(adSlot.n /*insert*/, adSlot.cc /*customCSS*/, window);\n (0,_bootstrap__WEBPACK_IMPORTED_MODULE_3__.processAdSlots)([adSlot], _constants_config__WEBPACK_IMPORTED_MODULE_5__.wrapperConfig, window);\n}\nfunction deleteDynamicAdSlot(divId, window = globalThis.window) {\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.getAuctionEntry)(divId);\n if (!entry) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`deleteDynamicAdSlot: no auction entry found for divId '${divId}'`, window);\n return;\n }\n // clean up googletag slot\n if (entry.gptSlot) {\n const googletag = window.googletag;\n if (googletag) {\n googletag.cmd.push(() => {\n googletag.destroySlots([entry.gptSlot]);\n });\n }\n }\n // clean up prebid ad unit\n if (entry.adUnit) {\n const pbjs = window.pbjs;\n pbjs.que.push(() => {\n pbjs.removeAdUnit(entry.adUnit.code);\n });\n }\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_1__.deleteAuctionEntry)(divId);\n // need adSlot config to compute dom element id\n if (!entry.adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`deleteDynamicAdSlot: auction entry for divId '${divId}' missing adSlot config`, window);\n return;\n }\n const domElementId = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.slotId)(entry.adSlot.n /*insert*/.r /*reference*/, divId);\n // clean up slot css (spa support)\n (0,_customCode__WEBPACK_IMPORTED_MODULE_6__.removeCustomCSS)(domElementId, window);\n // TODO: remove any handlers associated with this slot\n // remove element from DOM\n const element = window.document.getElementById(domElementId);\n if (element) {\n element.remove();\n }\n else {\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.consoleDebug)(`deleteDynamicAdSlot: DOM element '${domElementId}' not found for divId '${divId}'`, window);\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/dynamicSlot.ts?")},"./src/experiments.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyExperimentVariant: () => (/* binding */ applyExperimentVariant)\n/* harmony export */ });\n/* harmony import */ var xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xxhash-wasm */ \"../node_modules/xxhash-wasm/esm/xxhash-wasm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n// file: wrapper/src/experiments.ts\n\n\n\nconst MAX_HASH_32 = 4294967295; // 2^32 - 1\n/**\n * apply variation delta changes to base configuration\n * handles nested objects, arrays, and removed keys\n */\nfunction applyJsonDelta(base, delta) {\n const result = { ...base };\n // apply changes\n for (const [key, value] of Object.entries(delta)) {\n if (key === 'v')\n continue; // skip 'v' as it's variation id metadata, not a config field\n if (value === undefined || value === null) {\n delete result[key];\n }\n else if (typeof value === 'object' &&\n !Array.isArray(value) &&\n typeof result[key] === 'object' &&\n result[key] !== null &&\n !Array.isArray(result[key])) {\n // recursively merge nested objects\n result[key] = applyJsonDelta(result[key], value);\n }\n else {\n // direct replacement (including arrays and primitives)\n result[key] = value;\n }\n }\n return result;\n}\n/**\n * @param audienceId can be either userId or sessionId\n * @param experimentId experiment identifier\n * @returns number between [0, 1]\n */\nasync function getProjection(audienceId, experimentId) {\n const { h32 } = await (0,xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n const data = `${audienceId}:${experimentId}`;\n // compute hash\n const xxHash32 = h32(data, 0); // seed 0 explicitly\n // normalize to [0, 1]\n const projection = parseFloat((Number(xxHash32) / Number(MAX_HASH_32)).toFixed(2));\n if (projection < 0 || projection > 1) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Invalid projection ${projection} for experiment ${experimentId}`, true);\n }\n return projection;\n}\n/**\n * fetch variant allocations from test api\n * returns array of {v: variationId, a: allocation percentage}\n */\nasync function getVariantAllocation(experimentId, testsApiPath) {\n const apiUrl = `https://${_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.e}${testsApiPath}/${experimentId}/allocations/`;\n return fetch(apiUrl, {\n method: \"GET\"\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(`API error: ${response.status} ${response.statusText}`);\n }\n return response.json();\n })\n .then(allocations => {\n if (!Array.isArray(allocations)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Invalid allocation response: expected array, got ${typeof allocations}`);\n return [];\n }\n return allocations.map(a => ({\n v /*variationId*/: a.i || a.v, // handle both 'i' and 'v' field names\n a /*allocation*/: a.a\n }));\n })\n .catch(error => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Error fetching variant allocations for ${experimentId}:`, false, error);\n return [];\n });\n}\n/**\n * apply experiment variant to wrapper config\n * returns inventory config after applying variant deltas\n */\nasync function applyExperimentVariant(config) {\n // extract base inventory config with direct assignment, WrapperConfig extends InventoryConfig\n const baseInventory = config;\n // Get user projection for this experiment\n const userId = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getUserId)();\n const projection = await getProjection(userId, config.x /*experimentId*/);\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`User projection for experiment ${config.x /*experimentId*/}: ${projection}`);\n // Get variant allocations from API\n const allocations = await getVariantAllocation(config.x /*experimentId*/, config.t /*testsApiPath*/);\n // Determine which variant applies to this user\n let selectedVariant = null;\n let cumAlloc = 0;\n for (const allocation of allocations) {\n cumAlloc += allocation.a /*trafficAllocation*/ / 100; // convert percentage to decimal\n if (projection <= cumAlloc) {\n if (allocation.v /*variationId*/ === config.b /*baseVariationId*/) {\n // base/control variation applies, no delta to apply\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Running experiment ${config.x /*experimentId*/} with base variation ${config.b /*baseVariationId*/} for projection ${projection}`);\n return baseInventory;\n }\n // Find variant config for allocation\n selectedVariant = config.vr.find(v => v.v /*variationId*/ === allocation.v /*variationId*/) || null;\n if (!selectedVariant) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Variant ${allocation.v /*variationId*/} in allocation but not found in config`);\n }\n break;\n }\n }\n // apply selected variant\n if (selectedVariant) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Running experiment ${config.x} with variation ${selectedVariant.v} for projection ${projection}`);\n // apply delta to reconstruct full config\n // extract base inventory config with direct assignment, WrapperConfig extends InventoryConfig\n const mergedConfig = applyJsonDelta(config, selectedVariant);\n return mergedConfig;\n }\n // no variant matched projection (should not happen when 100% allocation)\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`No variant matched projection ${projection} for experiment ${config.x /*experimentId*/}`);\n return baseInventory;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/experiments.ts?")},"./src/index.ts":(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n// file: wrapper/src/index.ts\nconst WRAPPER_VERSION = '0.1';\n// queue to execute ad server tasks in order\nwindow.googletag = window.googletag || { cmd: [] };\n// queue to execute auction tasks in order\nwindow.pbjs = window.pbjs || { que: [] };\n// window.__gpp = {\n// getSection: function(sectionId, callback) {\n// callback({\n// gppString: 'DBABMA~CPXxRfAPXxRfABABQBENB-CgAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA',\n// applicableSections: ['tcfeu', 'usca'], // GDPR and US Privacy\n// });\n// },\n// };\nPromise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./bootstrap */ \"./src/bootstrap.ts\")).then(({ bootstrapWrapper }) => {\n bootstrapWrapper().catch(error => {\n console.error('Wrapper bootstrap failed:', error);\n });\n});\n// anchor to view_port (sticky ads) -- always loaded eager\n// anchor to static_content (standard ads) -- loaded eager or lazy\n// anchor to dynamic_content; --\x3e div id regex or class name -- loaded lazy\n// ad slots can be insertion can be on page content, sticky, and dynamic\n// ads can be loaded -- eager or lazy\n//TODOs\n//for eager slots auction can end before winner has been declared from bid responses\n//auction end includes array of bid responses\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/index.ts?")},"./src/logEventHandlers.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setAuctionEventLogHandlers: () => (/* binding */ setAuctionEventLogHandlers),\n/* harmony export */ setDocumentEventLogHandlers: () => (/* binding */ setDocumentEventLogHandlers),\n/* harmony export */ setGPTEventLogHandlers: () => (/* binding */ setGPTEventLogHandlers)\n/* harmony export */ });\n/* harmony import */ var _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logObjectBuilder */ \"./src/logObjectBuilder.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \"./src/logger.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constants/loggerEndpoints */ \"./src/constants/loggerEndpoints.ts\");\n// file: wrapper/src/logEventHandlers.ts\n\n\n\n\n\n\nfunction setAuctionEventLogHandlers(window = globalThis.window) {\n const pbjs = window.pbjs;\n pbjs.onEvent('auctionInit', (auction) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.auctionInit', auction);\n // update auction map with latest auction ids\n if (auction?.adUnits && Array.isArray(auction.adUnits)) {\n auction.adUnits.forEach((adUnit) => {\n const key = adUnit.div; // TODO: use adUnit.adUnitId instead of adUnit.div ?\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.updateAuctionEntry)(key, {\n pbAuctionId: auction.auctionId,\n pbAdUnitId: adUnit.adUnitId,\n pbTransactionId: adUnit.transactionId\n });\n });\n }\n const auctionInit = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.auctionInitObject(auction);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AUCTION_INIT_ENDPOINT, auctionInit, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in auctionInit handler', false, window, error);\n }\n });\n pbjs.onEvent('bidResponse', (bid) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidResponse', bid);\n const bidResponse = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidResponseObject(bid);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_RESPONSE_ENDPOINT, bidResponse, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in bidResponse handler', false, window, error);\n }\n });\n pbjs.onEvent('bidWon', (bid) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidWon', bid);\n const bidWon = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidWonObject(bid);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_WON_ENDPOINT, bidWon, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in bidWon handler', false, window, error);\n }\n });\n pbjs.onEvent('bidRejected', (bid) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidRejected', bid);\n const bidRejected = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidRejectedObject(bid, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_REJECT_ENDPOINT, bidRejected, window);\n });\n pbjs.onEvent('bidTimeout', (bids) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.bidTimeout', bids);\n bids.forEach(bid => {\n const bidTimeout = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.bidTimeoutObject(bid);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.BID_TIMEOUTS_ENDPOINT, bidTimeout, window);\n });\n });\n pbjs.onEvent('auctionEnd', (auction) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.auctionEnd', auction);\n const auctionEnd = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.auctionEndObject(auction);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AUCTION_END_ENDPOINT, auctionEnd, window);\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in auctionEnd handler', false, window, error);\n }\n });\n pbjs.onEvent('adRenderSucceeded', (data) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.adRenderSucceeded', data);\n const adServe = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adServeObject(data.bid, { serveStatus: _types_enums__WEBPACK_IMPORTED_MODULE_4__.ServeStatus.Success, serveTimestamp: Date.now() /*utc timestamp*/, failReason: null });\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_SERVE_ENDPOINT, adServe, window);\n });\n pbjs.onEvent('adRenderFailed', (data) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pbjs.events.adRenderFailed', data);\n const adServe = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adServeObject(data.bid, { serveStatus: _types_enums__WEBPACK_IMPORTED_MODULE_4__.ServeStatus.Fail, failReason: data.reason, serveTimestamp: null });\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_SERVE_ENDPOINT, adServe, window);\n });\n}\nfunction setDocumentEventLogHandlers(window = globalThis.window) {\n if (window.document.readyState === 'loading') {\n window.document.addEventListener('DOMContentLoaded', logPageView);\n }\n else {\n // DOMContentLoaded already fired, call function immediately\n logPageView();\n }\n function logPageView() {\n const pageView = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.pageViewObject(window);\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('pageView', pageView);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.PAGE_VIEW_ENDPOINT, pageView, window);\n }\n}\nfunction setGPTEventLogHandlers(window = globalThis.window) {\n googletag.pubads().addEventListener('slotRequested', (event) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.slotRequested', event);\n // save auction ids to served when slot is requested\n if (!event.slot || typeof event.slot.getSlotElementId !== 'function') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Invalid slot in slotRequested event', false, window, event);\n return;\n }\n const slotId = event.slot.getSlotElementId();\n const current = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(slotId);\n if (current?.pbAuctionId) {\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.updateAuctionEntry)(slotId, {\n pbServedAuctionId: current.pbAuctionId,\n pbServedTransactionId: current.pbTransactionId\n });\n }\n });\n googletag.pubads().addEventListener('slotResponseReceived', (event) => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.slotResponseReceived', event);\n });\n googletag.pubads().addEventListener('slotRenderEnded', (event) => {\n try {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.SlotRenderEndedEvent', event);\n // skip event log for slots not managed by wrapper\n const slotId = event.slot.getSlotElementId();\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(slotId);\n if (!entry?.adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('Skipping slotRenderEnded for non-wrapper slot', slotId);\n return;\n }\n if (event.isEmpty) { // no impression\n const adUnfilled = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adUnfilledObject(event.slot, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_UNFILLED_ENDPOINT, adUnfilled, window);\n }\n else { //impression\n // TODO: look into slot renders with sizes 1x1\n // if (event.size && (event.size[0] === 1 && event.size[1] === 1)) {\n // ignore pixel renders\n // }\n // else {\n const adImpression = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adImpressionObject(event, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_IMPRESSION_ENDPOINT, adImpression, window);\n // }\n }\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in slotRenderEnded handler', false, window, error);\n }\n });\n googletag.pubads().addEventListener(\"impressionViewable\", (event) => {\n try {\n if (!event.slot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Invalid slot in impressionViewable event', false, window, event);\n return;\n }\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('googletag.events.ImpressionViewableEvent', event, event.slot.getResponseInformation ? event.slot.getResponseInformation() : 'no response info');\n if (typeof event.slot.getSlotElementId !== 'function') {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Invalid slot.getSlotElementId in impressionViewable event', false, window, event);\n return;\n }\n const slotId = event.slot.getSlotElementId();\n // skip event log for slots not managed by wrapper\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(slotId);\n if (!entry?.adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)('Skipping impressionViewable for non-wrapper slot', slotId);\n return;\n }\n const slotDiv = window.document.getElementById(slotId);\n const iframe = slotDiv?.querySelector('iframe') ?? null;\n const size = iframe?.width + 'x' + iframe?.height;\n if (size === '1x1') {\n // ignore pixel renders\n }\n else {\n const adView = _logObjectBuilder__WEBPACK_IMPORTED_MODULE_0__.adViewableObject(event.slot, Date.now() /* utc timestamp */);\n (0,_logger__WEBPACK_IMPORTED_MODULE_2__.logEvent)(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_5__.AD_VIEWABLE_ENDPOINT, adView, window);\n }\n }\n catch (error) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)('Error in impressionViewable handler', false, window, error);\n }\n });\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/logEventHandlers.ts?")},"./src/logObjectBuilder.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ adImpressionObject: () => (/* binding */ adImpressionObject),\n/* harmony export */ adServeObject: () => (/* binding */ adServeObject),\n/* harmony export */ adUnfilledObject: () => (/* binding */ adUnfilledObject),\n/* harmony export */ adViewableObject: () => (/* binding */ adViewableObject),\n/* harmony export */ auctionEndObject: () => (/* binding */ auctionEndObject),\n/* harmony export */ auctionInitObject: () => (/* binding */ auctionInitObject),\n/* harmony export */ bidRejectedObject: () => (/* binding */ bidRejectedObject),\n/* harmony export */ bidResponseObject: () => (/* binding */ bidResponseObject),\n/* harmony export */ bidTimeoutObject: () => (/* binding */ bidTimeoutObject),\n/* harmony export */ bidWonObject: () => (/* binding */ bidWonObject),\n/* harmony export */ pageViewObject: () => (/* binding */ pageViewObject)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _audiences__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audiences */ \"./src/audiences.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auctionState */ \"./src/auctionState.ts\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n// file: wrapper/src/logObjectBuilder.ts\n\n\n\n\n\n\nconst page_view_id = (0,uuid__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\nfunction pageViewObject(window = globalThis.window) {\n // TODO: return timezone when locale unavailable\n const pageView = {\n page_view_id: page_view_id,\n app_ver: \"0.0.10\",\n view_start_time: Date.now(),\n domain: window.location.hostname,\n page_path: window.location.pathname,\n session_id: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSessionId)(),\n user_id: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUserId)(),\n device: {\n user_agent: navigator.userAgent,\n // some browsers return comma-separated language lists; extract primary language to ensure 5-char limit\n language: (navigator.language || '').split(',')[0].trim().substring(0, 5),\n mobile: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUserDevice)(window) === _types_enums__WEBPACK_IMPORTED_MODULE_2__.Device.Mobile,\n view_port: {\n width: window.innerWidth,\n height: window.innerHeight\n },\n geo_location: (0,_audiences__WEBPACK_IMPORTED_MODULE_1__.getUserCountry)()\n },\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return pageView;\n}\nfunction auctionInitObject(auction) {\n const auctionInit = {\n page_view_id: page_view_id,\n pb_auction_id: auction.auctionId,\n auction_start_time: auction.timestamp, /* UTC timestamp */\n auction_end_time: null, /* UTC timestamp */\n ad_slots: [],\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n auction.adUnits.forEach((adUnit) => {\n const key = adUnit.div;\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key) ?? {};\n const adSlot = entry.adSlot ?? null;\n if (!adSlot) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`[auctionInitObject] no ad slot match for divId='${adUnit.div}'`, adUnit, (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAllAuctionEntries)());\n }\n const layoutIds = _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.ly /*layouts*/\n .filter((layout) => layout.as /*adSlots*/.some((slot) => slot.i /*id*/ === adSlot?.i /*id*/))\n .map((layout) => layout.i /*id*/);\n const priceFloor = adSlot?.f /*priceFloor*/\n ?? (_constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.pf /*priceFloor*/ ? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.pf /*priceFloor*/, globalThis.window) : null);\n const demandSeatIds = adSlot?.tg /*tagIds*/\n ?.map(tagId => (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[tagId.a /*alias*/]?.d /*demandSeatId*/) ?? [];\n auctionInit.ad_slots.push({\n pb_adunit_id: adUnit.adUnitId ?? null,\n pb_transaction_id: adUnit.transactionId ?? null,\n adslot_id: adSlot?.i /*id*/ ?? null,\n layout_ids: layoutIds,\n adunit_code: adSlot?.g /*gamAdUnitCode*/ ?? null,\n div_id: adUnit.div,\n price_floor: priceFloor,\n deal_id: null,\n demand_seat_ids: demandSeatIds,\n serve_type: entry?.serveType ?? null\n });\n });\n return auctionInit;\n}\n/**\n * Note: bid.bidderCode contains alias registered via pbjs.aliasBidder(bidder, alias).\n */\nfunction bidResponseObject(bid) {\n const bidResponse = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n cpm: bid.cpm ? bid.cpm : null, // TODO handle scenario if bidder responds with 0\n cpm_currency: bid.currency,\n size: bid.size,\n deal_id: bid.dealId ?? null,\n time_to_respond: bid.timeToRespond,\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidResponse;\n}\nfunction bidWonObject(bid) {\n const bidWon = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n cpm: bid.cpm,\n cpm_currency: bid.currency,\n size: bid.size,\n response_timestamp: bid.responseTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidWon;\n}\nfunction bidTimeoutObject(bid) {\n const bidTimeout = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n // BidTimeoutEvent has bid.bidder (not bidderCode) - Prebid timeout event structure differs\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidder /*alias*/]?.d /*demandSeatId*/,\n timeout: 0, //TODO bid.timeout not populated, need to figure out why\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidTimeout;\n}\nfunction bidRejectedObject(bid, adRejectTimestamp) {\n const bidRejected = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n cpm: bid.cpm ? bid.cpm : null,\n cpm_currency: bid.currency,\n size: bid.width + 'x' + bid.height,\n deal_id: bid.dealId ?? '',\n reject_reason: bid.rejectionReason ?? '',\n reject_timestamp: adRejectTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return bidRejected;\n}\nfunction adServeObject(bid, ad) {\n const adServe = {\n pb_auction_id: bid.auctionId,\n pb_transaction_id: bid.transactionId,\n demand_seat_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getInventoryConfig)().ba /*bidderAliases*/[bid.bidderCode /*alias*/]?.d /*demandSeatId*/,\n ad_id: bid.adId ?? '',\n bid_cpm: bid.cpm,\n bid_cpm_currency: bid.currency,\n size: bid.size,\n status: ad.serveStatus,\n fail_reason: ad.failReason ?? '',\n ad_serve_timestamp: ad.serveTimestamp ?? 0,\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adServe;\n}\nfunction auctionEndObject(auction) {\n if (!auction.auctionId || !auction.auctionEnd) {\n throw new Error('invalid parameter auction in auctionEndObject()');\n }\n const auctionEnd = {\n pb_auction_id: auction.auctionId,\n auction_end_time: auction.auctionEnd, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return auctionEnd;\n}\nfunction adImpressionObject(event, adImpressionTimestamp) {\n // const size: [number, number] = event.size;\n const size = event?.size ? `${event.size[0]}x${event.size[1]}` : '';\n const key = event.slot.getSlotElementId();\n const adImpression = {\n pb_auction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedAuctionId ?? null,\n pb_transaction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedTransactionId ?? null,\n advertiser_id: event.advertiserId,\n campaign_id: event.campaignId,\n creative_id: event.creativeId,\n line_item_id: event.lineItemId,\n size: size,\n ad_impression_timestamp: adImpressionTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adImpression;\n}\nfunction adUnfilledObject(slot, adUnfilledTimestamp) {\n const key = slot.getSlotElementId();\n const entry = (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key) ?? {};\n const adUnfilled = {\n // fall back to pbAuctionId/pbTransactionId if pbServed* not set (slotRequested not fired for unfilled slots)\n pb_auction_id: entry.pbServedAuctionId ?? entry.pbAuctionId ?? null,\n pb_transaction_id: entry.pbServedTransactionId ?? entry.pbTransactionId ?? null,\n ad_unfilled_timestamp: adUnfilledTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adUnfilled;\n}\nfunction adViewableObject(slot, adViewableTimestamp) {\n const key = slot.getSlotElementId();\n const adViewable = {\n pb_auction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedAuctionId ?? null,\n pb_transaction_id: (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.getAuctionEntry)(key)?.pbServedTransactionId ?? null,\n ad_viewable_timestamp: adViewableTimestamp, /* UTC timestamp */\n run_mode: _constants_config__WEBPACK_IMPORTED_MODULE_4__.wrapperConfig.m /*runMode*/\n };\n return adViewable;\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/logObjectBuilder.ts?")},"./src/logger.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ flushQue: () => (/* binding */ flushQue),\n/* harmony export */ initLogger: () => (/* binding */ initLogger),\n/* harmony export */ logEvent: () => (/* binding */ logEvent)\n/* harmony export */ });\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants/loggerEndpoints */ \"./src/constants/loggerEndpoints.ts\");\n// file: wrapper/src/logger.ts\n\n\n\n\nconst loggerAPIEndpoint = `https://${_constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.e}${_constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.p /*apiPath*/}`;\n// module state\nlet eventQue = [];\nlet timeoutId = null;\nlet logMode = _types_enums__WEBPACK_IMPORTED_MODULE_2__.LogMode.Async;\nfunction initLogger(window = globalThis.window) {\n // follow config log mode\n const setLogMode = () => {\n logMode = _constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.m /*mode*/;\n if (logMode === _types_enums__WEBPACK_IMPORTED_MODULE_2__.LogMode.Sync) {\n flushQue(window); // flush events before page load\n }\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Page loaded, log mode '${logMode}' now follows config`, window);\n };\n if (window.document.readyState === 'complete') {\n setLogMode();\n }\n else {\n window.addEventListener('load', setLogMode);\n }\n // set unload flush to prevent data loss\n window.addEventListener('beforeunload', () => flushQue(window));\n window.addEventListener('pagehide', () => flushQue(window));\n}\nfunction flushQue(window = globalThis.window) {\n if (eventQue.length === 0) {\n return;\n }\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n const events = [...eventQue];\n eventQue = [];\n const batchData = events.map(event => ({\n endpoint: event.path,\n payload: event.payload,\n timestamp: event.timestamp\n }));\n postLogData(_constants_loggerEndpoints__WEBPACK_IMPORTED_MODULE_3__.BATCH_ENDPOINT, batchData, window);\n}\nfunction postLogData(path, payload, window = globalThis.window) {\n const strPayload = JSON.stringify(payload);\n fetch(`${loggerAPIEndpoint}${path}`, {\n method: 'POST',\n body: strPayload,\n headers: {\n 'Content-Type': 'text/plain'\n },\n keepalive: strPayload.length < 60000 // safety margin for 64KB limit\n })\n .then(response => {\n if (response.status !== 200) {\n throw new Error(`HTTP error! ${response.status} ${response.statusText}`);\n }\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Logged event(s) to ${loggerAPIEndpoint}${path}`, payload, window);\n })\n .catch(error => {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleError)(`Failed to log event(s) to ${loggerAPIEndpoint}${path}`, false, window, payload, error);\n });\n}\nfunction logEvent(path, payload, window = globalThis.window) {\n if (logMode === _types_enums__WEBPACK_IMPORTED_MODULE_2__.LogMode.Sync) {\n // synchronous logging\n postLogData(path, payload, window);\n return;\n }\n // asynchronous logging\n eventQue.push({\n path,\n payload,\n timestamp: Date.now()\n });\n // setup flush for asynchronous logging\n switch (_constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.t /*flushTrigger*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_2__.FlushTrigger.Event:\n if (eventQue.length >= _constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.v /*thresholdValue*/) {\n flushQue(window);\n }\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_2__.FlushTrigger.Time:\n if (timeoutId === null) {\n timeoutId = window.setTimeout(() => {\n flushQue(window);\n }, _constants_config__WEBPACK_IMPORTED_MODULE_0__.wrapperConfig.l /*logConfig*/.v /*thresholdValue*/);\n }\n break;\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/logger.ts?")},"./src/refreshEventHandlers.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setRefreshWorker: () => (/* binding */ setRefreshWorker)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types/enums */ "./src/types/enums.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n// file: wrapper/src/refreshEventHandlers.ts\n\n\n\n\nconst DEFAULT_REFRESH_INTERVAL = 30; // in seconds\nfunction setRefreshWorker(adUnitCode, window = globalThis.window) {\n // filter layouts applicable to current page\n const layouts = _constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.ly /*layout*/\n .filter((ly) => (0,_utils__WEBPACK_IMPORTED_MODULE_0__.matchPagePath)(window.location.pathname, ly.pp /*pagePaths*/)) ?? [];\n const allAdSlots = _constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.as /*adSlots*/\n .concat(layouts.flatMap(ly => ly.as /*adSlots*/));\n if (allAdSlots.length === 0) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.consoleDebug)(`no ad slots defined for pagepath \'${window.location.pathname}\', ads will not be refreshed`, window);\n return;\n }\n const refreshAdSlot = allAdSlots.find(\n // ({ g/*gam ad unit code*/ }) => g/*gam ad unit code*/ === adUnitPath\n slot => (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(slot) === adUnitCode);\n if (refreshAdSlot) {\n const resolvedRefresh = refreshAdSlot.r /*refresh*/ ?? _constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.r /*refresh*/;\n if (resolvedRefresh) {\n const slotDivId = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(refreshAdSlot);\n const element = window.document.getElementById(slotDivId);\n const refreshSetting = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(resolvedRefresh, window);\n const refreshType = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.enumFromString)(_types_enums__WEBPACK_IMPORTED_MODULE_1__.RefreshTrigger, refreshSetting.t /*trigger*/ ?? \'\');\n if (element && refreshType) {\n switch (refreshType) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.RefreshTrigger.InView:\n refreshInView(element, refreshAdSlot, refreshSetting, window);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.RefreshTrigger.AfterInterval:\n refreshAfterInterval(element, refreshAdSlot, refreshSetting, window);\n break;\n default:\n break;\n }\n }\n }\n }\n}\n/**\n *\n * refresh in view, only after interval\n * max refresh applies (if specified)\n *\n **/\nfunction refreshInView(element, adSlot, refreshSetting, window = globalThis.window) {\n const maxRefreshes = refreshSetting.c /*count of times*/ ?? Number.MAX_SAFE_INTEGER;\n const timeout = (refreshSetting.i /*interval*/ ?? DEFAULT_REFRESH_INTERVAL) * 1000; // refresh interval in miliseconds\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(adSlot); // adslot element (div) id used as unique prebid adunit code\n var refreshCount = 0; // initialize refresh counter\n var isWaitingForView = true; // waiting for ad to be in view to start next refresh\n const options = {\n root: null, // element to intersect with browser viewport\n rootMargin: "0px", // margin to grow or shrink intersection frame of root\n threshold: 0.0 // % element visible\n };\n var isAdslotVisible = false; // track current visibility\n const scheduleNextRefresh = () => {\n if (refreshCount >= maxRefreshes) {\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.clearIntersectionObserver)(adUnitCode); // disconnect, clear observer\n return;\n }\n // start timer for next refresh\n setTimeout(() => {\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.isAuctionInProgress)(adUnitCode)) {\n return;\n }\n refreshCount++;\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setAuctionInProgress)(adUnitCode, _types_enums__WEBPACK_IMPORTED_MODULE_1__.ServeType.Refresh);\n window.pbjs.que.push(() => {\n window.pbjs.requestBids({\n adUnitCodes: [adUnitCode],\n timeout: adSlot.o /*auctionTimeout*/ ?? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.o /*auctionTimeout*/, window)\n });\n });\n // if still visible, schedule next refresh immediately\n if (isAdslotVisible) {\n scheduleNextRefresh();\n }\n else {\n // reset to wait mode for next visibility\n isWaitingForView = true;\n }\n }, timeout);\n };\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n isAdslotVisible = entry.intersectionRatio > 0;\n // schedule refresh, if waiting for view and element just became visible\n if (isWaitingForView && isAdslotVisible) {\n isWaitingForView = false;\n scheduleNextRefresh();\n }\n });\n }, options);\n // store observer instance in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setIntersectionObserver)(adUnitCode, observer);\n observer.observe(element);\n}\n/**\n *\n * refresh after interval, only if ad was viewable\n * max refresh applies (if specified)\n *\n **/\nfunction refreshAfterInterval(element, adSlot, refreshSetting, window = globalThis.window) {\n const maxRefreshes = refreshSetting.c /*countOfTimes*/ ?? Number.MAX_SAFE_INTEGER;\n const timeout = (refreshSetting.i /*interval*/ ?? DEFAULT_REFRESH_INTERVAL) * 1000; // refresh interval in miliseconds\n const adUnitCode = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getSlotDivId)(adSlot); // adslot element (div) id used as unique prebid adunit code\n var refreshCount = 0; // initialize refresh counter\n var intervalId = null;\n const options = {\n root: null, // element to intersect with browser viewport\n rootMargin: "0px", // margin to grow or shrink intersection frame of root\n threshold: 0.0 // % element visible\n };\n var hasFirstView = false; // track if element has been viewed at least once\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (!hasFirstView && entry.intersectionRatio > 0) {\n hasFirstView = true;\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.clearIntersectionObserver)(adUnitCode); // disconnect observer after first view\n intervalId = setInterval(() => {\n if (refreshCount < maxRefreshes) {\n if ((0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.isAuctionInProgress)(adUnitCode)) {\n return;\n }\n refreshCount++;\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setAuctionInProgress)(adUnitCode, _types_enums__WEBPACK_IMPORTED_MODULE_1__.ServeType.Refresh);\n window.pbjs.que.push(() => {\n window.pbjs.requestBids({\n adUnitCodes: [adUnitCode],\n timeout: adSlot.o /*auctionTimeout*/ ?? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getValueByDevice)(_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.o /*auctionTimeout*/, window)\n });\n });\n }\n if (refreshCount >= maxRefreshes && intervalId) {\n clearInterval(intervalId);\n intervalId = null;\n }\n }, timeout);\n }\n });\n }, options);\n // store observer instance in auction map\n (0,_auctionState__WEBPACK_IMPORTED_MODULE_3__.setIntersectionObserver)(adUnitCode, observer);\n observer.observe(element);\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/refreshEventHandlers.ts?')},"./src/stickySlot.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BUTTON_SYMBOLS: () => (/* binding */ BUTTON_SYMBOLS),\n/* harmony export */ BUTTON_TITLES: () => (/* binding */ BUTTON_TITLES),\n/* harmony export */ SLOT_CONTENT: () => (/* binding */ SLOT_CONTENT),\n/* harmony export */ STICKY_SLOT_CLASSES: () => (/* binding */ STICKY_SLOT_CLASSES),\n/* harmony export */ StickyAction: () => (/* binding */ StickyAction),\n/* harmony export */ addStickySlot: () => (/* binding */ addStickySlot),\n/* harmony export */ anchorAction: () => (/* binding */ anchorAction),\n/* harmony export */ anchorId: () => (/* binding */ anchorId),\n/* harmony export */ buttonId: () => (/* binding */ buttonId),\n/* harmony export */ setInsertSlotWorker: () => (/* binding */ setInsertSlotWorker)\n/* harmony export */ });\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/utils.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n/* harmony import */ var _customCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./customCode */ \"./src/customCode.ts\");\n// file: wrapper/src/stickySlot.ts\n\n\n\n\nvar StickyAction;\n(function (StickyAction) {\n StickyAction[\"Minimize\"] = \"minimize\";\n StickyAction[\"Restore\"] = \"restore\";\n StickyAction[\"Dismiss\"] = \"dismiss\";\n})(StickyAction || (StickyAction = {}));\n// css class names used for sticky slots\nconst STICKY_SLOT_CLASSES = {\n ANCHOR: 'ad-anchor',\n SLOT: 'ad-slot',\n ACTION_BUTTONS: 'ad-action-buttons',\n ACTION_BTN: 'ad-action-btn',\n HORIZONTAL_MINIMIZED: 'horizontal-minimized',\n VERTICAL_MINIMIZED: 'vertical-minimized',\n HIDDEN: 'hidden'\n};\n// button symbols\nconst BUTTON_SYMBOLS = {\n RESTORE: '+',\n MINIMIZE: '-',\n DISMISS: 'x'\n};\n// button titles for accessibility\nconst BUTTON_TITLES = {\n RESTORE: 'Restore Ad',\n MINIMIZE: 'Minimize Ad',\n DISMISS: 'Dismiss Ad'\n};\n// slot content\nconst SLOT_CONTENT = {\n DEFAULT: 'Advertisement'\n};\n// track pending DOMContentLoaded handlers\nconst stickySlotDOMHandlers = new Set();\nfunction setInsertSlotWorker(adUnit, window = globalThis.window) {\n // TODO add all sticky slots at one time\n if (window.document.body) { // page has already loaded\n addStickySlot(adUnit.n /*insert*/, adUnit.cc, window);\n }\n else {\n const handlerId = anchorId(adUnit.n.r /*reference*/);\n if (stickySlotDOMHandlers.has(handlerId)) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`DOMContentLoaded handler already registered for ${handlerId}, skipping duplicate`, window);\n return;\n }\n stickySlotDOMHandlers.add(handlerId);\n window.document.addEventListener('DOMContentLoaded', () => {\n addStickySlot(adUnit.n /*insert*/, adUnit.cc, window);\n stickySlotDOMHandlers.delete(handlerId);\n }, { once: true });\n }\n}\nconst anchorId = (ref) => `ad-${ref}-anchor`;\nconst buttonId = (ref, action) => `ad-${ref}-${action}`;\n/**\n * add sticky slot to dom with Insert configuration\n *\n * @param insert Insert configuration specifying reference position and options\n * @param slotCSS optional slot-level custom CSS to inject before element creation\n * @param window Window object (defaults to globalThis.window)\n */\nfunction addStickySlot(insert, slotCSS, window = globalThis.window) {\n const anchorElementId = anchorId(insert.r /*reference*/);\n const existingAnchor = window.document.getElementById(anchorElementId);\n if (existingAnchor) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_1__.consoleDebug)(`Sticky slot anchor ${anchorElementId} already exists in DOM, skipping creation`, window);\n return;\n }\n const domId = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.stickySlotId)(insert.r /*reference*/);\n // inject slot css before creating element (cls prevention)\n if (slotCSS) {\n (0,_customCode__WEBPACK_IMPORTED_MODULE_3__.addCustomCSS)(slotCSS, domId, window);\n }\n const anchorClass = `${STICKY_SLOT_CLASSES.ANCHOR} ad-${insert.r /*reference*/}`;\n const anchor = window.document.createElement('div');\n anchor.id = anchorElementId;\n anchor.className = anchorClass;\n // css targeting via [data-wrapp-custom-style] and [data-wrapp-custom-style=\"dom-id\"]\n if (_constants_config__WEBPACK_IMPORTED_MODULE_2__.wrapperConfig.cc /*customCSS*/ || slotCSS) {\n anchor.setAttribute('data-wrapp-custom-style', domId);\n }\n const actionButtonsDiv = window.document.createElement('div');\n actionButtonsDiv.className = STICKY_SLOT_CLASSES.ACTION_BUTTONS;\n const btnRes = window.document.createElement('div');\n btnRes.id = buttonId(insert.r /*reference*/, StickyAction.Restore);\n btnRes.innerHTML = BUTTON_SYMBOLS.RESTORE;\n btnRes.className = STICKY_SLOT_CLASSES.ACTION_BTN;\n btnRes.title = BUTTON_TITLES.RESTORE;\n btnRes.style.display = 'none';\n btnRes.onclick = () => anchorAction(insert.r /*reference*/, StickyAction.Restore, window);\n actionButtonsDiv.appendChild(btnRes);\n if (insert.z /*minimize*/) {\n const btnMin = window.document.createElement('div');\n btnMin.id = buttonId(insert.r /*reference*/, StickyAction.Minimize);\n btnMin.innerHTML = BUTTON_SYMBOLS.MINIMIZE;\n btnMin.className = STICKY_SLOT_CLASSES.ACTION_BTN;\n btnMin.title = BUTTON_TITLES.MINIMIZE;\n btnMin.onclick = () => anchorAction(insert.r /*reference*/, StickyAction.Minimize, window);\n actionButtonsDiv.appendChild(btnMin);\n }\n if (insert.s /*dismiss*/) {\n const btnDis = window.document.createElement('div');\n btnDis.id = buttonId(insert.r /*reference*/, StickyAction.Dismiss);\n btnDis.innerHTML = BUTTON_SYMBOLS.DISMISS;\n btnDis.className = STICKY_SLOT_CLASSES.ACTION_BTN;\n btnDis.title = BUTTON_TITLES.DISMISS;\n btnDis.onclick = () => anchorAction(insert.r /*reference*/, StickyAction.Dismiss, window);\n actionButtonsDiv.appendChild(btnDis);\n }\n anchor.appendChild(Object.assign(window.document.createElement('div'), {\n id: domId,\n className: STICKY_SLOT_CLASSES.SLOT,\n innerHTML: SLOT_CONTENT.DEFAULT\n }));\n anchor.appendChild(actionButtonsDiv);\n switch (insert.r /*reference*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Top:\n window.document.body.prepend(anchor);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Bottom:\n window.document.body.append(anchor);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Left:\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Right:\n window.document.body.append(anchor);\n break;\n }\n}\n/**\n * handle ad actions (hide, minimize, restore)\n * @param {string} reference - anchor reference (WindowReference)\n * @param {string} action - action to take (StickyAction)\n */\nfunction anchorAction(reference, action, window = globalThis.window) {\n const adAnchor = window.document.getElementById(anchorId(reference));\n const restoreBtn = window.document.getElementById(buttonId(reference, StickyAction.Restore));\n const minimizeBtn = window.document.getElementById(buttonId(reference, StickyAction.Minimize));\n const dismissBtn = window.document.getElementById(buttonId(reference, StickyAction.Dismiss));\n var minimizeClassName = '';\n switch (reference) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Top:\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Bottom:\n minimizeClassName = STICKY_SLOT_CLASSES.HORIZONTAL_MINIMIZED;\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Left:\n case _types_enums__WEBPACK_IMPORTED_MODULE_0__.WindowReference.Right:\n minimizeClassName = STICKY_SLOT_CLASSES.VERTICAL_MINIMIZED;\n break;\n default:\n throw new Error(`invalid reference parameter '${reference}' to anchorAction()`);\n }\n switch (action) {\n case StickyAction.Restore:\n adAnchor?.classList.remove(minimizeClassName); // restore\n restoreBtn?.style && (restoreBtn.style.display = 'none'); // hide restore button \n minimizeBtn?.style && (minimizeBtn.style.display = 'block'); // show minimize button\n dismissBtn?.style && (dismissBtn.style.display = 'block'); // show dismiss button\n break;\n case StickyAction.Minimize:\n adAnchor?.classList.add(minimizeClassName); // minimize\n minimizeBtn?.style && (minimizeBtn.style.display = 'none'); // hide minimize button\n restoreBtn?.style && (restoreBtn.style.display = 'block'); // show restore button\n dismissBtn?.style && (dismissBtn.style.display = 'block'); // show dismiss button\n //TODO how to handle refresh?\n break;\n case StickyAction.Dismiss:\n adAnchor?.classList.add(STICKY_SLOT_CLASSES.HIDDEN); // dismiss\n //TODO delete google slot and pbjs ad unit, should we remove element?\n break;\n default:\n throw new Error(`invalid action parameter '${action}' to anchorAction()`);\n }\n}\n//TODO minimized ad slot maximized on refresh\n//TODO should not have unfilled -- house ad or immediate refresh, after which automatically minimized\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/stickySlot.ts?")},"./src/types/enums.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Anchor: () => (/* binding */ Anchor),\n/* harmony export */ Browser: () => (/* binding */ Browser),\n/* harmony export */ Device: () => (/* binding */ Device),\n/* harmony export */ DimensionValueType: () => (/* binding */ DimensionValueType),\n/* harmony export */ ElementReference: () => (/* binding */ ElementReference),\n/* harmony export */ FlushTrigger: () => (/* binding */ FlushTrigger),\n/* harmony export */ Load: () => (/* binding */ Load),\n/* harmony export */ LogMode: () => (/* binding */ LogMode),\n/* harmony export */ MediaFormat: () => (/* binding */ MediaFormat),\n/* harmony export */ ORTBPlacement: () => (/* binding */ ORTBPlacement),\n/* harmony export */ PagePathPattern: () => (/* binding */ PagePathPattern),\n/* harmony export */ RefreshTrigger: () => (/* binding */ RefreshTrigger),\n/* harmony export */ RunMode: () => (/* binding */ RunMode),\n/* harmony export */ ServeStatus: () => (/* binding */ ServeStatus),\n/* harmony export */ ServeType: () => (/* binding */ ServeType),\n/* harmony export */ ValueSourceType: () => (/* binding */ ValueSourceType),\n/* harmony export */ WindowReference: () => (/* binding */ WindowReference)\n/* harmony export */ });\n// file: wrapper/src/types/enums.ts\nvar RunMode;\n(function (RunMode) {\n RunMode["TEST"] = "TS";\n RunMode["NON_MONETARY"] = "NM";\n RunMode["MONETIZED"] = "MZ";\n})(RunMode || (RunMode = {}));\nvar WindowReference;\n(function (WindowReference) {\n WindowReference["Top"] = "TP";\n WindowReference["Bottom"] = "BM";\n WindowReference["Left"] = "LF";\n WindowReference["Right"] = "RG";\n})(WindowReference || (WindowReference = {}));\nvar ElementReference;\n(function (ElementReference) {\n ElementReference["Before"] = "BF";\n ElementReference["After"] = "AT";\n ElementReference["Inside"] = "IN";\n})(ElementReference || (ElementReference = {}));\nvar Anchor;\n(function (Anchor) {\n Anchor["Window"] = "WN";\n Anchor["StaticElement"] = "ST";\n Anchor["DynamicElement"] = "DY";\n})(Anchor || (Anchor = {}));\nvar Load;\n(function (Load) {\n /**\n * Eager Loading:\n * Ads are loaded as soon as the page loads, regardless of whether they are visible to the user.\n * Use Case: Pages with high-priority ad slots above the fold where immediate visibility is crucial.\n */\n Load["Eager"] = "EG";\n /**\n * Deferred Loading:\n * Ads are loaded after the entire page has finished loading or after a specific delay.\n * Use Case: Ensures critical content is loaded first to improve perceived performance.\n */\n Load["Deferred"] = "DF";\n /**\n * Lazy Loading:\n * Ads are loaded only when they are about to come into the viewport (or are close to it).\n * Use Case: Improves performance and reduces resource usage by deferring ad requests for offscreen ads.\n */\n Load["Lazy"] = "LZ";\n /**\n * Dynamic Loading:\n * Ads are loaded for slots created dynamically after the initial page load, such as in infinite scroll scenarios.\n * Use Case: Pages with content that expands dynamically, where new ad slots are introduced as the user scrolls.\n */\n Load["Dynamic"] = "YM";\n /**\n * On-Demand Loading:\n * Ads are loaded based on specific user actions, such as clicking a button or interacting with a part of the page.\n * Use Case: When ads need to be shown only after user engagement (e.g., inside a collapsible menu).\n */\n Load["OnDemand"] = "ON";\n})(Load || (Load = {}));\nvar ServeType;\n(function (ServeType) {\n ServeType["Initial"] = "IN";\n ServeType["Refresh"] = "RF";\n})(ServeType || (ServeType = {}));\nvar ServeStatus;\n(function (ServeStatus) {\n ServeStatus["Success"] = "SC";\n ServeStatus["Fail"] = "FL";\n})(ServeStatus || (ServeStatus = {}));\nvar MediaFormat;\n(function (MediaFormat) {\n MediaFormat["Banner"] = "BN";\n})(MediaFormat || (MediaFormat = {}));\nvar RefreshTrigger;\n(function (RefreshTrigger) {\n RefreshTrigger["InView"] = "IV";\n RefreshTrigger["AfterInterval"] = "AV";\n})(RefreshTrigger || (RefreshTrigger = {}));\nvar Device;\n(function (Device) {\n Device["Mobile"] = "MB";\n Device["Desktop"] = "DK";\n})(Device || (Device = {}));\nvar Browser;\n(function (Browser) {\n Browser["Chrome"] = "CR";\n Browser["Safari"] = "SF";\n Browser["Edge"] = "EG";\n Browser["Firefox"] = "FX";\n Browser["Other"] = "OR";\n})(Browser || (Browser = {}));\nvar PagePathPattern;\n(function (PagePathPattern) {\n PagePathPattern["Prefix"] = "PR";\n PagePathPattern["Contains"] = "CT";\n PagePathPattern["Suffix"] = "SF";\n PagePathPattern["Exact"] = "EX";\n PagePathPattern["Regex"] = "RG";\n})(PagePathPattern || (PagePathPattern = {}));\nvar LogMode;\n(function (LogMode) {\n LogMode["Sync"] = "SY";\n LogMode["Async"] = "AS";\n})(LogMode || (LogMode = {}));\nvar FlushTrigger;\n(function (FlushTrigger) {\n FlushTrigger["Event"] = "EV";\n FlushTrigger["Time"] = "TM";\n})(FlushTrigger || (FlushTrigger = {}));\n/**\n * Custom Dimension Enums for multi-destination dimension routing\n */\n/* How dimension value is obtained */\nvar ValueSourceType;\n(function (ValueSourceType) {\n ValueSourceType["Static"] = "ST";\n ValueSourceType["PageVariable"] = "PV";\n ValueSourceType["Runtime"] = "RT";\n})(ValueSourceType || (ValueSourceType = {}));\n/* ORTB2 placement for auction destination */\nvar ORTBPlacement;\n(function (ORTBPlacement) {\n ORTBPlacement["Site"] = "SI";\n ORTBPlacement["Slot"] = "SL";\n ORTBPlacement["User"] = "US";\n})(ORTBPlacement || (ORTBPlacement = {}));\n/* Data type for dimension values (used for validation) */\nvar DimensionValueType;\n(function (DimensionValueType) {\n DimensionValueType["String"] = "ST";\n DimensionValueType["Enum"] = "EN";\n DimensionValueType["Boolean"] = "BL";\n DimensionValueType["Number"] = "NM";\n})(DimensionValueType || (DimensionValueType = {}));\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/types/enums.ts?')},"./src/utils.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addSlotElement: () => (/* binding */ addSlotElement),\n/* harmony export */ consoleDebug: () => (/* binding */ consoleDebug),\n/* harmony export */ consoleError: () => (/* binding */ consoleError),\n/* harmony export */ enumFromString: () => (/* binding */ enumFromString),\n/* harmony export */ generateHash: () => (/* binding */ generateHash),\n/* harmony export */ getPrimaryDomain: () => (/* binding */ getPrimaryDomain),\n/* harmony export */ getSessionId: () => (/* binding */ getSessionId),\n/* harmony export */ getSlotDivId: () => (/* binding */ getSlotDivId),\n/* harmony export */ getUserDevice: () => (/* binding */ getUserDevice),\n/* harmony export */ getUserId: () => (/* binding */ getUserId),\n/* harmony export */ getValueByDevice: () => (/* binding */ getValueByDevice),\n/* harmony export */ matchPagePath: () => (/* binding */ matchPagePath),\n/* harmony export */ slotId: () => (/* binding */ slotId),\n/* harmony export */ stickySlotId: () => (/* binding */ stickySlotId)\n/* harmony export */ });\n/* harmony import */ var xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xxhash-wasm */ \"../node_modules/xxhash-wasm/esm/xxhash-wasm.js\");\n/* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types/enums */ \"./src/types/enums.ts\");\n/* harmony import */ var _customCode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./customCode */ \"./src/customCode.ts\");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants/config */ \"./src/constants/config.ts\");\n// file: wrapper/src/utils.ts\n\n\n\n\nconst SESSION_LENGTH_MS = 10 * 60 * 1000; // 10 minutes, in milliseconds\nconst generateId = () => Math.random().toString(36).substring(2, 15)\n .padEnd(13, Math.random().toString(36).substring(2, 15));\nfunction getSessionId() {\n let result;\n try {\n var sessionId = localStorage.getItem('sessionId');\n var sessionIdLastRead = localStorage.getItem('sessionIdLastRead');\n const currentTime = Date.now(); /* UTC timestamp */\n if ((!sessionId) || (!sessionIdLastRead) ||\n ((currentTime - parseInt(sessionIdLastRead)) > SESSION_LENGTH_MS)) {\n sessionId = generateId();\n localStorage.setItem('sessionId', sessionId);\n }\n localStorage.setItem('sessionIdLastRead', currentTime.toString());\n result = sessionId;\n }\n catch (error) {\n // if localStorage fails, generate unique session id and log issue\n consoleError('getSessionId: localStorage unavailable:', false, error);\n result = generateId();\n }\n return result;\n}\nfunction getUserId() {\n let result;\n try {\n var userId = localStorage.getItem('userId');\n if (!userId) {\n const newUserId = generateId();\n localStorage.setItem('userId', newUserId);\n result = newUserId;\n }\n else {\n result = userId;\n }\n }\n catch (error) {\n // if localStorage fails, generate unique id and log issue\n consoleError('getUserId: localStorage unavailable:', false, error);\n result = generateId();\n }\n return result;\n}\nfunction getUserDevice(window = globalThis.window) {\n const isMobileViewport = window.matchMedia(\"(max-width: 760px), (max-width: 1024px) and (orientation: landscape)\").matches;\n const isMobileUserAgent = navigator?.userAgent ? /Android|iPhone|iPad/i.test(navigator.userAgent) : false;\n return (isMobileViewport || isMobileUserAgent) ? _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Mobile : _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Desktop;\n}\nconst stickySlotId = (ref) => `ad-${ref}-slot`;\n/**\n * generate id for ad slots based on position and reference element\n */\nconst slotId = (ref, divId) => `ad-slot-${ref}-${divId}`;\n/**\n * add slot element to dom with Insert configuration\n *\n * @param insert Insert configuration specifying anchor, reference, and divId\n * @param slotCSS optional slot-level custom CSS to inject before element creation\n * @param window window object (defaults to globalThis.window)\n * @returns created slot element, or null if insertion fails\n */\nfunction addSlotElement(insert, slotCSS, window = globalThis.window) {\n const refElement = window.document.getElementById(insert.d /*divId*/);\n if (!refElement) {\n consoleError(`Reference element not found for slot: ${insert.d /*divId*/}`, false, window);\n return null;\n }\n const domId = slotId(insert.r /*reference*/, insert.d /*divId*/);\n // inject slot css before creating element (cls prevention)\n if (slotCSS) {\n (0,_customCode__WEBPACK_IMPORTED_MODULE_2__.addCustomCSS)(slotCSS, domId, window);\n }\n // derive className based on anchor type\n const className = insert.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_1__.Anchor.StaticElement ? 'ad-static' : 'ad-dynamic';\n // create ad slot div\n const slotDiv = window.document.createElement('div');\n slotDiv.id = domId;\n slotDiv.className = className;\n slotDiv.innerHTML = 'Advertisement';\n // css targeting via [data-wrapp-custom-style] and [data-wrapp-custom-style=\"dom-id\"]\n if (_constants_config__WEBPACK_IMPORTED_MODULE_3__.wrapperConfig.cc /*customCSS*/ || slotCSS) {\n slotDiv.setAttribute('data-wrapp-custom-style', domId);\n }\n // insert slot div based on reference position\n switch (insert.r /*reference*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.ElementReference.Before:\n refElement.before(slotDiv);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.ElementReference.After:\n refElement.after(slotDiv);\n break;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.ElementReference.Inside:\n refElement.appendChild(slotDiv);\n break;\n // default case not necessary since config validated at build time\n }\n consoleDebug(`Inserted slot ${domId} at ${insert.r /*reference*/} of element ${insert.d /*divId*/}`, window);\n return slotDiv;\n}\nfunction consoleDebug(message, windowOrFirstArg, ...additionalArgs) {\n // check if first argument is Window object\n const isWindowArg = windowOrFirstArg && typeof windowOrFirstArg === 'object' && 'location' in windowOrFirstArg;\n const window = isWindowArg ? windowOrFirstArg : globalThis.window;\n const args = isWindowArg ? additionalArgs : (windowOrFirstArg !== undefined ? [windowOrFirstArg, ...additionalArgs] : []);\n try {\n const searchString = (window.location && typeof window.location.search === 'string') ? window.location.search : '';\n const urlParams = new URLSearchParams(searchString);\n const pbjs = window.pbjs;\n if ((urlParams.get('pbjs_debug') === 'true') ||\n (pbjs && pbjs.readConfig && pbjs.readConfig('debug') === true)) {\n console.log('%cAAM', 'background: navy; color: white; padding: 2px 5px; border-radius: 3px;', message, ...args);\n }\n }\n catch (error) {\n console.error('Console logging failed:', message);\n }\n}\nfunction consoleError(message, escalate = false, windowOrSecondArg, ...additionalArgs) {\n // check if third argument is Window object\n const isWindowArg = windowOrSecondArg && typeof windowOrSecondArg === 'object' && 'location' in windowOrSecondArg;\n const window = isWindowArg ? windowOrSecondArg : globalThis.window;\n const args = isWindowArg ? additionalArgs : (windowOrSecondArg !== undefined ? [windowOrSecondArg, ...additionalArgs] : []);\n try {\n const searchString = (window.location && typeof window.location.search === 'string') ? window.location.search : '';\n const urlParams = new URLSearchParams(searchString);\n const pbjs = window.pbjs;\n if ((urlParams.get('pbjs_debug') === 'true') ||\n (pbjs && pbjs.readConfig && pbjs.readConfig('debug') === true)) {\n console.error('%cAAM', 'background: navy; color: white; padding: 2px 5px; border-radius: 3px;', message, ...args);\n }\n }\n catch (error) {\n console.error('Console logging failed:', message);\n }\n if (escalate) {\n throw Error(message);\n }\n}\nconst enumFromString = (enumType, value) => Object.values(enumType).includes(value) ? value : undefined;\nconst getPrimaryDomain = (hostname) => {\n // hostname from web api, should be type safe\n return hostname.split('.').slice(-2).join('.');\n};\nasync function generateHash(data, length) {\n const { h64 } = await (0,xxhash_wasm__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n const hash64Value = h64(data, BigInt(0));\n const hexHash = hash64Value.toString(16).padStart(16, '0').toUpperCase();\n return hexHash.slice(0, length);\n}\nfunction matchPagePath(currentPath, pagePaths) {\n return pagePaths.some((pathObj) => {\n const { t /*pattern*/, p /*path*/ } = pathObj;\n switch (t /*pattern*/) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Prefix:\n return currentPath.startsWith(p /*path*/);\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Contains:\n return currentPath.includes(p /*path*/);\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Suffix:\n return currentPath.endsWith(p /*path*/);\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Exact:\n return currentPath === p /*path*/;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.PagePathPattern.Regex:\n try {\n const regex = new RegExp(p /*path*/);\n return regex.test(currentPath);\n }\n catch {\n consoleError(`Invalid regex pattern: ${p /*path*/}`, false);\n return false;\n }\n default:\n return false;\n }\n });\n}\n/**\n * get device-specific or global value based on discriminated union pattern\n * works for any type T where value is either global (a) or device-specific (d/m)\n */\nfunction getValueByDevice(value, window = globalThis.window) {\n // build time validation ensures type (discriminated union) safety\n if ('a' in value) {\n return value.a /*all*/;\n }\n // Otherwise it's device-specific (both d and m must exist per union type)\n const device = getUserDevice(window);\n switch (device) {\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Desktop:\n return value.d /*desktop*/;\n case _types_enums__WEBPACK_IMPORTED_MODULE_1__.Device.Mobile:\n return value.m /*mobile*/;\n default:\n // default to desktop for unknown devices\n consoleDebug('getValueByDevice: Unknown device type, using desktop value', device, value);\n return value.d /*desktop*/;\n }\n}\nconst getSlotDivId = (adSlot) => {\n // build time validation ensures type safety\n // must match logic in portal/app/supply/schemas.py (WindowInsert.dom_id, ElementInsert.dom_id)\n return adSlot.n /*insert*/.a /*anchor*/ === _types_enums__WEBPACK_IMPORTED_MODULE_1__.Anchor.Window\n ? stickySlotId(adSlot.n /*insert*/.r /*reference*/)\n : slotId(adSlot.n /*insert*/.r /*reference*/, adSlot.n /*insert*/.d /*divId*/);\n};\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/utils.ts?")},"./src/wrapperTag.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeWrapperTag: () => (/* binding */ initializeWrapperTag)\n/* harmony export */ });\n/* harmony import */ var _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dynamicSlot */ "./src/dynamicSlot.ts");\n/* harmony import */ var _constants_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants/config */ "./src/constants/config.ts");\n/* harmony import */ var _auctionState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auctionState */ "./src/auctionState.ts");\n/* harmony import */ var _customDimensions_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./customDimensions/api */ "./src/customDimensions/api.ts");\n// file: wrapper/src/wrapperTag.ts\n/**\n * WrapperTag Public API\n *\n * Provides command queue pattern for pre-load queuing (like GPT/Prebid):\n *\n * // Publisher can do this BEFORE wrapper loads:\n * window.wrapperTag = window.wrapperTag || {};\n * wrapperTag.cmd = wrapperTag.cmd || [];\n * wrapperTag.cmd.push(function() {\n * wrapperTag.insertAdSlot(\'my-div\', \'after\');\n * wrapperTag.setPageDimensions({ content_tier: \'premium\' });\n * });\n */\n\n\n\n\n/**\n * Initialize wrapperTag API and process command queue.\n *\n * Command Queue Pattern (similar to GPT/Prebid):\n * 1. Capture any commands queued before wrapper loaded (from existingTag.cmd array)\n * 2. Create new wrapperTag with immediate executor (cmd.push executes immediately)\n * 3. Assign to window.wrapperTag (new commands now execute immediately)\n * 4. Process previously queued commands\n *\n * Order matters: immediate executor must be set BEFORE processing queued commands,\n * so if a queued command pushes more commands, they execute immediately.\n *\n * @param win Window object (for testing or iframe support)\n */\nfunction initializeWrapperTag(win = globalThis.window) {\n // Step 1: Capture any commands queued before wrapper loaded\n // Publishers may have pushed to wrapperTag.cmd before this runs\n const existingTag = win.wrapperTag || {};\n const queuedCommands = Array.isArray(existingTag.cmd) ? existingTag.cmd : [];\n // Step 2: Create full API with immediate executor for cmd.push\n // After this, any call to wrapperTag.cmd.push() executes immediately\n const wrapperTag = {\n // build information\n appVersion: "0.0.10",\n appBuildDate: "2026-01-11T07:23:11.497Z",\n appName: "app-p8efa792fe841a.js",\n // configuration\n config: _constants_config__WEBPACK_IMPORTED_MODULE_1__.wrapperConfig,\n get inventoryConfig() {\n return (0,_auctionState__WEBPACK_IMPORTED_MODULE_2__.getInventoryConfig)();\n },\n // dynamic slot management api\n insertAdSlot: async (refDivId, position) => await _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__.insertDynamicAdSlot(refDivId, position, win),\n deleteAdSlot: (divId) => _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__.deleteDynamicAdSlot(divId, win),\n insertStickyAdSlot: async (reference) => await _dynamicSlot__WEBPACK_IMPORTED_MODULE_0__.insertStickyAdSlot(reference, win),\n // custom dimensions api\n setPageDimensions: (values) => (0,_customDimensions_api__WEBPACK_IMPORTED_MODULE_3__.setPageDimensions)(values, win),\n setSlotDimensions: (slotId, values) => (0,_customDimensions_api__WEBPACK_IMPORTED_MODULE_3__.setSlotDimensions)(slotId, values, win),\n getDimensions: (slotId) => (0,_customDimensions_api__WEBPACK_IMPORTED_MODULE_3__.getDimensions)(slotId, win),\n // command queue - immediate executor replaces array\n // any new cmd.push() calls after initialization execute immediately\n cmd: {\n push: (fn) => {\n try {\n fn();\n }\n catch (e) {\n console.error(\'[wrapperTag] Command queue error:\', e);\n }\n }\n }\n };\n // Step 3: Assign to window - immediate executor now active\n win.wrapperTag = wrapperTag;\n // Step 4: Process previously queued commands\n // If these commands push more commands, they execute immediately (step 3 completed)\n for (const fn of queuedCommands) {\n try {\n fn();\n }\n catch (e) {\n console.error(\'[wrapperTag] Command queue error:\', e);\n }\n }\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/./src/wrapperTag.ts?')},"../node_modules/uuid/dist/esm-browser/native.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ randomUUID });\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/native.js?")},"../node_modules/uuid/dist/esm-browser/regex.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/regex.js?')},"../node_modules/uuid/dist/esm-browser/rng.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rng)\n/* harmony export */ });\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/rng.js?")},"../node_modules/uuid/dist/esm-browser/stringify.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ unsafeStringify: () => (/* binding */ unsafeStringify)\n/* harmony export */ });\n/* harmony import */ var _validate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.js */ \"../node_modules/uuid/dist/esm-browser/validate.js\");\n\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!(0,_validate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stringify);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/stringify.js?")},"../node_modules/uuid/dist/esm-browser/v4.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _native_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./native.js */ "../node_modules/uuid/dist/esm-browser/native.js");\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng.js */ "../node_modules/uuid/dist/esm-browser/rng.js");\n/* harmony import */ var _stringify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stringify.js */ "../node_modules/uuid/dist/esm-browser/stringify.js");\n\n\n\nfunction v4(options, buf, offset) {\n if (_native_js__WEBPACK_IMPORTED_MODULE_0__["default"].randomUUID && !buf && !options) {\n return _native_js__WEBPACK_IMPORTED_MODULE_0__["default"].randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? (0,_rng_js__WEBPACK_IMPORTED_MODULE_1__["default"])();\n if (rnds.length < 16) {\n throw new Error(\'Random bytes length must be >= 16\');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return (0,_stringify_js__WEBPACK_IMPORTED_MODULE_2__.unsafeStringify)(rnds);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v4);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/v4.js?')},"../node_modules/uuid/dist/esm-browser/validate.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _regex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./regex.js */ "../node_modules/uuid/dist/esm-browser/regex.js");\n\nfunction validate(uuid) {\n return typeof uuid === \'string\' && _regex_js__WEBPACK_IMPORTED_MODULE_0__["default"].test(uuid);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (validate);\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/uuid/dist/esm-browser/validate.js?')},"../node_modules/xxhash-wasm/esm/xxhash-wasm.js":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ e)\n/* harmony export */ });\nconst t=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function e(){return function(t){const{exports:{mem:e,xxh32:n,xxh64:r,init32:i,update32:a,digest32:o,init64:s,update64:u,digest64:c}}=t;let h=new Uint8Array(e.buffer);function g(t,n){if(e.buffer.byteLength<t+n){const r=Math.ceil((t+n-e.buffer.byteLength)/65536);e.grow(r),h=new Uint8Array(e.buffer)}}function f(t,e,n,r,i,a){g(t);const o=new Uint8Array(t);return h.set(o),n(0,e),o.set(h.subarray(0,t)),{update(e){let n;return h.set(o),"string"==typeof e?(g(3*e.length,t),n=w.encodeInto(e,h.subarray(t)).written):(g(e.byteLength,t),h.set(e,t),n=e.byteLength),r(0,t,n),o.set(h.subarray(0,t)),this},digest:()=>(h.set(o),a(i(0)))}}function y(t){return t>>>0}const b=2n**64n-1n;function d(t){return t&b}const w=new TextEncoder,l=0,p=0n;function x(t,e=l){return g(3*t.length,0),y(n(0,w.encodeInto(t,h).written,e))}function L(t,e=p){return g(3*t.length,0),d(r(0,w.encodeInto(t,h).written,e))}return{h32:x,h32ToString:(t,e=l)=>x(t,e).toString(16).padStart(8,"0"),h32Raw:(t,e=l)=>(g(t.byteLength,0),h.set(t),y(n(0,t.byteLength,e))),create32:(t=l)=>f(48,t,i,a,o,y),h64:L,h64ToString:(t,e=p)=>L(t,e).toString(16).padStart(16,"0"),h64Raw:(t,e=p)=>(g(t.byteLength,0),h.set(t),d(r(0,t.byteLength,e))),create64:(t=p)=>f(88,t,s,u,c,d)}}((await WebAssembly.instantiate(t)).instance)}\n//# sourceMappingURL=xxhash-wasm.js.map\n\n\n//# sourceURL=webpack://@wrapp/wrapper/../node_modules/xxhash-wasm/esm/xxhash-wasm.js?')},"../builds/8EFA792FE841A/0.0.10/config-d8efa792fe841a-v0-0-10.json":module=>{"use strict";eval('module.exports = /*#__PURE__*/JSON.parse(\'{"v":"","e":"app.animaadtech.localhost","m":"MZ","d":"8EFA792FE841A","c":"USD","p":"hb","o":{"a":2000},"f":5000,"l":{"p":"/api/logger/v1","m":"AS","t":"EV","v":10},"pb":[{"f":0,"c":100,"s":10}],"ly":[{"i":"XCA7KZ8AYO06C","pp":[{"t":"PR","p":"/"}],"t":{"ic":[{"bw":["CR","SF","EG","FX","OR"],"dv":["MB","DK"]}]},"as":[{"i":"EX6ZLK2DHJ9D6","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"IN","d":"div-2"},"r":{"a":{"t":"IV","i":60,"c":5}},"m":{"f":"BN","sz":{"a":[[300,600],[120,600]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"123"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"34"}}]},{"i":"BZHBUZG1MB59L","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"BF","d":"div-2"},"m":{"f":"BN","sz":{"a":[[300,100],[300,250]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"456"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"23"}}]}]},{"i":"ERRSW1YKT5FAI","pp":[{"t":"PR","p":"/"}],"t":{"ic":[{"bw":["CR","SF","EG","FX","OR"],"dv":["MB","DK"]}]},"as":[{"i":"EX6ZLK2DHJ9D6","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"IN","d":"div-2"},"r":{"a":{"t":"IV","i":60,"c":5}},"m":{"f":"BN","sz":{"a":[[300,600],[120,600]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"123"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"34"}}]},{"i":"BZHBUZG1MB59L","g":"/23068547170/ca-pub-5635953502767638/my_test_ad_unit","l":"EG","n":{"a":"ST","r":"BF","d":"div-2"},"m":{"f":"BN","sz":{"a":[[300,100],[300,250]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"456"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"23"}}]}]}],"cd":[{"i":"AZCU5M4FLHG7U","k":"cd1","vs":{"t":"ST","v":"testval"},"ds":{"au":{"p":"SL"},"as":{"g":"hb_deal"},"an":{}}},{"i":"SKJPNC6CAKPA9","k":"cd1_copy","vs":{"t":"ST","v":"123"},"ds":{"an":{}}}],"ba":{"criteo-first-seat":{"b":"criteo","d":"B3GE7TXE33SK1"},"openx-first-one":{"b":"openx","d":"ZDDWI2FH8H2KW"}},"cc":"/* Required selector - targets all ad slots */\\\\r\\\\n[data-wrapp-custom-style] {\\\\r\\\\n /* CLS prevention example */\\\\r\\\\n min-height: 250px;\\\\r\\\\n}","cs":"// Custom JavaScript - runs after Prebid.js initializes\\\\r\\\\n// Available objects: wrapperTag, pbjs, googletag","as":[{"i":"OWJ6B1HARDRXH","g":"/23068547170/ca-pub-5635953502767638/23073267091","l":"EG","n":{"a":"WN","r":"BM","z":true,"s":true},"r":{"a":{"t":"IV","i":60,"c":15}},"m":{"f":"BN","sz":{"a":[[300,100],[300,600]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"1234"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"1234"}}]},{"i":"28COIKEYI4NDW","g":"/23068547170/ca-pub-5635953502767638/23073267091","l":"EG","n":{"a":"ST","r":"BF","d":"div-2"},"m":{"f":"BN","sz":{"a":[[300,250]]}},"tg":[{"a":"criteo-first-seat","pm":{"networkId":123,"uid":"3456"}},{"a":"openx-first-one","pm":{"delDomain":"trulightvision.com","unit":"2345"}}]}]}\');\n\n//# sourceURL=webpack://@wrapp/wrapper/../builds/8EFA792FE841A/0.0.10/config-d8efa792fe841a-v0-0-10.json?')}},__webpack_module_cache__={};function __webpack_require__(e){var n=__webpack_module_cache__[e];if(void 0!==n)return n.exports;var t=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.exports}__webpack_require__.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(n,{a:n}),n},__webpack_require__.d=(e,n)=>{for(var t in n)__webpack_require__.o(n,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},__webpack_require__.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nc=void 0,__webpack_require__("./src/index.ts"),__webpack_require__("./src/wrapperTag.ts"),__webpack_require__("../builds/8EFA792FE841A/0.0.10/prebid.js");var __webpack_exports__=__webpack_require__("./css/sticky.css")})();
|