self.AMP_CONFIG = {
    "v": "012305252018001",
    "type": "production",
    "allow-doc-opt-in": ["amp-next-page"],
    "allow-url-opt-in": [],
    "canary": 0,
    "a4aProfilingRate": 0.01,
    "doubleclickSraExp": 0.01,
    "doubleclickSraReportExcludedBlock": 0.1,
    "flexAdSlots": 0.05,
    "flexible-bitrate": 0.1,
    "ios-fixed-no-transfer": 0,
    "story-ad-placements": 0.01,
    "story-disable-animations-first-page": 1,
    "story-load-inactive-outside-viewport": 1,
    "amp-sticky-ad-to-amp-ad-v4": 0,
    "story-video-cache-apply-audio": 0,
    "amp-story-subscriptions": 1
}; /*AMP_CONFIG*/
self.AMP_EXP = {
    "flexible-bitrate": 0.1,
    "amp-story-first-page-max-bitrate": 0.3,
    "story-disable-animations-first-page": 1,
    "story-load-first-page-only": 1,
    "story-load-inactive-outside-viewport": 1,
    "story-ad-page-outlink": 0.02,
    "amp-geo-ssr": 1,
    "story-remote-localization": 1,
    "amp-story-subscriptions": 1,
    "attribution-reporting": 0.04
}; /*AMP_EXP*/ ;
self, self.AMP = self.AMP || [];
try {
    AMP._ = AMP._ || {}, self.AMP && !Array.isArray(self.AMP) || function() {
        function t(t, i) {
            for (var n = 0; n < i.length; n++) {
                var r = i[n];
                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
            }
        }

        function i(i, n, r) {
            return n && t(i.prototype, n), r && t(i, r), i
        }
        var n, r = function() {
                function t() {
                    this.tt = new e
                }
                return t.prototype.abort = function() {
                    if (!this.tt.it && (this.tt.it = !0, this.tt.nt)) {
                        var t = {
                            "type": "abort",
                            "bubbles": !1,
                            "cancelable": !1,
                            "target": this.tt,
                            "currentTarget": this.tt
                        };
                        this.tt.nt(t)
                    }
                }, i(t, [{
                    key: "signal",
                    get: function() {
                        return this.tt
                    }
                }]), t
            }(),
            e = function() {
                function t() {
                    this.it = !1, this.nt = null
                }
                return i(t, [{
                    key: "aborted",
                    get: function() {
                        return this.it
                    }
                }, {
                    key: "onabort",
                    get: function() {
                        return this.nt
                    },
                    set: function(t) {
                        this.nt = t
                    }
                }]), t
            }();

        function s(t, i) {
            for (var n = i || 0, r = this.length, e = n >= 0 ? n : Math.max(r + n, 0); e < r; e++) {
                var s = this[e];
                if (s === t || t != t && s != s) return !0
            }
            return !1
        }

        function u(t, i) {
            (null == i || i > t.length) && (i = t.length);
            for (var n = 0, r = new Array(i); n < i; n++) r[n] = t[n];
            return r
        }

        function o(t, i) {
            var n = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"];
            if (n) return (n = n.call(t)).next.bind(n);
            if (Array.isArray(t) || (n = function(t, i) {
                    if (t) {
                        if ("string" == typeof t) return u(t, i);
                        var n = Object.prototype.toString.call(t).slice(8, -1);
                        return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? u(t, i) : void 0
                    }
                }(t)) || i && t && "number" == typeof t.length) {
                n && (t = n);
                var r = 0;
                return function() {
                    return r >= t.length ? {
                        done: !0
                    } : {
                        done: !1,
                        value: t[r++]
                    }
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }

        function h() {
            return n || (n = Promise.resolve(void 0))
        }
        var a = function() {
            var t = this;
            this.promise = new Promise((function(i, n) {
                t.resolve = i, t.reject = n
            }))
        };

        function c(t) {
            return new Promise((function(i) {
                i(t())
            }))
        }

        function f(t) {
            var i = Object.getOwnPropertyDescriptor(t, "message");
            if (null != i && i.writable) return t;
            var n = t.message,
                r = t.stack,
                e = new Error(n);
            for (var s in t) e[s] = t[s];
            return e.stack = r, e
        }

        function l(t) {
            for (var i, n = null, r = "", e = o(arguments, !0); !(i = e()).done;) {
                var s = i.value;
                s instanceof Error && !n ? n = f(s) : (r && (r += " "), r += s)
            }
            return n ? r && (n.message = r + ": " + n.message) : n = new Error(r), n
        }

        function v(t) {
            var i, n;
            null === (i = (n = self).__AMP_REPORT_ERROR) || void 0 === i || i.call(n, t)
        }

        function d(t) {
            var i = l.apply(null, arguments);
            setTimeout((function() {
                throw v(i), i
            }))
        }

        function m(t) {
            var i = l.apply(null, arguments);
            return i.expected = !0, i
        }

        function p(t) {
            return (p = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                return typeof t
            } : function(t) {
                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
            })(t)
        }
        var g = Object.prototype,
            b = g.hasOwnProperty,
            y = g.toString;

        function w(t) {
            return "[object Object]" === y.call(t)
        }

        function A(t) {
            var i = Object.create(null);
            return t && Object.assign(i, t), i
        }

        function x(t, i) {
            return b.call(t, i)
        }

        function E(t) {
            var i = A();
            for (var n in t)
                if (x(t, n)) {
                    var r = t[n];
                    i[n] = w(r) ? E(r) : r
                }
            return i
        }
        var P = /^[a-z][a-z0-9._]*-[a-z0-9._-]*$/,
            O = ["annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph"],
            I = {
                "childList": !0,
                "subtree": !0
            };

        function M(t, i) {
            if (!P.test(i) || O.includes(i)) throw new t('invalid custom element name "'.concat(i, '"'))
        }
        var T = function() {
                function t(t, i) {
                    this.t = t, this.rt = i, this.et = A()
                }
                var i = t.prototype;
                return i.define = function(t, i, n) {
                    this.rt.define(t, i, n);
                    var r = this.et,
                        e = r[t];
                    e && (e.resolve(), delete r[t])
                }, i.get = function(t) {
                    var i = this.rt.getByName(t);
                    if (i) return i.ctor
                }, i.whenDefined = function(t) {
                    var i = this.t;
                    if (i.Promise, M(i.SyntaxError, t), this.rt.getByName(t)) return h();
                    var n = this.et,
                        r = n[t];
                    return r || (r = new a, n[t] = r), r.promise
                }, i.upgrade = function(t) {
                    this.rt.upgrade(t)
                }, t
            }(),
            S = function() {
                function t(t) {
                    this.t = t, this.st = A(), this.ot = "", this.ut = null, this.ht = null, this.ct = [t.document]
                }
                var i = t.prototype;
                return i.current = function() {
                    var t = this.ut;
                    return this.ut = null, t
                }, i.getByName = function(t) {
                    var i = this.st[t];
                    if (i) return i
                }, i.getByConstructor = function(t) {
                    var i = this.st;
                    for (var n in i) {
                        var r = i[n];
                        if (r.ctor === t) return r
                    }
                }, i.define = function(t, i, n) {
                    var r = this.t,
                        e = r.Error,
                        s = r.SyntaxError;
                    if (n) throw new e("Extending native custom elements is not supported");
                    if (M(s, t), this.getByName(t) || this.getByConstructor(i)) throw new e('duplicate definition "'.concat(t, '"'));
                    this.st[t] = {
                        name: t,
                        ctor: i
                    }, this.ft(t);
                    for (var u, h = o(this.ct, !0); !(u = h()).done;) {
                        var a = u.value;
                        this.upgrade(a, t)
                    }
                }, i.upgrade = function(t, i) {
                    for (var n, r = !!i, e = i || this.ot, s = o(this.lt(t, e), !0); !(n = s()).done;) {
                        var u = n.value;
                        r ? this.vt(u) : this.upgradeSelf(u)
                    }
                }, i.upgradeSelf = function(t) {
                    var i = this.getByName(t.localName);
                    i && this.dt(t, i)
                }, i.lt = function(t, i) {
                    return i && t.querySelectorAll ? t.querySelectorAll(i) : []
                }, i.dt = function(t, i) {
                    var n = i.ctor;
                    if (!(t instanceof n)) {
                        this.ut = t;
                        try {
                            if (new n !== t) throw new this.t.Error("Constructor illegally returned a different instance.")
                        } catch (t) {
                            d(t)
                        }
                    }
                }, i.vt = function(t) {
                    var i = this.getByName(t.localName);
                    if (i && (this.dt(t, i), t.connectedCallback)) try {
                        t.connectedCallback()
                    } catch (t) {
                        d(t)
                    }
                }, i.bt = function(t) {
                    if (t.disconnectedCallback) try {
                        t.disconnectedCallback()
                    } catch (t) {
                        d(t)
                    }
                }, i.ft = function(t) {
                    var i = this;
                    if (this.ot) this.ot += ",".concat(t);
                    else {
                        this.ot = t;
                        var n = new this.t.MutationObserver((function(t) {
                            t && i.gt(t)
                        }));
                        this.ht = n;
                        for (var r, e = o(this.ct, !0); !(r = e()).done;) {
                            var s = r.value;
                            n.observe(s, I)
                        }! function(t, i) {
                            var n, r = t.Document,
                                e = t.Element,
                                s = t.Node,
                                u = t.document,
                                o = r.prototype,
                                h = e.prototype,
                                a = s.prototype,
                                c = o.createElement,
                                f = o.importNode,
                                l = a.appendChild,
                                v = a.cloneNode,
                                d = a.insertBefore,
                                m = a.removeChild,
                                p = a.replaceChild;
                            o.createElement = function(t) {
                                var n = i.getByName(t);
                                return n ? new n.ctor : c.apply(this, arguments)
                            }, o.importNode = function() {
                                var t = f.apply(this, arguments);
                                return t && this === u && (i.upgradeSelf(t), i.upgrade(t)), t
                            }, a.appendChild = function() {
                                var t = l.apply(this, arguments);
                                return i.sync(), t
                            }, a.insertBefore = function() {
                                var t = d.apply(this, arguments);
                                return i.sync(), t
                            }, a.removeChild = function() {
                                var t = m.apply(this, arguments);
                                return i.sync(), t
                            }, a.replaceChild = function() {
                                var t = p.apply(this, arguments);
                                return i.sync(), t
                            }, a.cloneNode = function() {
                                var t = v.apply(this, arguments);
                                return t.ownerDocument === u && (i.upgradeSelf(t), i.upgrade(t)), t
                            };
                            var g = h,
                                b = Object.getOwnPropertyDescriptor(g, "innerHTML");
                            if (b || (g = Object.getPrototypeOf(t.HTMLElement.prototype), b = Object.getOwnPropertyDescriptor(g, "innerHTML")), null !== (n = b) && void 0 !== n && n.configurable) {
                                var y = b.set;
                                b.set = function(t) {
                                    y.call(this, t), i.upgrade(this)
                                }, Object.defineProperty(g, "innerHTML", b)
                            }
                        }(this.t, this)
                    }
                }, i.observe = function(t) {
                    this.ct.push(t), this.ht && this.ht.observe(t, I)
                }, i.sync = function() {
                    this.ht && this.gt(this.ht.takeRecords())
                }, i.gt = function(t) {
                    for (var i, n = o(t, !0); !(i = n()).done;) {
                        var r = i.value;
                        if (r) {
                            for (var e, s = r.addedNodes, u = r.removedNodes, h = o(s, !0); !(e = h()).done;) {
                                var a = e.value,
                                    c = this.lt(a, this.ot);
                                this.vt(a);
                                for (var f, l = o(c, !0); !(f = l()).done;) {
                                    var v = f.value;
                                    this.vt(v)
                                }
                            }
                            for (var d, m = o(u, !0); !(d = m()).done;) {
                                var p = d.value,
                                    g = this.lt(p, this.ot);
                                this.bt(p);
                                for (var b, y = o(g, !0); !(b = y()).done;) {
                                    var w = b.value;
                                    this.bt(w)
                                }
                            }
                        }
                    }
                }, t
            }();

        function R(t, i) {
            i.prototype = Object.create(t.prototype, {
                constructor: {
                    configurable: !0,
                    writable: !0,
                    value: i
                }
            }), _(i, t)
        }

        function _(t, i) {
            Object.setPrototypeOf ? Object.setPrototypeOf(t, i) : {
                __proto__: {
                    "test": !0
                }
            }.test ? t.__proto__ = i : function(t, i) {
                for (var n = i; null !== n && !Object.isPrototypeOf.call(n, t);) {
                    for (var r, e = o(Object.getOwnPropertyNames(n), !0); !(r = e()).done;) {
                        var s = r.value;
                        if (!Object.hasOwnProperty.call(t, s)) {
                            var u = Object.getOwnPropertyDescriptor(n, s);
                            Object.defineProperty(t, s, u)
                        }
                    }
                    n = Object.getPrototypeOf(n)
                }
            }(t, i)
        }

        function k(t) {
            return t == this || this.documentElement.contains(t)
        }

        function C(t, i, n) {
            return i in t ? Object.defineProperty(t, i, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0
            }) : t[i] = n, t
        }

        function N(t, i) {
            var n = Object.keys(t);
            if (Object.getOwnPropertySymbols) {
                var r = Object.getOwnPropertySymbols(t);
                i && (r = r.filter((function(i) {
                    return Object.getOwnPropertyDescriptor(t, i).enumerable
                }))), n.push.apply(n, r)
            }
            return n
        }

        function D(t) {
            for (var i = 1; i < arguments.length; i++) {
                var n = null != arguments[i] ? arguments[i] : {};
                i % 2 ? N(Object(n), !0).forEach((function(i) {
                    C(t, i, n[i])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : N(Object(n)).forEach((function(i) {
                    Object.defineProperty(t, i, Object.getOwnPropertyDescriptor(n, i))
                }))
            }
            return t
        }

        function j(t, i) {
            return (j = Object.setPrototypeOf || function(t, i) {
                return t.__proto__ = i, t
            })(t, i)
        }

        function U(t, i) {
            if ("function" != typeof i && null !== i) throw new TypeError("Super expression must either be null or a function");
            t.prototype = Object.create(i && i.prototype, {
                constructor: {
                    value: t,
                    writable: !0,
                    configurable: !0
                }
            }), i && j(t, i)
        }

        function L(t) {
            return (L = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
                return t.__proto__ || Object.getPrototypeOf(t)
            })(t)
        }

        function z(t, i) {
            if (i && ("object" === p(i) || "function" == typeof i)) return i;
            if (void 0 !== i) throw new TypeError("Derived constructors may only return object or undefined");
            return function(t) {
                if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return t
            }(t)
        }

        function H(t) {
            var i = function() {
                if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
                if (Reflect.construct.sham) return !1;
                if ("function" == typeof Proxy) return !0;
                try {
                    return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), !0
                } catch (t) {
                    return !1
                }
            }();
            return function() {
                var n, r = L(t);
                if (i) {
                    var e = L(this).constructor;
                    n = Reflect.construct(r, arguments, e)
                } else n = r.apply(this, arguments);
                return z(this, n)
            }
        }

        function G(t) {
            return t ? Array.prototype.slice.call(t) : []
        }
        var V = Array.isArray;

        function F(t) {
            return V(t) ? t : [t]
        }

        function q(t, i) {
            for (var n = [], r = 0, e = 0; e < t.length; e++) {
                var s = t[e];
                i(s, e, t) ? n.push(s) : (r < e && (t[r] = s), r++)
            }
            return r < t.length && (t.length = r), n
        }

        function B(t, i) {
            for (var n = 0; n < t.length; n++)
                if (i(t[n], n, t)) return n;
            return -1
        }

        function $(t, i) {
            var n = t.indexOf(i);
            return -1 != n && (t.splice(n, 1), !0)
        }

        function W(t, i) {
            var n = t.length - i.length;
            return n >= 0 && t.indexOf(i, n) == n
        }

        function Y(t) {
            return "string" == typeof t
        }

        function K(t) {
            return 1 == (null == t ? void 0 : t.nodeType)
        }

        function J(t) {
            return "number" == typeof t && isFinite(t)
        }
        var X = "​​​",
            Q = "​​​​";

        function Z(t) {
            return K(t) ? t.tagName.toLowerCase() + (t.id ? "#".concat(t.id) : "") : t
        }

        function tt(t) {
            return t.indexOf(X) >= 0
        }

        function it(t) {
            return t.replace(X, "")
        }

        function nt(t, i) {
            var n, r, e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "Assertion failed";
            if (i) return i;
            t && -1 == e.indexOf(t) && (e += t);
            for (var s = 3, u = e.split("%s"), o = u.shift(), h = [o]; u.length;) {
                var a = arguments[s++],
                    c = u.shift();
                o += Z(a) + c, h.push(a, c.trim())
            }
            var f = new Error(o);
            throw f.messageArray = q(h, (function(t) {
                return "" !== t
            })), null === (n = (r = self).__AMP_REPORT_ERROR) || void 0 === n || n.call(r, f), f
        }

        function rt(t, i, n, r, e) {
            return V(e) ? t(n, e.concat([i])) : t(n, "".concat(e || r, ": %s"), i), i
        }

        function et(t, i, n, r, e, s, u, o, h, a, c) {
            return t
        }

        function st(t, i) {
            return t
        }

        function ut(t, i) {
            return t
        }

        function ot(t, i) {
            return t
        }

        function ht(t, i, n, r, e, s, u, o, h, a, c) {
            return nt(X, t, i, n, r, e, s, u, o, h, a, c)
        }

        function at(t) {
            return JSON.parse(t)
        }

        function ct(t) {
            return "undefined" != typeof TextEncoder ? (new TextEncoder).encode(t) : ft(unescape(encodeURIComponent(t)))
        }

        function ft(t) {
            for (var i = new Uint8Array(t.length), n = 0; n < t.length; n++) {
                var r = t.charCodeAt(n);
                et(r <= 255), i[n] = r
            }
            return i
        }

        function lt(t, i) {
            var n = t.crypto;
            if (!(n = n || t.msCrypto) || !n.getRandomValues) return null;
            var r = new Uint8Array(i);
            return n.getRandomValues(r), r
        }

        function vt(t) {
            var i = !1,
                n = null,
                r = t;
            return function() {
                if (!i) {
                    for (var t = arguments.length, e = new Array(t), s = 0; s < t; s++) e[s] = arguments[s];
                    n = r.apply(self, e), i = !0, r = null
                }
                return n
            }
        }

        function dt(t, i, n) {
            var r = 0,
                e = null;

            function s(s) {
                e = null, r = t.setTimeout(u, n), i.apply(null, s)
            }

            function u() {
                r = 0, e && s(e)
            }
            return function() {
                for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n];
                r ? e = i : s(i)
            }
        }

        function mt(t, i, n) {
            var r = 0,
                e = 0,
                s = null;

            function u() {
                r = 0;
                var o, h = n - (t.Date.now() - e);
                h > 0 ? r = t.setTimeout(u, h) : (o = s, s = null, i.apply(null, o))
            }
            return function() {
                e = t.Date.now();
                for (var i = arguments.length, o = new Array(i), h = 0; h < i; h++) o[h] = arguments[h];
                s = o, r || (r = t.setTimeout(u, n))
            }
        }
        var pt = ["javascript:", "data:", "vbscript:"],
            gt = /(?:^[#?]?|&)([^=&]+)(?:=([^&]*))?/g;

        function bt(t) {
            var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
            try {
                return decodeURIComponent(t)
            } catch (t) {
                return i
            }
        }

        function yt(t) {
            var i, n = A();
            if (!t) return n;
            for (; i = gt.exec(t);) {
                var r = bt(i[1], i[1]),
                    e = i[2] ? bt(i[2].replace(/\+/g, " "), i[2]) : "";
                n[r] = e
            }
            return n
        }

        function wt(t) {
            var i = (t || self).location;
            return yt(i.originalHash || i.hash)
        }
        var At = function(t) {
                return self.AMP_CONFIG ? self.AMP_CONFIG[t] : null
            },
            xt = ("string" == typeof At("cdnProxyRegex") ? new RegExp(At("cdnProxyRegex")) : At("cdnProxyRegex")) || /^https:\/\/([a-zA-Z0-9_-]+\.)?cdn\.ampproject\.org$/;

        function Et(t) {
            if (!self.document || !self.document.head) return null;
            if (self.location && xt.test(self.location.origin)) return null;
            var i = self.document.head.querySelector('meta[name="'.concat(t, '"]'));
            return i && i.getAttribute("content") || null
        }
        var Pt = At("thirdPartyUrl") || "https://3p.ampproject.net",
            Ot = At("thirdPartyFrameHost") || "ampproject.net",
            It = ("string" == typeof At("thirdPartyFrameRegex") ? new RegExp(At("thirdPartyFrameRegex")) : At("thirdPartyFrameRegex")) || /^d-\d+\.ampproject\.net$/,
            Mt = At("cdnUrl") || Et("runtime-host") || "https://cdn.ampproject.org",
            Tt = /^https?:\/\/localhost(:\d+)?$/,
            St = At("errorReportingUrl") || "https://us-central1-amp-error-reporting.cloudfunctions.net/r",
            Rt = At("betaErrorReportingUrl") || "https://us-central1-amp-error-reporting.cloudfunctions.net/r-beta",
            _t = At("localDev") || !1,
            kt = [/(^|\.)google\.(com?|[a-z]{2}|com?\.[a-z]{2}|cat)$/, /(^|\.)gmail\.(com|dev)$/],
            Ct = At("geoApiUrl") || Et("amp-geo-api"),
            Nt = "";

        function Dt(t) {
            var i = t || self;
            return i.__AMP_MODE ? i.__AMP_MODE : i.__AMP_MODE = function(t) {
                return {
                    localDev: !1,
                    development: Ut(t, wt(t)),
                    esm: !1,
                    test: !1,
                    rtvVersion: jt(t),
                    ssrReady: !1
                }
            }(i)
        }

        function jt(t) {
            var i;
            return Nt || (Nt = (null === (i = t.AMP_CONFIG) || void 0 === i ? void 0 : i.v) || "01".concat("2305252018001")), Nt
        }

        function Ut(t, i) {
            var n = i || wt(t);
            return ["1", "actions", "amp", "amp4ads", "amp4email"].includes(n.development) || !!t.AMP_DEV_MODE
        }
        var Lt = function() {},
            zt = void 0;

        function Ht(t) {
            zt = t
        }
        var Gt = function() {
                return "01".concat("2305252018001")
            },
            Vt = function(t, i) {
                return i.reduce((function(t, i) {
                    return "".concat(t, "&s[]=").concat(qt(i))
                }), "https://log.amp.dev/?v=".concat(Gt(), "&id=").concat(encodeURIComponent(t)))
            },
            Ft = function() {
                return "".concat(Mt, "/rtv/").concat(Gt(), "/log-messages.simple.json")
            },
            qt = function(t) {
                return encodeURIComponent(String(Z(t)))
            },
            Bt = function(t) {
                return parseInt(wt(t).log, 10)
            },
            $t = function() {
                function t(t, i) {
                    var n = this,
                        r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "";
                    this.win = t, this.rr = i, this.nr = this.tr(), this.er = r, this.ir = null, this.ur = vt((function() {
                        t.fetch(Ft()).then((function(t) {
                            return t.json()
                        }), Lt).then((function(t) {
                            t && (n.ir = t)
                        }))
                    })), this.ar = this.assert.bind(this)
                }
                var i = t.prototype;
                return i.tr = function() {
                    var t, i = this.win;
                    return null !== (t = i.console) && void 0 !== t && t.log && 0 != Bt(i) ? this.cr() : 0
                }, i.cr = function(t) {
                    return this.rr(Bt(t), Dt().development)
                }, i.lr = function(t, i, n) {
                    var r, e, s;
                    if (i > (null !== (r = zt) && void 0 !== r ? r : this.nr)) return !1;
                    var u = this.win.console,
                        o = null !== (e = (s = {}, C(s, 1, u.error), C(s, 3, u.info), C(s, 2, u.warn), s)[i]) && void 0 !== e ? e : u.log,
                        h = this.sr(n),
                        a = "[".concat(t, "]");
                    return Y(h[0]) ? h[0] = a + " " + h[0] : h.unshift(a), o.apply(u, h), !0
                }, i.fine = function(t) {
                    for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) n[r - 1] = arguments[r];
                    this.lr(t, 4, n)
                }, i.info = function(t) {
                    for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) n[r - 1] = arguments[r];
                    this.lr(t, 3, n)
                }, i.warn = function(t) {
                    for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) n[r - 1] = arguments[r];
                    this.lr(t, 2, n)
                }, i.error = function(t) {
                    for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) n[r - 1] = arguments[r];
                    if (!this.lr(t, 1, n)) {
                        var e, s, u = this.createError.apply(this, n);
                        u.name = t || u.name, null === (e = (s = self).__AMP_REPORT_ERROR) || void 0 === e || e.call(s, u)
                    }
                }, i.expectedError = function(t) {
                    for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) n[r - 1] = arguments[r];
                    var e, s;
                    this.lr(t, 1, n) || null === (e = (s = self).__AMP_REPORT_ERROR) || void 0 === e || e.call(s, this.createExpectedError.apply(this, n))
                }, i.createError = function(t) {
                    return this.vr(l.apply(null, arguments))
                }, i.createExpectedError = function(t) {
                    return this.vr(m.apply(null, arguments))
                }, i.vr = function(t) {
                    return t = f(t), this.er ? t.message ? -1 == t.message.indexOf(this.er) && (t.message += this.er) : t.message = this.er : tt(t.message) && (t.message = it(t.message)), t
                }, i.sr = function(t) {
                    return V(t[0]) ? this.hr(t[0]) : t
                }, i.hr = function(t) {
                    var i, n = t.shift();
                    return Dt(this.win).development && this.ur(), null !== (i = this.ir) && void 0 !== i && i[n] ? [this.ir[n]].concat(t) : ["More info at ".concat(Vt(n, t))]
                }, i.assert = function(t, i, n) {
                    return V(i) ? this.assert.apply(this, [t].concat(this.hr(i))) : nt.apply(null, [this.er].concat(Array.prototype.slice.call(arguments)))
                }, i.assertElement = function(t, i) {
                    return function(t, i, n) {
                        return rt(t, i, K(i), "Element expected", n)
                    }(this.ar, t, i)
                }, i.assertString = function(t, i) {
                    return function(t, i, n) {
                        return rt(t, i, Y(i), "String expected", n)
                    }(this.ar, t, i)
                }, i.assertNumber = function(t, i) {
                    return function(t, i, n) {
                        return rt(t, i, "number" == typeof i, "Number expected", n)
                    }(this.ar, t, i)
                }, i.assertArray = function(t, i) {
                    return function(t, i, n) {
                        return rt(t, i, V(i), "Array expected", n)
                    }(this.ar, t, i)
                }, i.assertBoolean = function(t, i) {
                    return function(t, i, n) {
                        return rt(t, i, !!i === i, "Boolean expected", n)
                    }(this.ar, t, i)
                }, t
            }();
        self.__AMP_LOG = self.__AMP_LOG || {
            user: null,
            dev: null,
            userForEmbed: null
        };
        var Wt = self.__AMP_LOG,
            Yt = null;

        function Kt(t, i) {
            if (!Yt) throw new Error("failed to call initLogConstructor");
            return new Yt(self, t, i)
        }

        function Jt(t) {
            return Wt.user || (Wt.user = Xt(X)),
                function(t, i) {
                    return i && i.ownerDocument.defaultView != t
                }(Wt.user.win, t) ? Wt.userForEmbed || (Wt.userForEmbed = Xt(Q)) : Wt.user
        }

        function Xt(t) {
            return Kt((function(t, i) {
                return i || t >= 1 ? 4 : 2
            }), t)
        }

        function Qt() {
            return Wt.dev || (Wt.dev = Kt((function(t) {
                return t >= 3 ? 4 : t >= 2 ? 3 : 0
            })))
        }

        function Zt(t, i, n, r, e, s, u, o, h, a, c) {
            return t
        }

        function ti(t, i, n, r, e, s, u, o, h, a, c) {
            return Jt().assert(t, i, n, r, e, s, u, o, h, a, c)
        }
        var ii = ["GET", "POST"];

        function ni(t, i) {
            var n = new XMLHttpRequest;
            if (!("withCredentials" in n)) throw Qt().createExpectedError("CORS is not supported");
            return n.open(t, i, !0), n
        }
        var ri = function() {
            function t(t) {
                this.yt = t, this.status = this.yt.status, this.statusText = this.yt.statusText, this.ok = this.status >= 200 && this.status < 300, this.headers = new si(t), this.bodyUsed = !1, this.body = null, this.url = t.responseURL
            }
            var i = t.prototype;
            return i.clone = function() {
                return et(!this.bodyUsed), new t(this.yt)
            }, i.wt = function() {
                return et(!this.bodyUsed), this.bodyUsed = !0, Promise.resolve(this.yt.responseText)
            }, i.text = function() {
                return this.wt()
            }, i.json = function() {
                return this.wt().then(at)
            }, i.arrayBuffer = function() {
                return this.wt().then(ct)
            }, t
        }();

        function ei(t) {
            return void 0 === t ? "GET" : (t = t.toUpperCase(), et(ii.includes(t)), t)
        }
        var si = function() {
                function t(t) {
                    this.yt = t
                }
                var i = t.prototype;
                return i.get = function(t) {
                    return this.yt.getResponseHeader(t)
                }, i.has = function(t) {
                    return null != this.yt.getResponseHeader(t)
                }, t
            }(),
            ui = function(t) {
                U(n, t);
                var i = H(n);

                function n(t) {
                    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                        r = A(),
                        e = D({
                            status: 200,
                            statusText: "OK",
                            responseText: t ? String(t) : "",
                            getResponseHeader: function(t) {
                                var i = String(t).toLowerCase();
                                return x(r, i) ? r[i] : null
                            }
                        }, n);
                    if (e.status = void 0 === n.status ? 200 : parseInt(n.status, 10), V(n.headers)) n.headers.forEach((function(t) {
                        var i = t[0],
                            n = t[1];
                        r[String(i).toLowerCase()] = String(n)
                    }));
                    else if (w(n.headers))
                        for (var s in n.headers) r[String(s).toLowerCase()] = String(n.headers[s]);
                    return n.statusText && (e.statusText = String(n.statusText)), i.call(this, e)
                }
                return n
            }(ri);

        function oi(t) {
            return (t.ownerDocument || t).defaultView
        }
        var hi, ai = /(\0)|^(-)$|([\x01-\x1f\x7f]|^-?[0-9])|([\x80-\uffff0-9a-zA-Z_-]+)|[^]/g;

        function ci(t, i, n, r, e) {
            return e || (i ? "�" : r ? t.slice(0, -1) + "\\" + t.slice(-1).charCodeAt(0).toString(16) + " " : "\\" + t)
        }

        function fi(t) {
            return void 0 !== hi ? hi : hi = function(t) {
                try {
                    var i = t.ownerDocument,
                        n = i.createElement("div"),
                        r = i.createElement("div");
                    return n.appendChild(r), n.querySelector(":scope div") === r
                } catch (t) {
                    return !1
                }
            }(t)
        }

        function li(t, i) {
            return t.replace(/^|,/g, "$&".concat(i, " "))
        }

        function vi(t) {
            return String(t).replace(ai, ci)
        }

        function di(t) {
            et(/^[\w-]+$/.test(t))
        }

        function mi(t, i) {
            var n = t.classList,
                r = "i-amphtml-scoped";
            n.add(r);
            var e = li(i, ".".concat(r)),
                s = t.querySelectorAll(e);
            return n.remove(r), s
        }

        function pi(t, i) {
            if (fi(t)) return t.querySelector(li(i, ":scope"));
            var n = mi(t, i)[0];
            return void 0 === n ? null : n
        }

        function gi(t, i) {
            var n = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector || t.oMatchesSelector;
            return !!n && n.call(t, i)
        }

        function bi(t, i, n) {
            var r;
            for (r = t; r && r !== n; r = r.parentElement)
                if (i(r)) return r;
            return null
        }

        function yi(t, i) {
            return t.closest ? t.closest(i) : bi(t, (function(t) {
                return gi(t, i)
            }))
        }

        function wi(t, i) {
            for (var n = t.lastElementChild; n; n = n.previousElementSibling)
                if (i(n)) return n;
            return null
        }

        function Ai(t, i) {
            return di(i), pi(t, "> [".concat(i, "]"))
        }

        function xi(t) {
            return Y(i = t) ? n = i : K(i) && (n = i.tagName), !(!n || !n.toLowerCase().startsWith("i-")) || t.nodeType === Node.ELEMENT_NODE && (st(t), t.hasAttribute("placeholder") || t.hasAttribute("fallback") || t.hasAttribute("overflow"));
            var i, n
        }
        var Ei, Pi = {
            bubbles: !0,
            cancelable: !0
        };

        function Oi(t, i, n) {
            if (i(t)) n();
            else {
                var r = oi(t);
                if (r.MutationObserver) {
                    var e = new r.MutationObserver((function() {
                        i(t) && (e.disconnect(), n())
                    }));
                    e.observe(t, {
                        childList: !0
                    })
                } else var s = r.setInterval((function() {
                    i(t) && (r.clearInterval(s), n())
                }), 5)
            }
        }

        function Ii(t, i) {
            Oi(t.documentElement, (function() {
                return !!t.body
            }), i)
        }

        function Mi(t) {
            return new Promise((function(i) {
                return Ii(t, i)
            }))
        }

        function Ti(t) {
            var i;
            null === (i = t.parentElement) || void 0 === i || i.removeChild(t)
        }

        function Si(t, i) {
            t.insertBefore(i, t.firstChild)
        }

        function Ri(t) {
            var i = t.isConnected;
            if (void 0 !== i) return i;
            for (var n = t;
                (n = _i(n)).host;) n = n.host;
            return n.nodeType === Node.DOCUMENT_NODE
        }

        function _i(t) {
            if (Node.prototype.getRootNode) return t.getRootNode();
            var i, n;
            for (i = t; i.parentNode && (!(n = i) || "I-AMPHTML-SHADOW-ROOT" != n.tagName && (11 != n.nodeType || "[object ShadowRoot]" !== Object.prototype.toString.call(n))); i = i.parentNode);
            return i
        }

        function ki(t, i) {
            var n = t;
            do {
                if (n.nextSibling) return !0
            } while ((n = n.parentNode) && n != i);
            return !1
        }

        function Ci(t) {
            try {
                t.focus()
            } catch (t) {}
        }

        function Ni(t) {
            return t.parent && t.parent != t
        }

        function Di(t, i, n, r) {
            var e = n || {};
            et(t.ownerDocument);
            var s = t.ownerDocument.createEvent("Event");
            s.data = e;
            var u = r || Pi,
                o = u.bubbles,
                h = u.cancelable;
            s.initEvent(i, o, h), t.dispatchEvent(s)
        }

        function ji(t, i) {
            return i !== t && t.contains(i)
        }

        function Ui(t) {
            return t.hasAttribute("i-amphtml-ssr")
        }

        function Li(t, i) {
            var n = t.head.querySelector("script[nonce]");
            if (n) {
                var r = n.nonce || n.getAttribute("nonce");
                i.setAttribute("nonce", null != r ? r : "")
            }
        }

        function zi(t, i, n, r) {
            return {
                left: t,
                top: i,
                width: n,
                height: r,
                bottom: i + r,
                right: t + n,
                x: t,
                y: i
            }
        }

        function Hi(t, i, n) {
            return zi(t.left - t.width * i, t.top - t.height * n, t.width * (1 + 2 * i), t.height * (1 + 2 * n))
        }

        function Gi(t, i, n) {
            return 0 == i && 0 == n || 0 == t.width && 0 == t.height ? t : zi(t.left + i, t.top + n, t.width, t.height)
        }

        function Vi() {
            return Ri(this) ? Ei.call(this) : zi(0, 0, 0, 0)
        }

        function Fi(t) {
            return !t.IntersectionObserver || !t.IntersectionObserverEntry || !!t.IntersectionObserver._stub || ! function(t) {
                try {
                    return new t.IntersectionObserver((function() {}), {
                        root: t.document
                    }), !0
                } catch (t) {
                    return !1
                }
            }(t) || function(t) {
                return /apple/i.test(t.navigator.vendor)
            }(t)
        }
        var qi = function() {
            function t(i, n) {
                this.At = i, this.xt = D({
                    root: null,
                    rootMargin: "0px 0px 0px 0px"
                }, n), this.Et = [], this.Ot = null, t._upgraders.push(this.Pt.bind(this))
            }
            var n = t.prototype;
            return n.disconnect = function() {
                this.Ot ? this.Ot.disconnect() : this.Et.length = 0
            }, n.takeRecords = function() {
                return this.Ot ? this.Ot.takeRecords() : []
            }, n.observe = function(t) {
                this.Ot ? this.Ot.observe(t) : -1 == this.Et.indexOf(t) && this.Et.push(t)
            }, n.unobserve = function(t) {
                if (this.Ot) this.Ot.unobserve(t);
                else {
                    var i = this.Et.indexOf(t); - 1 != i && this.Et.splice(i, 1)
                }
            }, n.Pt = function(t) {
                var i = new t(this.At, this.xt);
                this.Ot = i;
                for (var n, r = o(this.Et, !0); !(n = r()).done;) {
                    var e = n.value;
                    i.observe(e)
                }
                this.Et.length = 0
            }, i(t, [{
                key: "root",
                get: function() {
                    return this.Ot ? this.Ot.root : this.xt.root || null
                }
            }, {
                key: "rootMargin",
                get: function() {
                    return this.Ot ? this.Ot.rootMargin : this.xt.rootMargin
                }
            }, {
                key: "thresholds",
                get: function() {
                    return this.Ot ? this.Ot.thresholds : [].concat(this.xt.threshold || 0)
                }
            }]), t
        }();

        function Bi(t) {
            return (t = Number(t)) ? t > 0 ? 1 : -1 : t
        }
        qi._upgraders = [];
        var $i = Object.prototype.hasOwnProperty;

        function Wi(t, i) {
            if (null == t) throw new TypeError("Cannot convert undefined or null to object");
            for (var n = Object(t), r = 1; r < arguments.length; r++) {
                var e = arguments[r];
                if (null != e)
                    for (var s in e) $i.call(e, s) && (n[s] = e[s])
            }
            return n
        }

        function Yi(t) {
            return Object.keys(t).map((function(i) {
                return t[i]
            }))
        }

        function Ki(t) {
            return !t.ResizeObserver || !!t.ResizeObserver._stub
        }
        var Ji, Xi = function() {
            function t(i) {
                this.At = i, this.Et = [], this.Ot = null, t._upgraders.push(this.Pt.bind(this))
            }
            var i = t.prototype;
            return i.disconnect = function() {
                this.Ot ? this.Ot.disconnect() : this.Et.length = 0
            }, i.observe = function(t) {
                this.Ot ? this.Ot.observe(t) : -1 == this.Et.indexOf(t) && this.Et.push(t)
            }, i.unobserve = function(t) {
                if (this.Ot) this.Ot.unobserve(t);
                else {
                    var i = this.Et.indexOf(t); - 1 != i && this.Et.splice(i, 1)
                }
            }, i.Pt = function(t) {
                var i = new t(this.At);
                this.Ot = i;
                for (var n, r = o(this.Et, !0); !(n = r()).done;) {
                    var e = n.value;
                    i.observe(e)
                }
                this.Et.length = 0
            }, t
        }();

        function Qi(t, i) {
            var n = i > 0 ? 0 | i : 0;
            return this.substr(n, t.length) === t
        }
        Xi._upgraders = [], (Ji = self).fetch || (Object.defineProperty(Ji, "fetch", {
                value: function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    return new Promise((function(n, r) {
                        var e = ei(i.method || "GET"),
                            s = ni(e, t);
                        "include" == i.credentials && (s.withCredentials = !0), "document" !== i.responseType && "text" !== i.responseType || (s.responseType = i.responseType), i.headers && Object.keys(i.headers).forEach((function(t) {
                            s.setRequestHeader(t, i.headers[t])
                        })), s.onreadystatechange = function() {
                            if (!(s.readyState < 2)) return s.status < 100 || s.status > 599 ? (s.onreadystatechange = null, void r(Jt().createExpectedError("Unknown HTTP status ".concat(s.status)))) : void(4 == s.readyState && n(new ri(s)))
                        }, s.onerror = function() {
                            r(Jt().createExpectedError("Network failure"))
                        }, s.onabort = function() {
                            r(Jt().createExpectedError("Request aborted"))
                        }, "POST" == e ? s.send(i.body) : s.send()
                    }))
                },
                writable: !0,
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(Ji, "Response", {
                value: ui,
                writable: !0,
                enumerable: !1,
                configurable: !0
            })),
            function(t) {
                t.Math.sign || t.Object.defineProperty(t.Math, "sign", {
                    enumerable: !1,
                    configurable: !0,
                    writable: !0,
                    value: Bi
                })
            }(self),
            function(t) {
                t.Object.assign || t.Object.defineProperty(t.Object, "assign", {
                    enumerable: !1,
                    configurable: !0,
                    writable: !0,
                    value: Wi
                })
            }(self),
            function(t) {
                t.Object.values || t.Object.defineProperty(t.Object, "values", {
                    configurable: !0,
                    writable: !0,
                    value: Yi
                })
            }(self),
            function(t) {
                t.Array.prototype.includes || t.Object.defineProperty(t.Array.prototype, "includes", {
                    enumerable: !1,
                    configurable: !0,
                    writable: !0,
                    value: s
                })
            }(self),
            function(t) {
                var i = t.Map,
                    n = new i;
                if (n.set(0, 0) !== n) {
                    var r = n.set;
                    t.Object.defineProperty(i.prototype, "set", {
                        enumerable: !1,
                        configurable: !0,
                        writable: !0,
                        value: function() {
                            return r.apply(this, arguments), this
                        }
                    })
                }
            }(self),
            function(t) {
                var i = t.WeakMap,
                    n = new i;
                if (n.set({}, 0) !== n) {
                    var r = n.set;
                    t.Object.defineProperty(i.prototype, "set", {
                        enumerable: !1,
                        configurable: !0,
                        writable: !0,
                        value: function() {
                            return r.apply(this, arguments), this
                        }
                    })
                }
            }(self),
            function(t) {
                var i = t.Set,
                    n = new i([1]);
                if (n.size < 1 && (t.Set = function(t) {
                        var n = new i;
                        if (t)
                            for (var r = G(t), e = 0; e < r.length; e++) n.add(r[e]);
                        return n
                    }), n.add(0) !== n) {
                    var r = n.add;
                    t.Object.defineProperty(i.prototype, "add", {
                        enumerable: !1,
                        configurable: !0,
                        writable: !0,
                        value: function() {
                            return r.apply(this, arguments), this
                        }
                    })
                }
            }(self),
            function(t) {
                t.String.prototype.startsWith || t.Object.defineProperty(t.String.prototype, "startsWith", {
                    enumerable: !1,
                    configurable: !0,
                    writable: !0,
                    value: Qi
                })
            }(self), self.document && (function(t) {
                var i = t.HTMLDocument || t.Document;
                i && !i.prototype.contains && t.Object.defineProperty(i.prototype, "contains", {
                    enumerable: !1,
                    configurable: !0,
                    writable: !0,
                    value: k
                })
            }(self), function(t) {
                (function(t) {
                    if (!t.document) return !1;
                    try {
                        return 0 !== t.document.createElement("div").getBoundingClientRect().top
                    } catch (t) {
                        return !0
                    }
                })(t) && (Ei = Element.prototype.getBoundingClientRect, t.Object.defineProperty(t.Element.prototype, "getBoundingClientRect", {
                    value: Vi
                }))
            }(self), function(t, i) {
                var n = t.document,
                    r = function(t) {
                        var i = t.customElements;
                        return !!(i && i.define && i.get && i.whenDefined)
                    }(t);
                if (!(!n || r && function(t) {
                        return -1 === t.HTMLElement.toString().indexOf("[native code]")
                    }(t))) {
                    var e = !0,
                        s = !1;
                    if (i && r) try {
                        var u = t.Reflect,
                            o = Object.create(i.prototype);
                        Function.call.call(i, o), s = !(null == u || !u.construct)
                    } catch (t) {
                        e = !1
                    }
                    s ? function(t) {
                        var i = t.HTMLElement,
                            n = t.Reflect;

                        function r() {
                            var t = this.constructor;
                            return n.construct(i, [], t)
                        }
                        R(i, r), t.HTMLElementOrig = t.HTMLElement, t.HTMLElement = r
                    }(t) : e && function(t) {
                        var i = t.Element,
                            n = t.HTMLElement,
                            r = t.document,
                            e = r.createElement,
                            s = new S(t),
                            u = new T(t, s);
                        Object.defineProperty(t, "customElements", {
                            enumerable: !0,
                            configurable: !0,
                            value: u
                        });
                        var o = i.prototype,
                            h = o.attachShadow,
                            a = o.createShadowRoot;

                        function c() {
                            var t = this.constructor,
                                i = s.current();
                            if (!i) {
                                var n = s.getByConstructor(t);
                                i = e.call(r, n.name)
                            }
                            return _(i, t.prototype), i
                        }
                        h && (o.attachShadow = function(t) {
                            var i = h.apply(this, arguments);
                            return s.observe(i), i
                        }, o.attachShadow.toString = function() {
                            return h.toString()
                        }), a && (o.createShadowRoot = function() {
                            var t = a.apply(this, arguments);
                            return s.observe(t), t
                        }, o.createShadowRoot.toString = function() {
                            return a.toString()
                        }), R(n, c), t.HTMLElementOrig = t.HTMLElement, t.HTMLElement = c, c.call || (c.apply = t.Function.apply, c.bind = t.Function.bind, c.call = t.Function.call)
                    }(t)
                }
            }(self, function() {
                return function() {}
            }()), function(t) {
                Fi(t) && function(t) {
                        if (!t.IntersectionObserver) return t.IntersectionObserver = qi, void(t.IntersectionObserver._stub = qi);
                        var i = t.IntersectionObserver;
                        t.IntersectionObserver = function(t, i) {
                            return function(n, r) {
                                var e;
                                return 9 === (null == r || null === (e = r.root) || void 0 === e ? void 0 : e.nodeType) ? new i(n, r) : new t(n, r)
                            }
                        }(t.IntersectionObserver, qi), t.IntersectionObserver._stub = qi, t.IntersectionObserver._native = i
                    }(t),
                    function(t) {
                        t.IntersectionObserverEntry && !("isIntersecting" in t.IntersectionObserverEntry.prototype) && Object.defineProperty(t.IntersectionObserverEntry.prototype, "isIntersecting", {
                            enumerable: !0,
                            configurable: !0,
                            get: function() {
                                return this.intersectionRatio > 0
                            }
                        })
                    }(t)
            }(self), function(t) {
                Ki(t) && function(t) {
                    t.ResizeObserver || (t.ResizeObserver = Xi, t.ResizeObserver._stub = Xi)
                }(t)
            }(self), function(t) {
                t.AbortController || (Object.defineProperty(t, "AbortController", {
                    configurable: !0,
                    enumerable: !1,
                    writable: !0,
                    value: r
                }), Object.defineProperty(t, "AbortSignal", {
                    configurable: !0,
                    enumerable: !1,
                    writable: !0,
                    value: e
                }))
            }(self));
        var Zi = "cls",
            tn = "clstu",
            nn = "cls-1",
            rn = "pc",
            en = "building",
            sn = "mounting",
            un = "loading",
            on = "complete",
            hn = "error";

        function an(t) {
            return t.readyState != un && "uninitialized" != t.readyState
        }

        function cn(t) {
            return t.readyState == on
        }

        function fn(t, i) {
            ln(t, an, i)
        }

        function ln(t, i, n) {
            var r = i(t);
            r ? n(t) : t.addEventListener("readystatechange", (function e() {
                i(t) && (r || (r = !0, n(t)), t.removeEventListener("readystatechange", e))
            }))
        }

        function vn(t) {
            return new Promise((function(i) {
                fn(t, i)
            }))
        }

        function dn(t) {
            return new Promise((function(i) {
                ln(t, cn, i)
            }))
        }
        var mn = ["amp-mustache"],
            pn = "latest";

        function gn(t) {
            if (!t) return null;
            var i = t.match(/^(.*)\/(.*)-([0-9.]+|latest)(\.max)?\.(?:js|mjs)(?:\?ssr-css=[0|1])?$/i),
                n = i ? i[2] : void 0,
                r = i ? i[3] : void 0;
            return n && r ? {
                extensionId: n,
                extensionVersion: r
            } : null
        }

        function bn(t, i, n) {
            var r = t.document.createElement("script");
            r.async = !0, wn(i) ? n = "" : r.setAttribute(mn.indexOf(i) >= 0 ? "custom-template" : "custom-element", i), r.setAttribute("data-script", i), r.setAttribute("i-amphtml-inserted", ""), Li(t.document, r), r.setAttribute("crossorigin", "anonymous");
            var e = function(t, i, n, r) {
                var e = Mt,
                    s = Dt().rtvVersion,
                    u = n ? "-" + n : "";
                return "".concat(e, "/rtv/").concat(s, "/v0/").concat(i).concat(u).concat(".js")
            }(t.location, i, n);
            return r.src = e, r
        }

        function yn(t, i, n, r) {
            for (var e = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4], s = ":not([i-amphtml-loaded-new-version])" + (e ? "" : ":not([i-amphtml-inserted])"), u = t.document.head.querySelectorAll('script[src*="/'.concat(i, '-"]').concat(s)), o = [], h = 0; h < u.length; h++) {
                var a = u[h],
                    c = gn(a.src);
                if (c) {
                    var f = c.extensionId,
                        l = c.extensionVersion;
                    f == i && (wn(i) || l == n || l == pn && r) && o.push(a)
                }
            }
            return o
        }

        function wn(t) {
            return t.startsWith("_")
        }

        function An(t, i, n, r) {
            Cn(t = Tn(t), t, i, n), r && kn(t, i)
        }

        function xn(t, i, n, r) {
            var e = Rn(t),
                s = _n(e);
            Cn(s, e, i, n), r && kn(s, i)
        }

        function En(t, i) {
            return kn(t = Tn(t), i)
        }

        function Pn(t, i) {
            return kn(_n(Rn(t)), i)
        }

        function On(t, i) {
            var n = _n(Rn(t));
            return zn(n, i) ? kn(n, i) : null
        }

        function In(t, i) {
            return Nn(_n(t), i)
        }

        function Mn(t, i) {
            return Dn(_n(t), i)
        }

        function Tn(t) {
            return t.__AMP_TOP || (t.__AMP_TOP = t)
        }

        function Sn(t, i) {
            var n = (t.ownerDocument || t).defaultView,
                r = i || Tn(n);
            if (n && n != r && Tn(n) == r) try {
                return n.frameElement
            } catch (t) {}
            return null
        }

        function Rn(t) {
            return t.nodeType ? function(t) {
                return En(t, "ampdoc")
            }(oi(t)).getAmpDoc(t) : t
        }

        function _n(t) {
            var i = Rn(t);
            return i.isSingleDoc() ? i.win : i
        }

        function kn(t, i) {
            Zt(zn(t, i));
            var n = jn(t)[i];
            return n.obj || (Zt(n.ctor), Zt(n.context), n.obj = new n.ctor(n.context), Zt(n.obj), n.context = null, n.resolve && n.resolve(n.obj)), n.obj
        }

        function Cn(t, i, n, r, e, s) {
            var u = jn(t),
                o = u[n];
            o || (o = u[n] = {
                obj: null,
                promise: null,
                resolve: null,
                reject: null,
                context: null,
                ctor: null,
                sharedInstance: s || !1
            }), !e && o.ctor || (o.ctor = r, o.context = i, o.sharedInstance = s || !1, o.resolve && kn(t, n))
        }

        function Nn(t, i) {
            var n = Dn(t, i);
            if (n) return n;
            var r, e, s, u, o = jn(t);
            return o[i] = (e = (r = new a).promise, s = r.reject, u = r.resolve, e.catch((function() {})), {
                obj: null,
                promise: e,
                resolve: u,
                reject: s,
                context: null,
                ctor: null
            }), o[i].promise
        }

        function Dn(t, i) {
            var n = jn(t)[i];
            return n ? n.promise ? n.promise : (kn(t, i), n.promise = Promise.resolve(n.obj)) : null
        }

        function jn(t) {
            var i = t.__AMP_SERVICES;
            return i || (i = t.__AMP_SERVICES = {}), i
        }

        function Un(t) {
            return "function" == typeof t.dispose
        }

        function Ln(t, i) {
            if (Un(i)) try {
                (function(t) {
                    return Zt(Un(t)), t
                })(i).dispose()
            } catch (i) {
                Qt().error("SERVICE", "failed to dispose service", t, i)
            }
        }

        function zn(t, i) {
            var n = t.__AMP_SERVICES && t.__AMP_SERVICES[i];
            return !(!n || !n.ctor)
        }

        function Hn(t, i, n, r) {
            return Gn(t, i, n, r).then((function(t) {
                return function(t, i, n) {
                    return ti(t, "Service %s was requested to be provided through %s, but %s is not loaded in the current page. To fix this problem load the JavaScript file for %s in this page.", i, n, n, n)
                }(t, i, n)
            }))
        }

        function Gn(t, i, n, r) {
            var e = Mn(t, i);
            if (e) return e;
            var s = Rn(t);
            return s.whenExtensionsKnown().then((function() {
                var t = s.getExtensionVersion(n);
                return t ? En(s.win, "extensions").waitForExtension(n, t) : null
            })).then((function(n) {
                return n ? r ? Mn(t, i) : In(t, i) : null
            }))
        }
        var Vn, Fn = function(t) {
                return Gn(t, "access", "amp-access")
            },
            qn = function(t) {
                return Gn(t, "subscriptions", "amp-subscriptions")
            },
            Bn = function(t) {
                return On(t, "action")
            },
            $n = function(t) {
                return Hn(t, "activity", "amp-analytics")
            },
            Wn = function(t) {
                return Rn(t)
            },
            Yn = function(t) {
                return En(t, "ampdoc")
            },
            Kn = function(t) {
                return Gn(t, "amp-analytics-instrumentation", "amp-analytics")
            },
            Jn = function(t) {
                return function(t, i, n) {
                    var r = On(t, i);
                    return r ? Promise.resolve(r) : Gn(t, i, "amp-bind")
                }(t, "bind")
            },
            Xn = function(t) {
                return In(t, "cid")
            },
            Qn = function(t) {
                return En(t, "crypto")
            },
            Zn = function(t) {
                return Pn(t, "documentInfo").get()
            },
            tr = function(t) {
                return En(t, "extensions")
            },
            ir = function(t) {
                return Pn(t, "history")
            },
            nr = function(t) {
                return On(t, "loadingIndicator")
            },
            rr = function(t) {
                return Pn(t, "mutator")
            },
            er = function(t) {
                return En(t, "performance")
            },
            sr = function(t) {
                return En(t, "platform")
            },
            ur = function(t) {
                return En(t, "preconnect")
            },
            or = function(t) {
                return Pn(t, "resources")
            },
            hr = function(t) {
                return In(t, "storage")
            },
            ar = function(t) {
                return function(t, i) {
                    return kn(t, "timer")
                }(t)
            },
            cr = function(t) {
                return On(t, "url-replace")
            },
            fr = function(t) {
                return Gn(t, "geo", "amp-geo", !0)
            },
            lr = function(t) {
                return On(t, "url")
            },
            vr = function(t) {
                return Pn(t, "viewer")
            },
            dr = function(t) {
                return En(t, "vsync")
            },
            mr = function(t) {
                return Pn(t, "viewport")
            },
            pr = function(t) {
                return En(t, "xhr")
            },
            gr = "prerender",
            br = "preview",
            yr = "visible",
            wr = "hidden",
            Ar = "paused",
            xr = "inactive",
            Er = function() {
                function t() {
                    this.Tt = null
                }
                var i = t.prototype;
                return i.add = function(t) {
                    var i = this;
                    return this.Tt || (this.Tt = []), this.Tt.push(t),
                        function() {
                            i.remove(t)
                        }
                }, i.remove = function(t) {
                    this.Tt && $(this.Tt, t)
                }, i.removeAll = function() {
                    this.Tt && (this.Tt.length = 0)
                }, i.fire = function(t) {
                    if (this.Tt)
                        for (var i, n = o(this.Tt.slice(), !0); !(i = n()).done;)(0, i.value)(t)
                }, i.getHandlerCount = function() {
                    var t, i;
                    return null !== (t = null === (i = this.Tt) || void 0 === i ? void 0 : i.length) && void 0 !== t ? t : 0
                }, t
            }(),
            Pr = function() {
                function t() {
                    this.It = A(), this.Mt = null
                }
                var i = t.prototype;
                return i.get = function(t) {
                    var i = this.It[t];
                    return null == i ? null : i
                }, i.whenSignal = function(t) {
                    var i, n = null === (i = this.Mt) || void 0 === i ? void 0 : i[t];
                    if (!n) {
                        var r = this.It[t];
                        n = null != r ? {
                            promise: "number" == typeof r ? Promise.resolve(r) : Promise.reject(r)
                        } : new a, this.Mt || (this.Mt = A()), this.Mt[t] = n
                    }
                    return n.promise
                }, i.signal = function(t, i) {
                    var n;
                    if (null == this.It[t]) {
                        var r = null != i ? i : Date.now();
                        this.It[t] = r;
                        var e = null === (n = this.Mt) || void 0 === n ? void 0 : n[t];
                        null != e && e.resolve && (e.resolve(r), e.resolve = void 0, e.reject = void 0)
                    }
                }, i.rejectSignal = function(t, i) {
                    var n;
                    if (null == this.It[t]) {
                        this.It[t] = i;
                        var r = null === (n = this.Mt) || void 0 === n ? void 0 : n[t];
                        null != r && r.reject && (r.reject(i), r.promise.catch((function() {})), r.resolve = void 0, r.reject = void 0)
                    }
                }, i.reset = function(t) {
                    var i;
                    this.It[t] && delete this.It[t];
                    var n = null === (i = this.Mt) || void 0 === i ? void 0 : i[t];
                    n && !n.resolve && delete this.Mt[t]
                }, t
            }(),
            Or = ["Webkit", "webkit", "Moz", "moz", "ms", "O", "o"],
            Ir = {
                "getPropertyPriority": function() {
                    return ""
                },
                "getPropertyValue": function() {
                    return ""
                }
            };

        function Mr(t) {
            var i = t.replace(/[A-Z]/g, (function(t) {
                return "-" + t.toLowerCase()
            }));
            return Or.some((function(t) {
                return i.startsWith(t + "-")
            })) ? "-".concat(i) : i
        }

        function Tr(t, i, n) {
            if (i.startsWith("--")) return i;
            Vn || (Vn = A());
            var r = Vn[i];
            if (!r || n) {
                if (r = i, void 0 === t[i]) {
                    var e = function(t) {
                            return t.charAt(0).toUpperCase() + t.slice(1)
                        }(i),
                        s = function(t, i) {
                            for (var n = 0; n < Or.length; n++) {
                                var r = Or[n] + i;
                                if (void 0 !== t[r]) return r
                            }
                            return ""
                        }(t, e);
                    void 0 !== t[s] && (r = s)
                }
                n || (Vn[i] = r)
            }
            return r
        }

        function Sr(t, i) {
            var n = t.style;
            for (var r in i) n.setProperty(Mr(Tr(n, r)), String(i[r]), "important")
        }

        function Rr(t, i, n, r, e) {
            var s = Tr(t.style, i, e);
            if (s) {
                var u = r ? n + r : n;
                t.style.setProperty(Mr(s), u)
            }
        }

        function _r(t, i) {
            for (var n in i) Rr(t, n, i[n])
        }

        function kr(t, i) {
            void 0 === i && (i = t.hasAttribute("hidden")), i ? t.removeAttribute("hidden") : t.setAttribute("hidden", "")
        }

        function Cr(t) {
            return "".concat(t, "px")
        }

        function Nr(t, i) {
            return t.getComputedStyle(i) || Ir
        }

        function Dr(t) {
            var i = t[Tr(t, "visibilityState", !0)];
            if (i) return i;
            var n = Tr(t, "hidden", !0);
            return n in t && t[n] ? wr : yr
        }

        function jr(t, i) {
            if (t.addEventListener) {
                var n = Lr(t);
                n && t.addEventListener(n, i)
            }
        }

        function Ur(t, i) {
            if (t.removeEventListener) {
                var n = Lr(t);
                n && t.removeEventListener(n, i)
            }
        }

        function Lr(t) {
            var i = Tr(t, "hidden", !0),
                n = i.indexOf("Hidden");
            return -1 != n ? i.substring(0, n) + "Visibilitychange" : "visibilitychange"
        }
        var zr = function() {
                function t() {}
                return t.getTop = function(t) {
                    return t.top
                }, t.getLocation = function(t) {
                    return t.location
                }, t.getDocumentReferrer = function(t) {
                    return t.document.referrer
                }, t.getHostname = function(t) {
                    return t.location.hostname
                }, t.getUserAgent = function(t) {
                    return t.navigator.userAgent
                }, t.getUserLanguage = function(t) {
                    return t.navigator.userLanguage || t.navigator.language
                }, t.getDevicePixelRatio = function() {
                    return self.devicePixelRatio || 1
                }, t.getSendBeacon = function(t) {
                    if (t.navigator.sendBeacon) return t.navigator.sendBeacon.bind(t.navigator)
                }, t.getXMLHttpRequest = function(t) {
                    return t.XMLHttpRequest
                }, t.getImage = function(t) {
                    return t.Image
                }, t
            }(),
            Hr = "__AMP__",
            Gr = "-ampdoc-ext-known",
            Vr = "-ampdoc-first-visible",
            Fr = "-ampdoc-next-visible",
            qr = "-ampdoc-first-previewed",
            Br = function() {
                function t(t, i, n) {
                    this.win = t, this.St = null, i && (this.St = new Wr(t, {
                        params: Jr(t, n)
                    }), t.document.__AMPDOC = this.St)
                }
                var i = t.prototype;
                return i.isSingleDoc = function() {
                    return !!this.St
                }, i.getSingleDoc = function() {
                    return Zt(this.St)
                }, i.kt = function(t) {
                    return t.everAttached && "function" == typeof t.getAmpDoc ? t.getAmpDoc() : null
                }, i.getAmpDocIfAvailable = function(t) {
                    for (var i = t; i;) {
                        var n = this.kt(t);
                        if (n) return n;
                        var r = _i(i);
                        if (!r) break;
                        var e = r.__AMPDOC;
                        if (e) return e;
                        i = r.host ? r.host : Sn(r, this.win)
                    }
                    return null
                }, i.getAmpDoc = function(t) {
                    var i = this.getAmpDocIfAvailable(t);
                    if (!i) throw Qt().createError("No ampdoc found for", t);
                    return i
                }, i.installShadowDoc = function(t, i, n) {
                    Zt(!i.__AMPDOC);
                    var r = new Yr(this.win, t, i, n);
                    return i.__AMPDOC = r, r
                }, i.installFieDoc = function(t, i, n) {
                    var r = i.document;
                    Zt(!r.__AMPDOC);
                    var e = Zt(i.frameElement),
                        s = new Kr(i, t, this.getAmpDoc(e), n);
                    return r.__AMPDOC = s, s
                }, t
            }(),
            $r = function() {
                function t(t, i, n) {
                    var r = this;
                    this.win = t, this._t = A(), this.Rt = i, this.Nt = n && n.signals || new Pr, this.Ct = n && n.params || A(), this.Dt = null, this.jt = {};
                    var e, s = this.Ct.visibilityState;
                    Zt(!s || "prerender" === (e = s) || "preview" === e || "visible" === e || "hidden" === e || "paused" === e || "inactive" === e), this.zt = n && n.visibilityState || s || null, this.J = null, this.Ut = new Er, this.Lt = null, this.Ht = [];
                    var u = this.Gt.bind(this);
                    this.Rt && this.Ht.push(this.Rt.onVisibilityChanged(u)), jr(this.win.document, u), this.Ht.push((function() {
                        return Ur(r.win.document, u)
                    })), this.Gt()
                }
                var i = t.prototype;
                return i.dispose = function() {
                    (function(t) {
                        var i = jn(t),
                            n = function(t) {
                                if (!Object.prototype.hasOwnProperty.call(i, t)) return "continue";
                                var n = i[t];
                                if (n.sharedInstance) return "continue";
                                n.obj ? Ln(t, n.obj) : n.promise && n.promise.then((function(i) {
                                    return Ln(t, i)
                                }))
                            };
                        for (var r in i) n(r)
                    })(this), this.Ht.forEach((function(t) {
                        return t()
                    }))
                }, i.isSingleDoc = function() {
                    return Zt(null)
                }, i.getParent = function() {
                    return this.Rt
                }, i.signals = function() {
                    return this.Nt
                }, i.getParam = function(t) {
                    var i = this.Ct[t];
                    return null == i ? null : i
                }, i.getMeta = function() {
                    var t = this;
                    return this.Dt || (this.Dt = A(), this.win.document.head.querySelectorAll("meta[name]").forEach((function(i) {
                        var n = i.getAttribute("name"),
                            r = i.getAttribute("content");
                        n && null !== r && void 0 === t.Dt[n] && (t.Dt[n] = r)
                    }))), A(this.Dt)
                }, i.getMetaByName = function(t) {
                    if (!t) return null;
                    var i = this.getMeta()[t];
                    return void 0 !== i ? i : null
                }, i.setMetaByName = function(t, i) {
                    Zt(null)
                }, i.declaresExtension = function(t, i) {
                    var n = this.jt[t];
                    return !(!n || i && n !== i)
                }, i.declareExtension = function(t, i) {
                    Zt(!this.jt[t] || this.jt[t] === i), this.jt[t] = i
                }, i.getExtensionVersion = function(t) {
                    return this.jt[t] || null
                }, i.setExtensionsKnown = function() {
                    this.Nt.signal(Gr)
                }, i.whenExtensionsKnown = function() {
                    return this.Nt.whenSignal(Gr)
                }, i.getRootNode = function() {
                    return Zt(null)
                }, i.getHeadNode = function() {}, i.isBodyAvailable = function() {
                    return Zt(!1)
                }, i.getBody = function() {
                    return Zt(null)
                }, i.waitForBodyOpen = function() {
                    return Zt(null)
                }, i.isReady = function() {
                    return Zt(null)
                }, i.whenReady = function() {
                    return Zt(null)
                }, i.getUrl = function() {
                    return Zt(null)
                }, i.getElementById = function(t) {
                    return this.getRootNode().getElementById(t)
                }, i.contains = function(t) {
                    return this.getRootNode().contains(t)
                }, i.overrideVisibilityState = function(t) {
                    this.zt != t && (this.zt = t, this.Gt())
                }, i.Gt = function() {
                    for (var t, i = Dr(this.win.document), n = yr, r = this.Rt; r; r = r.getParent())
                        if (r.getVisibilityState() != yr) {
                            n = r.getVisibilityState();
                            break
                        }
                    var e = this.zt || yr;
                    if (t = e == yr && n == yr && i == yr ? yr : i == wr && e == Ar ? i : e == Ar || e == xr ? e : n == Ar || n == xr ? n : e == br || i == br || n == br ? br : e == gr || i == gr || n == gr ? gr : wr, this.J != t) {
                        if (t == yr) {
                            var s, u = this.win.performance,
                                o = Math.floor(null !== (s = u.timeOrigin) && void 0 !== s ? s : u.timing.navigationStart);
                            null != this.J && (o += Math.floor(u.now())), this.Lt = o, this.Nt.signal(Vr, o), this.Nt.signal(Fr, o)
                        } else this.Nt.reset(Fr);
                        t == br && this.Nt.signal(qr), this.J = t, this.Ut.fire()
                    }
                }, i.whenFirstPreviewedOrVisible = function() {
                    return Promise.race([this.whenFirstPreviewed(), this.whenFirstVisible()])
                }, i.whenFirstPreviewed = function() {
                    return this.Nt.whenSignal(qr).then((function() {}))
                }, i.whenFirstVisible = function() {
                    return this.Nt.whenSignal(Vr).then((function() {}))
                }, i.whenNextVisible = function() {
                    return this.Nt.whenSignal(Fr).then((function() {}))
                }, i.getFirstVisibleTime = function() {
                    return this.Nt.get(Vr)
                }, i.getLastVisibleTime = function() {
                    return this.Lt
                }, i.getVisibilityState = function() {
                    return Zt(this.J)
                }, i.isPreview = function() {
                    return this.J == br
                }, i.isVisible = function() {
                    return this.J == yr
                }, i.hasBeenVisible = function() {
                    return null != this.getLastVisibleTime()
                }, i.onVisibilityChanged = function(t) {
                    return this.Ut.add(t)
                }, i.registerSingleton = function(t) {
                    return !this._t[t] && (this._t[t] = !0, !0)
                }, t
            }(),
            Wr = function(t) {
                U(n, t);
                var i = H(n);

                function n(t, n) {
                    var r;
                    return (r = i.call(this, t, null, n)).Vt = r.win.document.body ? Promise.resolve(r.win.document.body) : Mi(r.win.document).then((function() {
                        return r.getBody()
                    })), r.Ft = vn(r.win.document), r
                }
                var r = n.prototype;
                return r.isSingleDoc = function() {
                    return !0
                }, r.getRootNode = function() {
                    return this.win.document
                }, r.getUrl = function() {
                    return zr.getLocation(this.win).href
                }, r.getHeadNode = function() {
                    return this.win.document.head
                }, r.isBodyAvailable = function() {
                    return !!this.win.document.body
                }, r.getBody = function() {
                    return this.win.document.body
                }, r.waitForBodyOpen = function() {
                    return this.Vt
                }, r.isReady = function() {
                    return an(this.win.document)
                }, r.whenReady = function() {
                    return this.Ft
                }, n
            }($r),
            Yr = function(t) {
                U(n, t);
                var i = H(n);

                function n(t, n, r, e) {
                    var s;
                    (s = i.call(this, t, null, e)).Bt = n, s.qt = r, s.Wt = null;
                    var u = new a;
                    s.Vt = u.promise, s.$t = u.resolve, s.Kt = !1;
                    var o = new a;
                    return s.Ft = o.promise, s.Yt = o.resolve, s
                }
                var r = n.prototype;
                return r.isSingleDoc = function() {
                    return !1
                }, r.getRootNode = function() {
                    return this.qt
                }, r.getUrl = function() {
                    return this.Bt
                }, r.getHeadNode = function() {
                    return this.qt
                }, r.isBodyAvailable = function() {
                    return !!this.Wt
                }, r.getBody = function() {
                    return this.Wt
                }, r.setBody = function(t) {
                    Zt(!this.Wt), this.Wt = t, this.$t(t), this.$t = void 0
                }, r.waitForBodyOpen = function() {
                    return this.Vt
                }, r.isReady = function() {
                    return this.Kt
                }, r.setReady = function() {
                    Zt(!this.Kt), this.Kt = !0, this.Yt(), this.Yt = void 0
                }, r.whenReady = function() {
                    return this.Ft
                }, r.getMeta = function() {
                    return A(this.Dt)
                }, r.setMetaByName = function(t, i) {
                    Zt(t), this.Dt || (this.Dt = A()), this.Dt[t] = i
                }, n
            }($r),
            Kr = function(t) {
                U(n, t);
                var i = H(n);

                function n(t, n, r, e) {
                    var s;
                    (s = i.call(this, t, r, e)).Bt = n, s.Vt = s.win.document.body ? Promise.resolve(s.win.document.body) : Mi(s.win.document).then((function() {
                        return s.getBody()
                    })), s.Kt = !1;
                    var u = new a;
                    return s.Ft = u.promise, s.Yt = u.resolve, s
                }
                var r = n.prototype;
                return r.isSingleDoc = function() {
                    return !1
                }, r.getRootNode = function() {
                    return this.win.document
                }, r.getUrl = function() {
                    return this.Bt
                }, r.getHeadNode = function() {
                    return this.win.document.head
                }, r.isBodyAvailable = function() {
                    return !!this.win.document.body
                }, r.getBody = function() {
                    return this.win.document.body
                }, r.waitForBodyOpen = function() {
                    return this.Vt
                }, r.isReady = function() {
                    return this.Kt
                }, r.whenReady = function() {
                    return this.Ft
                }, r.setReady = function() {
                    Zt(!this.Kt), this.Kt = !0, this.Yt(), this.Yt = void 0
                }, n
            }($r);

        function Jr(t, i) {
            var n = A();
            return i ? Object.assign(n, i) : (t.name && 0 == t.name.indexOf(Hr) && Object.assign(n, yt(t.name.substring(Hr.length))), t.location && t.location.hash && Object.assign(n, yt(t.location.hash))), n
        }

        function Xr(t) {
            if (!t.hasAttribute("src") && "srcset" in t == 0) {
                var i = t.getAttribute("srcset") || "",
                    n = /\S+/.exec(i);
                if (null == n) return;
                var r = n[0];
                t.setAttribute("src", r)
            }
        }
        var Qr = "nodisplay",
            Zr = "fixed",
            te = "fixed-height",
            ie = "responsive",
            ne = "container",
            re = "fill",
            ee = "flex-item",
            se = "fluid",
            ue = "intrinsic",
            oe = /^amp\-(video|.+player)|AMP-BRIGHTCOVE|AMP-DAILYMOTION|AMP-YOUTUBE|AMP-VIMEO|AMP-IMA-VIDEO/i;

        function he(t) {
            if ("nodisplay" === (i = t) || "fixed" === i || "fixed-height" === i || "responsive" === i || "container" === i || "fill" === i || "flex-item" === i || "fluid" === i || "intrinsic" === i) return t;
            var i
        }

        function ae(t) {
            return "i-amphtml-layout-" + t
        }

        function ce(t) {
            return t == Zr || t == te || t == ie || t == re || t == ee || t == se || t == ue
        }

        function fe(t) {
            return "number" == typeof t ? t + "px" : t && /^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|cm|mm|q|in|pc|pt)?$/.test(t) ? /^\d+(\.\d+)?$/.test(t) ? t + "px" : t : void 0
        }

        function le(t) {
            ! function(t) {
                ht(/^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|cm|mm|q|in|pc|pt)$/.test(null != t ? t : ""), "Invalid length value: %s", t)
            }(t);
            var i = /[a-z]+/i.exec(null != t ? t : "");
            return ht(i, "Failed to read units from %s", t), i[0]
        }

        function ve(t) {
            var i = parseFloat(t);
            return J(i) ? i : void 0
        }

        function de(t, i) {
            t.classList.add("i-amphtml-fill-content"), i && t.classList.add("i-amphtml-replaced-content")
        }

        function me(t, i, n, r) {
            for (var e, s = o(F(t), !0); !(e = s()).done;) {
                var u = e.value,
                    h = i.getAttribute(u);
                null !== h ? n.setAttribute(u, h) : r && n.removeAttribute(u)
            }
        }
        var pe, ge = "amp:attached",
            be = "amp:load-start",
            ye = "amp:load-end",
            we = "ready-upgrade",
            Ae = "upgraded",
            xe = "built",
            Ee = "mounted",
            Pe = "load-start",
            Oe = "render-start",
            Ie = "load-end",
            Me = "unload",
            Te = function() {
                function t(t, i) {
                    this.t = t, this.At = i, this.Jt = {}, this.Xt = null
                }
                var i = t.prototype;
                return i.start = function() {
                    this.Xt = this.Jt, this.Jt = {}
                }, i.resolveMatchQuery = function(t) {
                    return "1" === this.Qt(t, Se, "1")
                }, i.resolveListQuery = function(t) {
                    return this.Qt(t, Re, "")
                }, i.complete = function() {
                    for (var t in this.Xt) t in this.Jt || _e(this.Xt[t], this.At, !1);
                    this.Xt = null
                }, i.dispose = function() {
                    for (var t in this.Jt) _e(this.Jt[t], this.At, !1);
                    this.Jt = {}
                }, i.Qt = function(t, i, n) {
                    if (!t.trim()) return n;
                    var r = this.Jt[t];
                    return r || (et(this.Xt), r = this.Xt[t]), r || _e(r = i(this.t, t), this.At, !0), this.Jt[t] = r,
                        function(t) {
                            for (var i = 0; i < t.length; i++) {
                                var n = t[i],
                                    r = n.query,
                                    e = n.value;
                                if (!r || r.matches) return e
                            }
                            return ""
                        }(r)
                }, t
            }();

        function Se(t, i) {
            return [{
                query: t.matchMedia(i),
                value: "1"
            }, {
                query: null,
                value: ""
            }]
        }

        function Re(t, i) {
            return i.split(",").map((function(i) {
                if (0 != (i = i.replace(/\s+/g, " ").trim()).length) {
                    var n, r, e;
                    if (")" == i.charAt(i.length - 1)) {
                        var s = 1;
                        for (e = i.length - 2; e >= 0; e--) {
                            var u = i.charAt(e);
                            if ("(" == u ? s-- : ")" == u && s++, 0 == s) break
                        }
                        var o = e - 1;
                        if (e > 0)
                            for (e--; e >= 0; e--) {
                                var h = i.charAt(e);
                                if (!("%" == h || "-" == h || "_" == h || h >= "a" && h <= "z" || h >= "A" && h <= "Z" || h >= "0" && h <= "9")) break
                            }
                        if (e >= o) return null
                    } else
                        for (e = i.length - 2; e >= 0; e--) {
                            var a = i.charAt(e);
                            if (!("%" == a || "." == a || a >= "a" && a <= "z" || a >= "A" && a <= "Z" || a >= "0" && a <= "9")) break
                        }
                    return e >= 0 ? (n = i.substring(0, e + 1).trim(), r = i.substring(e + 1).trim()) : (r = i, n = void 0), r ? {
                        query: n ? t.matchMedia(n) : null,
                        value: r
                    } : null
                }
            })).filter(Boolean)
        }

        function _e(t, i, n) {
            for (var r = 0; r < t.length; r++) {
                var e = t[r].query;
                e && (void 0 !== e.onchange ? e.onchange = n ? i : null : n ? e.addListener(i) : e.removeListener(i))
            }
        }

        function ke(t) {
            var i = t.ownerDocument || t;
            return pe && pe.ownerDocument === i || (pe = i.createElement("div")), Ce
        }

        function Ce(t) {
            return function(t, i) {
                if (et(1 === i.length), et(Array.isArray(i) || x(i, "raw")), self.trustedTypes && self.trustedTypes.createPolicy) {
                    var n = self.trustedTypes.createPolicy("static-template#createNode", {
                        createHTML: function(t) {
                            return i[0]
                        }
                    });
                    t.innerHTML = n.createHTML("ignored")
                } else t.innerHTML = i[0];
                var r = t.firstElementChild;
                return et(r), et(!r.nextElementSibling), t.removeChild(r), r
            }(pe, t)
        }
        var Ne = ['<i-amphtml-sizer class=i-amphtml-sizer slot=i-amphtml-svc><img alt="" role=presentation aria-hidden=true class=i-amphtml-intrinsic-sizer></i-amphtml-sizer>'],
            De = {
                "AMP-PIXEL": {
                    width: "0px",
                    height: "0px"
                },
                "AMP-ANALYTICS": {
                    width: "1px",
                    height: "1px"
                },
                "AMP-AUDIO": null,
                "AMP-SOCIAL-SHARE": {
                    width: "60px",
                    height: "44px"
                }
            };

        function je(t) {
            var i = t.getAttribute("layout"),
                n = t.getAttribute("width"),
                r = t.getAttribute("height"),
                e = t.getAttribute("sizes"),
                s = t.getAttribute("heights"),
                u = i ? he(i) : null;
            ht(void 0 !== u, 'Invalid "layout" value: %s, %s', i, t);
            var o = n && "auto" != n ? fe(n) : n;
            ht(void 0 !== o, 'Invalid "width" value: %s, %s', n, t);
            var h, a, c, f, l = r && "fluid" != r ? fe(r) : r;
            if (ht(void 0 !== l, 'Invalid "height" value: %s, %s', r, t), u && u != Zr && u != te || o && l || (f = (f = t.tagName).toUpperCase(), void 0 === De[f])) h = o, a = l;
            else {
                var v = function(t) {
                    var i = t.tagName.toUpperCase();
                    if (et(void 0 !== De[i]), !De[i]) {
                        var n = t.ownerDocument,
                            r = i.replace(/^AMP\-/, ""),
                            e = n.createElement(r);
                        e.controls = !0, _r(e, {
                            position: "absolute",
                            visibility: "hidden"
                        }), n.body.appendChild(e), De[i] = {
                            width: (e.offsetWidth || 1) + "px",
                            height: (e.offsetHeight || 1) + "px"
                        }, n.body.removeChild(e)
                    }
                    return De[i]
                }(t);
                h = o || u == te ? o : v.width, a = l || v.height
            }
            return (c = u || (h || a ? "fluid" == a ? se : !a || h && "auto" != h ? a && h && (e || s) ? ie : Zr : te : ne)) != Zr && c != te && c != ie && c != ue || ht(a, 'The "height" attribute is missing: %s', t), c == te && ht(!h || "auto" == h, 'The "width" attribute must be missing or "auto": %s', t), c != Zr && c != ie && c != ue || ht(h && "auto" != h, 'The "width" attribute must be present and not "auto": %s', t), c == ie || c == ue ? ht(le(h) == le(a), 'Length units should be the same for "width" and "height": %s, %s, %s', n, r, t) : ht(null === s, '"heights" attribute must be missing: %s', t), {
                layout: c,
                width: h,
                height: a
            }
        }
        var Ue, Le = "EXPERIMENTS",
            ze = "amp-experiment-toggles",
            He = "__AMP__EXPERIMENT_TOGGLES";

        function Ge(t, i) {
            return !!Fe(t)[i]
        }

        function Ve(t, i, n, r) {
            var e = Ge(t, i),
                s = null != n ? n : !e;
            if (s != e && (Fe(t)[i] = s, !r)) {
                var u = qe(t);
                u[i] = s,
                    function(t, i) {
                        var n = [];
                        for (var r in i) n.push((!1 === i[r] ? "-" : "") + r);
                        try {
                            var e;
                            null === (e = t.localStorage) || void 0 === e || e.setItem(ze, n.join(","))
                        } catch (t) {
                            Jt().error(Le, "Failed to save experiments to localStorage.")
                        }
                    }(t, u), Jt().warn(Le, '"%s" experiment %s for the domain "%s". See: https://amp.dev/documentation/guides-and-tutorials/learn/experimental', i, s ? "enabled" : "disabled", t.location.hostname)
            }
            return s
        }

        function Fe(t) {
            var i, n, r, e, s;
            if (t[He]) return t[He];
            t[He] = A();
            var u = t[He];
            et(u);
            var h = D(D({}, null !== (i = t.AMP_CONFIG) && void 0 !== i ? i : {}), null !== (n = t.AMP_EXP) && void 0 !== n ? n : at((null === (r = t.__AMP_EXP) || void 0 === r ? void 0 : r.textContent) || "{}"));
            for (var a in h) {
                var c = h[a];
                "number" == typeof c && c >= 0 && c <= 1 && (u[a] = Math.random() < c)
            }
            var f = null === (e = t.AMP_CONFIG) || void 0 === e ? void 0 : e["allow-doc-opt-in"];
            if (V(f) && f.length) {
                var l = t.document.head.querySelector('meta[name="amp-experiments-opt-in"]');
                if (l)
                    for (var v, d, m = o((null === (v = l.getAttribute("content")) || void 0 === v ? void 0 : v.split(",")) || [], !0); !(d = m()).done;) {
                        var p = d.value;
                        f.includes(p) && (u[p] = !0)
                    }
            }
            Object.assign(u, qe(t));
            var g = null === (s = t.AMP_CONFIG) || void 0 === s ? void 0 : s["allow-url-opt-in"];
            if (V(g) && g.length)
                for (var b, y = yt(t.location.originalHash || t.location.hash), w = o(g, !0); !(b = w()).done;) {
                    var x = b.value,
                        E = y["e-".concat(x)];
                    "1" == E && (u[x] = !0), "0" == E && (u[x] = !1)
                }
            return u
        }

        function qe(t) {
            var i, n = "";
            try {
                var r;
                "localStorage" in t && (n = null !== (r = t.localStorage.getItem(ze)) && void 0 !== r ? r : "")
            } catch (t) {
                Qt().warn(Le, "Failed to retrieve experiments from localStorage.")
            }
            for (var e, s = (null === (i = n) || void 0 === i ? void 0 : i.split(/\s*,\s*/g)) || [], u = A(), h = o(s, !0); !(e = h()).done;) {
                var a = e.value;
                a && ("-" == a[0] ? u[a.substr(1)] = !1 : u[a] = !0)
            }
            return u
        }

        function Be(t, i, n, r) {
            var e = t,
                s = n,
                u = function(t) {
                    try {
                        return s(t)
                    } catch (t) {
                        var i, n;
                        throw null === (i = (n = self).__AMP_REPORT_ERROR) || void 0 === i || i.call(n, t), t
                    }
                },
                o = function() {
                    if (void 0 !== Ue) return Ue;
                    Ue = !1;
                    try {
                        var t = {
                            get capture() {
                                return Ue = !0, !1
                            }
                        };
                        self.addEventListener("test-options", null, t), self.removeEventListener("test-options", null, t)
                    } catch (t) {}
                    return Ue
                }(),
                h = !(null == r || !r.capture);
            return e.addEventListener(i, u, o ? r : h),
                function() {
                    null == e || e.removeEventListener(i, u, o ? r : h), s = null, e = null, u = null
                }
        }
        var $e = "Failed to load:";

        function We(t, i, n, r) {
            var e = {
                detail: n
            };
            if (Object.assign(e, r), "function" == typeof t.CustomEvent) return new t.CustomEvent(i, e);
            var s = t.document.createEvent("CustomEvent");
            return s.initCustomEvent(i, !!e.bubbles, !!e.cancelable, n), s
        }

        function Ye(t, i, n, r) {
            return Be(t, i, n, r)
        }

        function Ke(t) {
            return t.data
        }

        function Je(t, i, n, r) {
            var e = n,
                s = Be(t, i, (function(t) {
                    try {
                        e(t)
                    } finally {
                        e = null, s()
                    }
                }), r);
            return s
        }

        function Xe(t) {
            var i, n;
            if (function(t) {
                    return !!(t.complete || "complete" == t.readyState || Qe(t) && t.readyState > 0 || t.document && "complete" == t.document.readyState)
                }(t)) return Promise.resolve(t);
            var r = Qe(t);
            return r && t.__AMP_MEDIA_LOAD_FAILURE_SRC === t.currentSrc ? Promise.reject(t) : new Promise((function(e, s) {
                if (i = r ? Je(t, "loadedmetadata", e, {
                        capture: !0
                    }) : Je(t, "load", e), t.tagName) {
                    var u = t;
                    if (r && !t.hasAttribute("src") && !(u = wi(t, (function(t) {
                            return "SOURCE" === t.tagName
                        })))) return s(new Error("Media has no source."));
                    n = Je(u, "error", s)
                }
            })).then((function() {
                return n && n(), t
            }), (function() {
                i && i(),
                    function(t) {
                        Qe(t) && (t.__AMP_MEDIA_LOAD_FAILURE_SRC = t.currentSrc || !0);
                        var i = t;
                        throw i && i.src && (i = i.src), Jt().createError($e, i)
                    }(t)
            }))
        }

        function Qe(t) {
            return "AUDIO" === t.tagName || "VIDEO" === t.tagName
        }
        var Ze = {
            "amp-dynamic-css-classes": "[custom-element=amp-dynamic-css-classes]",
            "variant": "amp-experiment"
        };

        function ts(t) {
            var i = t.document;
            return Zt(i.body), Object.keys(Ze).filter((function(t) {
                return i.querySelector(Ze[t])
            }))
        }

        function is(t, i, n, r, e) {
            var s = t.getHeadNode(),
                u = function(t, i, n, r) {
                    var e = t.__AMP_CSS_SM;
                    e || (e = t.__AMP_CSS_SM = A());
                    var s = !n && r && "amp-custom" != r && "amp-keyframes" != r,
                        u = n ? "amp-runtime" : s ? "amp-extension=".concat(r) : null;
                    if (u) {
                        var o = ns(t, e, u);
                        if (o) return "STYLE" == o.tagName && o.textContent !== i && (o.textContent = i), o
                    }
                    var h = (t.ownerDocument || t).createElement("style");
                    h.textContent = i;
                    var a = null;
                    return n ? h.setAttribute("amp-runtime", "") : s ? (h.setAttribute("amp-extension", r || ""), a = ns(t, e, "amp-runtime")) : (r && h.setAttribute(r, ""), a = t.lastChild),
                        function(t, i) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
                            if (n) {
                                var r = n.nextSibling;
                                t.insertBefore(i, r)
                            } else Si(t, i)
                        }(t, h, a), u && (e[u] = h), h
                }(s, function(t, i) {
                    var n = t.__AMP_CSS_TR;
                    return n ? n(i) : i
                }(s, i), r || !1, e || null);
            if (n) {
                var o = t.getRootNode();
                if (us(o, u)) return n(u), u;
                var h = setInterval((function() {
                    us(o, u) && (clearInterval(h), n(u))
                }), 4)
            }
            return u
        }

        function ns(t, i, n) {
            if (i[n]) return i[n];
            var r = t.querySelector("style[".concat(n, "], link[").concat(n, "]"));
            return r ? (i[n] = r, r) : null
        }
        var rs = !1;

        function es(t) {
            Zt(t.defaultView), rs || (rs = !0, ss(t))
        }

        function ss(t) {
            _r(t.body, {
                opacity: 1,
                visibility: "visible",
                "animation": "none"
            })
        }

        function us(t, i) {
            for (var n = t.styleSheets, r = 0; r < n.length; r++)
                if (n[r].ownerNode == i) return !0;
            return !1
        }
        var os, hs, as = function() {
                function t(t) {
                    this.dr = t, this.pr = 0, this.mr = 0, this.yr = A()
                }
                var i = t.prototype;
                return i.has = function(t) {
                    return !!this.yr[t]
                }, i.get = function(t) {
                    var i = this.yr[t];
                    if (i) return i.access = ++this.mr, i.payload
                }, i.put = function(t, i) {
                    this.has(t) || this.pr++, this.yr[t] = {
                        payload: i,
                        access: this.mr
                    }, this.wr()
                }, i.wr = function() {
                    if (!(this.pr <= this.dr)) {
                        var t, i = this.yr,
                            n = this.mr + 1;
                        for (var r in i) {
                            var e = i[r].access;
                            e < n && (n = e, t = r)
                        }
                        void 0 !== t && (delete i[t], this.pr--)
                    }
                }, t
            }(),
            cs = new Set(["c", "v", "a", "ad"]),
            fs = "__amp_source_origin",
            ls = function(t) {
                return "string" == typeof t ? vs(t) : t
            };

        function vs(t, i) {
            return os || (os = self.document.createElement("a"), hs = self.__AMP_URL_CACHE || (self.__AMP_URL_CACHE = new as(100))), ds(os, t, i ? null : hs)
        }

        function ds(t, i, n) {
            if (n && n.has(i)) return n.get(i);
            t.href = i, t.protocol || (t.href = t.href);
            var r, e = {
                href: t.href,
                protocol: t.protocol,
                host: t.host,
                hostname: t.hostname,
                port: "0" == t.port ? "" : t.port,
                pathname: t.pathname,
                search: t.search,
                hash: t.hash,
                origin: null
            };
            "/" !== e.pathname[0] && (e.pathname = "/" + e.pathname), ("http:" == e.protocol && 80 == e.port || "https:" == e.protocol && 443 == e.port) && (e.port = "", e.host = e.hostname), r = t.origin && "null" != t.origin ? t.origin : "data:" != e.protocol && e.host ? e.protocol + "//" + e.host : e.href, e.origin = r;
            var s = e;
            return n && n.put(i, s), s
        }

        function ms(t, i, n) {
            if (!i) return t;
            var r = t.split("#", 2),
                e = r[0].split("?", 2);
            return e[0] + (e[1] ? n ? "?".concat(i, "&").concat(e[1]) : "?".concat(e[1], "&").concat(i) : "?".concat(i)) + (r[1] ? "#".concat(r[1]) : "")
        }

        function ps(t, i) {
            return "".concat(encodeURIComponent(t), "=").concat(encodeURIComponent(i))
        }

        function gs(t, i) {
            return ms(t, bs(i))
        }

        function bs(t) {
            var i = [];
            for (var n in t) {
                var r = t[n];
                if (null != r) {
                    r = F(r);
                    for (var e = 0; e < r.length; e++) i.push(ps(n, r[e]))
                }
            }
            return i.join("&")
        }

        function ys(t) {
            return "https:" == (t = ls(t)).protocol || "localhost" == t.hostname || "127.0.0.1" == t.hostname || W(t.hostname, ".localhost")
        }

        function ws(t, i) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "source";
            return ti(null != t, "%s %s must be available", i, n), ti(ys(t) || /^\/\//.test(t), '%s %s must start with "https://" or "//" or be relative and served from either https or from localhost. Invalid value: %s', i, n, t), t
        }

        function As(t) {
            var i = t.indexOf("#");
            return -1 == i ? t : t.substring(0, i)
        }

        function xs(t) {
            return xt.test(ls(t).origin)
        }

        function Es(t) {
            return !(t && pt.includes(ls(t).protocol))
        }

        function Ps(t) {
            var i = vs(t),
                n = i.hash;
            return i.origin + i.pathname + Os(i.search) + n
        }

        function Os(t) {
            return function(t, i) {
                if (!t || "?" == t) return "";
                var n = new RegExp("[?&]".concat("(amp_(js[^&=]*|gsa|r|kit)|usqp)", "\\b[^&]*"), "g"),
                    r = t.replace(n, "").replace(/^[?&]/, "");
                return r ? "?" + r : ""
            }(t)
        }

        function Is(t) {
            if (!xs(t = ls(t))) return t.href;
            var i = t.pathname.split("/"),
                n = i[1];
            ti(cs.has(n), "Unknown path prefix in url %s", t.href);
            var r = i[2],
                e = "s" == r ? "https://" + decodeURIComponent(i[3]) : "http://" + decodeURIComponent(r);
            return ti(e.indexOf(".") > 0, "Expected a . in origin %s", e), i.splice(1, "s" == r ? 3 : 2), e + i.join("/") + Os(t.search) + (t.hash || "")
        }

        function Ms(t) {
            return vs(Is(t)).origin
        }

        function Ts(t, i) {
            return i = ls(i), "function" == typeof URL ? new URL(t, i.href).toString() : function(t, i) {
                i = ls(i);
                var n = vs(t = t.replace(/\\/g, "/"));
                return t.toLowerCase().startsWith(n.protocol) ? n.href : t.startsWith("//") ? i.protocol + t : t.startsWith("/") ? i.origin + t : i.origin + i.pathname.replace(/\/[^/]*$/, "/") + t
            }(t, i)
        }

        function Ss(t, i) {
            return Rs(i),
                function(t, i, n, r) {
                    return ms(t, ps("__amp_source_origin", n), void 0)
                }(i, 0, Ms(t.location.href))
        }

        function Rs(t) {
            var i = yt(vs(t).search);
            ti(!(fs in i), "Source origin is not allowed in %s", t)
        }
        var _s = "CANCELLED",
            ks = "BLOCK_BY_CONSENT",
            Cs = self.__AMP_ERRORS || [];
        self.__AMP_ERRORS = Cs;
        var Ns = function(t) {
            return (i = 0, n = function() {
                var t = Math.pow(1.5, i++);
                return 1e3 * (t + function(t, i) {
                    var n = t * (i = i || .3) * Math.random();
                    return Math.random() > .5 && (n *= -1), n
                }(t))
            }, Ns = function(t) {
                return setTimeout(t, n())
            })(t);
            var i, n
        };

        function Ds(t, i) {
            try {
                if (t)
                    if (void 0 !== t.message) t = f(t);
                    else {
                        var n = t;
                        (t = new Error(function(t) {
                            try {
                                return JSON.stringify(t)
                            } catch (i) {
                                return String(t)
                            }
                        }(n))).origError = n
                    }
                else t = new Error("Unknown error");
                if (t.reported) return t;
                if (t.reported = !0, t.messageArray) {
                    var r = B(t.messageArray, (function(t) {
                        return null == t ? void 0 : t.tagName
                    }));
                    r > -1 && (t.associatedElement = t.messageArray[r])
                }
                var e = i || t.associatedElement;
                if (e && e.classList && (e.classList.add("i-amphtml-error"), Dt().development && (e.classList.add("i-amphtml-element-error"), e.setAttribute("error-message", t.message))), self.console && (tt(t.message) || !t.expected)) {
                    var s = console.error || console.log;
                    t.messageArray ? s.apply(console, t.messageArray) : e ? s.call(console, t.message, e) : s.call(console, t.message)
                }
                e && e.dispatchCustomEventForTesting && e.dispatchCustomEventForTesting("amp:error", t.message), Ls.call(self, void 0, void 0, void 0, void 0, t)
            } catch (t) {
                setTimeout((function() {
                    throw t
                }))
            }
            return t
        }

        function js() {
            return new Error(_s)
        }

        function Us(t) {
            return !!t && ("string" == typeof t ? t.startsWith(ks) : "string" == typeof t.message && t.message.startsWith(ks))
        }

        function Ls(t, i, n, r, e) {
            var s = this;
            if (!this || !this.document || e && e.expected || es(this.document), !Dt().development) {
                var u = !1;
                try {
                    u = function(t) {
                        if (!t.document) return !1;
                        for (var i = t.document.querySelectorAll("script[src]"), n = 0; n < i.length; n++)
                            if (!xs(i[n].src.toLowerCase())) return !0;
                        return !1
                    }(self)
                } catch (t) {}
                if (!(u && Math.random() > .01)) {
                    var o = function(t, i, n, r, e, s) {
                        t = function(t, i) {
                            return i && (t = i.message ? i.message : String(i)), t || (t = "Unknown error"), t
                        }(t, e);
                        var u, o, h = !(!e || !e.expected);
                        if (!/_reported_/.test(t) && t != _s) {
                            var a = !(self && self.window),
                                c = Math.random();
                            if (!((function(t) {
                                    return -1 != t.indexOf($e)
                                }(t) || "Script error." == t || a) && (h = !0, c > .001))) {
                                var f = tt(t);
                                if (!(f && c > .1)) {
                                    var l = Object.create(null);
                                    l.v = Dt().rtvVersion, l.noAmp = s ? "1" : "0", l.m = t.replace(X, ""), l.a = f ? "1" : "0", l.ex = h ? "1" : "0", l.dw = a ? "1" : "0";
                                    var v = "1p";
                                    if (self.context && self.context.location ? (l["3p"] = "1", v = "3p") : Dt().runtime && (v = Dt().runtime), l.rt = v, "inabox" === v && (l.adid = Dt().a4aId), l.ca = null !== (o = self.AMP_CONFIG) && void 0 !== o && o.canary ? "1" : "0", l.bt = (null === (u = self.AMP_CONFIG) || void 0 === u ? void 0 : u.type) || "unknown", self.location.ancestorOrigins && self.location.ancestorOrigins[0] && (l.or = self.location.ancestorOrigins[0]), self.viewerState && (l.vs = self.viewerState), self.parent && self.parent != self && (l.iem = "1"), self.AMP && self.AMP.viewer) {
                                        var d = self.AMP.viewer.getResolvedViewerUrl(),
                                            m = self.AMP.viewer.maybeGetMessagingOrigin();
                                        d && (l.rvu = d), m && (l.mso = m)
                                    }
                                    var p, g, b, y = [],
                                        w = self[He] || null;
                                    for (var A in w) {
                                        var x = w[A];
                                        y.push("".concat(A, "=").concat(x ? "1" : "0"))
                                    }
                                    return l.exps = y.join(","), e ? (l.el = (null === (p = e.associatedElement) || void 0 === p ? void 0 : p.tagName) || "u", e.args && (l.args = JSON.stringify(e.args)), f || e.ignoreStack || !e.stack || (l.s = e.stack), e.message && (e.message += " _reported_")) : (l.f = i || "", l.l = n || "", l.c = r || ""), l.r = self.document ? self.document.referrer : "", l.ae = Cs.join(","), l.fr = self.location.originalHash || self.location.hash, "production" === l.bt && (l.pt = "1"), b = t, (g = Cs).length >= 25 && g.splice(0, g.length - 25 + 1), g.push(b), l
                                }
                            }
                        }
                    }(t, i, n, r, e, u);
                    o && Ns((function() {
                        try {
                            return function(t, i) {
                                return i.pt && Math.random() < .9 ? h() : function(t, i) {
                                    var n = Yn(t);
                                    if (!n.isSingleDoc()) return Promise.resolve(!1);
                                    var r = n.getSingleDoc();
                                    if (!r.getRootNode().documentElement.hasAttribute("report-errors-to-viewer")) return Promise.resolve(!1);
                                    var e = vr(r);
                                    return e.hasCapability("errorReporter") ? e.isTrustedViewer().then((function(t) {
                                        return !!t && (e.sendMessage("error", {
                                            "m": (n = i).m,
                                            "a": n.a,
                                            "s": n.s,
                                            "el": n.el,
                                            "ex": n.ex,
                                            "v": n.v,
                                            "pt": n.pt
                                        }), !0);
                                        var n
                                    })) : Promise.resolve(!1)
                                }(t, i).then((function(t) {
                                    if (!t) {
                                        var n = new XMLHttpRequest;
                                        n.open("POST", Math.random() < .1 ? Rt : St, !0), n.send(JSON.stringify(i))
                                    }
                                }))
                            }(s, o).catch((function() {}))
                        } catch (t) {}
                    }))
                }
            }
        }
        var zs = "Resource",
            Hs = function() {
                function t(t, i, n) {
                    i.__AMP__RESOURCE = this, this.Zt = t, this.element = i, this.debugid = i.tagName.toLowerCase() + "#" + t, this.hostWin = i.ownerDocument.defaultView, this.ti = n, this.ii = i.hasAttribute("placeholder"), this.ni = !1, this.ri = void 0, this.ei = i.isBuilt() ? 1 : 0, 0 == this.ei && i.isBuilding() && this.build(), this.si = -1, this.oi = 0, this.ui = null, this.hi = null, this.ai = !1, this.ci = zi(-1e4, -1e4, 0, 0), this.fi = null, this.li = !1, this.vi = null, this.di = null, this.mi = void 0;
                    var r = new a;
                    this.pi = r.promise, this.bi = r.resolve, this.gi = !1
                }
                t.forElement = function(i) {
                    return Zt(t.forElementOptional(i))
                }, t.forElementOptional = function(t) {
                    return t.__AMP__RESOURCE
                }, t.setOwner = function(i, n) {
                    Zt(n.contains(i)), t.forElementOptional(i) && t.forElementOptional(i).updateOwner(n), i.__AMP__OWNER = n;
                    for (var r = i.getElementsByClassName("i-amphtml-element"), e = 0; e < r.length; e++) {
                        var s = r[e];
                        t.forElementOptional(s) && t.forElementOptional(s).updateOwner(void 0)
                    }
                };
                var i = t.prototype;
                return i.getId = function() {
                    return this.Zt
                }, i.updateOwner = function(t) {
                    this.ri = t
                }, i.getOwner = function() {
                    if (void 0 === this.ri) {
                        for (var t = this.element; t; t = t.parentElement)
                            if (t.__AMP__OWNER) {
                                this.ri = t.__AMP__OWNER;
                                break
                            }
                        void 0 === this.ri && (this.ri = null)
                    }
                    return this.ri
                }, i.hasOwner = function() {
                    return !!this.getOwner()
                }, i.getLayoutPriority = function() {
                    return -1 != this.si ? this.si : this.element.getLayoutPriority()
                }, i.updateLayoutPriority = function(t) {
                    this.si = t
                }, i.getState = function() {
                    return this.ei
                }, i.isBuilt = function() {
                    return this.element.isBuilt()
                }, i.isBuilding = function() {
                    return this.ni
                }, i.whenBuilt = function() {
                    return this.element.signals().whenSignal("res-built")
                }, i.build = function() {
                    var t = this;
                    return this.ni || !this.element.isUpgraded() ? null : (this.ni = !0, this.element.buildInternal().then((function() {
                        t.ni = !1, t.ei = 1, t.element.signals().signal("res-built")
                    }), (function(i) {
                        throw t.maybeReportErrorOnBuildFailure(i), t.ni = !1, t.element.signals().rejectSignal("res-built", i), i
                    })))
                }, i.maybeReportErrorOnBuildFailure = function(t) {
                    Us(t) || Qt().error(zs, "failed to build:", this.debugid, t)
                }, i.changeSize = function(t, i, n) {
                    this.element.applySize(t, i, n), this.requestMeasure()
                }, i.overflowCallback = function(t, i, n, r) {
                    t && (this.mi = {
                        height: i,
                        width: n,
                        margins: r
                    }), this.element.overflowCallback(t, i, n, r)
                }, i.resetPendingChangeSize = function() {
                    this.mi = void 0
                }, i.getPendingChangeSize = function() {
                    return this.mi
                }, i.getUpgradeDelayMs = function() {
                    return this.element.getUpgradeDelayMs()
                }, i.measure = function() {
                    if (!(this.ii && this.element.parentElement && this.element.parentElement.tagName.startsWith("AMP-")) || "__AMP__RESOURCE" in this.element.parentElement)
                        if (this.element.ownerDocument && this.element.ownerDocument.defaultView) {
                            this.li = !1;
                            var t = this.ci;
                            this.yi();
                            var i, n, r = this.ci,
                                e = (n = r, !((i = t).width == n.width && i.height === n.height));
                            (1 == this.ei || t.top != r.top || e) && this.element.isUpgraded() && (1 == this.ei ? this.ei = 2 : 4 != this.ei && 5 != this.ei || !this.element.isRelayoutNeeded() || (this.ei = 2)), this.hasBeenMeasured() || (this.fi = r), this.element.updateLayoutBox(r, e)
                        } else this.ei = 1
                }, i.ensureMeasured = function() {
                    var t = this;
                    return this.hasBeenMeasured() ? h() : dr(this.hostWin).measure((function() {
                        return t.measure()
                    }))
                }, i.yi = function() {
                    var t = mr(this.element);
                    this.ci = t.getLayoutRect(this.element);
                    var i = !1;
                    if (t.supportsPositionFixed() && this.isDisplayed())
                        for (var n = this.ti.getAmpdoc().win, r = n.document.body, e = this.element; e && e != r; e = e.offsetParent) {
                            if (e.isAlwaysFixed && e.isAlwaysFixed()) {
                                i = !0;
                                break
                            }
                            if (t.isDeclaredFixed(e) && "fixed" == Nr(n, e).position) {
                                i = !0;
                                break
                            }
                        }
                    this.ai = i, i && (this.ci = Gi(this.ci, -t.getScrollLeft(), -t.getScrollTop()))
                }, i.completeCollapse = function() {
                    kr(this.element, !1), this.ci = zi(this.ci.left, this.ci.top, 0, 0), this.ai = !1, this.element.updateLayoutBox(this.getLayoutBox());
                    var t = this.getOwner();
                    t && t.collapsedCallback(this.element)
                }, i.completeExpand = function() {
                    kr(this.element, !0), this.requestMeasure()
                }, i.isMeasureRequested = function() {
                    return this.li
                }, i.hasBeenMeasured = function() {
                    return !!this.fi
                }, i.requestMeasure = function() {
                    this.li = !0
                }, i.getLayoutSize = function() {
                    return i = (t = this.ci).height, {
                        width: t.width,
                        height: i
                    };
                    var t, i
                }, i.getLayoutBox = function() {
                    if (!this.ai) return this.ci;
                    var t = mr(this.element);
                    return Gi(this.ci, t.getScrollLeft(), t.getScrollTop())
                }, i.getInitialLayoutBox = function() {
                    return this.fi || this.ci
                }, i.isDisplayed = function() {
                    if (!this.element.ownerDocument || !this.element.ownerDocument.defaultView) return !1;
                    var t = this.element.getLayout() == se,
                        i = this.getLayoutBox(),
                        n = i.height > 0 && i.width > 0;
                    return t || n
                }, i.isFixed = function() {
                    return this.ai
                }, i.overlaps = function(t) {
                    return n = t, (i = this.getLayoutBox()).top <= n.bottom && n.top <= i.bottom && i.left <= n.right && n.left <= i.right;
                    var i, n
                }, i.prerenderAllowed = function() {
                    return this.element.prerenderAllowed()
                }, i.previewAllowed = function() {
                    return this.element.previewAllowed()
                }, i.isBuildRenderBlocking = function() {
                    return this.element.isBuildRenderBlocking()
                }, i.whenWithinViewport = function(t) {
                    if (Zt(!1 !== t), !this.isLayoutPending() || !0 === t) return h();
                    var i = t,
                        n = String(i);
                    return this.vi && this.vi[n] ? this.vi[n].promise : this.isWithinViewportRatio(i) ? h() : (this.vi = this.vi || {}, this.vi[n] = new a, this.vi[n].promise)
                }, i.wi = function() {
                    if (this.vi) {
                        var t = this.getDistanceViewportRatio();
                        for (var i in this.vi) this.isWithinViewportRatio(parseFloat(i), t) && (this.vi[i].resolve(), delete this.vi[i])
                    }
                }, i.getDistanceViewportRatio = function() {
                    var t = mr(this.element).getRect(),
                        i = this.getLayoutBox(),
                        n = this.ti.getScrollDirection(),
                        r = 1,
                        e = 0;
                    if (t.right < i.left || t.left > i.right) return {
                        distance: !1
                    };
                    if (t.bottom < i.top) e = i.top - t.bottom, -1 == n && (r = 2);
                    else {
                        if (!(t.top > i.bottom)) return {
                            distance: !0
                        };
                        e = t.top - i.bottom, 1 == n && (r = 2)
                    }
                    return {
                        distance: e,
                        scrollPenalty: r,
                        viewportHeight: t.height
                    }
                }, i.isWithinViewportRatio = function(t, i) {
                    if ("boolean" == typeof t) return t;
                    var n = i || this.getDistanceViewportRatio(),
                        r = n.distance,
                        e = n.scrollPenalty,
                        s = n.viewportHeight;
                    return "boolean" == typeof r ? r : r < s * t / e
                }, i.renderOutsideViewport = function() {
                    return this.wi(), this.hasOwner() || this.isWithinViewportRatio(this.element.renderOutsideViewport())
                }, i.idleRenderOutsideViewport = function() {
                    return this.isWithinViewportRatio(this.element.idleRenderOutsideViewport())
                }, i.layoutScheduled = function(t) {
                    this.ei = 3, this.element.layoutScheduleTime = t
                }, i.layoutCanceled = function() {
                    this.ei = this.hasBeenMeasured() ? 2 : 1
                }, i.startLayout = function() {
                    var t = this;
                    if (this.di) return this.di;
                    if (4 == this.ei) return h();
                    if (5 == this.ei) return Promise.reject(this.hi);
                    if (Zt(0 != this.ei), Zt(this.isDisplayed()), 3 != this.ei) {
                        var i = Qt().createExpectedError("startLayout called but not LAYOUT_SCHEDULED", "currently: ", this.ei);
                        return Ds(i, this.element), Promise.reject(i)
                    }
                    if (this.oi > 0 && !this.element.isRelayoutNeeded()) return Qt().fine(zs, "layout canceled since it wasn't requested:", this.debugid, this.ei), this.ei = 4, h();
                    Qt().fine(zs, "start layout:", this.debugid, "count:", this.oi), this.oi++, this.ei = 3, this.ui = new AbortController;
                    var n = this.ui.signal,
                        r = new Promise((function(i, r) {
                            dr(t.hostWin).mutate((function() {
                                var e;
                                try {
                                    e = t.element.layoutCallback(n)
                                } catch (t) {
                                    r(t)
                                }
                                Promise.resolve(e).then(i, r)
                            })), n.onabort = function() {
                                return r(js())
                            }
                        })).then((function() {
                            return t.Ai(!0, n)
                        }), (function(i) {
                            return t.Ai(!1, n, i)
                        }));
                    return this.di = r
                }, i.Ai = function(t, i, n) {
                    if (this.ui = null, i.aborted) {
                        var r = Qt().createError("layoutComplete race");
                        throw r.associatedElement = this.element, Qt().expectedError(zs, r), js()
                    }
                    if (this.bi && (this.bi(), this.bi = null), this.di = null, this.ei = t ? 4 : 5, this.hi = n, !t) return Qt().fine(zs, "loading failed:", this.debugid, n), Promise.reject(n);
                    Qt().fine(zs, "layout complete:", this.debugid)
                }, i.isLayoutPending = function() {
                    return 4 != this.ei && 5 != this.ei
                }, i.loadedOnce = function() {
                    return this.element.R1() ? this.element.whenLoaded() : this.pi
                }, i.isInViewport = function() {
                    return this.gi && this.wi(), this.gi
                }, i.setInViewport = function(t) {
                    this.gi = t
                }, i.unlayout = function() {
                    0 != this.ei && 1 != this.ei && 2 != this.ei && (this.ui && (this.ui.abort(), this.ui = null), this.setInViewport(!1), this.element.unlayoutCallback() && (this.element.togglePlaceholder(!0), this.ei = 1, this.oi = 0, this.di = null))
                }, i.getTaskId = function(t) {
                    return this.debugid + "#" + t
                }, i.pause = function() {
                    this.element.pause()
                }, i.pauseOnRemove = function() {
                    this.element.pause()
                }, i.resume = function() {
                    this.element.resume()
                }, i.unload = function() {
                    this.element.unmount()
                }, i.disconnect = function() {
                    delete this.element.__AMP__RESOURCE, this.element.disconnect(!0)
                }, t
            }(),
            Gs = "ready-scan",
            Vs = "scheduler",
            Fs = "250% 31.25%",
            qs = function() {
                function t(t) {
                    var i = this;
                    this.xi = t;
                    var n = t.win;
                    this.Ei = new n.IntersectionObserver((function(t) {
                        return i.Oi(t)
                    }), {
                        root: Ni(n) ? n.document : null,
                        rootMargin: Fs
                    }), this.Pi = new Map, this.Ti = new Map, this.Ii = [], this.Mi = !1, t.whenReady().then((function() {
                        return i.Si()
                    })), this.ki = t.onVisibilityChanged((function() {
                        return i._i()
                    }))
                }
                var i = t.prototype;
                return i.dispose = function() {
                    this.Ei.disconnect(), this.Ti.clear(), this.ki && (this.ki(), this.ki = null)
                }, i.scheduleAsap = function(t) {
                    this.Ti.set(t, {
                        asap: !0,
                        isIntersecting: !1
                    }), this.Ri(t)
                }, i.schedule = function(t) {
                    this.Ti.has(t) || (t.deferredMount() ? (this.Ti.set(t, {
                        asap: !1,
                        isIntersecting: !1
                    }), this.Ei.observe(t), this.Pi.size > 0 && this.Pi.forEach((function(i, n) {
                        ji(n, t) && i.observe(t)
                    }))) : this.Ti.set(t, {
                        asap: !1,
                        isIntersecting: !0
                    }), this.Ri(t))
                }, i.unschedule = function(t) {
                    this.Ti.has(t) && (this.Ti.delete(t), this.Ei.unobserve(t), this.Pi.size > 0 && this.Pi.forEach((function(i) {
                        i.unobserve(t)
                    })), this.Ii && ($(this.Ii, t), this.Si()))
                }, i.setContainer = function(t, i) {
                    var n = this;
                    if (!this.Pi.has(t)) {
                        var r = new this.xi.win.IntersectionObserver((function(t) {
                            return n.Oi(t)
                        }), {
                            root: i || t,
                            rootMargin: Fs
                        });
                        this.Pi.set(t, r), this.Ti.forEach((function(i, n) {
                            !i.asap && ji(t, n) && r.observe(n)
                        }))
                    }
                }, i.removeContainer = function(t) {
                    var i = this.Pi.get(t);
                    i && (i.disconnect(), this.Pi.delete(t))
                }, i.Ni = function() {
                    var t = this;
                    this.xi.isReady() && !this.Mi && (this.Mi = !0, this.xi.win.setTimeout((function() {
                        t.xi.signals().signal(Gs)
                    }), 50))
                }, i._i = function() {
                    var t = this,
                        i = this.xi.getVisibilityState();
                    i != yr && i != wr && i != gr && i != br || this.Ti.forEach((function(i, n) {
                        return t.Ci(n)
                    }))
                }, i.Ri = function(t) {
                    var i = this.Ii;
                    i ? (i.includes(t) || i.push(t), this.Si()) : this.Ci(t)
                }, i.Si = function() {
                    var t = this.xi.isReady(),
                        i = this.Ii;
                    if (i)
                        for (var n = 0; n < i.length; n++) {
                            var r = i[n];
                            (t || ki(r, this.xi.getRootNode())) && (i.splice(n--, 1), this.Ci(r))
                        }
                    t && (this.Ii = null, this.Ni())
                }, i.Oi = function(t) {
                    for (var i = 0; i < t.length; i++) {
                        var n = t[i],
                            r = n.isIntersecting,
                            e = n.target,
                            s = this.Ti.get(e);
                        if (s) {
                            var u = r || s.isIntersecting;
                            u !== s.isIntersecting && this.Ti.set(e, {
                                asap: s.asap,
                                isIntersecting: u
                            }), u && this.Ci(e)
                        }
                    }
                }, i.Ci = function(t) {
                    var i = this.Ii,
                        n = !(i && i.includes(t)),
                        r = this.Ti.get(t) || {
                            asap: !1,
                            isIntersecting: !1
                        },
                        e = r.asap,
                        s = r.isIntersecting,
                        u = this.xi.getVisibilityState();
                    if (n && (e || s) && (u == yr || u == wr || u == gr && t.prerenderAllowed() || u == br && t.previewAllowed())) {
                        this.unschedule(t);
                        var o = this.xi.win;
                        (e || t.getBuildPriority() <= 0 ? o.setTimeout : o.requestIdleCallback || o.setTimeout)((function() {
                            return t.mountInternal()
                        }))
                    }
                }, t
            }();

        function Bs(t) {
            return xn(t, Vs, qs), Pn(t, Vs)
        }
        var $s = function() {
                function t() {
                    this.Di = []
                }
                var n = t.prototype;
                return n.peek = function() {
                    var t = this.length;
                    return t ? this.Di[t - 1].item : null
                }, n.enqueue = function(t, i) {
                    if (isNaN(i)) throw new Error("Priority must not be NaN.");
                    var n = this.ji(i);
                    this.Di.splice(n, 0, {
                        item: t,
                        priority: i
                    })
                }, n.ji = function(t) {
                    for (var i = -1, n = 0, r = this.length; n <= r && (i = Math.floor((n + r) / 2)) !== this.length;)
                        if (this.Di[i].priority < t) n = i + 1;
                        else {
                            if (!(i > 0 && this.Di[i - 1].priority >= t)) break;
                            r = i - 1
                        }
                    return i
                }, n.forEach = function(t) {
                    for (var i = this.length; i--;) t(this.Di[i].item)
                }, n.dequeue = function() {
                    var t = this.Di.pop();
                    return t ? t.item : null
                }, i(t, [{
                    key: "length",
                    get: function() {
                        return this.Di.length
                    }
                }]), t
            }(),
            Ws = "CHUNK",
            Ys = /nochunking=1/.test(self.location.hash),
            Ks = h();

        function Js(t) {
            return xn(t, "chunk", nu), Pn(t, "chunk")
        }

        function Xs(t, i, n) {
            if (Ys) Ks.then(i);
            else {
                var r = Js(t.documentElement || t);
                r.runForStartup(i), n && r.runForStartup((function() {
                    r.zi = !0
                }))
            }
        }

        function Qs(t, i, n) {
            Ys ? Ks.then(i) : Js(t).run(i, n)
        }
        var Zs = "not_run",
            tu = function() {
                function t(t) {
                    this.state = Zs, this.Ui = t
                }
                var i = t.prototype;
                return i.Li = function(t) {
                    if ("run" != this.state) {
                        this.state = "run";
                        try {
                            this.Ui(t)
                        } catch (t) {
                            throw this.Hi(t), t
                        }
                    }
                }, i.Gi = function() {
                    return this.Ui.displayName || this.Ui.name
                }, i.Hi = function(t) {}, i.Vi = function() {
                    return !1
                }, i.Fi = function() {
                    return !1
                }, t
            }(),
            iu = function(t) {
                U(n, t);
                var i = H(n);

                function n(t, n, r) {
                    var e;
                    return (e = i.call(this, t)).Bi = r, e
                }
                var r = n.prototype;
                return r.Hi = function(t) {
                    es(self.document)
                }, r.Vi = function() {
                    return this.qi()
                }, r.Fi = function() {
                    return this.Bi.Wi
                }, r.qi = function() {
                    return this.Bi.ampdoc.isVisible()
                }, n
            }(tu),
            nu = function() {
                function t(t) {
                    var i, n = this;
                    this.ampdoc = t, this.t = t.win, this.$i = new $s, this.Ki = this.Yi.bind(this), this.Ji = 0, this.Xi = !(!this.t.navigator.scheduling || !this.t.navigator.scheduling.isInputPending), this.Qi = !1, this.zi = this.t.document.documentElement.hasAttribute("i-amphtml-no-boilerplate"), this.t.addEventListener("message", (function(t) {
                        "amp-macro-task" == Ke(t) && n.Yi(null)
                    })), this.Wi = !1, (i = t, In(i, "viewer")).then((function() {
                        n.Wi = !0
                    })), t.onVisibilityChanged((function() {
                        t.isVisible() && n.Zi()
                    }))
                }
                var i = t.prototype;
                return i.run = function(t, i) {
                    var n = new tu(t);
                    this.rn(n, i)
                }, i.runForStartup = function(t) {
                    var i = new iu(t, this.t, this);
                    this.rn(i, Number.POSITIVE_INFINITY)
                }, i.rn = function(t, i) {
                    this.$i.enqueue(t, i), this.Zi()
                }, i.en = function(t) {
                    for (var i = this.$i.peek(); i && i.state !== Zs;) this.$i.dequeue(), i = this.$i.peek();
                    return i && t && this.$i.dequeue(), i
                }, i.Yi = function(t) {
                    var i, n = this,
                        r = this.en(!0);
                    if (!r) return this.Qi = !1, this.Ji = 0, !1;
                    try {
                        i = Date.now(), r.Li(t)
                    } finally {
                        Ks.then().then().then().then().then().then().then().then().then((function() {
                            n.Qi = !1, n.Ji += Date.now() - i, Qt().fine(Ws, r.Gi(), "Chunk duration", Date.now() - i, n.Ji), n.Zi()
                        }))
                    }
                    return !0
                }, i.sn = function(t) {
                    var i = this;
                    if (this.zi && (this.Xi ? this.t.navigator.scheduling.isInputPending() : this.Ji > 5)) return this.Ji = 0, void this.on();
                    Ks.then((function() {
                        i.Ki(t)
                    }))
                }, i.Zi = function() {
                    if (!this.Qi) {
                        var t = this.en();
                        if (t) return t.Vi() ? (this.Qi = !0, void this.sn(null)) : void(t.Fi() && this.t.requestIdleCallback ? function(t, i, n, r) {
                            var e = Date.now();
                            t.requestIdleCallback((function i(s) {
                                if (s.timeRemaining() < 15) {
                                    var u = n - (Date.now() - e);
                                    u <= 0 || s.didTimeout ? (Qt().fine(Ws, "Timed out", n, s.didTimeout), r(s)) : (Qt().fine(Ws, "Rescheduling with", u, s.timeRemaining()), t.requestIdleCallback(i, {
                                        timeout: u
                                    }))
                                } else Qt().fine(Ws, "Running idle callback with ", 15), r(s)
                            }), {
                                timeout: n
                            })
                        }(this.t, 0, 2e3, this.Ki) : this.on())
                    }
                }, i.on = function() {
                    this.t.postMessage("amp-macro-task", "*")
                }, t
            }(),
            ru = "activate",
            eu = function() {
                function t(t) {
                    this.element = t, this.win = oi(t), this.actionMap_ = null, this.defaultActionAlias_ = null
                }
                t.R1 = function() {
                    return !1
                }, t.deferredMount = function(t) {
                    return !0
                }, t.prerenderAllowed = function(t) {
                    return !1
                }, t.previewAllowed = function(t) {
                    return this.prerenderAllowed(t)
                }, t.usesLoading = function(t) {
                    return !1
                }, t.createLoaderLogoCallback = function(t) {
                    return {}
                }, t.getBuildPriority = function(t) {
                    return 0
                }, t.getPreconnects = function(t) {
                    return null
                }, t.requiresShadowDom = function() {
                    return !1
                };
                var i = t.prototype;
                return i.signals = function() {
                    return this.element.signals()
                }, i.getDefaultActionAlias = function() {
                    return this.defaultActionAlias_
                }, i.getLayoutPriority = function() {
                    return 0
                }, i.updateLayoutPriority = function(t) {
                    this.element.getResources().updateLayoutPriority(this.element, t)
                }, i.getLayout = function() {
                    return this.element.getLayout()
                }, i.getLayoutBox = function() {
                    return this.element.getLayoutBox()
                }, i.getLayoutSize = function() {
                    return this.element.getLayoutSize()
                }, i.getAmpDoc = function() {
                    return this.element.getAmpDoc()
                }, i.getVsync = function() {
                    return dr(this.win)
                }, i.getConsentPolicy = function() {
                    var t = null;
                    return this.element.hasAttribute("data-block-on-consent") && (t = this.element.getAttribute("data-block-on-consent") || "default"), t
                }, i.isLayoutSupported = function(t) {
                    return t == Qr
                }, i.isAlwaysFixed = function() {
                    return !1
                }, i.upgradeCallback = function() {
                    return null
                }, i.buildCallback = function() {}, i.preconnectCallback = function(t) {}, i.attachedCallback = function() {}, i.detachedCallback = function() {}, i.setAsContainer = function(t) {
                    this.element.setAsContainerInternal(t)
                }, i.removeAsContainer = function() {
                    this.element.removeAsContainerInternal()
                }, i.isBuildRenderBlocking = function() {
                    return !1
                }, i.createPlaceholderCallback = function() {
                    return null
                }, i.renderOutsideViewport = function() {
                    return "inabox" == Dt(this.win).runtime || 3
                }, i.idleRenderOutsideViewport = function() {
                    return !1
                }, i.ensureLoaded = function() {}, i.setReadyState = function(t, i) {
                    this.element.setReadyStateInternal(t, i)
                }, i.mountCallback = function(t) {}, i.unmountCallback = function() {}, i.isRelayoutNeeded = function() {
                    return !1
                }, i.layoutCallback = function() {
                    return h()
                }, i.firstLayoutCompleted = function() {
                    this.togglePlaceholder(!1)
                }, i.pauseCallback = function() {}, i.resumeCallback = function() {}, i.unlayoutCallback = function() {
                    return !1
                }, i.unlayoutOnPause = function() {
                    return !1
                }, i.reconstructWhenReparented = function() {
                    return !0
                }, i.loadPromise = function(t) {
                    return Xe(t)
                }, i.registerAction = function(t, i) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2;
                    su(this), this.actionMap_[t] = {
                        handler: i,
                        minTrust: n
                    }
                }, i.registerDefaultAction = function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ru,
                        n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2;
                    Zt(!this.defaultActionAlias_), this.registerAction(i, t, n), this.defaultActionAlias_ = i
                }, i.executeAction = function(t, i) {
                    var n = t.method;
                    n === ru && (n = this.defaultActionAlias_ || n), su(this);
                    var r = this.actionMap_[n],
                        e = this.element.tagName;
                    ti(r, "Method not found: ".concat(n, " in ").concat(e));
                    var s = r.handler,
                        u = r.minTrust;
                    if (t.satisfiesTrust(u)) return s(t)
                }, i.forwardEvents = function(t, i) {
                    var n = this,
                        r = (V(t) ? t : [t]).map((function(t) {
                            return Ye(i, t, (function(i) {
                                Di(n.element, t, Ke(i) || {})
                            }))
                        }));
                    return function() {
                        return r.forEach((function(t) {
                            return t()
                        }))
                    }
                }, i.getPlaceholder = function() {
                    return this.element.getPlaceholder()
                }, i.togglePlaceholder = function(t) {
                    this.element.togglePlaceholder(t)
                }, i.getFallback = function() {
                    return this.element.getFallback()
                }, i.toggleFallback = function(t) {
                    this.element.toggleFallback(t)
                }, i.toggleLoading = function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                    this.element.toggleLoading(t, i)
                }, i.getOverflowElement = function() {
                    return this.element.getOverflowElement()
                }, i.renderStarted = function() {
                    this.element.renderStarted()
                }, i.getViewport = function() {
                    return mr(this.getAmpDoc())
                }, i.getIntersectionElementLayoutBox = function() {
                    return this.getLayoutBox()
                }, i.collapse = function() {
                    rr(this.getAmpDoc()).collapseElement(this.element)
                }, i.attemptCollapse = function() {
                    return rr(this.getAmpDoc()).attemptCollapse(this.element)
                }, i.forceChangeHeight = function(t) {
                    rr(this.getAmpDoc()).forceChangeSize(this.element, t, void 0)
                }, i.attemptChangeHeight = function(t) {
                    return rr(this.getAmpDoc()).requestChangeSize(this.element, t, void 0)
                }, i.attemptChangeSize = function(t, i, n) {
                    return rr(this.getAmpDoc()).requestChangeSize(this.element, t, i, void 0, n)
                }, i.measureElement = function(t) {
                    return rr(this.getAmpDoc()).measureElement(t)
                }, i.mutateElement = function(t, i) {
                    return this.measureMutateElement(null, t, i)
                }, i.measureMutateElement = function(t, i, n) {
                    return rr(this.getAmpDoc()).measureMutateElement(n || this.element, t, i)
                }, i.mutateElementSkipRemeasure = function(t) {
                    return rr(this.getAmpDoc()).mutateElement(this.element, t, !0)
                }, i.collapsedCallback = function(t) {}, i.expand = function() {
                    rr(this.getAmpDoc()).expandElement(this.element)
                }, i.mutatedAttributesCallback = function(t) {}, i.onLayoutMeasure = function() {}, i.user = function() {
                    return Jt(this.element)
                }, i.getApi = function() {
                    return this
                }, t
            }();

        function su(t) {
            t.actionMap_ || (t.actionMap_ = t.win.Object.create(null))
        }
        var uu, ou = function(t) {
                U(n, t);
                var i = H(n);

                function n() {
                    return i.apply(this, arguments)
                }
                return n
            }(eu),
            hu = Date.now(),
            au = {
                bubbles: !1
            },
            cu = function() {
                return !0
            },
            fu = [],
            lu = new Set;

        function vu(t, n) {
            var r = function(t, n) {
                    if (t.__AMP_BASE_CE_CLASS) return t.__AMP_BASE_CE_CLASS;
                    var r = function(r) {
                        U(s, r);
                        var e = H(s);

                        function s() {
                            var t;
                            return (t = e.call(this)).createdCallback(), t
                        }
                        var u = s.prototype;
                        return u.createdCallback = function() {
                            this.un = !1, this.hn = !1, this.an = null, this.cn = !1, this.fn = null, this.ln = null, this.vn = "upgrading", this.everAttached = !1, this.xi = null, this.ti = null, this.dn = Qr, this.oi = 0, this.mn = !1, this.warnOnMissingOverflow = !0, this.sizerElement = void 0, this.pn = void 0, this.layoutScheduleTime = void 0;
                            var i = this,
                                n = t.__AMP_EXTENDED_ELEMENTS && t.__AMP_EXTENDED_ELEMENTS[this.localName];
                            this.bn = n === ou ? null : n || null, this.bn || fu.push(this), this.gn = null, this.yn = 1, this.wn = 0, this.An = void 0, this.xn = void 0, this.Nt = new Pr, this.bn && this.Nt.signal(we);
                            var r = function(t, i) {
                                return zn(t = Tn(t), i) ? kn(t, i) : null
                            }(t, "performance");
                            this.En = r && r.isPerformanceTrackingOn(), this.On = null, i.__AMP_UPG_RES && (i.__AMP_UPG_RES(i), delete i.__AMP_UPG_RES, delete i.__AMP_UPG_PRM)
                        }, u.signals = function() {
                            return this.Nt
                        }, u.getAmpDoc = function() {
                            return Zt(this.xi), this.xi
                        }, u.getResources = function() {
                            return Zt(this.ti), this.ti
                        }, u.isUpgraded = function() {
                            return 2 == this.yn
                        }, u.whenUpgraded = function() {
                            return this.Nt.whenSignal(Ae)
                        }, u.upgrade = function(t) {
                            this.xn || 1 == this.yn && (this.bn = t, this.Nt.signal(we), this.everAttached && this.Pn())
                        }, u.markUnresolved = function() {
                            this.bn || this.classList.add("amp-unresolved", "i-amphtml-unresolved")
                        }, u.getUpgradeDelayMs = function() {
                            return this.wn
                        }, u.Tn = function(i, n) {
                            this.gn = i, this.wn = t.Date.now() - n, this.yn = 2, this.setReadyStateInternal(en), this.classList.remove("amp-unresolved", "i-amphtml-unresolved"), this.In(), this.dispatchCustomEventForTesting(ge), this.R1() || this.getResources().upgraded(this), this.Nt.signal(Ae)
                        }, u.In = function() {
                            this.dn != Qr && this.gn && !this.gn.isLayoutSupported(this.dn) && (ti(this.getAttribute("layout"), "The element did not specify a layout attribute. Check https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/control_layout and the respective element documentation for details."), ti(!1, "Layout not supported: ".concat(this.dn)))
                        }, u.getBuildPriority = function() {
                            return this.bn ? this.bn.getBuildPriority(this) : 3
                        }, u.getLayoutPriority = function() {
                            return this.gn ? this.gn.getLayoutPriority() : 3
                        }, u.getDefaultActionAlias = function() {
                            return Zt(this.isUpgraded()), this.gn.getDefaultActionAlias()
                        }, u.isBuilding = function() {
                            return !!this.an
                        }, u.isBuilt = function() {
                            return this.un
                        }, u.whenBuilt = function() {
                            return this.Nt.whenSignal(xe)
                        }, u.buildInternal = function() {
                            var t = this;
                            if (mu(this), Zt(this.bn), this.an) return this.an;
                            this.setReadyStateInternal(en);
                            var i = this.Mn();
                            this.Sn();
                            var n = i.then((function() {
                                var i, n = t.kn(),
                                    r = n ? null : t._n();
                                if (n || r) return (i = t, Gn(i, "consentPolicyManager", "amp-consent")).then((function(t) {
                                    return !t || (n ? t.whenPolicyUnblock(n) : t.whenPurposesUnblock(r))
                                })).then((function(t) {
                                    if (!t) throw new Error(ks)
                                }))
                            })).then((function() {
                                return Zt(t.gn).buildCallback()
                            }));
                            return this.an = n.then((function() {
                                if (t.un = !0, t.classList.add("i-amphtml-built"), t.classList.remove("i-amphtml-notbuilt", "amp-notbuilt"), t.Nt.signal(xe), t.R1() ? t.setReadyStateInternal(t.vn != en ? t.vn : sn) : (t.setReadyStateInternal(un), t.preconnect(!1)), t.hn && t.Rn(), t.An && ar(oi(t)).delay(t.Nn.bind(t), 1), !t.getPlaceholder()) {
                                    var i = t.createPlaceholder();
                                    i && t.appendChild(i)
                                }
                            }), (function(i) {
                                throw t.Nt.rejectSignal(xe, i), t.R1() && t.setReadyStateInternal(hn, i), Us(i) || Ds(i, t), i
                            }))
                        }, u.build = function() {
                            var t = this;
                            return this.an ? this.an : this.Nt.whenSignal(we).then((function() {
                                return t.R1() && Bs(t.getAmpDoc()).scheduleAsap(t), t.whenBuilt()
                            }))
                        }, u.mountInternal = function() {
                            var t = this;
                            if (this.fn) return this.fn;
                            this.ln = this.ln || new AbortController;
                            var i = this.ln.signal;
                            return this.fn = this.buildInternal().then((function() {
                                if (Zt(t.R1()), !i.aborted) {
                                    t.setReadyStateInternal(t.vn != sn ? t.vn : t.bn.usesLoading(t) ? un : sn), t.cn = !0;
                                    var n = t.gn.mountCallback(i);
                                    return !!n && n.then(cu)
                                }
                            })).then((function(n) {
                                if (t.ln = null, i.aborted) throw js();
                                t.Nt.signal(Ee), t.bn.usesLoading(t) && !n || t.setReadyStateInternal(on)
                            })).catch((function(i) {
                                var n;
                                throw t.ln = null, (n = i) && ("string" == typeof n ? n.startsWith(_s) : "string" == typeof n.message && n.message.startsWith(_s)) ? t.fn = null : (t.Nt.rejectSignal(Ee, i), t.setReadyStateInternal(hn, i)), i
                            }))
                        }, u.mount = function() {
                            var t = this;
                            if (this.fn) return this.fn;
                            this.ln = this.ln || new AbortController;
                            var i = this.ln.signal;
                            return this.Nt.whenSignal(we).then((function() {
                                if (!t.R1()) return t.whenBuilt();
                                if (i.aborted) throw js();
                                return Bs(t.getAmpDoc()).scheduleAsap(t), t.whenMounted()
                            }))
                        }, u.unmount = function() {
                            this.hn && this.pause(), this.R1() ? (this.ln && (this.ln.abort(), this.ln = null), Bs(this.getAmpDoc()).unschedule(this), this.cn && this.gn.unmountCallback(), this.cn = !1, this.fn = null, this.Cn(), this.hn && this.Pn(!0)) : this.Dn()
                        }, u.whenMounted = function() {
                            return this.Nt.whenSignal(Ee)
                        }, u.whenLoaded = function() {
                            return this.Nt.whenSignal(Ie)
                        }, u.ensureLoaded = function(t) {
                            var i = this;
                            return this.mount().then((function() {
                                if (i.R1()) return i.bn.usesLoading(i) && i.gn.ensureLoaded(), i.whenLoaded();
                                var n = i.jn();
                                return n.whenBuilt().then((function() {
                                    if (4 != n.getState() && ((3 != n.getState() || n.isMeasureRequested()) && n.measure(), n.isDisplayed())) return i.getResources().scheduleLayoutOrPreload(n, !0, t, !0), i.whenLoaded()
                                }))
                            }))
                        }, u.setAsContainerInternal = function(t) {
                            Bs(this.getAmpDoc()).setContainer(this, t)
                        }, u.removeAsContainerInternal = function() {
                            Bs(this.getAmpDoc()).removeContainer(this)
                        }, u.setReadyStateInternal = function(t, i) {
                            if (t !== this.vn && (this.vn = t, this.R1())) switch (t) {
                                case un:
                                    return this.Nt.signal(Pe), this.Nt.reset(Me), this.Nt.reset(Ie), this.classList.add("i-amphtml-layout"), this.toggleLoading(!0), void this.dispatchCustomEventForTesting(be);
                                case on:
                                    return this.Nt.signal(Pe), this.Nt.signal(Ie), this.Nt.reset(Me), this.classList.add("i-amphtml-layout"), this.toggleLoading(!1), Di(this, "load", null, au), void this.dispatchCustomEventForTesting(ye);
                                case hn:
                                    return this.Nt.rejectSignal(Ie, i), this.toggleLoading(!1), void Di(this, "error", i, au)
                            }
                        }, u.preconnect = function(t) {
                            var i = this;
                            Zt(this.isUpgraded()), t ? this.gn.preconnectCallback(t) : Xs(this.getAmpDoc(), (function() {
                                i.ownerDocument && i.ownerDocument.defaultView && i.gn.preconnectCallback(t)
                            }))
                        }, u.R1 = function() {
                            return !!this.bn && this.bn.R1()
                        }, u.deferredMount = function() {
                            return !!this.bn && this.bn.deferredMount(this)
                        }, u.isAlwaysFixed = function() {
                            return !!this.gn && this.gn.isAlwaysFixed()
                        }, u.updateLayoutBox = function(t) {
                            var i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                            this.isBuilt() && this.onMeasure(i)
                        }, u.onMeasure = function() {
                            Zt(this.isBuilt());
                            try {
                                this.gn.onLayoutMeasure()
                            } catch (t) {
                                Ds(t, this)
                            }
                        }, u.Sn = function() {
                            var t;
                            return void 0 !== this.sizerElement || this.dn !== ie && this.dn !== ue || (this.sizerElement = this.querySelector("i-amphtml-sizer"), null === (t = this.sizerElement) || void 0 === t || t.setAttribute("slot", "i-amphtml-svc")), this.sizerElement || null
                        }, u.zn = function(t) {
                            if (this.dn !== ie)
                                if (this.dn !== ue);
                                else {
                                    var i = t.querySelector(".i-amphtml-intrinsic-sizer");
                                    if (!i) return;
                                    i.setAttribute("src", "")
                                }
                            else Rr(t, "paddingTop", "0")
                        }, u.Un = function() {
                            var t = this,
                                i = this.hasAttribute("media") || this.hasAttribute("sizes") && !this.hasAttribute("disable-inline-width") || this.hasAttribute("heights"),
                                n = !!this.On,
                                r = this.ownerDocument.defaultView;
                            i != n && r && (i ? (this.On = new Te(r, (function() {
                                return t.Ln()
                            })), this.Ln()) : this.Hn())
                        }, u.Hn = function() {
                            this.On && (this.On.dispose(), this.On = null)
                        }, u.Ln = function() {
                            var t = this.On;
                            if (t) {
                                t.start();
                                var i = this.getAttribute("media") || null,
                                    n = !i || t.resolveMatchQuery(i);
                                this.classList.toggle("i-amphtml-hidden-by-media-query", !n);
                                var r = this.hasAttribute("disable-inline-width") ? null : this.getAttribute("sizes");
                                r && Rr(this, "width", t.resolveListQuery(r));
                                var e = this.dn === ie ? this.getAttribute("heights") : null;
                                if (e) {
                                    var s = this.Sn();
                                    s && Rr(s, "paddingTop", t.resolveListQuery(e))
                                }
                                t.complete(), this.jn().requestMeasure()
                            }
                        }, u.applySize = function(t, i, n) {
                            var r = this.Sn();
                            r && (this.sizerElement = null, this.zn(r), this.Gn((function() {
                                r && Ti(r)
                            }))), void 0 !== t && Rr(this, "height", t, "px"), void 0 !== i && Rr(this, "width", i, "px"), n && (null != n.top && Rr(this, "marginTop", n.top, "px"), null != n.right && Rr(this, "marginRight", n.right, "px"), null != n.bottom && Rr(this, "marginBottom", n.bottom, "px"), null != n.left && Rr(this, "marginLeft", n.left, "px")), this.Vn() && this.Fn(), Di(this, "amp:size-changed")
                        }, u.connectedCallback = function() {
                            if (function() {
                                    if (void 0 === uu) {
                                        var t = self.document.createElement("template");
                                        uu = "content" in t
                                    }
                                    return uu
                                }() || void 0 !== this.xn || (this.xn = !!yi(this, "template")), !this.xn && !this.hn && Ri(this)) {
                                if (this.hn = !0, this.everAttached || this.classList.add("i-amphtml-element", "i-amphtml-notbuilt", "amp-notbuilt"), !this.xi) {
                                    var t = oi(this),
                                        i = Yn(t).getAmpDoc(this);
                                    this.xi = i, n(i, this, this.bn)
                                }
                                if (this.ti || (this.ti = or(this.xi)), this.getResources().add(this), this.everAttached) {
                                    var r = this.reconstructWhenReparented();
                                    r && this.Cn(), this.isUpgraded() && (r && !this.R1() && this.getResources().upgraded(this), this.Rn(), this.dispatchCustomEventForTesting(ge)), this.bn && this.R1() && this.Pn()
                                } else {
                                    this.everAttached = !0;
                                    try {
                                        this.dn = function(t) {
                                            var i = t.getAttribute("i-amphtml-layout");
                                            if (i) {
                                                var n, r = he(i);
                                                return et(r), r != ie && r != ue || !t.firstElementChild ? r == Qr && kr(t, !1) : (t.sizerElement = t.querySelector("i-amphtml-sizer") || void 0, null === (n = t.sizerElement) || void 0 === n || n.setAttribute("slot", "i-amphtml-svc")), r
                                            }
                                            var e = je(t),
                                                s = e.height,
                                                u = e.layout,
                                                o = e.width;
                                            if (t.classList.add(ae(u)), ce(u) && t.classList.add("i-amphtml-layout-size-defined"), u == Qr) kr(t, !1);
                                            else if (u == Zr) _r(t, {
                                                width: ut(o),
                                                height: ut(s)
                                            });
                                            else if (u == te) Rr(t, "height", ut(s));
                                            else if (u == ie) {
                                                var h = t.ownerDocument.createElement("i-amphtml-sizer");
                                                h.setAttribute("slot", "i-amphtml-svc");
                                                var a = ve(s),
                                                    c = ve(o);
                                                ot(a), ot(c), _r(h, {
                                                    paddingTop: a / c * 100 + "%"
                                                }), t.insertBefore(h, t.firstChild), t.sizerElement = h
                                            } else if (u == ue) {
                                                var f = ke(t)(Ne),
                                                    l = f.firstElementChild;
                                                st(l), l.setAttribute("src", 'data:image/svg+xml;charset=utf-8,<svg height="'.concat(s, '" width="').concat(o, '" xmlns="http://www.w3.org/2000/svg" version="1.1"/>')), t.insertBefore(f, t.firstChild), t.sizerElement = f
                                            } else u == re || u == ne || (u == ee ? (o && Rr(t, "width", o), s && Rr(t, "height", s)) : u == se && (t.classList.add("i-amphtml-layout-awaiting-size"), o && Rr(t, "width", o), Rr(t, "height", 0)));
                                            return t.setAttribute("i-amphtml-layout", u), u
                                        }(this), this.Un()
                                    } catch (t) {
                                        Ds(t, this)
                                    }
                                    this.bn ? this.Pn() : (lu.has("*") || lu.has(this.tagName.toLowerCase())) && this.markUnresolved(), this.isUpgraded() || this.dispatchCustomEventForTesting("amp:stubbed")
                                }
                                this.toggleLoading(!0)
                            }
                        }, u.Vn = function() {
                            return this.classList.contains("i-amphtml-layout-awaiting-size")
                        }, u.Fn = function() {
                            this.classList.remove("i-amphtml-layout-awaiting-size")
                        }, u.Pn = function(t) {
                            if (this.R1()) {
                                if (!this.fn)
                                    if (Bs(this.getAmpDoc()).schedule(this), this.classList.remove("amp-unresolved", "i-amphtml-unresolved"), this.an) this.setReadyStateInternal(this.bn && this.bn.usesLoading(this) ? un : sn);
                                    else if (this.setReadyStateInternal(en), !t) {
                                    var i = this.bn.getPreconnects(this);
                                    if (i && i.length > 0) {
                                        var n = this.getAmpDoc();
                                        Xs(n, (function() {
                                            var t = n.win;
                                            if (t) {
                                                var r = ur(t);
                                                i.forEach((function(t) {
                                                    return r.url(n, t, !1)
                                                }))
                                            }
                                        }))
                                    }
                                }
                            } else this.Bn()
                        }, u.Bn = function() {
                            var i = this;
                            if (!this.xn && 1 == this.yn) {
                                var n = new(Zt(this.bn))(this);
                                this.yn = 4;
                                var r = t.Date.now(),
                                    e = n.upgradeCallback();
                                if (e) {
                                    if ("function" == typeof e.then) return e.then((function(t) {
                                        i.Tn(t || n, r)
                                    })).catch((function(t) {
                                        i.yn = 3, d(t)
                                    }));
                                    this.Tn(e, r)
                                } else this.Tn(n, r)
                            }
                        }, u.disconnectedCallback = function() {
                            this.disconnect(!1)
                        }, u.Rn = function() {
                            this.un && this.gn.attachedCallback()
                        }, u.disconnect = function(t) {
                            !this.xn && this.hn && (!t && Ri(this) || (t && this.classList.remove("i-amphtml-element"), this.hn = !1, this.getResources().remove(this), this.gn && this.gn.detachedCallback(), this.R1() && this.unmount(), this.toggleLoading(!1), this.Hn()))
                        }, u.dispatchCustomEventForTesting = function(t, i) {}, u.prerenderAllowed = function() {
                            return !this.hasAttribute("noprerender") && !!this.bn && this.bn.prerenderAllowed(this)
                        }, u.previewAllowed = function() {
                            return !!this.bn && this.bn.previewAllowed(this)
                        }, u.isBuildRenderBlocking = function() {
                            return !!this.gn && this.gn.isBuildRenderBlocking()
                        }, u.createPlaceholder = function() {
                            return this.gn ? this.gn.createPlaceholderCallback() : null
                        }, u.createLoaderLogo = function() {
                            return this.bn ? this.bn.createLoaderLogoCallback(this) : {}
                        }, u.renderOutsideViewport = function() {
                            return !!this.gn && this.gn.renderOutsideViewport()
                        }, u.idleRenderOutsideViewport = function() {
                            return !!this.gn && this.gn.idleRenderOutsideViewport()
                        }, u.getLayoutBox = function() {
                            return this.jn().getLayoutBox()
                        }, u.getLayoutSize = function() {
                            return this.jn().getLayoutSize()
                        }, u.getOwner = function() {
                            return this.jn().getOwner()
                        }, u.getIntersectionChangeEntry = function() {
                            var t = this.gn ? this.gn.getIntersectionElementLayoutBox() : this.getLayoutBox(),
                                i = this.getOwner(),
                                n = mr(this.getAmpDoc()).getRect();
                            return function(t, i, n) {
                                var r, e, s, u, o = function(t) {
                                    for (var i = -1 / 0, n = 1 / 0, r = -1 / 0, e = 1 / 0, s = 0; s < arguments.length; s++) {
                                        var u = arguments[s];
                                        if (u && (i = Math.max(i, u.left), n = Math.min(n, u.left + u.width), r = Math.max(r, u.top), e = Math.min(e, u.top + u.height), n < i || e < r)) return null
                                    }
                                    return n == 1 / 0 ? null : zi(i, r, n - i, e - r)
                                }(t, i, n) || zi(0, 0, 0, 0);
                                return function(t, i, n, r) {
                                    var e = t,
                                        s = i;
                                    return i && (n = Gi(n, -i.left, -i.top), e = Gi(e, -i.left, -i.top), s = Gi(s, -i.left, -i.top)), {
                                        time: "undefined" != typeof performance && performance.now ? performance.now() : Date.now() - hu,
                                        rootBounds: s,
                                        boundingClientRect: e,
                                        intersectionRect: n,
                                        intersectionRatio: r
                                    }
                                }(t, n, o, (e = t, s = (r = o).width * r.height, 0 == (u = e.width * e.height) ? 0 : s / u))
                            }(t, i && i.getLayoutBox(), n)
                        }, u.jn = function() {
                            return this.getResources().getResourceForElement(this)
                        }, u.getResourceId = function() {
                            return this.jn().getId()
                        }, u.isRelayoutNeeded = function() {
                            return !!this.gn && this.gn.isRelayoutNeeded()
                        }, u.getImpl = function() {
                            var t = this;
                            return (arguments.length > 0 && void 0 !== arguments[0] && !arguments[0] ? this.Mn() : this.build()).then((function() {
                                return t.gn
                            }))
                        }, u.Mn = function() {
                            var t = this;
                            return this.Nt.whenSignal(we).then((function() {
                                return t.Bn(), t.whenUpgraded()
                            }))
                        }, u.getApi = function() {
                            return this.getImpl().then((function(t) {
                                return t.getApi()
                            }))
                        }, u.getLayout = function() {
                            return this.dn
                        }, u.layoutCallback = function(t) {
                            var i = this;
                            if (mu(this), Zt(this.isBuilt()), t.aborted) return Promise.reject(js());
                            this.dispatchCustomEventForTesting(be);
                            var n = 0 == this.oi;
                            this.Nt.reset(Me), n && this.Nt.signal(Pe), this.toggleLoading(!0);
                            var r = c((function() {
                                return i.gn.layoutCallback()
                            }));
                            return this.preconnect(!0), this.classList.add("i-amphtml-layout"), r.then((function() {
                                if (t.aborted) throw js();
                                n && i.Nt.signal(Ie), i.setReadyStateInternal(on), i.oi++, i.toggleLoading(!1), i.mn || (i.gn.firstLayoutCompleted(), i.mn = !0, i.dispatchCustomEventForTesting(ye))
                            }), (function(r) {
                                if (t.aborted) throw js();
                                throw n && i.Nt.rejectSignal(Ie, r), i.setReadyStateInternal(hn, r), i.oi++, i.toggleLoading(!1), r
                            }))
                        }, u.pause = function() {
                            this.isBuilt() && (this.gn.pauseCallback(), !this.R1() && this.gn.unlayoutOnPause() && this.Dn())
                        }, u.resume = function() {
                            this.isBuilt() && this.gn.resumeCallback()
                        }, u.unlayoutCallback = function() {
                            if (mu(this), !this.isBuilt()) return !1;
                            this.Nt.signal(Me);
                            var t = this.gn.unlayoutCallback();
                            return t && this.Cn(), this.dispatchCustomEventForTesting("amp:unload"), t
                        }, u.Dn = function() {
                            this.jn().unlayout(), this.hn && this.ti && this.ti.schedulePass()
                        }, u.Cn = function() {
                            this.oi = 0, this.mn = !1, this.Nt.reset(Ee), this.Nt.reset(Oe), this.Nt.reset(Pe), this.Nt.reset(Ie), this.Nt.reset("ini-load")
                        }, u.reconstructWhenReparented = function() {
                            return !!this.gn && this.gn.reconstructWhenReparented()
                        }, u.collapse = function() {
                            this.gn && this.gn.collapse()
                        }, u.collapsedCallback = function(t) {
                            this.gn && this.gn.collapsedCallback(t)
                        }, u.expand = function() {
                            this.gn && this.gn.expand()
                        }, u.mutatedAttributesCallback = function(t) {
                            this.gn ? this.gn.mutatedAttributesCallback(t) : this.R1() && Bs(this).scheduleAsap(this)
                        }, u.enqueAction = function(t) {
                            mu(this), this.isBuilt() ? this.qn(t, !1) : (void 0 === this.An && (this.An = []), Zt(this.An).push(t), this.build())
                        }, u.Nn = function() {
                            var t = this;
                            if (this.An) {
                                var i = Zt(this.An);
                                this.An = null, i.forEach((function(i) {
                                    t.qn(i, !0)
                                }))
                            }
                        }, u.qn = function(t, i) {
                            try {
                                this.gn.executeAction(t, i)
                            } catch (i) {
                                d("Action execution failed:", i, t.node.tagName, t.method)
                            }
                        }, u.kn = function() {
                            var t, i, n = this.getAttribute("data-block-on-consent");
                            if (null === n) {
                                if (!(i = (t = this).getAmpDoc().getMetaByName("amp-consent-blocking")) || !(i = i.toUpperCase().replace(/\s+/g, "")).split(",").includes(t.tagName)) return null;
                                n = "default", this.setAttribute("data-block-on-consent", n)
                            }
                            return "" == n || "default" == n ? Zt(this.gn).getConsentPolicy() : n
                        }, u._n = function() {
                            var t, i = this.getAttribute("data-block-on-consent-purposes") || null;
                            return null == i || null === (t = i.replace(/\s+/g, "")) || void 0 === t ? void 0 : t.split(",")
                        }, u.getPlaceholder = function() {
                            return wi(this, (function(t) {
                                return t.hasAttribute("placeholder") && !du(t)
                            }))
                        }, u.togglePlaceholder = function(t) {
                            if (mu(this), t) {
                                var i = this.getPlaceholder();
                                i && i.classList.remove("amp-hidden")
                            } else
                                for (var n = (this, e = void 0, void 0, di("placeholder"), e = this, s = "> [".concat("placeholder", "]"), fi(e) ? e.querySelectorAll(li(s, ":scope")) : mi(e, s)), r = 0; r < n.length; r++) du(n[r]) || n[r].classList.add("amp-hidden");
                            var e, s
                        }, u.getFallback = function() {
                            return Ai(this, "fallback")
                        }, u.toggleFallback = function(t) {
                            mu(this);
                            var i, n = this.jn().getState();
                            if ((this.R1() || !t || 0 != n && 1 != n && 2 != n) && (this.classList.toggle("amp-notsupported", t), 1 == t)) {
                                var r = this.getFallback();
                                r && (i = this.getAmpDoc(), Pn(i, "owners")).scheduleLayout(this, r)
                            }
                        }, u.renderStarted = function() {
                            this.Nt.signal(Oe), this.togglePlaceholder(!1), this.toggleLoading(!1)
                        }, u.Wn = function(t) {
                            var i, n, r = this.oi > 0 || this.Nt.get(Oe);
                            return !(this.dn == Qr || this.hasAttribute("noloading") || r && !t || (this, n = this.tagName.toUpperCase(), "AMP-AD" !== (i = n) && "AMP-ANIM" !== i && "AMP-EMBED" !== i && "AMP-FACEBOOK" !== i && "AMP-FACEBOOK-COMMENTS" !== i && "AMP-FACEBOOK-PAGE" !== i && "AMP-GOOGLE-DOCUMENT-EMBED" !== i && "AMP-IFRAME" !== i && "AMP-IMG" !== i && "AMP-INSTAGRAM" !== i && "AMP-LIST" !== i && "AMP-PINTEREST" !== i && "AMP-PLAYBUZZ" !== i && "AMP-RENDER" !== i && "AMP-TIKTOK" !== i && "AMP-TWITTER" !== i && ! function(t) {
                                return "AMP-VIDEO" != t && oe.test(t)
                            }(n)) || xi(this))
                        }, u.toggleLoading = function(t) {
                            var i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                            if (this.ownerDocument && this.ownerDocument.defaultView) {
                                var n = nr(this.getAmpDoc());
                                n && ((t = t && this.Wn(i)) ? n.track(this) : n.untrack(this))
                            }
                        }, u.getOverflowElement = function() {
                            return void 0 === this.pn && (this.pn = Ai(this, "overflow"), this.pn && (this.pn.hasAttribute("tabindex") || this.pn.setAttribute("tabindex", "0"), this.pn.hasAttribute("role") || this.pn.setAttribute("role", "button"))), this.pn
                        }, u.overflowCallback = function(t, i, n) {
                            var r = this;
                            this.getOverflowElement(), this.pn ? (this.pn.classList.toggle("amp-visible", t), this.pn.onclick = t ? function() {
                                var t = rr(r.getAmpDoc());
                                t.forceChangeSize(r, i, n), t.mutateElement(r, (function() {
                                    r.overflowCallback(!1, i, n)
                                }))
                            } : null) : t && this.warnOnMissingOverflow && Jt().warn("CustomElement", "Cannot resize element and overflow is not available", this)
                        }, u.Gn = function(t, i) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                            this.xi ? rr(this.getAmpDoc()).mutateElement(i || this, t, n) : t()
                        }, i(s, [{
                            key: "readyState",
                            get: function() {
                                return this.vn
                            }
                        }]), s
                    }(t.HTMLElement);
                    return t.__AMP_BASE_CE_CLASS = r, t.__AMP_BASE_CE_CLASS
                }(t, n),
                e = function(t) {
                    U(n, t);
                    var i = H(n);

                    function n() {
                        return i.apply(this, arguments)
                    }
                    return n.prototype.adoptedCallback = function() {
                        Object.getPrototypeOf(this) !== s && Object.setPrototypeOf(this, s)
                    }, n
                }(r),
                s = e.prototype;
            return e
        }

        function du(t) {
            return "placeholder" in t
        }

        function mu(t) {
            Zt(!t.xn)
        }

        function pu(t) {
            lu.add(t || "*");
            for (var i, n = o(fu, !0); !(i = n()).done;) {
                var r = i.value;
                null != t && r.tagName.toLowerCase() !== t || r.markUnresolved()
            }
        }
        var gu = new WeakMap;

        function bu(t) {
            return t.__AMP_EXTENDED_ELEMENTS || (t.__AMP_EXTENDED_ELEMENTS = {}), t.__AMP_EXTENDED_ELEMENTS
        }

        function yu(t, i, n) {
            var r = bu(t);
            if (r[i]) {
                if (r[i] != n) {
                    ti(r[i] == ou, "%s is already registered. The script tag for %s is likely included twice in the page.", i, i), r[i] = n;
                    for (var e = 0; e < fu.length; e++) {
                        var s = fu[e];
                        s.tagName.toLowerCase() == i && s.ownerDocument.defaultView == t && (wu(s, n), fu.splice(e--, 1))
                    }
                }
            } else Pu(t, i, n)
        }

        function wu(t, i) {
            try {
                t.upgrade(i)
            } catch (i) {
                Ds(i, t)
            }
        }

        function Au(t) {
            (function(t) {
                if (!t) return [];
                for (var i = t.querySelectorAll("script[custom-element],script[custom-template]"), n = [], r = 0; r < i.length; r++) {
                    var e = i[r],
                        s = e.getAttribute("custom-element") || e.getAttribute("custom-template"),
                        u = gn(e.src);
                    s && u && n.push({
                        script: e,
                        extensionId: s,
                        extensionVersion: u.extensionVersion
                    })
                }
                return n
            })(t.getHeadNode()).forEach((function(i) {
                var n = i.extensionId,
                    r = i.extensionVersion,
                    e = i.script;
                t.declareExtension(n, r), e.addEventListener("error", (function() {
                    return pu(n)
                })), xu(t.win, n)
            })), t.isBodyAvailable() && t.setExtensionsKnown()
        }

        function xu(t, i) {
            bu(t)[i] || Pu(t, i, ou)
        }

        function Eu(t, i, n) {
            Pu(i, n, bu(t)[n] || ou)
        }

        function Pu(t, i, n) {
            bu(t)[i] = n;
            var r = vu(t, Ou);
            t.customElements.define(i, r)
        }

        function Ou(t, i, n) {
            gu.has(t) || (gu.set(t, !0), Au(t));
            var r = i.localName;
            n || t.declaresExtension(r) || tr(t.win).installExtensionForDoc(t, r, "0.1")
        }
        var Iu = "amp-img",
            Mu = ["alt", "aria-describedby", "aria-label", "aria-labelledby", "crossorigin", "referrerpolicy", "title", "importance", "sizes", "srcset", "src"],
            Tu = function(t) {
                U(n, t);
                var i = H(n);

                function n(t) {
                    var n;
                    return (n = i.call(this, t)).$n = !0, n.Kn = null, n.Yn = null, n.Jn = null, n.Xn = 0, n
                }
                n.R1 = function() {
                    return !1
                }, n.prerenderAllowed = function() {
                    return !0
                }, n.usesLoading = function() {
                    return !0
                }, n.getPreconnects = function(t) {
                    var i = t.getAttribute("src");
                    if (i) return [i];
                    var n = t.getAttribute("srcset");
                    if (n) {
                        var r = /\S+/.exec(n);
                        if (r) return [r[0]]
                    }
                    return null
                };
                var r = n.prototype;
                return r.mutatedAttributesCallback = function(t) {
                    if (this.Kn) {
                        var i = Mu.filter((function(i) {
                            return void 0 !== t[i]
                        }));
                        t.src && !t.srcset && this.element.hasAttribute("srcset") && (this.element.removeAttribute("srcset"), i.push("srcset"), this.user().warn(Iu, "Removed [srcset] since [src] was mutated. Recommend adding a [srcset] binding to support responsive images.", this.element)), me(i, this.element, this.Kn, !0), this.propagateDataset(this.Kn), Xr(this.Kn), n.R1() && !this.Kn.complete && this.setReadyState(un)
                    }
                }, r.preconnectCallback = function(t) {
                    var i = this.element.getAttribute("src");
                    if (i) ur(this.win).url(this.getAmpDoc(), i, t);
                    else {
                        var n = this.element.getAttribute("srcset");
                        if (!n) return;
                        var r = /\S+/.exec(n);
                        r && ur(this.win).url(this.getAmpDoc(), r[0], t)
                    }
                }, r.isLayoutSupported = function(t) {
                    return ce(t)
                }, r.Qn = function() {
                    if (this.Kn) return this.Kn;
                    this.$n = !this.element.hasAttribute("fallback");
                    var t, i, n = Ui(this.element);
                    return n && (this.Kn = pi(this.element, "> img:not([placeholder])")), this.Kn = this.Kn || new Image, this.Kn.setAttribute("decoding", "async"), this.element.id && this.Kn.setAttribute("amp-img-id", this.element.id), "img" == this.element.getAttribute("role") && (this.element.removeAttribute("role"), this.user().error(Iu, "Setting role=img on amp-img elements breaks screen readers please just set alt or ARIA attributes, they will be correctly propagated for the underlying <img> element.")), this.Zn(!0), me(Mu, this.element, this.Kn), this.propagateDataset(this.Kn), Xr(this.Kn), de(this.Kn, !0), t = this.element, i = this.Kn, t.hasAttribute("object-fit") && Rr(i, "object-fit", t.getAttribute("object-fit")), t.hasAttribute("object-position") && Rr(i, "object-position", t.getAttribute("object-position")), n || this.element.appendChild(this.Kn), this.Kn
                }, r.Zn = function(t) {
                    var i = this;
                    if (this.Kn && !this.element.hasAttribute("i-amphtml-ssr") && !this.element.hasAttribute("sizes") && !this.Kn.hasAttribute("sizes")) {
                        var n = this.element.getAttribute("srcset");
                        if (n && !/[0-9]+x(?:,|$)/.test(n)) {
                            var r = this.element.getLayoutSize().width;
                            if (this.br(r)) {
                                var e = this.getViewport().getWidth(),
                                    s = "(max-width: ".concat(e, "px) ").concat(r, "px, "),
                                    u = r + "px";
                                if (this.getLayout() !== Zr) {
                                    var o = Math.round(100 * r / e);
                                    u = Math.max(o, 100) + "vw"
                                }
                                var h = s + u;
                                t ? this.Kn.setAttribute("sizes", h) : this.mutateElement((function() {
                                    i.Kn.setAttribute("sizes", h)
                                })), this.Xn = r
                            }
                        }
                    }
                }, r.br = function(t) {
                    return !this.Kn.hasAttribute("sizes") || t > this.Xn
                }, r.reconstructWhenReparented = function() {
                    return !1
                }, r.mountCallback = function() {
                    var t = this,
                        i = !!this.Kn,
                        n = this.Qn();
                    i || (Ye(n, "load", (function() {
                        t.setReadyState(on), t.firstLayoutCompleted(), t.gr()
                    })), Ye(n, "error", (function(i) {
                        t.setReadyState(hn, i), t.Ar()
                    }))), n.complete ? (this.setReadyState(on), this.firstLayoutCompleted(), this.gr()) : this.setReadyState(un)
                }, r.unmountCallback = function() {
                    var t = this.Kn;
                    t && !t.complete && (t.src = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=", Ti(t), this.Kn = null)
                }, r.ensureLoaded = function() {
                    this.Kn.loading = "eager"
                }, r.layoutCallback = function() {
                    var t = this;
                    this.Qn();
                    var i = this.Kn;
                    return this.Yn = Ye(i, "load", (function() {
                        return t.gr()
                    })), this.Jn = Ye(i, "error", (function() {
                        return t.Ar()
                    })), this.element.getLayoutSize().width <= 0 ? h() : this.loadPromise(i)
                }, r.unlayoutCallback = function() {
                    if (!n.R1()) {
                        this.Jn && (this.Jn(), this.Jn = null), this.Yn && (this.Yn(), this.Yn = null);
                        var t = this.Kn;
                        return t && !t.complete && (t.src = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=", Ti(t), this.Kn = null), !0
                    }
                }, r.firstLayoutCompleted = function() {
                    var t = this.getPlaceholder();
                    t && t.classList.contains("i-amphtml-blurry-placeholder") ? Sr(t, {
                        "opacity": 0
                    }) : this.togglePlaceholder(!1)
                }, r.gr = function() {
                    !this.$n && this.Kn.classList.contains("i-amphtml-ghost") && (this.Kn.classList.remove("i-amphtml-ghost"), this.toggleFallback(!1))
                }, r.Ar = function() {
                    this.$n && (this.Kn.classList.add("i-amphtml-ghost"), this.toggleFallback(!0), this.togglePlaceholder(!1), this.$n = !1)
                }, r.propagateDataset = function(t) {
                    for (var i in t.dataset) i in this.element.dataset || delete t.dataset[i];
                    for (var n in this.element.dataset) n.startsWith("ampBind") && "ampBind" !== n || t.dataset[n] !== this.element.dataset[n] && (t.dataset[n] = this.element.dataset[n])
                }, n
            }(eu),
            Su = function(t) {
                U(n, t);
                var i = H(n);

                function n() {
                    return i.apply(this, arguments)
                }
                n.prerenderAllowed = function() {
                    return !0
                };
                var r = n.prototype;
                return r.isLayoutSupported = function(t) {
                    return t == ne || ce(t)
                }, r.buildCallback = function() {
                    ! function(t) {
                        if (!Ui(t)) {
                            var i = function(t) {
                                var i;
                                return he(null !== (i = t.getAttribute("layout")) && void 0 !== i ? i : "") || je(t).layout
                            }(t);
                            if (i != ne) {
                                var n = t.ownerDocument.createElement("div");
                                de(n),
                                    function(t) {
                                        return function(t, i) {
                                            for (var n = [], r = t.firstChild; r; r = r.nextSibling) !xi(r) && n.push(r);
                                            return n
                                        }(t)
                                    }(t).forEach((function(t) {
                                        n.appendChild(t)
                                    })), t.appendChild(n)
                            }
                        }
                    }(this.element)
                }, n
            }(eu);

        function Ru(t) {
            var i;
            return null === (i = t.featurePolicy) || void 0 === i ? void 0 : i.allowedFeatures().includes("attribution-reporting")
        }

        function _u(t, i) {
            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                r = arguments.length > 3 ? arguments[3] : void 0,
                e = zr.getImage(t),
                s = new e;
            return n && (s.referrerPolicy = "no-referrer"), s.src = i, Ru(t.document) && (s.attributionsrc = r), s
        }
        var ku = "amp-pixel",
            Cu = function(t) {
                U(n, t);
                var i = H(n);

                function n(t) {
                    var n;
                    return (n = i.call(this, t)).Er = null, n
                }
                var r = n.prototype;
                return r.isLayoutSupported = function(t) {
                    return !0
                }, r.buildCallback = function() {
                    this.element.setAttribute("aria-hidden", "true"), this.Or = this.element.getAttribute("referrerpolicy"), this.Or && ti("no-referrer" == this.Or, "".concat(ku, ': invalid "referrerpolicy" value "').concat(this.Or, '".') + ' Only "no-referrer" is supported'), this.element.hasAttribute("i-amphtml-ssr") && this.element.querySelector("img") ? Qt().info(ku, "inabox img already present") : this.getAmpDoc().whenFirstVisible().then(this.Pr.bind(this))
                }, r.Pr = function() {
                    var t = this;
                    if (this.Er) return Qt().error(ku, "duplicate pixel"), this.Er;
                    this.Er = ar(this.win).promise(1).then((function() {
                        var i = t.element.getAttribute("src");
                        if (i) return cr(t.element).expandUrlAsync(t.Tr(i)).then((function(i) {
                            if (t.win) {
                                var n = function(t, i, n, r) {
                                    return n && "no-referrer" !== n && Jt().error("pixel", "Unsupported referrerPolicy: %s", n), "no-referrer" === n ? function(t, i, n) {
                                        if ("referrerPolicy" in Image.prototype) return _u(t, i, !0, n);
                                        var r, e = (r = {
                                            "src": "about:blank",
                                            "style": "display:none"
                                        }, function(t, i) {
                                            for (var n in i) t.setAttribute(n, i[n]);
                                            return t
                                        }(t.document.createElement("iframe"), r));
                                        return e.onload = function() {
                                            _u(e.contentWindow, i)
                                        }, t.document.body.appendChild(e), e
                                    }(t, i, r) : _u(t, i, !1, r)
                                }(t.win, i, t.Or, t.element.getAttribute("attributionsrc"));
                                return Qt().info(ku, "pixel triggered: ", i), n
                            }
                        }))
                    }))
                }, r.Tr = function(t) {
                    return ti(/^(https\:\/\/|\/\/)/i.test(t), 'The <amp-pixel> src attribute must start with "https://" or "//". Invalid value: ' + t), t
                }, n
            }(eu),
            Nu = function() {
                function t(t, i, n) {
                    var r = this;
                    this.Ir = ar(t), this.Mr = i, this.Sr = n || 0, this.kr = -1, this._r = 0, this.Rr = !1, this.Nr = function() {
                        r.Cr()
                    }
                }
                var i = t.prototype;
                return i.isPending = function() {
                    return -1 != this.kr
                }, i.schedule = function(t) {
                    var i = t || this.Sr;
                    this.Rr && i < 10 && (i = 10);
                    var n = Date.now() + i;
                    return (!this.isPending() || n - this._r < -10) && (this.cancel(), this._r = n, this.kr = this.Ir.delay(this.Nr, i), !0)
                }, i.Cr = function() {
                    this.kr = -1, this._r = 0, this.Rr = !0, this.Mr(), this.Rr = !1
                }, i.cancel = function() {
                    this.isPending() && (this.Ir.cancel(this.kr), this.kr = -1)
                }, t
            }();

        function Du(t, i) {
            var n = i.documentElement;
            return t.some((function(t) {
                return n.hasAttribute(t)
            }))
        }

        function ju(t) {
            return Du(["⚡4email", "amp4email"], t)
        }

        function Uu(t) {
            return Du(["⚡", "amp"], t)
        }
        var Lu = "Action",
            zu = "__AMP_ACTION_MAP__" + Math.random(),
            Hu = "__AMP_ACTION_QUEUE__",
            Gu = "__AMP_ACTION_HANDLER__",
            Vu = {
                "form": ["submit", "clear"]
            },
            Fu = [{
                tagOrTarget: "AMP",
                method: "setState"
            }, {
                tagOrTarget: "*",
                method: "focus"
            }, {
                tagOrTarget: "*",
                method: "hide"
            }, {
                tagOrTarget: "*",
                method: "show"
            }, {
                tagOrTarget: "*",
                method: "toggleClass"
            }, {
                tagOrTarget: "*",
                method: "toggleChecked"
            }, {
                tagOrTarget: "*",
                method: "toggleVisibility"
            }],
            qu = {
                "button": !0,
                "checkbox": !0,
                "link": !0,
                "listbox": !0,
                "menuitem": !0,
                "menuitemcheckbox": !0,
                "menuitemradio": !0,
                "option": !0,
                "radio": !0,
                "scrollbar": !0,
                "slider": !0,
                "spinbutton": !0,
                "switch": !0,
                "tab": !0,
                "treeitem": !0
            },
            Bu = function() {
                function t(t, i, n, r, e, s, u) {
                    var o = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : "?",
                        h = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : null,
                        a = arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : Math.random();
                    this.node = t, this.method = i, this.args = n, this.source = r, this.caller = e, this.event = s, this.trust = u, this.actionEventType = o, this.tagOrTarget = h || t.tagName, this.sequenceId = a
                }
                return t.prototype.satisfiesTrust = function(t) {
                    if (!J(this.trust)) return Qt().error(Lu, "Invalid trust for '".concat(this.method, "': ").concat(this.trust)), !1;
                    if (this.trust < t) {
                        var i = function(t) {
                            switch (t) {
                                case 1:
                                    return "low";
                                case 3:
                                    return "high";
                                default:
                                    return et(2 === t), "default"
                            }
                        }(this.trust);
                        return Jt().error(Lu, '"'.concat(this.actionEventType, '" event with "').concat(i, '" trust is not allowed to ') + 'invoke "'.concat(this.tagOrTarget.toLowerCase(), ".").concat(this.method, '".')), !1
                    }
                    return !0
                }, t
            }(),
            $u = function() {
                function t(t, i) {
                    this.ampdoc = t, this.Dr = i || t.getRootNode(), this.jr = this.ampdoc.isSingleDoc() && ju(this.Dr), this.zr = this.jr ? Fu : null, this.Ur = A(), this.Lr = A(), this.addEvent("tap"), this.addEvent("submit"), this.addEvent("change"), this.addEvent("input-debounced"), this.addEvent("input-throttled"), this.addEvent("valid"), this.addEvent("invalid")
                }
                var i = t.prototype;
                return i.addEvent = function(t) {
                    var i = this;
                    if ("tap" == t) this.Dr.addEventListener("click", (function(n) {
                        if (!n.defaultPrevented) {
                            var r = n.target;
                            i.trigger(r, t, n, 3)
                        }
                    })), this.Dr.addEventListener("keydown", (function(n) {
                        var r = n.key,
                            e = n.target;
                        if ("Enter" == r || " " == r) {
                            var s = e.getAttribute("role"),
                                u = s && x(qu, s.toLowerCase());
                            !n.defaultPrevented && u && i.trigger(e, t, n, 3) && n.preventDefault()
                        }
                    }));
                    else if ("submit" == t) this.Dr.addEventListener(t, (function(n) {
                        var r = n.target;
                        i.trigger(r, t, n, 3)
                    }));
                    else if ("change" == t) this.Dr.addEventListener(t, (function(n) {
                        var r = n.target;
                        i.Hr(n), i.trigger(r, t, n, 3)
                    }));
                    else if ("input-debounced" == t) {
                        var n = mt(this.ampdoc.win, (function(n) {
                            var r = n.target;
                            i.trigger(r, t, n, 3)
                        }), 300);
                        this.Dr.addEventListener("input", (function(t) {
                            var r = new Yu(t);
                            i.Hr(r), n(r)
                        }))
                    } else if ("input-throttled" == t) {
                        var r = dt(this.ampdoc.win, (function(n) {
                            var r = n.target;
                            i.trigger(r, t, n, 3)
                        }), 100);
                        this.Dr.addEventListener("input", (function(t) {
                            var n = new Yu(t);
                            i.Hr(n), r(n)
                        }))
                    } else "valid" != t && "invalid" != t || this.Dr.addEventListener(t, (function(n) {
                        var r = n.target;
                        i.trigger(r, t, n, 3)
                    }))
                }, i.addGlobalTarget = function(t, i) {
                    this.Ur[t] = i
                }, i.addGlobalMethodHandler = function(t, i) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2;
                    this.Lr[t] = {
                        handler: i,
                        minTrust: n
                    }
                }, i.trigger = function(t, i, n, r, e) {
                    return this.Gr(t, i, n, r, e)
                }, i.execute = function(t, i, n, r, e, s, u) {
                    var o = new Bu(t, i, n, r, e, s, u);
                    this.Vr(o)
                }, i.installActionHandler = function(t, i) {
                    if (Zt(Wu(t.getAttribute("id") || "") || t.tagName.toLowerCase() in Vu), t[Gu]) Qt().error(Lu, "Action handler already installed for ".concat(t));
                    else {
                        t[Gu] = i;
                        var n = t[Hu];
                        V(n) && ar(oi(t)).delay((function() {
                            n.forEach((function(t) {
                                try {
                                    i(t)
                                } catch (i) {
                                    Qt().error(Lu, "Action execution failed:", t, i)
                                }
                            })), t[Hu].length = 0
                        }), 1)
                    }
                }, i.hasAction = function(t, i, n) {
                    return !!this.Fr(t, i, n)
                }, i.hasResolvableAction = function(t, i, n) {
                    var r = this,
                        e = this.Fr(t, i, n);
                    return !!e && e.actionInfos.some((function(t) {
                        var i = t.target;
                        return !!r.Br(i)
                    }))
                }, i.hasResolvableActionForTarget = function(t, i, n, r) {
                    var e = this,
                        s = this.Fr(t, i, r);
                    return !!s && s.actionInfos.some((function(t) {
                        var i = t.target;
                        return e.Br(i) == n
                    }))
                }, i.Br = function(t) {
                    return this.Ur[t] ? this.Dr : this.Dr.getElementById(t)
                }, i.setAllowlist = function(t) {
                    Zt(t.every((function(t) {
                        return t.tagOrTarget && t.method
                    }))), this.zr = t
                }, i.addToAllowlist = function(t, i, n) {
                    var r = this;
                    n && n.includes("email") !== this.jr || (this.zr || (this.zr = []), V(i) || (i = [i]), i.forEach((function(i) {
                        r.zr.some((function(n) {
                            return n.tagOrTarget == t && n.method == i
                        })) || r.zr.push({
                            tagOrTarget: t,
                            method: i
                        })
                    })))
                }, i.Gr = function(t, i, n, r, e) {
                    var s = this,
                        u = this.Fr(t, i);
                    if (!u) return !1;
                    var h = Math.random(),
                        a = null;
                    return u.actionInfos.forEach((function(c) {
                        var f = c.args,
                            l = c.method,
                            v = c.str,
                            d = c.target,
                            m = function(t, i, n) {
                                if (!t) return t;
                                var r = n || {};
                                if (i) {
                                    var e = function(t) {
                                        return t.detail
                                    }(i);
                                    e && (r.event = e)
                                }
                                var s = A();
                                return Object.keys(t).forEach((function(i) {
                                    var n = t[i];
                                    if ("object" == p(n) && n.expression) {
                                        var e = n.expression,
                                            u = function(t, i) {
                                                if ("." == i) return t;
                                                for (var n, r = t, e = o(i.split("."), !0); !(n = e()).done;) {
                                                    var s = n.value;
                                                    if (!(s && r && void 0 !== r[s] && "object" == p(r) && x(r, s))) {
                                                        r = void 0;
                                                        break
                                                    }
                                                    r = r[s]
                                                }
                                                return r
                                            }(r, e);
                                        n = void 0 === u ? null : u
                                    }
                                    r[n] ? s[i] = r[n] : s[i] = n
                                })), s
                            }(f, n, e),
                            g = function() {
                                var e = s.Br(d);
                                if (e) {
                                    var o = new Bu(e, l, m, t, u.node, n, r, i, e.tagName || d, h);
                                    return s.Vr(o)
                                }
                                s.qr('Target "'.concat(d, '" not found for action [').concat(v, "]."))
                            };
                        a = a ? a.then(g) : g()
                    })), u.actionInfos.length >= 1
                }, i.qr = function(t, i) {
                    if (i) {
                        var n = Jt().createError("[".concat(Lu, "] ").concat(t));
                        throw Ds(n, i), n
                    }
                    Jt().error(Lu, t)
                }, i.Vr = function(t) {
                    var i = t.method,
                        n = t.tagOrTarget;
                    if (this.zr && ! function(t, i) {
                            var n = t.method,
                                r = t.node,
                                e = t.tagOrTarget;
                            n === ru && "function" == typeof r.getDefaultActionAlias && (n = r.getDefaultActionAlias());
                            var s = n.toLowerCase(),
                                u = e.toLowerCase();
                            return i.some((function(t) {
                                return (t.tagOrTarget.toLowerCase() === u || "*" === t.tagOrTarget) && t.method.toLowerCase() === s
                            }))
                        }(t, this.zr)) return this.qr('"'.concat(n, ".").concat(i, '" is not allowlisted ').concat(JSON.stringify(this.zr), ".")), null;
                    var r = this.Ur[n];
                    if (r) return r(t);
                    var e = t.node,
                        s = this.Lr[i];
                    if (s && t.satisfiesTrust(s.minTrust)) return s.handler(t);
                    var u = e.tagName.toLowerCase();
                    if (Wu(u)) return e.enqueAction ? e.enqueAction(t) : this.qr('Unrecognized AMP element "'.concat(u, '".'), e), null;
                    var o = Vu[u];
                    if (Wu(e.getAttribute("id") || "") || o && o.indexOf(i) > -1) {
                        var h = e[Gu];
                        return h ? h(t) : (e[Hu] = e[Hu] || [], e[Hu].push(t)), null
                    }
                    return this.qr("Target (".concat(n, ") doesn't support \"").concat(i, '" action.'), t.caller), null
                }, i.Fr = function(t, i, n) {
                    for (var r, e = t; e;) {
                        if (n && e == n) return null;
                        var s = this.Wr(e, i);
                        if (s && !(r = e).disabled && !gi(r, ":disabled")) return {
                            node: e,
                            actionInfos: Zt(s)
                        };
                        e = e.parentElement
                    }
                    return null
                }, i.Wr = function(t, i) {
                    var n = this.$r(t, i);
                    return n && n[i] || null
                }, i.$r = function(t, i) {
                    var n = t[zu];
                    if (void 0 === n)
                        if (n = null, t.hasAttribute("on")) n = Ju(t.getAttribute("on"), t), t[zu] = n;
                        else if (t.hasAttribute("execute")) {
                        var r = t.getAttribute("execute");
                        n = Ju("".concat(i, ":").concat(r), t), t[zu] = n
                    }
                    return n
                }, i.setActions = function(t, i) {
                    t.setAttribute("on", i), delete t[zu]
                }, i.Hr = function(t) {
                    var i = A(),
                        n = t.target;
                    if (void 0 !== n.value && (i.value = n.value), "INPUT" == n.tagName && (i.valueAsNumber = Number(n.value)), void 0 !== n.checked && (i.checked = n.checked), void 0 === n.min && void 0 === n.max || (i.min = n.min, i.max = n.max), n.files && (i.files = G(n.files).map((function(t) {
                            return {
                                "name": t.name,
                                "size": t.size,
                                "type": t.type
                            }
                        }))), Object.keys(i).length > 0) try {
                        t.detail = i
                    } catch (t) {}
                }, t
            }();

        function Wu(t) {
            return "amp-" === t.substring(0, 4)
        }
        var Yu = function(t) {
            this.detail = null,
                function(t, i) {
                    var n = i || A();
                    for (var r in t) {
                        var e = t[r];
                        n[r] = "function" == typeof e ? Ku : t[r]
                    }
                }(t, this)
        };

        function Ku() {
            Zt(null)
        }

        function Ju(t, i) {
            var n, r, e = Qu.bind(null, t, i),
                s = Zu.bind(null, t, i),
                u = null,
                o = new no(t);
            do {
                if ((n = o.next()).type == to.EOF || n.type == to.SEPARATOR && ";" == n.value);
                else if (n.type == to.LITERAL || n.type == to.ID) {
                    var h = n.value;
                    s(o.next(), [to.SEPARATOR], ":");
                    var a = [];
                    do {
                        var c = s(o.next(), [to.LITERAL, to.ID]).value,
                            f = ru,
                            l = null;
                        (r = o.peek()).type == to.SEPARATOR && "." == r.value && (o.next(), f = s(o.next(), [to.LITERAL, to.ID]).value || f, (r = o.peek()).type == to.SEPARATOR && "(" == r.value && (o.next(), l = Xu(o, s, e))), a.push({
                            event: h,
                            target: c,
                            method: f,
                            args: l,
                            str: t
                        }), r = o.peek()
                    } while (r.type == to.SEPARATOR && "," == r.value && o.next());
                    u || (u = A()), u[h] = a
                } else e(!1, "; unexpected token [".concat(n.value || "", "]"))
            } while (n.type != to.EOF);
            return u
        }

        function Xu(t, i, n) {
            var r, e, s = t.peek(),
                u = null;
            if (s.type == to.OBJECT) {
                u = A();
                var o = t.next().value;
                u.__AMP_OBJECT_STRING__ = o, i(t.next(), [to.SEPARATOR], ")")
            } else
                do {
                    var h = r = t.next(),
                        a = h.type,
                        c = h.value;
                    if (a != to.SEPARATOR || "," != c && ")" != c)
                        if (a == to.LITERAL || a == to.ID) {
                            i(t.next(), [to.SEPARATOR], "=");
                            var f = [r = i(t.next(!0), [to.LITERAL, to.ID])];
                            if (r.type == to.ID)
                                for (s = t.peek(); s.type == to.SEPARATOR && "." == s.value; s = t.peek()) t.next(), r = i(t.next(!1), [to.ID]), f.push(r);
                            var l = 0 == (e = f).length ? null : 1 == e.length ? e[0].value : {
                                expression: e.map((function(t) {
                                    return t.value
                                })).join(".")
                            };
                            u || (u = A()), u[c] = l, n((s = t.peek()).type == to.SEPARATOR && ("," == s.value || ")" == s.value), "Expected either [,] or [)]")
                        } else n(!1, "; unexpected token [".concat(r.value || "", "]"))
                } while (r.type != to.SEPARATOR || ")" != r.value);
            return u
        }

        function Qu(t, i, n, r) {
            return ti(n, "Invalid action definition in %s: [%s] %s", i, t, r || "")
        }

        function Zu(t, i, n, r, e) {
            return void 0 !== e ? Qu(t, i, r.includes(n.type) && n.value == e, "; expected [".concat(e, "]")) : Qu(t, i, r.includes(n.type)), n
        }
        var to = {
                INVALID: 0,
                EOF: 1,
                SEPARATOR: 2,
                LITERAL: 3,
                ID: 4,
                OBJECT: 5
            },
            io = " \t\n\r\f\v \u2028\u2029",
            no = function() {
                function t(t) {
                    this.Kr = t, this.Yr = -1
                }
                var i = t.prototype;
                return i.next = function(t) {
                    var i = this.Jr(t || !1);
                    return this.Yr = i.index, i
                }, i.peek = function(t) {
                    return this.Jr(t || !1)
                }, i.Jr = function(t) {
                    var i = this.Yr + 1;
                    if (i >= this.Kr.length) return {
                        type: to.EOF,
                        index: this.Yr
                    };
                    var n = this.Kr.charAt(i);
                    if (-1 != io.indexOf(n)) {
                        for (i++; i < this.Kr.length && -1 != io.indexOf(this.Kr.charAt(i)); i++);
                        if (i >= this.Kr.length) return {
                            type: to.EOF,
                            index: i
                        };
                        n = this.Kr.charAt(i)
                    }
                    if (t && (ro(n) || "." == n && i + 1 < this.Kr.length && ro(this.Kr[i + 1]))) {
                        for (var r = "." == n, e = i + 1; e < this.Kr.length; e++) {
                            var s = this.Kr.charAt(e);
                            if ("." != s) {
                                if (!ro(s)) break
                            } else r = !0
                        }
                        var u = this.Kr.substring(i, e),
                            o = r ? parseFloat(u) : parseInt(u, 10);
                        return i = e - 1, {
                            type: to.LITERAL,
                            value: o,
                            index: i
                        }
                    }
                    if (-1 != ";:.()=,|!".indexOf(n)) return {
                        type: to.SEPARATOR,
                        value: n,
                        index: i
                    };
                    if (-1 != "\"'".indexOf(n)) {
                        for (var h = -1, a = i + 1; a < this.Kr.length; a++)
                            if (this.Kr.charAt(a) == n) {
                                h = a;
                                break
                            }
                        if (-1 == h) return {
                            type: to.INVALID,
                            index: i
                        };
                        var c = this.Kr.substring(i + 1, h);
                        return i = h, {
                            type: to.LITERAL,
                            value: c,
                            index: i
                        }
                    }
                    if ("{" == n) {
                        for (var f = 1, l = -1, v = i + 1; v < this.Kr.length; v++) {
                            var d = this.Kr[v];
                            if ("{" == d ? f++ : "}" == d && f--, f <= 0) {
                                l = v;
                                break
                            }
                        }
                        if (-1 == l) return {
                            type: to.INVALID,
                            index: i
                        };
                        var m = this.Kr.substring(i, l + 1);
                        return i = l, {
                            type: to.OBJECT,
                            value: m,
                            index: i
                        }
                    }
                    for (var p = i + 1; p < this.Kr.length && -1 == " \t\n\r\f\v \u2028\u2029;:.()=,|!\"'{}".indexOf(this.Kr.charAt(p)); p++);
                    var g = this.Kr.substring(i, p);
                    if (i = p - 1, t && ("true" == g || "false" == g)) {
                        var b = "true" == g;
                        return {
                            type: to.LITERAL,
                            value: b,
                            index: i
                        }
                    }
                    return ro(g.charAt(0)) ? {
                        type: to.LITERAL,
                        value: g,
                        index: i
                    } : {
                        type: to.ID,
                        value: g,
                        index: i
                    }
                }, t
            }();

        function ro(t) {
            return t >= "0" && t <= "9"
        }

        function eo(t) {
            return !!t && "function" == typeof t.getFormData
        }
        var so = ["GET", "POST"],
            uo = [V, w];

        function oo(t, i) {
            var n = D({}, i);
            if (eo(i.body)) {
                var r = i.body;
                n.headers["Content-Type"] = "multipart/form-data;charset=utf-8", n.body = function(t) {
                    for (var i = [], n = t.next(); !n.done; n = t.next()) i.push(n.value);
                    return i
                }(r.entries())
            }
            return {
                input: t,
                init: n
            }
        }

        function ho(t, i, n, r) {
            if (!i) return h();
            var e = r.prerenderSafe ? h() : i.whenFirstVisible(),
                s = vr(i),
                u = xs(n),
                o = s.hasCapability("xhrInterceptor"),
                a = r.bypassInterceptorForDev && !1;
            return u || !o || a ? e : i.getRootNode().documentElement.hasAttribute("allow-xhr-interception") ? e.then((function() {
                return s.isTrustedViewer()
            })).then((function(i) {
                if (i || Ge(t, "untrusted-xhr-interception")) {
                    var e = {
                        "originalRequest": oo(n, r)
                    };
                    return s.sendMessageAwaitResponse("xhr", e).then((function(t) {
                        return function(t, i) {
                            if (ht(w(t), "Object expected: %s", t), "document" != i) return new Response(t.body, t.init);
                            var n = A(),
                                r = {
                                    status: 200,
                                    statusText: "OK",
                                    getResponseHeader: function(t) {
                                        return n[String(t).toLowerCase()] || null
                                    }
                                };
                            if (t.init) {
                                var e = t.init;
                                V(e.headers) && e.headers.forEach((function(t) {
                                    var i = t[0],
                                        r = t[1];
                                    n[String(i).toLowerCase()] = String(r)
                                })), e.status && (r.status = parseInt(e.status, 10)), e.statusText && (r.statusText = String(e.statusText))
                            }
                            return new Response(t.body ? String(t.body) : "", r)
                        }(t, r.responseType)
                    }))
                }
            })) : e
        }

        function ao(t, i, n) {
            return et("string" == typeof i), !1 !== n.ampCors && (i = Ss(t, i)), i
        }

        function co(t, i) {
            var n, r = t || {},
                e = r.credentials;
            return et(void 0 === e || "include" == e || "omit" == e), r.method = void 0 === (n = r.method) ? "GET" : (n = n.toUpperCase(), et(so.includes(n)), n), r.headers = r.headers || {}, i && (r.headers.Accept = i), et(null !== r.body), r
        }

        function fo(t, i, n) {
            n = n || {};
            var r = function(t) {
                return t.origin || vs(t.location.href).origin
            }(t);
            return r == vs(i).origin && (n.headers = n.headers || {}, n.headers["AMP-Same-Origin"] = "true"), n
        }

        function lo(t) {
            return new Promise((function(i) {
                if (t.ok) return i(t);
                var n = t.status,
                    r = Jt().createError("HTTP error ".concat(n));
                throw r.retriable = function(t) {
                    return 415 == t || t >= 500 && t < 600
                }(n), r.response = t, r
            }))
        }
        var vo = function() {
                function t(t) {
                    this.win = t;
                    var i = Yn(t);
                    this.Xr = i.isSingleDoc() ? i.getSingleDoc() : null
                }
                var i = t.prototype;
                return i.Qr = function(t, i) {
                    var n = arguments,
                        r = this;
                    return ho(this.win, this.Xr, t, i).then((function(t) {
                        if (t) return t;
                        if (eo(i.body)) {
                            var e = i.body;
                            i.body = e.getFormData()
                        }
                        return r.win.fetch.apply(null, n)
                    }))
                }, i.Zr = function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    return t = ao(this.win, t, i), i = fo(this.win, t, i), this.Qr(t, i).then((function(t) {
                        return t
                    }), (function(i) {
                        var n = vs(t).origin;
                        throw Jt().createExpectedError("XHR", "Failed fetching (".concat(n, "/...):"), i && i.message)
                    }))
                }, i.fetchJson = function(t, i) {
                    return this.fetch(t, function(t) {
                        var i = co(t, "application/json");
                        if ("POST" == i.method && !eo(i.body)) {
                            et(uo.some((function(t) {
                                return t(i.body)
                            }))), i.headers["Content-Type"] = i.headers["Content-Type"] || "text/plain;charset=utf-8";
                            var n = i.headers["Content-Type"];
                            i.body = "application/x-www-form-urlencoded" === n ? bs(i.body) : JSON.stringify(i.body)
                        }
                        return i
                    }(i))
                }, i.fetchText = function(t, i) {
                    return this.fetch(t, co(i, "text/plain"))
                }, i.xssiJson = function(t, i) {
                    return i ? t.text().then((function(t) {
                        return t.startsWith(i) ? at(t.slice(i.length)) : (Jt().warn("XHR", 'Failed to strip missing prefix "'.concat(i, '" in fetch response.')), at(t))
                    })) : t.json()
                }, i.fetch = function(t, i) {
                    var n = co(i);
                    return this.Zr(t, n).then((function(t) {
                        return lo(t)
                    }))
                }, i.sendSignal = function(t, i) {
                    return this.Zr(t, i).then((function(t) {
                        return lo(t)
                    }))
                }, i.getCorsUrl = function(t, i) {
                    return Ss(t, i)
                }, t
            }(),
            mo = function(t) {
                U(n, t);
                var i = H(n);

                function n(t) {
                    var n;
                    return (n = i.call(this, t)).te = A(), n
                }
                var r = n.prototype;
                return r.fetch = function(i, n) {
                    var r = this,
                        e = n && n.headers && n.headers.Accept || "",
                        s = !n || !n.method || "GET" === n.method,
                        u = this.ie(i, e),
                        o = !!this.te[u];
                    if (s && o) return this.te[u].then((function(t) {
                        return t.clone()
                    }));
                    var h = t.prototype.fetch.call(this, i, n);
                    return s && (this.te[u] = h.then((function(t) {
                        return delete r.te[u], t.clone()
                    }), (function(t) {
                        throw delete r.te[u], t
                    }))), h
                }, r.ie = function(t, i) {
                    return As(Ts(t, Ms(this.win.location))) + i
                }, n
            }(vo),
            po = {
                "+": "-",
                "/": "_",
                "=": "."
            };

        function go(t) {
            var i = function(t) {
                for (var i = new Array(t.length), n = 0; n < t.length; n++) i[n] = String.fromCharCode(t[n]);
                return i.join("")
            }(t);
            return btoa(i).replace(/[+/=]/g, (function(t) {
                return po[t]
            }))
        }
        var bo = "AIzaSyDKtqGxnoeIqVM33Uf7hRSa3GJxuzR7mLc",
            yo = "CacheCidApi",
            wo = function() {
                function t(t) {
                    this.xi = t, this.ne = vr(this.xi), this.re = null, this.Ir = ar(this.xi.win)
                }
                var i = t.prototype;
                return i.isSupported = function() {
                    return this.ne.isCctEmbedded() && this.ne.isProxyOrigin()
                }, i.getScopedCid = function(t) {
                    var i = this;
                    return this.ne.isCctEmbedded() ? (this.re || (this.re = this.ee("https://ampcid.google.com/v1/cache:getClientId?key=AIzaSyDKtqGxnoeIqVM33Uf7hRSa3GJxuzR7mLc")), this.re.then((function(n) {
                        return n ? i.se(n, t) : null
                    }))) : Promise.resolve(null)
                }, i.ee = function(t) {
                    var i = this,
                        n = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],
                        r = {
                            "publisherOrigin": Ms(this.xi.win.location)
                        },
                        e = "fetchCidTimeout";
                    return this.Ir.timeoutPromise(3e4, pr(this.xi.win).fetchJson(t, {
                        method: "POST",
                        ampCors: !1,
                        credentials: "include",
                        mode: "cors",
                        body: r
                    }), e).then((function(t) {
                        return t.json().then((function(t) {
                            if (t.optOut) return null;
                            var r = t.publisherClientId;
                            if (!r && n && t.alternateUrl) {
                                var e = "".concat(t.alternateUrl, "?key=").concat(bo);
                                return i.ee(e, !1)
                            }
                            return r
                        }))
                    })).catch((function(t) {
                        return t && t.response ? t.response.json().then((function(t) {
                            Qt().error(yo, JSON.stringify(t))
                        })) : t && t.message == e ? Qt().expectedError(yo, t) : Qt().error(yo, t), null
                    }))
                }, i.se = function(t, i) {
                    var n = t + ";" + i;
                    return Qn(this.xi.win).sha384Base64(n).then((function(t) {
                        return "amp-" + t
                    }))
                }, t
            }(),
            Ao = "-test-amp-cookie-tmp";

        function xo(t, i) {
            var n = function(t) {
                try {
                    return t.document.cookie
                } catch (t) {
                    return ""
                }
            }(t);
            if (!n) return null;
            for (var r = n.split(";"), e = 0; e < r.length; e++) {
                var s = r[e].trim(),
                    u = s.indexOf("=");
                if (-1 != u && bt(s.substring(0, u).trim()) == i) {
                    var o = s.substring(u + 1).trim();
                    return bt(o, o)
                }
            }
            return null
        }

        function Eo(t, i, n, r) {
            var e = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {};
            Io(t, e, i);
            var s = void 0;
            e.domain ? s = e.domain : e.highestAvailableDomain && (s = Po(t)), Oo(t, i, n, r, s, e.sameSite, e.secure)
        }

        function Po(t) {
            var i = t.document.head && t.document.head.querySelector("meta[name='amp-cookie-scope']");
            if (i) {
                var n = i.getAttribute("content") || "",
                    r = Ms(t.location.href);
                return W(r, "." + n) ? n : r.split("://")[1]
            }
            if (!xs(t.location.href))
                for (var e = t.location.hostname.split("."), s = e[e.length - 1], u = function(t) {
                        for (var i = Ao; xo(t, i);) i = Ao + 0;
                        return i
                    }(t), o = e.length - 2; o >= 0; o--)
                    if (s = e[o] + "." + s, Oo(t, u, "delete", Date.now() + 1e3, s), "delete" == xo(t, u)) return Oo(t, u, "delete", Date.now() - 1e3, s), s;
            return null
        }

        function Oo(t, i, n, r, e, s, u) {
            "ampproject.org" == e && (n = "delete", r = 0);
            var o = encodeURIComponent(i) + "=" + encodeURIComponent(n) + "; path=/" + (e ? "; domain=" + e : "") + "; expires=" + new Date(r).toUTCString() + function(t, i) {
                return i ? "; SameSite=".concat(i) : ""
            }(0, s) + (u ? "; Secure" : "");
            try {
                t.document.cookie = o
            } catch (t) {}
        }

        function Io(t, i, n) {
            if (i.allowOnProxyOrigin) ti(!i.highestAvailableDomain, "Could not support highestAvailable Domain on proxy origin, specify domain explicitly");
            else {
                ti(!xs(t.location.href), "Should never attempt to set cookie on proxy origin: ".concat(n));
                var r = vs(t.location.href).hostname.toLowerCase(),
                    e = vs(Mt).hostname.toLowerCase();
                ti(!(r == e || W(r, "." + e)), "Should never attempt to set cookie on proxy origin. (in depth check): " + n)
            }
        }
        var Mo = "GoogleCidApi",
            To = "AMP_TOKEN",
            So = "$RETRIEVING",
            Ro = "$OPT_OUT",
            _o = "$NOT_FOUND",
            ko = 3e4,
            Co = 31536e6,
            No = function() {
                function t(t) {
                    this.t = t.win, this.Ir = ar(this.t), this.oe = {};
                    var i = Zn(t).canonicalUrl;
                    this.ue = i ? vs(i).origin : null
                }
                var i = t.prototype;
                return i.getScopedCid = function(t, i) {
                    var n, r = this;
                    return this.oe[i] ? this.oe[i] : this.oe[i] = this.Ir.poll(200, (function() {
                        return (n = xo(r.t, To)) !== So
                    })).then((function() {
                        if (n === Ro) return Ro;
                        if ((n !== _o || !r.he()) && r.ae(n)) return null;
                        n && !r.ae(n) || r.ce(So, ko);
                        var e = "https://ampcid.google.com/v1/publisher:getClientId?key=" + t;
                        return r.ee(e, i, n).then((function(e) {
                            var s = r.R(e);
                            if (!s && e.alternateUrl) {
                                var u = "".concat(e.alternateUrl, "?key=").concat(t);
                                return r.ee(u, i, n).then(r.R.bind(r))
                            }
                            return s
                        })).catch((function(t) {
                            return r.ce("$ERROR", ko), t && t.response ? t.response.json().then((function(t) {
                                Qt().error(Mo, JSON.stringify(t))
                            })) : Qt().error(Mo, t), null
                        }))
                    }))
                }, i.ee = function(t, i, n) {
                    var r = {
                        "originScope": i,
                        "canonicalOrigin": this.ue
                    };
                    return n && (r.securityToken = n), this.Ir.timeoutPromise(ko, pr(this.t).fetchJson(t, {
                        method: "POST",
                        ampCors: !1,
                        credentials: "include",
                        mode: "cors",
                        body: r
                    }).then((function(t) {
                        return t.json()
                    })))
                }, i.R = function(t) {
                    return t.optOut ? (this.ce(Ro, Co), Ro) : t.clientId ? (this.ce(t.securityToken, Co), t.clientId) : (t.alternateUrl || this.ce(_o, 36e5), null)
                }, i.ce = function(t, i) {
                    t && Eo(this.t, To, t, this.fe(i), {
                        highestAvailableDomain: !0
                    })
                }, i.fe = function(t) {
                    return this.t.Date.now() + t
                }, i.he = function() {
                    return xs(zr.getDocumentReferrer(this.t))
                }, i.ae = function(t) {
                    return t && "$" === t[0]
                }, t
            }(),
            Do = function() {
                function t(t) {
                    this.xi = t, this.ne = vr(this.xi);
                    var i = Zn(this.xi).canonicalUrl;
                    this.ue = i ? vs(i).origin : null
                }
                var i = t.prototype;
                return i.isSupported = function() {
                    return this.ne.hasCapability("cid") ? this.ne.isTrustedViewer() : Promise.resolve(!1)
                }, i.getScopedCid = function(t, i) {
                    var n = {
                        "scope": i,
                        "clientIdApi": !!t,
                        "canonicalOrigin": this.ue
                    };
                    return t && (n.apiKey = t), this.ne.sendMessageAwaitResponse("cid", n)
                }, t
            }(),
            jo = 31536e6,
            Uo = /^[a-zA-Z0-9-_.]+$/,
            Lo = "amp-cid-optout",
            zo = "amp-google-client-id-api",
            Ho = {
                "googleanalytics": "AMP_ECID_GOOGLE"
            },
            Go = {
                "googleanalytics": "AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM"
            },
            Vo = function() {
                function t(t) {
                    this.ampdoc = t, this.le = null, this.ve = Object.create(null), this.de = new wo(t), this.me = new Do(t), this.pe = new No(t), this.be = null
                }
                var i = t.prototype;
                return i.get = function(t, i, n) {
                    var r = this;
                    return ti(Uo.test(t.scope) && Uo.test(t.cookieName), "The CID scope and cookie name must only use the characters [a-zA-Z0-9-_.]+\nInstead found: %s", t.scope), i.then((function() {
                        return r.ampdoc.whenFirstVisible()
                    })).then((function() {
                        return t = r.ampdoc, hr(t).then((function(t) {
                            return t.get(Lo).then((function(t) {
                                return !!t
                            }))
                        })).catch((function() {
                            return !1
                        }));
                        var t
                    })).then((function(e) {
                        if (e) return "";
                        var s = r.ge(t, n || i);
                        return ar(r.ampdoc.win).timeoutPromise(1e4, s, 'Getting cid for "'.concat(t.scope, '" timed out')).catch((function(t) {
                            d(t)
                        }))
                    }))
                }, i.optOut = function() {
                    return t = this.ampdoc, vr(t).sendMessage("cidOptOut", {}), hr(t).then((function(t) {
                        return t.set(Lo, !0)
                    }));
                    var t
                }, i.ge = function(t, i) {
                    var n = this,
                        r = t.scope,
                        e = vs(this.ampdoc.win.location.href);
                    if (!xs(e)) {
                        var s = this.ye(r);
                        return s ? this.pe.getScopedCid(s, r).then((function(e) {
                            if (e == Ro) return null;
                            if (e) {
                                var s = t.cookieName || r;
                                return Fo(n.ampdoc.win, s, e), e
                            }
                            return $o(n, t, i)
                        })) : $o(this, t, i)
                    }
                    return this.me.isSupported().then((function(t) {
                        if (t) {
                            var s = n.ye(r);
                            return n.me.getScopedCid(s, r)
                        }
                        return n.de.isSupported() && n.ye(r) ? n.de.getScopedCid(r).then((function(t) {
                            return t || n.we(i, r, e)
                        })) : n.we(i, r, e)
                    }))
                }, i.we = function(t, i, n) {
                    var r = this;
                    return function(t, i) {
                        if (t.le) return t.le;
                        var n = t.ampdoc.win;
                        return t.le = function(t) {
                            var i, n = t.win;
                            try {
                                i = n.localStorage.getItem("amp-cid")
                            } catch (t) {}
                            var r = Promise.resolve(i);
                            return !i && Ni(n) && (r = Wo(t)), r.then((function(t) {
                                if (!t) return null;
                                var i = at(t);
                                return {
                                    time: i.time,
                                    cid: i.cid
                                }
                            }))
                        }(t.ampdoc).then((function(r) {
                            var e, s, u, o = !1;
                            return !r || (s = r.time, u = Date.now(), s + jo < u) ? (e = Qn(n).sha384Base64(Ko(n)), o = !0) : (e = Promise.resolve(r.cid), r.time + 864e5 < Date.now() && (o = !0)), o && e.then((function(n) {
                                ! function(t, i, n) {
                                    var r = t.win;
                                    Ni(r) ? Wo(t, Yo(n)) : i.then((function() {
                                        try {
                                            r.localStorage.setItem("amp-cid", Yo(n))
                                        } catch (t) {}
                                    }))
                                }(t.ampdoc, i, n)
                            })), e
                        }))
                    }(this, t).then((function(t) {
                        return Qn(r.ampdoc.win).sha384Base64(t + function(t) {
                            return ti(xs(t), "Expected proxy origin %s", t.origin), Ms(t)
                        }(n) + i)
                    }))
                }, i.ye = function(t) {
                    return this.be || (this.be = this.Ae()), this.be[t]
                }, i.Ae = function() {
                    var t = {},
                        i = this.ampdoc.getMetaByName(zo);
                    return i && i.split(",").forEach((function(i) {
                        if ((i = i.trim()).indexOf("=") > 0) {
                            var n = i.split("="),
                                r = n[0].trim();
                            t[r] = n[1].trim()
                        } else {
                            var e = i,
                                s = Ho[e];
                            s ? t[s] = Go[e] : Jt().warn("CID", "Unsupported client for Google CID API: ".concat(e, ".") + 'Please remove or correct meta[name="'.concat(zo, '"]'))
                        }
                    })), t
                }, t
            }();

        function Fo(t, i, n) {
            Eo(t, i, n, Date.now() + jo, {
                highestAvailableDomain: !0
            })
        }

        function qo(t, i, n) {
            hr(t).then((function(t) {
                if (!t.isViewerStorage()) {
                    var r = Bo(i);
                    t.setNonBoolean(r, n)
                }
            }))
        }

        function Bo(t) {
            return "amp-cid:" + t
        }

        function $o(t, i, n) {
            var r = t.ampdoc,
                e = r.win,
                s = i.disableBackup,
                u = i.scope,
                o = i.cookieName || u;
            return function(t, i) {
                var n = t.ampdoc,
                    r = n.win,
                    e = i.disableBackup,
                    s = i.scope,
                    u = i.cookieName || s,
                    o = xo(r, u);
                return o ? Promise.resolve(o) : e ? Promise.resolve(null) : hr(n).then((function(t) {
                    var i = Bo(u);
                    return t.get(i, jo)
                })).then((function(t) {
                    return t && "string" == typeof t ? t : null
                }))
            }(t, i).then((function(h) {
                if (!h && !i.createCookieIfNotPresent) return Promise.resolve(null);
                if (h) return /^amp-/.test(h) && (Fo(e, o, h), s || qo(r, o, h)), Promise.resolve(h);
                if (t.ve[u]) return t.ve[u];
                var a = Jo(e).then((function(t) {
                    return "amp-" + t
                }));
                return Promise.all([a, n]).then((function(t) {
                    var i = t[0];
                    xo(e, o) || (Fo(e, o, i), s || qo(r, o, i))
                })), t.ve[u] = a
            }))
        }

        function Wo(t, i) {
            var n = vr(t);
            return n.isTrustedViewer().then((function(t) {
                if (t) return Qt().expectedError("CID", "Viewer does not provide cap=cid"), n.sendMessageAwaitResponse("cid", i).then((function(t) {
                    return t && ! function(t, i) {
                        try {
                            return at(t)
                        } catch (t) {
                            return null
                        }
                    }(t) ? (Qt().expectedError("CID", "invalid cid format"), JSON.stringify({
                        "time": Date.now(),
                        "cid": t
                    })) : t
                }))
            }))
        }

        function Yo(t) {
            return JSON.stringify({
                "time": Date.now(),
                "cid": t
            })
        }

        function Ko(t) {
            return lt(t, 16) || String(t.location.href + Date.now() + t.Math.random() + t.screen.width + t.screen.height)
        }

        function Jo(t) {
            var i = Ko(t);
            if ("string" == typeof i) return Qn(t).sha384Base64(i);
            var n = i;
            return c((function() {
                return go(n).replace(/\.+$/, "")
            }))
        }
        var Xo = "Crypto",
            Qo = function() {
                function t(t) {
                    this.t = t;
                    var i = null,
                        n = !1;
                    t.crypto && (t.crypto.subtle ? i = t.crypto.subtle : t.crypto.webkitSubtle && (i = t.crypto.webkitSubtle, n = !0)), this.pkcsAlgo = {
                        name: "RSASSA-PKCS1-v1_5",
                        hash: {
                            name: "SHA-256"
                        }
                    }, this.subtle = i, this.xe = n, this.Ee = null
                }
                var i = t.prototype;
                return i.sha384 = function(t) {
                    var i = this;
                    if ("string" == typeof t && (t = ft(t)), !this.subtle || this.Ee) return (this.Ee || this.Oe()).then((function(i) {
                        return i(t)
                    }));
                    try {
                        return this.subtle.digest({
                            name: "SHA-384"
                        }, t).then((function(t) {
                            return new Uint8Array(t)
                        }), (function(n) {
                            return n.message && n.message.indexOf("secure origin") < 0 && Jt().error(Xo, "SubtleCrypto failed, fallback to closure lib.", n), i.Oe().then((function() {
                                return i.sha384(t)
                            }))
                        }))
                    } catch (n) {
                        return Qt().error(Xo, "SubtleCrypto failed, fallback to closure lib.", n), this.Oe().then((function() {
                            return i.sha384(t)
                        }))
                    }
                }, i.sha384Base64 = function(t) {
                    return this.sha384(t).then((function(t) {
                        return go(t)
                    }))
                }, i.uniform = function(t) {
                    return this.sha384(t).then((function(t) {
                        for (var i = 0, n = 2; n >= 0; n--) i = (i + t[n]) / 256;
                        return i
                    }))
                }, i.Oe = function() {
                    var t = this;
                    return this.Ee ? this.Ee : this.Ee = tr(this.t).preloadExtension("amp-crypto-polyfill").then((function() {
                        return En(t.t, "crypto-polyfill")
                    }))
                }, i.isPkcsAvailable = function() {
                    return Boolean(this.subtle) && !1 !== this.t.isSecureContext
                }, i.importPkcsKey = function(t) {
                    Zt(this.isPkcsAvailable());
                    var i = this.xe ? ct(JSON.stringify(t)) : t;
                    return this.subtle.importKey("jwk", i, this.pkcsAlgo, !0, ["verify"])
                }, i.verifyPkcs = function(t, i, n) {
                    return Zt(this.isPkcsAvailable()), this.subtle.verify(this.pkcsAlgo, t, i, n)
                }, t
            }(),
            Zo = ["prefetch", "preload", "preconnect", "dns-prefetch"],
            th = function() {
                function t(t) {
                    this.xi = t, this.Pe = null, this.Te = null
                }
                return t.prototype.get = function() {
                    if (this.Pe) return this.Pe;
                    var t = this.xi,
                        i = Is(t.getUrl()),
                        n = t.getRootNode(),
                        r = n && n.AMP && n.AMP.canonicalUrl;
                    if (!r) {
                        var e = n.querySelector("link[rel=canonical]");
                        r = e ? vs(e.href).href : i
                    }
                    var s, u = function(t) {
                            return String(Math.floor(1e4 * t.Math.random()))
                        }(t.win),
                        o = function(t) {
                            var i = A();
                            if (t.head)
                                for (var n = t.head.querySelectorAll("link[rel]"), r = function(t) {
                                        var r = n[t],
                                            e = r.href,
                                            s = r.getAttribute("rel");
                                        if (!s || !e) return "continue";
                                        s.split(/\s+/).forEach((function(t) {
                                            if (-1 == Zo.indexOf(t)) {
                                                var n = i[t];
                                                n ? (V(n) || (n = i[t] = [n]), n.push(e)) : i[t] = e
                                            }
                                        }))
                                    }, e = 0; e < n.length; e++) r(e);
                            return i
                        }(t.win.document),
                        h = (s = t.win.document.head.querySelector('meta[name="viewport"]')) ? s.getAttribute("content") : null,
                        a = function(t) {
                            if (!t.isSingleDoc() || "a" != (i = t.win.location.href, xs(i = ls(i)) ? i.pathname.split("/", 2)[1] : null)) return null;
                            var i, n = yt(vs(t.win.location.href).search).amp_r;
                            return void 0 === n ? null : yt(n)
                        }(t);
                    return this.Pe = {
                        get sourceUrl() {
                            return Is(t.getUrl())
                        },
                        canonicalUrl: r,
                        pageViewId: u,
                        get pageViewId64() {
                            return this.Te || (this.Te = Jo(t.win)), this.Te
                        },
                        linkRels: o,
                        viewport: h,
                        replaceParams: a
                    }
                }, t
            }(),
            ih = {
                attributes: !0,
                attributeFilter: ["hidden"],
                subtree: !0
            },
            nh = function() {
                function t(t) {
                    this.Dr = t.getRootNode();
                    var i = this.Dr.ownerDocument || this.Dr;
                    this.t = Zt(i.defaultView), this.ht = null, this.Ie = null
                }
                var i = t.prototype;
                return i.add = function(t) {
                    var i = this;
                    this.Me();
                    var n = this.Ie.add(t);
                    return function() {
                        n(), 0 === i.Ie.getHandlerCount() && i.dispose()
                    }
                }, i.Me = function() {
                    var t = this;
                    if (!this.ht) {
                        this.Ie = new Er;
                        var i = new this.t.MutationObserver((function(i) {
                            i && t.Ie.fire(i)
                        }));
                        this.ht = i, i.observe(this.Dr, ih)
                    }
                }, i.dispose = function() {
                    this.ht && (this.ht.disconnect(), this.Ie.removeAll(), this.ht = null, this.Ie = null)
                }, t
            }();

        function rh(t) {
            try {
                return t.state
            } catch (t) {
                return null
            }
        }
        var eh = "History",
            sh = "AMP.History",
            uh = function() {
                function t(t, i) {
                    this.xi = t, this.Ir = ar(t.win), this.Se = i, this.ke = 0, this._e = [], this.Di = [], this.Se.setOnStateUpdated(this.Re.bind(this))
                }
                var i = t.prototype;
                return i.cleanup = function() {
                    this.Se.cleanup()
                }, i.push = function(t, i) {
                    var n = this;
                    return this.Ne((function() {
                        return n.Se.push(i).then((function(i) {
                            return n.Re(i), t && (n._e[i.stackIndex] = t), i.stackIndex
                        }))
                    }), "push")
                }, i.pop = function(t) {
                    var i = this;
                    return this.Ne((function() {
                        return i.Se.pop(t).then((function(t) {
                            i.Re(t)
                        }))
                    }), "pop")
                }, i.replace = function(t) {
                    var i = this;
                    return this.Ne((function() {
                        return i.Se.replace(t)
                    }), "replace")
                }, i.get = function() {
                    var t = this;
                    return this.Ne((function() {
                        return t.Se.get()
                    }), "get")
                }, i.goBack = function(t) {
                    var i = this;
                    return this.Ne((function() {
                        return i.ke <= 0 && !t ? h() : i.Se.pop(i.ke).then((function(t) {
                            i.Re(t)
                        }))
                    }), "goBack")
                }, i.replaceStateForTarget = function(t) {
                    var i = this;
                    Zt("#" == t[0]);
                    var n = this.xi.win.location.hash;
                    return this.push((function() {
                        i.xi.win.location.replace(n || "#")
                    })).then((function() {
                        i.Se.replaceStateForTarget(t)
                    }))
                }, i.getFragment = function() {
                    return this.Se.getFragment()
                }, i.updateFragment = function(t) {
                    return "#" == t[0] && (t = t.substr(1)), this.Se.updateFragment(t)
                }, i.Re = function(t) {
                    this.ke = t.stackIndex, this.Ce(t)
                }, i.Ce = function(t) {
                    var i = this;
                    if (!(this.ke >= this._e.length - 1)) {
                        for (var n = [], r = this._e.length - 1; r > this.ke; r--) this._e[r] && (n.push(this._e[r]), this._e[r] = void 0);
                        if (this._e.splice(this.ke + 1), n.length > 0)
                            for (var e = function(r) {
                                    i.Ir.delay((function() {
                                        return n[r](t)
                                    }), 1)
                                }, s = 0; s < n.length; s++) e(s)
                    }
                }, i.Ne = function(t, i) {
                    var n = new a,
                        r = n.promise,
                        e = n.reject,
                        s = n.resolve,
                        u = new Error("history trace for " + i + ": ");
                    return this.Di.push({
                        callback: t,
                        resolve: s,
                        reject: e,
                        trace: u
                    }), 1 == this.Di.length && this.De(), r
                }, i.De = function() {
                    var t = this;
                    if (0 != this.Di.length) {
                        var i, n = this.Di[0];
                        try {
                            i = n.callback()
                        } catch (t) {
                            i = Promise.reject(t)
                        }
                        i.then((function(t) {
                            n.resolve(t)
                        }), (function(t) {
                            Qt().error(eh, "failed to execute a task:", t), n.trace && (n.trace.message += t, Qt().error(eh, n.trace)), n.reject(t)
                        })).then((function() {
                            t.Di.splice(0, 1), t.De()
                        }))
                    }
                }, t
            }(),
            oh = function() {
                function t(t) {
                    var i = this;
                    this.win = t, this.Ir = ar(t);
                    var n = this.win.history;
                    this.je = n.length - 1;
                    var r, e, s = rh(n);
                    s && void 0 !== s[sh] && (this.je = Math.min(s[sh], this.je)), this.ke = this.je, this.ze, this.Re = null, this.Ue = "state" in n, this.Le = this.He(this.ke), n.pushState && n.replaceState ? (this.Ge = n.originalPushState || n.pushState.bind(n), this.Ve = n.originalReplaceState || n.replaceState.bind(n), r = function(t, n, r) {
                        i.Le = t;
                        try {
                            i.Ge(t, n, r || null)
                        } catch (t) {
                            Qt().error(eh, "pushState failed: " + t.message)
                        }
                    }, e = function(t, n, r) {
                        i.Le = t;
                        try {
                            void 0 !== r ? i.Ve(t, n, r) : i.Ve(t, n)
                        } catch (t) {
                            Qt().error(eh, "replaceState failed: " + t.message)
                        }
                    }, n.originalPushState || (n.originalPushState = this.Ge), n.originalReplaceState || (n.originalReplaceState = this.Ve)) : (r = function(t, n, r) {
                        i.Le = t
                    }, e = function(t, n, r) {
                        i.Le = t
                    }), this.Fe = r, this.Be = e;
                    try {
                        this.Be(this.He(this.ke, !0))
                    } catch (t) {
                        Qt().error(eh, "Initial replaceState failed: " + t.message)
                    }
                    n.pushState = this.qe.bind(this), n.replaceState = this.We.bind(this), this.$e = function(t) {
                        var n = t.state;
                        Qt().fine(eh, "popstate event: " + i.win.history.length + ", " + JSON.stringify(n)), i.Ke()
                    }, this.win.addEventListener("popstate", this.$e)
                }
                var i = t.prototype;
                return i.cleanup = function() {
                    this.Ge && (this.win.history.pushState = this.Ge), this.Ve && (this.win.history.replaceState = this.Ve), this.win.removeEventListener("popstate", this.$e)
                }, i.He = function(t, i) {
                    var n = A(i ? this.Ye() : void 0);
                    return n[sh] = t, n
                }, i.setOnStateUpdated = function(t) {
                    this.Re = t
                }, i.push = function(t) {
                    var i = this;
                    return this.Je((function() {
                        var n = i.Xe(i.Ye(), t || {});
                        return i.qe(n, void 0, n.fragment ? "#" + n.fragment : void 0), c((function() {
                            return i.Xe(n, {
                                stackIndex: i.ke
                            })
                        }))
                    }))
                }, i.pop = function(t) {
                    var i = this;
                    return t = Math.max(t, this.je), this.Je((function() {
                        return i.Qe(i.ke - t + 1)
                    })).then((function(t) {
                        return i.Xe(i.Ye(), {
                            stackIndex: t
                        })
                    }))
                }, i.replace = function() {
                    var t = this,
                        i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                    return this.Je((function() {
                        var n = t.Xe(t.Ye(), i || {}),
                            r = (n.url || "").replace(/#.*/, ""),
                            e = n.fragment ? "#" + n.fragment : "";
                        return t.We(n, n.title, r || e ? r + e : void 0), c((function() {
                            return t.Xe(n, {
                                stackIndex: t.ke
                            })
                        }))
                    }))
                }, i.get = function() {
                    var t = this;
                    return c((function() {
                        return t.Xe(t.Ye(), {
                            stackIndex: t.ke
                        })
                    }))
                }, i.backTo = function(t) {
                    var i = this;
                    return t = Math.max(t, this.je), this.Je((function() {
                        return i.Qe(i.ke - t)
                    }))
                }, i.Ke = function() {
                    var t = this.Ye();
                    Qt().fine(eh, "history event: " + this.win.history.length + ", " + JSON.stringify(t));
                    var i = t ? t[sh] : void 0,
                        n = this.ke,
                        r = this.ze;
                    this.ze = void 0, n > this.win.history.length - 2 && (n = this.win.history.length - 2, this.Ze(this.Xe(t, {
                        stackIndex: n
                    }))), null == i ? n += 1 : n = i < this.win.history.length ? i : this.win.history.length - 1, t || (t = {}), t[sh] = n, this.Be(t, void 0, void 0), n != this.ke && this.Ze(this.Xe(t, {
                        stackIndex: n
                    })), n < this.je && (this.je = n), r && r.resolve()
                }, i.Ye = function() {
                    return this.Ue ? rh(this.win.history) : this.Le
                }, i.ts = function() {
                    Zt(!this.ze)
                }, i.Je = function(t) {
                    return this.ze ? this.ze.promise.then(t, t) : t()
                }, i.ns = function() {
                    this.ts();
                    var t = new a,
                        i = t.reject,
                        n = t.resolve,
                        r = this.Ir.timeoutPromise(500, t.promise);
                    return this.ze = {
                        promise: r,
                        resolve: n,
                        reject: i
                    }, r
                }, i.Qe = function(t) {
                    var i = this;
                    if (this.ts(), t <= 0) return Promise.resolve(this.ke);
                    this.Le = this.He(this.ke - t);
                    var n = this.ns();
                    return this.win.history.go(-t), n.then((function() {
                        return Promise.resolve(i.ke)
                    }))
                }, i.qe = function(t, i, n) {
                    this.ts(), t || (t = {});
                    var r = this.ke + 1;
                    t[sh] = r, this.Fe(t, i, n), r != this.win.history.length - 1 && (r = this.win.history.length - 1, t[sh] = r, this.Be(t));
                    var e = this.Xe(t, {
                        stackIndex: r
                    });
                    this.Ze(e)
                }, i.replaceStateForTarget = function(t) {
                    var i = this;
                    Zt("#" == t[0]), this.Je((function() {
                        i.win.removeEventListener("popstate", i.$e);
                        try {
                            i.win.location.replace(t)
                        } finally {
                            i.win.addEventListener("popstate", i.$e)
                        }
                        return i.We(), h()
                    }))
                }, i.We = function(t, i, n) {
                    this.ts(), t || (t = {});
                    var r = Math.min(this.ke, this.win.history.length - 1);
                    t[sh] = r, this.Be(t, i, n);
                    var e = this.Xe(t, {
                        stackIndex: r
                    });
                    this.Ze(e)
                }, i.Ze = function(t) {
                    this.ts(), t.stackIndex = Math.min(t.stackIndex, this.win.history.length - 1), this.ke != t.stackIndex && (Qt().fine(eh, "stack index changed: " + this.ke + " -> " + t.stackIndex), this.ke = t.stackIndex, this.Re && this.Re(t))
                }, i.getFragment = function() {
                    var t = this.win.location.hash;
                    return t = t.substr(1), Promise.resolve(t)
                }, i.updateFragment = function(t) {
                    return this.replace({
                        fragment: t
                    })
                }, i.Xe = function(t, i) {
                    var n = D(D({}, t && t.data || {}), i.data || {});
                    return D(D(D({}, t || {}), i), {}, {
                        data: n
                    })
                }, t
            }(),
            hh = function() {
                function t(t, i) {
                    var n = this;
                    this.win = t, this.ne = i, this.ke = 0, this.Re = null, this.rs = this.ne.onMessage("historyPopped", (function(t) {
                        return n.es(t)
                    }))
                }
                var i = t.prototype;
                return i.replaceStateForTarget = function(t) {
                    Zt("#" == t[0]), this.win.location.replace(t)
                }, i.cleanup = function() {
                    this.rs()
                }, i.setOnStateUpdated = function(t) {
                    this.Re = t
                }, i.ss = function(t, i, n) {
                    return this.os(t) ? t : (Qt().warn(eh, 'Ignored unexpected "%s" data:', n, t), i)
                }, i.os = function(t) {
                    return !!t && void 0 !== t.stackIndex
                }, i.push = function(t) {
                    var i = this,
                        n = D({
                            "stackIndex": this.ke + 1
                        }, t || {}),
                        r = "pushHistory";
                    return this.ne.sendMessageAwaitResponse(r, n).then((function(t) {
                        var e = n,
                            s = i.ss(t, e, r);
                        return i.Ze(s), s
                    }))
                }, i.pop = function(t) {
                    var i = this;
                    if (t > this.ke) return this.get();
                    var n = {
                            "stackIndex": this.ke
                        },
                        r = "popHistory";
                    return this.ne.sendMessageAwaitResponse(r, n).then((function(t) {
                        var n = {
                                "stackIndex": i.ke - 1
                            },
                            e = i.ss(t, n, r);
                        return i.Ze(e), e
                    }))
                }, i.replace = function(t) {
                    var i = this;
                    if (t && t.url) {
                        if (!this.ne.hasCapability("fullReplaceHistory")) {
                            var n = {
                                "stackIndex": this.ke
                            };
                            return Promise.resolve(n)
                        }
                        var r = t.url.replace(/#.*/, "");
                        t.url = r
                    }
                    var e = D({
                            "stackIndex": this.ke
                        }, t || {}),
                        s = "replaceHistory";
                    return this.ne.sendMessageAwaitResponse(s, e, !0).then((function(t) {
                        var n = e,
                            r = i.ss(t, n, s);
                        return i.Ze(r), r
                    }))
                }, i.get = function() {
                    return Promise.resolve({
                        data: void 0,
                        fragment: "",
                        stackIndex: this.ke,
                        title: ""
                    })
                }, i.es = function(t) {
                    void 0 !== t.newStackIndex && (t.stackIndex = t.newStackIndex), this.os(t) ? this.Ze(t) : Qt().warn(eh, 'Ignored unexpected "historyPopped" data:', t)
                }, i.Ze = function(t) {
                    var i = t.stackIndex;
                    this.ke != i && (Qt().fine(eh, "stackIndex: ".concat(this.ke, " -> ").concat(i)), this.ke = i, this.Re && this.Re(t))
                }, i.getFragment = function() {
                    return this.ne.hasCapability("fragment") ? this.ne.sendMessageAwaitResponse("getFragment", void 0, !0).then((function(t) {
                        if (!t) return "";
                        var i = t;
                        return "#" == i[0] && (i = i.substr(1)), i
                    })) : Promise.resolve("")
                }, i.updateFragment = function(t) {
                    return this.ne.hasCapability("fragment") ? this.ne.sendMessageAwaitResponse("replaceHistory", {
                        "fragment": t
                    }, !0) : h()
                }, t
            }();

        function ah(t) {
            var i, n = vr(t);
            return n.isOvertakeHistory() || t.win.__AMP_TEST_IFRAME ? i = new hh(t.win, n) : (An(t.win, "global-history-binding", oh), i = En(t.win, "global-history-binding")), new uh(t, i)
        }

        function ch(t, i) {
            return tr(t.win).installExtensionForDoc(t, "amp-loader").then((function() {
                return function(t) {
                    return Hn(t, "loader", "amp-loader")
                }(i)
            }))
        }
        new WeakMap, new WeakMap;
        var fh = ['<div slot=i-amphtml-svc class="i-amphtml-svc i-amphtml-loading-container i-amphtml-fill-content amp-hidden"></div>'],
            lh = function() {
                function t(t) {
                    this.xi = t;
                    var i = t.win,
                        n = this.us.bind(this);
                    this.hs = function(t, i) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                            r = n.needsRootBounds,
                            e = n.rootMargin,
                            s = n.threshold,
                            u = Ni(i) && (r || e) ? i.document : void 0;
                        return new i.IntersectionObserver(t, {
                            threshold: s,
                            root: u,
                            rootMargin: e
                        })
                    }((function(t) {
                        return t.forEach(n)
                    }), i), this.cs = new WeakMap
                }
                var i = t.prototype;
                return i.dispose = function() {
                    this.hs.disconnect()
                }, i.track = function(t) {
                    this.hs.observe(t)
                }, i.untrack = function(t) {
                    this.hs.unobserve(t), this.fs(t)
                }, i.us = function(t) {
                    var i = t.boundingClientRect,
                        n = t.isIntersecting,
                        r = t.target,
                        e = i.height,
                        s = i.width,
                        u = r,
                        o = n && s > 20 && e > 20,
                        h = this.cs.get(u);
                    o !== (h && h.shown || !1) && (o && !h && (h = this.ls(u, s, e), this.cs.set(u, h)), h && (h.shown = o, h.container.classList.toggle("amp-hidden", !o), h.loader.classList.toggle("amp-active", o)))
                }, i.ls = function(t, i, n) {
                    var r = Date.now(),
                        e = function(t, i, n, r) {
                            var e = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : t.win.Date.now(),
                                s = i.ownerDocument.createElement("div");
                            return ch(t, i).then((function(u) {
                                var o = t.win.Date.now() - e;
                                u.initializeLoader(i, s, o, n, r)
                            })), s
                        }(this.xi, t, i, n, r),
                        s = ke(this.xi.win.document)(fh);
                    return s.appendChild(e), t.appendChild(s), {
                        shown: !1,
                        loader: e,
                        container: s
                    }
                }, i.fs = function(t) {
                    var i = this.cs.get(t);
                    i && (this.cs.delete(t), Ti(i.container))
                }, t
            }(),
            vh = function() {
                function t(t, i) {
                    var n = this;
                    this.win = t, this.vs = i, this.ds = [], this.ps = new Er, this.bs = function(t) {
                        K(t.target) && n.gs(t.target)
                    }, this.ys = function(i) {
                        ar(t).delay((function() {
                            n.win.document.activeElement && n.gs(n.win.document.activeElement)
                        }), 500)
                    }, this.win.document.addEventListener("focus", this.bs, !0), this.win.addEventListener("blur", this.ys)
                }
                var i = t.prototype;
                return i.fs = function() {
                    this.win.document.removeEventListener("focus", this.bs, !0), this.win.removeEventListener("blur", this.ys)
                }, i.onFocus = function(t) {
                    return this.ps.add(t)
                }, i.gs = function(t) {
                    var i = Date.now();
                    0 == this.ds.length || this.ds[this.ds.length - 1].el != t ? this.ds.push({
                        el: t,
                        time: i
                    }) : this.ds[this.ds.length - 1].time = i, this.purgeBefore(i - this.vs), this.ps.fire(t)
                }, i.getLast = function() {
                    return 0 == this.ds.length ? null : this.ds[this.ds.length - 1].el
                }, i.purgeBefore = function(t) {
                    for (var i = this.ds.length - 1, n = 0; n < this.ds.length; n++)
                        if (this.ds[n].time >= t) {
                            i = n - 1;
                            break
                        } - 1 != i && this.ds.splice(0, i + 1)
                }, i.hasDescendantsOf = function(t) {
                    this.win.document.activeElement && this.gs(this.win.document.activeElement);
                    for (var i = 0; i < this.ds.length; i++)
                        if (t.contains(this.ds[i].el)) return !0;
                    return !1
                }, t
            }(),
            dh = 70,
            mh = function() {
                function t(t) {
                    var i = this;
                    this.ampdoc = t, this.win = t.win, this.ti = or(t), this.ws = mr(this.ampdoc), this.As = dr(this.win), this.xs = new vh(this.win, 6e4), this.xs.onFocus((function(t) {
                        i.Es(t)
                    }))
                }
                var i = t.prototype;
                return i.forceChangeSize = function(t, i, n, r, e) {
                    this.Os(Hs.forElement(t), i, n, e, void 0, !0, r)
                }, i.requestChangeSize = function(t, i, n, r, e) {
                    var s = this;
                    return new Promise((function(u, o) {
                        s.Os(Hs.forElement(t), i, n, r, e, !1, (function(t) {
                            t ? u() : o(new Error("changeSize attempt denied"))
                        }))
                    }))
                }, i.expandElement = function(t) {
                    Hs.forElement(t).completeExpand(), this.ti.schedulePass(dh)
                }, i.attemptCollapse = function(t) {
                    var i = this;
                    return new Promise((function(n, r) {
                        i.Os(Hs.forElement(t), 0, 0, void 0, void 0, !1, (function(i) {
                            i ? (Hs.forElement(t).completeCollapse(), n()) : r(Qt().createExpectedError("collapse attempt denied"))
                        }))
                    }))
                }, i.collapseElement = function(t) {
                    var i = this.ws.getLayoutRect(t);
                    0 != i.width && 0 != i.height && (Ge(this.win, "dirty-collapse-element") ? this.dirtyElement(t) : this.ti.setRelayoutTop(i.top)), Hs.forElement(t).completeCollapse(), this.ti.schedulePass(dh)
                }, i.measureElement = function(t) {
                    return this.As.measurePromise(t)
                }, i.mutateElement = function(t, i, n) {
                    return this.Ps(t, null, i, n)
                }, i.measureMutateElement = function(t, i, n) {
                    return this.Ps(t, i, n)
                }, i.Ts = function(t) {
                    var i = Nr(this.win, t.element);
                    return {
                        top: parseInt(i.marginTop, 10) || 0,
                        right: parseInt(i.marginRight, 10) || 0,
                        bottom: parseInt(i.marginBottom, 10) || 0,
                        left: parseInt(i.marginLeft, 10) || 0
                    }
                }, i.Ps = function(t, i, n) {
                    var r = this,
                        e = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
                        s = function() {
                            var i = r.ws.getLayoutRect(t);
                            return 0 != i.width && 0 != i.height ? i.top : -1
                        },
                        u = -1;
                    return this.As.runPromise({
                        measure: function() {
                            i && i(), e || (u = s())
                        },
                        mutate: function() {
                            if (n(), !e) {
                                t.classList.contains("i-amphtml-element") && Hs.forElement(t).requestMeasure();
                                for (var i = t.getElementsByClassName("i-amphtml-element"), o = 0; o < i.length; o++) Hs.forElement(i[o]).requestMeasure();
                                r.ti.schedulePass(dh), -1 != u && r.ti.setRelayoutTop(u), r.As.measure((function() {
                                    var t = s(); - 1 != t && t != u && (r.ti.setRelayoutTop(t), r.ti.schedulePass(dh)), r.ti.maybeHeightChanged()
                                }))
                            }
                        }
                    })
                }, i.dirtyElement = function(t) {
                    var i = !1;
                    if (t.classList.contains("i-amphtml-element")) {
                        var n = Hs.forElement(t);
                        this.ti.setRelayoutTop(n.getLayoutBox().top)
                    } else i = !0;
                    this.ti.schedulePass(dh, i)
                }, i.Es = function(t) {
                    var i = bi(t, (function(t) {
                        return !!Hs.forElementOptional(t)
                    }));
                    if (i) {
                        var n = Hs.forElement(i),
                            r = n.getPendingChangeSize();
                        void 0 !== r && this.Os(n, r.height, r.width, r.margins, void 0, !0)
                    }
                }, i.Os = function(t, i, n, r, e, s, u) {
                    var o = this;
                    t.hasBeenMeasured() && !r ? this.Is(t, i, n, void 0, e, s, u) : this.As.measure((function() {
                        t.hasBeenMeasured() || t.measure();
                        var h = r ? {
                            newMargins: r,
                            currentMargins: o.Ts(t)
                        } : void 0;
                        o.Is(t, i, n, h, e, s, u)
                    }))
                }, i.Is = function(t, i, n, r, e, s, u) {
                    t.resetPendingChangeSize();
                    var o, h, a = t.getLayoutSize();
                    if (!(void 0 !== i && i != a.height || void 0 !== n && n != a.width || void 0 !== r && (o = r.currentMargins, h = r.newMargins, void 0 !== h.top && h.top != o.top || void 0 !== h.right && h.right != o.right || void 0 !== h.bottom && h.bottom != o.bottom || void 0 !== h.left && h.left != o.left))) return void 0 === i && void 0 === n && void 0 === r && Qt().error("Mutator", "attempting to change size with undefined dimensions", t.debugid), void(u && u(!0));
                    this.ti.updateOrEnqueueMutateTask(t, {
                        resource: t,
                        newHeight: i,
                        newWidth: n,
                        marginChange: r,
                        event: e,
                        force: s,
                        callback: u
                    }), this.ti.schedulePassVsync()
                }, t
            }(),
            ph = null,
            gh = ["gclid", "gclsrc"],
            bh = [/^t.co$/];

        function yh() {
            return ti(ph, "E#19457 trackImpressionPromise")
        }

        function wh(t, i, n, r) {
            var e, s, u;
            try {
                e = t.open(i, n, r)
            } catch (t) {
                Qt().error("DOM", "Failed to open url on target: ", n, t)
            }
            return !e && "_top" != n && ("number" != typeof u && (u = 0), u + "noopener".length > (s = r || "").length || -1 === s.indexOf("noopener", u)) && (e = t.open(i, "_top")), e
        }
        var Ah = "navigation",
            xh = "click",
            Eh = "contextmenu",
            Ph = ["_top", "_blank"],
            Oh = "data-a4a-orig-href",
            Ih = function() {
                function t(t) {
                    var i = this;
                    this.ampdoc = t, this.Ms = t.getRootNode(), this.ws = mr(this.ampdoc), this.ne = vr(this.ampdoc), this.ds = ir(this.ampdoc), this.Ss = sr(this.ampdoc.win), this.ks = this.Ss.isIos() && this.Ss.isSafari(), this._s = Ni(this.ampdoc.win) && this.ne.isOvertakeHistory(), this.Rs = this.Ms != this.ampdoc.getRootNode() || !!this.ampdoc.getParent(), this.Ns = "inabox" == Dt(this.ampdoc.win).runtime, this.Cs = this.Ms.nodeType == Node.DOCUMENT_NODE ? this.Ms.documentElement : this.Ms, this.Ds = this.js.bind(this), this.Ms.addEventListener(xh, this.Ds), this.Ms.addEventListener(Eh, this.Ds), this.zs = !1,
                        function(t) {
                            return t.whenReady().then((function() {
                                return !!t.getBody().querySelector("amp-analytics[type=googleanalytics]")
                            }))
                        }(this.ampdoc).then((function(t) {
                            i.zs = t
                        })), this.Us = !1, this.Ls = !1, Promise.all([this.ne.isTrustedViewer(), this.ne.getViewerOrigin()]).then((function(t) {
                            var n;
                            i.Us = t[0], i.Ls = (n = t[1], Tt.test(ls(n).origin))
                        })), this.Hs = null, this.Gs = new $s, this.Vs = new $s
                }
                t.installAnchorClickInterceptor = function(t, i) {
                    i.document.documentElement.addEventListener("click", Mh.bind(null, t), !0)
                };
                var i = t.prototype;
                return i.cleanup = function() {
                    this.Ds && (this.Ms.removeEventListener(xh, this.Ds), this.Ms.removeEventListener(Eh, this.Ds))
                }, i.openWindow = function(t, i, n, r) {
                    var e = "";
                    !this.Ss.isIos() && this.Ss.isChrome() || r || (e += "noopener");
                    var s = wh(t, i, n, e);
                    s && !r && (s.opener = null)
                }, i.navigateTo = function(t, i, n) {
                    var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
                        e = r.opener,
                        s = void 0 !== e && e,
                        u = r.target,
                        o = void 0 === u ? "_top" : u;
                    i = this.Fs(i);
                    var h = lr(this.Cs);
                    if (h.isProtocolValid(i)) {
                        ti(Ph.includes(o), "Target '".concat(o, "' not supported."));
                        var a = h.getSourceUrl(t.location);
                        i = h.resolveRelativeUrl(i, a), "_blank" != o ? n && (this.Hs || (this.Hs = this.Bs()), this.Hs.includes(n) && this.navigateToAmpUrl(i, n)) || (t.top.location.href = i) : this.openWindow(t, i, o, s)
                    } else Jt().error(Ah, "Cannot navigate to invalid protocol: " + i)
                }, i.navigateToAmpUrl = function(t, i) {
                    return !!this.ne.hasCapability("a2a") && (this.ne.sendMessage("a2aNavigate", {
                        "url": t,
                        "requestedBy": i
                    }), !0)
                }, i.Bs = function() {
                    var t = this.Ms.querySelector('meta[name="amp-to-amp-navigation"]');
                    return t && t.hasAttribute("content") ? t.getAttribute("content").split(",").map((function(t) {
                        return t.trim()
                    })) : []
                }, i.js = function(t) {
                    if (!t.defaultPrevented) {
                        var i = yi(t.__AMP_CUSTOM_LINKER_TARGET__ || t.target, "A");
                        i && i.href && (t.type == xh ? this.qs(i, t) : t.type == Eh && this.Ws(i, t))
                    }
                }, i.qs = function(t, i) {
                    this.$s(t);
                    var n = this.Ks(t.href);
                    if (!this.Ys(i, t, n) && !this.Js(i, t, n)) {
                        var r = this.Xs();
                        Th(n) != Th(r) && (this.Qs(t, i), n = this.Ks(t.href)), this.Zs(i, t, n, r)
                    }
                }, i.Ws = function(t, i) {
                    this.$s(t), this.Qs(t, i)
                }, i.Qs = function(t, i) {
                    this.Gs.forEach((function(n) {
                        n(t, i)
                    }))
                }, i.Fs = function(t) {
                    return this.Vs.forEach((function(i) {
                        t = i(t)
                    })), t
                }, i.$s = function(t) {
                    var i = null;
                    this.zs && !this.Rs && (i = function(t, i) {
                        for (var n = yt(vs(zr.getLocation(t).href).search), r = [], e = 0; e < gh.length; e++) {
                            var s = gh[e];
                            void 0 !== n[s] && r.push(s)
                        }
                        var u = i.getAttribute("data-amp-addparams"),
                            o = i.href;
                        u && (o = gs(o, yt(u)));
                        for (var h = yt(vs(o).search), a = r.length - 1; a >= 0; a--) void 0 !== h[r[a]] && r.splice(a, 1);
                        return function(t) {
                            for (var i = "", n = 0; n < t.length; n++) {
                                var r = t[n];
                                i += 0 == n ? "".concat(r, "=QUERY_PARAM(").concat(r, ")") : "&".concat(r, "=QUERY_PARAM(").concat(r, ")")
                            }
                            return i
                        }(r)
                    }(this.ampdoc.win, t)), cr(t).maybeExpandLink(t, i)
                }, i.Js = function(t, i, n) {
                    if (!this._s) return !1;
                    var r = oi(i),
                        e = i.href,
                        s = n.protocol;
                    if ("ftp:" == s) return wh(r, e, "_blank"), t.preventDefault(), !0;
                    var u = /^(https?|mailto):$/.test(s);
                    return !(!this.ks || u || (wh(r, e, "_top"), t.preventDefault(), 0))
                }, i.Ys = function(t, i, n) {
                    return !(!i.hasAttribute("rel") || !i.getAttribute("rel").split(" ").map((function(t) {
                        return t.trim()
                    })).includes("amphtml") || !this.navigateToAmpUrl(n.href, "<a rel=amphtml>") || (t.preventDefault(), 0))
                }, i.Zs = function(t, i, n, r) {
                    var e = Th(n),
                        s = Th(r);
                    if (n.hash && e == s) this.io(t, n, r);
                    else {
                        var u = (i.getAttribute("target") || "").toLowerCase();
                        (this.Rs || this.Ns) && "_top" != u && "_blank" != u && (u = "_blank", i.setAttribute("target", u));
                        var o = this.ampdoc.win,
                            h = sr(o),
                            a = vr(i);
                        r.search && h.isSafari() && h.getMajorVersion() >= 13 && a.isProxyOrigin() && a.isEmbedded() && this.no(o, r, u), this.viewerInterceptsNavigation(e, "intercept_click") && t.preventDefault()
                    }
                }, i.no = function(t, i, n) {
                    Qt().info(Ah, "Removing iframe query string before navigation:", i.search);
                    var r = i.href,
                        e = "".concat(i.origin).concat(i.pathname).concat(i.hash);
                    t.history.replaceState(null, "", e);
                    var s = function() {
                        var i = t.location.href;
                        i == e ? (Qt().info(Ah, "Restored iframe URL with query string:", r), t.history.replaceState(null, "", r)) : Qt().error(Ah, "Unexpected iframe URL change:", i, e)
                    };
                    "_blank" === n ? t.setTimeout(s, 0) : t.addEventListener("pageshow", (function i(n) {
                        n.persisted && (s(), t.removeEventListener("pageshow", i))
                    }))
                }, i.io = function(t, i, n) {
                    var r = this;
                    if (t.preventDefault(), !this.Rs) {
                        var e = i.hash.slice(1),
                            s = null;
                        if (e) {
                            var u = vi(e);
                            s = this.Ms.getElementById(e) || this.Ms.querySelector('a[name="'.concat(u, '"]'))
                        }
                        i.hash != n.hash ? this.ds.replaceStateForTarget(i.hash).then((function() {
                            r.ro(s, e)
                        })) : this.ro(s, e)
                    }
                }, i.registerAnchorMutator = function(t, i) {
                    this.Gs.enqueue(t, i)
                }, i.registerNavigateToMutator = function(t, i) {
                    this.Vs.enqueue(t, i)
                }, i.ro = function(t, i) {
                    var n = this;
                    t ? (this.ws.scrollIntoView(t), ar(this.ampdoc.win).delay((function() {
                        return n.ws.scrollIntoView(t)
                    }), 1)) : Qt().warn(Ah, "failed to find element with id=".concat(i, " or a[name=").concat(i, "]"))
                }, i.Ks = function(t) {
                    return lr(this.Cs).parse(t)
                }, i.Xs = function() {
                    return this.Ks("")
                }, i.viewerInterceptsNavigation = function(t, i) {
                    var n = this.ne.hasCapability("interceptNavigation"),
                        r = this.ampdoc.isSingleDoc() && this.ampdoc.getRootNode().documentElement.hasAttribute("allow-navigation-interception");
                    return !(!n || !r || !this.Us && !this.Ls || (this.ne.sendMessage("navigateTo", {
                        "url": t,
                        "requestedBy": i
                    }), 0))
                }, t
            }();

        function Mh(t, i) {
            var n = yi(i.target, "A");
            if (n && n.href) {
                var r = n.getAttribute(Oh) || n.getAttribute("href");
                if (r) {
                    var e = {
                            "CLICK_X": function() {
                                return i.pageX
                            },
                            "CLICK_Y": function() {
                                return i.pageY
                            }
                        },
                        s = cr(n).expandUrlSync(r, e, {
                            "CLICK_X": !0,
                            "CLICK_Y": !0
                        });
                    s != r && (n.getAttribute(Oh) || n.setAttribute(Oh, r), n.setAttribute("href", s))
                }
            }
        }

        function Th(t) {
            return "".concat(t.origin).concat(t.pathname).concat(t.search)
        }

        function Sh(t) {
            return V(t) ? t : [t]
        }
        var Rh = function() {
                function t(t) {
                    this.ti = or(t)
                }
                var i = t.prototype;
                return i.setOwner = function(t, i) {
                    Hs.setOwner(t, i)
                }, i.schedulePreload = function(t, i) {
                    this.eo(this.ti.getResourceForElement(t), !1, Sh(i))
                }, i.scheduleLayout = function(t, i) {
                    this.eo(this.ti.getResourceForElement(t), !0, Sh(i))
                }, i.schedulePause = function(t, i) {
                    var n = this.ti.getResourceForElement(t);
                    i = Sh(i), this.so(n, i, (function(t) {
                        t.pause()
                    }))
                }, i.scheduleResume = function(t, i) {
                    var n = this.ti.getResourceForElement(t);
                    i = Sh(i), this.so(n, i, (function(t) {
                        t.resume()
                    }))
                }, i.scheduleUnlayout = function(t, i) {
                    var n = this.ti.getResourceForElement(t);
                    i = Sh(i), this.so(n, i, (function(t) {
                        t.unlayout()
                    }))
                }, i.requireLayout = function(t, i) {
                    var n = [];
                    return this.oo(t, (function(t) {
                        n.push(t.element.ensureLoaded())
                    })), Promise.all(n)
                }, i.so = function(t, i, n) {
                    for (var r, e = o(i, !0); !(r = e()).done;) {
                        var s = r.value;
                        Zt(t.element.contains(s)), this.oo(s, n)
                    }
                }, i.oo = function(t, i) {
                    if (t.classList.contains("i-amphtml-element")) {
                        i(this.ti.getResourceForElement(t));
                        var n = t.getPlaceholder();
                        n && this.oo(n, i)
                    } else
                        for (var r = t.getElementsByClassName("i-amphtml-element"), e = [], s = 0; s < r.length; s++) {
                            for (var u = r[s], o = !1, h = 0; h < e.length; h++)
                                if (e[h].contains(u)) {
                                    o = !0;
                                    break
                                }
                            o || (e.push(u), i(this.ti.getResourceForElement(u)))
                        }
                }, i.eo = function(t, i, n) {
                    this.so(t, n, (function(i) {
                        i.element.ensureLoaded(t.getLayoutPriority())
                    }))
                }, t
            }(),
            _h = function() {
                function t(t) {
                    this.uo = t.navigator, this.t = t
                }
                var i = t.prototype;
                return i.isAndroid = function() {
                    return /Android/i.test(this.uo.userAgent)
                }, i.isIos = function() {
                    return /iPhone|iPad|iPod/i.test(this.uo.userAgent)
                }, i.isSafari = function() {
                    return /Safari/i.test(this.uo.userAgent) && !this.isChrome() && !this.isEdge() && !this.isFirefox() && !this.isOpera()
                }, i.isChrome = function() {
                    return /Chrome|CriOS/i.test(this.uo.userAgent) && !this.isEdge() && !this.isOpera()
                }, i.isFirefox = function() {
                    return /Firefox|FxiOS/i.test(this.uo.userAgent) && !this.isEdge()
                }, i.isOpera = function() {
                    return /OPR\/|Opera|OPiOS/i.test(this.uo.userAgent)
                }, i.isEdge = function() {
                    return /Edge/i.test(this.uo.userAgent)
                }, i.isWebKit = function() {
                    return /WebKit/i.test(this.uo.userAgent) && !this.isEdge()
                }, i.isWindows = function() {
                    return /Windows/i.test(this.uo.userAgent)
                }, i.isStandalone = function() {
                    return this.isIos() && this.uo.standalone || this.isChrome() && this.t.matchMedia("(display-mode: standalone)").matches
                }, i.isBot = function() {
                    return /bot/i.test(this.uo.userAgent)
                }, i.getMajorVersion = function() {
                    return this.isSafari() ? this.isIos() ? this.getIosMajorVersion() || 0 : this.ho(/\sVersion\/(\d+)/, 1) : this.isChrome() ? this.ho(/(Chrome|CriOS)\/(\d+)/, 2) : this.isFirefox() ? this.ho(/(Firefox|FxiOS)\/(\d+)/, 2) : this.isOpera() ? this.ho(/(OPR|Opera|OPiOS)\/(\d+)/, 2) : this.isEdge() ? this.ho(/Edge\/(\d+)/, 1) : 0
                }, i.ho = function(t, i) {
                    if (!this.uo.userAgent) return 0;
                    var n = this.uo.userAgent.match(t);
                    return !n || i >= n.length ? 0 : parseInt(n[i], 10)
                }, i.getIosVersionString = function() {
                    var t, i, n;
                    return this.isIos() && (null === (t = this.uo.userAgent) || void 0 === t || null === (i = t.match(/OS ([0-9]+[_.][0-9]+([_.][0-9]+)?)\b/)) || void 0 === i || null === (n = i[1]) || void 0 === n ? void 0 : n.replace(/_/g, ".")) || ""
                }, i.getIosMajorVersion = function() {
                    var t = this.getIosVersionString();
                    return "" == t ? null : Number(t.split(".")[0])
                }, t
            }();

        function kh(t) {
            An(t, "platform", _h)
        }
        var Ch = function() {
                function t(t) {
                    this.ei = t, this.ao = A()
                }
                var i = t.prototype;
                return i.addTransition = function(t, i, n) {
                    var r = this.co(t, i);
                    et(!this.ao[r]), this.ao[r] = n
                }, i.setState = function(t) {
                    var i = this.ei;
                    this.ei = t;
                    var n = this.co(i, t),
                        r = this.ao[n];
                    null == r || r()
                }, i.co = function(t, i) {
                    return "".concat(t, "|").concat(i)
                }, t
            }(),
            Nh = function() {
                function t() {
                    this.$i = [], this.fo = {}, this.lo = 0, this.vo = 0
                }
                var i = t.prototype;
                return i.getSize = function() {
                    return this.$i.length
                }, i.getLastEnqueueTime = function() {
                    return this.lo
                }, i.getLastDequeueTime = function() {
                    return this.vo
                }, i.getTaskById = function(t) {
                    return this.fo[t] || null
                }, i.enqueue = function(t) {
                    Zt(!this.fo[t.id]), this.$i.push(t), this.fo[t.id] = t, this.lo = Date.now()
                }, i.dequeue = function(t) {
                    var i = this.fo[t.id];
                    return !!this.removeAtIndex(t, this.$i.indexOf(i)) && (this.vo = Date.now(), !0)
                }, i.peek = function(t) {
                    for (var i = 1e6, n = null, r = 0; r < this.$i.length; r++) {
                        var e = this.$i[r],
                            s = t(e);
                        s < i && (i = s, n = e)
                    }
                    return n
                }, i.forEach = function(t) {
                    this.$i.forEach(t)
                }, i.removeAtIndex = function(t, i) {
                    var n = this.fo[t.id];
                    return !(!n || this.$i[i] != n || (this.$i.splice(i, 1), delete this.fo[t.id], 0))
                }, i.purge = function(t) {
                    for (var i = this.$i.length; i--;) t(this.$i[i]) && this.removeAtIndex(this.$i[i], i)
                }, t
            }(),
            Dh = "Resources",
            jh = function() {
                function t(t) {
                    var i = this;
                    this.ampdoc = t, this.win = t.win, this.ne = vr(t), this.do = this.ne.isRuntimeOn(), this.mo = !1, this.po = 0, this.ti = [], this.bo = 0, this.yo = 0, this.wo = 0, this.Ao = this.ampdoc.isVisible(), this.xo = !1, this.Eo = !0, this.Oo = !1, this.Po = -1, this.To = !0, this.Io = -1, this.Mo = 0, this.So = 0, this.Cr = new Nu(this.win, (function() {
                        return i.doPass()
                    })), this.ko = new Nu(this.win, (function() {
                        i.To = !0, i.schedulePass()
                    })), this._o = new Nh, this.Di = new Nh, this.Ro = this.No.bind(this), this.Co = [], this.Do = [], this.jo = !1, this.ws = mr(this.ampdoc), this.As = dr(this.win), this.xs = new vh(this.win, 6e4), this.zo = !1, this.Uo = 0, this.Lo = !1, this.Ho = [], this.Go = [], this.Vo = new a, this.Fo = new Ch(this.ampdoc.getVisibilityState()), this.ws.onChanged((function(t) {
                        i.Mo = i.win.Date.now(), i.So = t.velocity, t.relayoutAll && (i.To = !0, i.Lo = !0), i.schedulePass()
                    })), this.ws.onScroll((function() {
                        i.Mo = i.win.Date.now()
                    })), this.ampdoc.onVisibilityChanged((function() {
                        -1 == i.Po && i.ampdoc.isVisible() && (i.Po = i.win.Date.now()), i.schedulePass()
                    })), this.ne.onRuntimeState((function(t) {
                        Qt().fine(Dh, "Runtime state:", t), i.do = t, i.schedulePass(1)
                    })), Xs(this.ampdoc, (function() {
                        i.Bo(i.Fo), i.schedulePass(0)
                    })), this.qo(), this.Wo = dt(this.win, (function(t) {
                        return i.$o(t)
                    }), 250), Ye(this.win.document, "scroll", this.Wo, {
                        capture: !0,
                        passive: !0
                    })
                }
                var i = t.prototype;
                return i.qo = function() {
                    var t = this;
                    this.ampdoc.whenReady().then((function() {
                        t.xo = !0, t.Ko(), t.Do = null,
                            function(t) {
                                return En(t, "input")
                            }(t.win).setupInputModeClasses(t.ampdoc);
                        var i = function() {
                            return t.ko.schedule()
                        };
                        i(), Promise.race([Xe(t.win), ar(t.win).promise(3100)]).then(i), t.win.document.fonts && "loaded" != t.win.document.fonts.status && t.win.document.fonts.ready.then(i)
                    }))
                }, i.get = function() {
                    return this.ti.slice(0)
                }, i.getAmpdoc = function() {
                    return this.ampdoc
                }, i.getResourceForElement = function(t) {
                    return Hs.forElement(t)
                }, i.getResourceForElementOptional = function(t) {
                    return Hs.forElementOptional(t)
                }, i.getScrollDirection = function() {
                    return Math.sign(this.So) || 1
                }, i.add = function(t) {
                    this.bo++, 1 == this.bo && this.ws.ensureReadyForElements();
                    var i = Hs.forElementOptional(t);
                    i && 0 != i.getState() && !t.reconstructWhenReparented() ? (i.requestMeasure(), Qt().fine(Dh, "resource reused:", i.debugid)) : (i = new Hs(++this.po, t, this), Qt().fine(Dh, "resource added:", i.debugid)), this.ti.push(i), this.ko.schedule(1e3)
                }, i.Yo = function() {
                    return this.yo < 20 || this.ampdoc.getVisibilityState() == br || this.ampdoc.hasBeenVisible()
                }, i.Jo = function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                        n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                        r = this.do || this.mo;
                    if (r) {
                        var e = this.ampdoc.getVisibilityState(),
                            s = e == gr && !t.prerenderAllowed(),
                            u = e == br && !t.previewAllowed();
                        s || u || (this.xo ? this.Xo(t, n) : t.isBuilt() || t.isBuilding() || i && this.Do.includes(t) || (this.Do.push(t), this.Ko()))
                    }
                }, i.Ko = function() {
                    if (!this.jo) try {
                        this.jo = !0, this.Qo()
                    } finally {
                        this.jo = !1
                    }
                }, i.Qo = function() {
                    for (var t = 0; t < this.Do.length; t++) {
                        var i = this.Do[t];
                        (this.xo || ki(i.element, this.ampdoc.getRootNode())) && (this.Do.splice(t--, 1), this.Xo(i))
                    }
                }, i.Xo = function(t) {
                    var i = this,
                        n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                    if (!n && !this.Yo() && !t.isBuildRenderBlocking()) return null;
                    var r = t.build();
                    return r ? (Qt().fine(Dh, "build resource:", t.debugid), this.yo++, this.wo++, r.then((function() {
                        return i.schedulePass()
                    }), (function(n) {
                        if (i.Zo(t), !Us(n)) throw n
                    }))) : null
                }, i.remove = function(t) {
                    var i = Hs.forElementOptional(t);
                    i && this.Zo(i)
                }, i.Zo = function(t) {
                    var i = this.ti.indexOf(t); - 1 != i && this.ti.splice(i, 1), t.isBuilt() && t.pauseOnRemove(), 3 === t.getState() && t.layoutCanceled(), this.tu(t, !0), Qt().fine(Dh, "resource removed:", t.debugid)
                }, i.upgraded = function(t) {
                    var i = Hs.forElement(t);
                    this.Jo(i), Qt().fine(Dh, "resource upgraded:", i.debugid)
                }, i.updateLayoutPriority = function(t, i) {
                    var n = Hs.forElement(t);
                    n.updateLayoutPriority(i), this.Di.forEach((function(t) {
                        t.resource == n && (t.priority = i)
                    })), this.schedulePass()
                }, i.schedulePass = function(t) {
                    return this.Cr.schedule(t)
                }, i.updateOrEnqueueMutateTask = function(t, i) {
                    for (var n = null, r = 0; r < this.Co.length; r++)
                        if (this.Co[r].resource == t) {
                            n = this.Co[r];
                            break
                        }
                    n ? (n.newHeight = i.newHeight, n.newWidth = i.newWidth, n.marginChange = i.marginChange, n.event = i.event, n.force = i.force || n.force, n.callback = i.callback) : this.Co.push(i)
                }, i.schedulePassVsync = function() {
                    var t = this;
                    this.zo || (this.zo = !0, this.As.mutate((function() {
                        return t.doPass()
                    })))
                }, i.ampInitComplete = function() {
                    this.Oo = !0, Qt().fine(Dh, "ampInitComplete"), this.schedulePass()
                }, i.setRelayoutTop = function(t) {
                    -1 == this.Io ? this.Io = t : this.Io = Math.min(t, this.Io)
                }, i.maybeHeightChanged = function() {
                    this.Lo = !0
                }, i.onNextPass = function(t) {
                    this.Ho.push(t)
                }, i.doPass = function() {
                    var t = this;
                    if (this.do) {
                        if (this.Ao = this.ampdoc.isVisible(), this.wo = 0, this.xo && this.Eo && this.Oo) {
                            var i;
                            this.Eo = !1;
                            var n = this.win.document,
                                r = Zn(this.ampdoc);
                            this.ne.sendMessage("documentLoaded", {
                                "title": n.title,
                                "sourceUrl": Is(this.ampdoc.getUrl()),
                                "isStory": "AMP-STORY" === (null === (i = n.body.firstElementChild) || void 0 === i ? void 0 : i.tagName),
                                "serverLayout": n.documentElement.hasAttribute("i-amphtml-element"),
                                "linkRels": r.linkRels,
                                "metaTags": {
                                    "viewport": r.viewport
                                },
                                "viewport": r.viewport
                            }, !0), this.Uo = this.ws.getContentHeight(), this.ne.sendMessage("documentHeight", {
                                "height": this.Uo
                            }, !0), Qt().fine(Dh, "document height on load: %s", this.Uo)
                        }!this.Eo && this.iu && this.ti.every((function(t) {
                            return t.getState() != Hs.NOT_BUILT || t.element.R1()
                        })) && (this.iu = !1, this.Lo = !0);
                        var e = this.ws.getSize();
                        Qt().fine(Dh, "PASS: visible=", this.Ao, ", relayoutAll=", this.To, ", relayoutTop=", this.Io, ", viewportSize=", e.width, e.height), this.Cr.cancel(), this.zo = !1, this.Fo.setState(this.ampdoc.getVisibilityState()), this.nu(), this.Lo && (this.Lo = !1, this.As.measure((function() {
                            var i = t.ws.getContentHeight();
                            i != t.Uo && (t.ne.sendMessage("documentHeight", {
                                "height": i
                            }, !0), t.Uo = i, Qt().fine(Dh, "document height changed: %s", t.Uo), t.ws.contentHeightChanged())
                        })));
                        for (var s = 0; s < this.Ho.length; s++)(0, this.Ho[s])();
                        this.Ho.length = 0
                    } else Qt().fine(Dh, "runtime is off")
                }, i.nu = function() {
                    this.xo && this.Oo && !this.ampdoc.signals().get(Gs) && (this.ampdoc.signals().signal(Gs), Qt().fine(Dh, "signal: ready-scan"))
                }, i.ru = function() {
                    return this.Co.length > 0
                }, i.eu = function() {
                    var t = this,
                        i = this.win.Date.now(),
                        n = this.ws.getRect(),
                        r = n.height / 10,
                        e = n.height / 10,
                        s = Math.abs(this.So) < .01 && i - this.Mo > 500 || i - this.Mo > 1e3;
                    if (this.Co.length > 0) {
                        Qt().fine(Dh, "change size requests:", this.Co.length);
                        var u = this.Co;
                        this.Co = [];
                        for (var o = -1, h = [], a = 0, c = function(i) {
                                var c = u[i],
                                    f = c,
                                    l = f.event,
                                    v = f.resource,
                                    d = v.getLayoutBox(),
                                    m = 0,
                                    p = 0,
                                    g = 0,
                                    b = 0,
                                    y = d.bottom,
                                    w = d.top,
                                    A = void 0;
                                if (c.marginChange) {
                                    A = c.marginChange.newMargins;
                                    var x = c.marginChange.currentMargins;
                                    null != A.top && (m = A.top - x.top), null != A.bottom && (p = A.bottom - x.bottom), null != A.left && (g = A.left - x.left), null != A.right && (b = A.right - x.right), m && (w = d.top - x.top), p && (y = d.bottom + x.bottom)
                                }
                                var E = c.newHeight - d.height,
                                    P = c.newWidth - d.width,
                                    O = !1;
                                if (0 == E && 0 == m && 0 == p && 0 == P && 0 == g && 0 == b);
                                else if (c.force || !t.Ao) O = !0;
                                else if (t.xs.hasDescendantsOf(v.element) || l && l.userActivation && l.userActivation.hasBeenActive) O = !0;
                                else if (w >= n.bottom - e || 0 == m && d.bottom + Math.min(E, 0) >= n.bottom - e) O = !0;
                                else {
                                    if (n.top > 1 && y <= n.top + r) return E < 0 && n.top + a < -E || (s ? (a += E, h.push(c)) : t.Co.push(c)), "continue";
                                    t.su(v, d) ? O = !0 : E < 0 || m < 0 || p < 0 || (c.newHeight == d.height ? t.As.run({
                                        measure: function(t) {
                                            t.resize = !1;
                                            var i = v.element.parentElement;
                                            if (i) {
                                                for (var n = i.getLayoutSize && i.getLayoutSize().width || i.offsetWidth, r = P, e = 0; e < i.childElementCount; e++)
                                                    if ((r += i.children[e].offsetWidth) > n) return;
                                                t.resize = !0
                                            }
                                        },
                                        mutate: function(t) {
                                            t.resize && c.resource.changeSize(c.newHeight, c.newWidth, A), c.resource.overflowCallback(!t.resize, c.newHeight, c.newWidth, A)
                                        }
                                    }, {}) : c.resource.overflowCallback(!0, c.newHeight, c.newWidth, A))
                                }
                                O && (d.top >= 0 && (o = -1 == o ? d.top : Math.min(o, d.top)), c.resource.changeSize(c.newHeight, c.newWidth, A), c.resource.overflowCallback(!1, c.newHeight, c.newWidth, A), t.Lo = !0), c.callback && c.callback(O)
                            }, f = 0; f < u.length; f++) c(f); - 1 != o && this.setRelayoutTop(o), h.length > 0 && this.As.run({
                            measure: function(i) {
                                i.scrollHeight = t.ws.getScrollHeight(), i.scrollTop = t.ws.getScrollTop()
                            },
                            mutate: function(i) {
                                var n = -1;
                                h.forEach((function(t) {
                                    var i = t.resource.getLayoutBox();
                                    n = -1 == n ? i.top : Math.min(n, i.top), t.resource.changeSize(t.newHeight, t.newWidth, t.marginChange ? t.marginChange.newMargins : void 0), t.callback && t.callback(!0)
                                })), -1 != n && t.setRelayoutTop(n);
                                var r = t.ws.getScrollHeight();
                                r != i.scrollHeight && t.ws.setScrollTop(i.scrollTop + (r - i.scrollHeight)), t.Lo = !0
                            }
                        }, {})
                    }
                }, i.su = function(t, i, n) {
                    var r = this.ws.getContentHeight(),
                        e = Math.max(.85 * r, r - 1e3),
                        s = i || t.getLayoutBox(),
                        u = n || t.getInitialLayoutBox();
                    return s.bottom >= e || u.bottom >= e
                }, i.ou = function(t) {
                    var i = t.isDisplayed();
                    return t.measure(), !(i && !t.isDisplayed())
                }, i.uu = function(t) {
                    var i = this;
                    t.length && this.As.mutate((function() {
                        t.forEach((function(t) {
                            t.unload(), i.tu(t)
                        })), Qt().fine(Dh, "unload:", t)
                    }))
                }, i.hu = function() {
                    var t = this.win.Date.now(),
                        i = this.Go,
                        n = this.To,
                        r = this.Io;
                    this.To = !1, this.Io = -1;
                    for (var e, s = 0, u = 0, o = 0; o < this.ti.length; o++) {
                        var h = this.ti[o];
                        0 != h.getState() || h.isBuilding() || h.element.R1() || this.Jo(h, !0), !n && h.hasBeenMeasured() && 1 != h.getState() || s++, h.isMeasureRequested() && u++
                    }
                    if (s > 0 || u > 0 || n || -1 != r || i.length > 0)
                        for (var a = 0; a < this.ti.length; a++) {
                            var c = this.ti[a];
                            if (!(c.hasOwner() && !c.isMeasureRequested() || c.element.R1())) {
                                var f = n || 1 == c.getState() || !c.hasBeenMeasured() || c.isMeasureRequested() || -1 != r && c.getLayoutBox().bottom >= r;
                                if (!f)
                                    for (var l = 0; l < i.length; l++)
                                        if (i[l].contains(c.element)) {
                                            f = !0;
                                            break
                                        }
                                f && (this.ou(c) || (e || (e = []), e.push(c)))
                            }
                        }
                    i.length = 0, e && this.uu(e);
                    var v, d = this.ws.getRect();
                    v = this.Ao ? Hi(d, .25, 2) : d;
                    for (var m = this.Ao ? Hi(d, .25, .25) : d, p = 0; p < this.ti.length; p++) {
                        var g = this.ti[p];
                        if (0 != g.getState() && !g.hasOwner() && !g.element.R1()) {
                            var b = this.Ao && g.isDisplayed() && g.overlaps(m);
                            g.setInViewport(b)
                        }
                    }
                    if (v)
                        for (var y = 0; y < this.ti.length; y++) {
                            var w = this.ti[y];
                            w.isBuilt() || w.isBuilding() || w.hasOwner() || w.element.R1() || !w.hasBeenMeasured() || !w.isDisplayed() || !w.overlaps(v) || this.Jo(w, !0, !0), 2 != w.getState() || w.hasOwner() || w.isDisplayed() && w.overlaps(v) && this.scheduleLayoutOrPreload(w, !0)
                        }
                    if (this.Ao && this.au(t)) {
                        for (var A = 0, x = 0; x < this.ti.length && A < 4; x++) {
                            var E = this.ti[x];
                            2 == E.getState() && !E.hasOwner() && !E.element.R1() && E.isDisplayed() && E.idleRenderOutsideViewport() && (Qt().fine(Dh, "idleRenderOutsideViewport layout:", E.debugid), this.scheduleLayoutOrPreload(E, !1), A++)
                        }
                        for (var P = 0; P < this.ti.length && A < 4; P++) {
                            var O = this.ti[P];
                            2 != O.getState() || O.hasOwner() || O.element.R1() || !O.isDisplayed() || (Qt().fine(Dh, "idle layout:", O.debugid), this.scheduleLayoutOrPreload(O, !1), A++)
                        }
                    }
                }, i.au = function() {
                    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date.now(),
                        i = this._o.getLastDequeueTime();
                    return 0 == this._o.getSize() && 0 == this.Di.getSize() && t > i + 5e3 && i > 0
                }, i.cu = function() {
                    for (var t = this.win.Date.now(), i = -1, n = this.Di.peek(this.Ro); n && (i = this.fu(n), Qt().fine(Dh, "peek from queue:", n.id, "sched at", n.scheduleTime, "score", this.Ro(n), "timeout", i), !(i > 16));) {
                        this.Di.dequeue(n);
                        var r = this._o.getTaskById(n.id);
                        if (r) {
                            var e = this.lu.bind(this, n);
                            r.promise.then(e, e)
                        } else {
                            var s = n.resource;
                            s.measure(), this.vu(s, n.forceOutsideViewport) ? (n.promise = n.callback(), n.startTime = t, Qt().fine(Dh, "exec:", n.id, "at", n.startTime), this._o.enqueue(n), n.promise.then(this.du.bind(this, n, !0), this.du.bind(this, n, !1)).catch(Ds)) : (Qt().fine(Dh, "cancelled", n.id), s.layoutCanceled())
                        }
                        n = this.Di.peek(this.Ro), i = -1
                    }
                    if (Qt().fine(Dh, "queue size:", this.Di.getSize(), "exec size:", this._o.getSize()), i >= 0) return i;
                    var u = 2 * (t - this._o.getLastDequeueTime());
                    return Math.max(Math.min(3e4, u), 5e3)
                }, i.No = function(t) {
                    var i = this.ws.getRect(),
                        n = t.resource.getLayoutBox(),
                        r = Math.floor((n.top - i.top) / i.height);
                    return Math.sign(r) != this.getScrollDirection() && (r *= 2), r = Math.abs(r), 10 * t.priority + r
                }, i.fu = function(t) {
                    var i = this.win.Date.now();
                    if (0 == this._o.getSize()) {
                        if (-1 === this.Po) return 0;
                        var n = 1e3 * t.priority;
                        return Math.max(n - (i - this.Po), 0)
                    }
                    var r = 0;
                    return this._o.forEach((function(n) {
                        var e = Math.max(1e3 * (t.priority - n.priority), 0);
                        r = Math.max(r, e - (i - n.startTime))
                    })), r
                }, i.lu = function(t) {
                    this.Di.getTaskById(t.id) || this.Di.enqueue(t)
                }, i.du = function(t, i, n) {
                    if (this._o.dequeue(t), this.schedulePass(1e3), !i) return Qt().info(Dh, "task failed:", t.id, t.resource.debugid, n), Promise.reject(n)
                }, i.vu = function(t, i) {
                    if (0 == t.getState() || !t.isDisplayed()) return !1;
                    var n = this.ampdoc.getVisibilityState(),
                        r = n == gr && t.prerenderAllowed(),
                        e = n == br && t.previewAllowed();
                    return !!(this.Ao || r || e) && !!(i || t.isInViewport() || t.renderOutsideViewport() || t.idleRenderOutsideViewport())
                }, i.scheduleLayoutOrPreload = function(t, i, n, r) {
                    if (!t.element.R1()) {
                        var e = 0 != t.getState(),
                            s = t.isDisplayed();
                        e && s || Zt(!1);
                        var u = r || !1;
                        this.vu(t, u) && (i ? this.Zi(t, "L", 0, n || 0, u, t.startLayout.bind(t)) : this.Zi(t, "P", 2, n || 0, u, t.startLayout.bind(t)))
                    }
                }, i.Zi = function(t, i, n, r, e, s) {
                    var u = t.getTaskId(i),
                        o = {
                            id: u,
                            resource: t,
                            priority: Math.max(t.getLayoutPriority(), r) + n,
                            forceOutsideViewport: e,
                            callback: s,
                            scheduleTime: this.win.Date.now(),
                            startTime: 0,
                            promise: null
                        };
                    Qt().fine(Dh, "schedule:", o.id, "at", o.scheduleTime);
                    var h = this.Di.getTaskById(u);
                    (!h || o.priority < h.priority) && (h && this.Di.dequeue(h), this.Di.enqueue(o), this.schedulePass(this.fu(o))), o.resource.layoutScheduled(o.scheduleTime)
                }, i.whenFirstPass = function() {
                    return this.Vo.promise
                }, i.Bo = function(t) {
                    var i = this,
                        n = wr,
                        r = xr,
                        e = Ar,
                        s = gr,
                        u = br,
                        o = yr,
                        h = function() {
                            var t = i.ws.getSize();
                            if (t.height > 0 && t.width > 0) {
                                i.ru() && i.eu(), i.hu();
                                var n = i.cu();
                                i.ru() && (n = Math.min(n, 500)), i.Ao ? i.schedulePass(n) ? Qt().fine(Dh, "next pass:", n) : Qt().fine(Dh, "pass already scheduled") : Qt().fine(Dh, "document is not visible: no scheduling"), i.Vo.resolve()
                            }
                        },
                        a = function() {},
                        c = function() {
                            i.ti.forEach((function(t) {
                                return t.pause()
                            }))
                        },
                        f = function() {
                            i.ti.forEach((function(t) {
                                t.unload(), i.tu(t)
                            })), i.mu()
                        },
                        l = function() {
                            i.ti.forEach((function(t) {
                                return t.resume()
                            })), h()
                        };
                    t.addTransition(s, s, h), t.addTransition(s, u, h), t.addTransition(s, o, h), t.addTransition(s, n, h), t.addTransition(s, r, h), t.addTransition(s, e, h), t.addTransition(u, u, h), t.addTransition(u, o, h), t.addTransition(u, n, h), t.addTransition(u, r, h), t.addTransition(u, e, h), t.addTransition(o, o, h), t.addTransition(o, n, h), t.addTransition(o, r, f), t.addTransition(o, e, c), t.addTransition(n, o, h), t.addTransition(n, n, h), t.addTransition(n, r, f), t.addTransition(n, e, c), t.addTransition(r, o, l), t.addTransition(r, n, l), t.addTransition(r, r, a), t.addTransition(r, e, h), t.addTransition(e, o, l), t.addTransition(e, n, h), t.addTransition(e, r, f), t.addTransition(e, e, a)
                }, i.mu = function() {
                    try {
                        this.win.getSelection().removeAllRanges()
                    } catch (t) {}
                }, i.tu = function(t, i) {
                    if (1 != t.getState() && 2 != t.getState() || (this.Di.purge((function(i) {
                            return i.resource == t
                        })), this._o.purge((function(i) {
                            return i.resource == t
                        })), q(this.Co, (function(i) {
                            return i.resource === t
                        }))), 0 == t.getState() && i && this.Do) {
                        var n = this.Do.indexOf(t); - 1 != n && this.Do.splice(n, 1)
                    }
                }, i.$o = function(t) {
                    var i = t.target;
                    if (i.nodeType === Node.ELEMENT_NODE && i !== this.ws.getScrollingElement()) {
                        var n = i;
                        this.Go.includes(n) || (this.Go.push(n), this.schedulePass(70))
                    }
                }, t
            }();

        function Uh(t) {
            return t.queryCommandSupported("copy")
        }

        function Lh(t) {
            return t.hasAttribute("hidden")
        }
        var zh = "STANDARD-ACTIONS",
            Hh = /^i-amphtml-/,
            Gh = function() {
                function t(t) {
                    this.ampdoc = t;
                    var i = t.getHeadNode();
                    this.pu = rr(t), this.ws = mr(t), this.bu(Bn(i)), this.gu()
                }
                var i = t.prototype;
                return i.bu = function(t) {
                    t.addGlobalTarget("AMP", this.yu.bind(this)), t.addGlobalMethodHandler("hide", this.wu.bind(this)), t.addGlobalMethodHandler("show", this.Au.bind(this)), t.addGlobalMethodHandler("toggleVisibility", this.xu.bind(this)), t.addGlobalMethodHandler("scrollTo", this.Eu.bind(this)), t.addGlobalMethodHandler("focus", this.Ou.bind(this)), t.addGlobalMethodHandler("toggleClass", this.Pu.bind(this)), t.addGlobalMethodHandler("copy", this.Tu.bind(this)), t.addGlobalMethodHandler("toggleChecked", this.Iu.bind(this))
                }, i.gu = function() {
                    this.Mu() && this.ampdoc.waitForBodyOpen().then((function(t) {
                        var i = t.getAttribute("data-prefers-dark-mode-class") || "amp-dark-mode";
                        t.classList.add(i)
                    }))
                }, i.Mu = function() {
                    var t, i;
                    try {
                        var n = this.ampdoc.win.localStorage.getItem("amp-dark-mode");
                        if (n) return "yes" === n
                    } catch (t) {}
                    return null === (t = (i = this.ampdoc.win).matchMedia) || void 0 === t ? void 0 : t.call(i, "(prefers-color-scheme: dark)").matches
                }, i.yu = function(t) {
                    if (!t.satisfiesTrust(2)) return null;
                    var i = t.args,
                        n = t.method,
                        r = t.node,
                        e = oi(r);
                    switch (n) {
                        case "pushState":
                        case "setState":
                            var s = r.nodeType === Node.DOCUMENT_NODE ? r.documentElement : r;
                            return Jn(s).then((function(i) {
                                return ti(i, "AMP-BIND is not installed."), i.invoke(t)
                            }));
                        case "navigateTo":
                            return this.Su(t);
                        case "closeOrNavigateTo":
                            return this.ku(t);
                        case "scrollTo":
                            return ti(i.id, "AMP.scrollTo must provide element ID"), t.node = Rn(r).getElementById(i.id), this.Eu(t);
                        case "goBack":
                            return ir(this.ampdoc).goBack(!(!i || !0 !== i.navigate)), null;
                        case "print":
                            return e.print(), null;
                        case "copy":
                            return this.Tu(t);
                        case "optoutOfCid":
                            return Xn(this.ampdoc).then((function(t) {
                                return t.optOut()
                            })).catch((function(t) {
                                Qt().error(zh, "Failed to opt out of CID", t)
                            }));
                        case "toggleTheme":
                            return this._u(), null
                    }
                    throw Jt().createError("Unknown AMP action ", n)
                }, i.Tu = function(t) {
                    var i, n = t.args,
                        r = oi(t.node),
                        e = "copy-error";
                    if ("AMP" === t.tagOrTarget) i = n.text.trim();
                    else {
                        var s, u = st(t.node);
                        i = (null !== (s = u.value) && void 0 !== s ? s : u.textContent).trim()
                    }
                    var o, h, a, c = function(t, i, n) {
                        var e = {
                                data: {
                                    type: i
                                }
                            },
                            s = We(r, "".concat(t), e);
                        Bn(n.caller).trigger(n.caller, t, s, 3)
                    };
                    null !== (h = (o = r.document).defaultView) && void 0 !== h && null !== (a = h.navigator) && void 0 !== a && a.clipboard || Uh(o) ? function(t, i, n, r) {
                        var e;
                        null !== (e = t.navigator) && void 0 !== e && e.clipboard ? t.navigator.clipboard.writeText(i).then(n, r) : Uh(t.document) && function(t, i) {
                            var n, r = !1,
                                e = t.document,
                                s = e.createElement("textarea");
                            _r(s, {
                                "position": "fixed",
                                "top": 0,
                                "left": 0,
                                "width": "50px",
                                "height": "50px",
                                "padding": 0,
                                "border": "none",
                                "outline": "none",
                                "background": "transparent"
                            }), s.value = i, s.readOnly = !0, s.contentEditable = "true", e.body.appendChild(s), null === (n = t.getSelection()) || void 0 === n || n.removeAllRanges(), s.focus(), s.setSelectionRange(0, i.length);
                            try {
                                r = e.execCommand("copy")
                            } catch (t) {}
                            return Ti(s), r
                        }(t, i) ? n() : r()
                    }(r, i, (function() {
                        c("copy-success", "success", t)
                    }), (function() {
                        c(e, "error", t)
                    })) : c(e, "unsupported", t)
                }, i.Su = function(t) {
                    var i = this,
                        n = t.args,
                        r = t.caller,
                        e = t.method,
                        s = oi(t.node),
                        u = h();
                    return r.tagName.startsWith("AMP-") && (u = r.getImpl().then((function(t) {
                        "function" == typeof t.throwIfCannotNavigate && t.throwIfCannotNavigate()
                    }))), u.then((function() {
                        var t;
                        (t = i.ampdoc, Pn(t, "navigation")).navigateTo(s, n.url, "AMP.".concat(e), {
                            target: n.target,
                            opener: n.opener
                        })
                    }), (function(t) {
                        Jt().error(zh, t)
                    }))
                }, i._u = function() {
                    var t = this;
                    this.ampdoc.waitForBodyOpen().then((function(i) {
                        try {
                            var n = i.getAttribute("data-prefers-dark-mode-class") || "amp-dark-mode";
                            t.Mu() ? (i.classList.remove(n), t.ampdoc.win.localStorage.setItem("amp-dark-mode", "no")) : (i.classList.add(n), t.ampdoc.win.localStorage.setItem("amp-dark-mode", "yes"))
                        } catch (t) {}
                    }))
                }, i.ku = function(t) {
                    var i = oi(t.node),
                        n = i.parent != i,
                        r = !1;
                    return i.opener && this.ampdoc.isSingleDoc() && !n && (i.close(), r = i.closed), r ? h() : this.Su(t)
                }, i.Eu = function(t) {
                    var i = t.node,
                        n = t.args,
                        r = n && n.position,
                        e = n && n.duration;
                    return r && !["top", "bottom", "center"].includes(r) && (r = void 0), J(e) || (e = void 0), this.ws.animateScrollIntoView(i, r, e)
                }, i.Ou = function(t) {
                    return Ci(t.node), null
                }, i.wu = function(t) {
                    var i = t.node;
                    if (i.classList.contains("i-amphtml-element")) {
                        var n = i;
                        this.pu.mutateElement(n, (function() {
                            return n.collapse()
                        }), !0)
                    } else this.pu.mutateElement(i, (function() {
                        return kr(i, !1)
                    }));
                    return null
                }, i.Au = function(t) {
                    var i = this,
                        n = t.node,
                        r = oi(n);
                    if (n.classList.contains(ae(Qr))) return Jt().warn(zh, "Elements with layout=nodisplay cannot be dynamically shown.", n), null;
                    this.pu.measureElement((function() {
                        "none" != Nr(r, n).display || Lh(n) || Jt().warn(zh, 'Elements can only be dynamically shown when they have the "hidden" attribute set or when they were dynamically hidden.', n)
                    }));
                    var e, s = (e = n).hasAttribute("autofocus") ? e : e.querySelector("[autofocus]");
                    return s && sr(r).isIos() ? (this.Ru(n, s), this.pu.mutateElement(n, (function() {}))) : this.pu.mutateElement(n, (function() {
                        i.Ru(n, s)
                    })), null
                }, i.Ru = function(t, i) {
                    t.classList.contains("i-amphtml-element") ? t.expand() : kr(t, !0), i && Ci(i)
                }, i.xu = function(t) {
                    return Lh(t.node) ? this.Au(t) : this.wu(t)
                }, i.Pu = function(t) {
                    var i = t.node,
                        n = t.args,
                        r = Jt().assertString(n.class, "Argument 'class' must be a string.");
                    return Hh.test(r) || this.pu.mutateElement(i, (function() {
                        if (void 0 !== n.force) {
                            var t = Jt().assertBoolean(n.force, "Optional argument 'force' must be a boolean.");
                            i.classList.toggle(r, t)
                        } else i.classList.toggle(r)
                    })), null
                }, i.Iu = function(t) {
                    var i = t.node,
                        n = t.args;
                    return this.pu.mutateElement(i, (function() {
                        if (void 0 !== (null == n ? void 0 : n.force)) {
                            var t = Jt().assertBoolean(n.force, "Optional argument 'force' must be a boolean.");
                            i.checked = t
                        } else !0 === i.checked ? i.checked = !1 : i.checked = !0
                    })), null
                }, t
            }(),
            Vh = "Storage",
            Fh = function() {
                function t(t, i, n) {
                    this.ampdoc = t, this.ne = i, this.Se = n, this.Nu = n instanceof $h, this.i = Ms(this.ampdoc.win.location), this.Cu = null
                }
                var i = t.prototype;
                return i.Du = function() {
                    return this.ju(), this
                }, i.get = function(t, i) {
                    return this.zu().then((function(n) {
                        return n.get(t, i)
                    }))
                }, i.set = function(t, i, n) {
                    return Zt("boolean" == typeof i), this.setNonBoolean(t, i, n)
                }, i.setNonBoolean = function(t, i, n) {
                    return this.Uu((function(r) {
                        return r.set(t, i, n)
                    }))
                }, i.remove = function(t) {
                    return this.Uu((function(i) {
                        return i.remove(t)
                    }))
                }, i.isViewerStorage = function() {
                    return this.Nu
                }, i.zu = function() {
                    return this.Cu || (this.Cu = this.Se.loadBlob(this.i).then((function(t) {
                        return t ? at(atob(t)) : {}
                    })).catch((function(t) {
                        return Qt().expectedError(Vh, "Failed to load store: ", t), {}
                    })).then((function(t) {
                        return new qh(t)
                    }))), this.Cu
                }, i.Uu = function(t) {
                    var i = this;
                    return this.zu().then((function(n) {
                        t(n);
                        var r = btoa(JSON.stringify(n.obj));
                        return i.Se.saveBlob(i.i, r)
                    })).then(this.Lu.bind(this))
                }, i.ju = function() {
                    var t = this;
                    this.ne.onBroadcast((function(i) {
                        "amp-storage-reset" == i.type && i.origin == t.i && (Qt().fine(Vh, "Received reset message"), t.Cu = null)
                    }))
                }, i.Lu = function() {
                    Qt().fine(Vh, "Broadcasted reset message"), this.ne.broadcast({
                        "type": "amp-storage-reset",
                        "origin": this.i
                    })
                }, t
            }(),
            qh = function() {
                function t(t, i) {
                    this.obj = E(t), this.Hu = i || 8, this.Gu = this.obj.vv || Object.create(null), this.obj.vv || (this.obj.vv = this.Gu)
                }
                var i = t.prototype;
                return i.get = function(t, i) {
                    var n = this.Gu[t],
                        r = n ? n.t : void 0,
                        e = !i || null == r || r + i > Date.now();
                    return n && e ? n.v : void 0
                }, i.set = function(t, i, n) {
                    if (Zt("__proto__" != t && "prototype" != t), void 0 !== this.Gu[t]) {
                        var r = this.Gu[t],
                            e = Date.now();
                        n && (e = r.t), r.v = i, r.t = e
                    } else this.Gu[t] = {
                        "v": i,
                        "t": Date.now()
                    };
                    var s = Object.keys(this.Gu);
                    if (s.length > this.Hu) {
                        for (var u = 1 / 0, o = null, h = 0; h < s.length; h++) {
                            var a = this.Gu[s[h]];
                            a.t < u && (o = s[h], u = a.t)
                        }
                        o && delete this.Gu[o]
                    }
                }, i.remove = function(t) {
                    delete this.Gu[t]
                }, t
            }(),
            Bh = function() {
                function t(t) {
                    if (this.win = t, this.Vu = this.Fu(), !this.Vu) {
                        var i = new Error("localStorage not supported.");
                        Qt().expectedError(Vh, i)
                    }
                }
                var i = t.prototype;
                return i.Fu = function() {
                    try {
                        return "localStorage" in this.win && (this.win.localStorage.getItem("test"), !0)
                    } catch (t) {
                        return !1
                    }
                }, i.Bu = function(t) {
                    return "amp-store:".concat(t)
                }, i.loadBlob = function(t) {
                    var i = this;
                    return new Promise((function(n) {
                        i.Vu ? n(i.win.localStorage.getItem(i.Bu(t))) : n(null)
                    }))
                }, i.saveBlob = function(t, i) {
                    var n = this;
                    return new Promise((function(r) {
                        n.Vu ? (n.win.localStorage.setItem(n.Bu(t), i), r()) : r()
                    }))
                }, t
            }(),
            $h = function() {
                function t(t) {
                    this.ne = t
                }
                var i = t.prototype;
                return i.loadBlob = function(t) {
                    return this.ne.sendMessageAwaitResponse("loadStore", {
                        "origin": t
                    }).then((function(t) {
                        return t.blob
                    }))
                }, i.saveBlob = function(t, i) {
                    return this.ne.sendMessageAwaitResponse("saveStore", {
                        "origin": t,
                        "blob": i
                    }).catch((function(t) {
                        throw Qt().createExpectedError(Vh, "Failed to save store: ", t)
                    }))
                }, t
            }(),
            Wh = "__AMP_IMPL_",
            Yh = function() {},
            Kh = function() {
                function t(t) {
                    this.xi = t, this.qu = {}, this.Wu = {}
                }
                var i = t.prototype;
                return i.whenReady = function(t) {
                    return this.$u(t).then(Yh)
                }, i.setHtmlForTemplate = function(t, i) {
                    var n = this;
                    return this.$u(t).then((function(t) {
                        return n.Ku(t, i)
                    }))
                }, i.renderTemplate = function(t, i) {
                    var n = this;
                    return this.$u(t).then((function(t) {
                        return n.Yu(t, i)
                    }))
                }, i.renderTemplateAsString = function(t, i) {
                    return this.$u(t).then((function(t) {
                        return t.renderAsString(i)
                    }))
                }, i.getTemplateRenderer = function(t) {
                    return this.$u(t).then((function(t) {
                        return {
                            renderAsString: function(i) {
                                return t.renderAsString(i)
                            }
                        }
                    }))
                }, i.renderTemplateArray = function(t, i) {
                    var n = this;
                    return 0 == i.length ? Promise.resolve([]) : this.$u(t).then((function(t) {
                        return i.map((function(i) {
                            return n.Yu(t, i)
                        }))
                    }))
                }, i.findAndRenderTemplate = function(t, i, n) {
                    return this.renderTemplate(this.findTemplate(t, n), i)
                }, i.findAndSetHtmlForTemplate = function(t, i, n) {
                    return this.setHtmlForTemplate(this.findTemplate(t, n), i)
                }, i.findAndRenderTemplateArray = function(t, i, n) {
                    return this.renderTemplateArray(this.findTemplate(t, n), i)
                }, i.hasTemplate = function(t, i) {
                    return !!this.maybeFindTemplate(t, i)
                }, i.findTemplate = function(t, i) {
                    var n = this.maybeFindTemplate(t, i);
                    ti(n, "Template not found for %s", t);
                    var r = n.tagName;
                    return ti("TEMPLATE" == r || "SCRIPT" == r && "text/plain" === n.getAttribute("type"), 'Template must be defined in a <template> or <script type="text/plain"> tag'), n
                }, i.maybeFindTemplate = function(t, i) {
                    var n = t.getAttribute("template");
                    return n ? _i(t).getElementById(n) : i ? pi(t, i) : t.querySelector('template[type], script[type="text/plain"]')
                }, i.$u = function(t) {
                    var i = this,
                        n = t[Wh];
                    if (n) return Promise.resolve(n);
                    var r = "",
                        e = t.tagName;
                    "TEMPLATE" == e ? r = t.getAttribute("type") : "SCRIPT" == e && (r = t.getAttribute("template")), ti(r, "Type must be specified: %s", t);
                    var s = t.__AMP_WAIT_;
                    return s || (s = this.Ju(t, r).then((function(n) {
                        var r = n,
                            e = t[Wh] = new r(t, i.xi.win);
                        return delete t.__AMP_WAIT_, e
                    })), t.__AMP_WAIT_ = s, s)
                }, i.Ju = function(t, i) {
                    if (this.qu[i]) return this.qu[i];
                    var n = new a,
                        r = n.promise,
                        e = n.resolve;
                    return this.qu[i] = r, this.Wu[i] = e, r
                }, i.Xu = function(t, i) {
                    if (this.qu[t]) {
                        var n = this.Wu[t];
                        ti(n, "Duplicate template type: %s", t), delete this.Wu[t], n(i)
                    } else this.qu[t] = Promise.resolve(i)
                }, i.Yu = function(t, i) {
                    return t.render(i)
                }, i.Ku = function(t, i) {
                    return t.setHtml(i)
                }, t
            }(),
            Jh = function() {
                function t(t) {
                    this.win = t, this.Qu = this.win.Promise.resolve(), this.Zu = 0, this.th = {}, this.ih = Date.now()
                }
                var i = t.prototype;
                return i.timeSinceStart = function() {
                    return Date.now() - this.ih
                }, i.delay = function(t, i) {
                    var n = this;
                    if (!i) {
                        var r = "p" + this.Zu++;
                        return this.Qu.then((function() {
                            n.th[r] ? delete n.th[r] : t()
                        })).catch(Ds), r
                    }
                    return this.win.setTimeout((function() {
                        try {
                            t()
                        } catch (t) {
                            throw Ds(t), t
                        }
                    }), i)
                }, i.cancel = function(t) {
                    "string" != typeof t ? this.win.clearTimeout(t) : this.th[t] = !0
                }, i.promise = function(t) {
                    var i = this;
                    return new this.win.Promise((function(n) {
                        if (-1 == i.delay(n, t)) throw new Error("Failed to schedule timer.")
                    }))
                }, i.timeoutPromise = function(t, i, n) {
                    var r, e = this,
                        s = new this.win.Promise((function(i, s) {
                            if (-1 == (r = e.delay((function() {
                                    s(Jt().createError(n || "timeout"))
                                }), t))) throw new Error("Failed to schedule timer.")
                        }));
                    if (!i) return s;
                    var u = function() {
                        e.cancel(r)
                    };
                    return i.then(u, u), this.win.Promise.race([s, i])
                }, i.poll = function(t, i) {
                    var n = this;
                    return new this.win.Promise((function(r) {
                        var e = n.win.setInterval((function() {
                            i() && (n.win.clearInterval(e), r())
                        }), t)
                    }))
                }, t
            }();

        function Xh(t) {
            An(t, "timer", Jh)
        }
        var Qh = function() {
                function t(t) {
                    var i = t.getRootNode(),
                        n = i.ownerDocument || i;
                    this.nh = n.createElement("a"), this.yr = new as(100)
                }
                var i = t.prototype;
                return i.parse = function(t, i) {
                    return ds(this.nh, t, i ? null : this.yr)
                }, i.rh = function(t) {
                    return "string" != typeof t ? t : this.parse(t)
                }, i.isProtocolValid = function(t) {
                    return Es(t)
                }, i.getSourceOrigin = function(t) {
                    return Ms(this.rh(t))
                }, i.getSourceUrl = function(t) {
                    return Is(this.rh(t))
                }, i.resolveRelativeUrl = function(t, i) {
                    return Ts(t, this.rh(i))
                }, i.assertHttpsUrl = function(t, i) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "source";
                    return ws(t, i, n)
                }, i.assertAbsoluteHttpOrHttpsUrl = function(t) {
                    return function(t) {
                        return ti(/^https?\:/i.test(t), 'URL must start with "http://" or "https://". Invalid value: %s', t), vs(t).href
                    }(t)
                }, i.isProxyOrigin = function(t) {
                    return xs(this.rh(t))
                }, i.isSecure = function(t) {
                    return ys(this.rh(t))
                }, i.getWinOrigin = function(t) {
                    return t.origin || this.rh(t.location.href).origin
                }, i.getCdnUrlOnOrigin = function(t) {
                    if (xs(t)) return t;
                    var i = this.rh(t),
                        n = i.hash,
                        r = i.host,
                        e = i.pathname,
                        s = i.search,
                        u = encodeURIComponent(r);
                    return "".concat(Mt, "/c/").concat(u).concat(e).concat(s).concat(n)
                }, t
            }(),
            Zh = "Expander",
            ta = function() {
                function t(t, i, n, r, e, s) {
                    this.eh = t, this.sh = i, this.oh = n, this.uh = r, this.zr = e, this.hh = !s
                }
                var i = t.prototype;
                return i.expand = function(t) {
                    if (!t.length) return this.uh ? t : Promise.resolve(t);
                    var i = this.eh.getExpr(this.sh, this.zr),
                        n = this.ah(t, i);
                    return n.length ? this.fh(t, n) : this.uh ? t : Promise.resolve(t)
                }, i.getMacroNames = function(t) {
                    var i = this.eh.getExpr(this.sh, this.zr);
                    return t.match(i) || []
                }, i.ah = function(t, i) {
                    var n = [];
                    return t.replace(i, (function(t, i, r) {
                        var e = t.length,
                            s = {
                                start: r,
                                stop: e + r - 1,
                                name: i,
                                length: e
                            };
                        n.push(s)
                    })), n
                }, i.fh = function(t, i) {
                    var n = this,
                        r = [],
                        e = 0,
                        s = 0,
                        u = i[s],
                        o = 0,
                        h = !1;
                    return function a(c) {
                        for (var f, l = "", v = [], m = []; e < t.length && s <= i.length;) {
                            var p, g = l.trim();
                            if (u && e === u.start) g && v.push(o ? (f = l).trimStart ? f.trimStart() : (f + "_").trim().slice(0, -1) : l), p = n.sh && x(n.sh, u.name) ? {
                                name: u.name,
                                prioritized: n.sh[u.name],
                                encode: c
                            } : D(D({}, n.eh.get(u.name)), {}, {
                                name: u.name,
                                encode: c
                            }), e = u.stop + 1, u = i[++s], "(" === t[e] ? (e++, o++, r.push(p), v.push(a(!1))) : v.push(n.lh(p)), l = "";
                            else if ("`" === t[e]) h ? (h = !1, l.length && v.push(l)) : (h = !0, g && v.push(g)), l = "", e++;
                            else if (o && "," === t[e] && !h) g && v.push(g), m.push(v), v = [], "," === t[e + 1] && (m.push([""]), e++), l = "", e++;
                            else {
                                if (o && ")" === t[e] && !h) {
                                    e++, o--;
                                    var b = r.pop();
                                    return g && v.push(g), m.push(v), n.lh(b, m)
                                }
                                l += t[e], e++
                            }
                            e === t.length && l.length && v.push(l)
                        }
                        return n.uh ? v.join("") : Promise.all(v).then((function(t) {
                            return t.join("")
                        })).catch((function(t) {
                            return d(t), ""
                        }))
                    }(this.hh)
                }, i.lh = function(t, i) {
                    var n, r = t.encode,
                        e = t.name;
                    if (null != t.prioritized ? n = t.prioritized : this.uh && null != t.sync ? n = t.sync : this.uh ? (Jt().error(Zh, "ignoring async replacement key: ", t.name), n = "") : n = t.async || t.sync, this.uh) {
                        var s = this.dh(n, e, i);
                        return r ? encodeURIComponent(s) : s
                    }
                    return this.mh(n, e, i).then((function(t) {
                        return r ? encodeURIComponent(t) : t
                    }))
                }, i.mh = function(t, i, n) {
                    var r, e = this;
                    try {
                        if ("function" == typeof t) {
                            var s = t;
                            r = n ? this.ph(n).then((function(t) {
                                return s.apply(null, t)
                            })) : c(s)
                        } else r = Promise.resolve(t);
                        return r.then((function(t) {
                            return e.bh(i, t, n), null == t ? "" : t
                        })).catch((function(t) {
                            return d(t), e.bh(i, "", n), Promise.resolve("")
                        }))
                    } catch (t) {
                        return d(t), this.bh(i, "", n), Promise.resolve("")
                    }
                }, i.ph = function(t) {
                    return Promise.all(t.map((function(t) {
                        return Promise.all(t).then((function(t) {
                            return t.join("")
                        }))
                    })))
                }, i.dh = function(t, i, n) {
                    try {
                        var r, e = t;
                        return "function" == typeof t && (e = t.apply(null, this.gh(n))), e && "function" == typeof e.then ? (Jt().error(Zh, "ignoring async macro resolution"), r = "") : "string" == typeof e || "number" == typeof e || "boolean" == typeof e ? (this.bh(i, e, n), r = e.toString()) : (this.bh(i, "", n), r = ""), r
                    } catch (t) {
                        return d(t), this.bh(i, "", n), ""
                    }
                }, i.gh = function(t) {
                    return t ? t.map((function(t) {
                        return t.join("")
                    })) : t
                }, i.bh = function(t, i, n) {
                    if (this.oh) {
                        var r = "";
                        if (n) {
                            var e = n.filter((function(t) {
                                return "" !== t
                            })).join(",");
                            r = "(".concat(e, ")")
                        }
                        this.oh["".concat(t).concat(r)] = i || ""
                    }
                }, t
            }(),
            ia = {
                "navigationStart": 1,
                "redirectStart": 1,
                "redirectEnd": 1,
                "fetchStart": 1,
                "domainLookupStart": 1,
                "domainLookupEnd": 1,
                "connectStart": 1,
                "secureConnectionStart": 1,
                "connectEnd": 1,
                "requestStart": 1,
                "responseStart": 1,
                "responseEnd": 1,
                "domLoading": 2,
                "domInteractive": 2,
                "domContentLoaded": 2,
                "domComplete": 2,
                "loadEventStart": 3,
                "loadEventEnd": 4
            };

        function na(t, i, n) {
            var r, e = ia[i] || 3,
                s = n ? ia[n] || 3 : e,
                u = Math.max(e, s);
            if (1 === u) r = h();
            else if (2 === u) r = dn(t.document);
            else if (3 === u) r = Xe(t);
            else if (4 === u) {
                var o = ar(t);
                r = Xe(t).then((function() {
                    return o.promise(1)
                }))
            }
            return Zt(r), r.then((function() {
                return ra(t, i, n)
            }))
        }

        function ra(t, i, n) {
            var r = t.performance && t.performance.timing;
            if (r && 0 != r.navigationStart) {
                var e = void 0 === n ? r[i] : r[n] - r[i];
                return !J(e) || e < 0 ? void 0 : e
            }
        }

        function ea(t, i) {
            var n = t.performance && t.performance.navigation;
            if (n && void 0 !== n[i]) return n[i]
        }
        var sa = "UrlReplacements";

        function ua(t) {
            return function() {
                return (new Date)[t]()
            }
        }

        function oa(t, i) {
            return function() {
                return t[i]
            }
        }

        function ha(t, i) {
            return i ? (ti("ISOCountry" === i, "The value passed to AMP_GEO() is not valid name:" + i), t && t[i] || "unknown") : (null == t ? void 0 : t.matchedISOCountryGroups.join(",")) || "unknown"
        }
        var aa = function(t) {
                U(n, t);
                var i = H(n);

                function n(t) {
                    var n;
                    return (n = i.call(this, t)).yh = null, n.wh = {}, n
                }
                var r = n.prototype;
                return r.Ah = function(t, i, n) {
                    var r = this;
                    return this.setBoth(t, (function() {
                        return ra(r.ampdoc.win, i, n)
                    }), (function() {
                        return na(r.ampdoc.win, i, n)
                    }))
                }, r.initialize = function() {
                    var t = this,
                        i = this.ampdoc.win,
                        n = this.ampdoc.getHeadNode(),
                        r = mr(this.ampdoc);
                    fr(this.ampdoc).then((function(i) {
                        t.yh = i
                    })), this.set("RANDOM", (function() {
                        return Math.random()
                    }));
                    var e = Object.create(null);
                    this.set("COUNTER", (function(t) {
                        return e[t] = 1 + (0 | e[t])
                    })), this.set("CANONICAL_URL", (function() {
                        return t.xh().canonicalUrl
                    })), this.set("CANONICAL_HOST", (function() {
                        return vs(t.xh().canonicalUrl).host
                    })), this.set("CANONICAL_HOSTNAME", (function() {
                        return vs(t.xh().canonicalUrl).hostname
                    })), this.set("CANONICAL_PATH", (function() {
                        return vs(t.xh().canonicalUrl).pathname
                    })), this.setAsync("DOCUMENT_REFERRER", (function() {
                        return vr(t.ampdoc).getReferrerUrl()
                    })), this.setAsync("EXTERNAL_REFERRER", (function() {
                        return vr(t.ampdoc).getReferrerUrl().then((function(t) {
                            return t ? vs(Is(t)).hostname === zr.getHostname(i) ? null : t : null
                        }))
                    })), this.set("TITLE", (function() {
                        var t = i.document;
                        return t.originalTitle || t.title
                    })), this.set("AMPDOC_URL", (function() {
                        return As(t.Eh(i.location.href))
                    })), this.set("AMPDOC_HOST", (function() {
                        var t = vs(i.location.href);
                        return t && t.host
                    })), this.set("AMPDOC_HOSTNAME", (function() {
                        var t = vs(i.location.href);
                        return t && t.hostname
                    }));
                    var s = function() {
                        var i = t.xh();
                        return As(t.Eh(i.sourceUrl))
                    };
                    this.setBoth("SOURCE_URL", (function() {
                        return s()
                    }), (function() {
                        return yh().then((function() {
                            return s()
                        }))
                    })), this.set("SOURCE_HOST", (function() {
                        return vs(t.xh().sourceUrl).host
                    })), this.set("SOURCE_HOSTNAME", (function() {
                        return vs(t.xh().sourceUrl).hostname
                    })), this.set("SOURCE_PATH", (function() {
                        return vs(t.xh().sourceUrl).pathname
                    })), this.set("PAGE_VIEW_ID", (function() {
                        return t.xh().pageViewId
                    })), this.setAsync("PAGE_VIEW_ID_64", (function() {
                        return t.xh().pageViewId64
                    })), this.setBoth("QUERY_PARAM", (function(i) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
                        return t.Oh(i, n)
                    }), (function(i) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
                        return yh().then((function() {
                            return t.Oh(i, n)
                        }))
                    })), this.set("FRAGMENT_PARAM", (function(i) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
                        return t.Ph(i, n)
                    }));
                    var u = null;
                    this.setBoth("CLIENT_ID", (function(t) {
                        return u ? u[t] : null
                    }), (function(i, r, e, s) {
                        ti(i, "The first argument to CLIENT_ID, the fallback Cookie name, is required");
                        var o = h();
                        return r && (o = function(t) {
                            return Hn(t, "userNotificationManager", "amp-user-notification")
                        }(n).then((function(t) {
                            return t.get(r)
                        }))), Xn(t.ampdoc).then((function(t) {
                            return s = "true" == s, t.get({
                                scope: i,
                                createCookieIfNotPresent: !0,
                                cookieName: e || void 0,
                                disableBackup: s
                            }, o)
                        })).then((function(t) {
                            return u || (u = Object.create(null)), t && "_ga" == (e || i) && ("string" == typeof t ? t = t.replace(/^(GA1|1)\.[\d-]+\./, "") : Qt().error(sa, "non-string cid, what is it?", Object.keys(t))), u[i] = t, t
                        }))
                    })), this.setAsync("VARIANT", (function(i) {
                        return t.Th((function(t) {
                            var n = t[i];
                            return ti(void 0 !== n, "The value passed to VARIANT() is not a valid experiment in <amp-experiment>:" + i), null === n ? "none" : n
                        }), "VARIANT")
                    })), this.setAsync("VARIANTS", (function() {
                        return t.Th((function(t) {
                            var i = [];
                            for (var n in t) {
                                var r = t[n];
                                i.push(n + "." + (r || "none"))
                            }
                            return i.join("!")
                        }), "VARIANTS")
                    })), this.setBoth("AMP_GEO", (function(i) {
                        return ha(t.yh, i)
                    }), (function(i) {
                        return t.Ih((function(t) {
                            return ha(t, i)
                        }), "AMP_GEO")
                    })), this.set("TIMESTAMP", ua("getTime")), this.set("TIMESTAMP_ISO", ua("toISOString")), this.set("TIMEZONE", ua("getTimezoneOffset")), this.set("SCROLL_HEIGHT", (function() {
                        return r.getScrollHeight()
                    })), this.set("SCROLL_WIDTH", (function() {
                        return r.getScrollWidth()
                    })), this.set("VIEWPORT_HEIGHT", (function() {
                        return r.getHeight()
                    })), this.set("VIEWPORT_WIDTH", (function() {
                        return r.getWidth()
                    }));
                    var o = i.screen;
                    this.set("SCREEN_WIDTH", oa(o, "width")), this.set("SCREEN_HEIGHT", oa(o, "height")), this.set("AVAILABLE_SCREEN_HEIGHT", oa(o, "availHeight")), this.set("AVAILABLE_SCREEN_WIDTH", oa(o, "availWidth")), this.set("SCREEN_COLOR_DEPTH", oa(o, "colorDepth")), this.set("DOCUMENT_CHARSET", (function() {
                        var t = i.document;
                        return t.characterSet || t.charset
                    })), this.set("BROWSER_LANGUAGE", (function() {
                        var t = i.navigator;
                        return (t.language || t.userLanguage || t.browserLanguage || "").toLowerCase()
                    })), this.set("USER_AGENT", (function() {
                        return i.navigator.userAgent
                    })), this.setBoth("UACH", (function(i) {
                        var n;
                        return null !== (n = t.wh[i]) && void 0 !== n ? n : ""
                    }), (function(n) {
                        return t.Mh(n, i)
                    })), this.Ah("PAGE_LOAD_TIME", "navigationStart", "loadEventStart"), this.Ah("DOMAIN_LOOKUP_TIME", "domainLookupStart", "domainLookupEnd"), this.Ah("TCP_CONNECT_TIME", "connectStart", "connectEnd"), this.Ah("SERVER_RESPONSE_TIME", "requestStart", "responseStart"), this.Ah("PAGE_DOWNLOAD_TIME", "responseStart", "responseEnd"), this.Ah("REDIRECT_TIME", "navigationStart", "fetchStart"), this.Ah("DOM_INTERACTIVE_TIME", "navigationStart", "domInteractive"), this.Ah("CONTENT_LOAD_TIME", "navigationStart", "domContentLoadedEventStart"), this.setAsync("ACCESS_READER_ID", (function() {
                        return t.Sh((function(t) {
                            return t.getAccessReaderId()
                        }), "ACCESS_READER_ID")
                    })), this.setAsync("AUTHDATA", (function(i) {
                        return ti(i, "The first argument to AUTHDATA, the field, is required"), t.Sh((function(t) {
                            return t.getAuthdataField(i)
                        }), "AUTHDATA")
                    })), this.setAsync("VIEWER", (function() {
                        return vr(t.ampdoc).getViewerOrigin().then((function(t) {
                            return null == t ? "" : t
                        }))
                    })), this.setAsync("TOTAL_ENGAGED_TIME", (function() {
                        return $n(n).then((function(t) {
                            return t.getTotalEngagedTime()
                        }))
                    })), this.setAsync("INCREMENTAL_ENGAGED_TIME", (function(t, i) {
                        return $n(n).then((function(n) {
                            return n.getIncrementalEngagedTime(t, "false" !== i)
                        }))
                    })), this.set("NAV_TIMING", (function(t, n) {
                        return ti(t, "The first argument to NAV_TIMING, the start attribute name, is required"), ra(i, t, n)
                    })), this.setAsync("NAV_TIMING", (function(t, n) {
                        return ti(t, "The first argument to NAV_TIMING, the start attribute name, is required"), na(i, t, n)
                    })), this.set("NAV_TYPE", (function() {
                        return ea(i, "type")
                    })), this.set("NAV_REDIRECT_COUNT", (function() {
                        return ea(i, "redirectCount")
                    })), this.set("AMP_VERSION", (function() {
                        return "2305252018001"
                    })), this.set("BACKGROUND_STATE", (function() {
                        return t.ampdoc.isVisible() ? "0" : "1"
                    })), this.setAsync("VIDEO_STATE", (function(i, n) {
                        return (r = t.ampdoc, Pn(r, "video-manager")).getVideoStateProperty(i, n);
                        var r
                    })), this.setAsync("AMP_STATE", (function(i) {
                        var n = t.ampdoc.getRootNode(),
                            r = n.documentElement || n;
                        return Jn(r).then((function(t) {
                            return t && t.getStateValue(i) || ""
                        }))
                    }))
                }, r.Eh = function(t) {
                    var i = this.xh().replaceParams;
                    return i ? function(t, i) {
                        for (var n = yt(vs(t).search), r = {}, e = Object.keys(i), s = 0; s < e.length; s++) x(n, e[s]) || (r[e[s]] = i[e[s]]);
                        return gs(t, r)
                    }(Ps(t), i) : t
                }, r.xh = function() {
                    return Zn(this.ampdoc)
                }, r.Sh = function(t, i) {
                    var n = this.ampdoc.getHeadNode();
                    return Promise.all([Fn(n), qn(n)]).then((function(n) {
                        var r = n[0],
                            e = n[1],
                            s = r || e;
                        return s ? r && e ? t(e) || t(r) : t(s) : (Jt().error(sa, "Access or subsciptions service is not installed to access: ", i), null)
                    }))
                }, r.Oh = function(t, i) {
                    ti(t, "The first argument to QUERY_PARAM, the query string param is required");
                    var n = yt(vs(Ps(this.ampdoc.win.location.href)).search),
                        r = this.xh().replaceParams;
                    return void 0 !== n[t] ? n[t] : r && void 0 !== r[t] ? r[t] : i
                }, r.Ph = function(t, i) {
                    ti(t, "The first argument to FRAGMENT_PARAM, the fragment string param is required"), ti("string" == typeof t, "param should be a string");
                    var n = wt(this.ampdoc.win);
                    return void 0 === n[t] ? i : n[t]
                }, r.Th = function(t, i) {
                    return (n = this.ampdoc.getHeadNode(), Gn(n, "variant", "amp-experiment", !0)).then((function(t) {
                        return ti(t, "To use variable %s, amp-experiment should be configured", i), t.getVariants()
                    })).then((function(i) {
                        return t(i)
                    }));
                    var n
                }, r.Ih = function(t, i) {
                    var n = this;
                    return null !== this.yh ? t(this.yh) : fr(this.ampdoc.getHeadNode()).then((function(r) {
                        return ti(r, "To use variable %s, amp-geo should be configured", i), n.yh = r, t(r)
                    }))
                }, r.Mh = function(t, i) {
                    var n, r, e, s = this;
                    return t in this.wh ? Promise.resolve(this.wh[t]) : (null === (n = i.navigator) || void 0 === n || null === (r = n.userAgentData) || void 0 === r || null === (e = r.getHighEntropyValues([t])) || void 0 === e ? void 0 : e.then((function(i) {
                        var n = "object" !== p(i[t]) ? i[t] : JSON.stringify(i[t]);
                        return s.wh[t] = n, n
                    }))) || Promise.resolve("")
                }, n
            }(function() {
                function t(t) {
                    this.ampdoc = t, this.kh = Object.create(null), this._h = !1, this.Rh()
                }
                var i = t.prototype;
                return i.Qn = function() {
                    this.initialize(), this._h = !0
                }, i.initialize = function() {}, i.get = function(t) {
                    return this._h || this.Qn(), this.kh[t]
                }, i.set = function(t, i) {
                    return Zt(-1 == t.indexOf("RETURN")), this.kh[t] = this.kh[t] || {
                        sync: void 0,
                        async: void 0
                    }, this.kh[t].sync = i, this
                }, i.setAsync = function(t, i) {
                    return Zt(-1 == t.indexOf("RETURN")), this.kh[t] = this.kh[t] || {
                        sync: void 0,
                        async: void 0
                    }, this.kh[t].async = i, this
                }, i.setBoth = function(t, i, n) {
                    return this.set(t, i).setAsync(t, n)
                }, i.getExpr = function(t, i) {
                    this._h || this.Qn();
                    var n = D(D({}, this.kh), t);
                    return this.Nh(Object.keys(n), i)
                }, i.Nh = function(t, i) {
                    var n = this;
                    if (this.Rh() && (t = t.filter((function(t) {
                            return n.Rh().includes(t)
                        }))), i && (t = t.filter((function(t) {
                            return i[t]
                        }))), 0 === t.length) return /_^/g;
                    t.sort((function(t, i) {
                        return i.length - t.length
                    }));
                    var r = t.map((function(t) {
                        return "$" === t[0] ? "\\" + t : t
                    })).join("|");
                    return new RegExp("\\$?(" + r + ")", "g")
                }, i.Rh = function() {
                    return this.Ch ? this.Ch : this.ampdoc.isSingleDoc() && ju(this.ampdoc.getRootNode()) ? (this.Ch = [""], this.Ch) : void 0
                }, t
            }()),
            ca = function() {
                function t(t, i) {
                    this.ampdoc = t, this.eh = i
                }
                var i = t.prototype;
                return i.expandStringSync = function(t, i, n) {
                    return new ta(this.eh, i, void 0, !0, n, !0).expand(t)
                }, i.expandStringAsync = function(t, i, n) {
                    return new ta(this.eh, i, void 0, void 0, n, !0).expand(t)
                }, i.expandUrlSync = function(t, i, n) {
                    return this.Dh(t, new ta(this.eh, i, void 0, !0, n).expand(t))
                }, i.expandUrlAsync = function(t, i, n, r) {
                    var e = this;
                    return new ta(this.eh, i, void 0, void 0, n, r).expand(t).then((function(i) {
                        return e.Dh(t, i)
                    }))
                }, i.expandInputValueAsync = function(t) {
                    return this.jh(t, !1)
                }, i.expandInputValueSync = function(t) {
                    return this.jh(t, !0)
                }, i.jh = function(t, i) {
                    Zt("INPUT" == t.tagName && "hidden" == (t.getAttribute("type") || "").toLowerCase());
                    var n = this.zh(t);
                    if (!n) return i ? t.value : Promise.resolve(t.value);
                    void 0 === t["amp-original-value"] && (t["amp-original-value"] = t.value);
                    var r = new ta(this.eh, void 0, void 0, i, n).expand(t["amp-original-value"] || t.value);
                    return i ? t.value = r : r.then((function(i) {
                        return t.value = i, i
                    }))
                }, i.zh = function(t, i) {
                    var n = t.getAttribute("data-amp-replace");
                    if (n) {
                        var r = {};
                        return n.trim().split(/\s+/).forEach((function(t) {
                            !i || x(i, t) ? r[t] = !0 : Jt().warn("URL", "Ignoring unsupported replacement", t)
                        })), r
                    }
                }, i.Uh = function(t) {
                    var i = Zn(this.ampdoc);
                    if (t.origin == vs(i.canonicalUrl).origin || t.origin == vs(i.sourceUrl).origin) return !0;
                    var n = this.ampdoc.getMetaByName("amp-link-variable-allowed-origin");
                    if (n)
                        for (var r = n.trim().split(/\s+/), e = 0; e < r.length; e++)
                            if (t.origin == vs(r[e]).origin) return !0;
                    return !1
                }, i.maybeExpandLink = function(t, i) {
                    Zt("A" == t.tagName);
                    var n = t,
                        r = n.getAttribute("data-amp-addparams") || "",
                        e = this.zh(n, {
                            "CLIENT_ID": !0,
                            "QUERY_PARAM": !0,
                            "PAGE_VIEW_ID": !0,
                            "PAGE_VIEW_ID_64": !0,
                            "NAV_TIMING": !0
                        });
                    if (e || r || i) {
                        var s = n["amp-original-href"] || n.getAttribute("href"),
                            u = vs(s);
                        null == n["amp-original-href"] && (n["amp-original-href"] = s);
                        var o = this.Uh(u);
                        return r && (s = gs(s, yt(r = o ? this.Lh(r, e) : r))), o ? (i && (e && e.QUERY_PARAM || (i = this.expandUrlSync(i, void 0, {
                            "QUERY_PARAM": !0
                        })), s = gs(s, yt(i))), s = this.Lh(s, e), n.href = s) : (e && Jt().warn("URL", "Ignoring link replacement %s because the link does not go to the document's source, canonical, or allowlisted origin.", s), n.href = s)
                    }
                }, i.Lh = function(t, i) {
                    return i ? this.expandUrlSync(t, void 0, i) : t
                }, i.collectVars = function(t, i) {
                    var n = Object.create(null);
                    return new ta(this.eh, i, n).expand(t).then((function() {
                        return n
                    }))
                }, i.collectDisallowedVarsSync = function(t) {
                    var i = t.getAttribute("src"),
                        n = new ta(this.eh).getMacroNames(i),
                        r = this.zh(t);
                    return r ? n.filter((function(t) {
                        return !r[t]
                    })) : n
                }, i.Dh = function(t, i) {
                    return vs(i, !0).protocol != vs(t, !0).protocol ? (Jt().error(sa, "Illegal replacement of the protocol: ", t), t) : (ti(Es(i), "The replacement url has invalid protocol: %s", i), i)
                }, i.getVariableSource = function() {
                    return this.eh
                }, t
            }(),
            fa = "Viewer",
            la = /^(https?:\/\/)((www[0-9]*|web|ftp|wap|home|mobile|amp|m)\.)+/i,
            va = function() {
                function t(t) {
                    var i = this;
                    this.ampdoc = t, this.win = t.win, this._s = Ni(this.win), this.do = !0, this.Hh = !1, this.Gh = A(), this.Vh = A(), this.Fh = new Er, this.Bh = new Er, this.qh = null, this.Wh = null, this.$h = [], this.Kh = A(), this.Yh = A(), t.isSingleDoc() && Object.assign(this.Yh, yt(this.win.location.hash)), this.do = !parseInt(t.getParam("off"), 10), Qt().fine(fa, "- runtimeOn:", this.do), this.Hh = !(!parseInt(t.getParam("history"), 10) && !this.Hh), Qt().fine(fa, "- history:", this.Hh), Qt().fine(fa, "- visibilityState:", this.ampdoc.getVisibilityState()), this.Jh = null, this.Xh = xs(vs(this.ampdoc.win.location.href));
                    var n = new a;
                    this.Qh = n.resolve, this.Zh = this.ta(n.promise), this.Us = null, this.ia = null;
                    var r = t.getParam("referrer");
                    if (this.na = this.isEmbedded() && null != r && !1 !== this.ra() ? r : this.win.document.referrer, this.ea = new Promise((function(n) {
                            i.isEmbedded() && null != t.getParam("referrer") ? i.isTrustedViewer().then((function(r) {
                                r ? n(t.getParam("referrer")) : (n(i.win.document.referrer), i.na != i.win.document.referrer && (Qt().expectedError(fa, "Untrusted viewer referrer override: " + i.na + " at " + i.Wh), i.na = i.win.document.referrer))
                            })) : n(i.win.document.referrer)
                        })), this.sa = As(this.win.location.href || ""), this.oa = new Promise((function(n) {
                            var r = t.getParam("viewerUrl");
                            i.isEmbedded() && r ? i.isTrustedViewer().then((function(t) {
                                t ? i.sa = Zt(r) : Qt().expectedError(fa, "Untrusted viewer url override: " + r + " at " + i.Wh), n(i.sa)
                            })) : n(i.sa)
                        })), this.Yh.click) {
                        var e = As(this.win.location.href);
                        e != this.win.location.href && this.win.history.replaceState && (this.win.location.originalHash || (this.win.location.originalHash = this.win.location.hash), this.win.history.replaceState({}, "", e), delete this.Yh.click, Qt().fine(fa, "replace fragment:" + this.win.location.href))
                    }
                    this.ampdoc.whenFirstVisible().then((function() {
                        i.maybeUpdateFragmentForCct()
                    })), this.ampdoc.isSingleDoc() && this.ua()
                }
                var i = t.prototype;
                return i.ta = function(t) {
                    if (!(this._s && !this.win.__AMP_TEST_IFRAME && (this.ampdoc.getParam("origin") || this.ampdoc.getParam("visibilityState") || -1 != this.win.location.search.indexOf("amp_js_v")) || this.isWebviewEmbedded() || this.isCctEmbedded()) && this.ampdoc.isSingleDoc()) return null;
                    var i = "initMessagingChannel timeout";
                    return ar(this.win).timeoutPromise(2e4, t, i).catch((function(t) {
                        var n = da(t);
                        throw n && W(n.message, i) && (n = Qt().createExpectedError(n)), Ds(n), n
                    }))
                }, i.getAmpDoc = function() {
                    return this.ampdoc
                }, i.getParam = function(t) {
                    return this.ampdoc.getParam(t)
                }, i.hasCapability = function(t) {
                    var i = this.ampdoc.getParam("cap");
                    return !!i && -1 != i.split(",").indexOf(t)
                }, i.isEmbedded = function() {
                    return !!this.Zh
                }, i.isWebviewEmbedded = function() {
                    return !this._s && "1" == this.ampdoc.getParam("webview")
                }, i.isCctEmbedded = function() {
                    if (null != this.Jh) return this.Jh;
                    if (this.Jh = !1, !this._s) {
                        var t = yt(this.win.location.search);
                        this.Jh = "1" === t.amp_gsa && (t.amp_js_v || "").startsWith("a")
                    }
                    return this.Jh
                }, i.isProxyOrigin = function() {
                    return this.Xh
                }, i.maybeUpdateFragmentForCct = function() {
                    if (this.isCctEmbedded() && this.win.history.replaceState) {
                        var t = Ms(this.win.location.href),
                            i = Zn(this.ampdoc).canonicalUrl,
                            n = Ms(i);
                        this.ha(t, n) && (this.Yh.ampshare = i, this.win.history.replaceState({}, "", "#" + bs(this.Yh)))
                    }
                }, i.ha = function(t, i) {
                    var n = function(t) {
                        return t.split(".").length > 2 ? t.replace(la, "$1") : t
                    };
                    return n(t) == n(i)
                }, i.isRuntimeOn = function() {
                    return this.do
                }, i.toggleRuntime = function() {
                    this.do = !this.do, Qt().fine(fa, "Runtime state:", this.do), this.Fh.fire(this.do)
                }, i.onRuntimeState = function(t) {
                    return this.Fh.add(t)
                }, i.isOvertakeHistory = function() {
                    return this.Hh
                }, i.getVisibilityState = function() {
                    return this.ampdoc.getVisibilityState()
                }, i.isVisible = function() {
                    return this.ampdoc.isVisible()
                }, i.hasBeenVisible = function() {
                    return this.ampdoc.hasBeenVisible()
                }, i.whenFirstVisible = function() {
                    return this.ampdoc.whenFirstVisible()
                }, i.whenNextVisible = function() {
                    return this.ampdoc.whenNextVisible()
                }, i.getFirstVisibleTime = function() {
                    return this.ampdoc.getFirstVisibleTime()
                }, i.getLastVisibleTime = function() {
                    return this.ampdoc.getLastVisibleTime()
                }, i.onVisibilityChanged = function(t) {
                    return this.ampdoc.onVisibilityChanged(t)
                }, i.aa = function(t) {
                    var i;
                    t && (Zt("prerender" === (i = t) || "preview" === i || "visible" === i || "hidden" === i || "paused" === i || "inactive" === i), t === wr && (t = null != this.ampdoc.getLastVisibleTime() ? xr : gr), this.ampdoc.overrideVisibilityState(t), Qt().fine(fa, "visibilitychange event:", this.ampdoc.getVisibilityState()))
                }, i.getResolvedViewerUrl = function() {
                    return this.sa
                }, i.getViewerUrl = function() {
                    return this.oa
                }, i.maybeGetMessagingOrigin = function() {
                    return this.Wh
                }, i.getUnconfirmedReferrerUrl = function() {
                    return this.na
                }, i.getReferrerUrl = function() {
                    return this.ea
                }, i.isTrustedViewer = function() {
                    var t = this;
                    if (!this.Us) {
                        var i = this.ra();
                        this.Us = void 0 !== i ? Promise.resolve(i) : this.Zh.then((function(i) {
                            return !!i && t.ca(i)
                        }))
                    }
                    return this.Us
                }, i.ra = function() {
                    return !!this.isEmbedded() && (!this.win.location.ancestorOrigins || this.isWebviewEmbedded() || this.isCctEmbedded() ? void 0 : this.win.location.ancestorOrigins.length > 0 && this.ca(this.win.location.ancestorOrigins[0]))
                }, i.getViewerOrigin = function() {
                    var t;
                    return this.ia || (this.isEmbedded() ? this.win.location.ancestorOrigins && this.win.location.ancestorOrigins.length > 0 && (t = this.win.location.ancestorOrigins[0]) : t = "", this.ia = void 0 !== t ? Promise.resolve(t) : ar(this.win).timeoutPromise(1e3, this.Zh).catch((function() {
                        return ""
                    }))), this.ia
                }, i.ca = function(t) {
                    var i = vs(t),
                        n = i.protocol;
                    return "x-thread:" == n || "https:" == n && kt.some((function(t) {
                        return t.test(i.hostname)
                    }))
                }, i.onMessage = function(t, i) {
                    var n = this.Gh[t];
                    n || (n = new Er, this.Gh[t] = n);
                    var r = n.add(i);
                    return this.Kh[t] && (this.Kh[t].forEach((function(t) {
                        n.fire(t.data), t.deferred.resolve()
                    })), this.Kh[t] = []), r
                }, i.onMessageRespond = function(t, i) {
                    var n = this;
                    return this.Vh[t] = i, this.Kh[t] && (this.Kh[t].forEach((function(t) {
                            t.deferred.resolve(i(t.data))
                        })), this.Kh[t] = []),
                        function() {
                            n.Vh[t] === i && delete n.Vh[t]
                        }
                }, i.receiveMessage = function(t, i, n) {
                    if ("visibilitychange" == t) return this.aa(i.state), h();
                    if ("broadcast" == t) return this.Bh.fire(i), h();
                    var r = this.Gh[t],
                        e = this.Vh[t];
                    if (!r && !e) {
                        if (this.Kh[t] = this.Kh[t] || [], this.Kh[t].length >= 50) return;
                        var s = new a;
                        return this.Kh[t].push({
                            data: i,
                            deferred: s
                        }), s.promise
                    }
                    return r && r.fire(i), e ? e(i) : r ? h() : void 0
                }, i.setMessageDeliverer = function(t, i) {
                    var n = this;
                    if (this.qh) throw new Error("message channel can only be initialized once");
                    if (null == i) throw new Error("message channel must have an origin");
                    if (Qt().fine(fa, "message channel established with origin: ", i), this.qh = t, this.Wh = i, this.Qh(i), this.$h.length > 0) {
                        var r = this.$h.slice(0);
                        this.$h = [], r.forEach((function(t) {
                            var i = n.qh(t.eventType, t.data, t.awaitResponse);
                            t.awaitResponse && t.responseResolver(i)
                        }))
                    }
                }, i.maybeGetMessageDeliverer = function() {
                    return this.qh
                }, i.sendMessage = function(t, i) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                    this.fa(t, i, n, !1)
                }, i.sendMessageAwaitResponse = function(t, i) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                    return this.fa(t, i, n, !0)
                }, i.fa = function(t, i, n, r) {
                    var e = this;
                    if (this.qh) return c((function() {
                        return e.qh(t, i, r)
                    }));
                    if (!this.Zh) return r ? Promise.reject(da()) : h();
                    if (!n) return this.Zh.then((function() {
                        return e.qh(t, i, r)
                    }));
                    var s, u = B(this.$h, (function(i) {
                        return i.eventType == t
                    }));
                    if (-1 != u)(s = this.$h.splice(u, 1)[0]).data = i, s.awaitResponse = s.awaitResponse || r;
                    else {
                        var o = new a,
                            f = o.promise,
                            l = o.resolve;
                        s = {
                            eventType: t,
                            data: i,
                            awaitResponse: r,
                            responsePromise: f,
                            responseResolver: l
                        }
                    }
                    return this.$h.push(s), s.responsePromise
                }, i.broadcast = function(t) {
                    return this.Zh ? this.fa("broadcast", t, !1, !1).then((function() {
                        return !0
                    }), (function() {
                        return !1
                    })) : Promise.resolve(!1)
                }, i.onBroadcast = function(t) {
                    return this.Bh.add(t)
                }, i.whenMessagingReady = function() {
                    return this.Zh
                }, i.replaceUrl = function(t) {
                    if (t && this.ampdoc.isSingleDoc() && this.win.history.replaceState) try {
                        var i = vs(this.win.location.href),
                            n = vs(As(t) + this.win.location.hash);
                        i.origin == n.origin && Ms(i) == Ms(n) && (this.win.history.replaceState({}, "", n.href), this.win.location.originalHref = i.href, Qt().fine(fa, "replace url:" + n.href))
                    } catch (t) {
                        Qt().error(fa, "replaceUrl failed", t)
                    }
                }, i.ua = function() {
                    var t = this;
                    if (this.ampdoc.getVisibilityState() != yr) {
                        var i = [],
                            n = function() {
                                return i.forEach((function(t) {
                                    return t()
                                }))
                            },
                            r = function() {
                                t.aa(yr), n(), Qt().expectedError(fa, "Received user action in non-visible doc")
                            },
                            e = {
                                capture: !0,
                                passive: !0
                            };
                        i.push(Ye(this.win, "keydown", r, e), Ye(this.win, "touchstart", r, e), Ye(this.win, "mousedown", r, e)), this.whenFirstVisible().then(n)
                    }
                }, t
            }();

        function da(t) {
            var i;
            return t instanceof Error ? ((t = f(t)).message = "No messaging channel: " + t.message, i = t) : i = new Error("No messaging channel: " + t), i.message = it(i.message), i
        }

        function ma(t, i) {
            return function(n) {
                return t + (i - t) * n
            }
        }

        function pa(t, i, n) {
            return et(i <= n), Math.min(Math.max(t, i), n)
        }
        var ga = function() {
                function t() {}
                return t.solveYValueFromXValue = function(i, n, r, e, s, u, o, h, a) {
                    return t.la(t.va(i, n, e, u, h), r, s, o, a)
                }, t.va = function(i, n, r, e, s) {
                    var u = 1e-6,
                        o = (i - n) / (s - n);
                    if (o <= 0) return 0;
                    if (o >= 1) return 1;
                    for (var h = 0, a = 1, c = 0, f = 0; f < 8; f++) {
                        c = t.da(o, n, r, e, s);
                        var l = (t.da(o + u, n, r, e, s) - c) / u;
                        if (Math.abs(c - i) < u) return o;
                        if (Math.abs(l) < u) break;
                        c < i ? h = o : a = o, o -= (c - i) / l
                    }
                    for (var v = 0; Math.abs(c - i) > u && v < 8; v++) c < i ? (h = o, o = (o + a) / 2) : (a = o, o = (o + h) / 2), c = t.da(o, n, r, e, s);
                    return o
                }, t.da = function(i, n, r, e, s) {
                    if (0 == i) return n;
                    if (1 == i) return s;
                    var u = t.ma(n, r, i),
                        o = t.ma(r, e, i),
                        h = t.ma(e, s, i);
                    return u = t.ma(u, o, i), o = t.ma(o, h, i), t.ma(u, o, i)
                }, t.la = function(i, n, r, e, s) {
                    if (0 == i) return n;
                    if (1 == i) return s;
                    var u = t.ma(n, r, i),
                        o = t.ma(r, e, i),
                        h = t.ma(e, s, i);
                    return u = t.ma(u, o, i), o = t.ma(o, h, i), t.ma(u, o, i)
                }, t.ma = function(t, i, n) {
                    return t + n * (i - t)
                }, t
            }(),
            ba = {
                LINEAR: function(t) {
                    return t
                },
                EASE: function(t) {
                    return ga.solveYValueFromXValue(t, 0, 0, .25, .1, .25, 1, 1, 1)
                },
                EASE_IN: function(t) {
                    return ga.solveYValueFromXValue(t, 0, 0, .42, 0, 1, 1, 1, 1)
                },
                EASE_OUT: function(t) {
                    return ga.solveYValueFromXValue(t, 0, 0, 0, 0, .58, 1, 1, 1)
                },
                EASE_IN_OUT: function(t) {
                    return ga.solveYValueFromXValue(t, 0, 0, .42, 0, .58, 1, 1, 1)
                }
            },
            ya = {
                "linear": ba.LINEAR,
                "ease": ba.EASE,
                "ease-in": ba.EASE_IN,
                "ease-out": ba.EASE_OUT,
                "ease-in-out": ba.EASE_IN_OUT
            };

        function wa(t) {
            if (!t) return null;
            if (Y(t)) {
                if (-1 != t.indexOf("cubic-bezier")) {
                    var i = t.match(/cubic-bezier\((.+)\)/);
                    if (i) {
                        var n = i[1].split(",").map(parseFloat);
                        if (4 == n.length) {
                            for (var r = 0; r < 4; r++)
                                if (isNaN(n[r])) return null;
                            return e = n[0], s = n[1], u = n[2], o = n[3],
                                function(t) {
                                    return ga.solveYValueFromXValue(t, 0, 0, e, s, u, o, 1, 1)
                                }
                        }
                    }
                    return null
                }
                return ya[t]
            }
            var e, s, u, o;
            return t
        }
        var Aa = "Animation",
            xa = function() {},
            Ea = function() {
                function t(t, i) {
                    this.pa = t, this.As = i || dr(self), this.ba = null, this.ga = []
                }
                t.animate = function(i, n, r, e) {
                    return new t(i).setCurve(e).add(0, n, 1).start(r)
                };
                var i = t.prototype;
                return i.setCurve = function(t) {
                    return t && (this.ba = wa(t)), this
                }, i.add = function(t, i, n, r) {
                    return this.ga.push({
                        delay: t,
                        func: i,
                        duration: n,
                        curve: wa(r)
                    }), this
                }, i.start = function(t) {
                    return new Pa(this.As, this.pa, this.ga, this.ba, t)
                }, t
            }(),
            Pa = function() {
                function t(t, i, n, r, e) {
                    this.As = t, this.pa = i, this.ga = [];
                    for (var s = 0; s < n.length; s++) {
                        var u = n[s];
                        this.ga.push({
                            delay: u.delay,
                            func: u.func,
                            duration: u.duration,
                            curve: u.curve || r,
                            started: !1,
                            completed: !1
                        })
                    }
                    this.ya = e, this.ih = Date.now(), this.Rr = !0, this.ei = {};
                    var o = new a;
                    this.wa = o.promise, this.Qt = o.resolve, this.Aa = o.reject, this.xa = this.As.createAnimTask(this.pa, {
                        mutate: this.Ea.bind(this)
                    }), this.As.canAnimate(this.pa) ? this.xa(this.ei) : (Qt().warn(Aa, "cannot animate"), this.Oa(!1, 0))
                }
                var i = t.prototype;
                return i.then = function(t, i) {
                    return t || i ? this.wa.then(t, i) : this.wa
                }, i.thenAlways = function(t) {
                    var i = t || xa;
                    return this.then(i, i)
                }, i.halt = function(t) {
                    this.Oa(!1, t || 0)
                }, i.Oa = function(t, i) {
                    if (this.Rr) {
                        if (this.Rr = !1, 0 != i) {
                            this.ga.length > 1 && this.ga.sort((function(t, i) {
                                return t.delay + t.duration - (i.delay + i.duration)
                            }));
                            try {
                                if (i > 0)
                                    for (var n = 0; n < this.ga.length; n++) this.ga[n].func(1, !0);
                                else
                                    for (var r = this.ga.length - 1; r >= 0; r--) this.ga[r].func(0, !1)
                            } catch (i) {
                                Qt().error(Aa, "completion failed: " + i, i), t = !1
                            }
                        }
                        t ? this.Qt() : this.Aa()
                    }
                }, i.Ea = function(t) {
                    if (this.Rr) {
                        for (var i = Date.now(), n = Math.min((i - this.ih) / this.ya, 1), r = 0; r < this.ga.length; r++) {
                            var e = this.ga[r];
                            !e.started && n >= e.delay && (e.started = !0)
                        }
                        for (var s = 0; s < this.ga.length; s++) {
                            var u = this.ga[s];
                            u.started && !u.completed && this.Pa(u, n)
                        }
                        1 == n ? this.Oa(!0, 0) : this.As.canAnimate(this.pa) ? this.xa(this.ei) : (Qt().warn(Aa, "cancel animation"), this.Oa(!1, 0))
                    }
                }, i.Pa = function(t, i) {
                    var n, r;
                    if (t.duration > 0) {
                        if (r = n = Math.min((i - t.delay) / t.duration, 1), t.curve && 1 != r) try {
                            r = t.curve(n)
                        } catch (t) {
                            return Qt().error(Aa, "step curve failed: " + t, t), void this.Oa(!1, 0)
                        }
                    } else n = 1, r = 1;
                    1 == n && (t.completed = !0);
                    try {
                        t.func(r, t.completed)
                    } catch (t) {
                        return Qt().error(Aa, "step mutate failed: " + t, t), void this.Oa(!1, 0)
                    }
                }, t
            }();

        function Oa(t, i) {
            for (var n, r = i.lastElementChild; r; r = r.previousElementSibling)
                if (r.getBoundingClientRect().height > 0) {
                    var e = Nr(t, r);
                    if ("static" == e.position || "relative" == e.position) {
                        n = e;
                        break
                    }
                }
            return n ? parseInt(n.marginBottom, 10) : 0
        }
        var Ia = function() {
                function t(t) {
                    var i = this;
                    this.win = t, this.As = dr(t);
                    var n = this.win.document,
                        r = n.documentElement,
                        e = r.className;
                    r.classList.add("i-amphtml-ios-embed");
                    var s = n.createElement("html");
                    this.Ta = s, s.id = "i-amphtml-wrapper", s.className = e, this.Ia = new Er, this.Ma = new Er, this.Sa = this.ka.bind(this), this._a = function() {
                        return i.Ma.fire()
                    }, this.Ra = 0, this.Na = !1, Ii(n, this.Ca.bind(this)), vn(n).then((function() {
                        r.classList.add("i-amphtml-ios-overscroll")
                    })), Qt().fine("Viewport", "initialized ios-embed-wrapper viewport")
                }
                var i = t.prototype;
                return i.ensureReadyForElements = function() {
                    this.Ca()
                }, i.Ca = function() {
                    if (!this.Na) {
                        this.Na = !0;
                        var t = this.win.document,
                            i = t.body;
                        t.documentElement.appendChild(this.Ta), this.Ta.appendChild(i), Object.defineProperty(t, "body", {
                            get: function() {
                                return i
                            }
                        }), this.ka()
                    }
                }, i.connect = function() {
                    this.win.addEventListener("resize", this._a), this.Ta.addEventListener("scroll", this.Sa)
                }, i.disconnect = function() {
                    this.win.removeEventListener("resize", this._a), this.Ta.removeEventListener("scroll", this.Sa)
                }, i.getBorderTop = function() {
                    return 1
                }, i.requiresFixedLayerTransfer = function() {
                    return !Ge(this.win, "ios-fixed-no-transfer") || parseFloat(sr(this.win).getIosVersionString()) < 12.2
                }, i.overrideGlobalScrollTo = function() {
                    return !0
                }, i.supportsPositionFixed = function() {
                    return !0
                }, i.onScroll = function(t) {
                    this.Ia.add(t)
                }, i.onResize = function(t) {
                    this.Ma.add(t)
                }, i.updatePaddingTop = function(t) {
                    this.Ra = t, Sr(this.Ta, {
                        "padding-top": Cr(t)
                    })
                }, i.hideViewerHeader = function(t, i) {
                    t || this.updatePaddingTop(0)
                }, i.showViewerHeader = function(t, i) {
                    t || this.updatePaddingTop(i)
                }, i.disableScroll = function() {
                    this.Ta.classList.add("i-amphtml-scroll-disabled")
                }, i.resetScroll = function() {
                    this.Ta.classList.remove("i-amphtml-scroll-disabled")
                }, i.updateLightboxMode = function(t) {
                    return h()
                }, i.getSize = function() {
                    return {
                        width: this.win.innerWidth,
                        height: this.win.innerHeight
                    }
                }, i.getScrollTop = function() {
                    return this.Ta.scrollTop
                }, i.getScrollLeft = function() {
                    return 0
                }, i.getScrollWidth = function() {
                    return this.Ta.scrollWidth
                }, i.getScrollHeight = function() {
                    return this.Ta.scrollHeight
                }, i.getContentHeight = function() {
                    var t = this.win.document.body,
                        i = t.getBoundingClientRect().height,
                        n = Oa(this.win, t),
                        r = Nr(this.win, t);
                    return parseInt(r.marginTop, 10) + this.Ra + i + n + parseInt(r.marginBottom, 10)
                }, i.contentHeightChanged = function() {}, i.getLayoutRect = function(t, i, n) {
                    var r = t.getBoundingClientRect(),
                        e = null != n ? n : this.getScrollTop(),
                        s = null != i ? i : this.getScrollLeft();
                    return zi(Math.round(r.left + s), Math.round(r.top + e), Math.round(r.width), Math.round(r.height))
                }, i.getRootClientRectAsync = function() {
                    return Promise.resolve(null)
                }, i.setScrollTop = function(t) {
                    this.Ta.scrollTop = t || 1
                }, i.ka = function(t) {
                    0 == this.Ta.scrollTop && (this.Ta.scrollTop = 1, t && t.preventDefault()), t && this.Ia.fire()
                }, i.getScrollingElement = function() {
                    return this.Ta
                }, i.getScrollingElementScrollsLikeViewport = function() {
                    return !1
                }, t
            }(),
            Ma = function() {
                function t(t) {
                    var i = this;
                    this.ampdoc = t, this.win = t.win, this.Ss = sr(this.win), this.Ia = new Er, this.Ma = new Er, this.Sa = this.Da.bind(this), this._a = function() {
                        return i.Ma.fire()
                    }, Qt().fine("Viewport", "initialized natural viewport")
                }
                var i = t.prototype;
                return i.Da = function() {
                    this.Ia.fire()
                }, i.connect = function() {
                    this.win.addEventListener("scroll", this.Sa), this.win.addEventListener("resize", this._a)
                }, i.disconnect = function() {
                    this.win.removeEventListener("scroll", this.Sa), this.win.removeEventListener("resize", this._a)
                }, i.ensureReadyForElements = function() {}, i.getBorderTop = function() {
                    return 0
                }, i.requiresFixedLayerTransfer = function() {
                    return !1
                }, i.overrideGlobalScrollTo = function() {
                    return !1
                }, i.supportsPositionFixed = function() {
                    return !0
                }, i.onScroll = function(t) {
                    this.Ia.add(t)
                }, i.onResize = function(t) {
                    this.Ma.add(t)
                }, i.updatePaddingTop = function(t) {
                    Sr(this.win.document.documentElement, {
                        "padding-top": Cr(t)
                    })
                }, i.hideViewerHeader = function(t, i) {
                    t || this.updatePaddingTop(0)
                }, i.showViewerHeader = function(t, i) {
                    t || this.updatePaddingTop(i)
                }, i.disableScroll = function() {
                    this.win.document.documentElement.classList.add("i-amphtml-scroll-disabled")
                }, i.resetScroll = function() {
                    this.win.document.documentElement.classList.remove("i-amphtml-scroll-disabled")
                }, i.updateLightboxMode = function(t) {
                    return h()
                }, i.getSize = function() {
                    var t = this.win.innerWidth,
                        i = this.win.innerHeight;
                    if (t && i) return {
                        width: t,
                        height: i
                    };
                    var n = this.win.document.documentElement;
                    return {
                        width: n.clientWidth,
                        height: n.clientHeight
                    }
                }, i.getScrollTop = function() {
                    var t = this.getScrollingElement().scrollTop || this.win.pageYOffset,
                        i = this.ampdoc.getRootNode().host;
                    return i ? t - i.offsetTop : t
                }, i.getScrollLeft = function() {
                    return 0
                }, i.getScrollWidth = function() {
                    return this.getScrollingElement().scrollWidth
                }, i.getScrollHeight = function() {
                    return this.getScrollingElement().scrollHeight
                }, i.getContentHeight = function() {
                    var t = this.getScrollingElement(),
                        i = t.getBoundingClientRect(),
                        n = i.top + this.getScrollTop(),
                        r = sr(this.win).isSafari() ? Oa(this.win, t) : 0,
                        e = Nr(this.win, t);
                    return n + parseInt(e.marginTop, 10) + i.height + r + parseInt(e.marginBottom, 10)
                }, i.contentHeightChanged = function() {}, i.getLayoutRect = function(t, i, n) {
                    var r = t.getBoundingClientRect(),
                        e = null != n ? n : this.getScrollTop(),
                        s = null != i ? i : this.getScrollLeft();
                    return zi(Math.round(r.left + s), Math.round(r.top + e), Math.round(r.width), Math.round(r.height))
                }, i.getRootClientRectAsync = function() {
                    return Promise.resolve(null)
                }, i.setScrollTop = function(t) {
                    this.getScrollingElement().scrollTop = t
                }, i.getScrollingElement = function() {
                    var t = this.win.document;
                    return t.scrollingElement ? t.scrollingElement : t.body && this.Ss.isWebKit() ? t.body : t.documentElement
                }, i.getScrollingElementScrollsLikeViewport = function() {
                    return !0
                }, t
            }(),
            Ta = "Viewport";

        function Sa(t, i, n) {
            return function(t, i, n) {
                var r = parseInt(Nr(t, i)[n], 10);
                return isNaN(r) ? 0 : r
            }(t, i === t.document.body ? t.document.documentElement : i, n)
        }

        function Ra(t, i) {
            return Sa(t, i, "scrollPaddingTop")
        }
        var _a = function() {
            function t(t, i, n) {
                var r = this,
                    e = t.win;
                this.ampdoc = t, this.ja = this.ampdoc.win.document, this.Se = i, this.ne = n, this.za = null, this.pr = null, this.Ua = null, this.La = !1, this.Ha = null, this.Ra = Number(n.getParam("paddingTop") || 0), this.Ga = 0, this.Ir = ar(e), this.As = dr(e), this.Va = !1, this.Fa = null, this.Ba = 0, this.qa = new Er, this.Ia = new Er, this.Ma = new Er, this.Wa = void 0, this.$a = void 0, this.Ka = null, this.ne.onMessage("viewport", this.Ya.bind(this)), this.ne.onMessage("scroll", this.Ja.bind(this)), this.ne.onMessage("disableScroll", this.Xa.bind(this)), this.ne.isEmbedded() && this.Se.updatePaddingTop(this.Ra), this.Se.onScroll(this.Qa.bind(this)), this.Se.onResize(this.Za.bind(this)), this.onScroll(this.tc.bind(this)), this.Ao = !1, this.ampdoc.onVisibilityChanged(this.ic.bind(this)), this.ic();
                var s = this.ja.documentElement;
                if (t.isSingleDoc() && s.classList.add("i-amphtml-singledoc"), n.isEmbedded() ? s.classList.add("i-amphtml-embedded") : s.classList.add("i-amphtml-standalone"), Ni(e) && s.classList.add("i-amphtml-iframed"), "1" === n.getParam("webview") && s.classList.add("i-amphtml-webview"), Ni(e) && "scrollRestoration" in e.history && (e.history.scrollRestoration = "manual"), this.Se.overrideGlobalScrollTo()) try {
                    Object.defineProperty(e, "scrollTo", {
                        value: function(t, i) {
                            return r.setScrollTop(i)
                        }
                    }), ["pageYOffset", "scrollY"].forEach((function(t) {
                        Object.defineProperty(e, t, {
                            get: function() {
                                return r.getScrollTop()
                            }
                        })
                    }))
                } catch (t) {}
                sr(e).isIos() && Ni(e) && this.ampdoc.isSingleDoc() && this.ampdoc.whenReady().then((function() {
                    e.scrollTo(-.1, 0)
                }))
            }
            var i = t.prototype;
            return i.dispose = function() {
                this.Se.disconnect()
            }, i.ensureReadyForElements = function() {
                this.Se.ensureReadyForElements()
            }, i.ic = function() {
                var t = this.ampdoc.isVisible();
                t != this.Ao && (this.Ao = t, t ? (this.Se.connect(), this.pr && this.Za(), this.Ua && (this.Ua = null, this.getScrollTop())) : this.Se.disconnect())
            }, i.getPaddingTop = function() {
                return this.Ra
            }, i.getScrollTop = function() {
                return null == this.Ua && (this.Ua = this.Se.getScrollTop()), this.Ua
            }, i.getScrollLeft = function() {
                return null == this.Ha && (this.Ha = this.Se.getScrollLeft()), this.Ha
            }, i.setScrollTop = function(t) {
                this.Ua = null, this.Se.setScrollTop(t)
            }, i.updatePaddingBottom = function(t) {
                this.ampdoc.waitForBodyOpen().then((function(i) {
                    Rr(i, "borderBottom", "".concat(t, "px solid transparent"))
                }))
            }, i.getSize = function() {
                if (this.pr) return this.pr;
                if (this.pr = this.Se.getSize(), 0 == this.pr.width || 0 == this.pr.height) {
                    var t = this.ampdoc.getVisibilityState();
                    t != gr && t != yr || Math.random() < .01 && Qt().error(Ta, "viewport has zero dimensions")
                }
                return this.pr
            }, i.getHeight = function() {
                return this.getSize().height
            }, i.getWidth = function() {
                return this.getSize().width
            }, i.getScrollWidth = function() {
                return this.Se.getScrollWidth()
            }, i.getScrollHeight = function() {
                return this.Se.getScrollHeight()
            }, i.getContentHeight = function() {
                return this.Se.getContentHeight()
            }, i.contentHeightChanged = function() {
                this.Se.contentHeightChanged()
            }, i.getRect = function() {
                if (null == this.za) {
                    var t = this.getScrollTop(),
                        i = this.getScrollLeft(),
                        n = this.getSize();
                    this.za = zi(i, t, n.width, n.height)
                }
                return this.za
            }, i.getLayoutRect = function(t) {
                var i = this.getScrollLeft(),
                    n = this.getScrollTop(),
                    r = Sn(t, this.ampdoc.win);
                if (r) {
                    var e = this.Se.getLayoutRect(t, 0, 0),
                        s = this.Se.getLayoutRect(r, i, n);
                    return zi(Math.round(e.left + s.left), Math.round(e.top + s.top), Math.round(e.width), Math.round(e.height))
                }
                return this.Se.getLayoutRect(t, i, n)
            }, i.getClientRectAsync = function(t) {
                var i = this.As.measurePromise((function() {
                        return t.getBoundingClientRect()
                    })),
                    n = this.Se.getRootClientRectAsync(),
                    r = Sn(t, this.ampdoc.win);
                return r && (n = this.As.measurePromise((function() {
                    return r.getBoundingClientRect()
                }))), Promise.all([i, n]).then((function(t) {
                    var i, n = t[0],
                        r = t[1];
                    return r ? Gi(n, r.left, r.top) : (i = n, zi(Number(i.left), Number(i.top), Number(i.width), Number(i.height)))
                }))
            }, i.supportsPositionFixed = function() {
                return this.Se.supportsPositionFixed()
            }, i.isDeclaredFixed = function(t) {
                return !!this.Ka && this.Ka.isDeclaredFixed(t)
            }, i.scrollIntoView = function(t) {
                var i = this;
                return this.nc(t).then((function(n) {
                    return i.rc(t, n)
                }))
            }, i.rc = function(t, i) {
                var n = this,
                    r = this.Se.getLayoutRect(t).top,
                    e = Ra(this.ampdoc.win, i);
                c((function() {
                    return Math.max(0, r - n.Ra - e)
                })).then((function(t) {
                    return n.ec(i, t)
                }))
            }, i.animateScrollIntoView = function(t) {
                var i = this,
                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top",
                    r = arguments.length > 2 ? arguments[2] : void 0,
                    e = arguments.length > 3 ? arguments[3] : void 0;
                return Zt(!e || void 0 !== r), this.nc(t).then((function(s) {
                    return i.animateScrollWithinParent(t, s, n, r, e)
                }))
            }, i.animateScrollWithinParent = function(t, i, n, r, e) {
                var s = this;
                Zt(!e || void 0 !== r);
                var u = this.Se.getLayoutRect(t),
                    o = (this.sc(i) ? this.getSize() : this.getLayoutRect(i)).height,
                    h = this.ampdoc.win,
                    a = Ra(h, i),
                    c = function(t, i) {
                        return Sa(t, i, "scrollPaddingBottom")
                    }(h, i),
                    f = -a;
                return "bottom" === n ? f = -o + c + u.height : "center" === n && (f = -(o - a - c) / 2 + u.height / 2), this.oc(i).then((function(t) {
                    var n = u.top - s.Ra + f,
                        o = Math.max(0, n);
                    if (o != t) return s.uc(i, t, o, r, e)
                }))
            }, i.uc = function(t, i, n, r) {
                var e = this,
                    s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "ease-in",
                    u = void 0 !== r ? r : ka(i, n),
                    o = ma(i, n);
                return Ea.animate(t, (function(i) {
                    e.ec(t, o(i))
                }), u, s).thenAlways((function() {
                    e.ec(t, n)
                }))
            }, i.nc = function(t) {
                var i = this;
                return this.As.measurePromise((function() {
                    return yi(t, ".i-amphtml-scrollable") || i.Se.getScrollingElement()
                }))
            }, i.ec = function(t, i) {
                this.sc(t) ? this.Se.setScrollTop(i) : this.As.mutate((function() {
                    t.scrollTop = i
                }))
            }, i.oc = function(t) {
                var i = this;
                return this.sc(t) ? c((function() {
                    return i.getScrollTop()
                })) : this.As.measurePromise((function() {
                    return t.scrollTop
                }))
            }, i.sc = function(t) {
                return t == this.Se.getScrollingElement()
            }, i.getScrollingElement = function() {
                return this.Fa ? this.Fa : this.Fa = this.Se.getScrollingElement()
            }, i.onChanged = function(t) {
                return this.qa.add(t)
            }, i.onScroll = function(t) {
                return this.Ia.add(t)
            }, i.onResize = function(t) {
                return this.Ma.add(t)
            }, i.enterLightboxMode = function(t, i) {
                return this.ne.sendMessage("requestFullOverlay", {}, !0), this.enterOverlayMode(), this.Ka && this.Ka.enterLightbox(t, i), t && this.maybeEnterFieLightboxMode(t), this.Se.updateLightboxMode(!0)
            }, i.leaveLightboxMode = function(t) {
                return this.ne.sendMessage("cancelFullOverlay", {}, !0), this.Ka && this.Ka.leaveLightbox(), this.leaveOverlayMode(), t && this.maybeLeaveFieLightboxMode(t), this.Se.updateLightboxMode(!1)
            }, i.isLightboxExperimentOn = function() {
                return Ge(this.ampdoc.win, "amp-lightbox-a4a-proto")
            }, i.maybeEnterFieLightboxMode = function(t) {
                var i = this.hc(t);
                i && (Zt(this.isLightboxExperimentOn()), i.enterFullOverlayMode())
            }, i.maybeLeaveFieLightboxMode = function(t) {
                var i = this.hc(t);
                i && Zt(i).leaveFullOverlayMode()
            }, i.hc = function(t) {
                var i = Sn(t, this.ampdoc.win);
                return i && i.__AMP_EMBED__
            }, i.enterOverlayMode = function() {
                this.disableTouchZoom(), this.disableScroll()
            }, i.leaveOverlayMode = function() {
                this.resetScroll(), this.restoreOriginalTouchZoom()
            }, i.disableScroll = function() {
                var t, i = this,
                    n = this.ampdoc.win,
                    r = n.document.documentElement;
                this.As.measure((function() {
                    var e = Nr(n, r).marginRight,
                        s = function(t) {
                            var i = t.document.documentElement;
                            return t.innerWidth - i.clientWidth
                        }(i.ampdoc.win);
                    t = parseInt(e, 10) + s
                })), this.As.mutate((function() {
                    Rr(r, "margin-right", t, "px"), i.Se.disableScroll()
                }))
            }, i.resetScroll = function() {
                var t = this,
                    i = this.ampdoc.win.document.documentElement;
                this.As.mutate((function() {
                    Rr(i, "margin-right", ""), t.Se.resetScroll()
                }))
            }, i.resetTouchZoom = function() {
                var t = this,
                    i = this.ampdoc.win.innerHeight,
                    n = this.ja.documentElement.clientHeight;
                i && n && i === n || this.disableTouchZoom() && this.Ir.delay((function() {
                    t.restoreOriginalTouchZoom()
                }), 50)
            }, i.disableTouchZoom = function() {
                var t = this.ac();
                if (!t) return !1;
                var i = function(t, i) {
                    var n = function(t) {
                            var i = Object.create(null);
                            if (!t) return i;
                            for (var n = t.split(/,|;/), r = 0; r < n.length; r++) {
                                var e = n[r].split("="),
                                    s = e[0].trim(),
                                    u = e[1];
                                u = (u || "").trim(), s && (i[s] = u)
                            }
                            return i
                        }(t),
                        r = !1;
                    for (var e in i) n[e] !== i[e] && (r = !0, void 0 !== i[e] ? n[e] = i[e] : delete n[e]);
                    return r ? function(t) {
                        var i = "";
                        for (var n in t) i.length > 0 && (i += ","), t[n] ? i += n + "=" + t[n] : i += n;
                        return i
                    }(n) : t
                }(t.content, {
                    "maximum-scale": "1",
                    "user-scalable": "no"
                });
                return this.cc(i)
            }, i.restoreOriginalTouchZoom = function() {
                return void 0 !== this.$a && this.cc(this.$a)
            }, i.updateFixedLayer = function() {
                return this.Ka ? this.Ka.update() : h()
            }, i.addToFixedLayer = function(t, i) {
                return this.Ka ? this.Ka.addElement(t, i) : h()
            }, i.removeFromFixedLayer = function(t) {
                this.Ka && this.Ka.removeElement(t)
            }, i.createFixedLayer = function(t) {
                var i = this;
                this.Ka = new t(this.ampdoc, this.As, this.Se.getBorderTop(), this.Ra, this.Se.requiresFixedLayerTransfer()), this.ampdoc.whenReady().then((function() {
                    return i.Ka.setup()
                }))
            }, i.cc = function(t) {
                var i = this.ac();
                return !(!i || i.content == t || (Qt().fine(Ta, "changed viewport meta to:", t), i.content = t, 0))
            }, i.ac = function() {
                return Ni(this.ampdoc.win) ? null : (void 0 === this.Wa && (this.Wa = this.ja.querySelector("meta[name=viewport]"), this.Wa && (this.$a = this.Wa.content)), this.Wa)
            }, i.Ja = function(t) {
                var i = t.scrollTop;
                this.setScrollTop(i)
            }, i.Ya = function(t) {
                var i = this,
                    n = t.paddingTop,
                    r = t.duration || 0,
                    e = t.curve,
                    s = t.transient;
                if (null != n && n != this.Ra && (this.Ga = this.Ra, this.Ra = n, this.Ka)) {
                    var u = this.Ka.animateFixedElements(this.Ra, this.Ga, r, e, s);
                    n < this.Ga ? this.Se.hideViewerHeader(s, this.Ga) : u.then((function() {
                        i.Se.showViewerHeader(s, n)
                    }))
                }
            }, i.Xa = function(t) {
                t ? this.disableScroll() : this.resetScroll()
            }, i.fc = function(t, i) {
                var n = this.getSize(),
                    r = this.getScrollTop(),
                    e = this.getScrollLeft();
                Qt().fine(Ta, "changed event:", "relayoutAll=", t, "top=", r, "left=", e, "bottom=", r + n.height, "velocity=", i), this.qa.fire({
                    relayoutAll: t,
                    top: r,
                    left: e,
                    width: n.width,
                    height: n.height,
                    velocity: i
                })
            }, i.Qa = function() {
                var t = this;
                this.za = null, this.Ba++, this.Ha = this.Se.getScrollLeft();
                var i = this.Se.getScrollTop();
                if (!(i < 0)) {
                    if (this.Ua = i, !this.Va) {
                        this.Va = !0;
                        var n = Date.now();
                        this.Ir.delay((function() {
                            t.As.measure((function() {
                                t.Wo(n, i)
                            }))
                        }), 36)
                    }
                    this.Ia.fire()
                }
            }, i.Wo = function(t, i) {
                var n = this;
                this.Ua = this.Se.getScrollTop();
                var r = this.Ua,
                    e = Date.now(),
                    s = 0;
                e != t && (s = (r - i) / (e - t)), Qt().fine(Ta, "scroll: scrollTop=" + r + "; velocity=" + s), Math.abs(s) < .03 ? (this.fc(!1, s), this.Va = !1) : this.Ir.delay((function() {
                    return n.As.measure(n.Wo.bind(n, e, r))
                }), 20)
            }, i.tc = function() {
                var t = this;
                this.La || (this.La = !0, this.As.measure((function() {
                    t.La = !1, t.ne.sendMessage("scroll", {
                        "scrollTop": t.getScrollTop()
                    }, !0)
                })))
            }, i.Za = function() {
                var t = this;
                this.za = null;
                var i = this.pr;
                this.pr = null;
                var n = this.getSize();
                this.updateFixedLayer().then((function() {
                    var r = !i || i.width != n.width;
                    t.fc(r, 0), (r || i.height != n.height) && t.Ma.fire({
                        relayoutAll: r,
                        width: n.width,
                        height: n.height
                    })
                }))
            }, t
        }();

        function ka(t, i) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 500;
            return Math.floor(pa(.65 * Math.abs(t - i), 0, n))
        }

        function Ca(t) {
            var i, n = vr(t),
                r = t.win;
            return i = t.isSingleDoc() && function(t, i) {
                return sr(t).isIos() && Ni(t) && i.isEmbedded() && !i.hasCapability("iframeScroll") ? Na.NATURAL_IOS_EMBED : Na.NATURAL
            }(r, n) == Na.NATURAL_IOS_EMBED ? new Ia(r) : new Ma(t), new _a(t, i, n)
        }
        var Na = {
                NATURAL: "natural",
                NATURAL_IOS_EMBED: "natural-ios-embed"
            },
            Da = function() {
                function t(t) {
                    this.win = t, this.lc = Yn(this.win), this.vc = this.dc(), this.$i = [], this.mc = [], this.cs = [], this.bc = [], this.kr = !1, this.gc = null, this.yc = null, this.wc = this.Ac.bind(this), this.xc = new Nu(this.win, this.wc, 16), this.Ec = new Nu(this.win, this.wc, 40), this.Oc = this.Pc.bind(this), this.lc.isSingleDoc() ? this.lc.getSingleDoc().onVisibilityChanged(this.Oc) : jr(this.win.document, this.Oc)
                }
                var i = t.prototype;
                return i.dispose = function() {
                    Ur(this.win.document, this.Oc)
                }, i.Pc = function() {
                    this.kr && this.Tc()
                }, i.run = function(t, i) {
                    this.$i.push(t), this.cs.push(i || void 0), this.Zi()
                }, i.runPromise = function(t, i) {
                    if (this.run(t, i), this.gc) return this.gc;
                    var n = new a;
                    return this.yc = n.resolve, this.gc = n.promise
                }, i.createTask = function(t) {
                    var i = this;
                    return function(n) {
                        i.run(t, n)
                    }
                }, i.mutate = function(t) {
                    this.run({
                        measure: void 0,
                        mutate: t
                    })
                }, i.mutatePromise = function(t) {
                    return this.runPromise({
                        measure: void 0,
                        mutate: t
                    })
                }, i.measure = function(t) {
                    this.run({
                        measure: t,
                        mutate: void 0
                    })
                }, i.measurePromise = function(t) {
                    var i = this;
                    return new Promise((function(n) {
                        i.measure((function() {
                            n(t())
                        }))
                    }))
                }, i.canAnimate = function(t) {
                    return this.Ic(Zt(t))
                }, i.Ic = function(t) {
                    if (Dr(this.win.document) != yr) return !1;
                    if (this.lc.isSingleDoc()) return this.lc.getSingleDoc().isVisible();
                    if (t) {
                        var i = this.lc.getAmpDocIfAvailable(t);
                        return !i || i.isVisible()
                    }
                    return !0
                }, i.runAnim = function(t, i, n) {
                    return this.Ic(t) ? (this.run(i, n), !0) : (Qt().warn("VSYNC", "Did not schedule a vsync request, because document was invisible"), !1)
                }, i.createAnimTask = function(t, i) {
                    var n = this;
                    return function(r) {
                        return n.runAnim(t, i, r)
                    }
                }, i.runAnimMutateSeries = function(t, i, n) {
                    var r = this;
                    return this.Ic(t) ? new Promise((function(e, s) {
                        var u = Date.now(),
                            o = 0,
                            h = r.createAnimTask(t, {
                                mutate: function(t) {
                                    var r = Date.now() - u;
                                    i(r, r - o, t) ? n && r > n ? s(new Error("timeout")) : (o = r, h(t)) : e()
                                }
                            });
                        h({})
                    })) : Promise.reject(js())
                }, i.Zi = function() {
                    this.kr || (this.kr = !0, this.Tc())
                }, i.Tc = function() {
                    this.Ic() ? (this.vc(this.wc), this.Ec.schedule()) : this.xc.schedule()
                }, i.Ac = function() {
                    this.Ec.cancel(), this.kr = !1;
                    var t = this.yc,
                        i = this.cs,
                        n = this.$i;
                    this.yc = null, this.gc = null, this.$i = this.mc, this.cs = this.bc;
                    for (var r = 0; r < n.length; r++) n[r].measure && (ja(n[r].measure, i[r]) || (n[r].mutate = void 0));
                    for (var e = 0; e < n.length; e++) n[e].mutate && ja(n[e].mutate, i[e]);
                    this.mc = n, this.bc = i, this.mc.length = 0, this.bc.length = 0, t && t()
                }, i.dc = function() {
                    var t = this,
                        i = this.win.requestAnimationFrame || this.win.webkitRequestAnimationFrame;
                    if (i) return i.bind(this.win);
                    var n = 0;
                    return function(i) {
                        var r = Date.now(),
                            e = Math.max(0, 16 - (r - n));
                        n = r + e, t.win.setTimeout(i, e)
                    }
                }, t
            }();

        function ja(t, i) {
            Zt(t);
            try {
                void 0 !== t(i) && Qt().error("VSYNC", "callback returned a value but vsync cannot propogate it: %s", t.toString())
            } catch (t) {
                return d(t), !1
            }
            return !0
        }

        function Ua(t) {
            if (!t.defaultPrevented) {
                var i = t.target;
                if (i && "FORM" == i.tagName) {
                    (i.classList.contains("i-amphtml-form") ? !i.hasAttribute("amp-novalidate") : !i.hasAttribute("novalidate")) && i.checkValidity && !i.checkValidity() && t.preventDefault();
                    for (var n = i.elements, r = 0; r < n.length; r++) ti(!n[r].name || n[r].name != fs, "Illegal input name, %s found: %s", fs, n[r]);
                    var e = i.getAttribute("action"),
                        s = i.getAttribute("action-xhr"),
                        u = (i.getAttribute("method") || "GET").toUpperCase();
                    s && (ws(s, i, "action-xhr"), ti(!xs(s), "form action-xhr should not be on AMP CDN: %s", i), Rs(s)), e && (ws(e, i, "action"), ti(!xs(e), "form action should not be on AMP CDN: %s", i), Rs(e)), "GET" == u ? ti(s || e, "form action-xhr or action attribute is required for method=GET: %s", i) : "POST" == u && (e && Jt().error("form", "action attribute is invalid for method=POST: %s", i), s || (t.preventDefault(), ti(!1, "Only XHR based (via action-xhr attribute) submissions are support for POST requests. %s", i)));
                    var o = i.getAttribute("target");
                    o ? ti("_blank" == o || "_top" == o, "form target=%s is invalid can only be _blank or _top: %s", o, i) : i.setAttribute("target", "_top"), s && (t.preventDefault(), t.stopImmediatePropagation(), Bn(i).execute(i, "submit", null, i, i, t, 3))
                }
            }
        }
        var La = "Input",
            za = function() {
                function t(t) {
                    this.win = t, this.Mc = this.Sc.bind(this), this.kc = this._c.bind(this), this.Rc = null, this.Nc = null, this.Cc = null, this.Dc = "ontouchstart" in t || void 0 !== t.navigator.maxTouchPoints && t.navigator.maxTouchPoints > 0 || void 0 !== t.DocumentTouch, Qt().fine(La, "touch detected:", this.Dc), this.jc = !1, this.win.document.addEventListener("keydown", this.Mc), this.win.document.addEventListener("mousedown", this.kc), this.zc = !0, this.Uc = 0, this.Lc = new Er, this.Hc = new Er, this.Gc = new Er, this.Dc && (this.zc = !this.Dc, this.Rc = this.Vc.bind(this), Je(t.document, "mousemove", this.Rc))
                }
                var i = t.prototype;
                return i.setupInputModeClasses = function(t) {
                    var i = this;
                    this.onTouchDetected((function(n) {
                        i.Fc(t, "amp-mode-touch", n)
                    }), !0), this.onMouseDetected((function(n) {
                        i.Fc(t, "amp-mode-mouse", n)
                    }), !0), this.onKeyboardStateChanged((function(n) {
                        i.Fc(t, "amp-mode-keyboard-active", n)
                    }), !0)
                }, i.isTouchDetected = function() {
                    return this.Dc
                }, i.onTouchDetected = function(t, i) {
                    return i && t(this.isTouchDetected()), this.Lc.add(t)
                }, i.isMouseDetected = function() {
                    return this.zc
                }, i.onMouseDetected = function(t, i) {
                    return i && t(this.isMouseDetected()), this.Hc.add(t)
                }, i.isKeyboardActive = function() {
                    return this.jc
                }, i.onKeyboardStateChanged = function(t, i) {
                    return i && t(this.isKeyboardActive()), this.Gc.add(t)
                }, i.Fc = function(t, i, n) {
                    var r = this;
                    t.waitForBodyOpen().then((function(t) {
                        dr(r.win).mutate((function() {
                            t.classList.toggle(i, n)
                        }))
                    }))
                }, i.Sc = function(t) {
                    if (!this.jc && !t.defaultPrevented) {
                        var i = t.target;
                        i && ("INPUT" == i.tagName || "TEXTAREA" == i.tagName || "SELECT" == i.tagName || "OPTION" == i.tagName || i.hasAttribute("contenteditable")) || (this.jc = !0, this.Gc.fire(!0), Qt().fine(La, "keyboard activated"))
                    }
                }, i._c = function() {
                    this.jc && (this.jc = !1, this.Gc.fire(!1), Qt().fine(La, "keyboard deactivated"))
                }, i.Vc = function(t) {
                    var i = this;
                    if (!t.sourceCapabilities || !t.sourceCapabilities.firesTouchEvents) {
                        var n;
                        this.Cc || (this.Cc = this.Bc.bind(this), this.Nc = this.qc.bind(this));
                        var r = function(t, i, n, r) {
                            var e, s = new Promise((function(i) {
                                e = Je(t, "click", i, void 0)
                            }));
                            return s.then(e, e), r && r(e), s
                        }(this.win.document, 0, 0, (function(t) {
                            n = t
                        }));
                        return ar(this.win).timeoutPromise(300, r).then(this.Nc, (function() {
                            n && n(), i.Cc()
                        }))
                    }
                    this.qc()
                }, i.Bc = function() {
                    this.zc = !0, this.Hc.fire(!0), Qt().fine(La, "mouse detected")
                }, i.qc = function() {
                    this.Uc++, this.Uc <= 3 ? Je(this.win.document, "mousemove", this.Rc) : Qt().fine(La, "mouse detection failed")
                }, t
            }(),
            Ha = ["<link rel=preload referrerpolicy=origin>"],
            Ga = 18e4,
            Va = null,
            Fa = function() {
                function t(t) {
                    this.Wc = t.document, this.$c = t.document.head, this.Kc = {}, this.Yc = {}, this.Ss = sr(t), this.Kc[vs(t.location.href).origin] = !0, this.Jc = function(t) {
                        if (!Va) {
                            var i = t.document.createElement("link"),
                                n = i.relList;
                            if (i.as = "invalid-value", !n || !n.supports) return {};
                            Va = {
                                preconnect: n.supports("preconnect"),
                                preload: n.supports("preload"),
                                onlyValidAs: "invalid-value" != i.as
                            }
                        }
                        return Va
                    }(t), this.Ir = ar(t)
                }
                var i = t.prototype;
                return i.url = function(t, i, n) {
                    var r = this;
                    t.whenFirstVisible().then((function() {
                        r.Bt(t, i, n)
                    }))
                }, i.Bt = function(t, i, n) {
                    if (this.Xc(i)) {
                        var r = vs(i).origin,
                            e = Date.now(),
                            s = this.Kc[r];
                        if (s && e < s) n && (this.Kc[r] = e + Ga);
                        else {
                            var u, o = n ? Ga : 1e4;
                            this.Kc[r] = e + o, this.Jc.preconnect || ((u = this.Wc.createElement("link")).setAttribute("rel", "dns-prefetch"), u.setAttribute("href", r), this.$c.appendChild(u));
                            var h = this.Wc.createElement("link");
                            h.setAttribute("rel", "preconnect"), h.setAttribute("href", r), h.setAttribute("referrerpolicy", "origin"), this.$c.appendChild(h), this.Ir.delay((function() {
                                u && u.parentNode && u.parentNode.removeChild(u), h.parentNode && h.parentNode.removeChild(h)
                            }), 1e4), this.Qc(t, r)
                        }
                    }
                }, i.preload = function(t, i, n) {
                    var r = this;
                    this.Xc(i) && (this.Yc[i] || (this.Yc[i] = !0, this.url(t, i, !0), this.Jc.preload && ("document" == n && this.Ss.isSafari() || t.whenFirstVisible().then((function() {
                        r.Zc(i)
                    })))))
                }, i.Zc = function(t) {
                    var i = ke(this.Wc)(Ha);
                    i.setAttribute("href", t), this.Jc.onlyValidAs ? i.as = "fetch" : i.as = "", this.$c.appendChild(i)
                }, i.Xc = function(t) {
                    return !(!t.startsWith("https:") && !t.startsWith("http:"))
                }, i.Qc = function(t, i) {
                    if (!this.Jc.preconnect && (this.Ss.isSafari() || this.Ss.isIos())) {
                        var n = Date.now();
                        this.Kc[i] = n + Ga;
                        var r = i + "/robots.txt?_AMP_safari_preconnect_polyfill_cachebust=" + (n - n % Ga),
                            e = new XMLHttpRequest;
                        e.open("HEAD", r, !0), e.withCredentials = !0, e.send()
                    }
                }, t
            }();

        function qa(t) {
            var i;
            ! function(t) {
                An(t, "crypto", Qo)
            }(t), An(t, "batched-xhr", mo), kh(t), Xh(t), Xh(i = t), An(i, "vsync", Da),
                function(t) {
                    An(t, "xhr", vo)
                }(t),
                function(t) {
                    An(t, "input", za)
                }(t),
                function(t) {
                    An(t, "preconnect", Fa)
                }(t)
        }

        function Ba(t) {
            Zt(!t.getParent()),
                function(t, i) {
                    (function(t) {
                        xn(t, "url", Qh, !0)
                    })(t),
                    function(t) {
                        xn(t, "templates", Kh)
                    }(t), xn(t, "documentInfo", th),
                        function(t) {
                            xn(t, "cid", Vo)
                        }(t),
                        function(t) {
                            xn(t, "viewer", va, !0)
                        }(t),
                        function(t) {
                            xn(t, "viewport", Ca, !0)
                        }(t),
                        function(t) {
                            xn(t, "hidden-observer", nh)
                        }(t),
                        function(t) {
                            xn(t, "history", ah)
                        }(t),
                        function(t) {
                            xn(t, "resources", jh)
                        }(t),
                        function(t) {
                            xn(t, "owners", Rh)
                        }(t),
                        function(t) {
                            xn(t, "mutator", mh)
                        }(t),
                        function(t) {
                            xn(t, "url-replace", (function(t) {
                                return new ca(t, new aa(t))
                            }))
                        }(t),
                        function(t) {
                            xn(t, "action", $u, !0)
                        }(t),
                        function(t) {
                            xn(t, "standard-actions", Gh, !0)
                        }(t),
                        function(t) {
                            xn(t, "storage", (function() {
                                var i = vr(t),
                                    n = parseInt(i.getParam("storage"), 10) ? new $h(i) : new Bh(t.win);
                                return new Fh(t, i, n).Du()
                            }), !0)
                        }(t),
                        function(t) {
                            xn(t, Ah, Ih, !0)
                        }(t),
                        function(t) {
                            t.whenExtensionsKnown().then((function() {
                                t.declaresExtension("amp-form") && t.getRootNode().addEventListener("submit", Ua, !0)
                            }))
                        }(t), xn(t, "loadingIndicator", lh)
                }(t)
        }

        function $a(t) {
            return t.waitForBodyOpen().then((function() {
                var i, n, r = t.getBody(),
                    e = (i = r, n = function() {
                        return !!r.firstElementChild
                    }, new Promise((function(t) {
                        Oi(i, n, t)
                    })));
                return ar(t.win).timeoutPromise(2e3, e).then((function() {
                    return "AMP-STORY" === r.firstElementChild.tagName
                }), (function() {
                    return !1
                }))
            }))
        }
        var Wa = ["AMP-AD", "AMP-ANALYTICS", "AMP-PIXEL", "AMP-AD-EXIT"];

        function Ya(t) {
            if (null == t) return 0;
            var i = function(t) {
                    for (var i = t; null != (t = t.parentNode);) t.nodeName.startsWith("AMP-") && (i = t);
                    return i
                }(t),
                n = i.nodeName;
            return "IMG" === n || "AMP-IMG" === n ? 1 : "VIDEO" === n || "AMP-VIDEO" === n ? 2 : "AMP-CAROUSEL" === n ? 8 : "AMP-BASE-CAROUSEL" === n ? 16 : "AMP-AD" === n ? 4 : !n.startsWith("AMP-") && i.textContent ? 32 : 0
        }
        var Ka = function() {
            function t(t) {
                var i = this;
                this.win = t, this.Yd = go(lt(t, 16)), this.Qd = [], this.$d = t.performance.timeOrigin || t.performance.timing.navigationStart, this.xi = null, this.ne = null, this.ti = null, this.Kd = null, this.Xd = !1, this.Zd = !1, this._m = A(), this.Pm = void 0, this.Cm = new Pr, this.Nm = 0, this.zm = [], this.Dm = 0;
                var n = this.win.PerformanceObserver && this.win.PerformanceObserver.supportedEntryTypes || [];
                if (n.includes("paint") || this.Cm.rejectSignal("fcp", Qt().createExpectedError("First Contentful Paint not supported")), this.Lm = n.includes("layout-shift"), !this.Lm) {
                    var r = Qt().createExpectedError("Cumulative Layout Shift not supported");
                    this.Cm.rejectSignal(Zi, r), this.Cm.rejectSignal(nn, r)
                }
                this.Um = n.includes("first-input"), this.Um || this.Cm.rejectSignal("fid", Qt().createExpectedError("First Input Delay not supported")), this.Hm = n.includes("largest-contentful-paint"), this.Hm || this.Cm.rejectSignal("lcp", Qt().createExpectedError("Largest Contentful Paint not supported")), this.Gm = n.includes("navigation"), this.Vm = this.Vm.bind(this), this.addEnabledExperiment("rtv-" + Dt(this.win).rtvVersion), vn(t.document).then((function() {
                    i.tick("dr"), i.flush()
                })), dn(t.document).then((function() {
                    return i.Fm()
                })), this.qm(), this.Bm = !1, this.Wm = mt(t, (function() {
                    i.Ym()
                }), 6e3)
            }
            var i = t.prototype;
            return i.coreServicesAvailable = function() {
                var t = this,
                    i = this.win.document.documentElement;
                this.xi = Wn(i), this.ne = vr(i), this.ti = or(i), this.Kd = Zn(this.xi), this.Zd = this.ne.isEmbedded() && "1" === this.ne.getParam("csi"), this.xi.onVisibilityChanged(this.flush.bind(this)), this.Jm();
                var n = this.ne.whenMessagingReady();
                return this.xi.whenFirstVisible().then((function() {
                    t.tick("ofv"), t.flush()
                })), (this.Hm || this.Lm) && this.xi.onVisibilityChanged(this.Vm), n ? n.then((function() {
                    t.tickDelta("msr", t.win.performance.now()), t.tick("timeOrigin", void 0, t.$d);
                    var i = t.xi.getMetaByName("amp-usqp");
                    return i && i.split(",").forEach((function(i) {
                        t.addEnabledExperiment("ssr-" + i)
                    })), t.Qm()
                })).then((function() {
                    t.Xd = !0, t.$m(), t.flush()
                })) : h()
            }, i.Qm = function() {
                var t = this;
                return $a(Yn(this.win).getSingleDoc()).then((function(i) {
                    i && t.addEnabledExperiment("story")
                }))
            }, i.Fm = function() {
                this.tick("ol"), this.flush()
            }, i.qm = function() {
                var t = this;
                if ("inabox" !== Dt(this.win).runtime) {
                    var i = !1,
                        n = !1,
                        r = !1,
                        e = !1,
                        s = function(s) {
                            if ("first-paint" != s.name || i)
                                if ("first-contentful-paint" != s.name || n)
                                    if ("first-input" !== s.entryType || r) "layout-shift" === s.entryType ? s.hadRecentInput || (t.Km(s), t.Dm += s.value) : "largest-contentful-paint" === s.entryType ? t.Xm(s) : "navigation" != s.entryType || e || (["domComplete", "domContentLoadedEventEnd", "domContentLoadedEventStart", "domInteractive", "loadEventEnd", "loadEventStart", "requestStart", "responseStart"].forEach((function(i) {
                                        return t.tick(i, s[i])
                                    })), e = !0);
                                    else {
                                        var u = s.processingStart - s.startTime;
                                        t.tickDelta("fid", u), r = !0
                                    }
                            else {
                                var o = s.startTime + s.duration;
                                t.tickDelta("fcp", o), t.tickSinceVisible("fcpv", o), n = !0
                            } else t.tickDelta("fp", s.startTime + s.duration), i = !0
                        },
                        u = [];
                    this.win.PerformancePaintTiming && (this.win.performance.getEntriesByType("paint").forEach(s), u.push("paint")), this.Um && this.Zm(s, {
                        type: "first-input",
                        buffered: !0
                    }), this.Lm && this.Zm(s, {
                        type: "layout-shift",
                        buffered: !0
                    }), this.Hm && this.Zm(s, {
                        type: "largest-contentful-paint",
                        buffered: !0
                    }), this.Gm && this.Zm(s, {
                        type: "navigation",
                        buffered: !0
                    }), u.length > 0 && this.Zm(s, {
                        entryTypes: u
                    })
                }
            }, i.Zm = function(t, i) {
                var n = this;
                try {
                    new this.win.PerformanceObserver((function(i) {
                        i.getEntries().forEach(t), n.flush()
                    })).observe(i)
                } catch (t) {
                    Qt().warn("Performance", t)
                }
            }, i.sv = function() {
                var t = this.xi.getVisibilityState();
                return t === xr || t === wr
            }, i.Vm = function() {
                this.sv() && (this.ov(), this.Ym())
            }, i.av = function() {
                if (!this.Bm) {
                    this.Bm = !0;
                    var t = this.win,
                        i = parseInt(Nr(t, t.document.body).getPropertyValue("--google-font-exp"), 10);
                    i >= 0 && this.addEnabledExperiment("google-font-exp=".concat(i))
                }
            }, i.ov = function() {
                this.Lm && (this.av(), this.hv())
            }, i.Km = function(t) {
                if (this.xi && !this.sv()) {
                    var i = this.zm;
                    if (i.length > 0) {
                        var n = i[0],
                            r = i[i.length - 1];
                        if (t.startTime - r.startTime < 1e3 && t.startTime - n.startTime < 5e3) return void i.push(t);
                        this.Ym()
                    }
                    i.push(t), this.Wm()
                }
            }, i.Ym = function() {
                for (var t, i = this.zm, n = this.Cm.get(Zi), r = 0, e = 0, s = o(i, !0); !(t = s()).done;) {
                    var u = t.value;
                    if (u.sources)
                        for (var h, a = o(u.sources, !0); !(h = a()).done;) r |= Ya(h.value.node);
                    e += u.value
                }
                i.length = 0, this.av(), (null == n || e > n) && (this.Cm.reset(Zi), this.Cm.reset(tn), this.tickDelta(Zi, e), this.tickDelta(tn, r), this.flush())
            }, i.hv = function() {
                0 === this.Nm ? (this.tickDelta(nn, this.Dm), this.flush(), this.Nm = 1) : 1 === this.Nm && (this.tickDelta("cls-2", this.Dm), this.flush(), this.Nm = 2)
            }, i.Xm = function(t) {
                var i = t.element,
                    n = t.startTime,
                    r = Ya(i);
                this.tickDelta("lcpt", r), this.tickDelta("lcp", n), this.tickSinceVisible("lcpv", n), this.flush()
            }, i.Jm = function() {
                var t = this,
                    i = !this.xi.hasBeenVisible(),
                    n = -1;
                this.xi.whenFirstVisible().then((function() {
                    n = t.win.performance.now(), t.mark("visible")
                })), this.cv().then((function() {
                    if (i) {
                        var r = n > -1 ? t.win.performance.now() - n : 0;
                        t.xi.whenFirstVisible().then((function() {
                            t.tickDelta(rn, r)
                        })), t.fv(r), t.mark(rn)
                    } else t.tick(rn), t.fv(t.win.performance.now() - n);
                    t.flush()
                }))
            }, i.cv = function() {
                var t = this;
                return this.ti.whenFirstPass().then((function() {
                    var i, n = t.win.document.documentElement,
                        r = mr(n).getSize();
                    return zi(0, 0, r.width, r.height), i = n, t.win,
                        function(t, i) {
                            var n = Wn(t);
                            return n.signals().whenSignal(Gs).then((function() {
                                var t = or(n).get().filter((function(t) {
                                    return !(!t.prerenderAllowed() || Wa.includes(t.element.tagName))
                                })).map((function(t) {
                                    return t.element
                                }));
                                return 0 === t.length ? Promise.resolve([]) : new Promise((function(i) {
                                    for (var r = n.win, e = new r.IntersectionObserver((function(t) {
                                            e.disconnect();
                                            for (var n = [], r = 0; r < t.length; r++) {
                                                var s = t[r],
                                                    u = s.isIntersecting,
                                                    o = s.target;
                                                u && n.push(o)
                                            }
                                            i(n)
                                        }), {
                                            root: Ni(r) ? r.document : null,
                                            threshold: .01
                                        }), s = 0; s < Math.min(t.length, 100); s++) e.observe(t[s])
                                })).then((function(t) {
                                    return Promise.all(t.map((function(t) {
                                        return t.whenLoaded()
                                    })))
                                }))
                            }))
                        }(i)
                }))
            }, i.tick = function(t, i, n) {
                Zt(null == i || null == n);
                var r, e = {
                    "label": t
                };
                null != i ? e.delta = r = Math.max(i, 0) : null != n ? e.value = n : (this.mark(t), r = this.win.performance.now(), e.value = this.$d + r), this.win.dispatchEvent(We(this.win, "perf", {
                    label: t,
                    delta: r
                })), this.Xd && this.Zd ? this.ne.sendMessage("tick", e) : this.lv(e), this.Cm.signal(t, r)
            }, i.mark = function(t) {
                var i, n;
                null === (i = (n = this.win.performance).mark) || void 0 === i || i.call(n, t)
            }, i.tickDelta = function(t, i) {
                this.tick(t, i)
            }, i.tickSinceVisible = function(t, i) {
                var n, r, e = null == i ? this.win.performance.now() : i,
                    s = this.$d + e,
                    u = null !== (n = this.ne) && void 0 !== n && n.isEmbedded() ? null === (r = this.xi) || void 0 === r ? void 0 : r.getFirstVisibleTime() : this.$d,
                    o = u ? Math.max(s - u, 0) : 0;
                this.tickDelta(t, o)
            }, i.flush = function() {
                this.Xd && this.Zd && (null == this.Pm && (this.Pm = Object.keys(this._m).join(",")), this.ne.sendMessage("sendCsi", {
                    "ampexp": this.Pm,
                    "canonicalUrl": this.Kd.canonicalUrl,
                    "eventid": this.Yd
                }, !0))
            }, i.addEnabledExperiment = function(t) {
                this._m[t] = !0, this.Pm = void 0
            }, i.lv = function(t) {
                this.Qd.length >= 50 && this.Qd.shift(), this.Qd.push(t)
            }, i.$m = function() {
                var t = this;
                this.ne && (this.Zd ? (this.Qd.forEach((function(i) {
                    t.ne.sendMessage("tick", i)
                })), this.Qd.length = 0) : this.Qd.length = 0)
            }, i.fv = function(t) {
                this.ne && this.ne.sendMessage("prerenderComplete", {
                    "value": t
                }, !0)
            }, i.isPerformanceTrackingOn = function() {
                return this.Zd
            }, i.getMetric = function(t) {
                return this.Cm.whenSignal(t)
            }, t
        }();

        function Ja(t) {
            var i = t.document;
            if (i.fonts && i.fonts.values)
                for (var n, r = i.fonts.values(); n = r.next();) {
                    var e = n.value;
                    if (!e) return;
                    "loading" == e.status && "display" in e && "auto" == e.display && (e.display = "swap")
                }
        }
        var Xa = function() {
                function t(t, i) {
                    this.ql = t, this.ws = i, this.Lv = !1, this.zv = 0, this.Hv = this.zp.bind(this), this.Fv = this.qp.bind(this), this.Bv = this._p.bind(this), this.$v = this.Yv.bind(this), this.ql.addEventListener("touchstart", this.Hv, !0)
                }
                var i = t.prototype;
                return i.cleanup = function() {
                    this.Jv(), this.ql.removeEventListener("touchstart", this.Hv, !0)
                }, i.zp = function(t) {
                    this.Lv || !t.touches || 1 != t.touches.length || this.ws.getScrollTop() > 0 || this.Xv(t.touches[0].clientY)
                }, i.Xv = function(t) {
                    this.Lv = !0, this.zv = t, this.ql.addEventListener("touchmove", this.Fv, !0), this.ql.addEventListener("touchend", this.Bv, !0), this.ql.addEventListener("touchcancel", this.$v, !0)
                }, i.Jv = function() {
                    this.Lv = !1, this.zv = 0, this.ql.removeEventListener("touchmove", this.Fv, !0), this.ql.removeEventListener("touchend", this.Bv, !0), this.ql.removeEventListener("touchcancel", this.$v, !0)
                }, i.qp = function(t) {
                    if (this.Lv) {
                        var i = t.touches[0].clientY - this.zv;
                        i > 0 && t.preventDefault(), 0 != i && this.Jv()
                    }
                }, i._p = function(t) {
                    this.Jv()
                }, i.Yv = function(t) {
                    this.Jv()
                }, t
            }(),
            Qa = ["amp-ad", "amp-embed", "amp-video"],
            Za = "extensions",
            tc = "0.1",
            ic = "latest",
            nc = "__AMP_EXT_LDR",
            rc = function() {
                function t(t) {
                    this.win = t, this.lc = Yn(t), this.tf = {}, this.if = null, this.nf = null, this.rf = null
                }
                var i = t.prototype;
                return i.registerExtension = function(t, i, n, r, e) {
                    var s, u = n ? this.tf[uc(t, ic)] : null,
                        o = this.ef(t, i, null === (s = null == u ? void 0 : u.auto) || void 0 === s || s);
                    if (o.latest = n, !o.loaded) {
                        n && (this.tf[uc(t, ic)] = o);
                        try {
                            var h, a;
                            this.if = t, this.nf = i, this.rf = n, r(e, e._), o.loaded = !0, null === (h = o.resolve) || void 0 === h || h.call(o, o.extension), null == u || null === (a = u.resolve) || void 0 === a || a.call(u, o.extension)
                        } catch (t) {
                            var c, f;
                            throw o.error = t, null === (c = o.reject) || void 0 === c || c.call(o, t), null == u || null === (f = u.reject) || void 0 === f || f.call(u, t), t
                        } finally {
                            this.if = null, this.nf = null, this.rf = null
                        }
                    }
                }, i.waitForExtension = function(t, i) {
                    var n = this.sf(this.ef(t, i));
                    return ar(this.win).timeoutPromise(16e3, n).catch((function(i) {
                        if (!i.message.includes("timeout")) throw i;
                        return Jt().error(Za, "Waited over 16s to load extension ".concat(t, ".")), n
                    }))
                }, i.preloadExtension = function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : tc;
                    "amp-embed" == t && (t = "amp-ad");
                    var n = this.ef(t, i);
                    return this.uf(t, i, n), this.sf(n)
                }, i.installExtensionForDoc = function(t, i) {
                    var n = this,
                        r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : tc,
                        e = t.getRootNode(),
                        s = e[nc];
                    return s || (s = e[nc] = A()), s[i] ? s[i] : (t.declareExtension(i, r), xu(t.win, i), s[i] = this.preloadExtension(i, r).then((function() {
                        return n.installExtensionInDoc(t, i, r)
                    })))
                }, i.reloadExtension = function(t, i, n) {
                    var r = yn(this.win, t, i, n, !1),
                        e = this.tf[uc(t, i)];
                    return e && (Zt(!e.loaded && !e.error), e.scriptPresent = !1), r.forEach((function(i) {
                        return i.setAttribute("i-amphtml-loaded-new-version", t)
                    })), this.preloadExtension(t, i)
                }, i.importUnwrapped = function(t, i) {
                    var n, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : tc,
                        e = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
                        s = yn(t, i, r, e),
                        u = s.length > 0 ? s[0] : null;
                    return u ? n = u.__AMP_SCR_LOADED : (n = (u = bn(this.win, i, r)).__AMP_SCR_LOADED = new Promise((function(t, i) {
                        u.onload = t, u.onerror = i
                    })), t.document.head.appendChild(u)), n
                }, i.loadElementClass = function(t) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : tc;
                    return this.preloadExtension(t, i).then((function(i) {
                        return Zt(i.elements[t]).implementationClass
                    }))
                }, i.addElement = function(t, i, n) {
                    var r = this;
                    this.hf(t).extension.elements[t] = {
                        implementationClass: i,
                        css: n
                    }, this.addDocFactory((function(e) {
                        r.af(e, t, i, n)
                    }))
                }, i.addTemplate = function(t, i) {
                    this.addDocFactory((function(n) {
                        ! function(t, i, n) {
                            Pn(t, "templates").Xu(i, n)
                        }(n, t, i)
                    }))
                }, i.af = function(t, i, n, r) {
                    var e = this;
                    r ? is(t, r, (function() {
                        e.cf(t.win, i, n)
                    }), !1, i) : this.cf(t.win, i, n)
                }, i.cf = function(t, i, n) {
                    (function(t, i, n) {
                        var r = function(t, i) {
                            if (i.requiresShadowDom() && !t.Element.prototype.attachShadow) return tr(t).importUnwrapped(t, "amp-shadow-dom-polyfill")
                        }(t, n);
                        r ? r.then((function() {
                            return yu(t, i, n)
                        })) : yu(t, i, n)
                    })(t, i, n), An(t, i, sc)
                }, i.addService = function(t, i) {
                    this.hf(t).extension.services.push({
                        serviceName: t,
                        serviceClass: i
                    }), this.addDocFactory((function(n) {
                        xn(n, t, i, !0)
                    }))
                }, i.addDocFactory = function(t, i) {
                    var n = this.hf(i);
                    if (n.docFactories.push(t), this.if && this.lc.isSingleDoc()) {
                        var r = this.lc.getAmpDoc(this.win.document),
                            e = this.if,
                            s = this.nf,
                            u = this.rf || !1;
                        (r.declaresExtension(e, s) || u && r.declaresExtension(e, ic) || n.auto) && t(r)
                    }
                }, i.preinstallEmbed = function(t, i) {
                    var n = this.win,
                        r = t.win;
                    ! function(t, i) {
                        Eu(t, i, "amp-img"), Eu(t, i, "amp-pixel")
                    }(n, r), ec(r), i.forEach((function(i) {
                        var n = i.extensionId,
                            e = i.extensionVersion;
                        t.declareExtension(n, e), Qa.includes(n) || xu(r, n)
                    }))
                }, i.installExtensionsInDoc = function(t, i) {
                    var n = this;
                    return Promise.all(i.map((function(i) {
                        var r = i.extensionId,
                            e = i.extensionVersion;
                        return n.installExtensionInDoc(t, r, e)
                    })))
                }, i.installExtensionInDoc = function(t, i) {
                    var n = this,
                        r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : tc;
                    return t.declareExtension(i, r), this.sf(this.ef(i, r)).then((function() {
                        n.ef(i, r).docFactories.forEach((function(n) {
                            try {
                                n(t)
                            } catch (t) {
                                d("Doc factory failed: ", t, i)
                            }
                        }))
                    }))
                }, i.ef = function(t, i, n) {
                    var r = uc(t, i),
                        e = this.tf[r];
                    return e || (e = {
                        version: i,
                        latest: i == ic,
                        extension: {
                            elements: {},
                            services: []
                        },
                        auto: n || !1,
                        docFactories: [],
                        promise: void 0,
                        resolve: void 0,
                        reject: void 0,
                        loaded: void 0,
                        error: void 0,
                        scriptPresent: void 0
                    }, this.tf[r] = e), e
                }, i.hf = function(t) {
                    return this.if || Qt().error(Za, "unknown extension for ", t), this.ef(this.if || "_UNKNOWN_", this.nf || "")
                }, i.sf = function(t) {
                    if (!t.promise)
                        if (t.loaded) t.promise = Promise.resolve(t.extension);
                        else if (t.error) t.promise = Promise.reject(t.error);
                    else {
                        var i = new a;
                        t.promise = i.promise, t.resolve = i.resolve, t.reject = i.reject
                    }
                    return t.promise
                }, i.uf = function(t, i, n) {
                    if (this.ff(t, i, n)) {
                        var r = bn(this.win, t, i);
                        this.win.document.head.appendChild(r), n.scriptPresent = !0
                    }
                }, i.ff = function(t, i, n) {
                    if (n.loaded || n.error) return !1;
                    if (void 0 === n.scriptPresent) {
                        var r = yn(this.win, t, i, n.latest);
                        n.scriptPresent = r.length > 0
                    }
                    return !n.scriptPresent
                }, t
            }();

        function ec(t) {
            Qa.forEach((function(i) {
                xu(t, i)
            }))
        }

        function sc() {
            return {}
        }

        function uc(t, i) {
            return "".concat(t, ":").concat(i)
        }
        var oc, hc = "-shadowcsshost",
            ac = ")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)",
            cc = (new RegExp("(" + hc + ac, "gim"), new RegExp("(-shadowcsscontext" + ac, "gim"), new RegExp(hc, "gim"), new RegExp("-shadowcsscontext", "gim"), "html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch-action:pan-y pinch-zoom;touch-action:pan-y pinch-zoom}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not(.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;overflow-y:auto!important;position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0!important;display:block!important}html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling:touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px solid transparent!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox-element{visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram{padding:54px 0px 0px!important;background-color:#fff}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[subscriptions-dialog],body:not(.i-amphtml-subs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[update]{display:none}amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list[load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load-more] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px!important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[standalone]{background-color:#000!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtml-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([distance]):not([active]){transform:translateY(1000vh)!important}amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0.33)}.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden}amp-script[nodom],amp-script[sandboxed]{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden}\n/*# sourceURL=/css/ampdoc.css*/"),
            fc = "[hidden]{display:none!important}.i-amphtml-element{display:inline-block}.i-amphtml-blurry-placeholder{transition:opacity 0.3s cubic-bezier(0.0,0.0,0.2,1)!important;pointer-events:none}[layout=nodisplay]:not(.i-amphtml-element){display:none!important}.i-amphtml-layout-fixed,[layout=fixed][width][height]:not(.i-amphtml-layout-fixed){display:inline-block;position:relative}.i-amphtml-layout-responsive,[layout=responsive][width][height]:not(.i-amphtml-layout-responsive),[width][height][heights]:not([layout]):not(.i-amphtml-layout-responsive),[width][height][sizes]:not(img):not([layout]):not(.i-amphtml-layout-responsive){display:block;position:relative}.i-amphtml-layout-intrinsic,[layout=intrinsic][width][height]:not(.i-amphtml-layout-intrinsic){display:inline-block;position:relative;max-width:100%}.i-amphtml-layout-intrinsic .i-amphtml-sizer{max-width:100%}.i-amphtml-intrinsic-sizer{max-width:100%;display:block!important}.i-amphtml-layout-container,.i-amphtml-layout-fixed-height,[layout=container],[layout=fixed-height][height]:not(.i-amphtml-layout-fixed-height){display:block;position:relative}.i-amphtml-layout-fill,.i-amphtml-layout-fill.i-amphtml-notbuilt,[layout=fill]:not(.i-amphtml-layout-fill),body noscript>*{display:block;overflow:hidden!important;position:absolute;top:0;left:0;bottom:0;right:0}body noscript>*{position:absolute!important;width:100%;height:100%;z-index:2}body noscript{display:inline!important}.i-amphtml-layout-flex-item,[layout=flex-item]:not(.i-amphtml-layout-flex-item){display:block;position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.i-amphtml-layout-fluid{position:relative}.i-amphtml-layout-size-defined{overflow:hidden!important}.i-amphtml-layout-awaiting-size{position:absolute!important;top:auto!important;bottom:auto!important}i-amphtml-sizer{display:block!important}@supports (aspect-ratio:1/1){i-amphtml-sizer.i-amphtml-disable-ar{display:none!important}}.i-amphtml-blurry-placeholder,.i-amphtml-fill-content{display:block;height:0;max-height:100%;max-width:100%;min-height:100%;min-width:100%;width:0;margin:auto}.i-amphtml-layout-size-defined .i-amphtml-fill-content{position:absolute;top:0;left:0;bottom:0;right:0}.i-amphtml-replaced-content,.i-amphtml-screen-reader{padding:0!important;border:none!important}.i-amphtml-screen-reader{position:fixed!important;top:0px!important;left:0px!important;width:4px!important;height:4px!important;opacity:0!important;overflow:hidden!important;margin:0!important;display:block!important;visibility:visible!important}.i-amphtml-screen-reader~.i-amphtml-screen-reader{left:8px!important}.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader{left:12px!important}.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader{left:16px!important}.i-amphtml-unresolved{position:relative;overflow:hidden!important}.i-amphtml-select-disabled{-webkit-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.i-amphtml-notbuilt,[layout]:not(.i-amphtml-element),[width][height][heights]:not([layout]):not(.i-amphtml-element),[width][height][sizes]:not(img):not([layout]):not(.i-amphtml-element){position:relative;overflow:hidden!important;color:transparent!important}.i-amphtml-notbuilt:not(.i-amphtml-layout-container)>*,[layout]:not([layout=container]):not(.i-amphtml-element)>*,[width][height][heights]:not([layout]):not(.i-amphtml-element)>*,[width][height][sizes]:not([layout]):not(.i-amphtml-element)>*{display:none}amp-img:not(.i-amphtml-element)[i-amphtml-ssr]>img.i-amphtml-fill-content{display:block}.i-amphtml-notbuilt:not(.i-amphtml-layout-container),[layout]:not([layout=container]):not(.i-amphtml-element),[width][height][heights]:not([layout]):not(.i-amphtml-element),[width][height][sizes]:not(img):not([layout]):not(.i-amphtml-element){color:transparent!important;line-height:0!important}.i-amphtml-ghost{visibility:hidden!important}.i-amphtml-element>[placeholder],[layout]:not(.i-amphtml-element)>[placeholder],[width][height][heights]:not([layout]):not(.i-amphtml-element)>[placeholder],[width][height][sizes]:not([layout]):not(.i-amphtml-element)>[placeholder]{display:block;line-height:normal}.i-amphtml-element>[placeholder].amp-hidden,.i-amphtml-element>[placeholder].hidden{visibility:hidden}.i-amphtml-element:not(.amp-notsupported)>[fallback],.i-amphtml-layout-container>[placeholder].amp-hidden,.i-amphtml-layout-container>[placeholder].hidden{display:none}.i-amphtml-layout-size-defined>[fallback],.i-amphtml-layout-size-defined>[placeholder]{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;z-index:1}amp-img[i-amphtml-ssr]:not(.i-amphtml-element)>[placeholder]{z-index:auto}.i-amphtml-notbuilt>[placeholder]{display:block!important}.i-amphtml-hidden-by-media-query{display:none!important}.i-amphtml-element-error{background:red!important;color:#fff!important;position:relative!important}.i-amphtml-element-error:before{content:attr(error-message)}i-amp-scroll-container,i-amphtml-scroll-container{position:absolute;top:0;left:0;right:0;bottom:0;display:block}i-amp-scroll-container.amp-active,i-amphtml-scroll-container.amp-active{overflow:auto;-webkit-overflow-scrolling:touch}.i-amphtml-loading-container{display:block!important;pointer-events:none;z-index:1}.i-amphtml-notbuilt>.i-amphtml-loading-container{display:block!important}.i-amphtml-loading-container.amp-hidden{visibility:hidden}.i-amphtml-element>[overflow]{cursor:pointer;position:relative;z-index:2;visibility:hidden;display:initial;line-height:normal}.i-amphtml-layout-size-defined>[overflow]{position:absolute}.i-amphtml-element>[overflow].amp-visible{visibility:visible}template{display:none!important}.amp-border-box,.amp-border-box *,.amp-border-box :after,.amp-border-box :before{box-sizing:border-box}amp-pixel{display:none!important}amp-analytics,amp-auto-ads,amp-story-auto-ads{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden}amp-story{visibility:hidden!important}html.i-amphtml-fie>amp-analytics{position:initial!important}[visible-when-invalid]:not(.visible),form [submit-error],form [submit-success],form [submitting]{display:none}amp-accordion{display:block!important}@media (min-width:1px){:where(amp-accordion>section)>:first-child{margin:0;background-color:#efefef;padding-right:20px;border:1px solid #dfdfdf}:where(amp-accordion>section)>:last-child{margin:0}}amp-accordion>section{float:none!important}amp-accordion>section>*{float:none!important;display:block!important;overflow:hidden!important;position:relative!important}amp-accordion,amp-accordion>section{margin:0}amp-accordion:not(.i-amphtml-built)>section>:last-child{display:none!important}amp-accordion:not(.i-amphtml-built)>section[expanded]>:last-child{display:block!important}\n/*# sourceURL=/css/ampshared.css*/";
        Yt = $t, Qt(), Jt(), oc = function(t, i, n) {
            Ds(i, n), i && t && tt(i.message) && !(i.message.indexOf(Q) >= 0) && function(t, i) {
                if (Yn(i).isSingleDoc()) {
                    var n = {
                        "errorName": t.name,
                        "errorMessage": t.message
                    };
                    ! function(t, i) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                            r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];
                        Kn(t).then((function(e) {
                            e && e.triggerEventForTarget(t, i, n, r)
                        }))
                    }(function(t) {
                        var i = Yn(t).getSingleDoc().getRootNode();
                        return i.documentElement || i.body || i
                    }(i), "user-error", n, !1)
                }
            }(i, t)
        }.bind(null, self), self.__AMP_REPORT_ERROR = oc;
        var lc, vc = "runtime";

        function dc(t, i) {
            if (t.__AMP_TAG) return h();
            t.__AMP_TAG = !0;
            var n = t.AMP || [];
            An(t, "extensions", rc);
            var r = tr(t);
            qa(t), ec(t), t.AMP = {
                win: t,
                "_": t.AMP ? t.AMP._ : void 0
            }, t.AMP.config = {
                urls: {
                    thirdParty: Pt,
                    thirdPartyFrameHost: Ot,
                    thirdPartyFrameRegex: It,
                    cdn: Mt,
                    cdnProxyRegex: xt,
                    localhostRegex: Tt,
                    errorReporting: St,
                    betaErrorReporting: Rt,
                    localDev: _t,
                    trustedViewerHosts: kt,
                    geoApi: Ct
                }
            }, t.AMP.addGlobalConsentListener = function() {}, t.AMP.addGranularConsentListener = function() {}, t.AMP.BaseElement = eu, t.AMP.registerElement = r.addElement.bind(r), t.AMP.registerTemplate = r.addTemplate.bind(r), t.AMP.registerServiceForDoc = r.addService.bind(r), t.AMP.isExperimentOn = Ge.bind(null, t), t.AMP.toggleExperiment = Ve.bind(null, t), t.AMP.setLogLevel = Ht.bind(null), t.AMP.setTickFunction = function(t, i) {};
            var e = i(t, r);

            function s(i) {
                ! function(t, i, n) {
                    "function" == typeof i || "high" == i.p ? h().then(n) : (n.displayName = i.n, Xs(t.document, n))
                }(t, i, (function() {
                    e.then((function() {
                        "function" == typeof i ? i(t.AMP, t.AMP._f) : r.registerExtension(i.n, i.ev, i.l, i.f, t.AMP)
                    }))
                }))
            }
            for (var u = 0; u < n.length; u++) {
                var o = n[u];
                if (mc(t, o)) n.splice(u--, 1);
                else if ("function" == typeof o || "high" == o.p) {
                    try {
                        s(o)
                    } catch (t) {
                        Qt().error(vc, "Extension failed: ", t, o.n)
                    }
                    n.splice(u--, 1)
                }
            }! function(t, i) {
                t.document.body && ! function(t) {
                    return ts(t).length > 0
                }(t) ? ar(t).delay(i, 1) : i()
            }(t, (function() {
                t.AMP.push = function(i) {
                    mc(t, i) || s(i)
                };
                for (var i = 0; i < n.length; i++) {
                    var r = n[i];
                    if (!mc(t, r)) try {
                        s(r)
                    } catch (t) {
                        Qt().error(vc, "Extension failed: ", t, r.n)
                    }
                }
                n.length = 0
            })), t.AMP.push || (t.AMP.push = n.push.bind(n)), sr(t).isIos() && Rr(t.document.documentElement, "cursor", "pointer");
            var a = tr(t);
            return Ki(t) && a.preloadExtension("amp-resize-observer-polyfill"), Fi(t) && a.preloadExtension("amp-intersection-observer-polyfill"), e
        }

        function mc(t, i) {
            return "function" != typeof i && (!!i.m || "2305252018001" != i.v && (tr(t).reloadExtension(i.n, i.ev, i.l), !0))
        }

        function pc(t, i) {
            Xs(self.document, (function() {
                qa(self), Ba(t), i.coreServicesAvailable(),
                    function(t) {
                        var i = new a,
                            n = i.promise,
                            r = i.resolve;
                        ph = ar(t).timeoutPromise(8e3, n, "TrackImpressionPromise timeout").catch((function(t) {
                            Qt().warn("IMPRESSION", t)
                        }));
                        var e = vr(t.document.documentElement),
                            s = e.isTrustedViewer(),
                            u = e.getReferrerUrl().then((function(t) {
                                return function(t) {
                                    var i = vs(t);
                                    return "https:" == i.protocol && bh.some((function(t) {
                                        return t.test(i.hostname)
                                    }))
                                }(t)
                            }));
                        Promise.all([s, u]).then((function(i) {
                            var n = i[0],
                                e = i[1];
                            if (n || e || Ge(t, "alp")) {
                                var s = function(t) {
                                        var i = vr(t.document.documentElement);
                                        return i.getParam("replaceUrl") ? i.hasCapability("replaceUrl") ? i.sendMessageAwaitResponse("getReplaceUrl", void 0).then((function(t) {
                                            t && "object" == p(t) ? i.replaceUrl(t.replaceUrl || null) : Qt().warn("IMPRESSION", "get invalid replaceUrl response")
                                        }), (function(t) {
                                            Qt().warn("IMPRESSION", "Error request replaceUrl from viewer", t)
                                        })) : (i.replaceUrl(i.getParam("replaceUrl") || null), h()) : h()
                                    }(t),
                                    u = function(t) {
                                        var i = Wn(t.document.documentElement),
                                            n = vr(i).getParam("click");
                                        return n ? 0 != n.indexOf("https://") ? (Jt().warn("IMPRESSION", "click fragment param should start with https://. Found ", n), h()) : (zr.getLocation(t).hash && (zr.getLocation(t).hash = ""), i.whenFirstVisible().then((function() {
                                            return function(t, i) {
                                                return pr(t).fetchJson(i, {
                                                    credentials: "include"
                                                }).then((function(t) {
                                                    return 204 == t.status ? null : t.json()
                                                }))
                                            }(t, n)
                                        })).then((function(i) {
                                            ! function(t, i) {
                                                if (i) {
                                                    var n = i.location,
                                                        r = i.tracking_url || n;
                                                    if (r && !xs(r) && ((new Image).src = r), n) {
                                                        if (!t.history.replaceState) return;
                                                        var e = vr(t.document.documentElement),
                                                            s = gs(zr.getLocation(t).href, yt(vs(n).search));
                                                        t.history.replaceState(null, "", s), e.maybeUpdateFragmentForCct()
                                                    }
                                                }
                                            }(t, i)
                                        })).catch((function(t) {
                                            Jt().warn("IMPRESSION", "Error on request clickUrl: ", t)
                                        }))) : h()
                                    }(t);
                                Promise.all([s, u]).then((function() {
                                    r()
                                }), (function() {}))
                            } else r()
                        }))
                    }(self)
            })), Xs(self.document, (function() {
                dc(self, (function(t) {
                    return function(t) {
                        var i = t.document.documentElement,
                            n = Yn(t).getSingleDoc();
                        t.AMP.ampdoc = n;
                        var r = vr(i);
                        t.AMP.viewer = r, Dt().development && (t.AMP.toggleRuntime = r.toggleRuntime.bind(r), t.AMP.resources = or(i));
                        var e = mr(i);
                        t.AMP.viewport = {}, t.AMP.viewport.getScrollLeft = e.getScrollLeft.bind(e), t.AMP.viewport.getScrollWidth = e.getScrollWidth.bind(e), t.AMP.viewport.getWidth = e.getWidth.bind(e)
                    }(t), (i = t).AMP.installAmpdocServices = Ba.bind(null), i.AMP.combinedCss = cc + fc, Mi(t.document).then((function() {
                        Au(t.AMP.ampdoc)
                    }));
                    var i
                }))
            })), Xs(self.document, (function() {
                ! function(t) {
                    ! function(t) {
                        Pu(t, Iu, Tu)
                    }(t),
                    function(t) {
                        Pu(t, ku, Cu)
                    }(t),
                    function(t) {
                        Pu(t, "amp-layout", Su)
                    }(t)
                }(self)
            })), Xs(self.document, (function() {
                Au(t), dn(self.document).then((function() {
                    return pu()
                }))
            })), Xs(self.document, (function() {
                (function(t) {
                    var i = t.document.documentElement;
                    "0" == vr(i).getParam("p2r") && sr(t).isChrome() && new Xa(t.document, mr(i))
                })(self),
                function(t) {
                    var i = t.win;
                    Uu(i.document) && t.isSingleDoc() && !i.document.documentElement.hasAttribute("data-amp-auto-lightbox-disable") && Qs(t, (function() {
                        $a(t).then((function(n) {
                            n || tr(i).installExtensionForDoc(t, "amp-auto-lightbox")
                        }))
                    }), 10)
                }(t),
                function(t) {
                    var i = t.win;
                    Uu(i.document) && sr(t.win).isStandalone() && Qs(t, (function() {
                        tr(i).installExtensionForDoc(t, "amp-standalone").then((function() {
                            return Hn(t.getBody(), "standalone", "amp-standalone")
                        })).then((function(t) {
                            return t.initialize()
                        }))
                    }), 10)
                }(t),
                function(t) {
                    var i = t.location.href;
                    if (!i.startsWith("about:")) {
                        var n = !1,
                            r = wt(t);
                        Ut(t, r) && (n = "0" !== r.validate), n && function(t, i) {
                            var n = t.createElement("script");
                            if (self.trustedTypes && self.trustedTypes.createPolicy) {
                                var r = self.trustedTypes.createPolicy("validator-integration#loadScript", {
                                    createScriptURL: function(t) {
                                        return "https://cdn.ampproject.org/v0/validator_wasm.js" === t ? t : ""
                                    }
                                });
                                n.src = r.createScriptURL(i)
                            } else n.src = i;
                            Li(t, n);
                            var e = Xe(n).then((function() {
                                t.head.removeChild(n)
                            }), (function() {}));
                            return t.head.appendChild(n), e
                        }(t.document, "".concat(Mt, "/v0/validator_wasm.js")).then((function() {
                            amp.validator.validateUrlAndLog(i, t.document)
                        }))
                    }
                }(self),
                function(t) {
                    Zt(t.defaultView);
                    var i = t.defaultView;
                    Mi(t).then((function() {
                        return function(t) {
                            var i = ts(t).map((function(i) {
                                var n = function(t, i) {
                                    return Nn(t, i)
                                }(t, i).then((function(t) {
                                    return t && function(t) {
                                        return "function" == typeof t.whenReady
                                    }(t) ? t.whenReady().then((function() {
                                        return t
                                    })) : t
                                }));
                                return ar(t).timeoutPromise(3e3, n, "Render timeout waiting for service ".concat(i, " to be ready."))
                            }));
                            return Promise.all(i)
                        }(i)
                    })).catch((function(t) {
                        return d(t), []
                    })).then((function(n) {
                        rs = !0, t.body.getBoundingClientRect(), ss(t), Rn(t).signals().signal(Oe), n.length > 0 && or(t.documentElement).schedulePass(1, !0);
                        try {
                            var r = er(i);
                            r.tick("mbv"), r.flush()
                        } catch (t) {}
                    }))
                }(self.document),
                function(t) {
                    dn(t).then((function() {
                        var i = t.defaultView;
                        if (i) {
                            var n = ur(i),
                                r = Zn(t.documentElement),
                                e = Wn(t);
                            n.url(e, r.sourceUrl), n.url(e, r.canonicalUrl)
                        }
                    }))
                }(self.document)
            }), !0), Xs(self.document, (function() {
                i.tick("e_is"), or(t).ampInitComplete(), i.flush()
            }))
        }
        self.location && (self.location.originalHash = self.location.hash);
        try {
            ! function(t) {
                t.onerror = Ls, t.addEventListener("unhandledrejection", (function(t) {
                    !t.reason || t.reason.message !== _s && t.reason.message !== ks && "AbortError" !== t.reason.message ? Ds(t.reason || new Error("rejected promise " + t)) : t.preventDefault()
                }))
            }(self),
            function(t, i, n) {
                An(t, "ampdoc", (function() {
                    return new Br(t, !0, void 0)
                }))
            }(self), lc = Yn(self)
        } catch (t) {
            throw es(self.document), t
        }
        Xs(self.document, (function() {
            var t = lc.getAmpDoc(self.document);
            kh(self), An(self, "performance", Ka);
            var i = er(self);
            (function(t) {
                fn(t.document, (function() {
                    return function(t) {
                        var i = 1500,
                            n = t.performance;
                        n && n.timing && n.timing.navigationStart && (i = Date.now() - n.timing.navigationStart);
                        var r = Math.max(1, 2100 - i);
                        t.setTimeout((function() {
                            Ja(t);
                            var i = t.document.styleSheets;
                            if (i) {
                                for (var n = t.document.querySelectorAll('link[rel~="stylesheet"]:not([href^="https://translate.googleapis.com/translate_static/css/"]):not([href^="'.concat(vi(Mt), '"])')), e = [], s = 0; s < n.length; s++) {
                                    for (var u = n[s], o = !1, h = 0; h < i.length; h++)
                                        if (i[h].ownerNode == u) {
                                            o = !0;
                                            break
                                        }
                                    o || e.push(u)
                                }
                                for (var a = function(i) {
                                        var n = e[i],
                                            s = n.media || "all";
                                        n.media = "print", n.onload = function() {
                                            n.media = s, Ja(t)
                                        }, n.setAttribute("i-amphtml-timeout", r), n.parentNode.insertBefore(n, n.nextSibling)
                                    }, c = 0; c < e.length; c++) a(c)
                            }
                        }), r)
                    }(t)
                }))
            })(self), i.tick("is"), is(t, cc + fc, (function() {
                return pc(t, i)
            }), !0, "amp-runtime")
        })), self.console && (console.info || console.log).call(console, "Powered by AMP ⚡ HTML – Version ".concat("2305252018001"), self.location.href), self.document.documentElement.setAttribute("amp-version", "2305252018001")
    }()
} catch (t) {
    throw setTimeout((function() {
        var t = document.body.style;
        t.opacity = 1, t.visibility = "visible", t.animation = "none", t.WebkitAnimation = "none;"
    }), 1e3), t
}
//# sourceMappingURL=v0.js.map