`),[e.width,e.height]=y[r.size_id].split("x").map((e=>Number(e)))),e.rubiconTargeting=(Array.isArray(r.targeting)?r.targeting:[]).reduce(((e,t)=>(e[t.key]=t.values[0],e)),{rpfl_elemid:a.adUnitCode}),t.push(e)}else(0,u.logError)(`Rubicon: bidRequest undefined at index position:${n}`,s,e);var p;return t}),[]).sort(((e,t)=>(t.cpm||0)-(e.cpm||0)))},getUserSyncs:function(e,t,r,i,n){if(!I&&e.iframeEnabled){let e={};return r&&("boolean"==typeof r.gdprApplies&&(e.gdpr=Number(r.gdprApplies)),"string"==typeof r.consentString&&(e.gdpr_consent=r.consentString)),i&&(e.us_privacy=encodeURIComponent(i)),n?.gppString&&(e.gpp=n.gppString,e.gpp_sid=n.applicableSections?.toString()),e=Object.keys(e).length?`?${(0,u.formatQS)(e)}`:"",I=!0,{type:"iframe",url:`https://${b.syncHost||"eus"}.rubiconproject.com/usync.html`+e}}},transformBidParams:function(e,t){return(0,f.u)({accountId:"number",siteId:"number",zoneId:"number"},e)}};function _(e,t){let r;return r=e.params.referrer?e.params.referrer:t.refererInfo.page,e.params.secure?r.replace(/^http:/i,"https:"):r}function k(e){const t=document.getElementById(e.adUnitCode);!function(e){const t=e.querySelector("div[id^='google_ads']");t&&t.style.setProperty("display","none")}(t),function(e){const t=e.querySelector("script[id^='sas_script']"),r=t&&t.nextSibling;r&&"iframe"===r.localName&&r.style.setProperty("display","none")}(t);const r=e.renderer.getConfig();e.renderer.push((()=>{window.MagniteApex.renderAd({width:e.width,height:e.height,vastUrl:e.vastUrl,placement:{attachTo:t,align:r.align||"center",position:r.position||"append"},closeButton:r.closeButton||!1,label:r.label||void 0,collapse:r.collapse||!0})}))}function j(e,t){let r=e.params;if(t===d.pX){let t=[];return r.video&&r.video.playerWidth&&r.video.playerHeight?t=[r.video.playerWidth,r.video.playerHeight]:Array.isArray((0,m.Z)(e,"mediaTypes.video.playerSize"))&&1===e.mediaTypes.video.playerSize.length?t=e.mediaTypes.video.playerSize[0]:Array.isArray(e.sizes)&&e.sizes.length>0&&Array.isArray(e.sizes[0])&&e.sizes[0].length>1&&(t=e.sizes[0]),t}let i=[];return Array.isArray(r.sizes)?i=r.sizes:void 0!==(0,m.Z)(e,"mediaTypes.banner.sizes")?i=S(e.mediaTypes.banner.sizes):Array.isArray(e.sizes)&&e.sizes.length>0?i=S(e.sizes):(0,u.logWarn)("Rubicon: no sizes are setup or found"),function(e){const t=[15,2,9];return e.sort(((e,r)=>{const i=t.indexOf(e),n=t.indexOf(r);return i>-1||n>-1?-1===i?1:-1===n?-1:i-n:e-r}))}(i)}function S(e){return(0,u.parseSizesInput)(e).reduce(((e,t)=>{let r=parseInt(y[t],10);return r&&e.push(r),e}),[])}function C(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=[];if(function(e){let t=void 0!==(0,m.Z)(e,`mediaTypes.${d.pX}`),r=void 0!==(0,m.Z)(e,`mediaTypes.${d.Mk}`),i=void 0!==(0,m.Z)(e,"params.bidonmultiformat"),n="object"!=typeof(0,m.Z)(e,"params.video");return!(!t||!i)||(r&&n&&(t=!1),t&&n&&(0,l.N)(e,"params.video",{}),t)}(e)){if(-1===["outstream","instream"].indexOf((0,m.Z)(e,`mediaTypes.${d.pX}.context`)))return t&&(0,u.logError)("Rubicon: mediaTypes.video.context must be outstream or instream"),r;if(j(e,d.pX).length<2)return t&&(0,u.logError)("Rubicon: could not determine the playerSize of the video"),r;t&&(0,u.logMessage)("Rubicon: making video request for adUnit",e.adUnitCode),r.push(d.pX)}if(void 0!==(0,m.Z)(e,`mediaTypes.${d.B5}`)&&r.push(d.B5),void 0!==(0,m.Z)(e,`mediaTypes.${d.Mk}`)){if(0===j(e,d.Mk).length)return t&&(0,u.logError)("Rubicon: could not determine the sizes for banner request"),r;t&&(0,u.logMessage)("Rubicon: making banner request for adUnit",e.adUnitCode),r.push(d.Mk)}return r}function R(e){let t=!1;const r=["asi","sid","hp"];return e.nodes?(t=e.nodes.reduce(((e,t)=>e?r.every((e=>t.hasOwnProperty(e))):e),!0),t||(0,u.logError)("Rubicon: required schain params missing"),t):t}function A(e,t){return"rp_schain"===e?`rp_schain=${t}`:`${e}=${encodeURIComponent(t)}`}var I=!1;(0,s.dX)(v),(0,i.z)("rubiconBidAdapter")},26372:(e,t,r)=>{r.d(t,{DZ:()=>o,Px:()=>s,TP:()=>d,YC:()=>a,Z:()=>n,f8:()=>u,fP:()=>l,gm:()=>i,md:()=>p});const i=["request","imp","bidResponse","response"],[n,o,s,a]=i,[d,p]=["default","pbs"],c=new Set(i);const{registerOrtbProcessor:u,getProcessors:l}=function(){const e={};return{registerOrtbProcessor(t){let{type:r,name:n,fn:o,priority:s=0,dialects:a=[d]}=t;if(!c.has(r))throw new Error(`ORTB processor type must be one of: ${i.join(", ")}`);a.forEach((t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(r)||(e[t][r]={}),e[t][r][n]={priority:s,fn:o}}))},getProcessors:t=>e[t]||{}}}()}},e=>{e.O(0,[85279,33402,93157,70951],(()=>{return t=40060,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[92972],{54834:(e,o,t)=>{var n=t(78640),r=t(64358),d=t(92797),i=t(34516),a=t(15164),u=t(9633),c=t(81694);const l=(0,a.df)({moduleType:u.y2,moduleName:"sharedId"}),s="cookie",m="html5",f="_pubcid_optout",g="PublisherCommonId";function p(e,o){if(o===s)return l.getCookie(e);if(o===m&&l.hasLocalStorage()){const o=l.getDataFromLocalStorage(`${e}_exp`);if(!o)return l.getDataFromLocalStorage(e);if(new Date(o).getTime()-Date.now()>0)return l.getDataFromLocalStorage(e)}}function I(e,o){return function(t,n){o?b(o,e,(()=>{t(n()||e)}))():t(e)}}function b(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;if(!e)return;const n=(0,r.parseUrl)(e);n.search.id=encodeURIComponent("pubcid:"+o);const d=(0,r.buildUrl)(n);return function(){(0,r.triggerPixel)(d,t)}}function h(){return!!(l.cookiesAreEnabled()&&p(f,s)||l.hasLocalStorage()&&p(f,m))}const v={name:"sharedId",aliasName:"pubCommonId",gvlid:i.$P,decode(e,o){if(h())return void(0,r.logInfo)("PubCommonId decode: Has opted-out");(0,r.logInfo)(" Decoded value PubCommonId "+e);return{pubcid:e}},getId:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>2?arguments[2]:void 0;if(h())return void(0,r.logInfo)("PubCommonId: Has opted-out");if(i.VP.getCoppa())return void(0,r.logInfo)("PubCommonId: IDs not provided for coppa requests, exiting PubCommonId");const{params:{create:t=!0,pixelUrl:n}={}}=e;let d=o;if(!d){try{"object"==typeof window[g]&&(d=window[g].getId())}catch(e){}d||(d=t&&(0,r.hasDeviceAccess)()?(0,r.generateUUID)():void 0)}return{id:d,callback:I(d,n)}},extendId:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>2?arguments[2]:void 0;if(h())return(0,r.logInfo)("PubCommonId: Has opted-out"),{id:void 0};if(i.VP.getCoppa())return void(0,r.logInfo)("PubCommonId: IDs not provided for coppa requests, exiting PubCommonId");const{params:{extend:t=!1,pixelUrl:n}={}}=e;if(t){if(n){return{callback:b(n,o)}}return{id:o}}},domainOverride:(0,c.U)(l,"sharedId"),eids:{pubcid:{source:"pubcid.org",atype:1}}};(0,d.Bx)("userId",v),(0,n.z)("sharedIdSystem")}},e=>{e.O(0,[57748],(()=>{return o=54834,e(e.s=o);var o}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[88029],{76401:(e,t,n)=>{var r=n(78640),i=n(64358),o=n(20265),a=n(14699),d=n(15164);const s="teads",c=12,p=11,u=0,l=22,m=(0,d.df)({bidderCode:s}),g={code:s,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let n=b((0,i.getValue)(e.params,"placementId")),r=b((0,i.getValue)(e.params,"pageId"));t=n&&r}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const n=e.map(S),r={referrer:y(t),pageReferrer:document.referrer,pageTitle:f().slice(0,300),pageDescription:v().slice(0,300),networkBandwidth:(i=window.navigator,i&&i.connection&&i.connection.downlink>=0?i.connection.downlink.toString():""),timeToFirstByte:h(window),data:n,deviceWidth:screen.width,hb_version:"8.20.0",...I(e),...q(e)};var i;const a=e[0];a.schain&&(r.schain=a.schain);let d=t.gdprConsent;if(t&&d){let e="boolean"==typeof d.gdprApplies,t="string"==typeof d.consentString,n=e?function(e,t){let n=c;e?t&&!t.isServiceSpecific&&(n=p):n=u;return n}(d.gdprApplies,d.vendorData):l;r.gdpr_iab={consent:t?d.consentString:"",status:n,apiVersion:d.apiVersion}}t&&t.uspConsent&&(r.us_privacy=t.uspConsent);const s=(0,o.Z)(a,"ortb2.device.sua");s&&(r.userAgentClientHints=s);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(r)}},interpretResponse:function(e,t){const n=[];return(e=e.body).responses&&e.responses.forEach((function(e){const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};e.dealId&&(t.dealId=e.dealId),n.push(t)})),n}};function I(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let n={};for(const r in t){const i=t[r],a=(0,o.Z)(e,`0.userId.${i}`);a&&(n[r]=a)}return n}function y(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function f(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function v(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function h(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,n=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(n)return n.toString();const r=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return r?r.toString():""}function S(e){const t={};let n=(0,i.getValue)(e.params,"placementId"),r=(0,i.getValue)(e.params,"pageId");const a=(0,o.Z)(e,"ortb2Imp.ext.gpid"),d=(0,o.Z)(e,"mediaTypes.video.plcmt");return t.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.Z)(e,"mediaTypes.video.playerSize"),n=(0,o.Z)(e,"mediaTypes.video.sizes"),r=(0,o.Z)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(r)||(0,i.isArray)(t)||(0,i.isArray)(n)){return[r,n,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),t.bidId=(0,i.getBidIdParameter)("bidId",e),t.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),t.placementId=parseInt(n,10),t.pageId=parseInt(r,10),t.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),t.transactionId=e.ortb2Imp?.ext?.tid||"",a&&(t.gpid=a),d&&(t.videoPlcmt=d),t}function b(e){return parseInt(e)>0}function q(e){const t=(0,o.Z)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.dX)(g),(0,r.z)("teadsBidAdapter")}},e=>{var t;t=76401,e(e.s=t)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[82599],{70789:(e,t,r)=>{var i=r(78640),n=r(64358),o=r(24679),a=r(14699),s=r(3193),d=r(15164),l=r(29865);const c="triplelift";let p=null,u=null;const m=(0,d.df)({bidderCode:c}),f={gvlid:28,code:c,supportedMediaTypes:[o.Mk,o.pX],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",i=function(e,t){let r={},{schain:i}=e[0];const o=function(e){const t={},r={},i={},o=e.ortb2||{},a=function(){const e=m.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,n.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},o.site),d=Object.assign({},o.user);if(a){d.data=d.data||[];try{d.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,n.logError)("Triplelift: error adding 1plusX segments: ",e)}}v(r,s),v(i,d),(0,n.isEmpty)(r)||(t.context=r);(0,n.isEmpty)(i)||(t.user=i);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return g(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,n.logWarn)("Video size not defined",e)}"instream"===t.context&&(t.placement||(t.placement=1));"outstream"===t.context&&(t.placement?-1===[3,4,5].indexOf(t.placement)&&((0,n.logMessage)(`video.placement value of ${t.placement} is invalid for outstream context. Setting placement to 3`),t.placement=3):t.placement=3);t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!b(e)&&(r.banner={format:O(e.sizes)}),(0,n.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};v(r,e.ext),(0,n.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,n.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let a=[...x([e[0]]),...E([e[0]]),...I([e[0]]),...S([e[0]]),..._(e[0])];a.length>0&&(r.user={ext:{eids:a}});let s=function(e,t){let r={};(0,n.isEmpty)(e)||(r.schain={...e});(0,n.isEmpty)(t)||(r.fpd={...t});return r}(i,o);(0,n.isEmpty)(s)||(r.ext=s);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.t)(r,"lib","prebid"),r=(0,l.t)(r,"v","8.20.0"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.t)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.t)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(p=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.t)(r,"gdpr",p.toString()),void 0!==t.gdprConsent.consentString&&(u=t.gdprConsent.consentString,r=(0,l.t)(r,"cmp_cs",u))),t&&t.uspConsent&&(r=(0,l.t)(r,"us_privacy",t.uspConsent)),t&&t.fledgeEnabled&&(r=(0,l.t)(r,"fledge",t.fledgeEnabled)),!0===s.config.getConfig("coppa")&&(r=(0,l.t)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,n.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:i,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,i=e.body.bids||[];const o=e.body.paapi||[];if(i=i.map((e=>function(e,t){let r={},i=t.width||1,n=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:i,height:n,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},g(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(g(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),o.length>0){const e=o.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,n.logMessage)("Response with FLEDGE:",{bids:i,fledgeAuctionConfigs:e}),{bids:i,fledgeAuctionConfigs:e}}return i},getUserSyncs:function(e,t,r,i,n){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.t)(a,"px",1),a=(0,l.t)(a,"src","prebid")),(null!==u||p)&&(a=(0,l.t)(a,"gdpr",p),a=(0,l.t)(a,"cmp_cs",u)),i&&(a=(0,l.t)(a,"us_privacy",i)),n&&(n.gppString&&(a=(0,l.t)(a,"gpp",n.gppString)),n.applicableSections&&0!==n.applicableSections.length&&(a=(0,l.t)(a,"gpp_sid",n.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function g(e){return y(e)&&(b(e)||function(e){return y(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function b(e){return y(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function y(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function h(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:g(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,n.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function v(e,t){(0,n.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function x(e){return C(e,"tdid","adserver.org","TDID")}function E(e){return C(e,"idl_env","liveramp.com","idl")}function I(e){return C(e,"criteoId","criteo.com","criteoId")}function S(e){return C(e,"pubcid","pubcid.org","pubcid")}function _(e){let t=["adserver.org","liveramp.com","criteo.com","pubcid.org"],r=[];return e.userIdAsEids&&e.userIdAsEids.forEach((e=>{try{if(-1===t.indexOf(e.source)){let t=e.uids.map((t=>({id:t.id,ext:{rtiPartner:e.source}})));r.push({source:e.source,uids:t})}}catch(t){(0,n.logWarn)(`Triplelift: Error attempting to add ${e} to bid request`,t)}})),r}function C(e,t,r,i){return e.map(function(e){return t=>t&&t.userId&&t.userId[e]}(t)).filter(T(t)).map(function(e,t){return r=>({source:e,uids:[{id:r.id?r.id:r,ext:{rtiPartner:t}}]})}(r,i))}const T=e=>(t,r,i)=>{let o=!!t&&((0,n.isStr)(t)?!!t:(0,n.isPlainObject)(t)&&!(0,n.isArray)(t)&&!(0,n.isEmpty)(t)&&t.id&&(0,n.isStr)(t.id)&&!!t.id);return o||void 0===i[0]||(0,n.logWarn)(`Triplelift: invalid ${e} userId format`),o};function O(e){return e.filter(w).map((function(e){return{w:e[0],h:e[1]}}))}function w(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,a.dX)(f),(0,i.z)("tripleliftBidAdapter")}},e=>{e.O(0,[54213],(()=>{return t=70789,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[34579],{98709:(r,e,t)=>{var d=t(78640),n=t(64358),o=t(48928),s=t(92797);const i="unifiedId",u={name:i,gvlid:21,decode:r=>r&&"string"==typeof r.TDID?{tdid:r.TDID}:void 0,getId(r){const e=r&&r.params||{};if(!e||"string"!=typeof e.partner&&"string"!=typeof e.url)return void(0,n.logError)("User ID - unifiedId submodule requires either partner or url to be defined");const t=e.url||`https://match.adsrvr.org/track/rid?ttd_pid=${e.partner}&fmt=json`;return{callback:function(r){const e={success:e=>{let t;if(e)try{t=JSON.parse(e)}catch(r){(0,n.logError)(r)}r(t)},error:e=>{(0,n.logError)(`${i}: ID fetch encountered an error`,e),r()}};(0,o.hj)(t,e,void 0,{method:"GET",withCredentials:!0})}}},eids:{tdid:{source:"adserver.org",atype:1,getUidExt:function(){return{rtiPartner:"TDID"}}}}};(0,s.Bx)("userId",u),(0,d.z)("unifiedIdSystem")}},r=>{var e;e=98709,r(r.s=e)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[69039],{83806:(e,r,n)=>{var t=n(78640),i=n(20265),d=n(64358),o=n(35706),s=n(14699),a=n(24679);const u=(e,r,n)=>{const{bids:t,bidderRequestId:d,bidderCode:o,...s}=n,a=n.bids.length-r.length;let u={};r.forEach((e=>{const r=e.params.siteId;(e=>{Object.keys(e.mediaTypes).forEach((r=>{let n;n="function"==typeof e.getFloor?e.getFloor({currency:"USD",mediaType:r,size:"*"}).floor||0:e.params.floor||0,e.mediaTypes[r].floor=n}))})(e),(e=>{let r=(0,i.Z)(e,"mediaTypes.banner");if(r){let e={},n=[];r.sizes.forEach((r=>{e[r.toString()]||(e[r.toString()]=!0,n.push(r))})),r.sizes=n}})(e),u[r]=u[r]||[],u[r].push(e)}));let l=[];return Object.keys(u).forEach((r=>{let n={bidderRequest:Object.assign({},{bids:u[r],invalidBidsCount:a,...s})};l.push(Object.assign({},{data:n,...e}))})),l},l=e=>{if(e.ad)return e;(0,d.logError)(new Error("UnrulyBidAdapter: Missing ad config."))},p=e=>{if(e.vastUrl||e.vastXml)return e;(0,d.logError)(new Error("UnrulyBidAdapter: Missing vastUrl or vastXml config."))},c=e=>{const r=!!(0,i.Z)(e,"ext.renderer.config"),n=!!(0,i.Z)(e,"ext.renderer.config.siteId");if(!r)return void(0,d.logError)(new Error("UnrulyBidAdapter: Missing renderer config."));if(!n)return void(0,d.logError)(new Error("UnrulyBidAdapter: Missing renderer siteId."));const t=(0,i.Z)(e,"ext.renderer");!function(e,r){if(!e.config)throw new Error("UnrulyBidAdapter: Missing renderer config.");if(!e.config.siteId)throw new Error("UnrulyBidAdapter: Missing renderer siteId.");parent.window.unruly=parent.window.unruly||{},parent.window.unruly.native=parent.window.unruly.native||{},parent.window.unruly.native.siteId=parent.window.unruly.native.siteId||e.config.siteId,parent.window.unruly.native.adSlotId=r,parent.window.unruly.native.supplyMode="prebid"}(t,e.requestId),parent.window.unruly.native.prebid=parent.window.unruly.native.prebid||{},parent.window.unruly.native.prebid.uq=parent.window.unruly.native.prebid.uq||[];const s=o.Th.install(Object.assign({},t)),a=Object.assign({},e,{renderer:s,adUnitCode:(0,i.Z)(e,"ext.adUnitCode")});return s.setRender((()=>{var e;e=a,parent.window.unruly.native.prebid.uq.push(["render",e])})),e.renderer=e.renderer||s,e},y=e=>{if(!e.context)return!1;return-1!==["outstream","instream"].indexOf(e.context)},f=e=>e.sizes,w={code:"unruly",supportedMediaTypes:[a.pX,a.Mk],gvlid:36,isBidRequestValid:function(e){let r=(0,i.Z)(e,"params.siteId")&&(e=>{const r=(0,i.Z)(e,"mediaTypes.video"),n=(0,i.Z)(e,"mediaTypes.banner");let t=!(!r&&!n);return t&&r&&(t=y(r)),t&&n&&(t=f(n)),t})(e);return!!r},buildRequests:function(e,r){let n="https://targeting.unrulymedia.com/unruly_prebid";e[0]&&(n=(0,i.Z)(e[0],"params.endpoint")||n);return u({url:n,method:"POST",options:{contentType:"application/json"}},e,r)},interpretResponse:function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).body;return!e||!e.bids?[]:(e=>{let r=[];return e.forEach((e=>{let n,t=(0,i.Z)(e,"meta.mediaType");if(t&&"banner"===t.toLowerCase())e.mediaType=a.Mk,n=l(e);else if(t&&"video"===t.toLowerCase()){let r=(0,i.Z)(e,"meta.videoContext");e.mediaType=a.pX,"instream"===r?n=p(e):"outstream"===r&&(n=c(e))}n&&r.push(n)})),r})(e.bids)}};(0,s.dX)(w),(0,t.z)("unrulyBidAdapter")}},e=>{var r;r=83806,e(e.s=r)}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[9215],{82547:(e,t,n)=>{var o=n(78640),r=n(34614),s=n(3193),i=n(52021),a=n(34516),c=n(86104),u=n(5644),l=n(92797),d=n(64358),g=n(20265);const f=new Map;function m(e){const t={};function n(e){const n=JSON.stringify([e.source?.toLowerCase(),e.ext]);t.hasOwnProperty(n)?t[n].uids.push(...e.uids):t[n]=e}return Object.entries(e).forEach((e=>{let[t,o]=e;o=Array.isArray(o)?o:[o];("pubProvidedId"===t?o:o.map((e=>function(e,t){const n=f.get(t);if(n&&e){let t={};t.source=(0,d.isFn)(n.getSource)?n.getSource(e):n.source;const o=(0,d.isFn)(n.getValue)?n.getValue(e):e;if((0,d.isStr)(o)){const r={id:o,atype:n.atype};if((0,d.isFn)(n.getUidExt)){const t=n.getUidExt(e);t&&(r.ext=t)}if(t.uids=[r],(0,d.isFn)(n.getEidExt)){const o=n.getEidExt(e);o&&(t.ext=o)}return t}}return null}(e,t)))).filter((e=>null!=e)).forEach(n)})),Object.values(t)}var b=n(15164),h=n(96475),y=n(7563),p=n(68792),E=n(26372),I=n(99128),w=n(38196),S=n(9633),D=n(50571),O=n(74947),v=n(10286);const j="User ID",P=b.c$,k=b.Dp,$="_pbjs_id_optout",A=(0,b.eA)("userId"),C={isAllowed:D.xD};let N,T,x,U,R,L,_=!1,F=[],Z=[],q={},G=[];const M=(()=>{let e;return()=>(null==e&&(e=(0,I.V6)()),e)})();function B(e){return M().fork().renameWith((t=>[`userId.mod.${t}`,`userId.mods.${e}.${t}`]))}function W(e,t){t=t||e.storageMgr;const n="function"==typeof e.submodule.domainOverride?e.submodule.domainOverride():null,o=e.config.storage.name;return function(e,r,s){t.setCookie(o+(e||""),r,s,"Lax",n)}}function J(e,t){const n=e.config.storage,o=e.storageMgr;try{const r=new Date(Date.now()+864e5*n.expires).toUTCString(),s=(0,d.isPlainObject)(t)?JSON.stringify(t):t;if(n.type===P){const t=W(e);t(null,s,r),t("_cst",ge(),r),"number"==typeof n.refreshInSeconds&&t("_last",(new Date).toUTCString(),r)}else n.type===k&&(o.setDataInLocalStorage(`${n.name}_exp`,r),o.setDataInLocalStorage(`${n.name}_cst`,ge()),o.setDataInLocalStorage(n.name,encodeURIComponent(s)),"number"==typeof n.refreshInSeconds&&o.setDataInLocalStorage(`${n.name}_last`,(new Date).toUTCString()))}catch(e){(0,d.logError)(e)}}function V(e){let t=(0,d.getPrebidInternal)().setEidPermissions;"function"==typeof t&&(0,d.isArray)(e)&&t(function(e){let t=[];return e.filter((e=>(0,d.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length)).forEach((e=>{Object.keys(e.idObj).forEach((n=>{const o=f.get(n)||{};(0,g.Z)(e,"config.bidders")&&Array.isArray(e.config.bidders)&&o.source&&t.push({source:o.source,bidders:e.config.bidders})}))})),t}(e))}function z(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;const n=e.storageMgr,o=e.config.storage,r=t?`${o.name}_${t}`:o.name;let s;try{if(o.type===P)s=n.getCookie(r);else if(o.type===k){const e=n.getDataFromLocalStorage(`${o.name}_exp`);""===e?s=n.getDataFromLocalStorage(r):e&&new Date(e).getTime()-Date.now()>0&&(s=decodeURIComponent(n.getDataFromLocalStorage(r)))}"string"==typeof s&&"{"===s.trim().charAt(0)&&(s=JSON.parse(s))}catch(e){(0,d.logError)(e)}return s}function Y(e,t,n){t=M().fork().startTiming("userId.callbacks.total").stopBefore(t);const o=(0,d.delayExecution)((()=>{clearTimeout(T),t()}),e.length);e.forEach((function(e){const t=B(e.submodule.name).startTiming("callback").stopBefore(o);try{e.callback((function(o){o?(e.config.storage&&J(e,o),e.idObj=e.submodule.decode(o,e.config),me(H(n))):(0,d.logInfo)(`${j}: ${e.submodule.name} - request id responded with an empty value`),t()}),z.bind(null,e))}catch(n){(0,d.logError)(`Error in userID module '${e.submodule.name}':`,n),t()}e.callback=void 0}))}function H(e){return Array.isArray(e)&&e.length?Q(e):{}}function K(e,t,n){return Object.fromEntries(Object.entries(e.reduce(((e,o)=>{const r=t(o);return r&&Object.keys(r).forEach((t=>{const s=q[t]?.indexOf(n(o)),i={priority:(0,d.isNumber)(s)?s:-1,value:r[t]};if(e[t]){const n=i.priority>e[t].priority?i:e[t];e[t]=n}else e[t]=i})),e}),{})).map((e=>{let[t,n]=e;return[t,n.value]})))}function Q(e){return K(e.filter((e=>(0,d.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length)),(e=>e.idObj),(e=>e.submodule.name))}function X(e,t){[e].some((e=>!Array.isArray(e)||!e.length))||e.forEach((e=>{e.bids&&(0,d.isArray)(e.bids)&&e.bids.forEach((e=>{const n=function(e,t){return Array.isArray(e)&&e.length&&t?Q(e.filter((e=>!e.config.bidders||!(0,d.isArray)(e.config.bidders)||(0,r.q9)(e.config.bidders,t)))):{}}(t,e.bidder);Object.keys(n).length&&(e.userId=n,e.userIdAsEids=m(n))}))}))}const ee={};let te;function ne(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:se()||[];const t=R&&e.find((e=>e.source===R));if(t&&"string"==typeof(0,g.Z)(t,"uids.0.id")){const e=t.uids[0].id.replace(/[\W_]/g,"");if(e.length>=32&&e.length<=150)return e;(0,d.logWarn)(`User ID - Googletag Publisher Provided ID for ${R} is not between 32 and 150 characters - ${e}`)}}const oe=(0,I.g3)("userId",(function(e,t){let{delay:n=p.Z.timeout,getIds:r=de}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};p.Z.race([r().catch((()=>null)),n(U)]).then((()=>{X(t.adUnits||(0,o.R)().adUnits,N),M().join((0,I.Bf)(t.metrics),{propagate:!1,includeGroups:!0}),e.call(this,t)}))}));function re(){return H(N)}function se(){return m(re())}function ie(e){return m(function(e,t){if(!Array.isArray(e)||!e.length)return{};const n=Q(e),o=Object.keys(n).find((e=>{const n=f.get(e);return n?.source===t||(0,d.isFn)(n?.getSource)&&n.getSource()===t}));return o?{[o]:n[o]}:[]}(N,e))[0]}function ae(e,t,n){return te().then((()=>{let o={};if((0,d.isFn)(n)){(0,d.logInfo)(`${j} - Getting encrypted signal from custom function : ${n.name} & source : ${e} `);const t=n(e);o[e]=t?ce(t):null}else{const n=ie(e);(0,d.logInfo)(`${j} - Getting encrypted signal for eids :${JSON.stringify(n)}`),(0,d.isEmpty)(n)||(o[n.source]=!0===t?ce(n):n.uids[0].id)}return(0,d.logInfo)(`${j} - Fetching encrypted eids: ${o[e]}`),o[e]}))}function ce(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n="";if(1===t)n="object"==typeof e?window.btoa(JSON.stringify(e)):window.btoa(e);return`${t}||${n}`}function ue(){if(!(0,d.isGptPubadsDefined)())return;window.googletag.secureSignalProviders=window.googletag.secureSignalProviders||[];const e=s.config.getConfig("userSync.encryptedSignalSources");if(e){const t=e.registerDelay||0;setTimeout((()=>{e.sources&&e.sources.forEach((e=>{let{source:t,encrypt:n,customFunc:o}=e;t.forEach((e=>{window.googletag.secureSignalProviders.push({id:e,collectorFunction:()=>ae(e,n,o)})}))}))}),t)}else(0,d.logWarn)(`${j} - ESP : encryptedSignalSources config not defined under userSync Object`)}function le(){let{submoduleNames:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return te({refresh:!0,submoduleNames:e}).then((()=>(t&&(0,d.isFn)(t)&&t(),re())))}function de(){return te().then((()=>re()),(e=>e===ee?Promise.resolve().then(de):((0,d.logError)("Error initializing userId",e),p.Z.reject(e))))}function ge(){let e=Number(a.NO.hash);const t=[];for(;e>0;)t.push(String.fromCharCode(255&e)),e>>>=8;return btoa(t.join())}function fe(e,t,n){const o=a.rp.getConsentData();if(e.config.storage){let n,r=z(e),s=!1;if("number"==typeof e.config.storage.refreshInSeconds){const t=new Date(z(e,"last"));s=t&&Date.now()-t.getTime()>1e3*e.config.storage.refreshInSeconds}!r||s||t||function(e){const t=z(e,"cst");return!t||t!==ge()}(e)?n=e.submodule.getId(e.config,o,r):"function"==typeof e.submodule.extendId&&(n=e.submodule.extendId(e.config,o,r)),(0,d.isPlainObject)(n)&&(n.id&&(J(e,n.id),r=n.id),"function"==typeof n.callback&&(e.callback=n.callback)),r&&(e.idObj=e.submodule.decode(r,e.config))}else if(e.config.value)e.idObj=e.config.value;else{const t=e.submodule.getId(e.config,o,void 0);(0,d.isPlainObject)(t)&&("function"==typeof t.callback&&(e.callback=t.callback),t.id&&(e.idObj=e.submodule.decode(t.id,e.config)))}me(H(n))}function me(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re();if(e&&R){const t=ne(m(e));t&&((0,d.isGptPubadsDefined)()?window.googletag.pubads().setPublisherProvidedId(t):(window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.googletag.cmd.push((function(){window.googletag.pubads().setPublisherProvidedId(t)}))))}}function be(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return M().fork().measureTime("userId.init.modules",(function(){if(!t.length)return[];if(!(t=t.filter((e=>(!e.config.storage||function(e){switch(e.config?.storage?.type){case k:if(e.storageMgr.localStorageIsEnabled())return!A.getDataFromLocalStorage($)||((0,d.logInfo)(`${j} - opt-out localStorage found, storage disabled`),!1);break;case P:if(e.storageMgr.cookiesAreEnabled())return!A.getCookie($)||((0,d.logInfo)(`${j} - opt-out cookie found, storage disabled`),!1)}return!1}(e))&&C.isAllowed(O.EL,(0,v.T)(S.y2,e.config.name))))).length)return(0,d.logWarn)(`${j} - no ID module configured`),[];const o=t.reduce(((e,o)=>B(o.submodule.name).measureTime("init",(()=>{try{fe(o,n,t),e.push(o)}catch(e){(0,d.logError)(`Error in userID module '${o.submodule.name}':`,e)}return e}))),[]);return o.length&&V(o),o.forEach(he.bind(null,e)),o}))}function he(e,t){let n=!1;for(let o=0;o
FAQs
What is the alternative to ExpressJS? ›
Some alternatives to ExpressJS can be used, like Koa, Hapi, Sails, Feather, etc. These are the most popular alternatives to ExpressJS.
Is ExpressJS still used in 2024? ›Yes, the Express module is good for mobile application development too. It is scalable, speedy, and provides great performance for enterprise-level apps that may need to handle a lot of requests and notifications from users.
What are the alternatives to NodeJS? ›- Deno. Deno is a relatively new JavaScript runtime environment that, like Node. ...
- Go. Go is a popular language for building web applications and backend services. ...
- Elixir. Elixir is a functional programming language focusing on scalability and fault tolerance. ...
- Rust. ...
- Scala. ...
- Python. ...
- Ruby. ...
- ASP.NET.
While ExpressJs is a Node. js-based web application framework to build APIs and server-side applications, NextJs on the other hand is a react-based framework used for creating static websites and SEO optimizations. Therefore, they are not intended to replace one another in any means or ways.
Is nestjs better than Express? ›Developers may choose Nestjs over Expressjs for its built-in support for TypeScript, dependency injection, and modular architecture, making it suitable for building scalable and large-scale applications.
Do people still use ExpressJS? ›This framework is one of the most widely used node. js tools, and there's good reason for its immense popularity. Not only is express. js fast, but it is also unopinionated and minimalist, making it ideal for developers seeking flexibility and control over their applications.
Is NodeJS declining? ›The rumors of Node. js' decline have been greatly exaggerated. This deep dive into the metrics paints a clear picture: Node. js is not only here to stay, but it's actively evolving to meet the demands of modern web development.
Is Fastify better than Express? ›If you value stability, a wealth of resources, and a vast community, Express is the way to go. However, if you're looking for a faster, more efficient alternative with built-in validation and serialization, Fastify is an excellent option.
Is NodeJS better than ExpressJS? ›Node JS has an edge in terms of testing libraries, whereas Express's simplicity can make it easier to set up and run tests. Your choice will depend on your testing preferences and project requirements. NodeJS provides a solid foundation for building distinct types of applications, from real-time applications to APIs.
What will replace Node JS? ›- Python — #1 alternative to Node.js.
- ASP.NET Core — #2 alternative to Node.js.
- Java — #3 alternative to Node.js.
- Ruby on Rails — #4 alternative to Node.js.
- Deno — #5 alternative to Node.js.
- Conclusion.
Where is Node JS not recommended? ›
Not Suitable for Heavy-Computing Apps
Node. js doesn't support multi-threaded programming yet. It is able to serve way more complicated applications than Ruby, but it's not suitable for performing long-running calculations. Heavy computations block the incoming requests, which can lead to decrease of performance .
Following the Node. js 16 end of life on September 11, 2023, we are deprecating Node. js 16 for Builds and Functions on January 31, 2025.
Is Flask better than Express? ›Ultimately, the choice between Flask and Express. js depends on your specific project requirements and development preferences. Here's a reiteration to solidify your decision: For lightweight, performant web applications or rapid prototyping, Flask shines.
Should I learn Express or next? ›Express is a minimalistic and flexible framework suitable for building lightweight and highly customizable web applications, while Next. js excels at server-side rendering and static site generation, making it a great choice for complex React-based applications.
Is Express JS in demand? ›It is widely used in the Node. js ecosystem and is known for its simplicity, speed, and ease of use. Express. js is suitable for both small projects as well as large-scale applications, making it a popular choice for web development.
Which is better Node or Express? ›Your choice will depend on your testing preferences and project requirements. NodeJS provides a solid foundation for building distinct types of applications, from real-time applications to APIs. Expressjs, being a web application framework, excels in structuring web applications with its middleware system.
Is ExpressJS the best framework? ›Yes, Express. js is a popular and widely used framework for building backend applications with Node. js. It is known for its simplicity, flexibility, and scalability, making it a good choice for many developers and projects.
What is the Python equivalent of ExpressJS? ›A well-known and unique Python-based web framework, Flask, which was built on minimalist principles, is lightweight. It adheres to the philosophy of little frameworks that provide only the essentials for web development such as routing, templating, and request handling.