${n}</script>`),
(t.onload = () => e(t.contentWindow.render)),
document.body.appendChild(t);
})),
e[n]
);
};
})();
},
3005: (e, t, n) => {
n.d(t, {
$T: () => a,
Ni: () => i,
OA: () => o,
RO: () => s,
fR: () => r
});
const i = 1,
r = 2,
o = 1,
s = 500;
function a(e) {
return (e ?? []).reduce((e, t) => {
let { event: n, method: i, url: r } = t;
const o = (e[n] = e[n] ?? {});
return (o[i] = o[i] ?? []).push(r), e;
}, {});
}
},
5023: (e, t, n) => {
n.d(t, { AU: () => m, Ic: () => v, kQ: () => y, on: () => h });
var i = n(1069),
r = n(8969),
o = n(6853),
s = n(3272);
const a = ‘eventHistoryTTL’;
let d = null;
const c = (0, o.H)({ monotonic: !0, ttl: () => d });
s.$W.getConfig(a, e => {
const t = d;
(e = e?.[a]),
(d = ‘number’ == typeof e ? 1e3 * e : null),
t !== d && c.refresh();
});
let l = Array.prototype.slice,
u = Array.prototype.push,
f = Object.values(r.qY);
const g = r.cA,
p = (function() {
let e = {},
t = {};
function n(e) {
return f.includes(e);
}
return (
(t.has = n),
(t.on = function(t, r, o) {
if (n(t)) {
let n = e[t] || { que: [] };
o
? ((n[o] = n[o] || { que: [] }), n[o].que.push(r))
: n.que.push(r),
(e[t] = n);
} else
i.vV(
‘Wrong event name : ‘ + t + ‘ Valid event names :’ + f
);
}),
(t.emit = function(t) {
!(function(t, n) {
i.OG(‘Emitting event for: ‘ + t);
let r = n[0] || {},
o = r[g[t]],
s = e[t] || { que: [] };
var a = Object.keys(s);
let d = [];
c.add({
eventType: t,
args: r,
id: o,
elapsedTime: i.V()
}),
o && a.includes(o) && u.apply(d, s[o].que),
u.apply(d, s.que),
(d || []).forEach(function(e) {
if (e)
try {
e.apply(null, n);
} catch (e) {
i.vV(
‘Error executing handler:’,
‘events.js’,
e,
t
);
}
});
})(t, l.call(arguments, 1));
}),
(t.off = function(t, n, r) {
let o = e[t];
i.Im(o) ||
(i.Im(o.que) && i.Im(o[r])) ||
(r && (i.Im(o[r]) || i.Im(o[r].que))) ||
(r
? (o[r].que || []).forEach(function(e) {
let t = o[r].que;
e === n && t.splice(t.indexOf(e), 1);
})
: (o.que || []).forEach(function(e) {
let t = o.que;
e === n && t.splice(t.indexOf(e), 1);
}),
(e[t] = o));
}),
(t.get = function() {
return e;
}),
(t.addEvents = function(e) {
f = f.concat(e);
}),
(t.getEvents = function() {
return c.toArray().map(e => Object.assign({}, e));
}),
t
);
})();
i.cD(p.emit.bind(p));
const {
on: h,
off: m,
get: b,
getEvents: y,
emit: v,
addEvents: E,
has: A
} = p;
},
687: (e, t, n) => {
n.d(t, { w: () => I });
var i = n(9214),
r = n(7934),
o = n(5973),
s = n(1069),
a = n(3172),
d = n(3272),
c = n(5555);
const l = [
‘architecture’,
‘bitness’,
‘model’,
‘platformVersion’,
‘fullVersionList’
],
u = [‘brands’, ‘mobile’, ‘platform’],
f = (function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.navigator?.userAgentData;
const t =
e && u.some(t => void 0 !== e[t])
? Object.freeze(p(1, e))
: null;
return function() {
return t;
};
})(),
g = (function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.navigator?.userAgentData;
const t = {},
n = new WeakMap();
return function() {
let i =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: l;
if (!n.has(i)) {
const e = Array.from(i);
e.sort(), n.set(i, e.join(‘|’));
}
const r = n.get(i);
if (!t.hasOwnProperty(r))
try {
t[r] = e
.getHighEntropyValues(i)
.then(e =>
(0, s.Im)(e) ? null : Object.freeze(p(2, e))
)
.catch(() => null);
} catch (e) {
t[r] = c.U9.resolve(null);
}
return t[r];
};
})();
function p(e, t) {
function n(e, t) {
const n = { brand: e };
return (
(0, s.O8)(t) && !(0, s.xQ)(t) && (n.version = t.split(‘.’)), n
);
}
const i = { source: e };
return (
t.platform && (i.platform = n(t.platform, t.platformVersion)),
(t.fullVersionList || t.brands) &&
(i.browsers = (t.fullVersionList || t.brands).map(e => {
let { brand: t, version: i } = e;
return n(t, i);
})),
void 0 !== t.mobile && (i.mobile = t.mobile ? 1 : 0),
[‘model’, ‘bitness’, ‘architecture’].forEach(e => {
const n = t[e];
(0, s.O8)(n) && (i[e] = n);
}),
i
);
}
var h = n(3858),
m = n(5139),
b = n(3441),
y = n(6811),
v = n(5569),
E = n(8944);
const A = {
getRefererInfo: r.EN,
findRootDomain: o.S,
getWindowTop: s.mb,
getWindowSelf: s.l4,
getHighEntropySUA: g,
getLowEntropySUA: f,
getDocument: s.YE
},
w = (0, h.i8)(‘FPD’),
I = (0, i.A_)(‘sync’, e => {
const t = [
e,
C().catch(() => null),
c.U9.resolve(
‘cookieDeprecationLabel’ in navigator &&
(0, m.io)(y.Ue, (0, b.s)(v.tp, ‘cdep’)) &&
navigator.cookieDeprecationLabel.getValue()
).catch(() => null)
];
return c.U9.all(t).then(e => {
let [t, n, i] = e;
const r = A.getRefererInfo();
if (
(Object.entries(O).forEach(e => {
let [n, i] = e;
const o = i(t, r);
o &&
Object.keys(o).length > 0 &&
(t[n] = (0, s.D9)({}, o, t[n]));
}),
n &&
(0, a.J)(
t,
‘device.sua’,
Object.assign({}, n, t.device.sua)
),
i)
) {
const e = { cdep: i };
(0, a.J)(
t,
‘device.ext’,
Object.assign({}, e, t.device.ext)
);
}
const o = A.getDocument().documentElement.lang;
o && (0, a.J)(t, ‘site.ext.data.documentLang’, o), (t = w(t));
for (let e of h.Dy)
if ((0, h.O$)(t, e)) {
t[e] = (0, s.D9)({}, R(t, r), t[e]);
break;
}
return t;
});
});
function T(e) {
try {
return e(A.getWindowTop());
} catch (t) {
return e(A.getWindowSelf());
}
}
function C() {
const e = d.$W.getConfig(‘firstPartyData.uaHints’);
return Array.isArray(e) && 0 !== e.length
? A.getHighEntropySUA(e)
: c.U9.resolve(A.getLowEntropySUA());
}
function B(e) {
return (0, s.SH)(e, Object.keys(e));
}
const O = {
site(e, t) {
if (!h.Dy.filter(e => ‘site’ !== e).some(h.O$.bind(null, e)))
return B({ page: t.page, ref: t.ref });
},
device: () =>
T(e => {
const t = (0, s.Ot)().screen.width,
n = (0, s.Ot)().screen.height,
{ width: i, height: r } = (0, E.M)(),
o = {
w: t,
h: n,
dnt: (0, s.l9)() ? 1 : 0,
ua: e.navigator.userAgent,
language: e.navigator.language.split(‘-‘).shift(),
ext: { vpw: i, vph: r }
};
return (
e.navigator?.webdriver && (0, a.J)(o, ‘ext.webdriver’, !0),
o
);
}),
regs() {
const e = {};
T(e => e.navigator.globalPrivacyControl) &&
(0, a.J)(e, ‘ext.gpc’, ‘1’);
const t = d.$W.getConfig(‘coppa’);
return ‘boolean’ == typeof t && (e.coppa = t ? 1 : 0), e;
}
};
function R(e, t) {
const n = (0, r.gR)(t.page, { noLeadingWww: !0 }),
i = T(e =>
e.document.querySelector(«meta[name=’keywords’]»)
)?.content?.replace?.(/s/g, »);
return B({
domain: n,
keywords: i,
publisher: B({ domain: A.findRootDomain(n) })
});
}
},
3858: (e, t, n) => {
n.d(t, { Dy: () => r, O$: () => s, i8: () => o });
var i = n(1069);
const r = [‘dooh’, ‘app’, ‘site’];
function o(e) {
return function(t) {
return (
r.reduce(
(n, r) => (
s(t, r) &&
(null != n
? ((0, i.JE)(
`${e} specifies both ‘${n}’ and ‘${r}’; dropping the latter.`
),
delete t[r])
: (n = r)),
n
),
null
),
t
);
};
}
function s(e, t) {
return null != e[t] && Object.keys(e[t]).length > 0;
}
},
5973: (e, t, n) => {
n.d(t, { S: () => o });
var i = n(1069);
const r = (0, n(2938).CK)(‘fpdEnrichment’),
o = (0, i.Bj)(function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.location.host;
if (!r.cookiesAreEnabled()) return e;
const t = e.split(‘.’);
if (2 === t.length) return e;
let n,
o,
s = -2;
const a = `_rdc${Date.now()}`,
d = ‘writeable’;
do {
n = t.slice(s).join(‘.’);
let e = new Date((0, i.vE)() + 1e4).toUTCString();
r.setCookie(a, d, e, ‘Lax’, n, void 0);
r.getCookie(a, void 0) === d
? ((o = !1),
r.setCookie(
a,
»,
‘Thu, 01 Jan 1970 00:00:01 GMT’,
void 0,
n,
void 0
))
: ((s += -1), (o = Math.abs(s) <= t.length));
} while (o);
return n;
});
},
9214: (e, t, n) => {
n.d(t, {
A_: () => s,
Gc: () => d,
Y6: () => g,
Yn: () => c,
bz: () => f,
u2: () => p,
xG: () => u
});
var i = n(8128),
r = n.n(i),
o = n(5555);
let s = r()({ ready: r().SYNC | r().ASYNC | r().QUEUE });
const a = (0, o.v6)();
s.ready = (() => {
const e = s.ready;
return function() {
try {
return e.apply(s, arguments);
} finally {
a.resolve();
}
};
})();
const d = a.promise,
c = s.get;
const l = {};
function u(e, t) {
let { postInstallAllowed: n = !1 } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
s(
‘async’,
function(i) {
i.forEach(e => t(…e)), n && (l[e] = t);
},
e
)([]);
}
function f(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
i = 1;
i < t;
i++
)
n[i – 1] = arguments[i];
const r = l[e];
if (r) return r(…n);
c(e).before((e, t) => {
t.push(n), e(t);
});
}
function g(e, t) {
return (
Object.defineProperties(
t,
Object.fromEntries(
[‘before’, ‘after’, ‘getHooks’, ‘removeAll’].map(t => [
t,
{ get: () => e[t] }
])
)
),
t
);
}
function p(e) {
return g(e, function() {
for (
var t = arguments.length, n = new Array(t), i = 0;
i < t;
i++
)
n[i] = arguments[i];
return n.push(function() {}), e.apply(this, n);
});
}
},
1371: (e, t, n) => {
n.d(t, {
D4: () => o,
GE: () => a,
G_: () => r,
LM: () => s,
s6: () => i
});
const i = ‘native’,
r = ‘video’,
o = ‘banner’,
s = ‘adpod’,
a = [i, r, o];
},
2449: (e, t, n) => {
n.d(t, {
Bm: () => y,
IX: () => C,
Nh: () => l,
Zj: () => A,
gs: () => E,
l6: () => p,
mT: () => c,
nk: () => m,
vO: () => v,
yl: () => B
});
var i = n(1069),
r = n(6881),
o = n(8969),
s = n(9075),
a = n(6031),
d = n(3005);
const c = [],
l = Object.keys(o.x5).map(e => o.x5[e]),
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 }
}
},
f = k(o.h0),
g = k(o.jO);
function p(e) {
return e.native && ‘object’ == typeof e.native;
}
function h(e) {
if (
(e &&
e.type &&
(function(e) {
if (!e || !Object.keys(u).includes(e))
return (0, i.vV)(`${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, i.vV)(
‘Native assets object is empty or not an object: ‘,
e
);
const t = { ver: ‘1.2’, assets: [] };
for (let n in e) {
if (o._B.includes(n)) continue;
if (!o.x5.hasOwnProperty(n)) {
(0, i.vV)(
`Unrecognized native asset code: ${n}. Asset will be ignored.`
);
continue;
}
if (‘privacyLink’ === n) {
t.privacy = 1;
continue;
}
const r = e[n];
let s = 0;
r.required &&
(0, i.Lm)(r.required) &&
(s = Number(r.required));
const a = { id: t.assets.length, required: s };
if (n in o.h0)
(a.data = { type: o.jO[o.h0[n]] }),
r.len && (a.data.len = r.len);
else if (‘icon’ === n || ‘image’ === n) {
if (
((a.img = {
type: ‘icon’ === n ? o.oA.ICON : o.oA.MAIN
}),
r.aspect_ratios)
)
if ((0, i.cy)(r.aspect_ratios))
if (r.aspect_ratios.length) {
const {
min_width: e,
min_height: t
} = r.aspect_ratios[0];
(0, i.Fq)(e) && (0, i.Fq)(t)
? ((a.img.wmin = e), (a.img.hmin = t))
: (0, i.vV)(
‘image.aspect_ratios min_width or min_height are invalid: ‘,
e,
t
);
const n = r.aspect_ratios
.filter(
e => e.ratio_width && e.ratio_height
)
.map(
e => `${e.ratio_width}:${e.ratio_height}`
);
n.length > 0 &&
(a.img.ext = { aspectratios: n });
} else
(0, i.vV)(
«image.aspect_ratios was passed, but it’s empty:»,
r.aspect_ratios
);
else
(0, i.vV)(
«image.aspect_ratios was passed, but it’s not a an array:»,
r.aspect_ratios
);
r.sizes &&
(2 === r.sizes.length &&
(0, i.Fq)(r.sizes[0]) &&
(0, i.Fq)(r.sizes[1])
? ((a.img.w = r.sizes[0]),
(a.img.h = r.sizes[1]),
delete a.img.hmin,
delete a.img.wmin)
: (0, i.vV)(
‘image.sizes was passed, but its value is not an array of integers:’,
r.sizes
));
} else
‘title’ === n
? (a.title = { len: r.len || 140 })
: ‘ext’ === n && ((a.ext = r), delete a.required);
t.assets.push(a);
}
return t;
})(e.nativeParams));
});
}
function b(e) {
const t = e.assets;
if (!Array.isArray(t) || 0 === t.length)
return (
(0, i.vV)(
«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, i.vV)(
«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, i.vV)(
‘ortb.eventtrackers is not an array. Eventtrackers: ‘,
e.eventtrackers
),
!1)
: t.every(e =>
(function(e) {
if (!(0, i.Qd)(e))
return (
(0, i.vV)(
‘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, i.vV)(
«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, i.vV)(
«for img asset there must be ‘h’ or ‘hmin’ property»
),
!1
);
} else if (e.title) {
if (!(0, i.Et)(e.title.len))
return (
(0, i.vV)(
«for title asset there must be ‘len’ property defined»
),
!1
);
} else if (e.data) {
if (!(0, i.Et)(e.data.type))
return (
(0, i.vV)(
«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, i.vV)(‘video asset is not properly configured’),
!1
);
return !0;
})(e)
);
}
function y(e) {
let { index: t = r.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const n = t.getAdUnit(e);
if (!n) return !1;
let o = n.nativeOrtbRequest;
return (function(e, t) {
if (!e?.link?.url)
return (
(0, i.vV)(
«native response doesn’t have ‘link’ property. Ortb response: «,
e
),
!1
);
let n = t.assets.filter(e => 1 === e.required).map(e => e.id),
r = e.assets.map(e => e.id);
const o = n.every(e => r.includes(e));
o ||
(0, i.vV)(
`didn’t receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${r}`
);
return o;
})(e.native?.ortb || S(e.native, o), o);
}
function v(e, t) {
const n = t.native.ortb || R(t.native);
return (
‘click’ === e.action
? (function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: null,
{ fetchURL: n = i.z$ } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
if (t) {
const i = (e.assets || [])
.filter(e => e.link)
.reduce((e, t) => ((e[t.id] = t.link), e), {}),
r = e.link?.clicktrackers || [];
let o = i[t],
s = r;
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, i.ro)(e),
fetchURL: n = i.z$
} =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {},
{ [d.Ni]: r = [], [d.fR]: o = [] } =
(0, d.$T)(e.eventtrackers || [])[d.OA] || {};
e.imptrackers && (r = r.concat(e.imptrackers));
r.forEach(e => n(e)),
(o = o.map(e => «)),
e.jstracker && (o = o.concat([e.jstracker]));
o.length && t(o.join(‘n’));
})(n),
e.action
);
}
function E(e, t) {
const n = t?.nativeOrtbRequest,
i = e.native?.ortb;
if (n && i) {
const t = (function(e, t) {
const n = {},
i = t?.assets || [];
(n.clickUrl = e.link?.url), (n.privacyLink = e.privacy);
for (const t of e?.assets || []) {
const e = i.find(e => t.id === e.id);
t.title
? (n.title = t.title.text)
: t.img
? (n[e?.img?.type === o.oA.MAIN ? ‘image’ : ‘icon’] = {
url: t.img.url,
width: t.img.w,
height: t.img.h
})
: t.data && (n[f[g[e?.data?.type]]] = t.data.value);
}
n.impressionTrackers = [];
let r = [];
e.imptrackers && n.impressionTrackers.push(…e.imptrackers);
for (const t of e?.eventtrackers || [])
t.event === d.OA &&
t.method === d.Ni &&
n.impressionTrackers.push(t.url),
t.event === d.OA && t.method === d.fR && r.push(t.url);
(r = r.map(e => «)),
e?.jstracker && r.push(e.jstracker);
r.length && (n.javascriptTrackers = r.join(‘n’));
return n;
})(i, n);
Object.assign(e.native, t);
}
[‘rendererUrl’, ‘adTemplate’].forEach(n => {
const i = t?.nativeParams?.[n];
i && (e.native[n] = O(i));
});
}
function A(e) {
let { index: t = r.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {},
n = {};
const i = t.getAdUnit(e),
s =
null == i?.nativeParams?.ortb &&
!1 !== i?.nativeParams?.sendTargetingKeys,
a = (function(e) {
const t = {};
e?.nativeParams?.ext &&
Object.keys(e.nativeParams.ext).forEach(e => {
t[e] = `hb_native_${e}`;
});
return { …o.x5, …t };
})(i),
d = { …e.native, …e.native.ext };
return (
delete d.ext,
Object.keys(d).forEach(t => {
const r = a[t];
let o = O(e.native[t]) || O(e?.native?.ext?.[t]);
if (‘adTemplate’ === t || !r || !o) return;
let d = i?.nativeParams?.[t]?.sendId;
if (
(‘boolean’ != typeof d &&
(d = i?.nativeParams?.ext?.[t]?.sendId),
d)
) {
o = `${r}:${e.adId}`;
}
let c = i?.nativeParams?.[t]?.sendTargetingKeys;
‘boolean’ != typeof c &&
(c = i?.nativeParams?.ext?.[t]?.sendTargetingKeys);
(‘boolean’ == typeof c ? c : s) && (n[r] = o);
}),
n
);
}
function w(e, t) {
let n =
arguments.length > 2 &&
void 0 !== arguments[2] &&
arguments[2],
i = [];
return (
Object.entries(e)
.filter(e => {
let [i, r] = e;
return (
r &&
((!1 === n && ‘ext’ === i) || null == t || t.includes(i))
);
})
.forEach(e => {
let [r, s] = e;
!1 === n && ‘ext’ === r
? i.push(…w(s, t, !0))
: (n || o.x5.hasOwnProperty(r)) &&
i.push({ key: r, value: O(s) });
}),
i
);
}
function I(e, t, n) {
let { index: d = r.n.index } =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: {};
const c = { message: ‘assetResponse’, adId: e.adId };
let l = (0, s.vd)(t).native;
return (
l
? ((c.native = Object.assign({}, l)),
(c.renderer = (0, a.kj)(t)),
(c.rendererVersion = a.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: w(e.native, n),
nativeKeys: o.x5
};
return (
e.native.ortb
? (r.ortb = e.native.ortb)
: t.mediaTypes?.native?.ortb &&
(r.ortb = S(e.native, t.nativeOrtbRequest)),
r
);
})(t, d.getAdUnit(t), n)),
Object.assign(c, l)
);
}
const T = Object.fromEntries(
Object.entries(o.x5).map(e => {
let [t, n] = e;
return [n, t];
})
);
function C(e, t) {
const n = e.assets.map(e => T[e]);
return I(e, t, n);
}
function B(e, t) {
return I(e, t, null);
}
function O(e) {
return e?.url || e;
}
function R(e) {
const t = { link: {}, eventtrackers: [] };
return (
Object.entries(e).forEach(e => {
let [n, i] = e;
switch (n) {
case ‘clickUrl’:
t.link.url = i;
break;
case ‘clickTrackers’:
t.link.clicktrackers = Array.isArray(i) ? i : [i];
break;
case ‘impressionTrackers’:
(Array.isArray(i) ? i : [i]).forEach(e => {
t.eventtrackers.push({
event: d.OA,
method: d.Ni,
url: e
});
});
break;
case ‘javascriptTrackers’:
t.jstracker = Array.isArray(i) ? i.join(») : i;
break;
case ‘privacyLink’:
t.privacy = i;
}
}),
t
);
}
function S(e, t) {
const n = { …R(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 = O(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 ? o.oA.MAIN : o.oA.ICON;
r(
t => null != t.img && t.img.type === e,
e => {
e.img = { url: n };
}
);
break;
default:
t in o.h0 &&
r(
e =>
null != e.data && e.data.type === o.jO[o.h0[t]],
e => {
e.data = { value: n };
}
);
}
}),
n
);
}
function k(e) {
var t = {};
for (var n in e) t[e[n]] = n;
return t;
}
},
1e3: (e, t, n) => {
n.d(t, {
Cf: () => a,
S3: () => r,
Tb: () => o,
WR: () => s,
e4: () => c,
pS: () => u,
qN: () => d,
yB: () => f,
zt: () => i
});
const i = [‘request’, ‘imp’, ‘bidResponse’, ‘response’],
[r, o, s, a] = i,
[d, c] = [‘default’, ‘pbs’],
l = new Set(i);
const { registerOrtbProcessor: u, getProcessors: f } = (function() {
const e = {};
return {
registerOrtbProcessor(t) {
let {
type: n,
name: r,
fn: o,
priority: s = 0,
dialects: a = [d]
} = t;
if (!l.has(n))
throw new Error(
`ORTB processor type must be one of: ${i.join(‘, ‘)}`
);
a.forEach(t => {
e.hasOwnProperty(t) || (e[t] = {}),
e[t].hasOwnProperty(n) || (e[t][n] = {}),
(e[t][n][r] = { priority: s, fn: o });
});
},
getProcessors: t => e[t] || {}
};
})();
},
8934: (e, t, n) => {
n.d(t, { gH: () => se });
var i = n(7873),
r = n(1069),
o = n(433),
s = n(3172),
a = n(2449),
d = n(8969),
c = n(9075),
l = n(6031);
const { REQUEST: u, RESPONSE: f, NATIVE: g, EVENT: p } = d.nl,
h = {
[u]: function(e, t, n) {
(0, c.bw)({
renderFn(t) {
e(
Object.assign(
{
message: f,
renderer: (0, l.kj)(n),
rendererVersion: l.xh
},
t
)
);
},
resizeFn: b(t.adId, n),
options: t.options,
adId: t.adId,
bidResponse: n
});
},
[p]: function(e, t, n) {
if (null == n)
return void (0, r.vV)(
`Cannot find ad ‘${t.adId}’ for x-origin event request`
);
if (n.status !== d.tl.RENDERED)
return void (0, r.JE)(
`Received x-origin event request without corresponding render request for ad ‘${n.adId}’`
);
return (0, c.Uc)(t, n);
}
};
function m() {
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 && h.hasOwnProperty(n.message))
(0, c.$A)(n.adId, n.message === d.nl.REQUEST).then(t => {
var i, o;
h[n.message](
((i = 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, r.vV)(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),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
return o(Object.assign({}, e, { adId: i }), …n);
}),
n,
t
);
});
})(e);
},
!1
);
}
function b(e, t) {
return function(n, i) {
!(function(e) {
let {
instl: t,
adId: n,
adUnitCode: i,
width: o,
height: s
} = e;
if (t) return;
function a(e) {
return e ? e + ‘px’ : ‘100%’;
}
function d(e) {
let t = c(n, i),
r = document.getElementById(t);
return r && r.querySelector(e);
}
function c(e, t) {
return (0, r.II)() ? l(e) : (0, r.t1)() ? u(t) : t;
}
function l(e) {
const t = window.googletag
.pubads()
.getSlots()
.find(t =>
t
.getTargetingKeys()
.find(n => t.getTargeting(n).includes(e))
);
return t ? t.getSlotElementId() : null;
}
function u(e) {
let t = window.apntag.getTag(e);
return t && t.targetId;
}
[‘div’, ‘iframe’].forEach(e => {
let t = d(e + ‘:not([style*=»display: none»])’);
if (t) {
let e = t.style;
(e.width = a(o)), (e.height = a(s));
} else
(0, r.vV)(
`Unable to locate matching page element for adUnitCode ${i}. Can’t resize it to ad’s dimensions. Please review setup.`
);
});
})({ …t, width: n, height: i, adId: e });
};
}
Object.assign(h, {
[g]: function(e, t, n) {
if (null == n)
return void (0, r.vV)(
`Cannot find ad for x-origin event request: ‘${t.adId}’`
);
switch (t.action) {
case ‘assetRequest’:
(0, c.Hh)(n, () => e((0, a.IX)(t, n)));
break;
case ‘allAssetRequest’:
(0, c.Hh)(n, () => e((0, a.yl)(t, n)));
break;
default:
(0, c.vW)(t, n, { resizeFn: b(t.adId, n) }), (0, c.Pk)(n);
}
}
});
var y = n(8230),
v = n(3272),
E = n(6881),
A = n(7779),
w = n(9214),
I = n(3597),
T = n(1580),
C = n(5555),
B = n(5569);
const O = ‘__tlpbjs_debugging__’;
function R() {
return (0, i.m)().installedModules.includes(‘debugging’);
}
function S(e) {
return new C.U9(t => {
(0, T.R)(e, B.tp, ‘debugging’, t);
});
}
function k() {
let { alreadyInstalled: e = R, script: t = S } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = null;
return function() {
return (
null == n &&
(n = new C.U9((n, o) => {
setTimeout(() => {
if (e()) n();
else {
const e =
‘https://cdn.jsdelivr.net/npm/prebid.js@9.50.0/dist/debugging-standalone.js’;
(0, r.OG)(
`Debugging module not installed, loading it from «${e}»…`
),
((0, i.m)()._installDebugging = !0),
t(e)
.then(() => {
(0, i.m)()._installDebugging({
DEBUG_KEY: O,
hook: w.A_,
config: v.$W,
createBid: I.O,
logger: (0, r.h0)(‘DEBUG:’)
});
})
.then(n, o);
}
});
})),
n
);
};
}
const U = (function() {
let { load: e = k(), hook: t = (0, w.Yn)(‘requestBids’) } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = null,
i = !1;
function r(e) {
for (
var t = arguments.length,
i = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
i[r – 1] = arguments[r];
return (n || C.U9.resolve()).then(() => e.apply(this, i));
}
function o() {
t.getHooks({ hook: r }).remove(), (i = !1);
}
return {
enable: function() {
i || ((n = e()), t.before(r, 99), (i = !0));
},
disable: o,
reset: function() {
(n = null), o();
}
};
})();
U.reset;
v.$W.getConfig(‘debugging’, function(e) {
let { debugging: t } = e;
t?.enabled ? U.enable() : U.disable();
});
var D = n(2938),
_ = n(1445),
$ = n(5023),
j = n(6894),
x = n(687),
q = n(6916),
N = n(2713),
W = n(3895);
const P = new Map([
[
‘format’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘object’ == typeof e)
],
[‘w’, r.Fq],
[‘h’, r.Fq],
[‘btype’, r.Uu],
[‘battr’, r.Uu],
[‘pos’, r.Fq],
[
‘mimes’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘string’ == typeof e)
],
[‘topframe’, e => [1, 0].includes(e)],
[‘expdir’, r.Uu],
[‘api’, r.Uu],
[‘id’, r.O8],
[‘vcm’, e => [1, 0].includes(e)]
]);
var V = n(1371);
function M(e, t) {
return function() {
if (document.prerendering && e()) {
const e = this,
n = Array.from(arguments);
return new Promise(i => {
document.addEventListener(
‘prerenderingchange’,
() => {
(0, r.fH)(
‘Auctions were suspended while page was prerendering’
),
i(t.apply(e, n));
},
{ once: !0 }
);
});
}
return Promise.resolve(t.apply(this, arguments));
};
}
var G = n(7377);
const F = (0, i.m)(),
{ triggerUserSyncs: H } = y.zt,
{ ADD_AD_UNITS: L, REQUEST_BIDS: z, SET_TARGETING: J } = d.qY,
Q = {
bidWon: function(e) {
if (
!E.n
.getBidsRequested()
.map(e => e.bids.map(e => e.adUnitCode))
.reduce(r.Bq)
.filter(r.hj)
.includes(e)
)
return void (0, r.vV)(
‘The «‘ + e + ‘» placement is not defined.’
);
return !0;
}
};
function K(e, t) {
let n = [];
return (
(0, r.cy)(e) &&
(t ? e.length === t : e.length > 0) &&
(e.every(e => (0, r.Uu)(e, 2))
? (n = e)
: (0, r.Uu)(e, 2) && n.push(e)),
n
);
}
function Y(e, t) {
const n = (0, o.A)(e, `ortb2Imp.${t}`),
i = (0, o.A)(e, `mediaTypes.${t}`);
if (!n && !i) return;
const a = { [V.G_]: W.Zy, [V.D4]: P }[t];
a &&
[…a].forEach(n => {
let [i, a] = n;
const d = (0, o.A)(e, `mediaTypes.${t}.${i}`),
c = (0, o.A)(e, `ortb2Imp.${t}.${i}`);
(null == d && null == c) ||
(null == d
? (0, s.J)(e, `mediaTypes.${t}.${i}`, c)
: null == c
? (0, s.J)(e, `ortb2Imp.${t}.${i}`, d)
: ((0, r.JE)(
`adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${i} and mediaTypes.${t}.${i}, the latter will be ignored`,
e
),
(0, s.J)(e, `mediaTypes.${t}.${i}`, c)));
});
}
function X(e) {
const t = (0, r.Go)(e),
n = t.mediaTypes.banner,
i = null == n.sizes ? null : K(n.sizes),
o = e.ortb2Imp?.banner?.format ?? n?.format;
let a;
if (null != o) {
(0, s.J)(t, ‘ortb2Imp.banner.format’, o), (n.format = o);
try {
a = o
.filter(t => {
let { w: n, h: i, wratio: o, hratio: s } = t;
return null != (n ?? i) && null != (o ?? s)
? ((0, r.JE)(
‘Ad unit banner.format specifies both w/h and wratio/hratio’,
e
),
!1)
: (null != n && null != i) || (null != o && null != s);
})
.map(e => {
let { w: t, h: n, wratio: i, hratio: r } = e;
return [t ?? i, n ?? r];
});
} catch (t) {
(0, r.vV)(
`Invalid format definition on ad unit ${e.code}`,
o
);
}
null == a ||
null == i ||
(0, r.bD)(i, a) ||
(0, r.JE)(
`Ad unit ${e.code} has conflicting sizes and format definitions`,
e
);
}
const d = a ?? i ?? [],
c = e.ortb2Imp?.banner?.expdir ?? n.expdir;
return (
null != c &&
((n.expdir = c), (0, s.J)(t, ‘ortb2Imp.banner.expdir’, c)),
d.length > 0
? ((n.sizes = d), (t.sizes = d))
: ((0, r.vV)(
‘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),
Y(t, ‘banner’),
t
);
}
function Z(e) {
const t = (0, r.Go)(e),
n = t.mediaTypes.video;
if (n.playerSize) {
let e = ‘number’ == typeof n.playerSize[0] ? 2 : 1;
const i = K(n.playerSize, e);
i.length > 0
? (2 === e &&
(0, r.fH)(
«Transforming video.playerSize from [640,480] to [[640,480]] so it’s in the proper format.»
),
(n.playerSize = i),
(t.sizes = i))
: ((0, r.vV)(
‘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 (0, W.aP)(t), Y(t, ‘video’), t;
}
function ee(e) {
function t(t) {
return (
(0, r.vV)(
`Error in adUnit «${e.code}»: ${t}. Removing native request from ad unit`,
e
),
delete i.mediaTypes.native,
i
);
}
function n(e) {
for (const t of [‘sendTargetingKeys’, ‘types’])
if (o.hasOwnProperty(t)) {
const n = e(t);
if (n) return n;
}
}
const i = (0, r.Go)(e),
o = i.mediaTypes.native;
if (o.ortb) {
if (
o.ortb.assets?.some(
e => !(0, r.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 i;
const e = Object.keys(d.x5).filter(e =>
d.x5[e].includes(‘hb_native_’)
),
s = Object.keys(o).filter(t => e.includes(t));
s.length > 0 &&
((0, r.vV)(
`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${s} keys from request.`
),
s.forEach(e => delete i.mediaTypes.native[e]));
} else
n(
e =>
`mediaTypes.native.${e} is deprecated, consider using native ORTB instead`
);
return (
o.image &&
o.image.sizes &&
!Array.isArray(o.image.sizes) &&
((0, r.vV)(
‘Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request.’
),
delete i.mediaTypes.native.image.sizes),
o.image &&
o.image.aspect_ratios &&
!Array.isArray(o.image.aspect_ratios) &&
((0, r.vV)(
‘Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request.’
),
delete i.mediaTypes.native.image.aspect_ratios),
o.icon &&
o.icon.sizes &&
!Array.isArray(o.icon.sizes) &&
((0, r.vV)(
‘Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request.’
),
delete i.mediaTypes.native.icon.sizes),
i
);
}
function te(e, t) {
let n = e?.mediaTypes?.[t]?.pos;
if (!(0, r.Et)(n) || isNaN(n) || !isFinite(n)) {
let n = `Value of property ‘pos’ on ad unit ${e.code} should be of type: Number`;
(0, r.JE)(n), delete e.mediaTypes[t].pos;
}
return e;
}
function ne(e) {
const t = t => `adUnit.code ‘${e.code}’ ${t}`,
n = e.mediaTypes,
i = e.bids;
return null == i || (0, r.cy)(i)
? null == i && null == e.ortb2Imp
? ((0, r.vV)(
t(
«has no ‘adUnit.bids’ and no ‘adUnit.ortb2Imp’. Removing adUnit from auction»
)
),
null)
: n && 0 !== Object.keys(n).length
? (null == e.ortb2Imp ||
(null != i && 0 !== i.length) ||
((e.bids = [{ bidder: null }]),
(0, r.OG)(
t(
«defines ‘adUnit.ortb2Imp’ with no ‘adUnit.bids’; it will be seen only by S2S adapters»
)
)),
e)
: ((0, r.vV)(
t(
«does not define a ‘mediaTypes’ object. This is a required field for the auction, so this adUnit has been removed.»
)
),
null)
: ((0, r.vV)(
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) {
let t = U,
n = null;
try {
n = e.getItem(O);
} catch (e) {}
null !== n && t.enable();
}
})(),
(F.bidderSettings = F.bidderSettings || {}),
(F.libLoaded = !0),
(F.version = ‘v9.50.0’),
(0, r.fH)(‘Prebid.js v9.50.0 loaded’),
(F.installedModules = F.installedModules || []),
(F.adUnits = F.adUnits || []),
(F.triggerUserSyncs = H);
const ie = {
validateAdUnit: ne,
validateBannerMediaType: X,
validateSizes: K
};
Object.assign(ie, { validateNativeMediaType: ee }),
Object.assign(ie, { validateVideoMediaType: Z });
const re = (0, w.A_)(
‘sync’,
function(e) {
const t = [];
return (
e.forEach(e => {
if (null == (e = ne(e))) return;
const n = e.mediaTypes;
let i, r, o;
n.banner &&
((i = X(e)),
n.banner.hasOwnProperty(‘pos’) && (i = te(i, ‘banner’))),
n.video &&
((r = Z(i || e)),
n.video.hasOwnProperty(‘pos’) && (r = te(r, ‘video’))),
n.native && (o = ee(r || i || e));
const s = Object.assign({}, i, r, o);
t.push(s);
}),
t
);
},
‘checkAdUnitSetup’
);
function oe(e) {
const t = E.n[e]().filter(e =>
E.n.getAdUnitCodes().includes(e.adUnitCode)
),
n = E.n.getLastAuctionId();
return t
.map(e => e.adUnitCode)
.filter(r.hj)
.map(e =>
t.filter(t => t.auctionId === n && t.adUnitCode === e)
)
.filter(e => e && e[0] && e[0].adUnitCode)
.map(e => ({ [e[0].adUnitCode]: { bids: e } }))
.reduce((e, t) => Object.assign(e, t), {});
}
(F.getAdserverTargetingForAdUnitCodeStr = function(e) {
if (
((0, r.fH)(
‘Invoking tlpbjs.getAdserverTargetingForAdUnitCodeStr’,
arguments
),
e)
) {
var t = F.getAdserverTargetingForAdUnitCode(e);
return (0, r.$D)(t);
}
(0, r.OG)(
‘Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode’
);
}),
(F.getHighestUnusedBidResponseForAdUnitCode = function(e) {
if (e) {
const t = E.n.getAllBidsForAdUnitCode(e).filter(A.Yl);
return t.length ? t.reduce(N.Vk) : {};
}
(0, r.OG)(
‘Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode’
);
}),
(F.getAdserverTargetingForAdUnitCode = function(e) {
return F.getAdserverTargeting(e)[e];
}),
(F.getAdserverTargeting = function(e) {
return (
(0, r.fH)(‘Invoking tlpbjs.getAdserverTargeting’, arguments),
A.iS.getAllTargeting(e)
);
}),
(F.getConsentMetadata = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getConsentMetadata’),
q.SL.getConsentMeta()
);
}),
(F.getNoBids = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getNoBids’, arguments),
oe(‘getNoBids’)
);
}),
(F.getNoBidsForAdUnitCode = function(e) {
return {
bids: E.n.getNoBids().filter(t => t.adUnitCode === e)
};
}),
(F.getBidResponses = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getBidResponses’, arguments),
oe(‘getBidsReceived’)
);
}),
(F.getBidResponsesForAdUnitCode = function(e) {
return {
bids: E.n.getBidsReceived().filter(t => t.adUnitCode === e)
};
}),
(F.setTargetingForGPTAsync = function(e, t) {
(0, r.fH)(‘Invoking tlpbjs.setTargetingForGPTAsync’, arguments),
(0, r.II)()
? A.iS.setTargetingForGPT(e, t)
: (0, r.vV)(‘window.googletag is not defined on the page’);
}),
(F.setTargetingForAst = function(e) {
(0, r.fH)(‘Invoking tlpbjs.setTargetingForAn’, arguments),
A.iS.isApntagDefined()
? (A.iS.setTargetingForAst(e),
$.Ic(J, A.iS.getAllTargeting()))
: (0, r.vV)(‘window.apntag is not defined on the page’);
}),
(F.renderAd = (0, w.A_)(‘async’, function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.renderAd’, arguments),
(0, r.OG)(‘Calling renderAd with adId :’ + t),
(0, c.BS)(e, t, n);
})),
(F.removeAdUnit = function(e) {
if (((0, r.fH)(‘Invoking tlpbjs.removeAdUnit’, arguments), !e))
return void (F.adUnits = []);
let t;
(t = (0, r.cy)(e) ? e : [e]),
t.forEach(e => {
for (let t = F.adUnits.length – 1; t >= 0; t–)
F.adUnits[t].code === e && F.adUnits.splice(t, 1);
});
}),
(F.requestBids = (function() {
const e = (0, w.A_)(
‘async’,
function() {
let {
bidsBackHandler: e,
timeout: t,
adUnits: n,
adUnitCodes: i,
labels: o,
auctionId: s,
ttlBuffer: a,
ortb2: d,
metrics: c,
defer: l
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
$.Ic(z);
const u = t || v.$W.getConfig(‘bidderTimeout’);
(0, r.fH)(‘Invoking tlpbjs.requestBids’, arguments),
null == i || Array.isArray(i) || (i = [i]),
i && i.length
? (n = n.filter(e => i.includes(e.code)))
: (i = n && n.map(e => e.code)),
(i = i.filter(r.hj));
const f = {
global: (0, r.D9)(
{},
v.$W.getAnyConfig(‘ortb2’) || {},
d || {}
),
bidder: Object.fromEntries(
Object.entries(v.$W.getBidderConfig())
.map(e => {
let [t, n] = e;
return [t, (0, r.Go)(n.ortb2)];
})
.filter(e => {
let [t, n] = e;
return null != n;
})
)
};
return (0, x.w)(C.U9.resolve(f.global)).then(
t => (
(f.global = t),
se({
bidsBackHandler: e,
timeout: u,
adUnits: n,
adUnitCodes: i,
labels: o,
auctionId: s,
ttlBuffer: a,
ortb2Fragments: f,
metrics: c,
defer: l
})
)
);
},
‘requestBids’
);
return (0, w.Y6)(
e,
M(
() => !v.$W.getConfig(‘allowPrerendering’),
function() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = t.adUnits || F.adUnits;
return (
(t.adUnits = (0, r.cy)(n) ? n.slice() : [n]),
(t.metrics = (0, j.K7)()),
t.metrics.checkpoint(‘requestBids’),
(t.defer = (0, C.v6)({
promiseFactory: e => new Promise(e)
})),
e.call(this, t),
t.defer.promise
);
}
)
);
})());
const se = (0, w.A_)(
‘async’,
function() {
let {
bidsBackHandler: e,
timeout: t,
adUnits: n,
ttlBuffer: i,
adUnitCodes: o,
labels: a,
auctionId: d,
ortb2Fragments: c,
metrics: l,
defer: u
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const f = (0, _.pX)(v.$W.getConfig(‘s2sConfig’) || []);
function g(t, n, i) {
if (‘function’ == typeof e)
try {
e(t, n, i);
} catch (e) {
(0, r.vV)(‘Error executing bidsBackHandler’, null, e);
}
u.resolve({ bids: t, timedOut: n, auctionId: i });
}
!(function(e) {
e.forEach(e => (0, W.V0)(e));
})(n),
(n = (0, j.BO)(l).measureTime(‘requestBids.validate’, () =>
re(n)
));
const p = {};
if (
(n.forEach(e => {
const t = Object.keys(e.mediaTypes || { banner: ‘banner’ }),
n = e.bids.map(e => e.bidder),
o = _.Ay.bidderRegistry,
s = n.filter(e => !f.has(e));
e.adUnitId = (0, r.lk)();
const a = e.ortb2Imp?.ext?.tid;
a &&
(p.hasOwnProperty(e.code)
? (0, r.JE)(
`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units ‘${e.code}’`
)
: (p[e.code] = a)),
null == i ||
e.hasOwnProperty(‘ttlBuffer’) ||
(e.ttlBuffer = i),
s.forEach(n => {
const i = o[n],
s = i && i.getSpec && i.getSpec(),
a = (s && s.supportedMediaTypes) || [‘banner’];
t.some(e => a.includes(e)) ||
((0, r.JE)((0, r.bz)(e, n)),
(e.bids = e.bids.filter(e => e.bidder !== n)));
});
}),
n && 0 !== n.length)
) {
n.forEach(e => {
const t = e.ortb2Imp?.ext?.tid || p[e.code] || (0, r.lk)();
p.hasOwnProperty(e.code) || (p[e.code] = t),
(e.transactionId = t),
(0, s.J)(e, ‘ortb2Imp.ext.tid’, t);
});
const e = E.n.createAuction({
adUnits: n,
adUnitCodes: o,
callback: g,
cbTimeout: t,
labels: a,
auctionId: d,
ortb2Fragments: c,
metrics: l
});
let i = n.length;
i > 15 &&
(0, r.fH)(
`Current auction ${e.getAuctionId()} contains ${i} adUnits.`,
n
),
o.forEach(t =>
A.iS.setLatestAuctionForAdUnit(t, e.getAuctionId())
),
e.callBids();
} else
(0, r.OG)(‘No adUnits configured. No bids requested.’), g();
},
‘startAuction’
);
F.requestBids.before(function(e, t) {
function n(e) {
for (var t; (t = e.shift()); ) t();
}
n(D.s0), n(ae), e.call(this, t);
}, 49),
(F.addAdUnits = function(e) {
(0, r.fH)(‘Invoking tlpbjs.addAdUnits’, arguments),
F.adUnits.push.apply(F.adUnits, (0, r.cy)(e) ? e : [e]),
$.Ic(L);
}),
(F.onEvent = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.onEvent’, arguments),
(0, r.fp)(t)
? !n || Q[e].call(null, n)
? $.on(e, t, n)
: (0, r.vV)(
‘The id provided is not valid for event «‘ +
e +
‘» and no handler was set.’
)
: (0, r.vV)(
‘The event handler provided is not a function and was not set on event «‘ +
e +
‘».’
);
}),
(F.offEvent = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.offEvent’, arguments),
(n && !Q[e].call(null, n)) || $.AU(e, t, n);
}),
(F.getEvents = function() {
return (0, r.fH)(‘Invoking tlpbjs.getEvents’), $.kQ();
}),
(F.registerBidAdapter = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.registerBidAdapter’, arguments);
try {
const i = n ? (0, G.xb)(n) : e();
_.Ay.registerBidAdapter(i, t);
} catch (e) {
(0, r.vV)(‘Error registering bidder adapter : ‘ + e.message);
}
}),
(F.registerAnalyticsAdapter = function(e) {
(0, r.fH)(
‘Invoking tlpbjs.registerAnalyticsAdapter’,
arguments
);
try {
_.Ay.registerAnalyticsAdapter(e);
} catch (e) {
(0, r.vV)(
‘Error registering analytics adapter : ‘ + e.message
);
}
}),
(F.createBid = function(e) {
return (
(0, r.fH)(‘Invoking tlpbjs.createBid’, arguments), (0, I.O)(e)
);
});
const ae = [],
de = (0, w.A_)(
‘async’,
function(e) {
e && !(0, r.Im)(e)
? ((0, r.fH)(‘Invoking tlpbjs.enableAnalytics for: ‘, e),
_.Ay.enableAnalytics(e))
: (0, r.vV)(
‘tlpbjs.enableAnalytics should be called with option {}’
);
},
‘enableAnalyticsCb’
);
function ce(e) {
if (‘function’ == typeof e)
try {
e.call();
} catch (e) {
(0, r.vV)(‘Error processing command :’, e.message, e.stack);
}
else
(0, r.vV)(
‘Commands written into tlpbjs.cmd.push must be wrapped in a function’
);
}
function le(e) {
e.forEach(function(e) {
if (void 0 === e.called)
try {
e.call(), (e.called = !0);
} catch (e) {
(0, r.vV)(‘Error processing command :’, ‘prebid.js’, e);
}
});
}
(F.enableAnalytics = function(e) {
ae.push(de.bind(this, e));
}),
(F.aliasBidder = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.aliasBidder’, arguments),
e && t
? _.Ay.aliasBidAdapter(e, t, n)
: (0, r.vV)(
‘bidderCode and alias must be passed as arguments’,
‘tlpbjs.aliasBidder’
);
}),
(F.aliasRegistry = _.Ay.aliasRegistry),
v.$W.getConfig(‘aliasRegistry’, e => {
‘private’ === e.aliasRegistry && delete F.aliasRegistry;
}),
(F.getAllWinningBids = function() {
return E.n.getAllWinningBids();
}),
(F.getAllPrebidWinningBids = function() {
return (
(0, r.JE)(
‘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.’
),
E.n
.getBidsReceived()
.filter(e => e.status === d.tl.BID_TARGETING_SET)
);
}),
(F.getHighestCpmBids = function(e) {
return A.iS.getWinningBids(e);
}),
(F.clearAllAuctions = function() {
E.n.clearAllAuctions();
}),
(F.markWinningBidAsUsed = function(e) {
let t,
{
adId: n,
adUnitCode: i,
analytics: o = !1,
events: s = !1
} = e;
i && null == n
? (t = A.iS.getWinningBids(i))
: n
? (t = E.n.getBidsReceived().filter(e => e.adId === n))
: (0, r.JE)(
‘Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function.’
),
t.length > 0 &&
(o || s ? (0, c.n6)(t[0]) : E.n.addWinningBid(t[0]),
(0, c.qn)(t[0]));
}),
(F.getConfig = v.$W.getAnyConfig),
(F.readConfig = v.$W.readAnyConfig),
(F.mergeConfig = v.$W.mergeConfig),
(F.mergeBidderConfig = v.$W.mergeBidderConfig),
(F.setConfig = v.$W.setConfig),
(F.setBidderConfig = v.$W.setBidderConfig),
F.que.push(() => m()),
(F.processQueue = M(
() => (0, i.m)().delayPrerendering,
function() {
(F.que.push = F.cmd.push = ce),
(0, c.XO)(),
w.A_.ready(),
le(F.que),
le(F.cmd);
}
)),
(F.triggerBilling = e => {
let { adId: t, adUnitCode: n } = e;
E.n
.getAllWinningBids()
.filter(
e => e.adId === t || (null == t && e.adUnitCode === n)
)
.forEach(e => {
_.Ay.triggerBilling(e), (0, c.vB)(e);
});
});
},
7873: (e, t, n) => {
n.d(t, { E: () => s, m: () => o });
const i = window,
r = (i.tlpbjs = i.tlpbjs || {});
function o() {
return r;
}
function s(e) {
r.installedModules.push(e);
}
(r.cmd = r.cmd || []),
(r.que = r.que || []),
i === window &&
((i._pbjsGlobals = i._pbjsGlobals || []),
i._pbjsGlobals.push(‘tlpbjs’));
},
7934: (e, t, n) => {
n.d(t, { EN: () => d, gR: () => s });
var i = n(3272),
r = n(1069);
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 { noLeadingWww: t = !1, noPort: n = !1 } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
try {
e = new URL(o(e));
} catch (e) {
return;
}
return (
(e = n ? e.hostname : e.host),
t && e.startsWith(‘www.’) && (e = e.substring(4)),
e
);
}
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,
i,
r =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
return r.top !== r
? e
: function() {
const o = a(r.document),
s = r.location.href;
return (
(t === o && s === n) || ((t = o), (n = s), (i = e())), i
);
};
})(
((c = window),
function() {
const e = [],
t = (function(e) {
try {
if (!e.location.ancestorOrigins) return;
return e.location.ancestorOrigins;
} catch (e) {}
})(c),
n = i.$W.getConfig(‘maxNestedIframes’);
let d,
l,
u,
f,
g = !1,
p = 0,
h = !1,
m = !1,
b = !1;
do {
const n = d,
i = m;
let o,
s = !1,
f = null;
(m = !1), (d = d ? d.parent : c);
try {
o = d.location.href || null;
} catch (e) {
s = !0;
}
if (s)
if (i) {
const e = n.context;
try {
(f = e.sourceUrl),
(l = f),
(b = !0),
(h = !0),
d === c.top && (g = !0),
e.canonicalUrl && (u = e.canonicalUrl);
} catch (e) {}
} else {
(0, r.JE)(
‘Trying to access cross domain iframe. Continuing without referrer and location’
);
try {
const e = n.document.referrer;
e && ((f = e), d === c.top && (g = !0));
} catch (e) {}
!f &&
t &&
t[p – 1] &&
((f = t[p – 1]), d === c.top && (b = !0)),
f && !h && (l = f);
}
else {
if (o && ((f = o), (l = f), (h = !1), d === c.top)) {
g = !0;
const e = a(d.document);
e && (u = e);
}
d.context && d.context.sourceUrl && (m = !0);
}
e.push(f), p++;
} while (d !== c.top && p < n);
e.reverse();
try {
f = c.top.document.referrer;
} catch (e) {}
const y = g || b ? l : null,
v = i.$W.getConfig(‘pageUrl’) || u || null;
let E = i.$W.getConfig(‘pageUrl’) || y || o(v, c);
return (
y &&
y.indexOf(‘?’) > -1 &&
-1 === E.indexOf(‘?’) &&
(E = `${E}${y.substring(y.indexOf(‘?’))}`),
{
reachedTop: g,
isAmp: h,
numIframes: p – 1,
stack: e,
topmostLocation: l || null,
location: y,
canonicalUrl: v,
page: E,
domain: s(E) || null,
ref: f || null,
legacy: {
reachedTop: g,
isAmp: h,
numIframes: p – 1,
stack: e,
referer: l || null,
canonicalUrl: v
}
}
);
})
);
var c;
},
2938: (e, t, n) => {
n.d(t, {
CK: () => b,
X0: () => g,
qk: () => f,
s0: () => p,
vM: () => m
});
var i = n(1069),
r = n(2693),
o = n(5569),
s = n(5139),
a = n(2604),
d = n(6811),
c = n(3272),
l = n(1445),
u = n(3441);
const f = ‘html5’,
g = ‘cookie’;
let p = [];
function h() {
let { moduleName: e, moduleType: t } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
{ isAllowed: n = s.io } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
function r(i, r) {
let s = e;
const f = c.$W.getCurrentBidder();
f && t === o.tW && l.Ay.aliasRegistry[f] === e && (s = f);
return i({ valid: n(d.Ue, (0, u.s)(t, s, { [a.Zw]: r })) });
}
function h(e, t, n) {
if (!n || ‘function’ != typeof n) return r(e, t);
p.push(function() {
let i = r(e, t);
n(i);
});
}
function m(e) {
const t = e.charAt(0).toUpperCase() + e.substring(1),
n = () => window[e],
r = function(t) {
return h(
function(t) {
if (t && t.valid)
try {
return !!n();
} catch (t) {
(0, i.vV)(`${e} api disabled`);
}
return !1;
},
f,
t
);
};
return {
[`has${t}`]: r,
[`${e}IsEnabled`]: e =>
h(
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,
e
),
[`setDataIn${t}`]: (e, t, i) =>
h(
function(i) {
i && i.valid && r() && n().setItem(e, t);
},
f,
i
),
[`getDataFrom${t}`]: (e, t) =>
h(
function(t) {
return t && t.valid && r() ? n().getItem(e) : null;
},
f,
t
),
[`removeDataFrom${t}`]: (e, t) =>
h(
function(t) {
t && t.valid && r() && n().removeItem(e);
},
f,
t
)
};
}
return {
setCookie: function(e, t, n, i, r, o) {
return h(
function(o) {
if (o && o.valid) {
const o =
r && » !== r
? ` ;domain=${encodeURIComponent(r)}`
: »,
s = n && » !== n ? ` ;expires=${n}` : »,
a =
null != i && ‘none’ == i.toLowerCase()
? ‘; Secure’
: »;
document.cookie = `${e}=${encodeURIComponent(
t
)}${s}; path=/${o}${i ? `; SameSite=${i}` : »}${a}`;
}
},
g,
o
);
},
getCookie: function(e, t) {
return h(
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;
},
g,
t
);
},
cookiesAreEnabled: function(e) {
return h(
function(e) {
return !(!e || !e.valid) && (0, i.GE)();
},
g,
e
);
},
…m(‘localStorage’),
…m(‘sessionStorage’),
findSimilarCookies: function(e, t) {
return h(
function(t) {
if (t && t.valid) {
const t = [];
if ((0, i.N9)()) {
const n = document.cookie.split(‘;’);
for (; n.length; ) {
const i = n.pop();
let r = i.indexOf(‘=’);
r = r < 0 ? i.length : r;
decodeURIComponent(
i.slice(0, r).replace(/^s+/, »)
).indexOf(e) >= 0 &&
t.push(decodeURIComponent(i.slice(r + 1)));
}
}
return t;
}
},
g,
t
);
}
};
}
function m() {
let { moduleType: e, moduleName: t, bidderCode: n } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function i() {
throw new Error(
‘Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName’
);
}
return (
n
? (((e && e !== o.tW) || t) && i(), (e = o.tW), (t = n))
: (t && e) || i(),
h({ moduleType: e, moduleName: t })
);
}
function b(e) {
return h({ moduleName: e, moduleType: o.tp });
}
(0, s.qB)(d.Ue, ‘deviceAccess config’, function() {
if (!(0, i.N9)()) return { allow: !1 };
}),
(0, s.qB)(d.Ue, ‘bidderSettings.*.storageAllowed’, function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: r.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 };
});
},
7779: (e, t, n) => {
n.d(t, { Yl: () => w, iS: () => B, uW: () => A });
var i = n(6881),
r = n(7863),
o = n(2693),
s = n(3272),
a = n(8969),
d = n(5023),
c = n(9214),
l = n(1371),
u = n(2449),
f = n(1069),
g = n(433),
p = n(2713),
h = [];
const m = 20,
b = ‘targetingControls.allowTargetingKeys’,
y = ‘targetingControls.addTargetingKeys’,
v = `Only one of «${b}» or «${y}» can be set`,
E = Object.keys(a.xS).map(e => a.xS[e]);
let A = {
isActualBid: e => e.getStatusCode() === a.XQ.GOOD,
isBidNotExpired: e =>
e.responseTimestamp + 1e3 * (0, r.cT)(e) > (0, f.vE)(),
isUnusedBid: e =>
e &&
((e.status && ![a.tl.RENDERED].includes(e.status)) || !e.status)
};
function w(e) {
return !Object.values(A).some(t => !t(e));
}
const I = (0, c.A_)(‘sync’, function(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: 0,
i =
arguments.length > 3 &&
void 0 !== arguments[3] &&
arguments[3],
r =
arguments.length > 4 && void 0 !== arguments[4]
? arguments[4]
: f.Q0;
if (!i) {
const i = [],
o = s.$W.getConfig(‘sendBidsControl.dealPrioritization’);
let a = (0, f.$z)(e, ‘adUnitCode’);
return (
Object.keys(a).forEach(e => {
let s = [],
d = (0, f.$z)(a[e], ‘bidderCode’);
Object.keys(d).forEach(e => {
s.push(d[e].reduce(t));
}),
n
? ((s = o
? s.sort(T(!0))
: s.sort((e, t) => t.cpm – e.cpm)),
i.push(…s.slice(0, n)))
: ((s = s.sort(r)), i.push(…s));
}),
i
);
}
return e;
});
function T() {
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;
};
}
function C(e, t) {
return (arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: () => window.googletag.pubads().getSlots())().reduce(
(e, n) => {
const i = (0, f.fp)(t) && t(n);
return (
Object.keys(e)
.filter((0, f.fp)(i) ? i : (0, f.iC)(n))
.forEach(t => e[t].push(n)),
e
);
},
Object.fromEntries(e.map(e => [e, []]))
);
}
const B = (function(e) {
let t = {},
n = {};
function i(e) {
let t =
arguments.length > 1 &&
void 0 !== arguments[1] &&
arguments[1],
n =
arguments.length > 2 &&
void 0 !== arguments[2] &&
arguments[2];
const i = E.concat(u.Nh),
r = s.$W.getConfig(
‘targetingControls.allowSendAllBidsTargetingKeys’
),
o = r ? r.map(e => a.xS[e]) : i;
return e.reduce((e, r) => {
if (t || (n && r.dealId)) {
const t = (function(e, t) {
return t.reduce(
(t, n) => (
e.adserverTargeting[n] &&
t.push({
[`${n}_${e.bidderCode}`.substring(0, 20)]: [
e.adserverTargeting[n]
]
}),
t
),
[]
);
})(
r,
i.filter(
e =>
void 0 !== r.adserverTargeting[e] &&
(n || -1 !== o.indexOf(e))
)
);
t && e.push({ [r.adUnitCode]: t });
}
return e;
}, []);
}
function r(t) {
return ‘string’ == typeof t
? [t]
: (0, f.cy)(t)
? t
: e.getAdUnitCodes() || [];
}
function A() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: p.Bq,
i =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: void 0,
r = e.getBidsReceived().reduce((e, t) => {
const i = s.$W.getConfig(‘useBidCache’),
r = s.$W.getConfig(‘bidCacheFilterFunction’),
o = n[t.adUnitCode] === t.auctionId,
a = !(i && !o && ‘function’ == typeof r) || !!r(t);
return (
(i || o) &&
a &&
(0, g.A)(t, ‘video.context’) !== l.LM &&
w(t) &&
((t.latestTargetedAuctionId = n[t.adUnitCode]),
e.push(t)),
e
);
}, []);
return I(r, t, void 0, void 0, void 0, i);
}
function B(e, n) {
let i = t.getWinningBids(n, e),
r = O();
return (
(i = i.map(e => ({
[e.adUnitCode]: Object.keys(e.adserverTargeting)
.filter(
t =>
void 0 === e.sendStandardTargeting ||
e.sendStandardTargeting ||
-1 === r.indexOf(t)
)
.reduce((t, n) => {
const i = [e.adserverTargeting[n]],
r = { [n.substring(0, m)]: i };
if (n === a.xS.DEAL) {
const o = `${n}_${e.bidderCode}`.substring(0, m),
s = { [o]: i };
return […t, r, s];
}
return […t, r];
}, [])
}))),
i
);
}
function O() {
return e
.getStandardBidderAdServerTargeting()
.map(e => e.key)
.concat(E)
.filter(f.hj);
}
return (
(t.setLatestAuctionForAdUnit = function(e, t) {
n[e] = t;
}),
(t.resetPresetTargeting = function(e, t) {
if ((0, f.II)()) {
const n = r(e);
Object.values(C(n, t)).forEach(e => {
e.forEach(e => {
!(function(e) {
h.forEach(t => {
e.getTargeting(t) && e.clearTargeting(t);
});
})(e);
});
});
}
}),
(t.resetPresetTargetingAST = function(e) {
r(e).forEach(function(e) {
const t = window.apntag.getTag(e);
if (t && t.keywords) {
const n = Object.keys(t.keywords),
i = {};
n.forEach(e => {
h.includes(e.toLowerCase()) || (i[e] = t.keywords[e]);
}),
window.apntag.modifyTag(e, { keywords: i });
}
});
}),
(t.getAllTargeting = function(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]
: f.Q0;
d ||= A(c, l);
const g = r(t),
E = s.$W.getConfig(‘enableSendAllBids’),
w = s.$W.getConfig(‘sendBidsControl.bidLimit’),
C = (E && (n || w)) || 0,
{ customKeysByUnit: R, filteredBids: S } = (function(e, t) {
const n = [],
i = {},
r = 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 = r && t.dealId;
s &&
(d || a) &&
(n.push(t),
Object.keys(t.adserverTargeting)
.filter(
(function() {
let e = O();
e = e.concat(u.Nh);
return function(t) {
return -1 === e.indexOf(t);
};
})()
)
.forEach(e => {
const n = e.substring(0, m),
r = i[t.adUnitCode] || {},
o = [t.adserverTargeting[e]];
r[n]
? (r[n] = r[n].concat(o).filter(f.hj))
: (r[n] = o),
(i[t.adUnitCode] = r);
}));
}),
{ filteredBids: n, customKeysByUnit: i }
);
})(g, d);
let k = (function(t, n, r) {
const o =
!1 !==
s.$W.getConfig(
‘targetingControls.allBidsCustomTargeting’
),
d = B(t, r)
.concat(
(function(e) {
const t = s.$W.getConfig(
‘targetingControls.alwaysIncludeDeals’
);
return i(e, s.$W.getConfig(‘enableSendAllBids’), t);
})(t)
)
.concat(
(function(t) {
function n(e) {
return e?.[a.iD.ADSERVER_TARGETING];
}
function i(e) {
const t = n(e);
return Object.keys(t).map(function(e) {
return (
(0, f.O8)(t[e]) &&
(t[e] = t[e].split(‘,’).map(e => e.trim())),
(0, f.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 = i(t);
return n && e.push({ [t.code]: n }), e;
}, []);
})(r)
);
o &&
d.push(
…(function(e, t) {
return e.reduce((e, n) => {
const i = Object.assign({}, n),
r = t[i.adUnitCode],
o = [];
return (
r &&
Object.keys(r).forEach(e => {
e && r[e] && o.push({ [e]: r[e] });
}),
e.push({ [i.adUnitCode]: o }),
e
);
}, []);
})(t, n)
);
return (
d.forEach(e => {
!(function(e) {
Object.keys(e).forEach(t => {
e[t].forEach(e => {
const t = Object.keys(e);
-1 === h.indexOf(t[0]) && (h = t.concat(h));
});
});
})(e);
}),
d
);
})(I(S, c, C, void 0, l), R, g);
const U = Object.keys(Object.assign({}, a.Zh, a.x5));
let D = s.$W.getConfig(b);
const _ = s.$W.getConfig(y);
if (null != _ && null != D) throw new Error(v);
(D = null != _ ? U.concat(_) : D || U),
Array.isArray(D) &&
D.length > 0 &&
(k = (function(e, t) {
const n = Object.assign({}, a.xS, a.x5),
i = Object.keys(n),
r = {};
(0, f.fH)(
`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 ===
i.filter(e => 0 === o.indexOf(n[e]))
.length ||
t.find(e => {
const t = n[e];
return 0 === o.indexOf(t);
});
return (r[o] = !s), s;
});
e[o] = s;
});
const o = Object.keys(r).filter(e => r[e]);
return (
(0, f.fH)(
`allowTargetingKeys – removed keys [ ${o.join(
‘, ‘
)} ]`
),
e.filter(e => e[Object.keys(e)[0]].length > 0)
);
})(k, D)),
(k = (function(e) {
let t = 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), {})
}));
return (
(t = t.reduce(function(e, t) {
var n = Object.keys(t)[0];
return (e[n] = Object.assign({}, e[n], t[n])), e;
}, {})),
t
);
})(k));
const $ = s.$W.getConfig(
‘targetingControls.auctionKeyMaxChars’
);
return (
$ &&
((0, f.fH)(
`Detected ‘targetingControls.auctionKeyMaxChars’ was active for this auction; set with a limit of ${$} characters. Running checks on auction keys…`
),
(k = (function(e, t) {
let n = (0, f.Go)(e),
i = Object.keys(n)
.map(e => ({
adUnitCode: e,
adserverTargeting: n[e]
}))
.sort(T());
return i.reduce(function(e, i, r, o) {
let s =
((a = i.adserverTargeting),
Object.keys(a).reduce(function(e, t) {
return (
e + `${t}%3d${encodeURIComponent(a[t])}%26`
);
}, »));
var a;
r + 1 === o.length && (s = s.slice(0, -3));
let d = i.adUnitCode,
c = s.length;
return (
c <= t
? ((t -= c),
(0, f.fH)(
`AdUnit ‘${d}’ auction keys comprised of ${c} characters. Deducted from running threshold; new limit is ${t}`,
n[d]
),
(e[d] = n[d]))
: (0, f.JE)(
`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]
),
r + 1 === o.length &&
0 === Object.keys(e).length &&
(0, f.vV)(
‘No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting.’
),
e
);
}, {});
})(k, $))),
g.forEach(e => {
k[e] || (k[e] = {});
}),
k
);
}),
s.$W.getConfig(‘targetingControls’, function(e) {
null != (0, g.A)(e, b) &&
null != (0, g.A)(e, y) &&
(0, f.vV)(v);
}),
(t.setTargetingForGPT = (0, c.A_)(
‘sync’,
function(n, i) {
let r = t.getAllTargeting(n),
o = Object.fromEntries(h.map(e => [e, null]));
Object.entries(C(Object.keys(r), i)).forEach(e => {
let [t, n] = e;
n.length > 1 &&
(0, f.JE)(
`Multiple slots found matching: ${t}. Targeting will be set on all matching slots, which can lead to duplicate impressions if more than one are requested from GAM. To resolve this, ensure the arguments to setTargetingForGPTAsync resolve to a single slot by explicitly matching the desired slotElementID.`
),
n.forEach(e => {
Object.keys(r[t]).forEach(e => {
let n = r[t][e];
‘string’ == typeof n &&
-1 !== n.indexOf(‘,’) &&
(n = n.split(‘,’)),
(r[t][e] = n);
}),
(0, f.OG)(
`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`,
r[t]
),
e.updateTargetingFromMap(
Object.assign({}, o, r[t])
);
});
}),
Object.keys(r).forEach(t => {
Object.keys(r[t]).forEach(n => {
‘hb_adid’ === n &&
e.setStatusForBids(r[t][n], a.tl.BID_TARGETING_SET);
});
}),
t.targetingDone(r),
d.Ic(a.qY.SET_TARGETING, r);
},
‘setTargetingForGPT’
)),
(t.targetingDone = (0, c.A_)(
‘sync’,
function(e) {
return e;
},
‘targetingDone’
)),
(t.getWinningBids = function(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: p.Vk,
i =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: f.Q0;
const s = t || A(n, i),
a = r(e);
return s
.filter(e => a.includes(e.adUnitCode))
.filter(e =>
!0 === o.u.get(e.bidderCode, ‘allowZeroCpmBids’)
? e.cpm >= 0
: e.cpm > 0
)
.map(e => e.adUnitCode)
.filter(f.hj)
.map(e =>
s
.filter(t => (t.adUnitCode === e ? t : null))
.reduce(p.Vk)
);
}),
(t.setTargetingForAst = function(e) {
let n = t.getAllTargeting(e);
try {
t.resetPresetTargetingAST(e);
} catch (e) {
(0, f.vV)(‘unable to reset targeting for AST’ + e);
}
Object.keys(n).forEach(e =>
Object.keys(n[e]).forEach(t => {
if (
((0, f.OG)(
`Attempting to set targeting for targetId: ${e} key: ${t} value: ${n[e][t]}`
),
(0, f.O8)(n[e][t]) || (0, f.cy)(n[e][t]))
) {
let i = {},
r = /pt[0-9]/;
t.search(r) < 0
? (i[t.toUpperCase()] = n[e][t])
: (i[t] = n[e][t]),
window.apntag.setKeywords(e, i, {
overrideKeyValue: !0
});
}
})
);
}),
(t.isApntagDefined = function() {
if (window.apntag && (0, f.fp)(window.apntag.setKeywords))
return !0;
}),
t
);
})(i.n);
},
8230: (e, t, n) => {
n.d(t, { qh: () => u, zt: () => g });
var i = n(1069),
r = n(3272),
o = n(2938),
s = n(5139),
a = n(6811),
d = n(2604),
c = n(5569),
l = n(3441);
const u = {
syncEnabled: !0,
filterSettings: { image: { bidders: ‘*’, filter: ‘include’ } },
syncsPerBidder: 5,
syncDelay: 3e3,
auctionDelay: 500
};
r.$W.setDefaults({ userSync: (0, i.Go)(u) });
const f = (0, o.CK)(‘usersync’);
const g = (function(e) {
let t = {},
n = { image: [], iframe: [] },
o = new Set(),
s = {},
u = { image: !0, iframe: !1 },
f = e.config;
function g() {
if (f.syncEnabled && e.browserSupportsCookies) {
try {
!(function() {
if (!u.iframe) return;
p(n.iframe, e => {
let [t, r] = e;
(0, i.OG)(`Invoking iframe user sync for bidder: ${t}`),
(0, i.SG)(r),
(function(e, t) {
e.image = e.image.filter(e => e[0] !== t);
})(n, t);
});
})(),
(function() {
if (!u.image) return;
p(n.image, e => {
let [t, n] = e;
(0, i.OG)(
`Invoking image pixel user sync for bidder: ${t}`
),
(0, i.z$)(n);
});
})();
} catch (e) {
return (0, i.vV)(‘Error firing user syncs’, e);
}
n = { image: [], iframe: [] };
}
}
function p(e, t) {
(0, i.k4)(e).forEach(t);
}
function h(e, t) {
let n = f.filterSettings;
if (
(function(e, t) {
if (e.all && e[t])
return (
(0, i.JE)(
`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
);
let n = e.all ? e.all : e[t],
r = e.all ? ‘all’ : t;
if (!n) return !1;
let o = n.filter,
s = n.bidders;
if (o && ‘include’ !== o && ‘exclude’ !== o)
return (
(0, i.JE)(
`UserSync «filterSettings.${r}.filter» setting ‘${o}’ is not a valid option; use either ‘include’ or ‘exclude’.`
),
!1
);
if (
‘*’ !== s &&
!(
Array.isArray(s) &&
s.length > 0 &&
s.every(e => (0, i.O8)(e) && ‘*’ !== e)
)
)
return (
(0, i.JE)(
`Detected an invalid setup in userSync «filterSettings.${r}.bidders»; use either ‘*’ (to represent all bidders) or an array of bidders.`
),
!1
);
return !0;
})(n, e)
) {
u[e] = !0;
let i = n.all ? n.all : n[e],
r = ‘*’ === i.bidders ? [t] : i.bidders;
const o = {
include: (e, t) => !e.includes(t),
exclude: (e, t) => e.includes(t)
};
return o[i.filter || ‘include’](r, t);
}
return !u[e];
}
return (
r.$W.getConfig(‘userSync’, e => {
if (e.userSync) {
let 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(a.Ml, ‘userSync config’, e => {
if (!f.syncEnabled)
return { allow: !1, reason: ‘syncs are disabled’ };
if (e[d.Dk] === c.tW) {
const n = e[d.bt],
i = e[d.iK];
if (!t.canBidderRegisterSync(n, i))
return {
allow: !1,
reason: `${n} syncs are not enabled for ${i}`
};
}
}),
(t.registerSync = (t, r, u) =>
o.has(r)
? (0, i.OG)(
`already fired syncs for «${r}», ignoring registerSync call`
)
: f.syncEnabled && (0, i.cy)(n[t])
? r
? 0 !== f.syncsPerBidder &&
Number(s[r]) >= f.syncsPerBidder
? (0, i.JE)(`Number of user syncs exceeded for «${r}»`)
: void (
e.isAllowed(
a.Ml,
(0, l.s)(c.tW, r, { [d.bt]: t, [d.e3]: u })
) &&
(n[t].push([r, u]),
(s = (function(e, t) {
return e[t] ? (e[t] += 1) : (e[t] = 1), e;
})(s, r)))
)
: (0, i.JE)(‘Bidder is required for registering sync’)
: (0, i.JE)(`User sync type «${t}» not supported`)),
(t.bidderDone = o.add.bind(o)),
(t.syncUsers = function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: 0;
if (e) return setTimeout(g, Number(e));
g();
}),
(t.triggerUserSyncs = () => {
f.enableOverride && t.syncUsers();
}),
(t.canBidderRegisterSync = (e, t) =>
!f.filterSettings || !h(e, t)),
t
);
})(
Object.defineProperties(
{
config: r.$W.getConfig(‘userSync’),
isAllowed: s.io,
regRule: s.qB
},
{
browserSupportsCookies: {
get: function() {
return !(0, i.Vt)() && f.cookiesAreEnabled();
}
}
}
)
);
},
1069: (e, t, n) => {
n.d(t, {
$D: () => U,
$z: () => Ue,
Bg: () => Ke,
Bj: () => Qe,
Bk: () => ge,
Bq: () => he,
CA: () => K,
D4: () => me,
D9: () => Le,
Dl: () => Ge,
El: () => Ye,
Et: () => ne,
Ez: () => Y,
Fq: () => We,
GE: () => Se,
Go: () => we,
II: () => ye,
Im: () => oe,
JE: () => F,
Lm: () => re,
N9: () => Re,
O8: () => ee,
OG: () => M,
Ot: () => T,
PB: () => Je,
Q0: () => Ee,
Qd: () => ie,
SB: () => $e,
SG: () => ue,
SH: () => De,
Tz: () => fe,
U6: () => ke,
Up: () => Pe,
Uu: () => Ve,
V: () => Oe,
Vt: () => Te,
YE: () => P,
ZA: () => be,
ZK: () => Ze,
_s: () => ae,
al: () => Ie,
bD: () => He,
bL: () => k,
bz: () => Ne,
c$: () => Fe,
cD: () => w,
cf: () => j,
cy: () => te,
dp: () => J,
fH: () => G,
fp: () => Z,
gM: () => Ce,
h0: () => L,
hj: () => pe,
hw: () => Q,
iC: () => qe,
k4: () => Ae,
kK: () => _,
l4: () => N,
l9: () => je,
lk: () => S,
mM: () => C,
mb: () => q,
nT: () => Xe,
ro: () => le,
s0: () => R,
t1: () => ve,
vE: () => Be,
vV: () => H,
wD: () => _e,
xQ: () => se,
y$: () => D,
z$: () => ce
});
var i = n(3272),
r = n(5751),
o = n(8969),
s = n(5555),
a = n(7873),
d = ‘String’,
c = ‘Function’,
l = ‘Number’,
u = ‘Object’,
f = ‘Boolean’,
g = Object.prototype.toString;
let p,
h,
m = Boolean(window.console),
b = Boolean(m && window.console.log),
y = Boolean(m && window.console.info),
v = Boolean(m && window.console.warn),
E = Boolean(m && window.console.error);
const A = (0, a.m)();
function w(e) {
p = e;
}
function I() {
null != p && p(…arguments);
}
const T = (function() {
let e;
return () => (
(!h || !e || Date.now() – e > 20) &&
(C.resetWinDimensions(), (e = Date.now())),
h
);
})();
const C = {
checkCookieSupport: Se,
createTrackPixelIframeHtml: function(e) {
let t =
!(arguments.length > 1 && void 0 !== arguments[1]) ||
arguments[1],
n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: »;
if (!e) return »;
t && (e = encodeURI(e));
n && (n = `sandbox=»${n}»`);
return «;
},
getWindowSelf: N,
getWindowTop: q,
canAccessWindowTop: V,
getWindowLocation: W,
insertUserSyncIframe: ue,
insertElement: ae,
isFn: Z,
triggerPixel: ce,
logError: H,
logWarn: F,
logMessage: M,
logInfo: G,
parseQS: Me,
formatQS: function(e) {
return Object.keys(e)
.map(t =>
Array.isArray(e[t])
? e[t].map(e => `${t}[]=${e}`).join(‘&’)
: `${t}=${e[t]}`
)
.join(‘&’);
},
deepEqual: He,
resetWinDimensions: function() {
const e = V() ? C.getWindowTop() : C.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
}
}
};
}
};
var B,
O =
((B = 0),
function() {
return ++B;
});
function R() {
return (
O() +
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 k(e) {
let t = »;
for (var n in e)
e.hasOwnProperty(n) &&
(t += n + ‘=’ + encodeURIComponent(e[n]) + ‘&’);
return (t = t.replace(/&$/, »)), t;
}
function U(e) {
return e && Object.getOwnPropertyNames(e).length > 0
? Object.keys(e)
.map(t => `${t}=${encodeURIComponent(e[t])}`)
.join(‘&’)
: »;
}
function D(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, i] = e;
return [parseInt(n, 10), parseInt(i, 10)];
})
: Array.isArray(e)
? x(e)
? [e]
: e.filter(x)
: [];
}
function _(e) {
return D(e).map($);
}
function $(e) {
return e[0] + ‘x’ + e[1];
}
function j(e) {
return { w: e[0], h: e[1] };
}
function x(e) {
return te(e) && 2 === e.length && !isNaN(e[0]) && !isNaN(e[1]);
}
function q() {
return window.top;
}
function N() {
return window.self;
}
function W() {
return window.location;
}
function P() {
return document;
}
function V() {
try {
if (C.getWindowTop().location.href) return !0;
} catch (e) {
return !1;
}
}
function M() {
J() && b && console.log.apply(console, z(arguments, ‘MESSAGE:’));
}
function G() {
J() && y && console.info.apply(console, z(arguments, ‘INFO:’));
}
function F() {
J() && v && console.warn.apply(console, z(arguments, ‘WARNING:’)),
I(o.qY.AUCTION_DEBUG, { type: ‘WARNING’, arguments });
}
function H() {
J() && E && console.error.apply(console, z(arguments, ‘ERROR:’)),
I(o.qY.AUCTION_DEBUG, { type: ‘ERROR’, arguments });
}
function L(e) {
function t(t) {
return function() {
for (
var n = arguments.length, i = new Array(n), r = 0;
r < n;
r++
)
i[r] = arguments[r];
t(e, …i);
};
}
return {
logError: t(H),
logWarn: t(F),
logMessage: t(M),
logInfo: t(G)
};
}
function z(e, t) {
e = [].slice.call(e);
let n = i.$W.getCurrentBidder();
return (
t && e.unshift(t),
n && e.unshift(r(‘#aaa’)),
e.unshift(r(‘#3b88c3’)),
e.unshift(‘%cPrebid’ + (n ? `%c${n}` : »)),
e
);
function r(e) {
return `display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`;
}
}
function J() {
return !!i.$W.getConfig(‘debug’);
}
const Q = (() => {
const e = {
border: ‘0px’,
hspace: ‘0’,
vspace: ‘0’,
marginWidth: ‘0’,
marginHeight: ‘0’,
scrolling: ‘no’,
frameBorder: ‘0’,
allowtransparency: ‘true’
};
return function(t, n) {
let i =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
const r = t.createElement(‘iframe’);
return (
Object.assign(r, Object.assign({}, e, n)),
Object.assign(r.style, i),
r
);
};
})();
function K() {
return Q(
document,
{ id: R(), width: 0, height: 0, src: ‘about:blank’ },
{ display: ‘none’, height: ‘0px’, width: ‘0px’, border: ‘0px’ }
);
}
function Y(e) {
return Me(W().search)[e] || »;
}
function X(e, t) {
return g.call(e) === ‘[object ‘ + t + ‘]’;
}
function Z(e) {
return X(e, c);
}
function ee(e) {
return X(e, d);
}
const te = Array.isArray.bind(Array);
function ne(e) {
return X(e, l);
}
function ie(e) {
return X(e, u);
}
function re(e) {
return X(e, f);
}
function oe(e) {
return (
!e ||
(te(e) || ee(e) ? !(e.length > 0) : Object.keys(e).length <= 0)
);
}
function se(e) {
return ee(e) && (!e || 0 === e.length);
}
function ae(e, t, n, i) {
let r;
(t = t || document),
(r = n
? t.getElementsByTagName(n)
: t.getElementsByTagName(‘head’));
try {
if (
((r = r.length ? r : t.getElementsByTagName(‘body’)),
r.length)
) {
r = r[0];
let t = i ? null : r.firstChild;
return r.insertBefore(e, t);
}
} catch (e) {}
}
function de(e, t) {
let n = null;
return new s.U9(i => {
const r = function() {
e.removeEventListener(‘load’, r),
e.removeEventListener(‘error’, r),
null != n && window.clearTimeout(n),
i();
};
e.addEventListener(‘load’, r),
e.addEventListener(‘error’, r),
null != t && (n = window.setTimeout(r, t));
});
}
function ce(e, t, n) {
const i = new Image();
t && C.isFn(t) && de(i, n).then(t), (i.src = e);
}
function le(e) {
if (!e) return;
const t = K();
var n;
C.insertElement(t, document, ‘body’),
(n = t.contentWindow.document).open(),
n.write(e),
n.close();
}
function ue(e, t, n) {
let i = C.createTrackPixelIframeHtml(
e,
!1,
‘allow-scripts allow-same-origin’
),
r = document.createElement(‘div’);
r.innerHTML = i;
let o = r.firstChild;
t && C.isFn(t) && de(o, n).then(t),
C.insertElement(o, document, ‘html’, !0);
}
function fe(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: encodeURI;
if (!e) return »;
let n =
‘
‘;
return (n += ‘
‘), n;
}
function ge(e) {
return Array.from(e.matchAll(/$({[^}]+})/g))
.map(e => e[1])
.reduce(
(e, t) => e.replace(‘$’ + encodeURIComponent(t), ‘$’ + t),
encodeURI(e)
);
}
function pe(e, t, n) {
return n.indexOf(e) === t;
}
function he(e, t) {
return e.concat(t);
}
function me(e, t) {
if (e)
return t
.flatMap(e => e.bids)
.find(t => [‘bidId’, ‘adId’, ‘bid_id’].some(n => t[n] === e));
}
function be() {
return (arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: A.adUnits
)
.map(e => e.bids.map(e => e.bidder).reduce(he, []))
.reduce(he, [])
.filter(e => void 0 !== e)
.filter(pe);
}
function ye() {
if (
window.googletag &&
Z(window.googletag.pubads) &&
Z(window.googletag.pubads().getSlots)
)
return !0;
}
function ve() {
if (window.apntag && Z(window.apntag.getTag)) return !0;
}
const Ee = (e, t) => t.cpm – e.cpm;
function Ae(e) {
let t = e.length;
for (; t > 0; ) {
let n = Math.floor(Math.random() * t);
t–;
let i = e[t];
(e[t] = e[n]), (e[n] = i);
}
return e;
}
function we(e) {
return (0, r.Q)(e) || {};
}
function Ie() {
try {
return C.getWindowSelf() !== C.getWindowTop();
} catch (e) {
return !0;
}
}
function Te() {
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, i] = t;
return e.replace(
new RegExp(‘\$\{‘ + n + ‘\}’, ‘g’),
i || »
);
}, e);
}
function Be() {
return new Date().getTime();
}
function Oe() {
return (
(window.performance &&
window.performance.now &&
window.performance.now()) ||
0
);
}
function Re() {
return !1 !== i.$W.getConfig(‘deviceAccess’);
}
function Se() {
if (window.navigator.cookieEnabled || document.cookie.length)
return !0;
}
function ke(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 Ue(e, t) {
return e.reduce(function(e, n) {
return (e[n[t]] = e[n[t]] || []).push(n), e;
}, {});
}
function De(e, t) {
return t
.filter(t => e[t])
.reduce((t, n) => Object.assign(t, { [n]: e[n] }), {});
}
function _e(e) {
const t = [‘banner’, ‘native’, ‘video’],
n = [‘instream’, ‘outstream’, ‘adpod’];
return (
!!Object.keys(e).every(e => t.includes(e)) &&
(!e.video || !e.video.context || n.includes(e.video.context))
);
}
function $e(e, t, n) {
return e
.filter(e => e.code === t)
.flatMap(e => e.bids)
.filter(e => e.bidder === n)
.map(e => e.params || {});
}
function je() {
return (
‘1’ === navigator.doNotTrack ||
‘1’ === window.doNotTrack ||
‘1’ === navigator.msDoNotTrack ||
‘yes’ === navigator.doNotTrack
);
}
const xe = (e, t) =>
e.getAdUnitPath() === t || e.getSlotElementId() === t;
function qe(e) {
return t => xe(e, t);
}
function Ne(e, t) {
const n = Object.keys(e.mediaTypes || { banner: ‘banner’ }).join(
‘, ‘
);
return `n ${e.code} is a ${n} ad unitn containing bidders that don’t support ${n}: ${t}.n This bidder won’t fetch demand.n `;
}
const We = Number.isInteger.bind(Number);
function Pe(e, t) {
return ‘object’ != typeof e
? {}
: t.reduce((n, i, r) => {
if (‘function’ == typeof i) return n;
let o = i,
s = i.match(/^(.+?)sass(.+?)$/i);
s && ((i = s[1]), (o = s[2]));
let a = e[i];
return (
‘function’ == typeof t[r + 1] && (a = t[r + 1](a, n)),
void 0 !== a && (n[o] = a),
n
);
}, {});
}
function Ve(e, t) {
return te(e) && (!t || e.length === t) && e.every(e => We(e));
}
function Me(e) {
return e
? e
.replace(/^?/, »)
.split(‘&’)
.reduce((e, t) => {
let [n, i] = t.split(‘=’);
return (
/[]$/.test(n)
? ((n = n.replace(‘[]’, »)),
(e[n] = e[n] || []),
e[n].push(i))
: (e[n] = i || »),
e
);
}, {})
: {};
}
function Ge(e, t) {
let n = document.createElement(‘a’);
t && ‘noDecodeWholeURL’ in t && t.noDecodeWholeURL
? (n.href = e)
: (n.href = decodeURIComponent(e));
let i =
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: i ? n.search : C.parseQS(n.search || »),
hash: (n.hash || »).replace(/^#/, »),
host: n.host || window.location.host
};
}
function Fe(e) {
return (
(e.protocol || ‘http’) +
‘://’ +
(e.host || e.hostname + (e.port ? `:${e.port}` : »)) +
(e.pathname || ») +
(e.search ? `?${C.formatQS(e.search || »)}` : ») +
(e.hash ? `#${e.hash}` : »)
);
}
function He(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 i = Array.isArray(e),
r = Array.isArray(t);
if (i && r) {
if (e.length !== t.length) return !1;
for (let i = 0; i < e.length; i++)
if (!He(e[i], t[i], { checkTypes: n })) return !1;
return !0;
}
if (i || r) 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 i of o) {
if (!Object.prototype.hasOwnProperty.call(t, i)) return !1;
if (!He(e[i], t[i], { checkTypes: n })) return !1;
}
return !0;
}
function Le(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];
ie(n) && ze(e, n);
}
return e;
}
function ze(e, t) {
if (!ie(e) || !ie(t)) return;
const n = Object.keys(t);
for (let i = 0; i < n.length; i++) {
const r = n[i];
if (‘__proto__’ === r || ‘constructor’ === r) continue;
const o = t[r];
ie(o)
? (e[r] || (e[r] = {}), ze(e[r], o))
: Array.isArray(o)
? Array.isArray(e[r])
? o.forEach(t => {
e[r].some(e => He(e, t)) || e[r].push(t);
})
: (e[r] = […o])
: (e[r] = o);
}
}
function Je(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 0,
n = function(e, t) {
if (Z(Math.imul)) return Math.imul(e, t);
var n = (4194303 & e) * (t |= 0);
return (
4290772992 & e && (n += ((4290772992 & e) * t) | 0), 0 | n
);
},
i = 3735928559 ^ t,
r = 1103547991 ^ t;
for (let t, o = 0; o < e.length; o++)
(t = e.charCodeAt(o)),
(i = n(i ^ t, 2654435761)),
(r = n(r ^ t, 1597334677));
return (
(i =
n(i ^ (i >>> 16), 2246822507) ^
n(r ^ (r >>> 13), 3266489909)),
(r =
n(r ^ (r >>> 16), 2246822507) ^
n(i ^ (i >>> 13), 3266489909)),
(4294967296 * (2097151 & r) + (i >>> 0)).toString()
);
}
function Qe(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: function(e) {
return e;
};
const n = new Map(),
i = function() {
const i = t.apply(this, arguments);
return (
n.has(i) || n.set(i, e.apply(this, arguments)), n.get(i)
);
};
return (i.clear = n.clear.bind(n)), i;
}
function Ke(e, t) {
Object.entries(t).forEach(t => {
let [n, i] = t;
return e.setAttribute(n, i);
});
}
function Ye(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: e => e,
i = 0,
r = e.length && e.length – 1;
const o = n(t);
for (; r – i > 1; ) {
const t = i + Math.round((r – i) / 2);
o > n(e[t]) ? (i = t) : (r = t);
}
for (; e.length > i && o > n(e[i]); ) i++;
return i;
}
const Xe = (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 Ze(e) {
‘string’ != typeof e && (e = JSON.stringify(e));
const t = new TextEncoder().encode(e),
n = new Blob([t])
.stream()
.pipeThrough(new window.CompressionStream(‘gzip’)),
i = await new Response(n).blob(),
r = await i.arrayBuffer();
return new Uint8Array(r);
}
},
2621: (e, t, n) => {
function i(e) {
return (
!e?.gdprApplies || !0 === e?.vendorData?.purpose?.consents?.[1]
);
}
n.d(t, { C: () => i });
},
6894: (e, t, n) => {
n.d(t, { Ak: () => m, BO: () => g, K7: () => p });
var i = n(3272);
const r = ‘performanceMetrics’,
o =
window.performance && window.performance.now
? () => window.performance.now()
: () => Date.now(),
s = new WeakMap();
function a() {
let {
now: e = o,
mkNode: t = l,
mkTimer: n = c,
mkRenamer: i = e => e,
nodes: r = 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 = i(a);
const d =
((c = ‘timestamps’),
function(e) {
return s.dfWalk({
visit(t, n) {
const i = n[c];
if (i.hasOwnProperty(e)) return i[e];
}
});
});
var c;
function l(e, t) {
const n = a(e);
s.dfWalk({
follow: (e, t) =>
t.propagate && (!e || !e.stopPropagation),
visit(e, i) {
n.forEach(n => {
null == e
? (i.metrics[n] = t)
: (i.groups.hasOwnProperty(n) || (i.groups[n] = []),
i.groups[n].push(t));
});
}
});
}
function u(t) {
return n(e, e => l(t, e));
}
function f() {
let e = {};
return (
s.dfWalk({
visit(t, n) {
e = Object.assign(
{},
!t || t.includeGroups ? n.groups : null,
n.metrics,
e
);
}
}),
e
);
}
const g = {
startTiming: u,
measureTime: function(e, t) {
return u(e).stopAfter(t)();
},
measureHookTime: function(e, t, n) {
const i = u(e);
return n(
(function(e) {
const t = i.stopBefore(e);
return (
(t.bail = e.bail && i.stopBefore(e.bail)),
(t.stopTiming = i),
(t.untimed = e),
t
);
})(t)
);
},
checkpoint: function(t) {
s.timestamps[t] = e();
},
timeSince: function(t, n) {
const i = d(t),
r = null != i ? e() – i : null;
return null != n && l(n, r), r;
},
timeBetween: function(e, t, n) {
const i = d(e),
r = d(t),
o = null != i && null != r ? r – i : null;
return null != n && l(n, o), o;
},
setMetric: l,
getMetrics: f,
fork: function() {
let {
propagate: e = !0,
stopPropagation: n = !1,
includeGroups: i = !1
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return o(
t([
[
s,
{
propagate: e,
stopPropagation: n,
includeGroups: i
}
]
]),
a
);
},
join: function(e) {
let {
propagate: t = !0,
stopPropagation: n = !1,
includeGroups: i = !1
} =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const o = r.get(e);
null != o &&
o.addParent(s, {
propagate: t,
stopPropagation: n,
includeGroups: i
});
},
newMetrics: function() {
return o(s.newSibling(), a);
},
renameWith: function(e) {
return o(s, e);
},
toJSON: () => f()
};
return r.set(g, s), g;
})(t([]));
};
}
function d(e, t, n) {
return function() {
t && t();
try {
return e.apply(this, arguments);
} finally {
n && n();
}
};
}
function c(e, t) {
const n = e();
let i = !1;
function r() {
i || (t(e() – n), (i = !0));
}
return (
(r.stopBefore = e => d(e, r)),
(r.stopAfter = e => d(e, null, r)),
r
);
}
function l(e) {
return {
metrics: {},
timestamps: {},
groups: {},
addParent(t, n) {
e.push([t, n]);
},
newSibling: () => l(e.slice()),
dfWalk() {
let t,
{
visit: n,
follow: i = () => !0,
visited: r = new Set(),
inEdge: o
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
if (!r.has(this)) {
if ((r.add(this), (t = n(o, this)), null != t)) return t;
for (const [s, a] of e)
if (
i(o, a) &&
((t = s.dfWalk({
visit: n,
follow: i,
visited: r,
inEdge: a
})),
null != t)
)
return t;
}
}
};
}
const u = (() => {
const e = function() {},
t = () => ({}),
n = { forEach: e },
i = () => null;
(i.stopBefore = e => e), (i.stopAfter = e => e);
const r = Object.defineProperties(
{ dfWalk: e, newSibling: () => r, addParent: e },
Object.fromEntries(
[‘metrics’, ‘timestamps’, ‘groups’].map(e => [e, { get: t }])
)
);
return a({
now: () => 0,
mkNode: () => r,
mkRenamer: () => () => n,
mkTimer: () => i,
nodes: { get: e, set: e }
})();
})();
let f = !0;
function g(e) {
return (f && e) || u;
}
i.$W.getConfig(r, e => {
f = !!e[r];
});
const p = (() => {
const e = a();
return function() {
return f ? e() : u;
};
})();
function h(e, t) {
return function(n, i) {
return function(r) {
for (
var o = arguments.length,
s = new Array(o > 1 ? o – 1 : 0),
a = 1;
a < o;
a++
)
s[a – 1] = arguments[a];
const d = this;
return g(t.apply(d, s)).measureHookTime(e + n, r, function(
e
) {
return i.call(d, e, …s);
});
};
};
}
const m = h(‘requestBids.’, e => e.metrics);
h(‘addBidResponse.’, (e, t) => t.metrics);
},
5555: (e, t, n) => {
n.d(t, { U9: () => s, cb: () => a, v6: () => d });
var i = n(43),
r = n(7873);
const o = (0, r.m)().setTimeout ?? i.w,
s = (0, r.m)().Promise ?? i.k;
function a() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: 0;
return new s(t => {
o(t, e);
});
}
function d() {
let e,
t,
{ promiseFactory: n = e => new s(e) } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function i(e) {
return t => e(t);
}
return {
promise: n((n, i) => {
(e = n), (t = i);
}),
resolve: i(e),
reject: i(t)
};
}
},
2713: (e, t, n) => {
function i(e, t) {
return e === t ? 0 : e < t ? -1 : 1;
}
function r() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: e => e;
return (t, n) => i(e(t), e(n));
}
function o() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i;
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 i of t) {
const t = i(e, n);
if (0 !== t) return t;
}
return 0;
};
}
function a() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i;
return (t, n) => (e(n, t) < 0 ? n : t);
}
function d() {
return a(
o(
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i
)
);
}
n.d(t, { Bp: () => a, Bq: () => f, NV: () => r, Vk: () => u });
const c = r(e => e.cpm),
l = r(e => e.responseTimestamp),
u = d(s(c, o(r(e => e.timeToRespond)))),
f = d(s(c, o(l)));
d(s(c, l));
},
6853: (e, t, n) => {
n.d(t, { H: () => l });
var i = n(5555),
r = n(1069);
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: i } = e;
return i(c(t, s – n)());
}),
(a = []));
}
function c(e, t) {
const n = s;
let i = setTimeout(() => {
s === n && null == o
? e()
: null != o
? a.push({
callback: e,
startTime: n,
setTimerId(e) {
i = e;
}
})
: (i = c(e, s – n)());
}, t);
return () => i;
}
function l() {
let {
startTime: e = r.vE,
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, r.El)(d, e, e => e.expiry),
0,
e
);
let u, f;
function g() {
if ((f && clearTimeout(f), d.length > 0)) {
const e = (0, r.vE)();
(u = Math.max(e, d[0].expiry + o)),
(f = c(() => {
const e = (0, r.vE)();
let t = 0;
for (const n of d) {
if (n.expiry > e) break;
a.forEach(e => {
try {
e(n.item);
} catch (e) {
(0, r.vV)(e);
}
}),
s.delete(n.item),
t++;
}
d.splice(0, t), (f = null), g();
}, u – e));
} else f = null;
}
function p(n) {
const r = {},
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 = {});
i.U9.resolve(c(n)).then(n => {
e === t &&
((r[d] = n),
s === h &&
null != r.start &&
null != r.delta &&
((a = r.start + r.delta),
l(p),
(null == f || u > a + o) && g()));
});
};
}),
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));
},
clear() {
(d.length = 0), g(), s.clear(), (h = {});
},
toArray: () => Array.from(s.keys()),
refresh() {
(d.length = 0), g();
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);
},
3895: (e, t, n) => {
n.d(t, {
H6: () => a,
V0: () => c,
Zy: () => d,
aP: () => l,
vk: () => u
});
var i = n(1069),
r = n(3272),
o = n(9214),
s = n(6881);
const a = ‘outstream’,
d = new Map([
[
‘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]
]);
function c(e) {
const t = e?.mediaTypes?.video;
null != t &&
null == t.plcmt &&
(t.context === a || [2, 3, 4].includes(t.placement)
? (t.plcmt = 4)
: t.context !== a &&
[2, 6].includes(t.playbackmethod) &&
(t.plcmt = 2));
}
function l(e, t) {
const n = e?.mediaTypes?.video;
(0, i.Qd)(n)
? null != n &&
Object.entries(n).forEach(r => {
let [o, s] = r;
if (!d.has(o)) return;
d.get(o)(s) ||
(‘function’ == typeof t
? t(o, s, e)
: (delete n[o],
(0, i.JE)(
`Invalid prop in adUnit «${e.code}»: Invalid value for mediaTypes.video.${o} ORTB property. The property has been removed.`
)));
})
: (0, i.JE)(
‘validateOrtbVideoFields: videoParams must be an object.’
);
}
function u(e) {
let { index: t = s.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const n = t.getMediaTypes(e)?.video,
i = n && n?.context,
r = n && n?.useCacheKey,
o = t.getAdUnit(e);
return f(e, o, n, i, r);
}
const f = (0, o.A_)(
‘sync’,
function(e, t, n, o, s) {
if (n && (s || o !== a)) {
const { url: t, useLocal: n } = r.$W.getConfig(‘cache’) || {};
return t || n || !e.vastXml || e.vastUrl
? !(!e.vastUrl && !e.vastXml)
: ((0, i.vV)(
‘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 tlpbjs.setConfig({ cache: {url: «…»} });n or local cache with tlpbjs.setConfig({ cache: { useLocal: true }});n ‘
),
!1);
}
return (
!(o === a && !s) ||
!!(e.renderer || (t && t.renderer) || n.renderer)
);
},
‘checkVideoBidSetup’
);
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[769],
{
8944: (t, e, n) => {
n.d(e, { M: () => i });
var c = n(1069);
function i() {
const t = (0, c.Ot)();
try {
const e =
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: e
};
} catch (t) {
return {};
}
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[139],
{
43: (t, e, n) => {
n.d(e, { k: () => c, w: () => r });
const s = 0,
l = 1;
class c {
#t;
#e;
constructor(t) {
if (‘function’ != typeof t)
throw new Error(‘resolver not a function’);
const e = [],
n = [];
let [c, r] = [s, l].map(
t =>
function(l) {
if (t === s && ‘function’ == typeof l?.then) l.then(c, r);
else if (!e.length)
for (e.push(t, l); n.length; ) n.shift()();
}
);
try {
t(c, r);
} catch (t) {
r(t);
}
(this.#t = e), (this.#e = n);
}
then(t, e) {
const n = this.#t;
return new this.constructor((l, c) => {
const r = () => {
let r = n[1],
[h, i] = n[0] === s ? [t, l] : [e, c];
if (‘function’ == typeof h) {
try {
r = h(r);
} catch (t) {
return void c(t);
}
i = l;
}
i(r);
};
n.length ? r() : this.#e.push(r);
});
}
catch(t) {
return this.then(null, t);
}
finally(t) {
let e;
return this.then(
n => ((e = n), t()),
n => ((e = this.constructor.reject(n)), t())
).then(() => e);
}
static #n(t, e, n) {
let s = t.length;
function l() {
e.apply(this, arguments), –s <= 0 && n && n();
}
0 === t.length && n
? n()
: t.forEach((t, e) =>
this.resolve(t).then(
t => l(!0, t, e),
t => l(!1, t, e)
)
);
}
static race(t) {
return new this((e, n) => {
this.#n(t, (t, s) => (t ? e(s) : n(s)));
});
}
static all(t) {
return new this((e, n) => {
let s = [];
this.#n(
t,
(t, e, l) => (t ? (s[l] = e) : n(e)),
() => e(s)
);
});
}
static allSettled(t) {
return new this(e => {
let n = [];
this.#n(
t,
(t, e, s) =>
(n[s] = t
? { status: ‘fulfilled’, value: e }
: { status: ‘rejected’, reason: e }),
() => e(n)
);
});
}
static resolve(t) {
return new this(e => e(t));
}
static reject(t) {
return new this((e, n) => n(t));
}
}
function r(t) {
let e =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 0;
if (e > 0) return setTimeout(t, e);
t();
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[85],
{
4595: (e, t, n) => {
n.d(t, { G: () => s });
const s =
‘(()=>{«use strict»;window.render=function({ad:e,adUrl:t,width:n,height:i,instl:d},{mkFrame:r},s){if(!e&&!t)throw{reason:»noAd»,message:»Missing ad markup or URL»};{if(null==i){const e=s.document?.body;[e,e?.parentElement].filter((e=>null!=e?.style)).forEach((e=>e.style.height=»100%»))}const h=s.document,o={width:n??»100%»,height:i??»100%»};if(t&&!e?o.src=t:o.srcdoc=e,h.body.appendChild(r(h,o)),d&&s.frameElement){const e=s.frameElement.style;e.width=n?`${n}px`:»100vw»,e.height=i?`${i}px`:»100vh»}}}})();’;
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[109],
{
965: (t, e, n) => {
n.d(e, { c5: () => o });
var a = n(5555);
const l = 0,
c = 1,
r = 2;
function o(t) {
let {
apiName: e,
apiVersion: n,
apiArgs: o = [‘command’, ‘callback’, ‘parameter’, ‘version’],
callbackArgs: s = [‘returnValue’, ‘success’],
mode: i = l
} = t,
u =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
const f = {},
d = `${e}Call`,
p = `${e}Return`;
function b(t) {
const e =
‘string’ == typeof t.data && t.data.includes(p)
? JSON.parse(t.data)
: t.data;
if (e?.[p]?.callId) {
const t = e[p];
f.hasOwnProperty(t.callId) &&
f[t.callId](…s.map(e => t[e]));
}
}
const [k, m] = (function() {
let t,
n = u,
a = !1;
for (; null != n; ) {
try {
if (‘function’ == typeof n[e]) {
(t = n), (a = !0);
break;
}
} catch (t) {}
try {
if (n.frames[`${e}Locator`]) {
t = n;
break;
}
} catch (t) {}
if (n === u.top) break;
n = n.parent;
}
return [t, a];
})();
if (!k) return;
function g(t) {
return (
(t = Object.assign({ version: n }, t)), o.map(e => [e, t[e]])
);
}
function h(t, e, n, a) {
const l = ‘function’ == typeof t;
return function(r, o) {
if ((a && a(), i !== c)) {
(null == o || o ? e : n)(l ? void 0 : r);
}
l && t.apply(this, arguments);
};
}
let v;
return (
m
? (v = function() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return new a.U9((n, a) => {
const o = k[e](
…g({
…t,
callback:
t.callback || i === r
? h(t.callback, n, a)
: void 0
}).map(t => {
let [e, n] = t;
return n;
})
);
(i === c || (null == t.callback && i === l)) && n(o);
});
})
: (u.addEventListener(‘message’, b, !1),
(v = function(t) {
let e =
arguments.length > 1 &&
void 0 !== arguments[1] &&
arguments[1];
return new a.U9((n, a) => {
const l = Math.random().toString(),
r = {
[d]: {
…Object.fromEntries(
g(t).filter(t => {
let [e] = t;
return ‘callback’ !== e;
})
),
callId: l
}
};
(f[l] = h(
t?.callback,
n,
a,
(e || null == t?.callback) &&
(() => {
delete f[l];
})
)),
k.postMessage(r, ‘*’),
i === c && n();
});
})),
Object.assign(v, {
isDirect: m,
close() {
!m && u.removeEventListener(‘message’, b);
}
})
);
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[10],
{
3806: (t, n, e) => {
e.d(n, { yq: () => c });
var o = e(6894),
a = e(1069),
s = e(7873),
i = e(5555),
r = e(2604);
function c() {
let t,
n,
e,
{
namespace: c,
displayName: l,
consentDataHandler: u,
parseConsentData: m,
getNullConsent: d,
cmpHandlers: f,
DEFAULT_CMP: g = ‘iab’,
DEFAULT_CONSENT_TIMEOUT: p = 1e4
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function C(t) {
return `consentManagement.${c} ${t}`;
}
function D(t, n) {
return t(
Object.assign({ [`${c}Consent`]: u.getConsentData() }, n)
);
}
function h() {
return n().then(t => {
let { error: n } = t;
return { error: n, consentData: u.getConsentData() };
});
}
function T() {
null == t &&
((t = (function(t, n) {
const e = new WeakSet();
return (0, o.Ak)(t, function(t, o) {
return n()
.then(n => {
let { consentData: s, error: i } = n;
!i ||
(s && e.has(i)) ||
(e.add(i), (0, a.JE)(i.message, …(i.args || []))),
t.call(this, o);
})
.catch(n => {
(0, a.vV)(
`${n?.message} Canceling auction as per consentManagement config.`,
…(n?.args || [])
),
t.stopTiming(),
‘function’ == typeof o.bidsBackHandler
? o.bidsBackHandler()
: (0, a.vV)(‘Error executing bidsBackHandler’);
});
});
})(c, () => n())),
(0, s.m)().requestBids.before(t, 50),
r.U3.before(D),
(0, a.fH)(
`${l} consentManagement module has been activated…`
));
}
return function(o) {
if (((o = o?.[c]), !o || ‘object’ != typeof o))
return (
(0, a.JE)(
C(‘config not defined, exiting consent manager module’)
),
null != t &&
((0, s.m)()
.requestBids.getHooks({ hook: t })
.remove(),
r.U3.getHooks({ hook: D }).remove(),
(t = null)),
{}
);
let b, k;
(0, a.O8)(o.cmpApi)
? (b = o.cmpApi)
: ((b = g),
(0, a.fH)(
C(
`config did not specify cmp. Using system default setting (${g}).`
)
)),
(0, a.Et)(o.timeout)
? (k = o.timeout)
: ((k = p),
(0, a.fH)(
C(
`config did not specify timeout. Using system default setting (${p}).`
)
));
const H = (0, a.Et)(o.actionTimeout) ? o.actionTimeout : null;
let w;
‘static’ === b
? (0, a.Qd)(o.consentData)
? ((e = o.consentData),
(k = null),
(w = () => new i.U9(t => t(u.setConsentData(m(e))))))
: (0, a.vV)(
C(
«config with cmpApi: ‘static’ did not specify consentData. No consents will be available to adapters.»
)
)
: f.hasOwnProperty(b)
? (w = f[b])
: (u.setConsentData(null),
(0, a.JE)(
`${l} CMP framework (${b}) is not a supported framework. Aborting consentManagement module and resuming auction.`
),
(w = () => i.U9.resolve()));
const y = () =>
(function(t) {
let n,
{
name: e,
consentDataHandler: o,
setupCmp: a,
cmpTimeout: s,
actionTimeout: i,
getNullConsent: r
} = t;
return (
o.enable(),
new Promise((t, c) => {
let l,
u = !1;
function m(a) {
null != n && clearTimeout(n),
(n =
null != a
? setTimeout(() => {
const n =
o.getConsentData() ?? (u ? l : r()),
a =
‘timeout waiting for ‘ +
(u
? ‘user action on CMP’
: ‘CMP to load’);
o.setConsentData(n),
t({
consentData: n,
error: new Error(`${e} ${a}`)
});
}, a)
: null);
}
a(function(t) {
(l = t), u || ((u = !0), null != i && m(i));
}).then(
() => t({ consentData: o.getConsentData() }),
c
),
null != s && m(s);
})
.finally(() => {
n && clearTimeout(n);
})
.catch(t => {
throw (o.setConsentData(null), t);
})
);
})({
name: l,
consentDataHandler: u,
setupCmp: w,
cmpTimeout: k,
actionTimeout: H,
getNullConsent: d
});
return (
(n = (() => {
let t;
return function() {
return (
null == t &&
(t = y().catch(n => {
throw ((t = null), n);
})),
t
);
};
})()),
T(),
{
cmpHandler: b,
cmpTimeout: k,
actionTimeout: H,
staticConsentData: e,
loadConsentData: h,
requestBidsHook: t
}
);
};
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[618],
{
981: (e, t, i) => {
i.d(t, { m: () => h });
var r = i(9466),
d = i(1e3),
n = i(433),
a = i(1069),
s = i(5825),
b = i(1445),
o = i(3272),
p = i(3172);
var c = i(3323);
var l = i(7873);
var f = i(1371);
var u = i(3005);
const v = {
[d.S3]: {
extPrebid: {
fn: function(e, t) {
(0, p.J)(
e,
‘ext.prebid’,
(0, a.D9)(
{
auctiontimestamp: t.auctionStart,
targeting: {
includewinners: !0,
includebidderkeys: !1
}
},
e.ext?.prebid
)
),
o.$W.getConfig(‘debug’) && (e.ext.prebid.debug = !0);
}
},
extPrebidChannel: {
fn: function(e) {
(0, p.J)(
e,
‘ext.prebid.channel’,
Object.assign(
{ name: ‘pbjs’, version: (0, l.m)().version },
e.ext?.prebid?.channel
)
);
}
},
extPrebidAliases: {
fn: function(e, t, i) {
let { am: r = b.Ay } =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: {};
if (r.aliasRegistry[t.bidderCode]) {
const i = r.bidderRegistry[t.bidderCode];
if (!i || !i.getSpec().skipPbsAliasing) {
(0, p.J)(
e,
`ext.prebid.aliases.${t.bidderCode}`,
r.aliasRegistry[t.bidderCode]
);
const d =
o.$W.getConfig(`gvlMapping.${t.bidderCode}`) ||
i?.getSpec?.().gvlid;
d &&
(0, p.J)(
e,
`ext.prebid.aliasgvlids.${t.bidderCode}`,
d
);
}
}
}
}
},
[d.Tb]: {
params: { fn: c.W },
adUnitCode: {
fn: function(e, t) {
const i = t.adUnitCode;
i && (0, p.J)(e, ‘ext.prebid.adunitcode’, i);
}
}
},
[d.WR]: {
mediaType: { fn: s.o, priority: 99 },
videoCache: {
fn: function(e, t) {
if (e.mediaType === f.G_) {
let { cacheId: i, url: r } =
(0, n.A)(t, ‘ext.prebid.cache.vastXml’) || {};
if (!i || !r) {
const {
hb_uuid: e,
hb_cache_host: d,
hb_cache_path: a
} = (0, n.A)(t, ‘ext.prebid.targeting’) || {};
e &&
d &&
a &&
((i = e), (r = `https://${d}${a}?uuid=${e}`));
}
i &&
r &&
Object.assign(e, { videoCacheKey: i, vastUrl: r });
}
},
priority: -10
},
bidderCode: {
fn(e, t, i) {
(e.bidderCode = i.seatbid.seat),
(e.adapterCode =
(0, n.A)(t, ‘ext.prebid.meta.adaptercode’) ||
i.bidRequest?.bidder ||
e.bidderCode);
}
},
pbsBidId: {
fn(e, t) {
const i = (0, n.A)(t, ‘ext.prebid.bidid’);
(0, a.O8)(i) && (e.pbsBidId = i);
}
},
adserverTargeting: {
fn(e, t) {
const i = (0, n.A)(t, ‘ext.prebid.targeting’);
(0, a.Qd)(i) && (e.adserverTargeting = i);
}
},
extPrebidMeta: {
fn(e, t) {
e.meta = (0, a.D9)(
{},
(0, n.A)(t, ‘ext.prebid.meta’),
e.meta
);
}
},
pbsWinTrackers: {
fn: function(e, t) {
(e.eventtrackers = e.eventtrackers || []),
[
[t.burl, u.OA],
[t?.ext?.prebid?.events?.win, u.RO]
]
.filter(t => {
let [i, r] = t;
return (
i &&
null ==
e.eventtrackers.find(e => {
let { method: t, event: d, url: n } = e;
return d === r && t === u.Ni && n === i;
})
);
})
.forEach(t => {
let [i, r] = t;
e.eventtrackers.push({
method: u.Ni,
event: r,
url: i
});
});
}
}
},
[d.Cf]: {
serverSideStats: {
fn(e, t, i) {
Object.entries({
errors: ‘serverErrors’,
responsetimemillis: ‘serverResponseTimeMs’
}).forEach(e => {
let [r, d] = e;
const a = (0, n.A)(
t,
`ext.${r}.${i.bidderRequest.bidderCode}`
);
a &&
((i.bidderRequest[d] = a),
i.bidRequests.forEach(e => (e[d] = a)));
});
}
}
}
};
var g = i(9766);
const h = (0, a.Bj)(() => (0, r.U)((0, g.T)(), v, (0, d.yB)(d.e4)));
},
5825: (e, t, i) => {
i.d(t, { o: () => a, s: () => n });
var r = i(1371),
d = i(5561);
const n = { [r.D4]: ‘banner’, [r.s6]: ‘native’, [r.G_]: ‘video’ };
function a(e, t, i) {
let a = i.mediaType;
a ||
((a = d.X.hasOwnProperty(t.mtype)
? d.X[t.mtype]
: t.ext?.prebid?.type),
n.hasOwnProperty(a) || (a = r.D4)),
(e.mediaType = a);
}
},
3323: (e, t, i) => {
i.d(t, { W: () => d });
var r = i(3172);
function d(e, t) {
let i = t.params;
i && (0, r.J)(e, `ext.prebid.bidder.${t.bidder}`, i);
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[498],
{
9766: (e, t, r) => {
r.d(t, { T: () => f, A: () => m });
const n = new WeakMap();
var i = r(1069),
s = r(1371);
var o = r(3895);
var a = r(5561);
var d = r(1e3),
p = r(3858);
const c = {
[d.S3]: {
fpd: {
priority: 99,
fn(e, t) {
(0, i.D9)(e, t.ortb2);
}
},
onlyOneClient: { priority: -99, fn: (0, p.i8)(‘ORTB request’) },
props: {
fn(e, t) {
Object.assign(e, {
id: e.id || (0, i.lk)(),
test: e.test || 0
});
const r = parseInt(t.timeout, 10);
isNaN(r) || (e.tmax = r);
}
}
},
[d.Tb]: {
fpd: {
priority: 99,
fn(e, t) {
(0, i.D9)(e, t.ortb2Imp);
}
},
id: {
fn(e, t) {
e.id = t.bidId;
}
},
banner: {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.D4) return;
const n = t?.mediaTypes?.banner;
if (n) {
const r = { topframe: !0 === (0, i.al)() ? 0 : 1 };
n.sizes &&
null == t.ortb2Imp?.banner?.format &&
(r.format = (0, i.y$)(n.sizes).map(i.cf)),
n.hasOwnProperty(‘pos’) && (r.pos = n.pos),
(e.banner = (0, i.D9)(r, e.banner));
}
}
},
pbadslot: {
fn(e) {
const t = e.ext?.data?.pbadslot;
(t && ‘string’ == typeof t) || delete e.ext?.data?.pbadslot;
}
},
secure: {
fn(e, t) {
e.secure = e.secure ?? 1;
}
}
},
[d.WR]: {
mediaType: { priority: 99, fn: a.K },
banner: {
fn: (function() {
let {
createPixel: e = e =>
(0, i.Tz)(decodeURIComponent(e), i.Bk)
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return function(t, r) {
t.mediaType === s.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;
return (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
));
}
}
}
};
(c[d.Tb].native = {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.s6) return;
let n = t.nativeOrtbRequest;
n &&
((n = Object.assign({}, r.nativeRequest, n)),
n.assets?.length
? (e.native = (0, i.D9)(
{},
{ request: JSON.stringify(n), ver: n.ver },
e.native
))
: (0, i.JE)(
‘mediaTypes.native is set, but no assets were specified. Native request skipped.’,
t
));
}
}),
(c[d.WR].native = {
fn: function(e, t) {
if (e.mediaType === s.s6) {
let r;
if (
((r =
‘string’ == typeof t.adm ? JSON.parse(t.adm) : t.adm),
!(0, i.Qd)(r) || !Array.isArray(r.assets))
)
throw new Error(
‘ORTB native response contained no assets’
);
e.native = { ortb: r };
}
}
}),
(c[d.Tb].video = {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.G_) return;
const n = t?.mediaTypes?.video;
if (!(0, i.Im)(n)) {
const t = Object.fromEntries(
Object.entries(n).filter(e => {
let [t] = e;
return o.Zy.has(t);
})
);
if (n.playerSize) {
const e = (0, i.y$)(n.playerSize).map(i.cf);
e.length > 1 &&
(0, i.JE)(
‘video request specifies more than one playerSize; all but the first will be ignored’
),
Object.assign(t, e[0]);
}
e.video = (0, i.D9)(t, e.video);
}
}
}),
(c[d.WR].video = {
fn: function(e, t, r) {
e.mediaType === s.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));
}
});
var u = r(9466);
function m() {
let {
context: e = {},
processors: t = f,
overrides: r = {},
imp: s,
request: o,
bidResponse: a,
response: p
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const c = new WeakMap();
function u(e, i, s, o) {
let a;
return function() {
return (
null == a &&
(a = (function() {
let a = s.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() {
try {
return a.apply(this, arguments);
} catch (e) {
o.call(this, e, …arguments);
}
}
);
})()),
a.apply(this, arguments)
);
};
}
const m = u(
d.Tb,
s,
function(e, t, r) {
const n = {};
return e(n, t, r), n;
},
function(e, t, r) {
(0,
i.vV)(
‘Error while converting bidRequest to ORTB imp; request skipped.’,
{ error: e, bidRequest: t, context: r }
);
}
),
l = u(
d.S3,
o,
function(e, t, r, n) {
const i = { imp: t };
return e(i, r, n), i;
},
function(e, t, r, n) {
throw ((0, i.vV)(‘Error while converting to ORTB request’, {
error: e,
imps: t,
bidderRequest: r,
context: n
}),
e);
}
),
b = u(
d.WR,
a,
function(e, t, r) {
const n = {};
return e(n, t, r), n;
},
function(e, t, r) {
(0,
i.vV)(
‘Error while converting ORTB seatbid.bid to bidResponse; bid skipped.’,
{ error: e, bid: t, context: r }
);
}
),
y = u(
d.Cf,
p,
function(e, t, r, n) {
const i = { bids: t };
return e(i, r, n), i;
},
function(e, t, r, n) {
throw ((0, i.vV)(
‘Error while converting from ORTB response’,
{
error: e,
bidResponses: t,
ortbResponse: r,
context: n
}
),
e);
}
);
return {
toORTB(t) {
let { bidderRequest: r, bidRequests: n, context: s = {} } = t;
n = n || r.bids;
const o = {
req: Object.assign({ bidRequests: n }, e, s),
imp: {}
};
o.req.impContext = o.imp;
const a = n
.map(t => {
const n = Object.assign(
{ bidderRequest: r, reqContext: o.req },
e,
s
),
a = m(t, n);
if (null != a) {
if (a.hasOwnProperty(‘id’))
return (
Object.assign(n, { bidRequest: t, imp: a }),
(o.imp[a.id] = n),
a
);
(0, i.vV)(
‘Converted ORTB imp does not specify an id, ignoring bid request’,
t,
a
);
}
})
.filter(Boolean),
d = l(a, r, o.req);
return (o.req.bidderRequest = r), null != d && c.set(d, o), 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 s(e) {
let r =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
return Object.assign(e, { ortbRequest: t }, r);
}
const o = Object.fromEntries(
(t.imp || []).map(e => [e.id, e])
),
a = (r.seatbid || [])
.flatMap(e =>
(e.bid || []).map(t => {
if (
o.hasOwnProperty(t.impid) &&
n.imp.hasOwnProperty(t.impid)
)
return b(
t,
s(n.imp[t.impid], {
imp: o[t.impid],
seatbid: e,
ortbResponse: r
})
);
(0, i.vV)(
‘ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid’,
t
);
})
)
.filter(Boolean);
return y(a, r, s(n.req));
}
};
}
const f = (0, i.Bj)(() => (0, u.U)(c, (0, d.yB)(d.qN)));
},
9466: (e, t, r) => {
r.d(t, { U: () => i });
var n = r(1e3);
function i() {
for (
var e = arguments.length, t = new Array(e), r = 0;
r < e;
r++
)
t[r] = arguments[r];
const s = t.shift(),
o = t.length > 1 ? i(…t) : t[0];
return Object.fromEntries(
n.zt.map(e => [e, Object.assign({}, s[e], o[e])])
);
}
},
5561: (e, t, r) => {
r.d(t, { K: () => s, X: () => i });
var n = r(1371);
const i = { 1: n.D4, 2: n.G_, 4: n.s6 };
function s(e, t, r) {
if (e.mediaType) return;
const n = r.mediaType;
if (!n && !i.hasOwnProperty(t.mtype))
throw new Error(‘Cannot determine mediaType for response’);
e.mediaType = n || i[t.mtype];
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[225],
{
6743: (n, t, l) => {
l.d(t, { x4: () => i });
var e = l(7873),
r = l(2713);
function u(n, t, l) {
let r =
!(arguments.length > 3 && void 0 !== arguments[3]) ||
arguments[3];
if (t === l) return n;
let u = n;
try {
u = (0, e.m)().convertCurrency(n, t, l);
} catch (n) {
if (!r) throw n;
}
return u;
}
function i() {
let n =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: n => [n.cpm, n.currency],
t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: (function() {
let n =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: null,
t =
!(
arguments.length > 1 && void 0 !== arguments[1]
) || arguments[1],
l =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: u;
return function(e, r) {
return null == n && (n = r), l(e, r, n, t);
};
})();
return (0, r.NV)(l => t.apply(null, n(l)));
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[764],
{
2339: (o, n, t) => {
function e(o, n) {
return function() {
const t = document.domain.split(‘.’),
e = `_gd${Date.now()}_${n}`;
for (let n, i, s = 0; s < t.length; s++) {
const u = t.slice(s).join(‘.’);
if (
(o.setCookie(e, ‘1’, void 0, void 0, u),
(i = o.getCookie(e)),
o.setCookie(
e,
»,
‘Thu, 01 Jan 1970 00:00:01 GMT’,
void 0,
u
),
‘1’ !== i)
)
return n;
n = u;
}
};
}
t.d(n, { w: () => e });
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[81],
{
6117: (e, t, n) => {
var r = n(7873),
s = n(1069),
a = n(3172),
o = n(3272),
c = n(6916),
i = n(1e3),
p = n(687),
d = n(965),
l = n(3806);
let u,
g,
f = {};
const C = 2,
m = {
iab: function(e) {
return new Promise((t, n) => {
const r = (0, d.c5)({
apiName: ‘__tcfapi’,
apiVersion: C,
apiArgs: [‘command’, ‘version’, ‘callback’, ‘parameter’]
});
r || n(new Error(‘TCF2 CMP not found.’)),
r.isDirect
? (0, s.fH)(
‘Detected CMP API is directly accessible, calling it now…’
)
: (0, s.fH)(
‘Detected CMP is outside the current iframe where Prebid.js is located, calling it now…’
),
r({
command: ‘addEventListener’,
callback: function(r, a) {
if (
((0, s.fH)(‘Received a response from CMP’, r), a)
) {
try {
e(b(r));
} catch (e) {}
if (
!1 === r.gdprApplies ||
‘tcloaded’ === r.eventStatus ||
‘useractioncomplete’ === r.eventStatus
)
try {
c.mW.setConsentData(b(r)), t();
} catch (e) {
n(e);
}
} else
n(
Error(
‘CMP unable to register callback function. Please check CMP setup.’
)
);
}
});
});
}
};
function b(e) {
if (
(function() {
const t =
e && ‘boolean’ == typeof e.gdprApplies
? e.gdprApplies
: u,
n = e && e.tcString;
return !(
‘boolean’ == typeof t &&
(!0 !== t || (n && (0, s.O8)(n)))
);
})()
)
throw Object.assign(
new Error(
‘CMP returned unexpected value during lookup process.’
),
{ args: [e] }
);
return D(e);
}
function D(e) {
const t = {
consentString: e ? e.tcString : void 0,
vendorData: e || void 0,
gdprApplies:
e && ‘boolean’ == typeof e.gdprApplies ? e.gdprApplies : u
};
return (
e &&
e.addtlConsent &&
(0, s.O8)(e.addtlConsent) &&
(t.addtlConsent = e.addtlConsent),
(t.apiVersion = C),
t
);
}
const v = (0, l.yq)({
namespace: ‘gdpr’,
displayName: ‘TCF’,
consentDataHandler: c.mW,
cmpHandlers: m,
parseConsentData: b,
getNullConsent: () => D(null)
});
o.$W.getConfig(‘consentManagement’, e =>
(function(e) {
return (
(e = e && (e.gdpr || e.usp || e.gpp ? e.gdpr : e)),
null != e?.consentData?.getTCData &&
(e.consentData = e.consentData.getTCData),
(u = !0 === e?.defaultGdprScope),
(g = !!e?.dsaPlatform),
(f = v({ gdpr: e })),
f.loadConsentData?.()?.catch?.(() => null)
);
})(e.consentManagement)
),
p.w.before(function(e, t) {
return e(
t.then(e => {
const t = c.mW.getConsentData();
return (
t &&
(‘boolean’ == typeof t.gdprApplies &&
(0, a.J)(e, ‘regs.ext.gdpr’, t.gdprApplies ? 1 : 0),
(0, a.J)(e, ‘user.ext.consent’, t.consentString)),
g && (0, a.J)(e, ‘regs.ext.dsa.dsarequired’, 3),
e
);
})
);
}),
(0, i.pS)({
type: i.S3,
name: ‘gdprAddtlConsent’,
fn: function(e, t) {
const n = t.gdprConsent?.addtlConsent;
n &&
‘string’ == typeof n &&
(0, a.J)(
e,
‘user.ext.ConsentedProvidersSettings.consented_providers’,
n
);
}
}),
(0, r.E)(‘consentManagementTcf’);
}
},
e => {
e.O(0, [802, 109, 10, 769, 139, 85], () => {
return (t = 6117), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[662],
{
6056: (n, t, e) => {
var o = e(7873),
a = e(1069),
s = e(3172),
i = e(3272),
c = e(1445),
r = e(6916),
u = e(6894),
l = e(9214),
f = e(687),
g = e(965);
const d = ‘iab’;
let p,
m,
P = d,
v = 50,
S = !1;
const b = {
iab: function(n) {
let { onSuccess: t, onError: e } = n;
let o = (function() {
const n = {};
return {
consentDataCallback: (o, a) => {
a && o.uspString && (n.usPrivacy = o.uspString),
n.usPrivacy
? h(n, { onSuccess: t, onError: e })
: e(‘Unable to get USP consent string.’);
}
};
})();
const s = (0, g.c5)({
apiName: ‘__uspapi’,
apiVersion: 1,
apiArgs: [‘command’, ‘version’, ‘callback’]
});
if (!s) return e(‘USP CMP not found.’);
s.isDirect
? (0, a.fH)(
‘Detected USP CMP is directly accessible, calling it now…’
)
: (0, a.fH)(
‘Detected USP CMP is outside the current iframe where Prebid.js is located, calling it now…’
);
s({ command: ‘getUSPData’, callback: o.consentDataCallback }),
s({
command: ‘registerDeletion’,
callback: (n, t) =>
(null == t || t) && c.Ay.callDataDeletionRequest(n)
}).catch(n => {
(0, a.vV)(‘Error invoking CMP `registerDeletion`:’, n);
});
},
static: function(n) {
let { onSuccess: t, onError: e } = n;
h(p, { onSuccess: t, onError: e });
}
};
function D(n) {
let t = null,
e = !1;
function o(o, a) {
if (
(null != t && clearTimeout(t),
(e = !0),
r.t6.setConsentData(o),
null != n)
) {
for (
var s = arguments.length,
i = new Array(s > 2 ? s – 2 : 0),
c = 2;
c < s;
c++
)
i[c – 2] = arguments[c];
n(a, …i);
}
}
if (!b[P])
return void o(
null,
`USP framework (${P}) is not a supported framework. Aborting consentManagement module and resuming auction.`
);
const a = {
onSuccess: o,
onError: function(n) {
for (
var t = arguments.length,
e = new Array(t > 1 ? t – 1 : 0),
a = 1;
a < t;
a++
)
e[a – 1] = arguments[a];
o(
null,
`${n} Resuming auction without consent data as per consentManagement config.`,
…e
);
}
};
b[P](a),
e ||
(0 === v
? h(void 0, a)
: (t = setTimeout(
a.onError.bind(
null,
‘USPAPI workflow exceeded timeout threshold.’
),
v
)));
}
const y = (0, u.Ak)(‘usp’, function(n, t) {
var e = this;
S || U(),
D(function(o) {
if (null != o) {
for (
var s = arguments.length,
i = new Array(s > 1 ? s – 1 : 0),
c = 1;
c < s;
c++
)
i[c – 1] = arguments[c];
(0, a.JE)(o, …i);
}
n.call(e, t);
});
});
function h(n, t) {
let { onSuccess: e, onError: o } = t;
!n || !n.usPrivacy
? o(
‘USPAPI returned unexpected value during lookup process.’,
n
)
: (!(function(n) {
n && n.usPrivacy && (m = n.usPrivacy);
})(n),
e(m));
}
function U() {
let n =
arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
S ||
((0, a.fH)(
‘USPAPI consentManagement module has been activated’ +
(n
? »
: ` using default values (api: ‘${P}’, timeout: ${v}ms)`)
),
(S = !0),
r.t6.enable()),
D();
}
i.$W.getConfig(‘consentManagement’, n =>
(function(n) {
((n = n && n.usp) && ‘object’ == typeof n) ||
(0, a.JE)(
‘consentManagement.usp config not defined, using defaults’
),
n && (0, a.O8)(n.cmpApi)
? (P = n.cmpApi)
: ((P = d),
(0, a.fH)(
`consentManagement.usp config did not specify cmpApi. Using system default setting (${d}).`
)),
n && (0, a.Et)(n.timeout)
? (v = n.timeout)
: ((v = 50),
(0, a.fH)(
‘consentManagement.usp config did not specify timeout. Using system default setting (50).’
)),
‘static’ === P &&
((0, a.Qd)(n.consentData) &&
(0, a.Qd)(n.consentData.getUSPData)
? (n.consentData.getUSPData.uspString &&
(p = {
usPrivacy: n.consentData.getUSPData.uspString
}),
(v = 0))
: (0, a.vV)(
«consentManagement config with cmpApi: ‘static’ did not specify consentData. No consents will be available to adapters.»
)),
U(!0);
})(n.consentManagement)
),
(0, l.Yn)(‘requestBids’).before(y, 50),
f.w.before(function(n, t) {
return n(
t.then(n => {
const t = r.t6.getConsentData();
return t && (0, s.J)(n, ‘regs.ext.us_privacy’, t), n;
})
);
}),
(0, o.E)(‘consentManagementUsp’);
}
},
n => {
n.O(0, [109, 802, 769, 139, 85], () => {
return (t = 6056), n((n.s = t));
var t;
});
n.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[931],
{
2843: (e, t, o) => {
var n = o(7873),
r = o(1069),
a = o(8044),
c = o(7934),
i = o(9214),
s = o(2938),
d = o(5569),
l = o(6916);
const p = ‘criteo’,
g = (0, s.vM)({ moduleType: d.fW, moduleName: p }),
u = ‘cto_bidid’,
m = ‘cto_bundle’,
b = ‘html5’,
I = ‘cookie’,
y = new Date(0).toString(),
f = new Date((0, r.vE)() + 33696e6).toString();
function S(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
const o = (0, r.Dl)(e, { noDecodeWholeURL: !0 });
return t
? `${o.hostname}`
: `${o.protocol}://${o.hostname}${o.port ? ‘:’ + o.port : »}/`;
}
function h(e, t) {
return e?.storage?.type === b
? g.getDataFromLocalStorage(t)
: e?.storage?.type === I
? g.getCookie(t)
: g.getCookie(t) || g.getDataFromLocalStorage(t);
}
function C(e, t, o, n) {
t &&
o &&
(e?.storage?.type === b
? g.setDataInLocalStorage(t, o)
: (e?.storage?.type === I || g.setDataInLocalStorage(t, o),
v(t, o, f, n, !0)));
}
function v(e, t, o, n, r) {
const a = n.split(‘.’);
for (let n = 0; n < a.length; ++n) {
const c = a.slice(a.length – n – 1, a.length).join(‘.’);
try {
if ((g.setCookie(e, t, o, null, ‘.’ + c), r)) {
const o = g.getCookie(e);
if (o && o === t) break;
}
} catch (e) {}
}
}
function U(e, t, o) {
const n =
(void 0 === e?.storage?.type || e?.storage?.type === I) &&
g.cookiesAreEnabled(),
i =
(void 0 === e?.storage?.type || e?.storage?.type === b) &&
g.localStorageIsEnabled(),
s = S((0, c.EN)().page),
d = S(document.location.href, !0),
p = ‘undefined’ != typeof criteo_pubtag,
f = (function(e, t, o, n, r, a, c) {
let i =
‘https://gum.criteo.com/sid/json?origin=prebid’ +
(e ? ‘&topUrl=’ + encodeURIComponent(e) : ») +
(t ? ‘&domain=’ + encodeURIComponent(t) : ») +
(o ? ‘&bundle=’ + encodeURIComponent(o) : ») +
(n ? ‘&info=’ + encodeURIComponent(n) : ») +
(r ? ‘&cw=1’ : ») +
(c ? ‘&pbt=1’ : ») +
(a ? ‘&lsw=1’ : »);
const s = l.t6.getConsentData();
s && (i += `&us_privacy=${encodeURIComponent(s)}`);
const d = l.mW.getConsentData();
d &&
((i =
i +
» +
(d.consentString
? ‘&gdprString=’ + encodeURIComponent(d.consentString)
: »)),
(i = i + ‘&gdpr=’ + (!0 === d.gdprApplies ? 1 : 0)));
const p = l.ad.getConsentData();
return (
p &&
((i =
i +
» +
(p.gppString
? ‘&gpp=’ + encodeURIComponent(p.gppString)
: »)),
(i =
i +
» +
(p.applicableSections
? ‘&gpp_sid=’ +
encodeURIComponent(p.applicableSections)
: »))),
i
);
})(s, d, t.bundle, t.dnaBundle, n, i, p),
h = {
success: t => {
const n = JSON.parse(t);
if (
(n.pixels &&
n.pixels.forEach(t =>
(function(e, t, o) {
o.writeBundleInStorage &&
o.bundlePropertyName &&
o.storageKeyName
? (0, a.RD)(
o.pixelUrl,
{
success: n => {
if (n) {
const r = JSON.parse(n);
r &&
r[o.bundlePropertyName] &&
C(
e,
o.storageKeyName,
r[o.bundlePropertyName],
t
);
}
},
error: e => {
(0, r.vV)(
‘criteoIdSystem: unable to sync user id’,
e
);
}
},
void 0,
{ method: ‘GET’, withCredentials: !0 }
)
: (0, r.z$)(o.pixelUrl);
})(e, d, t)
),
n.acwsUrl)
) {
(‘string’ == typeof n.acwsUrl
? [n.acwsUrl]
: n.acwsUrl
).forEach(e => (0, r.z$)(e));
} else n.bundle && C(e, m, n.bundle, d);
if (n.bidId) {
C(e, u, n.bidId, d);
const t = { criteoId: n.bidId };
o(t);
} else
v((c = u), », y, d, !0),
g.removeDataFromLocalStorage(c),
o();
var c;
},
error: e => {
(0, r.vV)(‘criteoIdSystem: unable to sync user id’, e), o();
}
};
(0, a.RD)(f, h, void 0, {
method: ‘GET’,
contentType: ‘application/json’,
withCredentials: !0
});
}
const D = {
name: p,
gvlid: 91,
decode: e => e,
getId(e) {
let t = (function(e) {
return {
bundle: h(e, m),
dnaBundle: h(e, ‘cto_dna_bundle’),
bidId: h(e, u)
};
})(e);
return {
id: t.bidId ? { criteoId: t.bidId } : void 0,
callback: o => U(e, t, o)
};
},
eids: { criteoId: { source: ‘criteo.com’, atype: 1 } }
};
(0, i.bz)(‘userId’, D), (0, n.E)(‘criteoIdSystem’);
}
},
e => {
e.O(0, [802, 769, 139, 85], () => {
return (t = 2843), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[328],
{
1134: (e, t, n) => {
n.d(t, { Gk: () => M });
var r = n(7873),
s = n(9759),
i = n(1069),
d = n(8969),
o = n(1445),
a = n(3272),
c = n(7377),
u = n(5023);
const p = {
appnexuspsp: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent: ‘https://ib.adnxs.com/openrtb2/prebid’,
noP1Consent: ‘https://ib.adnxs-simple.com/openrtb2/prebid’
},
syncEndpoint: {
p1Consent: ‘https://prebid.adnxs.com/pbs/v1/cookie_sync’,
noP1Consent:
‘https://prebid.adnxs-simple.com/pbs/v1/cookie_sync’
},
maxTimeout: 1e3
},
rubicon: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent:
‘https://prebid-server.rubiconproject.com/openrtb2/auction’,
noP1Consent:
‘https://prebid-server.rubiconproject.com/openrtb2/auction’
},
syncEndpoint: {
p1Consent:
‘https://prebid-server.rubiconproject.com/cookie_sync’,
noP1Consent:
‘https://prebid-server.rubiconproject.com/cookie_sync’
},
maxTimeout: 500
},
openwrap: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent:
‘https://ow.pubmatic.com/openrtb2/auction?source=pbjs’,
noP1Consent:
‘https://ow.pubmatic.com/openrtb2/auction?source=pbjs’
},
maxTimeout: 500
}
};
var l = n(8044),
b = n(9214),
f = n(2621),
g = n(9766),
m = n(3172),
h = n(3597),
C = n(981),
y = n(3323),
B = n(5825),
v = n(1e3),
R = n(6953),
q = n(3441),
E = n(5569),
x = n(5139),
O = n(6811),
S = n(6743),
I = n(2713),
j = n(433);
function T(e) {
let { global: t, bidder: n } = e;
return Object.fromEntries(
Object.entries(n).map(e => {
let [n, r] = e;
return [n, A(r, (0, i.D9)({}, t, r))];
})
);
}
function A(e, t) {
return Object.fromEntries(
Object.entries(e).map(e => {
let [n, r] = e;
const s = t[n];
return (
Array.isArray(r)
? !(0, i.bD)(r, s) && Array.isArray(s) && (r = s)
: null != r && ‘object’ == typeof r && (r = A(r, s)),
[n, r]
);
})
);
}
function P(e, t) {
let { global: n, bidder: r } = e;
const s = (function(e) {
let { eids: t, conflicts: n = new Set() } = e;
const r = [],
s = [],
i = {};
return (
t.forEach(e => {
(!1 === e.bidders ? r : s).push(e);
}),
s.forEach(e => {
let { eid: t, bidders: s } = e;
n.has(t.source)
? s.forEach(e => {
(i[e] = i[e] || []).push(t);
})
: r.push({ eid: t, bidders: s });
}),
{
global: r.map(e => {
let { eid: t } = e;
return t;
}),
permissions: r
.filter(e => {
let { bidders: t } = e;
return !1 !== t;
})
.map(e => {
let { eid: t, bidders: n } = e;
return { source: t.source, bidders: n };
}),
bidder: i
}
);
})(
(function(e) {
let { global: t, bidder: n } = e;
const r = [],
s = {},
d = new Set();
function o(e) {
let t = r.find(t => (0, i.bD)(t.eid, e));
return (
null == t &&
((t = { eid: e, bidders: new Set() }), r.push(t)),
null == s[e.source]
? (s[e.source] = t.eid)
: t.eid === e && d.add(e.source),
t
);
}
return (
R.Vx.forEach(e => {
((0, j.A)(t, e) || []).forEach(e => {
o(e).bidders = !1;
});
}),
Object.entries(n).forEach(e => {
let [t, n] = e;
R.Vx.forEach(e => {
((0, j.A)(n, e) || []).forEach(e => {
const n = o(e);
!1 !== n.bidders && n.bidders.add(t);
});
});
}),
{
eids: r.map(e => {
let { eid: t, bidders: n } = e;
return { eid: t, bidders: n && Array.from(n) };
}),
conflicts: d
}
);
})({ global: n, bidder: r })
);
function d(e) {
delete e?.user?.eids, delete e?.user?.ext?.eids;
}
return (
(n = (0, i.Go)(n)),
(r = (0, i.Go)(r)),
d(n),
Object.values(r).forEach(d),
s.global.length && (0, m.J)(n, ‘user.ext.eids’, s.global),
t?.length &&
s.permissions.forEach(
e => (e.bidders = e.bidders.filter(e => t.includes(e)))
),
s.permissions.length &&
(0, m.J)(n, ‘ext.prebid.data.eidpermissions’, s.permissions),
Object.entries(s.bidder).forEach(e => {
let [t, n] = e;
n.length && (0, m.J)(r[t], ‘user.ext.eids’, n);
}),
{ global: n, bidder: r }
);
}
function w(e, t) {
return null == e || 0 === Object.keys(e.bidder || {}).length
? e
: ((e = P(e, t)), { …e, bidder: T(e) });
}
var D = n(1371);
const U = new Set([
‘bidderCode’,
‘bidderRequestId’,
‘uniquePbsTid’,
‘bids’,
‘timeout’
]),
$ = (() => {
const e = (0, I.Bp)(
(0, S.x4)(e => [e.bidfloor, e.bidfloorcur])
);
return function(t) {
let n;
for (const r of t) {
if (null == r?.bidfloorcur || null == r?.bidfloor)
return null;
n = null == n ? r : e(n, r);
}
return n;
};
})(),
J = (0, g.A)({
processors: C.m,
context: { netRevenue: !0 },
imp(e, t, n) {
Object.assign(n, t.pbsData);
const r = e(t, n);
if (
((t.bids || []).forEach(e => {
e.ortb2Imp &&
Object.keys(e.ortb2Imp).length > 0 &&
(0, m.J)(r, `ext.prebid.imp.${e.bidder}`, e.ortb2Imp);
}),
Object.values(B.s).some(e => r[e]))
)
return (r.secure = t.ortb2Imp?.secure ?? 1), r;
},
request(e, t, n, r) {
if (t.length) {
let { s2sBidRequest: s } = r;
const i = e(t, n, r);
return (
(i.tmax = Math.floor(
s.s2sConfig.timeout ??
Math.min(
0.75 * s.requestBidsTimeout,
s.s2sConfig.maxTimeout ?? M.maxTimeout
)
)),
(i.ext.tmaxmax = i.ext.tmaxmax || s.requestBidsTimeout),
[i.app, i.dooh, i.site].forEach(e => {
e &&
!e.publisher?.id &&
(0, m.J)(e, ‘publisher.id’, s.s2sConfig.accountId);
}),
r.transmitTids ||
(0, m.J)(i, ‘ext.prebid.createtids’, !1),
i
);
}
(0, i.vV)(
‘Request to Prebid Server rejected due to invalid media type(s) in adUnit.’
);
},
bidResponse(e, t, n) {
let r = n.actualBidRequests.get(n.seatbid.seat);
null == r && (r = n.actualBidRequests.get(null)),
r &&
Object.assign(n, {
bidRequest: r,
bidderRequest: n.actualBidderRequests.find(
e => e.bidderCode === r.bidder
)
});
const s = e(t, n);
return (
(s.requestBidder = r?.bidder),
s.native?.ortb && (s.adm = s.native.ortb),
(s.requestTimestamp = n.requestTimestamp),
{
bid: Object.assign(
(0, h.O)(d.XQ.GOOD, {
src: d.RW.SRC,
bidId: r ? r.bidId || r.bid_Id : null,
transactionId: n.adUnit.transactionId,
adUnitId: n.adUnit.adUnitId,
auctionId: n.bidderRequest.auctionId
}),
s,
{
deferRendering: !!n.adUnit.deferBilling,
deferBilling: !!n.adUnit.deferBilling
}
),
adUnit: n.adUnit.code
}
);
},
overrides: {
[v.Tb]: {
id(e, t, n, r) {
t.id = r.impId;
},
params(e, t, n, r) {
const s = r.s2sBidRequest.s2sConfig.adapterOptions;
for (const e of r.actualBidRequests.values())
(0, y.W)(t, e, r, r),
s &&
s[e.bidder] &&
Object.assign(
t.ext.prebid.bidder[e.bidder],
s[e.bidder]
);
},
bidfloor(e, t, n, r) {
const s = $(
(function*() {
for (const t of r.actualBidRequests.values()) {
const n = {};
e(n, t, r), yield n;
}
})()
);
null != s && Object.assign(t, s);
},
extBidfloor(e, t, n, r) {
function s(e, t) {
null != t &&
((0, m.J)(e, ‘ext.bidfloor’, t.bidfloor),
(0, m.J)(e, ‘ext.bidfloorcur’, t.bidfloorcur));
}
const d = Array.from(r.actualBidRequests.values()).map(
n => {
const s = (0, i.Go)(t);
return e(s, n, r), s;
}
);
Object.values(D.GE).forEach(e => {
s(t[e], $(d.map(t => t[e]?.ext)));
}),
(t[D.D4]?.format || []).forEach((e, t) => {
s(e, $(d.map(e => e[D.D4].format[t]?.ext)));
});
}
},
[v.S3]: {
fpd(e, t, n, r) {
r.transmitTids && (0, m.J)(t, ‘source.tid’, n.auctionId),
(0, i.D9)(t, r.s2sBidRequest.ortb2Fragments?.global),
r.s2sBidRequest.s2sConfig.extPrebid &&
‘object’ ==
typeof r.s2sBidRequest.s2sConfig.extPrebid &&
(0, m.J)(
t,
‘ext.prebid’,
(0, i.D9)(
t.ext?.prebid || {},
r.s2sBidRequest.s2sConfig.extPrebid
)
),
r.getRedactor().ortb2(t);
const s = Object.entries(
r.s2sBidRequest.ortb2Fragments?.bidder || {}
)
.filter(e => {
let [t] = e;
const n = r.s2sBidRequest.s2sConfig.bidders;
return (
r.s2sBidRequest.s2sConfig.allowUnknownBidderCodes ||
(n && n.includes(t))
);
})
.map(e => {
let [t, n] = e;
return {
bidders: [t],
config: { ortb2: r.getRedactor(t).ortb2(n) }
};
});
s.length && (0, m.J)(t, ‘ext.prebid.bidderconfig’, s);
},
extPrebidAliases(e, t, n, r) {
r.actualBidderRequests.forEach(n => e(t, n, r));
},
sourceExtSchain(e, t, n, r) {
let s = t?.ext?.prebid?.schains || [];
const i = new Set(s.flatMap(e => e.bidders));
(s = Object.values(
s
.concat(
r.actualBidderRequests
.filter(e => !i.has(e.bidderCode))
.map(e => ({
bidders: [e.bidderCode],
schain: e?.bids?.[0]?.schain
}))
)
.filter(e => {
let { bidders: t, schain: n } = e;
return t?.length > 0 && n;
})
.reduce((e, t) => {
let { bidders: n, schain: r } = t;
const s = JSON.stringify(r);
return (
e.hasOwnProperty(s) ||
(e[s] = { bidders: new Set(), schain: r }),
n.forEach(t => e[s].bidders.add(t)),
e
);
}, {})
).map(e => {
let { bidders: t, schain: n } = e;
return { bidders: Array.from(t), schain: n };
})),
s.length && (0, m.J)(t, ‘ext.prebid.schains’, s);
}
},
[v.Cf]: {
serverSideStats(e, t, n, r) {
r.actualBidderRequests.forEach(s =>
e(t, n, { …r, bidderRequest: s, bidRequests: s.bids })
);
},
paapiConfigs(e, t, n, r) {
const s = Object.values(r.impContext).flatMap(e =>
(e.paapiConfigs || []).map(t => {
const n = e.actualBidderRequests.find(
e => e.bidderCode === t.bidder
),
r = e.actualBidRequests.get(t.bidder);
return {
adUnitCode: e.adUnit.code,
ortb2: n?.ortb2,
ortb2Imp: r?.ortb2Imp,
bidder: t.bidder,
config: t.config
};
})
);
s.length > 0 && (t.paapi = s);
}
}
}
});
var k = n(6894);
const _ = a.$W.getConfig,
V = d.RW.SRC;
let N,
W = 0;
const M = {
bidders: Object.freeze([]),
syncTimeout: 1e3,
maxBids: 1,
adapter: ‘prebidServer’,
allowUnknownBidderCodes: !1,
adapterOptions: {},
syncUrlModifier: {},
ortbNative: { eventtrackers: [{ event: 1, methods: [1, 2] }] },
maxTimeout: 1500
};
function G(e) {
if (!e) return;
e = Array.isArray(e) ? e : [e];
const t = new Set();
return e.filter(e => {
var n;
if (
((n = e),
[‘endpoint’, ‘syncEndpoint’].forEach(e => {
if ((0, i.O8)(n[e])) {
let t = n[e];
n[e] = { p1Consent: t, noP1Consent: t };
}
!(0, i.Qd)(n[e]) ||
(n[e].p1Consent && n[e].noP1Consent) ||
[‘p1Consent’, ‘noP1Consent’].forEach(t => {
n[e][t] ||
(0, i.JE)(
`s2sConfig.${e}.${t} not defined. PBS request will be skipped in some P1 scenarios.`
);
});
}),
(function(e) {
if (e.defaultVendor) {
let t = e.defaultVendor,
n = Object.keys(e);
if (!p[t])
return (
(0, i.vV)(
‘Incorrect or unavailable prebid server default vendor option: ‘ +
t
),
!1
);
Object.keys(p[t]).forEach(r => {
(M[r] !== e[r] && n.includes(r)) || (e[r] = p[t][r]);
});
} else null == e.adapter && (e.adapter = ‘prebidServer’);
return !0;
})(e) &&
(function(e) {
for (const t of [‘accountId’, ‘endpoint’])
if (null == e[t])
return (
(0, i.vV)(
t + ‘ missing in server to server config’
),
!1
);
return !0;
})(e) &&
e.enabled)
)
return (
Array.isArray(e.bidders) &&
(e.bidders = e.bidders.filter(
e => !t.has(e) && (t.add(e), !0)
)),
!0
);
(0, i.JE)(‘prebidServer: s2s config is disabled’, e);
});
}
function F(e, t, n, r, s) {
if (N.length === W) return;
W++;
let d = {};
const o = _(‘userSync.filterSettings’);
if (o) {
const { all: e, iframe: t, image: n } = o,
r = t || e,
s = n || e;
r && (d = Object.assign({ iframe: r }, d)),
s && (d = Object.assign({ image: s }, d));
}
const a = {
uuid: (0, i.lk)(),
bidders: e,
account: s.accountId,
filterSettings: d
};
let c = s.userSyncLimit;
(0, i.Et)(c) && c > 0 && (a.limit = c),
t &&
((a.gdpr = t.gdprApplies ? 1 : 0),
!1 !== t.gdprApplies && (a.gdpr_consent = t.consentString)),
n && (a.us_privacy = n),
r &&
((a.gpp_sid = r.applicableSections.join()),
(a.gpp = r.gppString)),
‘boolean’ == typeof s.coopSync && (a.coopSync = s.coopSync);
const u = JSON.stringify(a);
(0, l.RD)(
H(s.syncEndpoint, t),
e => {
try {
L((e = JSON.parse(e)).bidder_status, s);
} catch (e) {
(0, i.vV)(e);
}
},
u,
{ contentType: ‘text/plain’, withCredentials: !0 }
);
}
function L(e, t) {
if (0 === e.length) return;
const n = e.shift();
n.no_cookie
? (function(e, t, n, r, s) {
s.syncUrlModifier &&
‘function’ == typeof s.syncUrlModifier[n] &&
(t = s.syncUrlModifier[n](e, t, n));
!(function(e, t, n, r, s) {
t
? ‘image’ === e || ‘redirect’ === e
? ((0, i.OG)(
`Invoking image pixel user sync for bidder: «${n}»`
),
(0, i.z$)(t, r, s))
: ‘iframe’ === e
? ((0, i.OG)(
`Invoking iframe user sync for bidder: «${n}»`
),
(0, i.SG)(t, r, s))
: ((0, i.vV)(
`User sync type «${e}» not supported for bidder: «${n}»`
),
r())
: ((0, i.vV)(`No sync url for bidder «${n}»: ${t}`),
r());
})(e, t, n, r, s.syncTimeout);
})(
n.usersync.type,
n.usersync.url,
n.bidder,
L.bind(null, e, t),
t
)
: L(e, t);
}
function H(e, t) {
const n = (0, f.C)(t),
r = n ? e.p1Consent : e.noP1Consent;
return (
r || (0, i.JE)(‘Missing matching consent URL when gdpr=’ + n), r
);
}
function Y(e) {
let t, n, r;
return (
Array.isArray(e) &&
e.length > 0 &&
((t = e[0].gdprConsent),
(n = e[0].uspConsent),
(r = e[0].gppConsent)),
{ gdprConsent: t, uspConsent: n, gppConsent: r }
);
}
a.$W.setDefaults({ s2sConfig: M }),
_(‘s2sConfig’, e => {
let { s2sConfig: t } = e;
var n;
(n = G((n = t))).length && (N = n);
});
const z = (0, b.A_)(
‘async’,
function(e, t, n, r) {
let { onResponse: s, onError: c, onBid: p, onFledge: l } = r,
{ gdprConsent: b } = Y(t);
const f = (0, i.Go)(e.ad_units),
g = f
.map(e => e.bids.map(e => e.bidder).filter(i.hj))
.reduce(i.Bq, [])
.filter(i.hj),
m = e.metrics.measureTime(‘buildRequests’, () =>
(function(e, t, n, r) {
const s = (0, i.vE)(),
d = new Set(),
c = [],
u = (0, o.K5)(e.s2sConfig),
p = (() => {
const e = (0, R.$p)(u),
t = {};
return n =>
null == n
? e
: (t.hasOwnProperty(n) ||
(t[n] = (0, R.$p)((0, q.s)(E.tW, n))),
t[n]);
})();
(n = n.map(e => p().bidRequest(e))).forEach(e => {
const r = new Map();
(n.bids = e.bids.map(e => p(e.bidder).bidRequest(e))),
e.bids.forEach(n => {
null != n.mediaTypes &&
(0, i.JE)(
`Prebid Server adapter does not (yet) support bidder-specific mediaTypes for the same adUnit. Size mapping configuration will be ignored for adUnit: ${e.code}, bidder: ${n.bidder}`
),
r.set(n.bidder, (0, i.D4)(n.bid_id, t));
});
let s = e.code,
o = 1;
for (; d.has(s); ) o++, (s = `${e.code}-${o}`);
d.add(s),
c.push({
…e,
adUnitCode: e.code,
pbsData: {
impId: s,
actualBidRequests: r,
adUnit: e
}
});
});
const l = {
…Object.fromEntries(
Object.entries(t[0]).filter(e => {
let [t] = e;
return !U.has(t);
})
),
paapi: { enabled: t.some(e => e.paapi?.enabled) }
};
return J.toORTB({
bidderRequest: l,
bidRequests: c,
context: {
currency:
a.$W.getConfig(‘currency.adServerCurrency’) ||
‘USD’,
ttl: e.s2sConfig.defaultTtl || 60,
requestTimestamp: s,
s2sBidRequest: {
…e,
ortb2Fragments: w(e.ortb2Fragments, r)
},
requestedBidders: r,
actualBidderRequests: t,
nativeRequest: e.s2sConfig.ortbNative,
getRedactor: p,
transmitTids: (0, x.io)(O.VJ, u)
}
});
})(e, t, f, g)
),
h = {
endpointUrl: H(e.s2sConfig.endpoint, b),
requestJson: m && JSON.stringify(m),
customHeaders: e?.s2sConfig?.customHeaders ?? {}
};
if (
(u.Ic(d.qY.BEFORE_PBS_HTTP, h),
(0, i.fH)(‘BidRequest: ‘ + h),
m && h.requestJson && h.endpointUrl)
) {
const t = e.metrics.startTiming(‘net’);
n(
h.endpointUrl,
{
success: function(n) {
let r;
t();
try {
r = JSON.parse(n);
const { bids: t, paapi: s } = e.metrics.measureTime(
‘interpretResponse’,
() =>
(function(e, t) {
return J.fromORTB({ response: e, request: t });
})(r, m)
);
t.forEach(p), s && s.forEach(l);
} catch (e) {
(0, i.vV)(e);
}
!r || (r.status && r.status.includes(‘Error’))
? ((0, i.vV)(
‘error parsing response: ‘,
r ? r.status : ‘not valid JSON’
),
s(!1, g))
: s(!0, g, r);
},
error: function() {
t(), c.apply(this, arguments);
}
},
h.requestJson,
{
contentType: ‘text/plain’,
withCredentials: !0,
browsingTopics: (0, x.io)(O.DL, (0, o.K5)(e.s2sConfig)),
customHeaders: h.customHeaders
}
);
} else (0, i.vV)(‘PBS request not made. Check endpoints.’);
},
‘processPBSRequest’
);
function K(e, t) {
return e?.extPrebid?.returnallbidstatus
? t?.ext?.seatnonbid
: void 0;
}
function Q(e) {
return e?.ext?.prebid?.analytics?.tags;
}
o.Ay.registerBidAdapter(
new (function() {
const e = new s.A(‘prebidServer’);
return (
(e.callBids = function(e, t, n, r, s) {
const p = (e.metrics = (0, k.BO)(t?.[0]?.metrics)
.newMetrics()
.renameWith(t => [
`adapter.s2s.${t}`,
`adapters.s2s.${e.s2sConfig.defaultVendor}.${t}`
]));
(r = p.startTiming(‘total’).stopBefore(r)),
t.forEach(e =>
(0, k.BO)(e.metrics).join(p, {
continuePropagation: !1
})
);
let { gdprConsent: l, uspConsent: b, gppConsent: f } = Y(t);
if (Array.isArray(N)) {
if (
e.s2sConfig &&
e.s2sConfig.syncEndpoint &&
H(e.s2sConfig.syncEndpoint, l)
) {
const t =
(e.s2sConfig.extPrebid &&
e.s2sConfig.extPrebid.aliases) ??
{};
F(
e.s2sConfig.bidders
.map(e => o.Ay.aliasRegistry[e] || t[e] || e)
.filter((e, t, n) => n.indexOf(e) === t),
l,
b,
f,
e.s2sConfig
);
}
z(e, t, s, {
onResponse: function(n, s, i) {
n && t.forEach(e => u.Ic(d.qY.BIDDER_DONE, e));
const { seatNonBidData: c, atagData: g } = (function(
e,
t
) {
return { atagData: Q(t), seatNonBidData: K(e, t) };
})(e.s2sConfig, i);
if (
(c &&
u.Ic(d.qY.SEAT_NON_BID, {
seatnonbid: i.ext.seatnonbid,
auctionId: t[0].auctionId,
requestedBidders: s,
response: i,
adapterMetrics: p
}),
c || g)
) {
const e = {
seatnonbid: c,
atag: g,
auctionId: t[0].auctionId,
requestedBidders: s,
response: i,
adapterMetrics: p
};
u.Ic(d.qY.PBS_ANALYTICS, e);
}
r(!1),
(function(e, t, n, r) {
e.forEach(e => {
let s = o.Ay.getBidAdapter(e);
s &&
s.registerSyncs &&
a.$W.runWithBidder(
e,
s.registerSyncs.bind(s, [], t, n, r)
);
});
})(s, l, b, f);
},
onError(n, s) {
const { p1Consent: o = », noP1Consent: a = » } =
e?.s2sConfig?.endpoint || {};
o === a
? (0, i.vV)(
`Prebid server call failed: ‘${n}’. Endpoint: «${o}»}`,
s
)
: (0, i.vV)(
`Prebid server call failed: ‘${n}’. Endpoints: p1Consent «${o}», noP1Consent «${a}»}`,
s
),
t.forEach(e =>
u.Ic(d.qY.BIDDER_ERROR, {
error: s,
bidderRequest: e
})
),
r(s.timedOut);
},
onBid: function(t) {
let { adUnit: r, bid: s } = t;
const o = (s.metrics = e.metrics.fork().renameWith());
o.checkpoint(‘addBidResponse’),
(null != s.requestId && null != s.requestBidder) ||
e.s2sConfig.allowUnknownBidderCodes
? o.measureTime(‘addBidResponse.validate’, () =>
(0, c.fn)(r, s)
)
? n(r, s)
: n.reject(r, s, d.Tf.INVALID)
: ((0, i.JE)(
`PBS adapter received bid from unknown bidder (${s.bidder}), but ‘s2sConfig.allowUnknownBidderCodes’ is not set. Ignoring bid.`
),
n.reject(r, s, d.Tf.BIDDER_DISALLOWED));
},
onFledge: e => {
a.$W.runWithBidder(e.bidder, () => {
(0, c.JN)(
{ auctionId: t[0].auctionId, …e },
{ config: e.config }
);
});
}
});
}
}),
Object.assign(this, {
callBids: e.callBids,
setBidderCode: e.setBidderCode,
type: V
})
);
})(),
‘prebidServer’
),
(0, r.E)(‘prebidServerBidAdapter’);
}
},
e => {
e.O(0, [802, 618, 498, 225, 769, 139, 85], () => {
return (t = 1134), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[41],
{
2115: (d, e, n) => {
var t = n(7873),
s = n(9214),
i = n(1069);
const o = {
name: ‘pubProvidedId’,
gvlid: n(6916).B1,
decode(d) {
const e = d ? { pubProvidedId: d } : void 0;
return (
(0, i.fH)(
‘PubProvidedId: Decoded value ‘ + JSON.stringify(e)
),
e
);
},
getId(d) {
const e = (d && d.params) || {};
let n = [];
return (
(0, i.cy)(e.eids) && (n = n.concat(e.eids)),
‘function’ == typeof e.eidsFunction &&
(n = n.concat(e.eidsFunction())),
{ id: n }
);
}
};
(0, s.bz)(‘userId’, o), (0, t.E)(‘pubProvidedIdSystem’);
}
},
d => {
d.O(0, [802, 769, 139, 85], () => {
return (e = 2115), d((d.s = e));
var e;
});
d.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[496],
{
5862: (e, o, t) => {
var n = t(7873),
r = t(1069),
d = t(9214),
i = t(2938),
a = t(6916),
u = t(5569),
c = t(2339);
const s = (0, i.vM)({ moduleType: u.fW, moduleName: ‘sharedId’ }),
l = ‘cookie’,
m = ‘html5’,
p = ‘_pubcid_optout’,
f = ‘PublisherCommonId’;
function g(e, o) {
if (o === l) return s.getCookie(e);
if (o === m && s.hasLocalStorage()) {
const o = s.getDataFromLocalStorage(`${e}_exp`);
if (!o) return s.getDataFromLocalStorage(e);
if (new Date(o).getTime() – Date.now() > 0)
return s.getDataFromLocalStorage(e);
}
}
function b(e, o) {
return function(t, n) {
o
? v(o, e, () => {
t(n() || e);
})()
: t(e);
};
}
function v(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.Dl)(e);
n.search.id = encodeURIComponent(‘pubcid:’ + o);
const d = (0, r.c$)(n);
return function() {
(0, r.z$)(d, t);
};
}
function h() {
return !!(
(s.cookiesAreEnabled() && g(p, l)) ||
(s.hasLocalStorage() && g(p, m))
);
}
const I = {
name: ‘sharedId’,
aliasName: ‘pubCommonId’,
gvlid: a.B1,
decode(e, o) {
if (h())
return void (0, r.fH)(‘PubCommonId decode: Has opted-out’);
(0, r.fH)(‘ Decoded value PubCommonId ‘ + e);
return { pubcid: e };
},
getId: function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o = arguments.length > 1 ? arguments[1] : void 0,
t = arguments.length > 2 ? arguments[2] : void 0;
if (h()) return void (0, r.fH)(‘PubCommonId: Has opted-out’);
if (o?.coppa)
return void (0, r.fH)(
‘PubCommonId: IDs not provided for coppa requests, exiting PubCommonId’
);
const { params: { create: n = !0, pixelUrl: d } = {} } = e;
let i = t;
if (!i) {
try {
‘object’ == typeof window[f] && (i = window[f].getId());
} catch (e) {}
i || (i = n && (0, r.N9)() ? (0, r.lk)() : void 0);
}
return { id: i, callback: b(i, d) };
},
extendId: function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o = arguments.length > 1 ? arguments[1] : void 0,
t = arguments.length > 2 ? arguments[2] : void 0;
if (h())
return (
(0, r.fH)(‘PubCommonId: Has opted-out’), { id: void 0 }
);
if (o?.coppa)
return void (0, r.fH)(
‘PubCommonId: IDs not provided for coppa requests, exiting PubCommonId’
);
const { params: { extend: n = !1, pixelUrl: d } = {} } = e;
if (n) {
if (d) {
return { callback: v(d, t) };
}
return { id: t };
}
},
domainOverride: (0, c.w)(s, ‘sharedId’),
eids: {
pubcid(e, o) {
const t = {
source: ‘pubcid.org’,
uids: e.map(e => ({ id: e, atype: 1 }))
};
return (
null != o?.params?.inserter &&
(t.inserter = o.params.inserter),
t
);
}
}
};
(0, d.bz)(‘userId’, I), (0, n.E)(‘sharedIdSystem’);
}
},
e => {
e.O(0, [764, 802, 769, 139, 85], () => {
return (o = 5862), e((e.s = o));
var o;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[469],
{
4836: (e, t, n) => {
var r = n(7873),
o = n(3272),
s = n(5023),
i = n(1445),
a = n(8969),
c = n(9214),
u = n(1069);
const l = new Map();
function d(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: l;
const n = {};
function r(e) {
const t = JSON.stringify([
e.source?.toLowerCase(),
…Object.keys(e)
.filter(e => ![‘uids’, ‘source’].includes(e))
.sort()
.map(t => e[t])
]);
n.hasOwnProperty(t) ? n[t].uids.push(…e.uids) : (n[t] = e);
}
return (
Object.entries(e).forEach(e => {
let [n, o] = e;
o = Array.isArray(o) ? o : [o];
const s = t.get(n);
let i;
if (‘pubProvidedId’ === n) i = (0, u.Go)(o);
else if (‘function’ == typeof s)
try {
(i = s(o)),
Array.isArray(i) || (i = [i]),
i.forEach(
e =>
(e.uids = e.uids.filter(e => {
let { id: t } = e;
return (0, u.O8)(t);
}))
),
(i = i.filter(e => {
let { uids: t } = e;
return t?.length > 0;
}));
} catch (e) {
(0, u.vV)(`Could not generate EID for «${n}»`, e);
}
else
i = o.map(e =>
(function(e, t, n) {
if (n && e) {
let t = {};
t.source = (0, u.fp)(n.getSource)
? n.getSource(e)
: n.source;
const r = (0, u.fp)(n.getValue) ? n.getValue(e) : e;
if ((0, u.O8)(r)) {
const o = { id: r, atype: n.atype };
if ((0, u.fp)(n.getUidExt)) {
const t = n.getUidExt(e);
t && (o.ext = t);
}
if (
((t.uids = [o]),
n.inserter || (0, u.fp)(n.getInserter))
) {
const r = (0, u.fp)(n.getInserter)
? n.getInserter(e)
: n.inserter;
null != r && (t.inserter = r);
}
if (n.matcher || (0, u.fp)(n.getMatcher)) {
const r = (0, u.fp)(n.getMatcher)
? n.getMatcher(e)
: n.matcher;
null != r && (t.matcher = r);
}
if (
(null != n.mm && (t.mm = n.mm),
(0, u.fp)(n.getEidExt))
) {
const r = n.getEidExt(e);
r && (t.ext = r);
}
return t;
}
}
return null;
})(e, 0, s)
);
Array.isArray(i) && i.filter(e => null != e).forEach(r);
}),
Object.values(n)
);
}
function f(e) {
const t = new Map(),
n = {};
return (
Object.entries(e).forEach(e => {
let [r, o] = e;
const s = o();
if (s) {
n[r] = s.idObj[r];
let e = s.submodule.eids?.[r];
‘function’ == typeof e &&
((i = e),
(e = function() {
for (
var e = arguments.length, t = new Array(e), n = 0;
n < e;
n++
)
t[n] = arguments[n];
return i(…t, s.config);
})),
t.set(r, e);
}
var i;
}),
d(n, t)
);
}
var g = n(2938),
m = n(3172),
b = n(1692),
h = n(5555),
p = n(6894),
y = n(5973),
I = n(6916),
w = n(5569),
v = n(5139),
S = n(6811),
D = n(3441),
E = n(8230),
O = n(8934);
const k = ‘User ID’,
$ = g.X0,
j = g.qk,
A = ‘_pbjs_id_optout’,
U = (0, g.CK)(‘userId’),
T = { isAllowed: v.io };
let C,
x,
N,
L,
_,
P,
H = [],
M = [],
J = {},
q = [];
const V = (() => {
let e;
return () => (null == e && (e = (0, p.K7)()), e);
})();
function F(e) {
return V()
.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,
r = e.config.storage.name;
return function(e, o, s) {
t.setCookie(r + (e || »), o, s, ‘Lax’, n);
};
}
function G(e, t) {
const n = e.config.storage;
try {
const r = new Date(
Date.now() + 864e5 * n.expires
).toUTCString(),
o = (0, u.Qd)(t) ? JSON.stringify(t) : t;
e.enabledStorageTypes.forEach(t => {
switch (t) {
case $:
!(function(e, t, n) {
const r = e.config.storage,
o = W(e);
o(null, t, n),
o(‘_cst’, me(), n),
‘number’ == typeof r.refreshInSeconds &&
o(‘_last’, new Date().toUTCString(), n);
})(e, o, r);
break;
case j:
!(function(e, t, n) {
const r = e.config.storage,
o = e.storageMgr;
o.setDataInLocalStorage(`${r.name}_exp`, n),
o.setDataInLocalStorage(`${r.name}_cst`, me()),
o.setDataInLocalStorage(
r.name,
encodeURIComponent(t)
),
‘number’ == typeof r.refreshInSeconds &&
o.setDataInLocalStorage(
`${r.name}_last`,
new Date().toUTCString()
);
})(e, o, r);
}
});
} catch (e) {
(0, u.vV)(e);
}
}
function R(e) {
ve(e),
e.enabledStorageTypes.forEach(t => {
switch (t) {
case $:
!(function(e) {
const t = W(e, U),
n = new Date(Date.now() – 864e5).toUTCString();
[», ‘_last’, ‘_cst’].forEach(e => {
try {
t(e, », n);
} catch (e) {
(0, u.vV)(e);
}
});
})(e);
break;
case j:
!(function(e) {
[», ‘_last’, ‘_exp’, ‘_cst’].forEach(t => {
try {
U.removeDataFromLocalStorage(
e.config.storage.name + t
);
} catch (e) {
(0, u.vV)(e);
}
});
})(e);
}
});
}
function B(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: void 0;
const n = e.config.storage,
r = t ? `${n.name}_${t}` : n.name;
let o;
try {
e.enabledStorageTypes.find(t => {
switch (t) {
case $:
o = (function(e, t) {
return e.storageMgr.getCookie(t);
})(e, r);
break;
case j:
o = (function(e, t) {
const n = e.storageMgr,
r = e.config.storage,
o = n.getDataFromLocalStorage(`${r.name}_exp`);
return » === o
? n.getDataFromLocalStorage(t)
: o && new Date(o).getTime() – Date.now() > 0
? decodeURIComponent(n.getDataFromLocalStorage(t))
: void 0;
})(e, r);
}
return !!o;
}),
‘string’ == typeof o &&
‘{‘ === o.trim().charAt(0) &&
(o = JSON.parse(o));
} catch (e) {
(0, u.vV)(e);
}
return o;
}
function Q(e, t, n) {
t = V()
.fork()
.startTiming(‘userId.callbacks.total’)
.stopBefore(t);
const r = (0, u.U6)(() => {
clearTimeout(x), t();
}, e.length);
e.forEach(function(e) {
const t = F(e.submodule.name)
.startTiming(‘callback’)
.stopBefore(r);
try {
e.callback(function(r) {
r
? (e.config.storage && G(e, r),
(e.idObj = e.submodule.decode(r, e.config)),
n.refresh(),
he(n))
: (0, u.fH)(
`${k}: ${e.submodule.name} – request id responded with an empty value`
),
t();
}, B.bind(null, e));
} catch (n) {
(0, u.vV)(`Error in userID module ‘${e.submodule.name}’:`, n),
t();
}
e.callback = void 0;
});
}
function K(e) {
return Object.fromEntries(
Object.entries(e)
.map(e => {
let [t, n] = e;
return [t, n()?.idObj?.[t]];
})
.filter(e => {
let [t, n] = e;
return null != n;
})
);
}
function Y(e, t, n) {
const r = {};
return (
e.forEach(e => {
const o = n(e),
s = (function(e) {
if (e.primaryIds) return e.primaryIds;
const t = Object.keys(e.eids ?? {});
if (t.length > 1)
throw new Error(
`ID submodule ${e.name} can provide multiple IDs, but does not specify ‘primaryIds’`
);
return t;
})(o);
t(e).forEach(t => {
const n = (r[t] = r[t] ?? []),
i = J[t]?.indexOf(o.name) ?? (s.includes(t) ? 0 : -1),
a = n.findIndex(e => {
let [t] = e;
return t < i;
});
n.splice(-1 === a ? n.length : a, 0, [i, e]);
});
}),
Object.fromEntries(
Object.entries(r).map(e => {
let [t, n] = e;
return [
t,
n.map(e => {
let [t, n] = e;
return n;
})
];
})
)
);
}
function z() {
const e = {
submodules: [],
global: {},
bidder: {},
combined: {},
refresh() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: [];
const n = new Set(t.map(e => e.submodule));
(e.submodules = e.submodules
.filter(e => !n.has(e.submodule))
.concat(t)),
(function() {
const t = Y(
e.submodules,
e => Object.keys(e.idObj ?? {}),
e => e.submodule
),
n = {},
r = {};
function o(e, t, n) {
return function() {
for (const {
allowed: r,
bidders: o,
module: s
} of n) {
if (
!T.isAllowed(
S.yl,
(0, D.s)(w.fW, s?.config?.name, { init: !1 })
)
)
continue;
const i = s.idObj?.[e];
if (null != i) {
if (r) return s;
if (t) {
const t = e =>
e
.map(e => e.module.submodule.name)
.join(‘, ‘);
return (
(0, u.JE)(
`userID modules ${t(
n
)} provide the same ID (‘${e}’); ${
s.submodule.name
} is the preferred source, but it’s configured only for some bidders, unlike ${t(
n.filter(e => null == e.bidders)
)}. Other bidders will not see the «${e}» ID.`
),
null
);
}
if (null == o) return null;
}
}
return null;
};
}
Object.entries(t).forEach(e => {
let [t, s] = e,
i = !0;
const a = new Set();
(s = s.map(e => {
let t = null;
return (
Array.isArray(e.config.bidders) &&
e.config.bidders.length > 0
? ((t = e.config.bidders),
t.forEach(e => a.add(e)))
: (i = !1),
{ module: e, bidders: t }
);
})),
i ||
(n[t] = o(
t,
!0,
s.map(e => {
let { bidders: t, module: n } = e;
return {
allowed: null == t,
bidders: t,
module: n
};
})
)),
a.forEach(e => {
(r[e] = r[e] ?? {}),
(r[e][t] = o(
t,
!1,
s.map(t => {
let { bidders: n, module: r } = t;
return {
allowed: n?.includes(e),
bidders: n,
module: r
};
})
));
});
});
const s = Object.values(r)
.concat([n])
.reduce((e, t) => Object.assign(e, t), {});
Object.assign(e, { global: n, bidder: r, combined: s });
})();
}
};
return e;
}
function X(e) {
let { adUnits: t, ortb2Fragments: n } = e;
if (
((n = n ?? { global: {}, bidder: {} }),
(function(e) {
const { global: t, bidder: n } = e,
{ global: r, bidder: o } = C,
s = f(r);
s.length > 0 &&
(0, m.J)(
t,
‘user.ext.eids’,
(t.user?.ext?.eids ?? []).concat(s)
),
Object.entries(o).forEach(e => {
let [t, r] = e;
const o = f(r);
o.length > 0 &&
(0, m.J)(
n,
`${t}.user.ext.eids`,
(n[t]?.user?.ext?.eids ?? []).concat(o)
);
});
})(n),
[t].some(e => !Array.isArray(e) || !e.length))
)
return;
const r = K(C.global),
o = n.global.user?.ext?.eids || [];
t.forEach(e => {
e.bids &&
(0, u.cy)(e.bids) &&
e.bids.forEach(e => {
const t = Object.assign({}, r, K(C.bidder[e.bidder] ?? {})),
s = o.concat(n.bidder?.[e.bidder]?.user?.ext?.eids || []);
Object.keys(t).length > 0 && (e.userId = t),
s.length > 0 && (e.userIdAsEids = s);
});
});
}
const Z = {};
let ee;
function te() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: ie() || [];
const t = _ && e.find(e => e.source === _);
if (t && ‘string’ == typeof t?.uids?.[0]?.id) {
const e = t.uids[0].id.replace(/[W_]/g, »);
if (e.length >= 32 && e.length <= 150) return e;
(0, u.JE)(
`User ID – Googletag Publisher Provided ID for ${_} is not between 32 and 150 characters – ${e}`
);
}
}
const ne = (0, p.Ak)(‘userId’, function(e, t) {
let { mkDelay: n = h.cb, getIds: r = ge } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
h.U9.race([r().catch(() => null), n(L)]).then(() => {
X(t),
V().join((0, p.BO)(t.metrics), {
propagate: !1,
includeGroups: !0
}),
e.call(this, t);
});
}),
re = (0, p.Ak)(‘userId’, function(e, t) {
X(t), e.call(this, t);
});
function oe() {
return !!O.gH.getHooks({ hook: ne }).length;
}
function se() {
return K(C.combined);
}
function ie() {
return f(C.combined);
}
function ae(e) {
return ie().filter(t => t.source === e)[0];
}
function ce(e, t, n) {
return de().then(() => {
let r = {};
if ((0, u.fp)(n)) {
(0, u.fH)(
`${k} – Getting encrypted signal from custom function : ${n.name} & source : ${e} `
);
const t = n(e);
r[e] = t ? ue(t) : null;
} else {
const n = ae(e);
(0, u.fH)(
`${k} – Getting encrypted signal for eids :${JSON.stringify(
n
)}`
),
(0, u.Im)(n) ||
(r[n.source] = !0 === t ? ue(n) : n.uids[0].id);
}
return (
(0, u.fH)(`${k} – Fetching encrypted eids: ${r[e]}`), r[e]
);
});
}
function ue(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 le() {
if (!(0, u.II)()) return;
window.googletag.secureSignalProviders =
window.googletag.secureSignalProviders || [];
const e = o.$W.getConfig(‘userSync.encryptedSignalSources’);
if (e) {
const t = e.registerDelay || 0;
setTimeout(() => {
e.sources &&
e.sources.forEach(e => {
let { source: t, encrypt: n, customFunc: r } = e;
t.forEach(e => {
window.googletag.secureSignalProviders.push({
id: e,
collectorFunction: () => ce(e, n, r)
});
});
});
}, t);
} else
(0, u.JE)(
`${k} – ESP : encryptedSignalSources config not defined under userSync Object`
);
}
function de(e) {
return ee(e).then(
() => se(),
e =>
e === Z
? Promise.resolve().then(ge)
: ((0, u.vV)(‘Error initializing userId’, e),
h.U9.reject(e))
);
}
function fe() {
let { submoduleNames: e } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
t = arguments.length > 1 ? arguments[1] : void 0;
return de({ refresh: !0, submoduleNames: e }).then(
e => (t && (0, u.fp)(t) && t(), e)
);
}
function ge() {
return de();
}
function me() {
let e = Number(I.SL.hash);
const t = [];
for (; e > 0; ) t.push(String.fromCharCode(255 & e)), (e >>>= 8);
return btoa(t.join());
}
function be(e, t) {
const n = I.SL.getConsentData();
if (e.config.storage) {
let r,
o = B(e),
s = !1;
if (‘number’ == typeof e.config.storage.refreshInSeconds) {
const t = new Date(B(e, ‘last’));
s =
t &&
Date.now() – t.getTime() >
1e3 * e.config.storage.refreshInSeconds;
}
if (
!o ||
s ||
t ||
(function(e) {
const t = B(e, ‘cst’);
return !t || t !== me();
})(e)
) {
const t = Object.assign(
{ enabledStorageTypes: e.enabledStorageTypes },
e.config
);
r = e.submodule.getId(t, n, o);
} else
‘function’ == typeof e.submodule.extendId &&
(r = e.submodule.extendId(e.config, n, o));
(0, u.Qd)(r) &&
(r.id && (G(e, r.id), (o = r.id)),
‘function’ == typeof r.callback && (e.callback = r.callback)),
o && (e.idObj = e.submodule.decode(o, e.config));
} else if (e.config.value) e.idObj = e.config.value;
else {
const t = e.submodule.getId(e.config, n);
(0, u.Qd)(t) &&
(‘function’ == typeof t.callback && (e.callback = t.callback),
t.id && (e.idObj = e.submodule.decode(t.id, e.config)));
}
}
function he(e) {
const t = f(e.combined);
if (t.length && _) {
const e = te(t);
e &&
((0, u.II)()
? window.googletag.pubads().setPublisherProvidedId(e)
: ((window.googletag = window.googletag || {}),
(window.googletag.cmd = window.googletag.cmd || []),
window.googletag.cmd.push(function() {
window.googletag.pubads().setPublisherProvidedId(e);
})));
}
}
function pe(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
return V()
.fork()
.measureTime(‘userId.init.modules’, function() {
if (!t.length) return [];
if (
(t.forEach(e => ve(e)),
!(t = t.filter(
e =>
(!e.config.storage || !!e.enabledStorageTypes.length) &&
T.isAllowed(S.yl, (0, D.s)(w.fW, e.config.name))
)).length)
)
return (0, u.JE)(`${k} – no ID module configured`), [];
const r = t.reduce(
(e, t) =>
F(t.submodule.name).measureTime(‘init’, () => {
try {
be(t, n), e.push(t);
} catch (e) {
(0, u.vV)(
`Error in userID module ‘${t.submodule.name}’:`,
e
);
}
return e;
}),
[]
);
return e.refresh(r), he(e), r;
});
}
function ye(e) {
return e?.storage?.type?.trim().split(/s*&s*/) || [];
}
function Ie(e) {
function t(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
(0, u.JE)(`Invalid userSync.userId config: ${e}`, …n);
}
return Array.isArray(e)
? e.filter(e => {
if (!e?.name) return t(‘must specify «name»‘, e);
if (e.storage) {
if (!e.storage.name || !e.storage.type)
return t(
‘must specify «storage.name» and «storage.type»‘,
e
);
if (
!(function(e) {
return ye(e).every(e => we.has(e));
})(e)
)
return t(‘invalid «storage.type»‘, e);
[‘expires’, ‘refreshInSeconds’].forEach(n => {
let r = e.storage[n];
null != r &&
‘number’ != typeof r &&
((r = Number(r)),
isNaN(r)
? (t(
`storage.${n} must be a number and will be ignored`,
e
),
delete e.storage[n])
: (e.storage[n] = r));
});
}
return !0;
})
: (null != e && t(‘must be an array’, e), []);
}
const we = new Set([j, $]);
function ve(e) {
if (e.enabledStorageTypes) return;
const t = ye(e.config);
e.enabledStorageTypes = t.filter(t => {
switch (t) {
case j:
return (function(e) {
return !(
!e.storageMgr.localStorageIsEnabled() ||
(U.getDataFromLocalStorage(A) &&
((0, u.fH)(
`${k} – opt-out localStorage found, storage disabled`
),
1))
);
})(e);
case $:
return (function(e) {
return !(
!e.storageMgr.cookiesAreEnabled() ||
(U.getCookie(A) &&
((0, u.fH)(
`${k} – opt-out cookie found, storage disabled`
),
1))
);
})(e);
}
return !1;
});
}
function Se(e) {
l.clear(),
Object.entries(
Y(
e,
e => Object.keys(e.eids || {}),
e => e
)
).forEach(e => {
let [t, n] = e;
return l.set(t, n[0].eids[t]);
});
}
function De() {
Se(q);
const e = Ie(M);
if (!e.length) return;
const t = q.filter(e => !(H || []).find(t => t.name === e.name));
H.splice(0, H.length),
t
.map(t => {
const n = (e || []).find(
e =>
e.name &&
(e.name.toLowerCase() === t.name.toLowerCase() ||
(t.aliasName &&
e.name.toLowerCase() === t.aliasName.toLowerCase()))
);
return (
n && t.name !== n.name && (n.name = t.name),
n
? {
submodule: t,
config: n,
callback: void 0,
idObj: void 0,
storageMgr: (0, g.vM)({
moduleType: w.fW,
moduleName: n.name
})
}
: null
);
})
.filter(e => null !== e)
.forEach(e => H.push(e)),
H.length &&
(oe() ||
(O.gH.getHooks({ hook: re }).remove(),
O.gH.before(ne, 100),
i.Ay.callDataDeletionRequest.before(Ee),
b.Q.after(e => e(te()))),
(0, u.fH)(
`${k} – usersync config updated for ${H.length} submodules: `,
H.map(e => e.submodule.name)
));
}
function Ee(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
(0, u.fH)(
‘UserID: received data deletion request; deleting all stored IDs…’
),
H.forEach(e => {
if (‘function’ == typeof e.submodule.onDataDeletionRequest)
try {
e.submodule.onDataDeletionRequest(
e.config,
e.idObj,
…n
);
} catch (t) {
(0, u.vV)(
`Error calling onDataDeletionRequest for ID submodule ${e.submodule.name}`,
t
);
}
R(e);
}),
e.apply(this, n);
}
function Oe(e) {
return function() {
return Promise.resolve(e.apply(this, arguments));
};
}
function ke(e) {
let { mkDelay: t = h.cb } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
(_ = void 0),
(H = []),
(M = []),
(C = z()),
(ee = (function() {
let { mkDelay: e = h.cb } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const t = (0, h.v6)(),
n = (0, h.v6)();
let r,
o,
i = !1;
function l(e) {
return (
(o = V().fork()),
null != r && r.reject(Z),
(r = (0, h.v6)()),
h.U9.race([e, r.promise]).finally(
o.startTiming(‘userId.total’)
)
);
}
let d = C,
f = H;
function g(e) {
return function() {
if (d === C && f === H) return e(…arguments);
};
}
function m() {
return I.SL.promise.finally(
o.startTiming(‘userId.init.consent’)
);
}
let b = l(
h.U9.all([c.Gc, t.promise])
.then(m)
.then(
g(() => {
pe(d, f);
})
)
.then(() =>
n.promise.finally(
o.startTiming(‘userId.callbacks.pending’)
)
)
.then(
g(() => {
const e = d.submodules.filter(e =>
(0, u.fp)(e.callback)
);
if (e.length) return new h.U9(t => Q(e, t, d));
})
)
);
return function() {
let {
refresh: r = !1,
submoduleNames: o = null,
ready: c = !1
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return (
c &&
!i &&
((i = !0),
t.resolve(),
L > 0
? n.resolve()
: s.on(a.qY.AUCTION_END, function t() {
s.AU(a.qY.AUCTION_END, t), e(N).then(n.resolve);
})),
r &&
i &&
(b = l(
b
.catch(() => null)
.then(m)
.then(
g(() => {
const e = pe(
d,
f.filter(
e =>
null == o || o.includes(e.submodule.name)
),
!0
).filter(e => null != e.callback);
if (e.length) return new h.U9(t => Q(e, t, d));
})
)
)),
b
);
};
})({ mkDelay: t })),
null != P && P(),
(q = []),
(P = e.getConfig(‘userSync’, e => {
const t = e.userSync;
t &&
((_ = t.ppid),
t.userIds &&
((M = t.userIds),
(N = (0, u.Et)(t.syncDelay)
? t.syncDelay
: E.qh.syncDelay),
(L = (0, u.Et)(t.auctionDelay)
? t.auctionDelay
: E.qh.auctionDelay),
De(),
(function(e, t) {
if (e) {
const n = {},
r = new Map(
t.map(e =>
e.aliasName ? [e.aliasName, e.name] : []
)
);
Object.keys(e).forEach(t => {
const o = (0, u.cy)(e[t])
? […e[t]].reverse()
: [];
n[t] = o.map(e => (r.has(e) ? r.get(e) : e));
}),
(J = n);
} else J = {};
C.refresh(), Se(t);
})(t.idPriority, q),
ee({ ready: !0 })));
})),
((0, r.m)().getUserIds = se),
((0, r.m)().getUserIdsAsEids = ie),
((0, r.m)().getEncryptedEidsForSource = Oe(ce)),
((0, r.m)().registerSignalSources = le),
((0, r.m)().refreshUserIds = Oe(fe)),
((0, r.m)().getUserIdsAsync = Oe(ge)),
((0, r.m)().getUserIdsAsEidBySource = ae),
oe() || O.gH.before(re, 100);
}
ke(o.$W),
(0, c.xG)(
‘userId’,
function(e) {
(e.findRootDomain = y.S),
(q || []).find(t => t.name === e.name) ||
(q.push(e),
I.o2.register(w.fW, e.name, e.gvlid),
De(),
ee({ refresh: !0, submoduleNames: [e.name] }));
},
{ postInstallAllowed: !0 }
),
(0, r.E)(‘userId’);
}
},
e => {
e.O(0, [802, 769, 139, 85], () => {
return (t = 4836), e((e.s = t));
var t;
});
e.O();
}
]);
})(),
tlpbjs.processQueue();
tlpbjs.config = {};
tlpbjs.config.domain = window.location.hostname.replace(‘www.’, »);
if (account) {
tlpbjs.config.account = account;
} else {
tlpbjs.config.account = ‘tl’;
}
tlpbjs.config.debug = window.location.search.indexOf(‘tlpbjs=debug’) > -1;
tlpbjs.defineSlot = window.googletag.defineSlot;
tlpbjs.nativeRender = function(state) {
var winners = tlpbjs.getHighestCpmBids([state.divId]);
if (tlpbjs.config.debug) console.log(‘tlpbjs: winners: ‘ + winners.length);
for (var i = 0; i < winners.length; i++) {
var winningBid = winners[i];
if (winningBid && winningBid.adId) {
if (tlpbjs.config.debug)
console.log(‘tlpbjs: winning bid id: ‘ + winningBid.adId);
if (state.div) {
state.div.innerHTML = »;
state.div.align = ‘center’;
state.div.style = ‘padding:0;margin:0;border:0pt none;’;
let iframe = document.createElement(‘iframe’);
iframe.frameBorder = 0;
iframe.setAttribute(‘marginwidth’, ‘0’);
iframe.setAttribute(‘marginheight’, ‘0’);
iframe.scrolling = ‘no’;
iframe.style =
‘overflow:hidden;display:block;border-style:none;border:0px;’;
state.div.appendChild(iframe);
var iframeDoc = iframe.contentWindow.document;
tlpbjs.renderAd(iframeDoc, winningBid.adId);
}
}
}
};
tlpbjs.tlRequestBids = function(state) {
if (state.gamSlotId) {
tlpbjs.requestBids({
adUnitCodes: [state.gamSlot.getSlotElementId()],
bidsBackHandler: function() {
tlpbjs.setTargetingForGPTAsync([state.gamSlot.getSlotElementId()]);
googletag.pubads().refresh([state.gamSlot]);
}
});
} else {
tlpbjs.requestBids({
adUnitCodes: [state.divId],
bidsBackHandler: function() {
tlpbjs.nativeRender(state);
}
});
}
};
tlpbjs.getPPID = function() {
if (localStorage) {
var permutive_id = localStorage.getItem(‘permutive-id’);
if (permutive_id) {
return permutive_id;
} else {
var teal_id = localStorage.getItem(‘teal-id’);
if (teal_id) {
return teal_id;
}
var newUUID = crypto
? crypto.randomUUID().toString()
: Math.random()
.toString()
.replace(‘0.’, ») +
Math.random()
.toString()
.replace(‘0.’, »);
localStorage.setItem(‘teal-id’, newUUID);
return newUUID;
}
} else {
return new crypto()
? crypto.randomUUID().toString()
: Math.random()
.toString()
.replace(‘0.’, ») +
Math.random()
.toString()
.replace(‘0.’, »);
}
};
tlpbjs.que.push(function() {
tlpbjs.setConfig({
s2sConfig: {
accountId: tlpbjs.config.account,
bidders: [‘teal-s2s’],
timeout: 2200,
maxTimeout: 2200,
enabled: true,
adapter: ‘prebidServer’,
endpoint: ‘https://a.bids.ws/openrtb2/auction’,
syncEndpoint: ‘https://a.bids.ws/cookie_sync’,
coopSync: true,
allowUnknownBidderCodes: true
},
ortb2: {
ext: {
prebid: {
storedrequest: {
id: tlpbjs.config.account
}
}
}
},
useBidCache: true,
bidderTimeout: 2500,
enableTIDs: true,
bidderSequence: ‘random’,
enableSendAllBids: false,
auctionOptions: {
suppressStaleRender: true
},
consentManagement: {
usp: {
cmpApi: ‘iab’,
timeout: 0
},
…(typeof __tcfapi === ‘function’ && {
gdpr: {
cmpApi: ‘iab’,
allowAuctionWithoutConsent: true,
timeout: 0,
defaultGdprScope: true
}
})
},
userSync: {
ppid: tlpbjs.config.domain,
filterSettings: {
iframe: {
bidders: ‘*’,
filter: ‘include’
}
},
userIds: [
{
name: ‘pubProvidedId’,
params: {
eids: [
{
source: tlpbjs.config.domain,
uids: [
{
id: tlpbjs.getPPID(),
atype: 1,
ext: {
stype: ‘ppuid’
}
}
]
}
]
}
},
{
name: ‘criteo’
},
{
name: ‘sharedId’,
storage: {
name: ‘_sharedID’,
type: ‘cookie’,
expires: 365
}
}
]
}
});
tlpbjs.bidderSettings = {
standard: {
adserverTargeting: [
{
key: ‘tl_bidder’,
val: function(bidResponse) {
return bidResponse.bidderCode;
}
},
{
key: ‘tl_adid’,
val: function(bidResponse) {
return bidResponse.adId;
}
},
{
key: ‘tl_pb’,
val: function(bidResponse) {
return bidResponse.pbHg;
}
},
{
key: ‘tl_size’,
val: function(bidResponse) {
return bidResponse.size;
}
},
{
key: ‘tl_source’,
val: function(bidResponse) {
return bidResponse.source;
}
},
{
key: ‘tl_format’,
val: function(bidResponse) {
return bidResponse.mediaType;
}
}
]
}
};
tlpbjs.onEvent(‘beforeRequestBids’, function(adUnits) {
adUnits.forEach(a => {
if (a.mediaTypes && a.mediaTypes.banner && a.mediaTypes.banner.sizes) {
delete a.mediaTypes.banner.sizes;
}
});
});
window.pbjs = window.pbjs || window.tlpbjs;
});
tlpbjs.renderTlDynamicAd = function(state) {
tlpbjs.que.push(function() {
if (!tlpbjs.adUnits.find(e => e.code === state.divId)) {
var new_unit = [
{
code: state.divId,
mediaTypes: {
banner: {
sizes: [[1, 1]]
}
},
ortb2Imp: {
ext: {
prebid: {
storedrequest: {
id: state.storedImp
},
…(window.location.search.indexOf(‘tl=test’) > -1 && {
storedauctionresponse: { id: ‘test-placement300x250’ }
})
}
}
},
bids: [
{
bidder: ‘teal-s2s’
}
]
}
];
tlpbjs.addAdUnits(new_unit);
}
var other_eids;
if (window.owpbjs && window.owpbjs.getUserIdsAsEids) {
other_eids = window.owpbjs.getUserIdsAsEids();
} else if (window.ihowpbjs && window.ihowpbjs.getUserIdsAsEids) {
other_eids = window.ihowpbjs.getUserIdsAsEids();
} else if (window.pbjs && window.pbjs.getUserIdsAsEids) {
other_eids = window.pbjs.getUserIdsAsEids();
}
if (other_eids && other_eids.filter) {
other_eids = other_eids.filter(
e =>
![‘criteo.com’, tlpbjs.config.domain, ‘pubcid.org’].includes(
e[‘source’]
)
);
tlpbjs.mergeConfig({
ortb2: {
user: {
ext: {
eids: other_eids
}
}
}
});
}
tlpbjs.tlRequestBids(state);
});
};
tlpbjs.initGam = function(state) {
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(function() {
if (state.gamSlotId) {
state.gamSlot = window.googletag
.pubads()
.getSlots()
.find(element => element.getSlotElementId() === state.divId);
if (!state.gamSlot) {
if (state.size && Array.isArray(state.size)) {
if (!state.size.includes(1)) {
state.size = [state.size, [1, 1]];
}
} else {
state.size = [[1, 1]];
}
state.gamSlot = tlpbjs
.defineSlot(state.gamSlotId, state.size, state.divId)
.addService(googletag.pubads());
} else {
var sizes = state.gamSlot.getSizes();
if (!sizes.find(e => e[‘width’] == 1)) {
var sizeArray = [[1, 1]];
sizes.forEach(e => sizeArray.push([e[‘width’], e[‘height’]]));
state.gamSlot.defineSizeMapping(
googletag
.sizeMapping()
.addSize([0, 0], sizeArray)
.build()
);
}
}
}
});
};
}
function triggerTealReplace(account) {
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(function() {
if (window.location.search.indexOf(‘tl=disable’) > -1) return;
var identifier = ‘recovered-ad-slot-‘;
var gptDefineSlot = window.googletag.defineSlot;
var adCounter = 0;
if (!window.tlpbjs || !window.tlpbjs.config)
loadTlpbjs(account ? account : ‘npg’);
function defineSlotOverride(adUnitPath, sizes, divId) {
//only pass 0,0 if parent node has recovered child already
var div = document.getElementById(divId);
var emptyParent = true;
if (
div.parentNode &&
div.parentNode.children &&
div.parentNode.children.forEach
) {
div.parentNode.children.forEach(e => {
if (e.id.startsWith(identifier)) {
emptyParent = false;
}
});
}
var slot = gptDefineSlot(adUnitPath, emptyParent ? sizes : [0, 0], divId);
runAuctionForSlot(divId, slot.getSizes());
return slot;
}
function runAuctionForSlot(divId, sizes, isRefresh) {
//check sizes – don’t render if width or height <= 2 (1×1,2×2 etc.)
var tooSmall = false;
var maxSize = [0, 0];
if (sizes && sizes[0]) {
if (Number.isInteger(sizes[0])) {
maxSize = sizes;
} else {
sizes.forEach(e => {
if (Array.isArray(e) && e[0] > maxSize[0]) {
maxSize[0] = e[0];
} else if (e.width > maxSize[0]) {
maxSize[0] = e.width;
}
if (Array.isArray(e) && e[1] > maxSize[1]) {
maxSize[1] = e[1];
} else if (e.height > maxSize[1]) {
maxSize[1] = e.height;
}
});
}
if (maxSize[0] <= 2 || maxSize[1] <= 2) {
tooSmall = true;
}
} else {
tooSmall = true;
}
var slot = document.getElementById(divId);
if (slot) {
//check to see if there is already an recovered slot in parent
var emptyParent = true;
if (
slot.parentNode &&
slot.parentNode.children &&
slot.parentNode.children.forEach
) {
slot.parentNode.children.forEach(e => {
if (e.id.startsWith(identifier)) {
emptyParent = false;
}
});
}
if (emptyParent || isRefresh) {
slot.innerHTML = »;
if (!isRefresh) slot.id = identifier + adCounter++;
if (!tooSmall) {
var urlParams = new URLSearchParams(window.location.search);
var state = {
divId: slot.id,
div: slot,
…(urlParams.get(‘tlgamslot’) && {
gamSlotId: urlParams.get(‘tlgamslot’)
}),
size: maxSize
};
if (maxSize[0] >= 728) state.storedImp = ‘recovered728x90’;
else if (maxSize[0] <= 160) state.storedImp = ‘recovered160x600’;
else if (maxSize[1] >= 250) state.storedImp = ‘recovered300x250’;
else if (maxSize[0] >= 320) state.storedImp = ‘recovered320x100’;
if (state.storedImp) {
if (state.gamSlotId) {
if (isRefresh)
state.gamSlot = window.googletag
.pubads()
.getSlots()
.find(
element => element.getSlotElementId() === state.divId
);
else window.tlpbjs.initGam(state);
}
window.tlpbjs.renderTlDynamicAd(state);
observeSlotInView(state); //start refresh timer
}
}
}
}
}
function observeSlotInView(state) {
var observer = new IntersectionObserver(
function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
observer.unobserve(state.div); // Stop observing once in view
setTimeout(
() => runAuctionForSlot(state.divId, state.size, true),
30000
); // Call after 30 seconds
}
});
},
{ threshold: 0.1 }
); // Trigger when at least 10% of the slot is in view
observer.observe(state.div);
}
window.googletag.defineSlot = defineSlotOverride;
window.googletag
.pubads()
.getSlots()
.forEach(e => {
runAuctionForSlot(e.getSlotElementId(), e.getSizes());
});
});
}
Skip to Content
COLUMBIA, Mo. (KMIZ)
There’s a reason why the term ‘fastest game on two feet’ has perfectly described the intensity of lacrosse – a sport that combines speed, physicality and strategy, all at once.
«It takes physicality from like hockey and football, its speed from soccer,» Rock Bridge attackman Dane Briley said.
His teammate, goalie Isaac Beary, added, «Physicality-wise and like athleticism, it definitely requires the same amount as like football. I’d say it’s like a mix of that and basketball.»Â
But, lacrosse is more than just a hard-hitting, fast-paced, physical game…it’s also a mental battle.
«I don’t think a lot of other sports have the same physicality, but also like intelligence required to play lacrosse,» Bruins midfielder Brady Lidolph said. «You’re you’re running over guys, you’re taking checks, but, at the same time, there’s a lot of technical aspects to it.»Â
It’s almost like perfecting a complicated recipe. It takes time and determination to get it right.
At Rock Bridge, that time and determination has begun shine through in the form of success in the 2026 season, under the direction of a first-year head coach.
During the offseason, coach Joe Barnett, a Biology teacher at Rock Bridge High School, decided to take the reins of a Bruin program that was searching for answers in how to become a playoff contender.
«He brought in this mindset that we were gonna be physical and we weren’t just gonna be pushed around anymore,» midfielder and attackman Noah Golden said.
Much like his players, Barnett’s love of the game came at a young age. He started playing lacrosse in sixth grade and fell in love with it immediately after picking up a stick. After playing in middle school and high school, he went on to play in a competitive club at the University of Wisconsin and even continued on with the game he loves after college.
«[I’ve] just always found community and it really is those connections and those experiences that made it meaningful. Obviously, the sport itself is fun, but it’s the whole package and all of the skills that I learned along the way. I felt like I would not be the same person if it weren’t for lacrosse and I want that for these guys,» Barnett said.
Coach Barnett took over a program with a lot of talented players, who hailed from all over Mid-Missouri. But, it was a group looking for a turnaround season, after going winless in conference play each of the last two years prior.
«I saw the need for community,» he said. «I saw the need for that camaraderie and to just to make things more systematic.»Â
For the Bruins, the work on changing that culture and building that community, started long before the season opener came. In fact, some of the most important work came off of the field.
«People showing up the offseason to having like genuine conversations with teammates and players about, you know, what’s important,» defenseman Trey Bornhauser said. «[What’s important is] not the statistics and the personal stuff, but more about just winning games, being a team.»Â
You can see the direct impact of all of that offseason work on the field and in the win-loss column.
Just one year removed from winning three games, Rock Bridge went 6-5 in league action in the 2026 season. That effort was enough to land Coach Barnett and his squad a spot in the postseason – a place that the guys on his roster have never been before.
«It’s an added layer of legitimacy,» Barnett said. «Success in sports is very psychological and so once people start believing that they can do something, then they do. If you don’t think you can do something, then you won’t. So, like getting the guys to go through something difficult and seeing that they can do it and believing that they believe that they can do it and then having other people say, hey, man, they’re doing something fun, they are successful. It’s a positive feedback mechanism. It builds on itself.»
Of course, Rock Bridge is hoping to extend its season and earn more games together, once playoff action begins. But this run is about way more than just the record – it’s also about a senior class that has helped build this club.
«Being able to finally experience one of those games, I think it gives us all some extra drive because it’s our first one. You know, the younger guys are doing it for the seniors, who’ve never been able to do this before. I think we’re just really hungry,» Lidolph said.
The Bruins’ playoff run will begin with a clash against Republic on Tuesday evening.
When asked about what the key to success in this postseason run will be, lots of players said confidence, team-work and grit. But, Barnett had another word.
«Consistency,» he said. «I think they believe that they’re talented. It’s about maintaining composure, maintaining focus. If you’re thinking about the glory or you’re thinking about, you know, the this or that and not locked in and, you know, engaged in the moment, then you’re done.»Â
But, at the end of the day, Rock Bridge only hopes this is just the beginning. Although lacrosse isn’t a MSHAAA sanctioned sport in Missouri, it is growing quickly and the guys on the 2026 roster and coaching staff look to see if flourish even more, in the years to come.
«I would like to see it become a sport and be able to get the funding from the school. I think that would draw out a lot more players because like a big thing for us is that, you know, we have to pay $600 a season and then we have to pay for our own equipment. You know, we get we have busses to some of the games, but other times, you know, parents have to drive and it makes a lot more obstacles for the team,» Golden said. «I think when once we get MSHSAA certified, it’ll really grow.»
Coach Barnett shared the same sentiments, adding, «I eventually would like to see it supported by the school systems and the, you know, the powers that be. Lacrosse is perceived as a as an expensive sport but I think football is expensive, baseball is expensive, soccer is expensive, basketball is expensive. Everything, every sport is expensive and I think they’re all worth it,» he said. «Now, more than ever, students are, you know, less physically active and so lacrosse is just that added avenue, that extra avenue and, you know, getting kids where we need them to be and because it’s a good for society. I really, truly believe that. I think it should be supported. So, I would say of all the things lacrosse should be supported like all the other sports.»
In the meantime, Rock Bridge will turn its attention to its highly anticipated clash against Republic in a well-deserved playoff berth.

Nathalie Jones
Nathalie anchors and reports sports for ABC17. She started working at the station in June 2020.
BE PART OF THE CONVERSATION
ABC 17 News is committed to providing a forum for civil and constructive conversation.
Please keep your comments respectful and relevant. You can review our Community Guidelines by clicking here
If you would like to share a story idea, please submit it here.






:fill(black)/2026/05/08/69fe128c99d68381412882.jpg)