1/* prebid.js v11.26.0-pre 2Updated: 2026-07-21 3Modules: rubiconBidAdapter, ixBidAdapter, oguryBidAdapter */ 4if (window.pbjs && window.pbjs.libLoaded) 5 try { 6 window.pbjs.getConfig("debug") && 7 console.warn( 8 "Attempted to load a copy of Prebid.js that clashes with the existing 'pbjs' instance. Load aborted.", 9 ); 10 } catch (e) {} 11else 12 ((function () { 13 (() => { 14 var e = { 15 8928(e, t, r) { 16 function n(e, t, r, n, o) { 17 for (t = t.split ? t.split(".") : t, n = 0; n < t.length; n++) 18 e = e ? e[t[n]] : o; 19 return e === o ? r : e; 20 } 21 r.d(t, { A: () => n }); 22 }, 23 5481(e) { 24 /* 25 * @license MIT 26 * Fun Hooks v1.1.0 27 * (c) @snapwich 28 */ 29 ((i.SYNC = 1), (i.ASYNC = 2), (i.QUEUE = 4)); 30 var t = "fun-hooks", 31 r = Object.freeze({ ready: 0 }), 32 n = new WeakMap(); 33 function o(e, t) { 34 return Array.prototype.slice.call(e, t); 35 } 36 function i(e) { 37 var c, 38 a = {}, 39 f = []; 40 function u(e, t) { 41 return "function" == typeof e 42 ? y.call(null, "sync", e, t) 43 : "string" == typeof e && "function" == typeof t 44 ? y.apply(null, arguments) 45 : "object" == typeof e 46 ? l.apply(null, arguments) 47 : void 0; 48 } 49 function l(e, t, r) { 50 var n = !0; 51 void 0 === t && 52 ((t = Object.getOwnPropertyNames(e).filter( 53 (e) => !e.match(/^_/), 54 )), 55 (n = !1)); 56 var o = {}, 57 i = ["constructor"]; 58 do { 59 (t.forEach(function (t) { 60 var n = t.match(/(?:(sync|async):)?(.+)/), 61 c = n[1] || "sync", 62 a = n[2]; 63 if ( 64 !o[a] && 65 "function" == typeof e[a] && 66 -1 === i.indexOf(a) 67 ) { 68 var f = e[a]; 69 o[a] = e[a] = y(c, f, r ? [r, a] : void 0); 70 } 71 }), 72 (e = Object.getPrototypeOf(e))); 73 } while (n && e); 74 return o; 75 } 76 function p(e) { 77 var r = Array.isArray(e) ? e : e.split("."); 78 return r.reduce(function (n, o, i) { 79 var a = n[o], 80 u = !1; 81 return ( 82 a || 83 (i === r.length - 1 84 ? (c || 85 f.push(function () { 86 u || 87 console.warn( 88 t + 89 ": referenced '" + 90 e + 91 "' but it was never created", 92 ); 93 }), 94 (n[o] = s(function (e) { 95 ((n[o] = e), (u = !0)); 96 }))) 97 : (n[o] = {})) 98 ); 99 }, a); 100 } 101 function s(e) { 102 var t = [], 103 r = [], 104 o = function () {}, 105 i = { 106 before: function (e, r) { 107 return a.call(this, t, "before", e, r); 108 }, 109 after: function (e, t) { 110 return a.call(this, r, "after", e, t); 111 }, 112 getHooks: function (e) { 113 var n = t.concat(r); 114 "object" == typeof e && 115 (n = n.filter(function (t) { 116 return Object.keys(e).every(function (r) { 117 return t[r] === e[r]; 118 }); 119 })); 120 try { 121 Object.assign(n, { 122 remove: function () { 123 return (
124 n.forEach(function (e) { 125 e.remove(); 126 }), 127 this 128 ); 129 }, 130 }); 131 } catch (e) { 132 console.error( 133 "error adding `remove` to array, did you modify Array.prototype?", 134 ); 135 } 136 return n; 137 }, 138 removeAll: function () { 139 return this.getHooks().remove(); 140 }, 141 }, 142 c = { 143 install: function (n, i, c) { 144 ((this.type = n), (o = c), c(t, r), e && e(i)); 145 }, 146 }; 147 return (n.set(i.after, c), i); 148 function a(e, n, i, c) { 149 var a = { 150 hook: i, 151 type: n, 152 priority: c || 10, 153 remove: function () { 154 var n = e.indexOf(a); 155 -1 !== n && (e.splice(n, 1), o(t, r)); 156 }, 157 }; 158 return ( 159 e.push(a), 160 e.sort(function (e, t) { 161 return t.priority - e.priority; 162 }), 163 o(t, r), 164 this 165 ); 166 } 167 } 168 function y(r, a, u) { 169 var l = a.after && n.get(a.after); 170 if (l) { 171 if (l.type !== r) 172 throw t + ": recreated hookable with different type"; 173 return a; 174 } 175 var y, 176 d = u ? p(u) : s(), 177 v = { 178 get: function (e, t) { 179 return d[t] || Reflect.get.apply(Reflect, arguments); 180 }, 181 }; 182 c || f.push(b); 183 var h = new Proxy(a, v); 184 return ( 185 n.get(h.after).install(r, h, function (e, t) { 186 var n, 187 i = []; 188 e.length || t.length 189 ? (e.forEach(c), 190 (n = i.push(void 0) - 1), 191 t.forEach(c), 192 (y = function (e, t, c) { 193 var a, 194 f = i.slice(), 195 u = 0, 196 l = 197 "async" === r && 198 "function" == typeof c[c.length - 1] && 199 c.pop(); 200 function p(e) { 201 "sync" === r 202 ? (a = e) 203 : l && l.apply(null, arguments); 204 } 205 function s(e) { 206 if (f[u]) { 207 var n = o(arguments); 208 return ( 209 (s.bail = p), 210 n.unshift(s), 211 f[u++].apply(t, n) 212 ); 213 } 214 "sync" === r 215 ? (a = e) 216 : l && l.apply(null, arguments); 217 } 218 return ( 219 (f[n] = function () { 220 var n = o(arguments, 1); 221 "async" === r && l && (delete s.bail, n.push(s)); 222 var i = e.apply(t, n); 223 "sync" === r && s(i); 224 }), 225 s.apply(null, c), 226 a 227 ); 228 })) 229 : (y = void 0); 230 function c(e) { 231 i.push(e.hook); 232 } 233 b(); 234 }), 235 h 236 ); 237 function b() { 238 !c && 239 ("sync" !== r || e.ready & i.SYNC) && 240 ("async" !== r || e.ready & i.ASYNC) 241 ? "sync" !== r && e.ready & i.QUEUE 242 ? (v.apply = function () { 243 var e = arguments; 244 f.push(function () { 245 h.apply(e[1], e[2]); 246 }); 247 }) 248 : (v.apply = function () { 249 throw t + ": hooked function not ready"; 250 }) 251 : (v.apply = y); 252 } 253 } 254 return ( 255 (e = Object.assign({}, r, e)).ready 256 ? (u.ready = function () { 257 ((c = !0), 258 (function (e) { 259 for (var t; (t = e.shift());) t(); 260 })(f)); 261 }) 262 : (c = !0), 263 (u.get = p), 264 u 265 ); 266 } 267 e.exports = i; 268 }, 269 3435(e, t, r) { 270 function n(e, t, r) { 271 t.split && (t = t.split(".")); 272 for ( 273 var n, o, i = 0, c = t.length, a = e; 274 i < c && 275 "__proto__" != (o = "" + t[i++]) && 276 "constructor" !== o && 277 "prototype" !== o; 278 ) 279 a = a[o] = 280 i === c 281 ? r 282 : typeof (n = a[o]) == typeof t 283 ? n 284 : 0 * t[i] != 0 || ~("" + t[i]).indexOf(".") 285 ? {} 286 : []; 287 } 288 r.d(t, { J: () => n }); 289 }, 290 1490(e, t, r) { 291 function n(e) { 292 var t, r, o; 293 if (Array.isArray(e)) { 294 for (r = Array((t = e.length)); t--;) 295 r[t] = (o = e[t]) && "object" == typeof o ? n(o) : o; 296 return r; 297 } 298 if ("[object Object]" === Object.prototype.toString.call(e)) { 299 for (t in ((r = {}), e)) 300 "__proto__" === t 301 ? Object.defineProperty(r, t, { 302 value: n(e[t]), 303 configurable: !0, 304 enumerable: !0, 305 writable: !0, 306 }) 307 : (r[t] = (o = e[t]) && "object" == typeof o ? n(o) : o); 308 return r; 309 } 310 return e; 311 } 312 r.d(t, { Q: () => n }); 313 }, 314 3715(e, t, r) { 315 r.d(t, [ 316 "A", 317 0, 318 { 319 pbGlobal: "pbjs", 320 defineGlobal: !0, 321 features: { 322 NATIVE: !0, 323 VIDEO: !0, 324 UID2_CSTG: !0, 325 GREEDY: !1, 326 AUDIO: !0, 327 LOG_NON_ERROR: !0, 328 LOG_ERROR: !0, 329 }, 330 distUrlBase: 331 "https://cdn.jsdelivr.net/npm/prebid.js@latest/dist/chunks/", 332 skipCalls: {}, 333 }, 334 ]); 335 }, 336 }; 337 const t = {}; 338 function r(n) { 339 const o = t[n]; 340 if (void 0 !== o) return o.exports; 341 const i = (t[n] = { exports: {} });
342 return (e[n](i, i.exports, r), i.exports); 343 } 344 ((r.m = e), 345 (() => { 346 const e = []; 347 r.O = (t, n, o, i) => { 348 if (n) { 349 i = i || 0; 350 for (var c = e.length; c > 0 && e[c - 1][2] > i; c--) 351 e[c] = e[c - 1]; 352 return void (e[c] = [n, o, i]); 353 } 354 let a = 1 / 0; 355 for (c = 0; c < e.length; c++) { 356 let [n, o, i] = e[c], 357 u = !0; 358 for (var f = 0; f < n.length; f++) 359 (!1 & i || a >= i) && 360 Object.keys(r.O).every((e) => r.O[e](n[f])) 361 ? n.splice(f--, 1) 362 : ((u = !1), i < a && (a = i)); 363 if (u) { 364 e.splice(c--, 1); 365 const r = o(); 366 void 0 !== r && (t = r); 367 } 368 } 369 return t; 370 }; 371 })(), 372 (r.n = (e) => { 373 const t = e && e.__esModule ? () => e.default : () => e; 374 return (r.d(t, { a: t }), t); 375 }), 376 (r.d = (e, t) => { 377 if (Array.isArray(t)) 378 for (var n = 0; n < t.length;) { 379 var o = t[n++], 380 i = t[n++]; 381 r.o(e, o) 382 ? 0 === i && n++ 383 : 0 === i 384 ? Object.defineProperty(e, o, { 385 enumerable: !0, 386 value: t[n++], 387 }) 388 : Object.defineProperty(e, o, { enumerable: !0, get: i }); 389 } 390 else 391 for (var o in t) 392 r.o(t, o) && 393 !r.o(e, o) && 394 Object.defineProperty(e, o, { enumerable: !0, get: t[o] }); 395 }), 396 (r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)), 397 (r.r = (e) => { 398 (Symbol.toStringTag && 399 Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), 400 Object.defineProperty(e, "__esModule", { value: !0 })); 401 }), 402 (() => { 403 const e = { 673: 0 }; 404 r.O.j = (t) => 0 === e[t]; 405 const t = (t, n) => { 406 let [o, i, c] = n; 407 var a, 408 f, 409 u = 0; 410 if (o.some((t) => 0 !== e[t])) { 411 for (a in i) r.o(i, a) && (r.m[a] = i[a]); 412 if (c) var l = c(r); 413 } 414 for (t && t(n); u < o.length; u++) 415 ((f = o[u]), r.o(e, f) && e[f] && e[f][0](), (e[f] = 0)); 416 return r.O(l); 417 }, 418 n = (self.pbjsChunk = self.pbjsChunk || []); 419 (n.forEach(t.bind(null, 0)), (n.push = t.bind(null, n.push.bind(n)))); 420 })()); 421 let n = r.O(void 0, [802, 769, 590, 85], () => r(7824)); 422 n = r.O(n); 423 })(); 424 (self.pbjsChunk = self.pbjsChunk || []).push([ 425 [802], 426 { 427 6901(e, t, n) { 428 n.d(t, { A4: () => s, J7: () => a, Pg: () => d }); 429 var r = n(8468), 430 i = n(7413); 431 const o = (0, n(1129).m)(); 432 function s(e) { 433 const { 434 url: t, 435 config: n, 436 id: s, 437 callback: a, 438 loaded: d, 439 adUnitCode: c, 440 renderNow: u, 441 } = e; 442 ((this.url = t), 443 (this.config = n), 444 (this.handlers = {}), 445 (this.id = s), 446 (this.renderNow = u), 447 (this.adUnitCode = c), 448 (this.loaded = d), 449 (this.cmd = []), 450 (this.push = (e) => { 451 "function" == typeof e 452 ? this.loaded 453 ? e.call() 454 : this.cmd.push(e) 455 : (0, i.vV)( 456 "Commands given to Renderer.push must be wrapped in a function", 457 ); 458 }), 459 (this.callback = 460 a || 461 (() => { 462 ((this.loaded = !0), this.process()); 463 })), 464 (this.render = function () { 465 const e = arguments, 466 n = () => { 467 this._render 468 ? this._render.apply(this, e) 469 : (0, i.JE)( 470 "No render function was provided, please use .setRender on the renderer", 471 ); 472 }; 473 !(function (e) { 474 const t = o.adUnits.find((t) => t.code === e); 475 if (!t) return !1; 476 const n = t?.renderer, 477 r = !!(n && n.url && n.render), 478 i = t?.mediaTypes?.video?.renderer, 479 s = !!(i && i.url && i.render); 480 return !!( 481 (r && !0 !== n.backupOnly) || 482 (s && !0 !== i.backupOnly) 483 ); 484 })(c) 485 ? u 486 ? n() 487 : (this.cmd.unshift(n), 488 (0, r.R)( 489 t, 490 "prebid", 491 "outstream", 492 this.callback, 493 this.documentContext, 494 )) 495 : ((0, i.JE)( 496 `External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${c}`, 497 ), 498 n()); 499 }.bind(this))); 500 } 501 function a(e) { 502 return !(!e || (!e.url && !e.renderNow)); 503 } 504 function d(e, t, n) { 505 let r = null; 506 (e.config && 507 e.config.documentResolver && 508 (r = e.config.documentResolver(t, document, n)), 509 r || (r = document), 510 (e.documentContext = r), 511 e.render(t, e.documentContext)); 512 } 513 ((s.install = function ({ 514 url: e, 515 config: t, 516 id: n, 517 callback: r, 518 loaded: i, 519 adUnitCode: o, 520 renderNow: a, 521 }) { 522 return new s({ 523 url: e, 524 config: t, 525 id: n, 526 callback: r, 527 loaded: i, 528 adUnitCode: o, 529 renderNow: a, 530 }); 531 }), 532 (s.prototype.getConfig = function () { 533 return this.config; 534 }), 535 (s.prototype.setRender = function (e) { 536 this._render = e; 537 }), 538 (s.prototype.setEventHandlers = function (e) { 539 this.handlers = e; 540 }), 541 (s.prototype.handleVideoEvent = function ({ id: e, eventName: t }) { 542 ("function" == typeof this.handlers[t] && this.handlers[t](), 543 (0, i.OG)(`Prebid Renderer event for id ${e} type ${t}`)); 544 }), 545 (s.prototype.process = function () { 546 for (; this.cmd.length > 0;) 547 try { 548 this.cmd.shift().call(); 549 } catch (e) { 550 (0, i.vV)( 551 `Error processing Renderer command on ad unit '${this.adUnitCode}':`, 552 e, 553 ); 554 } 555 })); 556 }, 557 323(e, t, n) { 558 n.d(t, [ 559 "DL", 560 0, 561 "transmitUfpd", 562 "Ml", 563 0, 564 "syncUser", 565 "Ue", 566 0, 567 "accessDevice", 568 "VJ", 569 0, 570 "transmitTid", 571 "hE", 572 0, 573 "transmitPreciseGeo", 574 "hq", 575 0, 576 "transmitEids", 577 "it", 578 0, 579 "acceptBid", 580 "jP", 581 0, 582 "loadExternalScript", 583 "mo", 584 0, 585 "reportAnalytics", 586 "uc", 587 0, 588 "fetchBids", 589 "yg", 590 0, 591 "accessRequestCredentials", 592 ]); 593 }, 594 5881(e, t, n) { 595 n.d(t, { s: () => i }); 596 var r = n(6001); 597 const i = (0, n(724).ZI)((e) => r.Ay.resolveAlias(e)); 598 }, 599 724(e, t, n) { 600 n.d(t, { ZI: () => d }); 601 var r = n(1785); 602 const i = "component", 603 o = i + "Type", 604 s = i + "Name", 605 a = "adapterCode"; 606 function d(e) { 607 return function (t, n, r) { 608 const d = { [o]: t, [s]: n, [i]: `${t}.${n}` }; 609 return ("bidder" === t && (d[a] = e(n)), c(Object.assign(d, r))); 610 }; 611 } 612 const c = (0, r.A_)("sync", (e) => e); 613 n.d(t, [ 614 "Dk", 615 0, 616 o, 617 "Ez", 618 0, 619 "storageKey", 620 "Ii", 621 0, 622 i, 623 "TQ", 624 0, 625 "_config", 626 "XG", 627 0, 628 "configName", 629 "Zw", 630 0, 631 "storageType", 632 "bt", 633 0, 634 "syncType", 635 "e3", 636 0, 637 "syncUrl", 638 "iK", 639 0, 640 s, 641 "q7", 642 0, 643 a, 644 ]); 645 }, 646 4283(e, t, n) { 647 var r = n(7413), 648 i = n(724); 649 const [o, s] = (function (e = (0, r.h0)("Activity control:")) { 650 const t = {}; 651 function n(e) { 652 return ((t[e] = t[e] || []), t[e]); 653 } 654 function o(t, n, r, o) { 655 let s; 656 try { 657 s = r(o); 658 } catch (r) { 659 (e.logError(`Exception in rule ${n} for '${t}'`, r), 660 (s = { allow: !1, reason: r })); 661 } 662 return ( 663 s && 664 Object.assign({ activity: t, name: n, component: o[i.Ii] }, s) 665 ); 666 } 667 const s = {}; 668 function a({ 669 activity: t, 670 name: n, 671 allow: r, 672 reason: i, 673 component: o, 674 }) { 675 const a = `${n} ${r ? "allowed" : "denied"} '${t}' for '${o}'${i ? ":" : ""}`, 676 d = s.hasOwnProperty(a); 677 if ( 678 (d && clearTimeout(s[a]), 679 (s[a] = setTimeout(() => delete s[a], 1e3)), 680 !d) 681 ) { 682 const t = [a]; 683 (i && t.push(i), (r ? e.logInfo : e.logWarn).apply(e, t)); 684 } 685 } 686 return [ 687 function (e, t, r, i = 10) { 688 const o = n(e), 689 s = o.findIndex(([e]) => i < e), 690 a = [i, t, r]; 691 return ( 692 o.splice(s < 0 ? o.length : s, 0, a), 693 function () { 694 const e = o.indexOf(a); 695 e >= 0 && o.splice(e, 1); 696 } 697 ); 698 }, 699 function (e, t) { 700 let r, i; 701 for (const [s, d, c] of n(e)) { 702 if (r !== s && i) break; 703 r = s; 704 const n = o(e, d, c, t); 705 if (n) { 706 if (!n.allow) return (a(n), !1); 707 i = n; 708 } 709 } 710 return (i && a(i), !0); 711 }, 712 ]; 713 })(); 714 n.d(t, ["io", 0, s, "qB", 0, o]); 715 }, 716 5595(e, t, n) { 717 n.d(t, { 718 BS: () => M, 719 Hd: () => F, 720 Hh: () => q, 721 Pk: () => N, 722 Uc: () => B, 723 XO: () => G, 724 bw: () => $, 725 n6: () => I, 726 qn: () => _, 727 vB: () => P, 728 vW: () => S, 729 vd: () => k, 730 }); 731 var r = n(7413), 732 i = n(3399), 733 o = n(5521), 734 s = n(8384), 735 a = n(6901), 736 d = n(6825), 737 c = n(3895), 738 u = n(1785), 739 l = n(5657), 740 f = n(6001), 741 p = n(2822), 742 g = n(2247), 743 m = n(8693), 744 h = n(2859), 745 b = n(8203); 746 const { 747 AD_RENDER_FAILED: y, 748 AD_RENDER_SUCCEEDED: v, 749 STALE_RENDER: E, 750 BID_WON: w, 751 EXPIRED_RENDER: A, 752 } = o.qY, 753 { EXCEPTION: T } = o.as, 754 I = (0, u.A_)("sync", function (e) { 755 (((0, m.$)(e.eventtrackers)[500]?.[1] || []).forEac
755h((e) => 756 (0, r.z$)(e), 757 ), 758 i.Ic(w, e), 759 d.n.addWinningBid(e)); 760 }); 761 function C({ reason: e, message: t, bid: n, id: o }) { 762 const s = { reason: e, message: t }; 763 (n && ((s.bid = n), (s.adId = n.adId)), 764 o && (s.adId = o), 765 (0, r.vV)(`Error rendering ad (id: ${o}): ${t}`), 766 i.Ic(y, s)); 767 } 768 function O({ doc: e, bid: t, id: n }) { 769 const r = { doc: e, bid: t, adId: n }; 770 (f.Ay.callAdRenderSucceededBidder(t.adapterCode || t.bidder, t), 771 i.Ic(v, r)); 772 } 773 function B(e, t) { 774 switch (e.event) { 775 case o.qY.AD_RENDER_FAILED: 776 C({ 777 bid: t, 778 id: t.adId, 779 reason: e.info.reason, 780 message: e.info.message, 781 }); 782 break; 783 case o.qY.AD_RENDER_SUCCEEDED: 784 O({ doc: null, bid: t, id: t.adId }); 785 break; 786 case o.qY.BROWSER_INTERVENTION: 787 !(function (e) { 788 const { bid: t, intervention: n } = e; 789 (f.Ay.callOnInterventionBidder( 790 t.adapterCode || t.bidder, 791 t, 792 n, 793 ), 794 i.Ic(o.qY.BROWSER_INTERVENTION, e)); 795 })({ bid: t, adId: t.adId, intervention: e.intervention }); 796 break; 797 default: 798 (0, r.vV)( 799 `Received event request for unsupported event: '${e.event}' (adId: '${t.adId}')`, 800 ); 801 } 802 } 803 function S(e, t, { resizeFn: n, fireTrackers: r = l.vO }) { 804 if ("resizeNativeHeight" === e.action) n(e.width, e.height); 805 else r(e, t); 806 } 807 const R = { [o.nl.EVENT]: B }; 808 R[o.nl.NATIVE] = S; 809 const k = (0, u.A_)("sync", function (e, t) { 810 const { ad: n, adUrl: r, width: i, height: o, instl: s } = U(e, t); 811 return { ad: n, adUrl: r, width: i, height: o, instl: s }; 812 }); 813 function U(e, t) { 814 const { 815 ad: n, 816 adUrl: i, 817 cpm: o, 818 originalCpm: s, 819 safeRenderer: a, 820 } = e, 821 d = { AUCTION_PRICE: s || o, CLICKTHROUGH: t?.clickUrl || "" }, 822 c = { ...e, ad: (0, r.gM)(n, d), adUrl: (0, r.gM)(i, d) }; 823 return ( 824 a && 825 (c.safeRenderer = { 826 ...a, 827 config: 828 "function" == typeof a?.getConfig 829 ? a.getConfig(e) 830 : a?.config, 831 }), 832 c 833 ); 834 } 835 const D = (0, u.A_)( 836 "sync", 837 function ({ 838 renderFn: e, 839 resizeFn: t, 840 bidResponse: n, 841 options: i, 842 doc: s, 843 isMainDocument: a = s === document && !(0, r.al)(), 844 }) { 845 const d = F(n), 846 c = "video" === n.mediaType; 847 if ((a || c) && !d?.url) 848 return void C({ 849 reason: o.as.PREVENT_WRITING_ON_MAIN_DOCUMENT, 850 message: c 851 ? "Cannot render video ad without a renderer" 852 : "renderAd was prevented from writing to the main document.", 853 bid: n, 854 id: n.adId, 855 }); 856 const u = (function (e, t, n) { 857 if (n) { 858 const { 859 ad: n, 860 adUrl: r, 861 width: i, 862 height: o, 863 instl: s, 864 vastXml: a, 865 vastUrl: d, 866 mediaType: c, 867 safeRenderer: u, 868 } = U(e, t); 869 return { 870 ad: n, 871 adUrl: r, 872 width: i, 873 height: o, 874 instl: s, 875 vastXml: a, 876 vastUrl: d, 877 mediaType: c, 878 safeRenderer: u, 879 }; 880 } 881 return k(e, t); 882 })(n, i, d); 883 e(Object.assign({ adId: n.adId }, u)); 884 const { width: l, height: f } = u; 885 null != (l ?? f) && t(l, f); 886 }, 887 ); 888 function $({ 889 renderFn: e, 890 resizeFn: t, 891 adId: n, 892 options: a, 893 bidResponse: d, 894 doc: c, 895 }) { 896 q(d, () => { 897 if (null != d) { 898 if ( 899 (d.status !== o.tl.RENDERED || 900 ((0, r.JE)(`Ad id ${n} has been rendered before`), 901 i.Ic(E, d), 902 !s.$.getConfig("auctionOptions")?.suppressStaleRender)) && 903 (g.Z.isBidNotExpired(d) || 904 ((0, r.JE)(`Ad id ${n} has been expired`), 905 i.Ic(A, d), 906 !s.$.getConfig("auctionOptions")?.suppressExpiredRender)) 907 ) 908 try { 909 D({ 910 renderFn: e, 911 resizeFn: t, 912 bidResponse: d, 913 options: a, 914 doc: c, 915 }); 916 } catch (e) { 917 C({ 918 reason: o.as.EXCEPTION, 919 message: e.message, 920 id: n, 921 bid: d, 922 }); 923 } 924 } else 925 C({ 926 reason: o.as.CANNOT_FIND_AD, 927 message: `Cannot find ad '${n}'`, 928 id: n, 929 }); 930 }); 931 } 932 function _(e) { 933 const t = (0, p.BO)(e.metrics); 934 (t.checkpoint("bidRender"), 935 t.timeBetween("bidWon", "bidRender", "render.deferred"), 936 t.timeBetween("auctionEnd", "bidRender", "render.pending"), 937 t.timeBetween("requestBids", "bidRender", "render.e2e"), 938 (e.status = o.tl.RENDERED)); 939 } 940 D.before(function (e, t) { 941 const { bidResponse: n, doc: r } = t; 942 (0, a.J7)(n.renderer) && !F(n) 943 ? ((0, a.Pg)(n.renderer, n, r), 944 O({ doc: r, bid: n, id: n.adId }), 945 e.bail()) 946 : e(t); 947 }, 100); 948 const j = new WeakMap(), 949 x = new WeakSet(); 950 function q(e, t) { 951 null != e ? (j.set(e, t), e.deferRendering || P(e), N(e)) : t(); 952 } 953 function N(e) { 954 x.has(e) || (x.add(e), I(e)); 955 } 956 function P(e) { 957 const t = j.get(e); 958 t && (t(), _(e), j.delete(e)); 959 } 960 let V = !1; 961 s.$.getConfig("auctionOptions", (e) => { 962 V = e.auctionOptions?.legacyRender ?? !1; 963 }); 964 const M = (0, h.o1)( 965 () => !V, 966 function (e, t, n) { 967 let i; 968 function s(e, n) { 969 C(Object.assign({ id: t, bid: i }, { reason: e, message: n })); 970 } 971 function a(t, n) { 972 const r = e.defaultView?.frameElement; 973 r && 974 (t && 975 ((r.width = t), 976 r.style.width && (r.style.width = `${t}px`)), 977 n && 978 ((r.height = n), 979 r.style.height && (r.style.height = `${n}px`))); 980 } 981 const u = 982 ((l = { resizeFn: a }), 983 function (e, t, n) { 984 R.hasOwnProperty(e) && R[e](t, n, l); 985 }); 986 var l; 987 function f(e) { 988 return new b.U9((t) => { 989 "loading" === e.readyState 990 ? e.addEventListener("DOMContentLoaded", t) 991 : t(); 992 }); 993 } 994 try { 995 t && e 996 ? ((i = d.n.findBidByAdId(t)), 997 $({ 998 renderFn: function (t) { 999 t.ad && V 1000 ? (e.write(t.ad), 1001 e.close(), 1002 O({ doc: e, bid: i, id: i.adId })) 1003 : b.U9.all([(0, c.HH)(i), f(e)]) 1004 .then(([n]) => 1005 n( 1006 t, 1007 { 1008 sendMessage: (e, t) => u(e, t, i), 1009 mkFrame: r.hw, 1010 }, 1011 e.defaultView, 1012 ), 1013 ) 1014 .then( 1015 () => O({ doc: e, bid: i, id: i.adId }), 1016 (e) => { 1017 (s(e?.reason || o.as.EXCEPTION, e?.message), 1018 e?.stack && (0, r.vV)(e)); 1019 }, 1020 ); 1021 const n = document.createComment( 1022 `Creative ${i.creativeId} served by ${i.bidder} Prebid.js Header Bidding`, 1023 ); 1024 (0, r._s)(n, e, "html"); 1025 }, 1026 resizeFn: a, 1027 adId: t, 1028 options: { clickUrl: n?.clickThrough }, 1029 bidResponse: i, 1030 doc: e, 1031 })) 1032 : s( 1033 o.as.MISSING_DOC_OR_ADID, 1034 "missing " + (t ? "doc" : "adId"), 1035 ); 1036 } catch (e) { 1037 s(T, e.message); 1038 } 1039 }, 1040 ); 1041 function G() { 1042 if (!window.frames[o.IY]) 1043 if (document.body) { 1044 const e = (0, r.CA)(); 1045 ((e.name = o.IY), document.body.appendChild(e)); 1046 } else window.requestAnimationFrame(G); 1047 } 1048 function F(e) { 1049 return e.safeRenderer; 1050 } 1051 }, 1052 6001(e, t, n) { 1053 n.d(t, { sc: () => te, Ay: () => ge, pX: () => ae }); 1054 var r = n(3350), 1055 i = n(7413), 1056 o = n(5657), 1057 s = n(2682), 1058 a = n(8964), 1059 d = n(8384), 1060 c = n(1785); 1061 const u = "requests", 1062 l = "wins", 1063 f = "auctions"; 1064 let p = {}; 1065 function g(e, t) { 1066 const n = (p[e] = p[e] || { bidders: {} });
1067 return t ? ((n.bidders[t] = n.bidders[t] || {}), n.bidders[t]) : n; 1068 } 1069 function m(e, t) { 1070 return function (n, r) { 1071 const i = g(n, t && r); 1072 return ((i[e] = (i[e] ?? 0) + 1), i[e]); 1073 }; 1074 } 1075 function h(e, t) { 1076 return function (n, r) { 1077 return g(n, t && r)[e] ?? 0; 1078 }; 1079 } 1080 const b = m(u, !1), 1081 y = m(u, !0), 1082 v = m(l, !0), 1083 E = m(f, !1), 1084 w = h(u, !1), 1085 A = h(u, !0), 1086 T = h(l, !0), 1087 I = h(f, !1); 1088 var C = n(7686), 1089 O = n(1068), 1090 B = n(3399), 1091 S = n(5521), 1092 R = n(2822), 1093 k = n(6825); 1094 const U = "analytics"; 1095 var D = n(4283), 1096 $ = n(323), 1097 _ = n(724), 1098 j = n(8928); 1099 const x = [ 1100 "data", 1101 "ext.data", 1102 "yob", 1103 "gender", 1104 "keywords", 1105 "kwarray", 1106 "id", 1107 "buyeruid", 1108 "customdata", 1109 ] 1110 .map((e) => `user.${e}`) 1111 .concat("device.ifa"), 1112 q = ["user.eids", "user.ext.eids"], 1113 N = [ 1114 "user.geo.lat", 1115 "user.geo.lon", 1116 "device.geo.lat", 1117 "device.geo.lon", 1118 ], 1119 P = ["device.ip"], 1120 V = ["device.ipv6"]; 1121 function M(e) { 1122 return Object.assign( 1123 { 1124 get() {}, 1125 run(e, t, n, r, i) { 1126 const o = n && n[r]; 1127 if ( 1128 (function (e) { 1129 return ( 1130 null != e && 1131 ("object" != typeof e || Object.keys(e).length > 0) 1132 ); 1133 })(o) && 1134 i() 1135 ) { 1136 const e = this.get(o); 1137 void 0 === e ? delete n[r] : (n[r] = e); 1138 } 1139 }, 1140 }, 1141 e, 1142 ); 1143 } 1144 function G(e) { 1145 return ( 1146 e.forEach((e) => { 1147 e.paths = e.paths.map((e) => { 1148 const t = e.split("."), 1149 n = t.pop(); 1150 return [t.length > 0 ? t.join(".") : null, n]; 1151 }); 1152 }), 1153 function (t, n, ...r) { 1154 const i = [], 1155 o = (function (e, ...t) { 1156 return function (n) { 1157 return ( 1158 e.hasOwnProperty(n.name) || 1159 (e[n.name] = !!n.applies(...t)), 1160 e[n.name] 1161 ); 1162 }; 1163 })(t, ...r); 1164 return ( 1165 e.forEach((e) => { 1166 if (!1 !== t[e.name]) 1167 for (const [r, s] of e.paths) { 1168 const a = null == r ? n : (0, j.A)(n, r); 1169 if ( 1170 (i.push(e.run(n, r, a, s, o.bind(null, e))), 1171 !1 === t[e.name]) 1172 ) 1173 return; 1174 } 1175 }), 1176 i.filter((e) => null != e) 1177 ); 1178 } 1179 ); 1180 } 1181 function F(e, t = D.io) { 1182 return function (n) { 1183 return !t(e, n); 1184 }; 1185 } 1186 function W(e = D.io) { 1187 return [ 1188 { name: $.DL, paths: x, applies: F($.DL, e) }, 1189 { name: $.hq, paths: q, applies: F($.hq, e) }, 1190 { 1191 name: $.hE, 1192 paths: N, 1193 applies: F($.hE, e), 1194 get: (e) => Math.round(100 * (e + Number.EPSILON)) / 100, 1195 }, 1196 { 1197 name: $.hE, 1198 paths: P, 1199 applies: F($.hE, e), 1200 get: (e) => 1201 (function (e) { 1202 if (!e) return null; 1203 const t = e.split(".").map(Number); 1204 if (4 !== t.length) return null; 1205 const n = []; 1206 for (let e = 0; e < 4; e++) { 1207 const t = Math.max(0, Math.min(8, 24 - 8 * e)); 1208 n.push((255 << (8 - t)) & 255); 1209 } 1210 return t.map((e, t) => e & n[t]).join("."); 1211 })(e), 1212 }, 1213 { 1214 name: $.hE, 1215 paths: V, 1216 applies: F($.hE, e), 1217 get: (e) => 1218 (function (e) { 1219 if (!e) return null; 1220 let t = e.split(":").map((e) => parseInt(e, 16)); 1221 for (t = t.map((e) => (isNaN(e) ? 0 : e)); t.length < 8;) 1222 t.push(0); 1223 if (8 !== t.length) return null; 1224 const n = []; 1225 for (let e = 0; e < 8; e++) { 1226 const t = Math.max(0, Math.min(16, 64 - 16 * e)); 1227 n.push((65535 << (16 - t)) & 65535); 1228 } 1229 return t 1230 .map((e, t) => e & n[t]) 1231 .map((e) => e.toString(16)) 1232 .join(":"); 1233 })(e), 1234 }, 1235 { 1236 name: $.VJ, 1237 paths: ["source.tid", "source.ext.tidSource"], 1238 applies: F($.VJ, e), 1239 }, 1240 ].map(M); 1241 } 1242 const L = (function (e = D.io) { 1243 const t = G(W(e)), 1244 n = G( 1245 (function (e = D.io) { 1246 return [ 1247 { 1248 name: $.hq, 1249 paths: ["userId", "userIdAsEids"], 1250 applies: F($.hq, e), 1251 }, 1252 { 1253 name: $.VJ, 1254 paths: ["ortb2Imp.ext.tid", "ortb2Imp.ext.tidSource"], 1255 applies: F($.VJ, e), 1256 }, 1257 ].map(M); 1258 })(e), 1259 ); 1260 return function (e) { 1261 const r = {}; 1262 return { 1263 ortb2: (n) => (t(r, n, e), n), 1264 bidRequest: (t) => (n(r, t, e), t), 1265 }; 1266 }; 1267 })(); 1268 (0, D.qB)($.VJ, "enableTIDs config", () => { 1269 if (!d.$.getConfig("enableTIDs")) 1270 return { allow: !1, reason: "TIDs are disabled" }; 1271 }); 1272 var z = n(8693), 1273 J = n(1129); 1274 const H = "pbsBidAdapter", 1275 Q = { CLIENT: "client", SERVER: "server" }, 1276 K = { isAllowed: D.io, redact: L }, 1277 Y = {}, 1278 X = {}, 1279 Z = {}; 1280 let ee = []; 1281 d.$.getConfig("s2sConfig", (e) => { 1282 e && 1283 e.s2sConfig && 1284 (ee = (0, r.cy)(e.s2sConfig) ? e.s2sConfig : [e.s2sConfig]); 1285 }); 1286 const te = (0, _.ZI)((e) => ue.resolveAlias(e)); 1287 function ne(e) { 1288 return e.configName ?? e.name; 1289 } 1290 const re = [ 1291 "nativeParams", 1292 "nativeOrtbRequest", 1293 "renderer", 1294 "element", 1295 ]; 1296 function ie({ 1297 bidderCode: e, 1298 auctionId: t, 1299 bidderRequestId: n, 1300 adUnits: o, 1301 src: s, 1302 metrics: a, 1303 getTid: d, 1304 }) { 1305 return o 1306 .reduce((o, c) => { 1307 const u = c.bids.filter((t) => t.bidder === e); 1308 return ( 1309 null == e && 1310 0 === u.length && 1311 null != c.s2sBid && 1312 u.push({ bidder: null }), 1313 o.push( 1314 u.reduce((o, u) => { 1315 const [l, f] = d( 1316 u.bidder, 1317 c.transactionId, 1318 u.ortb2Imp?.ext?.tid ?? c.ortb2Imp?.ext?.tid, 1319 ), 1320 p = 1321 null == 1322 (u = Object.assign( 1323 {}, 1324 u, 1325 { 1326 ortb2Imp: (0, i.D9)({}, c.ortb2Imp, u.ortb2Imp, { 1327 ext: { tid: l, tidSource: f }, 1328 }), 1329 }, 1330 (0, r.SH)(c, re), 1331 )).mediaTypes 1332 ? c.mediaTypes 1333 : u.mediaTypes; 1334 return ( 1335 (0, i.wD)(p) 1336 ? (u = Object.assign({}, u, { mediaTypes: p })) 1337 : (0, i.vV)( 1338 `mediaTypes is not correctly configured for adunit ${c.code}`, 1339 ), 1340 "client" === s && y(c.code, e), 1341 o.push( 1342 Object.assign({}, u, { 1343 adUnitCode: c.code, 1344 transactionId: c.transactionId, 1345 adUnitId: c.adUnitId, 1346 sizes: 1347 p?.banner?.sizes || p?.video?.playerSize || [], 1348 bidId: u.bid_id || (0, i.lk)(), 1349 bidderRequestId: n, 1350 auctionId: t, 1351 src: s, 1352 metrics: a, 1353 auctionsCount: I(c.code), 1354 bidRequestsCount: w(c.code),
1355 bidderRequestsCount: A(c.code, u.bidder), 1356 bidderWinsCount: T(c.code, u.bidder), 1357 deferBilling: !!c.deferBilling, 1358 }), 1359 ), 1360 o 1361 ); 1362 }, []), 1363 ), 1364 o 1365 ); 1366 }, []) 1367 .reduce(i.Bq, []) 1368 .filter((e) => "" !== e); 1369 } 1370 const oe = (0, c.A_)( 1371 "sync", 1372 function (e, t, { getS2SBidders: n = ae } = {}) { 1373 if (null == t) return e; 1374 { 1375 const r = n(t); 1376 return e.filter((e) => { 1377 if (!r.has(e.bidder)) return !1; 1378 if (null == e.s2sConfigName) return !0; 1379 const n = ne(t); 1380 return ( 1381 Array.isArray(e.s2sConfigName) 1382 ? e.s2sConfigName 1383 : [e.s2sConfigName] 1384 ).includes(n); 1385 }); 1386 } 1387 }, 1388 "filterBidsForAdUnit", 1389 ); 1390 const se = (0, c.A_)("sync", (e, t) => e, "setupAdUnitMediaTypes"); 1391 function ae(e) { 1392 (0, r.cy)(e) || (e = [e]); 1393 const t = new Set([null]); 1394 return ( 1395 e 1396 .filter((e) => e && e.enabled) 1397 .flatMap((e) => e.bidders) 1398 .forEach((e) => t.add(e)), 1399 t 1400 ); 1401 } 1402 const de = (0, c.A_)( 1403 "sync", 1404 function (e, t, { getS2SBidders: n = ae } = {}) { 1405 const r = n(t); 1406 return (0, i.ZA)(e).reduce( 1407 (e, t) => (e[r.has(t) ? Q.SERVER : Q.CLIENT].push(t), e), 1408 { [Q.CLIENT]: [], [Q.SERVER]: [] }, 1409 ); 1410 }, 1411 "partitionBidders", 1412 ); 1413 function ce(e) { 1414 return K.isAllowed($.mo, te(U, e.provider, { [_.TQ]: e })); 1415 } 1416 const ue = { 1417 bidderRegistry: Y, 1418 analyticsRegistry: Z, 1419 aliasRegistry: X, 1420 makeBidRequests: (0, c.A_)( 1421 "sync", 1422 function (e, t, n, s, a, c = {}, u) { 1423 ((u = (0, R.BO)(u)), 1424 B.Ic(S.qY.BEFORE_REQUEST_BIDS, e), 1425 (0, o.nk)(e), 1426 e 1427 .map((e) => e.code) 1428 .filter(i.hj) 1429 .forEach(E)); 1430 const l = c.global || {}, 1431 f = c.bidder || {}, 1432 p = (function () { 1433 let e, t; 1434 return ( 1435 d.$.getConfig("consistentTIDs") 1436 ? ((e = "pbjsStable"), (t = (e) => e)) 1437 : ((e = "pbjs"), 1438 (t = (() => { 1439 const e = {}; 1440 return (t, n) => ( 1441 e.hasOwnProperty(n) || (e[n] = {}), 1442 e[n].hasOwnProperty(t) || 1443 (e[n][t] = `u${(0, i.lk)()}`), 1444 e[n][t] 1445 ); 1446 })())), 1447 function (n, r, i) { 1448 return [i ?? t(r, n), null != i ? "pub" : e]; 1449 } 1450 ); 1451 })(), 1452 g = (() => { 1453 const e = {}; 1454 return function (t, n, r) { 1455 const o = ((e, t) => { 1456 const n = null != t ? t[_.XG] : ""; 1457 return n ? `${e}:${n}` : `${e}:`; 1458 })(n, r), 1459 s = K.redact(null != r ? r : te("bidder", n)); 1460 if (void 0 !== e[o]) return [e[o], s]; 1461 const [a, d] = p( 1462 n, 1463 t, 1464 f[n]?.source?.tid ?? l.source?.tid, 1465 ), 1466 c = Object.freeze( 1467 s.ortb2( 1468 (0, i.D9)({}, l, f[n], { 1469 source: { tid: a, ext: { tidSource: d } }, 1470 }), 1471 ), 1472 ); 1473 return ((e[o] = c), [c, s]); 1474 }; 1475 })(); 1476 let { [Q.CLIENT]: m, [Q.SERVER]: h } = de(e, ee); 1477 const y = new Set(); 1478 (e.forEach((e) => { 1479 ((0, r.Qd)(e.mediaTypes) || (e.mediaTypes = {}), 1480 (e.bids = e.bids.filter((t) => { 1481 if (!t.bidder) return !0; 1482 const [r] = g(n, t.bidder), 1483 i = h.includes(t.bidder) && !m.includes(t.bidder); 1484 return K.isAllowed( 1485 $.uc, 1486 te("bidder", t.bidder, { 1487 bid: t, 1488 ortb2: r, 1489 adUnit: e, 1490 auctionId: n, 1491 isS2S: i, 1492 }), 1493 ); 1494 })), 1495 e.bids.forEach((e) => { 1496 y.add(e.bidder); 1497 }), 1498 b(e.code)); 1499 }), 1500 (m = m.filter((e) => y.has(e))), 1501 (h = h.filter((e) => y.has(e))), 1502 (e = se(e, a)), 1503 "random" === d.$.getConfig("bidderSequence") && 1504 (m = (0, i.k4)(m))); 1505 const v = (0, C.EN)(), 1506 w = []; 1507 function A(e, t) { 1508 const [n, r] = g(e.auctionId, e.bidderCode, t); 1509 return ( 1510 (e.ortb2 = n), 1511 (e.bids = e.bids.map( 1512 (e) => ((e.ortb2 = n), r.bidRequest(e)), 1513 )), 1514 e 1515 ); 1516 } 1517 const T = (0, J.m)(); 1518 function I(e) { 1519 return ( 1520 T.pageViewIdPerBidder.has(e) || 1521 T.pageViewIdPerBidder.set(e, (0, i.lk)()), 1522 T.pageViewIdPerBidder.get(e) 1523 ); 1524 } 1525 ee.forEach((o) => { 1526 const s = (function (e) { 1527 return te("prebid", H, { [_.XG]: ne(e) }); 1528 })(o); 1529 if (o && o.enabled && K.isAllowed($.uc, s)) { 1530 const { adUnits: a, hasModuleBids: d } = (function (e, t) { 1531 let n = (0, r.Go)(e), 1532 o = !1; 1533 return (
1534 n.forEach((e) => { 1535 const n = e.bids.filter( 1536 (e) => 1537 e.module === H && 1538 e.params?.configName === ne(t), 1539 ); 1540 (1 === n.length 1541 ? ((e.s2sBid = n[0]), 1542 (o = !0), 1543 (e.ortb2Imp = (0, i.D9)( 1544 {}, 1545 e.s2sBid.ortb2Imp, 1546 e.ortb2Imp, 1547 ))) 1548 : n.length > 1 && 1549 (0, i.JE)( 1550 'Multiple "module" bids for the same s2s configuration; all will be ignored', 1551 n, 1552 ), 1553 (e.bids = oe(e.bids, t).map( 1554 (e) => ((e.bid_id = (0, i.s0)()), e), 1555 ))); 1556 }), 1557 (n = n.filter( 1558 (e) => 1559 !( 1560 (t.filterBidderlessCalls && 1561 1 === e.bids.length && 1562 null == e.bids[0].bidder) || 1563 (0 === e.bids.length && null == e.s2sBid) 1564 ), 1565 )), 1566 { adUnits: n, hasModuleBids: o } 1567 ); 1568 })(e, o), 1569 c = (0, i.lk)(); 1570 ((0 === h.length && d ? [null] : h).forEach((e) => { 1571 const d = (0, i.lk)(), 1572 l = I(e), 1573 f = u.fork(), 1574 g = A( 1575 { 1576 bidderCode: e, 1577 auctionId: n, 1578 bidderRequestId: d, 1579 pageViewId: l, 1580 uniquePbsTid: c, 1581 bids: ie({ 1582 bidderCode: e, 1583 auctionId: n, 1584 bidderRequestId: d, 1585 adUnits: (0, r.Go)(a), 1586 src: S.RW.SRC, 1587 metrics: f, 1588 getTid: p, 1589 }), 1590 auctionStart: t, 1591 timeout: o.timeout, 1592 src: S.RW.SRC, 1593 refererInfo: v, 1594 metrics: f, 1595 alwaysHasCapacity: o.alwaysHasCapacity, 1596 }, 1597 s, 1598 ); 1599 0 !== g.bids.length && w.push(g); 1600 }), 1601 a.forEach((e) => { 1602 const t = e.bids.filter((e) => 1603 w.find((t) => 1604 t.bids.find((t) => t.bidId === e.bid_id), 1605 ), 1606 ); 1607 e.bids = t; 1608 }), 1609 w.forEach((e) => { 1610 void 0 === e.adUnitsS2SCopy && 1611 (e.adUnitsS2SCopy = a.filter( 1612 (e) => e.bids.length > 0 || null != e.s2sBid, 1613 )); 1614 })); 1615 } 1616 }); 1617 const k = (function (e) { 1618 let t = (0, r.Go)(e); 1619 return ( 1620 t.forEach((e) => { 1621 e.bids = oe(e.bids, null); 1622 }), 1623 (t = t.filter((e) => 0 !== e.bids.length)), 1624 t 1625 ); 1626 })(e); 1627 return ( 1628 m.forEach((e) => {
1629 const o = (0, i.lk)(), 1630 a = I(e), 1631 d = u.fork(), 1632 c = Y[e], 1633 l = A({ 1634 bidderCode: e, 1635 auctionId: n, 1636 pageViewId: a, 1637 bidderRequestId: o, 1638 bids: ie({ 1639 bidderCode: e, 1640 auctionId: n, 1641 bidderRequestId: o, 1642 adUnits: (0, r.Go)(k), 1643 src: "client", 1644 metrics: d, 1645 getTid: p, 1646 }), 1647 auctionStart: t, 1648 timeout: s, 1649 refererInfo: v, 1650 metrics: d, 1651 src: "client", 1652 alwaysHasCapacity: c?.getSpec?.().alwaysHasCapacity, 1653 }); 1654 (c || 1655 (0, i.vV)( 1656 `Trying to make a request for bidder that does not exist: ${e}`, 1657 ), 1658 c && l.bids && 0 !== l.bids.length && w.push(l)); 1659 }), 1660 w.forEach((e) => { 1661 (O.mW.getConsentData() && 1662 (e.gdprConsent = O.mW.getConsentData()), 1663 O.t6.getConsentData() && 1664 (e.uspConsent = O.t6.getConsentData()), 1665 O.ad.getConsentData() && 1666 (e.gppConsent = O.ad.getConsentData())); 1667 }), 1668 w 1669 ); 1670 }, 1671 "makeBidRequests", 1672 ), 1673 callBids(e, t, n, r, o, s, c, u = {}) { 1674 if (!t.length) 1675 return void (0, i.JE)( 1676 "callBids executed with no bidRequests. Were they filtered by labels or sizing?", 1677 ); 1678 const [l, f] = t.reduce( 1679 (e, t) => ( 1680 e[Number(void 0 !== t.src && t.src === S.RW.SRC)].push(t), 1681 e 1682 ), 1683 [[], []], 1684 ); 1685 var p = []; 1686 f.forEach((e) => { 1687 for (var t = -1, n = 0; n < p.length; ++n) 1688 if (e.uniquePbsTid === p[n].uniquePbsTid) { 1689 t = n; 1690 break; 1691 } 1692 t <= -1 && p.push(e); 1693 }); 1694 let g = 0; 1695 (ee.forEach((e) => { 1696 if (e && p[g] && ae(e).has(p[g].bidderCode)) { 1697 const t = (0, a.er)( 1698 "prebid", 1699 H, 1700 s, 1701 o 1702 ? { request: o.request.bind(null, "s2s"), done: o.done } 1703 : void 0, 1704 ), 1705 d = e.bidders, 1706 l = Y[e.adapter], 1707 m = p[g].uniquePbsTid, 1708 h = p[g].adUnitsS2SCopy, 1709 b = f.filter((e) => e.uniquePbsTid === m); 1710 if (l) { 1711 const o = { 1712 ad_units: h, 1713 s2sConfig: e, 1714 ortb2Fragments: u, 1715 requestBidsTimeout: s, 1716 }; 1717 if (o.ad_units.length) { 1718 const e = b.map( 1719 (e) => ( 1720 (e.start = (0, i.vE)()), 1721 function (t, ...n) { 1722 (t || c(e.bidderRequestId), 1723 r.apply(e, [t, ...n])); 1724 } 1725 ), 1726 ), 1727 s = (0, i.ZA)(o.ad_units).filter((e) => d.includes(e)); 1728 ((0, i.OG)( 1729 `CALLING S2S HEADER BIDDERS ==== ${s.length > 0 ? s.join(", ") : 'No bidder specified, using "ortb2Imp" definition(s) only'}`, 1730 ), 1731 b.forEach((e) => { 1732 B.Ic(S.qY.BID_REQUESTED, { ...e, tid: e.auctionId }); 1733 }), 1734 l.callBids(o, f, n, (t) => e.forEach((e) => e(t)), t)); 1735 } 1736 } else (0, i.vV)("missing " + e.adapter); 1737 g++; 1738 } 1739 }), 1740 l.forEach((e) => { 1741 e.start = (0, i.vE)(); 1742 const t = Y[e.bidderCode]; 1743 d.$.runWithBidder(e.bidderCode, () => { 1744 ((0, i.OG)("CALLING BIDDER"), B.Ic(S.qY.BID_REQUESTED, e)); 1745 }); 1746 const u = (0, a.er)( 1747 "bidder", 1748 e.bidderCode, 1749 s, 1750 o 1751 ? { 1752 request: o.request.bind(null, e.bidderCode), 1753 done: o.done, 1754 } 1755 : void 0, 1756 ), 1757 l = r.bind(e); 1758 try { 1759 d.$.runWithBidder( 1760 e.bidderCode, 1761 t.callBids.bind( 1762 t, 1763 e, 1764 n, 1765 l, 1766 u, 1767 () => c(e.bidderRequestId), 1768 d.$.callbackWithBidder(e.bidderCode), 1769 ), 1770 ); 1771 } catch (t) { 1772 ((0, i.vV)( 1773 `${e.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`, 1774 { e: t, bidRequest: e }, 1775 ), 1776 l()); 1777 } 1778 })); 1779 }, 1780 videoAdapters: [], 1781 registerBidAdapter(e, t, { supportedMediaTypes: n = [] } = {}) { 1782 e && t 1783 ? "function" == typeof e.callBids 1784 ? ((Y[t] = e), 1785 O.o2.register("bidder", t, e.getSpec?.().gvlid), 1786 n.includes("video") && ue.videoAdapters.push(t), 1787 n.includes("native") && o.mT.push(t)) 1788 : (0, i.vV)( 1789 "Bidder adaptor error for bidder code: " + 1790 t + 1791 "bidder must implement a callBids() function", 1792 ) 1793 : (0, i.vV)("bidAdapter or bidderCode not specified"); 1794 }, 1795 aliasBidAdapter(e, t, n) { 1796 if (void 0 === Y[t]) { 1797 const r = Y[e]; 1798 if (void 0 === r) { 1799 const n = []; 1800 (ee.forEach((r) => { 1801 if (r.bidders && r.bidders.length) { 1802 const i = r && r.bidders; 1803 r && i.includes(t) ? (X[t] = e) : n.push(e); 1804 } 1805 }),
1806 n.forEach((e) => { 1807 (0, i.vV)( 1808 'bidderCode "' + e + '" is not an existing bidder.', 1809 "adapterManager.aliasBidAdapter", 1810 ); 1811 })); 1812 } else 1813 try { 1814 let a; 1815 const d = (function (e) { 1816 const t = []; 1817 ue.videoAdapters.includes(e) && t.push("video"); 1818 o.mT.includes(e) && t.push("native"); 1819 return t; 1820 })(e); 1821 if (r.constructor.prototype !== Object.prototype) 1822 ((a = new r.constructor()), a.setBidderCode(t)); 1823 else { 1824 const { useBaseGvlid: o = !1 } = n || {}, 1825 d = r.getSpec(), 1826 c = o ? d.gvlid : n?.gvlid; 1827 null == c && 1828 null != d.gvlid && 1829 (0, i.JE)( 1830 `Alias '${t}' will NOT re-use the GVL ID of the original adapter ('${d.code}', gvlid: ${d.gvlid}). Functionality that requires TCF consent may not work as expected.`, 1831 ); 1832 const u = n && n.skipPbsAliasing; 1833 ((a = (0, s.xb)( 1834 Object.assign({}, d, { 1835 code: t, 1836 gvlid: c, 1837 skipPbsAliasing: u, 1838 }), 1839 )), 1840 (X[t] = e)); 1841 } 1842 ue.registerBidAdapter(a, t, { supportedMediaTypes: d }); 1843 } catch (t) { 1844 (0, i.vV)( 1845 e + " bidder does not currently support aliasing.", 1846 "adapterManager.aliasBidAdapter", 1847 ); 1848 } 1849 } else 1850 (0, i.OG)('alias name "' + t + '" has been already specified.'); 1851 }, 1852 resolveAlias(e) { 1853 let t, 1854 n = e; 1855 for (; X[n] && (!t || !t.has(n));) 1856 ((n = X[n]), (t = t || new Set()).add(n)); 1857 return n; 1858 }, 1859 registerAnalyticsAdapter({ adapter: e, code: t, gvlid: n }) { 1860 e && t 1861 ? "function" == typeof e.enableAnalytics 1862 ? ((e.code = t), 1863 (Z[t] = { adapter: e, gvlid: n }), 1864 O.o2.register(U, t, n)) 1865 : (0, i.vV)( 1866 `Prebid Error: Analytics adaptor error for analytics "${t}"\n analytics adapter must implement an enableAnalytics() function`, 1867 ) 1868 : (0, i.vV)( 1869 "Prebid Error: analyticsAdapter or analyticsCode not specified", 1870 ); 1871 }, 1872 enableAnalytics(e) { 1873 ((0, r.cy)(e) || (e = [e]), 1874 e.forEach((e) => { 1875 const t = Z[e.provider]; 1876 if (t && t.adapter) { 1877 if (((t.config = e), ce(e))) 1878 try { 1879 (t.adapter.enableAnalytics(e), (t.enabled = !0)); 1880 } catch (t) { 1881 (0, i.vV)( 1882 `Could not enable '${e.provider}' analytics`, 1883 t, 1884 ); 1885 } 1886 } else 1887 (0, i.vV)( 1888 `Prebid Error: no analytics adapter found in registry for '${e.provider}'.`, 1889 ); 1890 })); 1891 }, 1892 disableAnalytics(e) { 1893 const t = Z[e]; 1894 if (t && t.enabled) 1895 if ("function" == typeof t.adapter.disableAnalytics) 1896 try { 1897 (t.adapter.disableAnalytics(), (t.enabled = !1)); 1898 } catch (t) { 1899 (0, i.vV)(`Could not disable '${e}' analytics`, t); 1900 } 1901 else 1902 (0, i.JE)( 1903 `Could not disable '${e}' analytics: adapter does not provide a 'disableAnalytics' method`, 1904 ); 1905 }, 1906 refreshAnalytics() {
1907 Object.entries(Z).forEach(([e, t]) => { 1908 const { enabled: n, config: r } = t; 1909 n && !ce(r) 1910 ? ue.disableAnalytics(e) 1911 : n || null == r || ue.enableAnalytics(r); 1912 }); 1913 }, 1914 getBidAdapter: (e) => Y[e], 1915 getAnalyticsAdapter: (e) => Z[e], 1916 callTimedOutBidders(e, t, n) { 1917 ((t = t.map( 1918 (t) => ( 1919 (t.params = (0, i.SB)(e, t.adUnitCode, t.bidder)), 1920 (t.timeout = n), 1921 t 1922 ), 1923 )), 1924 (t = (0, i.$z)(t, "bidder")), 1925 Object.keys(t).forEach((e) => { 1926 pe(e, "onTimeout", t[e]); 1927 })); 1928 }, 1929 callBidWonBidder(e, t, n) { 1930 ((t.params = (0, i.SB)(n, t.adUnitCode, t.bidder)), 1931 v(t.adUnitCode, t.bidder), 1932 pe(e, "onBidWon", t)); 1933 }, 1934 triggerBilling: (() => { 1935 const e = new WeakSet(); 1936 return (t) => { 1937 e.has(t) || 1938 (e.add(t), 1939 ((0, z.$)(t.eventtrackers)[1]?.[1] || []).forEach((e) => 1940 i.mM.triggerPixel(e), 1941 ), 1942 pe(t.bidder, "onBidBillable", t)); 1943 }; 1944 })(), 1945 callSetTargetingBidder(e, t) { 1946 pe(e, "onSetTargeting", t); 1947 }, 1948 callBidViewableBidder(e, t) { 1949 pe(e, "onBidViewable", t); 1950 }, 1951 callBidderError(e, t, n) { 1952 pe(e, "onBidderError", { error: t, bidderRequest: n }); 1953 }, 1954 callAdRenderSucceededBidder(e, t) { 1955 pe(e, "onAdRenderSucceeded", t); 1956 }, 1957 callOnInterventionBidder(e, t, n) { 1958 pe(e, "onIntervention", { bid: t, intervention: n }); 1959 }, 1960 callDataDeletionRequest: (0, c.A_)("sync", function (...e) { 1961 const t = "onDataDeletionRequest";
1962 (Object.keys(Y) 1963 .filter((e) => !X.hasOwnProperty(e)) 1964 .forEach((n) => { 1965 const r = le(n, t); 1966 if (null != r) { 1967 const i = k.n.getBidsRequested().filter( 1968 (e) => 1969 (function (e) { 1970 const t = new Set(); 1971 for (; X.hasOwnProperty(e) && !t.has(e);) 1972 (t.add(e), (e = X[e])); 1973 return e; 1974 })(e.bidderCode) === n, 1975 ); 1976 fe(n, t, ...r, i, ...e); 1977 } 1978 }), 1979 Object.entries(Z).forEach(([n, r]) => { 1980 const o = r?.adapter?.[t]; 1981 if ("function" == typeof o) 1982 try { 1983 o.apply(r.adapter, e); 1984 } catch (e) { 1985 (0, i.vV)(`error calling ${t} of ${n}`, e); 1986 } 1987 })); 1988 }), 1989 }; 1990 function le(e, t) { 1991 const n = Y[e], 1992 r = n?.getSpec && n.getSpec(); 1993 if (r && r[t] && "function" == typeof r[t]) return [r, r[t]]; 1994 } 1995 function fe(e, t, n, r, ...o) { 1996 try { 1997 ((0, i.fH)(`Invoking ${e}.${t}`), 1998 d.$.runWithBidder(e, r.bind(n, ...o))); 1999 } catch (n) { 2000 (0, i.JE)(`Error calling ${t} of ${e}`); 2001 } 2002 } 2003 function pe(e, t, n) { 2004 if (n?.source !== S.RW.SRC) { 2005 const r = le(e, t); 2006 null != r && fe(e, t, ...r, n); 2007 } 2008 } 2009 O.SL.onChange(ue.refreshAnalytics); 2010 const ge = ue; 2011 }, 2012 2682(e, t, n) { 2013 n.d(t, { xb: () => I, a$: () => A }); 2014 var r = n(6001), 2015 i = n(8384), 2016 o = n(7797), 2017 s = n(3838), 2018 a = n(5657), 2019 d = n(7791), 2020 c = n(5521), 2021 u = n(3399), 2022 l = n(3350), 2023 f = n(7413), 2024 p = n(1785), 2025 g = n(6825), 2026 m = n(5437), 2027 h = n(2822), 2028 b = n(4283), 2029 y = n(5881), 2030 v = n(323); 2031 const E = ["cpm", "ttl", "creativeId", "netRevenue", "currency"], 2032 w = { 2033 auctionId: (e) => e.ortb2?.source?.tid, 2034 transactionId: (e) => e.ortb2Imp?.ext?.tid, 2035 }; 2036 function A(e) { 2037 const t = Array.isArray(e.supportedMediaTypes) 2038 ? { supportedMediaTypes: e.supportedMediaTypes } 2039 : void 0; 2040 function n(e) { 2041 const n = I(e); 2042 r.Ay.registerBidAdapter(n, e.code, t); 2043 } 2044 (n(e), 2045 Array.isArray(e.aliases) && 2046 e.aliases.forEach((t) => { 2047 let i, 2048 o, 2049 s = t; 2050 ((0, l.Qd)(t) && 2051 ((s = t.code), (i = t.gvlid), (o = t.skipPbsAliasing)), 2052 (r.Ay.aliasRegistry[s] = e.code), 2053 n( 2054 Object.assign({}, e, { 2055 code: s, 2056 gvlid: i, 2057 skipPbsAliasing: o, 2058 }), 2059 )); 2060 })); 2061 } 2062 const T = (0, f.Bj)(({ bidderCode: e }) => { 2063 const t = (0, b.io)(v.VJ, (0, y.s)("bidder", e)); 2064 function n(e, n, r) { 2065 return w.hasOwnProperty(n) 2066 ? t 2067 ? w[n](e) 2068 : null 2069 : Reflect.get(e, n, r); 2070 } 2071 function r(e, t) { 2072 const n = new Proxy(e, t); 2073 return ( 2074 Object.entries(e) 2075 .filter(([e, t]) => "function" == typeof t) 2076 .forEach(([t, r]) => { 2077 n[t] = r.bind(e); 2078 }), 2079 n 2080 ); 2081 } 2082 const i = (0, f.Bj)( 2083 (e) => r(e, { get: n }), 2084 (e) => e.bidId, 2085 ); 2086 return { 2087 bidRequest: i, 2088 bidderRequest: (e) => 2089 r(e, { 2090 get: (t, r, o) => ("bids" === r ? e.bids.map(i) : n(t, r, o)), 2091 }), 2092 }; 2093 }); 2094 function I(e) { 2095 return Object.assign( 2096 ((t = e.code), 2097 (n = t), 2098 { 2099 callBids: function () {}, 2100 setBidderCode: function (e) { 2101 n = e; 2102 }, 2103 getBidderCode: function () { 2104 return n; 2105 }, 2106 }), 2107 { 2108 getSpec: function () { 2109 return Object.freeze(Object.assign({}, e)); 2110 }, 2111 registerSyncs: s, 2112 callBids: function (t, n, p, b, y, v) { 2113 if (!Array.isArray(t.bids)) return; 2114 const A = T(t), 2115 I = {}; 2116 function C(e, t, r = null) { 2117 const o = (0, h.BO)(t.metrics); 2118 (o.checkpoint("addBidResponse"), 2119 (I[e] = !0), 2120 o.measureTime("addBidResponse.validate", () => 2121 (function ( 2122 e, 2123 t, 2124 { 2125 index: n = g.n.index, 2126 responseMediaType: r = t.mediaType, 2127 } = {}, 2128 ) { 2129 function o() { 2130 const e = Object.keys(t); 2131 return E.every( 2132 (n) => 2133 e.includes(n) && ![void 0, null].includes(t[n]), 2134 ); 2135 } 2136 function s(e) { 2137 return `Invalid bid from ${t.bidderCode}. Ignoring bid: ${e}`; 2138 } 2139 if (!e) 2140 return ( 2141 (0, f.JE)( 2142 "No adUnitCode was supplied to addBidResponse.", 2143 ), 2144 !1 2145 ); 2146 if (!t) 2147 return ( 2148 (0, f.JE)( 2149 `Some adapter tried to add an undefined bi
2149d for ${e}.`, 2150 ), 2151 !1 2152 ); 2153 if (!o()) 2154 return ( 2155 (0, f.vV)( 2156 s( 2157 `Bidder ${t.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`, 2158 ), 2159 ), 2160 !1 2161 ); 2162 const c = i.$.getConfig("auctionOptions") || {}, 2163 u = !0 === c.rejectUnknownMediaTypes, 2164 l = !1 !== c.rejectInvalidMediaTypes, 2165 p = n.getMediaTypes(t); 2166 if (p && Object.keys(p).length > 0) { 2167 if (null == r && u) 2168 return ( 2169 (0, f.vV)( 2170 s( 2171 `Bid mediaType is required. Allowed: ${Object.keys(p).join(", ")}`, 2172 ), 2173 ), 2174 !1 2175 ); 2176 if (null != r && l && !p.hasOwnProperty(r)) 2177 return ( 2178 (0, f.vV)( 2179 s( 2180 `Bid mediaType '${r}' is not supported by the ad unit. Allowed: ${Object.keys(p).join(", ")}`, 2181 ), 2182 ), 2183 !1 2184 ); 2185 } 2186 if ( 2187 "native" === t.mediaType && 2188 !(0, a.Bm)(t, { index: n }) 2189 ) 2190 return ( 2191 (0, f.vV)( 2192 s( 2193 "Native bid missing some required properties.", 2194 ), 2195 ), 2196 !1 2197 ); 2198 if ( 2199 "video" === t.mediaType && 2200 !(0, d.vk)(t, { index: n }) 2201 ) 2202 return ( 2203 (0, f.vV)( 2204 s( 2205 "Video bid does not have required vastUrl or renderer property", 2206 ), 2207 ), 2208 !1 2209 ); 2210 if ( 2211 "banner" === t.mediaType && 2212 !(function (e, t, { index: n = g.n.index } = {}) { 2213 if ( 2214 (t.width || 0 === parseInt(t.width, 10)) && 2215 (t.height || 0 === parseInt(t.height, 10)) 2216 ) 2217 return ( 2218 (t.width = parseInt(t.width, 10)), 2219 (t.height = parseInt(t.height, 10)), 2220 !0 2221 ); 2222 if (null != t.wratio && null != t.hratio) 2223 return ( 2224 (t.wratio = parseInt(t.wratio, 10)), 2225 (t.hratio = parseInt(t.hratio, 10)), 2226 !0 2227 ); 2228 const r = n.getBidRequest(t), 2229 i = n.getMediaTypes(t), 2230 o = 2231 (r && r.sizes) || 2232 (i && i.banner && i.banner.sizes), 2233 s = (0, f.kK)(o); 2234 if (1 === s.length) { 2235 const [e, n] = s[0].split("x"); 2236 return ( 2237 (t.width = parseInt(e, 10)), 2238 (t.height = parseInt(n, 10)), 2239 !0 2240 ); 2241 } 2242 return !1; 2243 })(0, t, { index: n }) 2244 ) 2245 return ( 2246 (0, f.vV)( 2247 s("Banner bids require a width and height"), 2248 ), 2249 !1 2250 ); 2251 return !0; 2252 })(e, t, { responseMediaType: r }), 2253 ) 2254 ? n(e, t) 2255 : n.reject(e, t, c.Tf.INVALID)); 2256 } 2257 const B = []; 2258 function R() { 2259 (p(), 2260 i.$.runWithBidder(e.code, () => { 2261 (u.Ic(c.qY.BIDDER_DONE, t), 2262 s(B, t.gdprConsent, t.uspConsent, t.gppConsent)); 2263 })); 2264 }
2265 const k = S(t).measureTime("validate", () => 2266 t.bids.filter((t) => 2267 (function (t) { 2268 if (!e.isBidRequestValid(t)) 2269 return ( 2270 (0, f.JE)( 2271 `Invalid bid sent to bidder ${e.code}: ${JSON.stringify(t)}`, 2272 ), 2273 !1 2274 ); 2275 return !0; 2276 })(A.bidRequest(t)), 2277 ), 2278 ); 2279 if (0 === k.length) return void R(); 2280 const U = {}; 2281 (k.forEach((e) => { 2282 U[e.bidId] = e; 2283 }), 2284 O(e, k, t, b, v, { 2285 onRequest: (e) => u.Ic(c.qY.BEFORE_BIDDER_HTTP, t, e), 2286 onResponse: (t) => { 2287 (y(e.code), B.push(t)); 2288 }, 2289 onError: (n, i) => { 2290 (i.timedOut || y(e.code), 2291 r.Ay.callBidderError(e.code, i, t), 2292 u.Ic(c.qY.BIDDER_ERROR, { 2293 error: i, 2294 bidderRequest: t, 2295 }), 2296 (0, f.vV)( 2297 `Server call for ${e.code} failed: ${n} ${i.status}. Continuing without bids.`, 2298 { bidRequests: k }, 2299 )); 2300 }, 2301 onBid: (t) => { 2302 const r = U[t.requestId], 2303 i = t; 2304 if (r) { 2305 if ( 2306 ((i.adapterCode = r.bidder), 2307 (function (e, t) { 2308 const n = 2309 m.u.get(t, "allowAlternateBidderCodes") || !1; 2310 let r = m.u.get(t, "allowedAlternateBidderCodes"); 2311 if ( 2312 e && 2313 t && 2314 t !== e && 2315 ((r = (0, l.cy)(r) 2316 ? r 2317 .map((e) => e.trim().toLowerCase()) 2318 .filter((e) => !!e) 2319 .filter(f.hj) 2320 : r), 2321 !n || 2322 ((0, l.cy)(r) && 2323 "*" !== r[0] && 2324 !r.includes(e))) 2325 ) 2326 return !0; 2327 return !1; 2328 })(t.bidderCode, r.bidder)) 2329 ) 2330 return ( 2331 (0, f.JE)( 2332 `${t.bidderCode} is not a registered partner or known bidder of ${r.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`, 2333 ), 2334 void n.reject( 2335 r.adUnitCode, 2336 t, 2337 c.Tf.BIDDER_DISALLOWED, 2338 ) 2339 ); 2340 ((i.originalCpm = t.cpm), 2341 (i.originalCurrency = t.currency), 2342 (i.meta = t.meta || Object.assign({}, t[r.bidder])), 2343 (i.deferBilling = r.deferBilling), 2344 (i.deferRendering = 2345 i.deferBilling && 2346 (t.deferRendering ?? 2347 "function" != typeof e.onBidBillable))); 2348 const s = Object.assign( 2349 (0, o.O)(r), 2350 i, 2351 (0, f.Up)(r, Object.keys(w)), 2352 ), 2353 a = Object.prototype.hasOwnProperty.call( 2354 t, 2355 "mediaType", 2356 ) 2357 ? t.mediaType 2358 : null; 2359 C(r.adUnitCode, s, a); 2360 } else 2361 ((0, f.JE)( 2362 `Bidder ${e.code} made bid for unknown request ID: ${t.requestId}. Ignoring.`, 2363 ), 2364 n.reject(null, t, c.Tf.INVALID_REQUEST_ID)); 2365 }, 2366 onCompletion: R, 2367 })); 2368 }, 2369 }, 2370 ); 2371 var t, n; 2372 function s(t, n, r, i) { 2373 B(e, t, n, r, i); 2374 } 2375 } 2376 const C = ["bids", "paapi"], 2377 O = (0, p.A_)( 2378 "async", 2379 function ( 2380 e, 2381 t, 2382 n, 2383 r, 2384 i, 2385 { 2386 onRequest: o, 2387 onResponse: s, 2388 onError: a, 2389 onBid: d, 2390 onCompletion: u, 2391 }, 2392 ) { 2393 const p = S(n); 2394 u = p.startTiming("total").stopBefore(u); 2395 const g = T(n); 2396 let h = p.measureTime("buildRequests", () => 2397 e.buildRequests(t.map(g.bidRequest), g.bidderRequest
2397(n)), 2398 ); 2399 if ((Array.isArray(h) || (h = [h]), !h || 0 === h.length)) 2400 return void u(); 2401 const E = (0, f.U6)(u, h.length); 2402 h.forEach((t) => { 2403 const n = p.fork(); 2404 function u(e) { 2405 (null != e && (e.metrics = n.fork().renameWith()), d(e)); 2406 } 2407 const g = i(function (r, i) { 2408 w(); 2409 try { 2410 r = JSON.parse(r); 2411 } catch (e) {} 2412 ((r = { 2413 body: r, 2414 headers: { get: i.getResponseHeader.bind(i) }, 2415 }), 2416 s(r)); 2417 try { 2418 r = n.measureTime("interpretResponse", () => 2419 e.interpretResponse(r, t), 2420 ); 2421 } catch (t) { 2422 return ( 2423 (0, f.vV)( 2424 `Bidder ${e.code} failed to interpret the server's response. Continuing without bids`, 2425 null, 2426 t, 2427 ), 2428 void E() 2429 ); 2430 } 2431 let o; 2432 ((o = 2433 r && !Object.keys(r).some((e) => !C.includes(e)) 2434 ? r.bids 2435 : r), 2436 o && ((0, l.cy)(o) ? o.forEach(u) : u(o)), 2437 E()); 2438 }), 2439 h = i(function (e, t) { 2440 (w(), a(e, t), E()); 2441 }); 2442 o(t); 2443 const w = n.startTiming("net"), 2444 A = "TRUE" === (0, f.Ez)(c.M).toUpperCase() || (0, f.dp)(); 2445 function T(n) { 2446 const r = t.options; 2447 return Object.assign(n, r, { 2448 browsingTopics: 2449 !( 2450 r?.hasOwnProperty("browsingTopics") && 2451 !r.browsingTopics 2452 ) && 2453 (m.u.get(e.code, "topicsHeader") ?? !0) && 2454 (0, b.io)(v.DL, (0, y.s)("bidder", e.code)), 2455 suppressTopicsEnrollmentWarning: r?.hasOwnProperty( 2456 "suppressTopicsEnrollmentWarning", 2457 ) 2458 ? r.suppressTopicsEnrollmentWarning 2459 : !A, 2460 }); 2461 } 2462 switch (t.method) { 2463 case "GET": 2464 r( 2465 `${t.url}${(function (e) { 2466 if (e) 2467 return `?${"object" == typeof e ? (0, f.bL)(e) : e}`; 2468 return ""; 2469 })(t.data)}`, 2470 { success: g, error: h }, 2471 void 0, 2472 T({ method: "GET", withCredentials: !0 }), 2473 ); 2474 break; 2475 case "POST": 2476 const n = t.options?.endpointCompression, 2477 i = ({ url: e, payload: t }) => { 2478 r( 2479 e, 2480 { success: g, error: h }, 2481 t, 2482 T({ 2483 method: "POST", 2484 contentType: "text/plain", 2485 withCredentials: !0, 2486 }), 2487 ); 2488 }; 2489 (n && 2490 A && 2491 (0, f.JE)( 2492 `Skipping GZIP compression for ${e.code} as debug mode is enabled`, 2493 ), 2494 n && !A && (0, f.nT)() 2495 ? (0, f.ZK)(t.data).then((e) => { 2496 const n = new URL(t.url); 2497 (n.searchParams.has("gzip") || 2498 n.searchParams.set("gzip", "1"), 2499 i({ url: n.href, payload: e })); 2500 }) 2501 : i({ 2502 url: t.url, 2503 payload: 2504 "string" == typeof t.data 2505 ? t.data 2506 : JSON.stringify(t.data), 2507 })); 2508 break; 2509 default: 2510 ((0, f.JE)( 2511 `Skipping invalid request from ${e.code}. Request type ${t.method} must be GET or POST`, 2512 ), 2513 E()); 2514 } 2515 }); 2516 }, 2517 "processBidderRequests", 2518 ), 2519 B = (0, p.A_)( 2520 "async", 2521 function (e, t, n, o, a) { 2522 const d = i.$.getConfig("userSync.aliasSyncEnabled"); 2523 if (e.getUserSyncs && (d || !r.Ay.aliasRegistry[e.code])) { 2524 let r = e.getUserSyncs( 2525 { 2526 iframeEnabled: s.zt.canBidderRegisterSync( 2527 "iframe", 2528 e.code, 2529 ), 2530 pixelEnabled: s.zt.canBidderRegisterSync("image", e.code), 2531 }, 2532 t, 2533 n, 2534 o, 2535 a, 2536 ); 2537 r && 2538 (Array.isArray(r) || (r = [r]), 2539 r.forEach((t) => { 2540 s.zt.registerSync(t.type, e.code, t.url); 2541 }), 2542 s.zt.bidderDone(e.code)); 2543 } 2544 }, 2545 "registerSyncs", 2546 ); 2547 function S(e) { 2548 return (0, h.BO)(e.metrics).renameWith((t) => [ 2549 `adapter.client.${t}`, 2550 `adapters.client.${e.bidderCode}.${t}`, 2551 ]); 2552 } 2553 }, 2554 8468(e, t, n) { 2555 n.d(t, { R: () => c }); 2556 var r = n(323), 2557 i = n(5881), 2558 o = n(4283), 2559 s = n(7413); 2560 const a = new WeakMap(); 2561 function d(e, t, n) { 2562 return t && n && e 2563 ? !!(0, o.io)(r.jP, (0, i.s)(t, n)) 2564 : ((0, s.vV)( 2565 "cannot load external script without url, moduleType, or module
2565Code", 2566 ), 2567 !1); 2568 } 2569 function c(e, t, n, r, i, o) { 2570 if (!d(e, t, n)) return; 2571 const c = 2572 "function" == typeof r || 2573 "function" == typeof r?.success || 2574 "function" == typeof r?.error; 2575 function u(e, t) { 2576 null == t 2577 ? "function" == typeof e 2578 ? e() 2579 : e.success?.() 2580 : e.error?.(t); 2581 } 2582 i || (i = document); 2583 const l = g(i, e); 2584 if (l) 2585 return ( 2586 c && (l.loaded ? u(r, l.error) : l.callbacks.push(r)), 2587 l.tag 2588 ); 2589 const f = a.get(i) || {}, 2590 p = { error: null, loaded: !1, tag: null, callbacks: [] }; 2591 return ( 2592 (f[e] = p), 2593 a.set(i, f), 2594 c && p.callbacks.push(r), 2595 (0, s.JE)(`module ${n} is loading external JavaScript`), 2596 (function (t, n, r, i) { 2597 r || (r = document); 2598 var o = r.createElement("script"); 2599 ((o.type = "text/javascript"), (o.async = !0)); 2600 const a = g(r, e); 2601 a && (a.tag = o); 2602 function d(e) { 2603 ((a.error = e), c()); 2604 } 2605 function c() { 2606 (o.removeEventListener("error", d), 2607 (o.onload = null), 2608 (o.onreadystatechange = null), 2609 n()); 2610 } 2611 (o.addEventListener("error", d), 2612 o.readyState 2613 ? (o.onreadystatechange = function () { 2614 ("loaded" !== o.readyState && 2615 "complete" !== o.readyState) || 2616 ((o.onreadystatechange = null), c()); 2617 }) 2618 : (o.onload = function () { 2619 c(); 2620 })); 2621 ((o.src = t), i && (0, s.Bg)(o, i)); 2622 return ((0, s._s)(o, r), o); 2623 })( 2624 e, 2625 function () { 2626 p.loaded = !0; 2627 try { 2628 for (let e = 0; e < p.callbacks.length; e++) 2629 u(p.callbacks[e], p.error); 2630 p.callbacks.length = 0; 2631 } catch (e) { 2632 (0, s.vV)( 2633 "Error executing callback", 2634 "adloader.js:loadExternalScript", 2635 e, 2636 ); 2637 } 2638 }, 2639 i, 2640 o, 2641 ) 2642 ); 2643 function g(e, t) { 2644 const n = a.get(e); 2645 return n && n[t] ? n[t] : null; 2646 } 2647 } 2648 const u = (0, s.Bj)(function (e) { 2649 return new Promise((t, n) => { 2650 const r = document.createElement("link"); 2651 ((r.rel = "preload"), 2652 (r.as = "script"), 2653 (r.href = e), 2654 (r.onload = () => t()), 2655 (r.onerror = n), 2656 (0, s._s)(r)); 2657 }); 2658 }); 2659 u.clear; 2660 }, 2661 8964(e, t, n) { 2662 n.d(t, { RD: () => v, er: () => y }); 2663 var r = n(323), 2664 i = n(5881), 2665 o = n(4283), 2666 s = n(8384), 2667 a = n(7413); 2668 const d = { 2669 fetch: window.fetch.bind(window), 2670 makeRequest: (e, t) => new Request(e, t), 2671 timeout(e, t) { 2672 const n = new AbortController(); 2673 let r = setTimeout(() => { 2674 (n.abort(), 2675 (0, a.vV)(`Request timeout after ${e}ms`, t), 2676 (r = null)); 2677 }, e); 2678 return { 2679 signal: n.signal, 2680 done() { 2681 r && clearTimeout(r); 2682 }, 2683 }; 2684 }, 2685 }, 2686 c = "GET", 2687 u = "Content-Type"; 2688 function l(e = []) { 2689 const t = [e]; 2690 return { 2691 attach: (e, n) => 2692 function (...r) { 2693 t.push(n); 2694 try { 2695 return e(...r); 2696 } finally { 2697 t.pop(); 2698 } 2699 }, 2700 getCallers: () => t[t.length - 1], 2701 }; 2702 } 2703 function f(e = 3e3, { request: t, done: n } = {}, r, i) { 2704 return p(l(), e, { request: t, done: n }, r, i); 2705 } 2706 function p(e, t = 3e3, { request: n, done: c } = {}, u, l) { 2707 l && 2708 u && 2709 (e = (function (e, t) { 2710 return { attach: (e) => e, getCallers: () => [[e, t]] }; 2711 })(u, l)); 2712 let f = (n, c) => { 2713 const u = n?._keepalive ?? c?.keepalive ?? n?.keepalive; 2714 let l; 2715 null == t || 2716 null != c?.signal || 2717 s.$.getConfig("disableAjaxTimeout") || 2718 ((l = d.timeout(t, n)), 2719 (c = Object.assign({ signal: l.signal }, c))); 2720 let f,
2721 p = d.makeRequest(n, { ...c, keepalive: !1 }); 2722 return ( 2723 "include" !== p.credentials || 2724 (0 !== e.getCallers().length && 2725 !e 2726 .getCallers() 2727 .some(([e, t]) => !(0, o.io)(r.yg, (0, i.s)(e, t)))) || 2728 (p = d.makeRequest(p, { credentials: "same-origin" })), 2729 (f = u 2730 ? p 2731 .clone() 2732 .blob() 2733 .then( 2734 (e) => ( 2735 e.size > 65536 2736 ? (0, a.JE)( 2737 "Ignoring keepalive: request body exceeds 65536 bytes", 2738 p, 2739 ) 2740 : (p = d.makeRequest(p, { keepalive: !0 })), 2741 d.fetch(p) 2742 ), 2743 ) 2744 : d.fetch(p)), 2745 null != l?.done && (f = f.finally(l.done)), 2746 f 2747 ); 2748 }; 2749 return ( 2750 (null == n && null == c) || 2751 (f = ((e) => 2752 function (t, r) { 2753 const i = new URL( 2754 null == t?.url ? t : t.url, 2755 document.location, 2756 ).origin; 2757 let o = e(t, r); 2758 return (n && n(i), c && (o = o.finally(() => c(i))), o); 2759 })(f)), 2760 (f.withCallers = (t) => e.attach(f, t)), 2761 f 2762 ); 2763 } 2764 function g({ status: e, statusText: t = "", headers: n, url: r }, i) { 2765 let o; 2766 function s(e) { 2767 if (void 0 === o) 2768 try { 2769 o = new DOMParser().parseFromString( 2770 i, 2771 n?.get(u)?.split(";")?.[0], 2772 ); 2773 } catch (t) { 2774 ((o = null), e && e(t)); 2775 } 2776 return o; 2777 } 2778 return { 2779 readyState: XMLHttpRequest.DONE, 2780 status: e, 2781 statusText: t, 2782 responseText: i, 2783 response: i, 2784 responseType: "", 2785 responseURL: r, 2786 get responseXML() { 2787 return s(a.vV); 2788 }, 2789 getResponseHeader: (e) => (n?.has(e) ? n.get(e) : null),
2790 toJSON() { 2791 return Object.assign({ responseXML: s() }, this); 2792 }, 2793 timedOut: !1, 2794 }; 2795 } 2796 function m(e = 3e3, { request: t, done: n } = {}, r, i) { 2797 return h(l(), e, { request: t, done: n }, r, i); 2798 } 2799 function h(e, t = 3e3, { request: n, done: r } = {}, i, o) { 2800 const s = p(e, t, { request: n, done: r }, i, o); 2801 function l(e, t, n, r = {}) { 2802 !(function (e, t) { 2803 const { success: n, error: r } = 2804 "object" == typeof t && null != t 2805 ? t 2806 : { 2807 success: "function" == typeof t ? t : () => null, 2808 error: (e, t) => (0, a.vV)("Network error", e, t), 2809 }; 2810 e.then((e) => e.text().then((t) => [e, t])).then( 2811 ([e, t]) => { 2812 const i = g(e, t); 2813 e.ok || 304 === e.status ? n(t, i) : r(e.statusText, i); 2814 }, 2815 (e) => 2816 r( 2817 "", 2818 Object.assign(g({ status: 0 }, ""), { 2819 reason: e, 2820 timedOut: "AbortError" === e?.name, 2821 }), 2822 ), 2823 ); 2824 })( 2825 s( 2826 (function (e, t, n = {}) { 2827 const r = n.method || (t ? "POST" : c); 2828 if (r === c && t) { 2829 const r = (0, a.Dl)(e, n); 2830 (Object.assign(r.search, t), (e = (0, a.c$)(r))); 2831 } 2832 const i = new Headers(n.customHeaders); 2833 i.set(u, n.contentType || "text/plain"); 2834 const o = { method: r, headers: i }; 2835 (r !== c && t && (o.body = t), 2836 n.withCredentials && (o.credentials = "include"), 2837 isSecureContext && 2838 (["browsingTopics"].forEach((e) => { 2839 n[e] && (o[e] = !0); 2840 }), 2841 null != n.suppressTopicsEnrollmentWarning && 2842 (o.suppressTopicsEnrollmentWarning = 2843 n.suppressTopicsEnrollmentWarning))); 2844 const s = d.makeRequest(e, o); 2845 return (n.keepalive && (s._keepalive = !0), s); 2846 })(e, n, r), 2847 ), 2848 t, 2849 ); 2850 } 2851 return ((l.withCallers = (t) => e.attach(l, t)), l); 2852 } 2853 function b(e) { 2854 return function (t, n, r, i) { 2855 if (!t || !n) 2856 throw new Error("moduleType and moduleName are required"); 2857 return e(r, i, t, n); 2858 }; 2859 } 2860 ((f.withCallers = 2861 (e) => 2862 (...t) => 2863 p(l(e), ...t)), 2864 (m.withCallers = 2865 (e) => 2866 (...t) => 2867 h(l(e), ...t))); 2868 const y = b(m), 2869 v = (b(f), m()); 2870 f(); 2871 }, 2872 6825(e, t, n) { 2873 n.d(t, { n: () => ie }); 2874 var r = n(7413), 2875 i = n(3350), 2876 o = n(6969), 2877 s = n(5657), 2878 a = n(8964), 2879 d = n(8384), 2880 c = n(1785), 2881 u = n(7791); 2882 const l = new Map(); 2883 const f = (0, c.A_)( 2884 "sync", 2885 function (e) { 2886 !e.vastXml && 2887 e.vastUrl && 2888 (e.vastXml = (function (e, t) { 2889 const n = t?.impression?.length 2890 ? t.impression 2891 .map( 2892 (e) => 2893 `<Impression><![CDATA[${e}]]></Impression>`, 2894 ) 2895 .join("") 2896 : "", 2897 r = t?.error?.length 2898 ? t.error 2899 .map((e) => `<Error><![CDATA[${e}
2899]]></Error>`) 2900 .join("") 2901 : ""; 2902 let i = ""; 2903 t?.trackingEvents?.length && 2904 (i = `<Creative><Linear><TrackingEvents>${t.trackingEvents.map(({ event: e, url: t }) => `<Tracking event="${e}"><![CDATA[${t}]]></Tracking>`).join("")}</TrackingEvents></Linear></Creative>`); 2905 return ( 2906 '<VAST version="3.0"><Ad><Wrapper><AdSystem>prebid.org wrapper</AdSystem><VASTAdTagURI><![CDATA[' + 2907 e + 2908 "]]></VASTAdTagURI>" + 2909 n + 2910 r + 2911 "<Creatives>" + 2912 i + 2913 "</Creatives></Wrapper></Ad></VAST>" 2914 ); 2915 })(e.vastUrl, e.vastTrackers)); 2916 }, 2917 "updateVast", 2918 ), 2919 p = (e, t, n) => { 2920 ((e.videoCacheKey = n || (0, r.lk)()), 2921 e.vastUrl || (e.vastUrl = t)); 2922 }, 2923 g = { 2924 store: function ( 2925 e, 2926 t, 2927 n = (e) => (0, a.er)("prebid", "cache", e), 2928 ) { 2929 const r = { 2930 puts: e.map((e) => 2931 (function (e, { index: t = ie.index } = {}) { 2932 const n = e.vastXml, 2933 r = t.getAuction(e), 2934 i = { 2935 type: "xml", 2936 value: n, 2937 ttlseconds: Number(e.ttl) + 15, 2938 }; 2939 return ( 2940 d.$.getConfig("cache.vasttrack") && 2941 ((i.bidder = e.bidder), 2942 (i.bidid = e.requestId), 2943 (i.aid = e.auctionId)), 2944 null != r && (i.timestamp = r.getAuctionStart()), 2945 "string" == typeof e.customCacheKey && 2946 "" !== e.customCacheKey && 2947 (i.key = e.customCacheKey), 2948 i 2949 ); 2950 })(e), 2951 ), 2952 }; 2953 n(d.$.getConfig("cache.timeout"))( 2954 d.$.getConfig("cache.url"), 2955 (function (e) { 2956 return { 2957 success: function (t) { 2958 let n; 2959 try { 2960 n = JSON.parse(t).responses; 2961 } catch (t) { 2962 return void e(t, []); 2963 } 2964 n 2965 ? e(null, n) 2966 : e( 2967 new Error( 2968 "The cache server didn't respond with a responses property.", 2969 ), 2970 [], 2971 ); 2972 }, 2973 error: function (t, n) { 2974 e( 2975 new Error( 2976 `Error storing video ad in the cache: ${t}: ${JSON.stringify(n)}`, 2977 ), 2978 [], 2979 ); 2980 }, 2981 }; 2982 })(t), 2983 JSON.stringify(r), 2984 { contentType: "text/plain", withCredentials: !0 }, 2985 ); 2986 }, 2987 }; 2988 function m(e) { 2989 const t = e.map((e) => e.bidResponse); 2990 const n = d.$.getConfig("cache.url"); 2991 g.store(t, function (i, o) { 2992 var s; 2993 i 2994 ? ((s = i), 2995 (0, r.vV)( 2996 `Failed to save to the video cache: ${s}. Video bids will be discarded:`, 2997 t, 2998 )) 2999 : e.length !== o.length 3000 ? (0, r.vV)( 3001 `expected ${e.length} cache IDs, got ${o.length} instead`, 3002 ) 3003 : o.forEach((t, i) => { 3004 const { 3005 auctionInstance: o, 3006 bidResponse: s, 3007 afterBidAdded: a, 3008 } = e[i]; 3009 "" === t.uuid 3010 ? (0, r.JE)( 3011 "Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded.", 3012 ) 3013 : ((s.cacheUrl = n), 3014 p( 3015 s, 3016 (function (e, t) { 3017 return `${e}?uuid=${t}`; 3018 })(n, t.uuid), 3019 t.uuid, 3020 ), 3021 Q(o, s), 3022 a()); 3023 }); 3024 }); 3025 } 3026 let h, b, y; 3027 d.$.getConfig("cache", ({ cache: e }) => { 3028 ((h = 3029 "number" == typeof e.batchSize && e.batchSize > 0 3030 ? e.batchSize 3031 : 1), 3032 (b = 3033 "number" == typeof e.batchTimeout && e.batchTimeout > 0 3034 ? e.batchTimeout 3035 : 0), 3036 e.useLocal && 3037 !y && 3038 (y = ie.onExpiry((e) => {
3039 e.getBidsReceived().forEach((e) => { 3040 const t = l.get(e.videoCacheKey); 3041 (t && t.startsWith("blob") && URL.revokeObjectURL(t), 3042 l.delete(e.videoCacheKey)); 3043 }); 3044 }))); 3045 }); 3046 const v = ((e = setTimeout, t = m) => { 3047 let n = [[]], 3048 r = !1; 3049 const i = (e) => e(); 3050 return function (o, s, a) { 3051 const d = b > 0 ? e : i; 3052 (n[n.length - 1].length >= h && n.push([]), 3053 n[n.length - 1].push({ 3054 auctionInstance: o, 3055 bidResponse: s, 3056 afterBidAdded: a, 3057 }), 3058 r || 3059 ((r = !0), 3060 d(() => { 3061 (n.forEach(t), (n = [[]]), (r = !1)); 3062 }, b))); 3063 }; 3064 })(), 3065 E = (0, c.A_)( 3066 "async", 3067 function (e, t, n, r) { 3068 d.$.getConfig("cache.useLocal") 3069 ? (((e) => { 3070 const t = e.vastXml, 3071 n = URL.createObjectURL( 3072 new Blob([t], { type: "text/xml" }), 3073 ); 3074 (p(e, n), l.set(e.videoCacheKey, n)); 3075 })(t), 3076 Q(e, t), 3077 n()) 3078 : v(e, t, n); 3079 }, 3080 "callPrebidCache", 3081 ); 3082 var w = n(6901), 3083 A = n(3838), 3084 T = n(5437), 3085 I = n(3399), 3086 C = n(6001), 3087 O = n(5521), 3088 B = n(8203), 3089 S = n(2822), 3090 R = n(9200), 3091 k = n(1129), 3092 U = n(7834), 3093 D = n(5423), 3094 $ = n(4283), 3095 _ = n(323), 3096 j = n(6540), 3097 x = n(4983); 3098 const { syncUsers: q } = A.zt, 3099 N = "completed"; 3100 I.on(O.qY.BID_ADJUSTMENT, function (e) { 3101 !(function (e) { 3102 const t = ie.index.getBidRequest(e), 3103 n = (0, R.y)(e.cpm, e, t); 3104 n >= 0 && (e.cpm = n); 3105 const r = (0, x.j)(e, t); 3106 e.desirability = r; 3107 })(e); 3108 }); 3109 const P = {}, 3110 V = {}, 3111 M = [], 3112 G = (0, k.m)(); 3113 const F = (0, c.A_)("sync", (e) => {}); 3114 function W({ 3115 adUnits: e, 3116 adUnitCodes: t, 3117 callback: n, 3118 cbTimeout: i, 3119 labels: a, 3120 auctionId: c, 3121 ortb2Fragments: l, 3122 metrics: p, 3123 }) { 3124 p = (0, S.BO)(p); 3125 const g = e, 3126 m = a, 3127 h = t, 3128 b = c || (0, r.lk)(), 3129 y = i, 3130 v = new Set(), 3131 A = (0, B.v6)(), 3132 T = (0, B.v6)(); 3133 let R = [], 3134 k = n, 3135 $ = []; 3136 const _ = (0, U.H)({ 3137 startTime: (e) => e.responseTimestamp, 3138 ttl: (e) => { 3139 const t = (0, D.X9)(e); 3140 return null == t ? null : 1e3 * Math.max(t, e.ttl); 3141 }, 3142 }); 3143 let j, 3144 x, 3145 W, 3146 X, 3147 Z = [], 3148 ee = [], 3149 te = []; 3150 function re() { 3151 return { 3152 auctionId: b, 3153 timestamp: j, 3154 auctionEnd: x, 3155 auctionStatus: X, 3156 adUnits: g, 3157 adUnitCodes: h, 3158 labels: m, 3159 bidderRequests: $, 3160 noBids: Z, 3161 bidsReceived: _.toArray(), 3162 bidsRejected: R, 3163 winningBids: ee, 3164 timeout: y, 3165 metrics: p, 3166 seatNonBids: te, 3167 }; 3168 } 3169 function oe(t) { 3170 if ( 3171 (t ? I.Ic(O.qY.AUCTION_TIMEOUT, re()) : clearTimeout(W), 3172 void 0 === x) 3173 ) { 3174 let n = []; 3175 (t && 3176 ((0, r.OG)(`Auction ${b} timedOut`), 3177 (n = $.filter((e) => !v.has(e.bidderRequestId)).flatMap( 3178 (e) => e.bids, 3179 )), 3180 n.length && I.Ic(O.qY.BID_TIMEOUT, n)), 3181 (X = N), 3182 (x = Date.now()), 3183 p.checkpoint("auctionEnd"), 3184 p.timeBetween( 3185 "requestBids", 3186 "auctionEnd", 3187 "requestBids.total", 3188 ), 3189 p.timeBetween( 3190 "callBids", 3191 "auctionEnd", 3192 "requestBids.callBids", 3193 ), 3194 A.resolve(), 3195 I.Ic(O.qY.AUCTION_END, re()), 3196 H(g, c, function () { 3197 try { 3198 if (null != k) { 3199 const e = _.toArray() 3200 .filter((e) => h.includes(e.adUnitCode)) 3201 .reduce(ne, {}); 3202 (k.apply(G, [e, t, b]), (k = null)); 3203 } 3204 } catch (e) { 3205 (0, r.vV)("Error executing bidsBackHandler", null, e); 3206 } finally { 3207 n.length && C.Ay.callTimedOutBidders(e, n, y); 3208 const t = d.$.getConfig("userSync") ?? {}; 3209 t.enableOverride || q(t.syncDelay); 3210 } 3211 })); 3212 } 3213 } 3214 function se() { 3215 (d.$.resetBidder(), 3216 (0, r.fH)( 3217 `Bids Received for Auction with id: ${b}`, 3218 _.toArray(), 3219 ), 3220 (X = N), 3221 oe(!1)); 3222 } 3223 function ae(e) { 3224 v.add(e); 3225 } 3226 function de(e) { 3227 e.forEach((e) => { 3228 var t; 3229 ((t = e), ($ = $.concat(t))); 3230 }); 3231 const t = {}, 3232 n = { 3233 bidRequests: e, 3234 run: () => { 3235 (F(this), 3236 (W = setTimeout(() => oe(!0), y)), 3237 (X = "inProgress"), 3238 I.Ic(O.qY.AUCTION_INIT, re())); 3239 const n = (function (e, t, { index: n = ie.index } = {}) { 3240 let i = 0, 3241 a = !1; 3242 const c = new Set(), 3243 l = {}; 3244 function p() { 3245 (i--, a && 0 === i && e()); 3246 } 3247 function g(e, t, n) { 3248 return ( 3249 (l[t.requestId] = !0), 3250 (function (e, t, { index: n = ie.index } = {}) { 3251 const r = n.getAdUnit(e); 3252 (K(e, { index: n }), 3253 Object.assign(e, { 3254 cpm: parseFloat(e.cpm) || 0, 3255 bidder: e.bidder || e.bidderCode, 3256 adUnitCode: t, 3257 }), 3258 null != r?.ttlBuffer && 3259 (e.ttlBuffer = r.ttlBuffer)); 3260 })(t, e), 3261 i++, 3262 n(p) 3263 ); 3264 } 3265 function m(e, i) { 3266 g(e, i, (e) => { 3267 const a = (function ( 3268 e, 3269 { index: t = ie.index } = {}, 3270 ) { 3271 I.Ic(O.qY.BID_ADJUSTMENT, e); 3272 const n = t.getAdUnit(e); 3273 ((e.instl = 1 === n?.ortb2Imp?.instl), 3274 (e.element = n?.element)); 3275 const r = t.getBidRequest(e), 3276 i = r?.renderer || n?.renderer, 3277 s = r?.safeRenderer || n?.safeRenderer, 3278 a = e.mediaType, 3279 c = t.getMediaTypes(e), 3280 u = c && c[a], 3281 l = u && u.renderer, 3282 f = u && u.safeRenderer; 3283 let p = null; 3284 !l || 3285 !l.render || 3286 (!0 === l.backupOnly && e.renderer) 3287 ? !i || 3288 !i.render || 3289 (!0 === i.backupOnly && e.renderer) || 3290 (p = i) 3291 : (p = l); 3292 let g = null; 3293 !f || 3294 !f?.url || 3295 (!0 === l?.backupOnly && e.safeRenderer) 3296 ? !s || 3297 !s?.url || 3298 (!0 === l?.backupOnly && e.safeRenderer) || 3299 (g = s) 3300 : (g = f); 3301 null != g && (e.safeRenderer = g); 3302 (d.$.getConfig("allowTopWindowRenderers") ?? 1) 3303 ? p && 3304 ((e.renderer = w.A4.install({ 3305 url: p.url, 3306 config: p.options, 3307 renderNow: null == p.url, 3308 })), 3309 e.renderer.setRender(p.render)) 3310 : (e.renderer = null); 3311 const m = Y( 3312 e.mediaType, 3313 c, 3314 d.$.getConfig("mediaTypePriceGranularity"), 3315 ), 3316 h = (0, o.j)( 3317 e.cpm, 3318 "object" == typeof m 3319 ? m 3320 : d.$.getConfig("customPriceBucket"), 3321 d.$.getConfig("currency.granularityMultiplier"), 3322 ); 3323 return ( 3324 (e.pbLg = h.low), 3325 (e.pbMg = h.med), 3326 (e.pbHg = h.high), 3327 (e.pbAg = h.auto), 3328 (e.pbDg = h.dense), 3329 (e.pbCg = h.custom), 3330 e 3331 ); 3332 })(i); 3333 (I.Ic(O.qY.BID_ACCEPTED, a), 3334 "video" === a.mediaType || "audio" === a.mediaType 3335 ? (function ( 3336 e, 3337 t, 3338 n, 3339 { index: i = ie.index } = {}, 3340 ) { 3341 const o = i.getMediaTypes({ 3342 requestId: 3343 t.originalRequestId || t.requestId, 3344 adUnitId: t.adUnitId, 3345 })?.video; 3346 !(function ({ 3347 bidResponse: e, 3348 auctionInstance: t, 3349 afterBidAdded: n, 3350 videoMediaType: i, 3351 }) { 3352 f(e); 3353 const o = i && i?.context, 3354 s = i && i?.useCacheKey, 3355 { 3356 useLocal: a, 3357 url: c, 3358 ignoreBidderCacheKey: l, 3359 } = d.$.getConfig("cache") || {}, 3360 p = (a || c) && (s || o !== u.H6), 3361 g = !e.videoCacheKey || l; 3362 p && g 3363 ? E(t, e, n, i) 3364 : !p || g || e.vastUrl 3365 ? (Q(t, e), n()) 3366 : (0, r.vV)( 3367 "videoCacheKey specified but not required vastUrl for video bid", 3368 ); 3369 })({ 3370 bidResponse: t, 3371 auctionInstance: e, 3372 afterBidAdded: n, 3373 videoMediaType: o, 3374 }); 3375 })(t, a, e) 3376 : ((0, s.l6)(a) && (0, s.gs)(a, n.getAdUnit(a)), 3377 Q(t, a), 3378 e())); 3379 }); 3380 } 3381 function h(e, n, i) { 3382 return g(e, n, (e) => { 3383 ((n.rejectionReason = i), 3384 (0, r.JE)( 3385 `Bid from ${n.bidder || "unknown bidder"} was rejected: ${i}`, 3386 n, 3387 ), 3388 I.Ic(O.qY.BID_REJECTED, n), 3389 t.addBidRejected(n), 3390 e()); 3391 }); 3392 } 3393 function b() { 3394 const n = this; 3395 let o = t.getBidRequests(); 3396 const s = d.$.getConfig("auctionOptions"); 3397 if ((c.add(n), s && !(0, r.Im)(s))) { 3398 const e = s.secondaryBidders; 3399 e && 3400 !o.every((t) => e.includes(t.bidderCode)) && 3401 (o = o.filter((t) => !e.includes(t.bidderCode))); 3402 } 3403 ((a = o.every((e) => c.has(e))), 3404 n.bids.forEach((e) => { 3405 l[e.bidId] || 3406 (K(e), t.addNoBid(e), I.Ic(O.qY.NO_BID, e)); 3407 }), 3408 a && 0 === i && e()); 3409 } 3410 return { 3411 addBidResponse: (function () { 3412 function e(e, t) { 3413 L.call( 3414 { dispatch: m }, 3415 e, 3416 t, 3417 (() => { 3418 let n = !1; 3419 return (r) => { 3420 n || (h(e, t, r), (n = !0)); 3421 }; 3422 })(), 3423 ); 3424 } 3425 return ((e.reject = h), e); 3426 })(), 3427 adapterDone: function () { 3428 z(B.U9.resolve()).finally(() => b.call(this)); 3429 }, 3430 }; 3431 })(se, this); 3432 (C.Ay.callBids( 3433 g, 3434 e, 3435 n.addBidResponse, 3436 n.adapterDone, 3437 { 3438 request(e, n) { 3439 (a(P, n), 3440 a(t, e), 3441 V[e] || (V[e] = { SRA: !0, origin: n }), 3442 t[e] > 1 && (V[e].SRA = !1)); 3443 }, 3444 done(e) { 3445 (P[e]--, M[0] && i(M[0]) && M.shift()); 3446 }, 3447
3447 }, 3448 y, 3449 ae, 3450 l, 3451 ), 3452 T.resolve()); 3453 }, 3454 }; 3455 function i(e) { 3456 let t = !0; 3457 const n = d.$.getConfig("maxRequestsPerOrigin") || 4; 3458 return ( 3459 e.bidRequests.some((e) => { 3460 let r = 1; 3461 const i = 3462 void 0 !== e.src && e.src === O.RW.SRC 3463 ? "s2s" 3464 : e.bidderCode; 3465 return ( 3466 !( 3467 e.alwaysHasCapacity && 3468 !d.$.getConfig("forceMaxRequestsPerOrigin") 3469 ) && 3470 (V[i] && 3471 (!1 === V[i].SRA && (r = Math.min(e.bids.length, n)), 3472 P[V[i].origin] + r > n && (t = !1)), 3473 !t) 3474 ); 3475 }), 3476 t && e.run(), 3477 t 3478 ); 3479 } 3480 function a(e, t) { 3481 void 0 === e[t] ? (e[t] = 1) : e[t]++; 3482 } 3483 i(n) || 3484 ((0, r.JE)("queueing auction due to limited endpoint capacity"), 3485 M.push(n)); 3486 } 3487 return ( 3488 (0, D.lc)(() => _.refresh()), 3489 I.on(O.qY.PBS_ANALYTICS, (e) => { 3490 var t; 3491 e.auctionId === b && 3492 null != e.seatnonbid && 3493 ((t = e.seatnonbid), (te = te.concat(t))); 3494 }), 3495 { 3496 addBidReceived: function (e) { 3497 _.add(e); 3498 }, 3499 addBidRejected: function (e) { 3500 R = R.concat(e); 3501 }, 3502 addNoBid: function (e) { 3503 Z = Z.concat(e); 3504 }, 3505 callBids: function () { 3506 ((X = "started"), (j = Date.now())); 3507 const e = p.measureTime("requestBids.makeRequests", () => 3508 C.Ay.makeBidRequests(g, j, b, y, m, l, p), 3509 ); 3510 ((0, r.fH)(`Bids Requested for Auction with id: ${b}`, e), 3511 p.checkpoint("callBids"), 3512 e.length < 1 3513 ? ((0, r.JE)( 3514 "No valid bid requests returned for auction", 3515 ), 3516 se()) 3517 : J.call({ dispatch: de, context: this }, e)); 3518 }, 3519 addWinningBid: function (t) { 3520 ((ee = ee.concat(t)), 3521 C.Ay.callBidWonBidder(t.adapterCode || t.bidder, t, e), 3522 t.deferBilling || C.Ay.triggerBilling(t)); 3523 }, 3524 setBidTargeting: function (e) { 3525 (C.Ay.callSetTargetingBidder(e.adapterCode || e.bidder, e), 3526 _.refresh()); 3527 }, 3528 getWinningBids: () => ee, 3529 getAuctionStart: () => j, 3530 getAuctionEnd: () => x, 3531 getTimeout: () => y, 3532 getAuctionId: () => b, 3533 getAuctionStatus: () => X, 3534 getAdUnits: () => g, 3535 getAdUnitCodes: () => h, 3536 getBidRequests: () => $, 3537 getBidsReceived: () => _.toArray(), 3538 getNoBids: () => Z, 3539 getNonBids: () => te, 3540 getFPD: () => l, 3541 getMetrics: () => p, 3542 end: A.promise, 3543 requestsDone: T.promise, 3544 getProperties: re, 3545 } 3546 ); 3547 } 3548 const L = (0, c.u2)( 3549 (0, c.A_)( 3550 "async", 3551 function (e, t, n) { 3552 !(function (e) { 3553 const t = d.$.getConfig("maxBid"); 3554 return !t || !e.cpm || t >= Number(e.cpm); 3555 })(t) 3556 ? n(O.Tf.PRICE_TOO_HIGH) 3557 : (0, $.io)( 3558 _.it, 3559 (0, C.sc)("bidder", t.bidder || t.bidderCode, { 3560 bid: t, 3561 ortb2: ie.index.getOrtb2(t), 3562 adUnit: ie.index.getAdUnit(t), 3563 }), 3564 ) 3565 ? this.dispatch.call(null, e, t) 3566 : n(O.Tf.BIDDER_DISALLOWED); 3567 }, 3568 "addBidResponse", 3569 ), 3570 ), 3571 z = (0, c.A_)("sync", (e) => e, "responsesReady"), 3572 J = (0, c.A_)( 3573 "sync", 3574 function (e) { 3575 this.dispatch.call(this.context, e); 3576 }, 3577 "addBidderRequests", 3578 ), 3579 H = (0, c.A_)( 3580 "async", 3581 function (e, t, n) { 3582 n && n(); 3583 }, 3584 "bidsBackCallback", 3585 ); 3586 function Q(e, t) { 3587 (!(function (e) { 3588 let t; 3589 const n = 3590 !0 === T.u.get(e.bidderCode, "allowZeroCpmBids") 3591 ? e.cpm >= 0 3592 : e.cpm > 0; 3593 e.bidderCode && 3594 (n || e.dealId) && 3595 (t = (function (e, t, { index: n = ie.index } = {}) { 3596 if (!t) return {}; 3597 const r = n.getBidRequest(t); 3598 var i = {}; 3599 const o = ee(t.mediaType, e); 3600 (te(i, o, t, r), 3601 e && 3602 T.u.getOwn(e, O.iD.ADSERVER_TARGETING) && 3603 (te(i, T.u.ownSettingsFor(e), t, r), 3604 (t.sendStandardTargeting = T.u.get( 3605 e, 3606 "sendStandardTargeting", 3607 )))); 3608 return i; 3609 })(e.bidderCode, e)); 3610 e.adserverTargeting = Object.assign(e.adserverTargeting || {}, t); 3611 })(t), 3612 (0, S.BO)(t.metrics).timeSince( 3613 "addBidResponse", 3614 "addBidResponse.total", 3615 ), 3616 e.addBidReceived(t), 3617 I.Ic(O.qY.BID_RESPONSE, t)); 3618 } 3619 function K(e, { index: t = ie.index } = {}) {
3620 const n = t.getBidderRequest(e), 3621 i = (n && n.start) || e.requestTimestamp; 3622 (Object.assign(e, { 3623 responseTimestamp: e.responseTimestamp || (0, r.vE)(), 3624 requestTimestamp: e.requestTimestamp || i, 3625 }), 3626 (e.timeToRespond = e.responseTimestamp - e.requestTimestamp)); 3627 } 3628 function Y(e, t, n) { 3629 if (e && n) { 3630 if ("video" === e) { 3631 const e = t?.video?.context ?? "instream"; 3632 if (n[`video-${e}`]) return n[`video-${e}`]; 3633 } 3634 return n[e]; 3635 } 3636 } 3637 const X = (e) => (t) => { 3638 const n = 3639 e || 3640 ((e, { index: t = ie.index } = {}) => { 3641 const n = Y( 3642 e.mediaType, 3643 t.getMediaTypes(e), 3644 d.$.getConfig("mediaTypePriceGranularity"), 3645 ); 3646 return "string" == typeof e.mediaType && n 3647 ? "string" == typeof n 3648 ? n 3649 : "custom" 3650 : d.$.getConfig("priceGranularity"); 3651 })(t); 3652 return n === O.UE.AUTO 3653 ? t.pbAg 3654 : n === O.UE.DENSE 3655 ? t.pbDg 3656 : n === O.UE.LOW 3657 ? t.pbLg 3658 : n === O.UE.MEDIUM 3659 ? t.pbMg 3660 : n === O.UE.HIGH 3661 ? t.pbHg 3662 : n === O.UE.CUSTOM 3663 ? t.pbCg 3664 : void 0; 3665 }; 3666 function Z(e, t) { 3667 return { 3668 key: e, 3669 val: 3670 "function" == typeof t 3671 ? function (e, n) { 3672 return t(e, n); 3673 } 3674 : function (e) { 3675 return e[t]; 3676 }, 3677 }; 3678 } 3679 function ee(e, t) { 3680 const n = Object.assign({}, T.u.settingsFor(null)); 3681 if ( 3682 (n[O.iD.ADSERVER_TARGETING] || 3683 (n[O.iD.ADSERVER_TARGETING] = [ 3684 Z(O.xS.BIDDER, "bidderCode"), 3685 Z(O.xS.AD_ID, "adId"), 3686 Z(O.xS.PRICE_BUCKET, X()), 3687 Z(O.xS.SIZE, "size"), 3688 Z(O.xS.DEAL, "dealId"), 3689 Z(O.xS.SOURCE, "source"), 3690 Z(O.xS.FORMAT, "mediaType"), 3691 Z(O.xS.ADOMAIN, (e) => 3692 e.meta && 3693 e.meta.advertiserDomains && 3694 e.meta.advertiserDomains.length > 0 3695 ? [e.meta.advertiserDomains].flat()[0] 3696 : "", 3697 ), 3698 Z(O.xS.ACAT, (e) => { 3699 const t = e?.meta?.primaryCatId; 3700 return Array.isArray(t) ? t[0] || "" : t || ""; 3701 }), 3702 Z(O.xS.DSP, (e) => 3703 e.meta && (e.meta.networkId || e.meta.networkName) 3704 ? e?.meta?.networkName || e?.meta?.networkId 3705 : "", 3706 ), 3707 Z(O.xS.CRID, (e) => (e.creativeId ? e.creativeId : "")), 3708 ]), 3709 "video" === e) 3710 ) { 3711 const e = n[O.iD.ADSERVER_TARGETING].slice(); 3712 ((n[O.iD.ADSERVER_TARGETING] = e),
3713 [O.xS.UUID, O.xS.CACHE_ID].forEach((t) => { 3714 void 0 === e.find((e) => e.key === t) && 3715 e.push(Z(t, "videoCacheKey")); 3716 }), 3717 !d.$.getConfig("cache.url") || 3718 (t && !1 === T.u.get(t, "sendStandardTargeting")) || 3719 (void 0 === e.find((e) => e.key === O.xS.CACHE_HOST) && 3720 e.push( 3721 Z(O.xS.CACHE_HOST, function (e) { 3722 return e.cacheUrl 3723 ? (0, r.Dl)(e.cacheUrl).hostname 3724 : e.adserverTargeting?.[O.xS.CACHE_HOST]; 3725 }), 3726 ))); 3727 } 3728 return n; 3729 } 3730 function te(e, t, n, o) { 3731 var s = t[O.iD.ADSERVER_TARGETING]; 3732 return ( 3733 (n.size = n.getSize()), 3734 (s || []).forEach(function (s) { 3735 var a = s.key, 3736 d = s.val; 3737 if ( 3738 (e[a] && (0, r.JE)("The key: " + a + " is being overwritten"), 3739 (0, i.fp)(d)) 3740 ) 3741 try { 3742 d = d(n, o); 3743 } catch (e) { 3744 (0, r.vV)("bidmanager", "ERROR", e); 3745 } 3746 ((void 0 === t.suppressEmptyKeys || 3747 !0 !== t.suppressEmptyKeys) && 3748 a !== O.xS.DEAL && 3749 a !== O.xS.ACAT && 3750 a !== O.xS.DSP && 3751 a !== O.xS.CRID) || 3752 (!(0, r.xQ)(d) && null != d) 3753 ? (e[a] = d) 3754 : (0, r.fH)( 3755 "suppressing empty key '" + 3756 a + 3757 "' from adserver targeting", 3758 ); 3759 }), 3760 e 3761 ); 3762 } 3763 function ne(e, t) { 3764 return ( 3765 e[t.adUnitCode] || (e[t.adUnitCode] = (0, j.O)([])), 3766 e[t.adUnitCode].push(t), 3767 e 3768 ); 3769 } 3770 function re(e) { 3771 Object.assign(this, { 3772 getAuction({ auctionId: t }) { 3773 if (null != t) return e().find((e) => e.getAuctionId() === t); 3774 }, 3775 getAdUnit({ adUnitId: t }) { 3776 if (null != t) 3777 return e() 3778 .flatMap((e) => e.getAdUnits()) 3779 .find((e) => e.adUnitId === t); 3780 }, 3781 getMediaTypes({ adUnitId: e, requestId: t }) { 3782 if (null != t) { 3783 const n = this.getBidRequest({ requestId: t }); 3784 if (null != n && (null == e || n.adUnitId === e)) 3785 return n.mediaTypes; 3786 } else if (null != e) { 3787 const t = this.getAdUnit({ adUnitId: e }); 3788 if (null != t) return t.mediaTypes; 3789 } 3790 }, 3791 getBidderRequest({ requestId: t, bidderRequestId: n }) { 3792 if (null != t || null != n) { 3793 let r = e().flatMap((e) => e.getBidRequests()); 3794 return ( 3795 null != n && (r = r.filter((e) => e.bidderRequestId === n)), 3796 null == t 3797 ? r[0] 3798 : r.find( 3799 (e) => 3800 e.bids && null != e.bids.find((e) => e.bidId === t), 3801 ) 3802 ); 3803 } 3804 }, 3805 getBidRequest({ requestId: t }) { 3806 if (null != t) 3807 return e() 3808 .flatMap((e) => e.getBidRequests()) 3809 .flatMap((e) => e.bids) 3810 .find((e) => e && e.bidId === t); 3811 }, 3812 getOrtb2(e) { 3813 return ( 3814 this.getBidderRequest(e)?.ortb2 || 3815 this.getAuction(e)?.getFPD()?.global?.ortb2 3816 ); 3817 }, 3818 }); 3819 } 3820 const ie = (function () { 3821 const e = (0, U.H)({ 3822 startTime: (e) => e.end.then(() => e.getAuctionEnd()), 3823 ttl: (e) => 3824 e.end.then(() => { 3825 const t = e.getBidsReceived(); 3826 if (0 === t.length) { 3827 const e = (0, D.S9)(); 3828 return null == e ? null : 1e3 * e; 3829 } 3830 const n = t.map((e) => { 3831 const t = (0, D.X9)(e); 3832 return null == t ? null : Math.max(t, e.ttl); 3833 }); 3834 return n.some((e) => null == e) ? null : 1e3 * Math.max(...n); 3835 }), 3836 }); 3837 (0, D.lc)(() => e.refresh()); 3838 const t = { onExpiry: e.onExpiry }; 3839 function n(t) { 3840 for (const n of e) if (n.getAuctionId() === t) return n; 3841 } 3842 function i() { 3843 return e.toArray().flatMap((e) => e.getBidsReceived()); 3844 } 3845 return ( 3846 (t.addWinningBid = function (e) { 3847 const t = (0, S.BO)(e.metrics); 3848 (t.checkpoint("bidWon"), 3849 t.timeBetween("auctionEnd", "bidWon", "adserver.pending"), 3850 t.timeBetween("requestBids", "bidWon", "adserver.e2e")); 3851 const i = n(e.auctionId); 3852 i 3853 ? i.addWinningBid(e) 3854 : (0, r.JE)("Auction not found when adding winning bid"); 3855 }), 3856 Object.entries({ 3857 getAllWinningBids: { name: "getWinningBids" }, 3858 getBidsRequested: { name: "getBidRequests" }, 3859 getNoBids: {}, 3860 getAdUnits: {}, 3861 getBidsReceived: { pre: (e) => e.getAuctionStatus() === N }, 3862 getAdUnitCodes: { post: r.hj }, 3863 }
3863).forEach(([n, { name: r = n, pre: i, post: o }]) => { 3864 const s = 3865 null == i ? (e) => e[r]() : (e) => (i(e) ? e[r]() : []), 3866 a = null == o ? (e) => e : (e) => e.filter(o); 3867 t[n] = () => a(e.toArray().flatMap(s)); 3868 }), 3869 (t.getAllBidsForAdUnitCode = function (e) { 3870 return i().filter((t) => t && t.adUnitCode === e); 3871 }), 3872 (t.createAuction = function (t) { 3873 const n = W(t); 3874 return ( 3875 (function (t) { 3876 e.add(t); 3877 })(n), 3878 n 3879 ); 3880 }), 3881 (t.findBidByAdId = function (e) { 3882 return i().find((t) => t.adId === e); 3883 }), 3884 (t.getStandardBidderAdServerTargeting = function () { 3885 return ee()[O.iD.ADSERVER_TARGETING]; 3886 }), 3887 (t.setStatusForBids = function (r, i) { 3888 const o = t.findBidByAdId(r); 3889 if ((o && (o.status = i), o && i === O.tl.BID_TARGETING_SET)) { 3890 const t = n(o.auctionId); 3891 t && (t.setBidTargeting(o), e.refresh()); 3892 } 3893 }), 3894 (t.getLastAuctionId = function () { 3895 const t = e.toArray(); 3896 return t.length && t[t.length - 1].getAuctionId(); 3897 }), 3898 (t.clearAllAuctions = function () { 3899 e.clear(); 3900 }), 3901 (t.index = new re(() => e.toArray())), 3902 t 3903 ); 3904 })(); 3905 }, 3906 1662(e, t, n) { 3907 n.d(t, { kl: () => l }); 3908 var r = n(7413), 3909 i = n(3350), 3910 o = n(8384), 3911 s = n(1785), 3912 a = n(4864); 3913 const d = "outstream", 3914 c = [ 3915 [ 3916 "mimes", 3917 (e) => 3918 Array.isArray(e) && 3919 e.length > 0 && 3920 e.every((e) => "string" == typeof e), 3921 ], 3922 ["minduration", i.Fq], 3923 ["maxduration", i.Fq], 3924 ["startdelay", i.Fq], 3925 ["maxseq", i.Fq], 3926 ["poddur", i.Fq], 3927 ["protocols", i.Uu], 3928 ["battr", i.Uu], 3929 ["maxextended", i.Fq], 3930 ["minbitrate", i.Fq], 3931 ["maxbitrate", i.Fq], 3932 ["delivery", i.Uu], 3933 ["api", i.Uu], 3934 ["companiontype", i.Uu], 3935 ["feed", i.Fq], 3936 ["stitched", i.Fq], 3937 ["nvol", i.Fq], 3938 ], 3939 u = new Map(c); 3940 function l(e) {} 3941 (0, s.A_)( 3942 "sync", 3943 function (e, t, n, i, s) { 3944 if (n && (s || i !== d)) { 3945 const { url: t, useLocal: n } = o.$.getConfig("cache") || {}; 3946 return t || n || !e.vastXml || e.vastUrl 3947 ? !(!e.vastUrl && !e.vastXml) 3948 : ((0, r.vV)( 3949 `\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\n Try enabling either prebid cache with ${(0, a.k)()}.setConfig({ cache: {url: "..."} });\n or local cache with ${(0, a.k)()}.setConfig({ cache: { useLocal: true }});\n `, 3950 ), 3951 !1); 3952 } 3953 return ( 3954 !(i === d && !s) || 3955 !!(e.renderer || (t && t.renderer) || n.renderer) 3956 ); 3957 }, 3958 "checkAudioBidSetup", 3959 ); 3960 n.d(t, ["Ai", 0, u]); 3961 }, 3962 5423(e, t, n) { 3963 n.d(t, { S9: () => p, X9: () => g, cT: () => f, lc: () => h }); 3964 var r = n(8384), 3965 i = n(7413), 3966 o = n(5521); 3967 const s = "minBidCacheTTL", 3968 a = "minTargetedBidCacheTTL"; 3969 let d = 1, 3970 c = null, 3971 u = null; 3972 const l = []; 3973 function f(e) { 3974 return e.ttl - (e.hasOwnProperty("ttlBuffer") ? e.ttlBuffer : d); 3975 } 3976 function p() { 3977 return c; 3978 } 3979 function g(e) { 3980 const t = c; 3981 return null == t && null == u 3982 ? null 3983 : e?.status === o.tl.BID_TARGETING_SET && "number" == typeof u 3984 ? u 3985 : t; 3986 } 3987 function m() { 3988 l.forEach((e) => e(c)); 3989 } 3990 function h(e) { 3991 l.push(e); 3992 } 3993 (r.$.getConfig("ttlBuffer", (e) => { 3994 "number" == typeof e.ttlBuffer 3995 ? (d = e.ttlBuffer) 3996 : (0, i.vV)("Invalid value for ttlBuffer", e.ttlBuffer); 3997 }), 3998 r.$.getConfig(s, (e) => { 3999 const t = c; 4000 ((c = e?.[s]), 4001 (c = "number" == typeof c ? c : null),
4002 t !== c && m()); 4003 }), 4004 r.$.getConfig(a, (e) => { 4005 const t = u; 4006 ((u = e?.[a]), 4007 (u = "number" == typeof u ? u : null), 4008 t !== u && m()); 4009 })); 4010 }, 4011 5437(e, t, n) { 4012 var r = n(7413), 4013 i = n(8928), 4014 o = n(1129), 4015 s = n(5521); 4016 const a = new (class { 4017 constructor(e, t) { 4018 ((this.getSettings = e), (this.defaultScope = t)); 4019 } 4020 get(e, t) { 4021 let n = this.getOwn(e, t); 4022 return (void 0 === n && (n = this.getOwn(null, t)), n); 4023 } 4024 getOwn(e, t) { 4025 return ( 4026 (e = this.#e(e)), 4027 (0, i.A)(this.getSettings(), `${e}.${t}`) 4028 ); 4029 } 4030 getScopes() { 4031 return Object.keys(this.getSettings()).filter( 4032 (e) => e !== this.defaultScope, 4033 ); 4034 } 4035 settingsFor(e) { 4036 return (0, r.D9)( 4037 {}, 4038 this.ownSettingsFor(null), 4039 this.ownSettingsFor(e), 4040 ); 4041 } 4042 ownSettingsFor(e) {
4043 return ((e = this.#e(e)), this.getSettings()[e] || {}); 4044 } 4045 #e(e) { 4046 return e ?? this.defaultScope; 4047 } 4048 })(() => (0, o.m)().bidderSettings || {}, s.iD.BD_SETTING_STANDARD); 4049 n.d(t, ["u", 0, a]); 4050 }, 4051 7797(e, t, n) { 4052 n.d(t, { O: () => o }); 4053 var r = n(7413); 4054 function i({ 4055 src: e = "client", 4056 bidder: t = "", 4057 bidId: n, 4058 transactionId: i, 4059 adUnitId: o, 4060 auctionId: s, 4061 } = {}) { 4062 var a = e; 4063 (Object.assign(this, { 4064 bidderCode: t, 4065 width: 0, 4066 height: 0, 4067 adId: (0, r.s0)(), 4068 requestId: n, 4069 transactionId: i, 4070 adUnitId: o, 4071 auctionId: s, 4072 mediaType: "banner", 4073 source: a, 4074 }), 4075 (this.getSize = function () { 4076 return this.width + "x" + this.height; 4077 })); 4078 } 4079 function o(e) { 4080 return new i(e); 4081 } 4082 }, 4083 4864(e, t, n) { 4084 n.d(t, { k: () => i, rT: () => s, uP: () => o }); 4085 var r = n(3715); 4086 function i() { 4087 return r.A.pbGlobal; 4088 } 4089 function o() { 4090 return r.A.defineGlobal; 4091 } 4092 function s() { 4093 return r.A.distUrlBase; 4094 } 4095 }, 4096 8384(e, t, n) { 4097 n.d(t, { $: () => m }); 4098 var r = n(6969), 4099 i = n(7413), 4100 o = n(8928), 4101 s = n(3350), 4102 a = n(5521); 4103 const d = "TRUE" === (0, i.Ez)(a.M).toUpperCase(), 4104 c = {}, 4105 u = "random", 4106 l = {}; 4107 ((l[u] = !0), (l.fixed = !0)); 4108 const f = u, 4109 p = { 4110 LOW: "low", 4111 MEDIUM: "medium", 4112 HIGH: "high", 4113 AUTO: "auto", 4114 DENSE: "dense", 4115 CUSTOM: "custom", 4116 }; 4117 function g(e, t = !0) { 4118 const n = t 4119 ? { 4120 priceGranularity: p.MEDIUM, 4121 customPriceBucket: {}, 4122 mediaTypePriceGranularity: {}, 4123 bidderSequence: f, 4124 auctionOptions: {}, 4125 } 4126 : {}, 4127 o = (() => { 4128 const e = [ 4129 "suppressStaleRender", 4130 "suppressExpiredRender", 4131 "legacyRender", 4132 "rejectUnknownMediaTypes", 4133 "rejectInvalidMediaTypes", 4134 ], 4135 t = ["secondaryBidders"], 4136 n = [].concat(e).concat(t); 4137 return function (r) { 4138 if (!(0, s.Qd)(r)) 4139 return ((0, i.JE)("Auction Options must be an object"), !1); 4140 for (const o of Object.keys(r)) { 4141 if (!n.includes(o)) 4142 return ( 4143 (0, i.JE)( 4144 `Auction Options given an incorrect param: ${o}`, 4145 ), 4146 !1 4147 ); 4148 if (t.includes(o)) { 4149 if (!(0, s.cy)(r[o])) 4150 return ( 4151 (0, i.JE)( 4152 `Auction Options ${o} must be of type Array`, 4153 ), 4154 !1 4155 ); 4156 if (!r[o].every(s.O8)) 4157 return ( 4158 (0, i.JE)(`Auction Options ${o} must be only string`), 4159 !1 4160 ); 4161 } else if (e.includes(o) && !(0, s.Lm)(r[o])) 4162 return ( 4163 (0, i.JE)( 4164 `Auction Options ${o} must be of type boolean`, 4165 ), 4166 !1 4167 ); 4168 } 4169 return !0; 4170 }; 4171 })(); 4172 function a(e) { 4173 return n[e]; 4174 } 4175 function d(t, r) { 4176 (n.hasOwnProperty(t) || 4177 Object.defineProperty(e, t, { enumerable: !0 }), 4178 (n[t] = r)); 4179 } 4180 const c = { 4181 publisherDomain: { 4182 set(e) { 4183 (null != e && 4184 (0, i.JE)( 4185 "publisherDomain is deprecated and has no effect since v7 - use pageUrl instead", 4186 ), 4187 d("publisherDomain", e)); 4188 }, 4189 }, 4190 priceGranularity: { 4191 set(e) { 4192 g(e) && 4193 ("string" == typeof e 4194 ? d("priceGranularity", u(e) ? e : p.MEDIUM) 4195 : (0, s.Qd)(e) && 4196 (d("customPriceBucket", e), 4197 d("priceGranularity", p.CUSTOM), 4198 (0, i.OG)("Using custom price granularity"))); 4199 }, 4200 }, 4201 customPriceBucket: {}, 4202 mediaTypePriceGranularity: { 4203 set(e) { 4204 null != e && 4205 d( 4206 "mediaTypePriceGranularity", 4207 Object.keys(e).reduce( 4208 (t, n) => ( 4209 g(e[n]) 4210 ? "string" == typeof e[n] 4211 ? (t[n] = u(e[n]) ? e[n] : a("priceGranularity")) 4212 : (0, s.Qd)(e[n]) && 4213 ((t[n] = e[n]), 4214 (0, i.OG)( 4215 `Using custom price granularity for ${n}`, 4216 )) 4217 : (0, i.JE)( 4218 `Invalid price granularity for media type: ${n}`, 4219 ), 4220 t 4221 ), 4222 {}, 4223 ), 4224 ); 4225 }, 4226 }, 4227 bidderSequence: { 4228 set(e) { 4229 l[e] 4230 ? d("bidderSequence", e) 4231 : (0, i.JE)( 4232 `Invalid order: ${e}. Bidder Sequence was not set.`, 4233 ); 4234 }, 4235 }, 4236 auctionOptions: { 4237 set(e) { 4238 o(e) && d("auctionOptions", e); 4239 }, 4240 }, 4241 }; 4242 return ( 4243 Object.defineProperties( 4244 e, 4245 Object.fromEntries( 4246 Object.entries(c).map(([e, t]) => [ 4247 e, 4248 Object.assign( 4249 { 4250 get: a.bind(null, e), 4251 set: d.bind(null, e), 4252 enumerable: n.hasOwnProperty(e), 4253 configurable: !n.hasOwnProperty(e), 4254 }, 4255 t, 4256 ), 4257 ]), 4258 ), 4259 ), 4260 e 4261 ); 4262 function u(e) { 4263 return Object.keys(p).find((t) => e === p[t]); 4264 } 4265 function g(e) { 4266 if (!e) 4267 return ( 4268 (0, i.vV)( 4269 "Prebid Error: no value passed to `setPriceGranularity()`", 4270 ), 4271 !1 4272 ); 4273 if ("string" == typeof e) 4274 u(e) || 4275 (0, i.JE)( 4276 "Prebid Warning: setPriceGranularity was called with invali
4276d setting, using `medium` as default.", 4277 ); 4278 else if ((0, s.Qd)(e) && !(0, r.q)(e)) 4279 return ( 4280 (0, i.vV)( 4281 "Invalid custom price value passed to `setPriceGranularity()`", 4282 ), 4283 !1 4284 ); 4285 return !0; 4286 } 4287 } 4288 const m = (function () { 4289 const e = []; 4290 let t, 4291 n, 4292 r, 4293 a = null; 4294 function u() { 4295 t = {}; 4296 const e = g({ 4297 debug: d, 4298 bidderTimeout: 3e3, 4299 enableSendAllBids: true, 4300 useBidCache: false, 4301 deviceAccess: true, 4302 disableAjaxTimeout: false, 4303 maxNestedIframes: 10, 4304 maxBid: 5e3, 4305 userSync: { topics: c }, 4306 }); 4307 (n && 4308 v( 4309 Object.keys(n).reduce( 4310 (t, r) => (n[r] !== e[r] && (t[r] = e[r] || {}), t), 4311 {}, 4312 ), 4313 ), 4314 (n = e), 4315 (r = {})); 4316 } 4317 function l() { 4318 if (a && r && (0, s.Qd)(r[a])) { 4319 const e = r[a], 4320 t = new Set([...Object.keys(n), ...Object.keys(e)]), 4321 o = {}; 4322 for (const r of t) { 4323 const t = n[r], 4324 a = e[r]; 4325 o[r] = 4326 void 0 === a 4327 ? t 4328 : void 0 === t 4329 ? a 4330 : (0, s.Qd)(a) 4331 ? (0, i.D9)({}, t, a) 4332 : a; 4333 } 4334 return o; 4335 } 4336 return { ...n }; 4337 } 4338 const [f, p] = [ 4339 l, 4340 function () { 4341 const e = l(); 4342 return ( 4343 Object.defineProperty(e, "ortb2", { 4344 get: function () { 4345 throw new Error( 4346 "invalid access to 'orbt2' config - use request parameters instead", 4347 ); 4348 }, 4349 }), 4350 e 4351 ); 4352 }, 4353 ].map( 4354 (e) => 4355 function (...t) { 4356 if (t.length <= 1 && "function" != typeof t[0]) { 4357 const n = t[0]; 4358 return n ? (0, o.A)(e(), n) : l(); 4359 } 4360 return y(...t); 4361 }, 4362 ), 4363 [m, h] = [p, f].map( 4364 (e) => 4365 function (...t) { 4366 let n = e(...t); 4367 return (n && "object" == typeof n && (n = (0, s.Go)(n)), n); 4368 }, 4369 ); 4370 function b(e) { 4371 if (!(0, s.Qd)(e)) 4372 return void (0, i.vV)("setConfig options must be an object"); 4373 const r = Object.keys(e), 4374 o = {}; 4375 (r.forEach((r) => { 4376 let a = e[r]; 4377 (0, s.Qd)(t[r]) && 4378 (0, s.Qd)(a) && 4379 (a = Object.assign({}, t[r], a)); 4380 try { 4381 o[r] = n[r] = a; 4382 } catch (e) { 4383 (0, i.JE)(`Cannot set config for property ${r} : `, e); 4384 } 4385 }), 4386 v(o)); 4387 } 4388 function y(t, n, r = {}) { 4389 let o = n; 4390 if ( 4391 ("string" != typeof t && ((o = t), (t = "*"), (r = n || {})), 4392 "function" != typeof o) 4393 ) 4394 return void (0, i.vV)("listener must be a function"); 4395 const s = { topic: t, callback: o }; 4396 return ( 4397 e.push(s), 4398 r.init && o("*" === t ? p() : { [t]: p(t) }), 4399 function () { 4400 e.splice(e.indexOf(s), 1); 4401 } 4402 ); 4403 } 4404 function v(t) { 4405 const n = Object.keys(t); 4406 (e 4407 .filter((e) => n.includes(e.topic)) 4408 .forEach((e) => { 4409 e.callback({ [e.topic]: t[e.topic] }); 4410 }), 4411 e.filter((e) =>
4411 "*" === e.topic).forEach((e) => e.callback(t))); 4412 } 4413 function E(e, t = !1) { 4414 try { 4415 (!(function (e) { 4416 if (!(0, s.Qd)(e)) 4417 throw new Error( 4418 "setBidderConfig bidder options must be an object", 4419 ); 4420 if (!Array.isArray(e.bidders) || !e.bidders.length) 4421 throw new Error( 4422 "setBidderConfig bidder options must contain a bidders list with at least 1 bidder", 4423 ); 4424 if (!(0, s.Qd)(e.config)) 4425 throw new Error( 4426 "setBidderConfig bidder options must contain a config object", 4427 ); 4428 })(e), 4429 e.bidders.forEach((n) => { 4430 (r[n] || (r[n] = g({}, !1)), 4431 Object.keys(e.config).forEach((o) => { 4432 const a = e.config[o], 4433 d = r[n][o]; 4434 if ((0, s.Qd)(a) && (null == d || (0, s.Qd)(d))) { 4435 const e = t ? i.D9 : Object.assign; 4436 r[n][o] = e({}, d || {}, a); 4437 } else r[n][o] = a; 4438 })); 4439 })); 4440 } catch (e) { 4441 (0, i.vV)(e); 4442 } 4443 } 4444 function w(e, t) { 4445 a = e; 4446 try { 4447 return t(); 4448 } finally { 4449 A(); 4450 } 4451 } 4452 function A() { 4453 a = null; 4454 } 4455 return ( 4456 u(), 4457 { 4458 getCurrentBidder: function () { 4459 return a; 4460 }, 4461 resetBidder: A, 4462 getConfig: p, 4463 getAnyConfig: f, 4464 readConfig: m, 4465 readAnyConfig: h, 4466 setConfig: b, 4467 mergeConfig: function (e) { 4468 if (!(0, s.Qd)(e)) 4469 return void (0, i.vV)( 4470 "mergeConfig input must be an object", 4471 ); 4472 const t = (0, i.D9)(l(), e); 4473 return ( 4474 b( 4475 Object.keys(e).reduce( 4476 (e, n) => ( 4477 Object.prototype.hasOwnProperty.call(t, n) && 4478 (e[n] = t[n]), 4479 e 4480 ), 4481 {}, 4482 ), 4483 ), 4484 t 4485 ); 4486 }, 4487 setDefaults: function (e) { 4488 (0, s.Qd)(t) 4489 ? (Object.assign(t, e), Object.assign(n, e)) 4490 : (0, i.vV)("defaults must be an object"); 4491 }, 4492 resetConfig: u, 4493 runWithBidder: w, 4494 callbackWithBidder: function (e) { 4495 return function (t) { 4496 return function (...n) { 4497 if ("function" == typeof t) 4498 return w(e, t.bind(this, ...n)); 4499 (0, i.JE)( 4500 "config.callbackWithBidder callback is not a function", 4501 ); 4502 }; 4503 }; 4504 }, 4505 setBidderConfig: E, 4506 getBidderConfig: function () { 4507 return r; 4508 }, 4509 mergeBidderConfig: function (e) { 4510 return E(e, !0); 4511 }, 4512 } 4513 ); 4514 })(); 4515 }, 4516 1068(e, t, n) { 4517 var r = n(7413), 4518 i = n(3350), 4519 o = n(8203), 4520 s = n(8384); 4521 Object.freeze({}); 4522 const a = "gdpr", 4523 d = "gpp", 4524 c = "usp", 4525 u = "coppa"; 4526 function l({ 4527 getMeta: e = (e, t) => ({ generatedAt: t }), 4528 hashFields: t, 4529 } = {}) { 4530 let n, i, s, a, d, c, u, l, f, p; 4531 function g() { 4532 ((s = (0, o.v6)()), 4533 (n = !1), 4534 (d = null),
4535 (c = !1), 4536 (a = null), 4537 (i = !0), 4538 (u = null), 4539 (l = null), 4540 (f = !1), 4541 (p = [])); 4542 } 4543 function m(e) { 4544 return e && t ? t.map((t) => e[t]) : e; 4545 } 4546 function h(e) { 4547 return !(0, r.bD)(m(d), m(e)); 4548 } 4549 function b() { 4550 i && p.forEach((e) => e(d)); 4551 } 4552 function y(e) { 4553 ((i = h(e)), 4554 (d = e), 4555 (f = !1), 4556 (l = null), 4557 (c = !0), 4558 s.resolve(e), 4559 b()); 4560 } 4561 return ( 4562 g(), 4563 { 4564 reset: g, 4565 get generatedTime() { 4566 return a; 4567 }, 4568 enable() { 4569 n = !0; 4570 }, 4571 get enabled() { 4572 return n; 4573 }, 4574 get ready() { 4575 return c; 4576 }, 4577 get promise() { 4578 return c 4579 ? f 4580 ? o.U9.reject(l) 4581 : o.U9.resolve(d) 4582 : (n || y(null), s.promise); 4583 }, 4584 setConsentData(e, t = (0, r.vE)()) { 4585 ((a = t), y(e)); 4586 }, 4587 getConsentData: () => (n ? d : null), 4588 getConsentMeta() { 4589 if (null != a && null != d) return e(d, a); 4590 }, 4591 error: function (e) { 4592 ((i = h(null)), 4593 (d = null), 4594 (c = !0), 4595 (l = e), 4596 (f = !0), 4597 s.reject(e), 4598 b()); 4599 }, 4600 get hash() { 4601 return ( 4602 i && ((u = (0, r.PB)(JSON.stringify(m(d)))), (i = !1)), 4603 u 4604 ); 4605 }, 4606 onChange(e) { 4607 p.push(e); 4608 }, 4609 } 4610 ); 4611 } 4612 const f = l(), 4613 p = l({ 4614 getMeta(e, t) { 4615 if (e.vendorData) 4616 return { 4617 gdprApplies: e.gdprApplies, 4618 consentStringSize: (0, i.O8)(e.vendorData.tcString) 4619 ? e.vendorData.tcString.length 4620 : 0, 4621 generatedAt: t, 4622 apiVersion: e.apiVersion, 4623 }; 4624 }, 4625 hashFields: ["gdprApplies", "consentString"], 4626 }), 4627 g = l({ hashFields: ["applicableSections", "gppString"] }), 4628 m = (() => { 4629 const e = ((e) => 4630 Object.assign(e, { 4631 getCoppa: () => e.getConsentData(), 4632 reset() {}, 4633 }))(l({ getMeta: (e, t) => e })); 4634 return ( 4635 e.enable(), 4636 e.setConsentData(!!s.$.getConfig("coppa")), 4637 s.$.getConfig("coppa", (t) => { 4638 e.setConsentData( 4639 ("object" != typeof t.coppa || !(0, r.Im)(t.coppa)) && 4640 !!t.coppa, 4641 ); 4642 }), 4643 e 4644 ); 4645 })(); 4646 const h = (function () { 4647 const e = {}, 4648 t = {}, 4649 n = {}; 4650 return { 4651 register(r, i, o) { 4652 o && 4653 (((e[i] = e[i] || {})[r] = o), 4654 t.hasOwnProperty(i) 4655 ? t[i] !== o && (t[i] = n) 4656 : (t[i] = o)); 4657 }, 4658 get(r) { 4659 const i = { modules: e[r] || {} }; 4660 return ( 4661 t.hasOwnProperty(r) && t[r] !== n && (i.gvlid = t[r]), 4662 i 4663 ); 4664 }, 4665 }; 4666 })(), 4667 b = { [a]: p, [c]: f, [d]: g, [u]: m }; 4668 const y = (function (e = b) { 4669 const t = Object.entries(e); 4670 function n(e) { 4671 return function () { 4672 return Object.fromEntries(t.map(([t, n]) =>
4672 [t, n[e]()])); 4673 }; 4674 } 4675 const i = n("getConsentData"), 4676 s = n("reset"); 4677 let a; 4678 function d() { 4679 ((a = []), 4680 Object.values(e).forEach((e) => 4681 e.onChange(() => { 4682 a.forEach((e) => e(i())); 4683 }), 4684 )); 4685 } 4686 return ( 4687 d(), 4688 { 4689 getConsentData: i, 4690 onChange(e) { 4691 a.push(e); 4692 }, 4693 get promise() { 4694 return o.U9.all( 4695 t.map(([e, t]) => t.promise.then((t) => [e, t])), 4696 ).then((e) => Object.fromEntries(e)); 4697 }, 4698 get hash() { 4699 return (0, r.PB)(t.map(([e, t]) => t.hash).join(":")); 4700 }, 4701 getConsentMeta: n("getConsentMeta"), 4702 reset() { 4703 (s(), d()); 4704 }, 4705 } 4706 ); 4707 })(); 4708 n.d(t, [ 4709 "SL", 4710 0, 4711 y, 4712 "W1", 4713 0, 4714 {}, 4715 "ad", 4716 0, 4717 g, 4718 "mW", 4719 0, 4720 p, 4721 "o2", 4722 0, 4723 h, 4724 "t6", 4725 0, 4726 f, 4727 ]); 4728 }, 4729 5521(e, t, n) { 4730 n.d(t, [ 4731 "IY", 4732 0, 4733 "__pb_locator__", 4734 "M", 4735 0, 4736 "pbjs_debug", 4737 "RW", 4738 0, 4739 { 4740 SRC: "s2s", 4741 DEFAULT_ENDPOINT: 4742 "https://prebid.adnxs.com/pbs/v1/openrtb2/auction", 4743 SYNCED_BIDDERS_KEY: "pbjsSyncs", 4744 }, 4745 "Tf", 4746 0, 4747 { 4748 INVALID: "Bid has missing or invalid properties", 4749 INVALID_REQUEST_ID: "Invalid request ID", 4750 BIDDER_DISALLOWED: 4751 "Bidder code is not allowed by allowedAlternateBidderCodes / allowUnknownBidderCodes", 4752 FLOOR_NOT_MET: "Bid does not meet price floor", 4753 CANNOT_CONVERT_CURRENCY: "Unable to convert currency", 4754 DSA_REQUIRED: 4755 "Bid does not provide required DSA transparency info", 4756 DSA_MISMATCH: "Bid indicates inappropriate DSA rendering method", 4757 PRICE_TOO_HIGH: "Bid price exceeds maximum value", 4758 }, 4759 "UE", 4760 0, 4761 { 4762 LOW: "low", 4763 MEDIUM: "medium", 4764 HIGH: "high", 4765 AUTO: "auto", 4766 DENSE: "dense", 4767 CUSTOM: "custom", 4768 }, 4769 "Zh", 4770 0, 4771 { 4772 BIDDER: "hb_bidder", 4773 AD_ID: "hb_adid", 4774 PRICE_BUCKET: "hb_pb", 4775 SIZE: "hb_size", 4776 DEAL: "hb_deal", 4777 FORMAT: "hb_format", 4778 UUID: "hb_uuid", 4779 CACHE_HOST: "hb_cache_host", 4780 VERSION: "hb_ver", 4781 }, 4782 "_B", 4783 0, 4784 ["privacyIcon", "clickUrl", "adTemplate", "rendererUrl", "type"], 4785 "as", 4786 0, 4787 { 4788 PREVENT_WRITING_ON_MAIN_DOCUMENT: "preventWritingOnMainDocument", 4789 NO_AD: "noAd", 4790 EXCEPTION: "exception", 4791 CANNOT_FIND_AD: "cannotFindAd", 4792 MISSING_DOC_OR_ADID: "missingDocOrAdid", 4793 }, 4794 "cA", 4795 0, 4796 { bidWon: "adUnitCode" }, 4797 "h0", 4798 0, 4799 { 4800 body: "desc", 4801 body2: "desc2", 4802 sponsoredBy: "sponsored", 4803 cta: "ctatext", 4804 rating: "rating", 4805 address: "address", 4806 downloads: "downloads", 4807 likes: "likes", 4808 phone: "phone", 4809 price: "price", 4810 salePrice: "saleprice", 4811 displayUrl: "displayurl", 4812 }, 4813 "iD", 4814 0, 4815 { 4816 PL_CODE: "code", 4817 PL_SIZE: "sizes", 4818 PL_BIDS: "bids", 4819 BD_BIDDER: "bidder", 4820 BD_ID: "paramsd", 4821 BD_PL_ID: "placementId", 4822 ADSERVER_TARGETING: "adserverTargeting", 4823 BD_SETTING_STANDARD: "standard", 4824 }, 4825 "jO", 4826 0, 4827 { 4828 sponsored: 1, 4829 desc: 2, 4830 rating: 3,
4831 likes: 4, 4832 downloads: 5, 4833 price: 6, 4834 saleprice: 7, 4835 phone: 8, 4836 address: 9, 4837 desc2: 10, 4838 displayurl: 11, 4839 ctatext: 12, 4840 }, 4841 "nl", 4842 0, 4843 { 4844 REQUEST: "Prebid Request", 4845 RESPONSE: "Prebid Response", 4846 NATIVE: "Prebid Native", 4847 EVENT: "Prebid Event", 4848 INTERVENTION: "Prebid Intervention", 4849 }, 4850 "oA", 4851 0, 4852 { ICON: 1, MAIN: 3 }, 4853 "qY", 4854 0, 4855 { 4856 AUCTION_INIT: "auctionInit", 4857 AUCTION_TIMEOUT: "auctionTimeout", 4858 AUCTION_END: "auctionEnd", 4859 BID_ADJUSTMENT: "bidAdjustment", 4860 BID_TIMEOUT: "bidTimeout", 4861 BID_REQUESTED: "bidRequested", 4862 BID_RESPONSE: "bidResponse", 4863 BID_ACCEPTED: "bidAccepted", 4864 BID_REJECTED: "bidRejected", 4865 NO_BID: "noBid", 4866 BID_WON: "bidWon", 4867 BIDDER_DONE: "bidderDone", 4868 BIDDER_ERROR: "bidderError", 4869 SET_TARGETING: "setTargeting", 4870 BEFORE_REQUEST_BIDS: "beforeRequestBids", 4871 BEFORE_BIDDER_HTTP: "beforeBidderHttp", 4872 REQUEST_BIDS: "requestBids", 4873 AD_RENDER_FAILED: "adRenderFailed", 4874 AD_RENDER_SUCCEEDED: "adRenderSucceeded", 4875 TCF2_ENFORCEMENT: "tcf2Enforcement", 4876 AUCTION_DEBUG: "auctionDebug", 4877 BID_VIEWABLE: "bidViewable", 4878 STALE_RENDER: "staleRender", 4879 EXPIRED_RENDER: "expiredRender", 4880 BILLABLE_EVENT: "billableEvent", 4881 PBS_ANALYTICS: "pbsAnalytics", 4882 BEFORE_PBS_HTTP: "beforePBSHttp", 4883 BROWSI_INIT: "browsiInit", 4884 BROWSI_DATA: "browsiData", 4885 BROWSER_INTERVENTION: "browserIntervention", 4886 }, 4887 "tl", 4888 0, 4889 { 4890 BID_TARGETING_SET: "targetingSet", 4891 RENDERED: "rendered", 4892 BID_REJECTED: "bidRejected", 4893 }, 4894 "x5", 4895 0, 4896 { 4897 title: "hb_native_title", 4898 body: "hb_native_body", 4899 body2: "hb_native_body2", 4900 privacyLink: "hb_native_privacy", 4901 privacyIcon: "hb_native_privicon", 4902 sponsoredBy: "hb_native_brand", 4903 image: "hb_native_image", 4904 icon: "hb_native_icon", 4905 clickUrl: "hb_native_linkurl", 4906 displayUrl: "hb_native_displayurl", 4907 cta: "hb_native_cta", 4908 rating: "hb_native_rating", 4909 address: "hb_native_address", 4910 downloads: "hb_native_downloads", 4911 likes: "hb_native_likes", 4912 phone: "hb_native_phone", 4913 price: "hb_native_price", 4914 salePrice: "hb_native_saleprice", 4915 rendererUrl: "hb_renderer_url", 4916 adTemplate: "hb_adTemplate", 4917 }, 4918 "xS", 4919 0, 4920 { 4921 BIDDER: "hb_bidder", 4922 AD_ID: "hb_adid", 4923 PRICE_BUCKET: "hb_pb", 4924 SIZE: "hb_size", 4925 DEAL: "hb_deal", 4926 SOURCE: "hb_source", 4927 FORMAT: "hb_format", 4928 UUID: "hb_uuid", 4929 CACHE_ID: "hb_cache_id", 4930 CACHE_HOST: "hb_cache_host", 4931 ADOMAIN: "hb_adomain", 4932 ACAT: "hb_acat", 4933 CRID: "hb_crid", 4934 DSP: "hb_dsp", 4935 VERSION: "hb_ver", 4936 }, 4937 ]); 4938 }, 4939 6969(e, t, n) { 4940 n.d(t, { j: () => u, q: () => f }); 4941 var r = n(7413), 4942 i = n(8384); 4943 const o = { buckets: [{ max: 5, increment: 0.5 }] }, 4944 s = { buckets: [{ max: 20, increment: 0.1 }] }, 4945 a = { buckets: [{ max: 20, increment: 0.01 }] }, 4946 d = { 4947 buckets: [ 4948 { max: 3, increment: 0.01 }, 4949 { max: 8, increment: 0.05 }, 4950 { max: 20, increment: 0.5 }, 4951 ], 4952 }, 4953 c = { 4954 buckets: [ 4955 { max: 5, increment: 0.05 }, 4956 { max: 10, increment: 0.1 }, 4957 { max: 20, increment: 0.5 }, 4958 ], 4959 }; 4960 function u(e, t, n = 1) { 4961 let r = parseFloat(e); 4962 return ( 4963 isNaN(r) && (r = ""), 4964 { 4965 low: "" === r ? "" : l(e, o, n), 4966 med: "" === r ? "" : l(e, s, n), 4967 high: "" === r ? "" : l(e, a, n), 4968 auto: "" === r ? "" : l(e, c, n), 4969 dense: "" === r ? "" : l(e, d, n), 4970 custom: "" === r ? "" : l(e, t, n), 4971 } 4972 ); 4973 } 4974 function l(e, t, n) { 4975 let o = ""; 4976 if (!f(t)) return o; 4977 const s = t.buckets.reduce((e, t) => (e.max > t.max ? e : t), { 4978 max: 0, 4979 }); 4980 let a = 0; 4981 const d = t.buckets.find((t) => { 4982 if (e > s.max * n) { 4983 let e = t.precision; 4984 (void 0 === e && (e = 2), (o = (t.max * n).toFixed(e))); 4985 } else { 4986 if (e <= t.max * n && e >= a * n) return ((t.min = a), t); 4987 a = t.max; 4988 } 4989 }); 4990 return ( 4991 d && 4992 (o = (function (e, t, n) { 4993 const o = void 0 !== t.precision ? t.precision : 2, 4994 s = t.increment * n, 4995 a = t.min * n; 4996 let d = Math.floor; 4997 const c = i.$.getConfig("cpmRoundingFunction"); 4998 "function" == typeof c && (d = c); 4999 const u = Math.pow(10, o + 2), 5000 l = (e * u - a * u) / (s * u); 5001 let f, p; 5002 try { 5003 f = d(l) * s + a; 5004 } catch (e) { 5005 p = !0; 5006 } 5007 (p || "number" != typeof f) && 5008 ((0, r.JE)("Invalid rounding function passed in config"), 5009 (f = Math.floor(l) * s + a)); 5010 return ((f = Number(f.toFixed(10))), f.toFixed(o)); 5011 })(e, d, n)), 5012 o 5013 ); 5014 } 5015 function f(e) { 5016 if ((0, r.Im)(e) || !e.buckets || !Array.isArray(e.buckets)) 5017 return !1; 5018 let t = !0; 5019 return (
5020 e.buckets.forEach((e) => { 5021 (e.max && e.increment) || (t = !1); 5022 }), 5023 t 5024 ); 5025 } 5026 }, 5027 3895(e, t, n) { 5028 n.d(t, { DX: () => c, HH: () => l, kj: () => u }); 5029 var r = n(8203), 5030 i = n(7413), 5031 o = n(1852), 5032 s = n(157), 5033 a = n(1785), 5034 d = n(5595); 5035 const c = (0, a.A_)("sync", function (e) { 5036 return o.G; 5037 }), 5038 u = function (e) { 5039 return (0, d.Hd)(e) ? s.G : c(e); 5040 }, 5041 l = (function () { 5042 const e = {}; 5043 return function (t) { 5044 const n = u(t); 5045 return ( 5046 e.hasOwnProperty(n) || 5047 (e[n] = new r.U9((e) => { 5048 const r = (0, i.CA)(); 5049 r.srcdoc = `\n <script>${n}<\/script>\n <script>\n window.parent.postMessage(\n { type: 'RENDERER_READY_${t.adId}' },\n '*'\n );<\/script>`; 5050 const o = (n) => { 5051 n.source === r.contentWindow && 5052 n.data?.type === `RENDERER_READY_${t.adId}` && 5053 (window.removeEventListener("message", o), 5054 e(r.contentWindow.render)); 5055 }; 5056 (window.addEventListener("message", o), 5057 document.body.appendChild(r)); 5058 })), 5059 e[n] 5060 ); 5061 }; 5062 })(); 5063 }, 5064 8693(e, t, n) { 5065 n.d(t, { $: () => r }); 5066 function r(e) { 5067 return (e ?? []).reduce((e, { event: t, method: n, url: r }) => { 5068 const i = (e[t] = e[t] ?? {}); 5069 return ((i[n] = i[n] ?? []).push(r), e); 5070 }, {}); 5071 } 5072 }, 5073 3399(e, t, n) { 5074 var r = n(7413), 5075 i = n(5521), 5076 o = n(7834), 5077 s = n(8384), 5078 a = n(1343); 5079 const d = "eventHistoryTTL"; 5080 let c = null; 5081 const u = (0, o.H)({ monotonic: !0, ttl: () => c }); 5082 s.$.getConfig(d, (e) => { 5083 const t = c, 5084 n = e?.[d]; 5085 ((c = "number" == typeof n ? 1e3 * n : null), 5086 t !== c && u.refresh()); 5087 }); 5088 let l = Object.values(i.qY); 5089 const f = i.cA; 5090 let p = 0; 5091 const g = new WeakMap(), 5092 m = (function () { 5093 const e = {}; 5094 function t(e) { 5095 return l.includes(e); 5096 } 5097 function n(n, i, o) { 5098 if (t(n)) { 5099 const t = e[n] || { que: [] }; 5100 (o 5101 ? ((t[o] = t[o] || { que: [] }), t[o].que.push(i)) 5102 : t.que.push(i), 5103 (e[n] = t)); 5104 } else 5105 r.vV("Wrong event name : " + n + " Valid event names :" + l); 5106 } 5107 return { 5108 has: t, 5109 listen: n, 5110 on: function (e, t, r) { 5111 const i = g.has(t) ? g.get(t) : (e, ...n) => t(...n); 5112 (g.set(t, i), n(e, i, r)); 5113 }, 5114 emit: function (t, ...n) { 5115 !(function (t, n) { 5116 r.OG("Emitting event for: " + t); 5117 const i = n[0] || {}, 5118 o = i[f[t]], 5119 s = e[t] || { que: [] }; 5120 var a = Object.keys(s); 5121 const d = [], 5122 c = { 5123 eventType: t, 5124 args: i, 5125 id: o, 5126 elapsedTime: r.V(), 5127 sequence: p++, 5128 }; 5129 (u.add(c), 5130 o && a.includes(o) && d.push(...s[o].que), 5131 d.push(...s.que),
5132 (d || []).forEach(function (e) { 5133 if (e) 5134 try { 5135 e(c, ...n); 5136 } catch (e) { 5137 r.vV("Error executing handler:", "events.js", e, t); 5138 } 5139 })); 5140 })(t, n); 5141 }, 5142 off: function (t, n, i) { 5143 null != n && g.has(n) && (n = g.get(n)); 5144 const o = e[t]; 5145 if (r.Im(o) || (r.Im(o.que) && r.Im(o[i]))) return; 5146 if (i && (r.Im(o[i]) || r.Im(o[i].que))) return; 5147 const s = (e) => e.filter((e) => e !== n); 5148 (i && o[i].que?.length > 0 5149 ? (o[i].que = s(o[i].que)) 5150 : o.que?.length > 0 && (o.que = s(o.que)), 5151 (e[t] = o)); 5152 }, 5153 get: function () { 5154 return e; 5155 }, 5156 addEvents: function (e) { 5157 l = l.concat(e); 5158 }, 5159 getEvents: function () { 5160 return u.toArray().map((e) => Object.assign({}, e)); 5161 }, 5162 }; 5163 })(); 5164 (0, a.cD)(m.emit.bind(m)); 5165 const { 5166 on: h, 5167 off: b, 5168 get: y, 5169 getEvents: v, 5170 emit: E, 5171 addEvents: w, 5172 has: A, 5173 listen: T, 5174 } = m; 5175 n.d(t, ["AU", 0, b, "Ic", 0, E, "kQ", 0, v, "on", 0, h]); 5176 }, 5177 7850(e, t, n) { 5178 n.d(t, { O$: () => s, i8: () => o }); 5179 var r = n(7413); 5180 const i = ["dooh", "app", "site"]; 5181 function o(e) { 5182 return function (t) { 5183 return ( 5184 i.reduce( 5185 (n, i) => ( 5186 s(t, i) && 5187 (null != n 5188 ? ((0, r.JE)( 5189 `${e} specifies both '${n}' and '${i}'; dropping the latter.`, 5190 ), 5191 delete t[i]) 5192 : (n = i)), 5193 n 5194 ), 5195 null, 5196 ), 5197 t 5198 ); 5199 }; 5200 } 5201 function s(e, t) { 5202 return null != e[t] && Object.keys(e[t]).length > 0; 5203 } 5204 n.d(t, ["Dy", 0, i]); 5205 }, 5206 1785(e, t, n) { 5207 n.d(t, { Y6: () => c, u2: () => u }); 5208 var r = n(5481), 5209 i = n.n(r), 5210 o = n(8203); 5211 const s = i()({ ready: i().SYNC | i().ASYNC | i().QUEUE }), 5212 a = (0, o.v6)(); 5213 s.ready = (() => { 5214 const e = s.ready; 5215 return function () { 5216 try { 5217 return e.apply(s); 5218 } finally { 5219 a.resolve(); 5220 } 5221 }; 5222 })(); 5223 a.promise; 5224 const d = s.get; 5225 function c(e, t) { 5226 return ( 5227 Object.defineProperties( 5228 t, 5229 Object.fromEntries( 5230 ["before", "after", "getHooks", "removeAll"].map((t) => [ 5231 t, 5232 { get: () => e[t] }, 5233 ]), 5234 ), 5235 ), 5236 t 5237 ); 5238 } 5239 function u(e) { 5240 return c(e, function (...t) { 5241 return (t.push(function () {}), e.apply(this, t)); 5242 }); 5243 } 5244 n.d(t, ["A_", 0, s, "Yn", 0, d]); 5245 }, 5246 5657(e, t, n) { 5247 n.d(t, { 5248 Bm: () => y, 5249 IX: () => I, 5250 gs: () => E, 5251 l6: () => g, 5252 mT: () => u, 5253 nk: () => h, 5254 vO: () => v, 5255 yl: () => C, 5256 }); 5257 var r = n(7413), 5258 i = n(3350), 5259 o = n(6825), 5260 s = n(5521), 5261 a = n(5595), 5262 d = n(3895), 5263 c = n(8693); 5264 const u = [], 5265 l = { 5266 image: { 5267 ortb: { 5268 ver: "1.2", 5269 assets: [ 5270 { 5271 required: 1, 5272 id: 1, 5273 img: { type: 3, wmin: 100, hmin: 100 }, 5274 }, 5275 { required: 1, id: 2, title: { len: 140 } }, 5276 { required: 1, id: 3, data: { type: 1 } }, 5277 { required: 0, id: 4, data: { type: 2 } }, 5278 { 5279 required: 0, 5280 id: 5, 5281 img: { type: 1, wmin: 20, hmin: 20 }, 5282 }, 5283 ], 5284 }, 5285 image: { required: !0 }, 5286 title: { required: !0 }, 5287 sponsoredBy: { required: !0 }, 5288 clickUrl: { required: !0 }, 5289 body: { required: !1 }, 5290 icon: { required: !1 }, 5291 }, 5292 }, 5293 f = R(s.h0), 5294 p = R(s.jO); 5295 function g(e) { 5296 return null != e.native && "object" == typeof e.native; 5297 } 5298 function m(e) { 5299 if ( 5300 (e && 5301 e.type && 5302 (function (e) { 5303 if (!e || !Object.keys(l).includes(e)) 5304 return ((0, r.vV)(`${e} nativeParam is not supported`), !1); 5305 return !0; 5306 })(e.type) && 5307 (e = l[e.type]), 5308 !e || !e.ortb || b(e.ortb)) 5309 ) 5310 return e; 5311 } 5312 function h(e) { 5313 e.forEach((e) => { 5314 const t = e.nativeParams || e?.mediaTypes?.native; 5315 (t && (e.nativeParams = m(t)), 5316 e.nativeParams && 5317 (e.nativeOrtbRequest = 5318 e.nativeParams.ortb || 5319 (function (e) { 5320 if (!e && !(0, i.Qd)(e)) 5321 return void (0, r.vV)( 5322 "Native assets object is empty or not an object: ", 5323 e, 5324 ); 5325 const t = { ver: "1.2", assets: [] }; 5326 for (const n in e) { 5327 if (s._B.includes(n)) continue; 5328 if (!s.x5.hasOwnProperty(n)) { 5329 (0, r.vV)( 5330 `Unrecognized native asset code: ${n}. Asset will be ignored.`, 5331 ); 5332 continue; 5333 } 5334 if ("privacyLink" === n) { 5335 t.privacy = 1; 5336 continue; 5337 } 5338 const o = e[n]; 5339 let a = 0; 5340 o.required && 5341 (0, i.Lm)(o.required) && 5342 (a = Number(o.required)); 5343 const d = { id: t.assets.length, required: a }; 5344 if (n in s.h0) 5345 ((d.data = { type: s.jO[s.h0[n]] }), 5346 o.len && (d.data.len = o.len)); 5347 else if ("icon" === n || "image" === n) { 5348 if ( 5349 ((d.img = { 5350 type: "icon" === n ? s.oA.ICON : s.oA.MAIN, 5351 }), 5352 o.aspect_ratios) 5353 ) 5354 if ((0, i.cy)(o.aspect_ratios)) 5355 if (o.aspect_ratios.length) { 5356 const { min_width: e, min_height: t } = 5357 o.aspect_ratios[0]; 5358 (0, i.Fq)(e) && (0, i.Fq)(t) 5359 ? ((d.img.wmin = e), (d.img.hmin = t)) 5360 : (0, r.vV)(
5361 "image.aspect_ratios min_width or min_height are invalid: ", 5362 e, 5363 t, 5364 ); 5365 const n = o.aspect_ratios 5366 .filter( 5367 (e) => e.ratio_width && e.ratio_height, 5368 ) 5369 .map( 5370 (e) => `${e.ratio_width}:${e.ratio_height}`, 5371 ); 5372 n.length > 0 && 5373 (d.img.ext = { aspectratios: n }); 5374 } else 5375 (0, r.vV)( 5376 "image.aspect_ratios was passed, but it's empty:", 5377 o.aspect_ratios, 5378 ); 5379 else 5380 (0, r.vV)( 5381 "image.aspect_ratios was passed, but it's not a an array:", 5382 o.aspect_ratios, 5383 ); 5384 o.sizes && 5385 (2 === o.sizes.length && 5386 (0, i.Fq)(o.sizes[0]) && 5387 (0, i.Fq)(o.sizes[1]) 5388 ? ((d.img.w = o.sizes[0]), 5389 (d.img.h = o.sizes[1]), 5390 delete d.img.hmin, 5391 delete d.img.wmin) 5392 : (0, r.vV)( 5393 "image.sizes was passed, but its value is not an array of integers:", 5394 o.sizes, 5395 )); 5396 } else 5397 "title" === n 5398 ? (d.title = { len: o.len || 140 }) 5399 : "ext" === n && ((d.ext = o), delete d.required); 5400 t.assets.push(d); 5401 } 5402 return t; 5403 })(e.nativeParams))); 5404 }); 5405 } 5406 function b(e) { 5407 const t = e.assets; 5408 if (!Array.isArray(t) || 0 === t.length) 5409 return ( 5410 (0, r.vV)( 5411 "assets in mediaTypes.native.ortb is not an array, or it's empty. Assets: ", 5412 t, 5413 ), 5414 !1 5415 ); 5416 const n = t.map((e) => e.id); 5417 return t.length !== new Set(n).size || 5418 n.some((e) => e !== parseInt(e, 10)) 5419 ? ((0, r.vV)( 5420 "each asset object must have 'id' property, it must be unique and it must be an integer", 5421 ), 5422 !1) 5423 : e.hasOwnProperty("eventtrackers") && 5424 !Array.isArray(e.eventtrackers) 5425 ? ((0, r.vV)( 5426 "ortb.eventtrackers is not an array. Eventtrackers: ", 5427 e.eventtrackers, 5428 ), 5429 !1) 5430 : t.every((e) => 5431 (function (e) { 5432 if (!(0, i.Qd)(e)) 5433 return ( 5434 (0, r.vV)( 5435 "asset must be an object. Provided asset: ", 5436 e, 5437 ), 5438 !1 5439 ); 5440 if (e.img) { 5441 if (!(0, i.Et)(e.img.w) && !(0, i.Et)(e.img.wmin)) 5442 return ( 5443 (0, r.vV)( 5444 "for img asset there must be 'w' or 'wmin' property", 5445 ), 5446 !1 5447 ); 5448 if (!(0, i.Et)(e.img.h) && !(0, i.Et)(e.img.hmin)) 5449 return ( 5450 (0, r.vV)( 5451 "for img asset there must be 'h' or 'hmin' property", 5452 ), 5453 !1 5454 ); 5455 } else if (e.title) { 5456 if (!(0, i.Et)(e.title.len)) 5457 return ( 5458 (0, r.vV)( 5459 "for title asset there must be 'len' property defined", 5460 ), 5461 !1 5462 ); 5463 } else if (e.data) { 5464 if (!(0, i.Et)(e.data.type)) 5465 return ( 5466 (0, r.vV)( 5467 "for data asset 'type' property must be a number", 5468 ), 5469 !1 5470 ); 5471 } else if ( 5472 e.video && 5473 !( 5474 Array.isArray(e.video.mimes) && 5475 Array.isArray(e.video.protocols) && 5476 (0, i.Et)(e.video.minduration) && 5477 (0, i.Et)(e.video.maxduration) 5478 ) 5479 ) 5480 return ( 5481 (0, r.vV)("video asset is not properly configured"), 5482 !1 5483 ); 5484 return !0; 5485 })(e), 5486 ); 5487 } 5488 function y(e, { index: t = o.n.index } = {}) { 5489 const n = t.getAdUnit(e); 5490 if (!n) return !1; 5491 const i = n.nativeOrtbRequest; 5492 return (function (e, t) { 5493 if (!e?.link?.url) 5494 return ( 5495 (0, r.vV)( 5496 "native response doesn't have 'link' property. Ortb response: ", 5497 e, 5498 ), 5499 !1 5500 ); 5501 const n = t.assets 5502 .filter((e) => 1 === e.required) 5503 .map((e) => e.id), 5504 i = e.assets.map((e) => e.id), 5505 o = n.every((e) => i.includes(e)); 5506 o || 5507 (0, r.vV)( 5508 `didn't receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${i}`, 5509 ); 5510 return o; 5511 })(e.native?.ortb || S(e.native, i), i); 5512 } 5513 function v(e, t) { 5514 const n = t.native.ortb || B(t.native); 5515 return ( 5516 "click" === e.action 5517 ? (function (e, t = null, { fetchURL: n = r.z$ } = {}) { 5518 if (t) { 5519 const r = (e.assets || []) 5520 .filter((e) => e.link) 5521 .reduce((e, t) => ((e[t.id] = t.link), e), {}), 5522 i = e.link?.clicktrackers || [], 5523 o = r[t]; 5524 let s = i; 5525 (o && (s = o.clicktrackers || []),
5526 s.forEach((e) => n(e))); 5527 } else (e.link?.clicktrackers || []).forEach((e) => n(e)); 5528 })(n, e?.assetId) 5529 : (function ( 5530 e, 5531 t, 5532 { 5533 runMarkup: n = (e) => (0, r.ro)(e), 5534 fetchURL: i = r.z$, 5535 } = {}, 5536 ) { 5537 const s = (function (e, t) { 5538 const n = [ 5539 { event: 1, methods: [1, 2] }, 5540 { event: 2, methods: [1, 2] }, 5541 ], 5542 r = (o.n.index.getMediaTypes(t) || {}).native || {}, 5543 i = r.ortb?.eventtrackers || n, 5544 { eventtrackers: s = [] } = e || {}; 5545 return s.filter((e) => 5546 i.some( 5547 (t) => 5548 t.event === e.event && t.methods.includes(e.method), 5549 ), 5550 ); 5551 })(e, t); 5552 let { 1: a = [], 2: d = [] } = (0, c.$)(s || [])[1] || {}; 5553 e.imptrackers && (a = a.concat(e.imptrackers)); 5554 (a.forEach((e) => i(e)), 5555 (d = d.map((e) => `<script async src="${e}"><\/script>`)), 5556 e.jstracker && (d = d.concat([e.jstracker]))); 5557 d.length && n(d.join("\n")); 5558 })(n, t), 5559 e.action 5560 ); 5561 } 5562 function E(e, t) { 5563 const n = t?.nativeOrtbRequest, 5564 r = e.native?.ortb; 5565 if (n && r) { 5566 const t = (function (e, t) { 5567 const n = {}, 5568 r = t?.assets || []; 5569 ((n.clickUrl = e.link?.url), (n.privacyLink = e.privacy)); 5570 for (const t of e?.assets || []) { 5571 const e = r.find((e) => t.id === e.id); 5572 t.title 5573 ? (n.title = t.title.text) 5574 : t.img 5575 ? (n[e?.img?.type === s.oA.MAIN ? "image" : "icon"] = { 5576 url: t.img.url, 5577 width: t.img.w, 5578 height: t.img.h, 5579 }) 5580 : t.data && (n[f[p[e?.data?.type]]] = t.data.value); 5581 } 5582 n.impressionTrackers = []; 5583 let i = []; 5584 e.imptrackers && n.impressionTrackers.push(...e.imptrackers); 5585 for (const t of e?.eventtrackers || []) 5586 (1 === t.event && 5587 1 === t.method && 5588 n.impressionTrackers.push(t.url), 5589 1 === t.event && 2 === t.method && i.push(t.url)); 5590 ((i = i.map((e) => `<script async src="${e}"><\/script>`)), 5591 e?.jstracker && i.push(e.jstracker)); 5592 i.length && (n.javascriptTrackers = i.join("\n")); 5593 return n; 5594 })(r, n); 5595 Object.assign(e.native, t); 5596 } 5597 ["rendererUrl", "adTemplate"].forEach((n) => { 5598 const r = t?.nativeParams?.[n]; 5599 r && (e.native[n] = O(r)); 5600 }); 5601 } 5602 function w(e, t, n = !1) { 5603 const r = []; 5604 return ( 5605 Object.entries(e) 5606 .filter( 5607 ([e, r]) => 5608 r && 5609 ((!1 === n && "ext" === e) || null == t || t.includes(e)), 5610 ) 5611 .forEach(([e, i]) => { 5612 !1 === n && "ext" === e 5613 ? r.push(...w(i, t, !0)) 5614 : (n || s.x5.hasOwnProperty(e)) && 5615 r.push({ key: e, value: O(i) }); 5616 }), 5617 r 5618 ); 5619 } 5620 function A(e, t, n, { index: r = o.n.index } = {}) { 5621 const c = { message: "assetResponse", adId: e.adId }; 5622 let u = (0, a.vd)(t).native; 5623 return ( 5624 u 5625 ? ((c.native = Object.assign({}, u)), 5626 (c.renderer = (0, d.DX)(t)), 5627 (c.rendererVersion = 3), 5628 null != n && 5629 (u.assets = u.assets.filter(({ key: e }) => n.includes(e)))) 5630 : (u = (function (e, t, n) { 5631 const r = { 5632 ...(0, i.SH)(e.native, ["rendererUrl", "adTemplate"]), 5633 assets: w(e.native, n), 5634 nativeKeys: s.x5, 5635 }; 5636 return ( 5637 e.native.ortb 5638 ? (r.ortb = e.native.ortb) 5639 : t.mediaTypes?.native?.ortb && 5640 (r.ortb = S(e.native, t.nativeOrtbRequest)), 5641 r 5642 ); 5643 })(t, r.getAdUnit(t), n)), 5644 Object.assign(c, u) 5645 ); 5646 } 5647 const T = Object.fromEntries( 5648 Object.entries(s.x5).map(([e, t]) => [t, e]), 5649 ); 5650 function I(e, t) { 5651 const n = e.assets.map((e) => T[e]); 5652 return A(e, t, n); 5653 } 5654 function C(e, t) { 5655 return A(e, t, null); 5656 } 5657 function O(e) { 5658 return e?.url || e; 5659 } 5660 function B(e) { 5661 const t = { link: {}, eventtrackers: [] }; 5662 return ( 5663 Object.entries(e).forEach(([e, n]) => { 5664 switch (e) { 5665 case "clickUrl": 5666 t.link.url = n; 5667 break; 5668 case "clickTrackers": 5669 t.link.clicktrackers = Array.isArray(n) ? n : [
5669n]; 5670 break; 5671 case "impressionTrackers": 5672 (Array.isArray(n) ? n : [n]).forEach((e) => { 5673 t.eventtrackers.push({ event: 1, method: 1, url: e }); 5674 }); 5675 break; 5676 case "javascriptTrackers": 5677 t.jstracker = Array.isArray(n) ? n.join("") : n; 5678 break; 5679 case "privacyLink": 5680 t.privacy = n; 5681 } 5682 }), 5683 t 5684 ); 5685 } 5686 function S(e, t) { 5687 const n = { ...B(e), assets: [] }; 5688 function r(e, r) { 5689 let o = t.assets.find(e); 5690 null != o && ((o = (0, i.Go)(o)), r(o), n.assets.push(o)); 5691 } 5692 return ( 5693 Object.keys(e) 5694 .filter((t) => !!e[t]) 5695 .forEach((t) => { 5696 const n = O(e[t]); 5697 switch (t) { 5698 case "title": 5699 r( 5700 (e) => null != e.title, 5701 (e) => { 5702 e.title = { text: n }; 5703 }, 5704 ); 5705 break; 5706 case "image": 5707 case "icon": 5708 const e = "image" === t ? s.oA.MAIN : s.oA.ICON; 5709 r( 5710 (t) => null != t.img && t.img.type === e, 5711 (e) => { 5712 e.img = { url: n }; 5713 }, 5714 ); 5715 break; 5716 default: 5717 t in s.h0 && 5718 r( 5719 (e) => 5720 null != e.data && e.data.type === s.jO[s.h0[t]], 5721 (e) => { 5722 e.data = { value: n }; 5723 }, 5724 ); 5725 } 5726 }), 5727 n 5728 ); 5729 } 5730 function R(e) { 5731 var t = {}; 5732 for (var n in e) t[e[n]] = n; 5733 return t; 5734 } 5735 }, 5736 80(e, t, n) { 5737 const r = ["request", "imp", "bidResponse", "response"], 5738 [i, o, s, a] = r, 5739 [d, c] = ["default", "pbs"], 5740 u = new Set(r); 5741 const { registerOrtbProcessor: l, getProcessors: f } = (function () { 5742 const e = {}; 5743 return { 5744 registerOrtbProcessor({ 5745 type: t, 5746 name: n, 5747 fn: i, 5748 priority: o = 0, 5749 dialects: s = [d], 5750 }) { 5751 if (!u.has(t)) 5752 throw new Error( 5753 `ORTB processor type must be one of: ${r.join(", ")}`, 5754 ); 5755 s.forEach((r) => { 5756 (e.hasOwnProperty(r) || (e[r] = {}), 5757 e[r].hasOwnProperty(t) || (e[r][t] = {}), 5758 (e[r][t][n] = { priority: o, fn: i })); 5759 }); 5760 }, 5761 getProcessors: (t) => e[t] || {}, 5762 }; 5763 })(); 5764 n.d(t, [ 5765 "Cf", 5766 0, 5767 a, 5768 "S3", 5769 0, 5770 i, 5771 "Tb", 5772 0, 5773 o, 5774 "WR", 5775 0, 5776 s, 5777 "e4", 5778 0, 5779 c, 5780 "qN", 5781 0, 5782 d, 5783 "yB", 5784 0, 5785 f, 5786 "zt", 5787 0, 5788 r, 5789 ]); 5790 }, 5791 7824(e, t, n) { 5792 var r = n(1129), 5793 i = n(7413), 5794 o = {}; 5795 (n.r(o), 5796 n.d(o, { 5797 _each: () => i.bu, 5798 _map: () => i.K2, 5799 binarySearch: () => i.El, 5800 buildUrl: () => i.c$, 5801 canAccessWindowTop: () => i.av, 5802 checkCookieSupport: () => i.GE, 5803 cleanObj: () => i.tT, 5804 compareCodeAndSlot: () => i.sC, 5805 compressDataWithGZip: () => i.ZK, 5806 contains: () => i.gR, 5807 convertObjectToArray: () => i.n_, 5808 createIframe: () => i.hw, 5809 createInvisibleIframe: () => i.CA, 5810 createTrackPixelHtml: () => i.Tz, 5811 cyrb53Hash: () => i.PB, 5812 debugTurnedOn: () => i.dp, 5813 deepAccess: () => i.Fe, 5814 deepClone: () => i.Go, 5815 deepEqual: () => i.bD, 5816 deepSetValue: () => i.qL, 5817 delayExecution: () => i.U6, 5818 encodeMacroURI: () => i.Bk, 5819 extractDomainFromHost: () => i.M3, 5820 flatten: () => i.Bq, 5821 formatQS: () => i.eP, 5822 generateUUID: () => i.lk, 5823 getBidIdParameter: () => i.u5, 5824 getBidRequest: () => i.D4, 5825 getBidderCodes: () => i.ZA, 5826 getDefinedParams: () => i.SH, 5827 getDocument: () => i.YE, 5828 getDomLoadingDuration: () => i.tf, 5829 getFallbackWindow: () => i.x, 5830 getParameterByName: () => i.Ez, 5831 getPerformanceNow: () => i.V, 5832 getPrebidInternal: () => i.YI, 5833 getSafeframeGeometry: () => i.xV, 5834 getScreenOrientation: () => i.Vv, 5835 getUniqueIdentifierStr: () => i.s0, 5836 getUnixTimestampFromNow: () => i.Ni, 5837 getUserConfiguredParams: () => i.SB, 5838 getValue: () => i._W, 5839 getWinDimensions: () => i.Ot, 5840 getWindowLocation: () => i.KQ, 5841 getWindowSelf: () => i.l4, 5842 getWindowTop: () => i.mb, 5843 groupBy: () => i.$z, 5844 hasDeviceAccess: () => i.N9, 5845 hasNonSerializableProperty: () => i.kL, 5846 inIframe: () => i.al, 5847 insertElement: () => i._s, 5848 insertHtmlIntoIframe: () => i.ro, 5849 insertUserSyncIframe: () => i.SG, 5850 internal: () => i.mM,
5851 isAdUnitCodeMatchingSlot: () => i.iC, 5852 isApnGetTagDefined: () => i.t1, 5853 isArray: () => i.cy, 5854 isArrayOfNums: () => i.Uu, 5855 isBoolean: () => i.Lm, 5856 isChromeIOSBrowser: () => i.yW, 5857 isEmpty: () => i.Im, 5858 isEmptyStr: () => i.xQ, 5859 isFirefoxBrowser: () => i.M_, 5860 isFn: () => i.fp, 5861 isGptPubadsDefined: () => i.II, 5862 isGzipCompressionSupported: () => i.nT, 5863 isInteger: () => i.Fq, 5864 isNumber: () => i.Et, 5865 isPlainObject: () => i.Qd, 5866 isSafariBrowser: () => i.Vt, 5867 isSafeFrameWindow: () => i.Jw, 5868 isStr: () => i.O8, 5869 isValidMediaTypes: () => i.wD, 5870 logError: () => i.vV, 5871 logInfo: () => i.fH, 5872 logMessage: () => i.OG, 5873 logWarn: () => i.JE, 5874 memoize: () => i.Bj, 5875 mergeDeep: () => i.D9, 5876 parseGPTSingleSizeArray: () => i.n7, 5877 parseGPTSingleSizeArrayToRtbSize: () => i.nX, 5878 parseQS: () => i.u4, 5879 parseQueryStringParameters: () => i.bL, 5880 parseSizesInput: () => i.kK, 5881 parseUrl: () => i.Dl, 5882 pick: () => i.Up, 5883 politeInsertUserSyncIframe: () => i.HV, 5884 politeTriggerPixel: () => i.ER, 5885 prefixLog: () => i.h0, 5886 replaceAuctionPrice: () => i.ZU, 5887 replaceClickThrough: () => i.mJ, 5888 replaceMacros: () => i.gM, 5889 resetWinDimensions: () => i.Bp, 5890 runBackgroundTask: () => i.fi, 5891 safeJSONEncode: () => i.wV, 5892 safeJSONParse: () => i.$l, 5893 setOnAny: () => i.eY, 5894 setScriptAttributes: () => i.Bg, 5895 shuffle: () => i.k4, 5896 sizeTupleToRtbSize: () => i.cf, 5897 sizeTupleToSizeString: () => i.bM, 5898 sizesToSizeTuples: () => i.y$, 5899 sortByHighestCpm: () => i.Q0, 5900 timestamp: () => i.vE, 5901 transformAdServerTargetingObj: () => i.$D, 5902 triggerNurlWithCpm: () => i.Wf, 5903 triggerPixel: () => i.z$, 5904 uniques: () => i.hj, 5905 unsupportedBidderMessage: () => i.bz, 5906 waitForElementToLoad: () => i.OI, 5907 })); 5908 var s = n(3350), 5909 a = n(8928), 5910 d = n(3435), 5911 c = n(5657), 5912 u = n(5521), 5913 l = n(5595), 5914 f = n(3895), 5915 p = n(8203), 5916 g = n(5262), 5917 m = n(6825), 5918 h = n(7936); 5919 const { REQUEST: b, RESPONSE: y, NATIVE: v, EVENT: E } = u.nl, 5920 w = { 5921 [b]: function (e, t, n) { 5922 (0, l.bw)({ 5923 renderFn(t) { 5924 e( 5925 Object.assign( 5926 { 5927 message: y, 5928 renderer: (0, f.kj)(n), 5929 rendererVersion: 3, 5930 }, 5931 t, 5932 ), 5933 ); 5934 }, 5935 resizeFn: T(t.adId, n), 5936 options: t.options, 5937 adId: t.adId, 5938 bidResponse: n, 5939 }); 5940 }, 5941 [E]: function (e, t, n) { 5942 if (null == n) 5943 return void (0, i.vV)( 5944 `Cannot find ad '${t.adId}' for x-origin event request`, 5945 ); 5946 if (n.status !== u.tl.RENDERED) 5947 return void (0, i.JE)( 5948 `Received x-origin event request without corresponding render request for ad '${n.adId}'`, 5949 ); 5950 return (0, l.Uc)(t, n); 5951 }, 5952 }; 5953 function A() { 5954 window.addEventListener( 5955 "message", 5956 function (e) { 5957 !(function (e, t) { 5958 var n, 5959 r = e.message ? "message" : "data"; 5960 try { 5961 n = JSON.parse(e[r]); 5962 } catch (e) { 5963 return; 5964 } 5965 n && 5966 n.adId && 5967 n.message && 5968 w.hasOwnProperty(n.message) && 5969 (w[n.message]( 5970 ((o = n.adId), 5971 (s = (function (e) { 5972 return null == e.origin && 0 === e.ports.length 5973 ? function () { 5974 const e = 5975 "Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870"; 5976 throw ((0, i.vV)(e), new Error(e)); 5977 } 5978 : e.ports.length > 0 5979 ? function (t) { 5980 e.ports[0].postMessage(JSON.stringify(t)); 5981 } 5982 : function (t) { 5983 e.source.postMessage( 5984 JSON.stringify(t), 5985 e.origin, 5986 ); 5987 }; 5988 })(e)), 5989 function (e, ...t) { 5990 return s(Object.assign({}
5990, e, { adId: o }), ...t); 5991 }), 5992 n, 5993 m.n.findBidByAdId(n.adId), 5994 ), 5995 t && t()); 5996 var o, s; 5997 })(e); 5998 }, 5999 !1, 6000 ); 6001 } 6002 function T(e, t) { 6003 return function (n, r) { 6004 !(function ({ 6005 instl: e, 6006 element: t, 6007 adId: n, 6008 adUnitCode: r, 6009 width: o, 6010 height: s, 6011 }) { 6012 if (e) return; 6013 function a(e) { 6014 if (e) { 6015 const t = e.style; 6016 ((t.width = I(o)), (t.height = I(s))); 6017 } else 6018 (0, i.vV)( 6019 `Unable to locate matching page element for adUnitCode ${r}. Can't resize it to ad's dimensions. Please review setup.`, 6020 ); 6021 } 6022 const d = u('iframe:not([style*="display: none"])'); 6023 a(d); 6024 const c = d?.closest("ins[data-anchor-status]"); 6025 function u(e) { 6026 const i = l(n, r), 6027 o = 6028 null == i 6029 ? (0, g.o)({ element: t, adUnitCode: r }) 6030 : document.getElementById(i); 6031 return o && o.querySelector(e); 6032 } 6033 function l(e, t) { 6034 if ((0, i.II)()) { 6035 const t = f(e); 6036 if (t) return t; 6037 } 6038 if ((0, i.t1)()) { 6039 const e = m(t); 6040 if (e) return e; 6041 } 6042 } 6043 function f(e) { 6044 const t = window.googletag 6045 .pubads() 6046 .getSlots() 6047 .find((t) => 6048 (0, h.W$)(t).find((n) => (0, h.A6)(t, n).includes(e)), 6049 ); 6050 return t ? t.getSlotElementId() : null; 6051 } 6052 function m(e) { 6053 const t = window.apntag.getTag(e); 6054 return t && t.targetId; 6055 } 6056 c 6057 ? (function (e, t, n) { 6058 new p.U9((r, i) => { 6059 let o = 10; 6060 const s = setInterval(() => { 6061 let a = !1; 6062 (Object.entries({ width: t, height: n }).forEach( 6063 ([t, n]) => { 6064 /\d+px/.test(e.style[t]) && 6065 ((e.style[t] = I(n)), (a = !0)); 6066 }, 6067 ), 6068 (a || 0 === o--) && 6069 (clearInterval(s), 6070 a 6071 ? r() 6072 : i(new Error("Could not resize anchor")))); 6073 }, 50); 6074 }); 6075 })(c, o, s) 6076 : a(d?.parentElement); 6077 })({ ...t, width: n, height: r, adId: e }); 6078 }; 6079 } 6080 function I(e) { 6081 return e ? e + "px" : "100%"; 6082 } 6083 Object.assign(w, { 6084 [v]: function (e, t, n) { 6085 if (null == n) 6086 return void (0, i.vV)( 6087 `Cannot find ad for x-origin event request: '${t.adId}'`, 6088 ); 6089 switch (t.action) { 6090 case "assetRequest": 6091 (0, l.Hh)(n, () => e((0, c.IX)(t, n))); 6092 break; 6093 case "allAssetRequest": 6094 (0, l.Hh)(n, () => e((0, c.yl)(t, n))); 6095 break; 6096 default: 6097 ((0, l.vW)(t, n, { resizeFn: T(t.adId, n) }), (0, l.Pk)(n)); 6098 } 6099 }, 6100 }); 6101 var C = n(3838), 6102 O = n(8384), 6103 B = n(2247), 6104 S = n(5437), 6105 R = n(3399), 6106 k = n(1785); 6107 function U(e, t) { 6108 return e === t ? 0 : e < t ? -1 : 1; 6109 } 6110 function D(e = (e) => e) { 6111 return (t, n) => U(e(t), e(n)); 6112 } 6113 function $(e = U) { 6114 return (t, n) => -e(t, n) || 0; 6115 } 6116 function _(...e) { 6117 return function (t, n) { 6118 for (const r of e) { 6119 const e = r(t, n); 6120 if (0 !== e) return e; 6121 } 6122 return 0; 6123 }; 6124 } 6125 function j(e = U) { 6126 return (function (e = U) { 6127 return (t, n) => (e(n, t) < 0 ? n : t); 6128 })($(e)); 6129 } 6130 const x = D((e) => e.cpm), 6131 q = D((e) => e.responseTimestamp), 6132 N = j(_(x, $(D((e) => e.timeToRespond)))), 6133 P = j( 6134 _( 6135 D((e) =>
6135 e.desirability), 6136 $(D((e) => e.timeToRespond)), 6137 ), 6138 ), 6139 V = j(_(x, $(q))); 6140 j(_(x, q)); 6141 var M = n(3721), 6142 G = n(4983), 6143 F = []; 6144 const W = 20, 6145 L = "targetingControls.allowTargetingKeys", 6146 z = "targetingControls.addTargetingKeys", 6147 J = `Only one of "${L}" or "${z}" can be set`, 6148 H = Object.keys(u.xS).map((e) => u.xS[e]), 6149 Q = (0, k.A_)("sync", function (e, t, n = 0, r = !1, o = G.v) { 6150 if (!r) { 6151 const r = [], 6152 s = O.$.getConfig("sendBidsControl.dealPrioritization"), 6153 a = (0, i.$z)(e, "adUnitCode"); 6154 return ( 6155 Object.keys(a).forEach((e) => { 6156 let d = []; 6157 const c = (0, i.$z)(a[e], "bidderCode"); 6158 Object.keys(c).forEach((e) => { 6159 d.push(c[e].reduce(t)); 6160 }); 6161 const u = "object" == typeof n ? n[e] : n; 6162 u 6163 ? ((d = s ? d.sort(K(!0)) : d.sort(o)), 6164 r.push(...d.slice(0, u))) 6165 : ((d = d.sort(o)), r.push(...d)); 6166 }), 6167 r 6168 ); 6169 } 6170 return e; 6171 }); 6172 function K(e = !1) { 6173 return function (t, n) { 6174 return void 0 !== t.adserverTargeting.hb_deal && 6175 void 0 === n.adserverTargeting.hb_deal 6176 ? -1 6177 : void 0 === t.adserverTargeting.hb_deal && 6178 void 0 !== n.adserverTargeting.hb_deal 6179 ? 1 6180 : e 6181 ? n.desirability && t.desirability 6182 ? n.desirability - t.desirability 6183 : n.cpm - t.cpm 6184 : n.adserverTargeting.hb_pb - t.adserverTargeting.hb_pb; 6185 }; 6186 } 6187 function Y(e, t) { 6188 if (!O.$.getConfig("enableSendAllBids")) return 0; 6189 const n = O.$.getConfig("sendBidsControl.bidLimit"), 6190 r = new Set(e), 6191 i = {}; 6192 for (const e of m.n.getAdUnits()) 6193 r.has(e.code) && (i[e.code] = e?.bidLimit || t || n); 6194 return i; 6195 } 6196 const X = "1.17.2"; 6197 const Z = (function (e) { 6198 const t = {}, 6199 n = { 6200 setLatestAuctionForAdUnit(e, n) { 6201 t[e] = n; 6202 }, 6203 resetPresetTargetingAST(e) { 6204 r(e).forEach(function (e) { 6205 const t = window.apntag.getTag(e); 6206 if (t && t.keywords) { 6207 const n = Object.keys(t.keywords), 6208 r = {}; 6209 (n.forEach((e) => { 6210 F.includes(e.toLowerCase()) || (r[e] = t.keywords[e]); 6211 }), 6212 window.apntag.modifyTag(e, { keywords: r })); 6213 } 6214 }); 6215 }, 6216 getAllTargeting(t, n, a, l = P, f = G.v) { 6217 a ||= o(l, f); 6218 const p = r(t), 6219 g = Y(p, n), 6220 { customKeysByUnit: m, filteredBids: h } = (function ( 6221 e, 6222 t, 6223 ) { 6224 const n = [], 6225 r = {}, 6226 o = O.$.getConfig( 6227 "targetingControls.alwaysIncludeDeals", 6228 ), 6229 s = O.$.getConfig("bidTargetingExclusion"), 6230 a = t.filter((t) => { 6231 const n = e.includes(t.adUnitCode), 6232 r = 6233 !0 === S.u.get(t.bidderCode, "allowZeroCpmBids") 6234 ? t.cpm >= 0 6235 : t.cpm > 0, 6236 i = o && t.dealId; 6237 return n && (i || r); 6238 }); 6239 return ( 6240 a.forEach((e) => { 6241 let t = !0; 6242 if ("function" == typeof s) 6243 try { 6244 t = s(e, a); 6245 } catch (n) { 6246 ((0, i.JE)( 6247 `Error in bidTargetingExclusion function - excluding bid ${e.bidderCode} [${e.adUnitCode}]`, 6248 ), 6249 (t = !1)); 6250 } 6251 t && 6252 (n.push(e), 6253 Object.keys(e.adserverTargeting) 6254 .filter( 6255 (function () { 6256 const e = c(); 6257 return function (t) { 6258 return -1 === e.indexOf(t); 6259 }; 6260 })(), 6261 ) 6262 .forEach((t) => { 6263 const n = t.substring(0, 20), 6264 o = r[e.adUnitCode] || {}, 6265 s = [e.adserverTargeting[t]]; 6266 (o[n] 6267 ? (o[n] = o[n].concat(s).filter(i.hj)) 6268 : (o[n] = s), 6269 (r[e.adUnitCode] = o)); 6270 })); 6271 }), 6272 { filteredBids: n, customKeysByUnit: r } 6273 ); 6274 })(p, a); 6275 let b = (function (t, n, r) { 6276 const i = 6277 !0 === 6278 O.$.getConfig( 6279 "targetingControls.allBidsCustomTargeting", 6280 ), 6281 o = d(t, r) 6282 .concat( 6283 (function (e) { 6284 const t = O.$.getConfig( 6285 "targetingControls.alwaysIncludeDeals", 6286 ), 6287 n = O.$.getConfig("enableSendAllBids"); 6288 return (function (e, t = !1, n = !1) { 6289 const r = H.slice(), 6290 i = O.$.getConfig( 6291 "targetingControls.allowSendAllBidsTargetingKeys", 6292 ), 6293 o = i ? i.map((e) => u.xS[e]) : r; 6294 return e.reduce((e, i) => { 6295 if (t || (n && i.dealId)) { 6296 const t = (function (e, t) { 6297 return t.reduce( 6298 (t, n) => ( 6299 e.adserverTargeting[n] && 6300 t.push({ 6301 [`${n}_${e.bidderCode}`.substring( 6302 0, 6303 W, 6304 )]: [e.adserverTargeting[n]], 6305 }), 6306 t 6307 ), 6308 [], 6309 ); 6310 })( 6311 i, 6312 r.filter( 6313 (e) => 6314 void 0 !== i.adserverTargeting[e] && 6315 (n || -1 !== o.indexOf(e)), 6316 ), 6317 ); 6318 t && e.push({ [i.adUnitCode]: t }); 6319 } 6320 return e; 6321 }, []); 6322 })(e, n, t); 6323 })(t), 6324 ) 6325 .concat( 6326 (function (t) { 6327 function n(e) { 6328 return e?.[u.iD.ADSERVER_TARGETING]; 6329 } 6330 function r(e) { 6331 const t = n(e); 6332 return Object.keys(t).map(function (e) { 6333 return ( 6334 (0, s.O8)(t[e]) && 6335 (t[e] = t[e] 6336 .split(",") 6337 .map((e) => e.trim())), 6338 (0, s.cy)(t[e]) || (t[e] = [t[e]
6338]), 6339 { [e]: t[e] } 6340 ); 6341 }); 6342 } 6343 return e 6344 .getAdUnits() 6345 .filter((e) => t.includes(e.code) && n(e)) 6346 .reduce((e, t) => { 6347 const n = r(t); 6348 return (n && e.push({ [t.code]: n }), e); 6349 }, []); 6350 })(r), 6351 ) 6352 .concat( 6353 (function (e) { 6354 let t = O.$.getConfig("targetingControls.version"); 6355 return !1 === t 6356 ? [] 6357 : e.map((e) => ({ 6358 [e]: [{ [u.xS.VERSION]: [t ?? X] }], 6359 })); 6360 })(r), 6361 ); 6362 i && 6363 o.push( 6364 ...(function (e, t) { 6365 return e.reduce((e, n) => { 6366 const r = Object.assign({}, n), 6367 i = t[r.adUnitCode], 6368 o = []; 6369 return ( 6370 i &&
6371 Object.keys(i).forEach((e) => { 6372 e && i[e] && o.push({ [e]: i[e] }); 6373 }), 6374 e.push({ [r.adUnitCode]: o }), 6375 e 6376 ); 6377 }, []); 6378 })(t, n), 6379 ); 6380 return ( 6381 o.forEach((e) => { 6382 !(function (e) { 6383 Object.keys(e).forEach((t) => { 6384 e[t].forEach((e) => { 6385 const t = Object.keys(e); 6386 -1 === F.indexOf(t[0]) && (F = t.concat(F)); 6387 }); 6388 }); 6389 })(e); 6390 }), 6391 o 6392 ); 6393 })(Q(h, l, g, void 0, f), m, p); 6394 const y = Object.keys(Object.assign({}, u.Zh)); 6395 let v = O.$.getConfig(L); 6396 const E = O.$.getConfig(z); 6397 if (null != E && null != v) throw new Error(J); 6398 ((v = null != E ? y.concat(E) : v || y), 6399 Array.isArray(v) && 6400 v.length > 0 && 6401 (b = (function (e, t) { 6402 const n = Object.assign({}, u.xS), 6403 r = Object.keys(u.xS), 6404 o = {}; 6405 ((0, i.fH)( 6406 `allowTargetingKeys - allowed keys [ ${t.map((e) => n[e]).join(", ")} ]`, 6407 ), 6408 e.forEach((e) => { 6409 const i = Object.keys(e)[0], 6410 s = e[i].filter((e) => { 6411 const i = Object.keys(e)[0], 6412 s = 6413 0 === 6414 r.filter((e) => 0 === i.indexOf(n[e])) 6415 .length || 6416 t.find((e) => { 6417 const t = n[e]; 6418 return 0 === i.indexOf(t); 6419 }); 6420 return ((o[i] = !s), s); 6421 }); 6422 e[i] = s; 6423 })); 6424 const s = Object.keys(o).filter((e) => o[e]); 6425 (0, i.fH)( 6426 `allowTargetingKeys - removed keys [ ${s.join(", ")} ]`, 6427 ); 6428 const a = e.filter( 6429 (e) => e[Object.keys(e)[0]].length > 0, 6430 ); 6431 return a; 6432 })(b, v))); 6433 let w = (function (e) { 6434 return e 6435 .map((e) => ({ 6436 [Object.keys(e)[0]]: e[Object.keys(e)[0]] 6437 .map((e) => ({ 6438 [Object.keys(e)[0]]: e[Object.keys(e)[0]].join(","), 6439 })) 6440 .reduce((e, t) => Object.assign(t, e), {}), 6441 })) 6442 .reduce(function (e, t) { 6443 var n = Object.keys(t)[0]; 6444 return ((e[n] = Object.assign({}, e[n], t[n])), e); 6445 }, {}); 6446 })(b); 6447 const A = O.$.getConfig( 6448 "targetingControls.auctionKeyMaxChars", 6449 ); 6450 return ( 6451 A && 6452 ((0, i.fH)( 6453 `Detected 'targetingControls.auctionKeyMaxChars' was active for this auction; set with a limit of ${A} characters. Running checks on auction keys...`, 6454 ), 6455 (w = (function (e, t) { 6456 const n = (0, s.Go)(e), 6457 r = Object.keys(n) 6458 .map((e) => ({ 6459 adUnitCode: e, 6460 adserverTargeting: n[e], 6461 })) 6462 .sort(K()); 6463 return r.reduce(function (e, r, o, s) { 6464 let a = 6465 ((d = r.adserverTargeting), 6466 Object.keys(d).reduce(function (e, t) { 6467 return (e += `${t}%3d${encodeURIComponent(d[t])}%26`); 6468 }, "")); 6469 var d; 6470 o + 1 === s.length && (a = a.slice(0, -3)); 6471 const c = r.adUnitCode, 6472 u = a.length; 6473 return ( 6474 u <= t 6475 ? ((t -= u), 6476 (0, i.fH)( 6477 `AdUnit '${c}' auction keys comprised of ${u} characters. Deducted from running threshold; new limit is ${t}`, 6478 n[c], 6479 ), 6480 (e[c] = n[c])) 6481 : (0, i.JE)( 6482 `The following keys for adUnitCode '${c}' exceeded the current limit of the 'auctionKeyMaxChars' setting.\nThe key-set size was ${u}, the current allotted amount was ${t}.\n`, 6483 n[c], 6484 ), 6485 o + 1 === s.length && 6486 0 === Object.keys(e).length && 6487 (0, i.vV)( 6488 "No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting.", 6489 ), 6490 e 6491 ); 6492 }, {}); 6493 })(w, A))), 6494 p.forEach((e) => { 6495 (w[e] || (w[e] = {}), 6496 1 === Object.keys(w[e]).length && 6497 null != w[e][u.xS.VERSION] && 6498 delete w[e][u.xS.VERSION]); 6499 }), 6500 w 6501 ); 6502 }, 6503 updateGPTTargeting(e, t, n) { 6504 const r = Object.fromEntries(F.map((e) => [e, null])); 6505 Object.entries( 6506 (function ( 6507 e, 6508 t = () => window.googletag.pubads().getSlots(), 6509 ) { 6510 return t().reduce( 6511 (e, t) => ( 6512 Object.keys(e) 6513 .filter((0, i.iC)(t)) 6514 .forEach((n) => e[n].push(t)), 6515 e 6516 ), 6517 Object.fromEntries(e.map((e) => [e, []])), 6518 ); 6519 })(Object.keys(e)), 6520 ).forEach(([o, s]) => {
6521 s.forEach((s) => { 6522 (Object.keys(e[o]).forEach((t) => { 6523 let n = e[o][t]; 6524 ("string" == typeof n && 6525 -1 !== n.indexOf(",") && 6526 (n = n.split(",")), 6527 (e[o][t] = n)); 6528 }), 6529 (0, i.OG)( 6530 `Attempting to ${t} targeting-map for slot: ${s.getSlotElementId()} with targeting-map:`, 6531 e[o], 6532 ), 6533 (0, h.ns)(s, Object.assign({}, r, e[o])), 6534 null != n && n(e[o])); 6535 }); 6536 }); 6537 }, 6538 presetGPTTargeting(e) { 6539 !1 !== 6540 O.$.getConfig("targetingControls.presetGPTTargeting") && 6541 (0, i.II)() && 6542 n.updateGPTTargeting( 6543 n.getAllTargeting(e, 0, []), 6544 "pre-set", 6545 ); 6546 }, 6547 setTargetingForGPT: (0, k.A_)( 6548 "sync", 6549 function (t) { 6550 const r = n.getAllTargeting(t); 6551 (n.updateGPTTargeting(r, "set", (e) => M.s.lock(e)), 6552 Object.keys(r).forEach((t) => { 6553 Object.keys(r[t]).forEach((n) => { 6554 n === u.xS.AD_ID && 6555 e.setStatusForBids(r[t][n], u.tl.BID_TARGETING_SET); 6556 }); 6557 }), 6558 n.targetingDone(r), 6559 R.Ic(u.qY.SET_TARGETING, r)); 6560 }, 6561 "setTargetingForGPT", 6562 ), 6563 targetingDone: (0, k.A_)( 6564 "sync", 6565 function (e) { 6566 return e; 6567 }, 6568 "targetingDone", 6569 ), 6570 getWinningBids(e, t, n = N, s = G.v) { 6571 const a = t || o(n, s), 6572 d = r(e); 6573 return a 6574 .filter((e) => d.includes(e.adUnitCode)) 6575 .filter((e) => 6576 !0 === S.u.get(e.bidderCode, "allowZeroCpmBids") 6577 ? e.cpm >= 0 6578 : e.cpm > 0, 6579 ) 6580 .map((e) => e.adUnitCode) 6581 .filter(i.hj) 6582 .map((e) => 6583 a 6584 .filter((t) => (t.adUnitCode === e ? t : null)) 6585 .reduce(N), 6586 ); 6587 }, 6588 setTargetingForAst(e) { 6589 const t = n.getAllTargeting(e); 6590 try { 6591 n.resetPresetTargetingAST(e); 6592 } catch (e) { 6593 (0, i.vV)("unable to reset targeting for AST" + e); 6594 } 6595 Object.keys(t).forEach((e) => { 6596 (M.s.lock(t[e]), 6597 Object.keys(t[e]).forEach((n) => { 6598 if ( 6599 ((0, i.OG)( 6600 `Attempting to set targeting for targetId: ${e} key: ${n} value: ${t[e][n]}`, 6601 ), 6602 (0, s.O8)(t[e][n]) || (0, s.cy)(t[e][n])) 6603 ) { 6604 const r = {}, 6605 i = /pt[0-9]/; 6606 (n.search(i) < 0 6607 ? (r[n.toUpperCase()] = t[e][n]) 6608 : (r[n] = t[e][n]), 6609 window.apntag.setKeywords(e, r, { 6610 overrideKeyValue: !0, 6611 })); 6612 } 6613 })); 6614 }); 6615 }, 6616 isApntagDefined() { 6617 if (window.apntag && (0, s.fp)(window.apntag.setKeywords)) 6618 return !0; 6619 }, 6620 }; 6621 function r(t) { 6622 return "string" == typeof t 6623 ? [t] 6624 : (0, s.cy)(t) 6625 ? t 6626 : e.getAdUnitCodes() || []; 6627 } 6628 function o(n = V, r = void 0) { 6629 const i = e.getBidsReceived().reduce((e, n) => { 6630 const r = O.$.getConfig("useBidCache"), 6631 i = O.$.getConfig("bidCacheFilterFunction"), 6632 o = t[n.adUnitCode] === n.auctionId, 6633 s = !(r && !o && "function" == typeof i) || !!i(n); 6634 return ( 6635 (r || o) && 6636 s && 6637 (0, B.Y)(n) && 6638 ((n.latestTargetedAuctionId = t[n.adUnitCode]), e.push(n)), 6639 e 6640 ); 6641 }, []); 6642 return Q(i, n, void 0, void 0, r); 6643 } 6644 function d(e, t) { 6645 const r = n.getWinningBids(t, e), 6646 i = c(); 6647 return r.map((e) => ({ 6648 [e.adUnitCode]: Object.keys(e.adserverTargeting) 6649 .filter( 6650 (t) => 6651 void 0 === e.sendStandardTargeting || 6652 e.sendStandardTargeting || 6653 -1 === i.indexOf(t), 6654 ) 6655 .reduce((t, n) => { 6656 const r = [e.adserverTargeting[n]], 6657 i = { [n.substring(0, W)]: r }; 6658 if (n === u.xS.DEAL) { 6659 const o = `${n}_${e.bidderCode}`.substring(0, W),
6660 s = { [o]: r }; 6661 return [...t, i, s]; 6662 } 6663 return [...t, i]; 6664 }, []), 6665 })); 6666 } 6667 function c() { 6668 return e 6669 .getStandardBidderAdServerTargeting() 6670 .map((e) => e.key) 6671 .concat(H) 6672 .filter(i.hj); 6673 } 6674 return ( 6675 R.on(u.qY.AUCTION_INIT, ({ adUnitCodes: e }) => { 6676 n.presetGPTTargeting(e); 6677 }), 6678 O.$.getConfig("targetingControls", function (e) { 6679 null != (0, a.A)(e, L) && 6680 null != (0, a.A)(e, z) && 6681 (0, i.vV)(J); 6682 }), 6683 n 6684 ); 6685 })(m.n); 6686 var ee = n(7797), 6687 te = n(8468), 6688 ne = n(6901), 6689 re = n(4864); 6690 const ie = `__${(0, re.k)()}_debugging__`; 6691 function oe() { 6692 return (0, r.m)().installedModules.includes("debugging"); 6693 } 6694 function se(e) { 6695 return new p.U9((t, n) => { 6696 (0, te.R)(e, "prebid", "debugging", { success: t, error: n }); 6697 }); 6698 } 6699 function ae({ alreadyInstalled: e = oe, script: t = se } = {}) { 6700 let n = null; 6701 return function () { 6702 return ( 6703 null == n && 6704 (n = new p.U9((n, s) => { 6705 setTimeout(() => { 6706 if (e()) n(); 6707 else { 6708 const e = `${(0, re.rT)()}debugging-standalone.js`; 6709 ((0, i.OG)( 6710 `Debugging module not installed, loading it from "${e}"...`, 6711 ), 6712 ((0, r.m)()._installDebugging = !0), 6713 t(e) 6714 .then(() => { 6715 (0, r.m)()._installDebugging({ 6716 DEBUG_KEY: ie, 6717 hook: k.A_, 6718 config: O.$, 6719 createBid: ee.O, 6720 logger: (0, i.h0)("DEBUG:"), 6721 utils: o, 6722 BANNER: "banner", 6723 NATIVE: "native", 6724 VIDEO: "video", 6725 Renderer: ne.A4, 6726 }); 6727 }) 6728 .then(n, s)); 6729 } 6730 }); 6731 })), 6732 n 6733 ); 6734 }; 6735 } 6736 const de = (function ({ 6737 load: e = ae(), 6738 hook: t = (0, k.Yn)("requestBids"), 6739 } = {}) { 6740 let n = null, 6741 r = !1; 6742 function o(e, ...t) { 6743 return (n || p.U9.resolve()) 6744 .catch((e) => { 6745 (0, i.vV)("Could not load debugging module", e); 6746 }) 6747 .then(() => e.apply(this, t)); 6748 } 6749 function s() { 6750 (t.getHooks({ hook: o }).remove(), (r = !1)); 6751 } 6752 return { 6753 enable: function () { 6754 r || ((n = e()), t.before(o, 99), (r = !0)); 6755 }, 6756 disable: s, 6757 reset: function () { 6758 ((n = null), s()); 6759 }, 6760 }; 6761 })(); 6762 de.reset; 6763 O.$.getConfig("debugging", function ({ debugging: e }) { 6764 e?.enabled ? de.enable() : de.disable(); 6765 }); 6766 var ce = n(2354), 6767 ue = n(6001), 6768 le = n(2822), 6769 fe = n(7686); 6770 const pe = (0, ce.CK)("fpdEnrichment"), 6771 ge = (0, i.Bj)(function (e = window.location.host) { 6772 if (!pe.cookiesAreEnabled()) return e; 6773 const t = e.split("."); 6774 if (2 === t.length) return e; 6775 let n, 6776 r, 6777 i = -2; 6778 do { 6779 ((n = t.slice(i).join(".")), 6780 (0, ce.d_)(n, pe) 6781 ? (r = !1) 6782 : ((i += -1), (r = Math.abs(i) <= t.length))); 6783 } while (r); 6784 return n; 6785 }); 6786 var me = n(8378); 6787 const he = [ 6788 "architecture", 6789 "bitness", 6790 "model", 6791 "platformVersion", 6792 "fullVersionList", 6793 ], 6794 be = ["brands", "mobile", "platform"], 6795 ye = (function (e = window.navigator?.userAgentData) { 6796 const t = 6797 e && be.some((t) => void 0 !== e[t]) 6798 ? Object.freeze(Ee(1, e)) 6799 : null; 6800 return function () { 6801 return t; 6802 }; 6803 })(), 6804 ve = (function (e = window.navigator?.userAgentData) { 6805 const t = {}, 6806 n = new WeakMap(); 6807 return function (r = he) { 6808 if (!n.has(r)) { 6809 const e = Array.from(r); 6810 (e.sort(), n.set(r, e.join("|"))); 6811 } 6812 const o = n.get(r); 6813 if (!t.hasOwnProperty(o)) 6814 try { 6815 t[o] = e 6816 .getHighEntropyValues(r) 6817 .then((e) => 6818 (0, i.Im)(e) ? null : Object.freeze(Ee(2, e)), 6819 ) 6820 .catch(() => null); 6821 } catch (e) { 6822 t[o] = p.U9.resolve(null); 6823 } 6824 return t[o]; 6825 }; 6826 })(); 6827 function Ee(e, t) { 6828 function n(e, t) { 6829 const n = { brand: e }; 6830 return ( 6831 (0, s.O8)(t) && !(0, i.xQ)(t) && (n.version = t.split(".")), 6832 n 6833 ); 6834 } 6835 const r = { source: e }; 6836 return ( 6837 t.platform && (r.platform = n(t.platform, t.platformVersion)), 6838 (t.fullVersionList || t.brands) && 6839 (r.browsers = (t.fullVersionList || t.brands).map( 6840 ({ brand: e, version: t }) => n(e, t), 6841 )), 6842 void 0 !== t.mobile && (r.mobile = t.mobile ? 1 : 0), 6843 ["model", "bitness", "architecture"].forEach((e) => { 6844 const n = t[e]; 6845 (0, s.O8)(n) && (r[e] = n); 6846 }), 6847 r 6848 ); 6849 } 6850 var we = n(7850), 6851 Ae = n(5720); 6852 const Te = { 6853 getRefererInfo: fe.EN, 6854 findRootDomain: ge, 6855 getWindowTop: i.mb, 6856 getWindowSelf: i.l4, 6857 getHighEntropySUA: ve, 6858 getLowEntropySUA: ye, 6859 getDocument: i.YE, 6860 }, 6861 Ie = (0, we.i8)("FPD"), 6862 Ce = (0, k.A_)("sync", (e) => { 6863 const t = [e, Be().catch(() => null)]; 6864 return p.U9.all(t).then(([e, t]) => { 6865 const n = Te.getRefererInfo(); 6866 (Object.entries(Re).forEach(([t, r]) => { 6867 const o = r(e, n); 6868 o && 6869 Object.keys(o).length > 0 && 6870 (e[t] = (0, i.D9)({}, o, e[t])); 6871 }), 6872 t && 6873 (0, d.J)( 6874 e, 6875 "device.sua", 6876 Object.assign({}, t, e.device.sua), 6877 )); 6878 const r = Te.getDocument().documentElement.lang; 6879 if ( 6880 r && 6881 ((0, d.J)(e, "site.ext.data.documentLang", r), 6882 !(0, a.A)(e, "site.content.language")) 6883 ) { 6884 const t = r.split("-")[0]; 6885 (0, d.J)(e, "site.content.language", t); 6886 } 6887 e = Ie(e); 6888 for (const t of we.Dy) 6889 if ((0, we.O$)(e, t)) { 6890 e[t] = (0, i.D9)({}, De(e, n), e[t]); 6891 break; 6892 } 6893 return e; 6894 }); 6895 }); 6896 function Oe(e) { 6897 try {
6898 return e(Te.getWindowTop()); 6899 } catch (t) { 6900 return e(Te.getWindowSelf()); 6901 } 6902 } 6903 function Be() { 6904 const e = O.$.getConfig("firstPartyData.uaHints"); 6905 return Array.isArray(e) && 0 !== e.length 6906 ? Te.getHighEntropySUA(e) 6907 : p.U9.resolve(Te.getLowEntropySUA()); 6908 } 6909 function Se(e) { 6910 return (0, s.SH)(e, Object.keys(e)); 6911 } 6912 const Re = { 6913 site(e, t) { 6914 if ( 6915 !we.Dy.filter((e) => "site" !== e).some(we.O$.bind(null, e)) 6916 ) 6917 return Se({ page: t.page, ref: t.ref }); 6918 }, 6919 device: () => 6920 Oe((e) => { 6921 const t = (0, me.Ot)().screen.width, 6922 n = (0, me.Ot)().screen.height, 6923 { width: r, height: i } = (0, Ae.M)(); 6924 return { 6925 w: t, 6926 h: n, 6927 ua: e.navigator.userAgent, 6928 language: e.navigator.language.split("-").shift(), 6929 ext: { vpw: r, vph: i }, 6930 }; 6931 }), 6932 regs() { 6933 const e = {}; 6934 Oe((e) => e.navigator.globalPrivacyControl) && 6935 (0, d.J)(e, "ext.gpc", "1"); 6936 const t = O.$.getConfig("coppa"); 6937 return ("boolean" == typeof t && (e.coppa = t ? 1 : 0), e); 6938 }, 6939 }, 6940 ke = (0, i.Bj)(() => 6941 Oe((e) => { 6942 const t = e.document, 6943 n = Array.from( 6944 t.querySelectorAll('script[type="application/ld+json"]'), 6945 ); 6946 let r = []; 6947 for (const e of n) 6948 try { 6949 const t = JSON.parse(e.textContent), 6950 n = Array.isArray(t) ? t : [t]; 6951 for (const e of n) 6952 if ("string" == typeof e.keywords) { 6953 const t = e.keywords 6954 .split(",") 6955 .map((e) => e.trim()) 6956 .filter((e) => e.length > 0); 6957 r.push(...t); 6958 } 6959 } catch (e) {} 6960 return r; 6961 }), 6962 ), 6963 Ue = (0, i.Bj)(() => 6964 Oe((e) => 6965 e.document 6966 .querySelector('meta[name="keywords"]') 6967 ?.content?.split(",") 6968 .map((e) => e.trim()), 6969 ), 6970 ); 6971 function De(e, t) { 6972 const n = (0, fe.gR)(t.page, { noLeadingWww: !0 }), 6973 r = new Set(); 6974 return ( 6975 (O.$.getConfig("firstPartyData.keywords.meta") ?? 1) && 6976 (Ue() ?? []).forEach((e) => r.add(e)), 6977 (O.$.getConfig("firstPartyData.keywords.json") ?? 1) && 6978 (ke() ?? []).forEach((e) => r.add(e)), 6979 Se({ 6980 domain: n, 6981 keywords: r.size > 0 ? Array.from(r.keys()).join(",") : void 0, 6982 publisher: Se({ domain: Te.findRootDomain(n) }), 6983 }) 6984 ); 6985 } 6986 var $e = n(1068), 6987 _e = n(7791); 6988 const je = [ 6989 [ 6990 "format", 6991 (e) => 6992 Array.isArray(e) && 6993 e.length > 0 && 6994 e.every((e) => "object" == typeof e), 6995 ], 6996 ["w", s.Fq], 6997 ["h", s.Fq], 6998 ["btype", s.Uu], 6999 ["battr", s.Uu], 7000 ["pos", s.Fq], 7001 [ 7002 "mimes", 7003 (e) => 7004 Array.isArray(e) && 7005 e.length > 0 && 7006 e.every((e) => "string" == typeof e), 7007 ], 7008 ["topframe", (e) => [1, 0].includes(e)], 7009 ["expdir", s.Uu], 7010 ["api", s.Uu], 7011 ["id", s.O8], 7012 ["vcm", (e) => [1, 0].includes(e)], 7013 ], 7014 xe = new Map(je); 7015 function qe(e, t) { 7016 return (...n) => 7017 document.prerendering && e() 7018 ? new Promise((e) => { 7019 document.addEventListener( 7020 "prerenderingchange", 7021 () => { 7022 ((0, i.fH)( 7023 "Auctions were suspended while page was prerendering", 7024 ), 7025 e(t.apply(this, n))); 7026 }, 7027 { once: !0 }, 7028 ); 7029 }) 7030 : Promise.resolve(t.apply(this, n)); 7031 } 7032 var Ne = n(2682); 7033 const Pe = (0, k.A_)("sync", function (e) { 7034 return ( 7035 [ 7036 Ve, 7037 Me("source.schain", "source.ext.schain", "source.ext.schain"), 7038 Me("device.sua", "device.ext.sua", "device.sua"),
7039 Me("regs.gdpr", "regs.ext.gdpr", "regs.ext.gdpr"), 7040 Me("user.consent", "user.ext.consent", "user.ext.consent"), 7041 Me( 7042 "regs.us_privacy", 7043 "regs.ext.us_privacy", 7044 "regs.ext.us_privacy", 7045 ), 7046 Me("regs.gpp", "regs.ext.gpp", "regs.gpp"), 7047 Me("regs.gpp_sid", "regs.ext.gpp_sid", "regs.gpp_sid"), 7048 ].forEach((t) => 7049 (function (e, t) { 7050 ((t.global = e(t.global, "global FPD")), 7051 Object.entries(t.bidder).forEach(([n, r]) => { 7052 t.bidder[n] = e(r, `bidder '${n}' FPD`); 7053 })); 7054 })(t, e), 7055 ), 7056 e 7057 ); 7058 }); 7059 function Ve(e, t) { 7060 if (!e) return e; 7061 const n = [], 7062 r = [ 7063 ...(e?.user?.eids ?? []).map((e) => [0, e]), 7064 ...(e?.user?.ext?.eids ?? []).map((e) => [1, e]), 7065 ].filter(([e, r]) => 7066 n.findIndex(([t, n]) => e !== t && (0, i.bD)(n, r)) > -1 7067 ? ((0, i.JE)( 7068 `Found duplicate EID in user.eids and user.ext.eids (${t})`, 7069 r, 7070 ), 7071 !1) 7072 : (n.push([e, r]), !0), 7073 ); 7074 return ( 7075 r.length > 0 && 7076 (0, d.J)( 7077 e, 7078 "user.ext.eids", 7079 r.map(([e, t]) => t), 7080 ), 7081 delete e?.user?.eids, 7082 e 7083 ); 7084 } 7085 function Me(e, t, n) { 7086 if (n !== e && n !== t) throw new Error("invalid argument"); 7087 const r = (n === e ? t : e).split("."), 7088 o = r.pop(), 7089 s = r.join("."); 7090 return function (r, c) { 7091 if (!r) return r; 7092 const u = (0, a.A)(r, e), 7093 l = (0, a.A)(r, t); 7094 (null == u || 7095 null == l || 7096 (0, i.bD)(u, l) || 7097 (0, i.JE)(`Conflicting ${e} and ${t} (${c}), preferring ${e}`, { 7098 [e]: u, 7099 [t]: l, 7100 }), 7101 null != (u ?? l) && (0, d.J)(r, n, u ?? l)); 7102 const f = (0, a.A)(r, s); 7103 return (null != f && "object" == typeof f && delete f[o], r); 7104 }; 7105 } 7106 var Ge = n(1662), 7107 Fe = n(6540), 7108 We = n(2859); 7109 const Le = (0, r.m)(), 7110 { triggerUserSyncs: ze } = C.zt, 7111 { REQUEST_BIDS: Je, SET_TARGETING: He } = u.qY; 7112 function Qe(e, t) { 7113 let n = []; 7114 return ( 7115 (0, s.cy)(e) && 7116 (t ? e.length === t : e.length > 0) && 7117 (e.every((e) => (0, s.Uu)(e, 2)) 7118 ? (n = e) 7119 : (0, s.Uu)(e, 2) && n.push(e)), 7120 n 7121 ); 7122 } 7123 function Ke(e, t) { 7124 const n = (0, a.A)(e, `ortb2Imp.${t}`), 7125 r = (0, a.A)(e, `mediaTypes.${t}`); 7126 if (!n && !r) return; 7127 const o = { video: _e.Zy, banner: xe }[t]; 7128 o && 7129 [...o].forEach(([n, r]) => { 7130 const o = (0, a.A)(e, `mediaTypes.${t}.${n}`), 7131 s = (0, a.A)(e, `ortb2Imp.${t}.${n}`); 7132 (void 0 === o && void 0 === s) || 7133 (void 0 === o 7134 ? (0, d.J)(e, `mediaTypes.${t}.${n}`, s) 7135 : void 0 === s 7136 ? (0, d.J)(e, `ortb2Imp.${t}.${n}`, o) 7137 : (0, i.bD)(o, s) || 7138 ((0, i.JE)( 7139 `adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${n} and mediaTypes.${t}.${n}, the latter will be ignored`, 7140 e, 7141 ), 7142 (0, d.J)(e, `mediaTypes.${t}.${n}`, s))); 7143 }); 7144 } 7145 function Ye(e) { 7146 const t = (0, s.Go)(e), 7147 n = t.mediaTypes.banner, 7148 r = null == n.sizes ? null : Qe(n.sizes), 7149 o = e.ortb2Imp?.banner?.format ?? n?.format; 7150 let a; 7151 if (null != o) { 7152 ((0, d.J)(t, "ortb2Imp.banner.format", o), (n.format = o)); 7153 try { 7154 a = o 7155 .filter(({ w: t, h: n, wratio: r, hratio: o }) => 7156 null != (t ?? n) && null != (r ?? o) 7157 ? ((0, i.JE)( 7158 "Ad unit banner.format specifies both w/h and wratio/hratio", 7159 e, 7160 ), 7161 !1) 7162 : (null != t && null != n) || (null != r && null != o), 7163 ) 7164 .map(({ w: e, h: t, wratio: n, hratio: r }) => [ 7165 e ?? n, 7166 t ?? r, 7167 ]); 7168 } catch (t) { 7169 (0, i.vV)(`Invalid format definition on ad unit ${e.code}`, o); 7170 } 7171 null == a || 7172 null == r || 7173 (0, i.bD)(r, a) || 7174 (0, i.JE)( 7175 `Ad unit ${e.code} has conflicting sizes and format definitions`, 7176 e, 7177 ); 7178 } 7179 const c = a ?? r ?? [], 7180 u = e.ortb2Imp?.banner?.expdir ?? n.expdir; 7181 return ( 7182 null != u && 7183 ((n.expdir = u), (0, d.J)(t, "ortb2Imp.banner.expdir", u)), 7184 c.length > 0 7185 ? ((n.sizes = c), (t.sizes = c)) 7186 : ((0, i.vV)( 7187 "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.", 7188 ), 7189 delete t.mediaTypes.banner), 7190 et(t, "banner"), 7191 Ke(t, "banner"), 7192 t 7193 ); 7194 } 7195 function Xe(e) { 7196 const t = (0, s.Go)(e); 7197 return (et(t, "audio"), Ke(t, "audio"), t); 7198 } 7199 function Ze(e) { 7200 const t = (0, s.Go)(e), 7201 n = t.mediaTypes.video; 7202 if (n.playerSize) { 7203 const e = "number" == typeof n.playerSize[0] ? 2 : 1, 7204 r = Qe(n.playerSize, e); 7205 r.length > 0 7206 ? (2 === e && 7207 (0, i.fH)( 7208 "Transforming video.playerSize from [640,480] to [[640,480]] so it's in the proper format.", 7209 ), 7210 (n.playerSize = r), 7211 (t.sizes = r)) 7212 : ((0, i.vV)( 7213 "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.", 7214 ), 7215 delete t.mediaTypes.video.playerSize); 7216 } 7217 return (et(t, "video"), Ke(t, "video"), t); 7218 } 7219 function et(e, t, n) { 7220 const r = (e?.mediaTypes || {})[t], 7221 o = ((e) => 7222 "banner" === e 7223 ? xe 7224 : "audio" === e 7225 ? Ge.Ai 7226 : "video" === e 7227 ? _e.Zy 7228 : void 0)(t); 7229 (0, s.Qd)(r) 7230 ? null != o && 7231 null != r &&
7232 Object.entries(r).forEach(([s, a]) => { 7233 if (!o.has(s)) return; 7234 o.get(s)(a) || 7235 ("function" == typeof n 7236 ? n(s, a, e) 7237 : (delete r[s], 7238 (0, i.JE)( 7239 `Invalid prop in adUnit "${e.code}": Invalid value for mediaTypes.${t}.${s} ORTB property. The property has been removed.`, 7240 ))); 7241 }) 7242 : (0, i.JE)( 7243 `validateOrtb${t}Fields: ${t}Params must be an object.`, 7244 ); 7245 } 7246 function tt(e) { 7247 function t(t) { 7248 return ( 7249 (0, i.vV)( 7250 `Error in adUnit "${e.code}": ${t}. Removing native request from ad unit`, 7251 e, 7252 ), 7253 delete r.mediaTypes.native, 7254 r 7255 ); 7256 } 7257 function n(e) { 7258 for (const t of ["types"]) 7259 if (o.hasOwnProperty(t)) { 7260 const n = e(t); 7261 if (n) return n; 7262 } 7263 } 7264 const r = (0, s.Go)(e), 7265 o = r.mediaTypes.native; 7266 if (o.ortb) { 7267 if ( 7268 o.ortb.assets?.some( 7269 (e) => !(0, s.Et)(e.id) || e.id < 0 || e.id % 1 != 0, 7270 ) 7271 ) 7272 return t("native asset ID must be a nonnegative integer"); 7273 if (n((e) => t(`ORTB native requests cannot specify "${e}"`))) 7274 return r; 7275 const e = Object.keys(u.x5).filter((e) => 7276 u.x5[e].includes("hb_native_"), 7277 ), 7278 a = Object.keys(o).filter((t) => e.includes(t)); 7279 a.length > 0 && 7280 ((0, i.vV)( 7281 `when using native OpenRTB format, you cannot use legacy native properties. Deleting ${a} keys from request.`, 7282 ), 7283 a.forEach((e) => delete r.mediaTypes.native[e])); 7284 } else 7285 n((t) => 7286 (0, i.JE)( 7287 `mediaTypes.native.${t} is deprecated, consider using native ORTB instead`, 7288 e, 7289 ), 7290 ); 7291 return ( 7292 o.image && 7293 o.image.sizes && 7294 !Array.isArray(o.image.sizes) && 7295 ((0, i.vV)( 7296 "Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request.", 7297 ), 7298 delete r.mediaTypes.native.image.sizes), 7299 o.image && 7300 o.image.aspect_ratios && 7301 !Array.isArray(o.image.aspect_ratios) && 7302 ((0, i.vV)( 7303 "Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request.", 7304 ), 7305 delete r.mediaTypes.native.image.aspect_ratios), 7306 o.icon && 7307 o.icon.sizes && 7308 !Array.isArray(o.icon.sizes) && 7309 ((0, i.vV)( 7310 "Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request.", 7311 ), 7312 delete r.mediaTypes.native.icon.sizes), 7313 r 7314 ); 7315 } 7316 function nt(e, t) { 7317 const n = e?.mediaTypes?.[t]?.pos; 7318 if (!(0, s.Et)(n) || isNaN(n) || !isFinite(n)) { 7319 const n = `Value of property 'pos' on ad unit ${e.code} should be of type: Number`; 7320 ((0, i.JE)(n), delete e.mediaTypes[t].pos); 7321 } 7322 return e; 7323 } 7324 function rt(e) { 7325 const t = (e) => `adUnit.code '${n.code}' ${e}`, 7326 n = e, 7327 r = n.mediaTypes, 7328 o = n.bids; 7329 return null == o || (0, s.cy)(o) 7330 ? null == o && null == n.ortb2Imp 7331 ? ((0, i.vV)( 7332 t( 7333 "has no 'adUnit.bids' and no 'adUnit.ortb2Imp'. Removing adUnit from auction", 7334 ), 7335 ), 7336 null) 7337 : r && 0 !== Object.keys(r).length 7338 ? (null == n.ortb2Imp || 7339 (null != o && 0 !== o.length) || 7340 ((n.bids = [{ bidder: null }]), 7341 (0, i.OG)( 7342 t( 7343 "defines 'adUnit.ortb2Imp' with no 'adUnit.bids'; it will be seen only by S2S adapters", 7344 ), 7345 )), 7346 n) 7347 : ((0, i.vV)( 7348 t( 7349 "does not define a 'mediaTypes' object. This is a required field for the auction, so this adUnit has been removed.", 7350 ), 7351 ), 7352 null) 7353 : ((0, i.vV)( 7354 t( 7355 "defines 'adUnit.bids' that is not an array. Removing adUnit from auction", 7356 ), 7357 ), 7358 null); 7359 } 7360 (!(function () { 7361 let e = null; 7362 try { 7363 e = window.sessionStorage; 7364 } catch (e) {} 7365 if (null !== e) { 7366 const t = de; 7367 let n = null; 7368 try { 7369 n = e.getItem(ie); 7370 } catch (e) {} 7371 null !== n && t.enable(); 7372 } 7373 })(), 7374 (Le.bidderSettings = Le.bidderSettings || {}), 7375 (Le.libLoaded = !0), 7376 (Le.version = "v11.26.0-pre"), 7377 (0, i.fH)("Prebid.js v11.26.0-pre loaded"), 7378 (Le.adUnits = Le.adUnits || []), 7379 (Le.pageViewIdPerBidder = Le.pageViewIdPerBidder || new Map())); 7380 const it = { 7381 validateAdUnit: rt, 7382 validateBannerMediaType: Ye, 7383 validateSizes: Qe, 7384 }; 7385 (Object.assign(it, { validateNativeMediaType: tt }), 7386 Object.assign(it, { validateVideoMediaType: Ze }), 7387 Object.assign(it, { validateAudioMediaType: Xe })); 7388 const ot = (0, k.A_)( 7389 "sync", 7390 function (e) { 7391 const t = []; 7392 return ( 7393 e.forEach((e) => { 7394 const n = rt(e); 7395 if (null == n) return; 7396 const r = n.mediaTypes; 7397 let i, o, s, a; 7398 (r.banner && 7399 ((i = Ye(n)), 7400 r.banner.hasOwnProperty("pos") && (i = nt(i, "banner"))), 7401 r.video && 7402 ((o = Ze(i || n)), 7403 r.video.hasOwnProperty("pos") && (o = nt(o, "video"))), 7404 r.native && (s = tt(o || i || n)), 7405 r.audio && (a = Xe(s || n))); 7406 const d = Object.assign({}, i, o, s, a); 7407 t.push(d); 7408 }), 7409 t 7410 ); 7411 }, 7412 "checkAdUnitSetup", 7413 ); 7414 function st(e, t) { 7415 return function (...n) { 7416 return ( 7417 (0, i.fH)(`Invoking ${(0, re.k)()}.${e}`, n), 7418 t.apply(this, n) 7419 ); 7420 }; 7421 } 7422 function at(e, t, n = !0) { 7423 (0, r.m)()[e] = n ? st(e, t) : t; 7424 } 7425 function dt(e) { 7426 return ct(e)[e]; 7427 } 7428 function ct(e) { 7429 return Z.getAllTargeting(e); 7430 } 7431 function ut(e) { 7432 const t = m.n[e]().filter((e) => 7433 m.n.getAdUnitCodes().includes(e.adUnitCode), 7434 ), 7435 n = m.n.getLastAuctionId(); 7436 return t 7437 .map((e) => e.adUnitCode) 7438 .filter(i.hj) 7439 .map((e) => 7440 t.filter((t) => t.auctionId === n && t.adUnitCode === e), 7441 ) 7442 .filter((e) => e && e[0] && e[0].adUnitCode) 7443 .map((e) => ({ [e[0].adUnitCode]: (0, Fe.O)(e) })) 7444 .reduce((e, t) => Object.assign(e, t), {}); 7445 } 7446 (at("triggerUserSyncs", ze), 7447 at("getAdserverTargetingForAdUnitCodeStr", function (e) { 7448 if (e) { 7449 const t = dt(e); 7450 return (0, i.$D)(t); 7451 } 7452 (0, i.OG)( 7453 "Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode", 7454 ); 7455 }), 7456 at("getHighestUnusedBidResponseForAdUnitCode", function (e) { 7457 if (e) { 7458 const t = m.n.getAllBidsForAdUnitCode(e).filter(
7458B.Y); 7459 return t.length ? t.reduce(N) : null; 7460 } 7461 (0, i.OG)( 7462 "Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode", 7463 ); 7464 }), 7465 at("getAdserverTargetingForAdUnitCode", dt), 7466 at("getAdserverTargeting", ct), 7467 at("getConsentMetadata", function () { 7468 return $e.SL.getConsentMeta(); 7469 }), 7470 at("getNoBids", function () { 7471 return ut("getNoBids"); 7472 }), 7473 at("getNoBidsForAdUnitCode", function (e) { 7474 const t = m.n.getNoBids().filter((t) => t.adUnitCode === e); 7475 return (0, Fe.O)(t); 7476 }), 7477 at("getBidResponses", function () { 7478 return ut("getBidsReceived"); 7479 }), 7480 at("getBidResponsesForAdUnitCode", function (e) { 7481 const t = m.n.getBidsReceived().filter((t) => t.adUnitCode === e); 7482 return (0, Fe.O)(t); 7483 }), 7484 at("setTargetingForGPTAsync", function (e) { 7485 (0, i.II)() 7486 ? Z.setTargetingForGPT(e) 7487 : (0, i.vV)("window.googletag is not defined on the page"); 7488 }), 7489 at("setTargetingForAst", function (e) { 7490 Z.isApntagDefined() 7491 ? (Z.setTargetingForAst(e), R.Ic(He, Z.getAllTargeting())) 7492 : (0, i.vV)("window.apntag is not defined on the page"); 7493 }), 7494 at("renderAd", function (e, t, n) { 7495 (0, l.BS)(e, t, n); 7496 }), 7497 at("removeAdUnit", function (e) { 7498 if (!e) return void (Le.adUnits = []); 7499 let t; 7500 ((t = (0, s.cy)(e) ? e : [e]), 7501 t.forEach((e) => { 7502 for (let t = Le.adUnits.length - 1; t >= 0; t--) 7503 Le.adUnits[t].code === e && Le.adUnits.splice(t, 1); 7504 })); 7505 })); 7506 const lt = (function () { 7507 function e(e, t) { 7508 return ( 7509 null == t || Array.isArray(t) || (t = [t]), 7510 null == t || (Array.isArray(t) && 0 === t.length) 7511 ? { 7512 included: e, 7513 excluded: [], 7514 adUnitCodes: e.map((e) => e.code).filter(i.hj), 7515 } 7516 : ((t = t.filter(i.hj)), 7517 Object.assign( 7518 { adUnitCodes: t }, 7519 e.reduce( 7520 ({ included: e, excluded: n }, r) => ( 7521 (t.includes(r.code) ? e : n).push(r), 7522 { included: e, excluded: n } 7523 ), 7524 { included: [], excluded: [] }, 7525 ), 7526 )) 7527 ); 7528 } 7529 const t = (0, k.A_)( 7530 "async", 7531 function (t) { 7532 let { 7533 bidsBackHandler: n, 7534 timeout: r, 7535 adUnits: o, 7536 adUnitCodes: a, 7537 labels: d, 7538 auctionId: c, 7539 ttlBuffer: u, 7540 ortb2: l, 7541 metrics: f, 7542 defer: g, 7543 } = t ?? {}; 7544 const m = r || O.$.getConfig("bidderTimeout"); 7545 ({ included: o, adUnitCodes: a } = e(o, a)); 7546 let h = { 7547 global: (0, i.D9)( 7548 {}, 7549 O.$.getAnyConfig("ortb2") || {}, 7550 l || {}, 7551 ), 7552 bidder: Object.fromEntries( 7553 Object.entries(O.$.getBidderConfig()) 7554 .map(([e, t]) => [e, (0, s.Go)(t.ortb2)]) 7555 .filter(([e, t]) => null != t), 7556 ), 7557 }; 7558 ((h = Pe(h)), 7559 Ce(p.U9.resolve(h.global)).then( 7560 (e) => ( 7561 (h.global = e), 7562 ft({ 7563 bidsBackHandler: n, 7564 timeout: m, 7565 adUnits: o, 7566 adUnitCodes: a, 7567 labels: d, 7568 auctionId: c, 7569 ttlBuffer: u, 7570 ortb2Fragments: h, 7571 metrics: f, 7572 defer: g, 7573 }) 7574 ), 7575 )); 7576 }, 7577 "requestBids", 7578 ); 7579 return (0, k.Y6)( 7580 t, 7581 st( 7582 "requestBids", 7583 qe( 7584 () => !O.$.getConfig("allowPrerendering"), 7585 function (n = {}) { 7586 const r = n.adUnits || Le.adUnits; 7587 n.adUnits = Array.isArray(r) ? r.slice() : [r]; 7588 const i = (0, le.K7)(); 7589 i.checkpoint("requestBids"); 7590 const { 7591 included: o, 7592 excluded: s, 7593 adUnitCodes: a, 7594 } = e(r, n.adUnitCodes); 7595 R.Ic(Je, Object.assign(n, { adUnits: o, adUnitCodes: a })); 7596 const d = Object.assign({}, n, { 7597 adUnits: n.adUnits.slice().concat(s), 7598 adUnitCodes: a, 7599 metrics: i, 7600 defer: (0, p.v6)({ 7601 promiseFactory: (e) => new Promise(e), 7602 }), 7603 }); 7604 return (t.call(this, d), d.defer.promise); 7605 }, 7606 ), 7607 ), 7608 ); 7609 })(); 7610 at("requestBids", lt, !1); 7611 const ft = (0, k.A_)( 7612 "async", 7613 function ({ 7614 bidsBackHandler: e, 7615 timeout: t, 7616 adUnits: n, 7617 ttlBuffer: r, 7618 adUnitCodes: o, 7619 labels: s, 7620 auctionId: a, 7621 ortb2Fragments: d, 7622 metrics: c, 7623 defer: u, 7624 } = {}) { 7625 const l = (0, ue.pX)(O.$.getConfig("s2sConfig") || []); 7626 !(function (e) { 7627 (e.forEach((e) => (0, _e.V0)(e)), 7628 e.forEach((e) => (0, Ge.kl)(e))); 7629 })(n); 7630 const f = (0, le.BO)(c).measureTime("requestBids.validate", () => 7631 ot(n), 7632 ); 7633 function p(t, n, r) { 7634 if ("function" == typeof e) 7635 try { 7636 e(t, n, r); 7637 } catch (e) { 7638 (0, i.vV)("Error executing bidsBackHandler", null, e); 7639 } 7640 u.resolve({ bids: t, timedOut: n, auctionId: r }); 7641 } 7642 const g = {}; 7643 if ( 7644 (f.forEach((e) => { 7645 const t = Object.keys(e.mediaTypes || { banner: "banner" }), 7646 n = e.bids.map((e) =>
7646 e.bidder).filter(Boolean), 7647 o = ue.Ay.bidderRegistry, 7648 s = n.filter((e) => !l.has(e)); 7649 e.adUnitId = (0, i.lk)(); 7650 const a = e.ortb2Imp?.ext?.tid; 7651 (a && 7652 (g.hasOwnProperty(e.code) 7653 ? (0, i.JE)( 7654 `Multiple distinct ortb2Imp.ext.tid were provided for twin ad units '${e.code}'`, 7655 ) 7656 : (g[e.code] = a)), 7657 null == r || 7658 e.hasOwnProperty("ttlBuffer") || 7659 (e.ttlBuffer = r), 7660 s.forEach((n) => { 7661 const r = o[n], 7662 s = r && r.getSpec && r.getSpec(), 7663 a = (s && s.supportedMediaTypes) || ["banner"]; 7664 t.some((e) => a.includes(e)) || 7665 ((0, i.JE)((0, i.bz)(e, n)), 7666 (e.bids = e.bids.filter((e) => e.bidder !== n))); 7667 })); 7668 }), 7669 f && 0 !== f.length) 7670 ) { 7671 f.forEach((e) => { 7672 const t = e.ortb2Imp?.ext?.tid || g[e.code] || (0, i.lk)(); 7673 (g.hasOwnProperty(e.code) || (g[e.code] = t), 7674 (e.transactionId = t)); 7675 }); 7676 const e = m.n.createAuction({ 7677 adUnits: f, 7678 adUnitCodes: o, 7679 callback: p, 7680 cbTimeout: t, 7681 labels: s, 7682 auctionId: a, 7683 ortb2Fragments: d, 7684 metrics: c, 7685 }), 7686 n = f.length; 7687 (n > 15 && 7688 (0, i.fH)( 7689 `Current auction ${e.getAuctionId()} contains ${n} adUnits.`, 7690 f, 7691 ), 7692 o.forEach((t) => 7693 Z.setLatestAuctionForAdUnit(t, e.getAuctionId()), 7694 ), 7695 e.callBids()); 7696 } else 7697 ((0, i.OG)("No adUnits configured. No bids requested."), p()); 7698 }, 7699 "startAuction", 7700 ); 7701 (lt.before(function (e, t) { 7702 function n(e) { 7703 let t; 7704 for (; (t = e.shift());) t(); 7705 } 7706 (n(ce.s0), n(mt), e.call(this, t)); 7707 }, 49), 7708 at("addAdUnits", function (e) { 7709 Le.adUnits.push(...(Array.isArray(e) ? e : [e])); 7710 })); 7711 const pt = { 7712 bidWon(e) { 7713 if ( 7714 m.n 7715 .getBidsRequested() 7716 .map((e) => e.bids.map((e) => e.adUnitCode)) 7717 .reduce(i.Bq) 7718 .filter(i.hj) 7719 .includes(e) 7720 ) 7721 return !0; 7722 (0, i.vV)('The "' + e + '" placement is not defined.'); 7723 }, 7724 }; 7725 function gt(e, t) { 7726 return pt.hasOwnProperty(e) && pt[e](t); 7727 } 7728 (at("onEvent", function (e, t, n) { 7729 (0, s.fp)(t) 7730 ? !n || gt(e, n) 7731 ? R.on(e, t, n) 7732 : (0, i.vV)( 7733 'The id provided is not valid for event "' + 7734 e + 7735 '" and no handler was set.', 7736 ) 7737 : (0, i.vV)( 7738 'The event handler provided is not a function and was not set on event "' + 7739 e + 7740 '".', 7741 ); 7742 }), 7743 at("offEvent", function (e, t, n) { 7744 (n && !gt(e, n)) || R.AU(e, t, n); 7745 }), 7746 at("getEvents", function () { 7747 return R.kQ(); 7748 }), 7749 at("registerBidAdapter", function (e, t, n) { 7750 try { 7751 const r = n ? (0, Ne.xb)(n) : e(); 7752 ue.Ay.registerBidAdapter(r, t); 7753 } catch (e) { 7754 (0, i.vV)("Error registering bidder adapter : " + e.message); 7755 } 7756 }), 7757 at("registerAnalyticsAdapter", function (e) { 7758 try { 7759 ue.Ay.registerAnalyticsAdapter(e); 7760 } catch (e) { 7761 (0, i.vV)("Error registering analytics adapter : " + e.message); 7762 } 7763 })); 7764 const mt = [], 7765 ht = (0, k.A_)( 7766 "async", 7767 function (e) { 7768 e && !(0, i.Im)(e) 7769 ? ue.Ay.enableAnalytics(e) 7770 : (0, i.vV)( 7771 `${(0, re.k)()}.enableAnalytics should be called with option {}`, 7772 ); 7773 }, 7774 "enableAnalyticsCb", 7775 ); 7776 function bt(e) { 7777 if (e) { 7778 const t = m.n.getBidsReceived().filter((t) => t.adId === e); 7779 if (t.length) return t[0]; 7780 (0, i.JE)(`Could not find ad matching adId '${e}'`); 7781 } else (0, i.vV)("adId is required"); 7782 return null; 7783 } 7784 function yt(e, t = !0) { 7785 (t ? (0, l.n6)(e) : m.n.addWinningBid(e), (0, l.qn)(e)); 7786 } 7787 let vt; 7788 function Et(e) { 7789 vt.promise.then(() => { 7790 if ("function" == typeof e) 7791 try { 7792 e.call(); 7793 } catch (e) { 7794 (0, i.vV)("Error processing command :", e.message, e.stack); 7795 } 7796 else 7797 (0, i.vV)( 7798 `Commands written into ${(0, re.k)()}.cmd.push must be wrapped in a function`, 7799 ); 7800 }); 7801 } 7802 function wt(e, t) { 7803 (0, We.JE)( 7804 () => (0, r.m)().yield ?? !0, 7805 e.map( 7806 (e) => () => 7807 (function (e) { 7808 if (void 0 === e.called) 7809 try { 7810 (e.call(), (e.called = !0)); 7811 } catch (e) { 7812 (0, i.vV)("Error processing command :", "prebid.js", e); 7813 } 7814 })(e), 7815 ), 7816 t, 7817 ); 7818 } 7819 (at("enableAnalytics", function (e) { 7820 mt.push(ht.bind(this, e)); 7821 }), 7822 at("aliasBidder", function (e, t, n) { 7823 e && t 7824 ? ue.Ay.aliasBidAdapter(e, t, n) 7825 : (0, i.vV)( 7826 "bidderCode and alias must be passed as arguments", 7827 `${(0, re.k)()}.aliasBidder`, 7828 ); 7829 }), 7830 (Le.aliasRegistry = ue.Ay.aliasRegistry), 7831 O.$.getConfig("aliasRegistry", (e) => { 7832 "private" === e.aliasRegistry && delete Le.aliasRegistry; 7833 }), 7834 at("getAllWinningBids", function () { 7835 return m.n.getAllWinningBids(); 7836 }), 7837 at("getAllPrebidWinningBids", function () { 7838 return ( 7839 (0, i.JE)( 7840 "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.", 7841 ), 7842 m.n 7843 .getBidsReceived() 7844 .filter((e) => e.status === u.tl.BID_TARGETING_SET) 7845 ); 7846 }), 7847 at("getHighestCpmBids", function (e) { 7848 return Z.getWinningBids(e); 7849 }), 7850 at("clearAllAuctions", function () { 7851 m.n.clearAllAuctions(); 7852 }), 7853 at("getBidResponseByAdId", function (e, t) { 7854 const n = bt(e); 7855 return (null != n && t?.markAsUsed && yt(n, !0), n); 7856 }), 7857 at( 7858 "markWinningBidAsUsed", 7859 function ({ 7860 adId: e, 7861 adUnitCode: t, 7862 analytics: n = !1, 7863 events: r = !1, 7864 }) { 7865 let o; 7866 (t && null == e 7867 ? (o = Z.getWinningBids(t)[0]) 7868 : e 7869 ? (o = bt(e)) 7870 : (0, i.JE)( 7871 "Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function.", 7872 ), 7873 null != o && yt(o, n || r)); 7874 }, 7875 ), 7876 at("getConfig", O.$.getAnyConfig), 7877 at("readConfig", O.$.readAnyConfig), 7878 at("mergeConfig", O.$.mergeConfig), 7879 at("mergeBidderConfig", O.$.mergeBidderConfig), 7880 at("setConfig", O.$.setConfig), 7881 at("setBidderConfig", O.$.setBidderConfig), 7882 Le.que.push(() => A()), 7883 (vt = (0, p.v6)())); 7884 (at( 7885 "processQueue", 7886 qe( 7887 () => Le.delayPrerendering, 7888 async function () { 7889 ((Le.que.push = Le.cmd.push = Et), 7890 (0, l.XO)(), 7891 k.A_.ready(), 7892 wt(Le.que, () => { 7893 wt(Le.cmd, () => { 7894 vt.resolve(); 7895 }); 7896 })); 7897 }, 7898 ), 7899 !1, 7900 ), 7901 at("triggerBilling", function ({ adId: e, adUnitCode: t }) { 7902 m.n 7903 .getAllWinningBids() 7904 .filter( 7905 (n) => n.adId === e || (null == e && n.adUnitCode === t), 7906 ) 7907 .forEach((e) => { 7908 (ue.Ay.triggerBilling(e), (0, l.vB)(e)); 7909 }); 7910 }), 7911 at("refreshPageViewId", function () { 7912 for (const e of Le.pageViewIdPerBidder.keys()) 7913 Le.pageViewIdPerBidder.set(e, (0, i.lk)()); 7914 })); 7915 }, 7916 1129(e, t, n) { 7917 n.d(t, { E: () => a, m: () => s }); 7918 var r = n(4864); 7919 const i = (0, r.uP)() ? window : {}, 7920 o = (i[(0, r.k)()] = i[(0, r.k)()] || {}); 7921 function s() { 7922 return o; 7923 } 7924 function a(e) { 7925 o.installedModules.push(e); 7926 } 7927 ((o.cmd = o.cmd || []), 7928 (o.que = o.que || []), 7929 (o.installedModules = o.installedModules || []), 7930 i === window && 7931 ((i._pbjsGlobals = i._pbjsGlobals || []), 7932 i._pbjsGlobals.push((0, r.k)()))); 7933 }, 7934 7686(e, t, n) { 7935 n.d(t, { gR: () => s }); 7936 var r = n(8384), 7937 i = n(7413); 7938 function o(e, t = window) { 7939 if (!e) return e; 7940 if (/\w+:\/\//.exec(e)) return e; 7941 let n = t.location.protocol; 7942 try { 7943 n = t.top.location.protocol; 7944 } catch (e) {} 7945 return /^\/\//.exec(e) ? n + e : `${n}//${e}`; 7946 } 7947 function s(e, { noLeadingWww: t = !1, noPort: n = !1 } = {}) { 7948 let r; 7949 try { 7950 r = new URL(o(e)); 7951 } catch (e) { 7952 return; 7953 } 7954 return ( 7955 (r = n ? r.hostname : r.host), 7956 t && r.startsWith("www.") && (r = r.substring(4)), 7957 r 7958 ); 7959 } 7960 function a(e) { 7961 try { 7962 const t = e.querySelector("link[rel='canonical']"); 7963 if (null !== t) return t.href; 7964 } catch (e) {} 7965 return null; 7966 } 7967 const d = (function (e, t = window) { 7968 if (t.top !== t) return e; 7969 let n, r, i; 7970 return function () { 7971 const o = a(t.document), 7972 s = t.location.href; 7973 return ((n === o && s === r) || ((n = o), (r = s), (i = e())), i); 7974 }; 7975 })( 7976 ((c = window), 7977 function () { 7978 const e = [], 7979 t = (function (e) { 7980 try { 7981 if (!e.location.ancestorOrigins) return; 7982 return e.location.ancestorOrigins; 7983 } catch (e) {} 7984 })(c), 7985 n = r.$.getConfig("maxNestedIframes"); 7986 let d, 7987 u, 7988 l, 7989 f, 7990 p = !1, 7991 g = 0, 7992 m = !1, 7993 h = !1, 7994 b = !1; 7995 do { 7996 const n = d, 7997 r = h; 7998 let o, 7999 s = !1, 8000 f = null; 8001 ((h = !1), (d = d ? d.parent : c)); 8002 try { 8003 o = d.location.href || null; 8004 } catch (e) { 8005 s = !0; 8006 } 8007 if (s) 8008 if (r) { 8009 const e = n.context; 8010 try { 8011 ((f = e.sourceUrl), 8012 (u = f), 8013 (b = !0), 8014 (m = !0), 8015 d === c.top && (p = !0), 8016 e.canonicalUrl && (l = e.canonicalUrl)); 8017 } catch (e) {} 8018 } else { 8019 (0, i.JE)( 8020 "Trying to access cross domain iframe. Continuing without referrer and location", 8021 ); 8022 try { 8023 const e = n.document.referrer; 8024 e && ((f = e), d === c.top && (p = !0)); 8025 } catch (e) {} 8026 (!f && 8027 t && 8028 t[g - 1] && 8029 ((f = t[g - 1]), d === c.top && (b = !0)), 8030 f && !m && (u = f)); 8031 } 8032 else { 8033 if (o && ((f = o), (u = f), (m = !1), d === c.top)) { 8034 p = !0; 8035 const e = a(d.document); 8036 e && (l = e); 8037 } 8038 d.context && d.context.sourceUrl && (h = !0); 8039 } 8040 (e.push(f), g++); 8041 } while (d !== c.top && g < n); 8042 e.reverse(); 8043 try { 8044 f = c.top.document.referrer; 8045 } catch (e) {} 8046 const y = p || b ? u : null, 8047 v = r.$.getConfig("pageUrl") || l || null;
8048 let E = r.$.getConfig("pageUrl") || y || o(v, c); 8049 return ( 8050 y && 8051 y.indexOf("?") > -1 && 8052 -1 === E.indexOf("?") && 8053 (E = `${E}${y.substring(y.indexOf("?"))}`), 8054 { 8055 reachedTop: p, 8056 isAmp: m, 8057 numIframes: g - 1, 8058 stack: e, 8059 topmostLocation: u || null, 8060 location: y, 8061 canonicalUrl: v, 8062 page: E, 8063 domain: s(E) || null, 8064 ref: f || null, 8065 legacy: { 8066 reachedTop: p, 8067 isAmp: m, 8068 numIframes: g - 1, 8069 stack: e, 8070 referer: u || null, 8071 canonicalUrl: v, 8072 }, 8073 } 8074 ); 8075 }), 8076 ); 8077 var c; 8078 n.d(t, ["EN", 0, d]); 8079 }, 8080 2354(e, t, n) { 8081 n.d(t, { CK: () => b, d_: () => y, s0: () => g, vM: () => h }); 8082 var r = n(7413), 8083 i = n(5437), 8084 o = n(4283), 8085 s = n(724), 8086 a = n(323), 8087 d = n(8384), 8088 c = n(1785), 8089 u = n(6001), 8090 l = n(5881); 8091 const f = "html5", 8092 p = "cookie"; 8093 let g = []; 8094 function m( 8095 { moduleName: e, moduleType: t, advertiseKeys: n = !0 } = {}, 8096 { isAllowed: i = o.io } = {}, 8097 ) { 8098 function c(r, o, c, f) { 8099 let p = e; 8100 const g = d.$.getCurrentBidder(); 8101 g && "bidder" === t && u.Ay.aliasRegistry[g] === e && (p = g); 8102 const m = { [s.Zw]: o, write: f }; 8103 n && null != c && (m[s.Ez] = c); 8104 return r({ valid: i(a.Ue, (0, l.s)(t, p, m)) }); 8105 } 8106 function m(e, t, n, r, i) { 8107 if (!i || "function" != typeof i) return c(e, t, n, r); 8108 g.push(function () { 8109 let o = c(e, t, n, r); 8110 i(o); 8111 }); 8112 } 8113 function h(e) { 8114 const t = e.charAt(0).toUpperCase() + e.substring(1), 8115 n = () => window[e], 8116 i = function (t) { 8117 return m( 8118 function (t) { 8119 if (t && t.valid) 8120 try { 8121 return !!n(); 8122 } catch (t) { 8123 (0, r.vV)(`${e} api disabled`); 8124 } 8125 return !1; 8126 }, 8127 f, 8128 null, 8129 !1, 8130 t, 8131 ); 8132 }; 8133 return { 8134 [`has${t}`]: i, 8135 [`${e}IsEnabled`]: (e) => 8136 m( 8137 function (e) { 8138 if (e && e.valid) 8139 try { 8140 return ( 8141 n().setItem("prebid.cookieTest", "1"), 8142 "1" === n().getItem("prebid.cookieTest") 8143 ); 8144 } catch (e) { 8145 } finally { 8146 try { 8147 n().removeItem("prebid.cookieTest"); 8148 } catch (e) {} 8149 } 8150 return !1; 8151 }, 8152 f, 8153 null, 8154 !1, 8155 e, 8156 ), 8157 [`setDataIn${t}`]: (e, t, r) => 8158 m( 8159 function (r) { 8160 r && r.valid && i() && n().setItem(e, t); 8161 }, 8162 f, 8163 e, 8164 !0, 8165 r, 8166 ), 8167 [`getDataFrom${t}`]: (e, t) => 8168 m( 8169 function (t) { 8170 return t && t.valid && i() ? n().getItem(e) : null; 8171 }, 8172 f, 8173 e, 8174 !1, 8175 t, 8176 ), 8177 [`removeDataFrom${t}`]: (e, t) => 8178 m( 8179 function (t) { 8180 t && t.valid && i() && n().removeItem(e); 8181 }, 8182 f, 8183 e, 8184 !0, 8185 t, 8186 ), 8187 }; 8188 } 8189 return {
8190 setCookie: function (e, t, n, r, i, o) { 8191 return m( 8192 function (o) { 8193 if (o && o.valid) { 8194 const o = 8195 i && "" !== i 8196 ? ` ;domain=${encodeURIComponent(i)}` 8197 : "", 8198 s = n && "" !== n ? ` ;expires=${n}` : "", 8199 a = "none" === r?.toLowerCase() ? "; Secure" : ""; 8200 document.cookie = `${e}=${encodeURIComponent(t)}${s}; path=/${o}${r ? `; SameSite=${r}` : ""}${a}`; 8201 } 8202 }, 8203 p, 8204 e, 8205 !0, 8206 o, 8207 ); 8208 }, 8209 getCookie: function (e, t) { 8210 return m( 8211 function (t) { 8212 if (t && t.valid) { 8213 let t = window.document.cookie.match( 8214 "(^|;)\\s*" + e + "\\s*=\\s*([^;]*)\\s*(;|$)", 8215 ); 8216 return t ? decodeURIComponent(t[2]) : null; 8217 } 8218 return null; 8219 }, 8220 p, 8221 e, 8222 !1, 8223 t, 8224 ); 8225 }, 8226 cookiesAreEnabled: function (e) { 8227 return m( 8228 function (e) { 8229 return !(!e || !e.valid) && (0, r.GE)() && y(); 8230 }, 8231 p, 8232 null, 8233 !1, 8234 e, 8235 ); 8236 }, 8237 ...h("localStorage"), 8238 ...h("sessionStorage"), 8239 findSimilarCookies: function (e, t) { 8240 return m( 8241 function (t) { 8242 if (t && t.valid) { 8243 const t = []; 8244 if ((0, r.N9)()) { 8245 const n = document.cookie.split(";"); 8246 for (; n.length;) { 8247 const r = n.pop(); 8248 let i = r.indexOf("="); 8249 i = i < 0 ? r.length : i; 8250 decodeURIComponent( 8251 r.slice(0, i).replace(/^\s+/, ""), 8252 ).indexOf(e) >= 0 && 8253 t.push(decodeURIComponent(r.slice(i + 1))); 8254 } 8255 } 8256 return t; 8257 } 8258 }, 8259 p, 8260 e, 8261 !1, 8262 t, 8263 ); 8264 }, 8265 }; 8266 } 8267 function h({ moduleType: e, moduleName: t, bidderCode: n } = {}) { 8268 function r() { 8269 throw new Error( 8270 "Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName", 8271 ); 8272 } 8273 return ( 8274 n 8275 ? (((e && "bidder" !== e) || t) && r(), (e = "bidder"), (t = n)) 8276 : (t && e) || r(), 8277 m({ moduleType: e, moduleName: t }) 8278 ); 8279 } 8280 function b(e) { 8281 return m({ moduleName: e, moduleType: "prebid" }); 8282 } 8283 const y = (() => { 8284 const e = b("storage"); 8285 return (0, r.Bj)(function (t, n = e) { 8286 const i = new Date((0, r.vE)() + 1e4).toUTCString(), 8287 o = `_rdc${Date.now()}`, 8288 s = "writeable"; 8289 n.setCookie(o, s, i, "Lax", t); 8290 return ( 8291 n.getCookie(o) === s && 8292 (n.setCookie(o, "", "Thu, 01 Jan 1970 00:00:01 GMT", void 0, t), 8293 !0) 8294 ); 8295 }); 8296 })(); 8297 function v() { 8298 if (!(0, r.N9)()) return { allow: !1 }; 8299 } 8300 ((0, o.qB)(a.Ue, "deviceAccess config", v), 8301 (0, o.qB)(a.yg, "deviceAccess config", v), 8302 (0, o.qB)( 8303 a.Ue, 8304 "bidderSettings.*.storageAllowed", 8305 function (e, t = i.u) { 8306 if ("bidder" !== e[s.Dk]) return; 8307 let n = t.get(e[s.q7], "storageAllowed"); 8308 if (n && !0 !== n) { 8309 const t = e[s.Zw]; 8310 n = Array.isArray(n) ? n.some((e) => e === t) : n === t; 8311 } else n = !!n; 8312 return n ? void 0 : { allow: n }; 8313 }, 8314 )); 8315 (0, c.A_)("sync", (e, t) => {}); 8316 }, 8317 2247(e, t, n) { 8318 n.d(t, { Y: () => d }); 8319 var r = n(5423), 8320 i = n(5521), 8321 o = n(7413), 8322 s = n(3721); 8323 const a = { 8324 isBidNotExpired: (e) => 8325 e.responseTimestamp + 1e3 * (0, r.cT)(e) > (0, o.vE)(), 8326 isUnusedBid: (e) => 8327 e && 8328 ((e.status && ![i.tl.RENDERED].includes(e.status)) || !e.status), 8329 isBidNotLocked: (e) => !s.s.isLocked(e.adserverTargeting), 8330 }; 8331 function d(e) { 8332 return !Object.values(a).some((t) => !t(e)); 8333 } 8334 n.d(t, ["Z", 0, a]); 8335 }, 8336 3721(e, t, n) { 8337 var r = n(8384), 8338 i = n(7834), 8339 o = n(7413), 8340 s = n(7936); 8341 const a = 3e3; 8342 const d = (function () { 8343 let e, 8344 t, 8345 n = (0, i.H)({ monotonic: !0, ttl: () => e, slack: 0 }); 8346 r.$.getConfig("targetingControls", (r) => { 8347 (({ lock: t, lockTimeout: e = a } = r.targetingControls ?? {}), 8348 null == t || Array.isArray(t) ? null == t && c() : (t = [t]), 8349 n.clear()); 8350 }); 8351 const [d, c] = (() => { 8352 let e = !1; 8353 function r({ slot: e }) { 8354 t?.forEach((t) => (0, s.A6)(e, t)?.forEach(n.delete)); 8355 } 8356 return [ 8357 () => { 8358 null != t && 8359 !e && 8360 (0, o.II)() && 8361 (googletag 8362 .pubads() 8363 .addEventListener?.("slotRenderEnded", r), 8364 (e = !0)); 8365 }, 8366 () => { 8367 e && 8368 (0, o.II)() && 8369 (googletag 8370 .pubads() 8371 .removeEventListener?.("slotRenderEnded", r), 8372 (e = !1)); 8373 }, 8374 ]; 8375 })(); 8376 return { 8377 isLocked: (e) => 8378 t?.some((t) => null != e[t] && n.has(e[t])) ?? !1, 8379 lock(e) { 8380 (d(), t?.forEach((t) => null != e[t] && n.add(e[t]))); 8381 }, 8382 }; 8383 })(); 8384 n.d(t, ["s", 0, d]); 8385 }, 8386 3838(e, t, n) { 8387 n.d(t, { zt: () => f }); 8388 var r = n(7413), 8389 i = n(3350), 8390 o = n(8384), 8391 s = n(2354), 8392 a = n(4283), 8393 d = n(323), 8394 c = n(724), 8395 u = n(5881); 8396 o.$.setDefaults({ 8397 userSync: (0, i.Go)({ 8398 syncEnabled: !0, 8399 filterSettings: { image: { bidders: "*", filter: "include" } }, 8400 syncsPerBidder: 5, 8401 syncDelay: 3e3, 8402 auctionDelay: 500, 8403 usePoliteSync: !1, 8404 }), 8405 }); 8406 const l = (0, s.CK)("usersync"); 8407 const f = (function (e) { 8408 const t = {}; 8409 let n = { image: [], iframe: [] }; 8410 const s = new Set(); 8411 let a = {}; 8412 const l = { image: !0, iframe: !1 }; 8413 let f = e.config; 8414 function p() { 8415 if (f.syncEnabled && e.browserSupportsCookies) { 8416 try { 8417 (!(function () { 8418 if (!l.iframe) return; 8419 g(n.iframe, (e) => { 8420 const [t, i] = e; 8421 ((0, r.OG)(`Invoking iframe user sync for bidder: ${t}`), 8422 f.usePoliteSync ? (0, r.HV)(i) : (0, r.SG)(i), 8423 (function (e, t) { 8424 e.image = e.image.filter((e) => e[0] !== t); 8425 })(n, t)); 8426 }); 8427 })(), 8428 (function () { 8429 if (!l.image) return; 8430 g(n.image, (e) => { 8431 const [t, n] = e; 8432 ((0, r.OG)( 8433 `Invoking image pixel user sync for bidder: ${t}`, 8434 ), 8435 f.usePoliteSync ? (0, r.ER)(n) : (0, r.z$)(n)); 8436 }); 8437 })()); 8438 } catch (e) { 8439 return (0, r.vV)("Error firing user syncs", e); 8440 } 8441 n = { image: [], iframe: [] }; 8442 } 8443 } 8444 function g(e, t) { 8445 (0, r.k4)(e).forEach(t); 8446 } 8447 function m(e, t) { 8448 const n = f.filterSettings; 8449 if ( 8450 (function (e, t) { 8451 if (e.all && e[t]) 8452 return ( 8453 (0, r.JE)( 8454 `Detected presence of the "filterSettings.all" and "filterSettings.${t}" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`, 8455 ), 8456 !1 8457 ); 8458 const n = e.all ? e.all : e[t], 8459 o = e.all ? "all" : t; 8460 if (!n) return !1; 8461 const s = n.filter, 8462 a = n.bidders; 8463 if (s && "include" !== s && "exclude" !== s) 8464 return ( 8465 (0, r.JE)( 8466 `UserSync "filterSettings.${o}.filter" setting '${s}' is not a valid option; use either 'include' or 'exclude'.`, 8467 ), 8468 !1 8469 ); 8470 if ( 8471 "*" !== a && 8472 !( 8473 Array.isArray(a) && 8474 a.length > 0 && 8475 a.every((e) => (0, i.O8)(e) && "*" !== e) 8476 ) 8477 ) 8478 return ( 8479 (0, r.JE)(
8480 `Detected an invalid setup in userSync "filterSettings.${o}.bidders"; use either '*' (to represent all bidders) or an array of bidders.`, 8481 ), 8482 !1 8483 ); 8484 return !0; 8485 })(n, e) 8486 ) { 8487 l[e] = !0; 8488 const r = n.all ? n.all : n[e], 8489 i = "*" === r.bidders ? [t] : r.bidders, 8490 o = { 8491 include: (e, t) => !e.includes(t), 8492 exclude: (e, t) => e.includes(t), 8493 }; 8494 return o[r.filter || "include"](i, t); 8495 } 8496 return !l[e]; 8497 } 8498 return ( 8499 o.$.getConfig("userSync", (e) => { 8500 if (e.userSync) { 8501 const t = e.userSync.filterSettings; 8502 (0, i.Qd)(t) && 8503 (t.image || 8504 t.all || 8505 (e.userSync.filterSettings.image = { 8506 bidders: "*", 8507 filter: "include", 8508 })); 8509 } 8510 f = Object.assign(f, e.userSync); 8511 }), 8512 e.regRule(d.Ml, "userSync config", (e) => { 8513 if (!f.syncEnabled) 8514 return { allow: !1, reason: "syncs are disabled" }; 8515 if ("bidder" === e[c.Dk]) { 8516 const n = e[c.bt], 8517 r = e[c.iK]; 8518 if (!t.canBidderRegisterSync(n, r)) 8519 return { 8520 allow: !1, 8521 reason: `${n} syncs are not enabled for ${r}`, 8522 }; 8523 } 8524 }), 8525 (t.registerSync = (t, o, l) => 8526 s.has(o) 8527 ? (0, r.OG)( 8528 `already fired syncs for "${o}", ignoring registerSync call`, 8529 ) 8530 : f.syncEnabled && (0, i.cy)(n[t]) 8531 ? o 8532 ? 0 !== f.syncsPerBidder && 8533 Number(a[o]) >= f.syncsPerBidder 8534 ? (0, r.JE)(`Number of user syncs exceeded for "${o}"`) 8535 : void ( 8536 e.isAllowed( 8537 d.Ml, 8538 (0, u.s)("bidder", o, { [c.bt]: t, [c.e3]: l }), 8539 ) && 8540 (n[t].push([o, l]), 8541 (a = (function (e, t) { 8542 return (e[t] ? (e[t] += 1) : (e[t] = 1), e); 8543 })(a, o))) 8544 ) 8545 : (0, r.JE)("Bidder is required for registering sync") 8546 : (0, r.JE)(`User sync type "${t}" not supported`)), 8547 (t.bidderDone = s.add.bind(s)), 8548 (t.syncUsers = (e = 0) => { 8549 if (e) return setTimeout(p, Number(e)); 8550 p(); 8551 }), 8552 (t.triggerUserSyncs = () => { 8553 f.enableOverride && t.syncUsers(); 8554 }), 8555 (t.canBidderRegisterSync = (e, t) => 8556 !f.filterSettings || !m(e, t)), 8557 t 8558 ); 8559 })( 8560 Object.defineProperties( 8561 { 8562 config: o.$.getConfig("userSync"), 8563 isAllowed: a.io, 8564 regRule: a.qB, 8565 }, 8566 { 8567 browserSupportsCookies: { 8568 get: function () { 8569 return ( 8570 !(0, r.Vt)() && 8571 !(0, r.M_)() && 8572 !(0, r.yW)() && 8573 l.cookiesAreEnabled() 8574 ); 8575 }, 8576 }, 8577 }, 8578 ), 8579 ); 8580 }, 8581 7413(e, t, n) { 8582 (n.r(t), 8583 n.d(t, { 8584 $D: () => O, 8585 $l: () => We, 8586 $z: () => Se, 8587 Bg: () => Qe, 8588 Bj: () => ze, 8589 Bk: () => re, 8590 Bp: () => u.Bp, 8591 Bq: () => oe, 8592 CA: () => M, 8593 D4: () => se, 8594 D9: () => Me, 8595 Dl: () => Ne, 8596 ER: () => K, 8597 El: () => Ke, 8598 Et: () => s.Et, 8599 Ez: () => G, 8600 Fe: () => o.A, 8601 Fq: () => s.Fq, 8602 GE: () => Oe, 8603 Go: () => s.Go, 8604 HV: () => Y, 8605 II: () => ce, 8606 Im: () => F, 8607 JE: () => f, 8608 Jw: () => ge, 8609 K2: () => J, 8610 KQ: () => x, 8611 Lm: () => s.Lm, 8612 M3: () => Ze, 8613 M_: () => be, 8614 N9: () => Ce, 8615 Ni: () => Je, 8616 O8: () => s.O8, 8617 OG: () => g, 8618 OI: () => Q, 8619 Ot: () => u.Ot, 8620 PB: () => Fe, 8621 Q0: () => le, 8622 Qd: () => s.Qd, 8623 SB: () => ke, 8624 SG: () => te, 8625 SH: () => s.SH, 8626 Tz: () => ne, 8627 U6: () => Be, 8628 Up: () => je, 8629 Uu: () => s.Uu, 8630 V: () => Te, 8631 Vt: () => he, 8632 Vv: () => u.Vv, 8633 Wf: () => et, 8634 YE: () => q, 8635 YI: () => v, 8636 ZA: () => de, 8637 ZK: () => nt, 8638 ZU: () => Ee, 8639 _W: () => ae, 8640 _s: () => H, 8641 al: () => pe, 8642 av: () => N, 8643 bD: () => Ve, 8644 bL: () => C, 8645 bM: () => R, 8646 bu: () => L, 8647 bz: () => $e, 8648 c$: () => Pe, 8649 cf: () => U, 8650 cy: () => s.cy, 8651 dp: () => h,
8652 eP: () => qe, 8653 eY: () => Xe, 8654 fH: () => l, 8655 fi: () => Z, 8656 fp: () => s.fp, 8657 gM: () => ve, 8658 gR: () => z, 8659 h0: () => m, 8660 hj: () => ie, 8661 hw: () => V, 8662 iC: () => De, 8663 k4: () => fe, 8664 kK: () => S, 8665 kL: () => Ye, 8666 l4: () => j, 8667 lk: () => T, 8668 mJ: () => we, 8669 mM: () => b, 8670 mb: () => _, 8671 n7: () => k, 8672 nT: () => tt, 8673 nX: () => D, 8674 n_: () => He, 8675 qL: () => c.J, 8676 ro: () => ee, 8677 s0: () => A, 8678 sC: () => Ue, 8679 t1: () => ue, 8680 tT: () => _e, 8681 tf: () => Ie, 8682 u4: () => xe, 8683 u5: () => I, 8684 vE: () => Ae, 8685 vV: () => p, 8686 wD: () => Re, 8687 wV: () => Le, 8688 x: () => P, 8689 xQ: () => W, 8690 xV: () => me, 8691 y$: () => B, 8692 yW: () => ye, 8693 z$: () => X, 8694 })); 8695 var r = n(8384), 8696 i = n(8203), 8697 o = n(8928), 8698 s = n(3350), 8699 a = n(1343), 8700 d = n(217), 8701 c = n(3435), 8702 u = n(8378); 8703 const l = a.fH, 8704 f = a.JE, 8705 p = a.vV, 8706 g = a.OG, 8707 m = a.h0, 8708 h = d.d, 8709 b = { 8710 checkCookieSupport: Oe, 8711 getWindowSelf: j, 8712 getWindowTop: _, 8713 canAccessWindowTop: N, 8714 getWindowLocation: x, 8715 insertUserSyncIframe: te, 8716 insertElement: H, 8717 isFn: s.fp, 8718 triggerPixel: X, 8719 logError: p, 8720 logWarn: f, 8721 logMessage: g, 8722 logInfo: l, 8723 parseQS: xe, 8724 formatQS: qe, 8725 deepEqual: Ve, 8726 runBackgroundTask: Z, 8727 }, 8728 y = {}; 8729 function v() { 8730 return y; 8731 } 8732 var E, 8733 w = 8734 ((E = 0), 8735 function () { 8736 return ++E; 8737 }); 8738 function A() { 8739 return w() + Math.random().toString(16).substring(2); 8740 } 8741 function T(e) { 8742 return e 8743 ? ( 8744 e ^ 8745 ((window && window.crypto && window.crypto.getRandomValues 8746 ? window.crypto.getRandomValues(new Uint8Array(1))[0] % 16 8747 : 16 * Math.random()) >> 8748 (e / 4)) 8749 ).toString(16) 8750 : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, T); 8751 } 8752 function I(e, t) { 8753 return t?.[e] || ""; 8754 } 8755 function C(e) { 8756 let t = ""; 8757 for (var n in e) 8758 e.hasOwnProperty(n) && 8759 (t += n + "=" + encodeURIComponent(e[n]) + "&"); 8760 return ((t = t.replace(/&$/, "")), t); 8761 } 8762 function O(e) { 8763 return e && Object.getOwnPropertyNames(e).length > 0 8764 ? Object.keys(e) 8765 .map((t) => `${t}=${encodeURIComponent(e[t])}`) 8766 .join("&") 8767 : ""; 8768 } 8769 function B(e) { 8770 return "string" == typeof e 8771 ? e 8772 .split(/\s*,\s*/) 8773 .map((e) => e.match(/^(\d+)x(\d+)$/i)) 8774 .filter((e) => e) 8775 .map(([e, t, n]) => [parseInt(t, 10), parseInt(n, 10)]) 8776 : Array.isArray(e) 8777 ? $(e) 8778 ? [e] 8779 : e.filter($) 8780 : []; 8781 } 8782 function S(e) { 8783 return B(e).map(R); 8784 } 8785 function R(e) { 8786 return e[0] + "x" + e[1]; 8787 } 8788 function k(e) { 8789 if ($(e)) return R(e); 8790 } 8791 function U(e) { 8792 return { w: e[0], h: e[1] }; 8793 } 8794 function D(e) { 8795 if ($(e)) return U(e); 8796 } 8797 function $(e) { 8798 return ( 8799 (0, s.cy)(e) && 2 === e.length && !isNaN(e[0]) && !isNaN(e[1]) 8800 ); 8801 } 8802 function _() { 8803 return window.top; 8804 } 8805 function j() { 8806 return window.self; 8807 } 8808 function x() { 8809 return window.location; 8810 } 8811 function q() { 8812 return document; 8813 } 8814 function N() { 8815 try { 8816 if (b.getWindowTop().location.href) return !0; 8817 } catch (e) { 8818 return !1; 8819 } 8820 } 8821 function P(e) { 8822 return e || (N() ? b.getWindowTop() : b.getWindowSelf()); 8823 } 8824 const V = (() => { 8825 const e = { 8826 border: "0px", 8827 hspace: "0", 8828 vspace: "0", 8829 marginWidth: "0", 8830 marginHeight: "0", 8831 scrolling: "no", 8832 frameBorder: "0", 8833 allowtransparency: "true", 8834 }; 8835 return (t, n, r = {}) => { 8836 const i = t.createElement("iframe"); 8837 return ( 8838 Object.assign(i, Object.assign({}, e, n)), 8839 Object.assign(i.style, r), 8840 i 8841 ); 8842 }; 8843 })(); 8844 function M() { 8845 return V( 8846 document, 8847 { id: A(), width: 0, height: 0, src: "about:blank" }, 8848 { display: "none", height: "0px", width: "0px", border: "0px" }, 8849 ); 8850 } 8851 function G(e) { 8852 return xe(x().search)[e] || ""; 8853 } 8854 function F(e) { 8855 return ( 8856 !e || 8857 ((0, s.cy)(e) || (0, s.O8)(e) 8858 ? !(e.length > 0) 8859 : Object.keys(e).length <= 0) 8860 ); 8861 } 8862 function W(e) { 8863 return (0, s.O8)(e) && (!e || 0 === e.length); 8864 } 8865 function L(e, t) { 8866 if ((0, s.fp)(e?.forEach)) return e.forEach(t, this); 8867 Object.entries(e || {}
8867).forEach(([e, n]) => t.call(this, n, e)); 8868 } 8869 function z(e, t) { 8870 return (0, s.fp)(e?.includes) && e.includes(t); 8871 } 8872 function J(e, t) { 8873 return (0, s.fp)(e?.map) 8874 ? e.map(t) 8875 : Object.entries(e || {}).map(([n, r]) => t(r, n, e)); 8876 } 8877 function H(e, t, n, r) { 8878 let i; 8879 ((t = t || document), 8880 (i = n 8881 ? t.getElementsByTagName(n) 8882 : t.getElementsByTagName("head"))); 8883 try { 8884 if ( 8885 ((i = i.length ? i : t.getElementsByTagName("body")), i.length) 8886 ) { 8887 i = i[0]; 8888 const t = r ? null : i.firstChild; 8889 return i.insertBefore(e, t); 8890 } 8891 } catch (e) {} 8892 } 8893 function Q(e, t) { 8894 let n = null; 8895 return new i.U9((r) => { 8896 const i = function () { 8897 (e.removeEventListener("load", i), 8898 e.removeEventListener("error", i), 8899 null != n && window.clearTimeout(n), 8900 r()); 8901 }; 8902 (e.addEventListener("load", i), 8903 e.addEventListener("error", i), 8904 null != t && (n = window.setTimeout(i, t))); 8905 }); 8906 } 8907 function K(e, t = "include") { 8908 Z(() => { 8909 if (window.fetch && window.Request) 8910 try { 8911 const n = new Request(e, { 8912 method: "GET", 8913 mode: "no-cors", 8914 credentials: t, 8915 keepalive: !0, 8916 }); 8917 return void window.fetch(n).catch(() => { 8918 "omit" !== t && X(e); 8919 }); 8920 } catch (e) {} 8921 "omit" !== t && X(e); 8922 }); 8923 } 8924 function Y(e) { 8925 Z(() => te(e)); 8926 } 8927 function X(e, t, n) { 8928 const r = new Image(); 8929 (t && b.isFn(t) && Q(r, n).then(t), (r.src = e)); 8930 } 8931 function Z(e) { 8932 const t = window.scheduler; 8933 t?.postTask 8934 ? t.postTask(e, { priority: "background" }).catch(() => e()) 8935 : "function" != typeof window.requestIdleCallback 8936 ? e() 8937 : window.requestIdleCallback(() => e(), { timeout: 2e3 }); 8938 } 8939 function ee(e) { 8940 if (!e) return; 8941 const t = M(); 8942 var n; 8943 (b.insertElement(t, document, "body"), 8944 (n = t.contentWindow.document).open(), 8945 n.write(e), 8946 n.close()); 8947 } 8948 function te(e, t, n) { 8949 if (!e) return; 8950 const r = V( 8951 document, 8952 { sandbox: "allow-scripts allow-same-origin", src: e }, 8953 { width: "0px", height: "0px", display: "none" }, 8954 ); 8955 (t && b.isFn(t) && Q(r, n).then(t), 8956 b.insertElement(r, document, "html", !0)); 8957 } 8958 function ne(e, t = encodeURI) { 8959 if (!e) return ""; 8960 let n = 8961 '<div style="position:absolute;left:0px;top:0px;visibility:hidden;">'; 8962 return ((n += '<img src="' + t(e) + '"></div>'), n); 8963 } 8964 function re(e) { 8965 return Array.from(e.matchAll(/\$({[^}]+})/g)) 8966 .map((e) => e[1]) 8967 .reduce( 8968 (e, t) => e.replace("$" + encodeURIComponent(t), "$" + t), 8969 encodeURI(e), 8970 ); 8971 } 8972 function ie(e, t, n) { 8973 return n.indexOf(e) === t; 8974 } 8975 function oe(e, t) { 8976 return e.concat(t); 8977 } 8978 function se(e, t) { 8979 if (e) 8980 return t 8981 .flatMap((e) => e.bids) 8982 .find((t) => 8983 ["bidId", "adId", "bid_id"].some((n) => t[n] === e), 8984 ); 8985 } 8986 function ae(e, t) { 8987 return e[t]; 8988 } 8989 function de(e) { 8990 return e 8991 .map((e) => e.bids.map((e) => e.bidder).reduce(oe, [])) 8992 .reduce(oe, []) 8993 .filter((e) => void 0 !== e) 8994 .filter(ie); 8995 } 8996 function ce() { 8997 if ( 8998 window.googletag && 8999 (0, s.fp)(window.googletag.pubads) && 9000 (0, s.fp)(window.googletag.pubads().getSlots) 9001 ) 9002 return !0; 9003 } 9004 function ue() { 9005 if (window.apntag && (0, s.fp)(window.apntag.getTag)) return !0; 9006 } 9007 const le = (e, t) => t.cpm - e.cpm; 9008 function fe(e) { 9009 let t = e.length; 9010 for (; t > 0;) { 9011 const n = Math.floor(Math.random() * t); 9012 t--; 9013 const r = e[t]; 9014 ((e[t] = e[n]), (e[n] = r)); 9015 } 9016 return e; 9017 } 9018 function pe() { 9019 try { 9020 return b.getWindowSelf() !== b.getWindowTop(); 9021 } catch (e) { 9022 return !0; 9023 } 9024 } 9025 function ge() { 9026 if (!pe()) return !1; 9027 const e = b.getWindowSelf(); 9028 return !(!e.$sf || !e.$sf.ext); 9029 } 9030 function me() { 9031 try { 9032 const e = j(); 9033 return "function" == typeof e.$sf.ext.geom 9034 ? e.$sf.ext.geom() 9035 : void 0; 9036 } catch (e) { 9037 return void p("Error getting SafeFrame geometry", e); 9038 } 9039 } 9040 function he() { 9041 return /^((?!chrome|chromium|android|crios|fxios).)*safari/i.test( 9042 navigator.userAgent, 9043 ); 9044 } 9045 function be() { 9046 return /firefox|fxios/i.test(navigator.userAgent); 9047 } 9048 function ye() { 9049 return /crios|crmo/i.test(navigator.userAgent); 9050 } 9051 function ve(e, t) { 9052 if (e) 9053 return Object.entries(t).reduce( 9054 (e, [t, n]) => 9055 e.replace(new RegExp("\\$\\{" + t + "\\}", "g"), n || ""), 9056 e, 9057 ); 9058 } 9059 function Ee(e, t) { 9060 return ve(e, { AUCTION_PRICE: t }); 9061 } 9062 function we(e, t) { 9063 if (e && t && "string" == typeof t) 9064 return e.replace(/\${CLICKTHROUGH}/g, t); 9065 } 9066 function Ae() { 9067 return new Date().getTime(); 9068 } 9069 function Te() { 9070 return ( 9071 (window.performance && 9072 window.performance.now && 9073 window.performance.now()) || 9074 0 9075 ); 9076 } 9077 function Ie(e) { 9078 let t = -1; 9079 const n = (e = e || j()).performance; 9080 if ( 9081 e.performance?.timing && 9082 e.performance.timing.navigationStart > 0 9083 ) { 9084 const e = n.timing.domLoading - n.timing.navigationStart; 9085 e > 0 && (t = e); 9086 } 9087 return t; 9088 } 9089 function Ce() { 9090 return !1 !== r.$.getConfig("deviceAccess"); 9091 } 9092 function Oe() { 9093 if (window.navigator.cookieEnabled || document.cookie.length) 9094 return !0; 9095 } 9096 function Be(e, t) { 9097 if (t < 1) 9098 throw new Error( 9099 `numRequiredCalls must be a positive number. Got ${t}`, 9100 ); 9101 let n = 0; 9102 return function () { 9103 (n++, n === t && e.apply(this, arguments)); 9104 }; 9105 } 9106 function Se(e, t) { 9107 return e.reduce(function (e, n) { 9108 return ((e[n[t]] = e[n[t]] || []).push(n), e); 9109 }, {}); 9110 } 9111 function Re(e) { 9112 const t = ["banner", "native", "video", "audio"], 9113 n = ["instream", "outstream"]; 9114 return ( 9115 !!Object.keys(e).every((e) => t.includes(e)) && 9116 (!e.video || !e.video.context || n.includes(e.video.context)) 9117 ); 9118 } 9119 function ke(e, t, n) { 9120 return e 9121 .filter((e) => e.code === t) 9122 .flatMap((e) => e.bids) 9123 .filter((e) => e.bidder === n) 9124 .map((e) => e.params || {}); 9125 } 9126 const Ue = (e, t) => 9127 e.getAdUnitPath() === t || e.getSlotElementId() === t; 9128 function De(e) { 9129 const t = r.$.getConfig("customGptSlotMatching"), 9130 n = (0, s.fp)(t) && t(e); 9131 return (0, s.fp)(n) ? n : (t) => Ue(e, t); 9132 } 9133 function $e(e, t) { 9134 const n = Object.keys(e.mediaTypes || { banner: "banner" }).join( 9135 ", ", 9136 ); 9137 return `\n ${e.code} is a ${n} ad unit\n containing bidders that don't support ${n}: ${t}
9137.\n This bidder won't fetch demand.\n `; 9138 } 9139 function _e(e) { 9140 return Object.fromEntries( 9141 Object.entries(e).filter(([e, t]) => void 0 !== t), 9142 ); 9143 } 9144 function je(e, t) { 9145 return "object" != typeof e 9146 ? {} 9147 : t.reduce((n, r, i) => { 9148 if ("function" == typeof r) return n; 9149 let o = r; 9150 const s = r.match(/^(.+?)\sas\s(.+?)$/i); 9151 s && ((r = s[1]), (o = s[2])); 9152 let a = e[r]; 9153 return ( 9154 "function" == typeof t[i + 1] && (a = t[i + 1](a, n)), 9155 void 0 !== a && (n[o] = a), 9156 n 9157 ); 9158 }, {}); 9159 } 9160 function xe(e) { 9161 return e 9162 ? e 9163 .replace(/^\?/, "") 9164 .split("&") 9165 .reduce((e, t) => { 9166 let [n, r] = t.split("="); 9167 return ( 9168 /\[\]$/.test(n) 9169 ? ((n = n.replace("[]", "")), 9170 (e[n] = e[n] || []), 9171 e[n].push(r)) 9172 : (e[n] = r || ""), 9173 e 9174 ); 9175 }, {}) 9176 : {}; 9177 } 9178 function qe(e) { 9179 return Object.keys(e) 9180 .map((t) => 9181 Array.isArray(e[t]) 9182 ? e[t].map((e) => `${t}[]=${e}`).join("&") 9183 : `${t}=${e[t]}`, 9184 ) 9185 .join("&"); 9186 } 9187 function Ne(e, t) { 9188 const n = document.createElement("a"); 9189 t && "noDecodeWholeURL" in t && t.noDecodeWholeURL 9190 ? (n.href = e) 9191 : (n.href = decodeURIComponent(e)); 9192 const r = 9193 t && "decodeSearchAsString" in t && t.decodeSearchAsString; 9194 return { 9195 href: n.href, 9196 protocol: (n.protocol || "").replace(/:$/, ""), 9197 hostname: n.hostname, 9198 port: +n.port, 9199 pathname: n.pathname.replace(/^(?!\/)/, "/"), 9200 search: r ? n.search : b.parseQS(n.search || ""), 9201 hash: (n.hash || "").replace(/^#/, ""), 9202 host: n.host || window.location.host, 9203 }; 9204 } 9205 function Pe(e) { 9206 return ( 9207 (e.protocol || "http") + 9208 "://" + 9209 (e.host || e.hostname + (e.port ? `:${e.port}` : "")) + 9210 (e.pathname || "") + 9211 (e.search ? `?${b.formatQS(e.search || "")}` : "") + 9212 (e.hash ? `#${e.hash}` : "") 9213 ); 9214 } 9215 function Ve(e, t, { checkTypes: n = !1 } = {}) { 9216 if (e === t) return !0; 9217 if ( 9218 "object" != typeof e || 9219 null === e || 9220 "object" != typeof t || 9221 null === t 9222 ) 9223 return !1; 9224 const r = Array.isArray(e), 9225 i = Array.isArray(t); 9226 if (r && i) { 9227 if (e.length !== t.length) return !1; 9228 for (let r = 0; r < e.length; r++) 9229 if (!Ve(e[r], t[r], { checkTypes: n })) return !1; 9230 return !0; 9231 } 9232 if (r || i) return !1; 9233 if (n && e.constructor !== t.constructor) return !1; 9234 const o = Object.keys(e), 9235 s = Object.keys(t); 9236 if (o.length !== s.length) return !1; 9237 for (const r of o) { 9238 if (!Object.prototype.hasOwnProperty.call(t, r)) return !1; 9239 if (!Ve(e[r], t[r], { checkTypes: n })) return !1; 9240 } 9241 return !0; 9242 } 9243 function Me(e, ...t) { 9244 for (let n = 0; n < t.length; n++) { 9245 const r = t[n]; 9246 (0, s.Qd)(r) && Ge(e, r); 9247 } 9248 return e; 9249 } 9250 function Ge(e, t) { 9251 if (!(0, s.Qd)(e) || !(0, s.Qd)(t)) return; 9252 const n = Object.keys(t); 9253 for (let r = 0; r < n.length; r++) { 9254 const i = n[r]; 9255 if ("__proto__" === i || "constructor" === i) continue; 9256 const o = t[i]; 9257 (0, s.Qd)(o) 9258 ? ((0, s.Qd)(e[i]) || (e[i] = {}), Ge(e[i], o)) 9259 : Array.isArray(o) 9260 ? Array.isArray(e[i]) 9261 ? o.forEach((t) => { 9262 e[i].some((e) => Ve(e, t)) || e[i].push(t); 9263 }) 9264 : (e[i] = [...o]) 9265 : (e[i] = o); 9266 } 9267 } 9268 function Fe(e, t = 0) { 9269 const n = function (e, t) { 9270 if ((0, s.fp)(Math.imul)) return Math.imul(e, t); 9271 var n = (4194303 & e) * (t |= 0); 9272 return ( 9273 4290772992 & e && (n += ((4290772992 & e) * t) | 0), 9274 0 | n 9275 ); 9276 }; 9277 let r = 3735928559 ^ t, 9278 i = 1103547991 ^ t; 9279 for (let t, o = 0; o < e.length; o++) 9280 ((t = e.charCodeAt(o)), 9281 (r = n(r ^ t, 2654435761)), 9282 (i = n(i ^ t, 1597334677))); 9283 return ( 9284 (r = 9285 n(r ^ (r >>
9285> 16), 2246822507) ^ n(i ^ (i >>> 13), 3266489909)), 9286 (i = 9287 n(i ^ (i >>> 16), 2246822507) ^ n(r ^ (r >>> 13), 3266489909)), 9288 (4294967296 * (2097151 & i) + (r >>> 0)).toString() 9289 ); 9290 } 9291 function We(e) { 9292 try { 9293 return JSON.parse(e); 9294 } catch (e) {} 9295 } 9296 function Le(e) { 9297 try { 9298 return JSON.stringify(e); 9299 } catch (e) { 9300 return ""; 9301 } 9302 } 9303 function ze( 9304 e, 9305 t = function (e) { 9306 return e; 9307 }, 9308 ) { 9309 const n = new Map(), 9310 r = function () { 9311 const r = t.apply(this, arguments); 9312 return ( 9313 n.has(r) || n.set(r, e.apply(this, arguments)), 9314 n.get(r) 9315 ); 9316 }; 9317 return ((r.clear = n.clear.bind(n)), r); 9318 } 9319 function Je(e = 0, t = "d") { 9320 if (["m", "d"].indexOf(t) < 0) return Date.now(); 9321 const n = "m" === t ? 60 * e * 1e3 : 24 * e * 60 * 60 * 1e3; 9322 return Date.now() + (e && e > 0 ? n : 0); 9323 } 9324 function He(e) { 9325 return Object.keys(e).map((t) => ({ [t]: e[t] })); 9326 } 9327 function Qe(e, t) { 9328 Object.entries(t).forEach(([t, n]) => e.setAttribute(t, n)); 9329 } 9330 function Ke(e, t, n = (e) => e) { 9331 let r = 0, 9332 i = e.length && e.length - 1; 9333 const o = n(t); 9334 for (; i - r > 1;) { 9335 const t = r + Math.round((i - r) / 2); 9336 o > n(e[t]) ? (r = t) : (i = t); 9337 } 9338 for (; e.length > r && o > n(e[r]);) r++; 9339 return r; 9340 } 9341 function Ye(e, t = new Set()) { 9342 for (const n in e) { 9343 const r = e[n], 9344 i = typeof r; 9345 if ( 9346 void 0 === r || 9347 "function" === i || 9348 "symbol" === i || 9349 r instanceof RegExp || 9350 r instanceof Map || 9351 r instanceof Set || 9352 r instanceof Date || 9353 (null !== r && 9354 "object" === i && 9355 Object.prototype.hasOwnProperty.call(r, "toJSON")) 9356 ) 9357 return !0; 9358 if (null !== r && "object" === i && r.constructor === Object) { 9359 if (t.has(r)) return !0; 9360 if ((t.add(r), Ye(r, t))) return !0; 9361 } 9362 } 9363 return !1; 9364 } 9365 function Xe(e, t) { 9366 for (let n, r = 0; r < e.length; r++) 9367 if (((n = (0, o.A)(e[r], t)), n)) return n; 9368 } 9369 function Ze(e) { 9370 let t = null; 9371 try { 9372 const n = 9373 /[-\w]+\.([-\w]+|[-\w]{3,}|[-\w]{1,3}\.[-\w]{2})$/i.exec(e); 9374 if (null != n && n.length > 0) { 9375 t = n[0]; 9376 for (let e = 1; e < n.length; e++) 9377 n[e].length > t.length && (t = n[e]); 9378 } 9379 } catch (e) { 9380 t = null; 9381 } 9382 return t; 9383 } 9384 function et(e, t) { 9385 (0, s.O8)(e.nurl) && 9386 "" !== e.nurl && 9387 ((e.nurl = e.nurl.replace(/\${AUCTION_PRICE}/, t)), X(e.nurl)); 9388 } 9389 const tt = (function () { 9390 let e; 9391 return function () { 9392 if (void 0 !== e) return e; 9393 try { 9394 void 0 === window.CompressionStream 9395 ? (e = !1) 9396 : (new window.CompressionStream("gzip"), (e = !0)); 9397 } catch (t) { 9398 e = !1; 9399 } 9400 return e; 9401 }; 9402 })(); 9403 async function nt(e) { 9404 "string" != typeof e && (e = JSON.stringify(e)); 9405 const t = new TextEncoder().encode(e), 9406 n = new Blob([t]) 9407 .stream() 9408 .pipeThrough(new window.CompressionStream("gzip")), 9409 r = await new Response(n).blob(), 9410 i = await r.arrayBuffer(); 9411 return new Uint8Array(i); 9412 } 9413 }, 9414 5262(e, t, n) { 9415 function r(e) { 9416 if (null != e.element) return e.element; 9417 const t = e.adUnitCode ?? e.code; 9418 return t ? document.getElementById(t) : null; 9419 } 9420 n.d(t, { o: () => r }); 9421 }, 9422 9200(e, t, n) { 9423 n.d(t, { H: () => s, y: () => a }); 9424 var r = n(6825), 9425 i = n(5437), 9426 o = n(7413); 9427 function s(e, t, n, r) { 9428 const i = e?.adapterCode, 9429 o = e?.bidderCode || r?.bidder, 9430 s = t.get(e?.adapterCode, "adjustAlternateBids"); 9431 return t.getOwn(o, n) || t.get(s ? i : o, n); 9432 } 9433 function a(e, t, n, { index: a = r.n.index, bs: d = i.u } = {}) { 9434 const c = s( 9435 t, 9436 d, 9437 "bidCpmAdjustment", 9438 (n = n || a.getBidRequest(t)), 9439 ); 9440 if (c && "function" == typeof c) 9441 try { 9442 return c(e, Object.assign({}, t), n); 9443 } catch (e) { 9444 (0, o.vV)("Error during bid adjustment", e); 9445 } 9446 return e; 9447 } 9448 }, 9449 217(e, t, n) { 9450 n.d(t, { d: () => i }); 9451 var r = n(8384); 9452 function i() { 9453 return !!r.$.getConfig("debug"); 9454 } 9455 }, 9456 4983(e, t, n) { 9457 n.d(t, { j: () => s, v: () => a }); 9458 var r = n(5437), 9459 i = n(7413), 9460 o = n(9200); 9461 function s(e, t, n = {}) { 9462 const s = n.bs ?? r.u, 9463 a = Object.assign({}, e), 9464 d = e.cpm, 9465 c = (0, o.H)(e, s, "bidDesirabilityAdjustment", t); 9466 if ("function" != typeof c) return d; 9467 try { 9468 return c(d, a, t); 9469 } catch (e) { 9470 return ( 9471 (0, i.vV)("Error during bid desirability adjustment", e), 9472 d 9473 ); 9474 } 9475 } 9476 function a(e, t) { 9477 return t.desirability && e.desirability 9478 ? t.desirability - e.desirability 9479 : t.cpm - e.cpm; 9480 } 9481 }, 9482 7936(e, t, n) { 9483 function r(e) { 9484 return "function" == typeof e.getConfig; 9485 } 9486 function i(e) { 9487 return e.getConfig("targeting").targeting ?? {}; 9488 } 9489 function o(e, t) { 9490 r(e) ? e.setConfig({ targeting: t }) : e.updateTargetingFromMap(t); 9491 } 9492 function s(e, t) { 9493 return r(e) ? (i(e)[t] ?? []) : e.getTargeting(t); 9494 } 9495 function a(e) { 9496 return r(e) ? Object.keys(i(e)) : e.getTargetingKeys(); 9497 } 9498 n.d(t, { A6: () => s, W$: () => a, ns: () => o }); 9499 }, 9500 1343(e, t, n) { 9501 n.d(t, { 9502 JE: () => f, 9503 OG: () => u, 9504 cD: () => d, 9505 fH: () => l, 9506 h0: () => g, 9507 vV: () => p, 9508 }); 9509 var r = n(8384), 9510 i = n(217), 9511 o = n(5521); 9512 const s = { 9513 log: "MESSAGE", 9514 info: "INFO", 9515 warn: "WARNING", 9516 error: "ERROR", 9517 }; 9518 let a; 9519 function d(e) { 9520 a = e; 9521 } 9522 function c(e, t = !1) { 9523 const n = window.console?.[e], 9524 d = `${s[e]}:`; 9525 return function (...c) { 9526 ("function" == typeof n && 9527 (0, i.d)() && 9528 n.apply( 9529 console, 9530 (function (e, t) { 9531 e = [].slice.call(e); 9532 const n = r.$.getCurrentBidder(); 9533 (t && e.unshift(t), n && e.unshift(i("#aaa"))); 9534 return ( 9535 e.unshift(i("#3b88c3")), 9536 e.unshift("%cPrebid" + (n ? `%c${n}` : "")), 9537 e 9538 ); 9539 function i(e) { 9540 return `display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`; 9541 } 9542 })(c, d), 9543 ), 9544 t && 9545 ((e, ...t) => { 9546 null != a && a(e, ...t); 9547 })(o.qY.AUCTION_DEBUG, { type: s[e], arguments: c })); 9548 }; 9549 } 9550 const u = c("log"), 9551 l = c("info"), 9552 f = c("warn", !0), 9553 p = c("error", !0); 9554 function g(e) { 9555 function t(t) { 9556 return function (...n) { 9557 t(e, ...n); 9558 }; 9559 } 9560 return { 9561 logError: t(p), 9562 logWarn: t(f), 9563 logMessage: t(u), 9564 logInfo: t(l), 9565 }; 9566 } 9567 }, 9568 3350(e, t, n) { 9569 n.d(t, { 9570 Et: () => u, 9571 Go: () => i, 9572 Lm: () => f, 9573 O8: () => d, 9574 Qd: () => l, 9575 SH: () => o, 9576 Uu: () => g, 9577 fp: () => a, 9578 }); 9579 var r = n(1490); 9580 function i(e) { 9581 return (0, r.Q)(e) || {}; 9582 } 9583 function o(e, t) { 9584 return t 9585 .filter((t) => e[t]) 9586 .reduce((t, n) => Object.assign(t, { [n]: e[n] }), {}); 9587 } 9588 const s = Object.prototype.toString; 9589 function a(e) { 9590 return "function" == typeof e; 9591 } 9592 function d(e) { 9593 return "string" == typeof e; 9594 } 9595 const c = Array.isArray.bind(Array); 9596 function u(e) { 9597 return "number" == typeof e; 9598 } 9599 function l(e) { 9600 return "[object Object]" === s.call(e); 9601 } 9602 function f(e) { 9603 return "boolean" == typeof e; 9604 } 9605 const p = Number.isInteger.bind(Number); 9606 function g(e, t) { 9607 return c(e) && (!t || e.length === t) && e.every((e) => p(e)); 9608 } 9609 n.d(t, ["Fq", 0, p, "cy", 0, c]); 9610 }, 9611 2822(e, t, n) { 9612 n.d(t, { BO: () => p }); 9613 var r = n(8384); 9614 const i = "performanceMetrics", 9615 o = 9616 window.performance && window.performance.now 9617 ? () => window.performance.now() 9618 : () => Date.now(), 9619 s = new WeakMap(); 9620 function a(e, t, n) { 9621 return function (...r) { 9622 t && t(); 9623 try { 9624 return e.apply(this, r); 9625 } finally { 9626 n && n(); 9627 } 9628 }; 9629 } 9630 function d({ 9631 now: e = o, 9632 mkNode: t = u, 9633 mkTimer: n = c,
9634 mkRenamer: r = (e) => e, 9635 nodes: i = s, 9636 } = {}) { 9637 return function () { 9638 return (function o( 9639 s, 9640 a = (e) => ({ 9641 forEach(t) { 9642 t(e); 9643 }, 9644 }), 9645 ) { 9646 a = r(a); 9647 const d = 9648 ((c = "timestamps"), 9649 function (e) { 9650 return s.dfWalk({ 9651 visit(t, n) { 9652 const r = n[c]; 9653 if (r.hasOwnProperty(e)) return r[e]; 9654 }, 9655 }); 9656 }); 9657 var c; 9658 function u(e, t) { 9659 const n = a(e); 9660 s.dfWalk({ 9661 follow: (e, t) => t.propagate && (!e || !e.stopPropagation), 9662 visit(e, r) { 9663 n.forEach((n) => { 9664 null == e 9665 ? (r.metrics[n] = t) 9666 : (r.groups.hasOwnProperty(n) || (r.groups[n] = []), 9667 r.groups[n].push(t)); 9668 }); 9669 }, 9670 }); 9671 } 9672 function l(t) { 9673 return n(e, (e) => u(t, e)); 9674 } 9675 function f() { 9676 const e = {}; 9677 return ( 9678 s.dfWalk({ 9679 visit(t, n) { 9680 const r = (t, n) => { 9681 Object.prototype.hasOwnProperty.call(e, t) || 9682 (e[t] = n); 9683 }; 9684 (Object.entries(n.metrics).forEach(([e, t]) => r(e, t)), 9685 (t && !t.includeGroups) || 9686 Object.entries(n.groups).forEach(([e, t]) => 9687 r(e, t), 9688 )); 9689 }, 9690 }), 9691 e 9692 ); 9693 } 9694 const p = { 9695 startTiming: l, 9696 measureTime: function (e, t) { 9697 return l(e).stopAfter(t)(); 9698 }, 9699 measureHookTime: function (e, t, n) { 9700 const r = l(e); 9701 return n( 9702 (function (e) { 9703 const t = r.stopBefore(e); 9704 return ( 9705 (t.bail = e.bail && r.stopBefore(e.bail)), 9706 (t.stopTiming = r), 9707 (t.untimed = e), 9708 t 9709 ); 9710 })(t), 9711 ); 9712 }, 9713 checkpoint: function (t) { 9714 s.timestamps[t] = e(); 9715 }, 9716 timeSince: function (t, n) { 9717 const r = d(t), 9718 i = null != r ? e() - r : null; 9719 return (null != n && u(n, i), i); 9720 }, 9721 timeBetween: function (e, t, n) { 9722 const r = d(e), 9723 i = d(t), 9724 o = null != r && null != i ? i - r : null; 9725 return (null != n && u(n, o), o); 9726 }, 9727 setMetric: u, 9728 getMetrics: f, 9729 fork: function ({ 9730 propagate: e = !0, 9731 stopPropagation: n = !1, 9732 includeGroups: r = !1, 9733 } = {}) { 9734 return o( 9735 t([ 9736 [ 9737 s, 9738 { 9739 propagate: e, 9740 stopPropagation: n, 9741 includeGroups: r, 9742 }, 9743 ], 9744 ]), 9745 a, 9746 ); 9747 }, 9748 join: function ( 9749 e, 9750 { 9751 propagate: t = !0, 9752 stopPropagation: n = !1, 9753 includeGroups: r = !1, 9754 } = {}, 9755 ) { 9756 const o = i.get(e); 9757 null != o && 9758 o.addParent(s, { 9759 propagate: t, 9760 stopPropagation: n, 9761 includeGroups: r, 9762 }); 9763 }, 9764 newMetrics: function () { 9765 return o(s.newSibling(), a); 9766 }, 9767 renameWith: function (e) { 9768 return o(s, e); 9769 }, 9770 toJSON: () => f(), 9771 }; 9772 return (i.set(p, s), p); 9773 })(t([])); 9774 }; 9775 } 9776 function c(e, t) { 9777 const n = e(); 9778 let r = !1; 9779 function i() {
9780 r || (t(e() - n), (r = !0)); 9781 } 9782 return ( 9783 (i.stopBefore = (e) => a(e, i)), 9784 (i.stopAfter = (e) => a(e, null, i)), 9785 i 9786 ); 9787 } 9788 function u(e) { 9789 return { 9790 metrics: {}, 9791 timestamps: {}, 9792 groups: {}, 9793 addParent(t, n) { 9794 e.push([t, n]); 9795 }, 9796 newSibling: () => u(e.slice()), 9797 dfWalk({ 9798 visit: t, 9799 follow: n = () => !0, 9800 visited: r = new Set(), 9801 inEdge: i, 9802 } = {}) { 9803 let o; 9804 if (!r.has(this)) { 9805 if ((r.add(this), (o = t(i, this)), null != o)) return o; 9806 for (const [s, a] of e) 9807 if ( 9808 n(i, a) && 9809 ((o = s.dfWalk({ 9810 visit: t, 9811 follow: n, 9812 visited: r, 9813 inEdge: a, 9814 })), 9815 null != o) 9816 ) 9817 return o; 9818 } 9819 }, 9820 }; 9821 } 9822 const l = (() => { 9823 const e = function () {}, 9824 t = () => ({}), 9825 n = { forEach: e }, 9826 r = () => null; 9827 ((r.stopBefore = (e) => e), (r.stopAfter = (e) => e)); 9828 const i = Object.defineProperties( 9829 { dfWalk: e, newSibling: () => i, addParent: e }, 9830 Object.fromEntries( 9831 ["metrics", "timestamps", "groups"].map((e) => [e, { get: t }]), 9832 ), 9833 ); 9834 return d({ 9835 now: () => 0, 9836 mkNode: () => i, 9837 mkRenamer: () => () => n, 9838 mkTimer: () => r, 9839 nodes: { get: e, set: e }, 9840 })(); 9841 })(); 9842 let f = !0; 9843 function p(e) { 9844 return (f && e) || l; 9845 } 9846 r.$.getConfig(i, (e) => { 9847 f = !!e[i]; 9848 }); 9849 const g = (() => { 9850 const e = d(); 9851 return function () { 9852 return f ? e() : l; 9853 }; 9854 })(); 9855 function m(e, t) { 9856 return function (n, r) { 9857 return (i, ...o) => 9858 p(t.apply(this, o)).measureHookTime(e + n, i, (e) => 9859 r.call(this, e, ...o), 9860 ); 9861 }; 9862 } 9863 (m("requestBids.", (e) => e.metrics), 9864 m("addBidResponse.", (e, t) => t.metrics)); 9865 n.d(t, ["K7", 0, g]); 9866 }, 9867 8203(e, t, n) { 9868 n.d(t, { v6: () => o }); 9869 var r = n(1129); 9870 (0, r.m)().setTimeout ?? setTimeout; 9871 const i = (0, r.m)().Promise ?? Promise; 9872 function o({ promiseFactory: e = (e) => new i(e) } = {}) { 9873 function t(e) { 9874 return (t) => e(t); 9875 } 9876 let n, r; 9877 return { 9878 promise: e((e, t) => { 9879 ((n = e), (r = t)); 9880 }), 9881 resolve: t(n), 9882 reject: t(r), 9883 }; 9884 } 9885 n.d(t, ["U9", 0, i]); 9886 }, 9887 7834(e, t, n) { 9888 n.d(t, { H: () => u }); 9889 var r = n(8203), 9890 i = n(7413); 9891 let o = null, 9892 s = 0, 9893 a = []; 9894 function d() { 9895 document.hidden 9896 ? (o = Date.now()) 9897 : ((s += Date.now() - (o ?? 0)), 9898 (o = null), 9899 a.forEach(({ callback: e, startTime: t, setTimerId: n }) => 9900 n(c(e, s - t)()), 9901 ), 9902 (a = [])); 9903 } 9904 function c(e, t) { 9905 const n = s; 9906 let r = setTimeout(() => { 9907 s === n && null == o 9908 ? e() 9909 : null != o 9910 ? a.push({ 9911 callback: e, 9912 startTime: n, 9913 setTimerId(e) { 9914 r = e; 9915 }, 9916 }) 9917 : (r = c(e, s - n)()); 9918 }, t); 9919 return () => r; 9920 } 9921 function u({ 9922 startTime: e = i.vE, 9923 ttl: t = () => null, 9924 monotonic: n = !1, 9925 slack: o = 5e3, 9926 } = {}) { 9927 const s = new Map(), 9928 a = [], 9929 d = [], 9930 u = n 9931 ? (e) => d.push(e) 9932 : (e) => 9933 d.splice( 9934 (0, i.El)(d, e, (e) => e.expiry), 9935 0, 9936 e, 9937 ); 9938 let l, f; 9939 function p() { 9940 if ((f && clearTimeout(f()), d.length > 0)) { 9941 const e = (0, i.vE)(); 9942 ((l = Math.max(e, d[0].expiry + o)), 9943 (f = c(() => { 9944 const e = (0, i.vE)(); 9945 let t = 0; 9946 for (const n of d) { 9947 if (n.expiry > e) break;
9948 (a.forEach((e) => { 9949 try { 9950 e(n.item); 9951 } catch (e) { 9952 (0, i.vV)(e); 9953 } 9954 }), 9955 s.delete(n.item), 9956 t++); 9957 } 9958 (d.splice(0, t), (f = null), p()); 9959 }, l - e))); 9960 } else f = null; 9961 } 9962 function g(n) { 9963 const i = {}, 9964 s = m; 9965 let a; 9966 const [d, c] = Object.entries({ start: e, delta: t }).map( 9967 ([e, t]) => { 9968 let d; 9969 return function () { 9970 const c = (d = {}); 9971 r.U9.resolve(t(n)).then((t) => { 9972 c === d && 9973 ((i[e] = t), 9974 s === m && 9975 null != i.start && 9976 null != i.delta && 9977 ((a = i.start + i.delta), 9978 u(g), 9979 (null == f || l > a + o) && p())); 9980 }); 9981 }; 9982 }, 9983 ), 9984 g = { 9985 item: n, 9986 refresh: c, 9987 get expiry() { 9988 return a; 9989 }, 9990 }; 9991 return (d(), c(), g); 9992 } 9993 let m = {}; 9994 return { 9995 [Symbol.iterator]: () => s.keys(), 9996 add(e) { 9997 !s.has(e) && s.set(e, g(e)); 9998 }, 9999 has: (e) => s.has(e), 10000 delete(e) { 10001 const t = s.get(e); 10002 if (t) 10003 for (let e = 0; e < d.length && d[e].expiry <= t.expiry; e++) 10004 if (d[e] === t) { 10005 d.splice(e, 1); 10006 break; 10007 } 10008 return s.delete(e); 10009 }, 10010 clear() { 10011 ((d.length = 0), p(), s.clear(), (m = {})); 10012 }, 10013 toArray: () => Array.from(s.keys()), 10014 refresh() { 10015 ((d.length = 0), p()); 10016 for (const e of s.values()) e.refresh(); 10017 }, 10018 onExpiry: (e) => ( 10019 a.push(e), 10020 () => { 10021 const t = a.indexOf(e); 10022 t >= 0 && a.splice(t, 1); 10023 } 10024 ), 10025 }; 10026 } 10027 document.addEventListener("visibilitychange", d); 10028 }, 10029 8378(e, t, n) { 10030 n.d(t, { Vv: () => d, Ot: () => s, Bp: () => a }); 10031 var r = n(7413); 10032 const i = new (function e(t, n) { 10033 const r = {}; 10034 let i = {}; 10035 const o = []; 10036 (Object.entries(n).forEach(([n, s]) => { 10037 if (null != s && "object" == typeof s) { 10038 const i = new e(() => t()?.[n], s); 10039 ((r[n] = i.obj), o.push(i.reset)); 10040 } else 10041 !0 === s && 10042 Object.defineProperty(r, n, { 10043 get: () => ( 10044 i.hasOwnProperty(n) || (i[n] = t()?.[n]), 10045 i[n] 10046 ), 10047 }); 10048 }), 10049 (this.obj = r), 10050 (this.reset = function () { 10051 (o.forEach((e) => e()), (i = {})); 10052 })); 10053 })( 10054 () => ((0, r.av)() ? r.mM.getWindowTop() : r.mM.getWindowSelf()), 10055 { 10056 innerHeight: !0, 10057 innerWidth: !0, 10058 screen: { width: !0, height: !0 }, 10059 visualViewport: { width: !0, height: !0 }, 10060 document: { 10061 documentElement: { 10062 clientWidth: !0, 10063 clientHeight: !0, 10064 scrollTop: !0, 10065 scrollLeft: !0, 10066 }, 10067 body: { 10068 scrollTop: !0, 10069 scrollLeft: !0, 10070 clientWidth: !0, 10071 clientHeight: !0, 10072 }, 10073 }, 10074 }, 10075 ), 10076 o = { winDimensions: i }, 10077 s = (() => { 10078 let e; 10079 return function () { 10080 return ( 10081 (!e || Date.now() - e > 20) && 10082 (o.winDimensions.reset(), (e = Date.now())), 10083 o.winDimensions.obj 10084 ); 10085 }; 10086 })(); 10087 function a() { 10088 o.winDimensions.reset(); 10089 } 10090 function d(e) { 10091 const t = 10092 e ?? ((0, r.av)() ? r.mM.getWindowTop() : r.mM.getWindowSelf()), 10093 n = t?.screen ?? r.mM.getWindowSelf()?.screen ?? window?.screen, 10094 i = Number(n?.width), 10095 o = Number(n?.height); 10096 if (Number.isFinite(i) && Number.isFinite(o)) 10097 return o >= i ? "portrait" : "landscape"; 10098 } 10099 }, 10100 6540(e, t, n) { 10101 function r(e) { 10102 const t = e.slice(); 10103 return ((t.bids = t), t); 10104 } 10105 n.d(t, { O: () => r }); 10106 }, 10107 2859(e, t, n) { 10108 n.d(t, { JE: () => s, o1: () => o }); 10109 var r = n(8203); 10110 function i(e, t) { 10111 e() 10112 ? (function () { 10113 const e = window.scheduler; 10114 return "function" == typeof e?.yield 10115 ? e.yield() 10116 : r.U9.resolve(); 10117 })().then(t) 10118 : t(); 10119 } 10120 function o(e, t) { 10121 return function (...n) { 10122 i(e, () => { 10123 t.apply(this, n); 10124 }); 10125 }; 10126 } 10127 function s(e, t, n) { 10128 !(function (e, t) { 10129 let n = 0; 10130 function r() { 10131 e.length > n 10132 ? ((n += 1), e[n - 1](r)) 10133 : "function" == typeof t && t(); 10134 } 10135 r(); 10136 })( 10137 t.map((t) => (n) => { 10138 i(e, () => { 10139 (t(), n()); 10140 }); 10141 }), 10142 n, 10143 ); 10144 } 10145 }, 10146 7791(e, t, n) { 10147 n.d(t, { 10148 H6: () => c, 10149 V0: () => g, 10150 Zy: () => f, 10151 mn: () => u, 10152 vk: () => m, 10153 }); 10154 var r = n(7413), 10155 i = n(3350), 10156 o = n(8384), 10157 s = n(1785), 10158 a = n(6825), 10159 d = n(4864); 10160 const c = "outstream", 10161 u = "instream", 10162 l = [ 10163 [ 10164 "mimes", 10165 (e) => 10166 Array.isArray(e) && 10167 e.length > 0 && 10168 e.every((e) => "string" == typeof e), 10169 ], 10170 ["minduration", i.Fq], 10171 ["maxduration", i.Fq], 10172 ["startdelay", i.Fq], 10173 ["maxseq", i.Fq], 10174 ["poddur", i.Fq], 10175 ["protocols", i.Uu], 10176 ["w", i.Fq], 10177 ["h", i.Fq], 10178 ["podid", i.O8], 10179 ["podseq", i.Fq], 10180 ["rqddurs", i.Uu], 10181 ["placement", i.Fq], 10182 ["plcmt", i.Fq], 10183 ["linearity", i.Fq], 10184 ["skip", (e) => [1, 0].includes(e)], 10185 ["skipmin", i.Fq], 10186 ["skipafter", i.Fq], 10187 ["sequence", i.Fq], 10188 ["slotinpod", i.Fq], 10189 ["mincpmpersec", i.Et], 10190 ["battr", i.Uu], 10191 ["maxextended", i.Fq], 10192 ["minbitrate", i.Fq], 10193 ["maxbitrate", i.Fq], 10194 ["boxingallowed", i.Fq], 10195 ["playbackmethod", i.Uu], 10196 ["playbackend", i.Fq], 10197 ["delivery", i.Uu], 10198 ["pos", i.Fq], 10199 ["api", i.Uu], 10200 ["companiontype", i.Uu], 10201 ["poddedupe", i.Uu], 10202 ], 10203 f = new Map(l); 10204 function p(e) { 10205 return !(!e?.renderer && !e?.safeRenderer); 10206 } 10207 function g(e) { 10208 const t = e?.mediaTypes?.video; 10209 if (null != t) { 10210 null == t.plcmt && 10211 (t.context === c || [2, 3, 4].includes(t.placement) 10212 ? (t.plcmt = 4) 10213 : t.playbackmethod?.some?.((e) => [2, 6].includes(e)) && 10214 (t.plcmt = 2)); 10215 const n = (0, i.Uu)(t.playerSize, 2) 10216 ? t.playerSize 10217 : Array.isArray(t.playerSize) && (0, i.Uu)(t.playerSize[0]) 10218 ? t.playerSize[0] 10219 : null, 10220 o = (0, i.Et)(t.w) && (0, i.Et)(t.h) ? [t.w, t.h] : null; 10221 let s = !1; 10222 (null == n 10223 ? null != o && 10224 (null != t.playerSize ? (s = !0) : (t.playerSize = [o])) 10225 : ["w", "h"].forEach((e, r) => { 10226 null != t[e] && t[e] !== n[r] ? (s = !0) : (t[e] = n[r]); 10227 }), 10228 s && 10229 (0, r.JE)( 10230 `Ad unit "${e.code} has conflicting playerSize and w/h`, 10231 e, 10232 )); 10233 } 10234 } 10235 function m(e, { index: t = a.n.index } = {}) { 10236 const n = t.getMediaTypes(e)?.video, 10237 r = n && n?.context, 10238 i = n && n?.useCacheKey, 10239 o = t.getAdUnit(e); 10240 return h(e, o, n, r, i); 10241 } 10242 const h = (0, s.A_)( 10243 "sync", 10244 function (e, t, n, i, s) { 10245 if (n && (s || i !== c)) { 10246 const { 10247 url: t, 10248 useLocal: n, 10249 allowVastXmlOnly: i, 10250 } = o.$.getConfig("cache") || {}; 10251 return t || n || !e.vastXml || e.vastUrl 10252 ? !(!e.vastUrl && !e.vastXml) 10253 : !0 === i 10254 ? ((0, r.JE)( 10255 "This bid contains only vastXml, and caching is disabled. Proceeding because cache.allowVastXmlOnly is enabled.", 10256 ), 10257 !0) 10258 : ((0, r.vV)( 10259 `\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\n Try enabling either prebid cache with ${(0, d.k)()}.setConfig({ cache: {url: "..."} });\n or local cache with ${(0, d.k)()}
10259.setConfig({ cache: { useLocal: true }});\n `, 10260 ), 10261 !1); 10262 } 10263 return !(i === c && !s) || p(e) || p(t) || p(n); 10264 }, 10265 "checkVideoBidSetup", 10266 ); 10267 }, 10268 }, 10269 ]); 10270 (self.pbjsChunk = self.pbjsChunk || []).push([ 10271 [769], 10272 { 10273 5720(t, e, n) { 10274 n.d(e, { M: () => i }); 10275 var c = n(8378); 10276 function i() { 10277 const t = (0, c.Ot)(); 10278 try { 10279 const e = 10280 t.innerHeight || 10281 t.document.documentElement.clientHeight || 10282 t.document.body.clientHeight || 10283 0; 10284 return { 10285 width: 10286 t.innerWidth || 10287 t.document.documentElement.clientWidth || 10288 t.document.body.clientWidth || 10289 0, 10290 height: e, 10291 }; 10292 } catch (t) { 10293 return {}; 10294 } 10295 } 10296 }, 10297 }, 10298 ]); 10299 (self.pbjsChunk = self.pbjsChunk || []).push([ 10300 [590], 10301 { 10302 157(e, r, n) { 10303 n.d(r, [ 10304 "G", 10305 0, 10306 '(()=>{"use strict";window.render=function(e,{mkFrame:n},r){const{safeRenderer:t,...i}=e,o=e.width,d=e.height,c=e.instl;if(null==d){const e=r.document&&r.document.body,n=e&&e.parentElement;e&&e.style&&(e.style.height="100%"),n&&n.style&&(n.style.height="100%")}const a=r.document,l={width:null!=o?o:"100%",height:null!=d?d:"100%"};if(c&&r.frameElement){const e=r.frameElement.style;e.width=o?String(o)+"px":"100vw",e.height=d?String(d)+"px":"100vh"}return"string"!=typeof t.url||""===t.url?Promise.reject(new Error("Prebid SafeRenderer: missing data.safeRenderer.url")):new Promise(function(e,r){const o=n(a,{width:l.width,height:l.height});o.onload=function(){try{const n=o.contentWindow,d=n.document,c=d.createElement("script");c.src=t.url,c.onload=function(){try{const r=n.pbRenderInFrame;if("function"!=typeof r)throw new Error("Prebid SafeRenderer: safeRenderer.url script must define window.pbRenderInFrame as a function.");r.call(n,{config:t.config,...i}),e()}catch(e){r(e)}},c.onerror=function(){r(new Error("Prebid SafeRenderer: failed to load script from safeRenderer.url"))},(d.head||d.body).appendChild(c)}catch(e){r(e)}},o.onerror=function(){r(new Error("Prebid SafeRenderer: iframe failed to load"))},a.body.appendChild(o)})}})();', 10307 ]); 10308 }, 10309 }, 10310 ]); 10311 (self.pbjsChunk = self.pbjsChunk || []).push([ 10312 [85], 10313 { 10314 1852(e, t, n) { 10315 n.d(t, [ 10316 "G", 10317 0, 10318 '(()=>{"use strict";const e="Prebid Event",t="browserIntervention";window.render=function({ad:n,adUrl:r,width:o,height:i,instl:s},{mkFrame:a,sendMessage:d},c){if(function(){const n=window;if("ReportingObserver"in n)try{new n.ReportingObserver(n=>{var r;r=n[0],d(e,{event:t,intervention:r})},{buffered:!0,types:["intervention"]}).observe()}catch(e){}}(),!n&&!r){const e=new Error("Missing ad markup or URL");throw e.reason="noAd",e}{if(null==i){const e=c.document?.body;[e,e?.parentElement].filter(e=>null!=e?.style).forEach(e=>{e.style.height="100%"})}const e=c.document,t={width:o??"100%",height:i??"100%"};if(r&&!n?t.src=r:t.srcdoc=n,e.body.appendChild(a(e,t)),s&&c.frameElement){const e=c.frameElement.style;e.width=o?`${o}px`:"100vw",e.height=i?`${i}px`:"100vh";const t=c.parent?.document?.querySelector("div#creative"),n=c.parent?.document?.querySelector("div#ad_position_box"),r=t&&c.parent?.getComputedStyle?.(t),s=n&&c.parent?.getComputedStyle?.(n);t?.parentElement===n&&r?.marginTop&&"0px"!==r?.marginTop&&s&&"flex-start"===s?.alignItems&&(t.style.marginTop="0px",n.style.alignItems="center")}}}})();', 10319 ]); 10320 }, 10321 }, 10322 ]); 10323 (self.pbjsChunk = self.pbjsChunk || []).push([ 10324 [5], 10325 { 10326 828(t, e, n) { 10327 n.d(e, { p: () => l }); 10328 var s = n(7413); 10329 const o = new Map(); 10330 function l(t) { 10331 if (o.has(t)) return o.get(t); 10332 const e = (function (t) { 10333 let e; 10334 return ( 10335 (0, s.II)() && 10336 (e = window.googletag 10337 .pubads() 10338 .getSlots() 10339 .find((e) => (0, s.iC)(e)(t))), 10340 e 10341 ); 10342 })(t); 10343 let n = {}; 10344 return ( 10345 e && 10346 (n = { 10347 gptSlot: e.getAdUnitPath(), 10348 divId: e.getSlotElementId(), 10349 }), 10350 !(0, s.Im)(n) && o.set(t, n), 10351 n 10352 ); 10353 } 10354 }, 10355 }, 10356 ]); 10357 (self.pbjsChunk = self.pbjsChunk || []).push([ 10358 [498], 10359 { 10360 6271(e, t, r) { 10361 r.d(t, { T: () => b, A: () => f }); 10362 const n = new WeakMap(); 10363 var i = r(7413); 10364 var s = r(7791); 10365 var o = r(7169), 10366 a = r(3350); 10367 var d = r(80), 10368 p = r(7850), 10369 c = r(1662); 10370 const u = { 10371 [d.S3]: { 10372 fpd: { 10373 priority: 99, 10374 fn(e, t) { 10375 (0, i.D9)(e, t.ortb2); 10376 }, 10377 }, 10378 onlyOneClient: { priority: -99, fn: (0, p.i8)("ORTB request") },
10379 props: { 10380 fn(e, t) { 10381 Object.assign(e, { 10382 id: e.id || (0, i.lk)(), 10383 test: e.test || 0, 10384 }); 10385 const r = parseInt(t.timeout, 10); 10386 isNaN(r) || (e.tmax = r); 10387 }, 10388 }, 10389 }, 10390 [d.Tb]: { 10391 fpd: { 10392 priority: 99, 10393 fn(e, t) { 10394 (0, i.D9)(e, t.ortb2Imp); 10395 }, 10396 }, 10397 id: { 10398 fn(e, t) { 10399 e.id = t.bidId; 10400 }, 10401 }, 10402 banner: { 10403 fn: function (e, t, r) { 10404 if (r.mediaType && "banner" !== r.mediaType) return; 10405 const n = t?.mediaTypes?.banner; 10406 if (n) { 10407 const r = { topframe: !0 === (0, i.al)() ? 0 : 1 }; 10408 (n.sizes && 10409 null == t.ortb2Imp?.banner?.format && 10410 (r.format = (0, i.y$)(n.sizes).map(i.cf)), 10411 n.hasOwnProperty("pos") && (r.pos = n.pos), 10412 (e.banner = (0, i.D9)(r, e.banner))); 10413 } 10414 }, 10415 }, 10416 secure: { 10417 fn(e, t) { 10418 e.secure = e.secure ?? 1; 10419 }, 10420 }, 10421 }, 10422 [d.WR]: { 10423 mediaType: { priority: 99, fn: o.K }, 10424 banner: { 10425 fn: (function ({ 10426 createPixel: e = (e) => 10427 (0, i.Tz)(decodeURIComponent(e), i.Bk), 10428 } = {}) { 10429 return function (t, r) { 10430 "banner" === t.mediaType && 10431 (r.adm && r.nurl 10432 ? (t.ad = e(r.nurl) + r.adm) 10433 : r.adm 10434 ? (t.ad = r.adm) 10435 : r.nurl && (t.adUrl = r.nurl)); 10436 }; 10437 })(), 10438 }, 10439 props: { 10440 fn(e, t, r) { 10441 (Object.entries({ 10442 requestId: r.bidRequest?.bidId, 10443 seatBidId: t.id, 10444 cpm: t.price, 10445 currency: r.ortbResponse.cur || r.currency, 10446 width: t.w, 10447 height: t.h, 10448 wratio: t.wratio, 10449 hratio: t.hratio, 10450 dealId: t.dealid, 10451 creative_id: t.crid, 10452 creativeId: t.crid, 10453 burl: t.burl, 10454 ttl: t.exp || r.ttl, 10455 netRevenue: r.netRevenue, 10456 duration: t.dur, 10457 }) 10458 .filter(([e, t]) => void 0 !== t) 10459 .forEach(([t, r]) => { 10460 e[t] = r; 10461 }), 10462 e.meta || (e.meta = {}), 10463 t.adomain && (e.meta.advertiserDomains = t.adomain), 10464 t.ext?.dsa && (e.meta.dsa = t.ext.dsa), 10465 t.cat && 10466 ((e.meta.primaryCatId = t.cat[0]), 10467 (e.meta.secondaryCatIds = t.cat.slice(1))), 10468 t.attr && (e.meta.attr = t.attr), 10469 t.ext?.eventtrackers && 10470 (e.eventtrackers = (e.eventtrackers ?? []).concat( 10471 t.ext.eventtrackers, 10472 )), 10473 t.cattax && (e.meta.cattax = t.cattax)); 10474 }, 10475 }, 10476 }, 10477 }; 10478 ((u[d.Tb].native = { 10479 fn: function (e, t, r) { 10480 if (r.mediaType && "native" !== r.mediaType) return; 10481 let n = t.nativeOrtbRequest; 10482 n && 10483 ((n = Object.assign({}, r.nativeRequest, n)), 10484 n.assets?.length 10485 ? (e.native = (0, i.D9)( 10486 {}, 10487 { request: JSON.stringify(n), ver: n.ver }, 10488 e.native, 10489 )) 10490 : (0, i.JE)( 10491 "mediaTypes.native is set, but no assets were specified. Native request skipped.", 10492 t, 10493 )); 10494 }, 10495 }), 10496 (u[d.WR].native = { 10497 fn: function (e, t) { 10498 if ("native" === e.mediaType) { 10499 let r; 10500 if ( 10501 ((r = "string" == typeof t.adm ? JSON.parse(t.adm) : t.adm), 10502 !(0, a.Qd)(r) || !Array.isArray(r.assets)) 10503 ) 10504 throw new Error("ORTB native response contained no assets"); 10505 e.native = { ortb: r }; 10506 } 10507 }, 10508 }), 10509 (u[d.Tb].video = { 10510 fn: function (e, t, r) { 10511 if (r.mediaType && "video" !== r.mediaType) return; 10512 const n = t?.mediaTypes?.video; 10513 if (!(0, i.Im)(n)) { 10514 const t = Object.fromEntries( 10515 Object.entries(n).filter(([e]) => s.Zy.has(e)), 10516 ); 10517 if (n.playerSize) { 10518 const e = (0, i.y$)(n.playerSize).map(i.cf); 10519 (e.length > 1 && 10520 (0, i.JE)( 10521 "video request specifies more than one playerSize; all but the first will be ignored", 10522 ), 10523 Object.assign(t, e[0])); 10524 } 10525 e.video = (0, i.D9)(t, e.video); 10526 } 10527 }, 10528 }), 10529 (u[d.WR].video = { 10530 fn: function (e, t, r) { 10531 "video" === e.mediaType &&
10532 (r?.imp?.video?.w && 10533 r?.imp?.video?.h && 10534 ([e.playerWidth, e.playerHeight] = [ 10535 r.imp.video.w, 10536 r.imp.video.h, 10537 ]), 10538 t.adm && (e.vastXml = t.adm), 10539 t.nurl && (e.vastUrl = t.nurl)); 10540 }, 10541 }), 10542 (u[d.Tb].audio = { 10543 fn: function (e, t, r) { 10544 if (r.mediaType && "audio" !== r.mediaType) return; 10545 const n = t?.mediaTypes?.audio; 10546 if (!(0, i.Im)(n)) { 10547 const t = Object.fromEntries( 10548 Object.entries(n).filter(([e]) => c.Ai.has(e)), 10549 ); 10550 e.audio = (0, i.D9)(t, e.audio); 10551 } 10552 }, 10553 }), 10554 (u[d.WR].audio = { 10555 fn: function (e, t) { 10556 "audio" === e.mediaType && 10557 (t.adm && (e.vastXml = t.adm), 10558 t.nurl && (e.vastUrl = t.nurl)); 10559 }, 10560 })); 10561 var m = r(4162); 10562 function f({ 10563 context: e = {}, 10564 processors: t = b, 10565 overrides: r = {}, 10566 imp: s, 10567 request: o, 10568 bidResponse: a, 10569 response: p, 10570 } = {}) { 10571 const c = new WeakMap(); 10572 function u(e, i, s, o) { 10573 let a; 10574 return function (...d) { 10575 return ( 10576 null == a && 10577 (a = (function () { 10578 let a = s.bind( 10579 this, 10580 (function (e, t = {}) { 10581 if (!n.has(e)) { 10582 const t = Object.entries(e); 10583 (t.sort((e, t) => 10584 (e = e[1].priority || 0) === 10585 (t = t[1].priority || 0) 10586 ? 0 10587 : e > t 10588 ? -1 10589 : 1, 10590 ), 10591 n.set( 10592 e, 10593 t.map(([e, t]) => [e, t.fn]), 10594 )); 10595 } 10596 const r = n 10597 .get(e) 10598 .filter(([e]) => !t.hasOwnProperty(e) || t[e]) 10599 .map(function ([e, r]) { 10600 return t.hasOwnProperty(e) 10601 ? t[e].bind(this, r) 10602 : r; 10603 }); 10604 return function () { 10605 const e = Array.from(arguments); 10606 r.forEach((t) => { 10607 t.apply(this, e); 10608 }); 10609 }; 10610 })(t()[e] || {}, r[e] || {}), 10611 ); 10612 return ( 10613 i && (a = i.bind(this, a)), 10614 function (...e) { 10615 try { 10616 return a.apply(this, e); 10617 } catch (t) { 10618 o.call(this, t, ...e); 10619 } 10620 } 10621 ); 10622 })()), 10623 a.apply(this, d) 10624 ); 10625 }; 10626 } 10627 const m = u( 10628 d.Tb, 10629 s, 10630 function (e, t, r) { 10631 const n = {}; 10632 return (e(n, t, r), n); 10633 }, 10634 function (e, t, r) { 10635 (0, i.vV)( 10636 "Error while converting bidRequest to ORTB imp; request skipped.", 10637 { error: e, bidRequest: t, context: r }, 10638 ); 10639 }, 10640 ), 10641 f = u( 10642 d.S3, 10643 o, 10644 function (e, t, r, n) { 10645 const i = { imp: t }; 10646 return (e(i, r, n), i); 10647 }, 10648 function (e, t, r, n) { 10649 throw ( 10650 (0, i.vV)("Error while converting to ORTB request", { 10651 error: e, 10652 imps: t, 10653 bidderRequest: r, 10654 context: n, 10655 }), 10656 e 10657 ); 10658 }, 10659 ), 10660 l = u( 10661 d.WR, 10662 a, 10663 function (e, t, r) { 10664 const n = {}; 10665 return (e(n, t, r), n); 10666 }, 10667 function (e, t, r) { 10668 (0, i.vV)( 10669 "Error while converting ORTB seatbid.bid to bi
10669dResponse; bid skipped.", 10670 { error: e, bid: t, context: r }, 10671 ); 10672 }, 10673 ), 10674 y = u( 10675 d.Cf, 10676 p, 10677 function (e, t, r, n) { 10678 const i = { bids: t }; 10679 return (e(i, r, n), i); 10680 }, 10681 function (e, t, r, n) { 10682 throw ( 10683 (0, i.vV)("Error while converting from ORTB response", { 10684 error: e, 10685 bidResponses: t, 10686 ortbResponse: r, 10687 context: n, 10688 }), 10689 e 10690 ); 10691 }, 10692 ); 10693 return { 10694 toORTB({ bidderRequest: t, bidRequests: r, context: n = {} }) { 10695 r = r || t.bids; 10696 const s = { 10697 req: Object.assign({ bidRequests: r }, e, n), 10698 imp: {}, 10699 }; 10700 s.req.impContext = s.imp; 10701 const o = r 10702 .map((r) => { 10703 const o = Object.assign( 10704 { bidderRequest: t, reqContext: s.req }, 10705 e, 10706 n, 10707 ), 10708 a = m(r, o); 10709 if (null != a) { 10710 if (a.hasOwnProperty("id")) 10711 return ( 10712 Object.assign(o, { bidRequest: r, imp: a }), 10713 (s.imp[a.id] = o), 10714 a 10715 ); 10716 (0, i.vV)( 10717 "Converted ORTB imp does not specify an id, ignoring bid request", 10718 r, 10719 a, 10720 ); 10721 } 10722 }) 10723 .filter(Boolean), 10724 a = f(o, t, s.req); 10725 return ((s.req.bidderRequest = t), null != a && c.set(a, s), a); 10726 }, 10727 fromORTB({ request: e, response: t }) { 10728 const r = c.get(e); 10729 if (null == r) 10730 throw new Error( 10731 "ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`", 10732 ); 10733 function n(t, r = {}) { 10734 return Object.assign(t, { ortbRequest: e }, r); 10735 } 10736 const s = Object.fromEntries( 10737 (e.imp || []).map((e) => [e.id, e]), 10738 ), 10739 o = (t?.seatbid || []) 10740 .flatMap((e) => 10741 (e.bid || []).map((o) => { 10742 if ( 10743 s.hasOwnProperty(o.impid) && 10744 r.imp.hasOwnProperty(o.impid) 10745 ) 10746 return l( 10747 o, 10748 n(r.imp[o.impid], { 10749 imp: s[o.impid], 10750 seatbid: e, 10751 ortbResponse: t, 10752 }), 10753 ); 10754 (0, i.vV)( 10755 "ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid", 10756 o, 10757 ); 10758 }), 10759 ) 10760 .filter(Boolean); 10761 return y(o, t, n(r.req)); 10762 }, 10763 }; 10764 } 10765 const b = (0, i.Bj)(() => (0, m.U)(u, (0, d.yB)(d.qN))); 10766 }, 10767 4162(e, t, r) { 10768 r.d(t, { U: () => i }); 10769 var n = r(80); 10770 function i(...e) { 10771 const t = e.shift(), 10772 r = e.length > 1 ? i(...e) : e[0]; 10773 return Object.fromEntries( 10774 n.zt.map((e) => [e, Object.assign({}, t[e], r[e])]), 10775 ); 10776 } 10777 }, 10778 7169(e, t, r) { 10779 r.d(t, { K: () => i }); 10780 const n = { 1: "banner", 2: "video", 4: "native" }; 10781 function i(e, t, r) { 10782 if (e.mediaType) return; 10783 const i = r.mediaType; 10784 if (!i && !n.hasOwnProperty(t.mtype)) 10785 throw new Error("Cannot determine mediaType for response"); 10786 e.mediaType = i || n[t.mtype]; 10787 } 10788 r.d(t, ["X", 0, n]); 10789 }, 10790 }, 10791 ]); 10792 (self.pbjsChunk = self.pbjsChunk || []).push([ 10793 [139], 10794 { 10795 4338(s, e, r) { 10796 function i(s) { 10797 if (!s) return; 10798 let e = []; 10799 if ( 10800 s.mediaTypes && 10801 s.mediaTypes.banner && 10802 Array.isArray(s.mediaTypes.banner.sizes) 10803 ) { 10804 const r = s.mediaTypes.banner.sizes; 10805 Array.isArray(r[0]) ? (e = r) : e.push(r); 10806 } else 10807 Array.isArray(s.sizes) && 10808 (Array.isArray(s.sizes[0]) ? (e = s.sizes) : e.push(s.sizes)); 10809 return e; 10810 } 10811 r.d(e, { up: () => i }); 10812 }, 10813 }, 10814 ]); 10815 (self.pbjsChunk = self.pbjsChunk || []).push([ 10816 [511], 10817 { 10818 9644(n, r, s) { 10819 s.d(r, { n: () => i }); 10820 var e = s(8384); 10821 function i(n) { 10822 const r = e.$.getConfig("disableFingerprintingApis"); 10823 return ( 10824 Array.isArray(r) && 10825 r.some((r) => String(r).toLowerCase() === n.toLowerCase()) 10826 ); 10827 } 10828 }, 10829 }, 10830 ]); 10831 (self.pbjsChunk = self.pbjsChunk || []).push([ 10832 [504], 10833 { 10834 2074(e, r, i) { 10835 i.d(r, { m: () => u }); 10836 var n = i(9644), 10837 t = i(7413); 10838 function u(e) { 10839 if ((0, n.n)("devicepixelratio")) return 1; 10840 try { 10841 return (0, t.x)(e).devicePixelRatio; 10842 } catch (e) {} 10843 return 1; 10844 } 10845 }, 10846 }, 10847 ]); 10848 (self.pbjsChunk = self.pbjsChunk || []).push([ 10849 [618], 10850 { 10851 9400(e, i, t) { 10852 t.d(i, { m: () => l }); 10853 var d = t(4162), 10854 r = t(80), 10855 n = t(3350), 10856 s = t(7413), 10857 a = t(7169); 10858 const b = { banner: "banner", native: "native", video: "video" }; 10859 var o = t(6001), 10860 p = t(8384), 10861 c = t(3435); 10862 var f = t(1129); 10863 const u = { 10864 [r.S3]: { 10865 extPrebid: { 10866 fn: function (e, i) { 10867 ((0, c.J)( 10868 e, 10869 "ext.prebid", 10870 (0, s.D9)( 10871 { 10872 auctiontimestamp: i.auctionStart, 10873 targeting: { 10874 includewinners: !0, 10875 includebidderkeys: !1, 10876 }, 10877 }, 10878 e.ext?.prebid, 10879 ), 10880 ), 10881 p.$.getConfig("debug") && (e.ext.prebid.debug = !0)); 10882 }, 10883 }, 10884 extPrebidChannel: { 10885 fn: function (e) { 10886 (0, c.J)( 10887 e, 10888 "ext.prebid.channel", 10889 Object.assign( 10890 { name: "pbjs", version: (0, f.m)().version }, 10891 e.ext?.prebid?.channel, 10892 ), 10893 ); 10894 }, 10895 }, 10896 extPrebidAliases: { 10897 fn: function (e, i, t, { am: d = o.Ay } = {}) { 10898 if (d.aliasRegistry[i.bidderCode]) { 10899 const t = d.bidderRegistry[i.bidderCode]; 10900 if (!t || !t.getSpec().skipPbsAliasing) { 10901 (0, c.J)( 10902 e, 10903 `ext.prebid.aliases.${i.bidderCode}`, 10904 d.aliasRegistry[i.bidderCode], 10905 ); 10906 const r = 10907 p.$.getConfig(`gvlMapping.${i.bidderCode}`) || 10908 t?.getSpec?.().gvlid; 10909 r && 10910 (0, c.J)( 10911 e, 10912 `ext.prebid.aliasgvlids.${i.bidderCode}`, 10913 r, 10914 ); 10915 } 10916 } 10917 }, 10918 }, 10919 extPrebidPageViewIds: { 10920 fn: function (e, i) { 10921 (0, c.J)( 10922 e, 10923 `ext.prebid.page_view_ids.${i.bidderCode}`, 10924 i.pageViewId, 10925 ); 10926 }, 10927 }, 10928 extPrebidSafeRenderer: { 10929 fn: function (e, i) { 10930 (0, c.J)(e, "ext.prebid.safeRenderer", !0); 10931 }, 10932 }, 10933 }, 10934 [r.Tb]: { 10935 params: { 10936 fn: function (e, i) { 10937 const t = i.params; 10938 t && (0, c.J)(e, `ext.prebid.bidder.${i.bidder}`, t); 10939 }, 10940 }, 10941 adUnitCode: { 10942 fn: function (e, i) { 10943 const t = i.adUnitCode; 10944 t && (0, c.J)(e, "ext.prebid.adunitcode", t); 10945 }, 10946 }, 10947 }, 10948 [r.WR]: { 10949 mediaType: { 10950 fn: function (e, i, t) { 10951 let d = t.mediaType; 10952 (d || 10953 ((d = a.X.hasOwnProperty(i.mtype) 10954 ? a.X[i.mtype] 10955 : i.ext?.prebid?.type), 10956 b.hasOwnProperty(d) || (d = "banner")), 10957 (e.mediaType = d)); 10958 }, 10959 priority: 99, 10960 }, 10961 bidderCode: { 10962 fn(e, i, t) { 10963 ((e.bidderCode = t.seatbid.seat),
10964 (e.adapterCode = 10965 i?.ext?.prebid?.meta?.adaptercode || 10966 t.bidRequest?.bidder || 10967 e.bidderCode)); 10968 }, 10969 }, 10970 pbsBidId: { 10971 fn(e, i) { 10972 const t = i?.ext?.prebid?.bidid; 10973 (0, n.O8)(t) && (e.pbsBidId = t); 10974 }, 10975 }, 10976 adserverTargeting: { 10977 fn(e, i) { 10978 const t = i?.ext?.prebid?.targeting; 10979 (0, n.Qd)(t) && (e.adserverTargeting = t); 10980 }, 10981 }, 10982 extPrebidMeta: { 10983 fn(e, i) { 10984 e.meta = (0, s.D9)({}, i?.ext?.prebid?.meta, e.meta); 10985 }, 10986 }, 10987 pbsWinTrackers: { 10988 fn: function (e, i) { 10989 ((e.eventtrackers = e.eventtrackers || []), 10990 [ 10991 [i.burl, 1], 10992 [i?.ext?.prebid?.events?.win, 500], 10993 ] 10994 .filter( 10995 ([i, t]) => 10996 i && 10997 null == 10998 e.eventtrackers.find( 10999 ({ method: e, event: d, url: r }) => 11000 d === t && 1 === e && r === i, 11001 ), 11002 ) 11003 .forEach(([i, t]) => { 11004 e.eventtrackers.push({ method: 1, event: t, url: i }); 11005 })); 11006 }, 11007 }, 11008 safeRenderer: { 11009 fn: function (e, i) { 11010 const { rendererUrl: t } = i.ext?.prebid?.meta || {}; 11011 t && (e.safeRenderer = { url: t }); 11012 }, 11013 }, 11014 }, 11015 [r.Cf]: { 11016 serverSideStats: { 11017 fn(e, i, t) { 11018 const d = t.bidderRequest?.bidderCode, 11019 r = i?.ext; 11020 if (!r) return; 11021 const n = { 11022 errors: "serverErrors", 11023 responsetimemillis: "serverResponseTimeMs", 11024 }; 11025 Object.entries(r).forEach(([e, i]) => { 11026 if (n[e]) { 11027 if (!d) return; 11028 const r = i?.[d]; 11029 if (void 0 !== r) { 11030 const i = n[e]; 11031 ((t.bidderRequest[i] = r), 11032 t.bidRequests?.forEach((e) => { 11033 e[i] = r; 11034 })); 11035 } 11036 } else 11037 void 0 !== i && 11038 ((t.bidderRequest.pbsExt = 11039 t.bidderRequest.pbsExt || {}), 11040 (t.bidderRequest.pbsExt[e] = i)); 11041 }); 11042 }, 11043 }, 11044 }, 11045 }; 11046 u[r.WR].videoCache = { 11047 fn: function (e, i) { 11048 if ("video" === e.mediaType) { 11049 let { cacheId: t, url: d } = 11050 i?.ext?.prebid?.cache?.vastXml ?? {}; 11051 if (!t || !d) { 11052 const { 11053 hb_uuid: e, 11054 hb_cache_host: r, 11055 hb_cache_path: n, 11056 } = i?.ext?.prebid?.targeting ?? {}; 11057 e && r && n && ((t = e), (d = `https://${r}${n}?uuid=${e}`)); 11058 } 11059 t && d && Object.assign(e, { videoCacheKey: t, vastUrl: d }); 11060 } 11061 }, 11062 priority: -10, 11063 }; 11064 var v = t(6271); 11065 const l = (0, s.Bj)(() => (0, d.U)((0, v.T)(), u, (0, r.yB)(r.e4))); 11066 }, 11067 }, 11068 ]); 11069 (self.pbjsChunk = self.pbjsChunk || []).push([ 11070 [550], 11071 { 11072 9446(p, n, e) { 11073 function t(p, n, e) { 11074 const t = {}; 11075 return ( 11076 p && 11077 ("boolean" == typeof p.gdprApplies && 11078 (t.gdpr = Number(p.gdprApplies)), 11079 "string" == typeof p.consentString && 11080 (t.gdpr_consent = p.consentString)), 11081 n && (t.us_privacy = encodeURIComponent(n)), 11082 e?.gppString && 11083 ((t.gpp = e.gppString), 11084 (t.gpp_sid = e.applicableSections?.toString())), 11085 t 11086 ); 11087 } 11088 e.d(n, { d: () => t }); 11089 }, 11090 }, 11091 ]); 11092 (self.pbjsChunk = self.pbjsChunk || []).push([ 11093 [965], 11094 { 11095 8960(e, t, n) { 11096 n.d(t, { S_: () => a }); 11097 var r = n(6901), 11098 i = n(7413), 11099 o = n(5262); 11100 function l(e) { 11101 let t = (0, o.o)(e); 11102 if (!t) 11103 return void (0, i.JE)( 11104 `Magnite: unable to find ad unit element with id "${e.adUnitCode}" for rendering.`, 11105 ); 11106 const n = t.firstElementChild; 11107 ("DIV" === n?.tagName && (t = n), 11108 (function (e) { 11109 const t = e.querySelector("div[id^='google_ads']"); 11110 t && t.style.setProperty("display", "none"); 11111 })(t), 11112 (function (e) { 11113 const t = e.querySelector("script[id^='sas_script']"), 11114 n = t && t.nextSibling; 11115 n && 11116 "iframe" === n.localName && 11117 n.style.setProperty("display", "none"); 11118 })(t)); 11119 const r = e.renderer.getConfig(); 11120 e.renderer.push(() => { 11121 globalThis.MagniteApex.renderAd({ 11122 width: e.width, 11123 height: e.height, 11124 vastUrl: e.vastUrl, 11125 placement: { 11126 attachTo: t, 11127 align: r.align || "center", 11128 position: r.position || "prepend", 11129 }, 11130 closeButton: r.closeButton || !1, 11131 label: r.label, 11132 replay: r.replay ?? !0, 11133 }); 11134 }); 11135 } 11136 function a(e, t, n) { 11137 const o = r.A4.install({ 11138 id: e.adId, 11139 url: 11140 t || "https://video-outstream.rubiconproject.com/apex-2.3.7.js", 11141 config: n || {}, 11142 loaded: !1, 11143 adUnitCode: e.adUnitCode, 11144 }); 11145 try { 11146 o.setRender(l); 11147 } catch (e) { 11148 (0, i.JE)("Prebid Error calling setRender on renderer", e); 11149 } 11150 return o; 11151 } 11152 }, 11153 }, 11154 ]); 11155 (self.pbjsChunk = self.pbjsChunk || []).push([ 11156 [247], 11157 { 11158 9288(r, e, a) { 11159 a.d(e, { D: () => o }); 11160 var s = a(7850), 11161 t = a(8928); 11162 const n = ["user.keywords"].concat( 11163 s.Dy.flatMap((r) => 11164 ["keywords", "content.keywords"].map((e) => `${r}.${e}`), 11165 ), 11166 ); 11167 function o(r, ...e) { 11168 return (function (...r) { 11169 const e = new Set(); 11170 return ( 11171 r 11172 .filter((r) => r) 11173 .flatMap((r) => (Array.isArray(r) ? r : r.split(","))) 11174 .map((r) => r.replace(/^\s*/, "").replace(/\s*$/, "")) 11175 .filter((r) => r) 11176 .forEach((r) => e.add(r)), 11177 Array.from(e.keys()) 11178 ); 11179 })(...n.map((e) => (0, t.A)(r, e)), ...e); 11180 } 11181 }, 11182 }, 11183 ]); 11184 (self.pbjsChunk = self.pbjsChunk || []).push([ 11185 [170], 11186 { 11187 8700(e, t, i) { 11188 var n = i(1068), 11189 r = i(1129), 11190 o = i(7413), 11191 a = i(8928), 11192 s = i(3435), 11193 d = i(3350), 11194 p = i(8384), 11195 c = i(2354), 11196 u = i(2682), 11197 l = i(7791), 11198 f = i(6901), 11199 m = i(828), 11200 g = i(5262); 11201 const x = {}; 11202 function b(e, t) { 11203 if (x[e]) return x[e]; 11204 const i = (0, g.o)(t), 11205 n = i?.id ? i.id : (0, m.p)(e).divId; 11206 return ((x[e] = n), n); 11207 } 11208 const v = "ix", 11209 h = ["banner", "video", "native"], 11210 y = [144, 144], 11211 I = { JPY: 1 }, 11212 A = "p", 11213 w = "x", 11214 C = { 11215 SITE: [ 11216 "id", 11217 "name", 11218 "domain", 11219 "cat", 11220 "sectioncat", 11221 "pagecat", 11222 "page", 11223 "ref", 11224 "search", 11225 "mobile", 11226 "privacypolicy", 11227 "publisher", 11228 "content", 11229 "keywords", 11230 "ext", 11231 ], 11232 USER: [ 11233 "id", 11234 "buyeruid", 11235 "yob", 11236 "gender", 11237 "keywords", 11238 "customdata", 11239 "geo", 11240 "data", 11241 "ext", 11242 ], 11243 }, 11244 O = { 11245 "liveramp.com": "idl", 11246 "netid.de": "NETID", 11247 "neustar.biz": "fabrickId", 11248 "zeotap.com": "zeotapIdPlus", 11249 "uidapi.com": "UID2", 11250 "adserver.org": "TDID", 11251 }, 11252 U = ["mimes", "minduration", "maxduration"], 11253 S = [ 11254 "mimes", 11255 "minduration", 11256 "maxduration", 11257 "protocols", 11258 "protocol", 11259 "startdelay", 11260 "placement", 11261 "linearity", 11262 "skip", 11263 "skipmin", 11264 "skipafter", 11265 "sequence", 11266 "battr", 11267 "maxextended", 11268 "minbitrate", 11269 "maxbitrate", 11270 "boxingallowed", 11271 "playbackmethod", 11272 "playbackend", 11273 "delivery", 11274 "pos", 11275 "companionad", 11276 "api", 11277 "companiontype", 11278 "ext", 11279 "playerSize", 11280 "w", 11281 "h", 11282 "plcmt", 11283 ], 11284 T = `${v}_features`, 11285 P = (0, c.vM)({ bidderCode: v }), 11286 E = { 11287 REQUESTED_FEATURE_TOGGLES: [], 11288 featureToggles: {}, 11289 isFeatureEnabled: function (e) { 11290 return (0, a.A)( 11291 this.featureToggles, 11292 `features.${e}.activated`, 11293 !1, 11294 ); 11295 }, 11296 getFeatureToggles: function () { 11297 if (P.localStorageIsEnabled()) { 11298 const e = (0, o.$l)(P.getDataFromLocalStorage(T)); 11299 (0, a.A)(e, "expiry") && e.expiry >= new Date().getTime() 11300 ? (this.featureToggles = e) 11301 : this.clearFeatureToggles(); 11302 } 11303 }, 11304 setFeatureToggles: function (e) { 11305 const t = e.body, 11306 i = new Date(), 11307 n = (0, a.A)(t, "ext.features"); 11308 n && 11309 ((this.featureToggles = { 11310 expiry: i.setHours(i.getHours() + 1), 11311 features: n, 11312 }), 11313 P.localStorageIsEnabled() && 11314 P.setDataInLocalStorage( 11315 T, 11316 JSON.stringify(this.featureToggles), 11317 )); 11318 }, 11319 clearFeatureToggles: function () { 11320 ((this.featureToggles = {}), 11321 P.localStorageIsEnabled() && P.removeDataFromLocalStorage(T)); 11322 }, 11323 }; 11324 let J = 0, 11325 D = "", 11326 k = "", 11327 F = !1; 11328 const _ = 2; 11329 function j(e) { 11330 const t = z(e, "video"), 11331 i = (0, a.A)(e, "mediaTypes.video"), 11332 n = (0, a.A)(e, "params.video"); 11333 if (q(i, n).length) return {}; 11334 t.video = n ? (0, d.Go)(e.params.video) : {}; 11335 const r = (0, a.A)(e, "ortb2Imp.ext.tid"); 11336 (r && (0, s.J)(t, "ext.tid", r), 11337 (function (e, t) { 11338 if ((0, a.A)(t, "mediaTypes.video.context") === l.H6) { 11339 let i = (0, a.A)(t, "mediaTypes.video.renderer"); 11340 if ( 11341 (i || (i = (0, a.A)(t, "renderer")), 11342 (0, a.A)(t, "ortb2.source.ext.schain", !1)) 11343 ) 11344 e.displaymanager = "pbjs_wrapper"; 11345 else if (i && "object" == typeof i) { 11346 if (void 0 !== i.url) { 11347 let t; 11348 try { 11349 t = new URL(i.url).hostname; 11350 } catch { 11351 return; 11352 } 11353 t.includes("js-sec.indexww")
11354 ? (e.displaymanager = "ix") 11355 : (e.displaymanager = i.url); 11356 } 11357 } else e.displaymanager = "ix"; 11358 } 11359 })(t, e), 11360 M(t, e)); 11361 for (const e in i) 11362 -1 === S.indexOf(e) || 11363 t.video.hasOwnProperty(e) || 11364 (t.video[e] = i[e]); 11365 if (t.video.minduration > t.video.maxduration) 11366 return ( 11367 (0, o.vV)( 11368 `IX Bid Adapter: video minduration [${t.video.minduration}] cannot be greater than video maxduration [${t.video.maxduration}]`, 11369 ), 11370 {} 11371 ); 11372 const p = (n && n.context) || (i && i.context); 11373 if ( 11374 ((function (e) { 11375 e.video.hasOwnProperty("plcmt") && 11376 (!(0, d.Fq)(e.video.plcmt) || 11377 e.video.plcmt < 1 || 11378 e.video.plcmt > 4) && 11379 ((0, o.JE)( 11380 `IX Bid Adapter: video.plcmt [${e.video.plcmt}] must be an integer between 1-4 inclusive`, 11381 ), 11382 delete e.video.plcmt); 11383 })(t), 11384 p && 11385 !t.video.hasOwnProperty("placement") && 11386 (p === l.mn 11387 ? (t.video.placement = 1) 11388 : p === l.H6 11389 ? (0, a.A)(n, "playerConfig.floatOnScroll") 11390 ? (t.video.placement = 5) 11391 : ((t.video.placement = 3), (F = !0)) 11392 : (0, o.JE)( 11393 `IX Bid Adapter: Video context '${p}' is not supported`, 11394 )), 11395 !t.video.w || !t.video.h) 11396 ) { 11397 const i = 11398 N((0, a.A)(t, "video.playerSize")) || 11399 N((0, a.A)(e, "params.size")); 11400 if (!i) 11401 return ( 11402 (0, o.JE)( 11403 "IX Bid Adapter: Video size is missing in [mediaTypes.video]", 11404 ), 11405 {} 11406 ); 11407 ((t.video.w = i[0]), (t.video.h = i[1])); 11408 } 11409 return (R(e, t, "video"), t); 11410 } 11411 function z(e, t) { 11412 const i = {}; 11413 if ( 11414 ((i.id = e.bidId), 11415 oe() && 11416 (0, a.A)(e, "params.externalId") && 11417 (0, s.J)(i, "ext.externalID", e.params.externalId), 11418 (0, a.A)(e, `params.${t}.siteId`) && 11419 !isNaN(Number(e.params[t].siteId))) 11420 ) 11421 switch (t) { 11422 case "banner": 11423 (0, s.J)(i, "ext.siteID", e.params.banner.siteId.toString()); 11424 break; 11425 case "video": 11426 (0, s.J)(i, "ext.siteID", e.params.video.siteId.toString()); 11427 break; 11428 case "native": 11429 (0, s.J)(i, "ext.siteID", e.params.native.siteId.toString()); 11430 } 11431 else 11432 e.params.siteId && 11433 (0, s.J)(i, "ext.siteID", e.params.siteId.toString()); 11434 return ( 11435 !e.params.hasOwnProperty("id") || 11436 ("string" != typeof e.params.id && 11437 "number" != typeof e.params.id) || 11438 (0, s.J)(i, "ext.sid", String(e.params.id)), 11439 i 11440 ); 11441 } 11442 function R(e, t, i) { 11443 let n = null, 11444 r = null; 11445 if ( 11446 (e.params.bidFloor && 11447 e.params.bidFloorCur && 11448 (n = { 11449 floor: e.params.bidFloor, 11450 currency: e.params.bidFloorCur, 11451 }), 11452 (0, d.fp)(e.getFloor)) 11453 ) { 11454 let n = "*", 11455 a = "*"; 11456 if (i && (0, o.gR)(h, i)) { 11457 const { w: e, h: r } = t[i]; 11458 ((n = i), (a = [e, r])); 11459 } 11460 try { 11461 r = e.getFloor({ mediaType: n, size: a }); 11462 } catch (e) { 11463 (0, o.JE)( 11464 "priceFloors module call getFloor failed, error : ", 11465 e, 11466 ); 11467 } 11468 } 11469 let a = !1; 11470 (r 11471 ? ((t.bidfloor = r.floor), 11472 (t.bidfloorcur = r.currency), 11473 (0, s.J)(t, "ext.fl", A), 11474 (a = !0)) 11475 : n && 11476 ((t.bidfloor = n.floor), 11477 (t.bidfloorcur = n.currency), 11478 (0, s.J)(t, "ext.fl", w), 11479 (a = !0)), 11480 a && 11481 ("banner" === i 11482 ? ((0, s.J)(t, "banner.ext.bidfloor", t.bidfloor), 11483 (0, s.J)(t, "banner.ext.fl", t.ext.fl)) 11484 : "video" === i 11485 ? ((0, s.J)(t, "video.ext.bidfloor", t.bidfloor), 11486 (0, s.J)(t, "video.ext.fl", t.ext.fl)) 11487 : ((0, s.J)(t, "native.ext.bidfloor", t.bidfloor), 11488 (0, s.J)(t, "native.ext.fl", t.ext.fl)))); 11489 } 11490 function B(e, t, i) { 11491 const n = {}, 11492 r = !(!(0, a.A)(e, "exp") || !(0, d.Fq)(e.exp)), 11493 s = (0, a.A)(e, "dealid") || (0, a.A)(e, "ext.dealid"); 11494 (I.hasOwnProperty(t) 11495 ? (n.cpm = e.price / I[t]) 11496 : (n.cpm = e.price / 100), 11497 (n.requestId = e.impid), 11498 s && (n.dealId = s), 11499 (n.netRevenue = true), 11500 (n.currency = t), 11501 (n.creativeId = e.hasOwnProperty("crid") ? e.crid : "-"), 11502 Number(e.mtype) !== _ || ((!e.ext || e.ext.vasturl) && e.ext) 11503 ? e.ext && e.ext.vasturl && (n.vastUrl = e.ext.vasturl) 11504 : (n.vastXml = e.adm)); 11505 let p = null; 11506 if ( 11507 "string" == typeof e.adm && 11508 "{" === e.adm[0] && 11509 "}" === e.adm[e.adm.length - 1] 11510 ) 11511 try { 11512 p = JSON.parse(e.adm); 11513 } catch (e) { 11514 (0, o.JE)("adm looks like JSON but failed to parse: ", e); 11515 } 11516 return ( 11517 (e.ext && e.ext.vasturl) || Number(e.mtype) === _ 11518 ? ((n.width = i.video.w), 11519 (n.height = i.video.h), 11520 (n.mediaType = "video"), 11521 (n.mediaTypes = i.mediaTypes), 11522 (n.ttl = r ? e.exp : 3600)) 11523 : p && p.native 11524 ? ((n.native = { ortb: p.native }), 11525 (n.width = e.w ? e.w : 1), 11526 (n.height = e.h ? e.h : 1), 11527 (n.mediaType = "native"), 11528 (n.ttl = r ? e.exp : 3600)) 11529 : ((n.ad = e.adm), 11530 (n.width = e.w), 11531 (n.height = e.h), 11532 (n.mediaType = "banner"), 11533 (n.ttl = r ? e.exp : 300)), 11534 (n.meta = {}), 11535 (n.meta.networkId = (0, a.A)(e, "ext.dspid")), 11536 (n.meta.brandId = (0, a.A)(e, "ext.advbrandid")), 11537 (n.meta.brandName = (0, a.A)(e, "ext.advbrand")), 11538 e.adomain && 11539 e.adomain.length > 0 && 11540 (n.meta.advertiserDomains = e.adomain), 11541 e.ext?.dsa && (n.meta.dsa = e.ext.dsa), 11542 e.ext?.ibv && ((n.ext = n.ext || {}), (n.ext.ibv = e.ext.ibv)), 11543 n 11544 ); 11545 } 11546 function $(e) { 11547 return ( 11548 Array.isArray(e) && 11549 2 === e.length && 11550 (0, d.Fq)(e[0]) && 11551 (0, d.Fq)(e[1]) 11552 ); 11553 } 11554 function X(e = [], t = []) { 11555 if ($(e)) return e[0] === t[0] && e[1] === t[1]; 11556 for (let i = 0; i < e.length; i++) 11557 if (e[i][0] === t[0] && e[i][1] === t[1]) return !0; 11558 return !1; 11559 } 11560 function q(e, t) { 11561 const i = []; 11562 e || 11563 (0, o.JE)(
11564 "IX Bid Adapter: mediaTypes.video is the preferred location for video params in ad unit", 11565 ); 11566 for (const n of U) { 11567 const r = e && e.hasOwnProperty(n), 11568 o = t && t.hasOwnProperty(n); 11569 r || 11570 o || 11571 i.push( 11572 `IX Bid Adapter: ${n} is not included in either the adunit or params level`, 11573 ); 11574 } 11575 const n = e && e.hasOwnProperty("protocol"), 11576 r = e && e.hasOwnProperty("protocols"), 11577 a = t && t.hasOwnProperty("protocol"), 11578 s = t && t.hasOwnProperty("protocols"); 11579 return ( 11580 n || 11581 r || 11582 a || 11583 s || 11584 i.push( 11585 "IX Bid Adapter: protocol/protcols is not included in either the adunit or params level", 11586 ), 11587 i 11588 ); 11589 } 11590 function N(e = []) { 11591 return $(e) ? e : !!$(e[0]) && e[0]; 11592 } 11593 function L(e, t, i) { 11594 if (!e) return; 11595 return { 11596 ...i.find((t) => t.bidId === e), 11597 ...t.find((t) => t.id === e), 11598 }; 11599 } 11600 function V(e, t, i, n) { 11601 const r = "https://htlb.casalemedia.com/openrtb/pbjs", 11602 c = (function (e) { 11603 const t = [], 11604 i = {}; 11605 if ((0, d.cy)(e)) 11606 for (const n of e) { 11607 const e = O.hasOwnProperty(n.source); 11608 if ( 11609 (0, a.A)(n, "uids.0") && 11610 ((i[n.source] = !0), 11611 e && 11612 "" !== O[n.source] && 11613 (n.uids[0].ext = { rtiPartner: O[n.source] }), 11614 t.push(n), 11615 t.length >= 50) 11616 ) 11617 break; 11618 } 11619 return { toSend: t, seenSources: i }; 11620 })((0, a.A)(e, "0.userIdAsEids")), 11621 u = c.toSend; 11622 (function (e) { 11623 const t = e?.gdprConsent; 11624 if (!0 === t?.gdprApplies && !t.consentString) return !1; 11625 return !0; 11626 })(t) && 11627 window.headertag && 11628 "function" == typeof window.headertag.getIdentityInfo && 11629 (function (e, t) { 11630 const i = window.headertag.getIdentityInfo(); 11631 if (i && "object" == typeof i) 11632 for (const n in i) { 11633 if (e.length >= 50) return; 11634 if (i.hasOwnProperty(n)) { 11635 const r = i[n]; 11636 !r.responsePending && 11637 r.data && 11638 "object" == typeof r.data && 11639 Object.keys(r.data).length && 11640 !t.seenSources[r.data.source] && 11641 e.push(r.data); 11642 } 11643 } 11644 })(u, c); 11645 const l = []; 11646 let f = (function (e) { 11647 const t = {}; 11648 return ( 11649 (t.id = e[0].bidderRequestId.toString()), 11650 (t.site = {}), 11651 (t.ext = {}), 11652 (t.ext.source = "prebid"), 11653 (t.ext.ixdiag = {}), 11654 (t.ext.ixdiag.ls = P.localStorageIsEnabled()), 11655 (t.imp = []), 11656 (t.at = 1), 11657 t 11658 ); 11659 })(e); 11660 f = (function (e, t) { 11661 t.length > 0 && 11662 ((e.ext.features = {}), 11663 t.forEach((t) => { 11664 e.ext.features[t] = { activated: E.isFeatureEnabled(t) }; 11665 })); 11666 return e; 11667 })(f, E.REQUESTED_FEATURE_TOGGLES); 11668 const m = (function (e) { 11669 var t = e 11670 .map((e) => e.adUnitCode) 11671 .filter((e, t, i) => i.indexOf(e) === t); 11672 const i = (0, a.A)(e, "0.userIdAsEids", []), 11673 n = { 11674 mfu: 0, 11675 bu: 0, 11676 iu: 0, 11677 nu: 0, 11678 ou: 0, 11679 allu: 0, 11680 ren: !1, 11681 version: "11.26.0-pre", 11682 url: window.location.href.split("?")[0], 11683 vpd: F, 11684 eidLength: i.length, 11685 }; 11686 for (const i of t) { 11687 const t = e.filter((e) =>
11687 e.adUnitCode === i)[0]; 11688 (0, a.A)(t, "mediaTypes") && 11689 (Object.keys(t.mediaTypes).length > 1 && n.mfu++, 11690 (0, a.A)(t, "mediaTypes.native") && n.nu++, 11691 (0, a.A)(t, "mediaTypes.banner") && n.bu++, 11692 "outstream" === (0, a.A)(t, "mediaTypes.video.context") && 11693 (n.ou++, re(t) && (n.ren = !0)), 11694 "instream" === (0, a.A)(t, "mediaTypes.video.context") && 11695 n.iu++, 11696 n.allu++); 11697 } 11698 return n; 11699 })(e); 11700 for (const e in m) f.ext.ixdiag[e] = m[e]; 11701 ((f = (function (e, t, i, n, r) { 11702 const o = (0, a.A)(t, "timeout"); 11703 o && (e.ext.ixdiag.tmax = o); 11704 p.$.getConfig("userSync") && 11705 (e.ext.ixdiag.syncsPerBidder = 11706 p.$.getConfig("userSync").syncsPerBidder); 11707 ((e.ext.ixdiag.imps = Object.keys(i).length), 11708 (e.source = { tid: t?.ortb2?.source?.tid })); 11709 const s = n[0]?.ortb2?.source?.ext?.schain; 11710 s && 11711 ((e.source = e.source || {}), 11712 (e.source.ext = e.source.ext || {}), 11713 (e.source.ext.schain = s)); 11714 r.length > 0 && ((e.user = {}), (e.user.eids = r)); 11715 document.referrer && 11716 "" !== document.referrer && 11717 (e.site.ref = document.referrer); 11718 return e; 11719 })(f, t, i, e, u)), 11720 (f = (function (e, t) { 11721 if (t) { 11722 (t.gdprConsent && 11723 ((D = t.gdprConsent), 11724 D.hasOwnProperty("gdprApplies") && 11725 (e.regs = { ext: { gdpr: D.gdprApplies ? 1 : 0 } }), 11726 D.hasOwnProperty("consentString") && 11727 ((e.user = e.user || {}), 11728 (e.user.ext = { consent: D.consentString || "" }), 11729 D.hasOwnProperty("addtlConsent") && 11730 D.addtlConsent && 11731 (e.user.ext.consented_providers_settings = { 11732 addtl_consent: D.addtlConsent, 11733 }))), 11734 t.uspConsent && 11735 ((0, s.J)(e, "regs.ext.us_privacy", t.uspConsent), 11736 (k = t.uspConsent))); 11737 const i = (0, a.A)(t, "refererInfo.page"); 11738 (i && (e.site.page = i), 11739 t.gppConsent && 11740 ((0, s.J)(e, "regs.gpp", t.gppConsent.gppString), 11741 (0, s.J)( 11742 e, 11743 "regs.gpp_sid", 11744 t.gppConsent.applicableSections, 11745 ))); 11746 } 11747 p.$.getConfig("coppa") && (0, s.J)(e, "regs.coppa", 1); 11748 return e; 11749 })(f, t))); 11750 const g = {}; 11751 e[0].params.siteId && ((J = e[0].params.siteId), (g.s = J)); 11752 const x = Object.keys(i); 11753 let b = !1; 11754 for (let n = 0; n < x.length && !(l.length >= 4); n++) { 11755 f = G(i, x, f, n); 11756 const s = (0, a.A)(t, "ortb2") || {}, 11757 c = { ...(s.site || s.context) }; 11758 c.page = H(t); 11759 const u = { ...s.user }; 11760 ((0, o.Im)(s) || 11761 b || 11762 ((f = Q(t, f, s, c, u)), 11763 (f.site = (0, o.D9)({}, f.site, c)), 11764 (f.user = (0, o.D9)({}, f.user, u)), 11765 (b = !0)), 11766 (f = W(i, f, x, n, g, r))); 11767 const m = n === x.length - 1; 11768 if (((f = ue(f)), (f = de(f)), (f = pe(f)), m)) { 11769 let t = `${r}?`; 11770 (0 !== J && (t += `s=${J}`), 11771 oe() && 11772 ((t += 0 !== J ? "&" : ""), 11773 (t += `p=${p.$.getConfig("exchangeId")}`)), 11774 l.push({ 11775 method: "POST", 11776 url: t, 11777 data: (0, d.Go)(f), 11778 options: { contentType: "text/plain", withCredentials: !0 }, 11779 validBidRequests: e, 11780 }), 11781 (f.imp = []), 11782 (b = !1)); 11783 } 11784 } 11785 return l; 11786 } 11787 function G(e, t, i, n) { 11788 const r = e[t[n]], 11789 { missingImps: o = [], ixImps: p = [] } = r, 11790 c = { ixImps: p, missingBannerImpressions: o }, 11791 u = Object.keys(c) 11792 .map((e) => c[e]) 11793 .filter((e) => Array.isArray(e)) 11794 .reduce((e, t) => e.concat(...t), []), 11795 l = e[t[n]].gpid, 11796 f = e[t[n]].dfp_ad_unit_code, 11797 m = e[t[n]].tid, 11798 g = e[t[n]].sid, 11799 x = u.filter((e) => "banner" in e), 11800 b = u.filter((e) => !("banner" in e)); 11801 if (x.length > 0) { 11802 const r = x.reduce( 11803 (e, t) => ( 11804 e[t.adunitCode] || (e[t.adunitCode] = []), 11805 e[t.adunitCode].push(t), 11806 e 11807 ), 11808 {}, 11809 ); 11810 for (const o in r) { 11811 const p = r[o], 11812 { 11813 id: c, 11814 banner: { topframe: u }, 11815 } = p[0], 11816 x = (0, a.A)(p[0], "ext.externalID"), 11817 b = { 11818 id: c, 11819 banner: { 11820 topframe: u, 11821 format: p.map(({ banner: { w: e, h: t }, ext: i }) => ({ 11822 w: e, 11823 h: t, 11824 ext: i, 11825 })), 11826 }, 11827 }; 11828 for (let e = 0; e < b.banner.format.length; e++) { 11829 (null != b.banner.format[e].ext && 11830 (null != b.banner.format[e].ext.sid && 11831 delete b.banner.format[e].ext.sid, 11832 null != b.banner.format[e].ext.externalID && 11833 delete b.banner.format[e].ext.externalID), 11834 "bidfloor" in p[e] && 11835 (b.banner.format[e].ext.bidfloor = p[e].bidfloor)); 11836 const t = b.banner.format[e].ext; 11837 t && 11838 0 === Object.keys(t).length && 11839 delete b.banner.format[e].ext; 11840 } 11841 const v = e[t[n]].pos; 11842 ((0, d.Fq)(v) && (b.banner.pos = v), 11843 (f || l || m || g || x) && 11844 ((b.ext = {}), 11845 (b.ext.dfp_ad_unit_code = f), 11846 (b.ext.gpid = l),
11847 (b.ext.tid = m), 11848 (b.ext.sid = g), 11849 (b.ext.externalID = x)), 11850 "bidfloor" in p[0] && (b.bidfloor = p[0].bidfloor), 11851 "bidfloorcur" in p[0] && (b.bidfloorcur = p[0].bidfloorcur)); 11852 const h = e[t[n]].adUnitFPD; 11853 (h && (0, s.J)(b, "ext.data", h), i.imp.push(b)); 11854 } 11855 } 11856 return ( 11857 b.length > 0 && 11858 b.forEach((e) => { 11859 if ((l && (0, s.J)(e, "ext.gpid", l), i.imp.length > 0)) { 11860 let t = !1; 11861 (i.imp.forEach((n, r) => { 11862 e.id === n.id && "video" in e 11863 ? ((n.video = e.video), 11864 (n.video.ext = Object.assign({}, e.video.ext, e.ext)), 11865 (0, a.A)(n, "video.ext.bidfloor", !1) && 11866 (0, a.A)(n, "bidfloor", !1) && 11867 n.video.ext.bidfloor < n.bidfloor && 11868 (n.bidfloor = n.video.ext.bidfloor), 11869 !(0, a.A)(n, "ext.siteID", !1) && 11870 (0, a.A)(e, "video.ext.siteID") && 11871 ((0, s.J)(n, "ext.siteID", e.video.ext.siteID), 11872 (0, s.J)(i, "ext.ixdiag.usid", !0)), 11873 (t = !0)) 11874 : e.id === n.id && 11875 "native" in e && 11876 ((n.native = e.native), 11877 (n.native.ext = Object.assign( 11878 {}, 11879 e.native.ext, 11880 e.ext, 11881 )), 11882 (0, a.A)(n, "native.ext.bidfloor", !1) && 11883 (0, a.A)(n, "bidfloor", !1) && 11884 n.native.ext.bidfloor < n.bidfloor && 11885 (n.bidfloor = n.native.ext.bidfloor), 11886 !(0, a.A)(n, "ext.siteID", !1) && 11887 (0, a.A)(e, "native.ext.siteID", !1) && 11888 ((0, s.J)(n, "ext.siteID", e.native.ext.siteID), 11889 (0, s.J)(i, "ext.ixdiag.usid", !0)), 11890 (t = !0)); 11891 }), 11892 t || i.imp.push(e)); 11893 } else i.imp.push(e); 11894 }), 11895 i 11896 ); 11897 } 11898 function H(e) { 11899 const t = (e && e.bidderCode) || "ix", 11900 i = p.$.getConfig(t); 11901 let n; 11902 if ( 11903 ((n = (0, a.A)(e, "ortb2.site.page") 11904 ? e.ortb2.site.page 11905 : (0, a.A)(e, "refererInfo.page")), 11906 i && "object" == typeof i.firstPartyData) 11907 ) { 11908 return (function (e, t, i) { 11909 let n; 11910 try { 11911 n = new URL(t); 11912 } catch (i) { 11913 ((0, o.JE)( 11914 `IX Bid Adapter: Invalid URL set in ortb2.site.page: ${t}. Using referer URL instead.`, 11915 ), 11916 (n = new URL((0, a.A)(e, "refererInfo.page")))); 11917 } 11918 const r = new URLSearchParams(n.search); 11919 for (const [e, t] of Object.entries(i)) 11920 r.has(e) || r.append(e, t); 11921 return ((n.search = r.toString()), n.toString()); 11922 })(e, n, i.firstPartyData); 11923 } 11924 return n; 11925 } 11926 function Q(e, t, i, n, r) { 11927 if ( 11928 ((t.ext.ixdiag.fpd = !0), 11929 Object.keys(n).forEach((e) => { 11930 -1 === C.SITE.indexOf(e) && delete n[e]; 11931 }), 11932 Object.keys(r).forEach((e) => { 11933 -1 === C.USER.indexOf(e) && delete r[e]; 11934 }), 11935 i.device) 11936 ) { 11937 const e = { ...i.device.sua }; 11938 (0, o.Im)(e) || (0, s.J)(t, "device.sua", e); 11939 const n = i.device.ip; 11940 n && (0, s.J)(t, "device.ip", n); 11941 const r = i.device.ipv6; 11942 r && (0, s.J)(t, "device.ipv6", r); 11943 const a = i.device.geo; 11944 a && (0, s.J)(t, "device.geo", a); 11945 } 11946 if ( 11947 i.hasOwnProperty("regs") && 11948 !e.gppConsent && 11949 (i.regs.hasOwnProperty("gpp") && 11950 "string" == typeof i.regs.gpp && 11951 (0, s.J)(t, "regs.gpp", i.regs.gpp), 11952 i.regs.hasOwnProperty("gpp_sid") && 11953 Array.isArray(i.regs.gpp_sid) && 11954 (0, s.J)(t, "regs.gpp_sid", i.regs.gpp_sid), 11955 i.regs.ext?.dsa) 11956 ) { 11957 const e = i.regs.ext.dsa, 11958 n = {}; 11959 if ( 11960 (["dsarequired", "pubrender", "datatopub"].forEach((t) => { 11961 (0, d.Et)(e[t]) && (n[t] = e[t]); 11962 }), 11963 (0, d.cy)(e.transparency)) 11964 ) { 11965 const t = []; 11966 (e.transparency.forEach((e) => { 11967 (0, d.Qd)(e) && 11968 (0, d.O8)(e.domain) && 11969 "" !== e.domain && 11970 (0, d.cy)(e.dsaparams) && 11971 e.dsaparams.every((e) => (0, d.Et)(e)) && 11972 t.push(e); 11973 }), 11974 t.length > 0 && (n.transparency = t)); 11975 } 11976 (0, o.Im)(n) || (0, s.J)(t, "regs.ext.dsa", n); 11977 } 11978 return t; 11979 } 11980 function M(e, t) { 11981 const i = (0, a.A)(t, "ortb2Imp.ext.data"); 11982 i && (0, s.J)(e, "ext.data", i); 11983 } 11984 function W(e, t, i, n, r, o) { 11985 const a = e[i[n]].tagId, 11986 s = e[i[n]].adUnitCode, 11987 d = e[i[n]].divId; 11988 return ( 11989 (a || s || d) && 11990 ((t.ext.ixdiag.tagid = a), 11991 (t.ext.ixdiag.adunitcode = s), 11992 (t.ext.ixdiag.divId = d)), 11993 t 11994 ); 11995 } 11996 function Y(e, t) { 11997 if (t) 11998 for (let i = 0; i < e.length; i++) { 11999 const n = e[i]; 12000 if (t[0] === n[0] && t[1] === n[1]) { 12001 e.splice(i, 1); 12002 break; 12003 } 12004 } 12005 } 12006 function Z(e, t) { 12007 const i = (function (e) {
12008 const t = z(e, "native"), 12009 i = e.nativeOrtbRequest; 12010 ((i.eventtrackers = [{ event: 1, methods: [1, 2] }]), 12011 (i.privacy = 1), 12012 (t.native = { request: JSON.stringify(i), ver: "1.2" })); 12013 const n = (0, a.A)(e, "ortb2Imp.ext.tid"); 12014 return ( 12015 n && (0, s.J)(t, "ext.tid", n), 12016 M(t, e), 12017 R(e, t, "native"), 12018 t 12019 ); 12020 })(e); 12021 if (0 !== Object.keys(i).length) { 12022 ((t[e.adUnitCode] = {}), 12023 (t[e.adUnitCode].ixImps = []), 12024 t[e.adUnitCode].ixImps.push(i), 12025 (t[e.adUnitCode].gpid = (0, a.A)(e, "ortb2Imp.ext.gpid")), 12026 (t[e.adUnitCode].dfp_ad_unit_code = (0, a.A)( 12027 e, 12028 "ortb2Imp.ext.data.adserver.adslot", 12029 )), 12030 (t[e.adUnitCode].tagId = (0, a.A)(e, "params.tagId"))); 12031 const n = e.adUnitCode, 12032 r = b(n, e); 12033 ((t[e.adUnitCode].adUnitCode = n), (t[e.adUnitCode].divId = r)); 12034 } 12035 } 12036 function K(e, t) { 12037 const i = j(e); 12038 if (0 !== Object.keys(i).length) { 12039 ((t[e.adUnitCode] = {}), 12040 (t[e.adUnitCode].ixImps = []), 12041 t[e.adUnitCode].ixImps.push(i), 12042 (t[e.adUnitCode].gpid = (0, a.A)(e, "ortb2Imp.ext.gpid")), 12043 (t[e.adUnitCode].dfp_ad_unit_code = (0, a.A)( 12044 e, 12045 "ortb2Imp.ext.data.adserver.adslot", 12046 )), 12047 (t[e.adUnitCode].tagId = (0, a.A)(e, "params.tagId"))); 12048 const n = e.adUnitCode, 12049 r = b(n, e); 12050 ((t[e.adUnitCode].adUnitCode = n), (t[e.adUnitCode].divId = r)); 12051 } 12052 } 12053 function ee(e, t, i, n) { 12054 const r = (function (e) { 12055 const t = z(e, "banner"); 12056 ((t.banner = {}), (t.adunitCode = e.adUnitCode)); 12057 const i = (0, a.A)(e, "params.size"); 12058 return ( 12059 i && ((t.banner.w = i[0]), (t.banner.h = i[1])), 12060 (t.banner.topframe = (0, o.al)() ? 0 : 1), 12061 R(e, t, "banner"), 12062 t 12063 ); 12064 })(e), 12065 s = X( 12066 (0, a.A)(e, "mediaTypes.banner.sizes"), 12067 (0, a.A)(e, "params.size"), 12068 ); 12069 (i.hasOwnProperty(e.adUnitCode) || (i[e.adUnitCode] = {}), 12070 (i[e.adUnitCode].gpid = (0, a.A)(e, "ortb2Imp.ext.gpid")), 12071 (i[e.adUnitCode].dfp_ad_unit_code = (0, a.A)( 12072 e, 12073 "ortb2Imp.ext.data.adserver.adslot", 12074 )), 12075 (i[e.adUnitCode].tid = (0, a.A)(e, "ortb2Imp.ext.tid")), 12076 (i[e.adUnitCode].tagId = (0, a.A)(e, "params.tagId")), 12077 (i[e.adUnitCode].pos = (0, a.A)(e, "mediaTypes.banner.pos"))); 12078 const p = (0, a.A)(e, "ortb2Imp.ext.data"); 12079 p && (i[e.adUnitCode].adUnitFPD = p); 12080 const c = (0, a.A)(e, "params.id"); 12081 !c || 12082 ("string" != typeof c && "number" != typeof c) || 12083 (i[e.adUnitCode].sid = String(c)); 12084 const u = e.adUnitCode, 12085 l = b(u, e); 12086 ((i[e.adUnitCode].adUnitCode = u), 12087 (i[e.adUnitCode].divId = l), 12088 s && 12089 (i[e.adUnitCode].hasOwnProperty("ixImps") || 12090 (i[e.adUnitCode].ixImps = []), 12091 i[e.adUnitCode].ixImps.push(r)), 12092 (function (e, t, i) { 12093 if (t.hasOwnProperty(e.adUnitCode)) { 12094 let i = []; 12095 (t[e.adUnitCode].hasOwnProperty("missingSizes") && 12096 (i = t[e.adUnitCode].missingSizes), 12097 Y(i, e.params.size), 12098 (t[e.adUnitCode].missingSizes = i)); 12099 } else if ((0, a.A)(e, "mediaTypes.banner.sizes")) { 12100 const n = (0, d.Go)(e.mediaTypes.banner.sizes); 12101 Y(n, e.params.size); 12102 const r = { missingSizes: n, impression: i }; 12103 t[e.adUnitCode] = r; 12104 } 12105 })(e, t, r)); 12106 } 12107 function te(e, t, i) { 12108 const n = (0, d.Go)(t); 12109 return ( 12110 (n.banner.w = i[0]), 12111 (n.banner.h = i[1]), 12112 R(e, n, "banner"), 12113 n 12114 ); 12115 } 12116 function ie(e) { 12117 e.renderer.push(function () { 12118 const t = b(e.adUnitCode, e); 12119 t 12120 ? window.createIXPlayer(t, e) 12121 : (0, o.JE)(
12122 `IX Bid Adapter: adUnitCode: ${t} not found on page.`, 12123 ); 12124 }); 12125 } 12126 function ne(e, t) { 12127 const i = f.A4.install({ id: e, url: t, loaded: !1 }); 12128 try { 12129 i.setRender(ie); 12130 } catch (e) { 12131 return ( 12132 (0, o.JE)("Prebid Error calling setRender on renderer", e), 12133 null 12134 ); 12135 } 12136 return t 12137 ? i 12138 : ((0, o.JE)("Outstream renderer URL not found"), null); 12139 } 12140 function re(e) { 12141 if ("outstream" !== (0, a.A)(e, "mediaTypes.video.context")) 12142 return !1; 12143 let t = (0, a.A)(e, "mediaTypes.video.renderer"); 12144 t || (t = (0, a.A)(e, "renderer")); 12145 return ( 12146 !!("object" != typeof t || !t.url || !t.render) || t.backupOnly 12147 ); 12148 } 12149 function oe() { 12150 const e = p.$.getConfig("exchangeId"); 12151 return ( 12152 !("number" != typeof e || !isFinite(e)) || 12153 !("string" != typeof e || "" === e.trim() || !isFinite(Number(e))) 12154 ); 12155 } 12156 const ae = { 12157 code: v, 12158 gvlid: 10, 12159 supportedMediaTypes: h, 12160 isBidRequestValid: function (e) { 12161 const t = (0, a.A)(e, "params.video"), 12162 i = (0, a.A)(e, "params.size"), 12163 n = (0, a.A)(e, "mediaTypes.banner.sizes"), 12164 r = (0, a.A)(e, "mediaTypes.video"), 12165 s = (0, a.A)(e, "mediaTypes.video.playerSize"), 12166 d = e.params.hasOwnProperty("bidFloor"), 12167 p = e.params.hasOwnProperty("bidFloorCur"); 12168 if (e.hasOwnProperty("mediaType") && !(0, o.gR)(h, e.mediaType)) 12169 return ( 12170 (0, o.JE)("IX Bid Adapter: media type is not supported."), 12171 !1 12172 ); 12173 if ((0, a.A)(e, "mediaTypes.banner") && !n) return !1; 12174 if (i) { 12175 const t = N(i); 12176 if (!t) 12177 return ( 12178 (0, o.vV)("IX Bid Adapter: size has invalid format."), 12179 !1 12180 ); 12181 if (!X(e.sizes, t) && !X(s, t) && !X(n, t)) 12182 return ( 12183 (0, o.vV)( 12184 "IX Bid Adapter: bid size is not included in ad unit sizes or player size.", 12185 ), 12186 !1 12187 ); 12188 } 12189 if ( 12190 !oe() && 12191 (void 0 === e.params.siteId || null === e.params.siteId) 12192 ) 12193 return ( 12194 (0, o.vV)( 12195 "IX Bid Adapter: Invalid configuration - either siteId or exchangeId must be configured.", 12196 ), 12197 !1 12198 ); 12199 if (void 0 !== e.params.siteId) { 12200 if ( 12201 "string" != typeof e.params.siteId && 12202 "number" != typeof e.params.siteId 12203 ) 12204 return ( 12205 (0, o.vV)( 12206 "IX Bid Adapter: siteId must be string or number type.", 12207 ), 12208 !1 12209 ); 12210 if ( 12211 "string" != typeof e.params.siteId && 12212 isNaN(Number(e.params.siteId)) 12213 ) 12214 return ( 12215 (0, o.vV)("IX Bid Adapter: siteId must valid value"), 12216 !1 12217 ); 12218 } 12219 if ( 12220 (d || p) && 12221 !( 12222 d && 12223 p && 12224 ((c = e.params.bidFloor), 12225 (u = e.params.bidFloorCur), 12226 Boolean( 12227 "number" == typeof c && 12228 "string" == typeof u && 12229 u.match(/^[A-Z]{3}$/), 12230 )) 12231 ) 12232 ) 12233 return ( 12234 (0, o.vV)(
12235 "IX Bid Adapter: bidFloor / bidFloorCur parameter has invalid format.", 12236 ), 12237 !1 12238 ); 12239 var c, u; 12240 if (r && t) { 12241 const i = j(e).video, 12242 n = q(r, t); 12243 if ( 12244 (0, a.A)(e, "mediaTypes.video.context") === l.H6 && 12245 re(e) && 12246 i 12247 ) { 12248 const e = [(0, a.A)(i, "w"), (0, a.A)(i, "h")]; 12249 if (!(e[0] >= y[0] && e[1] >= y[1])) 12250 return ( 12251 (0, o.vV)( 12252 `IX Bid Adapter: ${e} is an invalid size for IX outstream renderer`, 12253 ), 12254 !1 12255 ); 12256 } 12257 if (n.length) 12258 return ( 12259 n.forEach((e) => { 12260 (0, o.vV)(e); 12261 }), 12262 !1 12263 ); 12264 } 12265 return (function (e) { 12266 return ( 12267 void 0 === (0, a.A)(e, "mediaTypes.native") || 12268 (e.nativeOrtbRequest && 12269 Array.isArray(e.nativeOrtbRequest.assets) && 12270 e.nativeOrtbRequest.assets.length > 0) 12271 ); 12272 })(e); 12273 }, 12274 resetSiteID: function () { 12275 J = 0; 12276 }, 12277 buildRequests: function (e, t) { 12278 const i = [], 12279 n = {}, 12280 r = {}, 12281 s = {}, 12282 d = {}; 12283 (E.getFeatureToggles(), 12284 e.forEach((e) => { 12285 const t = Object.keys((0, a.A)(e, "mediaTypes", {})); 12286 for (const i of t) 12287 switch (i) { 12288 case "banner": 12289 ee(e, d, n); 12290 break; 12291 case "video": 12292 K(e, r); 12293 break; 12294 case "native": 12295 Z(e, s); 12296 break; 12297 default: 12298 (0, o.JE)( 12299 `IX Bid Adapter: ad unit mediaTypes ${i} is not supported`, 12300 ); 12301 } 12302 })); 12303 for (const t in d) 12304 if (d.hasOwnProperty(t)) { 12305 const i = d[t].missingSizes; 12306 (n.hasOwnProperty(t) || (n[t] = {}), 12307 n[t].hasOwnProperty("missingImps") || 12308 ((n[t].missingImps = []), (n[t].missingCount = 0))); 12309 const r = d[t].impression; 12310 for (let o = 0; o < i.length; o++) { 12311 const a = te(e[0], r, i[o]); 12312 (n[t].missingImps.push(a), n[t].missingCount++); 12313 } 12314 } 12315 const p = []; 12316 return ( 12317 Object.keys(n).length > 0 && p.push(n), 12318 Object.keys(r).length > 0 && p.push(r), 12319 Object.keys(s).length > 0 && p.push(s), 12320 i.push( 12321 ...V( 12322 e, 12323 t, 12324 (function (e) { 12325 const t = {}; 12326 return ( 12327 e.forEach((e) => { 12328 Object.keys(e).forEach((i) => { 12329 t.hasOwnProperty(i) 12330 ? t[i].hasOwnProperty("ixImps") && 12331 e[i].hasOwnProperty("ixImps") 12332 ? (t[i].ixImps = [ 12333 ...t[i].ixImps, 12334 ...e[i].ixImps, 12335 ]) 12336 : t[i].hasOwnProperty("missingImps") && 12337 e[i].hasOwnProperty("missingImps") 12338 ? (t[i].missingImps = [ 12339 ...t[i].missingImps, 12340 ...e[i].missingImps, 12341 ]) 12342 : e[i].hasOwnProperty("ixImps") 12343 ? (t[i].ixImps = e[i].ixImps) 12344 : e[i].hasOwnProperty("missingImps") && 12345 (t[i].missingImps = e[i].missingImps) 12346 : (t[i] = e[i]); 12347 }); 12348 }), 12349 t 12350 ); 12351 })(p), 12352 ), 12353 ), 12354 i 12355 ); 12356 }, 12357 interpretResponse: function (e, t) { 12358 const i = []; 12359 let n; 12360 if ((E.setFeatureToggles(e), !e.hasOwnProperty("body"))) return i; 12361 const r = e.body, 12362 s = r.seatbid || []; 12363 for (let e = 0; e < s.length; e++) { 12364 if (!s[e].hasOwnProperty("bid")) continue; 12365 const d = s[e].bid, 12366 p = t.data; 12367 for (let e = 0; e < d.length; e++) { 12368 const o = L(d[e].impid, p.imp, t.validBidRequests); 12369 if ( 12370 ((n = B(d[e], r.cur, o)), "video" === n.mediaType && re(o)) 12371 ) { 12372 const t = (0, a.A)(r, "ext.videoplayerurl"); 12373 if (((n.renderer = ne(d[e].bidId, t)), !n.renderer)) 12374 continue; 12375 } 12376 i.push(n); 12377 } 12378 if ((0, a.A)(p, "ext.ixdiag.err") && P.localStorageIsEnabled()) 12379 try { 12380 P.removeDataFromLocalStorage("ixdiag"); 12381 } catch (e) { 12382 (0, o.vV)("ix can not clear ixdiag from localStorage."); 12383 } 12384 } 12385 return i; 12386 }, 12387 getUserSyncs: function (e, t) { 12388 const i = []; 12389 let n = null; 12390 if ( 12391 (t.length > 0 && 12392 (n = (0, a.A)( 12393 t[0], 12394 "body.ext.publishersyncsperbidderoverride", 12395 )), 12396 0 === n) 12397 ) 12398 return []; 12399 if (e.iframeEnabled) 12400 i.push({ 12401 type: "iframe", 12402 url: "https://js-sec.indexww.com/um/ixmatch.html", 12403 }); 12404 else { 12405 let e = null; 12406 (p.$.getConfig("userSync") && 12407 (e = p.$.getConfig("userSync").syncsPerBidder), 12408 0 === e && (e = n), 12409 (e = n && (0 === e || e) ? (n > e ? e : n) : 1)); 12410 for (let t = 0; t < e; t++) 12411 i.push({ type: "image", url: se(e, t) }); 12412 } 12413 return i; 12414 }, 12415 }; 12416 function se(e, t) { 12417 let i = "", 12418 n = "0"; 12419 (D && 12420 D.hasOwnProperty("gdprApplies") && 12421 (n = D.gdprApplies ? "1" : "0"), 12422 D && 12423 D.hasOwnProperty("consentString") && 12424 (i = D.consentString || "")); 12425 return ( 12426 "https://dsum.casalemedia.com/pbusermatch?origin=prebid" + 12427 (0 !== J ? "&site_id=" + J.toString() : "") + 12428 "&p=" + 12429 e.toString() + 12430 "&i=" + 12431 t.toString() + 12432 "&gdpr=" + 12433 n + 12434 "&gdpr_consent=" + 12435 i + 12436 "&us_privacy=" + 12437 (k || "") 12438 ); 12439 } 12440 function de(e) { 12441 return ( 12442 e.imp.forEach((t, i) => { 12443 const n = t.ext; 12444 if (null == n) return e; 12445 ce(t) < 2 ||
12446 Object.keys(n).forEach((r) => { 12447 if ("banner" in t) { 12448 const o = t.banner.ext; 12449 if ( 12450 (void 0 !== o && 12451 void 0 !== o[r] && 12452 o[r] === n[r] && 12453 delete e.imp[i].banner.ext[r], 12454 void 0 !== t.banner.format) 12455 ) 12456 for (let o = 0; o < t.banner.format.length; o++) 12457 t.banner.format[o]?.ext?.[r] === n[r] && 12458 delete e.imp[i].banner.format[o].ext[r]; 12459 } 12460 if ("video" in t) { 12461 const o = t.video.ext; 12462 void 0 !== o && 12463 void 0 !== o[r] && 12464 o[r] === n[r] && 12465 delete e.imp[i].video.ext[r]; 12466 } 12467 if ("native" in t) { 12468 const o = t.native.ext; 12469 void 0 !== o && 12470 void 0 !== o[r] && 12471 o[r] === n[r] && 12472 delete e.imp[i].native.ext[r]; 12473 } 12474 }); 12475 }), 12476 e 12477 ); 12478 } 12479 function pe(e) { 12480 return ( 12481 e.imp.forEach((t, i) => { 12482 const n = t.ext; 12483 if (null == n) return e; 12484 if (!(ce(t) < 2)) { 12485 if ("banner" in t) { 12486 const n = t.banner.ext; 12487 if ( 12488 (void 0 !== n && 12489 void 0 !== n.siteID && 12490 delete e.imp[i].banner.ext.siteID, 12491 void 0 !== t.banner.format) 12492 ) 12493 for (let n = 0; n < t.banner.format.length; n++) 12494 void 0 !== t.banner.format[n].ext && 12495 void 0 !== t.banner.format[n].ext.siteID && 12496 ((0, s.J)( 12497 e.imp[i], 12498 "ext.siteID", 12499 t.banner.format[n].ext.siteID, 12500 ), 12501 (0, s.J)(e, "ext.ixdiag.usid", !0), 12502 delete e.imp[i].banner.format[n].ext.siteID); 12503 } 12504 if ("video" in t) { 12505 const n = t.video.ext; 12506 void 0 !== n && 12507 void 0 !== n.siteID && 12508 delete e.imp[i].video.ext.siteID; 12509 } 12510 if ("native" in t) { 12511 const n = t.native.ext; 12512 void 0 !== n && 12513 void 0 !== n.siteID && 12514 delete e.imp[i].native.ext.siteID; 12515 } 12516 } 12517 }), 12518 e 12519 ); 12520 } 12521 function ce(e) { 12522 let t = 0; 12523 return ( 12524 void 0 !== e.banner && (t += 1), 12525 void 0 !== e.video && (t += 1), 12526 void 0 !== e.native && (t += 1), 12527 t 12528 ); 12529 } 12530 function ue(e) { 12531 return ( 12532 void 0 === e.device && (e.device = {}), 12533 (e.device.h = window.screen.height), 12534 (e.device.w = window.screen.width), 12535 e 12536 ); 12537 } 12538 ((0, u.a$)(ae), 12539 (0, r.E)("ixBidAdapter"), 12540 Object.assign(n.W1, { 12541 10: { 12542 purposes: [1, 2, 4, 7, 10], 12543 legIntPurposes: [], 12544 flexiblePurposes: [2, 7, 10], 12545 specialFeatures: [1], 12546 }, 12547 })); 12548 }, 12549 }, 12550 (e) => { 12551 e.O(0, [802, 769, 590, 85, 5], () => { 12552 return ((t = 8700), e((e.s = t))); 12553 var t; 12554 }); 12555 e.O(); 12556 }, 12557 ]); 12558 (self.pbjsChunk = self.pbjsChunk || []).push([ 12559 [575], 12560 { 12561 9121(e, t, n) { 12562 var r = n(1068), 12563 i = n(1129), 12564 s = n(7413), 12565 o = n(8928), 12566 a = n(3435), 12567 p = n(3350), 12568 d = n(2074), 12569 u = n(2682), 12570 c = n(8964), 12571 l = n(4338),
12572 g = n(6271); 12573 const m = c.RD.withCallers([["bidder", "ogury"]]), 12574 y = "https://ms-cookie-sync.presage.io", 12575 b = { 12576 context: { netRevenue: !0, ttl: 60 }, 12577 request(e, t, n, r) { 12578 const i = e(t, n, r); 12579 ((i.tmax = 1e3), 12580 (0, a.J)(i, "device.pxratio", (0, d.m)(A())), 12581 (0, a.J)(i, "site.page", A().location.href), 12582 (i.ext = (0, s.D9)({}, i.ext, { 12583 adapterversion: "2.1.0", 12584 prebidversion: "11.26.0-pre", 12585 }))); 12586 const p = n.bids.find((e) => 12587 Boolean((0, o.A)(e, "params.assetKey", !1)), 12588 ); 12589 return (p && (0, a.J)(i, "site.id", p.params.assetKey), i); 12590 }, 12591 imp(e, t, n) { 12592 const r = e(t, n), 12593 i = 12594 document.timeline && document.timeline.currentTime 12595 ? document.timeline.currentTime 12596 : 0, 12597 o = t.adUnitCode; 12598 ((r.tagid = t.adUnitCode), 12599 (r.ext = (0, s.D9)( 12600 {}, 12601 t.params, 12602 { timeSpentOnPage: i, gpid: o }, 12603 r.ext, 12604 ))); 12605 const a = h(t); 12606 return (a ? (r.bidfloor = a) : delete r.bidfloor, r); 12607 }, 12608 bidResponse(e, t, n) { 12609 const r = t.nurl; 12610 delete t.nurl; 12611 const i = e(t, n); 12612 return ((i.currency = "USD"), (i.nurl = r), i); 12613 }, 12614 }, 12615 f = (0, g.A)(b); 12616 function h(e) { 12617 if (!(0, p.fp)(e.getFloor)) return 0; 12618 const t = Boolean((0, o.A)(e, "mediaTypes.banner")), 12619 n = (0, o.A)(e, "mediaTypes.video.playerSize"), 12620 r = Array.isArray(n) && n.length > 0 && !t ? "video" : "banner", 12621 i = e.getFloor({ currency: "USD", mediaType: r, size: "*" }); 12622 return (0, p.Qd)(i) && "USD" === i.currency ? i.floor : 0; 12623 } 12624 function A() { 12625 try { 12626 return (0, s.mb)(); 12627 } catch (e) { 12628 return (0, s.l4)(); 12629 } 12630 } 12631 const S = { 12632 code: "ogury", 12633 gvlid: 31, 12634 supportedMediaTypes: ["banner", "video"], 12635 isBidRequestValid: function (e) { 12636 const t = (0, l.up)(e), 12637 n = (0, o.A)(e, "mediaTypes.video.playerSize"), 12638 r = Array.isArray(t) && t.length > 0, 12639 i = Array.isArray(n) && n.length > 0, 12640 s = r || i, 12641 a = 12642 !!(0, o.A)(e, "params.adUnitId") && 12643 !!(0, o.A)(e, "params.assetKey"), 12644 p = !!(0, o.A)(e, "ortb2.site.publisher.id") && !!e.adUnitCode; 12645 return s && (a || p); 12646 }, 12647 getUserSyncs: function (e, t, n, r, i) { 12648 const s = (n && n.consentString) || "", 12649 o = (i && i.gppString) || "", 12650 a = 12651 (i && 12652 i.applicableSections && 12653 i.applicableSections.toString()) || 12654 "", 12655 p = r || ""; 12656 return e.iframeEnabled 12657 ? [ 12658 { 12659 type: "iframe", 12660 url: `${y}/user-sync.html?gdpr_consent=${s}&source=prebid&gpp=${o}&gpp_sid=${a}&us_privacy=${p}`, 12661 }, 12662 ] 12663 : e.pixelEnabled 12664 ? [ 12665 { 12666 type: "image", 12667 url: `${y}/user-sync?source=prebid&gdpr_consent=${s}&gpp=${o}&gpp_sid=${a}&us_privacy=${p}`, 12668 }, 12669 ] 12670 : []; 12671 }, 12672 buildRequests: function (e, t) { 12673 return { 12674 method: "POST", 12675 url: "https://mweb-hb.presage.io/api/header-bidding-request", 12676 data: f.toORTB({ bidRequests: e, bidderRequest: t }), 12677 options: { contentType: "application/json" }, 12678 }; 12679 }, 12680 interpretResponse: function (e, t) { 12681 return f.fromORTB({ response: e.body, request: t.data }).bids; 12682 }, 12683 getFloor: h, 12684 onBidWon: function (e) { 12685 ((A().OG_PREBID_BID_OBJECT = { ...(e && { ...e }) }), 12686 e && e.nurl && m(e.nurl, null)); 12687 }, 12688 getWindowContext: A, 12689 onTimeout: function (e) { 12690 m( 12691 "https://ms-ads-monitoring-events.presage.io/bid_timeout", 12692 null, 12693 JSON.stringify({ ...e[0], location: window.location.href }), 12694 { method: "POST", contentType: "application/json" }, 12695 ); 12696 }, 12697 }; 12698 ((0, u.a$)(S), 12699 (0, i.E)("oguryBidAdapter"), 12700 Object.assign(r.W1, { 12701 31: { 12702 purposes: [1, 2, 3, 4, 7, 9, 10], 12703 legIntPurposes: [], 12704 flexiblePurposes: [], 12705 specialFeatures: [], 12706 }, 12707 })); 12708 }, 12709 }, 12710 (e) => { 12711 e.O(0, [802, 769, 590, 85, 498, 139, 511, 504], () => { 12712 return ((t = 9121), e((e.s = t))); 12713 var t; 12714 }); 12715 e.O(); 12716 }, 12717 ]); 12718 (self.pbjsChunk = self.pbjsChunk || []).push([ 12719 [711], 12720 { 12721 2069(e, t, r) { 12722 var i = r(1068), 12723 n = r(1129), 12724 o = r(6271), 12725 s = r(9400), 12726 a = r(2682), 12727 d = r(8384), 12728 c = r(7413), 12729 p = r(8928), 12730 u = r(3435), 12731 l = r(3350), 12732 m = r(9288), 12733 b = r(9446), 12734 x = r(8960); 12735 let f = d.$.getConfig("rubicon") || {}; 12736 d.$.getConfig("rubicon", (e) => { 12737 (0, c.D9)(f, e.rubicon); 12738 }); 12739 let y = {}; 12740 var g = { 12741 1: "468x60", 12742 2: "728x90", 12743 5: "120x90", 12744 7: "125x125", 12745 8: "120x600", 12746 9: "160x600", 12747 10: "300x600", 12748 13: "200x200", 12749 14: "250x250", 12750 15: "300x250", 12751 16: "336x280", 12752 17: "240x400", 12753 19: "300x100", 12754 31: "980x120", 12755 32: "250x360", 12756 33: "180x500", 12757 35: "980x150", 12758 37: "468x400", 12759 38: "930x180", 12760 39: "750x100", 12761 40: "750x200", 12762 41: "750x300", 12763 42: "2x4", 12764 43: "320x50", 12765 44: "300x50", 12766 48: "300x300", 12767 53: "1024x768", 12768 54: "300x1050", 12769 55: "970x90", 12770 57: "970x250", 12771 58: "1000x90", 12772 59: "320x80", 12773 60: "320x150", 12774 61: "1000x1000", 12775 64: "580x500", 12776 65: "640x480", 12777 66: "930x600", 12778 67: "320x480", 12779 68: "1800x1000", 12780 72: "320x320", 12781 73: "320x160", 12782 78: "980x240", 12783 79: "980x300", 12784 80: "980x400", 12785 83: "480x300", 12786 85: "300x120", 12787 90: "548x150", 12788 94: "970x310", 12789 95: "970x100", 12790 96: "970x210", 12791 101: "480x320", 12792 102: "768x1024", 12793 103: "480x280", 12794 105: "250x800", 12795 108: "320x240", 12796 113: "1000x300", 12797 117: "320x100", 12798 125: "800x250", 12799 126: "200x600", 12800 144: "980x600", 12801 145: "980x150", 12802 152: "1000x250", 12803 156: "640x320", 12804 159: "320x250", 12805 179: "250x600", 12806 195: "600x300", 12807 198: "640x360", 12808 199: "640x200", 12809 210: "1080x1920", 12810 213: "1030x590", 12811 214: "980x360", 12812 219: "1920x1080", 12813 221: "1x1", 12814 229: "320x180", 12815 230: "2000x1400", 12816 232: "580x400", 12817 234: "6x6", 12818 251: "2x2", 12819 256: "480x820", 12820 257: "400x600", 12821 258: "500x200", 12822 259: "998x200", 12823 261: "480x480", 12824 264: "970x1000", 12825 274: "1800x200", 12826 278: "320x500", 12827 282: "320x400", 12828 288: "640x380",
12829 484: "720x1280", 12830 524: "1x2", 12831 548: "500x1000", 12832 550: "980x480", 12833 552: "300x200", 12834 558: "640x640", 12835 562: "300x431", 12836 564: "320x431", 12837 566: "320x300", 12838 568: "300x150", 12839 570: "300x125", 12840 572: "250x350", 12841 574: "620x891", 12842 576: "610x877", 12843 578: "980x552", 12844 580: "505x656", 12845 622: "192x160", 12846 632: "1200x450", 12847 634: "340x450", 12848 680: "970x570", 12849 682: "300x240", 12850 684: "970x550", 12851 686: "300x210", 12852 688: "300x220", 12853 690: "970x170", 12854 710: "600x250", 12855 712: "340x430", 12856 }; 12857 (0, c.bu)(g, (e, t) => { 12858 g[e] = t; 12859 }); 12860 const v = (0, o.A)({ 12861 request(e, t, r, i) { 12862 const { bidRequests: o } = i, 12863 s = e(t, r, i); 12864 var a; 12865 ((s.cur = ["USD"]), 12866 (s.test = d.$.getConfig("debug") ? 1 : 0), 12867 (0, u.J)(s, "ext.prebid.cache", { 12868 vastxml: { returnCreative: !0 === f.returnVast }, 12869 }), 12870 (0, u.J)(s, "ext.prebid.bidders", { 12871 rubicon: { integration: f.int_type || "pbjs" }, 12872 }), 12873 (0, u.J)(s, "ext.prebid.targeting.pricegranularity", { 12874 ranges: { 12875 low: [{ max: 5, increment: 0.5 }], 12876 medium: [{ max: 20, increment: 0.1 }], 12877 high: [{ max: 20, increment: 0.01 }], 12878 auto: [ 12879 { max: 5, increment: 0.05 }, 12880 { min: 5, max: 10, increment: 0.1 }, 12881 { min: 10, max: 20, increment: 0.5 }, 12882 ], 12883 dense: [ 12884 { max: 3, increment: 0.01 }, 12885 { min: 3, max: 8, increment: 0.05 }, 12886 { min: 8, max: 20, increment: 0.5 }, 12887 ], 12888 custom: 12889 (a = d.$).getConfig("customPriceBucket") && 12890 a.getConfig("customPriceBucket").buckets, 12891 }[a.getConfig("priceGranularity")], 12892 })); 12893 const p = (0, n.m)().installedModules; 12894 (!p || 12895 (p.length && -1 === p.indexOf("rubiconAnalyticsAdapter")) || 12896 (0, u.J)(s, "ext.prebid.analytics", { 12897 rubicon: { "client-analytics": !0 }, 12898 }), 12899 (function (e, t, r) { 12900 let i = {}; 12901 const n = (0, m.D)(r, ...t.map((e) => e.params.keywords)); 12902 (t.forEach((t) => { 12903 const r = { 12904 user: { ext: { data: { ...t.params.visitor } } }, 12905 site: { ext: { data: { ...t.params.inventory } } }, 12906 }, 12907 n = e.imp.find( 12908 (e) => 12909 e.ext?.prebid?.bidder?.rubicon?.video?.language, 12910 ); 12911 (n && 12912 (r.site.content = { 12913 language: 12914 n.ext?.prebid?.bidder?.rubicon?.video?.language, 12915 }), 12916 (i = (0, c.D9)(i, t.ortb2 || {}, r))); 12917 const o = d.$.getConfig("user.id"); 12918 i.user.id = i.user.id || o; 12919 }), 12920 (0, c.D9)(e, i), 12921 n && 12922 n.length && 12923 (0, u.J)(e, "site.keywords", n.join(","))); 12924 delete e?.ext?.prebid?.storedrequest; 12925 })(s, o, r.ortb2), 12926 delete s?.ext?.prebid?.storedrequest, 12927 !0 === f.disableFloors && delete s.ext.prebid.floors); 12928 return ( 12929 o.filter((e) => "object" == typeof e.floorData).length > 0 && 12930 (s.ext.prebid.floors = { enabled: !1 }), 12931 s 12932 ); 12933 }, 12934 imp(e, t, r) { 12935 const i = k(t); 12936 if (i.includes("banner") && 1 === i.length) return; 12937 const n = e(t, r); 12938 return ( 12939 (n.id = t.adUnitCode), 12940 delete n.banner, 12941 "atf" === t.params.position && n.video && (n.video.pos = 1), 12942 "btf" === t.params.position && n.video && (n.video.pos = 3), 12943 delete n.ext?.prebid?.storedrequest, 12944 !0 === t.params.bidonmultiformat && 12945 i.length > 1 && 12946 (0, u.J)(n, "ext.prebid.bidder.rubicon.formats", i), 12947 (function (e, t) { 12948 "USD" !== t.bidfloorcur && 12949 (delete t.bidfloor, delete t.bidfloorcur); 12950 if (!t.bidfloor) { 12951 const r = parseFloat((0, p.A)(e, "params.floor")); 12952 isNaN(r) || ((t.bidfloor = r), (t.bidfloorcur = "USD")); 12953 } 12954 })(t, n), 12955 (n.id = y[n.id] ? n.id + y[n.id]++ : ((y[n.id] = 2), n.id)), 12956 n 12957 ); 12958 }, 12959 bidResponse(e, t, r) { 12960 const i = e(t, r); 12961 i.meta.mediaType = (0, p.A)(t, "ext.prebid.type"); 12962 const { bidRequest: n } = r, 12963 [o, s] = 12964 "outstream" === n.mediaTypes.video?.context 12965 ? A(n, "video") 12966 : [void 0, void 0]; 12967 return ( 12968 (i.width = t.w || o || i.playerWidth || 0),
12969 (i.height = t.h || s || i.playerHeight || 0), 12970 "video" === i.mediaType && 12971 "outstream" === n.mediaTypes.video.context && 12972 (i.renderer = (0, x.S_)( 12973 i, 12974 f.rendererUrl, 12975 f.rendererConfig, 12976 )), 12977 (0, p.A)(t, "ext.bidder.rp.advid") && 12978 (0, u.J)(i, "meta.advertiserId", t.ext.bidder.rp.advid), 12979 i 12980 ); 12981 }, 12982 context: { netRevenue: !1 !== f.netRevenue, ttl: 360 }, 12983 processors: s.m, 12984 }), 12985 h = { 12986 code: "rubicon", 12987 gvlid: 52, 12988 supportedMediaTypes: ["banner", "video", "native"], 12989 isBidRequestValid: function (e) { 12990 let t = !0; 12991 if ("object" != typeof e.params) return !1; 12992 for ( 12993 let t = 0, r = ["accountId", "siteId", "zoneId"]; 12994 t < r.length; 12995 t++ 12996 ) 12997 if ( 12998 ((e.params[r[t]] = parseInt(e.params[r[t]])), 12999 isNaN(e.params[r[t]])) 13000 ) 13001 return ( 13002 (0, c.vV)( 13003 "Rubicon: wrong format of accountId or siteId or zoneId.", 13004 ), 13005 !1 13006 ); 13007 const r = k(e, !0); 13008 if (!r.length) return !1; 13009 r.includes("video") && 13010 (t = (function (e) { 13011 let t = !0; 13012 const r = Object.prototype.toString.call([]), 13013 i = Object.prototype.toString.call(0); 13014 var n = { mimes: r, protocols: r, linearity: i }; 13015 return ( 13016 Object.keys(n).forEach(function (r) { 13017 Object.prototype.toString.call( 13018 (0, p.A)(e, "mediaTypes.video." + r), 13019 ) !== n[r] && 13020 ((t = !1), 13021 (0, c.vV)( 13022 "Rubicon: mediaTypes.video." + 13023 r + 13024 " is required and must be of type: " + 13025 n[r], 13026 )); 13027 }), 13028 t 13029 ); 13030 })(e)); 13031 const i = 13032 ["banner", "native"].filter((e) => r.includes(e)).length > 0; 13033 return i ? t && i : t; 13034 }, 13035 buildRequests: function (e, t) { 13036 let r; 13037 const i = []; 13038 let n; 13039 if ( 13040 ((n = e.filter((e) => { 13041 const t = k(e), 13042 { length: r } = t, 13043 { bidonmultiformat: i, video: n } = e.params || {}; 13044 return ( 13045 (1 === r && 13046 (t.includes("video") || t.includes("native"))) || 13047 (2 === r && !t.includes("banner")) || 13048 (n && t.includes("video")) || 13049 (i && (t.includes("video") || t.includes("native"))) 13050 ); 13051 })), 13052 n && n.length) 13053 ) { 13054 const e = v.toORTB({ bidRequests: n, bidderRequest: t }); 13055 ($(), 13056 i.push({ 13057 method: "POST", 13058 url: `https://${f.videoHost || "prebid-server"}.rubiconproject.com/openrtb2/auction`, 13059 data: e, 13060 bidRequest: n, 13061 })); 13062 } 13063 const o = e.filter((e) => { 13064 const t = k(e), 13065 { bidonmultiformat: r, video: i } = e.params || {}; 13066 return ( 13067 t.includes("banner") && 13068 (1 === t.length || r || !i || !t.includes("video")) 13069 ); 13070 }); 13071 if (!0 !== f.singleRequest) 13072 r = i.concat( 13073 o.map((e) => { 13074 const r = h.createSlotParams(e, t); 13075 return { 13076 method: "GET", 13077 url: `https://${f.bannerHost || "fastlane"}.rubiconproject.com/a/api/fastlane.json`, 13078 data: 13079 h.getOrderedParams(r).reduce((e, t) => { 13080 const i = r[t]; 13081 return ((0, l.O8)(i) && "" !== i) || (0, l.Et)(i) 13082 ? `${e}${R(t, i)}&` 13083 : e; 13084 }, "") + `slots=1&rand=${Math.random()}`, 13085 bidRequest: e, 13086 }; 13087 }), 13088 ); 13089 else { 13090 const e = o.reduce( 13091 (e, t) => ( 13092 (e[t.params.siteId] = e[t.params.siteId] || []).push(t), 13093 e 13094 ), 13095 {}, 13096 ), 13097 n = 10; 13098 r = i.concat( 13099 Object.keys(e).reduce( 13100 (r, i) => ( 13101 (function (e, t) { 13102 const r = []; 13103 for (let i = 0; i < e.length; i += t) 13104 r.push(e.slice(i, i + t)); 13105 return r; 13106 }
13106)(e[i], n).forEach((e) => { 13107 const i = h.combineSlotUrlParams( 13108 e.map((e) => h.createSlotParams(e, t)), 13109 ); 13110 r.push({ 13111 method: "GET", 13112 url: `https://${f.bannerHost || "fastlane"}.rubiconproject.com/a/api/fastlane.json`, 13113 data: 13114 h.getOrderedParams(i).reduce((e, t) => { 13115 const r = i[t]; 13116 return ((0, l.O8)(r) && "" !== r) || 13117 (0, l.Et)(r) 13118 ? `${e}${R(t, r)}&` 13119 : e; 13120 }, "") + 13121 `slots=${e.length}&rand=${Math.random()}`, 13122 bidRequest: e, 13123 }); 13124 }), 13125 r 13126 ), 13127 [], 13128 ), 13129 ); 13130 } 13131 return r; 13132 }, 13133 getOrderedParams: function (e) { 13134 const t = /^tg_v/, 13135 r = /^tg_i/, 13136 i = /^eid_|^tpid_/, 13137 n = [ 13138 "account_id", 13139 "site_id", 13140 "zone_id", 13141 "size_id", 13142 "alt_size_ids", 13143 "p_pos", 13144 "gdpr", 13145 "gdpr_consent", 13146 "us_privacy", 13147 "gpp", 13148 "gpp_sid", 13149 "rp_schain", 13150 ] 13151 .concat(Object.keys(e).filter((e) => i.test(e))) 13152 .concat([ 13153 "x_liverampidl", 13154 "ppuid", 13155 "rf", 13156 "p_geo.latitude", 13157 "p_geo.longitude", 13158 "kw", 13159 ]) 13160 .concat(Object.keys(e).filter((e) => t.test(e))) 13161 .concat(Object.keys(e).filter((e) => r.test(e))) 13162 .concat([ 13163 "tk_flint", 13164 "x_source.tid", 13165 "l_pb_bid_id", 13166 "p_screen_res", 13167 "rp_floor", 13168 "rp_secure", 13169 "tk_user_key", 13170 ]); 13171 return n.concat( 13172 Object.keys(e).filter((e) => -1 === n.indexOf(e)), 13173 ); 13174 }, 13175 combineSlotUrlParams: function (e) { 13176 if (1 === e.length) return e[0]; 13177 const t = e.reduce(function (t, r, i) { 13178 return ( 13179 Object.keys(r).forEach(function (n) { 13180 (t.hasOwnProperty(n) || (t[n] = new Array(e.length)), 13181 t[n].splice(i, 1, r[n])); 13182 }), 13183 t 13184 ); 13185 }, {}), 13186 r = new RegExp("^([^;]*)(;\\1)+$"); 13187 return ( 13188 Object.keys(t).forEach(function (e) { 13189 const i = t[e].join(";"), 13190 n = i.match(r); 13191 t[e] = n ? n[1] : i; 13192 }), 13193 t 13194 ); 13195 }, 13196 createSlotParams: function (e, t) { 13197 e.startTime = new Date().getTime(); 13198 const r = e.params, 13199 i = A(e, "banner"), 13200 [n, o] = r.latLong || [], 13201 s = { 13202 account_id: r.accountId, 13203 site_id: r.siteId, 13204 zone_id: r.zoneId, 13205 size_id: i[0], 13206 alt_size_ids: i.slice(1).join(",") || void 0, 13207 rp_floor: 13208 (r.floor = parseFloat(r.floor)) >= 0.01 13209 ? r.floor 13210 : void 0, 13211 rp_secure: "1", 13212 tk_flint: `${f.int_type || "pbjs_lite"}_v11.26.0-pre`, 13213 "x_source.tid": t.ortb2?.source?.tid, 13214 "x_imp.ext.tid": e.ortb2Imp?.ext?.tid, 13215 l_pb_bid_id: e.bidId, 13216 ip: e.ortb2?.device?.ip, 13217 ipv6: e.ortb2?.device?.ipv6, 13218 p_screen_res: [ 13219 window.screen.width, 13220 window.screen.height, 13221 ].join("x"), 13222 tk_user_key: r.userId, 13223 "p_geo.latitude": isNaN(parseFloat(n)) 13224 ? void 0 13225 : parseFloat(n).toFixed(4), 13226 "p_geo.longitude": isNaN(parseFloat(o)) 13227 ? void 0 13228 : parseFloat(o).toFixed(4), 13229 "tg_fl.eid": e.code, 13230 rf: _(e, t), 13231 }; 13232 if ("function" == typeof e.getFloor && !f.disableFloors) { 13233 let t; 13234 try { 13235 t = e.getFloor({ 13236 currency: "USD", 13237 mediaType: "banner", 13238 size: "*", 13239 }); 13240 } catch (e) { 13241 (0, c.vV)("Rubicon: getFloor threw an error: ", e); 13242 } 13243 s.rp_hard_floor = 13244 (0, l.Qd)(t) && 13245 "USD" === t.currency && 13246 !isNaN(parseInt(t.floor)) 13247 ? t.floor 13248 : void 0; 13249 } 13250 !0 === r.bidonmultiformat && 13251 (0, p.A)(e, "mediaTypes") && 13252 Object.keys(e.mediaTypes).length > 1 && 13253 (s.p_formats = Object.keys(e.mediaTypes).join(",")); 13254 const a = 13255 { 1: "atf", 3: "btf" }[ 13256 (0, p.A)(e, "mediaTypes.banner.pos") 13257 ] || ""; 13258 s.p_pos = 13259 "atf" === r.position || "btf" === r.position ? r.position : a; 13260 const u = d.$.getConfig("user.id"); 13261 (u && (s.ppuid = u), 13262 "number" == typeof e?.ortb2?.site?.mobile && 13263 (s["p_site.mobile"] = e.ortb2.site.mobile), 13264 e?.ortb2?.user?.ext?.eids && 13265 e.ortb2.user.ext.eids.forEach( 13266 ({ 13267 source: e, 13268 uids: t = [], 13269 inserter: r, 13270 matcher: i, 13271 mm: n, 13272 ext: o = {}, 13273 }) => { 13274 try { 13275 const o = t[0]; 13276 if (!o) return; 13277 const a = (e) => 13278 [ 13279 e.id, 13280 e.atype || "", 13281 "", 13282 r || "", 13283 i || "", 13284 n || "", 13285 e?.ext?.rtiPartner || e?.ext?.rtipartner || "", 13286 ].join("^"), 13287 d = a(o); 13288 if (((s[`eid_${e}`] = d), !s.ppuid)) { 13289 const e = t.find((e) => "ppuid" === e.ext?.stype); 13290 e?.id && (s.ppuid = e.id); 13291 } 13292 } catch (r) { 13293 (0, c.JE)( 13294 "Rubicon: error reading eid:", 13295 { source: e, uids: t }, 13296 r, 13297 ); 13298 } 13299 }, 13300 ), 13301 t.gdprConsent && 13302 ("boolean" == typeof t.gdprConsent.gdprApplies && 13303 (s.gdpr = Number(t.gdprConsent.gdprApplies)), 13304 (s.gdpr_consent = t.gdprConsent.consentString)), 13305 t.uspConsent && 13306 (s.us_privacy = encodeURIComponent(t.uspConsent)), 13307 t.gppConsent?.gppString && 13308 ((s.gpp = t.gppConsent.gppString), 13309 (s.gpp_sid = t.gppConsent?.applicableSections?.toString())), 13310 (s.rp_maxbids = t.bidLimit), 13311 (function (e, t, r) { 13312 const i = { 13313 user: { ext: { data: { ...e.params.visitor } } }, 13314 site: { ext: { data: { ...e.params.inventory } } }, 13315 }; 13316 e.params.keywords && 13317 (i.site.keywords = (0, l.cy)(e.params.keywords) 13318 ? e.params.keywords.join(",") 13319 : e.params.keywords); 13320 const n = (0, c.D9)({}, e.ortb2 || {}, i), 13321 o = (0, p.A)(e.ortb2Imp, "ext") || {}, 13322 s = (0, p.A)(e.ortb2Imp, "ext.data") || {}, 13323 a = (0, p.A)(e, "ortb2Imp.ext.gpid"), 13324 d = (0, p.A)(n, "regs.ext.dsa"), 13325 u = { user: [4], site: [1, 2, 5, 6, 7] }, 13326 m = { 13327 user: "tg_v.", 13328 site: "tg_i.", 13329 adserver: "tg_i.dfp_ad_unit_code", 13330 pbadslot: "tg_i.pbadslot", 13331 keywords: "kw", 13332 }, 13333 b = function (e, t, r) { 13334 return "data" === t && Array.isArray(e) 13335 ? e 13336 .filter( 13337 (e) => 13338 e.segment && 13339 (0, p.A)(e, "ext.segtax") && 13340 u[r] && 13341 -1 !== 13342 u[r].indexOf((0, p.A)(e, "ext.segtax")), 13343 ) 13344 .map((e) => { 13345 const t = e.segment 13346 .filter((e) => e.id) 13347 .reduce((e, t) => (e.push(t.id), e), []); 13348 return t.length > 0 ? t.toString() : ""; 13349 }) 13350 .toString() 13351 : ("object" != typeof e || Array.isArray(e)) && 13352 void 0 !== e 13353 ? Array.isArray(e) 13354 ? e 13355 .filter( 13356 (e) => 13357 ("object" != typeof e && void 0 !== e) || 13358 ((0, c.JE)( 13359 "Rubicon: Filtered value: ", 13360 e, 13361 "for key", 13362 t, 13363 ": Expected value to be string, integer, or an array of str
13363ings/ints", 13364 ), 13365 !1), 13366 ) 13367 .map((e) => e.toString()) 13368 .toString() 13369 : e.toString() 13370 : void 0; 13371 }, 13372 x = function (e, t, i, n = !0) { 13373 const o = b(e, i, t), 13374 s = 13375 m[i] && n 13376 ? `${m[i]}` 13377 : "data" === i 13378 ? `${m[t]}iab` 13379 : `${m[t]}${i}`; 13380 r[s] = r[s] ? r[s].concat(",", o) : o; 13381 }; 13382 if ("banner" === t) { 13383 (["site", "user"].forEach((e) => { 13384 Object.keys(n[e]).forEach((t) => { 13385 "site" === e && "content" === t && n[e][t].data 13386 ? x(n[e][t].data, e, "data") 13387 : "ext" !== t 13388 ? x(n[e][t], e, t) 13389 : n[e][t].data && 13390 Object.keys(n[e].ext.data).forEach((t) => { 13391 x(n[e].ext.data[t], e, t, !1); 13392 }); 13393 }); 13394 }), 13395 Object.keys(s).forEach((e) => { 13396 "adserver" !== e 13397 ? x(s[e], "site", e) 13398 : "gam" === s[e].name && x(s[e].adslot, name, e); 13399 }), 13400 a && (r.p_gpid = a), 13401 d && 13402 Object.keys(d).length && 13403 (0, c.Up)(d, [ 13404 "dsainfo", 13405 (e) => { 13406 r.dsainfo = e; 13407 }, 13408 "dsarequired", 13409 (e) => { 13410 r.dsarequired = e; 13411 }, 13412 "pubrender", 13413 (e) => { 13414 r.dsapubrender = e; 13415 }, 13416 "datatopub", 13417 (e) => { 13418 r.dsadatatopubs = e; 13419 }, 13420 "transparency", 13421 (e) => { 13422 Array.isArray(e) && 13423 e.length && 13424 (r.dsatransparency = e.reduce((e, t) => { 13425 const r = t.domain || ""; 13426 if (!r) return e; 13427 const i = t.dsaparams || t.params; 13428 return Array.isArray(i) && 0 !== i.length 13429 ? (e && (e += "~~"), 13430 (e += `${r}~${i.join("_")}`)) 13431 : e; 13432 }, "")); 13433 }, 13434 ]), 13435 r["tg_i.pbadslot"] && 13436 delete r["tg_i.dfp_ad_unit_code"]); 13437 const e = (0, p.A)(n, "device.sua"); 13438 e && 13439 !1 !== f.chEnabled && 13440 (0, c.Up)(e, [ 13441 "architecture", 13442 (e) => { 13443 r.m_ch_arch = e; 13444 }, 13445 "bitness", 13446 (e) => { 13447 r.m_ch_bitness = e; 13448 }, 13449 "browsers", 13450 (e) => { 13451 if (!Array.isArray(e)) return; 13452 const [t, i] = e.reduce( 13453 (e, t) => ( 13454 e[0].push( 13455 `"${t?.brand}"|v="${t?.version?.[0]}"`, 13456 ), 13457 t?.version?.length > 1 && 13458 e[1].push( 13459 `"${t?.brand}"|v="${t?.version?.join?.(".")}"`, 13460 ), 13461 e 13462 ), 13463 [[], []], 13464 ); 13465 ((r.m_ch_ua = t?.join?.(",")), 13466 (r.m_ch_full_ver = i?.join?.(","))); 13467 }, 13468 "mobile", 13469 (e) => { 13470 r.m_ch_mobile = `?${e}`; 13471 }, 13472 "model", 13473 (e) => { 13474 r.m_ch_model = e; 13475 }, 13476 "platform", 13477 (e) => { 13478 ((r.m_ch_platform = e?.brand), 13479 (r.m_ch_platform_ver = e?.version?.join?.("."))); 13480 }, 13481 ]); 13482 } else 13483 (Object.keys(o).length && (0, c.D9)(r.imp[0].ext, o), 13484 a && (r.imp[0].ext.gpid = a), 13485 (0, c.D9)(r, n)); 13486 })(e, "banner", s), 13487 !0 === d.$.getConfig("coppa") && (s.coppa = 1)); 13488 const m = e?.ortb2?.source?.ext?.schain; 13489 return ( 13490 m && O(m) && (s.rp_schain = h.serializeSupplyChain(m)), 13491 s 13492 ); 13493 }, 13494 serializeSupplyChain: function (e) { 13495 if (!O(e)) return ""; 13496 const { ver: t, complete: r, nodes: i } = e; 13497 return `${t},${r}!${h.serializeSupplyChainNodes(i)}`; 13498 }, 13499 serializeSupplyChainNodes: function (e) { 13500 const t = ["asi", "sid", "hp", "rid", "name", "domain"]; 13501 return e 13502 .map((e) => 13503 t.map((t) => encodeURIComponent(e[t] || "")).join(","), 13504 ) 13505 .join("!"); 13506 }, 13507 interpretResponse: function (e, t) { 13508 e = e.body; 13509 const { data: r } = t; 13510 if (!e || "object" != typeof e) return []; 13511 if (e.seatbid) { 13512 const t = (0, p.A)(e, "ext.errors.rubicon"); 13513 Array.isArray(t) && 13514 t.length > 0 && 13515 (0, c.JE)("Rubicon: Error in video response"); 13516 return v.fromORTB({ request: r, response: e }).bids; 13517 } 13518 let i, 13519 n = e.ads, 13520 o = 0; 13521 const { bidRequest: s } = t; 13522 if ( 13523 ("object" == typeof s && 13524 !Array.isArray(s) && 13525 k(s).includes("video") && 13526 "object" == typeof n && 13527 (n = n[s.adUnitCode]), 13528 !Array.isArray(n) || n.length < 1) 13529 ) 13530 return []; 13531 return n 13532 .reduce((t, r, n) => { 13533 if (
13534 (r.impression_id && i === r.impression_id 13535 ? o++ 13536 : (i = r.impression_id), 13537 "ok" !== r.status) 13538 ) 13539 return t; 13540 const a = Array.isArray(s) ? s[n - o] : s; 13541 if (a && "object" == typeof a) { 13542 const e = { 13543 requestId: a.bidId, 13544 currency: "USD", 13545 creativeId: 13546 r.creative_id || 13547 `${r.network || ""}-${r.advertiser || ""}`, 13548 cpm: r.cpm || 0, 13549 dealId: r.deal, 13550 ttl: 360, 13551 netRevenue: !1 !== f.netRevenue, 13552 rubicon: { 13553 advertiserId: r.advertiser, 13554 networkId: r.network, 13555 }, 13556 meta: { 13557 advertiserId: r.advertiser, 13558 networkId: r.network, 13559 mediaType: "banner", 13560 }, 13561 }; 13562 (r.creative_type && (e.mediaType = r.creative_type), 13563 r.dsa && 13564 Object.keys(r.dsa).length && 13565 (e.meta.dsa = r.dsa), 13566 r.adomain && 13567 (e.meta.advertiserDomains = Array.isArray(r.adomain) 13568 ? r.adomain 13569 : [r.adomain]), 13570 r.emulated_format && 13571 (e.meta.mediaType = r.emulated_format), 13572 "video" === r.creative_type 13573 ? ((e.width = a.params.video.playerWidth), 13574 (e.height = a.params.video.playerHeight), 13575 (e.vastUrl = r.creative_depot_url), 13576 (e.impression_id = r.impression_id), 13577 (e.videoCacheKey = r.impression_id)) 13578 : ((e.ad = 13579 ((d = r.script), 13580 `<html>\n<head><script type='text/javascript'>inDapIF=true;<\/script></head>\n<body style='margin : 0; padding: 0;'>\n\x3c!-- Rubicon Project Ad Tag --\x3e\n<div data-rp-impression-id='${r.impression_id}'>\n<script type='text/javascript'>${d}<\/script>\n</div>\n</body>\n</html>`)), 13581 ([e.width, e.height] = g[r.size_id] 13582 .split("x") 13583 .map((e) => Number(e)))), 13584 r.bid_cat && 13585 r.bid_cat.length && 13586 ((e.meta.primaryCatId = r.bid_cat[0]), 13587 r.bid_cat.length > 1 && 13588 (e.meta.secondaryCatIds = r.bid_cat.slice(1))), 13589 (e.rubiconTargeting = ( 13590 Array.isArray(r.targeting) ? r.targeting : [] 13591 ).reduce((e, t) => ((e[t.key] = t.values[0]), e), { 13592 rpfl_elemid: a.adUnitCode, 13593 })), 13594 t.push(e)); 13595 } else 13596 (0, c.vV)( 13597 `Rubicon: bidRequest undefined at index position:${n}`, 13598 s, 13599 e, 13600 ); 13601 var d; 13602 return t; 13603 }, []) 13604 .sort((e, t) => (t.cpm || 0) - (e.cpm || 0)); 13605 }, 13606 getUserSyncs: function (e, t, r, i, n) { 13607 if (e.iframeEnabled) { 13608 let e = (0, b.d)(r, i, n); 13609 return ( 13610 (e = Object.keys(e).length ? `?${(0, c.eP)(e)}` : ""), 13611 { 13612 type: "iframe", 13613 url: 13614 `https://${f.syncHost || "eus"}.rubiconproject.com/usync.html` + 13615 e, 13616 } 13617 ); 13618 } 13619 }, 13620 }; 13621 function _(e, t) { 13622 let r; 13623 return ( 13624 (r = e.params.referrer ? e.params.referrer : t.refererInfo.page), 13625 e.params.secure ? r.replace(/^http:/i, "https:") : r 13626 ); 13627 } 13628 function A(e, t) { 13629 const r = e.params; 13630 if ("video" === t) { 13631 let t = []; 13632 return ( 13633 r.video && r.video.playerWidth && r.video.playerHe
13633ight 13634 ? (t = [r.video.playerWidth, r.video.playerHeight]) 13635 : Array.isArray((0, p.A)(e, "mediaTypes.video.playerSize")) && 13636 1 === e.mediaTypes.video.playerSize.length 13637 ? (t = e.mediaTypes.video.playerSize[0]) 13638 : Array.isArray(e.sizes) && 13639 e.sizes.length > 0 && 13640 Array.isArray(e.sizes[0]) && 13641 e.sizes[0].length > 1 && 13642 (t = e.sizes[0]), 13643 t 13644 ); 13645 } 13646 let i = []; 13647 return ( 13648 Array.isArray(r.sizes) 13649 ? (i = r.sizes) 13650 : void 0 !== (0, p.A)(e, "mediaTypes.banner.sizes") 13651 ? (i = j(e.mediaTypes.banner.sizes)) 13652 : Array.isArray(e.sizes) && e.sizes.length > 0 13653 ? (i = j(e.sizes)) 13654 : (0, c.JE)("Rubicon: no sizes are setup or found"), 13655 (function (e) { 13656 const t = [15, 2, 9]; 13657 return e.sort((e, r) => { 13658 const i = t.indexOf(e), 13659 n = t.indexOf(r); 13660 return i > -1 || n > -1 13661 ? -1 === i 13662 ? 1 13663 : -1 === n 13664 ? -1 13665 : i - n 13666 : e - r; 13667 }); 13668 })(i) 13669 ); 13670 } 13671 function j(e) { 13672 return (0, c.kK)(e).reduce((e, t) => { 13673 const r = parseInt(g[t], 10); 13674 return (r && e.push(r), e); 13675 }, []); 13676 } 13677 function k(e, t = !1) { 13678 const r = []; 13679 if ( 13680 (function (e) { 13681 let t = void 0 !== (0, p.A)(e, "mediaTypes.video"); 13682 const r = void 0 !== (0, p.A)(e, "mediaTypes.banner"), 13683 i = void 0 !== (0, p.A)(e, "params.bidonmultiformat"), 13684 n = "object" != typeof (0, p.A)(e, "params.video"); 13685 return ( 13686 !(!t || !i) || 13687 (r && n && (t = !1), 13688 t && n && (0, u.J)(e, "params.video", {}), 13689 t) 13690 ); 13691 })(e) 13692 ) { 13693 if ( 13694 -1 === 13695 ["outstream", "instream"].indexOf( 13696 (0, p.A)(e, "mediaTypes.video.context"), 13697 ) 13698 ) 13699 return ( 13700 t && 13701 (0, c.vV)( 13702 "Rubicon: mediaTypes.video.context must be outstream or instream", 13703 ), 13704 r 13705 ); 13706 if (A(e, "video").length < 2) 13707 return ( 13708 t && 13709 (0, c.vV)( 13710 "Rubicon: could not determine the playerSize of the video", 13711 ), 13712 r 13713 ); 13714 (t && 13715 (0, c.OG)( 13716 "Rubicon: making video request for adUnit", 13717 e.adUnitCode, 13718 ), 13719 r.push("video")); 13720 } 13721 if ( 13722 (void 0 !== (0, p.A)(e, "mediaTypes.native") && r.push("native"), 13723 void 0 !== (0, p.A)(e, "mediaTypes.banner")) 13724 ) { 13725 if (0 === A(e, "banner").length) 13726 return ( 13727 t && 13728 (0, c.vV)( 13729 "Rubicon: could not determine the sizes for banner request", 13730 ), 13731 r 13732 ); 13733 (t && 13734 (0, c.OG)( 13735 "Rubicon: making banner request for adUnit", 13736 e.adUnitCode, 13737 ), 13738 r.push("banner")); 13739 } 13740 return r; 13741 } 13742 const $ = () => { 13743 y = {}; 13744 }; 13745 function O(e) { 13746 let t = !1; 13747 const r = ["asi", "sid", "hp"]; 13748 return e.nodes 13749 ? ((t = e.nodes.reduce( 13750 (e, t) => (e ? r.every((e) => t.hasOwnProperty(e)) : e), 13751 !0, 13752 )), 13753 t || (0, c.vV)("Rubicon: required schain params missing"), 13754 t) 13755 : t; 13756 } 13757 function R(e, t) { 13758 return "rp_schain" === e 13759 ? `rp_schain=${t}` 13760 : `${e}=${encodeURIComponent(t)}`; 13761 } 13762 ((0, a.a$)(h), 13763 (0, n.E)("rubiconBidAdapter"), 13764 Object.assign(i.W1, { 13765 52: { 13766 purposes: [1, 3, 4], 13767 legIntPurposes: [2, 7, 10], 13768 flexiblePurposes: [2, 7, 10], 13769 specialFeatures: [1, 2], 13770 }, 13771 })); 13772 }, 13773 }, 13774 (e) => { 13775 e.O(0, [802, 769, 590, 85, 498, 618, 550, 965, 247], () => { 13776 return ((t = 2069), e((e.s = t))); 13777 var t; 13778 }); 13779 e.O(); 13780 }, 13781 ]); 13782 })(), 13783 pbjs.processQueue());
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.