"use strict"; function _typeof(e) { return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, _typeof(e) } !function () { var e = Object.defineProperty; window.pnFullTPVersion = !0, "function" != typeof Object.assign && Object.defineProperty(Object, "assign", { value: function (e, n) { if (null == e) throw new TypeError("Cannot convert undefined or null to object"); for (var t = Object(e), r = 1; r < arguments.length; r++) { var o = arguments[r]; if (null != o) for (var i in o) Object.prototype.hasOwnProperty.call(o, i) && (t[i] = o[i]) } return t }, writable: !0, configurable: !0 }); var n = new WeakMap; function t(e, t) { return n.get(e) && n.get(e).get(t) } function r(e, n, r) { if (void 0 === n) throw new TypeError; var o = t(n, r); return o && o.get(e) } function o(e, r, o, i) { if (i && !["string", "symbol"].includes(_typeof(i))) throw new TypeError; (t(o, i) || function (e, t) { var r = n.get(e) || new Map; n.set(e, r); var o = r.get(t) || new Map; return r.set(t, o), o }(o, i)).set(e, r) } function i(e, n, t) { return r(e, n, t) ? r(e, n, t) : Object.getPrototypeOf(n) ? i(e, Object.getPrototypeOf(n), t) : void 0 } var a, s, c = { decorate: function (e, n, t, r) { if (!Array.isArray(e) || 0 === e.length) throw new TypeError; return void 0 !== t ? function (e, n, t, r) { return e.reverse().forEach((function (e) { r = e(n, t, r) || r })), r }(e, n, t, r) : "function" == typeof n ? function (e, n) { return e.reverse().forEach((function (e) { var t = e(n); t && (n = t) })), n }(e, n) : void 0 }, defineMetadata: function (e, n, t, r) { o(e, n, t, r) }, getMetadata: function (e, n, t) { return i(e, n, t) }, getOwnMetadata: function (e, n, t) { return r(e, n, t) }, hasMetadata: function (e, n, t) { return !!i(e, n, t) }, hasOwnMetadata: function (e, n, t) { return !!r(e, n, t) }, metadata: function (e, n) { return function (t, r) { o(e, n, t, r) } } }; window.Reflect = window.Reflect || {}, Object.assign(window.Reflect, c), (s = a || (a = {}))[s.Transient = 0] = "Transient", s[s.Singleton = 1] = "Singleton", s[s.ResolutionScoped = 2] = "ResolutionScoped", s[s.ContainerScoped = 3] = "ContainerScoped"; var u = a, l = function (e, n) { return (l = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (e, n) { e.__proto__ = n } || function (e, n) { for (var t in n) Object.prototype.hasOwnProperty.call(n, t) && (e[t] = n[t]) })(e, n) }; function d(e, n) { if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null"); function t() { this.constructor = e } l(e, n), e.prototype = null === n ? Object.create(n) : (t.prototype = n.prototype, new t) } var p = function () { return p = Object.assign || function (e) { for (var n, t = 1, r = arguments.length; t < r; t++) for (var o in n = arguments[t]) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]); return e }, p.apply(this, arguments) }; function f(e, n) { var t = {}; for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && n.indexOf(r) < 0 && (t[r] = e[r]); if (null != e && "function" == typeof Object.getOwnPropertySymbols) { var o = 0; for (r = Object.getOwnPropertySymbols(e); o < r.length; o++) n.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[o]) && (t[r[o]] = e[r[o]]) } return t } function m(e, n) { return function (t, r) { n(t, r, e) } } function v(e, n) { if ("object" == ("undefined" == typeof Reflect ? "undefined" : _typeof(Reflect)) && "function" == typeof Reflect.metadata) return Reflect.metadata(e, n) } function g(e, n, t, r) { return new (t || (t = Promise))((function (o, i) { function a(e) { try { c(r.next(e)) } catch (e) { i(e) } } function s(e) { try { c(r.throw(e)) } catch (e) { i(e) } } function c(e) { e.done ? o(e.value) : function (e) { return e instanceof t ? e : new t((function (n) { n(e) })) }(e.value).then(a, s) } c((r = r.apply(e, n || [])).next()) })) } function h(e, n) { var t, r, o, i, a = { label: 0, sent: function () { if (1 & o[0]) throw o[1]; return o[1] }, trys: [], ops: [] }; return i = { next: s(0), throw: s(1), return: s(2) }, "function" == typeof Symbol && (i[Symbol.iterator] = function () { return this }), i; function s(i) { return function (s) { return function (i) { if (t) throw new TypeError("Generator is already executing."); for (; a;) try { if (t = 1, r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r), 0) : r.next) && !(o = o.call(r, i[1])).done) return o; switch (r = 0, o && (i = [2 & i[0], o.value]), i[0]) { case 0: case 1: o = i; break; case 4: return a.label++, {value: i[1], done: !1}; case 5: a.label++, r = i[1], i = [0]; continue; case 7: i = a.ops.pop(), a.trys.pop(); continue; default: if (!(o = (o = a.trys).length > 0 && o[o.length - 1]) && (6 === i[0] || 2 === i[0])) { a = 0; continue } if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) { a.label = i[1]; break } if (6 === i[0] && a.label < o[1]) { a.label = o[1], o = i; break } if (o && a.label < o[2]) { a.label = o[2], a.ops.push(i); break } o[2] && a.ops.pop(), a.trys.pop(); continue } i = n.call(e, a) } catch (e) { i = [6, e], r = 0 } finally { t = o = 0 } if (5 & i[0]) throw i[1]; return {value: i[0] ? i[1] : void 0, done: !0} }([i, s]) } } } function y(e) { var n = "function" == typeof Symbol && Symbol.iterator, t = n && e[n], r = 0; if (t) return t.call(e); if (e && "number" == typeof e.length) return { next: function () { return e && r >= e.length && (e = void 0), {value: e && e[r++], done: !e} } }; throw new TypeError(n ? "Object is not iterable." : "Symbol.iterator is not defined.") } function w(e, n) { var t = "function" == typeof Symbol && e[Symbol.iterator]; if (!t) return e; var r, o, i = t.call(e), a = []; try { for (; (void 0 === n || n-- > 0) && !(r = i.next()).done;) a.push(r.value) } catch (e) { o = {error: e} } finally { try { r && !r.done && (t = i.return) && t.call(i) } finally { if (o) throw o.error } } return a } function _() { for (var e = [], n = 0; n < arguments.length; n++) e = e.concat(w(arguments[n])); return e } function b(e, n, t) { if (t || 2 === arguments.length) for (var r, o = 0, i = n.length; o < i; o++) (r || !(o in n)) && (r || (r = Array.prototype.slice.call(n, 0, o)), r[o] = n[o]); return e.concat(r || Array.prototype.slice.call(n)) } var k = "injectionTokens"; function C(e) { return !!e.useClass } function I(e) { return !!e.useFactory } var S = function () { function e(e) { this.wrap = e, this.reflectMethods = ["get", "getPrototypeOf", "setPrototypeOf", "getOwnPropertyDescriptor", "defineProperty", "has", "set", "deleteProperty", "apply", "construct", "ownKeys"] } return e.prototype.createProxy = function (e) { var n, t = this, r = !1; return new Proxy({}, this.createHandler((function () { return r || (n = e(t.wrap()), r = !0), n }))) }, e.prototype.createHandler = function (e) { var n = {}; return this.reflectMethods.forEach((function (t) { n[t] = function () { for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r]; return n[0] = e(), Reflect[t].apply(void 0, _(n)) } })), n }, e }(); function E(e) { return "string" == typeof e || "symbol" == _typeof(e) } function T(e) { return "object" == _typeof(e) && "token" in e && "transform" in e } function P(e) { return !!e.useToken } function x(e) { return null != e.useValue } var A = function () { function e() { this._registryMap = new Map } return e.prototype.entries = function () { return this._registryMap.entries() }, e.prototype.getAll = function (e) { return this.ensure(e), this._registryMap.get(e) }, e.prototype.get = function (e) { this.ensure(e); var n = this._registryMap.get(e); return n[n.length - 1] || null }, e.prototype.set = function (e, n) { this.ensure(e), this._registryMap.get(e).push(n) }, e.prototype.setAll = function (e, n) { this._registryMap.set(e, n) }, e.prototype.has = function (e) { return this.ensure(e), this._registryMap.get(e).length > 0 }, e.prototype.clear = function () { this._registryMap.clear() }, e.prototype.ensure = function (e) { this._registryMap.has(e) || this._registryMap.set(e, []) }, e }(), O = A, M = function (e) { function n() { return null !== e && e.apply(this, arguments) || this } return d(n, e), n }(O), N = M, R = function () { this.scopedResolutions = new Map }; function L(e, n, t) { var r = w(e.toString().match(/constructor\(([\w, ]+)\)/) || [], 2)[1], o = function (e, n) { return null === e ? "at position #" + n : '"' + e.split(",")[n].trim() + '" at position #' + n }(void 0 === r ? null : r, n); return function (e, n, t) { return void 0 === t && (t = " "), _([e], n.message.split("\n").map((function (e) { return t + e }))).join("\n") }("Cannot inject the dependency " + o + ' of "' + e.name + '" constructor. Reason:', t) } var U = function (e) { function n() { return null !== e && e.apply(this, arguments) || this } return d(n, e), n }(O), D = function (e) { function n() { return null !== e && e.apply(this, arguments) || this } return d(n, e), n }(O), j = function () { this.preResolution = new U, this.postResolution = new D }, V = new Map, F = function () { function e(e) { this.parent = e, this._registry = new N, this.interceptors = new j, this.disposed = !1, this.disposables = new Set } return e.prototype.register = function (e, n, t) { var r; if (void 0 === t && (t = {lifecycle: u.Transient}), this.ensureNotDisposed(), r = function (e) { return C(e) || x(e) || P(e) || I(e) }(n) ? n : {useClass: n}, P(r)) for (var o = [e], i = r; null != i;) { var a = i.useToken; if (o.includes(a)) throw new Error("Token registration cycle detected! " + _(o, [a]).join(" -> ")); o.push(a); var s = this._registry.get(a); i = s && P(s.provider) ? s.provider : null } if ((t.lifecycle === u.Singleton || t.lifecycle == u.ContainerScoped || t.lifecycle == u.ResolutionScoped) && (x(r) || I(r))) throw new Error('Cannot use lifecycle "' + u[t.lifecycle] + '" with ValueProviders or FactoryProviders'); return this._registry.set(e, {provider: r, options: t}), this }, e.prototype.registerType = function (e, n) { return this.ensureNotDisposed(), E(n) ? this.register(e, {useToken: n}) : this.register(e, {useClass: n}) }, e.prototype.registerInstance = function (e, n) { return this.ensureNotDisposed(), this.register(e, {useValue: n}) }, e.prototype.registerSingleton = function (e, n) { if (this.ensureNotDisposed(), E(e)) { if (E(n)) return this.register(e, {useToken: n}, {lifecycle: u.Singleton}); if (n) return this.register(e, {useClass: n}, {lifecycle: u.Singleton}); throw new Error('Cannot register a type name as a singleton without a "to" token') } var t = e; return n && !E(n) && (t = n), this.register(e, {useClass: t}, {lifecycle: u.Singleton}) }, e.prototype.resolve = function (e, n) { void 0 === n && (n = new R), this.ensureNotDisposed(); var t = this.getRegistration(e); if (!t && E(e)) throw new Error('Attempted to resolve unregistered dependency token: "' + e.toString() + '"'); if (this.executePreResolutionInterceptor(e, "Single"), t) { var r = this.resolveRegistration(t, n); return this.executePostResolutionInterceptor(e, r, "Single"), r } if (function (e) { return "function" == typeof e || e instanceof S }(e)) { r = this.construct(e, n); return this.executePostResolutionInterceptor(e, r, "Single"), r } throw new Error("Attempted to construct an undefined constructor. Could mean a circular dependency problem. Try using `delay` function.") }, e.prototype.executePreResolutionInterceptor = function (e, n) { var t, r; if (this.interceptors.preResolution.has(e)) { var o = []; try { for (var i = y(this.interceptors.preResolution.getAll(e)), a = i.next(); !a.done; a = i.next()) { var s = a.value; "Once" != s.options.frequency && o.push(s), s.callback(e, n) } } catch (e) { t = {error: e} } finally { try { a && !a.done && (r = i.return) && r.call(i) } finally { if (t) throw t.error } } this.interceptors.preResolution.setAll(e, o) } }, e.prototype.executePostResolutionInterceptor = function (e, n, t) { var r, o; if (this.interceptors.postResolution.has(e)) { var i = []; try { for (var a = y(this.interceptors.postResolution.getAll(e)), s = a.next(); !s.done; s = a.next()) { var c = s.value; "Once" != c.options.frequency && i.push(c), c.callback(e, n, t) } } catch (e) { r = {error: e} } finally { try { s && !s.done && (o = a.return) && o.call(a) } finally { if (r) throw r.error } } this.interceptors.postResolution.setAll(e, i) } }, e.prototype.resolveRegistration = function (e, n) { if (this.ensureNotDisposed(), e.options.lifecycle === u.ResolutionScoped && n.scopedResolutions.has(e)) return n.scopedResolutions.get(e); var t, r = e.options.lifecycle === u.Singleton, o = e.options.lifecycle === u.ContainerScoped, i = r || o; return t = x(e.provider) ? e.provider.useValue : P(e.provider) ? i ? e.instance || (e.instance = this.resolve(e.provider.useToken, n)) : this.resolve(e.provider.useToken, n) : C(e.provider) ? i ? e.instance || (e.instance = this.construct(e.provider.useClass, n)) : this.construct(e.provider.useClass, n) : I(e.provider) ? e.provider.useFactory(this) : this.construct(e.provider, n), e.options.lifecycle === u.ResolutionScoped && n.scopedResolutions.set(e, t), t }, e.prototype.resolveAll = function (e, n) { var t = this; void 0 === n && (n = new R), this.ensureNotDisposed(); var r = this.getAllRegistrations(e); if (!r && E(e)) throw new Error('Attempted to resolve unregistered dependency token: "' + e.toString() + '"'); if (this.executePreResolutionInterceptor(e, "All"), r) { var o = r.map((function (e) { return t.resolveRegistration(e, n) })); return this.executePostResolutionInterceptor(e, o, "All"), o } var i = [this.construct(e, n)]; return this.executePostResolutionInterceptor(e, i, "All"), i }, e.prototype.isRegistered = function (e, n) { return void 0 === n && (n = !1), this.ensureNotDisposed(), this._registry.has(e) || n && (this.parent || !1) && this.parent.isRegistered(e, !0) }, e.prototype.reset = function () { this.ensureNotDisposed(), this._registry.clear(), this.interceptors.preResolution.clear(), this.interceptors.postResolution.clear() }, e.prototype.clearInstances = function () { var e, n; this.ensureNotDisposed(); try { for (var t = y(this._registry.entries()), r = t.next(); !r.done; r = t.next()) { var o = w(r.value, 2), i = o[0], a = o[1]; this._registry.setAll(i, a.filter((function (e) { return !x(e.provider) })).map((function (e) { return e.instance = void 0, e }))) } } catch (n) { e = {error: n} } finally { try { r && !r.done && (n = t.return) && n.call(t) } finally { if (e) throw e.error } } }, e.prototype.createChildContainer = function () { var n, t; this.ensureNotDisposed(); var r = new e(this); try { for (var o = y(this._registry.entries()), i = o.next(); !i.done; i = o.next()) { var a = w(i.value, 2), s = a[0], c = a[1]; c.some((function (e) { return e.options.lifecycle === u.ContainerScoped })) && r._registry.setAll(s, c.map((function (e) { return e.options.lifecycle === u.ContainerScoped ? { provider: e.provider, options: e.options } : e }))) } } catch (e) { n = {error: e} } finally { try { i && !i.done && (t = o.return) && t.call(o) } finally { if (n) throw n.error } } return r }, e.prototype.beforeResolution = function (e, n, t) { void 0 === t && (t = {frequency: "Always"}), this.interceptors.preResolution.set(e, { callback: n, options: t }) }, e.prototype.afterResolution = function (e, n, t) { void 0 === t && (t = {frequency: "Always"}), this.interceptors.postResolution.set(e, { callback: n, options: t }) }, e.prototype.dispose = function () { return g(this, void 0, void 0, (function () { var e; return h(this, (function (n) { switch (n.label) { case 0: return this.disposed = !0, e = [], this.disposables.forEach((function (n) { var t = n.dispose(); t && e.push(t) })), [4, Promise.all(e)]; case 1: return n.sent(), [2] } })) })) }, e.prototype.getRegistration = function (e) { return this.isRegistered(e) ? this._registry.get(e) : this.parent ? this.parent.getRegistration(e) : null }, e.prototype.getAllRegistrations = function (e) { return this.isRegistered(e) ? this._registry.getAll(e) : this.parent ? this.parent.getAllRegistrations(e) : null }, e.prototype.construct = function (e, n) { var t = this; if (e instanceof S) return e.createProxy((function (e) { return t.resolve(e, n) })); var r = function () { var r = V.get(e); if (!r || 0 === r.length) { if (0 === e.length) return new e; throw new Error('TypeInfo not known for "' + e.name + '"') } var o = r.map(t.resolveParams(n, e)); return new (e.bind.apply(e, _([void 0], o))) }(); return function (e) { return "function" == typeof e.dispose && !(e.dispose.length > 0) }(r) && this.disposables.add(r), r }, e.prototype.resolveParams = function (e, n) { var t = this; return function (r, o) { var i, a, s; try { return function (e) { return "object" == _typeof(e) && "token" in e && "multiple" in e }(r) ? T(r) ? r.multiple ? (i = t.resolve(r.transform)).transform.apply(i, _([t.resolveAll(r.token)], r.transformArgs)) : (a = t.resolve(r.transform)).transform.apply(a, _([t.resolve(r.token, e)], r.transformArgs)) : r.multiple ? t.resolveAll(r.token) : t.resolve(r.token, e) : T(r) ? (s = t.resolve(r.transform, e)).transform.apply(s, _([t.resolve(r.token, e)], r.transformArgs)) : t.resolve(r, e) } catch (e) { throw new Error(L(n, o, e)) } } }, e.prototype.ensureNotDisposed = function () { if (this.disposed) throw new Error("This container has been disposed, you cannot interact with a disposed container") }, e }(), B = new F; var q = function (e) { return function (e, n) { return function (t, r, o) { var i = Reflect.getOwnMetadata(k, t) || {}; i[o] = n ? { token: e, transform: n.transformToken, transformArgs: n.args || [] } : e, Reflect.defineMetadata(k, i, t) } }(e) }; var z = function () { return function (e) { V.set(e, function (e) { var n = Reflect.getMetadata("design:paramtypes", e) || [], t = Reflect.getOwnMetadata(k, e) || {}; return Object.keys(t).forEach((function (e) { n[+e] = t[e] })), n }(e)) } }; var H = function (e) { return void 0 === e && (e = []), function (n) { return e.forEach((function (e) { var n = e.token, t = e.options, r = f(e, ["token", "options"]); return B.register(n, r, t) })), n } }; var W, G, J, Q, X = function () { return function (e) { z()(e), B.registerSingleton(e) } }; if ("undefined" == typeof Reflect || !Reflect.getMetadata) throw new Error("tsyringe requires a reflect polyfill. Please add 'import \"reflect-metadata\"' to the top of your entry point."); if (window.pnInitPerformance = performance.now(), window.pnHasPolyfilled || (window.pnHasPolyfilled = !1), window.pnFullTPVersion || (window.pnFullTPVersion = !1), void 0 !== window.pn && void 0 !== window.pn.container) throw new Error("Piano SDK is loaded twice on same page. Try to fix that to prevent the message."); !window.pnFullTPVersion && "undefined" != typeof Proxy && (W = function () { return G }, G = new Proxy({}, { get: function (e, n, t) { return "isv" === n || W }, apply: function (e, n, t) { return G } }), B.resolve = new Proxy(B.resolve, { apply: function (e, n, t) { if (B.isRegistered(t[0])) return Reflect.apply(e, n, t); B.register(t[0], {useValue: G}); var r = B.resolve(t[0]); return Q[t[0]] = r, r } })), J = window.pn || {}, (Q = window.pn = {}).container = B, Q.singleton = X, Q.injectable = z, Q.inject = q, Q.registry = H, Q.instanceCachingFactory = function (e) { var n; return function (t) { return null == n && (n = e(t)), n } }, Q.predefinedOptions = J, B.register("predefinedOptions", {useValue: J}); var Y, $, K = !1; try { if (!window.pnHasPolyfilled) { if ("undefined" == typeof Proxy) throw new Error("The browser cannot Proxy"); if (new Promise((function (e) { })), Object.assign({}, {}), [""].includes(""), !Element.prototype.closest) throw new Error("There is no closest method of a DOM element") } } catch (s) { K = !0 } if (K) throw Y = function () { var e, n = document.querySelectorAll("script"); if (n.length) for (var t = 0, r = n; t < r.length; t++) { var o = r[t], i = null === (e = null == o ? void 0 : o.src) || void 0 === e ? void 0 : e.match(/^.*?(tinypass.com|piano.io)/i); if (i) return i[0] } return "https://sandbox.tinypass.com" }(), delete window.pn, ($ = document.createElement("script")).type = "text/javascript", $.async = !0, $.src = "".concat(Y, "/api/piano.es5.js"), document.getElementsByTagName("head")[0].appendChild($), new Error("Load full version of piano SDK"); var Z, ee = (Z = function (e) { return new Promise((function (n, t) { var r = document.createElement("style"); r.type = "text/css", r.innerHTML = e, r.onload = n, r.onerror = t, document.getElementsByTagName("head")[0].appendChild(r) })) }, { name: "css", loadOfferCss: function () { Z(".tp-backdrop{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:#121214;z-index:300000;opacity:0;transition:opacity .25s linear}.tp-backdrop.tp-active{opacity:.9}.tp-modal .tp-close.tp-square{background:#ccc;border-radius:0;border:0;top:0;right:-40px}.tp-modal .tp-close{display:none;position:absolute;top:-15px;right:-15px;width:30px;height:30px;background:#fff url(\"data:image/svg+xml,%3Csvg width='20' height='20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.51 7.208l-.706-.708-2.798 2.798L7.207 6.5l-.707.707 2.798 2.799L6.503 12.8l.707.707 2.796-2.795 2.792 2.792.707-.707-2.792-2.792 2.798-2.798z' fill='%23000' fill-opacity='.4'/%3E%3C/svg%3E\") center center no-repeat;border:none;box-shadow:0 0 10px rgba(28,37,68,.15);outline:none;z-index:300100;border-radius:40px;opacity:0;cursor:pointer;transform:scale(.25);-webkit-appearance:none;-moz-appearance:none;appearance:none}.tp-modal .tp-close:hover,.tp-modal .tp-close:focus{box-shadow:0 0 10px 2px rgba(28,37,68,.15)}.tp-modal .tp-close:focus{border:1px solid}.tp-modal .tp-close.tp-active{display:block;opacity:1;transform:scale(1)}.tp-modal .tp-iframe-wrapper[dir=rtl] .tp-close{right:initial;left:-20px}.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2 .tp-close{top:0;right:0;width:64px;height:64px;box-shadow:none;outline:none;border-radius:0;border-left:1px solid rgba(15,15,21,.2);background:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg %3E%3Cpath d='M3 3L13 13M13 3L3 13' stroke='%230F0F15' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E%0A\") center center no-repeat;opacity:.3}.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2 .tp-close.tp-active{opacity:.3}.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2 .tp-close:hover,.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2 .tp-close:focus{box-shadow:none;border:none;border-left:1px solid rgba(15,15,21,.06);opacity:1}.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2[dir=rtl] .tp-close{right:auto;left:0;border-left:none;border-right:1px solid rgba(15,15,21,.2)}.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2[dir=rtl] .tp-close:hover,.tp-modal .tp-iframe-wrapper.piano-id-modal-ver-2[dir=rtl] .tp-close:focus{border-left:none;border-right:1px solid rgba(15,15,21,.06)}.tp-modal{z-index:300050}@media screen and (max-width: 650px){.tp-modal .tp-close{right:0}.tp-modal .tp-iframe-wrapper[dir=rtl] .tp-close{right:initial;left:0}}.tp-modal .tp-iframe-wrapper.tp-curtain{width:600px;height:480px}.tp-modal-open{overflow:hidden!important;height:100vh;-webkit-overflow-scrolling:touch}.tp-modal-open.tp-modal-resizing{-webkit-overflow-scrolling:auto}.tp-modal-close{overflow:auto}.tp-iframe-wrapper{position:relative;margin:50px auto;box-shadow:0 0 10px rgba(0,0,0,.21)}.tp-iframe-wrapper.no-shadow{box-shadow:unset}.tp-modal{overflow-x:hidden;overflow-y:scroll!important;display:none;position:fixed;top:0;bottom:0;left:0;right:0;transform:translateZ(0)}.tp-modal .tp-message{font-family:Graphik Web Regular,Helvetica,Arial,sans-serif;padding:10px}.tp-modal .tp-btn-container{padding-left:10px;padding-bottom:10px}.tp-cxense-placeholder-modal{width:100%;background-color:#fff;max-width:912px;display:block;overflow:hidden;height:auto;opacity:1}.tp-widget-placeholder>div:after{display:block;content:\"\";clear:both}.tp-btn{text-decoration:none;cursor:pointer;padding:0 18px;line-height:40px;border-collapse:separate;border-radius:4px;text-align:center;vertical-align:middle;display:inline-block;color:#fff;border:none;box-shadow:inset 0 -1px rgba(216,218,221,0);background:#3878D8;background-position:bottom;text-shadow:none;font-family:Graphik Web Regular,Helvetica,Arial,sans-serif;white-space:nowrap;outline:0}.tp-please-wait.tp-active{display:block;opacity:.9;transition:opacity .25s linear}.tp-please-wait{position:absolute;top:0;left:0;background-color:#999;opacity:0;width:100%;height:100%;display:none;text-align:center;color:#fff;font-weight:lighter;font-family:Open Sans,sans-serif;font-size:15px}.tp-please-wait.tp-overlap{position:fixed;z-index:300150}.tp-please-wait.tp-local-overlap{position:absolute}.tp-please-wait>.tp-icon{width:80px;height:80px;margin:100px auto 20px}.pn-spinner{color:gray;display:inline-block;position:relative;width:80px;height:80px}.pn-spinner div{transform-origin:40px 40px;animation:pn-spinner 1.2s linear infinite}.pn-spinner div:after{content:\" \";display:block;position:absolute;top:3px;left:37px;width:6px;height:18px;border-radius:20%;background:#fff}.pn-spinner div:nth-child(1){transform:rotate(0);animation-delay:-1.1s}.pn-spinner div:nth-child(2){transform:rotate(30deg);animation-delay:-1s}.pn-spinner div:nth-child(3){transform:rotate(60deg);animation-delay:-.9s}.pn-spinner div:nth-child(4){transform:rotate(90deg);animation-delay:-.8s}.pn-spinner div:nth-child(5){transform:rotate(120deg);animation-delay:-.7s}.pn-spinner div:nth-child(6){transform:rotate(150deg);animation-delay:-.6s}.pn-spinner div:nth-child(7){transform:rotate(180deg);animation-delay:-.5s}.pn-spinner div:nth-child(8){transform:rotate(210deg);animation-delay:-.4s}.pn-spinner div:nth-child(9){transform:rotate(240deg);animation-delay:-.3s}.pn-spinner div:nth-child(10){transform:rotate(270deg);animation-delay:-.2s}.pn-spinner div:nth-child(11){transform:rotate(300deg);animation-delay:-.1s}.pn-spinner div:nth-child(12){transform:rotate(330deg);animation-delay:0s}@keyframes pn-spinner{0%{opacity:1}to{opacity:0}}.tp-please-wait>.tp-icon.tp-centered{margin:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tp-iframe-wrapper.no-width .tp-close,.tp-iframe-wrapper.no-height .tp-close,.tp-modal.no-width .tp-close,.tp-modal.no-height .tp-close{display:none}.tp-banner{position:fixed;bottom:0;left:0;width:100%}.tp-banner>.tp-container-inner,.tp-banner>.tp-container-inner>iframe{width:inherit!important}.tp-modal-overscroll-prevented{overscroll-behavior:contain;width:100%;overflow-x:unset;overflow-y:scroll}.tp-scroll-prevented{height:100vh;overflow:hidden;touch-action:none}.tp-body-scroll-prevented{touch-action:none}\n") } }); pn.container.register("css", {useValue: ee}), pn.css = pn.container.resolve("css"); var ne, te, re = function (e) { return {}.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase() }, oe = Math.round(1e4 * Math.random()), ie = window.document, ae = /^(?:text|application)\/javascript/i, se = /^(?:text|application)\/xml/i, ce = "application/json", ue = "text/html", le = /^\s*$/, de = function e(n) { var t = ke({}, n || {}); for (ne in e.settings) void 0 === t[ne] && (t[ne] = e.settings[ne]); fe(t), t.crossDomain || (t.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(t.url) && RegExp.$2 != window.location.host); var r = t.dataType, o = /=\?/.test(t.url); if ("jsonp" == r || o) return o || (t.url = ye(t.url, "callback=?")), e.JSONP(t); t.url || (t.url = window.location.toString()), we(t); var i, a = t.accepts[r], s = {}, c = /^([\w-]+:)\/\//.test(t.url) ? RegExp.$1 : window.location.protocol, u = e.settings.xhr(); t.crossDomain || (s["X-Requested-With"] = "XMLHttpRequest"), a && (s.Accept = a, a.indexOf(",") > -1 && (a = a.split(",", 2)[0]), u.overrideMimeType && u.overrideMimeType(a)), (t.contentType || t.data && "GET" != t.type.toUpperCase()) && (s["Content-Type"] = t.contentType || "application/x-www-form-urlencoded"), t.headers = ke(s, t.headers || {}); var l = t.xhrFields && t.xhrFields.withCredentials; l && (u.withCredentials = l), u.onreadystatechange = function () { if (4 == u.readyState) { clearTimeout(i); var e, n = !1; if (u.status >= 200 && u.status < 300 || 304 == u.status || 0 == u.status && "file:" == c) { r = r || function (e) { return e && (e == ue ? "html" : e == ce ? "json" : ae.test(e) ? "script" : se.test(e) && "xml") || "text" }(u.getResponseHeader("content-type")), e = u.responseText; try { "script" == r ? (0, eval)(e) : "xml" == r ? e = u.responseXML : "json" == r && (e = le.test(e) ? null : JSON.parse(e)) } catch (e) { n = e } n ? ve(n, "parsererror", u, t) : me(e, u, t) } else ve(null, "error", u, t) } }; var d = !("async" in t) || t.async; for (te in u.open(t.type, t.url, d), t.headers) u.setRequestHeader(te, t.headers[te]); return !1 === function (e, n) { var t = n.context; if (!1 === n.beforeSend.call(t, e, n) || !1 === pe(n, t, "ajaxBeforeSend", [e, n])) return !1; pe(n, t, "ajaxSend", [e, n]) }(u, t) ? (u.abort(), !1) : (t.timeout > 0 && (i = setTimeout((function () { u.onreadystatechange = he, u.abort(), ve(null, "timeout", u, t) }), t.timeout)), u.send(t.data ? t.data : null), u) }; function pe(e, n, t, r) { if (e.global) return !0 } function fe(e) { e.global && 0 == de.active++ && pe(e) } function me(e, n, t) { var r = t.context, o = "success"; t.success.call(r, e, o, n), pe(t), ge(o, n, t) } function ve(e, n, t, r) { var o = r.context; r.error.call(o, t, n, e), pe(r), ge(n, t, r) } function ge(e, n, t) { var r = t.context; t.complete.call(r, n, e), pe(t), function (e) { e.global && !--de.active && pe(e) }(t) } function he() { } function ye(e, n) { return (e + "&" + n).replace(/[&?]{1,2}/, "?") } function we(e) { "object" === re(e.data) && (e.data = function (e, n) { var t = []; return t.add = function (e, n) { void 0 !== n && (n = null == n ? "" : n, this.push(_e(e) + "=" + _e(n))) }, be(t, e, n), t.join("&").replace("%20", "+") }(e.data)), e.data && (!e.type || "GET" == e.type.toUpperCase()) && (e.url = ye(e.url, e.data)) } de.active = 0, de.JSONP = function (e) { if (!("type" in e)) return de(e); var n, t = "jsonp" + (e.cache ? "Callback" : ++oe), r = ie.createElement("script"), o = { abort: function () { t in window && (window[t] = he), ge("abort", o, e) } }, i = ie.getElementsByTagName("head")[0] || ie.documentElement; return e.error && (r.onerror = function () { o.abort(), e.error() }), window[t] = function (r) { clearTimeout(n), delete window[t], me(r, o, e) }, we(e), r.src = e.url.replace(/=\?/, "=" + t), i.insertBefore(r, i.firstChild), e.timeout > 0 && (n = setTimeout((function () { o.abort(), ge("timeout", o, e) }), e.timeout)), o }, de.settings = { type: "GET", beforeSend: he, success: he, error: he, complete: he, context: null, global: !0, xhr: function () { return new window.XMLHttpRequest }, accepts: { script: "text/javascript, application/javascript", json: ce, xml: "application/xml, text/xml", html: ue, text: "text/plain" }, crossDomain: !1, timeout: 0 }, de.get = function (e, n) { return de({url: e, success: n}) }, de.post = function (e, n, t, r) { return "function" === re(n) && (r = r || t, t = n, n = null), de({ type: "POST", url: e, data: n, success: t, dataType: r }) }, de.getJSON = function (e, n) { return de({url: e, success: n, dataType: "json"}) }; var _e = encodeURIComponent; function be(e, n, t, r) { var o = "array" === re(n); for (var i in n) { var a = n[i]; r && (i = t ? r : r + "[" + (o ? "" : i) + "]"), !r && o ? e.add(a.name, a.value) : (t ? "array" === re(a) : "object" === re(a)) ? be(e, a, t, i) : e.add(i, a) } } function ke(e) { return Array.prototype.slice.call(arguments, 1).forEach((function (n) { for (ne in n) void 0 !== n[ne] && (e[ne] = n[ne]) })), e } var Ce = de, Ie = { send: function (e, n, t, r, o, i) { void 0 === i && (i = !0), void 0 === i && (i = !0); var a = new XMLHttpRequest; a.open(t, e, i), a.onreadystatechange = function () { 4 === a.readyState && n && n(a.responseText) }, a.setRequestHeader("Content-type", o), a.send(r) }, request: function (e) { return e.dataType = e.dataType || "json", Ce(e) } }; pn.container.register("ajax", {useValue: Ie}), pn.ajax = pn.container.resolve("ajax"); var Se, Ee, Te, Pe, xe; pn.container.register("jqUtils", { useValue: (Se = function (e) { return "function" == typeof e }, Ee = function (e, n) { return e ? Te(e, n)[0] : null }, Te = function (e, n) { if (!e) return []; var t = n || document, r = e.split(","), o = []; return r.forEach((function (e) { var n = e.trim(); try { o = o.concat(Array.prototype.slice.call(t.querySelectorAll(n))) } catch (e) { var r = n.indexOf(" ") > -1; if ("." !== n[0] || r) if ("#" !== n[0] || r) o = o.concat(Array.prototype.slice.call(t.querySelectorAll(n))); else { var i = document.getElementById(n.substring(1)); o = o.concat(i ? [i] : []) } else o = o.concat(Array.prototype.slice.call(t.getElementsByClassName(n.substring(1)))) } })), o }, Pe = function (e, n, t) { t.setAttribute(e, n) }, xe = [], { scrollTop: function () { return window.pageYOffset || document.documentElement.scrollTop }, winSize: function () { var e = window, n = document, t = n.documentElement, r = n.getElementsByTagName("body")[0], o = e.innerWidth || t.clientWidth || r.clientWidth; return {height: e.innerHeight || t.clientHeight || r.clientHeight, width: o} }, isPlainObject: function (e) { return "[object Object]" === Object.prototype.toString.call(e) }, isEmptyObject: function (e) { return 0 === Object.keys(e).length && e.constructor === Object }, isFunction: Se, inArray: function (e, n) { return n.indexOf(e) }, type: function (e) { return Object.prototype.toString.call(e).replace(/^\[object (.+)\]$/, "$1").toLowerCase() }, remove: function (e) { var n; null === (n = e.parentNode) || void 0 === n || n.removeChild(e) }, empty: function (e) { for (; e.firstChild;) e.removeChild(e.firstChild) }, queryEl: Ee, qa: Te, filter: function (e, n) { return Array.prototype.filter.call(document.querySelectorAll(e), n) }, addClass: function (e, n) { n.classList.add(e) }, toggleClass: function (e, n) { n.classList.toggle(e) }, removeClass: function (e, n) { n.classList.remove(e) }, getWidth: function (e) { var n = getComputedStyle(e, null), t = n.paddingLeft, r = n.paddingRight, o = e.getBoundingClientRect().width; return o -= parseFloat(t) + parseFloat(r) }, show: function (e) { e.style.display = "block" }, hide: function (e) { e.style.display = "none" }, getHeight: function (e) { var n = getComputedStyle(e, null), t = n.paddingTop, r = n.paddingBottom, o = e.getBoundingClientRect().height; return o -= parseFloat(t) + parseFloat(r) }, visible: function (e) { return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, append: function (e, n) { e.appendChild(n) }, setAttr: Pe, setAttrs: function (e, n) { Object.keys(e).forEach((function (t) { Pe(t, e[t], n) })) }, getAttr: function (e, n) { return "string" == typeof e && (e = Ee(e)), e ? e.getAttribute(n) : null }, ready: function (e) { "loading" != document.readyState ? e() : document.addEventListener("DOMContentLoaded", (function () { return e() })) }, delegate: function (e, n, t, r) { var o = function (t) { for (var o = t.target; o && null != o; o = o.parentNode) { var i = xe.findIndex((function (t) { return t.parentEl === e && t.elementSelector === n })); if (o.matches && o.matches(n) && i >= 0) { r.call(o, t); break } } }; xe.push({parentEl: e, elementSelector: n, handler: o, eventName: t}), e.addEventListener(t, o, !1) }, undelegate: function (e, n) { xe = xe.filter((function (t) { var r = t.parentEl !== e && t.elementSelector !== n; return r || t.parentEl.removeEventListener(t.eventName, t.handler), r })) }, on: function (e, n, t) { e.addEventListener(n, (function (e) { t(e) }), !1) }, off: function (e, n, t) { e.removeEventListener(n, t) }, deepExtend: function e() { for (var n = [], t = 0; t < arguments.length; t++) n[t] = arguments[t]; for (var r = {}, o = 0, i = function (n) { for (var t in n) n.hasOwnProperty(t) && ("[object Object]" === Object.prototype.toString.call(n[t]) ? r[t] = e(r[t], n[t]) : r[t] = n[t]) }; o < n.length; o++) i(n[o]); return r }, param: function (e, n) { var t = [], r = function (e, n) { return encodeURIComponent(e) + "=" + encodeURIComponent(Se(n) ? n() : n || 0 === n || !1 === n ? n : "") }; return Object.keys(e).forEach((function (o) { n && n[o] || (Array.isArray(e[o]) ? e[o].forEach((function (e) { t.push(r(o, e)) })) : t.push(r(o, e[o]))) })), t.join("&") } }) }), pn.jqUtils = pn.container.resolve("jqUtils"); var Ae = {}; !function (n, t) { for (var r in t) e(n, r, {get: t[r], enumerable: !0}) }(Ae, { cookie: function () { return Re }, localStorage: function () { return Le }, sessionStorage: function () { return Ue } }); var Oe = function (e) { var n = new Date, t = function (e) { e && n.setDate(n.getDate() + e) }; if (e instanceof Date) n = e; else if ("number" == typeof e) t(e); else { var r = e, o = r.days, i = r.minutes; t(o), i && n.setMinutes(n.getMinutes() + i) } return n }, Me = function (e) { var n = e.replace(/\+/g, " ").replace(/^\s+|\s+$/g, ""); try { return decodeURIComponent(n) } catch (e) { return n } }, Ne = function (e) { return 0 === e.indexOf('"') && (e = e.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\")), Me(e) }, Re = function () { var e = function (e, n, t) { var r = void 0 === t ? {} : t, o = r.path, i = r.domain, a = r.expires, s = r.secure, c = r.samesite, u = r.raw, l = r.priority; return (u ? e : encodeURIComponent(e)) + "=" + (u ? n : encodeURIComponent(n)) + (a ? "; expires=".concat(Oe(a).toUTCString()) : "") + (o ? "; path=".concat(o) : "") + (i ? "; domain=".concat(i) : "") + (s ? "; secure" : "") + (c ? "boolean" == typeof c ? "; sameSite" : "; sameSite=".concat(c) : "") + (l ? "; priority=".concat(l) : "") }, n = function (n, t, r, o) { void 0 === t || void 0 !== o && function (e) { return encodeURI(e).split(/%(?:u[\dA-F]{2})?[\dA-F]{2}|./).length - 1 }(t) > o || (document.cookie = e(n, t, r)) }, t = function (e) { for (var n = document.cookie.split(";"), t = 0; t < n.length; t++) { var r = n[t].split("="); if (e(Me(r[0]), r[1] || "")) return } }; function r(e) { var n = null, r = {}; return t((function (t, o) { if (e) { if (t === e) return n = Ne(o), !0 } else r[t] = Ne(o) })), e ? n : r } var o, i = function (e, t) { n(e, "", Object.assign({}, t, {expires: -1})) }, a = (o = "_cookie_test", function (e) { void 0 === e && (e = []); var t = window.location.hostname.split("."), a = (new Date).getTime().toString(36) + Math.round(2147483647 * Math.random()).toString(36), s = new Date; s.setSeconds(s.getSeconds() + 30); for (var c = 0; c < t.length; c++) try { var u = t.slice(-(c + 1)).join("."); if (!e.includes(u)) { n(o, a, {expires: s, path: "/", domain: u}); var l = r(o) === a; if (i(o, {path: "/", domain: u}), l) return u } } catch (e) { } }); return { set: n, get: r, getNames: function () { var e = []; return t((function (n) { e.push(n) })), e }, remove: i, getTopLevelDomain: a, __private__: {_generateCookieString: e} } }(), Le = function () { var e = "_ls_ttl", n = function () { try { var n = window.localStorage.getItem(e); return n ? JSON.parse(n) : null } catch (e) { return null } }, t = function (n) { try { Object.keys(n).length ? window.localStorage.setItem(e, JSON.stringify(n)) : window.localStorage.removeItem(e) } catch (e) { } }, r = function () { var e = o(), r = n(), i = {}; !r || (Object.keys(r).forEach((function (n) { if (e.includes(n)) if (function (e) { return !e || e > Date.now() }(r[n] ? parseInt(r[n], 36) : null)) i[n] = r[n]; else try { window.localStorage.removeItem(n) } catch (e) { } })), JSON.stringify(r) !== JSON.stringify(i) && t(i)) }, o = function () { try { return Object.keys(window.localStorage) } catch (e) { return [] } }; return r(), { get: function (e) { var n; r(); try { return null !== (n = window.localStorage.getItem(e)) && void 0 !== n ? n : null } catch (e) { return null } }, set: function (e, r, o) { if (void 0 === o && (o = {}), function (e, r) { var o = n(); if (void 0 === r) return null != o && o[e] && (delete o[e], t(o)), !0; var i = Oe(r).getTime(); return i > Date.now() && ((o = o || {})[e] = i.toString(36), t(o), !0) }(e, o.expires)) try { window.localStorage.setItem(e, r) } catch (e) { } }, getNames: o, remove: function (e) { try { window.localStorage.removeItem(e) } catch (e) { } r() }, expires: r, __protected__: { get ttlName() { return e } } } }(), Ue = { get: function (e) { try { return window.sessionStorage.getItem(e) } catch (e) { return null } }, set: function (e, n) { try { window.sessionStorage.setItem(e, n) } catch (e) { } }, getNames: function () { try { return Object.keys(window.sessionStorage) } catch (e) { return [] } }, remove: function (e) { try { window.sessionStorage.removeItem(e) } catch (e) { } } }, De = function () { return De = Object.assign || function (e) { for (var n, t = 1, r = arguments.length; t < r; t++) for (var o in n = arguments[t]) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]); return e }, De.apply(this, arguments) }, je = function (e, n) { return void 0 === n && (n = "_pctx"), { cookieName: n, readonly: !1, init: function (n) { var t; return null !== (t = null != n ? n : e) && void 0 !== t ? t : null }, refresh: function (e) { return e }, update: function (e) { return e }, set: function (e) { return e }, get: function (e) { return e } } }, Ve = function (e) { return De(De({}, je(e)), {cookieName: null}) }, Fe = je("anon"), Be = function (e) { return e ? Object.keys(e) : [] }, qe = function (e) { return Array.isArray(e) }, ze = function (e) { return null == e }, He = function (e) { return !ze(e) }, We = function (e) { return "object" == _typeof(e) }, Ge = function (e) { return "string" == typeof e }, Je = function () { for (var e = (new Date).getTime().toString(36); e.length < 16;) e += Math.round(2147483647 * Math.random()).toString(36); return e.substr(0, 16) }, Qe = function (e, n) { return e && Be(e).filter((function (t) { return n(e[t]) })).reduce((function (n, t) { var r; return De(De({}, n), ((r = {})[t] = e[t], r)) }), {}) }, Xe = function () { var e = {}; return { add: function (n) { e[n] = !0 }, values: function () { return Be(e) } } }, Ye = function (e) { return "true" === e || !0 === e }, $e = function (e, n) { var t, r = NaN, o = NaN; return function (i) { var a = null == n ? void 0 : n(); return (i !== o || r !== a) && (r = a, o = i, t = e(i)), t } }, Ke = function (e) { var n; return function (t) { var r = e(); r !== n && (n = r, t(r)) } }, Ze = function e(n, t) { try { return n() } catch (n) { return t ? e(t) : null } }, en = function (e, n) { return void 0 === n && (n = !1), Ze((function () { return JSON.parse(e) }), (function () { return n ? JSON.parse(window.atob(e)) : null })) || null }, nn = function (e, n) { if (e === n) return !0; if (!e || !n) return null; var t = Be(e), r = Be(n); return t.length === r.length && !t.some((function (t) { return e[t] !== n[t] })) }, tn = function (e) { return Qe(e, (function (e) { return "CX" !== (null == e ? void 0 : e.type) })) }, rn = De(De({}, je(null)), { init: function (e) { return tn(e || null) }, refresh: tn, set: function (e, n) { return null === e ? null : Qe(De(De({}, n), e), (function (e) { return null !== e })) } }), on = function () { return window.pdl || {} }, an = function (e, n) { return n({protect: !0}), Je() }, sn = De(De({}, Ve()), { init: function (e, n) { return n({protect: !0}), on().pageViewId || Je() }, refresh: an, update: an, set: function (e, n, t) { return t({protect: !0}), e } }), cn = De(De({}, je(null, "_pcid")), { init: function (e, n) { return n({protect: !0}), e || Je() }, update: function (e, n) { return n({protect: !0}), Je() }, set: function (e, n, t) { return t({protect: !0}), e } }), un = "DL", ln = ["PA", "DMP", "COMPOSER", "ID", "VX", "ESP", "SOCIAL_FLOW", un].map((function (e, n) { return {name: e, id: n} })), dn = ln.reduce((function (e, n, t) { var r, o = n.name; return De(De({}, e), ((r = {})[o] = t, r[o.toLowerCase()] = t, r)) }), {}); dn["social flow"] = dn.SOCIAL_FLOW, dn["Social Flow"] = dn.SOCIAL_FLOW; var fn = Ke((function () { var e; return null === (e = Zn(on().consent)) || void 0 === e ? void 0 : e.products })), mn = function () { var e = ln; return function () { return fn((function (n) { e = n ? ln.filter((function (e) { return n.includes(e.name) || e.name === un })) : ln })), e } }(), vn = function (e, n, t) { var r = mn().reduce((function (r, o) { var i = o.id; return r[i] = t(null == e ? void 0 : e[i], null == n ? void 0 : n[i], i), r }), {}); return nn(r, n) ? n : r }, gn = function (e) { var n = Number(e); if (Number.isNaN(n)) { var t = dn[e.toLowerCase()]; return null != t ? t : null } return n < ln.length ? n : null }, hn = function (e, n) { return Be(e).reduce((function (t, r) { var o = ln[Number(r)].name, i = e[r]; return t[o] = n ? n(i, o) : i, t }), {}) }, yn = "opt-in", wn = "essential", _n = "opt-out", bn = "custom", kn = [yn, wn, _n], Cn = kn.concat(bn), In = Cn.reduce((function (e, n, t) { var r; return De(De({}, e), ((r = {})[t] = n, r)) }), {}), Sn = [yn, bn, wn, _n], En = function (e) { return Cn.includes(e) }, Tn = {AD: ["DMP", "SOCIAL_FLOW"], CP: ["COMPOSER"], AM: ["PA"], PR: ["ESP", "VX", "ID"], DL: ["DL"]}, Pn = Be(Tn).reduce((function (e, n) { return Tn[n].forEach((function (t) { var r = dn[t]; e[r] = n })), e }), {}), xn = Ke((function () { var e; return null === (e = Zn(on().consent)) || void 0 === e ? void 0 : e.defaultPurposes })), An = function () { var e = De({}, Pn); return function () { return xn((function (n) { e = De({}, Pn), n && Be(n).forEach((function (t) { var r, o = dn[t]; e[o] = null === (r = n[t]) || void 0 === r ? void 0 : r.substring(0, 32) })) })), e } }(), On = function (e, n) { return vn(e, n, (function (e, n, t) { return e || n || An()[t] })) }, Mn = De(De({}, je(null, "_pprv")), { init: function (e) { return Ln() ? On(e || null, null) : null }, set: function (e, n) { return Ln() ? null == e ? n : On(function (e) { return Be(e).reduce((function (n, t) { var r = gn(t), o = Fn(e[t]); return null === r || o === Dn || r === dn[un] || o && (n[r] = o), n }), {}) }(e), n) : null } }), Nn = function () { return on().consent_modifiers || null }, Rn = function () { return !!on().requireConsent }, Ln = function () { return "v2" === on().requireConsent }, Un = function (e, n) { var t; return e === bn && !(null !== (t = Nn()) && void 0 !== t && t[n]) }, Dn = "DL", jn = ["AD", "AM", "CP", "PR", Dn].reduce((function (e, n) { var t; return De(De({}, e), ((t = {})[n] = n, t[n.toLowerCase()] = n, t)) }), {}), Vn = function (e) { return jn[(null == e ? void 0 : e.toLowerCase()) || ""] || null }, Fn = function (e) { return Vn(e) || (null == e ? void 0 : e.substring(0, 32)) }, Bn = function (e, n, t) { return "".concat(e.join(", "), " ").concat(e.length > 1 ? t : n) }, qn = function (e) { return '"'.concat(e, '" can not be applied for the dl product') }; function zn(e, n, t, r, o) { var i = function (e) { return {error: e} }, a = function (n, t, r) { var o = []; if (!En(n)) return i(function (e) { return "".concat(e, " is unknown consent mode") }(n)); var a = mn().reduce((function (i, a) { var s = a.id, c = a.name; return (!t || (null == e ? void 0 : e[s]) === t || (null == r ? void 0 : r.includes(s))) && (Un(n, c) ? o.push(c) : i[s] = {mode: n}), i }), {}); return o.length ? i(function (e) { return Bn(e, "does", "do") + "n't have modifier in the pdl. Custom mode can't be applied" }(o)) : Object.keys(a).length ? {consent: a} : null }, s = function (n, t) { var r = Fn(t); return jn[r] || Object.values(e || {}).includes(r) ? a(n, r) : i("Unknown purpose. Provide a product or define within pdl config") }; return Ln() ? o ? function (e, n, t) { var r = Fn(n), o = qe(t) ? t : [t], c = o.map(gn).filter(He); if (!c.length) return Vn(n) ? s(e, n) : i(function (e) { return "Custom purpose: " + Bn(e, "is", "are") + " unknown" }(o)); if (r !== Dn && c.includes(dn.DL)) return {error: qn(r)}; if (r === Dn && c.some((function (e) { return e !== dn.DL }))) return i('the "DL" purpose is reserved'); var u = a(e, r, c); if (null != u && u.error) return u; var l = c.reduce((function (e, n) { return e[n] = r, e }), {}); return {consent: (null == u ? void 0 : u.consent) || null, purposes: l} }(r, t, o) : r ? s(r, t) : function (e) { return a(e) }(t) : i("Consent v2 is disabled") } var Hn = function (e, n) { if (!e) return null; var t = hn(n || Pn); return mn().reduce((function (n, r) { var o, i = r.name, a = t[i], s = (null === (o = e[i]) || void 0 === o ? void 0 : o.mode) || yn; return n[a] ? (n[a].mode = function (e, n) { var t = Sn.indexOf(e), r = Sn.indexOf(n); return Sn[Math.max(t, r)] }(n[a].mode, s), n[a].products.push(i)) : n[a] = {mode: s, products: [i]}, n }), {}) }, Wn = ["include", "exclude", "obfuscate"], Gn = function (e, n) { return '"'.concat(e, '" should be one of ').concat(n.join(", ")) }, Jn = function () { }, Qn = function (e, n) { return function (t) { return n(e + t) } }, Xn = function (e, n) { void 0 === n && (n = Jn); var t = dn[e.toLowerCase()]; return void 0 !== t ? ln[t].name : (n('"'.concat(e, '" is not found')), null) }, Yn = function (e) { return function (e) { return kn.includes(e) }(e) ? e : null }, $n = function (e, n) { void 0 === n && (n = Jn); var t = e.source, r = e.patches || []; return Yn(t) || (n(Gn("source", kn)), t = yn), qe(r) || (n('"patches" should be an array'), r = []), r = r.reduce((function (e, t, r) { if (!We(t) || qe(t)) return n("patch[".concat(r, "]: should be type of {action, item, with?}")), e; var o = t.action, i = t.item; return Wn.includes(o) ? i && We(i) && i.key && i.type ? (e.push(t), e) : (n("patch[".concat(r, ']: "item" should be type of {key, type}')), e) : (n("patch[".concat(r, "]: ") + Gn("action", Wn)), e) }), []), {source: t, patches: r} }, Kn = function (e, n) { if (void 0 === n && (n = Jn), !e) return null; var t = {}; e.products && (qe(e.products) ? t.products = e.products.reduce((function (e, t) { var r = Xn(t, Qn("consent.products: ", n)); return r && e.push(r), e }), []) : n("consent.products: should be an array")), e.defaultPreset && (t.defaultPreset = Be(e.defaultPreset).reduce((function (t, r) { var o = Xn(r, Qn("consent.defaultPreset: ", n)), i = Yn(e.defaultPreset[r]); return i || n("consent.defaultPreset: " + Gn(r, kn)), o && i && (t[o] = i), t }), {})); var r = e.defaultPurposes; return r && (t.defaultPurposes = Be(r).reduce((function (e, t) { var o = Qn("consent.defaultPurposes: ", n), i = Xn(t, o), a = r[t], s = Fn(a); return s === Dn || i === un ? o('"'.concat(t, ": ").concat(a, '" - invalid config')) : i && s && (e[i] = s), e }), {})), t }, Zn = $e(Kn), et = [[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 2, 2, 2, 2, 0], [1, 2, 2, 2, 2, 2, 2, 1], [0, 2, 0, 2, 2, 2, 0, 0], [1, 2, 2, 2, 2, 2, 1, 1], [2, 0, 0, 2, 2, 2, 2, 0], [2, 0, 2, 2, 2, 2, 2, 0], [2, 2, 2, 2, 2, 2, 0, 2], [2, 2, 0, 0, 0, 0, 2, 0], [2, 2, 1, 2, 1, 2, 2, 1], [2, 2, 1, 1, 2, 2, 2, 1]], nt = function (e) { return e.reduce((function (e, n, t) { var r; return De(De({}, e), ((r = {})[t] = {mode: In[n]}, r)) }), {}) }, tt = et.map((function (e, n) { return {id: n, preset: nt(e)} })), rt = Ke((function () { var e; return null === (e = Zn(on().consent)) || void 0 === e ? void 0 : e.defaultPreset })), ot = function () { var e = tt; return function () { return rt((function (n) { e = tt.slice(), n && (e[0] = {id: 0, preset: De({}, e[0].preset)}, Be(n).forEach((function (t) { var r = n[t], o = dn[t]; e[0].preset[o] = {mode: r} }))) })), e } }(), it = function (e, n) { return vn(e, n, (function (e, n, t) { var r = (null == e ? void 0 : e.mode) || (null == n ? void 0 : n.mode) || ot()[0].preset[t].mode; return r !== (null == n ? void 0 : n.mode) ? {mode: r} : n })) }, at = De(De({}, je(null, "_pprv")), { init: function (e) { return Rn() && e ? it(e, null) : null }, set: function (e, n) { var t, r; return Rn() ? null == e ? n : (r = function (e) { return "number" == typeof e }(e) ? (null === (t = ot()[e]) || void 0 === t ? void 0 : t.preset) || null : qe(e) ? function (e) { var n = null; return e.forEach((function (e) { var t = et[e]; n || !t ? !n || !t || (n = n.map((function (e, n) { return Math.min(e, t[n]) }))) : n = t })), n && nt(n) }(e) : function (e) { return Be(e).reduce((function (n, t) { var r = e[t], o = gn(t); if (null === o) return n; var i = En(r.mode) ? r.mode : null; return i && (n || (n = {}), n[o] = {mode: i}), n }), null) }(e), r ? it(r, n) : n) : null }, get: $e((function (e) { return e && hn(e, (function (e, n) { var t, r = De({}, e); return r.mode === bn && (r.modifier = (null === (t = Nn()) || void 0 === t ? void 0 : t[n]) || null), r })) }), (function () { return Nn() })) }), st = De(De({}, Ve()), {init: ot, set: ot}), ct = De(De({}, Ve()), {init: mn, set: mn}), ut = De(De({}, Ve(null)), { readonly: !0, set: function () { return null }, get: Nn }), lt = function (e) { var n = Number(e); return Number.isNaN(n) ? String(e) : n }, dt = function (e) { return qe(e) ? e : e.split(",").map((function (e) { return e.trim().replace(/^['"](.+)['"]$/, "$1") })) }, pt = function (e) { return e }, ft = { id: pt, type: pt, zone: pt, createdAt: lt, modifiedAt: lt, authors: dt, section: pt, tags: dt, keywords: dt, title: pt, description: pt, isNative: Ye }, mt = function (e) { return "last" === e }; function vt(e, n) { if (void 0 === e && (e = "meta"), function (e) { return "first" === e }(n)) return document.querySelector(e); var t = document.querySelectorAll(e); return mt(n) ? t[t.length - 1] : Array.from(t) } var gt = function () { var e = null; return { refresh: function () { (e = vt() || null) && setTimeout((function () { e = null }), 0) }, find: function (n, t) { return void 0 === t && (t = !1), e ? e.reduce((function (e, r) { for (var o = 0, i = n; o < i.length; o++) { var a = i[o], s = (("name" === a ? r.name : r.getAttribute(a)) || "").trim().toLowerCase(), c = r.content; if (s && (!t || c)) { e[s] || (e[s] = []), e[s].push(r); break } } return e }), {}) : null } } }(), ht = function (e) { var n, t = e.getContent || function (e) { return e.content }; return e.selector ? (n = vt(e.selector, e.take || "first")) && t(n) || null : function () { var n = gt.find(e.attr || ["name"], e.hasContent), r = e.names || [], o = !function (e) { return "all" === e }(e.take), i = mt(e.take); if (!n) return null; for (var a = function (e) { var r = [], a = n[e]; if (a) { if (o) { var s = a[i ? a.length - 1 : 0]; return {value: t(s) || ""} } a.forEach((function (e) { r = r.concat(t(e) || "") })) } if (r.length) return {value: r} }, s = 0, c = r; s < c.length; s++) { var u = a(c[s]); if ("object" == _typeof(u)) return u.value } return null }() }, yt = function (e) { for (var n = 0, t = e; n < t.length; n++) { var r = t[n], o = ht(r); if (o) return o } }, wt = function (e, n, t) { var r = ft[n]; if (!Boolean(e[n]) && r) { var o = ("function" == typeof t ? t : function () { return qe(t) ? yt(t) : ht(t) })(), i = o && r(o); i && (e[n] = i) } }, _t = function (e) { return {names: [e]} }, bt = { januar: "01", january: "01", jan: "01", februar: "02", february: "02", feb: "02", mars: "03", march: "03", mar: "03", april: "04", apr: "04", mai: "05", may: "05", juni: "06", june: "06", jun: "06", juli: "07", july: "07", jul: "07", august: "08", aug: "08", september: "09", sept: "09", sep: "09", oktober: "10", october: "10", okt: "10", oct: "10", november: "11", nov: "11", desember: "12", december: "12", dec: "12", des: "12" }, kt = function (e) { var n = e.replace(/DAY/g, "(0?[1-9]|[12][0-9]|3[01])").replace(/MONTHLONG/g, "(" + Be(bt).join("|") + ")").replace(/MONTH/g, "(0?[1-9]|1[012])").replace(/YEAR2/g, "([0-9][0-9])").replace(/YEAR/g, "(197[1-9]|19[8-9][0-9]|20[0-9][0-9])").replace(/TIME/g, "([0-9][0-9]):([0-9][0-9]):([0-9][0-9])(?:\\.[0-9][0-9][0-9])?([zZ]|[+-][0-9][0-9](?::?[0-9][0-9])?)?"), t = e.replace(/.*?([YMD])(EAR|ONTH|AY).*?/g, "$1").substring(0, 3); return [new RegExp(n), t] }, Ct = ["\\bDAY\\.MONTH\\.YEAR\\b", "\\bDAY\\.?\\s{0,3}MONTHLONG\\.?\\s{1,3}YEAR\\b", "\\bYEAR-MONTH-DAY(?:[tT]|\\b)", "\\bMONTHLONG\\.?\\s{0,3}DAY(?:st|nd|rd|th)?,?\\s{1,3}YEAR\\b", "\\bDAY(?:st|nd|rd|th|\\.)?\\s{0,3}MONTHLONG\\.?,?\\s{1,3}YEAR\\b", "\\bYEAR[/年]MONTH[/月]DAY(?=\\b|日)", "\\bDAY\\.MONTH\\.YEAR2\\b", "\\bDAY/MONTH/YEAR\\b"].map(kt), It = kt("YEAR-MONTH-DAY[tT]TIME")[0], St = function (e) { return e && parseInt(e, 10) || 0 }; function Et(e, n, t, r, o, i, a) { var s = new Date(Date.UTC(St(e), St(n) - 1, St(t), St(r), St(o), St(i))), c = (a || "").match(/^([+-][0-9][0-9])(?::?([0-9][0-9])?)$/); c && (s = new Date(s.getTime() - 36e5 * Number(c[1]) - 6e4 * (Number(c[2]) || 0))); var u = Date.now() - s.getTime(); return u > 0 || -u < 1728e5 ? s.toISOString() : null } var Tt = function (e) { return e.replace(/<\/?[^>?]*\/?>/g, " ").replace(/\s+/g, " ").trim() }; function Pt(e) { return void 0 === e && (e = ""), Tt(e.replace(/,(?=\s*(jr|sr)(\.?)\b)/g, " ")) } var xt, At = function (e) { return De(De({}, e), {take: "last"}) }, Ot = function (e) { return De(De({}, e), { take: "last", hasContent: !0, getContent: function (e) { return Tt(e.content || "") } }) }, Mt = [At({ attr: ["name", "property", "itemprop"], names: ["cxenseparse:publishtime", "cxenseparse:recs:publishtime", "article:published_time", "date", "dc.date", "dc.date.created", "dc.terms.issued", "pub_date", "article.published", "datepublished", "og:article:published_time"] }), At({ selector: "time.published[datetime],time[pubdate][datetime]", getContent: function (e) { return e.getAttribute("datetime") } }), At({ selector: "time[datetime]", getContent: function (e) { return e.getAttribute("datetime") } })], Nt = {selector: 'meta[property="article:modified_time"]'}, Rt = [{ attr: ["property", "name"], names: ["cxenseparse:author", "og:article:author", "article:author", "og:book:author", "book:author", "author", "dc.creator", "article.author"], take: "all", getContent: function (e) { var n = e.getAttribute("data-separator"), t = e.content; return n ? Pt(t).split(n) : function (e) { return void 0 === e && (e = ""), Pt(e.replace(/\n+/, ";").replace(/(\<|<)br(\>|>)/, ";").replace(/\b(and|und|og)\b/g, ";")).split(/[,;]/) }(t) } }], Lt = [Ot({names: ["cxenseparse:keywords"]}), Ot({ attr: ["property", "name"], names: ["news_keywords"] }), Ot({names: ["keywords"]})], Ut = [Ot({names: ["cxenseparse:description"]}), Ot({ attr: ["property"], names: ["og:description"] }), Ot({names: ["description"]})], Dt = [{names: ["cxenseparse:title"]}, At({attr: ["property", "name"], names: ["og:title"]})], jt = function (e) { wt(e, "createdAt", (function () { var e = yt(Mt); return e ? function (e) { var n = (e = e.toLowerCase()).match(It); if (n) return Et(n[1], n[2], n[3], n[4], n[5], n[6], n[7]); for (var t = 0, r = Ct; t < r.length; t++) { var o = r[t], i = e.match(o[0]); if (i) return Et(2 === (i = "DMY" === o[1] ? ["", i[3], i[2], i[1]] : "MDY" === o[1] ? ["", i[3], i[1], i[2]] : i)[1].length ? (St(i[1]) < 60 ? "20" : "19") + i[1] : i[1], i[2].length <= 2 ? i[2] : bt[i[2]], i[3]) } }(e.toLowerCase()) : null })), wt(e, "modifiedAt", Nt), wt(e, "authors", Rt), wt(e, "keywords", (function () { var e = yt(Lt); return e && e.length <= 1024 ? e : null })), wt(e, "title", Dt), wt(e, "description", Ut) }, Vt = function () { var e = Array.from(document.querySelectorAll("meta[property^=content]")).reduce((function (e, n) { var t, r = null === (t = null == n ? void 0 : n.getAttribute("property")) || void 0 === t ? void 0 : t.split(":").pop(), o = ft[r]; return o && n && (e[r] = o((null == n ? void 0 : n.getAttribute("content")) || "")), e }), {}); return gt.refresh(), function (e) { wt(e, "type", { attr: ["property"], names: ["og:type"] }), wt(e, "section", _t("section")), wt(e, "id", _t("id")), wt(e, "authors", _t("author")) }(e), jt(e), e }, Ft = De(De({}, Ve(null)), { init: function () { return Vt() }, refresh: function (e) { var n = Vt(); return null != e && e._fixed_ && (null == e || e._fixed_.forEach((function (e) { delete n[e] }))), De(De({}, e), n) }, set: function (e, n) { if (null === e) return {}; var t = new Set(n && n._fixed_), r = function (n, t) { Be(Qe(e, n)).forEach(t) }; return r(He, (function (e) { t.add(e) })), r(ze, (function (e) { t.delete(e) })), Qe(De(De(De({}, n), e), {_fixed_: Array.from(t.values())}), He) }, get: $e((function (e) { var n = De({}, e); return delete n._fixed_, e && n })) }), Bt = De(De({}, je(null, "_pcus")), { init: function (e) { return void 0 === e && (e = null), e && Qe(e, (function (e) { return We(e) && Array.isArray(e.segments) })) } }), qt = { pageViewId: sn, browserId: cn, users: rn, userStatus: Fe, siteId: je(), consent: at, consentPresets: st, products: ct, consentModifiers: ut, purposes: Mn, content: Ft, userSegments: Bt }, zt = { path: "/", expires: 395, samesite: "lax", secure: "https:" === window.location.protocol, domain: Re.getTopLevelDomain(["pantheon.io", "go-vip.net", "go-vip.co"]) }, Ht = function (e) { return e.getTime().toString(36) }, Wt = function (e) { return e ? Ze((function () { return new Date(parseInt(e, 36)) })) : null }, Gt = "_t", Jt = function (e, n) { var t = n.encode, r = n.decode, o = !1, i = null, a = null, s = null; !function () { var n, t = null === (n = r(e || "")) || void 0 === n ? void 0 : n[Gt]; if (t) { var s = t.split("|"); i = Wt(s[0]), a = Wt(s[1]), o = !!i } }(); var c = function (e) { return i = i || function (e) { var n = new Date; if (e instanceof Date) n = e; else { if ("number" != typeof e) return null; n.setDate(n.getDate() + e) } return n }(e.expires), i }; return { get fixedAt() { return o ? [a, i] : null }, onChange: function (e) { s = e }, setMode: function (e) { var n = o; (o = e) !== n && (i = null, a = null, null == s || s(o)) }, bindOptions: function (e) { return o && (i = c(e)) ? De(De({}, e), {expires: i}) : e }, decode: function (e) { var n = r(e); return null != n && n[Gt] && delete n[Gt], n }, encode: function (e, n) { return o ? (i = c(n)) && (e[Gt] = Ht(i) + "|" + Ht(a = a || new Date)) : delete e[Gt], t(e) } } }, Qt = "essential", Xt = "optional", Yt = "mandatory", $t = function (e, n, t) { return void 0 === n && (n = Xt), void 0 === t && (t = !1), { cookieName: e, consent: n, encode: function (e) { return function (e, n) { void 0 === n && (n = !1); var t = JSON.stringify(e); return Ze((function () { return n ? window.btoa(t) : t })) || t }(e, t) }, decode: function (e) { return en(e, !0) } } }, Kt = String.fromCharCode, Zt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$", er = {}; !function (e) { e.URI = "URI" }(xt || (xt = {})); var nr = { URI: { prefix: "{u}", compress: function (e) { return null == e ? "" : function (e, n, t) { if (null == e) return ""; var r, o, i, a = {}, s = {}, c = "", u = "", l = "", d = 2, p = 3, f = 2, m = [], v = 0, g = 0; for (i = 0; i < e.length; i += 1) if (c = e.charAt(i), Object.prototype.hasOwnProperty.call(a, c) || (a[c] = p++, s[c] = !0), u = l + c, Object.prototype.hasOwnProperty.call(a, u)) l = u; else { if (Object.prototype.hasOwnProperty.call(s, l)) { if (l.charCodeAt(0) < 256) { for (r = 0; r < f; r++) v <<= 1, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++; for (o = l.charCodeAt(0), r = 0; r < 8; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1 } else { for (o = 1, r = 0; r < f; r++) v = v << 1 | o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o = 0; for (o = l.charCodeAt(0), r = 0; r < 16; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1 } 0 == --d && (d = Math.pow(2, f), f++), delete s[l] } else for (o = a[l], r = 0; r < f; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1; 0 == --d && (d = Math.pow(2, f), f++), a[u] = p++, l = String(c) } if ("" !== l) { if (Object.prototype.hasOwnProperty.call(s, l)) { if (l.charCodeAt(0) < 256) { for (r = 0; r < f; r++) v <<= 1, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++; for (o = l.charCodeAt(0), r = 0; r < 8; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1 } else { for (o = 1, r = 0; r < f; r++) v = v << 1 | o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o = 0; for (o = l.charCodeAt(0), r = 0; r < 16; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1 } 0 == --d && (d = Math.pow(2, f), f++), delete s[l] } else for (o = a[l], r = 0; r < f; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1; 0 == --d && (d = Math.pow(2, f), f++) } for (o = 2, r = 0; r < f; r++) v = v << 1 | 1 & o, g == n - 1 ? (g = 0, m.push(t(v)), v = 0) : g++, o >>= 1; for (; ;) { if (v <<= 1, g == n - 1) { m.push(t(v)); break } g++ } return m.join("") }(e, 6, (function (e) { return Zt.charAt(e) })) }, decompress: function (e) { return null == e ? "" : "" == e ? null : function (e, n, t) { var r, o, i, a, s, c, u, l = [], d = 4, p = 4, f = 3, m = "", v = [], g = {val: t(0), position: n, index: 1}; for (r = 0; r < 3; r += 1) l[r] = r; for (i = 0, s = Math.pow(2, 2), c = 1; c != s;) a = g.val & g.position, g.position >>= 1, 0 == g.position && (g.position = n, g.val = t(g.index++)), i |= (a > 0 ? 1 : 0) * c, c <<= 1; switch (i) { case 0: for (i = 0, s = Math.pow(2, 8), c = 1; c != s;) a = g.val & g.position, g.position >>= 1, 0 == g.position && (g.position = n, g.val = t(g.index++)), i |= (a > 0 ? 1 : 0) * c, c <<= 1; u = Kt(i); break; case 1: for (i = 0, s = Math.pow(2, 16), c = 1; c != s;) a = g.val & g.position, g.position >>= 1, 0 == g.position && (g.position = n, g.val = t(g.index++)), i |= (a > 0 ? 1 : 0) * c, c <<= 1; u = Kt(i); break; case 2: return "" } for (l[3] = u, o = u, v.push(u); ;) { if (g.index > e) return ""; for (i = 0, s = Math.pow(2, f), c = 1; c != s;) a = g.val & g.position, g.position >>= 1, 0 == g.position && (g.position = n, g.val = t(g.index++)), i |= (a > 0 ? 1 : 0) * c, c <<= 1; switch (u = i) { case 0: for (i = 0, s = Math.pow(2, 8), c = 1; c != s;) a = g.val & g.position, g.position >>= 1, 0 == g.position && (g.position = n, g.val = t(g.index++)), i |= (a > 0 ? 1 : 0) * c, c <<= 1; l[p++] = Kt(i), u = p - 1, d--; break; case 1: for (i = 0, s = Math.pow(2, 16), c = 1; c != s;) a = g.val & g.position, g.position >>= 1, 0 == g.position && (g.position = n, g.val = t(g.index++)), i |= (a > 0 ? 1 : 0) * c, c <<= 1; l[p++] = Kt(i), u = p - 1, d--; break; case 2: return v.join("") } if (0 == d && (d = Math.pow(2, f), f++), l[u]) m = l[u]; else { if (u !== p) return null; m = o + o.charAt(0) } v.push(m), l[p++] = o + m.charAt(0), o = m, 0 == --d && (d = Math.pow(2, f), f++) } }((e = e.replace(/ /g, "+")).length, 32, (function (n) { return function (e, n) { if (!er[e]) { er[e] = {}; for (var t = 0; t < e.length; t++) er[e][e.charAt(t)] = t } return er[e][n] }(Zt, e.charAt(n)) })) } } }, tr = Be(nr).reduce((function (e, n) { return e[nr[n].prefix] = nr[n], e }), {}), rr = { cookieName: "_pctx", consent: Yt, encode: function (e, n) { void 0 === n && (n = xt.URI); var t = JSON.stringify(e), r = nr[n].compress(t); return nr[n].prefix + r }, decode: function (e) { var n = function (e) { var n = e.slice(0, 3), t = e.slice(3); if (!tr[n]) return null; var r = tr[n].decompress(t); if (!r) return null; try { return JSON.parse(r) } catch (e) { return null } }(e || ""); return We(n) ? n : null } }, or = function () { var e, n; return !(null === (n = null === (e = on().cookies) || void 0 === e ? void 0 : e._pprv) || void 0 === n || !n.jsonOnly) }, ir = {_pprv: $t("_pprv", Yt, !or()), _pcid: $t("_pcid", Qt), _pcus: $t("_pcus", Xt, !0), _pctx: rr}, ar = function (e) { return Be(e).reduce((function (n, t) { return n[t] = function (e) { var n = e.cookieName, t = e.consent, r = Re.get(n), o = !!r, i = Jt(r, e), a = !!i.fixedAt, s = o, c = null, u = De({}, zt), l = null, d = function () { return o && s }, p = function (e) { var t = f(e), r = c || (l ? i.encode(l, t) : ""); if (!r) { var o = Re.get(n), s = i.decode(o || ""); r = s ? i.encode(s, t) : "" } r && (a = !0, Re.set(n, r, i.bindOptions(t))) }, f = function (e) { return De(De({}, u), Qe(e || {}, He)) }, m = function (e) { Re.remove(n, f(e)) }, v = function (e, n) { var t = e && n; !d() && t && p(), d() && !t && m(), d() && t && !a && p(), o = e, s = n }; return i.onChange((function () { d() && (a = !1, p()) })), { get cookieName() { return n }, get cookieEnabled() { return d() }, get fixedAt() { return i.fixedAt }, get consent() { return t }, set: function (e, n) { l = e, d() && p(n) }, get: function () { return i.decode(Re.get(n) || "") }, remove: m, setCookieOptions: function (e) { u = f(e), d() && p() }, setCookieEnabled: function (e, n) { void 0 === n && (n = null), c = e ? n : null, v(e, s) }, lazyActive: function () { v(o, !0) }, setFixedMode: function (e) { i.setMode(e) } } }(e[t]), n }), {}) }(ir), sr = "__pctx_connection__", cr = "uvm42pas28m", ur = {}, lr = function () { var e = function () { var e = null, n = null; return { register: function (t) { return e = De(De({}, t.fields), e), n = De(De({}, t.cookieByName), n) }, get wrappers() { return n }, get: function () { var e = {}; return n && Be(n).forEach((function (t) { e = De(De({}, e), n[t].get()) })), e }, set: function (t, r) { void 0 === r && (r = null); var o = {}; Be(t).forEach((function (i) { var a = t[i], s = null == e ? void 0 : e[i]; s && (o[s] || (o[s] = { wrapper: null == n ? void 0 : n[s], data: {}, update: !1 }), o[s].data[i] = a, (!r || !o[s].update && a !== r[i]) && (o[s].update = !0)) })), Be(o).forEach((function (e) { var n = o[e], t = n.wrapper; n.update && t.set(o[e].data) })) } } }(), n = {}, t = null, r = new Map, o = new Map, i = [], a = function (e, n, t) { void 0 === t && (t = !1); var r = []; return Be(n).forEach((function (i) { var a = n[i], s = !o.has(i) || o.get(i) === e || t; a && s ? o.set(i, e) : !a && s ? o.delete(i) : r.push(i) })), r.length > 0 ? r : null }; return function (s, c) { var u = Je(); return r.set(u, s), c && e.register(c), n = De(De({}, e.get()), n), { getInitCookieData: function () { return n }, getCachedData: function () { return t || ur }, setProtectionData: function (e) { return a(u, e) }, setProtectionDataUnsafe: function (e) { return a(u, e, !0) }, updateData: function (r) { return function (r, a) { var s = {}, c = {}; Be(a).forEach((function (e) { o.has(e) ? s[e] = (null == t ? void 0 : t[e]) || null : c[e] = a[e] })); var u = t || n, l = De(De({}, t), c); return nn(l, u) || (e.set(l, u), t = l, i.forEach((function (e) { return (0, e[1])(c) }))), Be(s).length > 0 ? s : null }(0, r) }, onUpdateData: function (e) { !function (e, n) { i.push([e, n]) }(u, e) }, terminate: function () { (function (e) { i = i.filter((function (n) { return n[0] !== e })) })(u), r.delete(u) }, setCookieOptions: function () { return null }, setCookieEnabled: function () { return null }, get registeredCookiesWrapper() { return e.wrappers } } } }, dr = function (e) { return void 0 === e && (e = !1), function (n, t) { var r = lr(); try { Object.defineProperty(window, sr, { configurable: e, set: function (e) { var n = e(); n === cr ? e(r) : "mrlqf5trgho" === n && (r = lr()) } }) } catch (e) { } return window[sr] = function (e) { return e && (r = e), cr }, r(n, t) } }(), pr = function (e) { return e.includes("*") }, fr = function (e, n) { return [new RegExp("^" + e.replace(/\*/g, ".*") + "$"), n] }, mr = function (e) { return Be(e).filter(pr).map((function (n) { return fr(n, e[n]) })) }, vr = function (e, n) { for (var t = 0, r = n; t < r.length; t++) { var o = r[t]; if (o[0].test(e)) return o[1] } return null }, gr = function (e, n) { switch (e) { case yn: return !0; case wn: return n === Qt || n === Yt; case _n: return n === Yt; default: return !0 } }, hr = function (e) { switch (e) { case"include": case"obfuscate": return !0; case"exclude": return !1 } }, yr = function (e) { var n = Object.assign({}, e.items), t = mr(n), r = function (e) { return n[e] || vr(e, t) || Xt }; return function (n, t) { var o = on().requireConsent, i = !qe(n), a = i ? [n] : n, s = function () { var n = function () { return a.map((function (e) { return {name: e, allowed: !o} })) }, i = t || e.getConsent(); if (!i) return n(); if (i.mode === bn) { var s = function (e, n, t) { var r = n && $n(n, t); if (!r) return null; for (var o = [], i = {}, a = 0, s = r.patches; a < s.length; a++) { var c = s[a], u = c.action, l = c.with, d = void 0 === l ? null : l, p = c.item; if (p.type === e) { var f = {action: u, data: d}; i[p.key] = f, pr(p.key) && o.push(fr(p.key, f)) } } return { source: r.source, getModifier: function (e) { return i[e] || vr(e, o) } } }(e.type, i.modifier, e.log); if (!s) return n(); var c = s.source; return a.map((function (e) { var n = s.getModifier(e), t = function (e, n) { return "obfuscate" === e ? n : null }(null == n ? void 0 : n.action, null == n ? void 0 : n.data), o = {name: e, allowed: null != n && n.action ? hr(n.action) : gr(c, r(e))}; return null !== t && (o.data = t), o })) } return a.map((function (e) { return {name: e, allowed: gr(i.mode, r(e))} })) }(); return i ? s[0] : s } }, wr = Object.freeze({ __proto__: null, createCheckConsentWrapper: yr, createMask: fr, getByMask: vr, isMask: pr, itemsToMask: mr }), _r = function (e) { var n = e && e.length; return 16 === n || 36 === n ? e : null }, br = function () { var e = { pa_vid: function (e) { return _r(en(e || "", !0) || e) }, atuserid: function (e) { var n; return _r((null === (n = en(e || "", !0)) || void 0 === n ? void 0 : n.val) || "") } }; return function (n) { for (var t = function (n) { try { var t = function () { if (n.ls) return function (e) { var n = function (e) { return Ze((function () { return window.localStorage.getItem(e) })) }, t = n(e), r = Ze((function () { return parseInt(en(n("_ls_ttl"))[e], 36) })); return r && r <= Date.now() ? null : t }(n.ls) || null; var t = Re.get(n); return e[n] && t ? e[n](t) : t }(); if (t) return {value: t} } catch (e) { } }, r = 0, o = n; r < o.length; r++) { var i = t(o[r]); if ("object" == _typeof(i)) return i.value } return null } }(), kr = [{ls: "_cX_P"}, "cX_P"], Cr = {PA: {browserId: ["pa_vid", "atuserid"].concat(kr)}, DMP: {browserId: kr}}, Ir = {browserId: {source: "DMP"}}, Sr = function (e) { var n, t = De(De({}, Ir), function (e, n) { return void 0 === n && (n = Jn), Be(e || {}).reduce((function (t, r) { var o = null == e ? void 0 : e[r], i = Xn((null == o ? void 0 : o.source) || "", n); return t[r] = De(De({}, o), {source: i}), t }), {}) }(null === (n = on()) || void 0 === n ? void 0 : n.migration)); Be(t).forEach((function (n) { var r, o, i = e.params.get(n), a = t[n] === Ir[n], s = null === (r = t[n]) || void 0 === r ? void 0 : r.source, c = s && (null === (o = Cr[s]) || void 0 === o ? void 0 : o[n]) || []; if (i && c.length) { var u = br(c); u && (i.readonly = !1, e.updateValues(n, u, !0), i.readonly = !a) } })) }, Er = "@@Data-layer/", Tr = Er + "update_value", Pr = Er + "refresh_value", xr = Er + "refresh_locked_key", Ar = function () { var e = De({}, window.pdl), n = function (e) { return function (e, n) { return We(e) ? Be(e).reduce((function (t, r) { var o = e[r], i = n[r], a = i && i(o); return void 0 !== a && (t[r] = a), t }), {}) : e }(e, { path: String, domain: String, secure: Ye, expires: function (e) { return e instanceof Date ? e : Number(e) }, samesite: function (e) { return Ge(e) ? e : Ye(e) } }) }; return null != e && e.cookies && (e.cookies = Be(e.cookies).reduce((function (t, r) { return t[r] = n(e.cookies[r]), t }), {})), null != e && e.cookieDefault && (e.cookieDefault = n(e.cookieDefault)), e }, Or = function (e) { var n = Be(ir).reduce((function (e, n) { return e[n] = ir[n].consent, e }), {}), t = function (n) { var t; return n || (null === (t = e.get("consent")) || void 0 === t ? void 0 : t.DL) || null }, r = yr({items: n, type: "cookie", getConsent: t}), o = t(), i = function (n) { var t, o = {_pprv: !on().requireConsent}, i = null === (t = e.getConnection()) || void 0 === t ? void 0 : t.registeredCookiesWrapper; if (i) { var a = Be(i).map((function (e) { return i[e].cookieName })); r(a, n).forEach((function (e) { var n = e.name, t = e.allowed, r = e.data, a = t && !o[n]; i[n].setCookieEnabled(a, r || null) })) } }; e.addChangeListener("consent", (function (e) { var n = (null == e ? void 0 : e.DL) || null; (null == o ? void 0 : o.mode) !== (null == n ? void 0 : n.mode) && (o = n, i(n)) })), i(o) }, Mr = function (e, n, t) { var r = 1 === t ? "can not be" : "was"; console.warn('[DL]: Consent v2: the "'.concat(e, '" has a conflicted consent mode, ') + "mode ".concat(r, ' changed to "').concat(n, '"')) }, Nr = function (e, n, t) { var r, o = function (e, n) { return { fields: Be(e).reduce((function (n, t) { var r = e[t].cookieName; return null !== r && (n[t] = r), n }), {}), cookieByName: n } }(e, n), i = dr("data-layer", o), a = !1, s = new Map, c = new Set, u = new Map, l = function () { if (!i) throw new Error("DataLayer can't be connected"); return i }, d = function (e) { var n = l().registeredCookiesWrapper; n && e(n) }, p = function (e) { d((function (n) { e.forEach((function (e) { var t = n[e]; t && t.lazyActive() })) })) }, f = function () { var e = null; return d((function (n) { e = Be(n).reduce((function (e, t) { var r = n[t].cookieEnabled, o = n[t].fixedAt || null; return e[n[t].cookieName] = r ? {enabled: r, fixedAt: o} : null, e }), {}) })), e }, m = function () { var e = {}, n = function (n) { return Be(e).reduce((function (t, r) { var o = e[r]; return void 0 !== o[n] && (t[r] = o[n]), t }), {}) }; return { add: function (n, t) { e[n] = t }, call: function () { var e; e = n("protect"), Be(e).length > 0 && l().setProtectionData(e), function () { var e = n("protectUnsafe"); Be(e).length > 0 && l().setProtectionDataUnsafe(e) }() } } }, v = function (e, n) { return Be(e).reduce((function (t, r) { var o = u.get(r), i = e[r]; return o && (t[r] = n ? n(o, i) : o.get(i)), t }), {}) }, g = function () { return {params: u, getConnection: l, addChangeListener: C, get: w, updateValues: y} }, h = function (e) { var n = !1; Be(e).forEach((function (t) { var o, i = t, a = u.get(i); if (a) { var c = e[i]; r[i] !== c && (r[i] = c, n = !0, null === (o = s.get(i)) || void 0 === o || o.forEach((function (e) { return e(a.get(c)) }))) } })), n && c.forEach((function (e) { return e(v(r)) })) }, y = function (e, n, t) { var o; void 0 === t && (t = !1); var i = e, a = Xe(); Ge(e) && ((o = {})[e] = n, i = o); var s = m(), c = m(); i = Be(i).reduce((function (e, n) { var t = i[n], o = u.get(n), l = n; return null != o && o.readonly || (o && o.cookieName && a.add(o.cookieName), !o || t === r[n]) ? e : t === Pr ? (e[n] = o.refresh(r[n], (function (e) { c.add(l, e) })), e[n] !== r[n] && s.add(l, {protectUnsafe: !1}), e) : t === Tr ? (e[n] = o.update(r[n], (function (e) { c.add(l, e) })), e) : (e[n] = o.set(t, r[n], (function (e) { c.add(l, e) })), e) }), {}), p(a.values()), s.call(); var d = l().updateData(i); if (d && t) { var f = Be(d).reduce((function (e, n) { var t; return De(De({}, e), ((t = {})[n] = !1, t)) }), {}); l().setProtectionDataUnsafe(f), l().updateData(i) } return c.call(), d && v(d) }; function w(e) { var n, t, o = Xe(), i = Ge(e); return void 0 === e ? t = r : i ? ((n = {})[e] = r[e], t = n) : t = e.reduce((function (e, n) { return u.has(n) && (e[n] = r[n]), e }), {}), t = v(t, (function (e, n) { return e.cookieName && o.add(e.cookieName), e.get(n) })), p(o.values()), i ? t[e] : t } function _(e, n) { return y(e, n, !1) } var b = function (e, n) { void 0 === n && (n = !1); var t = e; return qe(e) || (t = [e]), y(t.reduce((function (e, n) { return e[n] = Tr, e }), {}), void 0, n) }, k = function (e, n, t) { var r; void 0 === t && (t = !1); var o = t ? l().setProtectionDataUnsafe : l().setProtectionData, i = e; return Ge(e) && ((r = {})[e] = n, i = r), o(i) }; function C(e, n) { var t; Ge(e) ? null === (t = s.get(e)) || void 0 === t || t.add(n) : c.add(e) } return { init: function (n) { if (void 0 === n && (n = {}), !a) { i || (i = dr("data-layer", o)), function (e) { var n = De(De({}, e), Ar()), t = n.cookieDefault; d((function (e) { Be(e).forEach((function (r) { var o, i, a, s, c = e[r].cookieName, u = null === (o = n.cookies) || void 0 === o ? void 0 : o[c], l = "fixed" === (null === (i = n.cookies) || void 0 === i ? void 0 : i.storageMode); null === (s = (a = e[r]).setFixedMode) || void 0 === s || s.call(a, l), (t || u) && e[r].setCookieOptions(De(De({}, t), u)) })) })) }(n), a = !0, Be(e).forEach((function (n) { var t = e[n]; s.set(n, new Set), u.set(n, t) })); var c = !1, p = l().getInitCookieData(), f = l().getCachedData(), v = m(), y = Be(e).reduce((function (n, t) { var r = t, o = e[t]; return n[t] = (null == f ? void 0 : f[r]) || o.init(null == p ? void 0 : p[r], (function (e) { v.add(r, e) })), null != f && f[r] || (c = !0), n }), {}); r = y, c && l().updateData(y), v.call(), l().onUpdateData((function (e) { return h(e) })), null == t || t(g()) } }, set: _, get: w, update: function (e) { return b(e) }, refresh: function () { var e; if (l().setProtectionData(((e = {})[xr] = !0, e))) return !1; var n = []; u.forEach((function (e, t) { return n.push(t) })); var t = n.reduce((function (e, n) { return e[n] = Pr, e }), {}); return y(t), !0 }, protect: function (e, n) { return k(e, n) }, addChangeListener: C, removeChangeListener: function (e) { c.delete(e), s.forEach((function (n) { return n.delete(e) })) }, terminate: function () { null == i || i.terminate(), s.clear(), c.clear(), i = null, a = !1, r = {} }, updateMigration: function () { a && Sr(g()) }, get isReady() { return a }, utils: { validateModifier: $n, validateConsent: Kn, checkConsent: wr, setConsent: function (e, n, t) { w("consent"); var r = zn(w("purposes"), 0, e, n, t); return r ? r.error ? r.error : (_({consent: r.consent, purposes: r.purposes}), null) : null }, getConsent: function () { var e = w(["consent", "purposes"]), n = e.consent, t = e.purposes; return Hn(n, t) }, notAcquiredConsent: Ln() ? Be(Tn).reduce((function (e, n) { return e[n] = {mode: "not-acquired", products: Tn[n]}, e }), {}) : null }, get cookies() { return f() }, get cookieEnabled() { return f() }, setUnsafe: function (e, n) { y(e, n, !0) }, protectUnsafe: function (e, n) { return k(e, n, !0) }, updateUnsafe: function (e) { return b(e, !0) }, setCookieEnabled: function (e) { d((function (n) { var t = Be(e); t.length ? t.forEach((function (t) { var r = n[t]; r && r.setCookieEnabled(e[t]) })) : Be(n).forEach((function (t) { n[t].setCookieEnabled(e) })) })) } } }(qt, ar, (function (e) { Or(e), Sr(e), function (e) { var n = null, t = {}, r = function (n) { var r = Hn(n, e.get("purposes")); if (r && n) { var o = !1, i = Be(r).reduce((function (e, i) { var a = r[i].mode; return r[i].products.forEach((function (r) { var i; a !== (null === (i = n[r]) || void 0 === i ? void 0 : i.mode) && (Un(a, r) ? t[r] || (t[r] = !0, Mr(r, a, 1)) : (e[r] = {mode: a}, o = !0, Mr(r, a, 2))) })), e }), {}); o && e.updateValues({consent: i}) } }; e.addChangeListener("consent", (function (e) { Ln() && (n && (clearTimeout(n), n = null), n = setTimeout((function () { r(e), n = null }), 200)) })), Ln() && r(e.get("consent")) }(e) })), Rr = function (e) { return function () { var n = e.dataLayer.get("consent"); return n && n[e.productName] || null } }, Lr = function (e, n) { var t = null, r = function (r) { var o = (null == r ? void 0 : r[e.productName]) || null; o !== t && (t = o, n(o)) }; return e.dataLayer.addChangeListener("consent", r), function () { e.dataLayer.removeChangeListener(r) } }, Ur = function (e, n) { return e.utils.checkConsent.createCheckConsentWrapper(n) }, Dr = function (e, n, t) { var r = e.utils.checkConsent, o = r.itemsToMask(n), i = Object.keys(n).filter((function (e) { return !r.isMask(e) })); return t().filter((function (e) { return i.includes(e) || r.getByMask(e, o) })) }, jr = function (e, n, t) { var r = Rr(t), o = Ur(t.dataLayer, {items: t.items, type: n, getConsent: r}), i = function (n) { var r; null === (r = o(Dr(t.dataLayer, t.items, e.getNames), n)) || void 0 === r || r.forEach((function (n) { n.allowed ? n.data && e.set(n.name, n.data) : e.remove(n.name) })) }; return function () { var e = void 0 === t.checkConsentOnInit && t.enableAutoRemove; t.enableAutoRemove && Lr(t, i), e && i(r()) }(), Object.assign({}, e, { set: function (n, t, r) { var i, a = o(n); if (null != a && a.allowed) { var s = null !== (i = a.data) && void 0 !== i ? i : t, c = r ? [n, s, r] : [n, s]; e.set.apply(null, c) } }, check: o }) }, Vr = function (e) { var n = function (e) { var n, t, r = Le.__protected__.ttlName, o = {dataLayer: e, productName: "DL"}, i = (t = Ur(o.dataLayer, { items: (n = {}, n[r] = "mandatory", n), type: "localStorage", getConsent: Rr(o) }), function () { var e = t(r); return e.allowed && !e.data }), a = !0, s = function () { (a = i()) || Le.remove(r) }; return Lr(o, s), s(), function () { return a } }(e.dataLayer), t = jr(Le, "localStorage", e); return Object.assign({}, t, { set: function (e, r, o) { var i = o; return (null == o ? void 0 : o.expires) && !n() && delete (i = Object.assign({}, o)).expires, t.set(e, r, i) } }) }, Fr = function (e) { var n = e.dataLayer.utils.checkConsent, t = Rr(e), r = {}, o = [], i = {}, a = {}; Object.keys(e.items).forEach((function (t) { var a = e.items[t]; if (a.type) { var s = a, c = s.type, u = s.domain, l = s.path, d = {}; i[t] = c, u && (d.domain = u), l && (d.path = l), n.isMask(t) ? o.push(n.createMask(t, d)) : r[t] = d } else i[t] = a })); var s, c = Ur(e.dataLayer, {items: i, type: "cookie", getConsent: t}), u = function (t) { var s; null === (s = c(Dr(e.dataLayer, i, Re.getNames), t)) || void 0 === s || s.forEach((function (e) { var t = function () { return r[e.name] || n.getByMask(e.name, o) || a }; e.allowed ? e.data && Re.set(e.name, e.data, t()) : Re.remove(e.name, t()) })) }; s = !(void 0 !== e.checkConsentOnInit || !e.enableAutoRemove), e.enableAutoRemove && (a = e.enableAutoRemove, Lr(e, u)), s && u(t()); return Object.assign({}, Re, { check: c, set: function (e, n, t, r) { var o, i = c(e); null != i && i.allowed && Re.set(e, null !== (o = i.data) && void 0 !== o ? o : n, t, r) } }) }, Br = function (e, n) { return void 0 === n && (n = ""), Object.entries(e).reduce((function (e, t) { var r = t[0], o = t[1]; return e[r] = function (e, n) { void 0 === n && (n = "Method"); var t = function () { var t; return null === (t = null == pn ? void 0 : pn.util) || void 0 === t || t.debug("".concat(n, " is deprecated")), e.apply(this, arguments) }; return t.skipLog = e, t }(o, n + String(r)), e }), {}) }, qr = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(location.hostname), zr = Ae.cookie.getTopLevelDomain(), Hr = { COMPOSER: { cookie: { items: { __tbc: "mandatory", xbc: "mandatory", __tac: "mandatory", __tae: "mandatory", __pls: {type: "mandatory", domain: zr, path: "/"}, "__pls_*": {type: "mandatory", domain: zr, path: "/"}, "_pc_*": {type: "mandatory", domain: "", path: "/"}, _pcus: "optional", _pcer: {type: "essential", domain: zr, path: "/"} } }, localStorage: { items: { __pnml: "mandatory", "__tp-customVariables": "essential", "__tp-customVariables-expiration": "essential" }, enableAutoRemove: !0 } }, VX: { cookie: { items: { "__ut_*": "mandatory", __ut: "mandatory", __pvi: "optional", __pat: "optional", __pnahc: "mandatory", "glt_*": "optional", "__utg_*": "optional", __gom: "optional", "tpcc_*": {type: "optional", domain: qr ? "" : zr, path: "/"} } }, localStorage: { items: { "__tp-gaAccount": "optional", "__tp-trackOnlyAids": "optional", "__tp-metricsGAAccount": "optional", "__tp-exrs": "optional", tp__unprocessedCookies: "optional", "tp__unprocessedСookies": "optional", "__tp-gaAccount-expiration": "optional", "__tp-trackOnlyAids-expiration": "optional", "__tp-metricsGAAccount-expiration": "optional", "__tp-exrs-expiration": "optional" }, enableAutoRemove: !0 } }, DMP: { cookie: {items: {cX_P: "essential"}, enableAutoRemove: {domain: zr, path: "/"}}, localStorage: {items: {_cX_P: "essential"}, enableAutoRemove: !0} }, ID: { cookie: { items: { __utp: "mandatory", "__utp_*": "mandatory", __pid: "mandatory", __pil: "essential", __idr: "essential", __eea: "essential", "piano-id-initial-gm-sso-shown-*": "mandatory" } }, localStorage: {items: {"pnid-tc-string": "optional"}, enableAutoRemove: !0} } }, Wr = ["opt-in", "essential", "opt-out", "custom"], Gr = ["PA", "DMP", "COMPOSER", "ID", "VX", "ESP", "SOCIAL_FLOW", "DL"].reduce((function (e, n, t) { var r; return p(p({}, e), ((r = {})[n.toLowerCase()] = {name: n, id: t}, r)) }), {}); Gr["social flow"] = Gr.SOCIAL_FLOW; var Jr = function (e) { return Gr[e.toLowerCase()] || null }, Qr = function () { return window.pdl || null }, Xr = function () { var e; return !(null === (e = Qr()) || void 0 === e || !e.requireConsent) }, Yr = function () { var e; return "v2" === (null === (e = Qr()) || void 0 === e ? void 0 : e.requireConsent) }, $r = function () { return Xr() ? Yr() ? 2 : 1 : null }, Kr = function () { return !(Xr() && !Yr()) || (console.error('Consent v2 is disabled. To use the feature set pdl.requireConsent = "v2"'), !1) }, Zr = function () { return !Yr() || (console.error("Consent v2 is enabled. To change consent use tp.consent.setByPurpose or tp.consent.setAllPurposes"), !1) }, eo = Object.entries({ AD: ["DMP", "SOCIAL_FLOW"], CP: ["COMPOSER"], AM: ["PA"], PR: ["ESP", "VX", "ID"], DL: ["DL"] }).reduce((function (e, n) { var t = n[0]; return n[1].forEach((function (n) { e[Jr(n).id] = t })), e }), {}), no = function (e) { var n = e.reduce((function (e, n) { var t, r = n.id; return p(p({}, e), ((t = {})[r] = 4, t)) }), {}), t = Nr.get("purposes") || {}; return { addConsent: function (e, t) { var r = Jr(e).id; n[r] = function (e) { return Wr.indexOf(e) }(t) }, addPurpose: function (e, n) { t[Jr(e).id] = n }, toModeParamString: function () { return JSON.stringify(n) }, toPurposeParamString: function () { return Object.entries(t).some((function (e) { var n = e[0]; return e[1] !== eo[n] })) ? JSON.stringify(t) : null } } }; pn.container.register("consent", { useValue: function () { var e = !1, n = [], t = {composer: null, vx: null, dmp: null, id: null}; var r = function (e) { e(t) }, o = Br({ setByPreset: function (e) { Zr() && Nr.set("consent", e) }, set: function (e, n) { var t; Zr() && ("string" == typeof e ? Nr.set("consent", ((t = {})[e] = n, t)) : Nr.set("consent", e)) }, get: function (e) { var n = Nr.get("consent"); return e && n ? n[e] : n } }, "tp.consent."); return { setByPreset: o.setByPreset, set: o.set, get: o.get, setByPurpose: function (e, n, t) { if (Kr()) { if (!n) return void pn.util.error("consent.setByPurpose: mode is required"); var r = Nr.utils.setConsent(e, n, t); r && pn.util.error("consent.setByPurpose: [DL]: " + r) } }, setAllPurposes: function (e) { if (Kr()) { var n = Nr.utils.setConsent(e); n && pn.util.error("consent.setAllPurpose: [DL]: " + n) } }, getByPurpose: function () { return Nr.utils.getConsent() }, get composer() { return t.composer }, get vx() { return t.vx }, get dmp() { return t.dmp }, get id() { return t.id }, __protected__: { getVersion: $r, addConsentsToParams: function (e) { var n, t = Nr.get("products"), r = 2 === $r() ? Nr.utils.getConsent() : null, o = 1 === $r() ? Nr.get("consent") : null, i = !(null === (n = Qr()) || void 0 === n || !n.requireConsent); if (!(r && o || i)) return e; var a = no(t); o && Object.keys(o).forEach((function (e) { a.addConsent(e, o[e].mode) })), r && Object.keys(r).forEach((function (e) { var n = r[e], t = n.mode; n.products.forEach((function (n) { a.addConsent(n, t), a.addPurpose(n, e) })) })); var s = a.toModeParamString(), c = a.toPurposeParamString(); return s && (e.consent_modes = s), c && (e.consent_purposes = c), e }, init: function () { var o, i = pn.debug ? function (e) { var n; null === (n = pn.util) || void 0 === n || n.debug("[PDL validation]: " + e) } : void 0, a = Qr(), s = function () { var e; return (null === (e = Qr()) || void 0 === e ? void 0 : e.consent_modifiers) || null }(); s && (Object.keys(s).forEach((function (e) { var n, t = s[e], r = null === (n = Jr(e)) || void 0 === n ? void 0 : n.name; r && (delete s[e], s[r] = t) })), null === (o = Nr.get("products")) || void 0 === o || o.forEach((function (e) { var n = e.name; if (s[n]) { var t = function (e) { return pn.debug ? function (n) { var t; null === (t = pn.util) || void 0 === t || t.debug("[PDL validation]: consent_modifier: ".concat(e, " - ").concat(n)) } : void 0 }(n); s[n] = Nr.utils.validateModifier(s[n], t) } }))), null != a && a.consent && (a.consent = Nr.utils.validateConsent(a.consent, i) || a.consent); var c = {domain: pn.cookieDomain || Ae.cookie.getTopLevelDomain(), path: pn.cookiePath || "/"}; Object.entries(Hr).forEach((function (e) { var n, r = e[0], o = e[1], i = r, a = i.toLowerCase(), s = {dataLayer: Nr, productName: i}; t[a] = { cookie: Fr(p(p(p({}, s), o.cookie), {enableAutoRemove: null !== (n = o.cookie.enableAutoRemove) && void 0 !== n ? n : c})), localStorage: Vr(p(p({}, s), o.localStorage)) } })), n.forEach(r), n = [], e = !0 }, getConsentConfig: function () { return pn.debug ? Hr : null }, async: function (t) { e ? r(t) : n.push(t) } } } }() }), pn.consent = pn.container.resolve("consent"); var to = { name: "cookie", raw: !1, set: function (e, n, t) { var r = t; Ae.cookie.set(e, n, r) }, get: function (e) { return Ae.cookie.get(e) || void 0 }, remove: function (e, n) { return null !== Ae.cookie.get(e) && (Ae.cookie.remove(e, n), !0) } }; pn.container.register("cookie", {useValue: to}), pn.cookie = pn.container.resolve("cookie"); var ro = function () { var e = function () { try { return window.localStorage } catch (e) { return null } }(); window.name || (window.name = Math.floor(1e8 * Math.random())); return { get: function (n) { if (e && "function" == typeof e.getItem) { var t = Ae.localStorage.get(n); try { return JSON.parse(t) } catch (e) { return t } } }, set: function (n, t) { !e || "function" != typeof e.getItem || Ae.localStorage.set(n, JSON.stringify(t)) }, remove: function (n) { !e || "function" != typeof e.getItem || Ae.localStorage.remove(n) } } }(); pn.container.register("localStorage", {useValue: ro}), pn.localStorage = pn.container.resolve("localStorage"); var oo = function () { var e = function () { return "1.9.34" }; return window.__tpVersion = "1.9.34", {name: "versionService", getTinypassVersion: e} }(); pn.container.register("versionService", {useValue: oo}), pn.versionService = pn.container.resolve("versionService"); var io = function (e) { void 0 === e && (e = pn.container); var n, t, r, o = e.resolve("ajax"), i = e.resolve("localStorage"), a = e.resolve("consent"), s = 3600, c = 2500, u = "tp__unprocessedCookies", l = {}; function d() { n && clearTimeout(n), n = setTimeout((function () { o.request({ url: pn.cloudflareWorkerUrl + "?maxAge=2628000", type: "POST", data: JSON.stringify(l), crossDomain: !0, xhrFields: {withCredentials: !0}, success: function () { l = {}, i.remove(u) }, error: function (e, n) { console.error(n) } }) }), c) } function p() { try { var e = i.get(u); e && Object.keys(e).forEach((function (n) { l[n] = e[n] })) } catch (e) { console.error(e) } } return t = "tp__unprocessedСookies", (r = i.get(t)) && (i.remove(t), i.get(u) || i.set(u, r)), { name: "itp", init: function () { !pn.cloudflareWorkerUrl || !pn.util.isSafariOrUiWebView() || (p(), Object.keys(l).length > 0 && d()) }, synchronizeCookie: function (e, n, t) { !pn.cloudflareWorkerUrl || !pn.util.isSafariOrUiWebView() || (p(), function (e, n, t) { l[e] = {value: n}, t && (t instanceof Date ? l[e].expires = t : l[e].maxAge = t * s) }(e, n, t), function () { var e = a.vx; null !== e && e.localStorage.set(u, JSON.stringify(l)) }(), d()) } } }(); pn.container.register("itp", {useValue: io}), pn.itp = pn.container.resolve("itp"); pn.container.register("util", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t = e.resolve("jqUtils"), r = e.resolve("cookie"), o = e.resolve("versionService"), i = e.resolve("itp"), a = e.resolve("consent"), s = "", c = {ENABLED_AFTER_DISABLED: -2, NOT_DETECTED: -1, DISABLED: 0, ENABLED: 1}; void 0 === "testString".toHex && Object.defineProperty(String.prototype, "toHex", { enumerable: !1, value: function () { for (var e = "", n = 0; n < this.length; ++n) e += "" + this.charCodeAt(n).toString(16); return e } }); var u = function (e, n, t) { var o = {path: "/", expires: 0}; void 0 !== n && (o.domain = n), void 0 !== t && (o.path = t), r.remove(e, o) }, l = function (e, n, t) { -1 !== n.indexOf("abril.com.br") && u(e, ".abril.com.br", t), -1 !== n.indexOf("scotsman.com") && u(e, ".scotsman.com", t) }, d = function (e) { var n; if (0 === document.cookie.length) return null; if (e instanceof RegExp) for (var t = document.cookie.split(";"), r = 0; r < t.length; r++) { var o = t[r].indexOf("="); if (-1 !== o) { var i, a = t[r].substr(0, o).trim(); if (e.test(a)) { i = t[r].substr(o + 1).trim(); try { return decodeURIComponent(i) } catch (n) { m('Could not uri-decode cookie "' + e.toString() + '"', n) } return i } } } else { var s = ("; " + document.cookie).split("; " + e + "="); if (s.length >= 2) { var c = null === (n = s.pop()) || void 0 === n ? void 0 : n.split(";").shift(); if (void 0 === c) return null; try { return decodeURIComponent(c) } catch (n) { m('Could not uri-decode cookie "' + e + '"', n) } return c } } return null }, f = function (e) { if (0 === document.cookie.length) return []; for (var n = [], t = document.cookie.split(";"), r = 0; r < t.length; r++) { var o = t[r].indexOf("="); if (-1 !== o) { var i, a = t[r].substr(0, o).trim(); if (e instanceof RegExp && e.test(a)) { i = t[r].substr(o + 1).replace(/^\s+|\s+$/g, ""); try { i = decodeURIComponent(i) } catch (n) { m('Could not uri-decode cookie "' + e.toString() + '"', n) } n.push({name: a, value: i}) } else if (a === e) { i = t[r].substr(o + 1).replace(/^\s+|\s+$/g, ""); try { i = decodeURIComponent(i) } catch (n) { m('Could not uri-decode cookie "' + e + '"', n) } n.push({name: a, value: i}) } } } return n }; function m() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; !0 === pn.debug && g.apply(void 0, e) } function v() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; var t; g.apply(void 0, e), (t = "string" == typeof arguments[0] ? new Error(arguments[0]) : new Error).stack && g(t.stack) } function g() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; if (window.console && window.console.log && window.console.log.apply && window.console.log.apply.call && void 0 !== window.console && void 0 !== window.console.log) { var t = ["TP:"]; try { for (var r = 0; r < e.length; r++) t.push(e[r]) } catch (n) { t = e } $() && (t = y(t)), "object" == _typeof(window.console.log) ? window.console.log.apply.call(this, console, t) : console.log.apply(console, t) } } var h = function () { var e = 0; return window.pageYOffset ? e = window.pageYOffset : e = "number" == typeof (e = document.documentElement || document.body.parentNode).scrollTop ? e.scrollTop : document.body.scrollTop, e }, y = function (e) { var n = ""; try { for (var t = 0; t < e.length; t++) try { n += JSON.stringify(e[t]) + ", " } catch (e) { n += "" + e } return [n] } catch (n) { return e } }, w = function () { var e, n; return "CSS1Compat" === document.compatMode ? (e = document.documentElement.clientWidth, n = document.documentElement.clientHeight) : (e = document.body.clientWidth, n = document.body.clientHeight), { x: e, y: n } }, _ = function (e) { e = e.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var n = new RegExp("[\\?&]" + e + "=([^&#]*)").exec(location.search); return null === n ? "" : decodeURIComponent(n[1].replace(/\+/g, " ")) }, b = function (e) { var n = e(location.href); if (history && "function" == typeof history.replaceState) { var t = "object" == _typeof(window.next) && "object" == _typeof(window.next.router) ? { url: e(history.state.url || ""), as: e(history.state.as || ""), options: history.state.options } : history.state; history.replaceState(t, document.title, n) } else location.href = n }, k = function (e, n, t) { var r = p({path: "/", expires: 730}, t && {domain: t}), o = T(); for (var i in o) u(e, o[i]); r.domain && l(e, r.domain), (pn.cookieDomain || pn.cookiePath) && (r.domain = pn.cookieDomain ? pn.cookieDomain : r.domain, u(e, r.domain, r.path), r.path = pn.cookiePath ? pn.cookiePath : r.path, u(e, r.domain, r.path)), u(e), J("composer", e, n, r) }, C = function () { return Ae.cookie.getTopLevelDomain() }, I = function (e) { return pn.useAidSpecifiedCookies && pn.aid ? e + "_" + pn.aid : e }, S = function () { var e, n = I("__pls"), t = d(n); if (t) try { if ((e = JSON.parse(t)) && !Array.isArray(e)) throw new Error("Push list subscriptions must be an array") } catch (e) { m("Can't get push list subscriptions", e) } return e }, E = function (e) { n = e; var t = C(); J("vx", "__pat", n, {path: "/", expires: 30, domain: t}) }, T = function () { var e, n = []; n.push(document.domain); for (var t = (null === (e = document.domain) || void 0 === e ? void 0 : e.split(".")) || []; t.length >= 2;) n.push("." + t.join(".")), t.shift(); return n }, P = function (e) { var n = G(e); return "boolean" === t.type(n) || "string" === t.type(n) && n.length ? !0 === n || "true" === n ? c.ENABLED : c.DISABLED : c.NOT_DETECTED }, x = function () { var e = G("__pnahc"), n = !1; return void 0 === e && (e = "0", n = !0), {cookieValue: parseInt(e, 10), isFirst: n} }, A = {}, O = function (e) { A[e] ? A[e].counter++ : A[e] = {counter: 1, waiters: []} }, M = function (e, n) { if (A[e] && (A[e].counter--, A[e].counter <= 0)) { var t = []; A[e].waiters.forEach((function (e) { t.push(e) })), delete A[e], t.forEach((function (e) { e(void 0 !== n ? n : {}) })) } }, N = function () { return navigator.userAgent || navigator.vendor || window.opera }, R = function () { return o.getTinypassVersion().indexOf("SNAPSHOT") >= 0 }, L = function () { return "https:" === document.location.protocol }, U = function (e, n) { var t = [], r = e.indexOf(n); return -1 === r ? t.push(e) : (t.push(e.substr(0, r)), t.push(e.substr(r + 1))), t }, D = function (e) { var n, t, r = U(e, "="); void 0 !== e && (n = r[0], t = r[1]); var o = ""; return void 0 !== n && (o += encodeURIComponent(decodeURIComponent(n))), void 0 !== t && (o += "=" + encodeURIComponent(decodeURIComponent(t))), o }, j = function (e) { if (!e) return ""; var n = function (e) { var n = e.indexOf("?"), t = e.indexOf("#"), r = !1; -1 !== t && (r = !0); var o = !1; -1 !== n && (o = !0), r && o && t < n && (o = !1); var i, a = "", s = ""; if (o) { var c = U(e, "?"); if (i = c[0], r) { var u = U(c[1], "#"); a = u[0], s = u[1] } else a = c[1] } else if (r) { var l = U(e, "#"); i = l[0], s = l[1] } else i = e; return {schemeDomainAndPath: i, queryString: a, hash: s, hasQueryString: o, hasHash: r} }(e = e.replace(/^((%20)|\s)+/, "")), t = encodeURI(decodeURI(n.schemeDomainAndPath)); return n.hasQueryString && (t += "?" + function (e) { var n = ""; if (void 0 !== e) for (var t = e.split("&"), r = 0; r < t.length; r++) r > 0 && (n += "&"), n += D(t[r]); return n }(n.queryString)), n.hasHash && (t += "#" + encodeURIComponent(decodeURIComponent(n.hash))), t }, V = function (e) { var n = parseInt(e, 10); return !(isNaN(parseFloat(n)) || n < 0 || n > 255) }, F = function (e) { var n = document.createElement("a"); n.href = /^https?:\/\//i.test(e) ? e : "http://" + e; var t = n.hostname; return 0 === t.indexOf("www.") && (t = t.replace("www.", "")), t }; function B() { return null !== N().match(/Version.+Safari/) } var q = function (e, n) { return new RegExp("\\?" + n, "gi").test(e) ? e.split("&").length > 1 ? e.replace(new RegExp(n + "[^&]+&?", "gi"), "") : e.replace(new RegExp("\\?" + n + "[^&]+&?", "gi"), "") : new RegExp("\\&" + n, "gi").test(e) ? e.replace(new RegExp("\\&" + n + "[^&]+", "gi"), "") : e }, z = function (e) { try { var n = new Error; H({trace: ee(n.stack, 6), desc: "clearing __tp cookie", accessTokenList: e}) } catch (e) { } }, H = function (e) { try { var n = pn.user.getProvider(), t = JSON.stringify([p({ aid: pn.aid, up: n.getName(), url: window.location.href, t: (new Date).getTime(), v: o.getTinypassVersion(), tags: ["sdk"] }, e)]); pn.api.callApi("/anon/error/log", {log_message: t}) } catch (e) { } }; var W = function (e) { e || (e = 730); var n = pn.getMaxCookieExpirationInDays(); if (null !== n) { var t; "number" == typeof e ? (t = new Date).setDate(t.getDate() + e) : t = e; var r = new Date; if (r.setDate(r.getDate() + n), t > r) return n } return e }, G = function (e) { return r.get(e) }, J = function (e, n, t, o) { var i; a[e] || m("CONSENT ERROR: Consent module was not initiliazed"), Q(n, t, o, (null === (i = a[e]) || void 0 === i ? void 0 : i.cookie.set) || r.set) }, Q = function (e, n, t, o) { void 0 === o && (o = r.set), t = t || {}, "11C6aYHwtb" === pn.aid ? (t.samesite = "none", t.secure = !0) : t.samesite = "lax", t.expires && (t.expires = W(t.expires)), o(e, n, t), void 0 !== i.synchronizeCookie && i.synchronizeCookie(e, n, t.expires) }, X = "__tp-", Y = "-expiration", $ = function () { var e = ["__webdriver_evaluate", "__selenium_evaluate", "__webdriver_script_function", "__webdriver_script_func", "__webdriver_script_fn", "__fxdriver_evaluate", "__driver_unwrapped", "__webdriver_unwrapped", "__driver_evaluate", "__selenium_unwrapped", "__fxdriver_unwrapped"], n = ["_phantom", "__nightmare", "_selenium", "callPhantom", "callSelenium", "_Selenium_IDE_Recorder"]; for (var t in n) { if (window[n[t]]) return !0 } for (var r in e) { var o = e[r]; if (window.document[o]) return !0 } for (var i in window.document) if (i.match(/\$[a-z]dc_/) && window.document[i].cache_) return !0; return !!(window.external && window.external.toString && window.external.toString() && -1 !== window.external.toString().indexOf("Sequentum") || window.document.documentElement.getAttribute("selenium") || window.document.documentElement.getAttribute("webdriver") || window.document.documentElement.getAttribute("driver")) }, K = function () { return G("__tac") }, Z = function () { return document.referrer }, ee = function (e, n) { return e && e.split("\n").filter((function (e, t) { return t > 1 && t < n + 1 })).map((function (e) { return e.trim() })).join("") }, ne = function e(n, t) { try { return n() } catch (n) { return t ? e(t) : null } }, te = function (e, n) { return void 0 === n && (n = !1), ne((function () { return JSON.parse(e) }), (function () { return n ? JSON.parse(window.atob(e)) : null })) || null }, re = function () { return Nr.isReady ? Nr.get("userSegments") : null }; return { name: "util", __private__: {getAdjustedCookieExpiration: W}, __protected__: { deleteTLDCookieForSpecificDomains: l, documentReady: function (e) { var n = function n() { document.removeEventListener("DOMContentLoaded", n), window.removeEventListener("load", n), e() }; "complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll ? window.setTimeout(e) : (document.addEventListener("DOMContentLoaded", n), window.addEventListener("load", n)) }, getCookie: G, setCookieConsent: J, setCookie: Q, getLocalStorageItem: function (e) { var n = X + e, t = Ae.localStorage.get(n), r = Ae.localStorage.get(n + Y); return r && r < Math.floor((new Date).getTime() / 1e3) ? (Ae.localStorage.remove(n), Ae.localStorage.remove(n + Y), null) : t }, hasLocalStorage: function () { try { return "object" == _typeof(window.localStorage) && "function" == typeof window.localStorage.getItem } catch (e) { return !1 } }, randomStringCxCompatible: function () { for (var e = (new Date).getTime().toString(36); e.length < 16;) e += Math.round(2147483647 * Math.random()).toString(36); return e.substr(0, 16) }, setLocalStorageItem: function (e, n, t, r, o) { void 0 === o && (o = !0); var i = (o ? X : "") + n, s = a[e]; s ? s.localStorage.set(i, t, {expires: r}) : v("There is no such initiated consentProduct ->", e) }, removeLocalStorageItem: function (e) { var n = X + e; Ae.localStorage.remove(n) }, cameFromFbSubscriptions: function () { return 0 === _("redirect_uri").indexOf("https://www.facebook.com/subscriptions/account-linking/confirm/") }, logRemoveTokens: function (e) { var n, t; H({ uid: null !== (n = e.uid) && void 0 !== n ? n : "n", desc: "clearing __utp cookie", actions: null !== (t = e.actions) && void 0 !== t ? t : "n" }) }, waitAllPromises: function (e) { return Promise.all(e) }, isInteger: function (e) { return "number" == typeof e && isFinite(e) && Math.floor(e) === e }, racePromise: function (e) { return Promise.race(e) }, isCxenseBot: function () { var e = N(); return /(cxensebot)/i.test(e) }, isHttpsProtocol: L, isApplePayAllowed: function () { var e = !1; try { e = B() && window.ApplePaySession && window.ApplePaySession.canMakePayments() } catch (e) { g("ApplePay error", e) } return (R() || L()) && e }, isDevEndpoint: R, setVxUsersToDataLayer: function (e) { var n = Nr.get("users"), t = !1, r = n ? Object.keys(n).reduce((function (e, r) { var o; return "VX" === (null === (o = n[r]) || void 0 === o ? void 0 : o.type) && (t = !0, e[r] = null), e }), {}) : {}; (n && t || e) && Nr.set("users", p(p({}, r), e)) } }, toJSON: function (e, n) { void 0 === n && (n = !1); var t = JSON.stringify(e); return ne((function () { return n ? window.btoa(t) : t })) || t }, parseJSON: te, addScript: function (e, n) { var t, r = document.createElement("script"), o = document.getElementsByTagName("script")[0]; null === (t = o.parentNode) || void 0 === t || t.insertBefore(r, o), r.type = "text/javascript", r.async = !0, r.onload = n, r.src = e }, isScriptAdded: function (e) { for (var n = document.getElementsByTagName("script"), t = 0, r = n.length; t < r; t++) if (n[t].src.indexOf(e) > -1) return !0; return !1 }, fromUnderscoreToCamelCase: function (e) { return e.slice().replace(/_[a-z]/g, (function (e) { return e.replace("_", "").toUpperCase() })) }, randomString: function (e) { e || (e = 5); var n = "", t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; if (window.crypto && window.crypto.getRandomValues && "function" == typeof Uint32Array) { var r = new Uint32Array(e); window.crypto.getRandomValues(r); for (var o = 0; o < e; o++) n += t.charAt(r[o] % 62) } else for (o = 0; o < e; o++) n += t.charAt(Math.floor(62 * Math.random())); return n }, log: g, debug: m, error: v, findCookieByName: d, findCookiesByName: f, removeVoucherCodeFromUrl: function (e) { return q(e, "voucher_code") }, removeSharedAccountCodeFromUrl: function (e) { return q(e, "shared_account_code") }, deleteCookie: u, mapArrayIndex: function (e, n) { return n }, getScroll: h, getPageSize: function () { return { x: Math.max(document.documentElement.clientWidth, document.body.scrollWidth, document.documentElement.scrollWidth, document.body.offsetWidth, document.documentElement.offsetWidth), y: Math.max(document.documentElement.clientHeight, document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight) } }, getViewport: w, center: function (e, n) { var t = h(), r = w(); return (r = { x: r.x / 2 - e / 2, y: r.y / 2 - n / 2 + t }).x = Math.max(0, r.x), r.y = Math.max(10, r.y), r }, centerScreen: function (e, n) { e = e || 0, n = n || 0; var r = void 0 !== window.screenLeft ? window.screenLeft : window.screen.left, o = void 0 !== window.screenTop ? window.screenTop : window.screen.top, i = t.winSize(); return { left: (i.width || document.documentElement.clientWidth || window.screen.width) / 2 - e / 2 + r, top: (i.height || document.documentElement.clientHeight || window.screen.height) / 2 - n / 2 + o } }, getQueryParamByName: _, hasQueryParamByName: function (e) { var n = {}; return location.search.substr(1).split("&").forEach((function (e) { var t = e.split("="), r = t[0], o = t[1] && decodeURIComponent(t[1]); r in n ? n[r].push(o) : n[r] = [o] })), n.hasOwnProperty(e) }, removeQueryParamByName: function (e) { b((function (n) { return function (e, n) { var t, r = e.split("#"), o = r[0].split("?"); if (r.length >= 2 && (t = r[1]), n = Array.isArray(n) ? n : [n], o.length >= 2) { for (var i = o[1].split(/[&;]/g), a = 0; a < n.length; a++) for (var s = encodeURIComponent(n[a]) + "=", c = i.length; c-- > 0;) -1 !== i[c].lastIndexOf(s, 0) && i.splice(c, 1); return e = o[0] + (i.length > 0 ? "?" + i.join("&") : ""), t ? e + "#" + t : e } return e }(n, e) })) }, setAccessTokenListCookie: function (e, n, r) { var o = I("__ut"); if (e && "string" === t.type(e.value)) { var i = new Date, a = {domain: void 0, path: "/", expires: 730, secure: !0}; e.cookie_domain && "localhost" !== e.cookie_domain && t.inArray(e.cookie_domain, T()) >= 0 && (a.domain = e.cookie_domain), pn.cookieDomain && (a.domain = pn.cookieDomain), pn.cookiePath && (a.path = pn.cookiePath); var s = T(); for (var c in s) u("__tac", s[c]), u("__tae", s[c]), u(o, s[c]); e.value && J("composer", "__tac", e.value, a), J("composer", "__tae", i.getTime(), a), J("vx", o, n, a), "" === n && !r && z(e) } else { var l = T(); if (l.push(void 0), pn.cookieDomain && l.push(pn.cookieDomain), pn.cookiePath) for (var c in l) u("__tac", l[c], pn.cookiePath), u("__tae", l[c], pn.cookiePath), u("__eea", l[c], pn.cookiePath), u(o, l[c], pn.cookiePath); for (var c in l) u("__tac", l[c]), u("__tae", l[c]), u("__eea", l[c]), u(o, l[c]); r || z(e) } }, setTpccCookies: function () { var e = _("tpcc"); if (e) { var n = new Date, t = JSON.stringify({date: n.getTime()}), r = C(); /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(location.hostname) && (r = ""), r || (r = ""), J("vx", "tpcc_" + e, t, { path: "/", expires: 90, domain: r }) } }, getCampaigns: function (e) { var n = f(/^tpcc_.+/), t = _("tpcc"), r = "tpcc_".concat(t), o = !1; n.forEach((function (n) { e[n.name] = n.value, t && n.name === r && (o = !0) })), t && !o && (e[r] = JSON.stringify({date: Date.now()})) }, getCustomCookies: function () { var e = {}; return f(/^_pc_.+/).forEach((function (n) { e[decodeURIComponent(n.name)] = n.value })), e }, ADBLOCKER_STATUS: c, getAdblockStatus: function () { var e = c.NOT_DETECTED, n = x(); return pn.adblockerCookieName && (e = P(pn.adblockerCookieName)), e === c.NOT_DETECTED && (e = P("__pac")), e === c.NOT_DETECTED && (e = P("__adblocker")), function (e, n) { e <<= 1, n === c.ENABLED ? e |= 1 : e &= -2, n !== c.NOT_DETECTED && J("vx", "__pnahc", e + "", { path: "/", expires: 90 }) }(n.cookieValue, e), e === c.ENABLED && (n.isFirst || function (e) { return 1 == (e >> 0 & 1) }(n.cookieValue) || (e = c.ENABLED_AFTER_DISABLED)), e }, getAdblockerStatusReason: function () { return void 0 !== window.blockAdBlock ? "1" : "0" }, getAdblockerHistoryCookieInfo: x, waitCall: function (e, n) { A[e] ? A[e].waiters.push(n) : n() }, startCall: O, doneCall: M, hasCall: function (e) { return !!A[e] }, debounce: function (e, n, t) { var r; return function () { var o = this, i = Array.prototype.slice.call(arguments), a = t && !r; clearTimeout(r), r = setTimeout((function () { r = null, t || e.apply(o, i) }), n), a && e.apply(o, i) } }, throttle: function (e, n) { var t, r, o = !1; return function i() { if (o) return t = arguments, void (r = this); e.apply(this, arguments), o = !0, setTimeout((function () { o = !1, t && (i.apply(r, t), t = r = null) }), n) } }, profile: function (e) { function n() { return n.__invokeCount++, e.apply(this, arguments) } return Object.defineProperty(n, "__invokeCount", { writable: !0, value: 0 }), Object.defineProperty(n, "invokeCount", { get: function () { return this.__invokeCount } }), n }, setTbcCookieFromResponse: function (e) { e && e.browser && void 0 !== e.browser.tbc && k("__tbc", e.browser.tbc, e.browser.cookie_domain), e && e.tbc && e.tbc.cookie_value && k("__tbc", e.tbc.cookie_value, e.tbc.cookie_domain) }, setTacCookieFromResponse: function (e) { var n = (new Date).getTime(), t = K(), r = function (e, r) { !e || e === t || (k("__tac", e, r), k("__tae", n, r)) }; e.browser && r(e.browser.tac, e.browser.cookie_domain), e.tac && r(e.tac.cookie_value, e.tac.cookie_domain) }, setXbcCookieFromResponse: function (e) { var n = "xbc"; if (e.xbc && e.xbc.cookie_value) { var t = {path: "/", expires: 730}; if (e.xbc.cookie_domain && "localhost" !== e.xbc.cookie_domain && (t.domain = e.xbc.cookie_domain, l(n, e.xbc.cookie_domain)), pn.cookieDomain || pn.cookiePath) { var r = T(); for (var o in r) u(n, r[o]); t.domain = pn.cookieDomain ? pn.cookieDomain : t.domain, l(n, t.domain, t.path), t.path = pn.cookiePath ? pn.cookiePath : t.path, l(n, t.domain, t.path) } u(n), J("composer", n, e.xbc.cookie_value, t) } }, getTbcCookie: function () { return G("__tbc") }, getPcidCookie: function () { return G("_pcid") }, getTacCookie: K, getAidSpecifiedName: I, getUserTokenCookie: function () { var e = I("__ut"), n = d(e); return void 0 !== n && n && n.length >= 0 ? n : null }, getPushListsCookie: S, setPushListsCookie: function (e) { if (e) { var n = I("__pls"), t = S() || []; t.indexOf(e) > -1 || (t.push(e), u(n), J("composer", n, JSON.stringify(t), { path: "/", expires: 730, domain: C() })) } }, setAppTimezoneOffsetFromResponse: function (e) { e && e.browser && void 0 !== e.browser.app_timezone_offset ? E(e.browser.app_timezone_offset) : e && void 0 !== e.timezone_offset && E(e.timezone_offset) }, setAppTimezoneOffset: E, getAppTimezoneOffset: function () { return null == n && (n = G("__pat")), n || 0 }, getBrowserTimezoneOffset: function () { return -Math.round((new Date).getTimezoneOffset()) }, str2timestamp: function (e) { if (void 0 !== e && 0 !== e.length) { if ("string" != typeof e && (e = "" + e), (e = e.trim()).match(/^[0-9]{0,10}$/)) return parseInt(e); if (e.match(/^[0-9]{13,}$/)) return parseInt(e) / 1e3; var n = Date.parse(e); if (n) return n / 1e3; if ((e = (e = (e = (e = e.replace(/00:([0-9]{2}(:[0-9]{2})?\s*[AP]M)/i, "12:$1").replace(/([0-9]{2})([AP|M])/i, "$1 $2")).replace(/\s*(at|@|\-|on|\|)\s*/gi, " ")).replace(/\s*(mon(day)?|tue(s?day)?|wed(nesday)?|thu((rs)?day)?|fri(day)?|sat(urday)?|sun(day)?)\s*/gi, "")).replace(/([0-9]{1,2})(st|nd|rd|th)/, "$1")).match(/\s+ET$/)) e = 240 === (new Date).getTimezoneOffset() ? e.replace(/\s+ET$/, " EDT") : e.replace(/\s+ET$/, " EST"); if (e = e.trim(), n = Date.parse(e)) return n / 1e3; var t = e.match(/!^([a-z]+)[-/ ]([0-9]+)[-/ ]([0-9]+)(.*)$!i/); if (t ? e = t[2] + " " + t[1] + " " + t[3] + t[4] : (t = e.match(/!^([0-9]+)[-/ ]([a-z]+)[-/ ]([0-9]+)(.*)$!i/)) && (e = t[1] + " " + t[2] + " " + t[3] + t[4]), n = Date.parse(e)) return n / 1e3 } }, getPossibleCookieDomains: T, isMobileTabletIOs: function () { var e = N(); return /iPad|iPhone|iPod/.test(e) && !window.MSStream }, isIphone: function () { var e = N(); return /iPhone/.test(e) && !window.MSStream }, isIOS: function () { var e = N(); return /iPad|iPhone|iPod/.test(e) && !window.MSStream }, isIOsUiWebView: function () { var e = N(); return /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e) }, isSafariOrIOsUiWebView: function () { var e = N(); return /(iPhone|iPod|iPad).*AppleWebKit/i.test(e) }, isSafariOrUiWebView: function () { var e = N(); return /(Macintosh|iPhone|iPod|iPad)(?!.*Chrome)(?!.*Firefox)(?!.*Opera)(?!.*MSIE)(?!.*Trident)(.*AppleWebKit|.*Safari)/i.test(e) }, isFBOrInstWebView: function () { var e = N(); return e.indexOf("FBAN") > -1 || e.indexOf("FBAV") > -1 || e.indexOf("Instagram") > -1 }, isAndroid: function () { var e = N(); return /(android)/i.test(e) }, isSafari: B, isIE: function () { var e = -1 !== (navigator && navigator.appVersion || "").indexOf("MSIE"), n = (navigator && navigator.userAgent || "").indexOf("Trident/") > 0; return e || n }, isCriOS: function () { return -1 !== (navigator && navigator.userAgent || "").indexOf("CriOS") }, isEdge: function () { return /Edg(e?)/i.test(N()) }, isRelativeUrl: function (e) { return /^\/(?:\w+|\.{1,2}\/\w+)/.test(e) }, prepareUrlParameter: j, getReferrer: Z, getHostname: F, extractCookieDomain: function (e) { if (e && e.length && "." === e[0]) return e; var n = e || window.location.href, t = F(n); return function (e) { var n = e.split("."), t = !0; return 4 === n.length && V(n[0]) && V(n[1]) && V(n[2]) && V(n[3]) || (t = !1), t }(t) ? t : "localhost" === t ? null : "." + t }, setCurrentDomainFromResponse: function (e) { e && void 0 !== e.browser && void 0 !== e.browser.cookie_domain && M("domainIsReceived", e.browser.cookie_domain), e && e.tbc && e.tbc.cookie_domain && M("domainIsReceived", e.tbc.cookie_domain) }, getCurrentDomainFromCookie: function (e, n) { void 0 === n && (n = !1); try { return te(G(e), n).domain } catch (e) { O("domainIsReceived") } }, isBot: $, getAffiliateToken: function (e) { var n = window.location.hash.slice(1); if (n) { var t = n.split("="), r = t[0], o = t[1]; r && o && r === e && (b((function (e) { return e.split("#")[0] })), s = o) } return s }, removeAffiliateToken: function () { s = "" }, asUint8Array: function (e) { for (var n = new Uint8Array(e.length), t = e.split(""), r = 0; r < e.length; r++) n[r] = t[r].charCodeAt(0); return n }, setUserSegments: function (e) { var n = e.userSegments || {}, t = Object.keys(n).reduce((function (e, t) { var r = n[t].segments; return Array.isArray(r) && r.length && (e[t] = {segments: n[t].segments}), e }), {}); Nr.set("userSegments", Object.keys(t).length ? t : null) }, getPageViewContext: function () { var e = Nr.isReady && Nr.get("content") || {}, n = e.createdAt ? new Date(e.createdAt).getTime() : 0; return (!n || isNaN(n)) && (n = void 0), { pageTitle: e.title || window.document.title, referrerUrl: j(Z() || window.document.referrer), url: j(window.location.href), pageViewId: Nr.isReady && Nr.get("pageViewId") || null, author: (e.authors || []).join(","), created: n, section: e.section, tags: e.tags, contentType: e.type || "" } }, getBrowserId: function () { return Nr.isReady ? Nr.get("browserId") : null }, getCookieConsents: function () { return Nr.utils.getConsent() || Nr.utils.notAcquiredConsent }, getUserSegments: re, getUserSegmentsString: function () { return JSON.stringify(re()) }, requireJsFile: function (e) { return new Promise((function (n, t) { var r = document.createElement("script"); r.onload = n, r.onerror = n, r.type = "text/javascript", r.charset = "utf-8", r.async = !0, r.src = e, document.getElementsByTagName("head")[0].appendChild(r) })) } } }() }), pn.util = pn.container.resolve("util"); var ao = "composer-control-policy", so = "composer-request-control-policy", co = function (e) { var n = {}, t = e; if (e) { if ("object" != _typeof(e)) try { t = JSON.parse(e) } catch (e) { } n = ["deny-web", "deny-all", "deny-fbia"].reduce((function (e, n) { return t[n] && (e[n] = t[n]), e }), {}) } return n }, uo = function (e) { var n = !1, t = Object.keys(e).reduce((function (t, r) { return function (e) { return !!e && Math.ceil(Date.now() / 1e3) <= e }(e[r]) ? t[r] = e[r] : n = !0, t }), {}); return {needToRemove: !Object.keys(t).length, needToUpdate: n, newValue: t} }; pn.container.register("composerControlPolicy", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("localStorage"), t = co(n.get(ao)), r = function (e) { var r = uo(t), o = r.needToUpdate, i = r.needToRemove, a = r.newValue; t = p(p({}, a), e), (o || e) && n.set(ao, JSON.stringify(t)), !e && i && n.remove(ao) }; r(); var o = function (e) { return r(), !!t["deny-all"] || !!t[e] }; return { get denyFbia() { return o("deny-fbia") }, get denyWeb() { return o("deny-web") }, get denyAll() { return o("deny-all") }, __private__: { setPolicyByRequest: function (e) { var n; if (e.getAllResponseHeaders().includes(so)) { var t = e.getResponseHeader(so); t && r(((n = {})[t] = function (e) { return void 0 === e && (e = 15), Math.ceil(Date.now() / 1e3) + 60 * e }(), n)) } }, checkLS: function () { t = co(n.get(ao)) } } } }() }), pn.composerControlPolicy = pn.container.resolve("composerControlPolicy"); var lo = function () { pn.container.resolve("jqUtils"); var e, n = pn.container.resolve("util"), t = pn.container.resolve("ajax"), r = n.findCookieByName(/__TP_*/); if (void 0 !== window._tpm && void 0 !== window._tpm.paywallID) { var o = window._tpm.paywallID; e = n.__protected__.getCookie("umc_" + o) } var i = function () { return pn.getApiEndpoint() }, a = function (t, o) { var i = n.__protected__.getCookie("__tac"); (void 0 === t || !t) && (t = {}), t.aid = pn.aid, e && (t.umc = e), r && (t.tp_access_token_v2 = r), i && (t.tac = i), !t.user_provider && o && !o.isv && (t.user_provider = o.getName()), (void 0 === t.user_token || !t.user_token) && o && !o.isv && (t.user_token = "string" == typeof o.getToken() ? o.getToken() : ""); var a = n.getAffiliateToken(pn.affiliateTokenName); a && (t.affiliate_token = a) }; function s(e, r, o, s, c, u) { var l; n.debug("Calling API method: " + e), l = void 0 !== s ? s : i(), l += e, (void 0 === r || !r) && (r = {}); var d, f, m = n.getTbcCookie(); m && (r.tbc = m), pn.user && (d = pn.user.getProvider()), a(r, d), f = function (e) { n.debug("API Response", e), e && (n.setTbcCookieFromResponse(e), n.setAppTimezoneOffsetFromResponse(e), n.setCurrentDomainFromResponse(e)), void 0 !== o && o(e) }; var v = function (e) { var n = "/access/list", t = "/access/check"; if (e !== n && e !== t && "/user/access/list" !== e && "/user/access/check.jwt" !== e) return null; var r = Math.floor((new Date).getTime() / 1e3); return e === n ? { code: 0, count: 0, data: [], limit: 0, offset: 0, total: 0, ts: r } : e === t ? { code: 0, ts: 1548942314, access: { access_id: null, parent_access_id: null, granted: !1, resource: null, user: null, expire_date: r } } : {code: 403, ts: r, message: "User doesn't have permission to call this method"} }(e); if (null === v || pn.user.getProvider().isUserValid()) { !function (e) { !pn.isDoubleOptInCheckOnAccessCheckEnabled || "/access/check" === e && pn.doubleOptIn.check() }(e); var g = r.aid, h = p({}, r); delete h.aid; var y = {type: null != u ? u : "POST", dataType: "json", data: h}; l += "?aid=" + g, y.url = l, c && (y.async = !1), y.success = function (e) { f(e) }, y.error = function (e) { var t = {code: 503, message: "Error: Received error when requesting API response from URL: " + l}; n.log(t.message), f(t) }, t.request(y) } else f(v) } return { name: "api", callApi: function (e, n, t, r, o, i) { return s(e, n, t, r, o, i) }, getEndpoint: function () { return i() }, getCallParams: function (e, n) { return a(e, n) } } }(); pn.container.register("api", {useValue: lo}), pn.api = pn.container.resolve("api"); var po = function () { var e, n, t, r, o, i, a, s, c, u, l, d = pn.container.resolve("jqUtils"), p = pn.container.resolve("util"), f = {}, m = {}, v = [], g = {}, h = (e = {}, i = 1, a = window, s = !1, u = "addEventListener", l = a[c = "postMessage"], e[c] = function (e, n, t) { !n || (e = "string" == typeof e ? e : d.param(e), t = t || parent, l ? t[c](e, n.replace(/([^:]+:\/\/[^\/]+).*/, "$1")) : n && (t.location = n.replace(/#.*$/, "") + "#" + +new Date + i++ + "&" + e)) }, e.receiveMessage = o = function (e, i, c) { l ? (e && (r && o(), r = function (n) { if ("string" == typeof i && n.origin !== i || d.isFunction(i) && i(n.origin) === s) return s; e(n) }), a[u] ? a[e ? u : "removeEventListener"]("message", r, s) : a[e ? "attachEvent" : "detachEvent"]("onmessage", r)) : (n && clearInterval(n), n = null, e && (c = "number" == typeof i ? i : "number" == typeof c ? c : 100, n = setInterval((function () { var n = document.location.hash, r = /^#?\d+&/; n !== t && r.test(n) && (t = n, e({data: n.replace(r, "")})) }), c))) }, e), y = function (e, n) { var t = {}, r = {true: !0, false: !1, null: null}; return e.replace(/\+/g, " ").split("&").forEach((function (e, o) { var i = o.split("="), a = ""; try { a = decodeURIComponent(i[0]) } catch (e) { return } var s, c = t, u = 0, l = a.split("]["), d = l.length - 1; if (/\[/.test(l[0]) && /\]$/.test(l[d]) ? (l[d] = l[d].replace(/\]$/, ""), d = (l = l.shift().split("[").concat(l)).length - 1) : d = 0, 2 === i.length) if (s = decodeURIComponent(i[1]), n && (s = s && !isNaN(s) ? +s : "undefined" === s ? void 0 : void 0 !== r[s] ? r[s] : s), d) for (; u <= d; u++) c = c[a = "" === l[u] ? c.length : l[u]] = u < d ? c[a] || (l[u + 1] && isNaN(l[u + 1]) ? {} : []) : s; else Array.isArray(t[a]) ? t[a].push(s) : void 0 !== t[a] ? t[a] = [t[a], s] : t[a] = s; else a && (t[a] = n ? void 0 : "") })), t }; var w = function (e, n, t) { t && C(t) && !(t in m) ? p.error("Cannot send message to unmanaged iframe: " + t) : t && m[t].element && ("popup" === m[t].config.displayMode || "popup" !== m[t].config.displayMode && m[t].element.contentWindow ? _(e, n, t) : (v.push({ event: e, params: n, recipient: t }), d.on(m[t].element, "load", function (e) { return function () { var n = v.filter((function (n) { return n.recipient === e })); v = v.filter((function (n) { return n.recipient !== e })); for (var t = n.length; t--;) { var r = n.pop(); _(r.event, r.params, r.recipient) } } }(t)))) }, _ = function (e, n, t) { var r, o = {}, i = "popup" === m[t].config.displayMode ? "opener" : "parent"; o.sender = C(t) ? i : t, o.recipient = C(t) ? t : i, o.event = e, o.params = n; var a = m[t].element; r = "popup" === m[t].config.displayMode ? m[t].container : a && a.contentWindow ? a.contentWindow : a && "[object Window]" === a.toString() ? m[t].element : window[i], h.postMessage(JSON.stringify(o), f[t].postMessageUrl, r) }; var b = function (e) { f[e.iframeId] = { iframeConfig: null, receive: null, postMessageUrl: null, initializedListener: !1, initializedKeystrokeHandler: !1 }, m[e.iframeId] = e }, k = function (e) { return !(!f[e] || !f[e].iframeConfig) }, C = function (e) { return !(f[e] && f[e].iframeConfig) }, I = function (e) { var n = S(e); return n.showCloseButton && "inline" !== n.displayMode }, S = function (e) { var n = f[e], t = n && n.iframeConfig && n.iframeConfig.iframe; return t && t.config }; function E(e) { var n, t, r = !1; try { n = JSON.parse(e.data) } catch (t) { try { (n = y(e.data)) && (r = !0) } catch (n) { return void p.debug("Error parsing postMessage: " + e.data) } } if (T(n), r) { var o; for (var i in m) (t = m[i]).config.isCurtain && (o = !0, t.config.parent && f[t.config.parent].receive && f[t.config.parent].receive(n), f[i].receive && f[i].receive(n)); o || p.debug("Error parsing postMessage: " + e.data) } else if (!C(n.sender) || n.sender && n.sender in m) { if (p.debug((k(n.sender) ? "iframe(" + n.recipient : "the parent") + ") received event '" + n.event + "' from iframe(" + n.sender + ")", n), f[n.sender].receive && f[n.sender].receive(n), m[n.sender] && ((t = m[n.sender]).config.parent && f[t.config.parent].receive)) { n.sender = t.config.parent, f[t.config.parent].receive(n, !0) } } else p.debug("Received message from unmanaged iframe: " + n.sender) } var T = function (e) { (g[e.event] || []).forEach((function (n) { n(e) })) }; return { name: "postmessage", init: function (e, n) { if (b(e.iframe), e.postMessageUrl) { if (e.iframe.iframeId) { f[e.iframe.iframeId].initializedKeystrokeHandler || (f[e.iframe.iframeId].initializedKeystrokeHandler = !0, d.delegate(window, "#".concat(e.iframe.iframeId), "keyup", (function (e) { return function (e) { 27 === e.keyCode && k(e.data.iframeId) && I(e.data.iframeId) && w("close", null, e.data.iframeId) }(e) }))), f[e.iframe.iframeId].postMessageUrl = e.postMessageUrl, f[e.iframe.iframeId].initializedListener || (f[e.iframe.iframeId].initializedListener = !0, f[e.iframe.iframeId].receive = e.receive, h.receiveMessage(E)), f[e.iframe.iframeId].iframeConfig = e; var t = n || {}; t.height = document.documentElement.offsetHeight, t.width = e.iframeParams && e.iframeParams.width ? e.iframeParams.width : document.documentElement.offsetWidth, w("loaded", t, e.iframe.iframeId) } } else p.error("Must specify postMessageUrl to send and receive postMessages") }, __protected__: { isIframeManaged: function (e) { var n = m[e]; return n && C(n) } }, send: w, removeIframe: function (e) { delete m[e], delete f[e] }, broadcast: function (e, n, t) { for (var r in m) m.hasOwnProperty(r) && r === t || w(e, n, r) }, subscribe: function (e, n) { g[e] = g[e] || [], g[e].push(n) }, unsubscribe: function (e, n) { g[e] instanceof Array && (g[e] = g[e].filter((function (e) { return e !== n }))) } } }(); pn.container.register("postmessage", {useValue: po}), pn.postmessage = pn.container.resolve("postmessage"); var fo = function () { var e = pn.container.resolve("jqUtils"), n = pn.container.resolve("util"), t = pn.container.resolve("postmessage"); return { name: "eventUtils", createEventManager: function (r) { var o, i = {}; for (o = 0; o < r.length; o++) i[r[o]] = []; var a = { addEvent: function (e) { void 0 === i[e] && (i[e] = []) }, hasIframeCallback: function (e, n) { var t, r; if (i[e] && i[e].length > 0) for (r = 0, null, t = null; r < i[e].length; ++r) if ("object" == _typeof(t = i[e][r]) && n === t.iframeId) return !0; return !1 }, hasCallback: function (e) { return i[e] && i[e].length > 0 }, registerCallback: function (e, t) { var r, o, a, s = "string" == typeof e ? e : null, c = "object" == _typeof(e) ? e : null; if (s) { if (r = "function" == typeof t ? t : null, void 0 === i[s]) return; i[s].push(r) } if (c) for (a in o = "string" == typeof t ? t : null, i) "function" == typeof c[a] && (n.debug("Registering " + a + " callback for iframe " + o), i[a].push({ iframeId: o, callback: c[a] })) }, fireCallbacks: function (e, n, t, r) { return a.fire(t, e, r, n) }, fire: function (r, o, a, s, c, u) { var l, d, p, f = !1, m = []; s && m.push(s), c && m.push(c), u && m.push(u); var v = s && s.resultCallbackId, g = function (t) { if (a) try { if (m.length > 1) return d.apply(null, m); if ("loginRequired" === o) { var i = e.deepExtend({}, t.term); return delete t.term, d(t, r, i) } return d(t, r) } catch (e) { n.debug(e) } }; if (void 0 !== i[o]) { for (p = 0, l = null, d = null; p < i[o].length; ++p) { if ("function" == typeof (d = i[o][p])) n.debug("firing callback for event '" + o + "' from iframe(" + r + ")"), l = g(s), f = !0; else if ("object" == _typeof(d)) { if (r !== d.iframeId) continue; n.debug("firing callback for event '" + o + "' from iframe(" + r + ")"), d = d.callback, l = g(s), f = !0 } v && (s.result = l, s.event = o, t.send("resultCallback", s, r)) } return !f && v && (s.callbackNotFound = !0, s.event = o, t.send("resultCallback", s, r)), l } }, fireCallbacksAndStopOnFirstFalse: function (e, t, r, o) { for (var a = [], s = 4; s < arguments.length; s++) a[s - 4] = arguments[s]; if (void 0 === i[e]) return !0; for (var c = !0, u = 0; u < i[e].length; u++) { var l = i[e][u]; if ("function" == typeof l) { n.debug("firing callback for event '" + e + "'"); try { var d = []; if (d.push(t), d.push(r), d.push(o), d = d.concat([].slice.call(a)), !1 === l.apply(null, d)) { n.debug("callback for event '" + e + "' returned false"), c = !1; break } } catch (t) { n.debug("firing callback for event '" + e + "' failed", t) } } } return c } }; return a } } }(); pn.container.register("eventUtils", {useValue: fo}), pn.eventUtils = pn.container.resolve("eventUtils"); var mo = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("api"), t = pn.container.resolve("eventUtils"), r = pn.container.resolve("localStorage"), o = t.createEventManager(["userChanged", "logout"]), i = "janrain", a = function () { return e.getUserTokenCookie() }, s = function () { var e = a(); return !!(void 0 !== e && e && e.length >= 0) }, c = !1, u = !1, l = {onCaptureSessionCreated: []}, d = { loginRequiredScreen: "signIn", appName: null, appId: null, clientId: null, settings: null, disableLogout: !1, startCapture: !1 }, p = {register: "traditionalRegistration", login: "signIn"}; var f = function (e) { return e && p.hasOwnProperty(e.startScreen) ? p[e.startScreen] : d.loginRequiredScreen }; var m = function () { d.disableLogout || e.setAccessTokenListCookie(void 0, void 0, !0) }, v = !0, g = function () { var e = window.janrain; return e && e.capture && e.capture.ui && e.capture.ui.hasActiveSession() }; function h() { e.log("JANRAIN:", "Processing janrain user"), v ? v = !1 : e.startCall("refreshUserToken"), e.log("JANRAIN:", "hasActiveSession:" + g()); var t = y(); if (!g()) return e.log("JANRAIN:", "No token found. Done processing user"), m(), void e.doneCall("refreshUserToken"); if (s()) return e.log("JANRAIN:", "Using __ut. Done processing user"), void e.doneCall("refreshUserToken"); var r = {janrain_capture_token: t, url: e.prepareUrlParameter(window.location.href)}; n.callApi("/anon/janrain/verifyAccountInfo", r, (function (n) { if (n && n.access) try { e.log("JANRAIN:", "Verify success. Done processing user"), e.setAccessTokenListCookie(n.access.access_token, n.access.user_token); var t = {access_token: n.access.access_token, user_token: n.access.user_token}; n.access.user && (t.user = { uid: n.access.user.uid, email: n.access.user.email, firstName: n.access.user.first_name, lastName: n.access.user.last_name, valid: n.access.user.valid }), function (e, n) { if (void 0 !== l[e] && 0 !== l[e].length) for (var t = 0; t < l[e].length; ++t) l[e][t].apply(null, arguments) }("onCaptureSessionCreated", t), o.fireCallbacks("userChanged", t, void 0, !0) } finally { e.doneCall("refreshUserToken") } else e.log("JANRAIN:", "Verify failed") })) } var y = function () { return r.get("janrainCaptureToken") }, w = function () { var n = window.janrain; n.events.onProviderLogoutComplete.addHandler((function () { m() })), n.events.onCaptureSessionEnded.addHandler((function (n) { e.log("JANRAIN: Events received for logout", n), m() })), _() }, _ = function () { if (g()) return e.log("JANRAIN:", "Found early active session via function"), void h(); if (!g() && !s() && !y()) return e.log("JANRAIN:", "not found __ut cookie and janrain token"), void h(); var n = !1, t = window.janrain; t.events.onCaptureSessionFound.addHandler((function (t) { b() ? n && (e.log("JANRAIN: Events received for logged in user", t), h()) : h() })), t.events.onCaptureSessionNotFound.addHandler((function (t) { b() ? n && (e.log("JANRAIN: Events received for logged out user", t), h()) : h() })), t.events.onCaptureFederateNoLogin.addHandler((function (e) { n = e })), t.events.onCaptureFederateLogin.addHandler((function (n) { e.log("JANRAIN: Events received for SSO login", n), h() })) }, b = function () { var e = window.janrain; return e && e.settings && e.settings.capture && e.settings.capture.federate }; function k(e, n) { if (!c) throw "Janrain is not configured"; var t = 0; !function r() { var o = window.janrain; if (u) o.events[e].addHandler((function (e) { n(e) })); else { if (t > 100) throw "Janrain is not initialized"; t++, window.setTimeout(r, 100) } }() } return { name: i, isv: !1, init: function (n) { if (!c) { if (!n.appName || !n.appId || !n.clientId) throw "Must specify appName, appId, and clientId to initialize janrain"; for (var t in d) void 0 !== n[t] && (d[t] = n[t]); if (n.settings && (d.settings = n.settings), n.loginRequiredScreen && (d.loginRequiredScreen = n.loginRequiredScreen), d.settings) { "object" != _typeof(window.janrain) && (window.janrain = {}), "object" != _typeof(window.janrain.settings) && (window.janrain.settings = {}); var r = window.janrain; r.settings = d.settings, "object" != _typeof(window.janrain.settings.capture) && (window.janrain.settings.capture = {}), r.settings.appUrl = "https://" + d.appName + ".rpxnow.com", r.settings.capture.captureServer = "https://" + d.appName + ".janraincapture.com", r.settings.capture.appId = d.appId, r.settings.capture.clientId = d.clientId; var o, i = d.appName.replace(/\./g, "-"), a = "http://widget-cdn.rpxnow.com/load/" + i, s = "https://rpxnow.com/load/" + i; o = e.__protected__.isHttpsProtocol() ? s : a, pn.push(["addExternalLibrary", o, function () { r.ready = !0 }]) } e.log("JANRAIN:", "start refresh user token"), e.startCall("refreshUserToken", 3e4), e.waitCall("refreshUserToken", (function () { e.log("JANRAIN:", "end refresh user token") })), function () { var n = 100, t = 0; function r() { var o = window.janrain; if (window.janrain && window.janrain.ready && window.janrain.capture && window.janrain.capture.ui && window.janrain.capture.ui.hasActiveSession) (function () { var n = window.janrain, t = function (t) { n.events[t].addHandler((function () { for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r]; e.log("JANRAIN: ", t, n) })) }; pn.debug && n.events.captureEvents.forEach(t) })(), w(), d.startCapture && o.capture.ui.start(), u = !0; else { if (t > n) throw "Janrain is not initialized"; t++, window.setTimeout(r, 100) } } r() }(), c = !0, pn.zIndexes = {backdrop: 900, modal: 950, close: 990}; var l = function (n) { e.log("JANRAIN: onLogin"), window.janrain.capture.ui.modal.close(), h() }; k("onCaptureLoginSuccess", l), k("onCaptureRegistrationSuccess", l) } }, isUserValid: s, getToken: a, getName: function () { return i }, onLoginSuccess: function (n) { e.setAccessTokenListCookie({value: n.token_list, cookie_domain: n.cookie_domain}, n.user_token) }, login: function (e, n) { if (!c) throw "Janrain is not configured"; var t = 0; !function r() { if (u) try { window.janrain.capture.ui.renderScreen(f(n)), "function" == typeof e && function (e, n) { l[e] = [], l[e].push(n) }("onCaptureSessionCreated", e) } catch (e) { return t++, void window.setTimeout(r, 100) } else { if (t > 100) throw "Janrain is not initialized"; t++, window.setTimeout(r, 100) } }() }, logout: function (e) { if (!c) throw "Janrain is not configured"; var n = 100, t = 0, r = 0; function i() { r > n ? e() : g() ? (r++, window.setTimeout(i, 100)) : e() } m(), function r() { if (u) { var a = window.janrain; a.capture.ui.modal.close(), a.capture.ui.endCaptureSession(), o.fireCallbacks("logout", null, void 0, !0), e && i() } else { if (t > n) throw "Janrain is not initialized"; t++, window.setTimeout(r, 100) } }() }, isConfigured: function () { return c }, getLoginRequiredScreen: f, addEventHandler: k, registerCallback: function (e, n) { o.addEvent(e), o.registerCallback(e, (function (e) { n(e) })) } } }(); pn.container.register("janrain", {useValue: mo}), pn.janrain = pn.container.resolve("janrain"); var vo = { name: "sha1", hash: function (e, n) { function t(e, n) { return e << n | e >>> 32 - n } function r(e) { var n, t = ""; for (n = 7; n >= 0; n--) t += (e >>> 4 * n & 15).toString(16); return t } n = n || 32; var o, i, a, s, c, u, l, d, p, f = new Array(80), m = 1732584193, v = 4023233417, g = 2562383102, h = 271733878, y = 3285377520; e = function (e) { e = e.replace(/\r\n/g, "\n"); for (var n = "", t = 0; t < e.length; t++) { var r = e.charCodeAt(t); r < 128 ? n += String.fromCharCode(r) : r > 127 && r < 2048 ? (n += String.fromCharCode(r >> 6 | 192), n += String.fromCharCode(63 & r | 128)) : (n += String.fromCharCode(r >> 12 | 224), n += String.fromCharCode(r >> 6 & 63 | 128), n += String.fromCharCode(63 & r | 128)) } return n }(e); var w = e.length, _ = new Array; for (i = 0; i < w - 3; i += 4) a = e.charCodeAt(i) << 24 | e.charCodeAt(i + 1) << 16 | e.charCodeAt(i + 2) << 8 | e.charCodeAt(i + 3), _.push(a); switch (w % 4) { case 0: i = 2147483648; break; case 1: i = e.charCodeAt(w - 1) << 24 | 8388608; break; case 2: i = e.charCodeAt(w - 2) << 24 | e.charCodeAt(w - 1) << 16 | 32768; break; case 3: i = e.charCodeAt(w - 3) << 24 | e.charCodeAt(w - 2) << 16 | e.charCodeAt(w - 1) << 8 | 128 } for (_.push(i); _.length % 16 != 14;) _.push(0); for (_.push(w >>> 29), _.push(w << 3 & 4294967295), o = 0; o < _.length; o += 16) { for (i = 0; i < 16; i++) f[i] = _[o + i]; for (i = 16; i <= 79; i++) f[i] = t(f[i - 3] ^ f[i - 8] ^ f[i - 14] ^ f[i - 16], 1); for (s = m, c = v, u = g, l = h, d = y, i = 0; i <= 19; i++) p = t(s, 5) + (c & u | ~c & l) + d + f[i] + 1518500249 & 4294967295, d = l, l = u, u = t(c, 30), c = s, s = p; for (i = 20; i <= 39; i++) p = t(s, 5) + (c ^ u ^ l) + d + f[i] + 1859775393 & 4294967295, d = l, l = u, u = t(c, 30), c = s, s = p; for (i = 40; i <= 59; i++) p = t(s, 5) + (c & u | c & l | u & l) + d + f[i] + 2400959708 & 4294967295, d = l, l = u, u = t(c, 30), c = s, s = p; for (i = 60; i <= 79; i++) p = t(s, 5) + (c ^ u ^ l) + d + f[i] + 3395469782 & 4294967295, d = l, l = u, u = t(c, 30), c = s, s = p; m = m + s & 4294967295, v = v + c & 4294967295, g = g + u & 4294967295, h = h + l & 4294967295, y = y + d & 4294967295 } return (p = r(m) + r(v) + r(g) + r(h) + r(y)).toLowerCase().slice(0, n) } }; pn.sha1 = vo, pn.container.register("sha1", {useValue: vo}); var go = function () { function e(e, n) { this._isActive = !1, this.targets = [], this.timeout = 200, this.util = n, this.callback = e } return e.prototype._mutationSearch = function () { var e = this; this.targets.forEach((function (n) { var t = e._getState(n.element); !t === n.currentState && (n.currentState = t, e.callback([{target: n.element}])) })), this._isActive && setTimeout(this._mutationSearch.bind(this), this.timeout) }, e.prototype._getState = function (e) { var n = [].slice.call(e.attributes).reduce((function (n, t) { return n[t.name] = e.getAttribute(t.name), n }), {}); return JSON.stringify(n) }, e.prototype.observe = function (e) { this.targets.push({ id: this.util.randomString(), element: e, currentState: this._getState(e) }), this._isActive || (this._isActive = !0, this._mutationSearch()) }, e.prototype.disconnect = function () { this._isActive = !1, this.targets = [] }, e }(), ho = function () { pn.container.resolve("jqUtils"); var e = pn.container.resolve("util"), n = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, t = {attributes: !0}; return { name: "observer", create: function (r, o) { r || e.error("element must be NODE"); var i = new (n || go)((function (e) { var n = e.map((function (e) { return e.target })); return "function" == typeof o && o(n) }), e); return i.observe(r, t), i } } }(); pn.container.register("observer", {useValue: ho}), pn.observer = pn.container.resolve("observer"); var yo, wo, _o = function () { var e, n, t, r = pn.container.resolve("jqUtils"), o = pn.container.resolve("util"), i = pn.container.resolve("postmessage"), a = pn.container.resolve("eventUtils"), s = pn.container.resolve("sha1"), c = {}, u = {}, l = a.createEventManager(["close"]), d = "tp-container-inner", p = new Map, f = {continuation: !0}, m = [], v = "tp-modal-overscroll-prevented", g = "tp-scroll-prevented", h = "tp-body-scroll-prevented", y = { _initialScrollPosition: {x: 0, y: 0}, applyFix: function () { var e = window.visualViewport ? Math.max(window.scrollY, document.documentElement.scrollTop, window.visualViewport.pageTop) : Math.max(window.scrollY, document.documentElement.scrollTop); this.saveInitialScroll(window.scrollX, e), t && (C(), _(), w(t, v)) }, removeFix: function () { document.querySelectorAll(".tp-iframe-wrapper.tp-active").length || (this._scrollBack(), n && (n.disconnect(), n = null), k()) }, _scrollBack: function () { (this._initialScrollPosition.y || this._initialScrollPosition.x) && I(this._initialScrollPosition.x, this._initialScrollPosition.y) }, saveInitialScroll: function (e, n) { this._initialScrollPosition.x = e, this._initialScrollPosition.y = n }, modalOpened: function () { this.applyFix() }, modalClosed: function () { this.removeFix() } }, w = function (e, n) { e.classList.add(n) }, _ = function () { w(document.documentElement, g), w(document.body, h) }, b = function (e) { document.querySelectorAll(".".concat(e)).forEach((function (n) { n.classList.remove(e) })) }, k = function () { b(g), b(h) }, C = function () { var e = document.querySelectorAll(".tp-iframe-wrapper"), t = e[e.length - 1]; (n = new MutationObserver((function (e, n) { for (var t = 0, r = e; t < r.length; t++) { var o = r[t]; "attributes" === o.type && "style" === o.attributeName && I(0, 0) } }))).observe(t, {attributes: !0, childList: !0, subtree: !0}) }, I = function (e, n) { function t(e) { return /\{\s*\[native code\]\s*\}/.test("" + e) } try { if (t(window.scrollTo)) return void window.scrollTo(e, n); if (t(window.scroll)) return void window.scroll(e, n); document.body && (document.body.scrollTop = 0) } catch (e) { console.warn("Can not perform scroll: " + e.message) } }; r.on(window, "resize", (function () { var e; if ($(), o.isAndroid()) { var n = null === (e = document.querySelector(".tp-iframe-wrapper.tp-active")) || void 0 === e ? void 0 : e.closest(".tp-modal"); n && n.scrollBy(0, 1) } })), o.isIOS() && r.on(window, "orientationchange", (function () { setTimeout((function () { return $() }), 100) })), i.subscribe("close", (function () { y.modalClosed() })), i.subscribe("toggleIframeShadow", (function (e) { T(e.params.isEnabled) })), i.subscribe("toggleLoadingContainer", (function (e) { if (e.params.isEnabled) return ne(); te() })); var S, E, T = function (e) { var n = document.querySelector(".tp-iframe-wrapper"); if (n) { if (e) return n.classList.contains("no-shadow") && n.classList.remove("no-shadow"); n.classList.add("no-shadow") } }, P = function (e) { (function (e) { i.send("checkProccessesForClose", {}, e.iframeId) })(e), "popup" === e.config.displayMode ? e.container.close() : (function (e) { if (o.debug("Removing iframe", e), e.element && (r.hide(e.element), "inline" === e.config.displayMode)) { var n = e.element.parentElement; n && r.hide(n) } e.resizeObserver && e.resizeObserver.disconnect(), ("modal" === e.config.displayMode || "inline" === e.config.displayMode) && (e.waitFinishProcesses = !0) }(e), L(), D()) }, x = function () { for (var e in c) { var n = c[e]; if ("modal" === n.config.displayMode && !n.waitFinishProcesses && !n.config.isPreload) return !0 } return !1 }, A = function (e) { var n = document.createElement("form"), t = {id: "form_" + e.iframeId, method: "post", action: e.iframeSrc, target: e.iframeId}; return r.setAttrs(t, n), [{name: "userToken", value: e.userToken}].forEach((function (e) { var t = document.createElement("input"), o = {type: "hidden", name: e.name}; r.setAttrs(o, t), t.value = e.value, r.append(n, t) })), n }, O = function (e) { return c[e] }, M = function () { function e(e, n, t) { this.$ = e, this._operationWithContainer = t, this.util = n, this._initModalContainer(), this.iOSBottomToolbarHeight = 90 } return e.prototype._initModalContainer = function () { var e = this; return this.container || (this.container = document.createElement("div"), this.element = this.container, this.$.addClass("tp-modal", this.container), this.close = document.createElement("button"), this.$.setAttr("type", "button", this.close), this.$.setAttr("aria-label", "Close", this.close), this.$.addClass("tp-close", this.close), this.iframeWrapper = document.createElement("div"), this.$.addClass("tp-iframe-wrapper", this.iframeWrapper), this.$.append(this.iframeWrapper, this.close), this.container.style.zIndex = pn.zIndexes.modal + "", this.close.style.zIndex = pn.zIndexes.close + "", this.$.on(this.close, "click", (function () { "function" == typeof e.closeClick && e.closeClick() })), this.util.isIOS() && !this.util.isFBOrInstWebView() && (this.iframeWrapper.style.marginBottom = "".concat(this.iOSBottomToolbarHeight, "px")), this.$.append(this.container, this.iframeWrapper), this._operationWithContainer("body", (function (n) { e.$.append(n, e.container) }))), this.container }, e.prototype.getContainer = function (e, n) { return this._initModalContainer(), this.closeClick = n, void 0 === e && (e = !0), e ? this.showCloseButton() : this.hideCloseButton(), this.iframeWrapper }, e.prototype.show = function (e) { this._initModalContainer(), void 0 === e && (e = !0), e ? this.showCloseButton() : this.hideCloseButton(), this.$.addClass("tp-active", this.container) }, e.prototype.hide = function () { this._initModalContainer(), this.$.removeClass("tp-active", this.container) }, e.prototype.showCloseButton = function () { this._initModalContainer(), this.$.addClass("tp-active", this.close) }, e.prototype.hideCloseButton = function () { this._initModalContainer(), this.$.removeClass("tp-active", this.close) }, e }(), N = function (e, n, t) { for (var r in o.debug("Search container to close", e, n, t), c) { var i = c[r]; e && r !== e || t && "inline" === i.config.displayMode || t && i.config.isPreload || ("modal" === i.config.displayMode && R(i), P(i)) } l.fireCallbacks("close", null, e, !0) }, R = function (e) { var n = m.shift(); S && !n && r.removeClass("tp-active", S), e.iframeParams.shown = !1, r.removeClass("tp-active", e.container), n ? (r.hide(t), t = n, r.show(t)) : (L(), D()) }, L = function () { !t || (q("body", (function (e) { r.addClass("tp-modal-close", e), r.removeClass("tp-modal-open", e), e.classList.contains("body-fixed") && r.removeClass("body-fixed", e) })), r.hide(t)) }, U = function (e, n, i) { if (function () { if (S) return S; var e = document.createElement("div"); r.addClass("tp-backdrop", e), e.style.zIndex = pn.zIndexes.backdrop + "", q("body", (function (n) { r.append(n, e) })), S = e }(), r.visible(S)) { var a = r.qa(".tp-modal").find((function (e) { return r.visible(e) })); n && !i ? (a && (r.hide(a), m.unshift(a)), e && r.show(e)) : n && (a ? (e && m.push(e), t = a) : e && r.show(e)) } else r.show(S), e && function (e) { r.visible(e) || (q("body", (function (e) { r.removeClass("tp-modal-close", e), r.addClass("tp-modal-open", e) })), r.show(e), (o.isIphone() || o.isSafariOrIOsUiWebView() || o.isAndroid()) && y.modalOpened()) }(e), E = window.setTimeout((function () { r.addClass("tp-active", S) }), 50) }, D = function () { S && (r.removeClass("tp-active", S), r.hide(S), clearTimeout(E)), y.modalClosed() }, j = function (e) { S && (S.style.height = "100%"); var n = r.queryEl(".tp-close", e); n && r.removeClass("tp-square", n) }, V = function (e, n) { if (e) { K(e.element, n); var t = Object.assign({}, n, {animate: !1}); switch (e.config.displayMode) { case"modal": K(e.container, t), q("body", (function (e) { r.addClass("tp-modal-resizing", e), setTimeout((function () { r.removeClass("tp-modal-resizing", e) }), 50) })); break; case"inline": var o = r.queryEl("." + d, e.container); o && K(o, n) } } }, F = function (e, n, o) { var i = e.container, a = i.parentElement; a && a.classList.contains("tp-modal") ? t = a : a = t, e.iframeParams = e.iframeParams || {}, e.iframeParams.shown || (e.iframeParams.shown = !0, U(a, n, o), o || (i.classList.contains("tp-active") || r.addClass("tp-active", i), j(i))) }, B = {}, q = function e(n, t) { var o = r.queryEl(n); B[n] || (B[n] = 0), o ? (delete B[n], t(o)) : B[n] < 100 && (B[n] += 1, setTimeout((function () { e(n, t) }), 50)) }, z = function (e, n) { if (void 0 === e.showCloseButton && (e.showCloseButton = !0), e.container) return e.container; var i = new M(r, o, q); return e.isPreload || (t = i.element), i.getContainer(e.showCloseButton, n) }, H = function (e) { var n = {container: null, containerReady: !1}; if (!e.iframeParams.containerSelector) return o.log("Inline offer must have a valid containerSelector"), n; if (n.container = e.singleContainer || r.queryEl(e.iframeParams.containerSelector), !n.container) return o.log("Invalid containerSelector"), n; var t = e.config, i = "object" == _typeof(t) && null !== t; return r.empty(n.container), i ? !!t.preview || (e.iframeParams.width = r.getWidth(n.container)) : e.iframeParams.width = e.iframeParams.width || r.getWidth(n.container), n.containerReady = !0, n }, W = function (e) { var n = r.winSize(), t = e.width ? e.width : n.width, i = e.height ? e.height : n.height, a = o.centerScreen(t, i); return {width: t, height: i, top: a.top, left: a.left} }, G = function (e, n) { var t = W(e), r = window.open(n, o.randomString(16), "scrollbars=yes,location=yes,status=0,toolbar=0,resizable=1, width=" + t.width + ", height=" + t.height + ", top=" + t.top + ", left=" + t.left); return window.focus && r && r.focus(), r }, J = 1, Q = function (e, n, t) { var i = "iframe-" + J++ + "-" + o.randomString(); n.iframeId && (i = n.iframeId); var a = document.createElement("iframe"), s = { id: i, name: i, title: i, scrolling: "no", allowtransparency: "true", allow: "payment", allowfullscreen: "true" }; (!pn.isSensitiveDataProtectionEnabled || e.isSensitiveDataProtectionDisabled) && (s.src = t), Object.keys(s).forEach((function (e) { r.setAttr(e, s[e], a) })); var c = { overflow: "hidden", backgroundColor: "transparent", border: "0", width: "inline" === e.displayMode ? n.width + "px" : "0px", height: "0px" }; Object.keys(c).forEach((function (e) { a.style[e] = c[e] })); try { r.setAttr("frameBorder", "0", a) } catch (e) { o.log(e) } return a }, X = function (e, n) { var t = function (e) { return r.queryEl("." + d, e.container) ? r.getWidth(e.container) : 0 }(e); return !(!t || !n) && Math.abs(t - n) < .1 }, Y = function (e, n, t) { var o = setInterval((function () { r.empty(e) }), 150); r.ready((function () { clearInterval(o), r.append(e, n), pn.isSensitiveDataProtectionEnabled && (r.append(n, t), t.submit()) })) }, $ = function () { for (var e in c) { var n = c[e]; if (!n.config.preview && "inline" === n.config.displayMode && n.container && V(n, {width: r.getWidth(n.container)}), "modal" === n.config.displayMode && n.container) { var t = Math.max(document.documentElement.clientWidth, document.body.offsetWidth, document.documentElement.offsetWidth); i.send("RESIZE_MODAL_CHECKOUT", {iframe: n, width: t}, n.iframeId) } } }, K = function (e, n) { !e || (void 0 !== n.width && (e.style.width = n.width + "px", (0 === n.width && !e.classList.contains("no-width") || 0 !== n.width && e.classList.contains("no-width")) && r.toggleClass("no-width", e)), void 0 !== n.height && (n.animate, e.style.height = n.height + "px", (0 === n.height && !e.classList.contains("no-height") || 0 !== n.height && e.classList.contains("no-height")) && r.toggleClass("no-height", e))) }, Z = function (e) { var n = document.createElement("div"); return n.innerHTML = e.trim(), n.firstChild }, ee = function (e) { return void 0 === e && (e = ""), '
') }, ne = function () { e || (e = Z(ee())) && document.body.appendChild(e) }, te = function () { !e || (document.body.removeChild(e), e = null) }, re = function (e) { if (e && null != e && e.container && !p.has(e.iframeId)) { var n = Z(ee("tp-local-overlap")); n && (e.container.appendChild(n), p.set(e.iframeId, n)) } }, oe = function (e) { if (e && null != e && e.container && p.has(e.iframeId)) { var n = p.get(e.iframeId); n && (e.container.removeChild(n), p.delete(e.iframeId)) } }; function ie(e) { !e || !e.element || (function (e) { var n; return !!e && !(null === (n = null == e ? void 0 : e.element.getBoundingClientRect()) || void 0 === n || !n.width) }(e) && function (e) { e && e.container && (re(e), e.container.addEventListener("load", (function () { oe(e) }), {once: !0, capture: !0})) }(e), e.element.src = e.element.src) } function ae() { for (var e in c) { var n = c[e]; n && ie(n) } } return { name: "containerUtils", fakeOfferId: "fakeOfferId", createContainer: function (e) { var n, t, a, p, m = {}, v = document.createElement("form"), g = !0, h = e.iframeParams; if ("inline" !== h.displayMode && !h.width && (h.width = window.innerWidth), a = e.config.buildQueryStringFn ? function (n) { return e.config.buildQueryStringFn(n, r) } : function (e) { var n = r.param(e, f); return n + "&_qh=" + s.hash(n, 10) }, "popup" === h.displayMode) { h.width || (h.width = window.innerWidth); var y = e.url + "?" + a(h); t = G(h, y); try { p = t.document } catch (e) { try { p = t } catch (e) { p = null, console.warn("Unable to get popup element") } } u[h.iframeId] = { container: t, interval: setInterval((function () { u[h.iframeId].container.closed && (clearInterval(u[h.iframeId].interval), u[h.iframeId].container.close(), e.onCloseCallback && e.onCloseCallback()) }), 100) } } else { if ("inline" === h.displayMode) { void 0 !== e.config.showCloseButton && delete e.config.showCloseButton; var w = H(e); t = w.container, g = !!w.containerReady } else t = z(e.config, (function () { N(h.iframeId, e.parent) })); pn.isSensitiveDataProtectionEnabled && (m = { userToken: h.userToken, iframeId: h.iframeId }, delete h.userToken), n = e.url + "?" + a(h), p = Q(e.config, h, n) } l.registerCallback(e, h.iframeId); var _ = c[h.iframeId] = { iframeId: h.iframeId, config: e.config, element: p, container: t, iframeParams: h, containerReady: g }; if (i.init({ postMessageUrl: e.postMessageUrl, parent: e.parent, receive: e.receive, iframe: _, iframeParams: h }), r.on(document, "keyup", (function (e) { })), pn.isSensitiveDataProtectionEnabled && (m.iframeSrc = n, v = A(m)), "modal" === h.displayMode) r.on(window, "resize", (function () { j(t) })), pn.isSensitiveDataProtectionEnabled ? (r.append(t, p), r.append(t, v), null == v || v.submit()) : r.append(t, p); else if ("inline" === h.displayMode) { if (c[h.iframeId].containerReady) { var b = document.createElement("div"); r.addClass(d, b), r.append(b, p), e.config.isPreload && r.hide(b), ("complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll) && t ? (r.empty(t), r.append(t, b), pn.isSensitiveDataProtectionEnabled && (r.append(b, v), null == v || v.submit())) : Y(t, b, v) } else { var k = document.createElement("div"); r.setAttr("id", "temp-inline-" + h.iframeId, k), r.hide(k), q("body", (function (e) { r.append(e, k) })), r.append(k, p) } if (window.ResizeObserver) { var C = new ResizeObserver((function (e) { var n = r.getWidth(_.container); if (n > 0) { if ("inline" === _.config.displayMode && X(_, n)) return; V(_, {width: n}) } })); C.observe(_.container), _.resizeObserver = C } } return o.debug("creating iframe: ", e), _ }, showPreloadedContainer: function (e) { if ("modal" === e.config.displayMode) { if (x()) return void o.log("Modal is already shown; must be one modal per time"); !function (e) { (t = e.container.closest(".tp-modal")) || o.error("there is no such modal container"), F(e, !0, !0) }(e) } else "inline" === e.config.displayMode ? function (e) { r.show(e.container); var n = r.queryEl(".".concat(d), e.container); n && r.show(n), V(e, {width: r.getWidth(e.container)}) }(e) : o.log("Unexpected displayMode of preloaded iframe\n"); return e.config.isPreload = !1, e.iframeParams.isPreload = !1, o.debug("show preloaded iframe: ", e.config), e }, redirectContainer: function (e, n) { var t = n.url + "?" + r.param(n.iframeParams, f), o = c[e]; if ("popup" === o.config.displayMode) o.container.location = t; else { var a = o.element; (a.contentWindow || a).location = t } o.config = n.config, i.init({ postMessageUrl: n.postMessageUrl, receive: n.receive, iframe: c[n.iframeParams.iframeId], iframeParams: n.iframeParams }) }, hasModalIframe: x, getForm: A, getIframe: O, generateIframe: Q, generateIframeWrapper: function () { var e = document.createElement("div"), n = { overflow: "hidden", backgroundColor: "transparent", border: "0", width: "0px", height: "0px", position: "absolute", display: "block", top: "-1px", left: "-1px" }; return Object.keys(n).forEach((function (t) { e.style[t] = n[t] })), e }, getPopupPosition: W, generatePopup: G, initInlineContainer: H, getModalContainer: z, centerBackdrop: function (e) { if (S) { var n = r.winSize(); e.offsetHeight > n.height ? S.style.height = n.height + "" : S.style.height = "100%" } }, showBackdrop: U, hideBackdrop: D, checkBackdropAndContainer: F, resizeIframe: V, centerIt: j, operationWithContainer: q, closeContainer: N, closeModalContainer: function (e, n) { N(e, n, !0) }, purgeIframe: function (e, n) { o.debug("Purging iframe", e); var t = c[e]; try { if (t.resizeObserver && t.resizeObserver.disconnect(), i.removeIframe(t.iframeId), r.remove(t.element), "inline" === t.config.displayMode) { var a = r.queryEl(".tp-container-inner", t.container); a && r.remove(a) } } catch (e) { } delete c[e] }, hideModalContainer: function (e) { var n = []; for (var t in c) { var o = c[t]; e && t !== e || "inline" !== o.config.displayMode && "modal" === o.config.displayMode && (R(o), r.hide(o.container), n.push(t)) } return n }, closeModal: R, hideCloseButton: function (e) { if (e) { var n = r.queryEl(".tp-close", e); n && n.classList.contains("tp-active") && r.removeClass("tp-active", n) } }, activateContainers: function (e) { if (e && e.length) for (var n in c) for (var t = c[n], o = 0; o < e.length; o++) if (n === e[o]) { var i = t.container, a = i.parentElement; a && U(a), r.addClass("tp-active", i), r.show(i) } }, showWaitPanel: ne, hideWaitPanel: te, addClassToContainer: function (e, n) { r.addClass(n, e.container) }, turnOnRTL: function (e) { e.container && e.container.setAttribute && e.container.setAttribute("dir", "rtl") }, turnOffRTL: function (e) { e.container && e.container.removeAttribute && e.container.removeAttribute("dir") }, setIframesPopstateHandlers: function () { !o.isIphone() && !o.isSafariOrIOsUiWebView() || window.addEventListener("popstate", ae) }, __protected__: { setElementSizes: K, closeInlineContainers: function (e) { Array.prototype.slice.call(document.querySelectorAll(e + " > ." + d + " > iframe")).forEach((function (e) { e.id && function (e) { var n = O(e); n.config.child && N(n.config.child), N(e) }(e.id) })) }, addChildToInlineIframe: function (e, n) { if (e) { var t = O(n); t && t.config && (t.config.child = e.iframeId) } }, closeAndRemoveIframe: P }, __private__: {mobileModalFix: y} } }(); pn.container.register("containerUtils", {useValue: _o}), pn.containerUtils = pn.container.resolve("containerUtils"), function (e) { e.EXTERNAL_LINK = "EXTERNAL_LINK", e.EXTERNAL_EVENT = "EXTERNAL_EVENT" }(yo || (yo = {})), function (e) { e.LOG_MICRO_CONVERSION = "logMicroConversion", e.LOG_AUTO_MICRO_CONVERSION = "logAutoMicroConversion", e.LOG_TELEMETRY = "logTelemetry", e.LOG_CONVERSION = "logConversion", e.LOG_FUNNEL_STEP = "logFunnelStep", e.LOG_ESP_MICRO_CONVERSION = "logEspMicroConversion", e.LOG_BEACON_REQUEST = "logBeaconRequest", e.LOG_CUSTOM_FORM_IMPRESSION = "logCustomFormImpression", e.LOG_CUSTOM_FORM_SUBMISSION = "logCustomFormSubmission" }(wo || (wo = {})); var bo; pn.container.register("log", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("ajax"), t = e.resolve("util"); e.resolve("postmessage").subscribe("iframeLogRequest", (function (e) { var n = "browser_id" in e.queryParams ? e.queryParams : a(e.queryParams); i(e.url, n) })); var r = function (e) { var n = []; for (var t in e) { var r = e[t]; n.push(encodeURIComponent(t) + "=" + encodeURIComponent("object" == _typeof(r) ? JSON.stringify(r) : r)) } return n.join("&") }, o = function () { var e = window.doNotTrack || window.navigator.doNotTrack || window.navigator.msDoNotTrack; return !!e && ("1" === e.charAt(0) || "yes" === e) }, i = function (e, o) { var i = r(o); t.isRelativeUrl(e.trim()) ? i.length > 6e3 ? n.request({ type: "POST", url: pn.getTrackingEndpoint() + e, data: i }) : n.request({ url: pn.getTrackingEndpoint() + e + "?" + i, dataType: "jsonp" }) : t.log("Url parameter is incorrect") }, a = function (e, n) { var r, o; void 0 === n && (n = !1); var i = t.getBrowserId(), a = p({}, e), s = function (e, n) { n && (a[e] = n) }; if (s("browser_id", i), n) { var c = t.getPageViewContext(); s("page_title", c.pageTitle), s("url", c.url), s("page_view_id", c.pageViewId), s("referrer", c.referrerUrl), s("content_author", c.author), s("content_created", null === (r = c.created) || void 0 === r ? void 0 : r.toString()), s("content_section", c.section), s("tags", (null === (o = c.tags) || void 0 === o ? void 0 : o.join(",")) || null), s("content_type", c.contentType) } return a }, s = function (e) { return a(e, !0) }, c = function (e, n, r) { var o = s({ tracking_id: e, event_group_id: n, custom_params: r || "", cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }); e ? n ? i("/api/v3/conversion/logMicroConversion", o) : t.log("Parameter eventGroupId is required to log micro conversion.") : t.log("Parameter trackingId is required to log micro conversion.") }, u = function (e, n, r, o) { var a = s({ tracking_id: e, event_type: r, event_group_id: n, custom_params: o || "", cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }); e ? n ? (console.log(a), i("/api/v3/conversion/logAutoMicroConversion", a)) : t.log("Parameter eventGroupId is required to log auto micro conversion.") : t.log("Parameter trackingId is required to log auto micro conversion.") }, l = function (e, n, r, o, a) { var c = s({ tracking_id: e, esp_widget_id: n, event_type: o, event_group_id: r, custom_params: a || "", cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }); e ? r ? n ? i("/api/v3/conversion/logEspMicroConversion", c) : t.log("Parameter espWidgetId is required to log esp micro conversion.") : t.log("Parameter eventGroupId is required to log esp micro conversion.") : t.log("Parameter trackingId is required to log esp micro conversion.") }, d = function (e, n, r, o, a, c, u, l) { var d = s({ tracking_id: e, term_id: n, term_name: r, cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }); e ? n ? r ? (void 0 !== o && (d.step_number = o), void 0 !== a && (d.amount = a), void 0 !== c && (d.currency = c), void 0 !== u && (d.custom_params = u), void 0 !== l && (d.conversion_category = l), i("/api/v3/conversion/log", d)) : t.log("Parameter termName is required to log conversion.") : t.log("Parameter termId is required to log conversion.") : t.log("Parameter trackingId is required to log conversion.") }, f = function (e, n, t, r, o, i, a, s) { if ("object" == _typeof(e)) { var c = e; d(c.tracking_id, c.term_id, c.term_name, c.step_number, c.amount, c.currency, c.custom_params, c.conversion_category) } else d(e, n, t, r, o, i, a, s) }, m = function (e, n, r, o) { var a = s({ tracking_id: e, step_number: n, step_name: r, custom_params: o || "", cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }); e ? n ? r ? i("/api/v3/conversion/logFunnelStep", a) : t.log("Parameter stepName is required to log funnel step.") : t.log("Parameter stepNumber is required to log funnel step.") : t.log("Parameter trackingId is required to log funnel step.") }, v = function (e, n, r) { n || t.log("Parameter formName is required to log impression."), r || t.log("Parameter source is required to log impression."); var o = { aid: pn.aid, pageview_id: pn.main.fetchPageViewId(), custom_form_name: n, custom_form_source: r, cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }, a = pn.user.getProvider().getToken(); return a && (o.user_token = a), e && (o.tracking_id = e), i("/api/v3/customform/log/impression", o) }, g = function (e, n, r) { n || t.log("Parameter formName is required to log submission."), r || t.log("Parameter source is required to log submission."); var o = { aid: pn.aid, pageview_id: pn.main.fetchPageViewId(), custom_form_name: n, custom_form_source: r, cookie_consents: t.getCookieConsents(), previous_user_segments: t.getUserSegmentsString() }, a = pn.user.getProvider().getToken(); return a && (o.user_token = a), e && (o.tracking_id = e), i("/api/v3/customform/log/submission", o) }, h = function (e, i) { if (!o()) { var a, s = r(i), c = e + "?" + s; if (navigator.sendBeacon) if (c.length > 6e3) { var u = new Blob([s], {type: "application/x-www-form-urlencoded"}); navigator.sendBeacon(e, u) } else navigator.sendBeacon(c); else (a = -1 !== navigator.appVersion.indexOf("MSIE 9") ? { dataType: "jsonp", url: c } : {type: "post", url: c, async: !1, xhrFields: {withCredentials: !0}}).error = function () { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; t.debug.apply(t, b(["Beacon request has been failed"], e, !1)) }, n.request(a) } }; return { name: "log", logMicroConversion: c, logConversion: f, logFunnelStep: m, logEspMicroConversion: l, logBeaconRequest: h, logAutoMicroConversion: u, __protected__: { handleEvent: function (e, t) { var i = t.trackingId, a = t.termId, s = t.termName, d = t.stepNumber, p = t.stepName, y = t.amount, w = t.currency, _ = t.customParams, b = t.conversionCategory, k = t.eventGroupId, C = t.eventType, I = t.url, S = t.params, E = t.formName, T = t.source, P = t.espWidgetId; t.body; switch (e) { case wo.LOG_TELEMETRY: return void function (e, t) { if (!o()) { var i = e + "?" + r(t); navigator.sendBeacon ? navigator.sendBeacon(i) : n.send(i, null, "POST", null, "application/json", !0) } }(I, S); case wo.LOG_CONVERSION: return void f(i, a, s, d, y, w, _, b); case wo.LOG_AUTO_MICRO_CONVERSION: return void u(i, k, C, _); case wo.LOG_BEACON_REQUEST: return void h(I, S); case wo.LOG_CUSTOM_FORM_IMPRESSION: return void v(i, E, T); case wo.LOG_CUSTOM_FORM_SUBMISSION: return void g(i, E, T); case wo.LOG_ESP_MICRO_CONVERSION: return void l(i, P, k, C, _); case wo.LOG_FUNNEL_STEP: return void m(i, d, p, _); case wo.LOG_MICRO_CONVERSION: return void c(i, k, _) } }, logCustomFormImpression: v, logCustomFormSubmission: g, logEspMicroConversion: l, logAutoMicroConversion: u }, __private__: {doLog: i, logBeaconRequest: h} } }() }), pn.log = pn.container.resolve("log"), function (e) { e.TRACK_EVENT = "track", e.TRACK_CUSTOM_EVENT = "trackCustom" }(bo || (bo = {})); var ko = function () { var e = pn.container.resolve("util"), n = !1, t = function (t, r, o) { n ? (o || (o = {}), e.log("fbpixel: Track Facebook Pixel event", r, o), window.fbq(t, r, o)) : e.log("fbpixel: Skip tracking event - Facebook Pixel is not initalized", r, o) }, r = function () { return n }; return { name: "fbpixel", isInitialized: r, __private__: {isInitialized: r}, __protected__: { init: function () { if (!n) { var t = pn.getFbPixelId(); if (!t) return void e.error("fbpixel: Facebook Pixel ID is not defined"); e.log("fbpixel: Initialize Facebook Pixel tracking", t), function (e, n, t, r, o, i, a) { e.fbq || (o = e.fbq = function () { o.callMethod ? o.callMethod.apply(o, arguments) : o.queue.push(arguments) }, e._fbq || (e._fbq = o), o.push = o, o.loaded = !0, o.version = "2.0", o.queue = [], (i = n.createElement(t)).async = !0, i.src = "https://connect.facebook.net/en_US/fbevents.js", (a = n.getElementsByTagName(t)[0]).parentNode.insertBefore(i, a)) }(window, document, "script"), window.fbq("set", "autoConfig", "false", t), window.fbq("init", t), n = !0 } }, handleEvent: function (e, n) { var r = n.eventName, o = n.eventParams; switch (e) { case bo.TRACK_EVENT: return void t(bo.TRACK_EVENT, r, o); case bo.TRACK_CUSTOM_EVENT: return void t(bo.TRACK_CUSTOM_EVENT, r, o) } } } } }(); pn.container.register("fbpixel", {useValue: ko}), pn.fbpixel = pn.container.resolve("fbpixel"); pn.container.register("clientConfiguration", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t, r = e.resolve("ajax"); return { configuration: n, getConfiguration: function () { return g(void 0, void 0, void 0, (function () { return h(this, (function (e) { return n ? [2, n] : (t || (t = new Promise((function (e, o) { r.request({ url: pn.getApiEndpoint() + "/anon/assets/sdk-runtime-config.js?aid=" + pn.aid, type: "GET", success: function (r) { 0 === (null == r ? void 0 : r.code) ? (n = r.client_configurations_dto, e(r.client_configurations_dto), t = void 0) : o() }, error: function () { return o() } }) }))), [2, t]) })) })) } } }() }); var Co, Io = function () { var e = {}, n = {}; return { name: "gaCollectingService", setParam: function (e, t) { t && (n[e] = t) }, getParams: function () { return p({aid: pn.aid, tags: pn.tags, debug: pn.debug, url: window.location.href}, n) }, setParamMap: function (e) { n = p(p({}, n), e) }, isEventExcluded: function (n) { return e[n] }, setExcludedEvents: function (n) { e = p(p({}, e), n) } } }(); pn.container.register("gaCollectingService", {useValue: Io}), pn.gaCollectingService = pn.container.resolve("gaCollectingService"), function (e) { e.EMIT_GA_EVENT = "emitGAEvent", e.EMIT_METRICS_EVENT = "emitMetricsEvent" }(Co || (Co = {})); var So = { experienceExecute: !0, meterActive: !0, meterExpired: !0, beforeBrowserEvent: !1, setResponseVariable: !0, startCheckout: !1, showOffer: !0, showTemplate: !0, termSelected: !0, promoApplied: !0, promoInvalid: !0, submitPayment: !1, checkoutCustomEvent: !0, checkoutStateChange: !1, receiptDisplayed: !1, checkoutSuccess: !0, checkoutRestarted: !1, checkoutError: !0, checkoutClose: !1, publisherLoginRequired: !1, loginRequired: !1, loginDisplayed: !1, registrationDisplayed: !1, loginSuccess: !0, registrationSuccess: !0, logout: !1 }, Eo = function () { var e, n = pn.container.resolve("util"), t = (pn.container.resolve("api"), pn.container.resolve("postmessage")), r = pn.container.resolve("gaCollectingService"), o = pn.container.resolve("clientConfiguration"), i = "pianoTracker", a = "performanceTracker", s = "gaAccount", c = "metricsGAAccount", u = "trackOnlyAids", l = "disabled", d = { gaAccount: void 0, trackerName: i, trackOnlyAids: [], metricsGAAccount: void 0, isGAEnabled: !1, isGAAppended: !1, isMetricsEnabled: !1, isTrackerAppended: !1, isMetricsTrackerAppended: !1 }, p = [], f = !1, m = !0, v = !1, y = !1, w = [], _ = function (e) { if (e.hitType = "timing", !d.isMetricsTrackerAppended) return S("send", e), void function () { if (!y) { if (y = !0, x(), !d.metricsGAAccount) return void function () { return g(this, void 0, void 0, (function () { var e; return h(this, (function (n) { switch (n.label) { case 0: return [4, o.getConfiguration()]; case 1: return e = n.sent(), [2, O({ is_enabled: e.is_performance_metrics_enabled, ga_account: e.performance_metrics_ga_account, track_only_aids: e.performance_metrics_track_only_aids })] } })) })) }().then((function () { return N() })).catch((function (e) { n.error("PN catch: something vent wrong with GA injection: ".concat(e)) })); N().catch((function (e) { n.error("PN catch: something vent wrong with GA injection: ".concat(e)) })) } }(); if (d.isMetricsEnabled) { if (!window.ga || !d.isMetricsTrackerAppended) return void S("send", e); w.length && E(), P("send", e) } }; function b() { v || (v = !0, m ? setTimeout((function () { m = !1, k() }), 3e3) : k()) } function k() { x(), d.gaAccount ? M().catch((function () { })) : function () { return g(this, void 0, void 0, (function () { var e; return h(this, (function (n) { switch (n.label) { case 0: return [4, o.getConfiguration()]; case 1: return e = n.sent(), [2, A(e.ga_account)] } })) })) }().then((function () { return M() })).catch((function () { })) } var C = function (e, n) { p.push({action: e, params: n}) }, I = function () { if (window.ga && d.isTrackerAppended) for (; p.length;) { var e = p.pop(); T(e.action, e.params) } }, S = function (e, n) { w.push({action: e, params: n}) }, E = function () { if (window.ga && d.isMetricsTrackerAppended) for (; w.length;) { var e = w.pop(); P(e.action, e.params) } }, T = function (e, n) { if (!r.isEventExcluded(n.eventCategory)) { if (!window.ga || !d.isTrackerAppended) return void C(e, n); window.ga(d.trackerName + "." + e, n) } }, P = function (e, n) { if (d.isMetricsEnabled) { if (!window.ga || !d.isMetricsTrackerAppended) return void S(e, n); window.ga(a + "." + e, n) } }, x = function () { if (!f) { if (tp.gaClientId && (e = tp.gaClientId), n.__protected__.hasLocalStorage()) { var t = n.__protected__.getLocalStorageItem(s), r = n.__protected__.getLocalStorageItem(c), o = n.__protected__.getLocalStorageItem(u); d.isGAEnabled = !!t && t !== l, d.isMetricsEnabled = !!r && r !== l, d.gaAccount = t, d.metricsGAAccount = r, d.trackOnlyAids = o || [] } f = !0 } }; var A = function (e) { d.isGAEnabled = !!e, d.gaAccount = e || l, n.__protected__.setLocalStorageItem("vx", s, d.gaAccount, 1) }, O = function (e) { d.isMetricsEnabled = JSON.parse(e.is_enabled), d.metricsGAAccount = d.isMetricsEnabled ? e.ga_account : l, d.trackOnlyAids = d.isMetricsEnabled ? JSON.parse(e.track_only_aids) : [], n.__protected__.setLocalStorageItem("vx", u, d.trackOnlyAids, 1), n.__protected__.setLocalStorageItem("vx", c, d.metricsGAAccount, 1) }; function M() { return new Promise((function (n, t) { d.isGAEnabled ? R().then((function () { if (d.isGAAppended) if (d.isTrackerAppended) n(null); else try { var r = document.createElement("script"); r.innerHTML = function () { var n = new RegExp("^UA-[0-9a-zA-Z]*-[0-9a-zA-Z]*$").test(d.gaAccount), t = new RegExp("([{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?)|([0-9]*\\.[0-9]*)").test(e || ""); if (!n) return ""; var r = "ga(function() {\n ga('create', '".concat(d.gaAccount, "', 'auto', '").concat(i, "'"); return r += e && t ? ", { clientId: '".concat(e, "' });") : ");\n tp.gaService.setClientId(ga.getByName('".concat(i, "').get('clientId'));"), r += "tp.gaService.trackerAppended(); });", r }(), document.head.appendChild(r), d.isTrackerAppended = !0, n(null) } catch (e) { t() } else t() })).catch((function (e) { })) : t() })) } function N() { return new Promise((function (e, n) { d.isMetricsEnabled ? R().then((function () { if (d.isGAAppended) if (d.isMetricsTrackerAppended) e(null); else try { var t = !d.trackOnlyAids.length || d.trackOnlyAids.contains(tp.aid), r = document.createElement("script"); if (!new RegExp("^UA-[0-9a-zA-Z]*-[0-9a-zA-Z]*$").test(d.metricsGAAccount)) return void n(); r.innerHTML = "\n ga(function() {\n if (".concat(t, ") {\n ga('create', '").concat(d.metricsGAAccount, "', 'auto', '").concat(a, "', { storage: 'none' });\n tp.gaService.metricsTrackerAppended();\n }\n });\n "), document.head.appendChild(r), d.isMetricsTrackerAppended = !0, e(null) } catch (e) { n() } else n() })) : e("isMetricsEnabled !== true") })) } function R() { return new Promise((function (e, n) { if (d.isGAAppended) e(null); else try { var t = document.createElement("script"); t.innerHTML = "\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n ", document.head.appendChild(t), d.isGAAppended = !0, e(null) } catch (e) { n() } })) } return { name: "gaService", getClientId: function () { return e }, getGAAccount: function () { return d.gaAccount }, metricsTrackerAppended: function () { d.isMetricsTrackerAppended = !0, y = !1, E() }, recreateWithClientId: function (n) { e = n, b() }, setClientId: function (n) { e = n }, setTrackerName: function (e) { d.trackerName = e }, trackerAppended: function () { d.isTrackerAppended = !0, t.broadcast("gaAppended", {clientId: e, gaAccount: d.gaAccount}), v = !1, I() }, __protected__: { handleEvent: function (e, n) { switch (e) { case Co.EMIT_GA_EVENT: return void function (e) { if (e.hitType = "event", e.nonInteraction = So[e.eventCategory], !d.isTrackerAppended) return C("send", e), void b(); if (d.isGAEnabled) { if (!window.ga || !d.isTrackerAppended) return void C("send", e); p.length && I(), T("send", e) } }(n); case Co.EMIT_METRICS_EVENT: return void _(n) } } } } }(); pn.container.register("gaService", {useValue: Eo}), pn.gaService = pn.container.resolve("gaService"); var To = function (e) { void 0 === e && (e = pn.container); var n = e.resolve("gaCollectingService"), t = ["trackingId"], r = {measurementId: ""}, o = [], i = function () { return "function" == typeof window.gtag }, a = function (e) { return e.eventParameters ? "gtag('config', '".concat(e.measurementId, "', ").concat(function (e) { return e || (e = {}), JSON.stringify(e) }(e.eventParameters), ");") : "gtag('config', '".concat(e.measurementId, "');") }, s = function (e) { var n = document.createElement("script"); return n.innerHTML = "".concat(i() ? "" : "window.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());", "\n") + "function setGoogleTagConfig() {\n" + " if (".concat(!e.measurementId, ") { return; }\n") + " ".concat(a(e), "\n") + "}\nsetGoogleTagConfig();", n }, c = function (e, n, t, r) { void 0 === e && (e = ""); return e && e.includes(t) ? e : ["offerId", "aid", "templateId", "templateVariantId"].reduce((function (e, o) { return r[o] && (e.length && (e += n), e += "".concat(o).concat(t).concat(r[o])), e }), e) }, u = function (e, n) { var r = p(p(p({}, n), e), { non_interaction: So[e.eventCategory], event_action: c(e.eventAction, "____", "_", n), event_label: c(e.eventLabel, " ", ":", n) }); return Object.keys(r).reduce((function (e, n) { var o = r[n]; return function (e, n) { return e.includes("user") || "nonInteraction" === e || "object" == _typeof(n) || "function" == typeof n }(n, o) || (e[function (e) { return t.includes(e) && (e = "piano_" + e), function (e) { return e.replace(/[A-Z]+(?![a-z])|[A-Z]/g, (function (e, n) { return n ? "_" + e : e })).toLowerCase() }(e) }(n)] = o), e }), {}) }, l = function () { !r.measurementId || (function () { if (!i()) { var e = document.createElement("script"); e.async = !0, e.src = "https://www.googletagmanager.com/gtag/js?id=".concat(r.measurementId), document.head.appendChild(e) } }(), document.head.appendChild(s(r))) }, d = function (e) { n.isEventExcluded(e.name) || window.gtag("event", e.name, p({send_to: e.sendTo}, e.params)) }; return { name: "ga4Service", getMeasurementId: function () { return r.measurementId }, appendGoogleTag: l, sendCustomEvent: d, setGa4Config: function (e) { r = e, l() }, __protected__: { handleEvent: function (e, t) { if (e === Co.EMIT_GA_EVENT) { var a = function (e, t) { return {name: t.eventCategory, sendTo: r.measurementId, params: u(t, n.getParams())} }(0, t); if (i() && a.sendTo) return d(a), o.forEach((function (e) { e.sendTo || (e.sendTo = r.measurementId), d(e) })), void (o = []); !function (e) { o.push(e) }(a) } } } } }(); pn.container.register("ga4Service", {useValue: To}), pn.ga4Service = pn.container.resolve("ga4Service"); var Po, xo, Ao, Oo = void 0; !function (e) { e.purge = "purge", e.dismissTemplate = "acp-close", e.retainSubscription = "acp-retain-subscription", e.cancelSubscription = "acp-cancel-subscription" }(Po || (Po = {})), function (e) { e.autoRenewalDisabled = "acp-auto-renewal-disabled", e.subscriptionCancellation = "acp-subscription-cancellation" }(xo || (xo = {})), function (e) { e.dismissTemplate = "dismissTemplate", e.finalConfirmation = "finalConfirmation", e.autoRenewalDisabled = "autoRenewalDisabled", e.subscriptionCancellation = "subscriptionCancellation" }(Ao || (Ao = {})); var Mo = function (e) { void 0 === e && (e = pn.container); var n = e.resolve("postmessage"), t = pn.container.resolve("util"), r = {autoRenewalDisabled: !1, subscriptionCancellation: !1}, o = {token: "", isFlowInProgress: !1, templateInteractionConfig: p({}, r)}, i = p({}, o), a = function (e, r, o) { n.broadcast(e, function (e, n) { return "boolean" != typeof (null == e ? void 0 : e.autoRenew) && "string" != typeof (null == e ? void 0 : e.cancellationType) ? n instanceof Error : { isFlowError: n instanceof Error, autoRenew: null == e ? void 0 : e.autoRenew, cancellationType: null == e ? void 0 : e.cancellationType, pageViewId: Nr.get("pageViewId"), tbc: t.getTbcCookie(), subscriptionId: null == e ? void 0 : e.subscriptionId } }(r, o)), c(!1), o instanceof Error && "Subscription was upgraded" === o.message && window.location.reload() }, s = function (e) { n.broadcast("setTemplateInteractionConfig", e) }, c = function (e) { i.isFlowInProgress = e }, u = function (e) { i = p(p({}, i), e) }; return { handleAcpEvent: function (e, n, t, r) { var o, i, s = (null === (o = n.params) || void 0 === o ? void 0 : o.eventName) || n.event, u = t.experienceActionId, l = t.continuation, d = t.containerSelector, f = t.displayMode, m = t.trackingId, v = "inline" === f ? d : null, g = null === (i = n.params) || void 0 === i ? void 0 : i.subscriptionId, h = function () { e("customEvent", p({ experienceActionId: u, continuation: l, trackingId: m, customEventName: s, containerSelector: v }, n.params), n.sender, r) }; switch (s) { case Po.purge: e("dismissTemplate", p({ experienceActionId: u, continuation: l, trackingId: m, offerType: t.offerType || null }, n.params), n.sender, r); break; case Po.retainSubscription: case Po.cancelSubscription: e("finalConfirmation", p({ experienceActionId: u, continuation: l, confirm: s === Po.cancelSubscription, trackingId: m }, n.params), n.sender, r), h(); break; case xo.autoRenewalDisabled: e("autoRenewalDisabled", { templateType: 1, continuation: a.bind(Oo, "".concat(xo.autoRenewalDisabled, "-result"), n.params), subscriptionId: g }, n.sender), c(!0); break; case xo.subscriptionCancellation: e("subscriptionCancellation", { templateType: 1, continuation: a.bind(Oo, "".concat(xo.subscriptionCancellation, "-result"), n.params), subscriptionId: g }, n.sender), c(!0); break; default: h() } }, extendByAcpParams: function (e, n, t) { var r = t.experienceActionId, o = t.continuation; return p(p({}, n), {experienceActionId: r, continuation: o, customEventName: e}) }, sendTemplateInteractionActive: function (e) { if (e.activateTemplateInteraction && pn.user.isUserValid()) { var n = pn.user.getProvider().getToken(); if (n === i.token || i.isFlowInProgress) s(i.templateInteractionConfig); else { var t = [Ao.subscriptionCancellation, Ao.autoRenewalDisabled]; pn.experience.executeTemplateInteraction({templateType: 1}).then((function (e) { var n = e.registeredEvents; return t.reduce((function (e, t) { var r; return n.includes(t) ? p(p({}, e), ((r = {})[t] = !0, r)) : e }), p({}, r)) })).then((function (e) { s(e), u({templateInteractionConfig: e, token: n}) })).catch((function () { s(r), u(o) })) } } else s(r) }, getComposerAcpEvents: function () { return Object.values(Ao) } } }(); pn.container.register("acp", {useValue: Mo}), pn.acp = pn.container.resolve("acp"); pn.container.register("analytics", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t, r = e.resolve("gaService"), o = e.resolve("ga4Service"), i = e.resolve("fbpixel"), a = e.resolve("log"), s = function (e) { return e || function () { } }, c = function (e) { return { initialize: s(e.__protected__.init), event: function (n) { var t = n.eventType, r = n.payload; return e.__protected__.handleEvent(t, r) } } }; return { name: "analytics", ga: (n = r, t = o, { initialize: function () { }, event: function (e) { var r = e.eventType, o = e.payload; n.__protected__.handleEvent(r, o), t.__protected__.handleEvent(r, o) } }), fbpixel: c(i), log: c(a) } }() }), pn.analytics = pn.container.resolve("analytics"); var No = function () { var e = pn.container.resolve("api"), n = pn.container.resolve("analytics"), t = []; setTimeout((function () { r() }), 1e4); var r = function (r) { if (Math.floor(500 * Math.random()) + 1 === 255) { var o = r || (pn.fullTPVersion ? "ts_c" : "ts_s"), i = {aid: pn.aid, type: o, actions: t}; n.log.event({ eventType: wo.LOG_TELEMETRY, payload: {url: e.getEndpoint() + "/telemetry/ux/timings", params: i} }) } }; return { name: "logging", setTime: function (e, n, r) { t.push({name: e, time: n, tags: r}) } } }(); pn.container.register("logging", {useValue: No}), pn.logging = pn.container.resolve("logging"); var Ro, Lo = "/execution/credit", Uo = "".concat(Lo, "/redeem"), Do = "".concat(Lo, "/check"); !function (e) { e.AUTO = "A", e.MANUAL = "M" }(Ro || (Ro = {})); var jo = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("ajax"), t = pn.container.resolve("jqUtils"), r = pn.container.resolve("eventUtils"), o = pn.container.resolve("consent"), i = function (e) { return Object.entries(e).reduce((function (e, n) { var t = n[0], r = n[1]; return (r || 0 === r) && (e[t] = r), e }), {}) }, a = r.createEventManager([]), s = function () { return e.__protected__.getCookie("xbc") || void 0 }, c = function (r, o, a) { return new Promise((function (c, u) { var l = a ? "?" + t.param(a) : "", d = function () { var e = pn.getExperienceEndpoint(!1); return "".concat(e, "/").concat(pn.aid) }() + r + l, f = i({xbc: s(), tbc: e.getTbcCookie() || void 0}), m = i(p(p({}, f), o)); if (!(m.cid && m.itemId && m.xbc)) { var v = "credit: Error: Required params are absent"; e.debug(v), u({code: 0, message: v}) } n.request({ type: "post", url: d, data: p(p({}, f), o), xhrFields: {withCredentials: !0}, error: function (n) { var t = "credit: Error: Received error:".concat(n.status, " ").concat(n.responseText); e.debug(t), u({code: n.status, message: n.responseText}) }, success: function (e) { c(e) } }) })) }, u = function (e, n, t, r) { var o = function (e) { return function (n) { return a.fire(void 0, e, !0, n), n } }, i = o("string" == typeof e ? e : e.success), s = o("string" == typeof e ? e : e.failure); return c(n, t, r).then(i).catch(s) }; return { redeem: function (n) { var t = o.__protected__.addConsentsToParams({}), r = t.consent_modes, i = t.consent_purposes; return u("manualCreditRedeemed", Uo, p(p({}, n), { previousUserSegments: Nr.get("userSegments"), consentModes: r, consentPurposes: i })).then((function (n) { var t = n.xbc; t && t !== s() && e.setXbcCookieFromResponse({xbc: t}) })) }, check: function (e) { return u("creditChecked", Do, e) }, registerCallback: function (e, n) { a.addEvent(e), a.registerCallback(e, n) } } }(); pn.container.register("credit", {useValue: jo}), pn.credit = pn.container.resolve("credit"); var Vo = function () { var e, n = pn.container.resolve("postmessage"), t = pn.container.resolve("containerUtils"), r = pn.container.resolve("util"), o = pn.container.resolve("eventUtils"), i = (pn.container.resolve("logging"), o.createEventManager(["resize", "loginSuccess", "logout"])), a = function () { return pn.getEndpointRoot(!0) + "/checkout/user/loginShow" }; function s(o) { r.debug("Login event received", o.event, o.params, o); var a = !t.getIframe(o.sender).config.parent; switch (o.event) { case"loaded": e = !1, !0; break; case"close": t.closeModalContainer(), i.fireCallbacks(o.event, o.params, o.sender, a); break; case"cancel": case"error": case"customEvent": i.fireCallbacks(o.event, o.params, o.sender, a); break; case"loginSuccess": !function (e, n, o, a) { var s = t.getIframe(o); r.setAccessTokenListCookie({ value: n.token_list, cookie_domain: n.cookie_domain }, n.user_token), s.config.userToken = n.user_token, s && s.config && s.config.loginSuccess && s.config.loginSuccess(n.event, n.params, n.sender), i.fireCallbacks(e, n, o, a), s && s.config && s.config.closeAfterSuccess && t.closeModalContainer(o); var u = {reloadAfterLogin: !0, userToken: n.user_token, user: n.user}; c(u) }(o.event, o.params, o.sender, a); break; case"logoutSuccess": !function (e, n, t, o) { i.fireCallbacks("logout", null, void 0, !0), r.setAccessTokenListCookie({ value: n.token_list, cookie_domain: n.cookie_domain }, n.user_token, !0) }(o.event, o.params, o.sender); break; case"readyToSubmitStats": var s = {pageViewId: pn.main.fetchPageViewId(), tbc: r.getTbcCookie()}; n.send("submitStats", s, o.sender); break; default: return void r.debug("Received invalid event type: " + o.event) } } var c = function (e) { n.broadcast("reloadOffer", e) }; var u; function l(e) { var n = performance.now(); u && t.closeModalContainer(u); var o = {}; Object.assign(o, {closeAfterSuccess: !0}, e), o.displayMode = "popup", o.width = 360, o.height = 660, o.state = o.state ? o.state : "login"; var c = function (e) { var n = {}; return ["displayMode", "aid", "width", "height", "state"].forEach((function (t) { e[t] && (n[t] = e[t]) })), n }(o); c.iframeId = r.randomString(16), c.url = window.location.href, c.host_url = window.location.href, c.initTime = n, u = c.iframeId, function (e) { ["aid", "gaClientId", "tags", "contentSection", "contentAuthor"].forEach((function (n) { pn[n] && (e[n] = pn[n]) })), pn.contentCreated && (e.contentCreated = pn.contentCreated) }(c), c.user_provider = "tinypass_accounts", e.userToken && (c.user_token = e.userToken), r.getCampaigns(c); var l, d = {url: a(), config: o, postMessageUrl: a(), receive: s, iframeParams: c}; return o.iframeId ? (d.iframeParams.iframeId = o.iframeId, l = t.redirectContainer(o.iframeId, d)) : l = t.createContainer(d), i.registerCallback(o, c.iframeId), l } return { name: "tinypassLogin", show: function (n) { if (e) return !1; e = !0, setTimeout((function () { e = !1 }), 1e4), l(n) || r.error("Could not initialize login; check configuration") }, close: function () { t.closeModalContainer() }, showBackdrop: function () { t.showBackdrop() }, hideBackdrop: function () { t.hideBackdrop() }, centerBackdrop: function (e) { t.centerBackdrop(e) }, registerCallback: function (e, n) { i.registerCallback(e, n) }, listenLogin: function (e) { !function (e) { i.registerCallback(e, e.iframeId); var t = {iframeId: e.iframeId, config: e, iframeParams: e}; n.init({postMessageUrl: a(), receive: s, iframe: t, iframeParams: {}}) }(e) } } }(); pn.container.register("tinypassLogin", {useValue: Vo}), pn.tinypassLogin = pn.container.resolve("tinypassLogin"); var Fo = function () { var e = pn.container.resolve("ajax"), n = pn.container.resolve("jqUtils"), t = pn.container.resolve("util"), r = pn.container.resolve("tinypassLogin"), o = pn.container.resolve("eventUtils").createEventManager(["logout"]), i = function () { return t.getUserTokenCookie() || null }; return { name: "tinypassAccounts", isv: !1, isUserValid: function () { return !!t.getUserTokenCookie() }, getToken: i, getName: function () { return "tinypass_accounts" }, onLoginSuccess: function (e) { t.setAccessTokenListCookie({value: e.token_list, cookie_domain: e.cookie_domain}, e.user_token) }, isConfigured: function () { return !0 === pn.useTinypassAccounts || "string" == typeof pn.useTinypassAccounts && "true" === pn.useTinypassAccounts }, login: function (e) { return (e = e || {}).userToken = i(), r.show(e) }, logout: function (r) { var i = {aid: pn.aid, url: document.location.href}, a = pn.getEndpointRoot(!0) + "/checkout/user/logout?" + n.param(i); t.setAccessTokenListCookie({value: null}, void 0, !0), e.request({ url: a, dataType: "jsonp", success: function (e) { t.setAccessTokenListCookie({ value: "", cookie_domain: e.models.cookie_domain }, e.models.user_token, !0), o.fireCallbacks("logout", null, void 0, !0), r && r(e) }, error: function (e) { t.setAccessTokenListCookie(null, void 0, !0), o.fireCallbacks("logout", null, void 0, !0), r && r(e) } }) }, registerCallback: function (e, n) { o.addEvent(e), o.registerCallback(e, n) } } }(); pn.container.register("tinypassAccounts", {useValue: Fo}), pn.tinypassAccounts = pn.container.resolve("tinypassAccounts"); var Bo = function () { var e = pn.container.resolve("jqUtils"), n = pn.container.resolve("cookie"), t = pn.container.resolve("util"), r = pn.container.resolve("eventUtils").createEventManager(["logout"]); return { isv: !1, name: "condeUserProvider", getName: function () { return "conde" }, isUserValid: function () { return !!t.getUserTokenCookie() }, getToken: function () { var e = t.findCookieByName("amg_user_partner"); return void 0 !== e && e && e.length >= 0 ? e : null }, onLoginSuccess: function (r) { t.setAccessTokenListCookie({value: r.token_list, cookie_domain: r.cookie_domain}, r.user_token); var o = {path: "/", expires: 730}; r.cookie_domain && "localhost" !== r.cookie_domain && e.inArray(r.cookie_domain, t.getPossibleCookieDomains()) >= 0 && (o.domain = r.cookie_domain), n.raw = !0, t.__protected__.setCookie(r.params.cookieName, r.params.cookieValue, o), t.__protected__.setCookie("amg_user_partner", r.params.externalId, o), t.__protected__.setCookie("amg_user_info", r.params.userName, o), t.__protected__.setCookie("amg_user_ext", r.params.siteUserId, o), r.params.updateToken && t.__protected__.setCookie("amg_user_update", r.params.updateToken, o), n.raw = !1 }, logout: function (e) { t.setAccessTokenListCookie({value: null}, void 0, !0); var n = t.getPossibleCookieDomains(); for (var o in n) t.deleteCookie("amg_user", n[o]), t.deleteCookie("amg_user_partner", n[o]), t.deleteCookie("amg_user_info", n[o]), t.deleteCookie("amg_user_ext", n[o]), t.deleteCookie("amg_user_update", n[o]); t.deleteCookie("amg_user"), t.deleteCookie("amg_user_partner"), t.deleteCookie("amg_user_info"), t.deleteCookie("amg_user_ext"), t.deleteCookie("amg_user_update"), r.fireCallbacks("logout", null, void 0, !0), e && e() }, isConfigured: function () { return !0 === pn.useCondeUserProvider || "string" == typeof pn.useCondeUserProvider && "true" === pn.useCondeUserProvider }, registerCallback: function (e, n) { r.addEvent(e), r.registerCallback(e, n) } } }(); pn.container.register("condeUserProvider", {useValue: Bo}), pn.condeUserProvider = pn.container.resolve("condeUserProvider"); var qo = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("api"), t = pn.container.resolve("eventUtils"), r = pn.container.resolve("jqUtils"), o = !1; var i = t.createEventManager(["userChanged", "onHide", "logout"]), a = { apiKey: null, screenSet: "Default-RegistrationLogin", startScreen: null, enabledProviders: null, lang: null }; function s() { var n = e.getUserTokenCookie(); if (n && e.findCookieByName("glt_" + a.apiKey) === e.findCookieByName("__utg_" + a.apiKey)) return n; return null } function c() { var e = s(); return !!(void 0 !== e && e && e.length >= 0) } var u = []; function l(t, s) { if (!o) throw "Gigya is not configured"; p(); var l = e.findCookieByName("glt_" + a.apiKey), d = e.findCookieByName("__utg_" + a.apiKey); (l !== d || l && l === d && !c() || t) && (u.push(s), 1 === u.length && window.gigya.accounts.getAccountInfo({ callback: function (t) { if (0 === t.errorCode) { var o = { uid: t.UID, signature: t.UIDSignature, signature_timestamp: t.signatureTimestamp, url: e.prepareUrlParameter(window.location.href) }; e.startCall("refreshUserToken"), n.callApi("/anon/gigya/verifyAccountInfo", o, (function (n) { if (n && n.result) { e.setAccessTokenListCookie(n.result.access_token, n.result.user_token); var t = {path: "/", expires: 730}; if (n.result.access_token) { var o = n.result.access_token.cookie_domain; o && "localhost" !== o && r.inArray(o, e.getPossibleCookieDomains()) >= 0 && (t.domain = o) } var s = e.findCookieByName("glt_" + a.apiKey); e.__protected__.setCookieConsent("vx", "__utg_" + a.apiKey, s, t); for (var c = 0; c < u.length; c++) { var l = u[c]; l && l(n.result) } n.result.user && (n.result.user = { uid: n.result.user.uid, email: n.result.user.email, firstName: n.result.user.first_name, lastName: n.result.user.last_name, valid: n.result.user.valid }), i.fireCallbacks("userChanged", n.result, void 0, !0) } else e.log("Can't verify gigya user: may be the configuration of gigya user provider is invalid"), e.setAccessTokenListCookie(); u = [], e.doneCall("refreshUserToken") })) } else e.setAccessTokenListCookie(), u = [] } })) } var d = !1; function p() { if (!window.gigya || !window.gigya.__initialized) throw "Gigya is not initialized" } return { isv: !1, name: "gigya", init: function (n) { if (!o) { for (var t in n) void 0 !== n[t] && (a[t] = n[t]); if (!a.screenSet) throw "Gigya is not configured: screenSet parameter required"; if (!a.apiKey) throw "Gigya is not configured: apiKey parameter required"; p(), window.gigya.accounts.addEventHandlers({ onLogin: function () { d = !0, l() }, onLogout: function () { e.setAccessTokenListCookie({value: null}, void 0, !0), i.fireCallbacks("logout", null, void 0, !0) } }), o = !0, l() } }, isUserValid: c, getToken: s, getName: function () { return "gigya" }, onLoginSuccess: function (n) { e.setAccessTokenListCookie({value: n.token_list, cookie_domain: n.cookie_domain}, n.user_token) }, login: function (e) { if (!o) throw "Gigya is not configured"; p(), e && window.gigya.accounts.addEventHandlers({ onLogin: function () { l(!0, e) } }); var n = { screenSet: a.screenSet, onHide: function () { i.fireCallbacks("onHide", {afterLogin: d}, void 0, !0) } }, t = ["apiKey", "screenSet"]; for (var r in a) { r in t || (n[r] = a[r]) } d = !1, window.gigya.accounts.showScreenSet(n) }, logout: function (n) { if (!o) throw "Gigya is not configured"; p(), window.gigya.accounts.logout({ callback: function () { i.fireCallbacks("logout", null, void 0, !0), n && n(), e.setAccessTokenListCookie({value: null}, void 0, !0) } }), e.setAccessTokenListCookie({value: null}, void 0, !0) }, isConfigured: function () { return !0 === pn.useGigyaUserProvider || "string" == typeof pn.useGigyaUserProvider && "true" === pn.useGigyaUserProvider }, registerCallback: function (e, n) { i.addEvent(e), i.registerCallback(e, (function (e) { return n(e) })) }, loginByPasswordless: function (n) { if (!n) throw "Session info is empty"; var t = n.accessTokenName, r = n.accessToken; e.__protected__.setCookie(t, r); var o = "glt_" + a.apiKey; e.__protected__.setCookieConsent("vx", o, r), l(!0) } } }(); pn.container.register("gigya", {useValue: qo}), pn.gigya = pn.container.resolve("gigya"); var zo = function () { var e = function (e) { function n() { return null !== e && e.apply(this, arguments) || this } return d(n, e), n.prototype.construct = function (e) { this.message = e, this.name = "InvalidCharacterError" }, n }(Error); function n(n) { var t = String(n).replace(/=+$/, ""); if (t.length % 4 == 1) throw new e("'atob' failed: The string to be decoded is not correctly encoded."); for (var r, o, i = 0, a = 0, s = ""; o = t.charAt(a++); ~o && (r = i % 4 ? 64 * r + o : o, i++ % 4) ? s += String.fromCharCode(255 & r >> (-2 * i & 6)) : 0) o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o); return s } try { var t = window.atob && window.atob.bind(window) || n } catch (e) { t = n } var r = function (e) { var n = e.replace(/-/g, "+").replace(/_/g, "/"); switch (n.length % 4) { case 0: break; case 2: n += "=="; break; case 3: n += "="; break; default: throw "Illegal base64url string!" } try { return function (e) { return decodeURIComponent(t(e).replace(/(.)/g, (function (e, n) { var t = n.charCodeAt(0).toString(16).toUpperCase(); return t.length < 2 && (t = "0" + t), "%" + t }))) }(n) } catch (e) { return t(n) } }; return function (e, n) { if ("string" != typeof e) throw new Error("Invalid token specified"); var t = !0 === (n = n || {}).header ? 0 : 1; return JSON.parse(r(e.split(".")[t])) } }(); pn.jwtDecode = zo, pn.container.register("jwtDecode", {useValue: zo}); pn.container.register("urlManager", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t = function () { var e = pn.sandbox || pn.isNonProdEndpoint(), t = n || pn.pianoIdUrl || !e && "https://id.tinypass.com" || "/"; return "/" === t && (t = pn.getEndpointRoot(!0)), t.replace(/\/$/, "") }, r = function () { return "".concat(t(), "/id/") }; return { getPianoIdDomain: t, getPianoIdUrl: r, getIdentifyUrl: function () { return "".concat(r(), "api/v1/identity") }, iframeUrlFromGlobalConfig: n, setIframeUrlFromGlobalConfig: function (e) { return n = e } } }() }); var Ho, Wo; pn.container.register("langManager", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("util"); return { getLang: function () { return pn.locale || n.__protected__.getCookie("__pil") || "" } } }() }), function (e) { e.Modal = "modal", e.Inline = "inline", e.Popup = "popup", e.Redirect = "redirect", e.InlinePopup = "inlinePopup" }(Ho || (Ho = {})), function (e) { e.isPianoIdLiteConfigured = function () { return !0 === pn.usePianoIdLiteUserProvider || "string" == typeof pn.usePianoIdLiteUserProvider && "true" === pn.usePianoIdLiteUserProvider }, e.isCustomForm = function (e, n) { var t = !e.isRegistration, r = !/\.html$/.test(n); return !!e.formName && r && t } }(Wo || (Wo = {})); var Go = Wo.isCustomForm; pn.container.register("iframeBuilder", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("util"), t = e.resolve("langManager"), r = e.resolve("gaService"), o = e.resolve("jqUtils"); return { buildIframeUrl: function (e, i, a, s) { var c, u = n.getPageViewContext().contentType, l = n.getPageViewContext(), d = l.pageTitle, p = l.pageViewId, f = { client_id: i.aid, sender: null == a ? void 0 : a.iframeId, origin: s || window.location.origin || window.location.href, site: window.location.href, display_mode: i.displayMode, page_view_id: null != p ? p : void 0, browser_id: null !== (c = n.getBrowserId()) && void 0 !== c ? c : void 0, page_title: d, tbc: n.getTbcCookie() }; u && (f.content_type = u); var m = t.getLang(); if (m && (f.lang = m), r.getClientId() && (f.ga_client_id = r.getClientId()), r.getGAAccount() && (f.ga = r.getGAAccount()), i.disableSignUp && (f.disable_sign_up = !0), i.screen && (f.screen = i.screen), i.resetPasswordToken && (f.reset = i.resetPasswordToken), i.verification_code && (f.verification_code = i.verification_code), i.stage && (f.stage = i.stage), i.resetPasswordLandingUrl && (f.reset_uri = i.resetPasswordLandingUrl), i.width && i.displayMode === Ho.Modal && (f.width = i.width), i.formName && (f.form_name = i.formName), i.preview) switch (i.template) { case"custom_form": e += "form"; break; case"profile": e += "profile"; break; case"newsletters": e += "newsletters"; break; case"layout_gm_sso": case"sso_confirm": case"sso_confirm_before": e += "gm-sso" } else Go(i, e) && (e += "form"), i.isGmSsoEnabled && (e += "gm-sso"); if (i.confirmation && (f.gm_sso_confirm = i.confirmation), i.hideIfComplete && (f.hide_if_complete = i.hideIfComplete), i.preview && (f.preview = i.preview), i.templateVersion && (f.templateVersion = i.templateVersion), i.template && (f.template = i.template), i.accessToken && (f.access_token = i.accessToken), i.email && (f.email = i.email), i.singleStep && (f.single_step = !0), i.createPasswordlessUser && (f.create_passwordless_user = !0), i.customParams && (f.custom_params = JSON.stringify(i.customParams)), i.customEvents) { var v = Object.keys(i.customEvents); v.length && (f.custom_events = JSON.stringify(v)) } return i.jsonpError && (f.jsonp_error = JSON.stringify(i.jsonpError)), i.passwordlessSuccess && (f.passwordless_success = !0), i.passwordlessToken && (f.passwordless_token = i.passwordlessToken), i.redirectUri && (f.redirect_uri = i.redirectUri), null != a && a.iframeUrl && (f.url = a.iframeUrl), i.returnBack && (f.return_back = i.returnBack), null != a && a.pos && (f.width = a.pos.width, f.height = a.pos.height, f.top = a.pos.top, f.left = a.pos.left), i.templateId && (f.template_id = i.templateId), i.variantId && (f.variant_id = i.variantId), i.sss && (f.sss_mode = i.sss.sss_mode, f.sss_callback_url = i.sss.sss_callback_url, f.sss_origin_url = i.sss.sss_origin_url), i.trackingId && (f.tracking_id = i.trackingId), i.response_id && (f.response_id = i.response_id), i.transparentMode && (f.transparent_mode = !0), [e, o.param(f)].join("?") } } }() }); var Jo = function (e) { function n() { return null !== e && e.apply(this, arguments) || this } return d(n, e), n }(Error); pn.container.register("microsoftQuickAuth", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t = "msqaLinkingState", r = e.resolve("util"), o = e.resolve("ajax"), i = e.resolve("localStorage"), a = e.resolve("gaService"), s = "", c = "", u = function () { return new Promise((function (e) { var o, a = null !== (o = null == n ? void 0 : n.promptPosition) && void 0 !== o ? o : "left"; ms.auth.prompt(a, (function (n) { n.displayed && (r.debug("[Piano ID][Microsoft Quick Auth] Prompt displayed."), i.remove(t)), e(n) })) })) }, l = function () { var e = new URL(s), n = r.getBrowserId(); n && e.searchParams.append("browser_id", n); var a = pn.main.fetchPageViewId(); a && e.searchParams.append("page_view_id", a); var u = r.getPageViewContext().contentType; return u && e.searchParams.append("content_type", u), new Promise((function (n, r) { return o.request({ url: e.toString(), type: "POST", contentType: "application/json", dataType: "text", data: JSON.stringify({ state: i.get(t), back_url: window.location.href, social_type: "MSQA", response_type: "token", prompt: !0, redirect_uri: c }), success: function (e) { i.set(t, e), "ms" in window && ms.auth.setRedirectState(e), n(e) }, error: function (e) { r(e) } }) })) }; return { init: function (e, o, a) { return void 0 === a && (a = function () { }), g(void 0, void 0, void 0, (function () { var s, c; return h(this, (function (u) { switch (u.label) { case 0: if (!e || !o) throw new Jo("[Piano ID] Microsoft Quick Auth configuration failed. Client ID or redirectUri are missed."); return [4, r.requireJsFile("https://edge-auth.microsoft.com/js/ms_auth_client.min.js")]; case 1: if (u.sent(), r.debug("[Piano ID][Microsoft Quick Auth] Script loaded."), !ms) throw new Jo("[Piano ID] Microsoft Quick Auth configuration failed. MSQA is not loaded."); if (s = ms.auth.initialize({ client_id: e, callback: a, redirect_uri: o, ux_mode: "redirect", auto_prompt: !1, auto_sign_in: null == n ? void 0 : n.autoSignIn, context: null == n ? void 0 : n.context, cancel_on_tap_outside: null == n ? void 0 : n.cancelOnTapOutside, locale: null == n ? void 0 : n.locale }), (c = i.get(t)) && ms.auth.setRedirectState(c), "failure" === s.result) throw new Jo("[Piano ID] Microsoft Quick Auth configuration failed due to ".concat(s.reason)); return r.debug("[Piano ID][Microsoft Quick Auth] Initialized."), [2] } })) })) }, showPrompt: u, fetchLinkingState: l, setLinkingStateUrl: function (e) { return s = e }, setLinkingRedirectUri: function (e, n, t, o) { var i = new URL(e); i.searchParams.append("client_id", n), i.searchParams.append("origin", t), i.searchParams.append("site", window.location.href), i.searchParams.append("display_mode", "modal"); var s = pn.main.fetchPageViewId(); s && i.searchParams.append("page_view_id", s); var u = r.getBrowserId(); u && i.searchParams.append("browser_id", u); var l = r.getTbcCookie(); l && i.searchParams.append("tbc", l), a.getGAAccount() && i.searchParams.append("ga", a.getGAAccount()); var d = r.getPageViewContext(); null != d && d.contentType && i.searchParams.append("content_type", null == d ? void 0 : d.contentType), i.searchParams.append("lang", o), i.searchParams.append("width", "400"), c = i.toString() }, runLinkingStateAndPromptObserver: function () { r.debug("[Piano ID][Microsoft Quick Auth] Running linking state and prompt observer."), setInterval((function () { return l().then((function () { return u() })) }), 6e5) }, clearConfirmationParameters: function () { var e = "internal_redirect_uri", n = "response_id"; r.hasQueryParamByName(e) && r.removeQueryParamByName(e), r.hasQueryParamByName(n) && r.removeQueryParamByName(n) }, setConfiguration: function (e) { return n = e } } }() }); pn.container.register("selfServeSessions", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("langManager"), t = e.resolve("urlManager"), r = function () { var e = o(), n = e.sss_mode, t = e.sss_callback_url; return !!n && !!t }, o = function () { var e = pn.sssOriginUrl || window.location.href || window.location.origin; return {sss_mode: pn.sssMode, sss_callback_url: pn.sssCallbackUrl, sss_origin_url: e} }; return { getAccessToken: function () { return pn.sssAccessToken }, isSssEnabled: r, getSssParams: o, setSssAccessToken: function (e, r) { if (void 0 === r && (r = !1), pn.setSssAccessToken(e), !r) { var i = ""; i += "callback_url=" + o().sss_callback_url, i += "&origin_url=" + o().sss_origin_url, i += "&aid=" + pn.aid, i += "&lang=" + n.getLang(), i += "&token=" + e, window.location.href = t.getPianoIdDomain() + "/id/api/v1/sss?" + i } }, isRedirect: function (e) { var n; return "redirect" === (null === (n = e.sss) || void 0 === n ? void 0 : n.sss_mode) }, logout: function () { r() && pn.sssAccessToken && pn.setSssAccessToken(void 0) } } }() }); pn.container.register("tokenManager", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("util"), t = e.resolve("selfServeSessions"), r = n.getAidSpecifiedName("__utp"), o = function () { var e; return t.isSssEnabled() && t.getAccessToken() ? null !== (e = t.getAccessToken()) && void 0 !== e ? e : null : n.findCookieByName(r) || null }; return { getToken: function () { return pn.externalJWT && Wo.isPianoIdLiteConfigured() ? pn.externalJWT : o() }, loadToken: o } }() }); var Qo; pn.container.register("configManager", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("tokenManager"), t = function () { var e = window.innerWidth || document.documentElement.clientWidth || window.screen.width; return Math.min(e, 400) }; return { prepareConfig: function (e, r) { e.aid || (e.aid = pn.aid), e.displayMode || (e.displayMode = Ho.Modal), e.displayMode === Ho.Popup ? (e.width = parseInt(String(e.width)) || t(), e.height = parseInt(String(e.height)) || 460) : e.displayMode === Ho.Modal && (e.width = parseInt(String(e.width)) || t()), null == r || r(e), e.accessToken = n.loadToken() }, getDefaultWidth: t } }() }), function (e) { e.None = "none", e.Before = "before", e.After = "after" }(Qo || (Qo = {})); pn.container.register("pianoId", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t, r, o, i, a, s = e.resolve("cookie"), c = e.resolve("jqUtils"), u = e.resolve("ajax"), l = e.resolve("jwtDecode"), d = e.resolve("util"), f = e.resolve("containerUtils"), m = e.resolve("postmessage"), v = e.resolve("observer"), y = (e.resolve("gaService"), e.resolve("api")), w = e.resolve("logging"), _ = e.resolve("localStorage"), k = e.resolve("consent"), C = e.resolve("analytics"), I = e.resolve("clientConfiguration"), S = e.resolve("microsoftQuickAuth"), E = !1, T = e.resolve("selfServeSessions"), P = e.resolve("iframeBuilder"), x = e.resolve("configManager"), A = e.resolve("urlManager"), O = e.resolve("tokenManager"), M = "gm_sso_redirect", N = "token", R = "term_id", L = "offer_id", U = "checkout_flow_id", D = "experience_id", j = "form_name", V = "form_name_by_term_id", F = "remember", B = "registration", q = "reset_token", z = "passwordless_token", H = "verification_code", W = "piano_social_token", G = d.getAidSpecifiedName("__utp"), J = "__pil", Q = "__pid", X = "__idr", Y = "__eea", $ = "PIANOID", K = "show_form", Z = "registration", ee = "checkout", ne = 3e3, te = "pnid-tc-string", re = ["he_IL", "ar_EG"], oe = {}, ie = [], ae = {}, se = { loggedIn: [], loggedOut: [], loginSuccess: [], registrationSuccess: [], profileUpdate: [], langChange: [], fire_loginSuccess: [], loginDisplayed: [], registerDisplayed: [], loginFailed: [], registrationFailed: [], onShow: [], layoutReady: [] }, ce = {}, ue = {}, le = [], de = !1, pe = {}; c.on(window, "resize", (function () { return me() })); var fe = function (e) { var n; de && (e.confirmation = null !== (n = e.confirmation) && void 0 !== n ? n : Qo.After) }, me = function (e) { ie.filter((function (e) { return "inline" === e.config.displayMode })).filter((function (n) { return !e || e.some((function (e) { return n.container === e })) })).forEach((function (e) { var n = c.getWidth(e.container); f.resizeIframe(e, {width: n}), m.send("resize", {width: n}, e.iframeId) })) }, ve = function (e) { if (o && !e) return o; var n; oe = Object.assign(oe, e), A.setIframeUrlFromGlobalConfig(oe.iframeUrl), e && Ve(e), Object.keys(se).forEach((function (e) { !!oe[e] && delete oe[e] })), o = new Promise((function (e) { n = e })), Wo.isPianoIdLiteConfigured() || pn.setUsePianoIdUserProvider(!0); var t = d.getQueryParamByName(q); if (void 0 === oe.resetPasswordToken && t && (oe.resetPasswordToken = t), d.getQueryParamByName(M)) { var r = d.getQueryParamByName(R), i = d.getQueryParamByName(L), a = d.getQueryParamByName(D), s = d.getQueryParamByName(U), c = d.getQueryParamByName(j), u = d.getQueryParamByName(V); r && i && (pe.termId = r, pe.offerId = i), a && (pe.experienceId = a), s && (pe.checkoutFlowId = s), c && (pe.formName = c), u && (pe.formNameByTermId = u), g(void 0, void 0, void 0, (function () { var e, n, t; return h(this, (function (r) { switch (r.label) { case 0: return e = d.getQueryParamByName(N), n = !!d.getQueryParamByName(F), t = !!d.getQueryParamByName(B), d.removeQueryParamByName([M, N, F, R, L, D, U, j, V, B]), e ? [4, cn({ source: $, user: l(e), remember: n, token: e })] : [3, 2]; case 1: r.sent(), t && je("registrationSuccess"), r.label = 2; case 2: return [2] } })) })), function () { var e = O.getToken(), n = l(e); e && (pe.emailConfirmationRequired = n.email_confirmation_required, pe.phoneConfirmationRequired = n.pn_cr) }() } var p = d.getQueryParamByName(z); void 0 === oe.passwordlessToken && p && (oe.passwordlessToken = p); var f = d.getQueryParamByName(H); void 0 === oe.verification_code && f && (oe.verification_code = f); var m = d.getQueryParamByName(W); return m && (d.removeQueryParamByName(W), un() || (pn.inappBrowserReturn = !0, function (e, n) { var t = l(e); t.rememberMe = n, tn({user: t, token: e}) }(m, !0))), setTimeout((function () { return n() }), 50), o }, ge = function (e, t) { if (r && !e) return r; var o; r = new Promise((function (e) { o = e })); var i = function () { d.doneCall("refreshUserToken"), r = null, o() }, a = function (t) { var r, o; if ("token_not_valid" === t) { if (i(), E) return; if (d.isEdge()) { var a = d.getQueryParamByName("internal_redirect_uri"), s = d.getQueryParamByName("response_id"); if (a && s) { S.clearConfirmationParameters(); var c = Array.from(new URL(a).searchParams.entries()); return he(p(p(p({}, oe), c.reduce((function (e, n) { var t, r = n[0], o = n[1]; return p(p({}, e), ((t = {})[r] = o, t)) }), {})), {response_id: s, transparentMode: !0})), void (E = !0) } S.setLinkingStateUrl("".concat(A.getIdentifyUrl(), "/social/").concat(oe.aid || pn.aid, "/state")), S.setLinkingRedirectUri(A.getPianoIdUrl(), oe.aid || pn.aid, A.getPianoIdUrl(), "en-US"), S.setConfiguration(p(p({}, null == e ? void 0 : e.msqaPromptConfiguration), {locale: null !== (o = null === (r = null == e ? void 0 : e.msqaPromptConfiguration) || void 0 === r ? void 0 : r.locale) && void 0 !== o ? o : kn().replace("_", "-")})), n = I.getConfiguration().then((function (e) { return g(void 0, void 0, void 0, (function () { return h(this, (function (n) { switch (n.label) { case 0: return e.msqa_client_id ? [4, S.fetchLinkingState()] : [3, 2]; case 1: return n.sent(), [2, e]; case 2: return [2, Promise.reject()] } })) })) })).then((function (e) { return S.init(e.msqa_client_id, "".concat(A.getIdentifyUrl(), "/login/social/callback/MSQA")) })).then((function () { return S.runLinkingStateAndPromptObserver() })).then((function () { var n, t; if (null === (t = null === (n = null == e ? void 0 : e.msqaPromptConfiguration) || void 0 === n ? void 0 : n.autoPrompt) || void 0 === t || t) return S.showPrompt() })).then((function () { return E = !0 })).catch((function (e) { e instanceof Jo && console.error(e) })) } } else "request_failed" === t && console.error("Opening the ID screen is prohibited because authentication via cookie failed.") }; return e && e.preview ? (setTimeout((function () { return o() }), 10), r) : (d.startCall("refreshUserToken"), ve(e).then((function () { return oe.passwordlessToken ? Ce().then(i, i) : t ? Promise.resolve().then(i, i) : mn().then(i, a) })), r) }, he = function (e) { var n = !un(), r = performance.now(); ge().then((function () { var o = Object.assign({}, oe, e, { isRegistration: !0, initTime: r, isSensitiveDataProtectionDisabled: !0 }); if (T.isSssEnabled() && (o.sss = T.getSssParams()), de) En(o) ? Tn(o) : dn(o); else if (T.isSssEnabled() && T.isRedirect(o)) $e(o, (function (e) { fe(e) })); else { var i = un(); if (i) Me(o, {emitGlobalLoginSuccessEvent: n && i}); else t ? d.log("Modal login window already shown") : (x.prepareConfig(o, (function (e) { fe(e) })), Ke(o)) } })) }, ye = function () { var e = "email_is_not_confirmed", n = sn(); if (n) { var t = d.getQueryParamByName(e); if (t) d.removeQueryParamByName(e), be({ screen: "registration" === t ? "email_is_not_confirmed" : "email_confirmation_required", email: null == n ? void 0 : n.email }) } }, we = function (e) { t ? d.log("Modal window already shown") : ge().then((function () { var n = Object.assign({screen: "email_confirmation_required"}, oe, e); x.prepareConfig(n, (function (e) { fe(e) })), Ke(n) })) }, _e = function (e) { t ? d.log("Modal window already shown") : ge().then((function () { var n = Object.assign({screen: "email_confirmation"}, oe, e); En(n) && (n.displayMode = Ho.Modal), d.getQueryParamByName(H) && d.removeQueryParamByName(H), x.prepareConfig(n, (function (e) { fe(e) })), Ke(n) })) }, be = function (e) { if (t) d.log("Modal window already shown"); else { e || (e = {}); var n = Object.assign({}, e, oe); e.customEvents && "object" == _typeof(e.customEvents) && (ce = e.customEvents), x.prepareConfig(n, (function (e) { fe(e) })), Ke(n) } }, ke = function (e) { var n = performance.now(); ge().then((function () { var r = Object.assign({}, oe, e, {initTime: n, isRegistration: !1}); if (!r.formName) throw new Error('Form name should be specified, like\ntp.pianosId.showForm({formName: "..."});'); var o = function () { if (t) d.log("Modal login window already shown"); else { if (x.prepareConfig(r, (function (e) { fe(e) })), !r.preview && i) return void d.log("Skip show form, register new user"); if (!r.hideIfComplete) return void Ke(p(p({}, r), { entityType: "customForm", readyCallback: function (e) { m.send("setToken", O.getToken(), e.iframeId) } })); Sn(r).then((function (e) { (null == e ? void 0 : e.has_all_custom_field_values_filled) && r.hideIfComplete ? d.log("Skip show form, all fields are completed") : Ke(p(p({}, r), { entityType: "customForm", readyCallback: function (n) { m.send("setToken", O.getToken(), n.iframeId), m.send("userData", e, n.iframeId) } })) })) } }; if (e.preview || un()) o(); else { var a = Object.assign({}, e, { closedCallback: function () { un() && o() } }); he(a) } })) }, Ce = function () { return new Promise((function (e, n) { var t = {aid: oe.aid || pn.aid, passwordless_token: oe.passwordlessToken, lang: kn()}; Nn({ url: "".concat(A.getIdentifyUrl(), "/passwordless/authorization/code?").concat(c.param(t)), type: "POST", success: function (n) { Ie(n), e(null) }, error: function (e) { var t = e.response, r = JSON.parse(t).error_code_list; Se(r), n() } }) })) }, Ie = function (e) { return g(void 0, void 0, void 0, (function () { var n, t, r, o, i, a, s; return h(this, (function (c) { switch (c.label) { case 0: return n = e.access_token, t = e.error, r = e.token_type, o = e.direction_url, i = e.code, a = e.extend_expired_access_enabled, !t && "code" === r && o && i ? ((s = new URL(o)).searchParams.append("code", i), window.open(s, window.name), [3, 3]) : [3, 1]; case 1: return !t && n ? (Ee(e), delete oe.passwordlessToken, d.removeQueryParamByName(z), T.isSssEnabled() && T.setSssAccessToken(n, !0), [4, cn({ source: $, token: n, user: l(n), extendExpiredAccessEnabled: a })]) : [3, 3]; case 2: c.sent(), T.isSssEnabled() && T.setSssAccessToken(n), c.label = 3; case 3: return d.doneCall("refreshUserToken"), [2] } })) })) }, Se = function (e) { be({ screen: "passwordless_confirmation", jsonpError: { error_description: e.map((function (e) { return e.message })).join("\n") } }), delete oe.passwordlessToken, d.removeQueryParamByName(z) }, Ee = function (e) { var n = {aid: oe.aid || pn.aid, login_token_id: e.login_token_id, user_token: e.access_token}, t = {passwordlessToken: e.passwordless_token, redirectUri: e.direction_url}; Te(n, t) }, Te = function (e, n) { f.showWaitPanel(), y.callApi("/anon/passwordless/complete", e, (function (e) { if (e.result && e.result.polling_enabled) return Pe(e).then((function (e) { Ae(e, n) })); Ae(e, n) })) }, Pe = function (e) { return new Promise((function (n) { var t = { aid: pn.aid, oid: e.result.oid, process_id: e.result.process_id, user_token: pn.user.getProvider().getToken() }; xe(t, 0, e.result.polling_timeouts, n) })) }, xe = function e(n, t, r, o) { y.callApi("/anon/passwordless/check", n, (function (i) { t++, i && i.result && "waiting" !== i.result.poll_status ? o(i) : !i.result && i.message ? (d.error("Passwordless purchase failed", i.message), o()) : t <= r.length ? setTimeout((function () { e(n, t, r, o) }), r[t - 1]) : o() })) }, Ae = function (e, n) { try { var t = e.result.resource || {}, r = JSON.parse(e.result.show_offer_params), o = Oe(n); if (!Object.keys(t).length && !Object.keys(r).length) return be(o); o = t.name ? Oe(n, {customParams: {resourceName: t.name}}) : Oe(n, { customEvents: { checkoutContinue: function () { en(), f.closeModalContainer(), pn.offer.show(r) } } }), be(o) } catch (e) { be(Oe(n)) } finally { f.hideWaitPanel() } }, Oe = function (e, n) { var t = {screen: "passwordless_confirmation"}; return e && (t.passwordlessToken = e.passwordlessToken, t.redirectUri = e.redirectUri), n ? Object.assign(t, n) : Object.assign(t, {passwordlessSuccess: !0}) }, Me = function (e, n) { n = n || {}; var t = sn(); if (t) { var r = {token: O.loadToken(), user: t, source: n.source, stage: n.stage}, o = { event: "loginSuccess", source: n.source, params: r.user, user_token: r.token, registration: i, stage: n.stage }; e ? (e.loggedIn && e.loggedIn(r), n.emitGlobalLoginSuccessEvent && De("loginSuccess", o)) : (Re("loggedIn", r), Re("loginSuccess", r), n.source === $ && (Re("fire_loginSuccess", o), De("loginSuccess", o))) } }, Ne = function (e, n) { var t = {login: "loginDisplayed", register: "registerDisplayed"}[e]; n || Re(t, {}), De(t, {}) }, Re = function (e, n) { var t; Le(e, n), null === (t = se[e]) || void 0 === t || t.forEach((function (e) { return e(n) })) }, Le = function (e, n) { ie.filter((function (e) { return !e.closed })).map((function (n) { return Ue(n.config, e) })).filter((function (e) { return !!e })).forEach((function (e) { return e(n) })) }, Ue = function (e, n) { return "function" == typeof (null == e ? void 0 : e[n]) ? e[n] : void 0 }, De = function (e, n) { var t; null === (t = ue[e]) || void 0 === t || t.forEach((function (e) { return e(n) })) }, je = function (e, n) { Re(e, n), De(e, n) }, Ve = function (e) { !e || Object.keys(se).forEach((function (n) { var t, r = e[n]; r && (null === (t = se[n]) || void 0 === t || t.push(r)) })) }, Fe = function (e) { ne = e }, Be = function () { var e = window.innerWidth || document.documentElement.clientWidth || window.screen.width; return Math.min(e, 400) }, qe = function (e, n, t) { return g(void 0, void 0, void 0, (function () { return h(this, (function (r) { switch (r.label) { case 0: return i = !1, [4, hn()]; case 1: return r.sent(), an(), T.logout(), _.remove(te), d.setAccessTokenListCookie({value: null}, void 0, !0), t || function (e) { var n = {source: e}; Re("loggedOut", n), De("logout", n) }(n), e && e(), [2] } })) })) }; function ze(e) { return function (n) { var t, r, o, i, a, s, u, l = e.config, p = l.trackingId, v = l.formName; switch (n.event) { case"updateToken": cn(n.params); break; case"loaded": l.displayMode === Ho.Modal && f.checkBackdropAndContainer(e, !0), null === (t = l.loadedCallback) || void 0 === t || t.call(l, e); var g = pn.consent.getByPurpose(); g && m.send("consentWithModes", g, e.iframeId); break; case"stateReady": null === (r = l.readyCallback) || void 0 === r || r.call(l, e); break; case"resize": f.resizeIframe(e, n.params); break; case"restoreSize": "inline" === e.config.displayMode && f.resizeIframe(e, {width: c.getWidth(e.container)}); break; case"loginSuccess": Qe(n, (function () { var e; null === (e = l.callback) || void 0 === e || e.call(l), pn.user.refreshAccessToken(!0), m.broadcast("pianoIdLoginSuccess", n.params) })); break; case"loginFailed": je("loginFailed", n.params); break; case"registrationSuccess": Qe(n, (function () { je("registrationSuccess", n.params), m.broadcast("pianoIdLoginSuccess", n.params) })); break; case"registrationFailed": je("registrationFailed", n.params); break; case"lang": bn(n.params.lang, !0), xn(n.params.lang, e); break; case"customEvent": !function (e, n) { var t; null === (t = null == e ? void 0 : e.customEvent) || void 0 === t || t.call(e, n), De("customEvent", n) }(e.config, n.params); break; case"closed": "customForm" === e.config.entityType && De("customFormClosed", { config: e.config, reason: null === (o = n.params) || void 0 === o ? void 0 : o.reason }), wn(e, {force: !0}), null === (i = l.closedCallback) || void 0 === i || i.call(l, e); break; case"cfFormSubmission": C.log.event({ eventType: wo.LOG_CUSTOM_FORM_SUBMISSION, payload: {trackingId: p, formName: v, source: K} }); break; case"formSend": De("customFormSubmitted", { config: e.config, submittedFields: null === (a = n.params) || void 0 === a ? void 0 : a.submittedFields }), wn(e, {reason: "customFormSubmitted"}); break; case"formSkip": wn(e); break; case"cfAppImpression": C.log.event({ eventType: wo.LOG_CUSTOM_FORM_IMPRESSION, payload: {trackingId: p, formName: v, source: Z} }); break; case"cfAppSubmission": C.log.event({ eventType: wo.LOG_CUSTOM_FORM_SUBMISSION, payload: {trackingId: p, formName: v, source: Z} }); break; case"cfFormImpression": C.log.event({ eventType: wo.LOG_CUSTOM_FORM_IMPRESSION, payload: {trackingId: p, formName: v, source: K} }); break; case"changeScreen": Ne(n.params.screen); break; case"screenReady": l.initTime && w.setTime("idShow", Math.floor(performance.now() - l.initTime), { aot: null === (s = n.params) || void 0 === s ? void 0 : s.AOT, form_type: null !== (u = l.entityType) && void 0 !== u ? u : "" }), je("onShow"); break; case"layoutReady": je("layoutReady", n.params); break; case"confirmationEmailSent": "inline" !== e.config.displayMode && !n.params.isDOI && !n.params.isPasswordlessDigitalCode && wn(e); break; case"verificationCodeStartCheckout": var h = {}; try { h = JSON.parse(n.params.startCheckoutParams) } catch (e) { d.log("error parse start checkout params"), h = {} } mn(!0, !0).then((function () { wn(e, {force: !0}) })), d.waitCall("refreshUserToken", (function () { pn.offer.show(h) })); break; case"removeParamFromGlobalConfig": We(n); break; case"verifyCode": Ge(n, e); break; case"openPasswordlessLoginWithCreatingUser": He(); break; case"fireCustomEvent": !function (e) { ce && "function" == typeof ce[e] && ce[e]() }(n.params.name); break; case"passwordRestored": d.removeQueryParamByName(q), oe.resetPasswordToken = void 0; break; case Co.EMIT_GA_EVENT: C.ga.event({payload: n.params, eventType: Co.EMIT_GA_EVENT}); break; case"redirect": document.location.href = n.params.url; break; case"designVersion": f.addClassToContainer(e, "piano-id-modal-ver-".concat(n.params.version)); break; case"profileUpdated": Re("profileUpdate", n.params); break; case"logout": un() && qe(); break; case"successDOI": m.broadcast("successDOI", n.params), !!pe.termId && fn(); break; default: d.debug("Received invalid event type: " + n.event) } } } var He = function () { he({createPasswordlessUser: !0}) }, We = function (e) { var n = e.params.name, t = d.fromUnderscoreToCamelCase(n); delete oe[t], e.params.removeFromUrl && d.removeQueryParamByName(n) }, Ge = function (e, n) { var t = e.params.verificationCode, r = e.params.locale, o = oe.aid || pn.aid, i = O.getToken(), a = document.location.href, s = n.config.trackingId; Nn({ url: "".concat(A.getIdentifyUrl(), "/verification/code"), dataType: "jsonp", data: {client_id: o, access_token: i, site: a, verification_code: t, lang: r, tracking_id: s}, success: function (e) { e.error || Je(e, n) }, xhrFields: {withCredentials: !0}, crossDomain: !0 }) }, Je = function (e, n) { !e.error && e.access_token && (tn({ token: e.access_token, user: l(e.access_token), cookie_domain: e.site_cookie_domain }), T.isSssEnabled() && T.setSssAccessToken(e.access_token)), m.send("verificationCodeComplete", e, n.iframeId) }, Qe = function (e, n) { return g(void 0, void 0, void 0, (function () { var t, r; return h(this, (function (o) { switch (o.label) { case 0: return e && e.params && !e.params.areCookiesSet ? (e.params.source = $, i = !!e.params.registration, [4, cn(e.params)]) : [3, 2]; case 1: return t = o.sent(), n(t), Ye(null === (r = e.params) || void 0 === r ? void 0 : r.user), [3, 3]; case 2: "function" == typeof n && n(), o.label = 3; case 3: return On(), [2] } })) })) }, Xe = function () { var e = pn.sandbox || pn.isNonProdEndpoint(), n = oe.iframeUrl || pn.pianoIdUrl || !e && "https://id.tinypass.com" || "/"; return "/" === n && (n = pn.getEndpointRoot(!0)), n.replace(/\/$/, "") }, Ye = function (e) { var n = null == e ? void 0 : e.email_confirmation_required, t = null == e ? void 0 : e.phone_confirmation_required, r = oe.verification_code; n || r || t ? f.hideCloseButton() : _n() }, $e = function (e, n) { x.prepareConfig(e, n), O.getToken() || window.open(P.buildIframeUrl(A.getPianoIdUrl(), e), window.name) }, Ke = function (e) { var n = e.containerSelector ? c.queryEl(e.containerSelector) : null, r = "piano-id-".concat(e.isRegistration ? "" : "form-").concat(d.randomString()); e.singleContainer = n; var o, i, a, s = {iframeId: r, containerSelector: e.containerSelector, width: e.width, height: e.height}, u = P.buildIframeUrl(A.getPianoIdUrl(), e, s), l = !0; if (e.iframeParams = s, e.displayMode === Ho.Inline) { var p = f.initInlineContainer(e); if (!(o = p.container)) return; i = f.generateIframe(e, s, u), l = !!p.containerReady, e.observeContainer && (a = v.create(o, me)) } else if (e.displayMode === Ho.Modal) o = f.getModalContainer(e, (function () { return wn(t) })), i = f.generateIframe(e, s, u); else if (e.displayMode === Ho.Popup) if (d.isIE()) { o = f.generateIframeWrapper(), u = P.buildIframeUrl(A.getPianoIdUrl(), e, s, A.getPianoIdUrl() + "proxy.html"), s.iframeUrl = u, s.pos = f.getPopupPosition(s); var m = P.buildIframeUrl(A.getPianoIdUrl() + "proxy.html", e, s); e.displayMode = Ho.InlinePopup, i = f.generateIframe({}, s, m) } else { o = f.generatePopup(s, u); try { try { i = o.document } catch (e) { i = o } } catch (e) { i = window.document } } var g = {iframeId: s.iframeId, config: e, element: i, container: o, iframeParams: s, containerReady: l}; if (Ze(g), e.displayMode === Ho.Inline) { var h = document.createElement("div"); c.addClass("piano-id-container", h), c.append(h, i), c.append(o, h) } else e.displayMode === Ho.Modal ? c.append(o, i) : e.displayMode === Ho.InlinePopup && (c.append(o, i), c.append(document.body, o)); if (d.debug("creating iframe: ", e), ie.push(g), e.displayMode === Ho.Modal) { (t = g).observer = a; var y = kn(); xn(y, g) } return g }, Ze = function (e) { var n = {center: d.centerScreen(), originUrl: document.location.href}; m.init({postMessageUrl: A.getPianoIdUrl(), receive: ze(e), iframe: e, iframeParams: e.iframeParams}, n) }, en = function (e) { if (t) { var n = f.__private__.mobileModalFix; f.closeModal(t), c.remove(t.element), t.observer && t.observer.disconnect(), n.isIphoneCaretFixed && n.modalClosed(), t = void 0 } }, nn = function () { var e = {path: "/", secure: d.__protected__.isHttpsProtocol(), priority: "High"}; if (pn.cookieDomain) e.domain = pn.cookieDomain; else { var n = d.__protected__.getCookie(Q), t = d.extractCookieDomain(n); t && (e.domain = t) } return pn.cookiePath && (e.path = pn.cookiePath), e }, tn = function (e) { if (e && e.user && e.token) { an({keepRememberMe: !0, keepExtendExpiredAccess: !0}), e.cookie_domain && on(e.cookie_domain); var n = {}; if (("r" in e.user ? e.user.r : e.user.rememberMe || In()) && (n.expires = new Date(1e3 * e.user.exp), rn(X, 1, n)), e.extendExpiredAccessEnabled && (Pn("setExtendExpiredAccess", !0, "broadcast"), rn(Y, "true", n)), !T.isSssEnabled()) { var t = d.getPossibleCookieDomains(); for (var r in t) d.deleteCookie(G, t[r]); rn(G, e.token, n) } } }, rn = function (e, n, t) { d.__protected__.setCookieConsent("id", e, n, p(p({}, nn()), t)) }, on = function (e) { rn(Q, e, {domain: e, expires: 30}) }, an = function (e) { var n = void 0 === e ? {} : e, t = n.keepRememberMe, r = n.keepExtendExpiredAccess, o = nn(); d.getPossibleCookieDomains(o.domain).forEach((function (e) { if (e) { var n = p(p({}, o), {domain: e}); s.remove(G, n), r || s.remove(Y, n), t || Cn(n) } })) }, sn = function () { var e = null, n = O.loadToken(); if (n) try { if (e = l(n)) { e.firstName = e.given_name, e.lastName = e.family_name, e.valid = !0, e.uid = e.sub, e.confirmed = !e.email_confirmation_required && !e.pn_cr; var t = new Date; new Date(1e3 * e.exp) < t && (an(), e = null) } } catch (e) { } return e }, cn = function (e, n) { return g(void 0, void 0, void 0, (function () { return h(this, (function (t) { switch (t.label) { case 0: return tn(e), [4, yn(e.token, e.rememberMe)]; case 1: return t.sent(), !n && Me(null, {stage: e.stage, source: e.source}), [2] } })) })) }, un = function () { return Wo.isPianoIdLiteConfigured() ? !!pn.externalJWT : !!sn() }, ln = function (e, n, t) { return g(void 0, void 0, void 0, (function () { var r, o; return h(this, (function (i) { switch (i.label) { case 0: return r = l(e.access_token), [4, cn({ token: e.access_token, user: r, cookie_domain: e.site_cookie_domain, extendExpiredAccessEnabled: e.extend_expired_access_enabled }, n)]; case 1: return o = i.sent(), t && Ye(r), d.doneCall("refreshUserToken"), [2, o] } })) })) }, dn = function (e) { return g(void 0, void 0, void 0, (function () { var n; return h(this, (function (r) { return n = p(p({}, e), {isGmSsoEnabled: de}), x.prepareConfig(n, (function (e) { fe(e) })), t ? (d.log("Modal login window already shown"), [2]) : (O.getToken() ? n.confirmation !== Qo.None && !An() && n.displayMode !== Ho.Popup && (Ke(p(p({}, n), {confirmation: Qo.After})), On()) : Ke(n), [2]) })) })) }, fn = function () { if (null != pe && pe.phoneConfirmationRequired) return function (e) { t ? d.log("Modal window already shown") : ge().then((function () { var n = Object.assign({screen: "phone_is_not_confirmed"}, oe, e); x.prepareConfig(n, (function (e) { fe(e) })), Ke(n) })) }({displayMode: Ho.Modal}), void (pe.phoneConfirmationRequired = void 0); if (null != pe && pe.emailConfirmationRequired) return we({displayMode: Ho.Modal}), void (pe.emailConfirmationRequired = void 0); if ((null == pe ? void 0 : pe.offerId) && (null == pe ? void 0 : pe.termId)) { var e = {offerId: pe.offerId, termId: pe.termId, closeOnLogout: !0}; pe.formNameByTermId && (e.formNameByTermId = pe.formNameByTermId), pe.experienceId && (e.experienceId = pe.experienceId), pe.checkoutFlowId && (e.checkoutFlowId = pe.checkoutFlowId), pn.offer.show(e), pe.offerId = void 0, pe.termId = void 0, pe.formNameByTermId = void 0, pe.experienceId = void 0, pe.checkoutFlowId = void 0 } null != pe && pe.formName && (ke({formName: null == pe ? void 0 : pe.formName}), pe.formName = void 0), oe.confirmation === Qo.None || An() || he({displayMode: Ho.Modal}) }, mn = function (e, n) { return new Promise((function (e, n) { d.startCall("refreshUserToken"); var t = function (t) { t.isSuccessful ? (e(null), de && fn(), S.clearConfirmationParameters()) : n(t.failReason), d.doneCall("refreshUserToken") }, r = function (e) { return g(void 0, void 0, void 0, (function () { return h(this, (function (n) { switch (n.label) { case 0: return de = e.authorized_by_sso, !e.error && e.access_token ? Wo.isPianoIdLiteConfigured() ? [3, 2] : [4, ln(e, !1, !0)] : [3, 3]; case 1: n.sent(), n.label = 2; case 2: return t({isSuccessful: !0}), [3, 4]; case 3: e.site_cookie_domain && on(e.site_cookie_domain), an(), t({ isSuccessful: !1, failReason: "token_not_valid" }), n.label = 4; case 4: return [2] } })) })) }, o = O.getToken() || void 0, i = {client_id: oe.aid || pn.aid, site: document.location.origin || document.location.href}, a = vn(); a && (i.tcf = a), Nn(o ? { url: "".concat(A.getIdentifyUrl(), "/token/validation"), data: {client_id: oe.aid || pn.aid, site: document.location.origin || document.location.href}, headers: {Authorization: o}, success: function (e) { r(e), e.access_token && gn(a) }, error: function () { return t({isSuccessful: !1, failReason: "request_failed"}) } } : { url: "".concat(A.getIdentifyUrl(), "/token/verify"), data: i, success: function (e) { r(e), e.access_token && (gn(a), T.isSssEnabled() && T.setSssAccessToken(e.access_token)) }, error: function () { return t({isSuccessful: !1, failReason: "request_failed"}) }, dataType: "jsonp", xhrFields: {withCredentials: !0}, crossDomain: !0 }) })) }, vn = function () { var e, n = window; return function (e) { if (!e) return !1; var n = e; if (!n || !n.tcString || !n.date) return !1; var t = new Date, r = new Date(n.date), o = Math.abs(r.getTime() - t.getTime()); return Math.ceil(o / 864e5) <= 1 }(_.get(te)) ? null : (e = null, n.__tcfapi && n.__tcfapi("getTCData", 2, (function (n, t) { t && n.tcString && (e = n.tcString) }), [412]), e) }, gn = function (e) { if (e) { var n = {date: (new Date).toString(), tcString: e}; Mn(te, JSON.stringify(n)) } }, hn = function () { return new Promise((function (e) { var n = O.getToken(), t = {client_id: oe.aid || pn.aid}; n && Object.assign(t, {token: n}), Nn({ url: "".concat(A.getIdentifyUrl(), "/logout"), data: t, dataType: "jsonp", complete: e, xhrFields: {withCredentials: !0}, crossDomain: !0 }) })) }, yn = function (e, n) { return new Promise((function (t) { var r = !(n || In()); Nn({ url: "".concat(A.getIdentifyUrl(), "/vxauth/cookie"), data: {client_id: oe.aid || pn.aid, session_cookie: r}, headers: {Authorization: e || void 0}, complete: t }) })) }, wn = function e(n, t) { var r = void 0 === t ? {} : t, o = r.force, i = r.reason; !n || (o ? n.closed || (n.closed = !0, "inline" === n.config.displayMode ? c.empty(n.container) : "popup" === n.config.displayMode ? n.container.close() : "modal" === n.config.displayMode && (en(n), c.remove(n.container.parentElement)), de && On()) : (m.send("close", {reason: i}, n.iframeId), ie = ie.filter((function (e) { return e.iframeId !== n.iframeId })), setTimeout((function () { e(n, {force: !0}) }), 600))) }, _n = function () { ie.forEach((function (e) { wn(e) })), ie = [] }, bn = function (e, n) { var t = d.__protected__.getCookie(J), r = d.__protected__.getCookie(Q); t === e || !r || (rn(J, e, {expires: 30}), n || ie.forEach((function (n) { m.send("lang", {lang: e}, n.iframeId) })), Object.keys(ae).forEach((function (n) { var t = ae[n]; m.__protected__.isIframeManaged(n) && t ? t(e) : delete ae[n] })), je("langChange", e)) }, kn = function () { return pn.locale || d.__protected__.getCookie(J) || "" }, Cn = function (e) { e && s.remove(X, e) }, In = function () { return !!d.__protected__.getCookie(X) }, Sn = function (e) { return new Promise((function (n) { var t = Object.assign({}, oe, e); Nn({ url: "".concat(A.getIdentifyUrl(), "/userinfo"), data: {client_id: oe.aid || pn.aid, form_name: t.formName}, headers: {Authorization: O.getToken() || void 0}, success: n, complete: function () { return n(null) } }), setTimeout(n, ne) })) }, En = function (e) { var n = (null == e ? void 0 : e.displayMode) === Ho.Redirect || !(null != e && e.displayMode) && (null == oe ? void 0 : oe.displayMode) === Ho.Redirect, t = d.isSafariOrUiWebView() && !(null != e && e.displayMode) && !(null != oe && oe.displayMode); return n || t }, Tn = function (e) { var n, t, r; if (!O.getToken()) { e = p(p(p({}, oe), e), {redirectUri: null !== (n = e.redirectUri) && void 0 !== n ? n : window.location.href}); var o = function (e, n) { return JSON.parse(e)[n] }; x.prepareConfig(e, (function (e) { fe(e) })), t = e, r = window.open(function (e, n) { var t, r = d.getPageViewContext(), i = r.pageViewId, a = r.pageTitle, s = { client_id: n.aid, gm_sso_piano_id_domain: Xe(), site: document.location.href, display_mode: "redirect", gm_sso_redirect_container_width: null !== (t = n.width) && void 0 !== t ? t : Be(), page_view_id: null != i ? i : void 0, page_title: a, browser_id: Rn() }, u = kn(); u && (s.lang = u), n.screen && (s.screen = n.screen), n.resetPasswordToken && (s.reset = n.resetPasswordToken), n.redirectUri && (s.redirect_uri = n.redirectUri), n.offerId && (s.gm_sso_offer_id = n.offerId), n.termId && (s.gm_sso_term_id = n.termId), n.experienceId && (s.gm_sso_experience_id = n.experienceId), n.checkoutFlowId && (s.gm_sso_checkout_flow_id = n.checkoutFlowId), n.confirmation && (s.gm_sso_confirm = n.confirmation), n.transparentMode && (s.transparent_mode = !0); var l = n.termId && n.formNameByTermId; if (n.formName) s.form_name = n.formName; else if (l) { var p = o(n.formNameByTermId, n.termId); p && (s.form_name = p) } return n.formNameByTermId && (s.form_name_by_term_id = n.formNameByTermId), n.sss && (s.sss_mode = n.sss.sss_mode, s.sss_callback_url = n.sss.sss_callback_url, s.sss_origin_url = n.sss.sss_origin_url), [e += "gm-sso", c.param(s)].join("?") }(A.getPianoIdUrl(), t), window.name), r && On() } }, Pn = function (e, n, t) { le.push({type: t, name: e, data: n}) }, xn = function (e, n) { re.includes(e) ? f.turnOnRTL(n) : f.turnOffRTL(n) }, An = function () { return !!d.__protected__.getCookie("piano-id-initial-gm-sso-shown-" + (oe.aid || pn.aid)) }, On = function () { rn("piano-id-initial-gm-sso-shown-".concat(oe.aid || pn.aid), !0, {expires: 30}) }, Mn = function (e, n) { k.id ? k.id.localStorage.set(e, n) : _.set(e, n) }, Nn = function (e) { var n = new URL(e.url), t = d.getPageViewContext(), r = t.pageTitle, o = t.pageViewId, i = Rn(); i && n.searchParams.append("browser_id", i), o && n.searchParams.append("page_view_id", o); var a = d.getPageViewContext().contentType; a && n.searchParams.append("content_type", a), n.searchParams.append("page_title", r), e.url = n.toString(), u.request(e) }, Rn = function () { var e; return null !== (e = d.getBrowserId()) && void 0 !== e ? e : void 0 }; return { name: "pianoId", isv: !1, init: ge, prepare: function () { return ve() }, show: he, showForm: ke, checkAndShowEmailIsNotConfirmed: ye, showEmailConfirmationRequired: we, submitLoginForm: function () { m.send("submitLoginForm", null, null == t ? void 0 : t.iframeId) }, loginByToken: function (e) { return g(void 0, void 0, void 0, (function () { var n; return h(this, (function (t) { switch (t.label) { case 0: return n = l(e), [4, cn({user: n, token: e})]; case 1: return t.sent(), Ye(n), [2] } })) })) }, logout: qe, getToken: O.getToken, getUser: sn, loadExtendedUser: function (e) { var n = Object.assign({}, oe, e); Sn(n).then((function (e) { var t = Object.assign({}, e); e && Array.isArray(e.custom_field_values) && (e.custom_field_values = e.custom_field_values.map((function (e) { var n; try { n = JSON.parse(e.value) } catch (t) { n = e.value } return {field_name: e.field_name, value: n, created: e.created} }))), "function" == typeof n.extendedUserLoaded && n.extendedUserLoaded(t), De("extendedUserLoaded", t) })) }, getName: function () { return "piano_id" }, isConfigured: function () { return !0 === pn.usePianoIdUserProvider || "string" == typeof pn.usePianoIdUserProvider && "true" === pn.usePianoIdUserProvider }, onLoginSuccess: function (e) { return g(void 0, void 0, void 0, (function () { var n; return h(this, (function (t) { switch (t.label) { case 0: return a ? [2] : (a = !0, n = { source: e.source, token: e.user_token, user: e.params || e.user, cookie_domain: e.cookie_domain, stage: e.stage }, d.setAccessTokenListCookie({ value: e.token_list, cookie_domain: e.cookie_domain }, e.user_token), [4, cn(n)]); case 1: return t.sent(), Ye(n.user), a = !1, [2] } })) })) }, onProfileUpdate: function (e, n) { return g(void 0, void 0, void 0, (function () { var t; return h(this, (function (r) { switch (r.label) { case 0: return t = { token: e.token, user: e.user, cookie_domain: e.cookie_domain }, [4, cn(t, !0)]; case 1: return r.sent(), n(), Re("profileUpdate", t), [2] } })) })) }, onExtendedUserLoginRequired: function () { be() }, isUserValid: un, setCallbacks: Ve, getIframeUrl: A.getPianoIdUrl, updateLang: bn, onLangChange: function (e, n) { return ae[n] = e, function () { delete ae[n] } }, getLang: kn, isAot: function () { ie.forEach((function (e) { m.send("isAOT", {}, e.iframeId) })) }, registerCallback: function (e, n) { var t, r = null !== (t = ue[e]) && void 0 !== t ? t : []; ue[e] = b(b([], r, !0), [n], !1) }, setRequestTimeout: Fe, showMsqaPrompt: function () { return g(void 0, void 0, void 0, (function () { return h(this, (function (e) { switch (e.label) { case 0: return d.isEdge() ? [4, n] : [3, 2]; case 1: return e.sent(), [2, S.showPrompt()]; case 2: return [2] } })) })) }, __protected__: { offerMessageReceiver: function (e) { switch (e.params.event) { case"cfAppImpression": case"cfFormImpression": C.log.event({ eventType: wo.LOG_CUSTOM_FORM_IMPRESSION, payload: { trackingId: e.params.trackingId, formName: e.params.trackingId, source: ee } }); break; case"cfFormSubmission": C.log.event({ eventType: wo.LOG_CUSTOM_FORM_SUBMISSION, payload: { trackingId: e.params.trackingId, formName: e.params.trackingId, source: ee } }); break; case"updateToken": cn(e.params.params); break; case"changeScreen": Ne(e.params.params.screen, !0); break; case"loginFailed": case"registrationFailed": case"successDOI": case"registrationSuccess": case"customEvent": De(e.params.event, e.params.params); break; case Co.EMIT_GA_EVENT: C.ga.event({payload: e.params.params, eventType: Co.EMIT_GA_EVENT}); break; case"redirect": document.location.href = e.params.params.url; break; default: return void d.debug("Received invalid event type: " + e.params.event) } }, showEmailConfirmation: _e, checkAndShowEmailIsNotConfirmed: ye, closeModalContainer: en, executePostMessagesBatch: function () { for (; le.length;) { var e = le.pop(); "broadcast" === e.type ? m.broadcast(e.name, e.data) : m.send(e.name, e.data) } }, isGmSso: function () { return de }, isGmSsoRedirectEnabled: En, authByGmSsoRedirect: Tn, extendUserToken: function () { var e = O.loadToken(); if (e) { var n = (new Date).getTime(), t = d.__protected__.getCookie(Y), r = n - 1e3 * l(e).iat > 864e5; t && r && mn(!1, !0) } }, getStage: function () { return oe.stage }, isSssEnabled: T.isSssEnabled, getSssParams: T.getSssParams, checkVerificationCode: function () { var e = d.getQueryParamByName(H); if (e) { var n = d.getQueryParamByName("_ptid"), t = p({verification_code: e}, n ? {trackingId: n} : {}); un() ? _e(t) : he(t) } } }, __private__: { prepareConfig: function (e) { return x.prepareConfig(e, (function (e) { fe(e) })) }, setRequestTimeout: Fe, createIframe: Ke, addEventsListener: Ze, gmSsoActionAfterTokenVerify: fn } } }() }), pn.pianoId = pn.container.resolve("pianoId"); var Xo = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("pianoId"), t = pn.container.resolve("eventUtils").createEventManager(["userChanged", "onHide", "logout"]), r = e.getAidSpecifiedName("__utp"), o = function () { return pn.externalJWT || i() }, i = function () { return e.findCookieByName(r) || null }; return { name: "pianoIdLite", isv: !1, isConfigured: function () { return !0 === pn.usePianoIdLiteUserProvider || "string" == typeof pn.usePianoIdLiteUserProvider && "true" === pn.usePianoIdLiteUserProvider }, isUserValid: function () { return !!o() }, getToken: o, getName: function () { return "piano_id_lite" }, onLoginSuccess: function (n) { e.setAccessTokenListCookie({value: n.token_list, cookie_domain: n.cookie_domain}, n.user_token) }, registerCallback: function (e, n) { t.addEvent(e), t.registerCallback(e, n) }, loginByToken: function (e) { n.loginByToken(e) }, logout: function (n) { e.waitCall("refreshUserToken", (function () { "function" == typeof n && n() })), t.fireCallbacks("logout", null, void 0, !0) } } }(); pn.container.register("pianoIdLite", {useValue: Xo}), pn.pianoIdLite = pn.container.resolve("pianoIdLite"); pn.container.register("user", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t, r = e.resolve("api"), o = e.resolve("util"), i = e.resolve("janrain"), a = e.resolve("tinypassAccounts"), s = e.resolve("condeUserProvider"), c = e.resolve("gigya"), u = e.resolve("pianoId"), l = e.resolve("pianoIdLite"), d = e.resolve("eventUtils"), p = d.createEventManager([]); n = "logout", t = function () { o.__protected__.setVxUsersToDataLayer(null), Nr.set("userStatus", "anon") }, [i, a, s, c, u, l].forEach((function (e) { e.registerCallback(n, t) })); var f = { isv: !1, getName: function () { return "publisher_user_ref" }, getToken: function () { return pn.userRef ? pn.userRef.constructor === "".constructor ? pn.userRef : pn.userRef.constructor === {}.constructor ? "{jox}" + JSON.stringify(pn.userRef) : pn.userRef : null }, isUserValid: function () { return !!(void 0 !== pn.userRef && pn.userRef && pn.userRef.length > 0) }, onLoginSuccess: function (e) { o.setAccessTokenListCookie({value: e.token_list, cookie_domain: e.cookie_domain}, e.user_token) }, logout: function (e) { o.setAccessTokenListCookie(), e && e() } }, m = function () { return [i, a, s, c, u, l].find((function (e) { return e.isConfigured() && !e.isv })) || f }; return { name: "user", getProvider: m, providerInit: function (e) { (void 0 === e || !e) && (e = function () { }); var n = m(); "function" == typeof n.prepare ? "prepare" in n && n.prepare().then(e, e) : e() }, refreshAccessToken: function (e, n) { var t = !1, i = m().isUserValid(); (function () { var e = "__tac", n = o.__protected__.getCookie(e); if (void 0 === n) return 0; var t = encodeURIComponent(n), r = new TextEncoder; try { return r.encode(t + e).byteLength } catch (n) { return o.debug("couldn't encode __tac cookie", n), (t + e).length } })() >= 4096 ? (t = !0, console.warn("__tac cookie exceeds max size equals ".concat(4096, " bytes")), o.setAccessTokenListCookie(null, "", !0)) : t = function (e, n) { if (void 0 !== n && n) return !0; if (e) { var t = o.__protected__.getCookie("__tae"); if (void 0 === t || !t) return !0; var r = new Date(parseInt(t)); if ((new Date).getTime() - r.getTime() > 864e5) return !0 } return !1 }(i, e), (void 0 === n || !n) && (n = function () { }), t || !i ? o.waitCall("refreshUserToken", (function () { o.waitCall("offerCreate", (function () { o.waitCall("experienceExecute", (function () { if (!m().isUserValid()) return o.__protected__.getCookie("__tac") && o.setAccessTokenListCookie(null, "", !0), void (n && n("")); o.startCall("refreshAccessTokenList"); var e = {url: o.prepareUrlParameter(window.location.href)}; r.callApi("/access/token/list", e, (function (e) { o.doneCall("refreshAccessTokenList"), void 0 !== e.access_token_list ? (o.setAccessTokenListCookie(e.access_token_list), n && n(e.access_token_list.value)) : n && n(null) }), void 0, void 0) })) })) })) : n(null) }, showLogin: function (e) { var n = m().getName(); if ("tinypass_accounts" === n) a.login(e); else if ("piano_id" === n) { var t = e || {}; u.show(t) } else "publisher_user_ref" === n && p.fireCallbacks("loginRequired", {}, void 0, !0) }, isUserValid: function () { return m().isUserValid() }, logout: function (e, n) { m().logout(e, n) }, registerCallback: function (e, n) { p.addEvent(e), p.registerCallback(e, n) }, getUserInfoParams: function (e) { var n = e.userToken; if (!n) { var t = m().getToken(); n = t && t.length > 0 ? t : "" } return { user_token: n, user_lang: o.__protected__.getCookie("LANG") || "", is_preview: e.preview, is_non_logged_user: e.previewNonLoggedUser } } } }() }), pn.user = pn.container.resolve("user"); var Yo = function () { var e = pn.container.resolve("jqUtils"), n = pn.container.resolve("util"), t = "viewport-exit-activated", r = "viewport-exit-prepared", o = !1, i = !1, a = 0, s = 0, c = ["top", "right", "bottom", "left"], u = !0, l = !1, d = !1, p = [], f = { top: {visited: !1, value: 1}, right: {visited: !1, value: 2}, bottom: {visited: !1, value: 4}, left: {visited: !1, value: 8} }, m = 0, v = function () { if (!l) { l = !0, m = 0; var n = /(?:Firefox|Safari)[\/\s](\d+\.\d+)/.test(navigator.userAgent) ? document.body : document; e.on(n, "mouseleave", (function (e) { return g(e) })), e.on(document, "mousemove", (function (e) { return h(e) })) } }; var g = function (t) { var r; r = function (e) { return e.clientX === e.clientY && e.clientX < 0 && e.clientX >= -1 }(t) ? "" : function (n, t) { var r = e.winSize(), o = r.width, i = r.height, a = ""; return n >= o && (a = "right"), t >= i && (a = "bottom"), n <= 0 && (a = "left"), t <= 0 && (a = "top"), a }(t.clientX, t.clientY), r || (r = function () { if (!i) return ""; var n = e.winSize(), t = n.width, r = n.height; return c[function (e) { if (0 === e.length) return -1; for (var n = e[0], t = 0, r = 1; r < e.length; r++) e[r] < n && (t = r, n = e[r]); return t }([s, t - a, r - s, a])] }(), r || n.debug("viewportExit: the detect of the exit side failed")), r && function (e) { -1 !== c.indexOf(e) ? f[e].visited || (f[e].visited = !0, m += f[e].value) : n.debug("viewportExit: the detect of the exit side failed") }(r), y("all"), "top" === r && y("top") }, h = function (e) { i = !0, s = e.clientY, a = e.clientX }, y = function (e) { if (u) { for (var t, r = [], o = [], i = 0; i < p.length; i++) ((t = p[i]).detectExitMode === e || "back" === e && t.detectBackButtonForMobile) && t.consumeEventFn() ? r.push(t) : o.push(t); r.length && n.debug("viewportExit: listeners was run fire with type: ", e), p = o; for (i = 0; i < r.length; i++) (t = r[i]).callback() } }; return { name: "viewportExit", initialize: v, isInitialized: function () { return l }, addListener: function (e, n, i) { ("mobile" === n.clientDevice || "tablet" === n.clientDevice) && !!n.detectBackButtonForMobile && function () { if (!d) { d = !0, window.addEventListener("popstate", (function (e) { o && e.state && e.state.pianoViewportExitState === t && (o = !1, y("back")) })); var e = window.history.state || {}; e && e.pianoViewportExitState !== r && (e.pianoViewportExitState !== t && (e.pianoViewportExitState = t, window.history.replaceState(e, document.title)), window.history.pushState({pianoViewportExitState: r}, document.title)), o = !0 } }(), v(), "function" != typeof i && (i = function () { return !0 }), p.push({ callback: e, detectExitMode: n.detectExitMode, detectBackButtonForMobile: n.detectBackButtonForMobile, consumeEventFn: i }) }, resetSumOfCodesDirectionToDefault: function () { m = 0 }, getSumOfCodesDirection: function () { return m }, removeListeners: function () { p = [] }, enable: function () { u = !0 }, disable: function () { u = !1 } } }(); pn.container.register("viewportExit", {useValue: Yo}), pn.viewportExit = pn.container.resolve("viewportExit"); var $o, Ko, Zo = function () { var e = pn.container.resolve("postmessage"), n = pn.container.resolve("containerUtils"), t = pn.container.resolve("user"), r = pn.container.resolve("api"), o = pn.container.resolve("util"); function i(e) { return s(e, "/checkout/template/show") } function a(e) { return e.initContextLoadPromise = function (e, n) { e.contextLoadingPromise = c(e, n) }, s(e, "/checkout/template/cacheableShow") } var s = function (e, n) { var t = pn.getEndpointRoot(!0) + n; return e.iframeUrl = t, e.postMessageUrl = t, e.widget = "template", pn.offer.createOfferIframe(e) }, c = function (e, n) { var i = t.getUserInfoParams(e); return i.tracking_id = e.trackingId, i.templateId = e.templateId, i.templateVariantId = e.templateVariantId, i.aid = pn.aid, i.preload = e.isPreload, i.cookie_consents = JSON.stringify(o.getCookieConsents()), i.previous_user_segments = o.getUserSegmentsString(), e.affiliateState && (i.affiliateState = JSON.stringify(e.affiliateState)), Object.keys(n).forEach((function (e) { i[e] = n[e] })), new Promise((function (e, n) { r.callApi("/anon/template/loadTemplateContext", i, (function (t) { var r = t.code, o = t.templateContext, i = t.message; 0 === r ? e(o) : n(i) }), void 0, void 0) })) }, u = function (e, n) { var t = {}; return ["aid", "templateId", "templateVariantId", "previewTemplateVersion", "preload", "preview", "previewUncached", "deploymentItemId", "gaClientId", "zuoraSelectedRatePlanIds", "newscycleSelectedIds", "addNewsletterAssets", "offerId", "experienceId", "iframeId", "displayMode", "debug", "pianoIdUrl", "widget", "url"].forEach((function (n) { e[n] && (t[n] = e[n]) })), n.param(t) }; function l(e) { pn.getCacheableShowTemplate() ? (function (e) { e.deferredContextLoading = !0, e.buildQueryStringFn = u }(e), e.createIframeFn = a) : e.createIframeFn = i } return { name: "template", show: function (e) { return e.offerId = n.fakeOfferId, e.trackStatsOnShow = !0, l(e), pn.offer.show(e) }, deferredShow: function (e) { return e.offerId = n.fakeOfferId, l(e), pn.offer.deferredShow(e) }, close: function () { n.closeModalContainer() }, closeInline: function (e) { n.__protected__.closeInlineContainers(e) }, createTemplateIframe: i, showBackdrop: function () { n.showBackdrop() }, hideBackdrop: function () { n.hideBackdrop() }, centerBackdrop: function (e) { n.centerBackdrop(e) }, registerCallback: function (e, n) { }, refreshUser: function (n) { t.refreshAccessToken(!0, (function () { e.send("externalLoginSuccess", {user_token: t.getProvider().getToken()}, n) })) } } }(); pn.container.register("template", {useValue: Zo}), pn.template = pn.container.resolve("template"), function (e) { e.COMMON = "linkedTermData", e.SIGNED = "linkTermSignedData" }($o || ($o = {})), function (e) { e.LINKED = "linked", e.LINK = "link" }(Ko || (Ko = {})); pn.container.register("offer", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t, r, o, i, a, s, c = e.resolve("jqUtils"), u = e.resolve("util"), l = e.resolve("postmessage"), d = e.resolve("user"), m = e.resolve("containerUtils"), v = e.resolve("eventUtils"), g = e.resolve("viewportExit"), h = e.resolve("gaService"), y = e.resolve("sha1"), w = e.resolve("logging"), _ = e.resolve("template"), k = e.resolve("analytics"), C = e.resolve("gaCollectingService"), I = e.resolve("ajax"), S = e.resolve("acp"), E = [], T = {}, P = 0, x = "close", A = "OFFER", O = !1, M = !1, N = !1, R = {}, L = new Map, U = {}, D = ["he_IL", "ar_EG"], j = "", V = !1, F = !1, B = "pn_rurl_3ds", q = Symbol(), z = Symbol(), H = v.createEventManager(b(["complete", "cancel", "close", "error", "loginRequired", "loginSuccess", "loaded", "customEvent", "startCheckout", "resize", "onMeterExpired", "onMeterActive", "onAccessGranted", "onShowOffer", "pianoIdEvent", "parentSize", "redeemCredit", "onStartCreditRedemption", "showAuthForm", "callLinkTermSelectedCallback", "callLinkedTermSelectedCallback", "callLinkTermSelectedCallback", "visibleImpression"], S.getComposerAcpEvents(), !0)); m.setIframesPopstateHandlers(); var W = function () { return pn.offerBaseUrl ? pn.offerBaseUrl : pn.getEndpointRoot() + "/checkout/offer/show" }, G = function (e) { if (!e) return null; var n = e.linkedTermData, t = e.linkTermSignedData, r = e.linkedTermSignedData, o = f(e, ["linkedTermData", "linkTermSignedData", "linkedTermSignedData"]), i = r || t; switch (!0) { case Boolean(n): return p({linkedTermData: n}, o); case Boolean(i): return p({linkTermSignedData: i}, o); default: return o } }, J = function (e, n) { if (n === $o.COMMON) return e.externalTermId || ""; if (n === $o.SIGNED) try { return JSON.parse(e.payload).externalTermId || "" } catch (e) { return console.warn(e), "" } return "" }, Q = function (e, n) { void 0 === e && (e = {}), void 0 === n && (n = {}); var t = pn.getApiEndpoint() + "/linkedTerm/session/create", r = p(p({ tracking_id: j || "", tbc: u.getTbcCookie() || "", pcid: u.getPcidCookie() || "", consents: JSON.stringify(u.getCookieConsents()), previous_user_segments: u.getUserSegmentsString() }, e), n); return new Promise((function (e, n) { try { I.request({ url: t, type: "POST", dataType: "json", data: JSON.stringify(r), contentType: "application/json", success: e, error: n }) } catch (e) { n(e) } })) }, X = function (e, n) { var t = "".concat(pn.getApiEndpoint(), "/linkedTerm/subscription/hasActive"), r = {aid: e, external_term_id: n, user_token: d.getProvider().getToken()}; return new Promise((function (e, n) { try { I.request({ url: t, type: "POST", dataType: "json", data: r, contentType: "application/x-www-form-urlencoded", success: e, error: n }) } catch (e) { n(e) } })) }, Y = function (e, n) { var t = function (e) { switch (e) { case"purge": return {eventCategory: "checkoutClose", eventLabel: "Checkout close"}; case"customEvent": return {eventCategory: "checkoutCustomEvent", eventLabel: "Checkout custom event"}; case"checkoutPaymentError": case"error": return {eventCategory: "checkoutError", eventLabel: "Checkout error"}; case"checkoutStateChange": return {eventCategory: "checkoutStateChange", eventLabel: "Checkout state change"}; case"showTemplate": return {eventCategory: "showTemplate", eventLabel: "Show template"}; case"startCheckout": return {eventCategory: "startCheckout", eventLabel: "Start checkout"}; case"submitPayment": return {eventCategory: "submitPayment", eventLabel: "Submit payment"}; case"logout": return {eventCategory: "logout", eventLabel: "Logout event"}; case"loginRequired": return {eventCategory: "loginRequired", eventLabel: "Login required"}; default: return null } }(e); t && r !== t.eventCategory && (k.ga.event({ eventType: Co.EMIT_GA_EVENT, payload: p(p({iframeId: n.sender}, t), n.params) }), r = t.eventCategory) }; function $(e, n) { var r, a, s = m.getIframe(e.sender), v = !0; switch (s && s.config && (v = !s.config.parent), e.event) { case"initContext": if (e.params && e.params.resultCallbackId) { var h = { resultCallbackId: e.params.resultCallbackId, affiliateState: s.config.affiliateState }; l.send("resultCallback", h, e.sender) } break; case"storeCustomVariables": tp.saveCustomVariablesToLocalStorage(300); break; case"fullRedirectThreeDS": window.location.href = e.params.bankSecureUrl; break; case"resize": if (e.params.iframeId === e.sender) { var y = void 0 === e.params.width ? p(p({}, e.params), {width: c.getWidth(s.container)}) : e.params; m.resizeIframe(s, y), "modal" === s.config.displayMode && ("boilerplate" === e.params.closeButtonType && m.hideCloseButton(s.container), m.centerIt(s.container)), l.send("afterResize", {}, s.iframeId) } H.fireCallbacks(e.event, e.params, e.sender, v), (null === (r = null == s ? void 0 : s.iframeParams) || void 0 === r ? void 0 : r.experienceId) && (null === (a = null == s ? void 0 : s.iframeParams) || void 0 === a ? void 0 : a.experienceActionId) && se(s.iframeId); break; case"startCheckout": if (e.params.width = null, "inline" === e.displayMode) { e.params.closeOnLogout = !0; var _ = Ne(e.params, s.statParams); _.browserId = s.browserId, _.isOpenedFromInlineCheckout = !0, He(_, e.sender) } e.params.iframeId === e.sender && (H.fireCallbacks(e.event, e.params, e.sender, v), Y(e.event, e)); break; case"showAuthForm": var b = e.params, C = void 0 === b ? {} : b; pn.pianoId.show(p({ closedCallback: function () { l.send("authFormClosed", {}, e.sender) } }, C)); break; case"callLinkTermSelectedCallback": case"callLinkedTermSelectedCallback": if (!e.params || "function" != typeof tp.linkedTermSelected) return; var I = e.params, E = I.linkedTermData, T = I.linkTermData, P = I.offerStatData, A = I.pageViewData, M = f(I, ["linkedTermData", "linkTermData", "offerStatData", "pageViewData"]), N = G(E || T) || M, L = N.linkedTermData ? $o.COMMON : $o.SIGNED, U = J(N[L], L); Promise.all([Q(P, A), X(tp.aid, U)]).then((function (e) { var n, t = e[0].data, r = e[1].data; m.hasModalIframe() && m.closeModalContainer(), tp.linkedTermSelected(t || "", p(p({}, N), ((n = {})[L] = p(p({}, N[L]), {userHasActiveSubscriptionToTerm: r}), n))) })).catch(u.debug); break; case"loaded": if (e.params.iframeId === e.sender) { if (l.send("setupCustomVariables", R[e.params.iframeId], e.params.iframeId), l.send("setupEVTFields", s.config.externalVerificationFields, e.params.iframeId), Ae(s), Oe(s), s.config.deferredContextLoading && Z(s, e), s.waitFinishProcesses) return void m.__protected__.closeAndRemoveIframe(s); "pianoId" === d.getProvider().name && pn.pianoId.__protected__.executePostMessagesBatch(), "modal" === s.config.displayMode && (m.resizeIframe(s, e.params), s.config.isPreload || m.checkBackdropAndContainer(s, !0)), "popup" === s.config.displayMode && m.resizeIframe(s, e.params), !s.config.isPreload && !s.config.trackStatsOnShow && Te(s), Pe(s), xe(s), Me(s), H.fireCallbacks(e.event, e.params, e.sender, v), "inline" === s.config.displayMode && (s.containerReady ? m.resizeIframe(s, e.params) : m.operationWithContainer(s.iframeParams.containerSelector, (function (n) { var t = c.queryEl("#temp-inline-" + s.iframeId); t && (n.innerHTML = t.innerHTML, c.remove(t)), s.element = c.queryEl("iframe", n), s.containerReady = !0, m.resizeIframe(s, e.params) }))); var j = s.iframeParams, F = j.offerId, B = j.templateId, q = j.initTime, z = j.logType; w.setTime(z, Math.floor(performance.now() - q), { offer_id: "fakeOfferId" === F ? void 0 : F, template_id: B }), re(s.config), u.doneCall("offerCreate") } break; case"downForMaintenance": m.resizeIframe(s, { width: 300, height: 200 }), "modal" === s.config.displayMode && (s.config.isPreload || m.checkBackdropAndContainer(s)); break; case"removeQueryParamByName": e && e.params && Array.isArray(e.params.paramsToRemove) && e.params.paramsToRemove.forEach((function (e) { u.removeQueryParamByName(e) })); break; case"purge": n || (e && e.params && e.params.alreadyPurchased && (x = "alreadyHasAccess"), e && e.params && e.params.completePayment && (x = "checkoutCompleted"), pe(null == s ? void 0 : s.config.displayMode), m.purgeIframe(e.sender, s.config.parent), S.handleAcpEvent(H.fireCallbacks, e, s.config, v), re(s.config), Y(e.event, e)); break; case"close": n || (e && e.params && e.params.alreadyPurchased && (x = "alreadyHasAccess"), e && e.params && e.params.completePayment && (x = "checkoutCompleted"), u.hasQueryParamByName("voucher_code") && (x = "voucherRedemptionCompleted"), m.closeContainer(e.sender, s.config.parent), re(s.config)); break; case"closeAndRefresh": var W = e.params; W ? window.location.assign(W) : window.location.reload(); break; case"selectTerm": x = e && e.params && e.params.alreadyPurchased ? "alreadyHasAccess" : "close"; break; case"submitPayment": H.fireCallbacks(e.event, Ne(e.params, {offerId: s.iframeParams.offerId}), e.sender, v), Y(e.event, e); break; case"complete": if (void 0 !== e.params.token_list) { var $ = d.getProvider().getToken(); u.setAccessTokenListCookie({ value: e.params.token_list, cookie_domain: e.params.cookie_domain }, $) } var te = Ne(e.params, {offerId: s.iframeParams.offerId}); H.fireCallbacks(e.event, te, e.sender, v), x = "checkoutCompleted"; break; case"checkoutSelectTerm": H.fireCallbacks(e.event, Ne(e.params, {offerId: s.iframeParams.offerId}), e.sender, v); break; case"checkoutStateChange": i = o, o = e.params.stateName, H.fireCallbacks(e.event, e.params, e.sender, v), Y(e.event, e); break; case"checkoutPaymentError": case"alreadyPurchased": case"startThreeDBankSecure": case"cancel": case"error": case"completeUpgradePurchase": H.fireCallbacks(e.event, e.params, e.sender, v), Y(e.event, e); break; case"customEvent": S.handleAcpEvent(H.fireCallbacks, e, s.config, v), Y(e.event, e); break; case"loginRequired": O = !0, H.fireCallbacks(e.event, Je(s, e.params, e.sender), e.sender, v), Y(e.event, e); break; case"logout": ee(e.event, e.params, e.sender, s.config.parent, v), Y(e.event, e); break; case"loginSuccess": ne(e.event, e.params, e.sender, v); break; case"inputFocus": var oe = c.queryEl(".tp-modal"); oe && (oe.style.zIndex = pn.zIndexes.modal + 1 + "", oe.style.zIndex = pn.zIndexes.modal + ""); break; case"inputBlur": var ie = c.queryEl(".tp-modal"); ie && (ie.style.zIndex = pn.zIndexes.modal + 1 + "", ie.style.zIndex = pn.zIndexes.modal + ""); break; case"getLocation": e.params && e.params.resultCallbackId && (e.params.result = window.location.href, l.send("resultCallback", e.params, e.sender)); break; case"setLocationHash": e.params && e.params.hash && (window.location.hash = e.params.hash); break; case"langChangedWithinOffer": pn.pianoId.isConfigured() && pn.pianoId.updateLang(e.params.lang), D.indexOf(e.params.lang) >= 0 ? m.turnOnRTL(s) : m.turnOffRTL(s); break; case"loginStart": g.disable(); break; case"loginEnd": g.enable(); break; case"pianoIdEvent": e.params.iframeId === e.sender && ("closed" === e.params.event && m.closeContainer(e.sender), pn.pianoId.__protected__.offerMessageReceiver(e)), K(e.params, e.sender); break; case"swgCheckoutStart": break; case"sharedAccountsSuccessfullyAdded": l.broadcast("refreshMyAccount", {userToken: d.getProvider().getToken()}); break; case"newsletterSignupImpression": case"newsletterSignupSubmission": pn.pianoEsp.__protected__.offerMessageReceiver(e), H.fireCallbacks(e.event, e.params, e.sender, v); break; case"parentSize": var ae = c.winSize(), ce = {width: ae.width, height: ae.height}; l.send("parentSize", ce, e.sender); break; case"gigyaPasswordlessLogin": e.params.iframeId === e.sender && (t = e.params.iframeId, pn.gigya.loginByPasswordless(e.params)); break; case Co.EMIT_GA_EVENT: return void (!n && k.ga.event({ eventType: Co.EMIT_GA_EVENT, payload: p({iframeId: e.sender}, e.params) })); case Co.EMIT_METRICS_EVENT: !n && k.ga.event({eventType: Co.EMIT_METRICS_EVENT, payload: e.params}); break; case"bannerInit": s.config.singleContainer.classList.add("tp-banner"); break; case"bannerDestroy": s.config.singleContainer.classList.remove("tp-banner"); break; case"redeemCredit": var ue = H.fireCallbacks("onStartCreditRedemption", e.params, e.sender, v); ue && ue.then && ue.then((function (n) { l.send("successfullyCreditRedeem", n, e.sender) }), (function (n) { l.send("creditRedeemFailed", n, e.sender) })); break; case"scrollModalTo": if ("modal" === e.displayMode) { var le = c.queryEl(".tp-modal"); if (le) { var de = e.params.x || 0, fe = e.params.y || 0; le.scrollTo(de, fe) } } break; case"frequencyEvent": var me = { event_name: "piano_frequency_event", event_type: "closeClick" === e.params.eventType ? "close_click" : "visible_impression", experience_Id: e.params.experienceId, experience_action_Id: e.params.experienceActionId }; ("closeClick" !== e.params.eventType && !V || "closeClick" === e.params.eventType) && (H.fireCallbacks("piano_frequency_event", me, e.sender, v), V = "closeClick" !== e.params.eventType); default: return void u.debug("Received invalid event type: " + e.event) } } var K = function (e, n) { "successDOI" === e.event && (e.iframeId !== n && m.closeContainer(e.iframeId), l.send("afterSuccessDOI", e.params, n)) }, Z = function (e, n) { e.config.contextLoadingPromise.then((function (t) { var r = {iframeParams: e.iframeParams, userContext: t}; r.iframeParams.url = u.prepareUrlParameter(window.location.href), l.send("userDataContextLoaded", r, n.params.iframeId) })) }, ee = function (e, n, t, r, o) { d.logout((function () { var e = {}; e.userProvider = d.getProvider().getName(), e.userToken = d.getProvider().getToken() && d.getProvider().getToken().length > 0 ? d.getProvider().getToken() : "", e.noNeedStartCheckout = !0, Ge(e) }), A), n.closeOnLogout && m.closeModalContainer(t, r) }, ne = function (e, n, t, r) { if (n.source = A, d.getProvider().onLoginSuccess(n), H.fireCallbacks("loginSuccess", n, t, r), !N) { var o = {userToken: n.user_token, user: n.user, reloadAfterLogin: !0}; Ge(o, t) } }, te = function (e) { var n = e.displayMode || "modal"; return [e.offerId, n, e.containerSelector].join("|") }, re = function (e) { var n = te(e); delete T[n] }, oe = function (e) { if (x = "close", Ve(e), void 0 === e.displayMode) e.displayMode = "modal"; else if ("modal" !== e.displayMode && "inline" !== e.displayMode && "popup" !== e.displayMode) return u.log("Invalid offer displayMode; must be one of: modal, inline, popup"), void re(e); if ("modal" === e.displayMode && !e.isPreload && m.hasModalIframe()) return u.log("Modal offer is already shown; must be one modal offer per time"), void re(e); if ("modal" !== e.displayMode) { var n, t = c.qa(e.containerSelector); if (!e.isPreload) if (t.forEach((function (t) { var r = Ne({}, e); r.singleContainer = t, n = ae(r) })), n) return n; var r = t[t.length - 1]; r && (e.singleContainer = r) } return ae(e) }; function ie(e, n) { var t = u.getPageViewContext(), r = t.pageTitle, o = t.url, i = t.referrerUrl, a = t.contentType; n.pageTitle = r, n.url = o, n.referrerUrl = i, n.contentType = a } function ae(e, r) { var o = function (e) { var n = {}; e.termIds && (e.termIds instanceof Array || (e.termIds = [e.termIds])); var t = e.additionalParamNames ? e.additionalParamNames : []; ["displayMode", "containerSelector", "templateId", "templateVariantId", "offerId", "termId", "termIds", "rid", "aid", "isCheckout", "isOpenedFromInlineCheckout", "pw_id", "paywallId", "width", "preview", "previewUncached", "previewTemplateType", "previewTemplateVersion", "tokenType", "janrainCaptureToken", "closeOnLogout", "voucherCode", "isRedemption", "allowReturnToStartState", "startFromInlineCheckout", "formNameByTermId", "hideCompletedFields", "startFromInlineCheckout", "reloadAfterLogin", "preventReloadAfterLogin", "isAuth", "authStartScreen", "showCloseButton", "closeButtonType", "checkoutFlowId", "offerState", "oid", "promoCode", "promoCodeId", "promoCodeTermId", "rurl_3ds", "thirdPartyParams", "termId3ds", "providerId", "deploymentItemId", "sharedAccountCode", "targetedTermId", "widget", "linkTermCheckoutState", "linkedTermCheckoutState", "purchasedLinkTermData", "purchasedLinkedTermData", "subscriptionId", "experienceActionId", "continuation"].concat(["trackingId", "experienceId", "experienceActionId", "activeMeters", "directCheckout"], t).forEach((function (t) { e[t] && (n[t] = e[t]), "showCloseButton" === t && (void 0 === e[t] ? n[t] = !0 : n[t] = e[t]) })); var r = decodeURIComponent(u.getQueryParamByName("_ptid")); return r && (n.trackingId = r, ke(r)), e.preview && (n.activeMeters = JSON.stringify([{ meterName: "preview-meter", views: 10, viewsLeft: 5, maxViews: 20, totalViews: 20 }])), n }(e), i = performance.now(); o.widget || (o.widget = "offer"); var a = u.getTbcCookie(); a && a.length > 0 && (o.tbc = a), e.deferredContextLoading ? (o.iframeId = Ce(e), o.url = window.location.origin) : (o.iframeId = "offer-" + P++ + "-" + u.randomString(), o.url = u.prepareUrlParameter(window.location.href)); var s = c.winSize(); o.parentDualScreenLeft = void 0 !== window.screenLeft ? window.screenLeft : screen.left, o.parentDualScreenTop = void 0 !== window.screenTop ? window.screenTop : screen.top, o.parentWidth = s.width ? s.width : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width, o.parentHeight = s.height ? s.height : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height, o.parentOuterHeight = window.outerHeight, e.previewNonLoggedUser && (o.previewNonLoggedUser = e.previewNonLoggedUser), e.isPreload && (o.preload = 1), pn.locale && (o.lang = pn.locale), h.getClientId() && (o.gaClientId = h.getClientId()), h.getGAAccount() && (o.gaAccount = h.getGAAccount()), function (e) { ["debug", "aid", "gaClientId", "tags", "contentSection", "contentAuthor", "debug", "zone"].forEach((function (n) { pn[n] && (e[n] = pn[n]) })), pn.customVariables && (R[e.iframeId] = JSON.stringify(pn.customVariables), e.customVariables = R[e.iframeId]); var n = pn.contentCreated; if (n && (e.contentCreated = n), pn && pn.main && (e.visitId = pn.main.fetchVisitId()), pn && pn.util) { var t = pn.util.getPageViewContext(), r = t.pageTitle, o = t.pageViewId; e.browserId = pn.util.getBrowserId(), e.pageViewId = o, e.pageTitle = r } }(o); var p = H.hasCallback("loginRequired"); if (!pn.janrain.isConfigured() || void 0 !== e.loginRequired && e.loginRequired) if (!pn.gigya.isConfigured() || void 0 !== e.loginRequired && e.loginRequired) if (pn.pianoId.isConfigured()) { (void 0 === e.loginRequired || !e.loginRequired) && (e.loginRequired = function (e) { if (!e.preventExternalLogin) return n = e.termId, t = o.iframeId, pn.pianoId.show({screen: e.startScreen}), !1 }), Ue(), o.pianoIdUrl = pn.pianoId.getIframeUrl(), o.pianoIdStage = pn.pianoId.__protected__.getStage(), e.isGmSso && (o.isGmSso = e.isGmSso); var f = pn.pianoId.getLang(); f && (o.lang = f), pn.pianoId.onLangChange((function (e) { l.send("langChanged", {lang: e}, o.iframeId) }), o.iframeId) } else pn.pianoIdLite.isConfigured() && (o.pianoIdUrl = pn.pianoId.getIframeUrl()); else { v = []; pn.gigya.registerCallback("onHide", (function (e) { e && e.afterLogin ? m.activateContainers(v) : pn.offer.close(), l.send("gigyaHide", e, t) })), Re(), e.loginRequired = function (e) { return M = e.allowReturnToStartState, O = !1, v = m.hideModalContainer(), n = e.termId, t = o.iframeId, u.waitCall("refreshUserToken", (function () { pn.gigya.login() })), !1 } } else { var v = []; pn.janrain.addEventHandler("onModalClose", (function () { m.activateContainers(v) })), Le(), e.loginRequired = function (e) { return v = m.hideModalContainer(), M = e.allowReturnToStartState, O = !1, n = e.termId, t = o.iframeId, u.waitCall("refreshUserToken", (function () { pn.janrain.login(void 0, e) })), !1 } } o.userProvider = d.getProvider().getName(), e.userToken ? o.userToken = e.userToken : o.userToken = d.getProvider().getToken() && d.getProvider().getToken().length > 0 ? d.getProvider().getToken() : "", u.getCampaigns(o), o.customCookies = JSON.stringify(u.getCustomCookies()), H.registerCallback(e, o.iframeId), o.hasLoginRequiredCallback = H.hasIframeCallback("loginRequired", o.iframeId) || p, o.initMode = "context", Ie(o); var g = e.iframeUrl ? e.iframeUrl : o.isCheckout ? pn.getEndpointRoot(!0) + "/checkout/offer/show" : W(), y = e.postMessageUrl ? e.postMessageUrl : W(); if (e.deferredContextLoading) { var w = Se(o); ie(0, w), e.initContextLoadPromise(e, w) } var _ = Ee(o, e); if (pn.pianoId.__protected__.isSssEnabled()) { var b = pn.pianoId.__protected__.getSssParams(); o.sss_mode = b.sss_mode, o.sss_callback_url = b.sss_callback_url, o.sss_origin_url = b.sss_origin_url } e.splitTestIds && (o.abTestIds = e.splitTestIds), e.socialName && (o.socialName = e.socialName), e.responseType && (o.responseType = e.responseType), o.requestUserAuthForLinkedTerm = tp.requestUserAuthForLinkedTerm, o.initTime = i; var k = g.indexOf("/offer/") >= 0 ? "offerShow" : "templateShow"; o.logType = k; var C = m.createContainer({ url: g, config: e, parent: e.parent, postMessageUrl: y, receive: $, iframeParams: o, singleContainer: e.singleContainer, close: function () { H.fireCallbacks("close", {state: x}, o.iframeId, !0) } }); return U = g.indexOf("/template/") >= 0 && o.offerId === m.fakeOfferId ? o : U, be(o, "offerId", "width", "termId", "displayMode", "experienceId", "iframeId", "templateId", "templateVariantId"), C.statParams = _, C.browserId = e.browserId, E.push(C), C } var se = function (e) { if (!V) { document.getElementById(e) && !F && (F = !0, me(e)); var n = E.find((function (n) { return n.iframeId === e })); "modal" === (null == n ? void 0 : n.config.displayMode) ? le(e) : ce(e) } }, ce = function (e) { s = e, document.addEventListener("scroll", ue) }, ue = function e() { fe(s) ? document.removeEventListener("scroll", e) : me(s) }, le = function (e) { var n; s = e, null === (n = document.getElementsByClassName("tp-modal")[0]) || void 0 === n || n.addEventListener("scroll", de) }, de = function e() { var n; fe(s) ? null === (n = document.getElementsByClassName("tp-modal")[0]) || void 0 === n || n.removeEventListener("scroll", e) : me(s) }, pe = function (e) { var n; "modal" === e ? null === (n = document.getElementsByClassName("tp-modal")[0]) || void 0 === n || n.removeEventListener("scroll", de) : document.removeEventListener("scroll", ue) }, fe = function (e) { var n = E.find((function (n) { return n.iframeId === e })); return V || "offer" !== o && n.iframeParams.offerId !== m.fakeOfferId || a && "offer" === i }, me = function (e) { var n = ve(e); he(n) && ge(n, e) }, ve = function (e) { var n, t, r, o = null === (n = document.getElementById(e)) || void 0 === n ? void 0 : n.getBoundingClientRect(); return { top: (null == o ? void 0 : o.top) || 0, bottom: (null == o ? void 0 : o.bottom) || 0, left: (null == o ? void 0 : o.left) || 0, right: (null == o ? void 0 : o.right) || 0, iframeHeight: (null == o ? void 0 : o.height) || 0, iframeWidth: (null == o ? void 0 : o.width) || 0, viewportHeight: (null === (t = window.visualViewport) || void 0 === t ? void 0 : t.height) || 0, viewportWidth: (null === (r = window.visualViewport) || void 0 === r ? void 0 : r.width) || 0 } }, ge = function (e, n) { setTimeout((function () { he(e) && _e(n) }), 1e3) }, he = function (e) { return e.iframeHeight > e.viewportHeight ? ye(e) : we(e) }, ye = function (e) { return e.viewportWidth > e.iframeWidth ? e.top < 0 && Math.abs(e.top) >= e.iframeHeight / 2 - e.viewportHeight && Math.abs(e.top) <= e.iframeHeight / 2 && (e.left >= 0 && e.left <= e.viewportWidth - e.iframeWidth / 2 || e.left < 0 && e.right >= e.iframeWidth / 2) : e.top < 0 && Math.abs(e.top) >= e.iframeHeight / 2 - e.viewportHeight && Math.abs(e.top) <= e.iframeHeight / 2 && e.left <= 0 && Math.abs(e.left) >= e.iframeWidth / 2 - e.viewportWidth && Math.abs(e.left) <= e.iframeWidth / 2 }, we = function (e) { return e.viewportWidth > e.iframeWidth ? (e.top >= 0 && e.top <= e.viewportHeight - e.iframeHeight / 2 || e.top < 0 && e.bottom >= e.iframeHeight / 2) && (e.left >= 0 && e.left <= e.viewportWidth - e.iframeWidth / 2 || e.left < 0 && e.right >= e.iframeWidth / 2) : (e.top >= 0 && e.top <= e.viewportHeight - e.iframeHeight / 2 || e.top < 0 && e.bottom >= e.iframeHeight / 2) && e.left <= 0 && Math.abs(e.left) >= e.iframeWidth / 2 - e.viewportWidth && Math.abs(e.left) <= e.iframeWidth / 2 }, _e = function (e) { var n, t, r = E.find((function (n) { return n.iframeId === e })), o = { event_name: "piano_frequency_event", event_type: "visible_impression", experience_Id: null === (n = null == r ? void 0 : r.iframeParams) || void 0 === n ? void 0 : n.experienceId, experience_action_Id: null === (t = null == r ? void 0 : r.iframeParams) || void 0 === t ? void 0 : t.experienceActionId }; r && !V && document.getElementById(e) && (H.fireCallbacks("piano_frequency_event", o, e, !0), V = !0) }, be = function (e) { for (var n = [], t = 1; t < arguments.length; t++) n[t - 1] = arguments[t]; var r = n.reduce((function (n, t) { var r; return p(p({}, n), ((r = {})[t] = e[t], r)) }), {}); C.setParamMap(r) }, ke = function (e) { C.setParam("trackingId", e) }, Ce = function (e) { var n = 0, t = "offer_" + y.hash(e.iframeUrl + "?" + e.buildQueryStringFn(e, c), 20); return L.has(t) && (n = L.get(t) + 1), L.set(t, n), t + "-" + n }, Ie = function (e) { var n = u.getQueryParamByName("termId"), t = u.getQueryParamByName("paySource"); n && (e.termId = n), t && (e.paySource = t) }, Se = function (e) { var n = {}; return ["tbc", "trackingId", "pageViewId", "visitId", "tags", "contentCreated", "contentSection", "contentAuthor", "pageTitle", "referrerUrl"].forEach((function (t) { e[t] && (n[t] = e[t]) })), Object.keys(e).forEach((function (t) { 0 === t.indexOf("tpcc_") && (n[t] = e[t]) })), n }, Ee = function (e, n) { var t = {}; return n.trackStatsOnShow || n.deferredContextLoading || (t = Se(e), Object.keys(t).forEach((function (n) { delete e[n] }))), t }, Te = function (e) { var n = Ne(e.iframeParams, e.statParams); e.config.affiliateState && (n.affiliateState = e.config.affiliateState), ie(e.config, n), l.send("trackStat", n, e.iframeId) }, Pe = function (e) { var n = {browserId: e.browserId}; l.send("passBrowserId", n, e.iframeId) }, xe = function (e) { l.send("passPcidBrowserId", {browser_id: u.getBrowserId()}, e.iframeId) }, Ae = function (e) { l.send("passCookieConsents", u.getCookieConsents(), e.iframeId) }, Oe = function (e) { l.send("passUserSegments", u.getUserSegmentsString(), e.iframeId) }, Me = function (e) { var n = u.getPageViewContext(), t = n.pageTitle, r = n.url, o = n.pageViewId, i = n.referrerUrl, a = n.author, s = n.created, c = n.section, d = n.tags, p = n.contentType; l.send("passPageViewContext", { page_title: t, url: r, page_view_id: o, referrer: i, content_author: a, content_created: null == s ? void 0 : s.toString(), content_section: c, tags: d ? JSON.stringify(d) : null, content_type: p }, e.iframeId) }, Ne = function (e, n) { var t = {}; return Object.keys(e).forEach((function (n) { t[n] = e[n] })), Object.keys(n).forEach((function (e) { t[e] = n[e] })), t }, Re = function () { N || (pn.gigya.registerCallback("userChanged", (function (e) { if (e && e.user_token) { var r = { token_list: e.access_token.value, user_token: e.user_token, userToken: e.user_token, cookie_domain: e.access_token.cookie_domain, user: e.user, allowReturnToStartState: M, termId: n }; if (t) m.getIframe(t) ? (l.send("externalLoginSuccess", r, t), delete r.termId, Ge(r, t)) : Ge(r); else Ge(r) } })), pn.gigya.registerCallback("logout", (function () { var e, r = {}; r.userProvider = d.getProvider().getName(), r.userToken = d.getProvider().getToken() && d.getProvider().getToken().length > 0 ? d.getProvider().getToken() : "", r.noNeedStartCheckout = !0, t && (e = m.getIframe(t)), e && "inline" === e.config.displayMode && m.closeModalContainer(), n = "", t = "", M = !1, Ge(r) })), N = !0) }, Le = function () { N || (pn.janrain.registerCallback("userChanged", (function (e) { if (e && e.user_token) { var r = { token_list: e.access_token.value, user_token: e.user_token, userToken: e.user_token, cookie_domain: e.access_token.cookie_domain, user: e.user, allowReturnToStartState: M, termId: n }; if (t) m.getIframe(t) ? (l.send("externalLoginSuccess", r, t), delete r.termId, Ge(r, t)) : Ge(r); else Ge(r) } })), pn.janrain.addEventHandler("onCaptureSessionEnded", (function () { var e, r = {}; r.userProvider = d.getProvider().getName(), r.userToken = d.getProvider().getToken() && d.getProvider().getToken().length > 0 ? d.getProvider().getToken() : "", r.noNeedStartCheckout = !0, t && (e = m.getIframe(t)), e && "inline" === e.config.displayMode && m.closeModalContainer(), n = "", t = "", M = !1, Ge(r) })), N = !0) }, Ue = function () { N || (pn.pianoId.setCallbacks({ loggedIn: function (e) { u.log("offer.js - piano id user logged in"); var r = { user_token: e.token, userToken: e.token, user: e.user, reloadAfterLogin: !0, termId: n }; t ? m.getIframe(t) ? (l.send("externalLoginSuccess", r, t), We(t, r), delete r.termId, Ge(r, t)) : Ge(r) : Ge(r) }, loggedOut: function (e) { if (e.source !== A) { var r = {}; r.userProvider = d.getProvider().getName(), r.userToken = d.getProvider().getToken() && d.getProvider().getToken().length > 0 ? d.getProvider().getToken() : "", r.noNeedStartCheckout = !0, Ge(r) } n = "", t = "" } }), N = !0) }; function De(e) { return m.showPreloadedContainer(e) } var je = function (e) { var n = e.offerId === m.fakeOfferId ? "showTemplate" : "showOffer"; H.hasCallback(n) && H.fireCallbacks(n, e, void 0, !0), Y(n, {params: e}) }, Ve = function (e) { [{queryParam: "promo_code", configParam: "promoCode"}].forEach((function (n) { var t = u.getQueryParamByName(n.queryParam); t.length && (e[n.configParam] = t) })) }, Fe = function () { return u.getQueryParamByName(B) }, Be = function (e) { if (e.offerId || !0 === e.preview) return !function (e) { var n = te(e); return !!T[n] }(e) && void (function (e) { return Fe() && !e.rurl_3ds && "modal" === e.displayMode }(e) || (j = e.trackingId, ke(j), e.preview || function (e) { var n = te(e); T[n] = !0 }(e), setTimeout((function () { re(e) }), 1e4), u.waitCall("refreshUserToken", (function () { u.waitCall("refreshAccessTokenList", (function () { u.waitCall("myAccountLogin", (function () { var n; if (u.startCall("offerCreate"), e.createIframeFn ? (Ve(e), n = e.createIframeFn(e)) : n = oe(e), !n) return u.doneCall("offerCreate"), void u.error("Could not initialize offer; check configuration"); qe(e) && (a = !0, ze(n.iframeId)), je(e) })) })) })))); u.error("Must specify offerId") }; var qe = function (e) { return !!e.directCheckout && "inline" !== e.displayMode }, ze = function (e) { u.waitCall("offerCreate", (function () { l.send("startDirectCheckout", {}, e) })) }, He = function (e, n) { if (!function (e) { return !e.offerId && !e.isRedemption && !e.preview }(e)) { var t = H.hasCallback("loginRequired"); if (e.isSiteLicensing && t && (Qe() || Xe())) return void _.refreshUser(U.iframeId); m.hasModalIframe() && !Ye(e) && m.closeModalContainer(), u.debug("creating checkout: ", e), e.displayMode = "popup" === e.displayMode ? "popup" : "modal", e.isCheckout = !0, e.parent = n, u.waitCall("refreshUserToken", (function () { u.waitCall("refreshAccessTokenList", (function () { var t, r; if (Ye(e) && e.reloadAfterLogin && Xe()) { var o = null === (t = d.getProvider()) || void 0 === t ? void 0 : t.getToken(); return o && e[z] ? void function (e) { var n, t = e.token, r = e.termId, o = e.iframeId; l.send("startLinkedTermProcessAfterExternalLogin", {termId: r}, o), O && (Ge({ userProvider: null === (n = d.getProvider()) || void 0 === n ? void 0 : n.getName(), userToken: t, noNeedStartCheckout: !0, noNeedStartCheckoutAfterLogin: !0 }), O = !1) }({ token: o, termId: e.termId, iframeId: e[z] }) : void u.log("external checkout cannot be continued.") } if (u.startCall("offerCreate"), pn.pianoId.__protected__.isGmSso()) { if (pn.pianoId.__protected__.isGmSsoRedirectEnabled() && !pn.pianoId.getToken()) return void pn.pianoId.__protected__.authByGmSsoRedirect(e); e = p(p({}, e), {isGmSso: !0}) } r = e.createIframeFn ? e.createIframeFn(e) : oe(e), m.__protected__.addChildToInlineIframe(r, n), r ? O && u.waitCall("offerCreate", (function () { O = !1; var e = {}; e.userProvider = d.getProvider().getName(), d.getProvider().getToken() && d.getProvider().getToken().length > 0 ? e.userToken = d.getProvider().getToken() : e.userToken = "", e.noNeedStartCheckout = !0, e.noNeedStartCheckoutAfterLogin = !0, Ge(e, r.iframeId) })) : (u.doneCall("offerCreate"), u.error("Could not start checkout; check configuration")) })) })) } }, We = function (e, n) { l.send("reloadOffer", n, e) }, Ge = function (e, n) { l.broadcast("reloadOffer", e, n) }, Je = function (e, n, t) { var r = {reloadAfterLogin: !0}; return Object.assign(r, e.config), r.singleContainer && delete r.singleContainer, n.termId && (r.termId = n.termId), n.term && (r.term = {}, r.term = Ne(r.term, n.term)), n.startScreen && (r.startScreen = n.startScreen), n.isRedemption && (r.isRedemption = n.isRedemption, r.voucherCode = n.redemption && n.redemption.form && n.redemption.form.redeemCode, r.termId = null), n && n.currentState && "modal" === e.config.displayMode && (r.allowReturnToStartState = !0), n.preventExternalLogin && (r.preventExternalLogin = n.preventExternalLogin), n.sharedAccountCode && (r.sharedAccountCode = n.sharedAccountCode), n.isSiteLicensing && (r.isSiteLicensing = n.isSiteLicensing), n.campaignCode && (r.campaignCode = n.campaignCode), n.campaignGroupId && (r.campaignGroupId = n.campaignGroupId), n.termType && (r[q] = n.termType), t && (r[z] = t), r.displayMode = "modal", r }, Qe = function () { return "publisher_user_ref" === d.getProvider().getName() }, Xe = function () { return "piano_id_lite" === d.getProvider().getName() }, Ye = function (e) { var n = e[q] === Ko.LINKED, t = e[q] === Ko.LINK; return n || t }; return { name: "offer", show: function (e) { "inline" === e.displayMode ? m.operationWithContainer(e.containerSelector, (function () { Be(e) })) : Be(e) }, deferredShow: function (e) { return function (e) { var n, t, r, o = new Promise((function (e, r) { n = e, t = r })), i = new Promise((function (e, n) { r = e })); return "popup" !== e.displayMode && e.offerId ? u.waitCall("refreshAccessTokenList", (function () { var o; e.isPreload = !0, u.startCall("offerCreate"), e.createIframeFn ? (Ve(e), o = e.createIframeFn(e)) : o = oe(e), o ? (o.element.onload = function () { r(o) }, n(o)) : (u.doneCall("offerCreate"), u.error("Could not initialize offer; check configuration"), t()) })) : t(), { promise: o, show: function () { o.then(De).then((function () { return i })).then((function (n) { Te(n), qe(e) && ze(n.iframeId), je(e) }), (function () { Be(e), delete e.isPreload })) } } }(e) }, close: function () { m.closeModalContainer() }, closeInline: function (e) { m.__protected__.closeInlineContainers(e) }, startCheckout: He, startLinkedTermCheckout: function (e, n) { if (E.length) if (n) { var t = E.find((function (e) { var t, r; return (null === (t = null == e ? void 0 : e.config) || void 0 === t ? void 0 : t.offerId) === n || (null === (r = null == e ? void 0 : e.iframeParams) || void 0 === r ? void 0 : r.offerId) === n })); t ? l.send("tpStartLinkedTermCheckout", {termId: e}, t.iframeId) : u.debug("offer iframe ".concat(n, " was not found")) } else E.forEach((function (n) { l.send("tpStartLinkedTermCheckout", {termId: e}, n.iframeId) })); else u.debug("there are not offer iframes.") }, startRedeemVoucher: function (e, n) { m.closeModalContainer(), e || (e = {}), e.isRedemption = !0, u.debug("starting redeem voucher: ", e), e.displayMode = "popup" === e.displayMode ? "popup" : "modal", e.isCheckout = !1, e.parent = n, u.waitCall("refreshAccessTokenList", (function () { u.startCall("offerCreate"), (e.createIframeFn ? e.createIframeFn(e) : oe(e)) || (u.doneCall("offerCreate"), u.error("Could not start redeem; check configuration")) })) }, createOfferIframe: oe, showBackdrop: function () { m.showBackdrop() }, hideBackdrop: function () { m.hideBackdrop() }, centerBackdrop: function (e) { m.centerBackdrop(e) }, registerCallback: function (e, n) { H.addEvent(e), H.registerCallback(e, n) }, reload: We, reloadAll: function (e, n) { var t = e || {}; u.waitCall("refreshUserToken", (function () { Ge(Object.assign(t, {userToken: pn.user.getProvider().getToken()}), n) })) }, resetUserAndReloadAll: function (e, n) { var t = e || {}; Ge(Object.assign(t, {userToken: ""}), n) }, checkThreeDSRedirect: function () { var e = Fe(); if (e) { var n = { offerId: "pn_offer_id", oid: "pn_oid", termId3ds: "pn_term_id", providerId: "pn_provider_id", thirdPartyParams: "third_party_params" }, t = [B], r = Object.keys(n).reduce((function (e, r) { var o = Object.assign({}, e); return o[r] = u.getQueryParamByName(n[r]), t.push(n[r]), o }), {}); u.removeQueryParamByName(t), Be(Object.assign({displayMode: "modal", rurl_3ds: e}, r)) } }, passUserSegments: Oe, passCookieConsents: Ae } }() }), pn.offer = pn.container.resolve("offer"); var ei = function () { var e, n = pn.container.resolve("jqUtils"), t = pn.container.resolve("util"), r = pn.container.resolve("postmessage"), o = pn.container.resolve("offer"), i = pn.container.resolve("user"), a = pn.container.resolve("containerUtils"), s = pn.container.resolve("pianoId"), c = pn.container.resolve("logging"), u = pn.container.resolve("microsoftQuickAuth"), l = pn.container.resolve("acp"), d = {}, p = !1, f = {loginRequired: [], loginSuccess: [], autoRenewalDisabled: [], subscriptionCancellation: []}, m = function () { return pn.getEndpointRoot() + "/checkout/myaccount/show" }, v = function (e, n) { e.element.style.height = (e.config.maxHeight ? Math.min(n.height, e.config.maxHeight) : n.height) + "px", e.container.style.height = (e.config.maxHeight ? Math.min(n.height, e.config.maxHeight) : n.height) + "px", e.element.style.width = n.width + "px", "modal" === e.config.displayMode && (e.container.style.width = n.width + "px"), r.send("resized", { height: e.config.maxHeight ? Math.min(n.height, e.config.maxHeight) : n.height, width: n.width }, e.iframeId) }, g = function (t, r, i) { return function () { e && (n.removeClass("tp-active", e), o.hideBackdrop(), window.setTimeout((function () { n.remove(e) }), 250), r.result = i, t(r)) } }, h = function (e) { var t = n.winSize(); e.offsetHeight > t.height ? (!1 === p && (e.style.position = "absolute", p = !0), e.style.marginTop = window.scrollY - .5 * t.height + "") : (!0 === p && (e.style.position = "fixed", p = !1), e.style.marginTop = 0 - .5 * e.offsetHeight + ""), o.centerBackdrop(e), e.style.marginLeft = 0 - .5 * e.offsetWidth + "" }, y = function (t, i) { !function (t, r) { var i = document.createElement("div"); n.addClass("tp-modal", i); var a = document.createElement("div"); n.addClass("tp-close", a); var s = document.createElement("div"); n.addClass("tp-message", s), i.style.width = (t.width ? t.width : 400) + "px", s.innerHTML = t.message; var c = document.createElement("div"); n.addClass("tp-btn-container", c); var u = document.createElement("button"); n.addClass("tp-btn", u), n.addClass("tp-ok-btn", u), u.innerHTML = t.ok ? t.ok : "Ok"; var l = document.createElement("button"); n.addClass("tp-btn", l), n.addClass("tp-cancel-btn", l), l.innerHTML = t.cancel ? t.cancel : "Cancel", n.on(a, "click", g(r, t, "cancel")), n.on(l, "click", g(r, t, "cancel")), n.on(u, "click", g(r, t, "ok")), n.append(i, a), n.append(i, s), n.append(c, u), n.append(c, l), n.append(i, c), n.append(document.body, i), o.showBackdrop(), n.addClass("tp-active", i), h(i), e = i }(i.params, (function (e) { r.send("closeDialog", e, d[i.sender].iframeId) })) }, w = function (e, n) { f[e] = f[e] || [], f[e].push(n) }, _ = function (e, n, o) { if (t.debug("received event: " + e, n), void 0 !== f[e]) { for (var i = 0; i < f[e].length; ++i) { t.debug("firing callback for event: " + e); var a = f[e][i](n); n && n.resultCallbackId && (n.result = a, n.event = e, r.send("resultCallback", n, o)) } !f[e].length && n && n.resultCallbackId && (n.callbackNotFound = !0, n.event = e, r.send("resultCallback", n, o)) } }, b = function (e) { switch (t.log("*** My account event received", e.event, e.params), e.event) { case"resize": t.debug("*** Resize event", e.params.width, e.params.height), v(d[e.sender], e.params), "modal" === d[e.sender].config.displayMode && h(d[e.sender].container); break; case"loaded": var o = d[e.sender]; r.send("initMaxHeight", {height: o.config.maxHeight}, o.iframeId), pn.offer.passCookieConsents(o), pn.offer.passUserSegments(o), v(o, e.params), "pianoId" === i.getProvider().name && s.__protected__.executePostMessagesBatch(), "modal" === o.config.displayMode && window.setTimeout((function () { n.addClass("tp-active", o.container), h(o.container) }), 25), c.setTime("myAccountShow", Math.floor(performance.now() - o.config.initTime)); break; case"cancel": case"complete": case"error": case"loginRequired": case"customEvent": _(e.event, e.params, e.sender); break; case"openDialog": y(e.event, e); break; case"pianoIdProfileUpdated": s.onProfileUpdate(e.params, (function () { var n = e.params; n && n.resultCallbackId && r.send("resultCallback", n, e.sender); var t = {userToken: e.params.token, user: e.params.user}; k(t) })); break; case"extendedUserLoginRequired": s.onExtendedUserLoginRequired(); break; case"loginSuccess": i.getProvider().onLoginSuccess(e.params); var a = {reloadAfterLogin: !0, userToken: e.params.user_token, user: e.params.user}; k(a), _(e.event, e.params, e.sender); break; case"logout": i.logout((function () { var e = {}; e.userProvider = i.getProvider().getName(), e.userToken = i.getProvider().getToken() && i.getProvider().getToken().length > 0 ? i.getProvider().getToken() : "", k(e) })), _(e.event, e.params, e.sender); break; case"userProfileUpdateSuccess": var u = e, p = u.event, f = u.params, m = u.sender; i.getProvider().onLoginSuccess(f); var g = {userProvider: f.user_provider, userToken: f.user_token}; for (var w in k(g), _(p, f, m), d) if (d.hasOwnProperty(w)) { var b = d[w].config; b.hasOwnProperty("userToken") && delete b.userToken, S(b) } break; case"langChangedWithinMyAccount": s.isConfigured() && s.updateLang(e.params.lang); break; case"requestScrollData": C(e.sender); break; case"downForMaintenance": v(d[e.sender], {width: 300, height: 200}); break; case"removeQueryParamByName": Array.isArray(e.params.paramsToRemove) && e.params.paramsToRemove.forEach((function (e) { t.removeQueryParamByName(e) })); break; case"getTrackingData": r.send("getTrackingDataResponseEvent", { pageViewId: pn.main.fetchPageViewId(), tbc: t.getTbcCookie() }, e.sender); break; case"redirect": document.location.href = e.params.url; break; case"getTemplateInteractionConfig": l.sendTemplateInteractionActive(d[e.sender].config); break; case xo.autoRenewalDisabled: case xo.subscriptionCancellation: l.handleAcpEvent(_, e, d[e.sender].config, !0); break; default: return void t.log("Received invalid event type: " + e.event) } }, k = function (e) { r.broadcast("reloadOffer", e) }, C = function (e) { var n = d[e].element.getBoundingClientRect(), t = { iframeRect: { bottom: n.bottom, height: n.height, left: n.left, right: n.right, top: n.top, width: n.width } }; r.send("returnScrollData", t, e) }; function I(e) { e.initTime = performance.now(); var o = {widget: "myaccount"}; if (e.templateId && (o.templateId = e.templateId), void 0 === e.displayMode) e.displayMode = "inline"; else if ("modal" !== e.displayMode && "inline" !== e.displayMode) return void t.log("Invalid offer displayMode; must be one of: modal, inline"); if (o.displayMode = e.displayMode, o.iframeId = t.randomString(16), o.url = window.location.href, o.initialWidth = e.width, o.initialHeight = e.height, o.maxHeight = e.maxHeight, o.v3ApiEndpoint = pn.getApiEndpoint(), i.getProvider().getName() === s.getName() && s.__protected__.isSssEnabled()) { var c = s.__protected__.getSssParams(); o.piano_id_sss_mode = c.sss_mode, o.piano_id_sss_callback_url = c.sss_callback_url, o.piano_id_sss_origin_url = c.sss_origin_url } if (pn.locale && (o.lang = pn.locale), !pn.janrain.isConfigured() || void 0 !== e.loginRequired && e.loginRequired) if (!pn.gigya.isConfigured() || void 0 !== e.loginRequired && e.loginRequired) if (pn.pianoId.isConfigured()) { y = e; if (pn.pianoId.setCallbacks({ loggedIn: function (n) { var t; o.userToken !== n.token && (e.loginSuccess && (t = e.loginSuccess(n)), (void 0 === t || t) && (y.userToken = n.token, S(y))) }, loggedOut: function () { var e = {}; e.userProvider = i.getProvider().getName(), e.userToken = i.getProvider().getToken() && i.getProvider().getToken().length > 0 ? i.getProvider().getToken() : "", k(e) } }), null !== pn.pianoId.getToken() && u.clearConfirmationParameters(), void 0 === e.loginRequired || !e.loginRequired) { var l = 0; e.loginRequired = function () { if (++l > 10) t.log("Too many attemps to login for myAccount"); else { var e = t.getQueryParamByName("verification_code"), n = t.getQueryParamByName("internal_redirect_uri"), r = t.getQueryParamByName("response_id"), o = n && r, i = pn.pianoId.__protected__, a = i.isGmSso, s = i.isGmSsoRedirectEnabled; !(a() && s() || o) ? pn.pianoId.show({verificationCode: e}) : pn.pianoId.init() } } } o.pianoIdUrl = pn.pianoId.getIframeUrl(); var p = pn.pianoId.getLang(); p && (o.lang = p), pn.pianoId.onLangChange((function (e) { r.send("langChanged", {lang: e}, o.iframeId) }), o.iframeId) } else pn.pianoIdLite.isConfigured() && (o.pianoIdUrl = pn.pianoId.getIframeUrl()); else { g = []; pn.gigya.registerCallback("onHide", (function () { a.activateContainers(g), t.doneCall("myAccountLogin") })), e.loginRequired = function () { var n = e; t.waitCall("refreshAccessTokenList", (function () { t.waitCall("offerCreate", (function () { t.startCall("myAccountLogin"), g = a.hideModalContainer(), pn.gigya.login((function (t) { var r; e.loginSuccess && (r = e.loginSuccess(t)), (void 0 === r || r) && (n.userToken = t.user_token, S(n)) })) })) })) } } else { var g = [], y = e; pn.janrain.addEventHandler("onModalClose", (function () { a.activateContainers(g), t.doneCall("myAccountLogin") })), pn.janrain.registerCallback("userChanged", (function (n) { var t; n && n.user_token && (e.loginSuccess && (t = e.loginSuccess(n)), (void 0 === t || t) && (y.userToken = n.user_token, S(y))) })), pn.janrain.addEventHandler("onCaptureSessionEnded", (function (n) { var t; e.loginSuccess && (t = e.loginSuccess(n)), (void 0 === t || t) && (y.userToken = null, S(y)) })), e.loginRequired = function () { return t.waitCall("refreshAccessTokenList", (function () { t.waitCall("offerCreate", (function () { t.startCall("myAccountLogin"), g = a.hideModalContainer(), pn.janrain.login() })) })), !1 } } return new Promise((function (s) { t.waitCall("refreshUserToken", (function () { var c, u = {}; if ("inline" === e.displayMode) { if (!e.containerSelector) return void t.log("My account must have a valid containerSelector"); if (!(c = n.queryEl(e.containerSelector))) return void t.log("My account must have a valid containerSelector"); o.width = n.getWidth(c) } else c = function () { var e = document.createElement("div"); n.addClass("tp-modal", e); var t = document.createElement("div"); return n.addClass("tp-close", t), n.append(e, t), n.append(document.body, e), e }(); var l = t.getPageViewContext(), p = l.pageTitle, g = l.pageViewId; for (var y in o.pageViewId = g, o.tbc = t.getTbcCookie(), o.browserId = t.getBrowserId(), o.contentType = t.getPageViewContext().contentType, o.pageTitle = p, o.userProvider = i.getProvider().getName(), e.userToken ? o.userToken = e.userToken : o.userToken = i.getProvider().getToken(), f) "function" == typeof e[y] && (t.debug("Registering " + y + " callback for iframe " + o.iframeId), w(y, e[y])); o.aid = pn.aid, pn.isSensitiveDataProtectionEnabled && (u = { userToken: o.userToken, iframeId: o.iframeId }, delete o.userToken); var _ = m() + "?" + n.param(o), k = document.createElement("iframe"), C = { scrolling: "no", allowtransparency: "true", name: o.iframeId, id: o.iframeId, allow: "payment" }; pn.isSensitiveDataProtectionEnabled || (C.src = _), Object.keys(C).forEach((function (e) { n.setAttr(e, C[e], k) })); var I = {overflow: "hidden", border: "0", height: "0"}; if ("inline" === e.displayMode ? I.width = o.width + "px" : I.width = 0, Object.keys(I).forEach((function (e) { k.style[e] = I[e] })), d[o.iframeId] = { iframeId: o.iframeId, config: e, element: k, container: c, containerWidth: n.getWidth(c), containerHeight: n.getHeight(c) }, r.init({ postMessageUrl: m(), receive: b, iframe: d[o.iframeId] }), n.on(window, "keyup", (function (e) { })), "modal" === e.displayMode && n.on(window, "resize", (function () { h(c) })), "modal" === e.displayMode ? h(c) : n.empty(c), pn.isSensitiveDataProtectionEnabled) { u.iframeSrc = _; var S = a.getForm(u); n.append(c, k), n.append(c, S), S.submit() } else n.append(c, k); if (n.on(window, "resize", (function () { !function () { for (var e in d) { var t = d[e], o = !1, i = n.getWidth(t.container); i !== t.containerWidth && (t.element.style.width = i + "", t.containerWidth = i, o = !0); var a = n.getHeight(t.container); a !== t.containerHeight && (t.element.style.height = a + "", t.containerHeight = a, o = !0), o && r.send("resize", { width: i, height: a }, e) } }() })), "inline" === e.displayMode && window.ResizeObserver) { var E = new ResizeObserver((function (e) { var t = n.getWidth(c); t > 0 && v(d[o.iframeId], {width: t}) })); E.observe(c), d[o.iframeId].resizeObserver = E } pn.offer && pn.offer.registerCallback("complete", (function () { r.send("refreshNow", {}, o.iframeId) })), s(d[o.iframeId]) })) })) } var S = function (e) { t.waitCall("offerCreate", (function () { t.waitCall("refreshAccessTokenList", (function () { var n; null === (n = I(e)) || void 0 === n || n.then((function (e) { e || t.log("Could not initialize my account; check configuration") })) })) })) }; return {name: "myaccount", show: S, registerCallback: w} }(); pn.container.register("myaccount", {useValue: ei}), pn.myaccount = pn.container.resolve("myaccount"); var ni = function () { var e = pn.container.resolve("jqUtils"), n = pn.container.resolve("util"), t = pn.container.resolve("api"), r = pn.container.resolve("offer"), o = pn.container.resolve("eventUtils").createEventManager(["onCheckoutSuccess", "onMeterExpired", "onMeterError", "onAccessGranted", "onMeterActive", "onMeterInactive", "meterSelector"]), i = { state: "ok", views_left: null, offer_id: "", curtain_template_id: "", reminder_template_id: "", cookie_name: "", cookie_value: "", cookie_expires: "", show_reminder: !1, show_close_button: !1 }, a = function (e, t) { return o.fire(void 0, e, !0, t), !l[e] || "function" != typeof l[e] || (n.debug("_customCaller called with " + e), l[e](t)) }, s = function (n) { (n = n || {}).offerId || (n.offerId = i.offer_id), n.templateId || (n.templateId = i.curtain_template_id), n.displayMode || (n.displayMode = l.displayMode), n.containerSelector || (n.containerSelector = l.containerSelector), n.showCloseButton || (n.showCloseButton = i.show_close_button), "function" === e.type(l.close) && (n.close = l.close), "function" === e.type(l.loginRequired) && (n.loginRequired = l.loginRequired), "function" === e.type(l.customEvent) && (n.customEvent = l.customEvent), "function" === e.type(l.onCheckoutSuccess) && (n.complete = l.onCheckoutSuccess), r.createOfferIframe(n) }, c = function (e) { if (a("___onProcessMeter", e), !e.user_meter) return n.log("Could not load meter", e), void function (e) { a("onMeterError", e) }(e); if ((i = e.user_meter) && i.cookie_name && i.cookie_value && i.cookie_expires) { var t = {path: "/", expires: i.cookie_expires}; i.cookie_domain && (t.domain = i.cookie_domain), n.__protected__.setCookie(i.cookie_name, i.cookie_value, t) } "ok" === i.state ? function (e) { n.debug("_handleMeterActive", e), e.show_reminder && e.reminder_template_id && e.track_page_view && a("onShowOffer", e) && s({templateId: e.reminder_template_id}), a("onMeterActive", e) }(i) : "ap" === i.state ? function (e) { n.debug("_handleAccessGranted", e), a("onAccessGranted", e) }(i) : "ia" === i.state ? function (e) { n.debug("_handleMeterInactive", e), a("onMeterInactive", e) }(i) : function (e) { n.debug("_handleExpired", e), a("onMeterExpired", e), e.track_page_view && a("onShowOffer", e) && s() }(i) }, u = function (e, r, o) { if (null !== l.paywallId && "" !== l.paywallId) { var i = document.URL; e && "function" == typeof e.getAttribute && e.getAttribute("href") ? i = e.getAttribute("href") : e && "function" == typeof e.attr && e.attr("href") && (i = e.attr("href")); var a = l.trackPageview; a && delete l.trackPageview; var s = l.meterSelector(); s || (s = ""); var u = { paywall_id: l.paywallId, url: encodeURI(i), referer: encodeURI(l.referer), track_page_view: a, meter_name: s, pageview_id: pn.main.fetchPageViewId() }; r && (u.transaction_id = r), l.referer = ""; var d = n.__protected__.getCookie("umc"); if (d) u.umc = d; else { var p = n.__protected__.getCookie("umc_" + l.paywallId); p && (u.umc = p) } t.callApi("/anon/meter/load", u, (function (e) { c(e), "function" == typeof o && o() })) } else n.debug("You must specify a paywallId in your configuration") }, l = { paywallId: null, trackPageview: !0, trackExternalReferrer: !0, referer: document.referrer, offerURL: "", displayMode: "modal", containerSelector: "", onCheckoutSuccess: function () { }, onMeterExpired: function () { }, onMeterError: function () { }, onAccessGranted: function () { }, onMeterActive: function () { }, onMeterInactive: function () { }, meterSelector: function () { } }; return { name: "meter", init: function (e) { if (void 0 !== e) if (void 0 !== e.paywallID || void 0 !== e.paywallId) { for (var t in void 0 === e.paywallId && (e.paywallId = e.paywallID), e) l[t] = e[t]; l.referer = document.referrer, n.debug("Initializing paywall: " + l.paywallId), u() } else n.error("Must specify paywallId to load Piano paywall"); else n.error("Must specify paywall configuration to load Piano paywall") }, isExpired: function () { return i.state && "ex" === i.state }, isExpiredNextClick: function () { return void 0 !== i.views_left && 0 === i.views_left }, checkMeter: function (e) { l.trackPageview = !0, u(e) }, showCurtain: s, last: function () { return i }, registerCallback: function (e, n) { o.addEvent(e), o.registerCallback(e, n) } } }(); pn.container.register("meter", {useValue: ni}), pn.meter = pn.container.resolve("meter"); var ti = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("sha1"), t = "", r = function () { var e = ""; return ["ShockwaveFlash.ShockwaveFlash.6", "ShockwaveFlash.ShockwaveFlash.7", "SWCt1.SWCt1.9", "SWCtl.SWCtl", "Adobe.SVGCtl", "WMPlayer.OCX", "AgControl.AgControl", "AcroPDF.PDF", "PDF.PdfCtrl", "RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)", "RealPlayer", "Skype.Detection", "3dmlw.IEPlugin", "GoogleTalk.Plugin", "GoogleTalk.Plugin.1"].map((function (n) { try { new window.ActiveXObject(n), e += n + "|" } catch (e) { } })), e }, o = function () { if (t) return t; var o = function () { try { var e; return e = window.navigator.userLanguage || window.navigator.language, (new Date).getTimezoneOffset() + ":" + e } catch (e) { return "" } }(); return o += function () { if (window.ActiveXObject) return r(); try { var e = "", n = navigator.plugins.length; if (n > 0) for (var t = 0; t < n; t++) e += navigator.plugins[t].name + "|"; return e } catch (e) { return "" } }(), o += function () { try { return screen.height + "x" + screen.width + "+" + screen.colorDepth } catch (e) { return "" } }(), o += navigator.userAgent, o += function () { var e = ""; try { e += document.getElementById ? 1 : 0, e += window.getComputedStyle ? 1 : 0, e += screen.globalStorage ? 1 : 0, e += window.localStorage ? 1 : 0, e += window.sessionStorage ? 1 : 0, e += document.getElementsByClassName ? 1 : 0, e += document.querySelector ? 1 : 0, e += document.all ? 1 : 0, e += window.attachEvent ? 1 : 0, e += window.createPopup ? 1 : 0, e += window.XMLHttpRequest ? 1 : 0, e += window.ActiveXObject ? 1 : 0, e += window.XDomainRequest ? 1 : 0, e += window.msPerformance ? 1 : 0, e += document.documentMode ? 1 : 0, e += navigator.cpuClass ? 1 : 0, e += navigator.browserLanguage ? 1 : 0, e += window.opera ? 1 : 0, e += window.chrome ? 1 : 0 } catch (e) { } return e }(), t = n.hash(o), e.debug("Current browser fingerprint is: " + t), t }; return o(), {name: "fingerprint", getFingerprint: o} }(); pn.container.register("fingerprint", {useValue: ti}), pn.fingerprint = pn.container.resolve("fingerprint"); var ri = function () { var e, n = pn.container.resolve("jqUtils"), t = 0, r = 0, o = 200, i = 0, a = []; n.on(window, "scroll", (function () { c() })); var s = function () { var e = n.scrollTop(); e > i && (i = e) }, c = function () { s(), l() }, u = function (e) { if (e.consumeEventFn()) { if ("pixels" === e.measureType) return e.position <= i; if ("percentage" === e.measureType) return i / (t - n.winSize().height) >= e.position / 100 } }, l = function () { for (var e, n = [], t = [], r = 0; r < a.length; r++) e = a[r], u(e) ? n.push(e) : t.push(e); a = t; for (r = 0; r < n.length; r++) n[r].callback() }; return { name: "scrollDepth", initialize: function (i) { var a = document; i && i > 0 && (o = i || o); !function i() { var s = a.body || {}, c = a.documentElement || {}, u = Math.max(s.scrollHeight, c.scrollHeight, s.offsetHeight, c.offsetHeight, s.clientHeight, c.clientHeight); u > t && (t = u); var l = n.scrollTop() + n.winSize().height; l > r && ((r = l) > t && (t = r)), e && clearTimeout(e), e = setTimeout(i, o) }() }, getMaxScrollDepth: function () { return r }, getMaxDocumentHeight: function () { return t }, addListener: function (e, n, t) { "function" != typeof t && (t = function () { return !0 }), a.push({ callback: e, position: n.scrollDepth, measureType: n.measureType, repeat: "once", consumeEventFn: t }), s(), l() }, removeListeners: function () { a = [] }, clearMaxScrolledPosition: function () { i = 0, r = 0, t = 0 } } }(); pn.container.register("scrollDepth", {useValue: ri}), pn.scrollDepth = pn.container.resolve("scrollDepth"); var oi = function () { var e, n = pn.container.resolve("util"), t = pn.container.resolve("jqUtils"), r = !1, o = [], i = 200; function a() { r || (r = !0, t.on(document, "mousemove", (function () { return c() })), t.on(document, "keypress", (function () { return c() })), t.on(window, "scroll", (function () { return c() }))) } function s() { o.length && function () { for (var e, t, r, i = [], a = [], s = Date.now(), c = 0; c < o.length; c++) e = o[c], t = s - e.startTime, r = !1, t >= e.idleTime && (e.consumeEventFn() ? r = !0 : e.startTime = s), r ? i.push(e) : a.push(e); i.length && n.debug("idle: run fire"), o = a; for (c = 0; c < i.length; c++) (e = i[c]).callback() }(), e && clearTimeout(e), o.length && (e = setTimeout((function () { return s() }), i)) } function c() { for (var n = Date.now(), t = 0; t < o.length; t++) o[t].startTime = n; clearTimeout(e), o.length && (e = setTimeout((function () { return s() }), i)) } return { name: "idle", initialize: a, addListener: function (n, t, r) { a(), "function" != typeof r && (r = function () { return !0 }), o.push({ callback: n, idleTime: 1e3 * t, startTime: Date.now(), consumeEventFn: r }), e || (e = setTimeout((function () { return s() }), i)) }, removeListeners: function () { o = [] } } }(); pn.container.register("idle", {useValue: oi}), pn.idle = pn.container.resolve("idle"); var ii = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("jqUtils"), t = []; return { name: "interaction", bind: function (r, o, i) { var a = function (e) { for (var n = { click: "click", doubleClick: "dblclick", rightClick: "contextmenu", mouseOut: "mouseout", mouseIn: "mouseover" }, t = [], r = 0; r < e.length; r++) { var o = e[r]; t.push(n[o]) } return t }; "function" != typeof i && (i = function () { return !0 }), e.__protected__.documentReady((function () { for (var e = 0; e < o.length; e++) { var s = o[e], c = a(s.elementActions).join(" "), u = s.elementSelector, l = s.repetitive; c.trim().length && function (e, o, a) { var s = function () { !i() || (a || n.undelegate(document.body, e), r()) }; n.delegate(document.body, e, o, s), t.push({action: c, selector: u, func: s}) }(u, c, l) } })) }, unbindAll: function () { t.forEach((function (e) { n.undelegate(document.body, e.selector) })), t = [] } } }(); pn.container.register("interaction", {useValue: ii}), pn.interaction = pn.container.resolve("interaction"); var ai = function () { var e = pn.container.resolve("jqUtils"), n = pn.container.resolve("util"), t = pn.container.resolve("containerUtils"), r = function (e) { return "inline" === e.displayMode }, o = function (e) { return "modal" === e.displayMode }; return { name: "recWidgetService", __protected__: { getInstance: function () { var i, a = []; function s(n) { var s = n || {}, c = s.widget || {}; r(c.config) ? e.empty(c.container) : o(c.config) && (function (n) { if (i) { t.closeModal(i), e.empty(i.container); var r = t.__private__.mobileModalFix; r.isIphoneCaretFixed && r.modalClosed(), i = null } }(), e.remove(c.container)), !s.skipOnclose && e.isFunction(c.onclose) && c.onclose(), a = a.filter((function (e) { return e.uuid !== c.uuid })) } function c(e) { return a.filter((function (n) { return e === n.widgetId }))[0] } return { showRecommendation: function (u) { var l = u.widgetConfig || {}, d = u.createPlaceholderFn, p = l.widgetId; if (!p) throw new Error("widgetId should be specified"); if (c(p)) n.log("widget with id " + l.widgetId + " already initialize"); else if (o(l) && i) n.log("modal widget already shown"); else { var f = function (t) { var r = e.queryEl(t.containerSelector), o = "widget-id-" + n.randomString(), i = { singleContainer: r || void 0, displayMode: t.displayMode || "modal", showCloseButton: t.showCloseButton, iframeParams: { iframeId: o, containerSelector: t.containerSelector, width: t.width, height: t.height } }; return { uuid: o, widgetId: t.widgetId, placeholder: t.placeholder, trackingId: t.trackingId, config: i } }(l), m = f.config, v = d(); if (f.container = function (e, n) { var i; return r(e) ? i = t.initInlineContainer(e).container : o(e) && (i = t.getModalContainer(e, (function () { n instanceof Function && n() }))), i }(m, (function () { s({widget: f}) })), f.container) return e.append(f.container, v), f.element = v, o(m) && (i = f), function (n, t) { void 0 === t && (t = {}), Object.keys(t).forEach((function (r) { e.isFunction(t[r]) && (n[r] = t[r](n)) })) }(f, u.widgetCallbacks), a.push(f), f; n.log('widget has invalid selector "'.concat(m.iframeParams.containerSelector, '"')) } }, fireWidgetCallback: function (n, t, r) { a.forEach((function (o) { if (o.widgetId === t.toString()) { var i = o["on" + n]; e.isFunction(i) && i(r) } })) }, findWidget: c, clearWidgets: function () { a = [], i = null }, closeWidget: s, fixWidgetModalWidth: function (n, r) { if (!n || o(n.config)) { var i = n.container, a = r ? e.queryEl("iframe", i) : e.queryEl(".tp-widget-placeholder", i); t.checkBackdropAndContainer(n, !0, !0), setTimeout((function () { a && t.__protected__.setElementSizes(i, {width: e.getWidth(a)}) }), 100) } } } }, insertWidgetLib: function (n) { var t = document.getElementsByTagName("script")[0], r = document.createElement("script"); n.id && r.setAttribute("id", n.id), e.isFunction(n.onerror) && (r.onerror = n.onerror), e.isFunction(n.onload) && (r.onload = n.onload), n.defer && (r.defer = !0), r.type = "text/javascript", r.src = n.src, t && t.parentNode && t.parentNode.insertBefore(r, t) } } } }(); pn.container.register("recWidgetService", {useValue: ai}), pn.recWidgetService = pn.container.resolve("recWidgetService"); var si = function () { pn.container.resolve("predefinedOptions"); return {testPianoOption: ""} }(); pn.container.register("piano", {useValue: si}); var ci, ui = pn.container.resolve("piano"); for (ci in ui) pn[ci] = ui[ci]; pn.container.register("pianoEsp", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t = e.resolve("util"), r = e.resolve("user"), o = (e.resolve("api"), e.resolve("jqUtils")), i = e.resolve("consent"), a = e.resolve("analytics"), s = e.resolve("recWidgetService"), c = "__pnml", u = {granted: "ALLOWED", default: "UNKNOWN", denied: "FORBIDDEN"}, l = s.__protected__.getInstance(); function d() { return new Promise((function (e, n) { window.PianoESPConfig = p(p({}, window.PianoESPConfig || {}), { onload: e, widget_init_on_event: {rec: !0, "opt-in": !1}, onclick: function (e) { l.fireWidgetCallback("click", e.widgetId, e) }, onwidgetinit: function (e) { l.fireWidgetCallback("init", e.widgetId, e) }, onrecsloaded: function (e) { l.fireWidgetCallback("recsloaded", e.widgetId, e) } }), t.debug("pianoESP: loading PianoESP with config:", window.PianoESPConfig), s.__protected__.insertWidgetLib({ id: "pnesplucidsdksel", src: m() + "/public/sdk/v04/sdk.js?v=" + (localStorage && localStorage.lucidsdkver || "xxx"), onerror: n }) })) } function f() { return n || (n = new Promise((function (e, n) { var t, r = function () { return e(null) }; if (null !== (t = window.PianoESPConfig) && void 0 !== t && t.id) d().then(r, n); else var o = 0, i = setInterval((function () { var e; return null !== (e = window.PianoESPConfig) && void 0 !== e && e.id ? (d().then(r, n), void clearInterval(i)) : o >= 5e3 ? (clearInterval(i), void n()) : void (o += 500) }), 500) }))) } setTimeout((function () { pn.addHandler("logout", (function () { g([]) })); var e = r.getProvider(); e.registerCallback && e.registerCallback("logout", (function () { g([]) })) }), 300); var m = function () { var e = "//api-esp.piano.io"; return pn.espEndpoint ? e = pn.espEndpoint.replace(/^http[s]*:/, "") : pn.isSandbox() && (e = "//sandbox-api-esp.piano.io"), ("https:" === window.location.protocol ? "https:" : "http:") + e }, v = function (e, n) { f().then((function () { window.PianoESP.getCurrentPushState().then((function (e) { "prompt" === e && a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: {trackingId: n, eventGroupId: "showPrompt"} }) })), window.PianoESP.subscribeToPushSquads([e]).then((function (r) { var o = r || {}; !0 === o.result ? (t.setPushListsCookie(e), t.debug("pianoESP: Push notification was set:", o), a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: {trackingId: n, eventGroupId: "enrollPushCampaign"} })) : !1 === o.result && ("closed" === o.reason ? a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: {trackingId: n, eventGroupId: "closePrompt"} }) : a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: {trackingId: n, eventGroupId: "declineEnrollPushCampaign"} })) })).catch((function (e) { t.log("pianoESP: Push notification error:", e) })) })) }, g = function (e) { try { var n = JSON.stringify(e); i.composer ? i.composer.localStorage.set(c, n) : localStorage.setItem(c, n) } catch (e) { t.debug("can't save mailing lists to storage", e) } }, h = function () { var e = []; try { var n = localStorage.getItem(c); if (!n) return []; if (e = JSON.parse(n), !Array.isArray(e)) throw new Error("MAINLING_LIST should be array") } catch (e) { t.debug("can't load mailing lists from storage", e) } return e || [] }; var y = function (e) { return function () { var n = document.createElement("pnespwgtplaceholder"); return o.setAttr("holdername", e, n), n } }; function w() { return { onrecsloaded: function (e) { return function (n) { 0 !== n.countOfRecs ? (l.fixWidgetModalWidth(e, !0), a.log.event({ eventType: wo.LOG_ESP_MICRO_CONVERSION, payload: { trackingId: e.trackingId, espWidgetId: e.widgetId, eventGroupId: "init", eventType: yo.EXTERNAL_EVENT } }), t.debug("creating recommendation widget: ", e.config)) : l.closeWidget({ widget: e, skipOnclose: !0 }) } }, onclick: function (e) { return function (n) { var t = {href: n.url}; a.log.event({ eventType: wo.LOG_ESP_MICRO_CONVERSION, payload: { trackingId: e.trackingId, espWidgetId: e.widgetId, eventGroupId: "click", eventType: yo.EXTERNAL_LINK, customParams: t } }) } }, onclose: function (e) { return function () { a.log.event({ eventType: wo.LOG_ESP_MICRO_CONVERSION, payload: { trackingId: e.trackingId, espWidgetId: e.widgetId, eventGroupId: "close", eventType: yo.EXTERNAL_EVENT, customParams: {event: "widgetClosed"} } }) } } } } return { name: "pianoEsp", __protected__: { init: f, setVisitorId: function (e) { window.PianoESPConfig = Object.assign({}, window.PianoESPConfig, {visitor: e}) }, showRecommendation: function (e) { var n = w(); return l.showRecommendation({ widgetConfig: e, widgetCallbacks: n, createPlaceholderFn: y(e.placeholder) }), f().then((function () { window.PianoESP.initWidget(parseInt(e.widgetId)) })) }, showPushSignup: function (e) { var n = e || {}; n.templateId ? (a.log.event({ eventType: wo.LOG_CUSTOM_FORM_IMPRESSION, payload: {trackingId: n.trackingId, formName: "pushSignup", source: "show_form"} }), pn.template.show(p(p({}, n), { customEvent: function (e) { switch (e.eventName) { case"push-allow": a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: { trackingId: n.trackingId, eventGroupId: "allowSoftEnrollPushCampaign" } }), v(n.pushListId, n.trackingId); break; case"push-dont-allow": a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: { trackingId: n.trackingId, eventGroupId: "declineSoftEnrollPushCampaign" } }); break; case"push-close": a.log.event({ eventType: wo.LOG_MICRO_CONVERSION, payload: {trackingId: n.trackingId, eventGroupId: "close"} }) } } }))) : v(n.pushListId, n.trackingId) }, getNotificationStatus: function () { if (window.Notification) return u[window.Notification.permission] || u.default }, showNewsletterSignup: function (e) { if (e && e.mailingListIds) { var n = h().indexOf(e.mailingListIds) > -1; e.notShowIfFilled && n ? t.log("Mailing list with ids " + e.mailingListIds + " already shown") : pn.template.show(e) } else t.log("mailingListIds should be specified") }, offerMessageReceiver: function (e) { if ("newsletterSignupSubmission" === e.event) { var n = h(); -1 === n.indexOf(e.params.mailingListIds) && (n.push(e.params.mailingListIds), g(n)) } }, loadCompleteMailingLists: h }, __private__: { removeWidgetsAndSdk: function () { l.clearWidgets(), n = null, delete window.PianoESP }, getWidgetCallbacks: w, onInit: function (e) { !n || "function" == typeof e && n.then(e) } } } }() }), pn.pianoEsp = pn.container.resolve("pianoEsp"); var li = function () { var e, n = pn.container.resolve("postmessage"), t = pn.container.resolve("user"), r = pn.container.resolve("util"), o = pn.container.resolve("eventUtils"), i = pn.container.resolve("containerUtils"), a = "externalCheckoutComplete", s = "loginPrompt", c = "deferredAccountCreation", u = "buy", l = o.createEventManager([a]), d = "__gom", p = !1, f = !1, m = !1, v = []; window.SWG = window.SWG || [], window.SWG.push((function (n) { n.setOnPaymentResponse((function (t) { f || (r.debug("swg: onPaymentResponse is triggered"), f = !0, t.then((function (t) { r.debug("swg: onPaymentResponse", t), e && C(t, t.purchaseData, t.userData, n, e, u) })).catch((function (e) { r.log("swg: onPaymentResponse failed", e) }))) })) })), n.subscribe("swgCheckoutStart", (function (n) { p || r.log("swg: incorrect SwG configuration. Please make sure that Experience user segment is configured properly. Details at https://docs.piano.io/subscribe-with-google/#SwGscript"); var t = n.params.sku; e = n.params.termId, window.SWG.push((function (e) { e.subscribe(t) })) })); var g = function (e) { if (l.hasCallback(a)) { var n = {type: "swg", flow: e}; l.fireCallbacks(a, n, void 0, !0) } }, h = function (e) { for (var n = !1, t = v.reduce((function (e, n) { return e.concat(n.products) }), []), r = 0; r < e.length; r++) if (-1 === t.indexOf(e[r])) { n = !0; break } return n }, y = function (e) { if (p && !m) { var n = e || t.getProvider().getToken(); !n || (m = !0, function (e) { var n = "/swg/sync"; return "piano_id_lite" === t.getProvider().getName() && (n += "/external"), new Promise((function (t, r) { pn.api.callApi(n, {aid: pn.aid, access_token: e}, (function (e) { var n; 0 !== e.code && r(), t(null !== (n = e.SwgResponse) && void 0 !== n ? n : {products: []}) })) })) }(n).then((function (e) { return e.products && h(e.products) })).then((function (e) { e && function (e) { window.SWG.push((function (n) { n.saveSubscription((function () { return {token: e} })).then((function (e) { !e && r.log("swg: save subscription process was stopped") })) })) }(n), m = !1 })).catch((function (e) { r.log("swg: save subscription flow failed with error - ", e), m = !1 }))) } }, w = function e() { y(), n.unsubscribe("purge", e) }, _ = function () { n.subscribe("loginSuccess", (function (e) { if (i.hasModalIframe()) n.subscribe("purge", w); else { var t = e.params.token || e.params.user_token; y(t) } })), n.subscribe("purge", (function (e) { e.params && e.params.completePayment && y() })) }, b = function (e) { return new Promise((function (n, t) { pn.api.callApi("/swg/check", {entitlement: JSON.stringify(e)}, (function (e) { 0 !== e.code && (r.log("swg: check subscription response - " + e.message), t()), n(e.CheckSubscriptionResponse) })) })) }, k = function (e) { return new Promise((function (n, t) { pn.api.callApi("/swg/check/external", {entitlements: JSON.stringify(e)}, (function (e) { 0 !== e.code && (r.log("swg: check external entitlement response - " + e.message), t()); var o = e.data; o || (r.log("swg: check external entitlement empty response"), t()), n(o) })) })) }, C = function (e, t, o, i, a, s) { pn.api.callApi("/swg/subscribe", { term_id: a, purchase_data: JSON.stringify(t), user_data: JSON.stringify(o) }, (function (t) { if (t) { if (0 !== t.code) return function (e) { e.reset().then((function () { return e.getEntitlements() })).then((function (e) { r.debug("swg: reload entitlements - ", e.entitlements) })).catch((function (e) { r.debug("swg: entitlements reload failed - ", e) })) }(i), void r.log("swg: subscribe response - " + t.message); t.data && I(t.data) } else r.log("swg: empty response"); n.broadcast("swgCheckoutComplete"), e.complete().then((function () { g(s) })).catch((function (e) { r.log("swg: complete failed:", e) })) })) }, I = function (e) { e && t.getProvider().loginByToken && t.getProvider().loginByToken(e) }, S = !1, E = !1; return { name: "swg", __protected__: { injectMarkup: function (e) { var n; if (!S && e) { r.debug("swg: rendering swg markup with config:", e); var t = '{\n "@context": "http://schema.org",\n "@type": "CreativeWork",\n "isAccessibleForFree": ' + e.isAccessibleForFree; !1 === e.isAccessibleForFree && e.productId && (t = t + ',\n "isPartOf": {\n "@type": ["CreativeWork", "Product"],\n "name" : "' + e.resourceName + '",\n "productID": "' + e.productId + '"\n }'), t += "\n}"; var o = document.createElement("script"); o.type = "application/ld+json", o.innerHTML = t, null === (n = document.getElementsByTagName("script")[0].parentNode) || void 0 === n || n.appendChild(o), S = !0 } }, addLibrary: function () { var e; if (!E) { r.debug("swg: adding swg.js library"); var n = document.createElement("script"); n.type = "text/javascript", n.setAttribute("subscriptions-control", "manual"), n.async = !0, n.src = "https://news.google.com/swg/js/v1/swg.js", null === (e = document.getElementsByTagName("script")[0].parentNode) || void 0 === e || e.appendChild(n), E = !0 } }, initSwgFlow: function () { window.SWG.push((function (e) { e.getEntitlements().then((function (n) { if (p = !0, r.debug("swg: getEntitlements", n), n.enablesThis()) { var o = n.getEntitlementForSource("google"); if (v = n.entitlements, !o) return void (v && k(v).then((function () { r.debug("swg: checkExternalEntitlement"), n.ack() }), (function () { r.log("swg: checkExternalEntitlement failed") }))); b(o).then((function (o) { if (f) r.debug("swg: onPaymentResponse is already triggered. Skipping entitlements flow."); else if (o) switch (o.type) { case"USER_FOUND": if (t.isUserValid()) return void r.error("swg: user found, but not valid"); r.debug("swg: user found, initiate login prompt"); var i = o.user_token; if (function (e) { return r.__protected__.getCookie(d) && r.__protected__.getCookie(d).includes(e) }(o.type)) return; e.showLoginPrompt().then((function () { I(i), g(s) })).catch((function (e) { (function (e) { r.__protected__.setCookieConsent("vx", d, e, { expires: 30, path: "/" }) })(o.type), r.log("swg: showLoginPrompt failed", e) })); break; case"TERM_FOUND": r.debug("swg: term found, initiate deferred account creation"); var a = o.term_id; e.completeDeferredAccountCreation({ entitlements: n, consent: !0 }).then((function (n) { r.debug("swg: completeDeferredAccountCreation", n), C(n, n.purchaseData, n.userData, e, a, c) })).catch((function (e) { r.log("swg: completeDeferredAccountCreation failed", e) })); break; default: r.debug("swg: check subscription response type " + o.type + ". Nothing to do") } }), (function () { r.log("swg: checkSubscription failed") })), n.ack() } })).catch((function (e) { r.log("swg: get entitlements failed", e) })) })), _() } }, registerCallback: function (e, n) { l.addEvent(e), l.registerCallback(e, n) } } }(); pn.container.register("swg", {useValue: li}), pn.swg = pn.container.resolve("swg"); var di = function () { var e = pn.container.resolve("util"), n = pn.container.resolve("analytics"), t = pn.container.resolve("offer"), r = pn.container.resolve("user"), o = pn.container.resolve("api"), i = !1, a = "", s = {}, c = {}; function u(n) { return new Promise((function (t) { var i = { aid: pn.aid, rid: "", account_linking_token: e.getQueryParamByName("account_linking_token"), user_token: r.getProvider().getToken(), user_provider: r.getProvider().getName() }; n && (i.rid = n), o.callApi("/fbia/subscriptionPayload/generate", i, (function (e) { e && e.data && (a = e.data), t(null) })) })) } var l = function () { u().then((function () { a && p() })) }, d = function (n) { if (n) { var t = new Promise((function (e) { setTimeout((function () { e(null) }), 1e3 * pn.redirectToFbTimeout) })), r = u(n); e.__protected__.waitAllPromises([t, r]).then((function () { p() })) } else e.error("fbsubscriptions: 'rid' could not be empty on generating subscription payload") }, p = function () { var n = e.getQueryParamByName("account_linking_token"), t = e.getQueryParamByName("redirect_uri") + "?account_linking_token=" + encodeURIComponent(n); a && (t += "&subscription_payload=" + encodeURIComponent(a)), window.location.href = t }, f = function (e, t) { s[e] || (s[e] = !0, n.fbpixel.event({eventType: bo.TRACK_EVENT, payload: {eventName: e, eventParams: t}})) }, m = function (e, t) { c[e] || (c[e] = !0, n.fbpixel.event({ eventType: bo.TRACK_CUSTOM_EVENT, payload: {eventName: e, eventParams: t} })) }, v = function () { return i }; return { name: "fbsubscriptions", checkUserAccessAndRedirectToFb: function () { u().then((function () { p() })) }, isInitialized: v, __private__: {isInitialized: v}, __protected__: { init: function () { if (!i) { n.fbpixel.initialize(), t.registerCallback("loaded", (function () { var n = e.getQueryParamByName("surface"); ("meter_limit_reached" === n || "locked_article" === n) && !pn.inappBrowserReturn && m("ViewPaywall", {surface: "IA"}) })); pn.addHandler("loginSuccess", (function (e) { u().then((function () { e.registration ? m("CreateAccount") : m("LogIntoAccount", {is_subscriber: !!a}), a && setTimeout((function () { p() }), 200) })) })), pn.addHandler("experienceExecute", (function () { r.isUserValid() && l() })), t.registerCallback("alreadyPurchased", (function (e) { d(e.rid) })), t.registerCallback("startCheckout", (function (e) { f("InitiateCheckout", {offer_code: e.offerId, campaign_code: e.termId}) })), t.registerCallback("complete", (function (e) { e.hasOwnProperty("chargeCurrency") && e.hasOwnProperty("chargeAmount") && f("Purchase", { currency: e.chargeCurrency, value: e.chargeAmount, offer_code: e.offerId, campaign_code: e.termId }), d(e.rid) })), t.registerCallback("close", (function () { p() })), i = !0 } } } } }(); pn.container.register("fbsubscriptions", {useValue: di}), pn.fbsubscriptions = pn.container.resolve("fbsubscriptions"); pn.container.register("cxense", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("jqUtils"), t = e.resolve("util"), r = e.resolve("analytics"), o = e.resolve("recWidgetService").__protected__.getInstance(), i = [], a = function () { return void 0 !== pn.cxCdnUrl && "" !== pn.cxCdnUrl ? pn.cxCdnUrl : "https://cdn.cxense.com" }, s = function () { return void 0 !== pn.cxenseSiteId && "" !== pn.cxenseSiteId }, c = function (e) { return void 0 !== window.cX && void 0 !== window.cX.library && (e || void 0 !== window.cX.CCE && void 0 !== window.cX.CCE.library) }, u = function (e) { return void 0 !== e.cxenseCustomerPrefix && "" !== e.cxenseCustomerPrefix }, l = function (e, n) { var r, o, i, a = "anon", s = function () { for (var e = [], r = 0; r < arguments.length; r++) e[r] = arguments[r]; n && t.debug.apply(t, e) }; e.uid && "anon" !== e.uid && "" !== e.uid && (a = !(null === (i = null === (o = e.eventExecutionContext) || void 0 === o ? void 0 : o.accessList) || void 0 === i || !i.length) ? "hasActiveAccess" : "registered", s("c1x: adding externalId", { uid: e.uid, prefix: e.cxenseCustomerPrefix })); if (s("c1x: adding CustomParameters userState", {userState: a}), s("c1x: sending pageview event"), "anon" !== a ? t.__protected__.setVxUsersToDataLayer(((r = {})[e.uid] = { prefix: e.cxenseCustomerPrefix || "", type: "VX" }, r)) : t.__protected__.setVxUsersToDataLayer(null), Nr.set("userStatus", a), n) { Nr.set("siteId", pn.cxenseSiteId); var c = window.cX = window.cX || {}; c.callQueue = c.callQueue || [], c.callQueue.push(["sendPageViewEvent", {location: pn.customPageUrl || void 0}]) } }, d = function (e) { var n = null, t = []; function r() { n && clearTimeout(n), n = null, e(t), t = [] } return function (e) { n || (n = setTimeout(r, 10)), t.push(e) } }((function (e) { if (s()) { for (var n = [], a = function () { var t = e[c] || {}; o.showRecommendation({ widgetConfig: t, createPlaceholderFn: p(t.widgetId, t.displayMode) }) && n.push({ widgetParams: { widgetId: t.widgetId, targetElementId: "cxense-" + t.widgetId, experienceId: t.experienceId, trackingId: t.trackingId }, widgetCallback: function (e) { var n = e && e.response; if (n && !e.response.error) { "modal" === t.displayMode && o.fixWidgetModalWidth(o.findWidget(t.widgetId)); for (var a = 0; a < n.items.length; a++) { var s = n.items[a].id; -1 === i.indexOf(s) && i.push(s) } r.log.event({ eventType: wo.LOG_AUTO_MICRO_CONVERSION, payload: { trackingId: t.trackingId, eventGroupId: "init", eventType: yo.EXTERNAL_EVENT, customParams: {source: "CX"} } }) } } }) }, c = 0; c < e.length; c++) a(); f((function () { (function () { var e = pn.cxenseSiteId; t.debug("c1x: setting siteId: ", e), window.cX.setSiteId(e) })(), window.cX.CCE.runMulti(n, ["id"], i) })) } else t.debug("c1x: can not show recommendation because siteId is not configured using `setCxenseSiteId`") })), p = function (e, t) { return function () { var r = document.createElement("div"); n.addClass("tp-cxense-placeholder-".concat(t), r), n.addClass("tp-widget-placeholder", r); var o = document.createElement("div"); return o.id = "cxense-".concat(e), r.appendChild(o), r } }, f = function (e) { window.cX = window.cX || {}, window.cX.CCE = window.cX.CCE || {}, window.cX.CCE.callQueue = window.cX.CCE.callQueue || [], window.cX.CCE.callQueue.push(["invoke", e]) }, m = function (e) { return c(e) }; return { name: "cxense", __protected__: { showRecommendation: d, clearWidgets: function () { o.clearWidgets() }, sendPageViewEvent: function (e) { var n = !0; !s() && !u(e) && (n = !1), !s() && u(e) && (t.debug("cxense: can not send pageview because siteId is not configured using `setCxenseSiteId`"), n = !1), s() && !u(e) && (t.debug("cxense: can not send pageview because customer prefix is not configured in app settings"), n = !1), l(e, n) }, isActivated: s, isCustomerPrefixConfigured: u, isConfiguredPollingAsync: function (e, n, t) { n = n || 0, t = t || 0; var r = 0; return new Promise((function (o, i) { m(e) ? o(!0) : setTimeout((function a() { m(e) ? o(!0) : r >= t ? i(e ? "c1x: cX object is not found after " + t + " retries with " + n + "ms interval" : "c1x: cX and cX.CCE objects are not found after " + t + " retries with " + n + "ms interval") : (r++, setTimeout(a, n)) }), n) })) }, invokeCxenseFn: f, getC1XIntegrationVersion: function () { return void 0 !== pn.c1XIntegrationVersion && "" !== pn.cxenseSiteId ? pn.c1XIntegrationVersion : "N/A" }, loadCxLibIfNeeded: function () { var e = "cxLibLoading"; t.waitCall(e, (function () { var n; if (!s() || !c(!0)) { t.startCall(e); var r, o = document.getElementsByTagName("script")[0], i = document.createElement("script"); i.onerror = function (n) { r && clearTimeout(r), t.doneCall(e), t.debug("c1x: error during load of cx.js. ", n) }, i.onload = function () { r = setTimeout((function () { t.doneCall(e) }), 500), t.debug("c1x: cx.js has been successfully loaded") }, i.async = !0, i.type = "text/javascript", pn.c1XLoadCce ? i.src = a() + "/cx.cce.js" : i.src = a() + "/cx.js", t.debug("c1x: start loading cx.js on the page..."), null === (n = o.parentNode) || void 0 === n || n.insertBefore(i, o) } })) } } } }() }), pn.cxense = pn.container.resolve("cxense"); var pi, fi, mi, vi, gi, hi = p({ 1: "autoRenewalDisabled", 2: "subscriptionCancellation", 3: "dismissTemplate", 4: "customEvent" }, {5: "customFormSubmitted", 6: "customFormSubmitted", 7: "customFormClosed"}), yi = "finalConfirmation", wi = [1], _i = function (e) { var n = {}, t = function () { var e = {}; return { add: function (n, t, r) { e[n] || (e[n] = {}), e[n][t] || (e[n][t] = []), e[n][t].push(r) }, get: function (n, t) { var r; return (null === (r = e[n]) || void 0 === r ? void 0 : r[t]) || null }, clear: function () { e = {} } } }(), r = function (e) { return hi[e] || e }, o = function (e, n) { return t.get(e, r(n)) }; return { clear: function () { Object.keys(n).forEach((function (e) { n[e] = [] })), t.clear() }, on: function (o, i, a, s, c) { void 0 === s && (s = function () { return !0 }), void 0 === c && (c = !1); var u = r(o), l = {cb: a, check: s, skip: c}; n[u] || (n[u] = [], e(u, (function () { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; n[u].forEach((function (e) { return e.res = null })), n[u].forEach((function (n) { var t, r = n.cb, o = n.check, i = n.skip; o.apply(void 0, e) && (i ? n.skip = !1 : n.res = null !== (t = r.apply(void 0, e)) && void 0 !== t ? t : null) })) }))), i && t.add(i, u, l), n[u].push(l) }, has: function (e, n) { return !!o(e, n) }, get: o, skipOne: function (e, n) { var o = r(n), i = t.get(e, o); return null == i || i.forEach((function (e) { e.skip = !0 })), !!i } } }, bi = function (e, n) { return function (t) { return null !== t ? n(t) : e() } }, ki = function (e) { return (e || {}).continuation || null }, Ci = function (e) { return (e || {}).trackingId || null }, Ii = function (e) { return (e || {}).experienceActionId || null }; !function (e) { e.EQUALS = "equals", e.NOT_EQUALS = "notEquals", e.GREATER = "greater", e.LESS = "less", e.MATCHES = "matches", e.CONTAINS = "contains", e.NOT_CONTAINS = "notContains", e.OCCURS_BEFORE = "occursBefore", e.OCCURS_AFTER = "occursAfter", e.OCCURS_ON = "occursOn", e.OCCURS_WITHIN = "occursWithin", e.NOT_OCCURS_WITHIN = "notOccurWithin", e.ANY_OF = "anyOf", e.EMPTY = "empty", e.NOT_EMPTY = "notEmpty" }(pi || (pi = {})), function (e) { e.TEXT = "TEXT", e.ISO_DATE = "ISO_DATE", e.BOOLEAN = "BOOLEAN", e.NUMBER = "NUMBER", e.SINGLE_SELECT_LIST = "SINGLE_SELECT_LIST", e.MULTI_SELECT_LIST = "MULTI_SELECT_LIST" }(fi || (fi = {})), function (e) { e.VOID = "void", e.STRING_LIST = "stringList", e.NUMBER = "number", e.BOOLEAN = "boolean", e.DATE = "date", e.RELATIVE_DATE = "relativeDate", e.DATE_RANGE = "dateRange", e.RELATIVE_DATE_RANGE = "relativeDateRange" }(mi || (mi = {})), function (e) { e.DAYS = "days", e.WEEKS = "weeks", e.MONTHS = "months", e.YEARS = "years" }(vi || (vi = {})), function (e) { e.AGO = "ago", e.FROM_NOW = "fromNow" }(gi || (gi = {})); var Si, Ei = function (e) { return e.getFullYear() }, Ti = function (e) { return e.getMonth() }, Pi = function (e) { return e.getDate() }, xi = function (e, n) { return e.setFullYear(n) }, Ai = function (e) { return Number(e) }, Oi = function (e, n, t) { var r = Ei(t), o = new Date(e); xi(o, r); var i = new Date(n); return xi(i, r), t <= i && t >= o }, Mi = function (e, n, t) { if (e > n) return !1; if (function (e, n) { var t = e.getTime() - n.getTime(); return Math.floor(t / 31536e6) }(e, n) >= 1) return !0; if (Ei(e) == Ei(n)) return Oi(e, n, t); var r = function (e) { return new Date(Ei(e), 0, 1) }(n), o = function (e) { return new Date(Ei(e), 11, 31) }(e), i = Oi(e, o, t), a = Oi(r, n, t); return i || a }, Ni = function (e, n, t) { if (!e) return null; var r = new Date(n); switch (e) { case vi.DAYS: r.setDate(Pi(r) + t); break; case vi.MONTHS: r.setMonth(Ti(r) + t); break; case vi.YEARS: r.setFullYear(Ei(r) + t); break; case vi.WEEKS: r.setDate(Pi(r) + 7 * t) } return r }, Ri = /^(\d{4})(?:-(\d{2}))?(?:-(\d{2}))?$/, Li = function (e, n) { if (!e) return n ? new Date(n) : null; var t; if (Ri.test(e)) { var r = e.match(Ri) || [], o = r[1], i = r[2], a = void 0 === i ? "1" : i, s = r[3], c = void 0 === s ? "1" : s; t = new Date(Ai(o), Ai(a) - 1, Ai(c)) } else t = new Date(e); return isNaN(t.getTime()) ? null : t }, Ui = function (e, n) { return "Not supported operator '".concat(e, "' for ").concat(n) }, Di = function (e, n, t) { return void 0 === t && (t = function () { }), n.every((function (n) { var r = function (e, n) { try { return n.filter((function (n) { return n.fieldName === e.fieldName })) } catch (e) { return [] } }(n, e); if (!r.length) return t("Values of custom fields ".concat(n.fieldName, " is not found")), !1; var o = r.some((function (e) { return function (e, n, t) { if (!(n.dataType in fi)) return !1; var r = n.dataType, o = ji[r]; if (!o) return t("dataType: ".concat(r, " is not supported")), !1; var i = ""; try { i = JSON.parse(n.value || "") } catch (e) { i = n.value || null } try { return o(e, i, t) } catch (e) { return !1 } }(n, e, t) })); if (!o) { var i = n.fieldName, a = r.map((function (e) { return e.value })).join(", "), s = '"'.concat(n.operator, '": ').concat(JSON.stringify(n.ruleValue)); return t('field "'.concat(i, '":[').concat(a, "] does not match a rule ").concat(s)), !1 } return !0 })) }, ji = ((Si = {})[fi.TEXT] = function (e, n, t) { var r, o, i = e.operator, a = Bi(n, i); if (!a.proceed) return a.result; var s = String(n).trim().toLowerCase(); Vi(e, [mi.STRING_LIST], t); var c = null !== (o = null === (r = e.ruleValue.value) || void 0 === r ? void 0 : r.map((function (e) { return e.trim().toLowerCase() }))) && void 0 !== o ? o : []; switch (i) { case pi.MATCHES: return c.some((function (e) { return s === e })); case pi.CONTAINS: return c.some((function (e) { return s.includes(e) })); case pi.NOT_CONTAINS: return c.every((function (e) { return !s.includes(e) })); default: return t(Ui(i, fi.TEXT)), !1 } }, Si[fi.NUMBER] = function (e, n, t) { var r = e.operator, o = Bi(n, r); if (!o.proceed) return o.result; var i = parseInt(n, 10); if (isNaN(i)) return t("".concat(n, " is not a number")), !1; Vi(e, [mi.NUMBER], t); var a = e.ruleValue.value; switch (r) { case pi.EQUALS: return i === a; case pi.NOT_EQUALS: return i !== a; case pi.GREATER: return i > a; case pi.LESS: return i < a; default: return t(Ui(r, fi.TEXT)), !1 } }, Si[fi.ISO_DATE] = function (e, n, t) { var r, o, i = e.operator, a = Bi(n, i); if (!a.proceed) return a.result; var s = Li(n, null); if (!s) return t("".concat(n, " is not an ISO date")), !1; var c = function () { var e = new Date; return new Date(Ei(e), Ti(e), Pi(e)) }(), u = null, l = null, d = null, p = !1; if ((i === pi.OCCURS_BEFORE || i === pi.OCCURS_AFTER) && (Vi(e, [mi.DATE], t), u = Li(null === (r = e.ruleValue) || void 0 === r ? void 0 : r.value, c)), i === pi.OCCURS_ON) { Vi(e, [mi.DATE, mi.RELATIVE_DATE], t); var f = e.ruleValue, m = e.ruleValue; f.timeUnit || f.regardlessOfYears ? (p = null !== (o = f.regardlessOfYears) && void 0 !== o && o, u = Ni(f.timeUnit, c, f.timeType === gi.AGO ? -f.timeUnitNumber : +f.timeUnitNumber)) : u = Li(null == m ? void 0 : m.value, c) } if (i === pi.OCCURS_WITHIN || i === pi.NOT_OCCURS_WITHIN) { Vi(e, [mi.DATE_RANGE, mi.RELATIVE_DATE_RANGE], t); var v = e.ruleValue; if (v.fromTimeType || v.toTimeUnit) p = v.regardlessOfYears, l = Ni(v.fromTimeUnit, c, v.fromTimeType === gi.AGO ? -v.fromTimeUnitNumber : +v.fromTimeUnitNumber), d = Ni(v.toTimeUnit, c, v.toTimeType === gi.AGO ? -v.toTimeUnitNumber : +v.toTimeUnitNumber); else { var g = e.ruleValue; l = Li(null == g ? void 0 : g.from, c), d = Li(null == g ? void 0 : g.to, c) } } switch (i) { case pi.OCCURS_BEFORE: return s < u; case pi.OCCURS_AFTER: return s > u; case pi.OCCURS_ON: return p ? function (e, n) { var t = Ei(e), r = new Date(e); xi(r, t); var o = new Date(n); return xi(o, t), r.getTime() === o.getTime() }(s, u) : s.getTime() === (null == u ? void 0 : u.getTime()); case pi.OCCURS_WITHIN: return p ? Mi(l, d, s) : !(s < l || s > d); case pi.NOT_OCCURS_WITHIN: return p ? !Mi(l, d, s) : s < l || s > d; default: return t(Ui(i, fi.ISO_DATE)), !1 } }, Si[fi.BOOLEAN] = function (e, n, t) { var r = e.operator, o = Bi(n, r); if (!o.proceed) return o.result; Vi(e, [mi.BOOLEAN], t); var i = e.ruleValue.value, a = Boolean(n); return r === pi.EQUALS ? a === i : (t(Ui(r, fi.BOOLEAN)), !1) }, Si[fi.SINGLE_SELECT_LIST] = function (e, n, t) { var r = e.operator, o = n || []; if (!Array.isArray(o)) return t("".concat(n, " is not an array of string")), !1; var i = qi(o, r); if (!i.proceed) return i.result; Vi(e, [mi.STRING_LIST], t); var a = e.ruleValue.value; switch (r) { case pi.EQUALS: return 1 === (null == a ? void 0 : a.length) && 1 === o.length && o[0] === a[0]; case pi.NOT_EQUALS: return 0 !== o.length && (!a || 1 !== a.length || 1 !== o.length || o[0] !== a[0]); case pi.ANY_OF: return 0 !== o.length && !!a && a.some((function (e) { return e === o[0] })); default: return t(Ui(r, fi.SINGLE_SELECT_LIST)), !1 } }, Si[fi.MULTI_SELECT_LIST] = function (e, n, t) { var r = e.operator, o = n || []; if (!Array.isArray(o)) return t("".concat(n, " is not an array of string")), !1; var i = qi(o, r); if (!i.proceed) return i.result; Vi(e, [mi.STRING_LIST], t); var a = e.ruleValue.value; switch (r) { case pi.EQUALS: return (null == o ? void 0 : o.length) > 0 && o.length === (null == a ? void 0 : a.length) && o.every((function (e) { return a.includes(e) })); case pi.NOT_EQUALS: return o.length > 0 && (o.length !== (null == a ? void 0 : a.length) || !o.every((function (e) { return a.includes(e) }))); case pi.ANY_OF: return !!a && o.some((function (e) { return a.includes(e) })); default: return t(Ui(r, fi.MULTI_SELECT_LIST)), !1 } }, Si); function Vi(e, n, t) { var r; n.some((function (n) { var t; return n === (null === (t = e.ruleValue) || void 0 === t ? void 0 : t.valueType) })) || t("Incorrect value type '".concat(null === (r = e.ruleValue) || void 0 === r ? void 0 : r.valueType, "' for operator '").concat(e.operator, "'")) } var Fi = function (e, n) { var t = function (e, n) { return {result: e, proceed: n} }; return n === pi.EMPTY ? t(e, !1) : n === pi.NOT_EMPTY ? t(!e, !1) : t(e, !0) }; function Bi(e, n) { var t = "string" == typeof e ? !e.trim() : null === e; return Fi(t, n) } function qi(e, n) { var t = !e || 0 === e.length; return Fi(t, n) } var zi = _i(pn.myaccount.registerCallback), Hi = _i(pn.offer.registerCallback), Wi = _i(pn.template.registerCallback), Gi = _i(pn.pianoId.registerCallback), Ji = bi(pn.offer.close, pn.offer.closeInline), Qi = bi(pn.template.close, pn.template.closeInline), Xi = function (e) { return "receipt" === e }, Yi = function (e, n, t) { var r = e.eventType, o = e.parentId, i = e.autoClose, a = function (e) { return t("ExpInt: eventType=".concat(r, ": ").concat(e)) }, s = function (e) { return Ii(e || {}) === o }, c = function (e) { var n = ki(e), t = Ci(e) || void 0; n && (n(t), n.done = !0) }, u = function (e) { var t = ki(e); n(t) }, l = function (e) { var n = e.offerType, t = e.currentState, r = ki(e), o = Ci(e) || void 0; if (!r) return u(e); if ("upgrade" === n && Xi(t)) return r.done = !0, r(new Error("Subscription was upgraded")); if ("purchase" === n) { if (Xi(t)) return r.done = !0, r(o); if (function (e) { return "alreadyHasAccess" === e }(t)) return r.done = !0, r(new Error("Subscription already has access")) } u(e) }, d = function (n, t) { var r = t || {}, a = r.customEventName, u = void 0 === a ? null : a, l = r.containerSelector, d = void 0 === l ? null : l, p = s(t) && (e.customEventNames || []).includes(u); return !!p && (i && (Hi.skipOne(o, 3) || Hi.on(3, o, c, s, !0), Wi.skipOne(o, 3) || Wi.on(3, o, c, s, !0), n(d)), p) }, p = function (e) { var n = e.config, t = e.reason; return s(n) && "customFormSubmitted" !== t }; switch (Number(r)) { case 1: case 2: zi.on(r, o, (function (e) { var t = ki(e), r = (e || {}).subscriptionId, o = void 0 === r ? null : r; t && o && (t.subscriptionId = o), n(t) })); break; case 3: Hi.on(r, o, l, s), Wi.on(r, o, l, s); break; case 4: Hi.on(r, o, u, d.bind(null, Ji)), Wi.on(r, o, u, d.bind(null, Qi)); break; case 5: case 7: Gi.on(r, o, (function (e) { return u(e.config), !0 }), p); break; case 6: Gi.on(r, o, (function (t) { var r = ki(t.config); return !!function (e, n, t) { var r, o = (t || {}).submittedFields, i = void 0 === o ? null : o, a = e.fieldRules, s = i && Di(i, a.targetRules || [], n), c = i && !(null === (r = a.ignoreRules) || void 0 === r || !r.length) && Di(i, a.ignoreRules || [], n); return !(!i || !s || c) || (n("submitted fields are not equal provided rules"), !1) }(e, a, t) && (n(r), !0) }), p); break; default: return void a(r + "is not supported") } }, $i = ["userSegmentTrue", "userSegmentFalse"], Ki = new Set(b(["showForm", "showOffer", "showTemplate", "showRecommendations", "showZuoraOffer", "showNewscycleOffer"], $i, !0)), Zi = new Set($i), ea = "continuation", na = function (e) { return e[ea] || null }, ta = function (e) { var n = na(e); return n && n.subscriptionId }, ra = "executeTemplateInteraction", oa = "/xbuilder/experience/" + ra, ia = "templateInteractionEvent", aa = "formInteractionEvent", sa = [ia, aa], ca = function () { var e = {}; return { endpoint: oa, name: ra, add: function (n) { var t = function (e) { return hi[e] || null }(n.eventType || -1); (function (e) { return sa.includes(e) })(n.type) && t && (e[t] = !0) }, get: function () { return function (e) { return Object.entries(e) }(e).reduce((function (e, n) { var t = n[0]; return n[1] && e.push(t), e }), []) } } }, ua = function (e, n) { return g(void 0, void 0, void 0, (function () { var t; return h(this, (function (r) { switch (r.label) { case 0: if (!function (e) { return !(!e || !wi.includes(e)) }(e)) throw {code: 1}; return t = ca(), [4, n(t)]; case 1: return r.sent(), function () { var e = function (e) { var n = ki(e), t = Ci(e) || void 0, r = e.confirm, o = void 0 === r ? null : r; n && (n.apply(void 0, o ? [t] : [new Error("Final confirmation: confirm is false")]), n.done = !0) }; Hi.on(yi, null, e), Wi.on(yi, null, e) }(), function () { var e = function (e) { var n = ki(e), t = Ii(e), r = Ci(e); if (t && n) return { id: t, run: function () { if (!n.done) return n.done = !0, n(r) } } }, n = function (n, t) { var r = e(t); r && !n.has(r.id, 3) && r.run() }; Hi.on(hi[3], null, n.bind(Hi)), Wi.on(hi[3], null, n.bind(Wi)), Gi.on(hi[7], null, (function (n) { var t = n.config, r = n.reason, o = e(t); if (o) { if ("customFormSubmitted" === r) { var i = Gi.get(o.id, 6); return void ((!i || i.every((function (e) { return !e.res }))) && o.run()) } Gi.has(o.id, 7) || o.run() } })) }(), [2, {registeredEvents: t.get()}] } })) })) }, la = {linkedNodes: {}, executedNodes: [], executedHandlers: {}}, da = function () { return la.executedNodes }, pa = function () { la.executedNodes = [] }, fa = function () { zi.clear(), Hi.clear(), Wi.clear(), Gi.clear(), pa(), la.linkedNodes = {}, la.executedHandlers = {} }; pn.container.register("experience", { useValue: function (e) { void 0 === e && (e = pn.container); var n, t, r, o = e.resolve("jqUtils"), i = e.resolve("util"), a = e.resolve("consent"), s = e.resolve("api"), c = e.resolve("eventUtils"), u = e.resolve("scrollDepth"), l = e.resolve("ajax"), d = e.resolve("viewportExit"), f = e.resolve("idle"), m = e.resolve("interaction"), v = e.resolve("pianoEsp"), g = e.resolve("swg"), h = e.resolve("fbsubscriptions"), y = e.resolve("user"), w = e.resolve("cxense"), _ = e.resolve("logging"), b = e.resolve("composerControlPolicy"), k = e.resolve("analytics"), C = e.resolve("gaCollectingService"), I = [], S = {}, E = "", T = !1, P = "reader_id", x = {}, A = !1, O = {}, M = (n = { applyCss: { fn: function (e) { e.eventParams.ruleList.forEach((function (e) { var n, t = e.classes, r = e.elements; t && (t = t.replace(/[,.]/g, " ").split(" ").filter((function (e) { return "" !== e })), "add" === e.type && (n = o.qa(r)) && n.length && n.forEach((function (e) { t.forEach((function (n) { o.addClass(n, e) })) })), "remove" === e.type && (n = o.qa(r)) && n.length && n.forEach((function (e) { t.forEach((function (n) { o.removeClass(n, e) })) }))); i.debug("exp: css applied with rule:", e) })) }, isAction: !0, shouldFireCallback: !0 }, runJs: { fn: function (e) { if (e.eventParams && e.eventParams.snippet) { var n = e.eventParams.snippet; i.debug("exp: run js with snippet:", n); var t = e.eventExecutionContext; i.debug("exp: set publisher's context and custom:", t), ye("var context = " + JSON.stringify(t) + ";\nvar custom = " + JSON.stringify(pn.customVariables) + ";\n" + n) } }, isAction: !0, shouldFireCallback: !0 }, setCookie: { fn: function (e) { var n = e.eventParams; if (n && void 0 !== n.cookieName && void 0 !== n.cookieValue) { i.debug("exp: set cookie with parameters:", n); var t = (n.isReadableCookie ? "_pc_" : "") + n.cookieName, r = {domain: n.cookieDomain, path: n.cookiePath}; if (!n.isSessionCookie) { var o = new Date; switch (n.expirationUnit) { case"seconds": o.setSeconds(o.getSeconds() + n.expirationValue); break; case"minutes": o.setMinutes(o.getMinutes() + n.expirationValue); break; case"hours": o.setHours(o.getHours() + n.expirationValue); break; case"days": o.setDate(o.getDate() + n.expirationValue); break; case"months": o.setMonth(o.getMonth() + n.expirationValue); break; case"years": o.setFullYear(o.getFullYear() + n.expirationValue); break; default: i.log("Wrong eventParams.expirationUnit : ", n.expirationUnit) } r.expires = o } i.__protected__.setCookieConsent("composer", t, n.cookieValue, r) } }, isAction: !0, shouldFireCallback: !0 }, nonSite: { fn: function (e) { i.debug("exp: non-site action:", e) }, isAction: !0, shouldFireCallback: !0 }, showForm: { fn: function (e) { var n = e.eventParams; if (n && n.formName) { var t = { formName: n.formName, hideIfComplete: n.hideCompletedFields, trackingId: e.eventExecutionContext.trackingId, displayMode: n.displayMode, containerSelector: n.containerSelector, showCloseButton: n.showCloseButton, templateId: n.templateId, variantId: n.templateVariantId, accessToken: y.getProvider().getToken(), experienceActionId: e.eventModuleParams.moduleId, continuation: na(e), subscriptionId: ta(e) }; n.formWidth && n.formWidth.enabled && (t = o.deepExtend({}, {width: n.formWidth.width}, t)), i.debug("exp: show form with params:", n), pn.pianoId.showForm(t) } }, isAction: !0, shouldFireCallback: !0 }, showRecommendations: { fn: function (e, n, t, r) { return we(e, function (e) { var n = { ESP: v.__protected__.showRecommendation.bind(v), CXENSE: w.__protected__.showRecommendation.bind(w) }; return n[e] || function () { } }(e.eventParams.type), _e(r)) }, isAction: !0, shouldFireCallback: !0 }, showOffer: { fn: function (e, n, t, r) { return we(e, (function (e) { return pn.offer.show(e) }), _e(r)) }, isAction: !0, shouldFireCallback: !1 }, showTemplate: {fn: be, isAction: !0, shouldFireCallback: !1}, showZuoraOffer: {fn: be, isAction: !0, shouldFireCallback: !1}, showNewscycleOffer: {fn: be, isAction: !0, shouldFireCallback: !1}, showNewsletterSignup: { fn: function (e, n, t, r) { return we(e, (function (e) { return v.__protected__.showNewsletterSignup(e) }), _e(r)) }, isAction: !0, shouldFireCallback: !1 }, showPushSignUp: { fn: function (e, n, t, r) { return we(e, (function (e) { return v.__protected__.showPushSignup(e) }), _e(r)) }, isAction: !0, shouldFireCallback: !1 }, showLogin: { fn: function (e) { y.showLogin({trackingId: e.eventExecutionContext.trackingId}) }, isAction: !0, shouldFireCallback: !0 }, continueExecution: { fn: function (e, n, t, r) { i.debug("exp: continue execution action:", e, "with requestParameters", n); var o = n || {}; o.experience_id = e.eventExecutionContext.experienceId, o.experience_version = e.eventExecutionContext.experienceVersion, o.context_data = e.eventParams.contextData, Q("auto", o, !0, r) }, shouldFireCallback: !0 }, continueExecutionCompleted: {fn: Ee, shouldFireCallback: !0}, meterActive: { fn: Ee, shouldFireCallback: !0, ga: function (e) { return { eventCategory: "meterActive", eventLabel: "Meter active", experienceId: e.eventExecutionContext.experienceId, meterName: e.eventExecutionContext.currentMeterName } } }, meterExpired: { fn: Ee, shouldFireCallback: !0, ga: function (e) { return { eventCategory: "meterExpired", eventLabel: "Meter expired", experienceId: e.eventExecutionContext.experienceId, meterName: e.eventExecutionContext.currentMeterName } } }, userSegmentTrue: {fn: he, shouldFireCallback: !0}, userSegmentFalse: {fn: he, shouldFireCallback: !0}, experienceExecutionFailed: {fn: Ee, shouldFireCallback: !0}, log: { fn: function (e, n, t, r) { var o = _e(r); re(e.eventModuleParams.moduleId, e, o) }, shouldFireCallback: !1 }, experienceExecute: { fn: function (e, n, t) { e.eventParams.result = t }, shouldFireCallback: !0, ga: function (e) { return { eventCategory: "experienceExecute", eventLabel: "Experience execute", experienceId: e.eventExecutionContext.experienceId } } }, setResponseVariable: { fn: function (e) { return e.eventParams }, isAction: !0, shouldFireCallback: !0, ga: function (e) { return p({ eventCategory: "setResponseVariable", eventLabel: "Set response variable", experienceId: e.eventExecutionContext.experienceId, setResponseVariableId: e.eventModuleParams.moduleId }, e.eventParams.responseVariables) } }, creditRedeemed: { fn: function (e) { i.debug("exp: credit redeemed action:", e) }, isAction: !0, shouldFireCallback: !0 } }, t = {}, r = function (e, n) { return function (t, r, o, a) { var s = _e(a); if (e.isAction) { var c = function (e) { var n = e.eventParams, t = e.eventModuleParams, r = e.eventExecutionContext; return i.debug("exp: fire event 'beforeComposerAction' with eventParams:", n, ", moduleParams:", t, ", context:", r), q.fireCallbacksAndStopOnFirstFalse("beforeComposerAction", n, t, r) }(t); if (!c) return; var u = ae(t), l = ie(t); (u || l) && re(t.eventModuleParams.moduleId, t, s) } var d = t.eventModuleParams.moduleId, p = null != a && a.interactionContext ? la.executedHandlers : O; !p[d] && "N/A" !== d && (p[d] = { experienceId: t.eventExecutionContext.experienceId, moduleName: t.eventModuleParams.moduleName }); var f = (null == a ? void 0 : a.handlers) || {}, m = "on".concat(n[0].toUpperCase()).concat(n.slice(1)); "function" == typeof (null == f ? void 0 : f[m]) && f[m](t, r); var v = Object.assign({}, t); v.eventParams && (v.eventParams = Object.assign({}, t.eventParams)), e.fn(v, r, o, a), e.ga && ge(e.ga(v)), e.shouldFireCallback && function (e) { return function (n) { var t = n.eventParams.callback, r = n.eventParams, o = n.eventModuleParams, a = n.eventExecutionContext; i.debug("exp: fire event ", e, " with eventParams:", r, ", moduleParams:", o, ", context:", a), q.fire("experience", e, !0, r, o, a), t && e !== t && (i.debug("exp: execute event ", e, " with callback: ", t), ye(t)) } }(n)(v) } }, Object.keys(n).forEach((function (e) { if ("function" != typeof n[e].fn) throw new Error("Unsupported config for " + e + " handler"); t[e] = r(n[e], e) })), t), N = { showOffer: function (e) { return ke(e, (function (e) { return pn.offer.deferredShow(e) })) }, showTemplate: Ce, showZuoraOffer: Ce, showNewscycleOffer: Ce }, R = i.profile((function (e, n) { b.__private__.checkLS(), Q("manual", e, !1, {overrides: e, handlers: n}) })), L = function (e, n) { q.addEvent(e), q.registerCallback(e, n) }, U = {}, D = "", j = "", V = "", F = [], B = { HANDLER: "handler", EVENT_CONDITION: "eventCondition", INNER_EVENT_CONDITION: "innerEventCondition", PRELOAD: "preload" }, q = c.createEventManager([]), z = ["showOffer", "showZuoraOffer", "showNewscycleOffer", "showTemplate"]; var H, W = function () { return pn.getExperienceEndpoint(!1) + "/api/v3" }, G = function () { h.__protected__.init() }, J = function e(n, t) { void 0 === t && (t = !1); var r = function (e) { return void 0 === e && (e = !1), e ? da() : I }(t); r.length && (k.log.event({ eventType: wo.LOG_BEACON_REQUEST, payload: { url: W() + "/composer/logExecutionStats", params: { aid: pn.aid, items: JSON.stringify(r), execution_stats_context: E, ts: (new Date).getTime(), source: n } } }), function (e) { void 0 === e && (e = !1), e ? pa() : I = [] }(t)), window.clearTimeout(H), H = window.setTimeout((function () { e("timer" + H, t) }), 2e3) }, Q = function (e, n, t, r) { Boolean((window.pdl || {}).requireConsent && !pn.consent.get()) && i.debug("WARNING: The RequireConsent feature is enabled. The Piano services might be working unstable until user consent provided"), void 0 === pn.main.appHasApplePay() && q.fireCallbacks("experienceFlow", null, "experience", !0); var a = !(null == r || !r.interactionContext), s = new Promise((function (e) { setTimeout((function () { e({}) }), 3e4) })); return Promise.race([pn.main.externalResourcesDelay(), s]).then((function (s) { o.isPlainObject(s) || (i.error("exp: error get external resources ", s), s = {}); var c = {new_bid: Nr.get("browserId")}, u = a ? X : Y; if (w.__protected__.isActivated()) { i.debug("c1x: integration is activated"), w.__protected__.loadCxLibIfNeeded(); var l = o.deepExtend({}, n, s, c, {c1x_integration_version: "v2"}); return u(e, l, t, r) } return u(e, o.deepExtend({}, n, s, c), t, r) })).catch((function (e) { if (a) throw e })) }, X = function (e, n, t, r) { return new Promise((function (o, i) { return Y(e, n, t, r, o, i) })) }, Y = function (e, n, t, r, c, u) { var d = null == r ? void 0 : r.interactionContext; n = n || {}; var p = o.deepExtend({}, {protocol_version: 1}, n); $(p), K(p), Z(p), ne(p), i.hasQueryParamByName(P) && (p[P] = i.getQueryParamByName(P)), i.waitCall("refreshUserToken", (function () { if (t) { var n = d ? la.executedHandlers : O; p.executed_nodes = JSON.stringify(n) } else { pn.main.trackPageUnloadIfNecessary.skipLog(), ee(p), s.getCallParams(p, y.getProvider()), i.removeAffiliateToken(); var f = {url: window.location.href, tags: pn.tags, submitType: e, skipPageViewTrack: me(!!d)}; pn.main.buildPageTrackParams(p, f) } a.__protected__.addConsentsToParams(p), i.debug("exp: Experience initialized with params:", p), i.waitCall("refreshAccessTokenList", (function () { i.startCall((null == d ? void 0 : d.name) || "experienceExecute"); var e, n = function (e) { var n = e || null; return n || (i.__protected__.cameFromFbSubscriptions() ? b.denyFbia || (n = "/xbuilder/experience/executeFbia", G()) : b.denyWeb || (n = "/xbuilder/experience/execute")), n && pn.getExperienceEndpoint(!1) + n }(null == d ? void 0 : d.endpoint); if (!n) return i.doneCall((null == d ? void 0 : d.name) || "experienceExecute"), t || Ie(!!d), void i.debug("execute: is denied"); if (-1 !== navigator.appVersion.indexOf("MSIE 9")) e = { dataType: "jsonp", url: n + "?" + o.param(p) }; else { var a = "?" + o.param({aid: p.aid}); e = { type: "post", url: n + a, data: o.deepExtend({}, p, (null == r ? void 0 : r.overrides) || {}), xhrFields: {withCredentials: !0} } } e.success = function (e) { i.doneCall((null == d ? void 0 : d.name) || "experienceExecute"); var n = o.deepExtend({}, p); t || (Ie(!!d), pn.main.registerTrackUnload.skipLog()), te(e.errors), ve(e.models, n, r), null == c || c({code: 0}) }, e.error = function (e) { b.__private__.setPolicyByRequest(e), i.doneCall((null == d ? void 0 : d.name) || "experienceExecute"), t || Ie(!!d); var r = { code: 503, message: "Error: Received error when requesting API response from URL: " + n }; i.debug(r.message), null == u || u(r) }, l.request(e) })) })) }, $ = function (e) { var n = i.__protected__.getCookie("xbc"); n && (e.xbc = n); var t = i.getTbcCookie(); t && t.length > 0 && (e.tbc = t); var r = i.__protected__.getCookie("_pcer"); r && (e.edge_result = r), i.getCampaigns(e), e.custom_cookies = JSON.stringify(i.getCustomCookies()) }, K = function (e) { var n = i.getPushListsCookie(), t = v.__protected__.getNotificationStatus(); n && n.length > 0 && (e.push_list_subscriptions = JSON.stringify(n)), t && (e.push_notification_settings = t) }, Z = function (e) { e.mailing_lists = JSON.stringify(v.__protected__.loadCompleteMailingLists()) }, ee = function (e) { return [{property: "debug", parameter: "debug", skipFalse: !0}, { property: "trackPageView", parameter: "increment_pageview_meter" }].forEach((function (n) { void 0 !== pn[n.property] && (!n.skipFalse || pn[n.property]) && (e[n.parameter] = pn[n.property]) })), e }, ne = function (e) { var n = Nr.get("userSegments"); n && (e.previous_user_segments = JSON.stringify(n)) }, te = function (e) { Array.isArray(e) && (e.length && i.debug("exp: composer execution has been failed with errors"), e.forEach((function (e) { i.debug("exp: " + e.msg) }))) }, re = function (e, n, t) { void 0 === t && (t = !1), function (e, n) { void 0 === n && (n = !1), (n ? da() : I).push(e) }({ mId: e, eId: n.eventExecutionContext.experienceId, eV: n.eventExecutionContext.experienceVersion, eeId: n.eventExecutionContext.executionId }, t) }; function oe(e, n, t, r, o) { return { type: B.HANDLER, eventType: n.eventType, children: [], run: function (i, a) { var s = function (e, n) { var t; return n ? p(p({}, e), ((t = {})[ea] = n, t)) : e }(n, i); e.bind(this, s, t, r, o)(), function (e, n, t, r) { var o = !Ki.has(e), i = Zi.has(e) && (r || 0) < 2; n && (o || i) && !n.done && n(t) }(n.eventType, i, n.eventExecutionContext.trackingId, a) } } } var ie = function (e) { var n, t = e.eventParams.delayBy || {}; return t.value && ("time" === t.type ? n = { type: "timer", timer: t.value } : "scroll" === t.type && (n = {type: "scrollDepth", scrollDepth: t.value, measureType: "pixels"})), n }, ae = function (e) { return e.eventConditions && Array.isArray(e.eventConditions) ? e.eventConditions.length : 0 }, se = function (e, n) { return function () { var t, r = !1; return { type: B.PRELOAD, eventType: n.eventType, children: [], run: function () { !1 === r && (t = e(n), r = !0) }, getPreloadResult: function () { return t } } }() }; function ce(e, n) { var t = function () { return function (e) { x[e.type] || (ge(p({ eventCategory: "beforeBrowserEvent", eventLabel: "Before browser event" }, e)), x[e.type] = !0) }(e), q.fireCallbacksAndStopOnFirstFalse("beforeBrowserEvent", e) }; switch (e.type) { case ia: case aa: Yi(e, (function (e) { return t() && n(e) }), (function (e) { return i.debug(e) })); break; case"viewportExit": d.addListener(n, { detectExitMode: e.detectExitMode, detectBackButtonForMobile: e.detectBackButtonForMobile, clientDevice: e.clientDevice }, t); break; case"scrollDepth": u.addListener(n, {scrollDepth: e.scrollDepth, measureType: e.measureType}, t); break; case"timer": var r = setTimeout((function () { t() && n() }), 1e3 * e.timer); F.push(r); break; case"interaction": m.bind(n, e.interactions, t); break; case"idle": f.addListener(n, e.idleTime, t) } } var ue = function (e) { return e.type === B.HANDLER && -1 === ["continueExecution", "meterActive", "meterExpired"].indexOf(e.eventType) }; function le(e, n, t) { return r = !1, o = !!t, a = t ? la.linkedNodes : S, s = function (t) { re(e.moduleId, n, o); for (var s = a[e.moduleId].children, c = 0; c < s.length; c++) { var u = s[c], l = a[u]; if (!1 === r || ue(l)) try { l.run(t, s.length) } catch (e) { i.error("exp: error execute chain event", l, e) } } r = !0, T && J("chain", o) }, null == t || t.add(e), { type: B.EVENT_CONDITION, children: [], run: function () { ce(e, s) } }; var r, o, a, s } function de(e, n, t) { return r = !1, o = t ? la.linkedNodes : S, a = function () { for (var e = o[n + B.INNER_EVENT_CONDITION].children, t = 0; t < e.length; t++) { var a = e[t], s = o[a]; if (!1 === r || ue(s)) try { s.run() } catch (e) { i.error("exp: error execute chain event", s, e) } } r = !0 }, { type: B.INNER_EVENT_CONDITION, children: [n], run: function () { ce(e, a) } }; var r, o, a } var pe = function (e) { e.swgMarkupData && (i.debug("exp: swg markup data :", e.swgMarkupData), function (e) { g.__protected__.injectMarkup(e) }(e.swgMarkupData), e.swgMarkupData.isAccessibleForFree || g.__protected__.addLibrary()), e.swgEnabled && g.__protected__.initSwgFlow() }, fe = function (e) { if (e) { for (var n = {}, t = 0; t < e.events.length; t++) { var r = e.events[t]; try { "experienceExecute" === r.eventType && ((n = o.deepExtend({}, r.eventExecutionContext)).result = o.deepExtend({}, e)) } catch (e) { i.error("exp: error on execute event: ", r, e) } } return n } i.debug("exp: no composer execution result") }, me = function (e) { return e && (A || 0 !== R.invokeCount) }, ve = function (e, n, t) { if (e) { var r = null == t ? void 0 : t.interactionContext, a = !!r, s = r ? la.linkedNodes : S; i.setTbcCookieFromResponse(e), i.setTacCookieFromResponse(e), i.setAppTimezoneOffsetFromResponse(e), i.setCurrentDomainFromResponse(e), me(a) || function (e) { w.__protected__.sendPageViewEvent({ browserId: e.bid, uid: e.uid, cxenseCustomerPrefix: e.cxenseCustomerPrefix, pageViewId: pn.main.fetchPageViewId(), eventExecutionContext: fe(e.result) }) }(e), function (e) { v.__protected__.setVisitorId(e.bid) }(e), function (e) { D = e.bid }(e), function (e) { e.iss && (j = e.iss) }(e), function (e) { V = e.itemId }(e), function (e) { var n; null !== (n = e.result) && void 0 !== n && n.onContentRestrictedFallback && (i.debug("exp: fire event: contentRestrictedFallback"), q.fireCallbacks("contentRestrictedFallback", void 0, "experience", !0)) }(e), i.setXbcCookieFromResponse(e); var c = e.result, u = {}; if (!c) return void i.debug("exp: no composer execution result"); pe(c), i.debug("exp: processed experiences :", c.experiences), E = e.executionStatsContext, c.debugMessages.forEach((function (e) { i.debug("exp: execute :", e) })); for (var l, d = function (e, n, r) { for (var o = e.eventConditions, a = 0; a < o.length; a++) { var c = o[a], u = c.moduleId, l = o[a - 1], d = !o[a + 1]; if (s[u] || (s[u] = le(c, e, null == t ? void 0 : t.interactionContext)), d) if (s[u].children.push(n), -1 !== z.indexOf(e.eventType) && "viewportExit" === c.type && !ie(e)) { var p = N[e.eventType]; if (!p) { i.error("exp: not found preload handler for event: ", e); continue } var f = n + B.PRELOAD; s[f] = se(p, e), l ? s[l.moduleId].children.push(f) : r.push(f) } l && -1 === s[l.moduleId].children.indexOf(u) && s[l.moduleId].children.push(u) } }, p = [], f = 0, m = 0; m < c.events.length; m++) { var g = c.events[m]; try { var h = g.eventType, y = g.eventModuleParams || {}; if (i.debug("exp: process event '" + h + "' (" + y.moduleId + ")"), "experienceExecute" === h && ((u = o.deepExtend({}, g.eventExecutionContext)).result = o.deepExtend({}, c), i.setUserSegments(u)), !(l = y.moduleId)) { i.error("exp: not found moduleId for linked node event: ", g); continue } var _ = M[h]; if (!_) { i.error("exp: not found handler for event: ", g); continue } s[l] = oe(_, g, n, c, t); var b = ae(g), k = ie(g); if (b || k) { var C = l; if (k) { var I = de(k, l, r); C = l + B.INNER_EVENT_CONDITION, s[C] = I } b ? -1 === p.indexOf(g.eventConditions[0].moduleId) && p.push(g.eventConditions[0].moduleId) : k && p.push(C), d(g, C, p), f++ } else p.push(l) } catch (e) { i.error("exp: error on execute event: ", g, e) } } f <= 3 && (T = !0); for (var P = 0; P < p.length; P++) l = p[P], s[l] && s[l].run(); window.clearTimeout(H), H = window.setTimeout((function () { J("rootTimer" + H, !!r) }), 2e3), U = u } }; function ge(e) { k.ga.event({eventType: Co.EMIT_GA_EVENT, payload: p({aid: pn.aid}, e)}) } function he(e, n, t, r) { var o = ae(e), i = _e(r); o && re(e.eventModuleParams.moduleId, e, i) } function ye(e) { try { eval.call(window, "(function () {" + e + "\n})();") } catch (e) { i.log("Error occurred in RunJS\n", e) } } function we(e, n, t) { void 0 === t && (t = !1); var r = (t ? la.linkedNodes : S)[e.eventModuleParams.moduleId + B.PRELOAD]; return r && r.getPreloadResult ? r.getPreloadResult().show() : Se(e, n) } function _e(e) { return !(null == e || !e.interactionContext) } function be(e, n, t, r) { return we(e, (function (e) { return pn.template.show(e) }), _e(r)) } function ke(e, n) { return i.debug("exp: run preloading for:", e), Se(e, (function (e) { return n(e) })) } function Ce(e) { return ke(e, (function (e) { return pn.template.deferredShow(e) })) } function Ie(e) { void 0 === e && (e = !1), J("reset", e), e ? fa() : (F.forEach((function (e) { clearTimeout(e) })), F = [], d.removeListeners(), f.removeListeners(), u.removeListeners(), m.unbindAll(), S = {}, O = {}) } function Se(e, n) { var t = o.deepExtend({}, e.eventParams), r = e.eventExecutionContext.splitTests, a = e.eventExecutionContext.activeMeters, s = e.eventParams.formNameByTermId, c = e.eventParams.hideCompletedFields, u = function (e) { var n; if (!j) return null; var t = e || {}; return { issuerId: j, premium: t.user && t.user.premium || null, redemptionCandidateItemId: V || null, creditStates: t.creditStates || null, userId: (null === (n = t.user) || void 0 === n ? void 0 : n.uid) || null, targetGroups: {l1: "target", l2: null} } }(e.eventExecutionContext), l = na(e), d = ta(e); if (t.trackingId = e.eventExecutionContext.trackingId, t.experienceId = e.eventExecutionContext.experienceId, t.experienceExecutionId = e.eventExecutionContext.executionId, t.experienceActionId = e.eventModuleParams.moduleId, t.experienceConditions = e.eventConditions, l && (t.continuation = l, t.subscriptionId = d), t.browserId = D, t.onStartCreditRedemption = function (n) { var t = o.deepExtend({}, n), r = "https://www.piano.io" === j, i = e.eventExecutionContext.user && "anon" !== e.eventExecutionContext.uid; return t.trackingId = e.eventExecutionContext.trackingId || void 0, r && i && (t.uid = e.eventExecutionContext.user.uid || void 0), pn.credit.redeem(t) }, r && r.length > 0) { var p = r.map((function (e) { return e.variantId })); t.splitTestIds = JSON.stringify(p) } if (t.additionalParamNames = [], a && a.length > 0 && (t.activeMeters = JSON.stringify(a)), "showZuoraOffer" === e.eventType) { var f = e.eventParams.ratePlanIds; f && f.length > 0 && (t.zuoraSelectedRatePlanIds = JSON.stringify(f), t.additionalParamNames.push("zuoraSelectedRatePlanIds")) } if ("showNewscycleOffer" === e.eventType) { var m = e.eventParams.ids; m && m.length > 0 && (t.newscycleSelectedIds = JSON.stringify(m), t.additionalParamNames.push("newscycleSelectedIds", "campaignCode", "campaignGroupId")) } if ("showNewsletterSignup" === e.eventType) { var v = e.eventParams.mailingListIds, g = e.eventParams.siteId; v && v.length > 0 && (t.mailingListIds = JSON.stringify(v), t.siteId = g, t.additionalParamNames.push("mailingListIds", "siteId")) } return "showRecommendations" === e.eventType && (t.widgetId = e.eventParams.widgetId, t.placeholder = e.eventParams.placeholder), s && (t.formNameByTermId = JSON.stringify(s), t.hideCompletedFields = c), u && (t.affiliateState = u), i.debug("exp: show with params:", t), C.setParam("splitTestIds", t.splitTestIds), n(t) } function Ee() { return function () { } } return { name: "experience", init: function () { if (!A && !i.__protected__.isCxenseBot()) { A = !0; var e = !0; if (pn.customPreChecks && pn.customPreChecks.length) for (var n = null, t = pn.customPreChecks.length; t--;) try { 1 !== (n = pn.customPreChecks[t]()) && !0 !== n && (e = !1) } catch (e) { } e && Q("auto").then((function () { _.setTime("expExec", Math.floor(performance.now() - window.pnInitPerformance)) })) } }, execute: R, executeTemplateInteraction: function (e) { return void 0 === e && (e = {templateType: 1}), ua(e.templateType || 1, (function (n) { return Q("manual", {template_type: e.templateType || 1}, !1, {interactionContext: n}) })) }, _getLastExecutionResult: function () { return U }, registerCallback: L, __private__: { handlers: M, executedNodes: I, linkedNodes: S, processResult: ve, processErrors: te, show: Se, getTrackingEndpoint: W, initialized: A, registerCallback: L }, __protected__: {sendStatisticsExecutedNodes: J} } }() }), pn.experience = pn.container.resolve("experience"); var ma = function () { var e, n, t = 0, r = document, o = !1, i = "active", a = 6e4, s = function () { var e, n, t; return e = function () { return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) }, function () { return e() + e() + "-" + e() + "-" + e() + "-" + e() + "-" + e() + e() + e() }, t = {}, n = "__ceGUID", { add: function (e, r, o) { return e[n] = void 0, e[n] || (e[n] = "ifvisible.object.event.identifier"), t[e[n]] || (t[e[n]] = {}), t[e[n]][r] || (t[e[n]][r] = []), t[e[n]][r].push(o) }, remove: function (e, r, o) { var i, a, s, c, u; if (o) { if (e[n] && t[e[n]] && t[e[n]][r]) for (a = s = 0, c = (u = t[e[n]][r]).length; s < c; a = ++s) if ((i = u[a]) === o) return t[e[n]][r].splice(a, 1), i } else if (e[n] && t[e[n]] && t[e[n]][r]) return delete t[e[n]][r] }, fire: function (e, r, o) { var i, a, s, c, u; if (e[n] && t[e[n]] && t[e[n]][r]) { for (u = [], a = 0, s = (c = t[e[n]][r]).length; a < s; a++) i = c[a], u.push(i(o || {})); return u } } } }(), c = function () { var e; return function (n, t, r) { return e || (e = n.addEventListener ? function (e, n, t) { return e.addEventListener(n, t.bind(ma), !1) } : n.attachEvent ? function (e, n, t) { return e.attachEvent("on" + n, t, !1) } : function (e, n, t) { return e["on" + n] = t }), e(n, t, r) } }(), u = function () { var e, n = r.createElement("div"), t = n.getElementsByTagName("i"), o = 3; for (e = function () { return n.innerHTML = "\x3c!--[if gt IE " + ++o + "]> 4 ? o : void 0 }(); function l() { var s; return !!o || (e ? c(r, n, (function () { return r.hidden ? p() : d() }), !1) : (s = "blur", u && u < 9 && (s = "focusout"), c(window, s, (function () { return ma.blur() })), c(window, "focus", (function () { return ma.focus() }))), o = !0, function () { var e, n; return (n = function () { return clearTimeout(e), "active" !== i && m(), t = +new Date, e = setTimeout((function () { if ("active" === i) return f() }), a) })(), c(r, "mousemove", n), c(r, "mouseup", n), c(r, "keyup", n), c(r, "touchstart", n), c(window, "scroll", n), c(window, "resize", n), d(n), m(n) }()) } void 0 !== r.hidden ? (e = "hidden", n = "visibilitychange") : void 0 !== r.mozHidden ? (e = "mozHidden", n = "mozvisibilitychange") : void 0 !== r.msHidden ? (e = "msHidden", n = "msvisibilitychange") : void 0 !== r.webkitHidden && (e = "webkitHidden", n = "webkitvisibilitychange"); function d(e) { return "function" == typeof e ? v("focus", (function (n) { e(n) })) : (i = "active", s.fire(ma, "focus"), s.fire(ma, "wakeup"), s.fire(ma, "statusChanged", {status: i})), ma } function p(e) { return "function" == typeof e ? v("blur", (function (n) { e(n) })) : (i = "hidden", s.fire(ma, "blur"), s.fire(ma, "idle"), s.fire(ma, "statusChanged", {status: i})), ma } function f(e) { return "function" == typeof e ? v("idle", (function (n) { e(n) })) : (i = "idle", s.fire(ma, "idle"), s.fire(ma, "statusChanged", {status: i})), ma } function m(e) { return "function" == typeof e ? v("wakeup", (function (n) { return e(n) })) : (i = "active", s.fire(ma, "wakeup"), s.fire(ma, "statusChanged", {status: i})), ma } function v(e, n) { return l(), s.add(ma, e, n), ma } return { name: "ifvisible", setIdleDuration: function (e) { return a = 1e3 * e }, getIdleDuration: function () { return a }, getIdleInfo: function () { var e, n; return e = +new Date, n = {}, "idle" === i ? (n.isIdle = !0, n.idleFor = e - t, n.timeLeft = 0, n.timeLeftPer = 100) : (n.isIdle = !1, n.idleFor = e - t, n.timeLeft = t + a - e, n.timeLeftPer = (100 - 100 * n.timeLeft / a).toFixed(2)), n }, wakeup: m, idle: f, focus: d, blur: p, on: v, off: function (e, n) { return l(), s.remove(ma, e, n), ma }, onEvery: function (e, n) { var t, r = !1; return l(), n && (t = setInterval((function () { if ("active" === i && !r) return n() }), 1e3 * e)), { stop: function () { return clearInterval(t) }, pause: function () { return r = !0 }, resume: function () { return r = !1 }, code: t, callback: n } }, now: function (e) { return l(), i === (e || "active") } } }(); pn.container.register("ifvisible", {useValue: ma}), pn.ifvisible = pn.container.resolve("ifvisible"); var va = function () { var e, n = pn.container.resolve("jqUtils"), t = pn.container.resolve("ifvisible"), r = 0, o = [], i = 60, a = !0, s = function () { m(); var e = o[o.length - 1]; void 0 !== e && void 0 === e.stopTime || o.push({startTime: new Date, startMinute: r, stopTime: void 0}) }, c = function () { if (0 !== o.length && !a) { if (d()) return void f(); var e = o[o.length - 1]; void 0 === e.stopTime && (e.stopTime = new Date, e.stopMinute = r) } }, u = function (e, n, t, r) { var o = Math.abs(e.getTime() - n.getTime()), i = t - r; return o > 6e4 * (i + 10) && (o = 6e4 * i), o }, l = function (e) { var n = parseFloat(e); if (isNaN(n)) throw { name: "InvalidDurationException", message: "An invalid duration time (" + e + ") was provided." }; t.setIdleDuration(n), i = n }, d = function () { return !!(e = n.filter("video,audio", (function (e) { return !e.paused }))).length }, p = function () { setTimeout((function () { c() }), 15e3) }, f = function () { !e || e.forEach((function (e) { n.on(e, "pause", p) })) }, m = function () { !e || e.forEach((function (e) { n.off(e, "pause", p) })) }; return { name: "activetimer", setIdleDurationInSeconds: l, getActiveTimeInSeconds: function () { for (var e = 0, n = 0; n < o.length; n++) { var t = o[n].startTime, i = o[n].stopTime, a = o[n].startMinute, s = o[n].stopMinute; void 0 === i && (i = new Date, s = r), e += u(i, t, s, a) } return Math.floor(e / 1e3) }, getTotalTimeInSeconds: function () { var e = 0, n = o[0]; if (void 0 !== n) { var t = n.startTime, i = n.startMinute, a = new Date; e = u(a, t, r, i) } return Math.floor(e / 1e3) }, resetRecordedTime: function () { o = [], s() }, startTimer: s, stopTimer: c, initialize: function (e) { e && l(e), t.on("blur", (function () { a = !1, c() })), t.on("focus", (function () { a = !0, s() })), t.on("idle", (function () { i > 0 && (a = !1, c()) })), t.on("wakeup", (function () { i > 0 && (a = !0, s()) })), s(), setInterval((function () { r++ }), 6e4) } } }(); pn.container.register("activetimer", {useValue: va}), pn.activetimer = pn.container.resolve("activetimer"); var ga = function () { var e, n = {}, t = [], r = !1, o = {RENDERED_FOR_CURRENT_UNIT: 1, DID_NOT_RENDER_BUT_VIEWED: 2, RECIEVED_FROM_GET_SLOTS: 3}; function i(e) { e && (c(), r = !1), function () { if (r) return !1; r = !0; try { var e = window.googletag = window.googletag || {}; return e.cmd = e.cmd || [], e.cmd.push((function () { e.pubads().addEventListener("slotRenderEnded", d), e.pubads().addEventListener("impressionViewable", p), e.companionAds().addEventListener("slotRenderEnded", d), e.companionAds().addEventListener("impressionViewable", p) })), e.apiReady && e.cmd.push((function () { u(e.pubads().getSlots()), u(e.companionAds().getSlots()) })), !0 } catch (e) { return m(e), !1 } }() } function a(n, t) { "function" == typeof e && e(n, t) } function s(e) { return e && void 0 !== n[e] && null !== n[e] && n.hasOwnProperty(e) } function c() { n = {}, t = [] } function u(e) { for (var n = 0; n < e.length; n++) { var t = e[n]; d({eventSource: o.RECIEVED_FROM_GET_SLOTS, slot: t}) } } function l(e) { var n; try { var t = e.serviceName, r = e.slot; if (!t) { var o = e.slot.getServices(); o && o.length && (t = o[0].getName()) } var i = r.getResponseInformation() || {}, a = r.getSlotId ? r.getSlotId() : {}, s = r.getSlotElementId ? r.getSlotElementId() : a.getDomId ? a.getDomId() : null; n = { companion: !!t && "companion_ads" === t, adUnit: r.getAdUnitPath ? r.getAdUnitPath() : 0, isEmpty: e.isEmpty, elementId: s, advertiserId: e.advertiserId || i.advertiserId, campaignId: e.campaignId || i.campaignId, lineItemId: e.lineItemId || i.lineItemId, creativeId: e.creativeId || i.creativeId, eventSource: e.eventSource || null, size: e.size && e.size.slice(0, 2) || null, viewed: !1, position: null }; var c = document.getElementById(s); if (s && c && (n.position = { top: c.offsetTop, left: c.offsetLeft }, void 0 === e.isEmpty && (n.isEmpty = c.offsetWidth <= 0 && c.offsetHeight <= 0, !n.isEmpty && !n.size))) { var u = r.getSizes(); u && u.length && (n.size = "object" == _typeof(u[0]) ? [u[0].getWidth(), u[0].getHeight()] : u[0]) } } catch (e) { m(e) } return n } function d(e) { e.eventSource = e.eventSource || o.RENDERED_FOR_CURRENT_UNIT; var r = l(e), i = f(e.slot); !i || (n[i] ? r.viewed = n[i].viewed : t.push(i), n[i] = r, a(r, i)) } function p(e) { var r = f(e.slot); if (r) { var i = n[r] || l(e); s(r) || (n[r] = i, t.push(r)), void 0 === i.companion && (i.companion = "companion_ads" === e.serviceName), (!i.eventSource || i.eventSource > o.DID_NOT_RENDER_BUT_VIEWED) && (i.eventSource = o.DID_NOT_RENDER_BUT_VIEWED), i.viewed = !0, a(i, r) } } function f(e) { try { var n = e.getSlotId ? e.getSlotId() : {}, t = e.getSlotElementId ? e.getSlotElementId() : n.getDomId ? n.getDomId() : null, r = e.getAdUnitPath ? e.getAdUnitPath() : 0; return [t, n.getId ? n.getId() : 0, r].join(":") } catch (e) { m(e) } } function m(e) { pn && pn.util && pn.util.error && pn.util.error("DFP module error: ", e) } return i(), { name: "doubleClickForPublisher", initialize: i, setCustomHandler: function (n) { e = n }, getAds: function (e) { var r = [], o = 0, i = t.length; e && function (e) { return "number" == typeof e && isFinite(e) && Math.floor(e) === e }(e) && e > 0 && e < i && (o = i - e); for (var a = o; a < i; a++) { var c = t[a]; !s(c) || r.push(n[c]) } return r }, resetAds: c } }(); pn.container.register("doubleClickForPublisher", {useValue: ga}), pn.doubleClickForPublisher = pn.container.resolve("doubleClickForPublisher"); var ha = function () { var e, n, t, r, o, i, a, s, c = pn.container.resolve("postmessage"), u = pn.container.resolve("util"), l = "https://js.braintreegateway.com/web/3.79.1/js/client.min.js", d = "https://js.braintreegateway.com/web/3.79.1/js/apple-pay.min.js", p = "https://js.braintreegateway.com/web/3.79.1/js/data-collector.min.js", f = ""; c.subscribe("loaded", (function () { m() })), c.subscribe("startCheckout", (function () { m() })), c.subscribe("applePayBtClientToken", (function (e) { y(e.params.clientToken) })), c.subscribe("applePayBtCheckoutFlowProperties", (function (e) { i = e.params.requestEmail, a = e.params.requestPostalAddress })), c.subscribe("applyTaxFailed", (function (n) { e.abort() })), c.subscribe("checkApplePayBtInstance", (function (e) { n && c.broadcast("applePayInit", {}) })), c.subscribe("applyTaxCompleted", (function (e) { h(e.params) })), c.subscribe("applePayBtBeginSession", (function (t) { var r = {}, s = t.params; s.resourceTitle && (r = s), s.termId && (f = s.termId || ""); var u = {currencyCode: s.currencyCode, total: {label: s.resourceTitle, amount: s.chargeAmount}}; v(u); try { o = n.createPaymentRequest(u) } catch (e) { c.broadcast("payment-error", {errorCode: 101}) } (e = new window.ApplePaySession(2, o)).onvalidatemerchant = function (t) { n.performValidation({ validationURL: t.validationURL, displayName: s.resourceTitle || r.resourceTitle }, (function (n, t) { if (n) return e.abort(), void c.broadcast("payment-error", {errorCode: 102}); e.completeMerchantValidation(t) })) }, e.onpaymentauthorized = function (t) { n.tokenize({token: t.payment.token}, (function (n, r) { if (n) return c.broadcast("payment-error", {errorCode: 103}), void e.completePayment(window.ApplePaySession.STATUS_FAILURE); var o = {nonce: r.nonce, cardType: r.details.cardType}; i || a ? g(t, o) : h(o) })) }, e.begin() })); var m = function () { var e = u.__protected__.isApplePayAllowed(); c.broadcast("EVENT_APPLE_PAY_CAN_MAKE_PAYMENTS", {canMakePayments: e}) }, v = function (e) { i && (e.requiredShippingContactFields = ["email"]), a && (e.requiredBillingContactFields = ["postalAddress"]) }, g = function (e, n) { var t = e.payment.billingContact, r = { countryCode: t.countryCode ? t.countryCode.toUpperCase() : t.countryCode, zipCode: t.postalCode, billingZipCode: t.postalCode, nonce: n.nonce, cardType: n.cardType }; e.payment.shippingContact && (r.user = {email: e.payment.shippingContact.emailAddress}), c.broadcast("applePayPaymentAuthorized" + f, r) }, h = function (n) { e.completePayment(window.ApplePaySession.STATUS_SUCCESS), n.deviceData = r.deviceData, c.broadcast("applePayNonce" + f, n) }, y = function (e) { s = e, w() }, w = function () { C() || k(l, (function () { !0, _() })) }, _ = function () { I() || k(p, (function () { !0, b() })) }, b = function () { S() || k(d, (function () { !0, window.braintree.client.create({authorization: s}).then((function (e) { return t = e, window.braintree.dataCollector.create({client: e, kount: !0, paypal: !0}) })).then((function (e) { return r = e, t })).then((function (e) { window.braintree.applePay.create({client: e}, (function (e, t) { e ? c.broadcast("payment-error", {errorCode: 101}) : (n = t, c.broadcast("applePayInit", {})) })) })).catch((function (e) { if (e) return c.broadcast("payment-error", {errorCode: 100}), void u.error("[TP] Client error: " + e.message) })) })) }, k = function (e, n) { u.addScript(e, n) }, C = function () { return u.isScriptAdded(l) }, I = function () { return u.isScriptAdded(p) }, S = function () { return u.isScriptAdded(d) }; return {name: "applePay"} }(); pn.container.register("applePay", {useValue: ha}), pn.applePay = pn.container.resolve("applePay"); var ya = function () { var e = pn.container.resolve("postmessage"), n = pn.container.resolve("util"), t = "", r = {environment: "", billingRequestFlowId: ""}, o = { customer: "", mandate: "", bank_account_ending: "", bank_account_holder: "", bank_name: "", currency: "" }, i = !1; e.subscribe("LOAD_GOCARDLESS_DROPIN", (function (n) { t = n.sender, i ? e.send("GOCARDLESS_DROPIN_LOADED", null, t) : s("https://pay.gocardless.com/billing/static/dropin/v2/initialise.js", (function () { i = !0, e.send("GOCARDLESS_DROPIN_LOADED", null, t) })) })), e.subscribe("GOCARDLESS_DROPIN_MANDATE_CREATION_INIT", (function (e) { r = e.params, i && a() })); var a = function () { window.GoCardlessDropin.create({ billingRequestFlowID: r.billingRequestFlowId, environment: r.environment, onSuccess: function (n) { var r = n.links, i = r.customer, a = r.mandate_request_mandate, s = n.resources.customer_bank_account, c = s.account_number_ending, u = s.account_holder_name, l = s.bank_name, d = n.mandate_request.currency; o = { customer: i, mandate: a, bank_account_ending: c, bank_account_holder: u, bank_name: l, currency: d }, null, e.send("GOCARDLESS_DROPIN_MANDATE_CREATION_COMPLETE", o, t) }, onExit: function (n) { null, n ? e.send("payment-error", {message: n}, t) : e.send("GOCARDLESS_DROPIN_ENABLE_PLUGIN", null, t) } }).open() }, s = function (e, t) { n.addScript(e, t) }; return {name: "goCardlessDropin"} }(); pn.container.register("goCardlessDropin", {useValue: ya}), pn.goCardlessDropin = pn.container.resolve("goCardlessDropin"); var wa = function () { var e, n, t, r = pn.container.resolve("postmessage"), o = pn.container.resolve("util"), i = !1; return { name: "applePayIntegrationService", initialize: function () { var a = function () { i = o.__protected__.isApplePayAllowed(), r.broadcast("EVENT_APPLE_PAY_CAN_MAKE_PAYMENTS", {canMakePayments: i}) }; r.subscribe("provider-component-initiated", (function () { i && r.broadcast("apple-pay-init", {}) })), r.subscribe("initPwApplePay", (function () { a() })), r.subscribe("startCheckout", (function () { a() })), r.subscribe("pay-session-received", (function (e) { try { n.completeMerchantValidation(e.params.applePaySession) } catch (e) { r.broadcast("payment-error", {errorCode: 111, errors: e}) } })), r.subscribe("apple-pay-complete-payment", (function (e) { !function (e) { return !t || t === e }(e.params.termId) || n.completePayment(e.params.status, e.params.errors) })), r.subscribe("start-purchase", (function (o) { t = o.params.termId || "", e = o.params.resourceName, n = new window.ApplePaySession(3, function (e) { return { countryCode: e.params.countryCode, currencyCode: e.params.currencyCode, supportedNetworks: ["visa", "masterCard", "amex", "discover"], merchantCapabilities: ["supports3DS"], requiredShippingContactFields: e.params.requiredShippingContactFields || [], requiredBillingContactFields: e.params.requiredBillingContactFields || [], total: {label: e.params.resourceName, amount: e.params.chargeAmount} } }(o)), n.onvalidatemerchant = function (n) { !function (e, n) { var o = { validationUrl: e, displayedCaption: n, userToken: null, userProvider: null, userRef: null, janrainCaptureToken: null, domainName: window.location.hostname, aid: null, termId: t, merchantIdentifier: tp.applePayMerchantId }; r.broadcast("apple-pay-pay-session-request", o) }(n.validationURL, e) }, n.onpaymentauthorized = function (e) { try { r.broadcast("apple-pay-payment-authorized", { paymentData: e.payment, termId: t, merchantIdentifier: tp.applePayMerchantId }) } catch (e) { r.broadcast("payment-error", {errorCode: 110, error: e}) } }; try { n.begin() } catch (e) { r.broadcast("payment-error", {errorCode: 112, error: e, termId: t}) } })), r.subscribe("abort-apple-pay-session", (function () { !function () { try { n.abort() } catch (e) { o.error(e) } }() })) }, __protected__: { applePayCanMakePaymentsWithActiveCard: function () { var e = { then: function (e) { return e(null) }, catch: function () { } }; return pn.applePayMerchantId && o.__protected__.isApplePayAllowed() && pn.applePayMerchantId ? window.ApplePaySession.canMakePaymentsWithActiveCard(pn.applePayMerchantId) : e } } } }(); pn.container.register("applePayIntegrationService", {useValue: wa}), pn.applePayIntegrationService = pn.container.resolve("applePayIntegrationService"); var _a = function () { var e, n, t = pn.container.resolve("postmessage"), r = pn.container.resolve("util"), o = pn.container.resolve("ajax"), i = "datatrans-applepay-button", a = !1, s = null, c = null, u = !1, l = function (n) { e = n.sender, v().then(g).then(h) }, d = function (n) { t.send("datatrans-applepay-service-error", n, e) }, p = function (e) { n = e.params, v().then(g).then(f).catch((function () { d({eventName: "init-error", errorCode: 110}) })) }, f = function () { PaymentButton.init(n.applePayConfig) }, m = function () { var e = document.getElementById(i); null !== e && null !== e.firstElementChild ? e.firstElementChild.click() : d({ eventName: "system-error", errorCode: 112 }) }, v = function () { return null !== c || (c = new Promise((function (e) { o.request({ url: tp.getApiEndpoint() + "/anon/datatrans/applepay/config", data: {aid: tp.aid}, dataType: "jsonp", jsonpCallback: "jsonpCallback", success: function (n) { var t = n.config; e(t.url) } }) }))), c }, g = function (e) { if (null !== s) return s; var n = "datatrans-apple-pay"; return document.getElementById(n) ? void 0 : s = new Promise((function (t) { var r = document.createElement("script"); r.addEventListener("load", (function () { return t(null) })), r.src = e, r.id = n, document.body.appendChild(r) })) }, h = function () { u || (PaymentButton.on("init", y), PaymentButton.on("create", w), PaymentButton.on("token", _), PaymentButton.on("abort", (function () { d({eventName: "abort", errorCode: 0}) })), PaymentButton.on("unsupported", (function () { d({eventName: "unsupported", errorCode: 113}) })), PaymentButton.on("error", (function (e) { e && (r.error("datatransApplePayIntegrationService. apple pay button error: " + e), d({ eventName: "error", errorCode: 112 })) })), u = !0) }, y = function () { var e = b(); PaymentButton.create(e, n.paymentConfig).catch((function () { d({eventName: "create-error", errorCode: 111}) })) }, w = function () { r.log("datatransApplePayIntegrationService paymentButtonOnCreate"), t.send("datatrans-applepay-service-ready", null, e) }, _ = function (n) { r.log("datatransApplePayIntegrationService paymentButtonOnToken"), t.send("datatrans-applepay-service-token", n.token.details.token, e) }, b = function () { var e = document.getElementById(i); return null === e && ((e = document.createElement("div")).setAttribute("id", i), e.style.display = "none", document.body.appendChild(e)), e.innerHTML = "", e }; return { name: "datatransApplePayIntegrationService", initialize: function () { !r.__protected__.isApplePayAllowed() && a || (a = !0, t.subscribe("datatrans-applepay-loaded", l), t.subscribe("datatrans-applepay-checkout-initiate-purchase", p), t.subscribe("datatrans-applepay-make-purchase", m)) } } }(); pn.container.register("datatransApplePayIntegrationService", {useValue: _a}), pn.datatransApplePayIntegrationService = pn.container.resolve("datatransApplePayIntegrationService"); var ba = function () { var e, n = pn.container.resolve("postmessage"), t = pn.container.resolve("util"), r = null, o = null, i = !1, a = ""; n.subscribe("stripe-applepay-initialized", (function () { s() })), n.subscribe("stripe-applepay-initiate-purchase", (function (e) { s().then((function () { var n = e.params.apiKey, t = e.params.accountId; null === r && (r = t ? window.Stripe(n, {stripeAccount: t}) : window.Stripe(n)); var o = e.params.paymentRequestPayload; return r.paymentRequest(o) })).then((function (e) { return o = e, e.canMakePayment() })).then((function (e) { i = e && e.applePay, n.broadcast("stripe-applepay-initiate-purchase-complete", {canMakePayment: i}), i && (o.on("cancel", (function () { n.broadcast("stripe-applepay-start-purchase-complete" + a, {status: "fail"}) })), o.on("paymentmethod", (function (e) { var t = e.paymentMethod.billing_details.address, r = {countryCode: t.country, zipCode: t.postal_code, billingZipCode: t.postal_code}, o = e.paymentMethod.id; n.broadcast("stripe-applepay-start-purchase-complete" + a, { status: "success", paymentMethodId: o, payerEmail: e.payerEmail, billingAddress: r }), e.complete("success") }))) })).catch((function (e) { t.error(e), n.broadcast("stripe-applepay-initiate-purchase-complete", {canMakePayment: !1}) })) })), n.subscribe("stripe-applepay-start-purchase", (function (e) { a = e.params.termId || ""; var n = e.params.paymentRequestPayload; o.update(n), o.show() })), n.subscribe("stripe-applepay-abort-request", (function () { o && o.abort(), n.broadcast("stripe-applepay-reopen-request") })); var s = function () { if (null != e) return e; if (!document.getElementById("stripe.js")) { var n = document.createElement("script"); return n.src = "https://js.stripe.com/v3/", n.id = "stripe.js", document.body.appendChild(n), e = new Promise((function (e) { n.onload = function () { e(null) } })) } }; return {name: "stripeApplePayIntegrationService"} }(); pn.container.register("stripeApplePayIntegrationService", {useValue: ba}), pn.stripeApplePayIntegrationService = pn.container.resolve("stripeApplePayIntegrationService"); var ka = function () { var e = pn.container.resolve("postmessage"), n = pn.container.resolve("util"); e.subscribe("obi-handle-3ds-challenge", (function (e) { var r = e.params; if (window.obick) t(r); else { if (-1 === ["https://jsl.qat.obi.aol.com/obipmservice/obick.umd.js", "https://jsl.prod.obi.aol.com/obipmservice/obick.umd.js"].indexOf(r.obickUrl)) return void n.error("Untrusted obickUrl detected: " + r.obickUrl); var o = document.createElement("script"); o.src = r.obickUrl, o.id = "obick.js", document.body.appendChild(o), o.onload = function () { n.log("".concat(o.id, " onload")), t(r) } } })); var t = function (t) { if (t.stepUpUrl && 0 !== t.stepUpUrl.indexOf("http")) n.error("There is no link in params.stepUpUrl for OBI"); else { var r = {stepUpUrl: t.stepUpUrl, jwt: t.jwt, transactionId: t.transactionId, zIndex: t.zIndex}; window.obick.handle3dsChallenge(r).then((function (t) { n.debug(t), e.broadcast("obi-3ds-challenge-complete", { threeDSTransactionId: t.threeDSTransactionId, challengeStatus: t.challengeStatus }) })).catch((function (t) { n.error(t), e.broadcast("obi-3ds-challenge-complete", {error: "challenge-error", payload: t}) })) } }; return {name: "obi3DSChallenge"} }(); pn.container.register("obi3DSChallenge", {useValue: ka}), pn.obi3DSChallenge = pn.container.resolve("obi3DSChallenge"); var Ca = function () { var e = pn.container.resolve("jqUtils"), n = pn.container.resolve("util"), t = pn.container.resolve("api"), r = pn.container.resolve("user"), o = pn.container.resolve("pianoId"), i = {displayMode: "inline", containerSelector: "body", loginSuccess: p}, a = "reader_id", s = function () { return "/" + pn.aid + "/execution/amp" }, c = function () { return s() + "/login" }, u = function () { window.location.href = n.getQueryParamByName("return") + "#success=true" }; var l = function (e) { return /^\w+$/i.test(e) }, d = function (e) { var r = {}; if (r.reader_id = n.getQueryParamByName(a), r.reader_id) { var o = pn.getExperienceEndpoint(!1); t.callApi(s() + "/logout", r, e, o, !1) } else n.log("reader_id cannot be empty") }; function p(e, r) { var o = e || {}; if (o.reader_id || (o.reader_id = n.getQueryParamByName(a)), o.reader_id) { var i = pn.getExperienceEndpoint(!1); t.callApi(c(), o, r, i, !1) } else n.log("reader_id cannot be empty") } return { name: "amp", showLogin: function (t) { t = t || {}; var a = r.getProvider(); if (a.getName() === o.getName()) { var s; s = t.loginSuccess && e.isFunction(t.loginSuccess) ? t.loginSuccess : u; var c = function () { p({}, s) }, l = Object.assign({}, i, t); r.isUserValid() ? c() : (l.loginSuccess = c, o.show(l)) } else n.log("Current user provider" + a.name + " is not allowed for amp") }, logout: function (n) { n = e.isFunction(n) ? n : u, r.getProvider().getName() === o.getName() ? o.logout((function () { d(n) })) : d(n) }, login: function (t) { var i = r.getProvider().getName(); i === o.getName() && (t = t ? e.deepExtend({}, t, {userProvider: i}) : {userProvider: i}); var a = {user_transient: !0, user_provider: "publisher_user"}; if (t && t.readerId && (a.reader_id = t.readerId), t && t.userToken && (a.user_token = t.userToken), t && t.userProvider && (a.user_provider = t.userProvider, a.user_transient = !1), !function (t) { if (t && t.userState && e.isPlainObject(t.userState)) { var r = Object.keys(t.userState); if (r.filter(l).length !== r.length) return n.error("user_state accept only contain letters, numbers and underscore"), !1 } return !0 }(t)) return !1; t && t.userState && (a.user_state = JSON.stringify(t.userState)); p(a, (function (n) { 0 === n.code ? t.loginSuccess && e.isFunction(t.loginSuccess) && t.loginSuccess() : t.loginFail && e.isFunction(t.loginFail) && t.loginFail() })) } } }(); pn.container.register("amp", {useValue: Ca}), pn.amp = pn.container.resolve("amp"); var Ia = function () { var e, n = pn.container.resolve("postmessage"), t = [{ resourceRegExp: new RegExp("/checkout/offer/show"), label: "showOffer" }, { resourceRegExp: new RegExp("tinypass.min.js$"), label: "tinypassMinJS" }, {resourceRegExp: new RegExp("/xbuilder/experience/execute"), label: "experienceExecute"}], r = !1, o = [], i = "EVENT_TP_PERFORMANCE_DATA"; function a(e) { e.forEach((function (e) { !function (e) { !function (e) { return t.some((function (n) { return e.name.match(n.resourceRegExp) })) }(e) || function (e) { if (!s()) return void o.push(e); o.push(e), c() }(e) }(e) })) } function s() { return r && e } function c() { !s() || (o.forEach((function (t) { n.send(i, {entry: t}, e) })), o = []) } return function () { if (window.performance && window.PerformanceObserver && "function" == typeof performance.getEntries) { var t = window.PerformanceObserver.prototype.observe; window.PerformanceObserver.prototype.observe = function () { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; try { t.apply(this, e) } catch (e) { } }, n.subscribe("EVENT_LOGGER_READY", (function (n) { e = n.sender, r = !0, c() })), a(performance.getEntries()), new PerformanceObserver((function (e) { a(e.getEntries()) })).observe({entryTypes: ["measure", "resource"]}) } }(), {name: "performanceMetrics"} }(); pn.container.register("performanceMetrics", {useValue: Ia}), pn.performanceMetrics = pn.container.resolve("performanceMetrics"); var Sa = function () { var e = pn.container.resolve("api"), n = pn.container.resolve("pianoId"); return { name: "doubleOptIn", check: function () { !pn.user.isUserValid() || new Promise((function (n) { e.callApi("/email/confirmation/check", {}, (function (e) { n(e) })) })).then((function (e) { e && !1 === e.data && n.showEmailConfirmationRequired() })) } } }(); pn.container.register("doubleOptIn", {useValue: Sa}), pn.doubleOptIn = pn.container.resolve("doubleOptIn"); var Ea = function () { var e = pn.container.resolve("api"), n = pn.container.resolve("postmessage"), t = pn.container.resolve("util"), r = t.debounce((function () { o().then(i, a) }), 1500), o = function () { return new Promise((function (n, t) { var r = {aid: pn.aid}; e.callApi("/externalVerification/synchronizeSubscriptions", r, (function (e) { e && e.data && n(e.data), t(e.message) })) })) }, i = function (e) { n.broadcast("NEWSCYCLE_HAS_BEEN_SYNCHRONIZED_SUCCESS", {data: e}) }, a = function (e) { t.error("newscycle module: sync request failed with error: " + e) }; return {name: "newscycle", syncSubscriptions: r} }(); pn.container.register("newscycle", {useValue: Ea}), pn.newscycle = pn.container.resolve("newscycle"); var Ta = function () { var e = pn.container.resolve("postmessage"), n = {enabled: !1, captcha3SiteKey: "", aid: ""}; function t() { window.grecaptcha.ready(r) } var r = function () { var e = document.createElement("div"); e.id = "tp-recaptcha", document.body.appendChild(e), window.grecaptcha.render("tp-recaptcha", { sitekey: n.captcha3SiteKey, size: "invisible", "error-callback": function () { e.style.display = "none" } }) }, o = function () { window.onCaptchaV3Load = t; var e = document.createElement("script"); e.src = "https://www.google.com/recaptcha/api.js?onload=onCaptchaV3Load&render=explicit", e.type = "text/javascript", e.async = !0, e.defer = !0, document.head.appendChild(e) }, i = function () { e.subscribe("set-captcha-v3-config", (function (e) { !function (e) { e && e.enabled && (n = e, o()) }(e.params.config) })), e.subscribe("get-captcha-v3-config", (function () { e.broadcast("get-captcha-v3-config-value", {config: n}) })) }; e.subscribe("get-captcha-v3-token", (function (e) { window.grecaptcha.ready((function () { return a(e.params.action) })) })); var a = function (n) { window.grecaptcha.execute({action: n}).then((function (n) { e.broadcast("captcha-v3-token", {token: n}) })).catch((function () { e.broadcast("captcha-v3-token", {token: ""}) })) }; return { name: "captchaV3", addCaptchaV3: function () { i() } } }(); pn.container.register("captchaV3", {useValue: Ta}), pn.captchaV3 = pn.container.resolve("captchaV3"); pn.container.register("tinypassErrorHandler", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("postmessage"), t = e.resolve("api"), r = e.resolve("util"), o = e.resolve("analytics"), i = e.resolve("versionService"), a = "EVENT_TP_ERROR_HANDLER", s = "sdk", c = [], u = !0, l = function (e) { if (h(e) && !v(c, e)) { e.tags || (e.tags = ["unknown"]), e.aid = pn.aid, e.v = i.getTinypassVersion(); var n = {details: e}; c.push(n) } }; var d = function (e) { var n = e.params; Array.isArray(n) && n.forEach((function (e) { e.tags.push(pn.aid), l(e) })) }; function p(e) { var n, t; if (e.message.toLowerCase().indexOf("script error") > -1) l({ message: "Probably that is Piano error.", url: window.location.href, tags: [s] }); else { var r = null == e ? void 0 : e.error; if (g(null == r ? void 0 : r.stack)) return !1; l({ stack: null !== (n = null == r ? void 0 : r.stack) && void 0 !== n ? n : "n/a", message: null !== (t = null == r ? void 0 : r.message) && void 0 !== t ? t : "n/a", userAgent: navigator.userAgent, tags: [s] }) } return !1 } var f = function () { setInterval((function () { m(), u = !1 }), 15e3) }, m = function () { var e = c.filter((function (e) { return !e.send })); if (0 !== e.length) { var n = e.map((function (e) { return e.details })), r = {type: "console-error-message", srcType: "ts", log_message: JSON.stringify(n)}; o.log.event({ eventType: wo.LOG_BEACON_REQUEST, payload: {url: t.getEndpoint() + "/anon/error/log", params: r} }), e.forEach((function (e) { return e.send = !0 })) } }, v = function (e, n) { var t = e.map((function (e) { return JSON.stringify(e.details) })), r = JSON.stringify(n); return -1 !== t.indexOf(r) }, g = function (e) { return -1 === (null == e ? void 0 : e.indexOf("tinypass")) }, h = function (e) { var n = !!r.__protected__.getLocalStorageItem("tinypassErrorHandlerTestMode"); return e.tags.indexOf("wgt_err") >= 0 || n || 0 === y(0, 1e3) }, y = function (e, n) { var t = e - .5 + Math.random() * (n - e + 1); return Math.round(t) }, w = function (e, n) { return void 0 === e && (e = []), n ? e.concat(n) : e }; return { name: "tinypassErrorHandler", addError: function (e, n) { try { var t = {place: n, tags: [s]}; e instanceof Error ? (t.stack = e.stack, t.message = e.message) : t.stack = JSON.stringify(e), u && (t.tags = w(t.tags, "initError")), l(t) } catch (e) { } }, initialize: function () { try { pn.isSandbox() || (n.subscribe(a, d), null === (e = window.addEventListener) || void 0 === e || e.call(window, "error", p), f()) } catch (e) { console.warn("Cannot start watching errors", e) } var e } } }() }), pn.tinypassErrorHandler = pn.container.resolve("tinypassErrorHandler"); pn.container.register("main", { useValue: function (e) { void 0 === e && (e = pn.container); var n = e.resolve("api"), t = e.resolve("cookie"), r = e.resolve("jqUtils"), o = e.resolve("util"), i = e.resolve("logging"), a = e.resolve("fingerprint"), s = e.resolve("user"), c = e.resolve("sha1"), u = e.resolve("activetimer"), l = e.resolve("scrollDepth"), d = e.resolve("doubleClickForPublisher"), f = e.resolve("offer"), m = e.resolve("viewportExit"), v = e.resolve("idle"), g = e.resolve("experience"), h = e.resolve("pianoId"), y = e.resolve("pianoEsp"), w = e.resolve("applePayIntegrationService"), _ = e.resolve("datatransApplePayIntegrationService"), b = e.resolve("cxense"), k = (e.resolve("tinypassErrorHandler"), e.resolve("captchaV3")), C = pn.container.resolve("postmessage"), I = e.resolve("composerControlPolicy"), S = e.resolve("analytics"), E = e.resolve("consent"), T = "exrs", P = {minutes: 120}, x = null, A = "voucher_code", O = "__pvi", M = !1, N = !1, R = {}, L = null, U = { APPLE_PAY_BT: 25, APPLE_PAY_SS: 38, APPLE_PAY_STRIPE: 41, APPLE_PAY_PW: 42, DATATRANS_APPLE_PAY: 61 }, D = new Set(Object.values(U)), j = void 0, V = [], F = !1, B = function () { if ("iP" === navigator.platform.substr(0, 2)) { var e = /constructor/i.test(window.HTMLElement), n = window.navigator, t = n.userAgent, r = !!window.indexedDB; if ((-1 === t.indexOf("Safari") || -1 === t.indexOf("Version") || n.standalone) && (r || !e) && window.statusbar.visible && (window.webkit && window.webkit.messageHandlers || !e || r)) return !0 } return !1 }(); var q, z, H, W = function () { return o.parseJSON(o.__protected__.getCookie(O), !0) || {} }, G = function () { return o.getCurrentDomainFromCookie(O, !0) }, J = function (e, n) { var t = R; R = {}; var r = {}; for (var o in t) if (t.hasOwnProperty(o)) for (var i in r[o] = r[o] || [], t[o]) t[o].hasOwnProperty(i) && r[o].push(t[o][i]); _e(r, e, n) }, Q = function () { return g.execute.invokeCount > 0 && Nr.refresh(), b.__protected__.clearWidgets(), Nr.get("pageViewId") }; function X() { function e(e, n, t) { t = t || "0"; var r = String(e); return r.length >= n ? r : new Array(n - r.length + 1).join(t) + r } if (Ce()) return Ie(); var n = o.randomString(16), t = c.hash([a.getFingerprint(), window.location.href].join("")), r = new Date; return [[e(r.getFullYear(), 4), e(r.getMonth() + 1, 2), e(r.getDate(), 2), e(r.getHours(), 2), e(r.getMinutes(), 2), e(r.getSeconds(), 2), e(r.getMilliseconds(), 3)].join("-"), n, t].join("-") } var Y = function (e) { var n = {path: "/", expires: 1, domain: z.currentDomain}; return e && (n.domain = e), n }, $ = function (e, n) { e.domain = n.domain, e.time = (new Date).getTime(), o.__protected__.setCookieConsent("vx", O, o.toJSON(e, !0), n) }, K = function (e) { var n = (new Date).getTime(), t = 6e4 * o.getBrowserTimezoneOffset(), r = o.getAppTimezoneOffset(), i = new Date(e.time).setHours(0, 0, 0, 0) + 864e5 - t - r; return e.time + 18e5 < n || n >= i }, Z = function () { if (o.__protected__.cameFromFbSubscriptions() || !z.currentDomain) return !1; var e = o.getReferrer(); if (L && L === e) return !1; var n = o.getHostname(e), t = new RegExp(z.currentDomain.replace(/\./g, "\\.").replace(/^\\./, "\\.?") + "$").test(n); return Boolean(n) && !t }, ee = function () { var e = W(); (!e || !e.id || !e.time || K(e) || Z()) && (e.id = "v-" + X()), function (e) { var n = Y(); e.domain || z.currentDomain ? $(e, n) : o.waitCall("domainIsReceived", (function (t) { ue(t), n.domain = t, $(e, n) })) }(e), z.visit = e }, ne = function (e, n, t) { var i, s, c, u = "manual", l = !1; if (void 0 === n) n = window.location.href; else { if ("object" != _typeof(n)) throw new Error("First parameter to track page must be a URL or an object"); var d = n; if (void 0 === d.url) throw new Error("Must supply url property"); n = d.url, void 0 !== d.tags && (t = d.tags), void 0 !== d.submitType && (u = d.submitType), l = d.skipPageViewTrack } t || (t = pn.tags), pn.customPageUrl && (e.custom_page_url = o.prepareUrlParameter(pn.customPageUrl)), void 0 !== t ? "[object Array]" !== Object.prototype.toString.call(t) && "[object String]" !== Object.prototype.toString.call(t) ? (o.log("Tags must be an array or a comma-separated string, ignoring supplied tags"), t = "") : t instanceof Array && (t = t.join(",")) : t = "", l || H.track(), e.page_session_id = H.pageSessionId, e.track_count = H.trackCount, ye(e), pn.contentCreated ? c = pn.contentCreated : pn.contentCreatedSelector && r.queryEl(pn.contentCreatedSelector) && (c = null === (i = r.queryEl(pn.contentCreatedSelector)) || void 0 === i ? void 0 : i.innerHTML), c && (pn.contentCreated || (pn.contentCreated = c), e.content_created = c), "boolean" == typeof pn.contentIsNative && (e.content_is_native = pn.contentIsNative), pn.zone && (e.zone = pn.zone), pn.itemId && (e.item_id = pn.itemId); var p = pn.contentSection || ce("section"); p && (e.content_section = p); var f = pn.contentAuthor || ce("author"); f && (e.content_author = f); var m = pn.contentId || ce("id"); m && (e.content_id = m); var v, g = o.__protected__.getCookie("sailthru_hid"); g && (e.sailthru_hid = g), L && L === o.getReferrer() ? v = "" : (v = o.getReferrer(), L = v), e.referer = o.prepareUrlParameter(v), t && (e.tags = t), e.url = o.prepareUrlParameter(n), e.fingerprint = a.getFingerprint(), e.adblocker = o.getAdblockStatus(), (e.adblocker === o.ADBLOCKER_STATUS.ENABLED_AFTER_DISABLED || e.adblocker === o.ADBLOCKER_STATUS.ENABLED) && (pn.setCustomParam("_abr", o.getAdblockerStatusReason(), "user", !0), pn.setCustomParam("_absh", o.getAdblockerHistoryCookieInfo().cookieValue + "", "user", !0)), e.timezone_offset = o.getBrowserTimezoneOffset(), e.submit_type = u; var h = se(); e.visit_id = h, e.new_visit = ie(h); var y = function () { return Nr.get("content") || {} }; return e.keywords = (null === (s = y().keywords) || void 0 === s ? void 0 : s.join(",")) || "", e.title = y().title || "", e.description = y().description || "", e.content_type = y().type || "", ["keywords", "title", "description", "content_type"].forEach((function (n) { e[n] = e[n].substr(0, 8192) })), e.custom_variables = JSON.stringify(pn.customVariables), re(e), E.__protected__.addConsentsToParams(e), e }, te = function () { return ae(), {} }, re = function (e) { var n = {}; return pn.customParams && (n = r.deepExtend({}, pn.customParams)), r.isEmptyObject(n) || (e.custom_params = JSON.stringify(n)), e }, oe = function () { return H.id }, ie = function (e) { var n = z.lastTrackedVisitId !== e; return z.lastTrackedVisitId = e, n }, ae = function () { z.checkForRefresh = !0 }, se = function () { return z.checkForRefresh && (ee(), z.checkForRefresh = !1), z.visit.id }, ce = function (e) { return (document.head.querySelector("meta[name=" + e + "]") || {}).content }, ue = function (e) { z.currentDomain = e }, le = function () { return !(pn.endpoint && pn.endpoint.match(/sandbox/)) }, de = function (e, t, r, a) { pn.aid && 0 !== pn.aid.length ? !le() || (i.setTime("track", Math.floor(performance.now() - window.pnInitPerformance)), o.waitCall("refreshAccessTokenList", (function () { o.waitCall("offerCreate", (function () { o.startCall("pageTrack"); n.callApi(e, t, (function (e) { o.doneCall("pageTrack"), r && r(e) }), pn.getExperienceEndpoint(!1) + "/api/v3", a) })) }))) : o.log("Must supply a valid tp.aid before calling tp.init()") }, pe = function () { M && H.trackCount > 0 && (fe(), he()) }, fe = function (e) { if (le() && !I.denyAll) try { te(), m.isInitialized() && m.resetSumOfCodesDirectionToDefault(), ge() } catch (e) { o.error("main: error on tracking page unload event: ", e) } }, me = function () { N || (N = !0, fe(!0)) }, ve = function () { M = !0 }, ge = function () { M = !1 }, he = function () { u.resetRecordedTime() }, ye = function (e) { e && (e.pageview_id = oe()) }, we = function (e, n) { if (le() && !I.denyAll) try { pe(); var t = ne({}, e, n); de("/page/track", t), ve() } catch (e) { o.error("main: error on page tracking event: ", e) } }, _e = function (e, n, t) { }, be = function () { var e = o.getQueryParamByName(A); e && f.startRedeemVoucher({voucherCode: e}) }, ke = function () { return x || (x = new Promise((function (e) { if (null !== o.__protected__.getLocalStorageItem(T) && e({has_active_apple_pay_card: o.__protected__.getLocalStorageItem(T)}), !pn.applePayMerchantId) return e({has_active_apple_pay_card: null}), x; Ee((function (e) { g.registerCallback("experienceFlow", (function () { j = !0, e(!0) })) })).then((function (n) { var t = function (n) { e({has_active_apple_pay_card: n}), o.__protected__.setLocalStorageItem("vx", T, n, P) }; n ? w.__protected__.applePayCanMakePaymentsWithActiveCard().then(t) : t(null) })) }))) }; function Ce() { return b.__protected__.isActivated() } var Ie = function () { return o.__protected__.randomStringCxCompatible() }; function Se(e) { return function (n) { var t = n.params; void 0 === j && (j = function (e) { if (!Array.isArray(e) || !e.length) return !1; for (var n = 0, t = e; n < t.length; n++) { var r = t[n]; if (D.has(r)) return !0 } return !1 }(t)), V = t || [], e(j) } } function Ee(e) { return void 0 !== j ? Promise.resolve(j) : B ? (j = !1, Promise.resolve(!1)) : new Promise((function (n) { e(n) })) } var Te = function () { Ee((function (e) { C.subscribe("ACTIVE_PAYMENT_METHODS_IDS_INITIALIZED", Se(e)), C.subscribe("MY_ACCOUNT_ACTIVE_PAYMENT_METHODS_IDS_INITIALIZED", Se(e)) })).then((function (e) { !e || (!F && r.isFunction(w.initialize) && (F = !0, w.initialize()), Pe(V)) })) }, Pe = function (e) { var n = -1 !== e.indexOf(U.DATATRANS_APPLE_PAY); r.isFunction(_.initialize) && n && _.initialize() }; return p(p({name: "main", fetchVisitId: se}, Br({ trackPageUnloadIfNecessary: pe, trackPageUnload: fe, unregisterTrackUnload: ge, isRegisteredTrackUnload: function () { return M }, registerTrackUnload: ve })), { externalResourcesDelay: ke, pageTrack: we, trackPage: function (e, n) { return we(e, n) }, buildPageTrackParams: ne, fetchPageViewId: oe, resetTimer: he, resetAds: function () { d.resetAds() }, trackAd: function (e, n, t) { R[e] || (R[e] = {}), R[e][n] = t, q() }, init: function () { if (Nr.isReady || (o.log("DataLayer should be initialized while calling tp.init()"), o.log("DataLayer was initialized by default configs"), Nr.init()), pn.aid && 0 !== pn.aid.length) { q = o.debounce(J, 3e3), z = { currentDomain: G(), lastTrackedVisitId: W().id, visit: {}, checkForRefresh: !1 }, H = { id: Q(), pageSessionId: "s-" + X(), trackCount: 0, tracked: !1, track: function () { H.tracked ? H.id = Q() : H.tracked = !0, H.trackCount++ } }, Ce() && pn.cxenseSiteId && Nr.set("siteId", pn.cxenseSiteId), ee(), pn.isMockMode || (r.isFunction(d.initialize) && d.initialize(), r.isFunction(u.initialize) && u.initialize(), r.isFunction(l.initialize) && l.initialize()), r.isFunction(v.initialize) && v.initialize(), Te(), r.isFunction(y.__protected__.init) && y.__protected__.init().catch((function () { })), r.isFunction(s.refreshAccessToken) && s.refreshAccessToken(), ke(); var e = s.getProvider(); e.getName() === h.getName() && e.__protected__.extendUserToken(), k.addCaptchaV3(); var n = "cxTrackingId", t = o.getQueryParamByName(n); t && (o.removeQueryParamByName(n), S.log.event({ eventType: wo.LOG_AUTO_MICRO_CONVERSION, payload: { trackingId: t, eventGroupId: "click", eventType: yo.EXTERNAL_LINK, customParams: {href: location.href, source: "CX"} } })) } else o.log("Must supply a valid tp.aid before calling tp.init()") }, checkToRunWidgetImmediately: function () { be(), "pianoId" === s.getProvider().name && o.waitCall("offerCreate", (function () { h.__protected__.checkVerificationCode() })), h.checkAndShowEmailIsNotConfirmed(), r.isFunction(f.checkThreeDSRedirect) && f.checkThreeDSRedirect() }, trackAds: _e, appHasApplePay: function () { return j }, __private__: p(p({ VISIT_ID_COOKIE: O, VOUCHER_QUERY: A, collectedAds: R, unloadRegistered: M, unloadTriggered: N, getPageView: function () { return H }, getVisitContainer: function () { return z }, track: de, checkVoucher: be, setPageViewId: ye, currentEnvironmentSupportsPageTrack: le, invalidateLastVisit: function () { var e = Y(); t.remove(O, e) }, getCurrentDomain: G, loadLastVisit: W, setVisitCurrentDomain: ue, saveVisitCookie: $, getVisitCookieOptions: Y, isTimeExpired: K, refreshVisit: ee, generatePageViewId: X, trackCollectedAds: J }, Br({ buildPageUnloadParams: te, unloadHandler: function () { M && me(), J(!0, "beacon_request"), g.__protected__.sendStatisticsExecutedNodes("unload") }, unloadAction: me })), {buildPageCustomParams: re, hasExternalReferrer: Z}) }) }() }), pn.main = pn.container.resolve("main"); var Pa = function () { var e = null, n = function (n) { e = n && p(p({}, e), n), Nr.isReady && n && (Nr.set("content", e), e = null) }; return { set: function (e, t) { var r; return n(((r = {})[e] = t, r)) }, get: function (n) { var t; return Nr.isReady ? null === (t = Nr.get("content")) || void 0 === t ? void 0 : t[n] : null == e ? void 0 : e[n] }, init: function () { return n(e) } } }(), xa = {predefineValues: []}; window.tp && window.tp.length && (xa.predefineValues = b([], window.tp || [], !0)), pn.tpPredefinedOptions = xa, pn.container.register("tpPredefinedOptions", {useValue: xa}); var Aa = function () { function e(e, n, t, r, o, i, a, s) { this.tpPredefinedOptions = e, this.css = n, this.tinypassErrorHandler = t, this.gaService = r, this.ga4Service = o, this.gaCollectingService = i, this.utilService = a, this.consent = s, this.isDataLayerEnabled = !0, this.fullTPVersion = !1, this.isInitialized = !1, this.aid = "", this.isSensitiveDataProtectionEnabled = !1, this.affiliateTokenName = "affiliateToken", this.cxCdnUrl = "https://cdn.cxense.com", this.c1XLoadCce = !0, this.c1XIntegrationVersion = "v2", this.cxenseLibAwaitingTimeout = 0, this.cxenseLibAwaitingRetryCount = 0, this.trackPages = !0, this.debug = !1, this.userRef = "", this.usePianoIdLiteUserProvider = !1, this.useTinypassAccounts = !1, this.useCondeUserProvider = !1, this.useGigyaUserProvider = !1, this.usePianoIdUserProvider = !1, this.useAidSpecifiedCookies = !1, this.sandbox = !1, this.zIndexes = { backdrop: 3e5, modal: 300050, close: 300100 }, this.requestUserAuthForLinkedTerm = !0, this.customPreChecks = [], this.customParams = {}, this.externalLibraries = [], this.externalLibrariesCallbacks = [], this.customVariables = {}, this.locale = "", this.trackPageView = !0, this.redirectToFbTimeout = 3, this.isDoubleOptInCheckOnAccessCheckEnabled = !1, this.isMockMode = !1, this.inappBrowserReturn = !1, this.events = [], this.appList = [], this.cacheableShowTemplate = !0, this.initCallbacks = [], this.mainModuleInited = !1, this.restCallbacks = [], this.initTries = 0, this.listOfAddedHandlers = [], this.callbacks = [], n.loadOfferCss() } return Object.defineProperty(e.prototype, "tags", { get: function () { var e; return null === (e = Pa.get("tags")) || void 0 === e ? void 0 : e.join(",") }, set: function (e) { var n; n = Array.isArray(e) ? e : "string" == typeof e ? [e] : null, Pa.set("tags", n) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "contentIsNative", { get: function () { return Pa.get("isNative") }, set: function (e) { Pa.set("isNative", e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "contentId", { get: function () { return Pa.get("id") }, set: function (e) { Pa.set("id", e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "contentCreated", { get: function () { var e; return (null === (e = Pa.get("createdAt")) || void 0 === e ? void 0 : e.toString()) || "" }, set: function (e) { Pa.set("createdAt", e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "contentAuthor", { get: function () { var e; return (null === (e = Pa.get("authors")) || void 0 === e ? void 0 : e.join(",")) || "" }, set: function (e) { Pa.set("authors", [e]) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "contentSection", { get: function () { return Pa.get("section") }, set: function (e) { Pa.set("section", e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "zone", { get: function () { return Pa.get("zone") }, set: function (e) { Pa.set("zone", e) }, enumerable: !1, configurable: !0 }), e.prototype.initTp = function () { var e = this; try { var n = this.tpPredefinedOptions.predefineValues; if (this.tpPredefinedOptions.predefineValues = [], n.forEach((function (n) { "function" == typeof n[1] ? "init" === n[0] ? e.initCallbacks.push(n[1]) : e.restCallbacks.push(n) : "init" === n[1] && "function" == typeof n[2] ? e.initCallbacks.push(n[2]) : e.push(n) })), !this.aid && this.initTries < 10) return this.initTries++, void setTimeout((function () { return e.initTp() }), 50); if (!this.aid) return; for (this.tinypassErrorHandler.initialize(); this.restCallbacks.length;) try { var t = this.restCallbacks.shift(); this.push(t) } catch (e) { console.error(e), pn.tinypassErrorHandler.addError(e) } this._init(), this.externalLibraries.length && this.realizeExternalLibraries(), this.isInitialized = !0, window.___tp = function () { } } catch (e) { pn.tinypassErrorHandler.addError(e, "initTP"), console.error("init PN process error", e) } }, e.prototype.realizeExternalLibraries = function () { var e = this, n = []; this.externalLibraries.forEach((function (t) { var r = e.utilService.requireJsFile(t); n.push(r) })), Promise.all(n).then((function () { if (e.externalLibraries = [], e.externalLibrariesCallbacks) for (var n = 0; n < e.externalLibrariesCallbacks.length; ++n) Ma.externalLibrariesCallbacks[n](); Ma.externalLibrariesCallbacks = [] })) }, e.prototype.push = function () { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; var t, r, o; for (t = 0; t < e.length; t++) if ("string" == typeof (r = (o = e[t]).shift()) || r instanceof String) { if (!this[r]) return void console.error("Undefined method " + r); this[r].apply(this, o) } else r.apply(this, o) }, e.prototype.init = function (e) { this.isInitialized ? (this.mainModuleInited || (this.mainModuleInited = !0, this.initMainModuleAfterInitCbk()), e && e()) : (e && this.tpPredefinedOptions.predefineValues.push(["init", e]), this.initTp()) }, e.prototype._init = function () { var e = {}; if ((this.cookieDomain || this.cookiePath) && (e.cookieDefault = { domain: this.cookieDomain, path: this.cookiePath }), Nr.init(e), Pa.init(), this.cxenseSiteId && Nr.set("siteId", this.cxenseSiteId), pn.consent.__protected__.init(), pn.util && pn.util.hasQueryParamByName && pn.util.hasQueryParamByName("xpdebug") && pn.setDebug(!0), pn.util.setTpccCookies(), pn.util.isSafariOrIOsUiWebView() && !pn.user.isUserValid() && pn.util.getQueryParamByName("userToken")) { var n = pn.util.getQueryParamByName("cookieDomain"), t = pn.util.getQueryParamByName("userToken"), r = pn.util.getQueryParamByName("tokenListValue"); pn.util.setAccessTokenListCookie({ cookie_domain: n, value: r }, t), pn.util.removeQueryParamByName("userToken"), pn.util.removeQueryParamByName("cookieDomain"), pn.util.removeQueryParamByName("tokenListValue") } if (this.mainModuleInited || (this.mainModuleInited = !0, this.initMainModuleAfterInitCbk()), pn.itp.init(), !this.aid) { var o = new Error("Incorrect aid integration: ".concat(Ma.aid, " url: ").concat(window.location.href)); this.tinypassErrorHandler.addError(o) } pn.logging.setTime("startInit", Math.floor(window.pnInitPerformance)), pn.logging.setTime("completeInit", Math.floor(performance.now() - window.pnInitPerformance)) }, e.prototype.initMainModuleAfterInitCbk = function () { for (pn.user.providerInit(), this.appList.indexOf(this.aid) < 0 && (this.appList.push(this.aid), pn.main.init()); this.initCallbacks.length;) try { this.initCallbacks.shift()() } catch (e) { console.error(e), pn.tinypassErrorHandler.addError(e) } if (pn.main.checkToRunWidgetImmediately(), this.events) { for (var e = 0; e < this.events.length; e++) this.events[e](); this.events = [] } }, e.prototype.setAid = function (e) { this.aid = e }, e.prototype.enableSensitiveDataProtection = function (e) { this.isSensitiveDataProtectionEnabled = e }, e.prototype.reload = function () { location.href = pn.util.removeVoucherCodeFromUrl(location.href) }, e.prototype.removeSharedAccountCodeFromUrl = function () { location.href = pn.util.removeSharedAccountCodeFromUrl(location.href) }, e.prototype.setGAClientId = function (e) { this.gaClientId = e, this.gaService.recreateWithClientId(e) }, e.prototype.getGAClientId = function () { return this.gaClientId }, e.prototype.enableGACrossDomainLinking = function (e) { var n = this; this.gaCrossDomainLinking = !0; var t = Date.now(); !function r() { var o = window.ga; if (o && "function" == typeof o) try { o((function (t) { if (void 0 !== t && void 0 === e) n.setGAClientId(t.get("clientId")); else if (void 0 !== e) for (var r = o.getAll(), i = 0; i < r.length; i++) { var a = r[i]; if (a.get("trackingId") === e) { n.setGAClientId(a.get("clientId")); break } } })) } catch (e) { } else Date.now() - t < 6e4 && setTimeout(r, 500) }() }, e.prototype.setExcludedGAEvents = function (e) { this.gaCollectingService.setExcludedEvents(e) }, e.prototype.setGA4Config = function (e) { this.ga4Service.setGa4Config(e) }, e.prototype.setTags = function (e) { this.tags = e instanceof Array ? e.join(",") : e }, e.prototype.setCookieDomain = function (e) { "." !== e[0] && (e = "." + e), this.cookieDomain = e }, e.prototype.setCookiePath = function (e) { this.cookiePath = e }, e.prototype.setDontScrollTopModal = function (e) { this.dontScrollTopModal = e }, e.prototype.setUseExperience = function (e) { this.useExperience = e }, e.prototype.setExperimentalIosModal = function (e) { this.experimentalIosModal = e }, e.prototype.setApplePayMerchantId = function (e) { this.applePayMerchantId = e }, e.prototype.setContentIsNative = function (e) { this.contentIsNative = e }, e.prototype.setComposerHost = function (e) { this.composerHost = e }, e.prototype.setEndpoint = function (e) { this.endpoint = e }, e.prototype.setAffiliateTokenName = function (e) { this.affiliateTokenName = e }, e.prototype.setEspEndpoint = function (e) { this.espEndpoint = e }, e.prototype.setCxCdnUrl = function (e) { this.cxCdnUrl = e }, e.prototype.setC1XLoadCce = function (e) { this.c1XLoadCce = e }, e.prototype.setC1XIntegrationVersion = function (e) { this.c1XIntegrationVersion = e }, e.prototype.setDataLayerEnabled = function (e) { this.isDataLayerEnabled = e }, e.prototype.setCxenseSiteId = function (e) { this.cxenseSiteId = e, Nr.set("siteId", e) }, e.prototype.setCxenseLibAwaitingTimeout = function (e) { this.cxenseLibAwaitingTimeout = e }, e.prototype.setCxenseLibAwaitingRetryCount = function (e) { this.cxenseLibAwaitingRetryCount = e }, e.prototype.setContentId = function (e) { this.contentId = e }, e.prototype.setTrackPages = function (e) { this.trackPages = e }, e.prototype.setDebug = function (e) { this.debug = e }, e.prototype.setUserRef = function (e) { this.userRef = e }, e.prototype.setUsePianoIdLiteUserProvider = function (e) { this.usePianoIdLiteUserProvider = e }, e.prototype.setExternalJWT = function (e) { this.externalJWT = e }, e.prototype.getExternalJWT = function () { return this.externalJWT }, e.prototype.setUseTinypassAccounts = function (e) { this.useTinypassAccounts = e }, e.prototype.setUseCondeUserProvider = function (e) { this.useCondeUserProvider = e }, e.prototype.setUseGigyaUserProvider = function (e) { this.useGigyaUserProvider = e }, e.prototype.setUsePianoIdUserProvider = function (e) { this.usePianoIdUserProvider = e }, e.prototype.setPianoIdUrl = function (e) { this.pianoIdUrl = e }, e.prototype.setItemId = function (e) { this.itemId = e }, e.prototype.setUseAidSpecifiedCookies = function (e) { this.useAidSpecifiedCookies = e }, e.prototype.setSandbox = function (e) { this.sandbox = e }, e.prototype.setContentCreatedSelector = function (e) { this.contentCreatedSelector = e }, e.prototype.setContentCreated = function (e) { this.contentCreated = e }, e.prototype.setContentAuthor = function (e) { this.contentAuthor = e }, e.prototype.setContentSection = function (e) { this.contentSection = e }, e.prototype.setZone = function (e) { this.zone = e || "" }, e.prototype.isNonProdEndpoint = function () { return "sandbox" === this.endpoint || /^https?:\/\/(.*sandbox.*|\d+\.dev)\.(tinypass\.com|piano\.io)/i.test(this.endpoint) }, e.prototype.setZIndexes = function (e) { this.zIndexes = e }, e.prototype.setCustomPreCheck = function (e) { this.customPreChecks.push(e) }, e.prototype.setLinkTermSelected = function (e) { this.linkedTermSelected = e }, e.prototype.setLinkedTermSelected = function (e) { this.linkedTermSelected = e }, e.prototype.setRequestUserAuthForLinkedTerm = function (e) { this.requestUserAuthForLinkedTerm = e }, e.prototype.setCustomParam = function (e, n, t, r) { var o = ["content", "user", "request"]; if (t || (t = "content"), t = t.toLowerCase(), o.indexOf(t) < 0) throw new Error("Undefined scope " + t + "\nAvailable scopes: " + o.join(", ")); void 0 === this.customParams[t] && (this.customParams[t] = {}), (void 0 === this.customParams[t][e] || r) && (this.customParams[t][e] = []); for (var i = [].concat(n), a = 0; a < i.length; a++) { if ("string" != typeof i[a]) throw new Error("setCustomParam accept only string values or array of strings"); this.customParams[t][e].push(i[a]) } }, e.prototype.resetCustomParam = function (e) { e || (e = "content"), delete this.customParams[e] }, e.prototype.addExternalLibrary = function (e, n) { if ("string" == typeof e) this.externalLibraries.push(e); else for (var t = 0; t < e.length; ++t) this.externalLibraries.push(e[t]); n && this.externalLibrariesCallbacks.push(n), this.isInitialized && this.realizeExternalLibraries() }, e.prototype.setCustomVariable = function (e, n) { this.customVariables[e] = n }, e.prototype.saveCustomVariablesToLocalStorage = function (e) { var n = function (e, n) { pn.consent.__protected__.async((function (t) { var r; return null === (r = t.composer) || void 0 === r ? void 0 : r.localStorage.set(e, n) })) }, t = "__tp-customVariables"; n(t, JSON.stringify(this.customVariables)), e && n(t + "-expiration", Math.floor((new Date).getTime() / 1e3) + e + "") }, e.prototype.restoreCustomVariablesFromLocalstorage = function () { if ("localStorage" in window && null !== window.localStorage) { var e = Ma.util.__protected__.getLocalStorageItem("customVariables"); if (Ma.util.__protected__.removeLocalStorageItem("customVariables"), e) for (var n in e) this.customVariables[n] = e[n] } }, e.prototype.handler = function (e, n) { var t = this.registerPrefixedEvents; return function () { for (var r, o = [pn.offer, pn.template, pn.meter, pn.experience, pn.myaccount, pn.pianoId, pn.tinypassLogin, pn.swg, pn.user, pn.credit], i = 0; i < o.length; i++) { var a = o[i]; if (a) { var s = a.registerCallback(e, n); void 0 !== s && (r = s), void 0 !== (s = t(a, e, n)) && (r = s) } } return r } }, e.prototype.registerPrefixedEvents = function (e, n, t) { for (var r, o, i, a = [{module: "offer", prefix: "checkout"}, { module: "pianoId", prefix: "pianoId" }], s = 0; s < a.length; s++) { var c = a[s]; e.name === c.module && n.substring(0, c.prefix.length) === c.prefix && (r = n.substring(c.prefix.length, c.prefix.length + 1).toLowerCase() + n.substring(c.prefix.length + 1, n.length), void 0 !== (o = e.registerCallback(r, t)) && (i = o)) } return i }, e.prototype.addHandler = function (e, n) { var t = this.handler(e, n); this.isInitialized ? t() : this.events.push(t), this.listOfAddedHandlers.push(e) }, e.prototype.getListOfAddedHandlers = function () { return this.listOfAddedHandlers }, e.prototype.setTrackPageview = function (e) { this.trackPageView = e }, e.prototype.setLocale = function (e) { var n = this; this.locale = e, this.utilService.__protected__.setCookie("LANG", this.locale), this.isInitialized ? this.changeLocale(e) : this.initCallbacks.push((function () { n.changeLocale(e) })) }, e.prototype.setPageURL = function (e) { this.customPageUrl = e }, e.prototype.setAdblockerCookieName = function (e) { this.adblockerCookieName = e }, e.prototype.setMaxCookieExpirationInDays = function (e) { var n = "string" == typeof e ? parseInt(e, 10) : e; if (!(isFinite(n) && n > 0)) throw new Error("maxCookieExpirationInDays must be a positive number"); this.maxCookieExpirationInDays = n }, e.prototype.getMaxCookieExpirationInDays = function () { return this.maxCookieExpirationInDays }, e.prototype.setFbPixelId = function (e) { this.fbPixelId = e }, e.prototype.getFbPixelId = function () { return this.fbPixelId }, e.prototype.setRedirectToFbTimeout = function (e) { this.redirectToFbTimeout = e }, e.prototype.enableDoubleOptInCheckOnAccessCheck = function () { this.isDoubleOptInCheckOnAccessCheckEnabled = !0 }, e.prototype.setCloudflareWorkerUrl = function (e) { this.cloudflareWorkerUrl = e }, e.prototype.getEndpoint = function (e, n) { return e.lastIndexOf("/") === e.length - 1 && (e = e.substr(0, e.length - 1)), e.match(/\/v3$/) && (e = e.substr(0, e.lastIndexOf("/v3"))), e.match(/\/api$/) && (e = e.substr(0, e.lastIndexOf("/api"))), e.match(/^(http[s]?:)?\/\//) || (e = "//" + e), void 0 !== n && n && !e.match(/^http[s]?:/) && (e = "https:" + e), e }, e.prototype._getEndpointRoot = function (e) { var n = "https://buy.tinypass.com"; return !0 === this.sandbox && (this.endpoint = "sandbox"), this.endpoint && ("sandbox" === this.endpoint ? n = "https://sandbox.tinypass.com" : "prod" !== this.endpoint && "production" !== this.endpoint && (n = this.endpoint)), this.getEndpoint(n, e) }, e.prototype._getApiEndpoint = function () { return this._getEndpointRoot() + "/api/v3" }, e.prototype._getTrackingEndpoint = function (e) { void 0 === e && (e = ""); var n = e || this.endpoint; return !0 === this.sandbox ? n = "https://sandbox.tinypass.com" : (void 0 === this.endpoint || null === this.endpoint || "" === this.endpoint || "prod" === this.endpoint || "production" === this.endpoint || this.endpoint.match(/(buy|api|api-v3)\.tinypass\.com/)) && (n = e || "https://api-v3.tinypass.com"), this.getEndpoint(n, !0) }, e.prototype._getExperienceEndpoint = function (e) { var n = "https://c2.piano.io"; return this.composerHost ? n = this.composerHost : (!0 === this.sandbox && (this.endpoint = "sandbox"), this.endpoint && ("sandbox" === this.endpoint ? n = "https://c2-sandbox.piano.io" : "prod" !== this.endpoint && "production" !== this.endpoint && (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = (n = this.endpoint).replace("//buy.tinypass.com", "//c2.piano.io")).replace("//api.tinypass.com", "//c2.piano.io")).replace("//buy-au.piano.io", "//c2-au.piano.io")).replace("//api-au.piano.io", "//c2-au.piano.io")).replace("//buy-ap.piano.io", "//c2-ap.piano.io")).replace("//api-ap.piano.io", "//c2-ap.piano.io")).replace("//buy-eu.piano.io", "//c2-eu.piano.io")).replace("//api-eu.piano.io", "//c2-eu.piano.io")).replace("//sandbox.tinypass.com", "//c2-sandbox.piano.io")).replace("//sandbox.piano.io", "//c2-sandbox.piano.io")).replace("//experience-au.piano.io", "//c2-au.piano.io")).replace("//experience-eu.piano.io", "//c2-eu.piano.io")).replace("//experience-ap.piano.io", "//c2-ap.piano.io")).replace("//experience.tinypass.com", "//c2.piano.io")).replace("//buy.piano.io", "//c2.piano.io")).replace("//api.piano.io", "//c2.piano.io")).replace("//experience.piano.io", "//c2.piano.io")))), this.getEndpoint(n, e) }, e.prototype._isSandbox = function () { return this.sandbox || "sandbox" === this.endpoint || !!this.endpoint && -1 !== this.endpoint.indexOf("//sandbox.tinypass.com") }, e.prototype.changeLocale = function (e) { pn.pianoId.isConfigured() && pn.pianoId.updateLang(e), pn.postmessage.broadcast("langChanged", {lang: e}) }, e.prototype.pageTrack = function (e, n) { pn.main.pageTrack(e, n) }, e.prototype.trackPage = function (e, n) { pn.main.pageTrack(e, n) }, e.prototype.trackPageUnload = function () { pn.main.trackPageUnload() }, e.prototype.trackAds = function (e) { pn.main.trackAds(e) }, e.prototype.trackAd = function (e, n, t) { pn.main.trackAd(e, n, t) }, e.prototype.onLoad = function (e) { this.callbacks.push(e) },e.prototype.getEndpointRoot = function (e) { return this._getEndpointRoot(e) },e.prototype.getExperienceEndpoint = function (e) { return this._getExperienceEndpoint(e) },e.prototype.getApiEndpoint = function () { return this._getApiEndpoint() },e.prototype.getTrackingEndpoint = function (e) { return void 0 === e && (e = ""), this._getTrackingEndpoint(e) },e.prototype.isSandbox = function () { return this._isSandbox() },e.prototype.setCacheableShowTemplate = function (e) { this.cacheableShowTemplate = e },e.prototype.getCacheableShowTemplate = function () { return this.cacheableShowTemplate },e.prototype.setSssAccessToken = function (e) { this.sssAccessToken = e },e.prototype.setSssCallbackUrl = function (e) { this.sssCallbackUrl = e },e.prototype.setSssMode = function (e) { this.sssMode = e },e.prototype.setSssOriginUrl = function (e) { this.sssOriginUrl = e },e.prototype.verifySignature = function (e, n, t) { var r = this.utilService.asUint8Array(window.atob(t)), o = this.utilService.asUint8Array(e), i = this.utilService.asUint8Array(window.atob(n)), a = { name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), hash: {name: "SHA-256"} }; return crypto.subtle.importKey("spki", r, a, !1, ["verify"]).then((function (e) { return crypto.subtle.verify(a, e, i, o) })) },e = function (e, n, t, r) { var o, i = arguments.length, a = i < 3 ? n : null === r ? r = Object.getOwnPropertyDescriptor(n, t) : r; if ("object" == ("undefined" == typeof Reflect ? "undefined" : _typeof(Reflect)) && "function" == typeof Reflect.decorate) a = Reflect.decorate(e, n, t, r); else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(n, t, a) : o(n, t)) || a); return i > 3 && a && Object.defineProperty(n, t, a), a }([pn.singleton(), m(0, pn.inject("tpPredefinedOptions")), m(1, pn.inject("css")), m(2, pn.inject("tinypassErrorHandler")), m(3, pn.inject("gaService")), m(4, pn.inject("ga4Service")), m(5, pn.inject("gaCollectingService")), m(6, pn.inject("util")), m(7, pn.inject("consent")), v("design:paramtypes", [Object, Object, Object, Object, Object, Object, Object, Object])], e),e }(); pn.container.registerSingleton("tinypass", Aa); var Oa = pn.container.resolve("tinypass"); [{n: "polyfill", hM: !1}, {n: "predefine", hM: !1}, {n: "predefineTinypass", hM: !1}, { n: "checkTinypass", hM: !1 }, {n: "css", hM: !0}, {n: "ajax", hM: !0}, {n: "jqUtils", hM: !0}, {n: "cookie", hM: !0}, { n: "localStorage", hM: !0 }, {n: "versionService", hM: !0}, {n: "itp", hM: !0}, {n: "util", hM: !0}, {n: "api", hM: !0}, { n: "postmessage", hM: !0 }, {n: "eventUtils", hM: !0}, {n: "janrain", hM: !0}, {n: "sha1", hM: !0}, { n: "containerUtils", hM: !0 }, {n: "tinypassLogin", hM: !0}, {n: "tinypassAccounts", hM: !0}, {n: "condeUserProvider", hM: !0}, { n: "gigya", hM: !0 }, {n: "jwtDecode", hM: !0}, {n: "log", hM: !0}, {n: "logging", hM: !0}, { n: "observer", hM: !0 }, {n: "gaCollectingService", hM: !0}, {n: "gaService", hM: !0}, {n: "ga4Service", hM: !0}, { n: "acp", hM: !0 }, {n: "pianoIdLite", hM: !0}, {n: "pianoId", hM: !0}, {n: "user", hM: !0}, { n: "viewportExit", hM: !0 }, {n: "template", hM: !0}, {n: "offer", hM: !0}, {n: "myaccount", hM: !0}, {n: "meter", hM: !0}, { n: "fingerprint", hM: !0 }, {n: "scrollDepth", hM: !0}, {n: "idle", hM: !0}, {n: "interaction", hM: !0}, { n: "recWidgetService", hM: !0 }, {n: "piano", hM: !0}, {n: "pianoEsp", hM: !0}, {n: "swg", hM: !0}, {n: "fbpixel", hM: !0}, { n: "fbsubscriptions", hM: !0 }, {n: "cxense", hM: !0}, {n: "experience", hM: !0}, {n: "ifvisible", hM: !0}, { n: "activetimer", hM: !0 }, {n: "doubleClickForPublisher", hM: !0}, {n: "applePay", hM: !0}, { n: "goCardlessDropin", hM: !0 }, {n: "applePayIntegrationService", hM: !0}, { n: "datatransApplePayIntegrationService", hM: !0 }, {n: "stripeApplePayIntegrationService", hM: !0}, {n: "obi3DSChallenge", hM: !0}, { n: "amp", hM: !0 }, {n: "performanceMetrics", hM: !0}, {n: "doubleOptIn", hM: !0}, {n: "newscycle", hM: !0}, { n: "captchaV3", hM: !0 }, {n: "main", hM: !0}, {n: "tinypassErrorHandler", hM: !0}, {n: "tinypass", hM: !0}, { n: "postProcessing", hM: !1 }, {n: "clientConfiguration", hM: !0}, {n: "microsoftQuickAuth", hM: !0}].forEach((function (e) { e.hM && !pn.container.isRegistered(e.n) && pn.container.resolve(e.n) })), Object.assign(pn, Oa), Object.setPrototypeOf(pn, Aa.prototype); var Ma = window.tp = pn; pn.initTp() }();