prebid.js 9.4.1 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/.eslintrc.js +31 -5
  2. package/.github/workflows/jscpd.yml +2 -2
  3. package/.github/workflows/linter.yml +107 -0
  4. package/creative/crossDomain.js +6 -3
  5. package/dist/33acrossAnalyticsAdapter.js +1 -1
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/33acrossIdSystem.js +1 -1
  8. package/dist/BTBidAdapter.js +1 -1
  9. package/dist/adagioAnalyticsAdapter.js +1 -1
  10. package/dist/adagioBidAdapter.js +1 -1
  11. package/dist/adagioRtdProvider.js +1 -1
  12. package/dist/adagioUtils.js +1 -1
  13. package/dist/addefendBidAdapter.js +1 -1
  14. package/dist/adgenerationBidAdapter.js +1 -1
  15. package/dist/adkernelAdnBidAdapter.js +1 -1
  16. package/dist/adkernelBidAdapter.js +1 -1
  17. package/dist/adkernelUtils.js +1 -0
  18. package/dist/adlooxRtdProvider.js +1 -1
  19. package/dist/admixerBidAdapter.js +1 -1
  20. package/dist/adqueryBidAdapter.js +1 -1
  21. package/dist/adrelevantisBidAdapter.js +1 -1
  22. package/dist/adstirBidAdapter.js +1 -1
  23. package/dist/adtrgtmeBidAdapter.js +1 -1
  24. package/dist/advRedAnalyticsAdapter.js +1 -0
  25. package/dist/adxcgAnalyticsAdapter.js +1 -1
  26. package/dist/adxcgBidAdapter.js +1 -1
  27. package/dist/adyoulikeBidAdapter.js +1 -1
  28. package/dist/agmaAnalyticsAdapter.js +1 -1
  29. package/dist/aidemBidAdapter.js +1 -1
  30. package/dist/ajaBidAdapter.js +1 -1
  31. package/dist/akamaiDapRtdProvider.js +1 -1
  32. package/dist/amxBidAdapter.js +1 -1
  33. package/dist/amxIdSystem.js +1 -1
  34. package/dist/anonymisedRtdProvider.js +1 -1
  35. package/dist/apacdexBidAdapter.js +1 -1
  36. package/dist/appierAnalyticsAdapter.js +1 -1
  37. package/dist/appnexusBidAdapter.js +1 -1
  38. package/dist/asoBidAdapter.js +1 -1
  39. package/dist/axonixBidAdapter.js +1 -1
  40. package/dist/azerionedgeRtdProvider.js +1 -1
  41. package/dist/bidglassBidAdapter.js +1 -1
  42. package/dist/big-richmediaBidAdapter.js +1 -1
  43. package/dist/bridBidAdapter.js +1 -1
  44. package/dist/bridgewellBidAdapter.js +1 -1
  45. package/dist/brightMountainMediaBidAdapter.js +1 -1
  46. package/dist/carodaBidAdapter.js +1 -1
  47. package/dist/chtnwBidAdapter.js +1 -1
  48. package/dist/chunk-core.js +1 -1
  49. package/dist/concertBidAdapter.js +1 -1
  50. package/dist/connatixBidAdapter.js +1 -1
  51. package/dist/connectIdSystem.js +1 -1
  52. package/dist/connectadBidAdapter.js +1 -1
  53. package/dist/consumableBidAdapter.js +1 -1
  54. package/dist/contxtfulRtdProvider.js +1 -1
  55. package/dist/conversantAnalyticsAdapter.js +1 -1
  56. package/dist/conversantBidAdapter.js +1 -1
  57. package/dist/craftBidAdapter.js +1 -1
  58. package/dist/criteoBidAdapter.js +1 -1
  59. package/dist/currencyUtils.js +1 -1
  60. package/dist/cwireBidAdapter.js +1 -1
  61. package/dist/dailymotionBidAdapter.js +1 -1
  62. package/dist/debugging-standalone.js +1 -1
  63. package/dist/dependencies.json +69 -8
  64. package/dist/dfpAdServerVideo.js +1 -1
  65. package/dist/dfpAdpod.js +1 -1
  66. package/dist/dfpUtils.js +1 -1
  67. package/dist/discoveryBidAdapter.js +1 -1
  68. package/dist/dspxBidAdapter.js +1 -1
  69. package/dist/dxkultureBidAdapter.js +1 -1
  70. package/dist/eightPodAnalyticsAdapter.js +1 -1
  71. package/dist/eightPodBidAdapter.js +1 -1
  72. package/dist/eplanningBidAdapter.js +1 -1
  73. package/dist/euidIdSystem.js +1 -1
  74. package/dist/exadsBidAdapter.js +1 -1
  75. package/dist/feedadBidAdapter.js +1 -1
  76. package/dist/finativeBidAdapter.js +1 -1
  77. package/dist/fintezaAnalyticsAdapter.js +1 -1
  78. package/dist/fpdUtils.js +1 -0
  79. package/dist/freewheel-sspBidAdapter.js +1 -1
  80. package/dist/gmosspBidAdapter.js +1 -1
  81. package/dist/goldbachBidAdapter.js +1 -1
  82. package/dist/gptPreAuction.js +1 -1
  83. package/dist/gptUtils.js +1 -1
  84. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  85. package/dist/greenbidsRtdProvider.js +1 -1
  86. package/dist/gridBidAdapter.js +1 -1
  87. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  88. package/dist/growthCodeRtdProvider.js +1 -1
  89. package/dist/gumgumBidAdapter.js +1 -1
  90. package/dist/h12mediaBidAdapter.js +1 -1
  91. package/dist/hypelabBidAdapter.js +1 -1
  92. package/dist/id5AnalyticsAdapter.js +1 -1
  93. package/dist/id5IdSystem.js +1 -1
  94. package/dist/imdsBidAdapter.js +1 -1
  95. package/dist/improvedigitalBidAdapter.js +1 -1
  96. package/dist/insticatorBidAdapter.js +1 -1
  97. package/dist/intentIqAnalyticsAdapter.js +1 -0
  98. package/dist/ixBidAdapter.js +1 -1
  99. package/dist/jixieBidAdapter.js +1 -1
  100. package/dist/justpremiumBidAdapter.js +1 -1
  101. package/dist/jwplayerBidAdapter.js +1 -1
  102. package/dist/jwplayerRtdProvider.js +1 -1
  103. package/dist/kargoBidAdapter.js +1 -1
  104. package/dist/kimberliteBidAdapter.js +1 -1
  105. package/dist/konduitAnalyticsAdapter.js +1 -1
  106. package/dist/kueezBidAdapter.js +1 -1
  107. package/dist/lassoBidAdapter.js +1 -1
  108. package/dist/lifestreetBidAdapter.js +1 -1
  109. package/dist/liveIntentIdSystem.js +1 -1
  110. package/dist/logicadBidAdapter.js +1 -1
  111. package/dist/loglyliftBidAdapter.js +1 -1
  112. package/dist/luceadBidAdapter.js +1 -1
  113. package/dist/mabidderBidAdapter.js +1 -1
  114. package/dist/magniteAnalyticsAdapter.js +1 -1
  115. package/dist/malltvAnalyticsAdapter.js +1 -1
  116. package/dist/marsmediaBidAdapter.js +1 -1
  117. package/dist/mediafuseBidAdapter.js +1 -1
  118. package/dist/mediagoBidAdapter.js +1 -1
  119. package/dist/medianetAnalyticsAdapter.js +1 -1
  120. package/dist/medianetBidAdapter.js +1 -1
  121. package/dist/mediasquareBidAdapter.js +1 -1
  122. package/dist/mgidBidAdapter.js +1 -1
  123. package/dist/minutemediaBidAdapter.js +1 -1
  124. package/dist/missenaBidAdapter.js +1 -1
  125. package/dist/mobianRtdProvider.js +1 -1
  126. package/dist/nextMillenniumBidAdapter.js +1 -1
  127. package/dist/nexx360BidAdapter.js +1 -1
  128. package/dist/nobidAnalyticsAdapter.js +1 -1
  129. package/dist/nobidBidAdapter.js +1 -1
  130. package/dist/not-for-prod/prebid.js +208 -199
  131. package/dist/oguryBidAdapter.js +1 -1
  132. package/dist/onetagBidAdapter.js +1 -1
  133. package/dist/ooloAnalyticsAdapter.js +1 -1
  134. package/dist/openwebBidAdapter.js +1 -1
  135. package/dist/openxBidAdapter.js +1 -1
  136. package/dist/optidigitalBidAdapter.js +1 -1
  137. package/dist/optoutBidAdapter.js +1 -1
  138. package/dist/orbidderBidAdapter.js +1 -1
  139. package/dist/outbrainBidAdapter.js +1 -1
  140. package/dist/paapi.js +1 -1
  141. package/dist/permutiveRtdProvider.js +1 -1
  142. package/dist/pixfutureBidAdapter.js +1 -1
  143. package/dist/playdigoBidAdapter.js +1 -1
  144. package/dist/prebidServerBidAdapter.js +1 -1
  145. package/dist/programmaticaBidAdapter.js +1 -1
  146. package/dist/publinkIdSystem.js +1 -1
  147. package/dist/publirBidAdapter.js +1 -1
  148. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  149. package/dist/pubmaticBidAdapter.js +1 -1
  150. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  151. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  152. package/dist/pxyzBidAdapter.js +1 -1
  153. package/dist/quantcastBidAdapter.js +1 -1
  154. package/dist/readpeakBidAdapter.js +1 -1
  155. package/dist/relaidoBidAdapter.js +1 -1
  156. package/dist/relevatehealthBidAdapter.js +1 -1
  157. package/dist/retailspotBidAdapter.js +1 -1
  158. package/dist/rhythmoneBidAdapter.js +1 -1
  159. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  160. package/dist/riseBidAdapter.js +1 -1
  161. package/dist/riseUtils.js +1 -0
  162. package/dist/rubiconBidAdapter.js +1 -1
  163. package/dist/schainSerializer.js +1 -0
  164. package/dist/seedingAllianceBidAdapter.js +1 -1
  165. package/dist/seedtagBidAdapter.js +1 -1
  166. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  167. package/dist/sharethroughBidAdapter.js +1 -1
  168. package/dist/shinezBidAdapter.js +1 -1
  169. package/dist/sizeMapping.js +1 -1
  170. package/dist/sizeUtils.js +1 -1
  171. package/dist/smaatoBidAdapter.js +1 -1
  172. package/dist/smartadserverBidAdapter.js +1 -1
  173. package/dist/smarthubBidAdapter.js +1 -1
  174. package/dist/smartxBidAdapter.js +1 -1
  175. package/dist/smilewantedBidAdapter.js +1 -1
  176. package/dist/snigelBidAdapter.js +1 -1
  177. package/dist/sonobiBidAdapter.js +1 -1
  178. package/dist/sovrnBidAdapter.js +1 -1
  179. package/dist/sspBCBidAdapter.js +1 -1
  180. package/dist/stnBidAdapter.js +1 -1
  181. package/dist/stvBidAdapter.js +1 -1
  182. package/dist/sublimeBidAdapter.js +1 -1
  183. package/dist/symitriDapRtdProvider.js +1 -0
  184. package/dist/taboolaBidAdapter.js +1 -1
  185. package/dist/tappxBidAdapter.js +1 -1
  186. package/dist/targetVideoBidAdapter.js +1 -1
  187. package/dist/targetVideoUtils.js +1 -0
  188. package/dist/teadsBidAdapter.js +1 -1
  189. package/dist/telariaBidAdapter.js +1 -1
  190. package/dist/teqblazeUtils.js +1 -1
  191. package/dist/terceptAnalyticsAdapter.js +1 -1
  192. package/dist/themoneytizerBidAdapter.js +1 -1
  193. package/dist/trionBidAdapter.js +1 -1
  194. package/dist/tripleliftBidAdapter.js +1 -1
  195. package/dist/ttdBidAdapter.js +1 -1
  196. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  197. package/dist/uid2IdSystem.js +1 -1
  198. package/dist/uid2IdSystem_shared.js +1 -1
  199. package/dist/underdogmediaBidAdapter.js +1 -1
  200. package/dist/undertoneBidAdapter.js +1 -1
  201. package/dist/unrulyBidAdapter.js +1 -1
  202. package/dist/userAgentUtils.js +1 -0
  203. package/dist/utiqIdSystem.js +1 -1
  204. package/dist/vidazooUtils.js +1 -1
  205. package/dist/videobyteBidAdapter.js +1 -1
  206. package/dist/visxBidAdapter.js +1 -1
  207. package/dist/vuukleBidAdapter.js +1 -1
  208. package/dist/widespaceBidAdapter.js +1 -1
  209. package/dist/winrBidAdapter.js +1 -1
  210. package/dist/yahooAdsBidAdapter.js +1 -1
  211. package/dist/yandexIdSystem.js +1 -1
  212. package/dist/yieldmoBidAdapter.js +1 -1
  213. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  214. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  215. package/libraries/adkernelUtils/adkernelUtils.js +11 -0
  216. package/libraries/currencyUtils/floor.js +23 -0
  217. package/libraries/dfpUtils/dfpUtils.js +7 -0
  218. package/libraries/fpdUtils/deviceInfo.js +58 -0
  219. package/libraries/fpdUtils/pageInfo.js +73 -0
  220. package/libraries/gptUtils/gptUtils.js +23 -1
  221. package/libraries/riseUtils/index.js +330 -0
  222. package/libraries/schainSerializer/schainSerializer.js +24 -0
  223. package/libraries/sizeUtils/tranformSize.js +43 -0
  224. package/libraries/targetVideoUtils/bidderUtils.js +178 -0
  225. package/libraries/targetVideoUtils/constants.js +23 -0
  226. package/libraries/teqblazeUtils/bidderUtils.js +15 -11
  227. package/libraries/userAgentUtils/index.js +58 -0
  228. package/libraries/userAgentUtils/userAgentTypes.enums.js +22 -0
  229. package/modules/.submodules.json +1 -0
  230. package/modules/33acrossAnalyticsAdapter.js +2 -0
  231. package/modules/adagioAnalyticsAdapter.js +101 -84
  232. package/modules/adagioAnalyticsAdapter.md +4 -0
  233. package/modules/adagioBidAdapter.js +5 -17
  234. package/modules/adagioRtdProvider.js +18 -4
  235. package/modules/adkernelAdnBidAdapter.js +1 -12
  236. package/modules/adkernelBidAdapter.js +4 -13
  237. package/modules/adlooxAnalyticsAdapter.js +1 -0
  238. package/modules/admixerBidAdapter.js +10 -6
  239. package/modules/admixerBidAdapter.md +7 -10
  240. package/modules/adtrgtmeBidAdapter.js +1 -1
  241. package/modules/advRedAnalyticsAdapter.js +198 -0
  242. package/modules/advRedAnalyticsAdapter.md +30 -0
  243. package/modules/aidemBidAdapter.js +2 -0
  244. package/modules/akamaiDapRtdProvider.js +19 -798
  245. package/modules/anonymisedRtdProvider.js +5 -1
  246. package/modules/anonymisedRtdProvider.md +1 -1
  247. package/modules/apacdexBidAdapter.js +1 -1
  248. package/modules/appnexusBidAdapter.js +56 -2
  249. package/modules/automatadAnalyticsAdapter.js +2 -0
  250. package/modules/azerionedgeRtdProvider.js +13 -3
  251. package/modules/azerionedgeRtdProvider.md +0 -17
  252. package/modules/bridBidAdapter.js +47 -47
  253. package/modules/cleanioRtdProvider.js +1 -0
  254. package/modules/concertBidAdapter.js +1 -1
  255. package/modules/connatixBidAdapter.js +36 -8
  256. package/modules/connectIdSystem.js +6 -2
  257. package/modules/contxtfulRtdProvider.js +20 -2
  258. package/modules/contxtfulRtdProvider.md +1 -0
  259. package/modules/craftBidAdapter.js +1 -1
  260. package/modules/criteoBidAdapter.js +1 -1
  261. package/modules/cwireBidAdapter.js +5 -1
  262. package/modules/dailymotionBidAdapter.js +85 -65
  263. package/modules/debugging/debugging.js +3 -0
  264. package/modules/dfpAdServerVideo.js +15 -33
  265. package/modules/dfpAdpod.js +2 -6
  266. package/modules/dgkeywordRtdProvider.js +2 -0
  267. package/modules/discoveryBidAdapter.js +26 -210
  268. package/modules/dspxBidAdapter.js +176 -54
  269. package/modules/eightPodAnalyticsAdapter.js +28 -34
  270. package/modules/eightPodBidAdapter.js +113 -57
  271. package/modules/fintezaAnalyticsAdapter.js +9 -4
  272. package/modules/goldbachBidAdapter.js +1 -1
  273. package/modules/gptPreAuction.js +63 -4
  274. package/modules/growthCodeAnalyticsAdapter.js +1 -1
  275. package/modules/growthCodeRtdProvider.js +1 -1
  276. package/modules/gumgumBidAdapter.js +14 -10
  277. package/modules/improvedigitalBidAdapter.js +1 -1
  278. package/modules/insticatorBidAdapter.js +35 -31
  279. package/modules/intentIqAnalyticsAdapter.js +234 -0
  280. package/modules/intentIqAnalyticsAdapter.md +27 -0
  281. package/modules/intentIqIdSystem.md +0 -0
  282. package/modules/jwplayerBidAdapter.js +1 -1
  283. package/modules/jwplayerRtdProvider.js +26 -6
  284. package/modules/jwplayerVideoProvider.js +6 -0
  285. package/modules/kargoBidAdapter.js +11 -14
  286. package/modules/kimberliteBidAdapter.js +24 -7
  287. package/modules/kimberliteBidAdapter.md +30 -1
  288. package/modules/mediafuseBidAdapter.js +1 -1
  289. package/modules/mediagoBidAdapter.js +7 -176
  290. package/modules/medianetBidAdapter.js +101 -40
  291. package/modules/mgidBidAdapter.js +3 -1
  292. package/modules/minutemediaBidAdapter.js +21 -398
  293. package/modules/mobianRtdProvider.js +16 -2
  294. package/modules/nextMillenniumBidAdapter.js +1 -27
  295. package/modules/nexx360BidAdapter.js +3 -2
  296. package/modules/nobidBidAdapter.js +1 -1
  297. package/modules/openwebBidAdapter.js +18 -396
  298. package/modules/optoutBidAdapter.js +1 -1
  299. package/modules/paapi.js +48 -35
  300. package/modules/permutiveRtdProvider.js +72 -22
  301. package/modules/playdigoBidAdapter.js +4 -2
  302. package/modules/prebidServerBidAdapter/index.js +4 -2
  303. package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
  304. package/modules/programmaticaBidAdapter.js +1 -1
  305. package/modules/publirBidAdapter.js +20 -273
  306. package/modules/pubmaticBidAdapter.js +12 -0
  307. package/modules/pubxaiAnalyticsAdapter.js +306 -164
  308. package/modules/relevatehealthBidAdapter.js +2 -1
  309. package/modules/resetdigitalBidAdapter.md +54 -45
  310. package/modules/richaudienceBidAdapter.js +1 -1
  311. package/modules/riseBidAdapter.js +19 -400
  312. package/modules/rtdModule/index.js +5 -3
  313. package/modules/shinezBidAdapter.js +17 -361
  314. package/modules/sirdataRtdProvider.js +2 -0
  315. package/modules/sizeMapping.js +2 -5
  316. package/modules/smaatoBidAdapter.js +18 -1
  317. package/modules/smarthubBidAdapter.js +45 -177
  318. package/modules/smilewantedBidAdapter.js +26 -22
  319. package/modules/snigelBidAdapter.js +1 -1
  320. package/modules/sonobiBidAdapter.js +5 -10
  321. package/modules/stnBidAdapter.js +22 -398
  322. package/modules/symitriDapRtdProvider.js +812 -0
  323. package/modules/symitriDapRtdProvider.md +49 -0
  324. package/modules/targetVideoBidAdapter.js +120 -152
  325. package/modules/targetVideoBidAdapter.md +20 -3
  326. package/modules/telariaBidAdapter.js +2 -32
  327. package/modules/uid2IdSystem_shared.js +51 -39
  328. package/modules/userId/eids.js +3 -0
  329. package/modules/utiqIdSystem.js +12 -10
  330. package/modules/validationFpdModule/index.js +22 -17
  331. package/modules/videojsVideoProvider.js +3 -0
  332. package/modules/visxBidAdapter.js +1 -1
  333. package/modules/winrBidAdapter.js +2 -27
  334. package/modules/yahooAdsBidAdapter.js +1 -1
  335. package/modules/yandexIdSystem.js +1 -1
  336. package/package.json +4 -4
  337. package/plugins/eslint/index.js +73 -45
  338. package/src/adloader.js +1 -0
  339. package/src/ajax.js +15 -0
  340. package/src/config.js +0 -4
  341. package/src/debugging.js +1 -0
  342. package/src/prebid.js +4 -0
  343. package/src/secureCreatives.js +1 -1
  344. package/src/storageManager.js +62 -73
  345. package/src/targeting.js +26 -20
  346. package/src/utils.js +9 -0
  347. package/test/pages/consent_mgt_gdpr.html +1 -1
  348. package/test/spec/ajax_spec.js +11 -0
  349. package/test/spec/creative/crossDomainCreative_spec.js +26 -9
  350. package/test/spec/fpd/gdpr_spec.js +1 -1
  351. package/test/spec/libraries/userAgentUtils_spec.js +109 -0
  352. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
  353. package/test/spec/modules/adagioBidAdapter_spec.js +32 -66
  354. package/test/spec/modules/adagioRtdProvider_spec.js +72 -0
  355. package/test/spec/modules/admixerBidAdapter_spec.js +21 -17
  356. package/test/spec/modules/advRedAnalyticsAdapter_spec.js +114 -0
  357. package/test/spec/modules/adxcgBidAdapter_spec.js +1 -1
  358. package/test/spec/modules/appnexusBidAdapter_spec.js +36 -0
  359. package/test/spec/modules/azerionedgeRtdProvider_spec.js +36 -21
  360. package/test/spec/modules/connatixBidAdapter_spec.js +55 -2
  361. package/test/spec/modules/connectIdSystem_spec.js +27 -28
  362. package/test/spec/modules/consentManagement_spec.js +1 -1
  363. package/test/spec/modules/contxtfulRtdProvider_spec.js +6 -0
  364. package/test/spec/modules/dailymotionBidAdapter_spec.js +497 -4
  365. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -6
  366. package/test/spec/modules/dspxBidAdapter_spec.js +188 -7
  367. package/test/spec/modules/eightPodAnalyticsAdapter_spec.js +22 -13
  368. package/test/spec/modules/gptPreAuction_spec.js +143 -1
  369. package/test/spec/modules/gumgumBidAdapter_spec.js +17 -0
  370. package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
  371. package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +172 -0
  372. package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
  373. package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
  374. package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
  375. package/test/spec/modules/mediagoBidAdapter_spec.js +34 -37
  376. package/test/spec/modules/medianetBidAdapter_spec.js +297 -16
  377. package/test/spec/modules/mgidBidAdapter_spec.js +15 -5
  378. package/test/spec/modules/mobianRtdProvider_spec.js +1 -3
  379. package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
  380. package/test/spec/modules/paapi_spec.js +177 -111
  381. package/test/spec/modules/permutiveRtdProvider_spec.js +42 -8
  382. package/test/spec/modules/prebidServerBidAdapter_spec.js +17 -3
  383. package/test/spec/modules/proxistoreBidAdapter_spec.js +1 -1
  384. package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
  385. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +970 -603
  386. package/test/spec/modules/pulsepointBidAdapter_spec.js +4 -4
  387. package/test/spec/modules/smaatoBidAdapter_spec.js +36 -1
  388. package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
  389. package/test/spec/modules/smilewantedBidAdapter_spec.js +57 -1
  390. package/test/spec/modules/symitriDapRtdProvider_spec.js +600 -0
  391. package/test/spec/modules/targetVideoBidAdapter_spec.js +112 -11
  392. package/test/spec/modules/yandexIdSystem_spec.js +6 -1
  393. package/test/spec/schainSerializer/schainSerializer_spec.js +138 -0
  394. package/test/spec/unit/core/storageManager_spec.js +68 -51
  395. package/test/spec/unit/pbjs_api_spec.js +11 -0
  396. package/test/spec/utils_spec.js +19 -0
  397. /package/src/utils/{gpdr.js → gdpr.js} +0 -0
@@ -0,0 +1 @@
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[19916],{10320:(e,t,a)=>{a.d(t,{wr:()=>p});var n=a(7873),r=a(68044),o=a(12938),i=a(16833),s=a(91069),d=a(41580),l=a(45569);function p(e,t,a){const n=e,p=t,c="async_dap_token",u="async_dap_membership",m="encrypted_dap_membership",g="dap_ss_id",f=3600,y="dap_client_entropy",E=(0,o.vM)({moduleType:l.zu,moduleName:n});let h=0;function D(e,t){var a,n;(0,s.logInfo)("DEBUG(addRealTimeData) - ENTER"),(0,s.isPlainObject)(t.ortb2)&&((0,s.logMessage)("DEBUG(addRealTimeData): merging original: ",e),(0,s.logMessage)("DEBUG(addRealTimeData): merging in: ",t.ortb2),a=e,n=t.ortb2,(0,s.isPlainObject)(a)||(a={}),(0,s.isPlainObject)(n)||(n={}),(0,s.mergeDeep)(a,n)),(0,s.logInfo)("DEBUG(addRealTimeData) - EXIT")}function b(e,t,a,n){let r=JSON.parse(E.getDataFromLocalStorage(y));new Promise(((e,t)=>{a&&a.params&&a.params.dapEntropyTimeout&&Number.isInteger(a.params.dapEntropyTimeout)&&setTimeout(t,a.params.dapEntropyTimeout,Error("DapEntropy script could not be loaded")),r&&r.expires_at>Math.round(Date.now()/1e3)?((0,s.logMessage)("Using cached entropy"),e()):"function"==typeof window.dapCalculateEntropy?window.dapCalculateEntropy(e,t):a&&a.params&&T.isValidHttpsUrl(a.params.dapEntropyUrl)?(0,d.R)(a.params.dapEntropyUrl,p,(()=>{T.dapGetEntropy(e,t)})):t(Error("Please check if dapEntropyUrl is specified and is valid under config.params"))})).catch((e=>{(0,s.logError)("Entropy could not be calculated due to: ",e.message)})).finally((()=>{_(e,t,a,n)}))}function _(e,t,a,n){(0,s.logInfo)("DEBUG(generateRealTimeData) - ENTER"),(0,s.logMessage)(" - apiHostname: "+a.params.apiHostname),(0,s.logMessage)(" - apiVersion: "+a.params.apiVersion),h=0;var r=null;if(a&&(0,s.isPlainObject)(a.params))if(504==a.params.segtax){let e=T.dapGetEncryptedMembershipFromLocalStorage();e&&(r=T.dapGetEncryptedRtdObj(e,a.params.segtax))}else{let e=T.dapGetMembershipFromLocalStorage();e&&(r=T.dapGetRtdObj(e,a.params.segtax))}r&&r.rtd&&(D(e.ortb2Fragments?.global,r.rtd),t(),(0,s.logInfo)("DEBUG(generateRealTimeData) - 1")),setTimeout(T.callDapAPIs,0,e,t,a,n)}const R={name:n,getBidRequestData:b,init:function(e,t){return!1!==T.checkConsent(t)}};(0,i.bz)("realTimeData",R);const T={callDapAPIs:function(e,t,a,n){if(a&&(0,s.isPlainObject)(a.params)){let n={api_hostname:a.params.apiHostname,api_version:a.params.apiVersion,domain:a.params.domain,segtax:a.params.segtax,identity:{type:a.params.identityType}},r=!0,o=T.dapGetTokenFromLocalStorage();const i=e.ortb2Fragments.global;(0,s.logMessage)("token is: ",o),null!==o&&(504==n.segtax?(T.dapRefreshEncryptedMembership(i,n,o,t),r=!1):(T.dapRefreshMembership(i,n,o,t),r=!1)),T.dapRefreshToken(i,n,r,t)}},dapGetEntropy:function(e,t){"function"==typeof window.dapCalculateEntropy?window.dapCalculateEntropy(e,t):t(Error("window.dapCalculateEntropy function is not defined"))},dapGetTokenFromLocalStorage:function(e){let t=Math.round(Date.now()/1e3),a=null,n=JSON.parse(E.getDataFromLocalStorage(c));return n&&t<n.expires_at&&(a=n.token),a},dapRefreshToken:function(e,t,n,r){T.dapLog("Token missing or expired, fetching a new one...");let o=Math.round(Date.now()/1e3),i={},d={...t};T.dapTokenize(d,t.identity,r,(function(r,s,d,l){i.expires_at=o+f;let p=T.dapExtractExpiryFromToken(r);"number"==typeof p&&(i.expires_at=p-10),i.token=r,E.setDataInLocalStorage(c,JSON.stringify(i)),T.dapLog("Successfully updated and stored token; expires at "+i.expires_at);let u=d.getResponseHeader(a+"-DAP-SS-ID");u&&E.setDataInLocalStorage(g,JSON.stringify(u));let m=d.getResponseHeader(a+"-DAP-100");null!=m&&(E.setDataInLocalStorage("dap_deviceId100",m),T.dapLog("Successfully stored DAP 100 Device ID: "+m)),n&&(504==t.segtax?T.dapRefreshEncryptedMembership(e,t,r,l):T.dapRefreshMembership(e,t,r,l))}),(function(e,t,a,n){(0,s.logError)("ERROR("+a+"): failed to retrieve token! "+t),n()}))},dapGetMembershipFromLocalStorage:function(){let e=Math.round(Date.now()/1e3),t=null,a=JSON.parse(E.getDataFromLocalStorage(u));return a&&e<a.expires_at&&(t={said:a.said,cohorts:a.cohorts,attributes:null}),t},dapRefreshMembership:function(e,t,a,n){let r=Math.round(Date.now()/1e3),o={},i={...t};T.dapMembership(i,a,n,(function(a,n,i,s){o.expires_at=r+f;let d=T.dapExtractExpiryFromToken(a.said);"number"==typeof d&&(o.expires_at=d-10),o.said=a.said,o.cohorts=a.cohorts,E.setDataInLocalStorage(u,JSON.stringify(o)),T.dapLog("Successfully updated and stored membership:"),T.dapLog(o);let l=T.dapGetRtdObj(o,t.segtax);T.checkAndAddRealtimeData(e,l,t.segtax),s()}),(function(a,n,r,o){(0,s.logError)("ERROR("+r+"): failed to retrieve membership! "+n),403==n&&h<1?(h++,T.dapRefreshToken(e,t,!0,o)):o()}))},dapGetEncryptedMembershipFromLocalStorage:function(){let e=Math.round(Date.now()/1e3),t=null,a=JSON.parse(E.getDataFromLocalStorage(m));return a&&e<a.expires_at&&(t={encryptedSegments:a.encryptedSegments}),t},dapRefreshEncryptedMembership:function(e,t,a,n){let r=Math.round(Date.now()/1e3),o={},i={...t};T.dapEncryptedMembership(i,a,n,(function(a,n,i,s){o.expires_at=r+f;let d=T.dapExtractExpiryFromToken(a);"number"==typeof d&&(o.expires_at=d-10),o.encryptedSegments=a,E.setDataInLocalStorage(m,JSON.stringify(o)),T.dapLog("Successfully updated and stored encrypted membership:"),T.dapLog(o);let l=T.dapGetEncryptedRtdObj(o,t.segtax);T.checkAndAddRealtimeData(e,l,t.segtax),s()}),(function(a,n,r,o){(0,s.logError)("ERROR("+r+"): failed to retrieve encrypted membership! "+n),403==n&&h<1?(h++,T.dapRefreshToken(e,t,!0,o)):o()}))},dapExtractExpiryFromToken:function(e){let t=null;if(e){const a=e.split("..");if(a&&a.length>0){let e=atob(a[0]);t=JSON.parse(e.replace(/&quot;/g,'"')).exp}}return t},dapGetRtdObj:function(e,t){let a={name:"dap.symitri.com",ext:{segtax:t},segment:[]};if(null!=e)for(const t of e.cohorts)a.segment.push({id:t});return{rtd:{ortb2:{user:{data:[a]},site:{ext:{data:{dapSAID:e.said}}}}}}},dapGetEncryptedRtdObj:function(e,t){let a={name:"dap.symitri.com",ext:{segtax:t},segment:[]};return null!=e&&a.segment.push({id:e.encryptedSegments}),{rtd:{ortb2:{user:{data:[a]}}}}},checkAndAddRealtimeData:function(e,t,a){t.rtd&&(504==a&&T.checkIfSegmentsAlreadyExist(e,t.rtd,504)?(0,s.logMessage)("DEBUG(handleInit): rtb Object already added"):D(e,t.rtd),(0,s.logInfo)("DEBUG(checkAndAddRealtimeData) - 1"))},checkIfSegmentsAlreadyExist:function(e,t,a){let n=!1;if(e.user&&e.user.data&&e.user.data.length>0)for(let t=0;t<e.user.data.length;t++){let r=e.user.data[t];if(r.ext&&r.ext.segtax==a){n=!0,(0,s.logMessage)("DEBUG(checkIfSegmentsAlreadyExist): rtb Object already added: ",e.user.data);break}}return n},dapLog:function(e){let t="";t+="display: inline-block;",t+="color: #fff;",t+="background: #F28B20;",t+="padding: 1px 4px;",t+="border-radius: 3px",(0,s.logInfo)("%cDAP Client","display: inline-block;color: #fff;background: #F28B20;padding: 1px 4px;border-radius: 3px",e)},isValidHttpsUrl:function(e){let t;try{t=new URL(e)}catch(e){return!1}return"https:"===t.protocol},checkConsent:function(e){let t=!0;if(e&&e.gdpr&&e.gdpr.gdprApplies){const a=e.gdpr,n=a&&"boolean"==typeof a.gdprApplies&&a.gdprApplies?1:0,r=n?a.consentString:"";!n||r&&""!==r||((0,s.logError)("symitriDapRtd submodule requires consent string to call API"),t=!1)}else if(e&&e.usp){const a=e.usp;t="N"!==a[1]&&"Y"!==a[2]}return t},dapValidationHelper:function(e,t,a,n){return null==n&&(n=function(e,t,a,n){}),null==e||void 0===e?(n(null,"Invalid config object","ClientError",t),[e,!0]):((!("api_version"in e)||"string"==typeof e.api_version&&0==e.api_version.length)&&(e.api_version="x1"),"string"!=typeof e.api_version?(n(null,"Invalid api_version: must be a string like 'x1', etc.","ClientError",t),[e,!0]):"api_hostname"in e&&"string"==typeof e.api_hostname&&0!=e.api_hostname.length?a&&"string"!=typeof a?(n(null,"Invalid token: must be a non-null string","ClientError",t),[e,!0]):[e,!1]:(n(null,"Invalid api_hostname: must be a non-empty string","ClientError",t),[e,!0]))},dapTokenize:function(e,t,n){let o,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if([e,o]=this.dapValidationHelper(e,n,null,s),o)return;if("string"!=typeof e.domain)return void s(null,"Invalid config.domain: must be a string","ClientError",n);if(e.domain.length<=0)return void s(null,"Invalid config.domain: must have non-zero length","ClientError",n);if(null==t||void 0===t)return void s(null,"Invalid identity object","ClientError",n);if(!("type"in t)||"string"!=typeof t.type||t.type.length<=0)return void s(null,"Identity must contain a valid 'type' field","ClientError",n);let d={type:t.type};void 0!==t.identity&&(d.identity=t.identity),void 0!==t.attributes&&(d.attributes=t.attributes);let l,p,c,u=JSON.parse(E.getDataFromLocalStorage(y));switch(u&&u.entropy&&(d.entropy=u.entropy),e.api_version){case"x1":case"x1-dev":l="POST",c="/data-activation/"+e.api_version+"/domain/"+e.domain+"/identity/tokenize",p=JSON.stringify(d);break;default:return void s(null,"Invalid api_version: "+e.api_version,"ClientError",n)}let m={"Content-Type":"application/json"},f=JSON.parse(E.getDataFromLocalStorage(g));f&&(m[a+"-DAP-SS-ID"]=f);let h="https://"+e.api_hostname+c,D={success:(t,r)=>{let o=null;switch(e.api_version){case"x1":case"x1-dev":o=r.getResponseHeader(a+"-DAP-Token")}i(o,r.status,r,n)},error:(e,t)=>{s(e,e.statusText,t,n)}};(0,r.RD)(h,D,p,{method:l,customHeaders:m})},dapMembership:function(e,t,a){let n,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if([e,n]=this.dapValidationHelper(e,a,t,i),n)return;if("string"!=typeof e.domain)return void i(null,"Invalid config.domain: must be a string","ClientError",a);let s="/data-activation/"+e.api_version+"/token/"+t+"/membership",d="https://"+e.api_hostname+s,l={success:(e,t)=>{o(JSON.parse(e),t.status,t,a)},error:(e,t)=>{i(t,t.status,e,a)}};(0,r.RD)(d,l,void 0,{method:"GET",customHeaders:{}})},dapEncryptedMembership:function(e,t,n){let o,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if([e,o]=this.dapValidationHelper(e,n,t,s),o)return;let d={success:(e,t)=>{let r=t.getResponseHeader(a+"-DAP-Token");i(r,t.status,t,n)},error:(e,t)=>{s(t,t.status,e,n)}},l="/data-activation/"+e.api_version+"/token/"+t+"/membership/encrypt",p="https://"+e.api_hostname+l;(0,r.RD)(p,d,void 0,{method:"GET",customHeaders:{"Content-Type":"application/json",Pragma:"akamai-x-get-extracted-values"}})}};return{addRealTimeData:D,getRealTimeData:b,generateRealTimeData:_,rtdSubmodule:R,storage:E,dapUtils:T,DAP_TOKEN:c,DAP_MEMBERSHIP:u,DAP_ENCRYPTED_MEMBERSHIP:m,DAP_SS_ID:g,DAP_DEFAULT_TOKEN_TTL:f,DAP_MAX_RETRY_TOKENIZE:1,DAP_CLIENT_ENTROPY:y}}const{addRealTimeData:c,getRealTimeData:u,generateRealTimeData:m,rtdSubmodule:g,storage:f,dapUtils:y,DAP_TOKEN:E,DAP_MEMBERSHIP:h,DAP_ENCRYPTED_MEMBERSHIP:D,DAP_SS_ID:b,DAP_DEFAULT_TOKEN_TTL:_,DAP_MAX_RETRY_TOKENIZE:R,DAP_CLIENT_ENTROPY:T}=p("symitriDap","symitridap","Symitri");(0,n.E)("symitriDapRtdProvider")}},e=>{e.O(0,[60802,51085],(()=>{return t=10320,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[99097],{45011:(e,r,t)=>{var o=t(7873),i=t(57377),n=t(71371),a=t(43272),s=t(91069),d=t(63172),u=t(70433),g=t(12938),p=t(68044),l=t(89766);const c="taboola",b="USD",f="user-id",m=`taboola global:${f}`,y="https://beacon.bidder.taboola.com",h={storageManager:(0,g.vM)({bidderCode:c}),getUserId:()=>{const{getFromLocalStorage:e,getFromCookie:r,getFromTRC:t}=h;try{return e()||r()||t()}catch(e){return 0}},getFromCookie(){const{cookiesAreEnabled:e,getCookie:r}=h.storageManager;if(e()){const e=r("trc_cookie_storage");let t;if(e&&(t=h.getCookieDataByKey(e,f)),t)return t;if(t=r("t_gid"),t)return t;if(t=r("t_pt_gid"),t)return t;const o=r("tbla_id");if(o)return o}},getCookieDataByKey(e,r){if(!e)return;const[,t=""]=e.split(`${r}=`);return t},getFromLocalStorage(){const{hasLocalStorage:e,localStorageIsEnabled:r,getDataFromLocalStorage:t}=h.storageManager;if(e()&&r())return t(m)},getFromTRC:()=>window.TRC?window.TRC.user_id:0},R={getPageUrl:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.page||(0,s.getWindowSelf)().location.href},getReferrer:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.ref||(0,s.getWindowSelf)().document.referrer}},S=(0,l.A)({context:{netRevenue:!0,mediaType:n.D4,ttl:300},imp(e,r,t){let o=e(r,t);return function(e,r){const{tagId:t,position:o}=e.params;if(r.banner=function(e,r){return{...C(e.sizes),pos:r}}(e,o),r.tagid=t,"function"==typeof e.getFloor){const t=e.getFloor({currency:b,size:"*"});"object"!=typeof t||t.currency!==b||isNaN(parseFloat(t.floor))||(r.bidfloor=parseFloat(t.floor),r.bidfloorcur=b)}else{const{bidfloor:t=null,bidfloorcur:o=b}=e.params;r.bidfloor=t,r.bidfloorcur=o}(0,d.J)(r,"ext.gpid",(0,u.A)(e,"ortb2Imp.ext.gpid"))}(r,o),o},request(e,r,t,o){const i=e(r,t,o);return function(e,r,t){const{refererInfo:o,gdprConsent:i={},uspConsent:n}=e,s=function(e,r,t){let{publisherId:o}=e;const{getPageUrl:i,getReferrer:n}=R;return{id:o,name:o,domain:t?.site?.domain||r?.domain||window.location?.host,page:t?.site?.page||i(r),ref:t?.site?.ref||n(r),publisher:{id:o},content:{language:navigator.language}}}(r.params,o,e.ortb2);(0,d.J)(t,"device.ua",navigator.userAgent);const u=h.getUserId(i,n);null==t.user&&(t.user={buyeruid:0,ext:{}});u&&0!==u&&(0,d.J)(t,"user.buyeruid",u);null==t.regs?.ext&&(t.regs={ext:{}});(0,d.J)(t,"regs.coppa",0),i.gdprApplies&&((0,d.J)(t,"user.ext.consent",e.gdprConsent.consentString),(0,d.J)(t,"regs.ext.gdpr",1));n&&(0,d.J)(t,"regs.ext.us_privacy",n);e.ortb2?.regs?.gpp&&((0,d.J)(t,"regs.ext.gpp",e.ortb2.regs.gpp),(0,d.J)(t,"regs.ext.gpp_sid",e.ortb2.regs.gpp_sid));a.$W.getConfig("coppa")&&(0,d.J)(t,"regs.coppa",1);const g=e.ortb2||{bcat:[],badv:[],wlang:[]};(0,d.J)(t,"source.fd",1),t.id=e.bidderRequestId,t.site=s,t.tmax=null==e.timeout?void 0:parseInt(e.timeout),t.bcat=g.bcat||r.params.bcat||[],t.badv=g.badv||r.params.badv||[],t.wlang=g.wlang||r.params.wlang||[],(0,d.J)(t,"ext.pageType",g?.ext?.data?.pageType||g?.ext?.data?.section||r.params.pageType),(0,d.J)(t,"ext.prebid.version","9.4.1")}(t,o.bidRequests[0],i),i},bidResponse(e,r,t){const o=e(r,t);return o.nurl=r.nurl,o.ad=(0,s.replaceAuctionPrice)(r.adm,r.price),r.ext&&r.ext.dchain&&(0,d.J)(o,"meta.dchain",r.ext.dchain),o}}),x={supportedMediaTypes:[n.D4],gvlid:42,code:c,isBidRequestValid:e=>!!(e.sizes&&e.params&&e.params.publisherId&&e.params.tagId),buildRequests:(e,r)=>{const[t]=e,o=S.toORTB({bidderRequest:r,bidRequests:e}),{publisherId:i}=t.params;return{url:"https://display.bidder.taboola.com/OpenRTB/TaboolaHB/auction?publisher="+i,method:"POST",data:o,bids:e,options:{withCredentials:!1}}},interpretResponse:(e,r)=>{if(!r||!r.bids||!r.data)return[];if(!e||!e.body)return[];const t=[],o=[];if(e.body.seatbid&&e.body.seatbid.length&&e.body.seatbid[0].bid&&e.body.seatbid[0].bid.length)t.push(...S.fromORTB({response:e.body,request:r.data}).bids);else if(!e.body.ext||!e.body.ext.igbid||!e.body.ext.igbid.length)return[];return(0,s.isArray)(e.body.ext?.igbid)&&e.body.ext.igbid.forEach((e=>{if(!(e&&e.igbuyer&&e.igbuyer.length&&e.igbuyer[0].buyerdata))return;let r=(0,s.safeJSONParse)(e.igbuyer[0]?.buyerdata);if(!r)return;const t={};e.igbuyer.forEach((e=>{if(!e||!e.buyerdata||!e.origin)return;let r=(0,s.safeJSONParse)(e.buyerdata);r&&r.perBuyerSignals&&e.origin in r.perBuyerSignals&&(t[e.origin]=r.perBuyerSignals[e.origin])}));const i=e?.impid;o.push({impId:i,config:{seller:r?.seller,resolveToConfig:r?.resolveToConfig,sellerSignals:{},sellerTimeout:r?.sellerTimeout,perBuyerSignals:t,auctionSignals:{},decisionLogicUrl:r?.decisionLogicUrl,interestGroupBuyers:r?.interestGroupBuyers,perBuyerTimeouts:r?.perBuyerTimeouts}})})),o.length?{bids:t,paapi:o}:t},onBidWon:e=>{if(e.nurl){const r=(0,s.replaceAuctionPrice)(e.nurl,e.originalCpm);(0,p.RD)(r)}},getUserSyncs:function(e,r,t,o,i){const n=[],a=[];return t&&a.push(`gdpr=${Number(t.gdprApplies&&1)}&gdpr_consent=${encodeURIComponent(t.consentString||"")}`),o&&a.push("us_privacy="+encodeURIComponent(o)),i&&a.push("gpp="+encodeURIComponent(i.gppString||"")+"&gpp_sid="+encodeURIComponent((i.applicableSections||[]).join(","))),e.iframeEnabled&&n.push({type:"iframe",url:"https://cdn.taboola.com/scripts/prebid_iframe_sync.html"+(a.length?"?"+a.join("&"):"")}),e.pixelEnabled&&n.push({type:"image",url:"https://trc.taboola.com/sg/prebidJS/1/cm"+(a.length?"?"+a.join("&"):"")}),n},onTimeout:e=>{(0,p.RD)(y+"/timeout",null,JSON.stringify(e),{method:"POST"})},onBidderError:e=>{let{error:r,bidderRequest:t}=e;(0,p.RD)(y+"/bidError",null,JSON.stringify({error:r,bidderRequest:t}),{method:"POST"})}};function C(e){return{format:e.map((e=>({w:e[0],h:e[1]})))}}(0,i.a$)(x),(0,o.E)("taboolaBidAdapter")}},e=>{e.O(0,[60802,58498,51085],(()=>{return r=45011,e(e.s=r);var r}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[99097],{45011:(e,r,t)=>{var o=t(7873),i=t(57377),n=t(71371),a=t(43272),s=t(91069),d=t(63172),u=t(70433),g=t(12938),p=t(68044),l=t(89766);const c="taboola",b="USD",f="user-id",m=`taboola global:${f}`,y="https://beacon.bidder.taboola.com",h={storageManager:(0,g.vM)({bidderCode:c}),getUserId:()=>{const{getFromLocalStorage:e,getFromCookie:r,getFromTRC:t}=h;try{return e()||r()||t()}catch(e){return 0}},getFromCookie(){const{cookiesAreEnabled:e,getCookie:r}=h.storageManager;if(e()){const e=r("trc_cookie_storage");let t;if(e&&(t=h.getCookieDataByKey(e,f)),t)return t;if(t=r("t_gid"),t)return t;if(t=r("t_pt_gid"),t)return t;const o=r("tbla_id");if(o)return o}},getCookieDataByKey(e,r){if(!e)return;const[,t=""]=e.split(`${r}=`);return t},getFromLocalStorage(){const{hasLocalStorage:e,localStorageIsEnabled:r,getDataFromLocalStorage:t}=h.storageManager;if(e()&&r())return t(m)},getFromTRC:()=>window.TRC?window.TRC.user_id:0},R={getPageUrl:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.page||(0,s.getWindowSelf)().location.href},getReferrer:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.ref||(0,s.getWindowSelf)().document.referrer}},S=(0,l.A)({context:{netRevenue:!0,mediaType:n.D4,ttl:300},imp(e,r,t){let o=e(r,t);return function(e,r){const{tagId:t,position:o}=e.params;if(r.banner=function(e,r){return{...C(e.sizes),pos:r}}(e,o),r.tagid=t,"function"==typeof e.getFloor){const t=e.getFloor({currency:b,size:"*"});"object"!=typeof t||t.currency!==b||isNaN(parseFloat(t.floor))||(r.bidfloor=parseFloat(t.floor),r.bidfloorcur=b)}else{const{bidfloor:t=null,bidfloorcur:o=b}=e.params;r.bidfloor=t,r.bidfloorcur=o}(0,d.J)(r,"ext.gpid",(0,u.A)(e,"ortb2Imp.ext.gpid"))}(r,o),o},request(e,r,t,o){const i=e(r,t,o);return function(e,r,t){const{refererInfo:o,gdprConsent:i={},uspConsent:n}=e,s=function(e,r,t){let{publisherId:o}=e;const{getPageUrl:i,getReferrer:n}=R;return{id:o,name:o,domain:t?.site?.domain||r?.domain||window.location?.host,page:t?.site?.page||i(r),ref:t?.site?.ref||n(r),publisher:{id:o},content:{language:navigator.language}}}(r.params,o,e.ortb2);(0,d.J)(t,"device.ua",navigator.userAgent);const u=h.getUserId(i,n);null==t.user&&(t.user={buyeruid:0,ext:{}});u&&0!==u&&(0,d.J)(t,"user.buyeruid",u);null==t.regs?.ext&&(t.regs={ext:{}});(0,d.J)(t,"regs.coppa",0),i.gdprApplies&&((0,d.J)(t,"user.ext.consent",e.gdprConsent.consentString),(0,d.J)(t,"regs.ext.gdpr",1));n&&(0,d.J)(t,"regs.ext.us_privacy",n);e.ortb2?.regs?.gpp&&((0,d.J)(t,"regs.ext.gpp",e.ortb2.regs.gpp),(0,d.J)(t,"regs.ext.gpp_sid",e.ortb2.regs.gpp_sid));a.$W.getConfig("coppa")&&(0,d.J)(t,"regs.coppa",1);const g=e.ortb2||{bcat:[],badv:[],wlang:[]};(0,d.J)(t,"source.fd",1),t.id=e.bidderRequestId,t.site=s,t.tmax=null==e.timeout?void 0:parseInt(e.timeout),t.bcat=g.bcat||r.params.bcat||[],t.badv=g.badv||r.params.badv||[],t.wlang=g.wlang||r.params.wlang||[],(0,d.J)(t,"ext.pageType",g?.ext?.data?.pageType||g?.ext?.data?.section||r.params.pageType),(0,d.J)(t,"ext.prebid.version","9.6.0")}(t,o.bidRequests[0],i),i},bidResponse(e,r,t){const o=e(r,t);return o.nurl=r.nurl,o.ad=(0,s.replaceAuctionPrice)(r.adm,r.price),r.ext&&r.ext.dchain&&(0,d.J)(o,"meta.dchain",r.ext.dchain),o}}),x={supportedMediaTypes:[n.D4],gvlid:42,code:c,isBidRequestValid:e=>!!(e.sizes&&e.params&&e.params.publisherId&&e.params.tagId),buildRequests:(e,r)=>{const[t]=e,o=S.toORTB({bidderRequest:r,bidRequests:e}),{publisherId:i}=t.params;return{url:"https://display.bidder.taboola.com/OpenRTB/TaboolaHB/auction?publisher="+i,method:"POST",data:o,bids:e,options:{withCredentials:!1}}},interpretResponse:(e,r)=>{if(!r||!r.bids||!r.data)return[];if(!e||!e.body)return[];const t=[],o=[];if(e.body.seatbid&&e.body.seatbid.length&&e.body.seatbid[0].bid&&e.body.seatbid[0].bid.length)t.push(...S.fromORTB({response:e.body,request:r.data}).bids);else if(!e.body.ext||!e.body.ext.igbid||!e.body.ext.igbid.length)return[];return(0,s.isArray)(e.body.ext?.igbid)&&e.body.ext.igbid.forEach((e=>{if(!(e&&e.igbuyer&&e.igbuyer.length&&e.igbuyer[0].buyerdata))return;let r=(0,s.safeJSONParse)(e.igbuyer[0]?.buyerdata);if(!r)return;const t={};e.igbuyer.forEach((e=>{if(!e||!e.buyerdata||!e.origin)return;let r=(0,s.safeJSONParse)(e.buyerdata);r&&r.perBuyerSignals&&e.origin in r.perBuyerSignals&&(t[e.origin]=r.perBuyerSignals[e.origin])}));const i=e?.impid;o.push({impId:i,config:{seller:r?.seller,resolveToConfig:r?.resolveToConfig,sellerSignals:{},sellerTimeout:r?.sellerTimeout,perBuyerSignals:t,auctionSignals:{},decisionLogicUrl:r?.decisionLogicUrl,interestGroupBuyers:r?.interestGroupBuyers,perBuyerTimeouts:r?.perBuyerTimeouts}})})),o.length?{bids:t,paapi:o}:t},onBidWon:e=>{if(e.nurl){const r=(0,s.replaceAuctionPrice)(e.nurl,e.originalCpm);(0,p.RD)(r)}},getUserSyncs:function(e,r,t,o,i){const n=[],a=[];return t&&a.push(`gdpr=${Number(t.gdprApplies&&1)}&gdpr_consent=${encodeURIComponent(t.consentString||"")}`),o&&a.push("us_privacy="+encodeURIComponent(o)),i&&a.push("gpp="+encodeURIComponent(i.gppString||"")+"&gpp_sid="+encodeURIComponent((i.applicableSections||[]).join(","))),e.iframeEnabled&&n.push({type:"iframe",url:"https://cdn.taboola.com/scripts/prebid_iframe_sync.html"+(a.length?"?"+a.join("&"):"")}),e.pixelEnabled&&n.push({type:"image",url:"https://trc.taboola.com/sg/prebidJS/1/cm"+(a.length?"?"+a.join("&"):"")}),n},onTimeout:e=>{(0,p.RD)(y+"/timeout",null,JSON.stringify(e),{method:"POST"})},onBidderError:e=>{let{error:r,bidderRequest:t}=e;(0,p.RD)(y+"/bidError",null,JSON.stringify({error:r,bidderRequest:t}),{method:"POST"})}};function C(e){return{format:e.map((e=>({w:e[0],h:e[1]})))}}(0,i.a$)(x),(0,o.E)("taboolaBidAdapter")}},e=>{e.O(0,[60802,58498,51085],(()=>{return r=45011,e(e.s=r);var r}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[59852],{66712:(e,r,t)=>{var a=t(7873),n=t(91069),i=t(70433),o=t(57377),d=t(71371),s=t(43272),p=t(95789),l=t(27934);const m="tappx",u="USD",c="0.1.3",f="prebidjs",g="[TAPPX]: ",y=["instream","outstream"],b={NUMBER:"number",STRING:"string",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},x={minduration:b.NUMBER,maxduration:b.NUMBER,startdelay:b.NUMBER,playbackmethod:b.ARRAY,api:b.ARRAY,protocols:b.ARRAY,w:b.NUMBER,h:b.NUMBER,battr:b.ARRAY,linearity:b.NUMBER,plcmt:b.NUMBER,minbitrate:b.NUMBER,maxbitrate:b.NUMBER,skip:b.NUMBER};var h;const A={code:m,gvlid:628,supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)?new RegExp("^(zz.*)\\.*$","i").test(e.params.host)?v(e):v(e)&&w(e):new RegExp("^(ZZ.*)\\.*$","i").test(e.params.endpoint)?v(e):v(e)&&w(e)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{t.push(function(e,r){let t=function(e){let r={},t=(0,i.A)(e,"params.endpoint"),a=(0,i.A)(e,"params.host");r.domain=a.split("/",1)[0];let n=new RegExp("^https://"),o=new RegExp("^http://"),d=new RegExp("^(vz.*|zz.*)\\.[a-z]{3}\\.tappx\\.com$","i"),s=new RegExp("^([a-z]{3}|testing)\\.[a-z]{3}\\.tappx\\.com$","i");n.test(a)?a=a.replace("https://",""):o.test(a)&&(a=a.replace("http://",""));d.test(r.domain)?(r.newEndpoint=!0,r.endpoint=r.domain.split(".",1)[0],r.url=`https://${a}`):s.test(r.domain)&&(r.newEndpoint=!1,r.endpoint=t,r.url=`https://${a}${t}`);return r}(e);const a=t.endpoint;h=t.domain;const o=(0,i.A)(e,"params.tappxkey"),d=(0,i.A)(e,"params.mktag"),p=(0,i.A)(e,"params.bidfloor"),y=(0,i.A)(e,"params.ext"),b=(0,i.A)(e,"mediaTypes.banner"),A=(0,i.A)(e,"mediaTypes.video"),v=(0,i.A)(e,"ortb2");let w,E={},z={},T={};if((0,i.A)(e,"params.app")){let r={};r.name=(0,i.A)(e,"params.app.name"),r.bundle=(0,i.A)(e,"params.app.bundle"),r.domain=(0,i.A)(e,"params.app.domain"),z.name=(0,i.A)(e,"params.app.publisher.name"),z.domain=(0,i.A)(e,"params.app.publisher.domain"),w=`${r.name}_typeAdBanVid_${R()}`,E.app=r,T[0]=(0,i.A)(e,"params.api")?(0,i.A)(e,"params.api"):[3,5]}else{let t=function(e,r){let t=r?.refererInfo?.page||r?.refererInfo?.topmostLocation;return(0,l.gR)(t,{noLeadingWww:!0})}(0,r),a=(0,i.A)(e,"params.site")||{};a.name=t,a.page=r?.refererInfo?.page||(0,i.A)(e,"params.site.page")||r?.refererInfo?.topmostLocation||window.location.href||t,a.domain=t;try{a.ref=r?.refererInfo?.ref||window.top.document.referrer||""}catch(e){a.ref=r?.refererInfo?.ref||window.document.referrer||""}a.ext={},a.ext.is_amp=r?.refererInfo?.isAmp||0,a.ext.page_da=(0,i.A)(e,"params.site.page")||"-",a.ext.page_rip=r?.refererInfo?.page||"-",a.ext.page_rit=r?.refererInfo?.topmostLocation||"-",a.ext.page_wlh=window.location.href||"-",z.name=t,z.domain=t;let n=document.getElementsByTagName("meta").title;n&&n.content&&(a.name=n.content),w=`${a.name}_typeAdBanVid_${R()}`;let o=document.getElementsByTagName("meta").keywords;o&&o.content&&(a.keywords=o.content),E.site=a}let I,B,N={};if(b){Array.isArray(b.sizes)||(0,n.logWarn)(g,"Banner sizes array not found.");let e={};I=b.sizes[0][0],B=b.sizes[0][1],e.w=I,e.h=B,b.sizes[0].indexOf(480)>=0&&b.sizes[0].indexOf(320)>=0||b.sizes[0].indexOf(768)>=0&&b.sizes[0].indexOf(1024),e.pos=0,e.api=T;let r={0:{}};r[0].w=I,r[0].h=B,e.format=r,N.banner=e}if(void 0!==A){let r={},t=(0,i.A)(e,"params.video");if(void 0!==t)for(var U in x)t.hasOwnProperty(U)&&(r[U]=O(U,t[U],x[U]));(void 0===r.w||null==r.w||r.w<=0||void 0===r.h||null==r.h||r.h<=0)&&(Array.isArray(A.playerSize)||(0,n.logWarn)(g,"Video playerSize array not found."),I=A.playerSize[0][0],B=A.playerSize[0][1],r.w=I,r.h=B),r.mimes=A.mimes;let a={};void 0!==A.rewarded&&1==A.rewarded&&(a.rewarded=A.rewarded),r.ext=a,N.video=r}if(N.id=e.bidId,N.tagid=w,N.secure=1,N.bidfloor=(0,i.A)(e,"params.bidfloor"),(0,n.isFn)(e.getFloor))try{let r=e.getFloor({currency:u,mediaType:"*",size:"*"});(0,n.isPlainObject)(r)&&!isNaN(r.floor)&&"USD"===r.currency?N.bidfloor=r.floor:(0,n.logWarn)(g,"Currency not valid. Use only USD with Tappx.")}catch(r){(0,n.logWarn)(g,r),N.bidfloor=(0,i.A)(e,"params.bidfloor")}let $={};$.endpoint=a,$.host=t.url,$.bidfloor=p,$.ext="object"==typeof y?y:void 0,N.ext={},N.ext.bidder=$;let S={};S.os=R(),S.ip="peer",S.ua=navigator.userAgent,S.ifa=e.ifa,S.h=screen.height,S.w=screen.width,S.dnt=(0,n.getDNT)()?1:0,S.language=function(){const e=navigator.language?"language":"userLanguage";return navigator[e].split("-")[0]}(),S.make=function(){let e=navigator.userAgent;return-1!=e.indexOf("Chrome")?"Google":-1!=e.indexOf("Firefox")?"Mozilla":-1!=e.indexOf("Safari")?"Apple":-1!=e.indexOf("Edge")||-1!=e.indexOf("MSIE")||-1!=e.indexOf("Trident")?"Microsoft":""}();let k={};k.country=(0,i.A)(e,"params.geo.country");let W={};W.country=v?.device?.geo,void 0!==W.country?S.geo=W:void 0!==k.country&&(S.geo=k);let M={ext:{}},C=(0,i.A)(e,"userIdAsEids");void 0!==C&&(C=C.filter((e=>null!=e&&"string"==typeof e.source&&null!==e.source&&"string"==typeof e.uids[0].id&&null!==e.uids[0].id)),M.ext.eids=C);let _={gdpr:0};null==r.gdprConsent||("boolean"==typeof r.gdprConsent.gdprApplies&&(_.gdpr=r.gdprConsent.gdprApplies),_.gdpr&&(M.ext.consent=r.gdprConsent.consentString));_.ext={},null==r.uspConsent||(_.ext.us_privacy=r.uspConsent);!0===s.$W.getConfig("coppa")&&(_.coppa=!0===s.$W.getConfig("coppa")?1:0);let P={bidder:{}};P.bidder.tappxkey=o,P.bidder.mktag=d,P.bidder.bcid=(0,i.A)(e,"params.bcid"),P.bidder.bcrid=(0,i.A)(e,"params.bcrid"),P.bidder.ext="object"==typeof y?y:{},void 0!==A&&(P.bidder.ext.pbvidtype=A.context);E.id=r.bidderRequestId,E.test=(0,i.A)(e,"params.test")?1:0,E.at=1,E.tmax=r.timeout?r.timeout:600,E.bidder=m,E.imp=[N],E.user=M,E.ext=P,E.device=S,E.regs=_;let L="v9.4.1";return{method:"POST",url:`${t.url}?type_cnn=${f}&v=${c}&pbjsv=${L}`,data:JSON.stringify(E),bids:e}}(e,r))})),t},interpretResponse:function(e,r){const t=e.body;if(!e.body)return(0,n.logWarn)(g,"Empty response body HTTP 204, no bids"),[];const a=[];return t.seatbid.forEach((e=>{e.bid.forEach((e=>{a.push(function(e,r){let t={requestId:r.bids?.bidId,cpm:e.price,currency:e.cur?e.cur:u,width:e.w,height:e.h,ttl:360,creativeId:e.crid,netRevenue:!0};void 0!==e.dealId&&(t.dealId=e.dealId);void 0!==e.lurl&&(t.lurl=e.lurl);void 0!==e.nurl&&(t.nurl=e.nurl);void 0!==e.burl&&(t.burl=e.burl);if(void 0!==r.bids?.mediaTypes&&void 0!==r.bids?.mediaTypes.video){if(t.vastXml=e.adm,t.vastUrl=e.lurl,t.ad=e.adm,t.mediaType=d.G_,t.width=e.w,t.height=e.h,"outstream"===r.bids?.mediaTypes.video.context){if(!e.ext.purl)return(0,n.logWarn)(g,"Error getting player outstream from tappx"),!1;t.renderer=function(e,r,t){const a=p.A4.install({id:r.id,url:t,loaded:!1});try{a.setRender(E)}catch(e){(0,n.logWarn)(g,"Prebid Error calling setRender on renderer")}return a}(0,r,e.ext.purl)}}else t.ad=e.adm,t.mediaType=d.D4;void 0===t.adomain&&null===t.adomain||(t.meta={advertiserDomains:r.bids?.adomain});return t}(e,r))}))})),a},getUserSyncs:(e,r,t,a)=>{let n=`https://${h}/cs/usersync.php?`;return t&&(n+="&gdpr_optin="+(t.gdprApplies?1:0),n+="&gdpr_consent="+encodeURIComponent(t.consentString||"")),a&&(n+="&us_privacy="+encodeURIComponent(a)),e.iframeEnabled?(n+="&type=iframe",[{type:"iframe",url:n}]):(n+="&type=img",[{type:"image",url:n}])}};function v(e){if(null==e.params)return(0,n.logWarn)(g,"Please review the mandatory Tappx parameters."),!1;if(!e.params.tappxkey)return(0,n.logWarn)(g,"Please review the mandatory Tappxkey parameter."),!1;if(!e.params.host)return(0,n.logWarn)(g,"Please review the mandatory Host parameter."),!1;let r=!0;return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)&&(r=!1),!(r&&!e.params.endpoint)||((0,n.logWarn)(g,"Please review the mandatory endpoint Tappx parameters."),!1)}function w(e){const r=(0,i.A)(e,"mediaTypes.video");return void 0===r||-1!==y.indexOf(r.context)||((0,n.logWarn)(g,"Please review the mandatory Tappx parameters for Video. Video context not supported."),!1)}function R(){let e=navigator.userAgent;return e.match(/Android/)?"Android":e.match(/(iPhone|iPod|iPad)/)?"iOS":-1!=e.indexOf("Mac OS X")?"macOS":-1!=e.indexOf("Windows")?"Windows":-1!=e.indexOf("Linux")?"Linux":"Unknown"}function E(e,r){let t={};t=void 0!==e.params[0].video?e.params[0].video:{},t.content=e.vastXml,e.renderer.push((()=>{window.tappxOutstream.renderAd({sizes:[e.width,e.height],targetId:e.adUnitCode,adResponse:e.adResponse,rendererOptions:t})}))}function O(e,r,t){var a,i="Ignoring param key: "+e+", expects "+t+", found "+typeof r;switch(t){case b.BOOLEAN:a=n.isBoolean;break;case b.NUMBER:a=n.isNumber;break;case b.STRING:a=n.isStr;break;case b.ARRAY:a=n.isArray}if(a(r))return r;(0,n.logWarn)(g,i)}(0,o.a$)(A),(0,a.E)("tappxBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=66712,e(e.s=r);var r}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[59852],{66712:(e,r,t)=>{var a=t(7873),n=t(91069),i=t(70433),o=t(57377),d=t(71371),s=t(43272),p=t(95789),l=t(27934);const m="tappx",u="USD",c="0.1.3",f="prebidjs",g="[TAPPX]: ",y=["instream","outstream"],b={NUMBER:"number",STRING:"string",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},x={minduration:b.NUMBER,maxduration:b.NUMBER,startdelay:b.NUMBER,playbackmethod:b.ARRAY,api:b.ARRAY,protocols:b.ARRAY,w:b.NUMBER,h:b.NUMBER,battr:b.ARRAY,linearity:b.NUMBER,plcmt:b.NUMBER,minbitrate:b.NUMBER,maxbitrate:b.NUMBER,skip:b.NUMBER};var h;const A={code:m,gvlid:628,supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)?new RegExp("^(zz.*)\\.*$","i").test(e.params.host)?v(e):v(e)&&w(e):new RegExp("^(ZZ.*)\\.*$","i").test(e.params.endpoint)?v(e):v(e)&&w(e)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{t.push(function(e,r){let t=function(e){let r={},t=(0,i.A)(e,"params.endpoint"),a=(0,i.A)(e,"params.host");r.domain=a.split("/",1)[0];let n=new RegExp("^https://"),o=new RegExp("^http://"),d=new RegExp("^(vz.*|zz.*)\\.[a-z]{3}\\.tappx\\.com$","i"),s=new RegExp("^([a-z]{3}|testing)\\.[a-z]{3}\\.tappx\\.com$","i");n.test(a)?a=a.replace("https://",""):o.test(a)&&(a=a.replace("http://",""));d.test(r.domain)?(r.newEndpoint=!0,r.endpoint=r.domain.split(".",1)[0],r.url=`https://${a}`):s.test(r.domain)&&(r.newEndpoint=!1,r.endpoint=t,r.url=`https://${a}${t}`);return r}(e);const a=t.endpoint;h=t.domain;const o=(0,i.A)(e,"params.tappxkey"),d=(0,i.A)(e,"params.mktag"),p=(0,i.A)(e,"params.bidfloor"),y=(0,i.A)(e,"params.ext"),b=(0,i.A)(e,"mediaTypes.banner"),A=(0,i.A)(e,"mediaTypes.video"),v=(0,i.A)(e,"ortb2");let w,E={},z={},T={};if((0,i.A)(e,"params.app")){let r={};r.name=(0,i.A)(e,"params.app.name"),r.bundle=(0,i.A)(e,"params.app.bundle"),r.domain=(0,i.A)(e,"params.app.domain"),z.name=(0,i.A)(e,"params.app.publisher.name"),z.domain=(0,i.A)(e,"params.app.publisher.domain"),w=`${r.name}_typeAdBanVid_${R()}`,E.app=r,T[0]=(0,i.A)(e,"params.api")?(0,i.A)(e,"params.api"):[3,5]}else{let t=function(e,r){let t=r?.refererInfo?.page||r?.refererInfo?.topmostLocation;return(0,l.gR)(t,{noLeadingWww:!0})}(0,r),a=(0,i.A)(e,"params.site")||{};a.name=t,a.page=r?.refererInfo?.page||(0,i.A)(e,"params.site.page")||r?.refererInfo?.topmostLocation||window.location.href||t,a.domain=t;try{a.ref=r?.refererInfo?.ref||window.top.document.referrer||""}catch(e){a.ref=r?.refererInfo?.ref||window.document.referrer||""}a.ext={},a.ext.is_amp=r?.refererInfo?.isAmp||0,a.ext.page_da=(0,i.A)(e,"params.site.page")||"-",a.ext.page_rip=r?.refererInfo?.page||"-",a.ext.page_rit=r?.refererInfo?.topmostLocation||"-",a.ext.page_wlh=window.location.href||"-",z.name=t,z.domain=t;let n=document.getElementsByTagName("meta").title;n&&n.content&&(a.name=n.content),w=`${a.name}_typeAdBanVid_${R()}`;let o=document.getElementsByTagName("meta").keywords;o&&o.content&&(a.keywords=o.content),E.site=a}let I,B,N={};if(b){Array.isArray(b.sizes)||(0,n.logWarn)(g,"Banner sizes array not found.");let e={};I=b.sizes[0][0],B=b.sizes[0][1],e.w=I,e.h=B,b.sizes[0].indexOf(480)>=0&&b.sizes[0].indexOf(320)>=0||b.sizes[0].indexOf(768)>=0&&b.sizes[0].indexOf(1024),e.pos=0,e.api=T;let r={0:{}};r[0].w=I,r[0].h=B,e.format=r,N.banner=e}if(void 0!==A){let r={},t=(0,i.A)(e,"params.video");if(void 0!==t)for(var U in x)t.hasOwnProperty(U)&&(r[U]=O(U,t[U],x[U]));(void 0===r.w||null==r.w||r.w<=0||void 0===r.h||null==r.h||r.h<=0)&&(Array.isArray(A.playerSize)||(0,n.logWarn)(g,"Video playerSize array not found."),I=A.playerSize[0][0],B=A.playerSize[0][1],r.w=I,r.h=B),r.mimes=A.mimes;let a={};void 0!==A.rewarded&&1==A.rewarded&&(a.rewarded=A.rewarded),r.ext=a,N.video=r}if(N.id=e.bidId,N.tagid=w,N.secure=1,N.bidfloor=(0,i.A)(e,"params.bidfloor"),(0,n.isFn)(e.getFloor))try{let r=e.getFloor({currency:u,mediaType:"*",size:"*"});(0,n.isPlainObject)(r)&&!isNaN(r.floor)&&"USD"===r.currency?N.bidfloor=r.floor:(0,n.logWarn)(g,"Currency not valid. Use only USD with Tappx.")}catch(r){(0,n.logWarn)(g,r),N.bidfloor=(0,i.A)(e,"params.bidfloor")}let $={};$.endpoint=a,$.host=t.url,$.bidfloor=p,$.ext="object"==typeof y?y:void 0,N.ext={},N.ext.bidder=$;let S={};S.os=R(),S.ip="peer",S.ua=navigator.userAgent,S.ifa=e.ifa,S.h=screen.height,S.w=screen.width,S.dnt=(0,n.getDNT)()?1:0,S.language=function(){const e=navigator.language?"language":"userLanguage";return navigator[e].split("-")[0]}(),S.make=function(){let e=navigator.userAgent;return-1!=e.indexOf("Chrome")?"Google":-1!=e.indexOf("Firefox")?"Mozilla":-1!=e.indexOf("Safari")?"Apple":-1!=e.indexOf("Edge")||-1!=e.indexOf("MSIE")||-1!=e.indexOf("Trident")?"Microsoft":""}();let k={};k.country=(0,i.A)(e,"params.geo.country");let W={};W.country=v?.device?.geo,void 0!==W.country?S.geo=W:void 0!==k.country&&(S.geo=k);let M={ext:{}},C=(0,i.A)(e,"userIdAsEids");void 0!==C&&(C=C.filter((e=>null!=e&&"string"==typeof e.source&&null!==e.source&&"string"==typeof e.uids[0].id&&null!==e.uids[0].id)),M.ext.eids=C);let _={gdpr:0};null==r.gdprConsent||("boolean"==typeof r.gdprConsent.gdprApplies&&(_.gdpr=r.gdprConsent.gdprApplies),_.gdpr&&(M.ext.consent=r.gdprConsent.consentString));_.ext={},null==r.uspConsent||(_.ext.us_privacy=r.uspConsent);!0===s.$W.getConfig("coppa")&&(_.coppa=!0===s.$W.getConfig("coppa")?1:0);let P={bidder:{}};P.bidder.tappxkey=o,P.bidder.mktag=d,P.bidder.bcid=(0,i.A)(e,"params.bcid"),P.bidder.bcrid=(0,i.A)(e,"params.bcrid"),P.bidder.ext="object"==typeof y?y:{},void 0!==A&&(P.bidder.ext.pbvidtype=A.context);E.id=r.bidderRequestId,E.test=(0,i.A)(e,"params.test")?1:0,E.at=1,E.tmax=r.timeout?r.timeout:600,E.bidder=m,E.imp=[N],E.user=M,E.ext=P,E.device=S,E.regs=_;let L="v9.6.0";return{method:"POST",url:`${t.url}?type_cnn=${f}&v=${c}&pbjsv=${L}`,data:JSON.stringify(E),bids:e}}(e,r))})),t},interpretResponse:function(e,r){const t=e.body;if(!e.body)return(0,n.logWarn)(g,"Empty response body HTTP 204, no bids"),[];const a=[];return t.seatbid.forEach((e=>{e.bid.forEach((e=>{a.push(function(e,r){let t={requestId:r.bids?.bidId,cpm:e.price,currency:e.cur?e.cur:u,width:e.w,height:e.h,ttl:360,creativeId:e.crid,netRevenue:!0};void 0!==e.dealId&&(t.dealId=e.dealId);void 0!==e.lurl&&(t.lurl=e.lurl);void 0!==e.nurl&&(t.nurl=e.nurl);void 0!==e.burl&&(t.burl=e.burl);if(void 0!==r.bids?.mediaTypes&&void 0!==r.bids?.mediaTypes.video){if(t.vastXml=e.adm,t.vastUrl=e.lurl,t.ad=e.adm,t.mediaType=d.G_,t.width=e.w,t.height=e.h,"outstream"===r.bids?.mediaTypes.video.context){if(!e.ext.purl)return(0,n.logWarn)(g,"Error getting player outstream from tappx"),!1;t.renderer=function(e,r,t){const a=p.A4.install({id:r.id,url:t,loaded:!1});try{a.setRender(E)}catch(e){(0,n.logWarn)(g,"Prebid Error calling setRender on renderer")}return a}(0,r,e.ext.purl)}}else t.ad=e.adm,t.mediaType=d.D4;void 0===t.adomain&&null===t.adomain||(t.meta={advertiserDomains:r.bids?.adomain});return t}(e,r))}))})),a},getUserSyncs:(e,r,t,a)=>{let n=`https://${h}/cs/usersync.php?`;return t&&(n+="&gdpr_optin="+(t.gdprApplies?1:0),n+="&gdpr_consent="+encodeURIComponent(t.consentString||"")),a&&(n+="&us_privacy="+encodeURIComponent(a)),e.iframeEnabled?(n+="&type=iframe",[{type:"iframe",url:n}]):(n+="&type=img",[{type:"image",url:n}])}};function v(e){if(null==e.params)return(0,n.logWarn)(g,"Please review the mandatory Tappx parameters."),!1;if(!e.params.tappxkey)return(0,n.logWarn)(g,"Please review the mandatory Tappxkey parameter."),!1;if(!e.params.host)return(0,n.logWarn)(g,"Please review the mandatory Host parameter."),!1;let r=!0;return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)&&(r=!1),!(r&&!e.params.endpoint)||((0,n.logWarn)(g,"Please review the mandatory endpoint Tappx parameters."),!1)}function w(e){const r=(0,i.A)(e,"mediaTypes.video");return void 0===r||-1!==y.indexOf(r.context)||((0,n.logWarn)(g,"Please review the mandatory Tappx parameters for Video. Video context not supported."),!1)}function R(){let e=navigator.userAgent;return e.match(/Android/)?"Android":e.match(/(iPhone|iPod|iPad)/)?"iOS":-1!=e.indexOf("Mac OS X")?"macOS":-1!=e.indexOf("Windows")?"Windows":-1!=e.indexOf("Linux")?"Linux":"Unknown"}function E(e,r){let t={};t=void 0!==e.params[0].video?e.params[0].video:{},t.content=e.vastXml,e.renderer.push((()=>{window.tappxOutstream.renderAd({sizes:[e.width,e.height],targetId:e.adUnitCode,adResponse:e.adResponse,rendererOptions:t})}))}function O(e,r,t){var a,i="Ignoring param key: "+e+", expects "+t+", found "+typeof r;switch(t){case b.BOOLEAN:a=n.isBoolean;break;case b.NUMBER:a=n.isNumber;break;case b.STRING:a=n.isStr;break;case b.ARRAY:a=n.isArray}if(a(r))return r;(0,n.logWarn)(g,i)}(0,o.a$)(A),(0,a.E)("tappxBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=66712,e(e.s=r);var r}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[8991],{63473:(e,t,n)=>{var r=n(7873),s=n(15901),i=n(91069),d=n(71371),a=n(57377);const o="https://ib.adnxs.com/ut/v3/prebid",p={code:"targetVideo",gvlid:786,supportedMediaTypes:[d.D4],isBidRequestValid:function(e){return!!(e&&e.params&&e.params.placementId)},buildRequests:function(e,t){const n={tags:e.map(l),sdk:{source:"pbjs",version:"9.4.1"},schain:e[0].schain};if(t&&t.gdprConsent&&(n.gdpr_consent={consent_string:t.gdprConsent.consentString,consent_required:t.gdprConsent.gdprApplies},t.gdprConsent.addtlConsent&&-1!==t.gdprConsent.addtlConsent.indexOf("~"))){let e=t.gdprConsent.addtlConsent,r=e.substring(e.indexOf("~")+1);n.gdpr_consent.addtl_consent=r.split(".").map((e=>parseInt(e,10)))}return t&&t.uspConsent&&(n.us_privacy=t.uspConsent),function(e,t){const n={withCredentials:!0},r={method:"POST",url:o,data:JSON.stringify(e),bidderRequest:t,options:n};return r}(n,t)},interpretResponse:function(e,t){let{bidderRequest:n}=t;e=e.body;const r=[];return e.tags&&e.tags.forEach((e=>{const t=(a=e)&&a.ads&&a.ads.length&&(0,s.I6)(a.ads,(e=>e.rtb));var a;t&&0!==t.cpm&&t.ad_type==d.G_&&r.push(function(e,t,n){const r=(0,i.getBidRequest)(e.uuid,[n]),s=u(r),d={requestId:e.uuid,cpm:t.cpm/1.35,creativeId:t.creative_id,dealId:t.deal_id,currency:"USD",netRevenue:!0,width:s[0][0],height:s[0][1],ttl:300,adUnitCode:r.adUnitCode,appnexus:{buyerMemberId:t.buyer_member_id,dealPriority:t.deal_priority,dealCode:t.deal_code}};t.rtb.video&&Object.assign(d,{vastImpUrl:t.notify_url,ad:c(t.notify_url+"&redir="+encodeURIComponent(t.rtb.video.asset_url)),ttl:3600});return d}(e,t,n))})),r}};function u(e){let t=e.sizes;return!t&&e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes&&(t=e.mediaTypes.banner.sizes),Array.isArray(t)&&!Array.isArray(t[0])&&(t=[t[0],t[1]]),Array.isArray(t)&&Array.isArray(t[0])||(t=[[0,0]]),t}function l(e){const t={};return t.id=parseInt(e.params.placementId,10),t.gpid="targetVideo",t.sizes=u(e),t.primary_size=t.sizes[0],t.ad_types=[d.G_],t.uuid=e.bidId,t.allow_smaller_sizes=!1,t.use_pmt_rule=!1,t.prebid=!0,t.disable_psa=!0,t.hb_source=1,t.require_asset_url=!0,t.video={playback_method:2,skippable:!0},t}function c(e){return`<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8">\n <title></title>\n <style>html, body {width: 100%; height: 100%; margin: 0;}</style>\n </head>\n <body>\n <div id="targetVideoPlayer"></div>\n <script src="https://player.target-video.com/custom/targetvideo-banner.js"><\/script>\n <script>initPlayer("${e}");<\/script>\n </body>\n </html>`}(0,a.a$)(p),(0,r.E)("targetVideoBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=63473,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[8991],{63473:(e,s,n)=>{var t=n(7873),r=n(91069),d=n(71371),i=n(57377),p=n(77096),a=n(15558);const o={code:a.nf,gvlid:a.VQ,supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){return!!(e&&e.params&&e.params.placementId)},buildRequests:function(e,s){const n=[],t={source:a.u2,version:"9.6.0"};for(let{params:i,bidId:o,sizes:c,mediaTypes:u}of e)for(const g in u)switch(g){case d.G_:{const g=u[d.G_],l=i.placementId,h=(0,p.jN)();c&&!Array.isArray(c[0])&&(c=[c]);const b={sdk:t,id:s.bidderRequestId,site:h,imp:[]},f={ext:{prebid:{storedrequest:{id:l}}},video:(0,r.getDefinedParams)(g,a.rA)};g.playerSize?f.video=Object.assign(f.video,(0,r.parseGPTSingleSizeArrayToRtbSize)(g.playerSize[0])||{}):g.w&&g.h&&(f.video.w=g.w,f.video.h=g.h),b.imp.push(f);const C=s&&s.gdprConsent,_=s&&s.uspConsent;(C||_)&&(b.regs={ext:{}},_&&(b.regs.ext.us_privacy=_),C&&(void 0!==C.gdprApplies&&(b.regs.ext.gdpr=C.gdprApplies?1:0),void 0!==C.consentString&&(b.user={ext:{consent:C.consentString}}))),e[0].schain&&(b.schain=e[0].schain),n.push((0,p.zw)({payload:b,url:a.UE,bidId:o}));break}case d.D4:{const n={tags:e.map(p.Gw),sdk:t,schain:e[0].schain};if(s&&s.gdprConsent&&(n.gdpr_consent={consent_string:s.gdprConsent.consentString,consent_required:s.gdprConsent.gdprApplies},s.gdprConsent.addtlConsent&&-1!==s.gdprConsent.addtlConsent.indexOf("~"))){let e=s.gdprConsent.addtlConsent,t=e.substring(e.indexOf("~")+1);n.gdpr_consent.addtl_consent=t.split(".").map((e=>parseInt(e,10)))}return s&&s.uspConsent&&(n.us_privacy=s.uspConsent),(0,p.zw)({payload:n,url:a.jG,bidderRequest:s})}}return n},interpretResponse:function(e,s){let{bidderRequest:n,...t}=s;const i=(e=e.body).cur,o=[];return e.tags&&e.tags.forEach((e=>{const s=(0,p.w5)(e);s&&0!==s.cpm&&s.ad_type==d.G_&&o.push((0,p.eN)(e,s,n,a.jS))})),e.seatbid&&(0,r._each)(e.seatbid,(e=>{(0,r._each)(e.bid,(e=>{const s=t.bidId,n=t.params;o.push((0,p.r2)(e,s,i,n,a.fG))}))})),o}};(0,i.a$)(o),(0,t.E)("targetVideoBidAdapter")}},e=>{e.O(0,[78556,60802,51085],(()=>{return s=63473,e(e.s=s);var s}));e.O()}]);
@@ -0,0 +1 @@
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[78556],{77096:(e,t,r)=>{r.d(t,{Gw:()=>o,eN:()=>u,jN:()=>y,r2:()=>p,s_:()=>c,w5:()=>m,zw:()=>l});var a=r(71371),i=r(27934),d=r(91069),n=r(70433);function s(e){let t=e.sizes;return!t&&e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes&&(t=e.mediaTypes.banner.sizes),Array.isArray(t)&&!Array.isArray(t[0])&&(t=[t[0],t[1]]),Array.isArray(t)&&Array.isArray(t[0])||(t=[[0,0]]),t}function l(e){let{payload:t,url:r,bidderRequest:a,bidId:i}=e;const d={method:"POST",data:JSON.stringify(t),url:r,options:{withCredentials:!0}};return a&&(d.bidderRequest=a),i&&(d.bidId=i),d}function o(e){const t={};return t.id=parseInt(e.params.placementId,10),t.gpid="targetVideo",t.sizes=s(e),t.primary_size=t.sizes[0],t.ad_types=[a.G_],t.uuid=e.bidId,t.allow_smaller_sizes=!1,t.use_pmt_rule=!1,t.prebid=!0,t.disable_psa=!0,t.hb_source=1,t.require_asset_url=!0,t.video={playback_method:2,skippable:!0},t}function u(e,t,r,a){const i=(0,d.getBidRequest)(e.uuid,[r]),n=s(i),l={requestId:e.uuid,cpm:t.cpm/a,creativeId:t.creative_id,dealId:t.deal_id,currency:"USD",netRevenue:!0,width:n[0][0],height:n[0][1],ttl:300,adUnitCode:i.adUnitCode,appnexus:{buyerMemberId:t.buyer_member_id,dealPriority:t.deal_priority,dealCode:t.deal_code}};var o;return t.rtb.video&&Object.assign(l,{vastImpUrl:t.notify_url,ad:(o=t.notify_url+"&redir="+encodeURIComponent(t.rtb.video.asset_url),`<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8">\n <title></title>\n <style>html, body {width: 100%; height: 100%; margin: 0;}</style>\n </head>\n <body>\n <div id="targetVideoPlayer"></div>\n <script src="https://player.target-video.com/custom/targetvideo-banner.js"><\/script>\n <script>initPlayer("${o}");<\/script>\n </body>\n </html>`),ttl:3600}),l}function p(e,t,r,i,d){const{ad:n,adUrl:s,vastUrl:l,vastXml:o}=c(e),u={requestId:t,params:i,currency:r,cpm:e.price,width:e.w,height:e.h,creativeId:e.adid||e.crid,netRevenue:!1,ttl:d,meta:{advertiserDomains:e.adomain||[]}};return l||o?(u.mediaType=a.G_,l&&(u.vastUrl=l),o&&(u.vastXml=o)):(u.ad=n,u.adUrl=s),u}function m(e){return e&&e.ads&&e.ads.length&&e.ads.find((e=>e.rtb))}function c(e){let t,r,i,s;if((0,n.A)(e,"ext.prebid.type")===a.G_)"http"===e.adm.substr(0,4)?s=e.adm:i=e.adm;else e.adm&&e.nurl?(t=e.adm,t+=(0,d.createTrackPixelHtml)(decodeURIComponent(e.nurl))):e.adm?t=e.adm:e.nurl&&(r=e.nurl);return{ad:t,adUrl:r,vastXml:i,vastUrl:s}}function y(){const e=i.EN&&(0,i.EN)()||{};return{page:e.page,ref:e.ref,domain:e.domain}}},15558:(e,t,r)=>{r.d(t,{UE:()=>o,VQ:()=>i,fG:()=>s,jG:()=>l,jS:()=>d,nf:()=>n,rA:()=>u,u2:()=>a});const a="pbjs",i=786,d=1.35,n="targetVideo",s=300,l="https://ib.adnxs.com/ut/v3/prebid",o="https://pbs.prebrid.tv/openrtb2/auction",u=["api","linearity","maxduration","mimes","minduration","plcmt","playbackmethod","protocols","startdelay"]}}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[28746],{27454:(e,t,r)=>{var n=r(7873),i=r(91069),o=r(70433),a=r(57377),s=r(12938),d=r(72285);const c="teads",p=12,u=11,l=0,g=22,m=(0,s.vM)({bidderCode:c}),y={code:c,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let r=w((0,i.getValue)(e.params,"placementId")),n=w((0,i.getValue)(e.params,"pageId"));t=r&&n}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const r=e.map(b),n=window.top,i={referrer:f(t),pageReferrer:document.referrer,pageTitle:v().slice(0,300),pageDescription:h().slice(0,300),networkBandwidth:(a=window.navigator,a&&a.connection&&a.connection.downlink>=0?a.connection.downlink.toString():""),timeToFirstByte:S(window),data:r,deviceWidth:screen.width,deviceHeight:screen.height,devicePixelRatio:n.devicePixelRatio,screenOrientation:screen.orientation?.type,historyLength:n.history?.length,viewportHeight:n.visualViewport?.height,viewportWidth:n.visualViewport?.width,hardwareConcurrency:n.navigator?.hardwareConcurrency,deviceMemory:n.navigator?.deviceMemory,hb_version:"9.4.1",...I(e),...A(e)};var a;const s=e[0];s.schain&&(i.schain=s.schain);let d=t.gppConsent;if(t&&d){let e="string"==typeof d.gppString,t=Array.isArray(d.applicableSections)&&d.applicableSections.every((e=>"number"==typeof e));i.gpp={consentString:e?d.gppString:"",applicableSectionIds:t?d.applicableSections:[]}}let c=t.gdprConsent;if(t&&c){let e="boolean"==typeof c.gdprApplies,t="string"==typeof c.consentString,r=e?function(e,t){let r=p;e?t&&!t.isServiceSpecific&&(r=u):r=l;return r}(c.gdprApplies,c.vendorData):g;i.gdpr_iab={consent:t?c.consentString:"",status:r,apiVersion:c.apiVersion}}t&&t.uspConsent&&(i.us_privacy=t.uspConsent);const m=(0,o.A)(s,"ortb2.device.sua");m&&(i.userAgentClientHints=m);const y=(0,o.A)(t,"ortb2.regs.ext.dsa");y&&(i.dsa=y);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(i)}},interpretResponse:function(e,t){if(!(e=e.body).responses)return[];const r=(0,d.T)();return e.responses.filter((e=>!e.needAutoplay||r)).map((e=>{const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};return e.dealId&&(t.dealId=e.dealId),e?.ext?.dsa&&(t.meta.dsa=e.ext.dsa),t}))}};function I(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let r={};for(const n in t){const i=t[n],a=(0,o.A)(e,`0.userId.${i}`);a&&(r[n]=a)}return r}function f(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function v(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function h(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function S(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,r=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(r)return r.toString();const n=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return n?n.toString():""}function b(e){const t={};let r=(0,i.getValue)(e.params,"placementId"),n=(0,i.getValue)(e.params,"pageId");const a=(0,o.A)(e,"ortb2Imp.ext.gpid"),s=(0,o.A)(e,"mediaTypes.video.plcmt");return t.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.A)(e,"mediaTypes.video.playerSize"),r=(0,o.A)(e,"mediaTypes.video.sizes"),n=(0,o.A)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(n)||(0,i.isArray)(t)||(0,i.isArray)(r)){return[n,r,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),t.bidId=(0,i.getBidIdParameter)("bidId",e),t.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),t.placementId=parseInt(r,10),t.pageId=parseInt(n,10),t.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),t.transactionId=e.ortb2Imp?.ext?.tid||"",a&&(t.gpid=a),s&&(t.videoPlcmt=s),t}function w(e){return parseInt(e)>0}function A(e){const t=(0,o.A)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.a$)(y),(0,n.E)("teadsBidAdapter")}},e=>{e.O(0,[42809,60802,51085],(()=>{return t=27454,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[28746],{27454:(e,t,r)=>{var n=r(7873),i=r(91069),o=r(70433),a=r(57377),s=r(12938),d=r(72285);const c="teads",p=12,u=11,l=0,g=22,m=(0,s.vM)({bidderCode:c}),y={code:c,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let r=w((0,i.getValue)(e.params,"placementId")),n=w((0,i.getValue)(e.params,"pageId"));t=r&&n}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const r=e.map(b),n=window.top,i={referrer:f(t),pageReferrer:document.referrer,pageTitle:v().slice(0,300),pageDescription:h().slice(0,300),networkBandwidth:(a=window.navigator,a&&a.connection&&a.connection.downlink>=0?a.connection.downlink.toString():""),timeToFirstByte:S(window),data:r,deviceWidth:screen.width,deviceHeight:screen.height,devicePixelRatio:n.devicePixelRatio,screenOrientation:screen.orientation?.type,historyLength:n.history?.length,viewportHeight:n.visualViewport?.height,viewportWidth:n.visualViewport?.width,hardwareConcurrency:n.navigator?.hardwareConcurrency,deviceMemory:n.navigator?.deviceMemory,hb_version:"9.6.0",...I(e),...A(e)};var a;const s=e[0];s.schain&&(i.schain=s.schain);let d=t.gppConsent;if(t&&d){let e="string"==typeof d.gppString,t=Array.isArray(d.applicableSections)&&d.applicableSections.every((e=>"number"==typeof e));i.gpp={consentString:e?d.gppString:"",applicableSectionIds:t?d.applicableSections:[]}}let c=t.gdprConsent;if(t&&c){let e="boolean"==typeof c.gdprApplies,t="string"==typeof c.consentString,r=e?function(e,t){let r=p;e?t&&!t.isServiceSpecific&&(r=u):r=l;return r}(c.gdprApplies,c.vendorData):g;i.gdpr_iab={consent:t?c.consentString:"",status:r,apiVersion:c.apiVersion}}t&&t.uspConsent&&(i.us_privacy=t.uspConsent);const m=(0,o.A)(s,"ortb2.device.sua");m&&(i.userAgentClientHints=m);const y=(0,o.A)(t,"ortb2.regs.ext.dsa");y&&(i.dsa=y);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(i)}},interpretResponse:function(e,t){if(!(e=e.body).responses)return[];const r=(0,d.T)();return e.responses.filter((e=>!e.needAutoplay||r)).map((e=>{const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};return e.dealId&&(t.dealId=e.dealId),e?.ext?.dsa&&(t.meta.dsa=e.ext.dsa),t}))}};function I(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let r={};for(const n in t){const i=t[n],a=(0,o.A)(e,`0.userId.${i}`);a&&(r[n]=a)}return r}function f(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function v(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function h(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function S(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,r=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(r)return r.toString();const n=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return n?n.toString():""}function b(e){const t={};let r=(0,i.getValue)(e.params,"placementId"),n=(0,i.getValue)(e.params,"pageId");const a=(0,o.A)(e,"ortb2Imp.ext.gpid"),s=(0,o.A)(e,"mediaTypes.video.plcmt");return t.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.A)(e,"mediaTypes.video.playerSize"),r=(0,o.A)(e,"mediaTypes.video.sizes"),n=(0,o.A)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(n)||(0,i.isArray)(t)||(0,i.isArray)(r)){return[n,r,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),t.bidId=(0,i.getBidIdParameter)("bidId",e),t.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),t.placementId=parseInt(r,10),t.pageId=parseInt(n,10),t.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),t.transactionId=e.ortb2Imp?.ext?.tid||"",a&&(t.gpid=a),s&&(t.videoPlcmt=s),t}function w(e){return parseInt(e)>0}function A(e){const t=(0,o.A)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.a$)(y),(0,n.E)("teadsBidAdapter")}},e=>{e.O(0,[42809,60802,51085],(()=>{return t=27454,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[52023],{18433:(e,r,t)=>{var n=t(7873),i=t(91069),o=t(70433),s=t(57377),a=t(71371);const d="tremorhub.com",p=`ads.${d}/ad/tag`,l=`events.${d}/diag`,c={code:"telaria",gvlid:202,aliases:[{code:"tremor",gvlid:202},{code:"tremorvideo",gvlid:202}],supportedMediaTypes:[a.G_],isBidRequestValid:function(e){return!!(e&&e.params&&e.params.adCode&&e.params.supplyCode)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{let n=function(e,r){let t,n,s=(0,o.A)(e,"mediaTypes.video.playerSize");s||(0,i.logWarn)("Although player size isn't required it is highly recommended");s&&(!(0,i.isArray)(s)||2!==s.length||isNaN(s[0])||isNaN(s[1])?"object"==typeof s&&(t=s[0][0],n=s[0][1]):(t=s[0],n=s[1]));let a=(0,o.A)(e,"params.supplyCode"),d=(0,o.A)(e,"params.adCode");if(a&&d){let i=`https://${a}.${p}?adCode=${d}`;t&&(i+=`&playerWidth=${t}`),n&&(i+=`&playerHeight=${n}`);const o=Object.assign({srcPageUrl:u()},e.params);return delete o.adCode,i+=`${f(o,e.schain)}`,i+=`&transactionId=${e.ortb2Imp?.ext?.tid}`,r&&(r.gdprConsent&&("boolean"==typeof r.gdprConsent.gdprApplies&&(i+="&gdpr="+(r.gdprConsent.gdprApplies?1:0)),r.gdprConsent.consentString&&(i+=`&gdpr_consent=${r.gdprConsent.consentString}`)),r.refererInfo&&r.refererInfo.page&&(i+=`&referrer=${encodeURIComponent(r.refererInfo.page)}`)),i+"&hb=1&fmt=json"}}(e,r);n&&t.push({method:"GET",url:n,bidId:e.bidId,vastUrl:n.split("&fmt=json")[0]})})),t},interpretResponse:function(e,r){let t,n,o,s=[];try{t=e.body,r.url.split("&").forEach((e=>{let r=e.toLowerCase();r.indexOf("player")>-1&&(r.indexOf("width")>-1?n=e.split("=")[1]:r.indexOf("height")>-1&&(o=e.split("=")[1]))}))}catch(e){(0,i.logError)(e),n=0,o=0}if(!t||t.error){let e=`in response for ${r.bidderCode} adapter`;t&&t.error&&(e+=`: ${t.error}`),(0,i.logError)(e)}else(0,i.isEmpty)(t.seatbid)||t.seatbid[0].bid.forEach((e=>{e&&s.push(function(e,r,t,n){const i={requestId:e.bidId,cpm:r.price,creativeId:r.crid||"-1",vastXml:r.adm,vastUrl:e.vastUrl,mediaType:"video",width:t,height:n,currency:"USD",netRevenue:!0,ttl:300,ad:r.adm,meta:{}};r.adomain&&r.adomain.length>0&&(i.meta.advertiserDomains=r.adomain);return i}(r,e,n,o))}));return s},getUserSyncs:function(e,r){const t=[];return e.pixelEnabled&&r.length&&((0,o.A)(r,"0.body.ext.telaria.userSync")||[]).forEach((e=>t.push({type:"image",url:e}))),t},onTimeout:function(e){let r=h(e);r&&(0,i.triggerPixel)(r)}};function u(){return encodeURIComponent(document.location.href)}function m(e){return""!==e&&void 0!==e?encodeURIComponent(e):""}function f(e,r){let t="";if(!(0,i.isEmpty)(e)){for(let r in e)"schain"!==r&&e.hasOwnProperty(r)&&!(0,i.isEmpty)(e[r])&&(t+=`&${r}=${e[r]}`);t+=function(e){if((0,i.isEmpty)(e))return"";let r=`&schain=${e.ver},${e.complete}`;return e.nodes.forEach((e=>{r+="!",r+=`${m(e.asi)},`,r+=`${m(e.sid)},`,r+=`${m(e.hp)},`,r+=`${m(e.rid)},`,r+=`${m(e.name)},`,r+=`${m(e.domain)}`})),r}((0,i.isEmpty)(r)?e.schain:r)}return t}const h=function(e){let r=(0,o.A)(e,"0.params.0");if(!(0,i.isEmpty)(r)){let e=`https://${l}`;return r=Object.assign({srcPageUrl:u()},r),e+=`${f(r)}`,e+="&hb=1&evt=TO",e}};(0,s.a$)(c),(0,n.E)("telariaBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=18433,e(e.s=r);var r}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[52023],{18433:(e,r,t)=>{var n=t(7873),i=t(91069),o=t(70433),s=t(57377),a=t(71371),d=t(37668);const p="tremorhub.com",l=`ads.${p}/ad/tag`,c=`events.${p}/diag`,u={code:"telaria",gvlid:202,aliases:[{code:"tremor",gvlid:202},{code:"tremorvideo",gvlid:202}],supportedMediaTypes:[a.G_],isBidRequestValid:function(e){return!!(e&&e.params&&e.params.adCode&&e.params.supplyCode)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{let n=function(e,r){let t,n,s=(0,o.A)(e,"mediaTypes.video.playerSize");s||(0,i.logWarn)("Although player size isn't required it is highly recommended");s&&(!(0,i.isArray)(s)||2!==s.length||isNaN(s[0])||isNaN(s[1])?"object"==typeof s&&(t=s[0][0],n=s[0][1]):(t=s[0],n=s[1]));let a=(0,o.A)(e,"params.supplyCode"),d=(0,o.A)(e,"params.adCode");if(a&&d){let i=`https://${a}.${l}?adCode=${d}`;t&&(i+=`&playerWidth=${t}`),n&&(i+=`&playerHeight=${n}`);const o=Object.assign({srcPageUrl:m()},e.params);return delete o.adCode,i+=`${h(o,e.schain)}`,i+=`&transactionId=${e.ortb2Imp?.ext?.tid}`,r&&(r.gdprConsent&&("boolean"==typeof r.gdprConsent.gdprApplies&&(i+="&gdpr="+(r.gdprConsent.gdprApplies?1:0)),r.gdprConsent.consentString&&(i+=`&gdpr_consent=${r.gdprConsent.consentString}`)),r.refererInfo&&r.refererInfo.page&&(i+=`&referrer=${encodeURIComponent(r.refererInfo.page)}`)),i+"&hb=1&fmt=json"}}(e,r);n&&t.push({method:"GET",url:n,bidId:e.bidId,vastUrl:n.split("&fmt=json")[0]})})),t},interpretResponse:function(e,r){let t,n,o,s=[];try{t=e.body,r.url.split("&").forEach((e=>{let r=e.toLowerCase();r.indexOf("player")>-1&&(r.indexOf("width")>-1?n=e.split("=")[1]:r.indexOf("height")>-1&&(o=e.split("=")[1]))}))}catch(e){(0,i.logError)(e),n=0,o=0}if(!t||t.error){let e=`in response for ${r.bidderCode} adapter`;t&&t.error&&(e+=`: ${t.error}`),(0,i.logError)(e)}else(0,i.isEmpty)(t.seatbid)||t.seatbid[0].bid.forEach((e=>{e&&s.push(function(e,r,t,n){const i={requestId:e.bidId,cpm:r.price,creativeId:r.crid||"-1",vastXml:r.adm,vastUrl:e.vastUrl,mediaType:"video",width:t,height:n,currency:"USD",netRevenue:!0,ttl:300,ad:r.adm,meta:{}};r.adomain&&r.adomain.length>0&&(i.meta.advertiserDomains=r.adomain);return i}(r,e,n,o))}));return s},getUserSyncs:function(e,r){const t=[];return e.pixelEnabled&&r.length&&((0,o.A)(r,"0.body.ext.telaria.userSync")||[]).forEach((e=>t.push({type:"image",url:e}))),t},onTimeout:function(e){let r=f(e);r&&(0,i.triggerPixel)(r)}};function m(){return encodeURIComponent(document.location.href)}function h(e,r){let t="";if(!(0,i.isEmpty)(e)){for(let r in e)"schain"!==r&&e.hasOwnProperty(r)&&!(0,i.isEmpty)(e[r])&&(t+=`&${r}=${e[r]}`);t+=(0,d.$h)((0,i.isEmpty)(r)?e.schain:r)}return t}const f=function(e){let r=(0,o.A)(e,"0.params.0");if(!(0,i.isEmpty)(r)){let e=`https://${c}`;return r=Object.assign({srcPageUrl:m()},r),e+=`${h(r)}`,e+="&hb=1&evt=TO",e}};(0,s.a$)(u),(0,n.E)("telariaBidAdapter")}},e=>{e.O(0,[12183,60802,51085],(()=>{return r=18433,e(e.s=r);var r}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[49136],{75674:(e,t,n)=>{n.d(t,{$d:()=>d,pq:()=>u,rz:()=>c,xO:()=>g,yS:()=>l,yY:()=>m});var r=n(71371),i=n(70433),a=n(43272);const o=/^[a-z0-9.+-]+:/i,s=e=>{if(!(e.requestId&&e.cpm&&e.creativeId&&e.ttl&&e.currency))return!1;switch(e.mediaType){case r.D4:return Boolean(e.width&&e.height&&e.ad);case r.G_:return Boolean(e.vastUrl||e.vastXml);case r.s6:return Boolean(e.native&&e.native.impressionTrackers&&e.native.impressionTrackers.length);default:return!1}},p=(e,t,n)=>{const{placementId:r,endpointId:i}=e.params;r?(n.placementId=r,n.type="publisher"):i&&(n.endpointId=i,n.type="network")},d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["placementId","endpointId"],t=arguments.length>1?arguments[1]:void 0;return function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{params:i,bidId:a,mediaTypes:o}=n;let s=Boolean(a&&i&&function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"some";for(let r=0;r<e.length;r++){const i=t[e[r]];if("some"===n&&i)return!0;if(!i)return!1}return"every"===n}(e,i,t));return s=o&&o[r.D4]?s&&Boolean(o[r.D4]&&o[r.D4].sizes):o&&o[r.G_]?s&&Boolean(o[r.G_]&&o[r.G_].playerSize):!(!o||!o[r.s6])&&(s&&Boolean(o[r.s6])),s}},l=e=>{const{adUrl:t,validBidRequests:n,bidderRequest:r}=e,a=e.placementProcessingFunction||u(),s=(0,i.A)(r,"ortb2.device"),p=(0,i.A)(r,"refererInfo.page",""),d=o.exec(p),l=d?.[0],c=[],g={deviceWidth:s?.w||0,deviceHeight:s?.h||0,language:s?.language?.split("-")[0]||"",secure:"https:"===l?1:0,host:(0,i.A)(r,"refererInfo.domain",""),page:p,placements:c,coppa:(0,i.A)(r,"ortb2.regs.coppa")?1:0,tmax:r.timeout};r.uspConsent&&(g.ccpa=r.uspConsent),r.gdprConsent&&(g.gdpr={consentString:r.gdprConsent.consentString}),r.gppConsent?(g.gpp=r.gppConsent.gppString,g.gpp_sid=r.gppConsent.applicableSections):r.ortb2?.regs?.gpp&&(g.gpp=r.ortb2.regs.gpp,g.gpp_sid=r.ortb2.regs.gpp_sid);const m=n.length;for(let e=0;e<m;e++){const t=n[e];c.push(a(t,r))}return{method:"POST",url:t,data:g}},c=e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=u();return l({adUrl:e,validBidRequests:t,bidderRequest:n,placementProcessingFunction:r})},g=e=>{let t=[];for(let n=0;n<e.body.length;n++){let r=e.body[n];if(s(r)){const e=r.adomain&&r.adomain.length?r.adomain:[];r.meta={...r.meta,advertiserDomains:e},t.push(r)}}return t},m=e=>(t,n,r,i,o)=>{const s=t.iframeEnabled?"iframe":"image";let p=e+`/${s}?pbjs=1`;r&&r.consentString&&("boolean"==typeof r.gdprApplies?p+=`&gdpr=${Number(r.gdprApplies)}&gdpr_consent=${r.consentString}`:p+=`&gdpr=0&gdpr_consent=${r.consentString}`),i&&i.consentString&&(p+=`&ccpa_consent=${i.consentString}`),o?.gppString&&o?.applicableSections?.length&&(p+="&gpp="+o.gppString,p+="&gpp_sid="+o.applicableSections.join(","));return p+=`&coppa=${a.$W.getConfig("coppa")?1:0}`,[{type:s,url:p}]},u=e=>(t,n)=>{const i=e?.addPlacementType??p,a=(e=>{const{bidId:t,mediaTypes:n,transactionId:i,userIdAsEids:a}=e,o=e.schain||{},s=(e=>{try{return e.getFloor({currency:"USD",mediaType:"*",size:"*"}).floor}catch(e){return 0}})(e),p={bidId:t,schain:o,bidfloor:s};return n&&n[r.D4]?(p.adFormat=r.D4,p.sizes=n[r.D4].sizes):n&&n[r.G_]?(p.adFormat=r.G_,p.playerSize=n[r.G_].playerSize,p.minduration=n[r.G_].minduration,p.maxduration=n[r.G_].maxduration,p.mimes=n[r.G_].mimes,p.protocols=n[r.G_].protocols,p.startdelay=n[r.G_].startdelay,p.placement=n[r.G_].placement,p.plcmt=n[r.G_].plcmt,p.skip=n[r.G_].skip,p.skipafter=n[r.G_].skipafter,p.minbitrate=n[r.G_].minbitrate,p.maxbitrate=n[r.G_].maxbitrate,p.delivery=n[r.G_].delivery,p.playbackmethod=n[r.G_].playbackmethod,p.api=n[r.G_].api,p.linearity=n[r.G_].linearity):n&&n[r.s6]&&(p.native=n[r.s6],p.adFormat=r.s6),i&&(p.ext=p.ext||{},p.ext.tid=i),a&&a.length&&(p.eids=a),p})(t);return i(t,n,a),e?.addCustomFieldsToPlacement&&e.addCustomFieldsToPlacement(t,n,a),a}}}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[49136],{75674:(e,t,n)=>{n.d(t,{$d:()=>d,pq:()=>h,rz:()=>c,uM:()=>g,xO:()=>m,yS:()=>l,yY:()=>u});var r=n(71371),i=n(70433),a=n(43272);const o=/^[a-z0-9.+-]+:/i,s=e=>{if(!(e.requestId&&e.cpm&&e.creativeId&&e.ttl&&e.currency))return!1;switch(e.mediaType){case r.D4:return Boolean(e.width&&e.height&&e.ad);case r.G_:return Boolean(e.vastUrl||e.vastXml);case r.s6:return Boolean(e.native&&e.native.impressionTrackers&&e.native.impressionTrackers.length);default:return!1}},p=(e,t,n)=>{const{placementId:r,endpointId:i}=e.params;r?(n.placementId=r,n.type="publisher"):i&&(n.endpointId=i,n.type="network")},d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["placementId","endpointId"],t=arguments.length>1?arguments[1]:void 0;return function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{params:i,bidId:a,mediaTypes:o}=n;let s=Boolean(a&&i&&function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"some";for(let r=0;r<e.length;r++){const i=t[e[r]];if("some"===n&&i)return!0;if(!i)return!1}return"every"===n}(e,i,t));return s=o&&o[r.D4]?s&&Boolean(o[r.D4]&&o[r.D4].sizes):o&&o[r.G_]?s&&Boolean(o[r.G_]&&o[r.G_].playerSize):!(!o||!o[r.s6])&&(s&&Boolean(o[r.s6])),s}},l=e=>{const{adUrl:t,validBidRequests:n,bidderRequest:r}=e,a=e.placementProcessingFunction||h(),s=(0,i.A)(r,"ortb2.device"),p=(0,i.A)(r,"refererInfo.page",""),d=o.exec(p),l=d?.[0],c=[],g={deviceWidth:s?.w||0,deviceHeight:s?.h||0,language:s?.language?.split("-")[0]||"",secure:"https:"===l?1:0,host:(0,i.A)(r,"refererInfo.domain",""),page:p,placements:c,coppa:(0,i.A)(r,"ortb2.regs.coppa")?1:0,tmax:r.timeout};r.uspConsent&&(g.ccpa=r.uspConsent),r.gdprConsent&&(g.gdpr={consentString:r.gdprConsent.consentString}),r.gppConsent?(g.gpp=r.gppConsent.gppString,g.gpp_sid=r.gppConsent.applicableSections):r.ortb2?.regs?.gpp&&(g.gpp=r.ortb2.regs.gpp,g.gpp_sid=r.ortb2.regs.gpp_sid);const m=n.length;for(let e=0;e<m;e++){const t=n[e];c.push(a(t,r))}return{method:"POST",url:t,data:g}},c=e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=h();return l({adUrl:e,validBidRequests:t,bidderRequest:n,placementProcessingFunction:r})};function g(){let{addtlBidValidation:e=(e=>!0)}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){let n=[];for(let r=0;r<t.body.length;r++){let i=t.body[r];if(s(i)&&e(i)){const e=i.adomain&&i.adomain.length?i.adomain:[];i.meta={...i.meta,advertiserDomains:e},n.push(i)}}return n}}const m=g(),u=e=>(t,n,r,i,o)=>{const s=t.iframeEnabled?"iframe":"image";let p=e+`/${s}?pbjs=1`;r&&r.consentString&&("boolean"==typeof r.gdprApplies?p+=`&gdpr=${Number(r.gdprApplies)}&gdpr_consent=${r.consentString}`:p+=`&gdpr=0&gdpr_consent=${r.consentString}`),i&&i.consentString&&(p+=`&ccpa_consent=${i.consentString}`),o?.gppString&&o?.applicableSections?.length&&(p+="&gpp="+o.gppString,p+="&gpp_sid="+o.applicableSections.join(","));return p+=`&coppa=${a.$W.getConfig("coppa")?1:0}`,[{type:s,url:p}]},h=e=>(t,n)=>{const i=e?.addPlacementType??p,a=(e=>{const{bidId:t,mediaTypes:n,transactionId:i,userIdAsEids:a}=e,o=e.schain||{},s=(e=>{try{return e.getFloor({currency:"USD",mediaType:"*",size:"*"}).floor}catch(e){return 0}})(e),p={bidId:t,schain:o,bidfloor:s};return n&&n[r.D4]?(p.adFormat=r.D4,p.sizes=n[r.D4].sizes):n&&n[r.G_]?(p.adFormat=r.G_,p.playerSize=n[r.G_].playerSize,p.minduration=n[r.G_].minduration,p.maxduration=n[r.G_].maxduration,p.mimes=n[r.G_].mimes,p.protocols=n[r.G_].protocols,p.startdelay=n[r.G_].startdelay,p.placement=n[r.G_].placement,p.plcmt=n[r.G_].plcmt,p.skip=n[r.G_].skip,p.skipafter=n[r.G_].skipafter,p.minbitrate=n[r.G_].minbitrate,p.maxbitrate=n[r.G_].maxbitrate,p.delivery=n[r.G_].delivery,p.playbackmethod=n[r.G_].playbackmethod,p.api=n[r.G_].api,p.linearity=n[r.G_].linearity):n&&n[r.s6]&&(p.native=n[r.s6],p.adFormat=r.s6),i&&(p.ext=p.ext||{},p.ext.tid=i),a&&a.length&&(p.eids=a),p})(t);return i(t,n,a),e?.addCustomFieldsToPlacement&&e.addCustomFieldsToPlacement(t,n,a),a}}}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[18853],{18227:(e,t,i)=>{var n=i(7873),s=i(91069),a=i(68044),d=i(88910),r=i(11445),o=i(78969);let c,u,p={bids:[]};var m=Object.assign((0,d.Ay)({emptyUrl:"",analyticsType:"endpoint"}),{track(e){let{eventType:t,args:i}=e;void 0!==i&&(t===o.qY.BID_TIMEOUT?i.forEach((e=>{I(e,"timeout")})):t===o.qY.AUCTION_INIT?(p.auctionInit=i,u=i.timestamp):t===o.qY.BID_REQUESTED?function(e){let t=[];void 0!==e.bids&&e.bids.length&&e.bids.forEach((function(i){t.push({bidderCode:i.bidder,bidId:i.bidId,adUnitCode:i.adUnitCode,requestId:i.bidderRequestId,auctionId:i.auctionId,transactionId:i.transactionId,sizes:(0,s.parseSizesInput)(i.mediaTypes.banner.sizes).toString(),renderStatus:1,requestTimestamp:e.auctionStart})}));return t}(i).forEach((e=>{p.bids.push(e)})):t===o.qY.BID_RESPONSE?I(i,"response"):t===o.qY.BID_WON&&b({bidWon:I(i,"win")},"won")),t===o.qY.AUCTION_END&&b(p,"auctionEnd")}});function I(e,t){if("win"===t)return{bidderCode:e.bidder,bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,renderedSize:e.size,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:4,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp};{let i=p.bids.filter((t=>t.bidId===e.bidId||t.bidId===e.requestId))[0];Object.assign(i,{bidderCode:e.bidder,bidId:"timeout"===t?e.bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:"timeout"===t?3:2,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp})}}function b(e,t){let i=(0,s.getWindowLocation)();void 0!==e&&void 0!==e.auctionInit&&Object.assign(e.auctionInit,{host:i.host,path:i.pathname,search:i.search}),e.initOptions=c;let n=(0,s.buildUrl)({protocol:"https",hostname:c&&c.hostName||"us-central1-quikr-ebay.cloudfunctions.net",pathname:c&&c.pathName||"/prebid-analytics",search:{auctionTimestamp:u,terceptAnalyticsVersion:"v1.0.0",prebidVersion:"v9.4.1"}});(0,a.RD)(n,void 0,JSON.stringify(e),{method:"POST",contentType:"text/plain"})}m.originEnableAnalytics=m.enableAnalytics,m.enableAnalytics=function(e){c=e.options,m.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:m,code:"tercept"});(0,n.E)("terceptAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=18227,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[18853],{18227:(e,t,i)=>{var n=i(7873),s=i(91069),a=i(68044),d=i(88910),r=i(11445),o=i(78969);let c,u,p={bids:[]};var m=Object.assign((0,d.Ay)({emptyUrl:"",analyticsType:"endpoint"}),{track(e){let{eventType:t,args:i}=e;void 0!==i&&(t===o.qY.BID_TIMEOUT?i.forEach((e=>{I(e,"timeout")})):t===o.qY.AUCTION_INIT?(p.auctionInit=i,u=i.timestamp):t===o.qY.BID_REQUESTED?function(e){let t=[];void 0!==e.bids&&e.bids.length&&e.bids.forEach((function(i){t.push({bidderCode:i.bidder,bidId:i.bidId,adUnitCode:i.adUnitCode,requestId:i.bidderRequestId,auctionId:i.auctionId,transactionId:i.transactionId,sizes:(0,s.parseSizesInput)(i.mediaTypes.banner.sizes).toString(),renderStatus:1,requestTimestamp:e.auctionStart})}));return t}(i).forEach((e=>{p.bids.push(e)})):t===o.qY.BID_RESPONSE?I(i,"response"):t===o.qY.BID_WON&&b({bidWon:I(i,"win")},"won")),t===o.qY.AUCTION_END&&b(p,"auctionEnd")}});function I(e,t){if("win"===t)return{bidderCode:e.bidder,bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,renderedSize:e.size,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:4,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp};{let i=p.bids.filter((t=>t.bidId===e.bidId||t.bidId===e.requestId))[0];Object.assign(i,{bidderCode:e.bidder,bidId:"timeout"===t?e.bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:"timeout"===t?3:2,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp})}}function b(e,t){let i=(0,s.getWindowLocation)();void 0!==e&&void 0!==e.auctionInit&&Object.assign(e.auctionInit,{host:i.host,path:i.pathname,search:i.search}),e.initOptions=c;let n=(0,s.buildUrl)({protocol:"https",hostname:c&&c.hostName||"us-central1-quikr-ebay.cloudfunctions.net",pathname:c&&c.pathName||"/prebid-analytics",search:{auctionTimestamp:u,terceptAnalyticsVersion:"v1.0.0",prebidVersion:"v9.6.0"}});(0,a.RD)(n,void 0,JSON.stringify(e),{method:"POST",contentType:"text/plain"})}m.originEnableAnalytics=m.enableAnalytics,m.enableAnalytics=function(e){c=e.options,m.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:m,code:"tercept"});(0,n.E)("terceptAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=18227,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[76346],{26318:(e,r,t)=>{var s=t(7873),n=t(91069),i=t(71371),d=t(57377);const o="themoneytizer",a={aliases:[o],code:o,supportedMediaTypes:[i.D4],gvlid:1265,isBidRequestValid:function(e){return!(!e||!e.params.pid)||((0,n.logWarn)("Invalid bid request - missing required bid params"),!1)},buildRequests:function(e,r){return e.map((e=>{const t={ext:e.ortb2Imp.ext,params:e.params,size:e.mediaTypes,adunit:e.adUnitCode,request_id:e.bidId,timeout:r.timeout,ortb2:r.ortb2,eids:e.userIdAsEids,id:e.auctionId,schain:e.schain,version:"9.4.1",excl_sync:window.tmzrBidderExclSync},s=e.params.baseUrl||"https://ads.biddertmz.com/m/";return r&&r.refererInfo&&(t.referer=r.refererInfo.topmostLocation,t.referer_canonical=r.refererInfo.canonicalUrl),r&&r.gdprConsent&&(t.consent_string=r.gdprConsent.consentString,t.consent_required=r.gdprConsent.gdprApplies),e.params.test&&(t.test=e.params.test),t.userEids=e.userIdAsEids||[],{method:"POST",url:s,data:JSON.stringify(t)}}))},interpretResponse:function(e,r){const t=[],s=e.body;return s&&s.bid&&!s.timeout&&s.bid.ad&&t.push(s.bid),t},getUserSyncs:function(e,r){if(!e.iframeEnabled&&!e.pixelEnabled)return[];let t=[];return r.map((e=>{e.body.c_sync&&e.body.c_sync.bidder_status.map((e=>{"redirect"===e.usersync.type&&(e.usersync.type="image"),t.push(e.usersync)}))})),t},onTimeout:function(e){(0,n.logInfo)("The Moneytizer - Timeout from adapter",e)}};(0,d.a$)(a),(0,s.E)("themoneytizerBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=26318,e(e.s=r);var r}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[76346],{26318:(e,r,t)=>{var s=t(7873),n=t(91069),i=t(71371),d=t(57377);const o="themoneytizer",a={aliases:[o],code:o,supportedMediaTypes:[i.D4],gvlid:1265,isBidRequestValid:function(e){return!(!e||!e.params.pid)||((0,n.logWarn)("Invalid bid request - missing required bid params"),!1)},buildRequests:function(e,r){return e.map((e=>{const t={ext:e.ortb2Imp.ext,params:e.params,size:e.mediaTypes,adunit:e.adUnitCode,request_id:e.bidId,timeout:r.timeout,ortb2:r.ortb2,eids:e.userIdAsEids,id:e.auctionId,schain:e.schain,version:"9.6.0",excl_sync:window.tmzrBidderExclSync},s=e.params.baseUrl||"https://ads.biddertmz.com/m/";return r&&r.refererInfo&&(t.referer=r.refererInfo.topmostLocation,t.referer_canonical=r.refererInfo.canonicalUrl),r&&r.gdprConsent&&(t.consent_string=r.gdprConsent.consentString,t.consent_required=r.gdprConsent.gdprApplies),e.params.test&&(t.test=e.params.test),t.userEids=e.userIdAsEids||[],{method:"POST",url:s,data:JSON.stringify(t)}}))},interpretResponse:function(e,r){const t=[],s=e.body;return s&&s.bid&&!s.timeout&&s.bid.ad&&t.push(s.bid),t},getUserSyncs:function(e,r){if(!e.iframeEnabled&&!e.pixelEnabled)return[];let t=[];return r.map((e=>{e.body.c_sync&&e.body.c_sync.bidder_status.map((e=>{"redirect"===e.usersync.type&&(e.usersync.type="image"),t.push(e.usersync)}))})),t},onTimeout:function(e){(0,n.logInfo)("The Moneytizer - Timeout from adapter",e)}};(0,d.a$)(a),(0,s.E)("themoneytizerBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=26318,e(e.s=r);var r}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[60867],{54469:(e,n,t)=>{var r=t(7873),i=t(91069),a=t(57377),d=t(12938),s=t(76568);const o="trion",p="_trion_",c=(0,d.vM)({bidderCode:o}),u={code:o,isBidRequestValid:function(e){return!!(e&&e.params&&e.params.pubId&&e.params.sectionId)},buildRequests:function(e,n){for(var t=[],r=0;r<e.length;r++){var i=e[r],a=m(i,n);t.push({method:"GET",url:"https://in-appadvertising.com/api/bidRequest",bidRequest:i,data:a})}return t},interpretResponse:function(e,n){var t={},r=[],i=n.bidRequest,a=e?e.body:{};if(a&&a.bidId&&i){var d=a.result;if(d&&d.cpm&&d.placeBid&&d.ad){var s=parseInt(d.cpm,10)/100;t.requestId=i.bidId,t.cpm=s,t.ad=d.ad,t.width=d.width,t.height=d.height,t.ttl=d.ttl,t.creativeId=d.creativeId,t.currency=d.currency,t.netRevenue=d.netRevenue,d.adomain&&(t.meta={advertiserDomains:d.adomain}),r.push(t)}}return r},getUserSyncs:function(e,n,t,r){if(e.iframeEnabled)return function(){try{window.addEventListener&&window.addEventListener("message",f)}catch(e){}}(),[{type:"iframe",url:v(t,r)}]}};function v(e,n){var t=(g(p+"lps")||":").split(":")||[],r=t[0]||-1,i=t[1]||-1,a=l(),d="";return e&&(e.consentString&&(d+="&gc="+encodeURIComponent(e.consentString)),d+="&g="+(e.gdprApplies?1:0)),n&&(d="&up="+encodeURIComponent(n)),`https://in-appadvertising.com/api/userSync.html?p=${r}&s=${i}${d}&u=${a}`}function l(){var e="";try{if(window.top==window)e=window.location.href;else try{e=window.top.location.href}catch(n){e=document.referrer}}catch(e){}return e}function m(e,n){var t=(0,i.getBidIdParameter)("pubId",e.params),r=(0,i.getBidIdParameter)("sectionId",e.params),a=l(),d=function(e){return e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes}(e),o=(0,i.parseSizesInput)(d).join(","),c=navigator&&navigator.webdriver?"1":"0",u=document.hidden?"1":"0",v=encodeURIComponent(document.visibilityState),m=window.TR_INT_T&&-1!=window.TR_INT_T?window.TR_INT_T:null;m||(m=g(p+"int_t")),m&&I(p+"int_t",m),I(p+"lps",t+":"+r);var f="";if(f=(0,s.v)(f,"bidId",e.bidId),f=(0,s.v)(f,"pubId",t),f=(0,s.v)(f,"sectionId",r),f=(0,s.v)(f,"vers","9.4.1"),a&&(f+="url="+a+"&"),o&&(f+="sizes="+o+"&"),m&&(f=(0,s.v)(f,"int_t",encodeURIComponent(m))),f=(0,s.v)(f,"tr_wd",c),f=(0,s.v)(f,"tr_hd",u),f=(0,s.v)(f,"tr_vs",v),n&&n.gdprConsent){var h=n.gdprConsent;h&&(h.consentString&&(f=(0,s.v)(f,"gdprc",encodeURIComponent(h.consentString))),f=(0,s.v)(f,"gdpr",h.gdprApplies?1:0))}return n&&n.uspConsent&&(f=(0,s.v)(f,"usp",encodeURIComponent(n.uspConsent))),f.lastIndexOf("&")===f.length-1&&(f=f.substring(0,f.length-1)),f}function g(e){var n=null;try{c.hasLocalStorage()&&(n=c.getDataFromLocalStorage(e))}catch(e){}return n}function I(e,n){try{c.hasLocalStorage()&&c.setDataInLocalStorage(e,n)}catch(e){}}function f(e){var n=e.data||"";if(n.indexOf&&n.split&&0===n.indexOf(p+"userId")){var t=n.split(p+"userId=")[1];t&&I(p+"int_t",t)}}(0,a.a$)(u),(0,r.E)("trionBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return n=54469,e(e.s=n);var n}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[60867],{54469:(e,n,t)=>{var r=t(7873),i=t(91069),a=t(57377),d=t(12938),s=t(76568);const o="trion",p="_trion_",c=(0,d.vM)({bidderCode:o}),u={code:o,isBidRequestValid:function(e){return!!(e&&e.params&&e.params.pubId&&e.params.sectionId)},buildRequests:function(e,n){for(var t=[],r=0;r<e.length;r++){var i=e[r],a=m(i,n);t.push({method:"GET",url:"https://in-appadvertising.com/api/bidRequest",bidRequest:i,data:a})}return t},interpretResponse:function(e,n){var t={},r=[],i=n.bidRequest,a=e?e.body:{};if(a&&a.bidId&&i){var d=a.result;if(d&&d.cpm&&d.placeBid&&d.ad){var s=parseInt(d.cpm,10)/100;t.requestId=i.bidId,t.cpm=s,t.ad=d.ad,t.width=d.width,t.height=d.height,t.ttl=d.ttl,t.creativeId=d.creativeId,t.currency=d.currency,t.netRevenue=d.netRevenue,d.adomain&&(t.meta={advertiserDomains:d.adomain}),r.push(t)}}return r},getUserSyncs:function(e,n,t,r){if(e.iframeEnabled)return function(){try{window.addEventListener&&window.addEventListener("message",f)}catch(e){}}(),[{type:"iframe",url:v(t,r)}]}};function v(e,n){var t=(g(p+"lps")||":").split(":")||[],r=t[0]||-1,i=t[1]||-1,a=l(),d="";return e&&(e.consentString&&(d+="&gc="+encodeURIComponent(e.consentString)),d+="&g="+(e.gdprApplies?1:0)),n&&(d="&up="+encodeURIComponent(n)),`https://in-appadvertising.com/api/userSync.html?p=${r}&s=${i}${d}&u=${a}`}function l(){var e="";try{if(window.top==window)e=window.location.href;else try{e=window.top.location.href}catch(n){e=document.referrer}}catch(e){}return e}function m(e,n){var t=(0,i.getBidIdParameter)("pubId",e.params),r=(0,i.getBidIdParameter)("sectionId",e.params),a=l(),d=function(e){return e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes}(e),o=(0,i.parseSizesInput)(d).join(","),c=navigator&&navigator.webdriver?"1":"0",u=document.hidden?"1":"0",v=encodeURIComponent(document.visibilityState),m=window.TR_INT_T&&-1!=window.TR_INT_T?window.TR_INT_T:null;m||(m=g(p+"int_t")),m&&I(p+"int_t",m),I(p+"lps",t+":"+r);var f="";if(f=(0,s.v)(f,"bidId",e.bidId),f=(0,s.v)(f,"pubId",t),f=(0,s.v)(f,"sectionId",r),f=(0,s.v)(f,"vers","9.6.0"),a&&(f+="url="+a+"&"),o&&(f+="sizes="+o+"&"),m&&(f=(0,s.v)(f,"int_t",encodeURIComponent(m))),f=(0,s.v)(f,"tr_wd",c),f=(0,s.v)(f,"tr_hd",u),f=(0,s.v)(f,"tr_vs",v),n&&n.gdprConsent){var h=n.gdprConsent;h&&(h.consentString&&(f=(0,s.v)(f,"gdprc",encodeURIComponent(h.consentString))),f=(0,s.v)(f,"gdpr",h.gdprApplies?1:0))}return n&&n.uspConsent&&(f=(0,s.v)(f,"usp",encodeURIComponent(n.uspConsent))),f.lastIndexOf("&")===f.length-1&&(f=f.substring(0,f.length-1)),f}function g(e){var n=null;try{c.hasLocalStorage()&&(n=c.getDataFromLocalStorage(e))}catch(e){}return n}function I(e,n){try{c.hasLocalStorage()&&c.setDataInLocalStorage(e,n)}catch(e){}}function f(e){var n=e.data||"";if(n.indexOf&&n.split&&0===n.indexOf(p+"userId")){var t=n.split(p+"userId=")[1];t&&I(p+"int_t",t)}}(0,a.a$)(u),(0,r.E)("trionBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return n=54469,e(e.s=n);var n}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[98282],{26504:(e,t,r)=>{var n=r(7873),i=r(70433),o=r(91069),a=r(71371),s=r(57377),p=r(43272),d=r(12938),l=r(76568);const u="triplelift";let c=null,m=null;const f=(0,d.vM)({bidderCode:u}),g={gvlid:28,code:u,supportedMediaTypes:[a.D4,a.G_],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",n=function(e,t){let r={},{schain:n}=e[0];const a=function(e){const t={},r={},n={},i=e.ortb2||{},a=function(){const e=f.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,o.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},i.site),p=Object.assign({},i.user);if(a){p.data=p.data||[];try{p.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,o.logError)("Triplelift: error adding 1plusX segments: ",e)}}x(r,s),x(n,p),(0,o.isEmpty)(r)||(t.context=r);(0,o.isEmpty)(n)||(t.user=n);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return b(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,o.logWarn)("Video size not defined",e)}t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!y(e)&&(r.banner={format:_(e.sizes)}),(0,o.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};x(r,e.ext),(0,o.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,o.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let s=[];e[0].userIdAsEids&&(s=i.A(e[0],"userIdAsEids"),r.user={ext:{eids:s}});let p=function(e,t){let r={};(0,o.isEmpty)(e)||(r.schain={...e});(0,o.isEmpty)(t)||(r.fpd={...t});return r}(n,a);(0,o.isEmpty)(p)||(r.ext=p);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.v)(r,"lib","prebid"),r=(0,l.v)(r,"v","9.4.1"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.v)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.v)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(c=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.v)(r,"gdpr",c.toString()),void 0!==t.gdprConsent.consentString&&(m=t.gdprConsent.consentString,r=(0,l.v)(r,"cmp_cs",m))),t&&t.uspConsent&&(r=(0,l.v)(r,"us_privacy",t.uspConsent)),t?.paapi?.enabled&&(r=(0,l.v)(r,"fledge",t.paapi.enabled)),!0===p.$W.getConfig("coppa")&&(r=(0,l.v)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,o.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:n,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,n=e.body.bids||[];const i=e.body.paapi||[];if(n=n.map((e=>function(e,t){let r={},n=t.width||1,i=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:n,height:i,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},b(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(b(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),i.length>0){const e=i.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,o.logMessage)("Response with FLEDGE:",{bids:n,fledgeAuctionConfigs:e}),{bids:n,paapi:e}}return n},getUserSyncs:function(e,t,r,n,i){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.v)(a,"px",1),a=(0,l.v)(a,"src","prebid")),(null!==m||c)&&(a=(0,l.v)(a,"gdpr",c),a=(0,l.v)(a,"cmp_cs",m)),n&&(a=(0,l.v)(a,"us_privacy",n)),i&&(i.gppString&&(a=(0,l.v)(a,"gpp",i.gppString)),i.applicableSections&&0!==i.applicableSections.length&&(a=(0,l.v)(a,"gpp_sid",i.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function b(e){return v(e)&&(y(e)||function(e){return v(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function y(e){return v(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function v(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function h(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:b(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,o.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function x(e,t){(0,o.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function _(e){return e.filter(E).map((function(e){return{w:e[0],h:e[1]}}))}function E(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,s.a$)(g),(0,n.E)("tripleliftBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return t=26504,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[98282],{26504:(e,t,r)=>{var n=r(7873),i=r(70433),o=r(91069),a=r(71371),s=r(57377),p=r(43272),d=r(12938),l=r(76568);const u="triplelift";let c=null,m=null;const f=(0,d.vM)({bidderCode:u}),g={gvlid:28,code:u,supportedMediaTypes:[a.D4,a.G_],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",n=function(e,t){let r={},{schain:n}=e[0];const a=function(e){const t={},r={},n={},i=e.ortb2||{},a=function(){const e=f.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,o.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},i.site),p=Object.assign({},i.user);if(a){p.data=p.data||[];try{p.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,o.logError)("Triplelift: error adding 1plusX segments: ",e)}}x(r,s),x(n,p),(0,o.isEmpty)(r)||(t.context=r);(0,o.isEmpty)(n)||(t.user=n);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return b(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,o.logWarn)("Video size not defined",e)}t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!y(e)&&(r.banner={format:_(e.sizes)}),(0,o.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};x(r,e.ext),(0,o.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,o.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let s=[];e[0].userIdAsEids&&(s=i.A(e[0],"userIdAsEids"),r.user={ext:{eids:s}});let p=function(e,t){let r={};(0,o.isEmpty)(e)||(r.schain={...e});(0,o.isEmpty)(t)||(r.fpd={...t});return r}(n,a);(0,o.isEmpty)(p)||(r.ext=p);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.v)(r,"lib","prebid"),r=(0,l.v)(r,"v","9.6.0"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.v)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.v)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(c=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.v)(r,"gdpr",c.toString()),void 0!==t.gdprConsent.consentString&&(m=t.gdprConsent.consentString,r=(0,l.v)(r,"cmp_cs",m))),t&&t.uspConsent&&(r=(0,l.v)(r,"us_privacy",t.uspConsent)),t?.paapi?.enabled&&(r=(0,l.v)(r,"fledge",t.paapi.enabled)),!0===p.$W.getConfig("coppa")&&(r=(0,l.v)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,o.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:n,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,n=e.body.bids||[];const i=e.body.paapi||[];if(n=n.map((e=>function(e,t){let r={},n=t.width||1,i=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:n,height:i,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},b(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(b(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),i.length>0){const e=i.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,o.logMessage)("Response with FLEDGE:",{bids:n,fledgeAuctionConfigs:e}),{bids:n,paapi:e}}return n},getUserSyncs:function(e,t,r,n,i){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.v)(a,"px",1),a=(0,l.v)(a,"src","prebid")),(null!==m||c)&&(a=(0,l.v)(a,"gdpr",c),a=(0,l.v)(a,"cmp_cs",m)),n&&(a=(0,l.v)(a,"us_privacy",n)),i&&(i.gppString&&(a=(0,l.v)(a,"gpp",i.gppString)),i.applicableSections&&0!==i.applicableSections.length&&(a=(0,l.v)(a,"gpp_sid",i.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function b(e){return v(e)&&(y(e)||function(e){return v(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function y(e){return v(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function v(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function h(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:b(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,o.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function x(e,t){(0,o.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function _(e){return e.filter(E).map((function(e){return{w:e[0],h:e[1]}}))}function E(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,s.a$)(g),(0,n.E)("tripleliftBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return t=26504,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[94183],{63429:(e,r,t)=>{var i=t(7873),a=t(63172),s=t(91069),n=t(70433),o=t(43272),p=t(57377),d=t(71371);const u="ttd",m=1,c=2;function l(e){return{ttdprebid:{ver:"TTD-PREBID-2023.09.05",pbjs:"9.4.1",keywords:e.site?.keywords?e.site.keywords.split(",").map((e=>e.trim())):[]}}}function g(e){let r={};return e.gdprConsent&&"boolean"==typeof e.gdprConsent.gdprApplies&&a.J(r,"ext.gdpr",e.gdprConsent.gdprApplies?1:0),e.uspConsent&&a.J(r,"ext.us_privacy",e.uspConsent),!0===o.$W.getConfig("coppa")&&(r.coppa=1),e.ortb2?.regs&&s.mergeDeep(r,e.ortb2.regs),r}function b(e,r){let t={tid:r?.ortb2?.source?.tid};return e[0].schain&&a.J(t,"ext.schain",e[0].schain),t}function f(e){const r=navigator.language||navigator.browserLanguage||navigator.userLanguage||navigator.systemLanguage;let t={ua:navigator.userAgent,dnt:s.getDNT()?1:0,language:r,connectiontype:y()};return s.mergeDeep(t,e.device),t}function y(){const e=navigator.connection||navigator.webkitConnection;if(!e)return 0;switch(e.type){case"ethernet":return 1;case"wifi":return 2;case"cellular":switch(e.effectiveType){case"slow-2g":case"2g":return 4;case"3g":return 5;case"4g":return 6;default:return 3}default:return 0}}function h(e,r){let t={};e.gdprConsent&&a.J(t,"ext.consent",e.gdprConsent.consentString),s.isStr(n.A(e,"bids.0.userId.tdid"))&&(t.buyeruid=e.bids[0].userId.tdid);var i=n.A(e,"bids.0.userIdAsEids");return i&&i.length&&a.J(t,"ext.eids",i),s.mergeDeep(t,r.user),t}function v(e,r){var t=s.mergeDeep({page:n.A(e,"refererInfo.page"),ref:n.A(e,"refererInfo.ref"),publisher:{id:n.A(e,"bids.0.params.publisherId")}},r.site),i=e.refererInfo.domain;return i&&a.J(t,"publisher.domain",i),t}function I(e){let r={id:e.bidId};const t=n.A(e,"ortb2Imp.ext.gpid")||e.params.placementId;t&&(r.tagid=t);const i=n.A(e,"mediaTypes.video");let a={};n.A(e,"mediaTypes.banner")&&(a[d.D4]=function(e){const r=function(e){const r=s.parseSizesInput(e).filter((e=>e)).map((e=>e.split("x"))).map((e=>({width:parseInt(e[0]),height:parseInt(e[1])})));return r}(e.mediaTypes.banner.sizes).map((e=>({w:e.width,h:e.height}))),t=parseInt(n.A(e,"mediaTypes.banner.pos")),i=n.A(e,"params.banner.expdir");let a={};t&&(a.pos=t);i&&Array.isArray(i)&&(a.expdir=i);const o=Object.assign({w:r[0].w,h:r[0].h,format:r},a),p=n.A(e,"ortb2Imp.battr");p&&(o.battr=p);return o}(e)),i&&(a[d.G_]=function(e){{let r=n.A(e,"mediaTypes.video.minduration");const t=n.A(e,"mediaTypes.video.maxduration"),i=n.A(e,"mediaTypes.video.playerSize"),a=n.A(e,"mediaTypes.video.api"),o=n.A(e,"mediaTypes.video.mimes"),p=n.A(e,"mediaTypes.video.placement"),d=n.A(e,"mediaTypes.video.plcmt"),u=n.A(e,"mediaTypes.video.protocols"),m=n.A(e,"mediaTypes.video.playbackmethod"),c=n.A(e,"mediaTypes.video.pos"),l=n.A(e,"mediaTypes.video.startdelay"),g=n.A(e,"mediaTypes.video.skip"),b=n.A(e,"mediaTypes.video.skipmin"),f=n.A(e,"mediaTypes.video.skipafter"),y=n.A(e,"mediaTypes.video.minbitrate"),h=n.A(e,"mediaTypes.video.maxbitrate");r&&s.isInteger(r)||(r=0);let v={minduration:r,maxduration:t,api:a,mimes:o,placement:p,protocols:u};void 0!==i&&(s.isArray(i[0])?(v.w=parseInt(i[0][0]),v.h=parseInt(i[0][1])):s.isNumber(i[0])&&(v.w=parseInt(i[0]),v.h=parseInt(i[1]))),m&&(v.playbackmethod=m),d&&(v.plcmt=d),c&&(v.pos=c),l&&s.isInteger(l)&&(v.startdelay=l),!g||0!==g&&1!==g||(v.skip=g),b&&s.isInteger(b)&&(v.skipmin=b),f&&s.isInteger(f)&&(v.skipafter=f),y&&s.isInteger(y)&&(v.minbitrate=y),h&&s.isInteger(h)&&(v.maxbitrate=h);const I=n.A(e,"ortb2Imp.battr");return I&&(v.battr=I),v}}(e)),Object.assign(r,a);let o=function(e){if(e.params.bidfloor)return e.params.bidfloor;if(!s.isFn(e.getFloor))return null;let r=e.getFloor({currency:"USD",mediaType:"*",size:"*"});return s.isPlainObject(r)&&!isNaN(r.floor)&&"USD"===r.currency?r.floor:null}(e);o&&(r.bidfloor=parseFloat(o),r.bidfloorcur="USD");const p=n.A(e,"ortb2Imp.secure");return r.secure=(0,s.isNumber)(p)?p:1,s.mergeDeep(r,e.ortb2Imp),r}const A={code:u,gvlid:21,aliases:["thetradedesk"],supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){if(!e||!e.params)return s.logWarn(u+": Missing bid parameters"),!1;if(!e.params.supplySourceId)return s.logWarn(u+": Missing required parameter params.supplySourceId"),!1;if(!/^[\w+]+$/.test(e.params.supplySourceId))return s.logWarn(u+": supplySourceId must only contain alphabetic characters"),!1;if(!e.params.publisherId)return s.logWarn(u+": Missing required parameter params.publisherId"),!1;if(e.params.publisherId.length>32)return s.logWarn(u+": params.publisherId must be 32 characters or less"),!1;if(e.params.bidfloor&&isNaN(parseFloat(e.params.bidfloor)))return!1;const r=n.A(e,"ortb2Imp.ext.gpid");if(!e.params.placementId&&!r)return s.logWarn(u+": one of params.placementId or gpid (via the GPT module https://docs.prebid.org/dev-docs/modules/gpt-pre-auction.html) must be passed"),!1;const t=n.A(e,"mediaTypes.banner"),i=n.A(e,"mediaTypes.video");if(!t&&!i)return s.logWarn(u+": one of mediaTypes.banner or mediaTypes.video must be passed"),!1;if(i){if(!i.maxduration||!s.isInteger(i.maxduration))return s.logWarn(u+": mediaTypes.video.maxduration must be set to the maximum video ad duration in seconds"),!1;if(!i.api||0===i.api.length)return s.logWarn(u+": mediaTypes.video.api should be an array of supported api frameworks. See the Open RTB v2.5 spec for valid values"),!1;if(!i.mimes||0===i.mimes.length)return s.logWarn(u+": mediaTypes.video.mimes should be an array of supported mime types"),!1;if(!i.protocols)return s.logWarn(u+": mediaTypes.video.protocols should be an array of supported protocols. See the Open RTB v2.5 spec for valid values"),!1}return!0},buildRequests:function(e,r){const t=r.ortb2||{};let i={id:r.bidderRequestId,imp:e.map((e=>I(e))),site:v(r,t),device:f(t),user:h(r,t),at:1,cur:["USD"],regs:g(r),source:b(e,r),ext:l(t)};return t&&t.bcat&&(i.bcat=t.bcat),t&&t.badv&&(i.badv=t.badv),t&&t.app&&(i.app=t.app),t&&t.pmp&&(i.pmp=t.pmp),{method:"POST",url:"https://direct.adsrvr.org/bid/bidder/"+r.bids[0].params.supplySourceId,data:i,options:{withCredentials:!0}}},interpretResponse:function(e,r){let t=n.A(e,"body.seatbid");const i=n.A(e,"body.cur");if(!t||0===t.length)return[];let a=[],o=n.A(r,"data.imp");return t.forEach((e=>{e.bid.forEach((e=>{let r=o.find((r=>r.id===e.impid));const t=e.price||0;let n={requestId:e.impid,cpm:t,creativeId:e.crid,dealId:e.dealid||null,currency:i||"USD",netRevenue:!0,ttl:e.ttl||360,meta:{}};e.adomain&&e.adomain.length>0&&(n.meta.advertiserDomains=e.adomain),e.ext.mediatype===m?Object.assign(n,{width:e.w,height:e.h,ad:s.replaceAuctionPrice(e.adm,t),mediaType:d.D4}):e.ext.mediatype===c&&(Object.assign(n,{width:r.video.w,height:r.video.h,mediaType:d.G_}),e.nurl?n.vastUrl=s.replaceAuctionPrice(e.nurl,t):n.vastXml=s.replaceAuctionPrice(e.adm,t)),a.push(n)}))})),a},getUserSyncs:function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const a=[];let s=`&gdpr=${t.gdprApplies?1:0}&gdpr_consent=${encodeURIComponent(t.consentString)}`,n=`https://match.adsrvr.org/track/usersync?us_privacy=${encodeURIComponent(i)}${s}`;return e.pixelEnabled?a.push({type:"image",url:n+"&ust=image"}):e.iframeEnabled&&a.push({type:"iframe",url:n+"&ust=iframe"}),a}};(0,p.a$)(A),(0,i.E)("ttdBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=63429,e(e.s=r);var r}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[94183],{63429:(e,r,t)=>{var i=t(7873),a=t(63172),s=t(91069),n=t(70433),o=t(43272),p=t(57377),d=t(71371);const u="ttd",m=1,c=2;function l(e){return{ttdprebid:{ver:"TTD-PREBID-2023.09.05",pbjs:"9.6.0",keywords:e.site?.keywords?e.site.keywords.split(",").map((e=>e.trim())):[]}}}function g(e){let r={};return e.gdprConsent&&"boolean"==typeof e.gdprConsent.gdprApplies&&a.J(r,"ext.gdpr",e.gdprConsent.gdprApplies?1:0),e.uspConsent&&a.J(r,"ext.us_privacy",e.uspConsent),!0===o.$W.getConfig("coppa")&&(r.coppa=1),e.ortb2?.regs&&s.mergeDeep(r,e.ortb2.regs),r}function b(e,r){let t={tid:r?.ortb2?.source?.tid};return e[0].schain&&a.J(t,"ext.schain",e[0].schain),t}function f(e){const r=navigator.language||navigator.browserLanguage||navigator.userLanguage||navigator.systemLanguage;let t={ua:navigator.userAgent,dnt:s.getDNT()?1:0,language:r,connectiontype:y()};return s.mergeDeep(t,e.device),t}function y(){const e=navigator.connection||navigator.webkitConnection;if(!e)return 0;switch(e.type){case"ethernet":return 1;case"wifi":return 2;case"cellular":switch(e.effectiveType){case"slow-2g":case"2g":return 4;case"3g":return 5;case"4g":return 6;default:return 3}default:return 0}}function h(e,r){let t={};e.gdprConsent&&a.J(t,"ext.consent",e.gdprConsent.consentString),s.isStr(n.A(e,"bids.0.userId.tdid"))&&(t.buyeruid=e.bids[0].userId.tdid);var i=n.A(e,"bids.0.userIdAsEids");return i&&i.length&&a.J(t,"ext.eids",i),s.mergeDeep(t,r.user),t}function v(e,r){var t=s.mergeDeep({page:n.A(e,"refererInfo.page"),ref:n.A(e,"refererInfo.ref"),publisher:{id:n.A(e,"bids.0.params.publisherId")}},r.site),i=e.refererInfo.domain;return i&&a.J(t,"publisher.domain",i),t}function I(e){let r={id:e.bidId};const t=n.A(e,"ortb2Imp.ext.gpid")||e.params.placementId;t&&(r.tagid=t);const i=n.A(e,"mediaTypes.video");let a={};n.A(e,"mediaTypes.banner")&&(a[d.D4]=function(e){const r=function(e){const r=s.parseSizesInput(e).filter((e=>e)).map((e=>e.split("x"))).map((e=>({width:parseInt(e[0]),height:parseInt(e[1])})));return r}(e.mediaTypes.banner.sizes).map((e=>({w:e.width,h:e.height}))),t=parseInt(n.A(e,"mediaTypes.banner.pos")),i=n.A(e,"params.banner.expdir");let a={};t&&(a.pos=t);i&&Array.isArray(i)&&(a.expdir=i);const o=Object.assign({w:r[0].w,h:r[0].h,format:r},a),p=n.A(e,"ortb2Imp.battr");p&&(o.battr=p);return o}(e)),i&&(a[d.G_]=function(e){{let r=n.A(e,"mediaTypes.video.minduration");const t=n.A(e,"mediaTypes.video.maxduration"),i=n.A(e,"mediaTypes.video.playerSize"),a=n.A(e,"mediaTypes.video.api"),o=n.A(e,"mediaTypes.video.mimes"),p=n.A(e,"mediaTypes.video.placement"),d=n.A(e,"mediaTypes.video.plcmt"),u=n.A(e,"mediaTypes.video.protocols"),m=n.A(e,"mediaTypes.video.playbackmethod"),c=n.A(e,"mediaTypes.video.pos"),l=n.A(e,"mediaTypes.video.startdelay"),g=n.A(e,"mediaTypes.video.skip"),b=n.A(e,"mediaTypes.video.skipmin"),f=n.A(e,"mediaTypes.video.skipafter"),y=n.A(e,"mediaTypes.video.minbitrate"),h=n.A(e,"mediaTypes.video.maxbitrate");r&&s.isInteger(r)||(r=0);let v={minduration:r,maxduration:t,api:a,mimes:o,placement:p,protocols:u};void 0!==i&&(s.isArray(i[0])?(v.w=parseInt(i[0][0]),v.h=parseInt(i[0][1])):s.isNumber(i[0])&&(v.w=parseInt(i[0]),v.h=parseInt(i[1]))),m&&(v.playbackmethod=m),d&&(v.plcmt=d),c&&(v.pos=c),l&&s.isInteger(l)&&(v.startdelay=l),!g||0!==g&&1!==g||(v.skip=g),b&&s.isInteger(b)&&(v.skipmin=b),f&&s.isInteger(f)&&(v.skipafter=f),y&&s.isInteger(y)&&(v.minbitrate=y),h&&s.isInteger(h)&&(v.maxbitrate=h);const I=n.A(e,"ortb2Imp.battr");return I&&(v.battr=I),v}}(e)),Object.assign(r,a);let o=function(e){if(e.params.bidfloor)return e.params.bidfloor;if(!s.isFn(e.getFloor))return null;let r=e.getFloor({currency:"USD",mediaType:"*",size:"*"});return s.isPlainObject(r)&&!isNaN(r.floor)&&"USD"===r.currency?r.floor:null}(e);o&&(r.bidfloor=parseFloat(o),r.bidfloorcur="USD");const p=n.A(e,"ortb2Imp.secure");return r.secure=(0,s.isNumber)(p)?p:1,s.mergeDeep(r,e.ortb2Imp),r}const A={code:u,gvlid:21,aliases:["thetradedesk"],supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){if(!e||!e.params)return s.logWarn(u+": Missing bid parameters"),!1;if(!e.params.supplySourceId)return s.logWarn(u+": Missing required parameter params.supplySourceId"),!1;if(!/^[\w+]+$/.test(e.params.supplySourceId))return s.logWarn(u+": supplySourceId must only contain alphabetic characters"),!1;if(!e.params.publisherId)return s.logWarn(u+": Missing required parameter params.publisherId"),!1;if(e.params.publisherId.length>32)return s.logWarn(u+": params.publisherId must be 32 characters or less"),!1;if(e.params.bidfloor&&isNaN(parseFloat(e.params.bidfloor)))return!1;const r=n.A(e,"ortb2Imp.ext.gpid");if(!e.params.placementId&&!r)return s.logWarn(u+": one of params.placementId or gpid (via the GPT module https://docs.prebid.org/dev-docs/modules/gpt-pre-auction.html) must be passed"),!1;const t=n.A(e,"mediaTypes.banner"),i=n.A(e,"mediaTypes.video");if(!t&&!i)return s.logWarn(u+": one of mediaTypes.banner or mediaTypes.video must be passed"),!1;if(i){if(!i.maxduration||!s.isInteger(i.maxduration))return s.logWarn(u+": mediaTypes.video.maxduration must be set to the maximum video ad duration in seconds"),!1;if(!i.api||0===i.api.length)return s.logWarn(u+": mediaTypes.video.api should be an array of supported api frameworks. See the Open RTB v2.5 spec for valid values"),!1;if(!i.mimes||0===i.mimes.length)return s.logWarn(u+": mediaTypes.video.mimes should be an array of supported mime types"),!1;if(!i.protocols)return s.logWarn(u+": mediaTypes.video.protocols should be an array of supported protocols. See the Open RTB v2.5 spec for valid values"),!1}return!0},buildRequests:function(e,r){const t=r.ortb2||{};let i={id:r.bidderRequestId,imp:e.map((e=>I(e))),site:v(r,t),device:f(t),user:h(r,t),at:1,cur:["USD"],regs:g(r),source:b(e,r),ext:l(t)};return t&&t.bcat&&(i.bcat=t.bcat),t&&t.badv&&(i.badv=t.badv),t&&t.app&&(i.app=t.app),t&&t.pmp&&(i.pmp=t.pmp),{method:"POST",url:"https://direct.adsrvr.org/bid/bidder/"+r.bids[0].params.supplySourceId,data:i,options:{withCredentials:!0}}},interpretResponse:function(e,r){let t=n.A(e,"body.seatbid");const i=n.A(e,"body.cur");if(!t||0===t.length)return[];let a=[],o=n.A(r,"data.imp");return t.forEach((e=>{e.bid.forEach((e=>{let r=o.find((r=>r.id===e.impid));const t=e.price||0;let n={requestId:e.impid,cpm:t,creativeId:e.crid,dealId:e.dealid||null,currency:i||"USD",netRevenue:!0,ttl:e.ttl||360,meta:{}};e.adomain&&e.adomain.length>0&&(n.meta.advertiserDomains=e.adomain),e.ext.mediatype===m?Object.assign(n,{width:e.w,height:e.h,ad:s.replaceAuctionPrice(e.adm,t),mediaType:d.D4}):e.ext.mediatype===c&&(Object.assign(n,{width:r.video.w,height:r.video.h,mediaType:d.G_}),e.nurl?n.vastUrl=s.replaceAuctionPrice(e.nurl,t):n.vastXml=s.replaceAuctionPrice(e.adm,t)),a.push(n)}))})),a},getUserSyncs:function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const a=[];let s=`&gdpr=${t.gdprApplies?1:0}&gdpr_consent=${encodeURIComponent(t.consentString)}`,n=`https://match.adsrvr.org/track/usersync?us_privacy=${encodeURIComponent(i)}${s}`;return e.pixelEnabled?a.push({type:"image",url:n+"&ust=image"}):e.iframeEnabled&&a.push({type:"iframe",url:n+"&ust=iframe"}),a}};(0,p.a$)(A),(0,i.E)("ttdBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=63429,e(e.s=r);var r}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[51134],{29872:(e,i,s)=>{var t=s(7873),n=s(68044),o=s(88910),a=s(78969),d=s(11445),r=s(91069);const c="https://hbwa.aralego.com",{AUCTION_END:p,BID_WON:u,BID_TIMEOUT:h}=a.qY,l="bid",g="noBid",m="bidWon",b="timeout",A={},f=function(e){return(e.bidderCode||e.bidder).toLowerCase()},E=function(e){return e.adUnitCode.toLowerCase()},y=Object.assign((0,o.Ay)({ANALYTICS_SERVER:c,analyticsType:"endpoint"}),{cachedAuctions:{},initConfig:e=>(A.options=(0,r.deepClone)(e.options),"string"!=typeof e.options.pbuid||e.options.pbuid.length<1?((0,r.logError)('"options.pbuid" is required.'),!1):"string"!=typeof e.options.adid||e.options.adid.length<1?((0,r.logError)('"options.adid" is required.'),!1):(A.sampled=!0,"number"==typeof e.options.sampling&&(A.sampled=Math.random()<parseFloat(e.options.sampling)),A.pbuid=e.options.pbuid,A.adid=e.options.adid,A.server=c,!0)),sendEventMessage(e,i){(0,r.logInfo)(`AJAX: ${e}: `+JSON.stringify(i)),(0,n.RD)(`${A.server}/${e}`,null,JSON.stringify(i),{contentType:"application/json",withCredentials:!0})},createCommonMessage:e=>({version:"1.0.0",auctionId:e,referrer:window.location.href,sampling:A.options.sampling,prebid:"9.4.1",adid:A.adid,pbuid:A.pbuid,adUnits:{}}),serializeBidResponse(e,i){const s={prebidWon:i===m,isTimeout:i===b,status:i};return i!==l&&i!==m||Object.assign(s,{time:e.timeToRespond,cpm:e.cpm,currency:e.currency}),s},addBidResponseToMessage(e,i,s){const t=E(i);e.adUnits[t]=e.adUnits[t]||{};const n=f(i),o=this.serializeBidResponse(i,s);e.adUnits[t][n]=o},createBidMessage(e,i,s){const{auctionId:t,timestamp:n,auctionEnd:o,adUnitCodes:a,bidsReceived:d,noBids:r}=e,c=this.createCommonMessage(t);return c.auctionElapsed=o-n,a.forEach((e=>{c.adUnits[e]={}})),r.forEach((e=>this.addBidResponseToMessage(c,e,g))),d.forEach((e=>this.addBidResponseToMessage(c,e,l))),s.forEach((e=>this.addBidResponseToMessage(c,e,b))),i.forEach((e=>{const i=E(e),s=f(e);c.adUnits[i][s].prebidWon=!0})),c},createImpressionMessage(e){const i=this.createCommonMessage(e.auctionId);return this.addBidResponseToMessage(i,e,m),i},getCachedAuction(e){return this.cachedAuctions[e]=this.cachedAuctions[e]||{timeoutBids:[]},this.cachedAuctions[e]},handleAuctionEnd(e){const i=this.getCachedAuction(e.auctionId),s=(0,t.m)().getHighestCpmBids();this.sendEventMessage("bid",this.createBidMessage(e,s,i.timeoutBids))},handleBidTimeout(e){e.forEach((e=>{this.getCachedAuction(e.auctionId).timeoutBids.push(e)}))},handleBidWon(e){this.sendEventMessage("imp",this.createImpressionMessage(e))},track(e){let{eventType:i,args:s}=e;if(A.sampled)switch(i){case u:this.handleBidWon(s);break;case h:this.handleBidTimeout(s);break;case p:this.handleAuctionEnd(s)}},getAnalyticsOptions:()=>A});y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){this.initConfig(e)&&y.originEnableAnalytics(e)},d.Ay.registerAnalyticsAdapter({adapter:y,code:"ucfunnelAnalytics"}),(0,t.E)("ucfunnelAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return i=29872,e(e.s=i);var i}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[51134],{29872:(e,i,s)=>{var t=s(7873),n=s(68044),o=s(88910),a=s(78969),d=s(11445),r=s(91069);const c="https://hbwa.aralego.com",{AUCTION_END:p,BID_WON:u,BID_TIMEOUT:h}=a.qY,l="bid",g="noBid",m="bidWon",b="timeout",A={},f=function(e){return(e.bidderCode||e.bidder).toLowerCase()},E=function(e){return e.adUnitCode.toLowerCase()},y=Object.assign((0,o.Ay)({ANALYTICS_SERVER:c,analyticsType:"endpoint"}),{cachedAuctions:{},initConfig:e=>(A.options=(0,r.deepClone)(e.options),"string"!=typeof e.options.pbuid||e.options.pbuid.length<1?((0,r.logError)('"options.pbuid" is required.'),!1):"string"!=typeof e.options.adid||e.options.adid.length<1?((0,r.logError)('"options.adid" is required.'),!1):(A.sampled=!0,"number"==typeof e.options.sampling&&(A.sampled=Math.random()<parseFloat(e.options.sampling)),A.pbuid=e.options.pbuid,A.adid=e.options.adid,A.server=c,!0)),sendEventMessage(e,i){(0,r.logInfo)(`AJAX: ${e}: `+JSON.stringify(i)),(0,n.RD)(`${A.server}/${e}`,null,JSON.stringify(i),{contentType:"application/json",withCredentials:!0})},createCommonMessage:e=>({version:"1.0.0",auctionId:e,referrer:window.location.href,sampling:A.options.sampling,prebid:"9.6.0",adid:A.adid,pbuid:A.pbuid,adUnits:{}}),serializeBidResponse(e,i){const s={prebidWon:i===m,isTimeout:i===b,status:i};return i!==l&&i!==m||Object.assign(s,{time:e.timeToRespond,cpm:e.cpm,currency:e.currency}),s},addBidResponseToMessage(e,i,s){const t=E(i);e.adUnits[t]=e.adUnits[t]||{};const n=f(i),o=this.serializeBidResponse(i,s);e.adUnits[t][n]=o},createBidMessage(e,i,s){const{auctionId:t,timestamp:n,auctionEnd:o,adUnitCodes:a,bidsReceived:d,noBids:r}=e,c=this.createCommonMessage(t);return c.auctionElapsed=o-n,a.forEach((e=>{c.adUnits[e]={}})),r.forEach((e=>this.addBidResponseToMessage(c,e,g))),d.forEach((e=>this.addBidResponseToMessage(c,e,l))),s.forEach((e=>this.addBidResponseToMessage(c,e,b))),i.forEach((e=>{const i=E(e),s=f(e);c.adUnits[i][s].prebidWon=!0})),c},createImpressionMessage(e){const i=this.createCommonMessage(e.auctionId);return this.addBidResponseToMessage(i,e,m),i},getCachedAuction(e){return this.cachedAuctions[e]=this.cachedAuctions[e]||{timeoutBids:[]},this.cachedAuctions[e]},handleAuctionEnd(e){const i=this.getCachedAuction(e.auctionId),s=(0,t.m)().getHighestCpmBids();this.sendEventMessage("bid",this.createBidMessage(e,s,i.timeoutBids))},handleBidTimeout(e){e.forEach((e=>{this.getCachedAuction(e.auctionId).timeoutBids.push(e)}))},handleBidWon(e){this.sendEventMessage("imp",this.createImpressionMessage(e))},track(e){let{eventType:i,args:s}=e;if(A.sampled)switch(i){case u:this.handleBidWon(s);break;case h:this.handleBidTimeout(s);break;case p:this.handleAuctionEnd(s)}},getAnalyticsOptions:()=>A});y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){this.initConfig(e)&&y.originEnableAnalytics(e)},d.Ay.registerAnalyticsAdapter({adapter:y,code:"ucfunnelAnalytics"}),(0,t.E)("ucfunnelAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return i=29872,e(e.s=i);var i}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[68907,56293],{85263:(e,t,s)=>{var r=s(7873),i=s(91069),n=s(16833),o=s(12938),a=s(45569),l=s(84259),d=s(50646);const u="uid2",c=`PrebidJS-9.4.1-UID2Module-${l.kz}`,p="UID2: ";function h(e,t){return function(){for(var s=arguments.length,r=new Array(s),i=0;i<s;i++)r[i]=arguments[i];e(t+" ",...r)}}const g=h(i.logInfo,p),y=h(i.logWarn,p),f=(0,o.vM)({moduleType:a.fW,moduleName:u}),b={name:u,decode(e){const t=function(e){if("string"==typeof e){g("Found server-only token. Refresh is unavailable for this token.");return{uid2:{id:e}}}if("optout"===e.latestToken)return g("Found optout token. Refresh is unavailable for this token."),{uid2:{optout:!0}};if(Date.now()<e.latestToken.identity_expires)return{uid2:{id:e.latestToken.advertising_token}};return null}(e);return g("UID2 decode returned",t),t},getId(e,t){if(!0===t?.gdprApplies)return void y("UID2 is not intended for use where GDPR applies. The UID2 module will not run.");const s={apiBaseUrl:e?.params?.uid2ApiBase??"https://prod.uidapi.com",paramToken:e?.params?.uid2Token,serverCookieName:e?.params?.uid2Cookie??e?.params?.uid2ServerCookie,storage:e?.params?.storage??"localStorage",clientId:c,internalStorage:"__uid2_advertising_token"};s.cstg={serverPublicKey:e?.params?.serverPublicKey,subscriptionId:e?.params?.subscriptionId,...(0,l.E0)(e?.params??{})},g("UID2 configuration loaded and mapped.",s);const r=(0,l.wq)(s,f,g,y);return g("UID2 getId returned",r),r},eids:d.x};(0,n.bz)("userId",b),(0,r.E)("uid2IdSystem")},84259:(e,t,s)=>{s.d(t,{E0:()=>h,kz:()=>o,wq:()=>p});var r=s(7873),i=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}class l{constructor(e,t,s,r){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=s,this._logWarn=r}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:"Response didn't contain a valid status"}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,r;const n=new Promise(((e,t)=>{s=e,r=t}));return this._logInfo("Sending refresh request",e),(0,i.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const i=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:i.slice(0,12),tagLength:128},e,i.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const i=JSON.parse(t),n=this.ResponseToRefreshResult(i);"string"==typeof n?r(n):s(n)}),(e=>this._logWarn("Call to UID2 API failed",e)))}),(e=>this._logWarn("Call to UID2 API failed",e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(i):s(i)}}catch(e){r(t)}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(i):s(i)}catch(t){r(e)}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class d{constructor(e,t,s,r){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=r}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),r=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),i=t();if(i){if("string"==typeof i){const t=r();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=r();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return i}}function u(e,t,s,r,i,n){i("UID2 base url provided: ",e);return new l({baseUrl:e},s,i,n).callRefreshApi(t).then((e=>{i("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=r.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),r.storeValue(s),s}))}let c;{const e=9;c={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const r=/^(UID2|EUID)-X-[A-Z]-.+/;return r.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${r}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const r=t.normalizeEmail(e.email);return void 0===r?void s("CSTG opts.email is invalid"):{email:r}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,r){if(t){if("optout"===t.latestToken)return!0;const r=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,r))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,r,i,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(r);n("CSTG endpoint responded with:",l);const d={originalIdentity:this.encodeOriginalIdentity(r),latestToken:l.identity};return i.storeValue(d),d},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:r,domain:i}=s,n=this.isGmail(i),o=this.normalizeAddressPart(r,n,n);return o?`${o}@${i}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let r=e;return t&&(r=r.replaceAll(this.EMAIL_DOT,"")),s&&(r=this.dropExtension(r)),r}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=t,this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),d=await o.exportPublicKey(s.clientPublicKey),u={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(d)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(u,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let r,n;const a=new Promise(((e,t)=>{r=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,i.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),i=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(i),l=JSON.parse(a);this.isCstgApiSuccessResponse(l)?r({status:"success",identity:l.body}):this.isCstgApiOptoutResponse(l)?r({status:"optout",identity:"optout"}):n(`API error: Response body was invalid for HTTP status 200: ${a}`)}catch(e){n(e)}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(`Client error: ${e.message}`):n(`API error: Response body was invalid for HTTP status 400: ${t.responseText}`)}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(`Forbidden: ${e.message}`):n(`API error: Response body was invalid for HTTP status 403: ${t.responseText}`)}else n(`API error: Unexpected HTTP status ${t.status}: ${e}`)}catch(t){n(e)}}},JSON.stringify(e),{method:"POST"}),a}}class r{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(r._namedCurve),s=await o.importPublicKey(e,this._namedCurve),i=await o.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function p(e,t,s,r){let i=null;const n="cookie"!==e.storage,o=new d(t,n,e.internalStorage,s);s(`Module is using ${n?"local storage":"cookies"} for internal storage.`);const a=c&&c.isCSTGOptionsValid(e.cstg,r);a?(s("Module is using client-side token generation."),i=null):e.paramToken?(i=e.paramToken,s("Read token from params",i)):e.serverCookieName&&(i=o.readProvidedCookie(e.serverCookieName),s("Read token from server-supplied cookie",i));let l=o.getStoredValueWithFallback();if(s("Loaded module-stored tokens:",l),l&&"string"==typeof l){if(!i&&!a)return s("Returning legacy cookie value."),{id:l};s("Discarding superseded legacy cookie."),l=null}if(i&&l&&l.originalToken?.advertising_token!==i.advertising_token&&(s("Server supplied new token - ignoring stored value.",l.originalToken?.advertising_token,i.advertising_token),l=null),a){const t=c.getValidIdentity(e.cstg,r);if(t&&(l&&c.isStoredTokenInvalid(t,l,s,r)&&(l=null),!l||Date.now()>l.latestToken.refresh_expires)){const i=c.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,o,s,r);return s("Generate token using CSTG"),{callback:e=>{i.then((t=>{s("Token generation responded, passing the new token on.",t),e(t)}))}}}}const p=!l?.latestToken||i&&i.identity_expires>l.latestToken.identity_expires,h=p?i:l.latestToken;if(s("UID2 module selected latest token",p,h),!h||Date.now()>h.refresh_expires)return s("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>h.identity_expires){const t=u(e.apiBaseUrl,h,e.clientId,o,s,r);return s("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{s("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>h.refresh_from&&(s("Refreshing token in background with low priority."),u(e.apiBaseUrl,h,e.clientId,o,s,r));const g={originalToken:i??l?.originalToken,latestToken:h};return a&&(g.originalIdentity=l?.originalIdentity),o.storeValue(g),{id:g}}function h(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,r.E)("uid2IdSystem_shared")}},e=>{e.O(0,[44950,60802,51085],(()=>{return t=85263,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[68907,56293],{85263:(e,t,s)=>{var r=s(7873),i=s(91069),n=s(16833),o=s(12938),a=s(45569),l=s(84259),d=s(50646);const u="uid2",c=`PrebidJS-9.6.0-UID2Module-${l.kz}`,p="UID2: ";function h(e,t){return function(){for(var s=arguments.length,r=new Array(s),i=0;i<s;i++)r[i]=arguments[i];e(t+" ",...r)}}const g=h(i.logInfo,p),y=h(i.logWarn,p),f=(0,o.vM)({moduleType:a.fW,moduleName:u}),b={name:u,decode(e){const t=function(e){if("string"==typeof e){g("Found server-only token. Refresh is unavailable for this token.");return{uid2:{id:e}}}if("optout"===e.latestToken)return g("Found optout token. Refresh is unavailable for this token."),{uid2:{optout:!0}};if(Date.now()<e.latestToken.identity_expires)return{uid2:{id:e.latestToken.advertising_token}};return null}(e);return g("UID2 decode returned",t),t},getId(e,t){if(!0===t?.gdprApplies)return void y("UID2 is not intended for use where GDPR applies. The UID2 module will not run.");const s={apiBaseUrl:e?.params?.uid2ApiBase??"https://prod.uidapi.com",paramToken:e?.params?.uid2Token,serverCookieName:e?.params?.uid2Cookie??e?.params?.uid2ServerCookie,storage:e?.params?.storage??"localStorage",clientId:c,internalStorage:"__uid2_advertising_token"};s.cstg={serverPublicKey:e?.params?.serverPublicKey,subscriptionId:e?.params?.subscriptionId,...(0,l.E0)(e?.params??{})},g("UID2 configuration loaded and mapped.",s);const r=(0,l.wq)(s,f,g,y);return g("UID2 getId returned",r),r},eids:d.x};(0,n.bz)("userId",b),(0,r.E)("uid2IdSystem")},84259:(e,t,s)=>{s.d(t,{E0:()=>y,kz:()=>o,wq:()=>g});var r=s(7873),i=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}function l(e){return`UID2 shared library - ${e}`}function d(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];e(l(s[0]),...s.slice(1))}class u{constructor(e,t,s,r){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return d(s,...t)},this._logWarn=r}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:l("Response didn't contain a valid status")}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,r;const n=new Promise(((e,t)=>{s=e,r=t}));return this._logInfo("Sending refresh request",e),(0,i.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const i=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:i.slice(0,12),tagLength:128},e,i.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const i=JSON.parse(t),n=this.ResponseToRefreshResult(i);"string"==typeof n?r(l(n)):s(n)}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}}catch(e){r(l(t))}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}catch(t){r(l(e))}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class c{constructor(e,t,s,r){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];return d(r,...t)}}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),r=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),i=t();if(i){if("string"==typeof i){const t=r();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=r();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return i}}function p(e,t,s,r,i,n){i("UID2 base url provided: ",e);return new u({baseUrl:e},s,i,n).callRefreshApi(t).then((e=>{i("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=r.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),r.storeValue(s),s}))}let h;{const e=9;h={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const r=/^(UID2|EUID)-X-[A-Z]-.+/;return r.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${r}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const r=t.normalizeEmail(e.email);return void 0===r?void s("CSTG opts.email is invalid"):{email:r}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,r){if(t){if("optout"===t.latestToken)return!0;const r=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,r))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,r,i,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(r);n("CSTG endpoint responded with:",l);const d={originalIdentity:this.encodeOriginalIdentity(r),latestToken:l.identity};return i.storeValue(d),d},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:r,domain:i}=s,n=this.isGmail(i),o=this.normalizeAddressPart(r,n,n);return o?`${o}@${i}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let r=e;return t&&(r=r.replaceAll(this.EMAIL_DOT,"")),s&&(r=this.dropExtension(r)),r}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=function(){for(var e=arguments.length,s=new Array(e),r=0;r<e;r++)s[r]=arguments[r];return d(t,...s)},this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),d=await o.exportPublicKey(s.clientPublicKey),u={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(d)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(u,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let r,n;const a=new Promise(((e,t)=>{r=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,i.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),i=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(i),d=JSON.parse(a);this.isCstgApiSuccessResponse(d)?r({status:"success",identity:d.body}):this.isCstgApiOptoutResponse(d)?r({status:"optout",identity:"optout"}):n(l(`API error: Response body was invalid for HTTP status 200: ${a}`))}catch(e){n(l(e))}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(l(`Client error: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 400: ${t.responseText}`))}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(l(`Forbidden: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 403: ${t.responseText}`))}else n(l(`UID2 API error: Unexpected HTTP status ${t.status}: ${e}`))}catch(t){n(l(e))}}},JSON.stringify(e),{method:"POST"}),a}}class r{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(r._namedCurve),s=await o.importPublicKey(e,this._namedCurve),i=await o.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function g(e,t,s,r){const i=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return d(s,...t)};let n=null;const o="cookie"!==e.storage,a=new c(t,o,e.internalStorage,i);i(`Module is using ${o?"local storage":"cookies"} for internal storage.`);const l=h&&h.isCSTGOptionsValid(e.cstg,r);l?(i("Module is using client-side token generation."),n=null):e.paramToken?(n=e.paramToken,i("Read token from params",n)):e.serverCookieName&&(n=a.readProvidedCookie(e.serverCookieName),i("Read token from server-supplied cookie",n));let u=a.getStoredValueWithFallback();if(i("Loaded module-stored tokens:",u),u&&"string"==typeof u){if(!n&&!l)return i("Returning legacy cookie value."),{id:u};i("Discarding superseded legacy cookie."),u=null}if(n&&u&&u.originalToken?.advertising_token!==n.advertising_token&&(i("Server supplied new token - ignoring stored value.",u.originalToken?.advertising_token,n.advertising_token),u=null),l){const t=h.getValidIdentity(e.cstg,r);if(t&&(u&&h.isStoredTokenInvalid(t,u,i,r)&&(u=null),!u||Date.now()>u.latestToken.refresh_expires)){const s=h.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,a,i,r);return i("Generate token using CSTG"),{callback:e=>{s.then((t=>{i("Token generation responded, passing the new token on.",t),e(t)}))}}}}const g=!u?.latestToken||n&&n.identity_expires>u.latestToken.identity_expires,y=g?n:u.latestToken;if(i("UID2 module selected latest token",g,y),!y||Date.now()>y.refresh_expires)return i("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>y.identity_expires){const t=p(e.apiBaseUrl,y,e.clientId,a,i,r);return i("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{i("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>y.refresh_from&&(i("Refreshing token in background with low priority."),p(e.apiBaseUrl,y,e.clientId,a,i,r));const f={originalToken:n??u?.originalToken,latestToken:y};return l&&(f.originalIdentity=u?.originalIdentity),a.storeValue(f),{id:f}}function y(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,r.E)("uid2IdSystem_shared")}},e=>{e.O(0,[44950,60802,51085],(()=>{return t=85263,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[56293],{84259:(e,t,s)=>{s.d(t,{E0:()=>p,kz:()=>o,wq:()=>h});var i=s(7873),r=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}class l{constructor(e,t,s,i){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=s,this._logWarn=i}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:"Response didn't contain a valid status"}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,i;const n=new Promise(((e,t)=>{s=e,i=t}));return this._logInfo("Sending refresh request",e),(0,r.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const r=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:r.slice(0,12),tagLength:128},e,r.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const r=JSON.parse(t),n=this.ResponseToRefreshResult(r);"string"==typeof n?i(n):s(n)}),(e=>this._logWarn("Call to UID2 API failed",e)))}),(e=>this._logWarn("Call to UID2 API failed",e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),r=this.ResponseToRefreshResult(e);"string"==typeof r?i(r):s(r)}}catch(e){i(t)}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),r=this.ResponseToRefreshResult(e);"string"==typeof r?i(r):s(r)}catch(t){i(e)}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class c{constructor(e,t,s,i){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=i}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),i=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),r=t();if(r){if("string"==typeof r){const t=i();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=i();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return r}}function d(e,t,s,i,r,n){r("UID2 base url provided: ",e);return new l({baseUrl:e},s,r,n).callRefreshApi(t).then((e=>{r("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=i.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),i.storeValue(s),s}))}let u;{const e=9;u={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const i=/^(UID2|EUID)-X-[A-Z]-.+/;return i.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${i}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const i=t.normalizeEmail(e.email);return void 0===i?void s("CSTG opts.email is invalid"):{email:i}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,i){if(t){if("optout"===t.latestToken)return!0;const i=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,i))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,i,r,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(i);n("CSTG endpoint responded with:",l);const c={originalIdentity:this.encodeOriginalIdentity(i),latestToken:l.identity};return r.storeValue(c),c},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:i,domain:r}=s,n=this.isGmail(r),o=this.normalizeAddressPart(i,n,n);return o?`${o}@${r}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let i=e;return t&&(i=i.replaceAll(this.EMAIL_DOT,"")),s&&(i=this.dropExtension(i)),i}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=t,this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await i.build(this.stripPublicKeyPrefix(this._serverPublicKey)),r=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(r.encode(JSON.stringify(t)),r.encode(JSON.stringify([n]))),c=await o.exportPublicKey(s.clientPublicKey),d={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(c)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(d,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let i,n;const a=new Promise(((e,t)=>{i=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,r.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),r=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(r),l=JSON.parse(a);this.isCstgApiSuccessResponse(l)?i({status:"success",identity:l.body}):this.isCstgApiOptoutResponse(l)?i({status:"optout",identity:"optout"}):n(`API error: Response body was invalid for HTTP status 200: ${a}`)}catch(e){n(e)}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(`Client error: ${e.message}`):n(`API error: Response body was invalid for HTTP status 400: ${t.responseText}`)}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(`Forbidden: ${e.message}`):n(`API error: Response body was invalid for HTTP status 403: ${t.responseText}`)}else n(`API error: Unexpected HTTP status ${t.status}: ${e}`)}catch(t){n(e)}}},JSON.stringify(e),{method:"POST"}),a}}class i{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(i._namedCurve),s=await o.importPublicKey(e,this._namedCurve),r=await o.deriveKey(s,t.privateKey);return new i(t.publicKey,r)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function h(e,t,s,i){let r=null;const n="cookie"!==e.storage,o=new c(t,n,e.internalStorage,s);s(`Module is using ${n?"local storage":"cookies"} for internal storage.`);const a=u&&u.isCSTGOptionsValid(e.cstg,i);a?(s("Module is using client-side token generation."),r=null):e.paramToken?(r=e.paramToken,s("Read token from params",r)):e.serverCookieName&&(r=o.readProvidedCookie(e.serverCookieName),s("Read token from server-supplied cookie",r));let l=o.getStoredValueWithFallback();if(s("Loaded module-stored tokens:",l),l&&"string"==typeof l){if(!r&&!a)return s("Returning legacy cookie value."),{id:l};s("Discarding superseded legacy cookie."),l=null}if(r&&l&&l.originalToken?.advertising_token!==r.advertising_token&&(s("Server supplied new token - ignoring stored value.",l.originalToken?.advertising_token,r.advertising_token),l=null),a){const t=u.getValidIdentity(e.cstg,i);if(t&&(l&&u.isStoredTokenInvalid(t,l,s,i)&&(l=null),!l||Date.now()>l.latestToken.refresh_expires)){const r=u.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,o,s,i);return s("Generate token using CSTG"),{callback:e=>{r.then((t=>{s("Token generation responded, passing the new token on.",t),e(t)}))}}}}const h=!l?.latestToken||r&&r.identity_expires>l.latestToken.identity_expires,p=h?r:l.latestToken;if(s("UID2 module selected latest token",h,p),!p||Date.now()>p.refresh_expires)return s("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>p.identity_expires){const t=d(e.apiBaseUrl,p,e.clientId,o,s,i);return s("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{s("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>p.refresh_from&&(s("Refreshing token in background with low priority."),d(e.apiBaseUrl,p,e.clientId,o,s,i));const g={originalToken:r??l?.originalToken,latestToken:p};return a&&(g.originalIdentity=l?.originalIdentity),o.storeValue(g),{id:g}}function p(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,i.E)("uid2IdSystem_shared")}},e=>{e.O(0,[60802,51085],(()=>{return t=84259,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[56293],{84259:(e,t,s)=>{s.d(t,{E0:()=>y,kz:()=>o,wq:()=>g});var r=s(7873),i=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}function l(e){return`UID2 shared library - ${e}`}function c(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];e(l(s[0]),...s.slice(1))}class d{constructor(e,t,s,r){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return c(s,...t)},this._logWarn=r}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:l("Response didn't contain a valid status")}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,r;const n=new Promise(((e,t)=>{s=e,r=t}));return this._logInfo("Sending refresh request",e),(0,i.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const i=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:i.slice(0,12),tagLength:128},e,i.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const i=JSON.parse(t),n=this.ResponseToRefreshResult(i);"string"==typeof n?r(l(n)):s(n)}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}}catch(e){r(l(t))}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}catch(t){r(l(e))}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class u{constructor(e,t,s,r){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];return c(r,...t)}}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),r=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),i=t();if(i){if("string"==typeof i){const t=r();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=r();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return i}}function h(e,t,s,r,i,n){i("UID2 base url provided: ",e);return new d({baseUrl:e},s,i,n).callRefreshApi(t).then((e=>{i("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=r.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),r.storeValue(s),s}))}let p;{const e=9;p={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const r=/^(UID2|EUID)-X-[A-Z]-.+/;return r.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${r}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const r=t.normalizeEmail(e.email);return void 0===r?void s("CSTG opts.email is invalid"):{email:r}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,r){if(t){if("optout"===t.latestToken)return!0;const r=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,r))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,r,i,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(r);n("CSTG endpoint responded with:",l);const c={originalIdentity:this.encodeOriginalIdentity(r),latestToken:l.identity};return i.storeValue(c),c},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:r,domain:i}=s,n=this.isGmail(i),o=this.normalizeAddressPart(r,n,n);return o?`${o}@${i}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let r=e;return t&&(r=r.replaceAll(this.EMAIL_DOT,"")),s&&(r=this.dropExtension(r)),r}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=function(){for(var e=arguments.length,s=new Array(e),r=0;r<e;r++)s[r]=arguments[r];return c(t,...s)},this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),c=await o.exportPublicKey(s.clientPublicKey),d={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(c)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(d,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let r,n;const a=new Promise(((e,t)=>{r=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,i.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),i=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(i),c=JSON.parse(a);this.isCstgApiSuccessResponse(c)?r({status:"success",identity:c.body}):this.isCstgApiOptoutResponse(c)?r({status:"optout",identity:"optout"}):n(l(`API error: Response body was invalid for HTTP status 200: ${a}`))}catch(e){n(l(e))}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(l(`Client error: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 400: ${t.responseText}`))}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(l(`Forbidden: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 403: ${t.responseText}`))}else n(l(`UID2 API error: Unexpected HTTP status ${t.status}: ${e}`))}catch(t){n(l(e))}}},JSON.stringify(e),{method:"POST"}),a}}class r{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(r._namedCurve),s=await o.importPublicKey(e,this._namedCurve),i=await o.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function g(e,t,s,r){const i=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return c(s,...t)};let n=null;const o="cookie"!==e.storage,a=new u(t,o,e.internalStorage,i);i(`Module is using ${o?"local storage":"cookies"} for internal storage.`);const l=p&&p.isCSTGOptionsValid(e.cstg,r);l?(i("Module is using client-side token generation."),n=null):e.paramToken?(n=e.paramToken,i("Read token from params",n)):e.serverCookieName&&(n=a.readProvidedCookie(e.serverCookieName),i("Read token from server-supplied cookie",n));let d=a.getStoredValueWithFallback();if(i("Loaded module-stored tokens:",d),d&&"string"==typeof d){if(!n&&!l)return i("Returning legacy cookie value."),{id:d};i("Discarding superseded legacy cookie."),d=null}if(n&&d&&d.originalToken?.advertising_token!==n.advertising_token&&(i("Server supplied new token - ignoring stored value.",d.originalToken?.advertising_token,n.advertising_token),d=null),l){const t=p.getValidIdentity(e.cstg,r);if(t&&(d&&p.isStoredTokenInvalid(t,d,i,r)&&(d=null),!d||Date.now()>d.latestToken.refresh_expires)){const s=p.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,a,i,r);return i("Generate token using CSTG"),{callback:e=>{s.then((t=>{i("Token generation responded, passing the new token on.",t),e(t)}))}}}}const g=!d?.latestToken||n&&n.identity_expires>d.latestToken.identity_expires,y=g?n:d.latestToken;if(i("UID2 module selected latest token",g,y),!y||Date.now()>y.refresh_expires)return i("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>y.identity_expires){const t=h(e.apiBaseUrl,y,e.clientId,a,i,r);return i("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{i("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>y.refresh_from&&(i("Refreshing token in background with low priority."),h(e.apiBaseUrl,y,e.clientId,a,i,r));const f={originalToken:n??d?.originalToken,latestToken:y};return l&&(f.originalIdentity=d?.originalIdentity),a.storeValue(f),{id:f}}function y(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,r.E)("uid2IdSystem_shared")}},e=>{e.O(0,[60802,51085],(()=>{return t=84259,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[2443],{14049:(e,t,n)=>{var i=n(7873),r=n(91069),d=n(70433),o=n(43272),s=n(57377),a=n(51252);const p="7.30V",u="9.4.1",l={standard:1,sticky:2};let c=!1;(0,r.logMessage)(`Initializing UDM Adapter. PBJS Version: ${u} with adapter version: ${p} Updated 2023 01 26`);const g={NON_MEASURABLE:-1,code:"underdogmedia",bidParams:[],isBidRequestValid:function(e){if(!e.params)return(0,r.logWarn)("[Underdog Media] bid params are missing"),!1;if(!e.params.siteId)return(0,r.logWarn)("[Underdog Media] siteId is missing"),!1;if(e.params.productId&&!l[e.params.productId])return(0,r.logWarn)("[Underdog Media] invalid productId"),!1;const t=e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes;return!(!t||t.length<1)||((0,r.logWarn)("[Underdog Media] bid sizes are missing"),!1)},buildRequests:function(e,t){var n=[],i=0;let s={dt:10,gdpr:{},pbTimeout:+o.$W.getConfig("bidderTimeout")||3001,pbjsVersion:u,placements:[],ref:(0,d.A)(t,"refererInfo.page")?t.refererInfo.page:void 0,usp:{},userIds:{"33acrossId":(0,d.A)(e[0],"userId.33acrossId.envelope")?e[0].userId["33acrossId"].envelope:void 0,pubcid:(0,d.A)(e[0],"crumbs.pubcid")?e[0].crumbs.pubcid:void 0,unifiedId:(0,d.A)(e[0],"userId.tdid")?e[0].userId.tdid:void 0},version:p};if(e.forEach((e=>{let t={},o=e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes;n=(0,r.flatten)(n,(0,r.parseSizesInput)(o)),i=+e.params.siteId;let p=e.adUnitCode,u=function(e){return document.getElementById(e)||document.getElementById(function(e){if((0,r.isGptPubadsDefined)()){const t=googletag.pubads().getSlots(),n=(0,a.mw)(e);for(let i=0;i<t.length;i++)if(n(t[i])){const n=t[i].getSlotElementId();return(0,r.logInfo)(`[Underdogmedia Adapter] Map ad unit path to HTML element id: '${e}' -> ${n}`),n}}return(0,r.logWarn)(`[Underdogmedia Adapter] Unable to locate element for ad unit code: '${e}'`),null}(e))}(p),c=function(e){return e.reduce(((e,t)=>t.h*t.w<e.h*e.w?t:e))}(o);if(t.sizes=(0,r.parseSizesInput)(o),t.adUnitCode=p,t.productId=l[e.params.productId]||l.standard,(0,d.A)(e,"params.productId")?"standard"===e.params.productId?t.productId=1:"adhesion"===e.params.productId&&(t.productId=2):t.productId=1,t.gpid=(0,d.A)(e,"ortb2Imp.ext.gpid")?e.ortb2Imp.ext.gpid:void 0,function(e){return!function(){try{return(0,r.getWindowSelf)()!==(0,r.getWindowTop)()}catch(e){return!0}}()&&null!==e}(u)){const e={w:c[0],h:c[1]};let n=Math.round(function(e,t){let{w:n,h:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return"visible"===t.document.visibilityState?function(e,t){let{w:n,h:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){let{w:t,h:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{width:i,height:r,left:d,top:o,right:s,bottom:a}=e.getBoundingClientRect();(0===i||0===r)&&t&&n&&(i=t,r=n,s=d+t,a=o+n);return{width:i,height:r,left:d,top:o,right:s,bottom:a}}(e,{w:n,h:i}),d=function(e){const t={left:e[0].left,right:e[0].right,top:e[0].top,bottom:e[0].bottom};for(let n=1;n<e.length;++n){if(t.left=Math.max(t.left,e[n].left),t.right=Math.min(t.right,e[n].right),t.left>=t.right)return null;if(t.top=Math.max(t.top,e[n].top),t.bottom=Math.min(t.bottom,e[n].bottom),t.top>=t.bottom)return null}return t.width=t.right-t.left,t.height=t.bottom-t.top,t}([{left:0,top:0,right:t.innerWidth,bottom:t.innerHeight},r]);let o,s;if(null!==d)return o=d.width*d.height,s=r.width*r.height,o/s*100;return 0}(e,t,{w:n,h:i}):0}(u,(0,r.getWindowTop)(),e));t.viewability=n}else t.viewability=-1;s.placements.push(t)})),s.sid=i,t&&t.gdprConsent&&(void 0!==t.gdprConsent.gdprApplies&&(s.gdpr.gdprApplies=!!t.gdprConsent.gdprApplies),t.gdprConsent.vendorData&&t.gdprConsent.vendorData.vendorConsents&&void 0!==t.gdprConsent.vendorData.vendorConsents[159]&&(s.gdpr.consentGiven=!!t.gdprConsent.vendorData.vendorConsents[159]),void 0!==t.gdprConsent.consentString&&(s.gdpr.consentData=t.gdprConsent.consentString)),t.uspConsent&&(s.usp.uspConsent=t.uspConsent),!s.gdpr||!s.gdpr.gdprApplies||s.gdpr.consentGiven)return{method:"POST",url:`https://udmserve.net/udm/img.fetch?sid=${i}`,data:s,bidParams:e}},getUserSyncs:function(e,t){if(!c&&t.length>0&&t[0].body&&t[0].body.userSyncs&&t[0].body.userSyncs.length>0){c=!0;return t[0].body.userSyncs.filter((t=>{const{type:n}=t;return!(!e.iframeEnabled||"iframe"!==n)||(!(!e.pixelEnabled||"image"!==n)||void 0)}))}},interpretResponse:function(e,t){const n=[];return e.body.mids.forEach((e=>{const i=t.bidParams.find((t=>{if(e.ad_unit_code===t.adUnitCode)return!0}));if(!i)return;const r={requestId:i.bidId,cpm:parseFloat(e.cpm),width:e.width,height:e.height,ad:e.ad_code_html,creativeId:e.mid,currency:"USD",netRevenue:!1,ttl:e.ttl||300,meta:{advertiserDomains:e.advertiser_domains||[]}};r.cpm<=0||r.ad.length<=0||(r.ad+=function(e,t,n){let i=t.notification_url;const r=i.indexOf(";version=");r+1&&(i=i.substring(0,r));i+=`;version=${p}`,i+=";cb="+Math.random(),i+=";qqq="+1/e.cpm,i+=";hbt="+o.$W.getConfig("bidderTimeout"),i+=";style=adapter",i+=";vis="+encodeURIComponent(document.visibilityState),i+=";traffic_info="+encodeURIComponent(JSON.stringify(function(){for(var e,t={},n=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),i=0;i<n.length;i++)(e=n[i].split("="))[0].match(/^utm_/)&&(t[e[0]]=e[1].substr(0,150));return t}())),n.params.subId&&(i+=";subid="+encodeURIComponent(n.params.subId));return'<script async src="'+i+'"><\/script>'}(r,e,i),n.push(r))})),n}};(0,s.a$)(g),(0,i.E)("underdogmediaBidAdapter")}},e=>{e.O(0,[33005,60802,51085],(()=>{return t=14049,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[2443],{14049:(e,t,n)=>{var i=n(7873),r=n(91069),d=n(70433),o=n(43272),s=n(57377),a=n(51252);const p="7.30V",u="9.6.0",l={standard:1,sticky:2};let c=!1;(0,r.logMessage)(`Initializing UDM Adapter. PBJS Version: ${u} with adapter version: ${p} Updated 2023 01 26`);const g={NON_MEASURABLE:-1,code:"underdogmedia",bidParams:[],isBidRequestValid:function(e){if(!e.params)return(0,r.logWarn)("[Underdog Media] bid params are missing"),!1;if(!e.params.siteId)return(0,r.logWarn)("[Underdog Media] siteId is missing"),!1;if(e.params.productId&&!l[e.params.productId])return(0,r.logWarn)("[Underdog Media] invalid productId"),!1;const t=e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes;return!(!t||t.length<1)||((0,r.logWarn)("[Underdog Media] bid sizes are missing"),!1)},buildRequests:function(e,t){var n=[],i=0;let s={dt:10,gdpr:{},pbTimeout:+o.$W.getConfig("bidderTimeout")||3001,pbjsVersion:u,placements:[],ref:(0,d.A)(t,"refererInfo.page")?t.refererInfo.page:void 0,usp:{},userIds:{"33acrossId":(0,d.A)(e[0],"userId.33acrossId.envelope")?e[0].userId["33acrossId"].envelope:void 0,pubcid:(0,d.A)(e[0],"crumbs.pubcid")?e[0].crumbs.pubcid:void 0,unifiedId:(0,d.A)(e[0],"userId.tdid")?e[0].userId.tdid:void 0},version:p};if(e.forEach((e=>{let t={},o=e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes;n=(0,r.flatten)(n,(0,r.parseSizesInput)(o)),i=+e.params.siteId;let p=e.adUnitCode,u=function(e){return document.getElementById(e)||document.getElementById(function(e){if((0,r.isGptPubadsDefined)()){const t=googletag.pubads().getSlots(),n=(0,a.mw)(e);for(let i=0;i<t.length;i++)if(n(t[i])){const n=t[i].getSlotElementId();return(0,r.logInfo)(`[Underdogmedia Adapter] Map ad unit path to HTML element id: '${e}' -> ${n}`),n}}return(0,r.logWarn)(`[Underdogmedia Adapter] Unable to locate element for ad unit code: '${e}'`),null}(e))}(p),c=function(e){return e.reduce(((e,t)=>t.h*t.w<e.h*e.w?t:e))}(o);if(t.sizes=(0,r.parseSizesInput)(o),t.adUnitCode=p,t.productId=l[e.params.productId]||l.standard,(0,d.A)(e,"params.productId")?"standard"===e.params.productId?t.productId=1:"adhesion"===e.params.productId&&(t.productId=2):t.productId=1,t.gpid=(0,d.A)(e,"ortb2Imp.ext.gpid")?e.ortb2Imp.ext.gpid:void 0,function(e){return!function(){try{return(0,r.getWindowSelf)()!==(0,r.getWindowTop)()}catch(e){return!0}}()&&null!==e}(u)){const e={w:c[0],h:c[1]};let n=Math.round(function(e,t){let{w:n,h:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return"visible"===t.document.visibilityState?function(e,t){let{w:n,h:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){let{w:t,h:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{width:i,height:r,left:d,top:o,right:s,bottom:a}=e.getBoundingClientRect();(0===i||0===r)&&t&&n&&(i=t,r=n,s=d+t,a=o+n);return{width:i,height:r,left:d,top:o,right:s,bottom:a}}(e,{w:n,h:i}),d=function(e){const t={left:e[0].left,right:e[0].right,top:e[0].top,bottom:e[0].bottom};for(let n=1;n<e.length;++n){if(t.left=Math.max(t.left,e[n].left),t.right=Math.min(t.right,e[n].right),t.left>=t.right)return null;if(t.top=Math.max(t.top,e[n].top),t.bottom=Math.min(t.bottom,e[n].bottom),t.top>=t.bottom)return null}return t.width=t.right-t.left,t.height=t.bottom-t.top,t}([{left:0,top:0,right:t.innerWidth,bottom:t.innerHeight},r]);let o,s;if(null!==d)return o=d.width*d.height,s=r.width*r.height,o/s*100;return 0}(e,t,{w:n,h:i}):0}(u,(0,r.getWindowTop)(),e));t.viewability=n}else t.viewability=-1;s.placements.push(t)})),s.sid=i,t&&t.gdprConsent&&(void 0!==t.gdprConsent.gdprApplies&&(s.gdpr.gdprApplies=!!t.gdprConsent.gdprApplies),t.gdprConsent.vendorData&&t.gdprConsent.vendorData.vendorConsents&&void 0!==t.gdprConsent.vendorData.vendorConsents[159]&&(s.gdpr.consentGiven=!!t.gdprConsent.vendorData.vendorConsents[159]),void 0!==t.gdprConsent.consentString&&(s.gdpr.consentData=t.gdprConsent.consentString)),t.uspConsent&&(s.usp.uspConsent=t.uspConsent),!s.gdpr||!s.gdpr.gdprApplies||s.gdpr.consentGiven)return{method:"POST",url:`https://udmserve.net/udm/img.fetch?sid=${i}`,data:s,bidParams:e}},getUserSyncs:function(e,t){if(!c&&t.length>0&&t[0].body&&t[0].body.userSyncs&&t[0].body.userSyncs.length>0){c=!0;return t[0].body.userSyncs.filter((t=>{const{type:n}=t;return!(!e.iframeEnabled||"iframe"!==n)||(!(!e.pixelEnabled||"image"!==n)||void 0)}))}},interpretResponse:function(e,t){const n=[];return e.body.mids.forEach((e=>{const i=t.bidParams.find((t=>{if(e.ad_unit_code===t.adUnitCode)return!0}));if(!i)return;const r={requestId:i.bidId,cpm:parseFloat(e.cpm),width:e.width,height:e.height,ad:e.ad_code_html,creativeId:e.mid,currency:"USD",netRevenue:!1,ttl:e.ttl||300,meta:{advertiserDomains:e.advertiser_domains||[]}};r.cpm<=0||r.ad.length<=0||(r.ad+=function(e,t,n){let i=t.notification_url;const r=i.indexOf(";version=");r+1&&(i=i.substring(0,r));i+=`;version=${p}`,i+=";cb="+Math.random(),i+=";qqq="+1/e.cpm,i+=";hbt="+o.$W.getConfig("bidderTimeout"),i+=";style=adapter",i+=";vis="+encodeURIComponent(document.visibilityState),i+=";traffic_info="+encodeURIComponent(JSON.stringify(function(){for(var e,t={},n=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),i=0;i<n.length;i++)(e=n[i].split("="))[0].match(/^utm_/)&&(t[e[0]]=e[1].substr(0,150));return t}())),n.params.subId&&(i+=";subid="+encodeURIComponent(n.params.subId));return'<script async src="'+i+'"><\/script>'}(r,e,i),n.push(r))})),n}};(0,s.a$)(g),(0,i.E)("underdogmediaBidAdapter")}},e=>{e.O(0,[33005,60802,51085],(()=>{return t=14049,e(e.s=t);var t}));e.O()}]);