/g , Gt = RegExp(`>|${Cl}(?:([^\\s"'>=/]+)(${Cl}*=${Cl}*(?:[^ \f\r"'\`<>=]|("|')|))|$)`, "g") , io = /'/g , oo = /"/g , uc = /^(?:script|style|textarea|title)$/i , gc = t => (e, ...n) => ({ _$litType$: t, strings: e, values: n }) , M = gc(1) , Be = gc(2) , St = Symbol.for("lit-noChange") , ne = Symbol.for("lit-nothing") , ro = new WeakMap , Et = yt.createTreeWalker(yt, 129); function hc(t, e) { if (!si(t) || !t.hasOwnProperty("raw")) throw Error("invalid template strings array"); return to !== void 0 ? to.createHTML(e) : e } const $d = (t, e) => { const n = t.length - 1 , l = []; let i, o = e === 2 ? "" : e === 3 ? "" : "")), l] } ; class sn { constructor({strings: e, _$litType$: n}, l) { let i; this.parts = []; let o = 0 , r = 0; const c = e.length - 1 , a = this.parts , [d,s] = $d(e, n); if (this.el = sn.createElement(d, l), Et.currentNode = this.el.content, n === 2 || n === 3) { const u = this.el.content.firstChild; u.replaceWith(...u.childNodes) } for (; (i = Et.nextNode()) !== null && a.length < c; ) { if (i.nodeType === 1) { if (i.hasAttributes()) for (const u of i.getAttributeNames()) if (u.endsWith(dc)) { const b = s[r++] , g = i.getAttribute(u).split(At) , V = /([.?@])?(.*)/.exec(b); a.push({ type: 1, index: o, name: V[2], strings: g, ctor: V[1] === "." ? es : V[1] === "?" ? ts : V[1] === "@" ? ns : gl }), i.removeAttribute(u) } else u.startsWith(At) && (a.push({ type: 6, index: o }), i.removeAttribute(u)); if (uc.test(i.tagName)) { const u = i.textContent.split(At) , b = u.length - 1; if (b > 0) { i.textContent = Pn ? Pn.emptyScript : ""; for (let g = 0; g < b; g++) i.append(u[g], an()), Et.nextNode(), a.push({ type: 2, index: ++o }); i.append(u[b], an()) } } } else if (i.nodeType === 8) if (i.data === sc) a.push({ type: 2, index: o }); else { let u = -1; for (; (u = i.data.indexOf(At, u + 1)) !== -1; ) a.push({ type: 7, index: o }), u += At.length - 1 } o++ } } static createElement(e, n) { const l = yt.createElement("template"); return l.innerHTML = e, l } } function Lt(t, e, n=t, l) { var r, c; if (e === St) return e; let i = l !== void 0 ? (r = n._$Co) == null ? void 0 : r[l] : n._$Cl; const o = dn(e) ? void 0 : e._$litDirective$; return (i == null ? void 0 : i.constructor) !== o && ((c = i == null ? void 0 : i._$AO) == null || c.call(i, !1), o === void 0 ? i = void 0 : (i = new o(t), i._$AT(t, n, l)), l !== void 0 ? (n._$Co ?? (n._$Co = []))[l] = i : n._$Cl = i), i !== void 0 && (e = Lt(t, i._$AS(t, e.values), i, l)), e } let qd = class { constructor(e, n) { this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = n } get parentNode() { return this._$AM.parentNode } get _$AU() { return this._$AM._$AU } u(e) { const {el: {content: n}, parts: l} = this._$AD , i = ((e == null ? void 0 : e.creationScope) ?? yt).importNode(n, !0); Et.currentNode = i; let o = Et.nextNode() , r = 0 , c = 0 , a = l[0]; for (; a !== void 0; ) { if (r === a.index) { let d; a.type === 2 ? d = new ui(o,o.nextSibling,this,e) : a.type === 1 ? d = new a.ctor(o,a.name,a.strings,this,e) : a.type === 6 && (d = new ls(o,this,e)), this._$AV.push(d), a = l[++c] } r !== (a == null ? void 0 : a.index) && (o = Et.nextNode(), r++) } return Et.currentNode = yt, i } p(e) { let n = 0; for (const l of this._$AV) l !== void 0 && (l.strings !== void 0 ? (l._$AI(e, l, n), n += l.strings.length - 2) : l._$AI(e[n])), n++ } } , ui = class bc { get _$AU() { var e; return ((e = this._$AM) == null ? void 0 : e._$AU) ?? this._$Cv } constructor(e, n, l, i) { this.type = 2, this._$AH = ne, this._$AN = void 0, this._$AA = e, this._$AB = n, this._$AM = l, this.options = i, this._$Cv = (i == null ? void 0 : i.isConnected) ?? !0 } get parentNode() { let e = this._$AA.parentNode; const n = this._$AM; return n !== void 0 && (e == null ? void 0 : e.nodeType) === 11 && (e = n.parentNode), e } get startNode() { return this._$AA } get endNode() { return this._$AB } _$AI(e, n=this) { e = Lt(this, e, n), dn(e) ? e === ne || e == null || e === "" ? (this._$AH !== ne && this._$AR(), this._$AH = ne) : e !== this._$AH && e !== St && this._(e) : e._$litType$ !== void 0 ? this.$(e) : e.nodeType !== void 0 ? this.T(e) : Od(e) ? this.k(e) : this._(e) } O(e) { return this._$AA.parentNode.insertBefore(e, this._$AB) } T(e) { this._$AH !== e && (this._$AR(), this._$AH = this.O(e)) } _(e) { this._$AH !== ne && dn(this._$AH) ? this._$AA.nextSibling.data = e : this.T(yt.createTextNode(e)), this._$AH = e } $(e) { var o; const {values: n, _$litType$: l} = e , i = typeof l == "number" ? this._$AC(e) : (l.el === void 0 && (l.el = sn.createElement(hc(l.h, l.h[0]), this.options)), l); if (((o = this._$AH) == null ? void 0 : o._$AD) === i) this._$AH.p(n); else { const r = new qd(i,this) , c = r.u(this.options); r.p(n), this.T(c), this._$AH = r } } _$AC(e) { let n = ro.get(e.strings); return n === void 0 && ro.set(e.strings, n = new sn(e)), n } k(e) { si(this._$AH) || (this._$AH = [], this._$AR()); const n = this._$AH; let l, i = 0; for (const o of e) i === n.length ? n.push(l = new bc(this.O(an()),this.O(an()),this,this.options)) : l = n[i], l._$AI(o), i++; i < n.length && (this._$AR(l && l._$AB.nextSibling, i), n.length = i) } _$AR(e=this._$AA.nextSibling, n) { var l; for ((l = this._$AP) == null ? void 0 : l.call(this, !1, !0, n); e && e !== this._$AB; ) { const i = e.nextSibling; e.remove(), e = i } } setConnected(e) { var n; this._$AM === void 0 && (this._$Cv = e, (n = this._$AP) == null || n.call(this, e)) } } , gl = class { get tagName() { return this.element.tagName } get _$AU() { return this._$AM._$AU } constructor(e, n, l, i, o) { this.type = 1, this._$AH = ne, this._$AN = void 0, this.element = e, this.name = n, this._$AM = i, this.options = o, l.length > 2 || l[0] !== "" || l[1] !== "" ? (this._$AH = Array(l.length - 1).fill(new String), this.strings = l) : this._$AH = ne } _$AI(e, n=this, l, i) { const o = this.strings; let r = !1; if (o === void 0) e = Lt(this, e, n, 0), r = !dn(e) || e !== this._$AH && e !== St, r && (this._$AH = e); else { const c = e; let a, d; for (e = o[0], a = 0; a < o.length - 1; a++) d = Lt(this, c[l + a], n, a), d === St && (d = this._$AH[a]), r || (r = !dn(d) || d !== this._$AH[a]), d === ne ? e = ne : e !== ne && (e += (d ?? "") + o[a + 1]), this._$AH[a] = d } r && !i && this.j(e) } j(e) { e === ne ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, e ?? "") } } ; class es extends gl { constructor() { super(...arguments), this.type = 3 } j(e) { this.element[this.name] = e === ne ? void 0 : e } } let ts = class extends gl { constructor() { super(...arguments), this.type = 4 } j(e) { this.element.toggleAttribute(this.name, !!e && e !== ne) } } , ns = class extends gl { constructor(e, n, l, i, o) { super(e, n, l, i, o), this.type = 5 } _$AI(e, n=this) { if ((e = Lt(this, e, n, 0) ?? ne) === St) return; const l = this._$AH , i = e === ne && l !== ne || e.capture !== l.capture || e.once !== l.once || e.passive !== l.passive , o = e !== ne && (l === ne || i); i && this.element.removeEventListener(this.name, this, l), o && this.element.addEventListener(this.name, this, e), this._$AH = e } handleEvent(e) { var n; typeof this._$AH == "function" ? this._$AH.call(((n = this.options) == null ? void 0 : n.host) ?? this.element, e) : this._$AH.handleEvent(e) } } ; class ls { constructor(e, n, l) { this.element = e, this.type = 6, this._$AN = void 0, this._$AM = n, this.options = l } get _$AU() { return this._$AM._$AU } _$AI(e) { Lt(this, e) } } const yl = nn.litHtmlPolyfillSupport; yl == null || yl(sn, ui), (nn.litHtmlVersions ?? (nn.litHtmlVersions = [])).push("3.3.0"); const Wt = (t, e, n) => { const l = e; let i = l._$litPart$; return i === void 0 && (l._$litPart$ = i = new ui(e.insertBefore(an(), null),null,void 0,{})), i._$AI(t), i } ; class gi extends HTMLElement { constructor() { super(), this._dialogElement = null, this._isOpen = !1, this._title = "Dialog", this._isClosable = !0, this._shadowRoot = this.attachShadow({ mode: "open" }), this._render() } static get observedAttributes() { return ["open", "title", "closable", "width"] } connectedCallback() { this.hasAttribute("open") ? this._isOpen = !0 : this._isOpen = !1, this._title = this.getAttribute("title") || this._title, this.hasAttribute("closable") ? this._isClosable = this.getAttribute("closable") !== "false" : this._isClosable = !0; const e = this.getAttribute("width"); e ? this.style.setProperty("--dynamic-dialog-width", e) : this.style.removeProperty("--dynamic-dialog-width"), this._render(), this._dialogElement = this._shadowRoot.querySelector("dialog"), this._dialogElement && (this._dialogElement.addEventListener("click", n => { this._isClosable && n.target === this._dialogElement && this.close() } ), this._dialogElement.addEventListener("close", () => { this._isOpen && (this._isOpen = !1, this.hasAttribute("open") && this.removeAttribute("open"), this._dispatchCloseEvent()) } ), this._isOpen && !this._dialogElement.open && (this._dialogElement.showModal(), this._dispatchOpenEvent())) } disconnectedCallback() {} attributeChangedCallback(e, n, l) { const i = this._isOpen; let o = !1; if (e === "open") { const r = l !== null; this._isOpen !== r && (this._isOpen = r), this._dialogElement && (this._isOpen ? this._dialogElement.open || (this._dialogElement.showModal(), i || this._dispatchOpenEvent()) : this._dialogElement.open && this._dialogElement.close()) } else if (e === "title") { const r = l || "Dialog"; this._title !== r && (this._title = r, o = !0) } else if (e === "closable") { const r = l !== "false"; this._isClosable !== r && (this._isClosable = r, o = !0) } else e === "width" && (l !== null ? this.style.setProperty("--dynamic-dialog-width", l) : this.style.removeProperty("--dynamic-dialog-width")); o && this._render() } show() { this._isOpen ? this._dialogElement && !this._dialogElement.open && (this._dialogElement.showModal(), this._dispatchOpenEvent()) : this.setAttribute("open", "") } close() { this._isOpen ? this.removeAttribute("open") : this._dialogElement && this._dialogElement.open && this._dialogElement.close() } _handleCloseButtonClick() { this.close() } _dispatchOpenEvent() { this.dispatchEvent(new CustomEvent("dialog-open",{ bubbles: !0, composed: !0 })) } _dispatchCloseEvent() { this.dispatchEvent(new CustomEvent("dialog-close",{ bubbles: !0, composed: !0 })) } _render() { const e = M` `; Wt(e, this._shadowRoot) } } class hi extends HTMLElement { constructor() { super(), this.anchor = null, this.popupContent = null, this.isOpen = !1, this.scrollListener = null, this._ref = null, this._customClass = "", this.mousePosition = null, this.gapSize = 10, this.attachShadow({ mode: "open" }), this.render() } static get observedAttributes() { return ["open", "ref", "class"] } connectedCallback() { this.scrollListener = () => { this.isOpen && this.updatePosition() } , window.addEventListener("scroll", this.scrollListener, !0), this._ref && this._ref(this) } disconnectedCallback() { this.scrollListener && window.removeEventListener("scroll", this.scrollListener, !0), this.destroy() } attributeChangedCallback(e, n, l) { e === "open" ? (this.isOpen = l !== null, this.render(), this.isOpen && setTimeout( () => this.updatePosition(), 0)) : e === "ref" || e === "class" && (this._customClass = l || "", this.render()) } set ref(e) { this._ref = e, this.isConnected && e(this) } set customClass(e) { this._customClass = e, this.setAttribute("class", e), this.render() } get customClass() { return this._customClass } setAnchor(e) { this.anchor = e, this.isOpen && this.updatePosition() } open(e) { if (this.isOpen = !0, this.setAttribute("open", ""), e) { this.mousePosition = { x: e.clientX, y: e.clientY }; const n = e.target; n && this.setAnchor(n) } else this.mousePosition = null; this.render(), setTimeout( () => this.updatePosition(), 0) } close() { this.isOpen = !1, this.mousePosition = null, this.removeAttribute("open"), this.render() } updatePosition() { if (!this.popupContent) return; const e = this.popupContent.getBoundingClientRect(); let n, l, i = "bottom"; if (this.anchor) n = this.anchor.getBoundingClientRect().bottom + this.gapSize; else if (this.mousePosition) n = this.mousePosition.y + this.gapSize; else { n = window.innerHeight / 2 - e.height / 2, l = window.innerWidth / 2 - e.width / 2, this.updatePopupStyles(n, l, i); return } if (this.mousePosition) l = this.mousePosition.x - e.width / 2; else if (this.anchor) { const o = this.anchor.getBoundingClientRect(); l = o.left + o.width / 2 - e.width / 2 } else l = window.innerWidth / 2 - e.width / 2; l + e.width > window.innerWidth && (l = window.innerWidth - e.width - 10), l < 10 && (l = 10), n + e.height > window.innerHeight && (i = "top", this.anchor ? n = this.anchor.getBoundingClientRect().top - e.height - this.gapSize : this.mousePosition && (n = this.mousePosition.y - e.height - this.gapSize), n < 0 && (n = window.innerHeight / 2 - e.height / 2, i = "bottom")), this.updatePopupStyles(n, l, i) } updatePopupStyles(e, n, l) { this.popupContent && (this.popupContent.style.position = "fixed", this.popupContent.style.top = `${e}px`, this.popupContent.style.left = `${n}px`, this.popupContent.setAttribute("data-position", l)) } render() { const e = M`
`; Wt(e, this.shadowRoot), this.popupContent = this.shadowRoot.querySelector(".popup-content") } destroy() { Wt(ne, this.shadowRoot) } } /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const bi = { ATTRIBUTE: 1, CHILD: 2 } , Vi = t => (...e) => ({ _$litDirective$: t, values: e }); let mi = class { constructor(e) {} get _$AU() { return this._$AM._$AU } _$AT(e, n, l) { this._$Ct = e, this._$AM = n, this._$Ci = l } _$AS(e, n) { return this.update(e, n) } update(e, n) { return this.render(...n) } } ; /** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const rt = Vi(class extends mi { constructor(t) { var e; if (super(t), t.type !== bi.ATTRIBUTE || t.name !== "class" || ((e = t.strings) == null ? void 0 : e.length) > 2) throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.") } render(t) { return " " + Object.keys(t).filter(e => t[e]).join(" ") + " " } update(t, [e]) { var l, i; if (this.st === void 0) { this.st = new Set, t.strings !== void 0 && (this.nt = new Set(t.strings.join(" ").split(/\s/).filter(o => o !== ""))); for (const o in e) e[o] && !((l = this.nt) != null && l.has(o)) && this.st.add(o); return this.render(e) } const n = t.element.classList; for (const o of this.st) o in e || (n.remove(o), this.st.delete(o)); for (const o in e) { const r = !!e[o]; r === this.st.has(o) || (i = this.nt) != null && i.has(o) || (r ? (n.add(o), this.st.add(o)) : (n.remove(o), this.st.delete(o))) } return St } } ); /** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const is = t => t.strings === void 0; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const ln = (t, e) => { var l; const n = t._$AN; if (n === void 0) return !1; for (const i of n) (l = i._$AO) == null || l.call(i, e, !1), ln(i, e); return !0 } , On = t => { let e, n; do { if ((e = t._$AM) === void 0) break; n = e._$AN, n.delete(t), t = e } while ((n == null ? void 0 : n.size) === 0) } , Vc = t => { for (let e; e = t._$AM; t = e) { let n = e._$AN; if (n === void 0) e._$AN = n = new Set; else if (n.has(t)) break; n.add(t), cs(e) } } ; function os(t) { this._$AN !== void 0 ? (On(this), this._$AM = t, Vc(this)) : this._$AM = t } function rs(t, e=!1, n=0) { const l = this._$AH , i = this._$AN; if (i !== void 0 && i.size !== 0) if (e) if (Array.isArray(l)) for (let o = n; o < l.length; o++) ln(l[o], !1), On(l[o]); else l != null && (ln(l, !1), On(l)); else ln(this, t) } const cs = t => { t.type == bi.CHILD && (t._$AP ?? (t._$AP = rs), t._$AQ ?? (t._$AQ = os)) } ; let as = class extends mi { constructor() { super(...arguments), this._$AN = void 0 } _$AT(e, n, l) { super._$AT(e, n, l), Vc(this), this.isConnected = e._$AU } _$AO(e, n=!0) { var l, i; e !== this.isConnected && (this.isConnected = e, e ? (l = this.reconnected) == null || l.call(this) : (i = this.disconnected) == null || i.call(this)), n && (ln(this, e), On(this)) } setValue(e) { if (is(this._$Ct)) this._$Ct._$AI(e, this); else { const n = [...this._$Ct._$AH]; n[this._$Ci] = e, this._$Ct._$AI(n, this, 0) } } disconnected() {} reconnected() {} } ; /** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const ds = () => new ss; class ss { } const Sl = new WeakMap , vt = Vi(class extends as { render(t) { return ne } update(t, [e]) { var l; const n = e !== this.G; return n && this.G !== void 0 && this.rt(void 0), (n || this.lt !== this.ct) && (this.G = e, this.ht = (l = t.options) == null ? void 0 : l.host, this.rt(this.ct = t.element)), ne } rt(t) { if (this.isConnected || (t = void 0), typeof this.G == "function") { const e = this.ht ?? globalThis; let n = Sl.get(e); n === void 0 && (n = new WeakMap, Sl.set(e, n)), n.get(this.G) !== void 0 && this.G.call(this.ht, void 0), n.set(this.G, t), t !== void 0 && this.G.call(this.ht, t) } else this.G.value = t } get lt() { var t, e; return typeof this.G == "function" ? (t = Sl.get(this.ht ?? globalThis)) == null ? void 0 : t.get(this.G) : (e = this.G) == null ? void 0 : e.value } disconnected() { this.lt === this.ct && this.rt(void 0) } reconnected() { this.rt(this.ct) } } ); class us extends HTMLElement { constructor() { super(), this.textareaRef = ds(), this._value = "", this._autoResize = !1, this._autoFocus = !1, this._placeholder = "", this._disabled = !1, this.adjustHeight = () => { const e = this.textareaRef.value; if (!e || !this._autoResize) return; const n = e.scrollTop , l = window.getComputedStyle(e) , i = parseInt(l.borderTopWidth, 10) || 0 , o = parseInt(l.borderBottomWidth, 10) || 0 , r = e.cloneNode(!0); r.style.position = "absolute", r.style.visibility = "hidden", r.style.height = "auto", r.style.width = l.width, r.style.minHeight = l.minHeight, r.style.maxHeight = l.maxHeight, r.style.padding = l.padding, r.style.font = l.font, r.style.lineHeight = l.lineHeight, r.style.letterSpacing = l.letterSpacing, r.style.wordSpacing = l.wordSpacing, r.style.whiteSpace = l.whiteSpace, r.style.wordBreak = l.wordBreak, r.style.boxSizing = l.boxSizing, document.body.appendChild(r); let c = r.scrollHeight; l.boxSizing !== "border-box" && (c += i + o), c = r.scrollHeight + i + o, document.body.removeChild(r); const a = parseFloat(l.minHeight) || 0 , d = parseFloat(l.maxHeight) || 1 / 0; c = Math.max(a, Math.min(c, d)), e.style.height = `${c}px`, e.scrollTop = n } , this.handleInput = e => { const n = e.target; this._value = n.value, this._autoResize && this.adjustHeight(), this.dispatchEvent(new CustomEvent("lit-textarea-input",{ detail: { value: this._value }, bubbles: !0, composed: !0 })), this.dispatchEvent(new Event("input",{ bubbles: !0, composed: !0 })) } } static get observedAttributes() { return ["auto-resize", "value", "autofocus", "class", "placeholder", "disabled", "rows", "cols"] } connectedCallback() { if (this._render(), this.textareaRef.value && (this._autoResize && (this._setupAutoResize(), this.adjustHeight()), this._autoFocus)) { this.textareaRef.value.focus(); const e = this.textareaRef.value.value.length; this.textareaRef.value.setSelectionRange(e, e) } } disconnectedCallback() { this._teardownAutoResize() } attributeChangedCallback(e, n, l) { if (n === l && e !== "disabled" && e !== "autofocus" && e !== "auto-resize" && (e === "disabled" && this._disabled === (l !== null) || e === "autofocus" && this._autoFocus === (l !== null) || e === "auto-resize" && this._autoResize === (l !== null) || e !== "disabled" && e !== "auto-focus" && e !== "auto-resize")) return; let i = !0; switch (e) { case "auto-resize": const o = l !== null; this._autoResize !== o && (this._autoResize = o, this.textareaRef.value && (this._autoResize ? (this._setupAutoResize(), this.adjustHeight()) : (this._teardownAutoResize(), this.textareaRef.value.style.height = ""))); break; case "value": this._value !== (l || "") && (this._value = l || "", this.textareaRef.value && this.textareaRef.value.value !== this._value && (this.textareaRef.value.value = this._value), this._autoResize && Promise.resolve().then( () => this.adjustHeight())); break; case "autofocus": this._autoFocus = l !== null, i = !1; break; case "class": i = !1; break; case "placeholder": this._placeholder = l || ""; break; case "disabled": this._disabled = l !== null; break; case "rows": this._rows = l ? parseInt(l, 10) : void 0; break; case "cols": this._cols = l ? parseInt(l, 10) : void 0; break; default: i = !1 } i && this._render() } _setupAutoResize() { !this.textareaRef.value || this.resizeObserver || (window.addEventListener("resize", this.adjustHeight), this.resizeObserver = new ResizeObserver(this.adjustHeight), this.resizeObserver.observe(this.textareaRef.value)) } _teardownAutoResize() { window.removeEventListener("resize", this.adjustHeight), this.resizeObserver && (this.textareaRef.value && this.resizeObserver.unobserve(this.textareaRef.value), this.resizeObserver.disconnect(), this.resizeObserver = void 0) } getInternalTextareaClasses() { return { "internal-textarea": !0, "auto-resize-active": this._autoResize } } _render() { const e = M` `; Wt(e, this), this.textareaRef.value && this.textareaRef.value.value !== this._value && (this.textareaRef.value.value = this._value), this._autoFocus && setTimeout( () => { var n; (n = this.textareaRef.value) == null || n.focus() } , 0) } } class fn { constructor(e, n=!0) { this.container = e, n && this.render() } render() { Wt(this.template, this.container) } destroy() { Wt(ne, this.container) } } class gs extends fn { constructor(e, n) { super(e, !1), this.container = e, this.conf = n, this._destroyPromise = new Promise(l => { this._resolveDestroyPromise = l } ) } get template() { const {variant: e, title: n} = this.conf , l = `toast toast--${e}` , i = M` `; return M` ${e === "success" ? i : ""}
${n}
` } show() { this.render(); const e = this.container.querySelector(".toast"); e && (requestAnimationFrame( () => { e.classList.add("is-visible") } ), setTimeout( () => { this.destroy() } , 3e3)) } destroy() { const e = this.container.querySelector(".toast"); e ? (e.classList.remove("is-visible"), e.addEventListener("transitionend", () => { super.destroy(), e.parentNode && e.parentNode.removeChild(e), this._resolveDestroyPromise() } , { once: !0 })) : (super.destroy(), this._resolveDestroyPromise()) } get destroyed() { return this._destroyPromise } } const hs = "toast-manager-container"; class bs { constructor() { this.currentToasts = [] } initRoot(e) { this.rootContainer = document.createElement("div"), this.rootContainer.id = hs, e.appendChild(this.rootContainer), this.rootContainer.style.cssText = ` position: fixed; top: 20px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column-reverse; /* 新的 Toast 在底部,旧的向上推 */ align-items: center; z-index: 1000; pointer-events: none; /* 允许点击穿透 Toast 容器 */ ` } showToast(e) { const n = document.createElement("div"); n.style.pointerEvents = "auto", this.rootContainer.prepend(n); const l = new gs(n,e); this.currentToasts.push(l), l.show(), l.destroyed.then( () => { this.removeToast(l) } ) } removeToast(e) { this.currentToasts = this.currentToasts.filter(n => n !== e), e.container && e.container.parentNode && e.container.parentNode.removeChild(e.container) } clearAllToasts() { this.currentToasts.forEach(e => e.destroy()), this.currentToasts = [] } } const $n = new bs; /** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const mc = "important" , Vs = " !" + mc , zn = Vi(class extends mi { constructor(t) { var e; if (super(t), t.type !== bi.ATTRIBUTE || t.name !== "style" || ((e = t.strings) == null ? void 0 : e.length) > 2) throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.") } render(t) { return Object.keys(t).reduce( (e, n) => { const l = t[n]; return l == null ? e : e + `${n = n.includes("-") ? n : n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, "-$&").toLowerCase()}:${l};` } , "") } update(t, [e]) { const {style: n} = t.element; if (this.ft === void 0) return this.ft = new Set(Object.keys(e)), this.render(e); for (const l of this.ft) e[l] == null && (this.ft.delete(l), l.includes("-") ? n.removeProperty(l) : n[l] = null); for (const l in e) { const i = e[l]; if (i != null) { this.ft.add(l); const o = typeof i == "string" && i.endsWith(Vs); l.includes("-") || o ? n.setProperty(l, o ? i.slice(0, -11) : i, o ? mc : "") : n[l] = i } } return St } } ) , ms = t => M` `; class co { constructor(e, n, l, i) { this.destroyed = !1, this.event = e, this.handler = n, this.emitter = l, this.listenBy = i } unregister() { this.emitter.off(this.event, this), this._destroy() } _destroy() { return this.destroyed ? !1 : (this.handler = null, this.emitter = null, this.destroyed = !0, !0) } } class As { constructor() { this._events = {} } on(e, n) { var i; if (!n) throw new TypeError("invalid handler! --EventEmitter"); this._events[e] || (this._events[e] = []); const l = new co(e,n,this,null); return (i = this._events[e]) == null || i.push(l), l } listenBy(e, n, l) { var o; if (!l) throw new TypeError("invalid handler! --EventEmitter"); this._events[n] || (this._events[n] = []); const i = new co(n,l,this,e); return (o = this._events[n]) == null || o.push(i), i } once(e, n) { const l = this.on(e, i => { n(i), l.unregister() } ); return l } emit(e, n=null) { if (!this._events[e]) return !1; for (const l of this._events[e]) l.destroyed || l.handler.call(this, n); return !0 } off(e, n) { var l, i; if (!this._events[e]) return !1; if (n) { for (let o = this._events[e], r = 0; r < o.length; r++) { const c = o[r]; if (c === n) return this._events[e] = (l = this._events[e]) == null ? void 0 : l.filter(a => a !== c), ((i = this._events[e]) == null ? void 0 : i.length) === 0 && delete this._events[e], !0 } return console.error(n, this), console.error(`Cannot find listener of ${e} --EventEmitter`), !1 } for (let o = this._events[e], r = 0; r < o.length; r++) { const c = o[r]; this._events[e][r] = null, c == null || c._destroy() } return delete this._events[e], !0 } stopListenBy(e) { var n; for (const l in this._events) this._events[l] = (n = this._events[l]) == null ? void 0 : n.filter(i => i.listenBy === e ? (i._destroy(), !1) : !0) } removeAllListeners() { for (const e in this._events) { const n = this._events[e]; if (n) { for (let l = n, i = 0; i < l.length; i++) n[i] = null; this._events[e] = null } } } } const Mt = new As; class Zs { constructor() { this.viewType = "default", this.prevViewType = "default" } setViewType(e) { this.prevViewType = this.viewType, this.viewType = e, Mt.emit("onViewTypeChange", {}) } } const Je = new Zs; class fs { get spaceId() { var e; return (e = window.__manus_space_editor_info) == null ? void 0 : e.spaceId } get apiHost() { var e; return ((e = window.__manus__global_env) == null ? void 0 : e.apiHost) ?? "https://api.manus.im" } get patchList() { var e; return ((e = window.__manus_space_editor_info) == null ? void 0 : e.patchList) ?? [] } get amplitudeKey() { return window.__manus__global_env.amplitudeKey ?? "" } } const _e = new fs; class ps { getCookie(e) { if (typeof document > "u") return console.warn("CookieHelper: Cannot get cookie in a non-browser environment."), null; const n = e + "=" , l = document.cookie.split(";"); for (let i = 0; i < l.length; i++) { let o = l[i]; for (; o.charAt(0) === " "; ) o = o.substring(1, o.length); if (o.indexOf(n) === 0) return o.substring(n.length, o.length) } return null } setCookie(e, n, l={}) { if (typeof document > "u") { console.warn("CookieHelper: Cannot set cookie in a non-browser environment."); return } let i = ""; if (l.daysToExpire) { const d = new Date; d.setTime(d.getTime() + l.daysToExpire * 24 * 60 * 60 * 1e3), i = "; expires=" + d.toUTCString() } const o = l.path ? "; path=" + l.path : "; path=/" , r = l.domain ? "; domain=" + l.domain : "" , c = l.secure ? "; secure" : "" , a = l.sameSite ? "; samesite=" + l.sameSite : ""; document.cookie = e + "=" + (n || "") + i + o + r + c + a } deleteCookie(e, n={}) { if (typeof document > "u") { console.warn("CookieHelper: Cannot delete cookie in a non-browser environment."); return } this.setCookie(e, "", { daysToExpire: -1, path: n.path, domain: n.domain }) } } const Sn = new ps , J = { spaceEditorHighlight: "__manus__-space-editor-highlight", virtualTextNode: "__manus__virtual-text-node", onlyTextNode: "__manus__only-text-node", textNodeActive: "__manus__text-node-active", editModeActive: "__manus__edit-mode-active", spaceControlView: "__manus__space-editor-control-panel", textEditorPanelView: "__manus__space-editor-text-editor-modal", elementEditorPanelView: "__manus__space-editor-element-editor-modal", footerToolbarView: "__manus__space-footer-toolbar", colorPicker: "clr-picker", copyNode: "__manus__copy-node", hidden: "__manus__hidden" } , tn = { accessToken: "access_token" } , ao = { embedClosed: "embed-closed" }; var H; (function(t) { t[t.Canceled = 1] = "Canceled", t[t.Unknown = 2] = "Unknown", t[t.InvalidArgument = 3] = "InvalidArgument", t[t.DeadlineExceeded = 4] = "DeadlineExceeded", t[t.NotFound = 5] = "NotFound", t[t.AlreadyExists = 6] = "AlreadyExists", t[t.PermissionDenied = 7] = "PermissionDenied", t[t.ResourceExhausted = 8] = "ResourceExhausted", t[t.FailedPrecondition = 9] = "FailedPrecondition", t[t.Aborted = 10] = "Aborted", t[t.OutOfRange = 11] = "OutOfRange", t[t.Unimplemented = 12] = "Unimplemented", t[t.Internal = 13] = "Internal", t[t.Unavailable = 14] = "Unavailable", t[t.DataLoss = 15] = "DataLoss", t[t.Unauthenticated = 16] = "Unauthenticated" } )(H || (H = {})); function Ai(t, e) { return t !== null && typeof t == "object" && "$typeName"in t && typeof t.$typeName == "string" ? e === void 0 ? !0 : e.typeName === t.$typeName : !1 } var m; (function(t) { t[t.DOUBLE = 1] = "DOUBLE", t[t.FLOAT = 2] = "FLOAT", t[t.INT64 = 3] = "INT64", t[t.UINT64 = 4] = "UINT64", t[t.INT32 = 5] = "INT32", t[t.FIXED64 = 6] = "FIXED64", t[t.FIXED32 = 7] = "FIXED32", t[t.BOOL = 8] = "BOOL", t[t.STRING = 9] = "STRING", t[t.BYTES = 12] = "BYTES", t[t.UINT32 = 13] = "UINT32", t[t.SFIXED32 = 15] = "SFIXED32", t[t.SFIXED64 = 16] = "SFIXED64", t[t.SINT32 = 17] = "SINT32", t[t.SINT64 = 18] = "SINT64" } )(m || (m = {})); function Gs() { let t = 0 , e = 0; for (let l = 0; l < 28; l += 7) { let i = this.buf[this.pos++]; if (t |= (i & 127) << l, (i & 128) == 0) return this.assertBounds(), [t, e] } let n = this.buf[this.pos++]; if (t |= (n & 15) << 28, e = (n & 112) >> 4, (n & 128) == 0) return this.assertBounds(), [t, e]; for (let l = 3; l <= 31; l += 7) { let i = this.buf[this.pos++]; if (e |= (i & 127) << l, (i & 128) == 0) return this.assertBounds(), [t, e] } throw new Error("invalid varint") } function Wl(t, e, n) { for (let o = 0; o < 28; o = o + 7) { const r = t >>> o , c = !(!(r >>> 7) && e == 0) , a = (c ? r | 128 : r) & 255; if (n.push(a), !c) return } const l = t >>> 28 & 15 | (e & 7) << 4 , i = e >> 3 != 0; if (n.push((i ? l | 128 : l) & 255), !!i) { for (let o = 3; o < 31; o = o + 7) { const r = e >>> o , c = !!(r >>> 7) , a = (c ? r | 128 : r) & 255; if (n.push(a), !c) return } n.push(e >>> 31 & 1) } } const Qn = 4294967296; function so(t) { const e = t[0] === "-"; e && (t = t.slice(1)); const n = 1e6; let l = 0 , i = 0; function o(r, c) { const a = Number(t.slice(r, c)); i *= n, l = l * n + a, l >= Qn && (i = i + (l / Qn | 0), l = l % Qn) } return o(-24, -18), o(-18, -12), o(-12, -6), o(-6), e ? Zc(l, i) : Zi(l, i) } function Xs(t, e) { let n = Zi(t, e); const l = n.hi & 2147483648; l && (n = Zc(n.lo, n.hi)); const i = Ac(n.lo, n.hi); return l ? "-" + i : i } function Ac(t, e) { if ({lo: t, hi: e} = Is(t, e), e <= 2097151) return String(Qn * e + t); const n = t & 16777215 , l = (t >>> 24 | e << 8) & 16777215 , i = e >> 16 & 65535; let o = n + l * 6777216 + i * 6710656 , r = l + i * 8147497 , c = i * 2; const a = 1e7; return o >= a && (r += Math.floor(o / a), o %= a), r >= a && (c += Math.floor(r / a), r %= a), c.toString() + uo(r) + uo(o) } function Is(t, e) { return { lo: t >>> 0, hi: e >>> 0 } } function Zi(t, e) { return { lo: t | 0, hi: e | 0 } } function Zc(t, e) { return e = ~e, t ? t = ~t + 1 : e += 1, Zi(t, e) } const uo = t => { const e = String(t); return "0000000".slice(e.length) + e } ; function go(t, e) { if (t >= 0) { for (; t > 127; ) e.push(t & 127 | 128), t = t >>> 7; e.push(t) } else { for (let n = 0; n < 9; n++) e.push(t & 127 | 128), t = t >> 7; e.push(1) } } function Rs() { let t = this.buf[this.pos++] , e = t & 127; if ((t & 128) == 0) return this.assertBounds(), e; if (t = this.buf[this.pos++], e |= (t & 127) << 7, (t & 128) == 0) return this.assertBounds(), e; if (t = this.buf[this.pos++], e |= (t & 127) << 14, (t & 128) == 0) return this.assertBounds(), e; if (t = this.buf[this.pos++], e |= (t & 127) << 21, (t & 128) == 0) return this.assertBounds(), e; t = this.buf[this.pos++], e |= (t & 15) << 28; for (let n = 5; (t & 128) !== 0 && n < 10; n++) t = this.buf[this.pos++]; if ((t & 128) != 0) throw new Error("invalid varint"); return this.assertBounds(), e >>> 0 } var ho = {}; const le = Es(); function Es() { const t = new DataView(new ArrayBuffer(8)); if (typeof BigInt == "function" && typeof t.getBigInt64 == "function" && typeof t.getBigUint64 == "function" && typeof t.setBigInt64 == "function" && typeof t.setBigUint64 == "function" && (typeof process != "object" || typeof ho != "object" || ho.BUF_BIGINT_DISABLE !== "1")) { const n = BigInt("-9223372036854775808") , l = BigInt("9223372036854775807") , i = BigInt("0") , o = BigInt("18446744073709551615"); return { zero: BigInt(0), supported: !0, parse(r) { const c = typeof r == "bigint" ? r : BigInt(r); if (c > l || c < n) throw new Error(`invalid int64: ${r}`); return c }, uParse(r) { const c = typeof r == "bigint" ? r : BigInt(r); if (c > o || c < i) throw new Error(`invalid uint64: ${r}`); return c }, enc(r) { return t.setBigInt64(0, this.parse(r), !0), { lo: t.getInt32(0, !0), hi: t.getInt32(4, !0) } }, uEnc(r) { return t.setBigInt64(0, this.uParse(r), !0), { lo: t.getInt32(0, !0), hi: t.getInt32(4, !0) } }, dec(r, c) { return t.setInt32(0, r, !0), t.setInt32(4, c, !0), t.getBigInt64(0, !0) }, uDec(r, c) { return t.setInt32(0, r, !0), t.setInt32(4, c, !0), t.getBigUint64(0, !0) } } } return { zero: "0", supported: !1, parse(n) { return typeof n != "string" && (n = n.toString()), bo(n), n }, uParse(n) { return typeof n != "string" && (n = n.toString()), Vo(n), n }, enc(n) { return typeof n != "string" && (n = n.toString()), bo(n), so(n) }, uEnc(n) { return typeof n != "string" && (n = n.toString()), Vo(n), so(n) }, dec(n, l) { return Xs(n, l) }, uDec(n, l) { return Ac(n, l) } } } function bo(t) { if (!/^-?[0-9]+$/.test(t)) throw new Error("invalid int64: " + t) } function Vo(t) { if (!/^[0-9]+$/.test(t)) throw new Error("invalid uint64: " + t) } function Bt(t, e) { switch (t) { case m.STRING: return ""; case m.BOOL: return !1; case m.DOUBLE: case m.FLOAT: return 0; case m.INT64: case m.UINT64: case m.SFIXED64: case m.FIXED64: case m.SINT64: return e ? "0" : le.zero; case m.BYTES: return new Uint8Array(0); default: return 0 } } function Cs(t, e) { switch (t) { case m.BOOL: return e === !1; case m.STRING: return e === ""; case m.BYTES: return e instanceof Uint8Array && !e.byteLength; default: return e == 0 } } const fc = 2 , ht = Symbol.for("reflect unsafe local"); function pc(t, e) { const n = t[e.localName].case; return n === void 0 ? n : e.fields.find(l => l.localName === n) } function ys(t, e) { const n = e.localName; if (e.oneof) return t[e.oneof.localName].case === n; if (e.presence != fc) return t[n] !== void 0 && Object.prototype.hasOwnProperty.call(t, n); switch (e.fieldKind) { case "list": return t[n].length > 0; case "map": return Object.keys(t[n]).length > 0; case "scalar": return !Cs(e.scalar, t[n]); case "enum": return t[n] !== e.enum.values[0].number } throw new Error("message field with implicit presence") } function un(t, e) { return Object.prototype.hasOwnProperty.call(t, e) && t[e] !== void 0 } function Gc(t, e) { if (e.oneof) { const n = t[e.oneof.localName]; return n.case === e.localName ? n.value : void 0 } return t[e.localName] } function Xc(t, e, n) { e.oneof ? t[e.oneof.localName] = { case: e.localName, value: n } : t[e.localName] = n } function Ss(t, e) { const n = e.localName; if (e.oneof) { const l = e.oneof.localName; t[l].case === n && (t[l] = { case: void 0 }) } else if (e.presence != fc) delete t[n]; else switch (e.fieldKind) { case "map": t[n] = {}; break; case "list": t[n] = []; break; case "enum": t[n] = e.enum.values[0].number; break; case "scalar": t[n] = Bt(e.scalar, e.longAsString); break } } function ft(t) { return t !== null && typeof t == "object" && !Array.isArray(t) } function fi(t, e) { var n, l, i, o; if (ft(t) && ht in t && "add"in t && "field"in t && typeof t.field == "function") { if (e !== void 0) { const r = e , c = t.field(); return r.listKind == c.listKind && r.scalar === c.scalar && ((n = r.message) === null || n === void 0 ? void 0 : n.typeName) === ((l = c.message) === null || l === void 0 ? void 0 : l.typeName) && ((i = r.enum) === null || i === void 0 ? void 0 : i.typeName) === ((o = c.enum) === null || o === void 0 ? void 0 : o.typeName) } return !0 } return !1 } function pi(t, e) { var n, l, i, o; if (ft(t) && ht in t && "has"in t && "field"in t && typeof t.field == "function") { if (e !== void 0) { const r = e , c = t.field(); return r.mapKey === c.mapKey && r.mapKind == c.mapKind && r.scalar === c.scalar && ((n = r.message) === null || n === void 0 ? void 0 : n.typeName) === ((l = c.message) === null || l === void 0 ? void 0 : l.typeName) && ((i = r.enum) === null || i === void 0 ? void 0 : i.typeName) === ((o = c.enum) === null || o === void 0 ? void 0 : o.typeName) } return !0 } return !1 } function Gi(t, e) { return ft(t) && ht in t && "desc"in t && ft(t.desc) && t.desc.kind === "message" && (e === void 0 || t.desc.typeName == e.typeName) } function Ws(t) { return Ic(t.$typeName) } function pn(t) { const e = t.fields[0]; return Ic(t.typeName) && e !== void 0 && e.fieldKind == "scalar" && e.name == "value" && e.number == 1 } function Ic(t) { return t.startsWith("google.protobuf.") && ["DoubleValue", "FloatValue", "Int64Value", "UInt64Value", "Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue"].includes(t.substring(16)) } const vs = 999 , Bs = 998 , Kn = 2; function lt(t, e) { if (Ai(e, t)) return e; const n = Js(t); return e !== void 0 && Ns(t, n, e), n } function Ns(t, e, n) { for (const l of t.members) { let i = n[l.localName]; if (i == null) continue; let o; if (l.kind == "oneof") { const r = pc(n, l); if (!r) continue; o = r, i = Gc(n, r) } else o = l; switch (o.fieldKind) { case "message": i = Xi(o, i); break; case "scalar": i = Rc(o, i); break; case "list": i = Ys(o, i); break; case "map": i = Fs(o, i); break } Xc(e, o, i) } return e } function Rc(t, e) { return t.scalar == m.BYTES ? Ii(e) : e } function Fs(t, e) { if (ft(e)) { if (t.scalar == m.BYTES) return mo(e, Ii); if (t.mapKind == "message") return mo(e, n => Xi(t, n)) } return e } function Ys(t, e) { if (Array.isArray(e)) { if (t.scalar == m.BYTES) return e.map(Ii); if (t.listKind == "message") return e.map(n => Xi(t, n)) } return e } function Xi(t, e) { if (t.fieldKind == "message" && !t.oneof && pn(t.message)) return Rc(t.message.fields[0], e); if (ft(e)) { if (t.message.typeName == "google.protobuf.Struct" && t.parent.typeName !== "google.protobuf.Value") return e; if (!Ai(e, t.message)) return lt(t.message, e) } return e } function Ii(t) { return Array.isArray(t) ? new Uint8Array(t) : t } function mo(t, e) { const n = {}; for (const l of Object.entries(t)) n[l[0]] = e(l[1]); return n } const Us = Symbol() , Ao = new WeakMap; function Js(t) { let e; if (xs(t)) { const n = Ao.get(t); let l, i; if (n) ({prototype: l, members: i} = n); else { l = {}, i = new Set; for (const o of t.members) o.kind != "oneof" && (o.fieldKind != "scalar" && o.fieldKind != "enum" || o.presence != Kn && (i.add(o), l[o.localName] = vl(o))); Ao.set(t, { prototype: l, members: i }) } e = Object.create(l), e.$typeName = t.typeName; for (const o of t.members) i.has(o) || o.kind == "field" && (o.fieldKind == "message" || (o.fieldKind == "scalar" || o.fieldKind == "enum") && o.presence != Kn) || (e[o.localName] = vl(o)) } else { e = { $typeName: t.typeName }; for (const n of t.members) (n.kind == "oneof" || n.presence == Kn) && (e[n.localName] = vl(n)) } return e } function xs(t) { switch (t.file.edition) { case vs: return !1; case Bs: return !0; default: return t.fields.some(e => e.presence != Kn && e.fieldKind != "message" && !e.oneof) } } function vl(t) { if (t.kind == "oneof") return { case: void 0 }; if (t.fieldKind == "list") return []; if (t.fieldKind == "map") return {}; if (t.fieldKind == "message") return Us; const e = t.getDefaultValue(); return e !== void 0 ? t.fieldKind == "scalar" && t.longAsString ? e.toString() : e : t.fieldKind == "scalar" ? Bt(t.scalar, t.longAsString) : t.enum.values[0].number } const ws = ["FieldValueInvalidError", "FieldListRangeError", "ForeignFieldError"]; class we extends Error { constructor(e, n, l="FieldValueInvalidError") { super(n), this.name = l, this.field = () => e } } function ks(t) { return t instanceof Error && ws.includes(t.name) && "field"in t && typeof t.field == "function" } const Bl = Symbol.for("@bufbuild/protobuf/text-encoding"); function Ri() { if (globalThis[Bl] == null) { const t = new globalThis.TextEncoder , e = new globalThis.TextDecoder; globalThis[Bl] = { encodeUtf8(n) { return t.encode(n) }, decodeUtf8(n) { return e.decode(n) }, checkUtf8(n) { try { return encodeURIComponent(n), !0 } catch { return !1 } } } } return globalThis[Bl] } var re; (function(t) { t[t.Varint = 0] = "Varint", t[t.Bit64 = 1] = "Bit64", t[t.LengthDelimited = 2] = "LengthDelimited", t[t.StartGroup = 3] = "StartGroup", t[t.EndGroup = 4] = "EndGroup", t[t.Bit32 = 5] = "Bit32" } )(re || (re = {})); const Ec = 34028234663852886e22 , Cc = -34028234663852886e22 , yc = 4294967295 , Sc = 2147483647 , Wc = -2147483648; class vc { constructor(e=Ri().encodeUtf8) { this.encodeUtf8 = e, this.stack = [], this.chunks = [], this.buf = [] } finish() { this.buf.length && (this.chunks.push(new Uint8Array(this.buf)), this.buf = []); let e = 0; for (let i = 0; i < this.chunks.length; i++) e += this.chunks[i].length; let n = new Uint8Array(e) , l = 0; for (let i = 0; i < this.chunks.length; i++) n.set(this.chunks[i], l), l += this.chunks[i].length; return this.chunks = [], n } fork() { return this.stack.push({ chunks: this.chunks, buf: this.buf }), this.chunks = [], this.buf = [], this } join() { let e = this.finish() , n = this.stack.pop(); if (!n) throw new Error("invalid state, fork stack empty"); return this.chunks = n.chunks, this.buf = n.buf, this.uint32(e.byteLength), this.raw(e) } tag(e, n) { return this.uint32((e << 3 | n) >>> 0) } raw(e) { return this.buf.length && (this.chunks.push(new Uint8Array(this.buf)), this.buf = []), this.chunks.push(e), this } uint32(e) { for (Zo(e); e > 127; ) this.buf.push(e & 127 | 128), e = e >>> 7; return this.buf.push(e), this } int32(e) { return Nl(e), go(e, this.buf), this } bool(e) { return this.buf.push(e ? 1 : 0), this } bytes(e) { return this.uint32(e.byteLength), this.raw(e) } string(e) { let n = this.encodeUtf8(e); return this.uint32(n.byteLength), this.raw(n) } float(e) { zs(e); let n = new Uint8Array(4); return new DataView(n.buffer).setFloat32(0, e, !0), this.raw(n) } double(e) { let n = new Uint8Array(8); return new DataView(n.buffer).setFloat64(0, e, !0), this.raw(n) } fixed32(e) { Zo(e); let n = new Uint8Array(4); return new DataView(n.buffer).setUint32(0, e, !0), this.raw(n) } sfixed32(e) { Nl(e); let n = new Uint8Array(4); return new DataView(n.buffer).setInt32(0, e, !0), this.raw(n) } sint32(e) { return Nl(e), e = (e << 1 ^ e >> 31) >>> 0, go(e, this.buf), this } sfixed64(e) { let n = new Uint8Array(8) , l = new DataView(n.buffer) , i = le.enc(e); return l.setInt32(0, i.lo, !0), l.setInt32(4, i.hi, !0), this.raw(n) } fixed64(e) { let n = new Uint8Array(8) , l = new DataView(n.buffer) , i = le.uEnc(e); return l.setInt32(0, i.lo, !0), l.setInt32(4, i.hi, !0), this.raw(n) } int64(e) { let n = le.enc(e); return Wl(n.lo, n.hi, this.buf), this } sint64(e) { const n = le.enc(e) , l = n.hi >> 31 , i = n.lo << 1 ^ l , o = (n.hi << 1 | n.lo >>> 31) ^ l; return Wl(i, o, this.buf), this } uint64(e) { const n = le.uEnc(e); return Wl(n.lo, n.hi, this.buf), this } } class Ei { constructor(e, n=Ri().decodeUtf8) { this.decodeUtf8 = n, this.varint64 = Gs, this.uint32 = Rs, this.buf = e, this.len = e.length, this.pos = 0, this.view = new DataView(e.buffer,e.byteOffset,e.byteLength) } tag() { let e = this.uint32() , n = e >>> 3 , l = e & 7; if (n <= 0 || l < 0 || l > 5) throw new Error("illegal tag: field no " + n + " wire type " + l); return [n, l] } skip(e, n) { let l = this.pos; switch (e) { case re.Varint: for (; this.buf[this.pos++] & 128; ) ; break; case re.Bit64: this.pos += 4; case re.Bit32: this.pos += 4; break; case re.LengthDelimited: let i = this.uint32(); this.pos += i; break; case re.StartGroup: for (; ; ) { const [o,r] = this.tag(); if (r === re.EndGroup) { if (n !== void 0 && o !== n) throw new Error("invalid end group tag"); break } this.skip(r, o) } break; default: throw new Error("cant skip wire type " + e) } return this.assertBounds(), this.buf.subarray(l, this.pos) } assertBounds() { if (this.pos > this.len) throw new RangeError("premature EOF") } int32() { return this.uint32() | 0 } sint32() { let e = this.uint32(); return e >>> 1 ^ -(e & 1) } int64() { return le.dec(...this.varint64()) } uint64() { return le.uDec(...this.varint64()) } sint64() { let[e,n] = this.varint64() , l = -(e & 1); return e = (e >>> 1 | (n & 1) << 31) ^ l, n = n >>> 1 ^ l, le.dec(e, n) } bool() { let[e,n] = this.varint64(); return e !== 0 || n !== 0 } fixed32() { return this.view.getUint32((this.pos += 4) - 4, !0) } sfixed32() { return this.view.getInt32((this.pos += 4) - 4, !0) } fixed64() { return le.uDec(this.sfixed32(), this.sfixed32()) } sfixed64() { return le.dec(this.sfixed32(), this.sfixed32()) } float() { return this.view.getFloat32((this.pos += 4) - 4, !0) } double() { return this.view.getFloat64((this.pos += 8) - 8, !0) } bytes() { let e = this.uint32() , n = this.pos; return this.pos += e, this.assertBounds(), this.buf.subarray(n, n + e) } string() { return this.decodeUtf8(this.bytes()) } } function Nl(t) { if (typeof t == "string") t = Number(t); else if (typeof t != "number") throw new Error("invalid int32: " + typeof t); if (!Number.isInteger(t) || t > Sc || t < Wc) throw new Error("invalid int32: " + t) } function Zo(t) { if (typeof t == "string") t = Number(t); else if (typeof t != "number") throw new Error("invalid uint32: " + typeof t); if (!Number.isInteger(t) || t > yc || t < 0) throw new Error("invalid uint32: " + t) } function zs(t) { if (typeof t == "string") { const e = t; if (t = Number(t), Number.isNaN(t) && e !== "NaN") throw new Error("invalid float32: " + e) } else if (typeof t != "number") throw new Error("invalid float32: " + typeof t); if (Number.isFinite(t) && (t > Ec || t < Cc)) throw new Error("invalid float32: " + t) } function It(t, e) { const n = t.fieldKind == "list" ? fi(e, t) : t.fieldKind == "map" ? pi(e, t) : Ci(t, e); if (n === !0) return; let l; switch (t.fieldKind) { case "list": l = `expected ${Fc(t)}, got ${fe(e)}`; break; case "map": l = `expected ${Yc(t)}, got ${fe(e)}`; break; default: l = qn(t, e, n) } return new we(t,l) } function fo(t, e, n) { const l = Ci(t, n); if (l !== !0) return new we(t,`list item #${e + 1}: ${qn(t, n, l)}`) } function Qs(t, e, n) { const l = Bc(e, t.mapKey); if (l !== !0) return new we(t,`invalid map key: ${qn({ scalar: t.mapKey }, e, l)}`); const i = Ci(t, n); if (i !== !0) return new we(t,`map entry ${fe(e)}: ${qn(t, n, i)}`) } function Ci(t, e) { return t.scalar !== void 0 ? Bc(e, t.scalar) : t.enum !== void 0 ? t.enum.open ? Number.isInteger(e) : t.enum.values.some(n => n.number === e) : Gi(e, t.message) } function Bc(t, e) { switch (e) { case m.DOUBLE: return typeof t == "number"; case m.FLOAT: return typeof t != "number" ? !1 : Number.isNaN(t) || !Number.isFinite(t) ? !0 : t > Ec || t < Cc ? `${t.toFixed()} out of range` : !0; case m.INT32: case m.SFIXED32: case m.SINT32: return typeof t != "number" || !Number.isInteger(t) ? !1 : t > Sc || t < Wc ? `${t.toFixed()} out of range` : !0; case m.FIXED32: case m.UINT32: return typeof t != "number" || !Number.isInteger(t) ? !1 : t > yc || t < 0 ? `${t.toFixed()} out of range` : !0; case m.BOOL: return typeof t == "boolean"; case m.STRING: return typeof t != "string" ? !1 : Ri().checkUtf8(t) || "invalid UTF8"; case m.BYTES: return t instanceof Uint8Array; case m.INT64: case m.SFIXED64: case m.SINT64: if (typeof t == "bigint" || typeof t == "number" || typeof t == "string" && t.length > 0) try { return le.parse(t), !0 } catch { return `${t} out of range` } return !1; case m.FIXED64: case m.UINT64: if (typeof t == "bigint" || typeof t == "number" || typeof t == "string" && t.length > 0) try { return le.uParse(t), !0 } catch { return `${t} out of range` } return !1 } } function qn(t, e, n) { return n = typeof n == "string" ? `: ${n}` : `, got ${fe(e)}`, t.scalar !== void 0 ? `expected ${Ks(t.scalar)}` + n : t.enum !== void 0 ? `expected ${t.enum.toString()}` + n : `expected ${Nc(t.message)}` + n } function fe(t) { switch (typeof t) { case "object": return t === null ? "null" : t instanceof Uint8Array ? `Uint8Array(${t.length})` : Array.isArray(t) ? `Array(${t.length})` : fi(t) ? Fc(t.field()) : pi(t) ? Yc(t.field()) : Gi(t) ? Nc(t.desc) : Ai(t) ? `message ${t.$typeName}` : "object"; case "string": return t.length > 30 ? "string" : `"${t.split('"').join('\\"')}"`; case "boolean": return String(t); case "number": return String(t); case "bigint": return String(t) + "n"; default: return typeof t } } function Nc(t) { return `ReflectMessage (${t.typeName})` } function Fc(t) { switch (t.listKind) { case "message": return `ReflectList (${t.message.toString()})`; case "enum": return `ReflectList (${t.enum.toString()})`; case "scalar": return `ReflectList (${m[t.scalar]})` } } function Yc(t) { switch (t.mapKind) { case "message": return `ReflectMap (${m[t.mapKey]}, ${t.message.toString()})`; case "enum": return `ReflectMap (${m[t.mapKey]}, ${t.enum.toString()})`; case "scalar": return `ReflectMap (${m[t.mapKey]}, ${m[t.scalar]})` } } function Ks(t) { switch (t) { case m.STRING: return "string"; case m.BOOL: return "boolean"; case m.INT64: case m.SINT64: case m.SFIXED64: return "bigint (int64)"; case m.UINT64: case m.FIXED64: return "bigint (uint64)"; case m.BYTES: return "Uint8Array"; case m.DOUBLE: return "number (float64)"; case m.FLOAT: return "number (float32)"; case m.FIXED32: case m.UINT32: return "number (uint32)"; case m.INT32: case m.SFIXED32: case m.SINT32: return "number (int32)" } } function Pe(t, e, n=!0) { return new Uc(t,e,n) } class Uc { get sortedFields() { var e; return (e = this._sortedFields) !== null && e !== void 0 ? e : this._sortedFields = this.desc.fields.concat().sort( (n, l) => n.number - l.number) } constructor(e, n, l=!0) { this.lists = new Map, this.maps = new Map, this.check = l, this.desc = e, this.message = this[ht] = n ?? lt(e), this.fields = e.fields, this.oneofs = e.oneofs, this.members = e.members } findNumber(e) { return this._fieldsByNumber || (this._fieldsByNumber = new Map(this.desc.fields.map(n => [n.number, n]))), this._fieldsByNumber.get(e) } oneofCase(e) { return qt(this.message, e), pc(this.message, e) } isSet(e) { return qt(this.message, e), ys(this.message, e) } clear(e) { qt(this.message, e), Ss(this.message, e) } get(e) { qt(this.message, e); const n = Gc(this.message, e); switch (e.fieldKind) { case "list": let l = this.lists.get(e); return (!l || l[ht] !== n) && this.lists.set(e, l = new Ls(e,n,this.check)), l; case "map": let i = this.maps.get(e); return (!i || i[ht] !== n) && this.maps.set(e, i = new Ms(e,n,this.check)), i; case "message": return Si(e, n, this.check); case "scalar": return n === void 0 ? Bt(e.scalar, !1) : Wi(e, n); case "enum": return n ?? e.enum.values[0].number } } set(e, n) { if (qt(this.message, e), this.check) { const i = It(e, n); if (i) throw i } let l; e.fieldKind == "message" ? l = yi(e, n) : pi(n) || fi(n) ? l = n[ht] : l = vi(e, n), Xc(this.message, e, l) } getUnknown() { return this.message.$unknown } setUnknown(e) { this.message.$unknown = e } } function qt(t, e) { if (e.parent.typeName !== t.$typeName) throw new we(e,`cannot use ${e.toString()} with message ${t.$typeName}`,"ForeignFieldError") } class Ls { field() { return this._field } get size() { return this._arr.length } constructor(e, n, l) { this._field = e, this._arr = this[ht] = n, this.check = l } get(e) { const n = this._arr[e]; return n === void 0 ? void 0 : Fl(this._field, n, this.check) } set(e, n) { if (e < 0 || e >= this._arr.length) throw new we(this._field,`list item #${e + 1}: out of range`); if (this.check) { const l = fo(this._field, e, n); if (l) throw l } this._arr[e] = po(this._field, n) } add(e) { if (this.check) { const n = fo(this._field, this._arr.length, e); if (n) throw n } this._arr.push(po(this._field, e)) } clear() { this._arr.splice(0, this._arr.length) } [Symbol.iterator]() { return this.values() } keys() { return this._arr.keys() } *values() { for (const e of this._arr) yield Fl(this._field, e, this.check) } *entries() { for (let e = 0; e < this._arr.length; e++) yield[e, Fl(this._field, this._arr[e], this.check)] } } class Ms { constructor(e, n, l=!0) { this.obj = this[ht] = n ?? {}, this.check = l, this._field = e } field() { return this._field } set(e, n) { if (this.check) { const l = Qs(this._field, e, n); if (l) throw l } return this.obj[Wn(e)] = Ts(this._field, n), this } delete(e) { const n = Wn(e) , l = Object.prototype.hasOwnProperty.call(this.obj, n); return l && delete this.obj[n], l } clear() { for (const e of Object.keys(this.obj)) delete this.obj[e] } get(e) { let n = this.obj[Wn(e)]; return n !== void 0 && (n = Yl(this._field, n, this.check)), n } has(e) { return Object.prototype.hasOwnProperty.call(this.obj, Wn(e)) } *keys() { for (const e of Object.keys(this.obj)) yield Go(e, this._field.mapKey) } *entries() { for (const e of Object.entries(this.obj)) yield[Go(e[0], this._field.mapKey), Yl(this._field, e[1], this.check)] } [Symbol.iterator]() { return this.entries() } get size() { return Object.keys(this.obj).length } *values() { for (const e of Object.values(this.obj)) yield Yl(this._field, e, this.check) } forEach(e, n) { for (const l of this.entries()) e.call(n, l[1], l[0], this) } } function yi(t, e) { return Gi(e) ? Ws(e.message) && !t.oneof && t.fieldKind == "message" ? e.message.value : e.desc.typeName == "google.protobuf.Struct" && t.parent.typeName != "google.protobuf.Value" ? xc(e.message) : e.message : e } function Si(t, e, n) { return e !== void 0 && (pn(t.message) && !t.oneof && t.fieldKind == "message" ? e = { $typeName: t.message.typeName, value: Wi(t.message.fields[0], e) } : t.message.typeName == "google.protobuf.Struct" && t.parent.typeName != "google.protobuf.Value" && ft(e) && (e = Jc(e))), new Uc(t.message,e,n) } function po(t, e) { return t.listKind == "message" ? yi(t, e) : vi(t, e) } function Fl(t, e, n) { return t.listKind == "message" ? Si(t, e, n) : Wi(t, e) } function Ts(t, e) { return t.mapKind == "message" ? yi(t, e) : vi(t, e) } function Yl(t, e, n) { return t.mapKind == "message" ? Si(t, e, n) : e } function Wn(t) { return typeof t == "string" || typeof t == "number" ? t : String(t) } function Go(t, e) { switch (e) { case m.STRING: return t; case m.INT32: case m.FIXED32: case m.UINT32: case m.SFIXED32: case m.SINT32: { const n = Number.parseInt(t); if (Number.isFinite(n)) return n; break } case m.BOOL: switch (t) { case "true": return !0; case "false": return !1 } break; case m.UINT64: case m.FIXED64: try { return le.uParse(t) } catch {} break; default: try { return le.parse(t) } catch {} break } return t } function Wi(t, e) { switch (t.scalar) { case m.INT64: case m.SFIXED64: case m.SINT64: "longAsString"in t && t.longAsString && typeof e == "string" && (e = le.parse(e)); break; case m.FIXED64: case m.UINT64: "longAsString"in t && t.longAsString && typeof e == "string" && (e = le.uParse(e)); break } return e } function vi(t, e) { switch (t.scalar) { case m.INT64: case m.SFIXED64: case m.SINT64: "longAsString"in t && t.longAsString ? e = String(e) : (typeof e == "string" || typeof e == "number") && (e = le.parse(e)); break; case m.FIXED64: case m.UINT64: "longAsString"in t && t.longAsString ? e = String(e) : (typeof e == "string" || typeof e == "number") && (e = le.uParse(e)); break } return e } function Jc(t) { const e = { $typeName: "google.protobuf.Struct", fields: {} }; if (ft(t)) for (const [n,l] of Object.entries(t)) e.fields[n] = kc(l); return e } function xc(t) { const e = {}; for (const [n,l] of Object.entries(t.fields)) e[n] = wc(l); return e } function wc(t) { switch (t.kind.case) { case "structValue": return xc(t.kind.value); case "listValue": return t.kind.value.values.map(wc); case "nullValue": case void 0: return null; default: return t.kind.value } } function kc(t) { const e = { $typeName: "google.protobuf.Value", kind: { case: void 0 } }; switch (typeof t) { case "number": e.kind = { case: "numberValue", value: t }; break; case "string": e.kind = { case: "stringValue", value: t }; break; case "boolean": e.kind = { case: "boolValue", value: t }; break; case "object": if (t === null) e.kind = { case: "nullValue", value: 0 }; else if (Array.isArray(t)) { const n = { $typeName: "google.protobuf.ListValue", values: [] }; if (Array.isArray(t)) for (const l of t) n.values.push(kc(l)); e.kind = { case: "listValue", value: n } } else e.kind = { case: "structValue", value: Jc(t) }; break } return e } function Bi(t) { const e = Hs(); let n = t.length * 3 / 4; t[t.length - 2] == "=" ? n -= 2 : t[t.length - 1] == "=" && (n -= 1); let l = new Uint8Array(n), i = 0, o = 0, r, c = 0; for (let a = 0; a < t.length; a++) { if (r = e[t.charCodeAt(a)], r === void 0) switch (t[a]) { case "=": o = 0; case ` `: case "\r": case " ": case " ": continue; default: throw Error("invalid base64 string") } switch (o) { case 0: c = r, o = 1; break; case 1: l[i++] = c << 2 | (r & 48) >> 4, c = r, o = 2; break; case 2: l[i++] = (c & 15) << 4 | (r & 60) >> 2, c = r, o = 3; break; case 3: l[i++] = (c & 3) << 6 | r, o = 0; break } } if (o == 1) throw Error("invalid base64 string"); return l.subarray(0, i) } function zc(t, e="std") { const n = Qc(e) , l = e == "std"; let i = "", o = 0, r, c = 0; for (let a = 0; a < t.length; a++) switch (r = t[a], o) { case 0: i += n[r >> 2], c = (r & 3) << 4, o = 1; break; case 1: i += n[c | r >> 4], c = (r & 15) << 2, o = 2; break; case 2: i += n[c | r >> 6], i += n[r & 63], o = 0; break } return o && (i += n[c], l && (i += "=", o == 1 && (i += "="))), i } let vn, Xo, Yt; function Qc(t) { return vn || (vn = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), Xo = vn.slice(0, -2).concat("-", "_")), t == "url" ? Xo : vn } function Hs() { if (!Yt) { Yt = []; const t = Qc("std"); for (let e = 0; e < t.length; e++) Yt[t[e].charCodeAt(0)] = e; Yt[45] = t.indexOf("+"), Yt[95] = t.indexOf("/") } return Yt } function gn(t) { let e = !1; const n = []; for (let l = 0; l < t.length; l++) { let i = t.charAt(l); switch (i) { case "_": e = !0; break; case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": n.push(i), e = !1; break; default: e && (e = !1, i = i.toUpperCase()), n.push(i); break } } return n.join("") } const Ds = new Set(["constructor", "toString", "toJSON", "valueOf"]); function hn(t) { return Ds.has(t) ? t + "$" : t } function Ni(t) { for (const e of t.field) un(e, "jsonName") || (e.jsonName = gn(e.name)); t.nestedType.forEach(Ni) } function js(t, e) { const n = t.values.find(l => l.name === e); if (!n) throw new Error(`cannot parse ${t} default value: ${e}`); return n.number } function _s(t, e) { switch (t) { case m.STRING: return e; case m.BYTES: { const n = Ps(e); if (n === !1) throw new Error(`cannot parse ${m[t]} default value: ${e}`); return n } case m.INT64: case m.SFIXED64: case m.SINT64: return le.parse(e); case m.UINT64: case m.FIXED64: return le.uParse(e); case m.DOUBLE: case m.FLOAT: switch (e) { case "inf": return Number.POSITIVE_INFINITY; case "-inf": return Number.NEGATIVE_INFINITY; case "nan": return Number.NaN; default: return parseFloat(e) } case m.BOOL: return e === "true"; case m.INT32: case m.UINT32: case m.SINT32: case m.FIXED32: case m.SFIXED32: return parseInt(e, 10) } } function Ps(t) { const e = [] , n = { tail: t, c: "", next() { return this.tail.length == 0 ? !1 : (this.c = this.tail[0], this.tail = this.tail.substring(1), !0) }, take(l) { if (this.tail.length >= l) { const i = this.tail.substring(0, l); return this.tail = this.tail.substring(l), i } return !1 } }; for (; n.next(); ) switch (n.c) { case "\\": if (n.next()) switch (n.c) { case "\\": e.push(n.c.charCodeAt(0)); break; case "b": e.push(8); break; case "f": e.push(12); break; case "n": e.push(10); break; case "r": e.push(13); break; case "t": e.push(9); break; case "v": e.push(11); break; case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": { const l = n.c , i = n.take(2); if (i === !1) return !1; const o = parseInt(l + i, 8); if (Number.isNaN(o)) return !1; e.push(o); break } case "x": { const l = n.c , i = n.take(2); if (i === !1) return !1; const o = parseInt(l + i, 16); if (Number.isNaN(o)) return !1; e.push(o); break } case "u": { const l = n.c , i = n.take(4); if (i === !1) return !1; const o = parseInt(l + i, 16); if (Number.isNaN(o)) return !1; const r = new Uint8Array(4); new DataView(r.buffer).setInt32(0, o, !0), e.push(r[0], r[1], r[2], r[3]); break } case "U": { const l = n.c , i = n.take(8); if (i === !1) return !1; const o = le.uEnc(l + i) , r = new Uint8Array(8) , c = new DataView(r.buffer); c.setInt32(0, o.lo, !0), c.setInt32(4, o.hi, !0), e.push(r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7]); break } } break; default: e.push(n.c.charCodeAt(0)) } return new Uint8Array(e) } function *_l(t) { switch (t.kind) { case "file": for (const e of t.messages) yield e, yield*_l(e); yield*t.enums, yield*t.services, yield*t.extensions; break; case "message": for (const e of t.nestedMessages) yield e, yield*_l(e); yield*t.nestedEnums, yield*t.nestedExtensions; break } } function Kc(...t) { const e = Os(); if (!t.length) return e; if ("$typeName"in t[0] && t[0].$typeName == "google.protobuf.FileDescriptorSet") { for (const l of t[0].file) Co(l, e); return e } if ("$typeName"in t[0]) { let r = function(c) { const a = []; for (const d of c.dependency) { if (e.getFile(d) != null || o.has(d)) continue; const s = i(d); if (!s) throw new Error(`Unable to resolve ${d}, imported by ${c.name}`); "kind"in s ? e.addFile(s, !1, !0) : (o.add(s.name), a.push(s)) } return a.concat(...a.map(r)) }; var n = r; const l = t[0] , i = t[1] , o = new Set; for (const c of [l, ...r(l)].reverse()) Co(c, e) } else for (const l of t) for (const i of l.files) e.addFile(i); return e } function Os() { const t = new Map , e = new Map , n = new Map; return { kind: "registry", types: t, extendees: e, [Symbol.iterator]() { return t.values() }, get files() { return n.values() }, addFile(l, i, o) { if (n.set(l.proto.name, l), !i) for (const r of _l(l)) this.add(r); if (o) for (const r of l.dependencies) this.addFile(r, i, o) }, add(l) { if (l.kind == "extension") { let i = e.get(l.extendee.typeName); i || e.set(l.extendee.typeName, i = new Map), i.set(l.number, l) } t.set(l.typeName, l) }, get(l) { return t.get(l) }, getFile(l) { return n.get(l) }, getMessage(l) { const i = t.get(l); return (i == null ? void 0 : i.kind) == "message" ? i : void 0 }, getEnum(l) { const i = t.get(l); return (i == null ? void 0 : i.kind) == "enum" ? i : void 0 }, getExtension(l) { const i = t.get(l); return (i == null ? void 0 : i.kind) == "extension" ? i : void 0 }, getExtensionFor(l, i) { var o; return (o = e.get(l.typeName)) === null || o === void 0 ? void 0 : o.get(i) }, getService(l) { const i = t.get(l); return (i == null ? void 0 : i.kind) == "service" ? i : void 0 } } } const $s = 998 , qs = 999 , eu = 9 , bn = 10 , on = 11 , tu = 12 , Io = 14 , Fi = 3 , nu = 2 , Ro = 1 , lu = 0 , Ul = 1 , Eo = 2 , iu = 3 , ou = 1 , ru = 2 , cu = 1 , Lc = { 998: { fieldPresence: 1, enumType: 2, repeatedFieldEncoding: 2, utf8Validation: 3, messageEncoding: 1, jsonFormat: 2, enforceNamingStyle: 2 }, 999: { fieldPresence: 2, enumType: 1, repeatedFieldEncoding: 1, utf8Validation: 2, messageEncoding: 1, jsonFormat: 1, enforceNamingStyle: 2 }, 1e3: { fieldPresence: 1, enumType: 1, repeatedFieldEncoding: 1, utf8Validation: 2, messageEncoding: 1, jsonFormat: 1, enforceNamingStyle: 2 } }; function Co(t, e) { var n, l; const i = { kind: "file", proto: t, deprecated: (l = (n = t.options) === null || n === void 0 ? void 0 : n.deprecated) !== null && l !== void 0 ? l : !1, edition: uu(t), name: t.name.replace(/\.proto$/, ""), dependencies: gu(t, e), enums: [], messages: [], extensions: [], services: [], toString() { return `file ${t.name}` } } , o = new Map , r = { get(c) { return o.get(c) }, add(c) { var a; nt(((a = c.proto.options) === null || a === void 0 ? void 0 : a.mapEntry) === !0), o.set(c.typeName, c) } }; for (const c of t.enumType) Mc(c, i, void 0, e); for (const c of t.messageType) Tc(c, i, void 0, e, r); for (const c of t.service) au(c, i, e); Pl(i, e); for (const c of o.values()) Ol(c, e, r); for (const c of i.messages) Ol(c, e, r), Pl(c, e); e.addFile(i, !0) } function Pl(t, e) { switch (t.kind) { case "file": for (const n of t.proto.extension) { const l = $l(n, t, e); t.extensions.push(l), e.add(l) } break; case "message": for (const n of t.proto.extension) { const l = $l(n, t, e); t.nestedExtensions.push(l), e.add(l) } for (const n of t.nestedMessages) Pl(n, e); break } } function Ol(t, e, n) { const l = t.proto.oneofDecl.map(o => su(o, t)) , i = new Set; for (const o of t.proto.field) { const r = Vu(o, l) , c = $l(o, t, e, r, n); t.fields.push(c), t.field[c.localName] = c, r === void 0 ? t.members.push(c) : (r.fields.push(c), i.has(r) || (i.add(r), t.members.push(r))) } for (const o of l.filter(r => i.has(r))) t.oneofs.push(o); for (const o of t.nestedMessages) Ol(o, e, n) } function Mc(t, e, n, l) { var i, o, r, c, a; const d = hu(t.name, t.value) , s = { kind: "enum", proto: t, deprecated: (o = (i = t.options) === null || i === void 0 ? void 0 : i.deprecated) !== null && o !== void 0 ? o : !1, file: e, parent: n, open: !0, name: t.name, typeName: hl(t, n, e), value: {}, values: [], sharedPrefix: d, toString() { return `enum ${this.typeName}` } }; s.open = fu(s), l.add(s); for (const u of t.value) { const b = u.name; s.values.push(s.value[u.number] = { kind: "enum_value", proto: u, deprecated: (c = (r = u.options) === null || r === void 0 ? void 0 : r.deprecated) !== null && c !== void 0 ? c : !1, parent: s, name: b, localName: hn(d == null ? b : b.substring(d.length)), number: u.number, toString() { return `enum value ${s.typeName}.${b}` } }) } ((a = n == null ? void 0 : n.nestedEnums) !== null && a !== void 0 ? a : e.enums).push(s) } function Tc(t, e, n, l, i) { var o, r, c, a; const d = { kind: "message", proto: t, deprecated: (r = (o = t.options) === null || o === void 0 ? void 0 : o.deprecated) !== null && r !== void 0 ? r : !1, file: e, parent: n, name: t.name, typeName: hl(t, n, e), fields: [], field: {}, oneofs: [], members: [], nestedEnums: [], nestedMessages: [], nestedExtensions: [], toString() { return `message ${this.typeName}` } }; ((c = t.options) === null || c === void 0 ? void 0 : c.mapEntry) === !0 ? i.add(d) : (((a = n == null ? void 0 : n.nestedMessages) !== null && a !== void 0 ? a : e.messages).push(d), l.add(d)); for (const s of t.enumType) Mc(s, e, d, l); for (const s of t.nestedType) Tc(s, e, d, l, i) } function au(t, e, n) { var l, i; const o = { kind: "service", proto: t, deprecated: (i = (l = t.options) === null || l === void 0 ? void 0 : l.deprecated) !== null && i !== void 0 ? i : !1, file: e, name: t.name, typeName: hl(t, void 0, e), methods: [], method: {}, toString() { return `service ${this.typeName}` } }; e.services.push(o), n.add(o); for (const r of t.method) { const c = du(r, o, n); o.methods.push(c), o.method[c.localName] = c } } function du(t, e, n) { var l, i, o, r; let c; t.clientStreaming && t.serverStreaming ? c = "bidi_streaming" : t.clientStreaming ? c = "client_streaming" : t.serverStreaming ? c = "server_streaming" : c = "unary"; const a = n.getMessage(gt(t.inputType)) , d = n.getMessage(gt(t.outputType)); nt(a, `invalid MethodDescriptorProto: input_type ${t.inputType} not found`), nt(d, `invalid MethodDescriptorProto: output_type ${t.inputType} not found`); const s = t.name; return { kind: "rpc", proto: t, deprecated: (i = (l = t.options) === null || l === void 0 ? void 0 : l.deprecated) !== null && i !== void 0 ? i : !1, parent: e, name: s, localName: hn(s.length ? hn(s[0].toLowerCase() + s.substring(1)) : s), methodKind: c, input: a, output: d, idempotency: (r = (o = t.options) === null || o === void 0 ? void 0 : o.idempotencyLevel) !== null && r !== void 0 ? r : lu, toString() { return `rpc ${e.typeName}.${s}` } } } function su(t, e) { return { kind: "oneof", proto: t, deprecated: !1, parent: e, fields: [], name: t.name, localName: hn(gn(t.name)), toString() { return `oneof ${e.typeName}.${this.name}` } } } function $l(t, e, n, l, i) { var o, r, c; const a = i === void 0 , d = { kind: "field", proto: t, deprecated: (r = (o = t.options) === null || o === void 0 ? void 0 : o.deprecated) !== null && r !== void 0 ? r : !1, name: t.name, number: t.number, scalar: void 0, message: void 0, enum: void 0, presence: mu(t, l, a, e), listKind: void 0, mapKind: void 0, mapKey: void 0, delimitedEncoding: void 0, packed: void 0, longAsString: !1, getDefaultValue: void 0 }; if (a) { const g = e.kind == "file" ? e : e.file , V = e.kind == "file" ? void 0 : e , p = hl(t, V, g); d.kind = "extension", d.file = g, d.parent = V, d.oneof = void 0, d.typeName = p, d.jsonName = `[${p}]`, d.toString = () => `extension ${p}`; const X = n.getMessage(gt(t.extendee)); nt(X, `invalid FieldDescriptorProto: extendee ${t.extendee} not found`), d.extendee = X } else { const g = e; nt(g.kind == "message"), d.parent = g, d.oneof = l, d.localName = l ? gn(t.name) : hn(gn(t.name)), d.jsonName = t.jsonName, d.toString = () => `field ${g.typeName}.${t.name}` } const s = t.label , u = t.type , b = (c = t.options) === null || c === void 0 ? void 0 : c.jstype; if (s === Fi) { const g = u == on ? i == null ? void 0 : i.get(gt(t.typeName)) : void 0; if (g) { d.fieldKind = "map"; const {key: V, value: p} = Zu(g); return d.mapKey = V.scalar, d.mapKind = p.fieldKind, d.message = p.message, d.delimitedEncoding = !1, d.enum = p.enum, d.scalar = p.scalar, d } switch (d.fieldKind = "list", u) { case on: case bn: d.listKind = "message", d.message = n.getMessage(gt(t.typeName)), nt(d.message), d.delimitedEncoding = yo(t, e); break; case Io: d.listKind = "enum", d.enum = n.getEnum(gt(t.typeName)), nt(d.enum); break; default: d.listKind = "scalar", d.scalar = u, d.longAsString = b == Ro; break } return d.packed = Au(t, e), d } switch (u) { case on: case bn: d.fieldKind = "message", d.message = n.getMessage(gt(t.typeName)), nt(d.message, `invalid FieldDescriptorProto: type_name ${t.typeName} not found`), d.delimitedEncoding = yo(t, e), d.getDefaultValue = () => {} ; break; case Io: { const g = n.getEnum(gt(t.typeName)); nt(g !== void 0, `invalid FieldDescriptorProto: type_name ${t.typeName} not found`), d.fieldKind = "enum", d.enum = n.getEnum(gt(t.typeName)), d.getDefaultValue = () => un(t, "defaultValue") ? js(g, t.defaultValue) : void 0; break } default: { d.fieldKind = "scalar", d.scalar = u, d.longAsString = b == Ro, d.getDefaultValue = () => un(t, "defaultValue") ? _s(u, t.defaultValue) : void 0; break } } return d } function uu(t) { switch (t.syntax) { case "": case "proto2": return $s; case "proto3": return qs; case "editions": if (t.edition in Lc) return t.edition; throw new Error(`${t.name}: unsupported edition`); default: throw new Error(`${t.name}: unsupported syntax "${t.syntax}"`) } } function gu(t, e) { return t.dependency.map(n => { const l = e.getFile(n); if (!l) throw new Error(`Cannot find ${n}, imported by ${t.name}`); return l } ) } function hu(t, e) { const n = bu(t) + "_"; for (const l of e) { if (!l.name.toLowerCase().startsWith(n)) return; const i = l.name.substring(n.length); if (i.length == 0 || /^\d/.test(i)) return } return n } function bu(t) { return (t.substring(0, 1) + t.substring(1).replace(/[A-Z]/g, e => "_" + e)).toLowerCase() } function hl(t, e, n) { let l; return e ? l = `${e.typeName}.${t.name}` : n.proto.package.length > 0 ? l = `${n.proto.package}.${t.name}` : l = `${t.name}`, l } function gt(t) { return t.startsWith(".") ? t.substring(1) : t } function Vu(t, e) { if (!un(t, "oneofIndex") || t.proto3Optional) return; const n = e[t.oneofIndex]; return nt(n, `invalid FieldDescriptorProto: oneof #${t.oneofIndex} for field #${t.number} not found`), n } function mu(t, e, n, l) { if (t.label == nu) return iu; if (t.label == Fi) return Eo; if (e || t.proto3Optional || n) return Ul; const i = Tt("fieldPresence", { proto: t, parent: l }); return i == Eo && (t.type == on || t.type == bn) ? Ul : i } function Au(t, e) { if (t.label != Fi) return !1; switch (t.type) { case eu: case tu: case bn: case on: return !1 } const n = t.options; return n && un(n, "packed") ? n.packed : ou == Tt("repeatedFieldEncoding", { proto: t, parent: e }) } function Zu(t) { const e = t.fields.find(l => l.number === 1) , n = t.fields.find(l => l.number === 2); return nt(e && e.fieldKind == "scalar" && e.scalar != m.BYTES && e.scalar != m.FLOAT && e.scalar != m.DOUBLE && n && n.fieldKind != "list" && n.fieldKind != "map"), { key: e, value: n } } function fu(t) { var e; return cu == Tt("enumType", { proto: t.proto, parent: (e = t.parent) !== null && e !== void 0 ? e : t.file }) } function yo(t, e) { return t.type == bn ? !0 : ru == Tt("messageEncoding", { proto: t, parent: e }) } function Tt(t, e) { var n, l; const i = (n = e.proto.options) === null || n === void 0 ? void 0 : n.features; if (i) { const o = i[t]; if (o != 0) return o } if ("kind"in e) { if (e.kind == "message") return Tt(t, (l = e.parent) !== null && l !== void 0 ? l : e.file); const o = Lc[e.edition]; if (!o) throw new Error(`feature default for edition ${e.edition} not found`); return o[t] } return Tt(t, e.parent) } function nt(t, e) { if (!t) throw new Error(e) } function pu(t) { const e = Gu(t); return e.messageType.forEach(Ni), Kc(e, () => {} ).getFile(e.name) } function Gu(t) { return Object.assign(Object.create({ syntax: "", edition: 0 }), Object.assign(Object.assign({ $typeName: "google.protobuf.FileDescriptorProto", dependency: [], publicDependency: [], weakDependency: [], service: [], extension: [] }, t), { messageType: t.messageType.map(Hc), enumType: t.enumType.map(Dc) })) } function Hc(t) { var e, n, l, i, o, r, c, a; return { $typeName: "google.protobuf.DescriptorProto", name: t.name, field: (n = (e = t.field) === null || e === void 0 ? void 0 : e.map(Xu)) !== null && n !== void 0 ? n : [], extension: [], nestedType: (i = (l = t.nestedType) === null || l === void 0 ? void 0 : l.map(Hc)) !== null && i !== void 0 ? i : [], enumType: (r = (o = t.enumType) === null || o === void 0 ? void 0 : o.map(Dc)) !== null && r !== void 0 ? r : [], extensionRange: (a = (c = t.extensionRange) === null || c === void 0 ? void 0 : c.map(d => Object.assign({ $typeName: "google.protobuf.DescriptorProto.ExtensionRange" }, d))) !== null && a !== void 0 ? a : [], oneofDecl: [], reservedRange: [], reservedName: [] } } function Xu(t) { return Object.assign(Object.create({ label: 1, typeName: "", extendee: "", defaultValue: "", oneofIndex: 0, jsonName: "", proto3Optional: !1 }), Object.assign(Object.assign({ $typeName: "google.protobuf.FieldDescriptorProto" }, t), { options: t.options ? Iu(t.options) : void 0 })) } function Iu(t) { var e, n, l; return Object.assign(Object.create({ ctype: 0, packed: !1, jstype: 0, lazy: !1, unverifiedLazy: !1, deprecated: !1, weak: !1, debugRedact: !1, retention: 0 }), Object.assign(Object.assign({ $typeName: "google.protobuf.FieldOptions" }, t), { targets: (e = t.targets) !== null && e !== void 0 ? e : [], editionDefaults: (l = (n = t.editionDefaults) === null || n === void 0 ? void 0 : n.map(o => Object.assign({ $typeName: "google.protobuf.FieldOptions.EditionDefault" }, o))) !== null && l !== void 0 ? l : [], uninterpretedOption: [] })) } function Dc(t) { return { $typeName: "google.protobuf.EnumDescriptorProto", name: t.name, reservedName: [], reservedRange: [], value: t.value.map(e => Object.assign({ $typeName: "google.protobuf.EnumValueDescriptorProto" }, e)) } } function Gn(t, e, ...n) { return n.reduce( (l, i) => l.nestedMessages[i], t.messages[e]) } const jc = pu({ name: "google/protobuf/descriptor.proto", package: "google.protobuf", messageType: [{ name: "FileDescriptorSet", field: [{ name: "file", number: 1, type: 11, label: 3, typeName: ".google.protobuf.FileDescriptorProto" }], extensionRange: [{ start: 536e6, end: 536000001 }] }, { name: "FileDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "package", number: 2, type: 9, label: 1 }, { name: "dependency", number: 3, type: 9, label: 3 }, { name: "public_dependency", number: 10, type: 5, label: 3 }, { name: "weak_dependency", number: 11, type: 5, label: 3 }, { name: "message_type", number: 4, type: 11, label: 3, typeName: ".google.protobuf.DescriptorProto" }, { name: "enum_type", number: 5, type: 11, label: 3, typeName: ".google.protobuf.EnumDescriptorProto" }, { name: "service", number: 6, type: 11, label: 3, typeName: ".google.protobuf.ServiceDescriptorProto" }, { name: "extension", number: 7, type: 11, label: 3, typeName: ".google.protobuf.FieldDescriptorProto" }, { name: "options", number: 8, type: 11, label: 1, typeName: ".google.protobuf.FileOptions" }, { name: "source_code_info", number: 9, type: 11, label: 1, typeName: ".google.protobuf.SourceCodeInfo" }, { name: "syntax", number: 12, type: 9, label: 1 }, { name: "edition", number: 14, type: 14, label: 1, typeName: ".google.protobuf.Edition" }] }, { name: "DescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "field", number: 2, type: 11, label: 3, typeName: ".google.protobuf.FieldDescriptorProto" }, { name: "extension", number: 6, type: 11, label: 3, typeName: ".google.protobuf.FieldDescriptorProto" }, { name: "nested_type", number: 3, type: 11, label: 3, typeName: ".google.protobuf.DescriptorProto" }, { name: "enum_type", number: 4, type: 11, label: 3, typeName: ".google.protobuf.EnumDescriptorProto" }, { name: "extension_range", number: 5, type: 11, label: 3, typeName: ".google.protobuf.DescriptorProto.ExtensionRange" }, { name: "oneof_decl", number: 8, type: 11, label: 3, typeName: ".google.protobuf.OneofDescriptorProto" }, { name: "options", number: 7, type: 11, label: 1, typeName: ".google.protobuf.MessageOptions" }, { name: "reserved_range", number: 9, type: 11, label: 3, typeName: ".google.protobuf.DescriptorProto.ReservedRange" }, { name: "reserved_name", number: 10, type: 9, label: 3 }], nestedType: [{ name: "ExtensionRange", field: [{ name: "start", number: 1, type: 5, label: 1 }, { name: "end", number: 2, type: 5, label: 1 }, { name: "options", number: 3, type: 11, label: 1, typeName: ".google.protobuf.ExtensionRangeOptions" }] }, { name: "ReservedRange", field: [{ name: "start", number: 1, type: 5, label: 1 }, { name: "end", number: 2, type: 5, label: 1 }] }] }, { name: "ExtensionRangeOptions", field: [{ name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }, { name: "declaration", number: 2, type: 11, label: 3, typeName: ".google.protobuf.ExtensionRangeOptions.Declaration", options: { retention: 2 } }, { name: "features", number: 50, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "verification", number: 3, type: 14, label: 1, typeName: ".google.protobuf.ExtensionRangeOptions.VerificationState", defaultValue: "UNVERIFIED", options: { retention: 2 } }], nestedType: [{ name: "Declaration", field: [{ name: "number", number: 1, type: 5, label: 1 }, { name: "full_name", number: 2, type: 9, label: 1 }, { name: "type", number: 3, type: 9, label: 1 }, { name: "reserved", number: 5, type: 8, label: 1 }, { name: "repeated", number: 6, type: 8, label: 1 }] }], enumType: [{ name: "VerificationState", value: [{ name: "DECLARATION", number: 0 }, { name: "UNVERIFIED", number: 1 }] }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "FieldDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "number", number: 3, type: 5, label: 1 }, { name: "label", number: 4, type: 14, label: 1, typeName: ".google.protobuf.FieldDescriptorProto.Label" }, { name: "type", number: 5, type: 14, label: 1, typeName: ".google.protobuf.FieldDescriptorProto.Type" }, { name: "type_name", number: 6, type: 9, label: 1 }, { name: "extendee", number: 2, type: 9, label: 1 }, { name: "default_value", number: 7, type: 9, label: 1 }, { name: "oneof_index", number: 9, type: 5, label: 1 }, { name: "json_name", number: 10, type: 9, label: 1 }, { name: "options", number: 8, type: 11, label: 1, typeName: ".google.protobuf.FieldOptions" }, { name: "proto3_optional", number: 17, type: 8, label: 1 }], enumType: [{ name: "Type", value: [{ name: "TYPE_DOUBLE", number: 1 }, { name: "TYPE_FLOAT", number: 2 }, { name: "TYPE_INT64", number: 3 }, { name: "TYPE_UINT64", number: 4 }, { name: "TYPE_INT32", number: 5 }, { name: "TYPE_FIXED64", number: 6 }, { name: "TYPE_FIXED32", number: 7 }, { name: "TYPE_BOOL", number: 8 }, { name: "TYPE_STRING", number: 9 }, { name: "TYPE_GROUP", number: 10 }, { name: "TYPE_MESSAGE", number: 11 }, { name: "TYPE_BYTES", number: 12 }, { name: "TYPE_UINT32", number: 13 }, { name: "TYPE_ENUM", number: 14 }, { name: "TYPE_SFIXED32", number: 15 }, { name: "TYPE_SFIXED64", number: 16 }, { name: "TYPE_SINT32", number: 17 }, { name: "TYPE_SINT64", number: 18 }] }, { name: "Label", value: [{ name: "LABEL_OPTIONAL", number: 1 }, { name: "LABEL_REPEATED", number: 3 }, { name: "LABEL_REQUIRED", number: 2 }] }] }, { name: "OneofDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "options", number: 2, type: 11, label: 1, typeName: ".google.protobuf.OneofOptions" }] }, { name: "EnumDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "value", number: 2, type: 11, label: 3, typeName: ".google.protobuf.EnumValueDescriptorProto" }, { name: "options", number: 3, type: 11, label: 1, typeName: ".google.protobuf.EnumOptions" }, { name: "reserved_range", number: 4, type: 11, label: 3, typeName: ".google.protobuf.EnumDescriptorProto.EnumReservedRange" }, { name: "reserved_name", number: 5, type: 9, label: 3 }], nestedType: [{ name: "EnumReservedRange", field: [{ name: "start", number: 1, type: 5, label: 1 }, { name: "end", number: 2, type: 5, label: 1 }] }] }, { name: "EnumValueDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "number", number: 2, type: 5, label: 1 }, { name: "options", number: 3, type: 11, label: 1, typeName: ".google.protobuf.EnumValueOptions" }] }, { name: "ServiceDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "method", number: 2, type: 11, label: 3, typeName: ".google.protobuf.MethodDescriptorProto" }, { name: "options", number: 3, type: 11, label: 1, typeName: ".google.protobuf.ServiceOptions" }] }, { name: "MethodDescriptorProto", field: [{ name: "name", number: 1, type: 9, label: 1 }, { name: "input_type", number: 2, type: 9, label: 1 }, { name: "output_type", number: 3, type: 9, label: 1 }, { name: "options", number: 4, type: 11, label: 1, typeName: ".google.protobuf.MethodOptions" }, { name: "client_streaming", number: 5, type: 8, label: 1, defaultValue: "false" }, { name: "server_streaming", number: 6, type: 8, label: 1, defaultValue: "false" }] }, { name: "FileOptions", field: [{ name: "java_package", number: 1, type: 9, label: 1 }, { name: "java_outer_classname", number: 8, type: 9, label: 1 }, { name: "java_multiple_files", number: 10, type: 8, label: 1, defaultValue: "false" }, { name: "java_generate_equals_and_hash", number: 20, type: 8, label: 1, options: { deprecated: !0 } }, { name: "java_string_check_utf8", number: 27, type: 8, label: 1, defaultValue: "false" }, { name: "optimize_for", number: 9, type: 14, label: 1, typeName: ".google.protobuf.FileOptions.OptimizeMode", defaultValue: "SPEED" }, { name: "go_package", number: 11, type: 9, label: 1 }, { name: "cc_generic_services", number: 16, type: 8, label: 1, defaultValue: "false" }, { name: "java_generic_services", number: 17, type: 8, label: 1, defaultValue: "false" }, { name: "py_generic_services", number: 18, type: 8, label: 1, defaultValue: "false" }, { name: "deprecated", number: 23, type: 8, label: 1, defaultValue: "false" }, { name: "cc_enable_arenas", number: 31, type: 8, label: 1, defaultValue: "true" }, { name: "objc_class_prefix", number: 36, type: 9, label: 1 }, { name: "csharp_namespace", number: 37, type: 9, label: 1 }, { name: "swift_prefix", number: 39, type: 9, label: 1 }, { name: "php_class_prefix", number: 40, type: 9, label: 1 }, { name: "php_namespace", number: 41, type: 9, label: 1 }, { name: "php_metadata_namespace", number: 44, type: 9, label: 1 }, { name: "ruby_package", number: 45, type: 9, label: 1 }, { name: "features", number: 50, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], enumType: [{ name: "OptimizeMode", value: [{ name: "SPEED", number: 1 }, { name: "CODE_SIZE", number: 2 }, { name: "LITE_RUNTIME", number: 3 }] }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "MessageOptions", field: [{ name: "message_set_wire_format", number: 1, type: 8, label: 1, defaultValue: "false" }, { name: "no_standard_descriptor_accessor", number: 2, type: 8, label: 1, defaultValue: "false" }, { name: "deprecated", number: 3, type: 8, label: 1, defaultValue: "false" }, { name: "map_entry", number: 7, type: 8, label: 1 }, { name: "deprecated_legacy_json_field_conflicts", number: 11, type: 8, label: 1, options: { deprecated: !0 } }, { name: "features", number: 12, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "FieldOptions", field: [{ name: "ctype", number: 1, type: 14, label: 1, typeName: ".google.protobuf.FieldOptions.CType", defaultValue: "STRING" }, { name: "packed", number: 2, type: 8, label: 1 }, { name: "jstype", number: 6, type: 14, label: 1, typeName: ".google.protobuf.FieldOptions.JSType", defaultValue: "JS_NORMAL" }, { name: "lazy", number: 5, type: 8, label: 1, defaultValue: "false" }, { name: "unverified_lazy", number: 15, type: 8, label: 1, defaultValue: "false" }, { name: "deprecated", number: 3, type: 8, label: 1, defaultValue: "false" }, { name: "weak", number: 10, type: 8, label: 1, defaultValue: "false" }, { name: "debug_redact", number: 16, type: 8, label: 1, defaultValue: "false" }, { name: "retention", number: 17, type: 14, label: 1, typeName: ".google.protobuf.FieldOptions.OptionRetention" }, { name: "targets", number: 19, type: 14, label: 3, typeName: ".google.protobuf.FieldOptions.OptionTargetType" }, { name: "edition_defaults", number: 20, type: 11, label: 3, typeName: ".google.protobuf.FieldOptions.EditionDefault" }, { name: "features", number: 21, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "feature_support", number: 22, type: 11, label: 1, typeName: ".google.protobuf.FieldOptions.FeatureSupport" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], nestedType: [{ name: "EditionDefault", field: [{ name: "edition", number: 3, type: 14, label: 1, typeName: ".google.protobuf.Edition" }, { name: "value", number: 2, type: 9, label: 1 }] }, { name: "FeatureSupport", field: [{ name: "edition_introduced", number: 1, type: 14, label: 1, typeName: ".google.protobuf.Edition" }, { name: "edition_deprecated", number: 2, type: 14, label: 1, typeName: ".google.protobuf.Edition" }, { name: "deprecation_warning", number: 3, type: 9, label: 1 }, { name: "edition_removed", number: 4, type: 14, label: 1, typeName: ".google.protobuf.Edition" }] }], enumType: [{ name: "CType", value: [{ name: "STRING", number: 0 }, { name: "CORD", number: 1 }, { name: "STRING_PIECE", number: 2 }] }, { name: "JSType", value: [{ name: "JS_NORMAL", number: 0 }, { name: "JS_STRING", number: 1 }, { name: "JS_NUMBER", number: 2 }] }, { name: "OptionRetention", value: [{ name: "RETENTION_UNKNOWN", number: 0 }, { name: "RETENTION_RUNTIME", number: 1 }, { name: "RETENTION_SOURCE", number: 2 }] }, { name: "OptionTargetType", value: [{ name: "TARGET_TYPE_UNKNOWN", number: 0 }, { name: "TARGET_TYPE_FILE", number: 1 }, { name: "TARGET_TYPE_EXTENSION_RANGE", number: 2 }, { name: "TARGET_TYPE_MESSAGE", number: 3 }, { name: "TARGET_TYPE_FIELD", number: 4 }, { name: "TARGET_TYPE_ONEOF", number: 5 }, { name: "TARGET_TYPE_ENUM", number: 6 }, { name: "TARGET_TYPE_ENUM_ENTRY", number: 7 }, { name: "TARGET_TYPE_SERVICE", number: 8 }, { name: "TARGET_TYPE_METHOD", number: 9 }] }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "OneofOptions", field: [{ name: "features", number: 1, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "EnumOptions", field: [{ name: "allow_alias", number: 2, type: 8, label: 1 }, { name: "deprecated", number: 3, type: 8, label: 1, defaultValue: "false" }, { name: "deprecated_legacy_json_field_conflicts", number: 6, type: 8, label: 1, options: { deprecated: !0 } }, { name: "features", number: 7, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "EnumValueOptions", field: [{ name: "deprecated", number: 1, type: 8, label: 1, defaultValue: "false" }, { name: "features", number: 2, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "debug_redact", number: 3, type: 8, label: 1, defaultValue: "false" }, { name: "feature_support", number: 4, type: 11, label: 1, typeName: ".google.protobuf.FieldOptions.FeatureSupport" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "ServiceOptions", field: [{ name: "features", number: 34, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "deprecated", number: 33, type: 8, label: 1, defaultValue: "false" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "MethodOptions", field: [{ name: "deprecated", number: 33, type: 8, label: 1, defaultValue: "false" }, { name: "idempotency_level", number: 34, type: 14, label: 1, typeName: ".google.protobuf.MethodOptions.IdempotencyLevel", defaultValue: "IDEMPOTENCY_UNKNOWN" }, { name: "features", number: 35, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "uninterpreted_option", number: 999, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption" }], enumType: [{ name: "IdempotencyLevel", value: [{ name: "IDEMPOTENCY_UNKNOWN", number: 0 }, { name: "NO_SIDE_EFFECTS", number: 1 }, { name: "IDEMPOTENT", number: 2 }] }], extensionRange: [{ start: 1e3, end: 536870912 }] }, { name: "UninterpretedOption", field: [{ name: "name", number: 2, type: 11, label: 3, typeName: ".google.protobuf.UninterpretedOption.NamePart" }, { name: "identifier_value", number: 3, type: 9, label: 1 }, { name: "positive_int_value", number: 4, type: 4, label: 1 }, { name: "negative_int_value", number: 5, type: 3, label: 1 }, { name: "double_value", number: 6, type: 1, label: 1 }, { name: "string_value", number: 7, type: 12, label: 1 }, { name: "aggregate_value", number: 8, type: 9, label: 1 }], nestedType: [{ name: "NamePart", field: [{ name: "name_part", number: 1, type: 9, label: 2 }, { name: "is_extension", number: 2, type: 8, label: 2 }] }] }, { name: "FeatureSet", field: [{ name: "field_presence", number: 1, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.FieldPresence", options: { retention: 1, targets: [4, 1], editionDefaults: [{ value: "EXPLICIT", edition: 900 }, { value: "IMPLICIT", edition: 999 }, { value: "EXPLICIT", edition: 1e3 }] } }, { name: "enum_type", number: 2, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.EnumType", options: { retention: 1, targets: [6, 1], editionDefaults: [{ value: "CLOSED", edition: 900 }, { value: "OPEN", edition: 999 }] } }, { name: "repeated_field_encoding", number: 3, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.RepeatedFieldEncoding", options: { retention: 1, targets: [4, 1], editionDefaults: [{ value: "EXPANDED", edition: 900 }, { value: "PACKED", edition: 999 }] } }, { name: "utf8_validation", number: 4, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.Utf8Validation", options: { retention: 1, targets: [4, 1], editionDefaults: [{ value: "NONE", edition: 900 }, { value: "VERIFY", edition: 999 }] } }, { name: "message_encoding", number: 5, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.MessageEncoding", options: { retention: 1, targets: [4, 1], editionDefaults: [{ value: "LENGTH_PREFIXED", edition: 900 }] } }, { name: "json_format", number: 6, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.JsonFormat", options: { retention: 1, targets: [3, 6, 1], editionDefaults: [{ value: "LEGACY_BEST_EFFORT", edition: 900 }, { value: "ALLOW", edition: 999 }] } }, { name: "enforce_naming_style", number: 7, type: 14, label: 1, typeName: ".google.protobuf.FeatureSet.EnforceNamingStyle", options: { retention: 2, targets: [1, 2, 3, 4, 5, 6, 7, 8, 9], editionDefaults: [{ value: "STYLE_LEGACY", edition: 900 }, { value: "STYLE2024", edition: 1001 }] } }], enumType: [{ name: "FieldPresence", value: [{ name: "FIELD_PRESENCE_UNKNOWN", number: 0 }, { name: "EXPLICIT", number: 1 }, { name: "IMPLICIT", number: 2 }, { name: "LEGACY_REQUIRED", number: 3 }] }, { name: "EnumType", value: [{ name: "ENUM_TYPE_UNKNOWN", number: 0 }, { name: "OPEN", number: 1 }, { name: "CLOSED", number: 2 }] }, { name: "RepeatedFieldEncoding", value: [{ name: "REPEATED_FIELD_ENCODING_UNKNOWN", number: 0 }, { name: "PACKED", number: 1 }, { name: "EXPANDED", number: 2 }] }, { name: "Utf8Validation", value: [{ name: "UTF8_VALIDATION_UNKNOWN", number: 0 }, { name: "VERIFY", number: 2 }, { name: "NONE", number: 3 }] }, { name: "MessageEncoding", value: [{ name: "MESSAGE_ENCODING_UNKNOWN", number: 0 }, { name: "LENGTH_PREFIXED", number: 1 }, { name: "DELIMITED", number: 2 }] }, { name: "JsonFormat", value: [{ name: "JSON_FORMAT_UNKNOWN", number: 0 }, { name: "ALLOW", number: 1 }, { name: "LEGACY_BEST_EFFORT", number: 2 }] }, { name: "EnforceNamingStyle", value: [{ name: "ENFORCE_NAMING_STYLE_UNKNOWN", number: 0 }, { name: "STYLE2024", number: 1 }, { name: "STYLE_LEGACY", number: 2 }] }], extensionRange: [{ start: 1e3, end: 9995 }, { start: 9995, end: 1e4 }, { start: 1e4, end: 10001 }] }, { name: "FeatureSetDefaults", field: [{ name: "defaults", number: 1, type: 11, label: 3, typeName: ".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault" }, { name: "minimum_edition", number: 4, type: 14, label: 1, typeName: ".google.protobuf.Edition" }, { name: "maximum_edition", number: 5, type: 14, label: 1, typeName: ".google.protobuf.Edition" }], nestedType: [{ name: "FeatureSetEditionDefault", field: [{ name: "edition", number: 3, type: 14, label: 1, typeName: ".google.protobuf.Edition" }, { name: "overridable_features", number: 4, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }, { name: "fixed_features", number: 5, type: 11, label: 1, typeName: ".google.protobuf.FeatureSet" }] }] }, { name: "SourceCodeInfo", field: [{ name: "location", number: 1, type: 11, label: 3, typeName: ".google.protobuf.SourceCodeInfo.Location" }], nestedType: [{ name: "Location", field: [{ name: "path", number: 1, type: 5, label: 3, options: { packed: !0 } }, { name: "span", number: 2, type: 5, label: 3, options: { packed: !0 } }, { name: "leading_comments", number: 3, type: 9, label: 1 }, { name: "trailing_comments", number: 4, type: 9, label: 1 }, { name: "leading_detached_comments", number: 6, type: 9, label: 3 }] }], extensionRange: [{ start: 536e6, end: 536000001 }] }, { name: "GeneratedCodeInfo", field: [{ name: "annotation", number: 1, type: 11, label: 3, typeName: ".google.protobuf.GeneratedCodeInfo.Annotation" }], nestedType: [{ name: "Annotation", field: [{ name: "path", number: 1, type: 5, label: 3, options: { packed: !0 } }, { name: "source_file", number: 2, type: 9, label: 1 }, { name: "begin", number: 3, type: 5, label: 1 }, { name: "end", number: 4, type: 5, label: 1 }, { name: "semantic", number: 5, type: 14, label: 1, typeName: ".google.protobuf.GeneratedCodeInfo.Annotation.Semantic" }], enumType: [{ name: "Semantic", value: [{ name: "NONE", number: 0 }, { name: "SET", number: 1 }, { name: "ALIAS", number: 2 }] }] }] }], enumType: [{ name: "Edition", value: [{ name: "EDITION_UNKNOWN", number: 0 }, { name: "EDITION_LEGACY", number: 900 }, { name: "EDITION_PROTO2", number: 998 }, { name: "EDITION_PROTO3", number: 999 }, { name: "EDITION_2023", number: 1e3 }, { name: "EDITION_2024", number: 1001 }, { name: "EDITION_1_TEST_ONLY", number: 1 }, { name: "EDITION_2_TEST_ONLY", number: 2 }, { name: "EDITION_99997_TEST_ONLY", number: 99997 }, { name: "EDITION_99998_TEST_ONLY", number: 99998 }, { name: "EDITION_99999_TEST_ONLY", number: 99999 }, { name: "EDITION_MAX", number: 2147483647 }] }] }) , Ru = Gn(jc, 1); var So; (function(t) { t[t.DECLARATION = 0] = "DECLARATION", t[t.UNVERIFIED = 1] = "UNVERIFIED" } )(So || (So = {})); var Wo; (function(t) { t[t.DOUBLE = 1] = "DOUBLE", t[t.FLOAT = 2] = "FLOAT", t[t.INT64 = 3] = "INT64", t[t.UINT64 = 4] = "UINT64", t[t.INT32 = 5] = "INT32", t[t.FIXED64 = 6] = "FIXED64", t[t.FIXED32 = 7] = "FIXED32", t[t.BOOL = 8] = "BOOL", t[t.STRING = 9] = "STRING", t[t.GROUP = 10] = "GROUP", t[t.MESSAGE = 11] = "MESSAGE", t[t.BYTES = 12] = "BYTES", t[t.UINT32 = 13] = "UINT32", t[t.ENUM = 14] = "ENUM", t[t.SFIXED32 = 15] = "SFIXED32", t[t.SFIXED64 = 16] = "SFIXED64", t[t.SINT32 = 17] = "SINT32", t[t.SINT64 = 18] = "SINT64" } )(Wo || (Wo = {})); var vo; (function(t) { t[t.OPTIONAL = 1] = "OPTIONAL", t[t.REPEATED = 3] = "REPEATED", t[t.REQUIRED = 2] = "REQUIRED" } )(vo || (vo = {})); var Bo; (function(t) { t[t.SPEED = 1] = "SPEED", t[t.CODE_SIZE = 2] = "CODE_SIZE", t[t.LITE_RUNTIME = 3] = "LITE_RUNTIME" } )(Bo || (Bo = {})); var No; (function(t) { t[t.STRING = 0] = "STRING", t[t.CORD = 1] = "CORD", t[t.STRING_PIECE = 2] = "STRING_PIECE" } )(No || (No = {})); var Fo; (function(t) { t[t.JS_NORMAL = 0] = "JS_NORMAL", t[t.JS_STRING = 1] = "JS_STRING", t[t.JS_NUMBER = 2] = "JS_NUMBER" } )(Fo || (Fo = {})); var Yo; (function(t) { t[t.RETENTION_UNKNOWN = 0] = "RETENTION_UNKNOWN", t[t.RETENTION_RUNTIME = 1] = "RETENTION_RUNTIME", t[t.RETENTION_SOURCE = 2] = "RETENTION_SOURCE" } )(Yo || (Yo = {})); var Uo; (function(t) { t[t.TARGET_TYPE_UNKNOWN = 0] = "TARGET_TYPE_UNKNOWN", t[t.TARGET_TYPE_FILE = 1] = "TARGET_TYPE_FILE", t[t.TARGET_TYPE_EXTENSION_RANGE = 2] = "TARGET_TYPE_EXTENSION_RANGE", t[t.TARGET_TYPE_MESSAGE = 3] = "TARGET_TYPE_MESSAGE", t[t.TARGET_TYPE_FIELD = 4] = "TARGET_TYPE_FIELD", t[t.TARGET_TYPE_ONEOF = 5] = "TARGET_TYPE_ONEOF", t[t.TARGET_TYPE_ENUM = 6] = "TARGET_TYPE_ENUM", t[t.TARGET_TYPE_ENUM_ENTRY = 7] = "TARGET_TYPE_ENUM_ENTRY", t[t.TARGET_TYPE_SERVICE = 8] = "TARGET_TYPE_SERVICE", t[t.TARGET_TYPE_METHOD = 9] = "TARGET_TYPE_METHOD" } )(Uo || (Uo = {})); var ql; (function(t) { t[t.IDEMPOTENCY_UNKNOWN = 0] = "IDEMPOTENCY_UNKNOWN", t[t.NO_SIDE_EFFECTS = 1] = "NO_SIDE_EFFECTS", t[t.IDEMPOTENT = 2] = "IDEMPOTENT" } )(ql || (ql = {})); var Jo; (function(t) { t[t.FIELD_PRESENCE_UNKNOWN = 0] = "FIELD_PRESENCE_UNKNOWN", t[t.EXPLICIT = 1] = "EXPLICIT", t[t.IMPLICIT = 2] = "IMPLICIT", t[t.LEGACY_REQUIRED = 3] = "LEGACY_REQUIRED" } )(Jo || (Jo = {})); var xo; (function(t) { t[t.ENUM_TYPE_UNKNOWN = 0] = "ENUM_TYPE_UNKNOWN", t[t.OPEN = 1] = "OPEN", t[t.CLOSED = 2] = "CLOSED" } )(xo || (xo = {})); var wo; (function(t) { t[t.REPEATED_FIELD_ENCODING_UNKNOWN = 0] = "REPEATED_FIELD_ENCODING_UNKNOWN", t[t.PACKED = 1] = "PACKED", t[t.EXPANDED = 2] = "EXPANDED" } )(wo || (wo = {})); var ko; (function(t) { t[t.UTF8_VALIDATION_UNKNOWN = 0] = "UTF8_VALIDATION_UNKNOWN", t[t.VERIFY = 2] = "VERIFY", t[t.NONE = 3] = "NONE" } )(ko || (ko = {})); var zo; (function(t) { t[t.MESSAGE_ENCODING_UNKNOWN = 0] = "MESSAGE_ENCODING_UNKNOWN", t[t.LENGTH_PREFIXED = 1] = "LENGTH_PREFIXED", t[t.DELIMITED = 2] = "DELIMITED" } )(zo || (zo = {})); var Qo; (function(t) { t[t.JSON_FORMAT_UNKNOWN = 0] = "JSON_FORMAT_UNKNOWN", t[t.ALLOW = 1] = "ALLOW", t[t.LEGACY_BEST_EFFORT = 2] = "LEGACY_BEST_EFFORT" } )(Qo || (Qo = {})); var Ko; (function(t) { t[t.ENFORCE_NAMING_STYLE_UNKNOWN = 0] = "ENFORCE_NAMING_STYLE_UNKNOWN", t[t.STYLE2024 = 1] = "STYLE2024", t[t.STYLE_LEGACY = 2] = "STYLE_LEGACY" } )(Ko || (Ko = {})); var Lo; (function(t) { t[t.NONE = 0] = "NONE", t[t.SET = 1] = "SET", t[t.ALIAS = 2] = "ALIAS" } )(Lo || (Lo = {})); var Mo; (function(t) { t[t.EDITION_UNKNOWN = 0] = "EDITION_UNKNOWN", t[t.EDITION_LEGACY = 900] = "EDITION_LEGACY", t[t.EDITION_PROTO2 = 998] = "EDITION_PROTO2", t[t.EDITION_PROTO3 = 999] = "EDITION_PROTO3", t[t.EDITION_2023 = 1e3] = "EDITION_2023", t[t.EDITION_2024 = 1001] = "EDITION_2024", t[t.EDITION_1_TEST_ONLY = 1] = "EDITION_1_TEST_ONLY", t[t.EDITION_2_TEST_ONLY = 2] = "EDITION_2_TEST_ONLY", t[t.EDITION_99997_TEST_ONLY = 99997] = "EDITION_99997_TEST_ONLY", t[t.EDITION_99998_TEST_ONLY = 99998] = "EDITION_99998_TEST_ONLY", t[t.EDITION_99999_TEST_ONLY = 99999] = "EDITION_99999_TEST_ONLY", t[t.EDITION_MAX = 2147483647] = "EDITION_MAX" } )(Mo || (Mo = {})); const To = { readUnknownFields: !0 }; function Eu(t) { return t ? Object.assign(Object.assign({}, To), t) : To } function bl(t, e, n) { const l = Pe(t, void 0, !1); return _c(l, new Ei(e), Eu(n), !1, e.byteLength), l.message } function _c(t, e, n, l, i) { var o; const r = l ? e.len : e.pos + i; let c, a; const d = (o = t.getUnknown()) !== null && o !== void 0 ? o : []; for (; e.pos < r && ([c,a] = e.tag(), !(l && a == re.EndGroup)); ) { const s = t.findNumber(c); if (!s) { const u = e.skip(a, c); n.readUnknownFields && d.push({ no: c, wireType: a, data: u }); continue } Pc(t, e, s, a, n) } if (l && (a != re.EndGroup || c !== i)) throw new Error("invalid end group tag"); d.length > 0 && t.setUnknown(d) } function Pc(t, e, n, l, i) { switch (n.fieldKind) { case "scalar": t.set(n, Ht(e, n.scalar)); break; case "enum": t.set(n, Ht(e, m.INT32)); break; case "message": t.set(n, Yi(e, i, n, t.get(n))); break; case "list": yu(e, l, t.get(n), i); break; case "map": Cu(e, t.get(n), i); break } } function Cu(t, e, n) { const l = e.field(); let i, o; const r = t.pos + t.uint32(); for (; t.pos < r; ) { const [c] = t.tag(); switch (c) { case 1: i = Ht(t, l.mapKey); break; case 2: switch (l.mapKind) { case "scalar": o = Ht(t, l.scalar); break; case "enum": o = t.int32(); break; case "message": o = Yi(t, n, l); break } break } } if (i === void 0 && (i = Bt(l.mapKey, !1)), o === void 0) switch (l.mapKind) { case "scalar": o = Bt(l.scalar, !1); break; case "enum": o = l.enum.values[0].number; break; case "message": o = Pe(l.message, void 0, !1); break } e.set(i, o) } function yu(t, e, n, l) { var i; const o = n.field(); if (o.listKind === "message") { n.add(Yi(t, l, o)); return } const r = (i = o.scalar) !== null && i !== void 0 ? i : m.INT32; if (!(e == re.LengthDelimited && r != m.STRING && r != m.BYTES)) { n.add(Ht(t, r)); return } const a = t.uint32() + t.pos; for (; t.pos < a; ) n.add(Ht(t, r)) } function Yi(t, e, n, l) { const i = n.delimitedEncoding , o = l ?? Pe(n.message, void 0, !1); return _c(o, t, e, i, i ? n.number : t.uint32()), o } function Ht(t, e) { switch (e) { case m.STRING: return t.string(); case m.BOOL: return t.bool(); case m.DOUBLE: return t.double(); case m.FLOAT: return t.float(); case m.INT32: return t.int32(); case m.INT64: return t.int64(); case m.UINT64: return t.uint64(); case m.FIXED64: return t.fixed64(); case m.BYTES: return t.bytes(); case m.FIXED32: return t.fixed32(); case m.SFIXED32: return t.sfixed32(); case m.SFIXED64: return t.sfixed64(); case m.SINT64: return t.sint64(); case m.UINT32: return t.uint32(); case m.SINT32: return t.sint32() } } function x(t, e) { var n; const l = bl(Ru, Bi(t)); return l.messageType.forEach(Ni), l.dependency = (n = e == null ? void 0 : e.map(o => o.proto.name)) !== null && n !== void 0 ? n : [], Kc(l, o => e == null ? void 0 : e.find(r => r.proto.name === o)).getFile(l.name) } const j = x("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM") , Oc = x("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM") , Su = Gn(Oc, 0) , Wu = 3 , Ho = { writeUnknownFields: !0 }; function vu(t) { return t ? Object.assign(Object.assign({}, Ho), t) : Ho } function $c(t, e, n) { return el(new vc, vu(n), Pe(t, e)).finish() } function el(t, e, n) { var l; for (const i of n.sortedFields) { if (!n.isSet(i)) { if (i.presence == Wu) throw new Error(`cannot encode ${i} to binary: required field not set`); continue } qc(t, e, n, i) } if (e.writeUnknownFields) for (const {no: i, wireType: o, data: r} of (l = n.getUnknown()) !== null && l !== void 0 ? l : []) t.tag(i, o).raw(r); return t } function qc(t, e, n, l) { var i; switch (l.fieldKind) { case "scalar": case "enum": tl(t, n.desc.typeName, l.name, (i = l.scalar) !== null && i !== void 0 ? i : m.INT32, l.number, n.get(l)); break; case "list": Bu(t, e, l, n.get(l)); break; case "message": ea(t, e, l, n.get(l)); break; case "map": for (const [o,r] of n.get(l)) Nu(t, e, l, o, r); break } } function tl(t, e, n, l, i, o) { ta(t.tag(i, Fu(l)), e, n, l, o) } function ea(t, e, n, l) { n.delimitedEncoding ? el(t.tag(n.number, re.StartGroup), e, l).tag(n.number, re.EndGroup) : el(t.tag(n.number, re.LengthDelimited).fork(), e, l).join() } function Bu(t, e, n, l) { var i; if (n.listKind == "message") { for (const r of l) ea(t, e, n, r); return } const o = (i = n.scalar) !== null && i !== void 0 ? i : m.INT32; if (n.packed) { if (!l.size) return; t.tag(n.number, re.LengthDelimited).fork(); for (const r of l) ta(t, n.parent.typeName, n.name, o, r); t.join(); return } for (const r of l) tl(t, n.parent.typeName, n.name, o, n.number, r) } function Nu(t, e, n, l, i) { var o; switch (t.tag(n.number, re.LengthDelimited).fork(), tl(t, n.parent.typeName, n.name, n.mapKey, 1, l), n.mapKind) { case "scalar": case "enum": tl(t, n.parent.typeName, n.name, (o = n.scalar) !== null && o !== void 0 ? o : m.INT32, 2, i); break; case "message": el(t.tag(2, re.LengthDelimited).fork(), e, i).join(); break } t.join() } function ta(t, e, n, l, i) { try { switch (l) { case m.STRING: t.string(i); break; case m.BOOL: t.bool(i); break; case m.DOUBLE: t.double(i); break; case m.FLOAT: t.float(i); break; case m.INT32: t.int32(i); break; case m.INT64: t.int64(i); break; case m.UINT64: t.uint64(i); break; case m.FIXED64: t.fixed64(i); break; case m.BYTES: t.bytes(i); break; case m.FIXED32: t.fixed32(i); break; case m.SFIXED32: t.sfixed32(i); break; case m.SFIXED64: t.sfixed64(i); break; case m.SINT64: t.sint64(i); break; case m.UINT32: t.uint32(i); break; case m.SINT32: t.sint32(i); break } } catch (o) { throw o instanceof Error ? new Error(`cannot encode field ${e}.${n} to binary: ${o.message}`) : o } } function Fu(t) { switch (t) { case m.BYTES: case m.STRING: return re.LengthDelimited; case m.DOUBLE: case m.FIXED64: case m.SFIXED64: return re.Bit64; case m.FIXED32: case m.SFIXED32: case m.FLOAT: return re.Bit32; default: return re.Varint } } function Yu(t, e, n) { let l = !1; return n || (n = lt(Su), l = !0), n.value = $c(t, e), n.typeUrl = xu(e.$typeName), l ? n : void 0 } function Uu(t, e) { if (t.typeUrl === "") return !1; const n = typeof e == "string" ? e : e.typeName , l = na(t.typeUrl); return n === l } function Ju(t, e) { if (t.typeUrl === "") return; const n = e.kind == "message" ? e : e.getMessage(na(t.typeUrl)); if (!(!n || !Uu(t, n))) return bl(n, t.value) } function xu(t) { return `type.googleapis.com/${t}` } function na(t) { const e = t.lastIndexOf("/") , n = e >= 0 ? t.substring(e + 1) : t; if (!n.length) throw new Error(`invalid type url: ${t}`); return n } const wu = x("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw") , ku = x("Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIHCgVFbXB0eUJ9ChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3RvUAFaLmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2VtcHR5cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw") , Ne = x("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM") , zu = Gn(Ne, 0) , la = Gn(Ne, 1) , Qu = Gn(Ne, 2); var ei; (function(t) { t[t.NULL_VALUE = 0] = "NULL_VALUE" } )(ei || (ei = {})); function Ku(t, e) { ia(e, t); const n = Mu(t.$unknown, e) , [l,i,o] = Vl(e); for (const r of n) Pc(l, new Ei(r.data), i, r.wireType, { readUnknownFields: !0 }); return o() } function Lu(t, e, n) { var l; ia(e, t); const i = ((l = t.$unknown) !== null && l !== void 0 ? l : []).filter(d => d.no !== e.number) , [o,r] = Vl(e, n) , c = new vc; qc(c, { writeUnknownFields: !0 }, o, r); const a = new Ei(c.finish()); for (; a.pos < a.len; ) { const [d,s] = a.tag() , u = a.skip(s, d); i.push({ no: d, wireType: s, data: u }) } t.$unknown = i } function Mu(t, e) { if (t === void 0) return []; if (e.fieldKind === "enum" || e.fieldKind === "scalar") { for (let n = t.length - 1; n >= 0; --n) if (t[n].no == e.number) return [t[n]]; return [] } return t.filter(n => n.no === e.number) } function Vl(t, e) { const n = t.typeName , l = Object.assign(Object.assign({}, t), { kind: "field", parent: t.extendee, localName: n }) , i = Object.assign(Object.assign({}, t.extendee), { fields: [l], members: [l], oneofs: [] }) , o = lt(i, e !== void 0 ? { [n]: e } : void 0); return [Pe(i, o), l, () => { const r = o[n]; if (r === void 0) { const c = t.message; return pn(c) ? Bt(c.fields[0].scalar, c.fields[0].longAsString) : lt(c) } return r } ] } function ia(t, e) { if (t.extendee.typeName != e.$typeName) throw new Error(`extension ${t.typeName} can only be applied to message ${t.extendee.typeName}`) } const Tu = 3 , Hu = 2 , Do = { alwaysEmitImplicit: !1, enumAsInteger: !1, useProtoFieldName: !1 }; function Du(t) { return t ? Object.assign(Object.assign({}, Do), t) : Do } function ju(t, e, n) { return Xn(Pe(t, e), Du(n)) } function _u(t, e, n) { var l; const i = ju(t, e, n); return JSON.stringify(i, null, (l = n == null ? void 0 : n.prettySpaces) !== null && l !== void 0 ? l : 0) } function Xn(t, e) { var n; const l = qu(t, e); if (l !== void 0) return l; const i = {}; for (const o of t.sortedFields) { if (!t.isSet(o)) { if (o.presence == Tu) throw new Error(`cannot encode ${o} to JSON: required field not set`); if (!e.alwaysEmitImplicit || o.presence !== Hu) continue } const r = jo(o, t.get(o), e); r !== void 0 && (i[$u(o, e)] = r) } if (e.registry) { const o = new Set; for (const {no: r} of (n = t.getUnknown()) !== null && n !== void 0 ? n : []) if (!o.has(r)) { o.add(r); const c = e.registry.getExtensionFor(t.desc, r); if (!c) continue; const a = Ku(t.message, c) , [d,s] = Vl(c, a) , u = jo(s, d.get(s), e); u !== void 0 && (i[c.jsonName] = u) } } return i } function jo(t, e, n) { switch (t.fieldKind) { case "scalar": return ml(t, e); case "message": return Xn(e, n); case "enum": return Ui(t.enum, e, n.enumAsInteger); case "list": return Ou(e, n); case "map": return Pu(e, n) } } function Pu(t, e) { const n = t.field() , l = {}; switch (n.mapKind) { case "scalar": for (const [i,o] of t) l[i] = ml(n, o); break; case "message": for (const [i,o] of t) l[i] = Xn(o, e); break; case "enum": for (const [i,o] of t) l[i] = Ui(n.enum, o, e.enumAsInteger); break } return e.alwaysEmitImplicit || t.size > 0 ? l : void 0 } function Ou(t, e) { const n = t.field() , l = []; switch (n.listKind) { case "scalar": for (const i of t) l.push(ml(n, i)); break; case "enum": for (const i of t) l.push(Ui(n.enum, i, e.enumAsInteger)); break; case "message": for (const i of t) l.push(Xn(i, e)); break } return e.alwaysEmitImplicit || l.length > 0 ? l : void 0 } function Ui(t, e, n) { var l; if (typeof e != "number") throw new Error(`cannot encode ${t} to JSON: expected number, got ${fe(e)}`); if (t.typeName == "google.protobuf.NullValue") return null; if (n) return e; const i = t.value[e]; return (l = i == null ? void 0 : i.name) !== null && l !== void 0 ? l : e } function ml(t, e) { var n, l, i, o, r, c; switch (t.scalar) { case m.INT32: case m.SFIXED32: case m.SINT32: case m.FIXED32: case m.UINT32: if (typeof e != "number") throw new Error(`cannot encode ${t} to JSON: ${(n = It(t, e)) === null || n === void 0 ? void 0 : n.message}`); return e; case m.FLOAT: case m.DOUBLE: if (typeof e != "number") throw new Error(`cannot encode ${t} to JSON: ${(l = It(t, e)) === null || l === void 0 ? void 0 : l.message}`); return Number.isNaN(e) ? "NaN" : e === Number.POSITIVE_INFINITY ? "Infinity" : e === Number.NEGATIVE_INFINITY ? "-Infinity" : e; case m.STRING: if (typeof e != "string") throw new Error(`cannot encode ${t} to JSON: ${(i = It(t, e)) === null || i === void 0 ? void 0 : i.message}`); return e; case m.BOOL: if (typeof e != "boolean") throw new Error(`cannot encode ${t} to JSON: ${(o = It(t, e)) === null || o === void 0 ? void 0 : o.message}`); return e; case m.UINT64: case m.FIXED64: case m.INT64: case m.SFIXED64: case m.SINT64: if (typeof e != "bigint" && typeof e != "string") throw new Error(`cannot encode ${t} to JSON: ${(r = It(t, e)) === null || r === void 0 ? void 0 : r.message}`); return e.toString(); case m.BYTES: if (e instanceof Uint8Array) return zc(e); throw new Error(`cannot encode ${t} to JSON: ${(c = It(t, e)) === null || c === void 0 ? void 0 : c.message}`) } } function $u(t, e) { return e.useProtoFieldName ? t.name : t.jsonName } function qu(t, e) { if (t.desc.typeName.startsWith("google.protobuf.")) switch (t.desc.typeName) { case "google.protobuf.Any": return eg(t.message, e); case "google.protobuf.Timestamp": return lg(t.message); case "google.protobuf.Duration": return tg(t.message); case "google.protobuf.FieldMask": return ng(t.message); case "google.protobuf.Struct": return oa(t.message); case "google.protobuf.Value": return Ji(t.message); case "google.protobuf.ListValue": return ra(t.message); default: if (pn(t.desc)) { const n = t.desc.fields[0]; return ml(n, t.get(n)) } return } } function eg(t, e) { if (t.typeUrl === "") return {}; const {registry: n} = e; let l, i; if (n && (l = Ju(t, n), l && (i = n.getMessage(l.$typeName))), !i || !l) throw new Error(`cannot encode message ${t.$typeName} to JSON: "${t.typeUrl}" is not in the type registry`); let o = Xn(Pe(i, l), e); return (i.typeName.startsWith("google.protobuf.") || o === null || Array.isArray(o) || typeof o != "object") && (o = { value: o }), o["@type"] = t.typeUrl, o } function tg(t) { if (Number(t.seconds) > 315576e6 || Number(t.seconds) < -315576e6) throw new Error(`cannot encode message ${t.$typeName} to JSON: value out of range`); let e = t.seconds.toString(); if (t.nanos !== 0) { let n = Math.abs(t.nanos).toString(); n = "0".repeat(9 - n.length) + n, n.substring(3) === "000000" ? n = n.substring(0, 3) : n.substring(6) === "000" && (n = n.substring(0, 6)), e += "." + n, t.nanos < 0 && Number(t.seconds) == 0 && (e = "-" + e) } return e + "s" } function ng(t) { return t.paths.map(e => { if (e.match(/_[0-9]?_/g) || e.match(/[A-Z]/g)) throw new Error(`cannot encode message ${t.$typeName} to JSON: lowerCamelCase of path name "` + e + '" is irreversible'); return gn(e) } ).join(",") } function oa(t) { const e = {}; for (const [n,l] of Object.entries(t.fields)) e[n] = Ji(l); return e } function Ji(t) { switch (t.kind.case) { case "nullValue": return null; case "numberValue": if (!Number.isFinite(t.kind.value)) throw new Error(`${t.$typeName} cannot be NaN or Infinity`); return t.kind.value; case "boolValue": return t.kind.value; case "stringValue": return t.kind.value; case "structValue": return oa(t.kind.value); case "listValue": return ra(t.kind.value); default: throw new Error(`${t.$typeName} must have a value`) } } function ra(t) { return t.values.map(Ji) } function lg(t) { const e = Number(t.seconds) * 1e3; if (e < Date.parse("0001-01-01T00:00:00Z") || e > Date.parse("9999-12-31T23:59:59Z")) throw new Error(`cannot encode message ${t.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`); if (t.nanos < 0) throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos must not be negative`); let n = "Z"; if (t.nanos > 0) { const l = (t.nanos + 1e9).toString().substring(1); l.substring(3) === "000000" ? n = "." + l.substring(0, 3) + "Z" : l.substring(6) === "000" ? n = "." + l.substring(0, 6) + "Z" : n = "." + l + "Z" } return new Date(e).toISOString().replace(".000Z", n) } const _o = { ignoreUnknownFields: !1 }; function ig(t) { return t ? Object.assign(Object.assign({}, _o), t) : _o } function og(t, e, n) { return ca(t, gg(e, t.typeName), n) } function ca(t, e, n) { const l = Pe(t); try { Dt(l, e, ig(n)) } catch (i) { throw ks(i) ? new Error(`cannot decode ${i.field()} from JSON: ${i.message}`,{ cause: i }) : i } return l.message } function Dt(t, e, n) { var l; if (hg(t, e, n)) return; if (e == null || Array.isArray(e) || typeof e != "object") throw new Error(`cannot decode ${t.desc} from JSON: ${fe(e)}`); const i = new Map , o = new Map; for (const r of t.desc.fields) o.set(r.name, r).set(r.jsonName, r); for (const [r,c] of Object.entries(e)) { const a = o.get(r); if (a) { if (a.oneof) { if (c === null && a.fieldKind == "scalar") continue; const d = i.get(a.oneof); if (d !== void 0) throw new we(a.oneof,`oneof set multiple times by ${d.name} and ${a.name}`); i.set(a.oneof, a) } Po(t, a, c, n) } else { let d; if (r.startsWith("[") && r.endsWith("]") && (d = (l = n.registry) === null || l === void 0 ? void 0 : l.getExtension(r.substring(1, r.length - 1))) && d.extendee.typeName === t.desc.typeName) { const [s,u,b] = Vl(d); Po(s, u, c, n), Lu(t.message, d, b()) } if (!d && !n.ignoreUnknownFields) throw new Error(`cannot decode ${t.desc} from JSON: key "${r}" is unknown`) } } } function Po(t, e, n, l) { switch (e.fieldKind) { case "scalar": sg(t, e, n); break; case "enum": dg(t, e, n, l); break; case "message": ag(t, e, n, l); break; case "list": cg(t.get(e), n, l); break; case "map": rg(t.get(e), n, l); break } } function rg(t, e, n) { if (e === null) return; const l = t.field(); if (typeof e != "object" || Array.isArray(e)) throw new we(l,"expected object, got " + fe(e)); for (const [i,o] of Object.entries(e)) { if (o === null) throw new we(l,"map value must not be null"); let r; switch (l.mapKind) { case "message": const a = Pe(l.message); Dt(a, o, n), r = a; break; case "enum": if (r = xi(l.enum, o, n.ignoreUnknownFields, !0), r === Al) return; break; case "scalar": r = fl(l, o, !0); break } const c = ug(l.mapKey, i); t.set(c, r) } } function cg(t, e, n) { if (e === null) return; const l = t.field(); if (!Array.isArray(e)) throw new we(l,"expected Array, got " + fe(e)); for (const i of e) { if (i === null) throw new we(l,"list item must not be null"); switch (l.listKind) { case "message": const o = Pe(l.message); Dt(o, i, n), t.add(o); break; case "enum": const r = xi(l.enum, i, n.ignoreUnknownFields, !0); r !== Al && t.add(r); break; case "scalar": t.add(fl(l, i, !0)); break } } } function ag(t, e, n, l) { if (n === null && e.message.typeName != "google.protobuf.Value") { t.clear(e); return } const i = t.isSet(e) ? t.get(e) : Pe(e.message); Dt(i, n, l), t.set(e, i) } function dg(t, e, n, l) { const i = xi(e.enum, n, l.ignoreUnknownFields, !1); i === Zl ? t.clear(e) : i !== Al && t.set(e, i) } function sg(t, e, n) { const l = fl(e, n, !1); l === Zl ? t.clear(e) : t.set(e, l) } const Al = Symbol(); function xi(t, e, n, l) { if (e === null) return t.typeName == "google.protobuf.NullValue" ? 0 : l ? t.values[0].number : Zl; switch (typeof e) { case "number": if (Number.isInteger(e)) return e; break; case "string": const i = t.values.find(o => o.name === e); if (i !== void 0) return i.number; if (n) return Al; break } throw new Error(`cannot decode ${t} from JSON: ${fe(e)}`) } const Zl = Symbol(); function fl(t, e, n) { if (e === null) return n ? Bt(t.scalar, !1) : Zl; switch (t.scalar) { case m.DOUBLE: case m.FLOAT: if (e === "NaN") return NaN; if (e === "Infinity") return Number.POSITIVE_INFINITY; if (e === "-Infinity") return Number.NEGATIVE_INFINITY; if (typeof e == "number") { if (Number.isNaN(e)) throw new we(t,"unexpected NaN number"); if (!Number.isFinite(e)) throw new we(t,"unexpected infinite number"); break } if (typeof e == "string") { if (e === "" || e.trim().length !== e.length) break; const l = Number(e); if (!Number.isFinite(l)) break; return l } break; case m.INT32: case m.FIXED32: case m.SFIXED32: case m.SINT32: case m.UINT32: return aa(e); case m.BYTES: if (typeof e == "string") { if (e === "") return new Uint8Array(0); try { return Bi(e) } catch (l) { const i = l instanceof Error ? l.message : String(l); throw new we(t,i) } } break } return e } function ug(t, e) { switch (t) { case m.BOOL: switch (e) { case "true": return !0; case "false": return !1 } return e; case m.INT32: case m.FIXED32: case m.UINT32: case m.SFIXED32: case m.SINT32: return aa(e); default: return e } } function aa(t) { if (typeof t == "string") { if (t === "" || t.trim().length !== t.length) return t; const e = Number(t); return Number.isNaN(e) ? t : e } return t } function gg(t, e) { try { return JSON.parse(t) } catch (n) { const l = n instanceof Error ? n.message : String(n); throw new Error(`cannot decode message ${e} from JSON: ${l}`,{ cause: n }) } } function hg(t, e, n) { if (!t.desc.typeName.startsWith("google.protobuf.")) return !1; switch (t.desc.typeName) { case "google.protobuf.Any": return bg(t.message, e, n), !0; case "google.protobuf.Timestamp": return Vg(t.message, e), !0; case "google.protobuf.Duration": return mg(t.message, e), !0; case "google.protobuf.FieldMask": return Ag(t.message, e), !0; case "google.protobuf.Struct": return da(t.message, e), !0; case "google.protobuf.Value": return wi(t.message, e), !0; case "google.protobuf.ListValue": return sa(t.message, e), !0; default: if (pn(t.desc)) { const l = t.desc.fields[0]; return e === null ? t.clear(l) : t.set(l, fl(l, e, !0)), !0 } return !1 } } function bg(t, e, n) { var l; if (e === null || Array.isArray(e) || typeof e != "object") throw new Error(`cannot decode message ${t.$typeName} from JSON: expected object but got ${fe(e)}`); if (Object.keys(e).length == 0) return; const i = e["@type"]; if (typeof i != "string" || i == "") throw new Error(`cannot decode message ${t.$typeName} from JSON: "@type" is empty`); const o = i.includes("/") ? i.substring(i.lastIndexOf("/") + 1) : i; if (!o.length) throw new Error(`cannot decode message ${t.$typeName} from JSON: "@type" is invalid`); const r = (l = n.registry) === null || l === void 0 ? void 0 : l.getMessage(o); if (!r) throw new Error(`cannot decode message ${t.$typeName} from JSON: ${i} is not in the type registry`); const c = Pe(r); if (o.startsWith("google.protobuf.") && Object.prototype.hasOwnProperty.call(e, "value")) { const a = e.value; Dt(c, a, n) } else { const a = Object.assign({}, e); delete a["@type"], Dt(c, a, n) } Yu(c.desc, c.message, t) } function Vg(t, e) { if (typeof e != "string") throw new Error(`cannot decode message ${t.$typeName} from JSON: ${fe(e)}`); const n = e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/); if (!n) throw new Error(`cannot decode message ${t.$typeName} from JSON: invalid RFC 3339 string`); const l = Date.parse(n[1] + "-" + n[2] + "-" + n[3] + "T" + n[4] + ":" + n[5] + ":" + n[6] + (n[8] ? n[8] : "Z")); if (Number.isNaN(l)) throw new Error(`cannot decode message ${t.$typeName} from JSON: invalid RFC 3339 string`); if (l < Date.parse("0001-01-01T00:00:00Z") || l > Date.parse("9999-12-31T23:59:59Z")) throw new Error(`cannot decode message ${t.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`); t.seconds = le.parse(l / 1e3), t.nanos = 0, n[7] && (t.nanos = parseInt("1" + n[7] + "0".repeat(9 - n[7].length)) - 1e9) } function mg(t, e) { if (typeof e != "string") throw new Error(`cannot decode message ${t.$typeName} from JSON: ${fe(e)}`); const n = e.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/); if (n === null) throw new Error(`cannot decode message ${t.$typeName} from JSON: ${fe(e)}`); const l = Number(n[1]); if (l > 315576e6 || l < -315576e6) throw new Error(`cannot decode message ${t.$typeName} from JSON: ${fe(e)}`); if (t.seconds = le.parse(l), typeof n[2] != "string") return; const i = n[2] + "0".repeat(9 - n[2].length); t.nanos = parseInt(i), (l < 0 || Object.is(l, -0)) && (t.nanos = -t.nanos) } function Ag(t, e) { if (typeof e != "string") throw new Error(`cannot decode message ${t.$typeName} from JSON: ${fe(e)}`); if (e === "") return; function n(l) { if (l.includes("_")) throw new Error(`cannot decode message ${t.$typeName} from JSON: path names must be lowerCamelCase`); const i = l.replace(/[A-Z]/g, o => "_" + o.toLowerCase()); return i[0] === "_" ? i.substring(1) : i } t.paths = e.split(",").map(n) } function da(t, e) { if (typeof e != "object" || e == null || Array.isArray(e)) throw new Error(`cannot decode message ${t.$typeName} from JSON ${fe(e)}`); for (const [n,l] of Object.entries(e)) { const i = lt(la); wi(i, l), t.fields[n] = i } } function wi(t, e) { switch (typeof e) { case "number": t.kind = { case: "numberValue", value: e }; break; case "string": t.kind = { case: "stringValue", value: e }; break; case "boolean": t.kind = { case: "boolValue", value: e }; break; case "object": if (e === null) t.kind = { case: "nullValue", value: ei.NULL_VALUE }; else if (Array.isArray(e)) { const n = lt(Qu); sa(n, e), t.kind = { case: "listValue", value: n } } else { const n = lt(zu); da(n, e), t.kind = { case: "structValue", value: n } } break; default: throw new Error(`cannot decode message ${t.$typeName} from JSON ${fe(e)}`) } return t } function sa(t, e) { if (!Array.isArray(e)) throw new Error(`cannot decode message ${t.$typeName} from JSON ${fe(e)}`); for (const n of e) { const l = lt(la); wi(l, n), t.values.push(l) } } function ti(t) { const e = H[t]; return typeof e != "string" ? t.toString() : e[0].toLowerCase() + e.substring(1).replace(/[A-Z]/g, n => "_" + n.toLowerCase()) } let Bn; function Zg(t) { if (!Bn) { Bn = {}; for (const e of Object.values(H)) typeof e != "string" && (Bn[ti(e)] = e) } return Bn[t] } class oe extends Error { constructor(e, n=H.Unknown, l, i, o) { super(fg(e, n)), this.name = "ConnectError", Object.setPrototypeOf(this, new.target.prototype), this.rawMessage = e, this.code = n, this.metadata = new Headers(l ?? {}), this.details = i ?? [], this.cause = o } static from(e, n=H.Unknown) { return e instanceof oe ? e : e instanceof Error ? e.name == "AbortError" ? new oe(e.message,H.Canceled) : new oe(e.message,n,void 0,void 0,e) : new oe(String(e),n,void 0,void 0,e) } static[Symbol.hasInstance](e) { return e instanceof Error ? Object.getPrototypeOf(e) === oe.prototype ? !0 : e.name === "ConnectError" && "code"in e && typeof e.code == "number" && "metadata"in e && "details"in e && Array.isArray(e.details) && "rawMessage"in e && typeof e.rawMessage == "string" && "cause"in e : !1 } findDetails(e) { const n = e.kind === "message" ? { getMessage: i => i === e.typeName ? e : void 0 } : e , l = []; for (const i of this.details) { if ("desc"in i) { n.getMessage(i.desc.typeName) && l.push(lt(i.desc, i.value)); continue } const o = n.getMessage(i.type); if (o) try { l.push(bl(o, i.value)) } catch {} } return l } } function fg(t, e) { return t.length ? `[${ti(e)}] ${t}` : `[${ti(e)}]` } function pg(...t) { const e = new Headers; for (const n of t) n.forEach( (l, i) => { e.append(i, l) } ); return e } function Gg(t, e) { const n = {}; for (const l of t.methods) { const i = e(l); i != null && (n[l.localName] = i) } return n } const Oo = 1; function Xg(t) { let e, n = new Uint8Array(0); function l(i) { const o = new Uint8Array(n.length + i.length); o.set(n), o.set(i, n.length), n = o } return new ReadableStream({ start() { e = t.getReader() }, async pull(i) { let o; for (; ; ) { if (o === void 0 && n.byteLength >= 5) { let a = 0; for (let d = 1; d < 5; d++) a = (a << 8) + n[d]; o = { flags: n[0], length: a } } if (o !== void 0 && n.byteLength >= o.length + 5) break; const c = await e.read(); if (c.done) break; l(c.value) } if (o === void 0) { if (n.byteLength == 0) { i.close(); return } i.error(new oe("premature end of stream",H.DataLoss)); return } const r = n.subarray(5, 5 + o.length); n = n.subarray(5 + o.length), i.enqueue({ flags: o.flags, data: r }) } }) } function Ig(t, e) { const n = new Uint8Array(e.length + 5); n.set(e, 5); const l = new DataView(n.buffer,n.byteOffset,n.byteLength); return l.setUint8(0, t), l.setUint32(1, e.length), n } var Rg = function(t) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var e = t[Symbol.asyncIterator], n; return e ? e.call(t) : (t = typeof __values == "function" ? __values(t) : t[Symbol.iterator](), n = {}, l("next"), l("throw"), l("return"), n[Symbol.asyncIterator] = function() { return this } , n); function l(o) { n[o] = t[o] && function(r) { return new Promise(function(c, a) { r = t[o](r), i(c, a, r.done, r.value) } ) } } function i(o, r, c, a) { Promise.resolve(a).then(function(d) { o({ value: d, done: c }) }, r) } } , Vn = function(t) { return this instanceof Vn ? (this.v = t, this) : new Vn(t) } , Eg = function(t, e, n) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var l = n.apply(t, e || []), i, o = []; return i = Object.create((typeof AsyncIterator == "function" ? AsyncIterator : Object).prototype), c("next"), c("throw"), c("return", r), i[Symbol.asyncIterator] = function() { return this } , i; function r(g) { return function(V) { return Promise.resolve(V).then(g, u) } } function c(g, V) { l[g] && (i[g] = function(p) { return new Promise(function(X, Z) { o.push([g, p, X, Z]) > 1 || a(g, p) } ) } , V && (i[g] = V(i[g]))) } function a(g, V) { try { d(l[g](V)) } catch (p) { b(o[0][3], p) } } function d(g) { g.value instanceof Vn ? Promise.resolve(g.value.v).then(s, u) : b(o[0][2], g) } function s(g) { a("next", g) } function u(g) { a("throw", g) } function b(g, V) { g(V), o.shift(), o.length && a(o[0][0], o[0][1]) } } , Cg = function(t) { var e, n; return e = {}, l("next"), l("throw", function(i) { throw i }), l("return"), e[Symbol.iterator] = function() { return this } , e; function l(i, o) { e[i] = t[i] ? function(r) { return (n = !n) ? { value: Vn(t[i](r)), done: !1 } : o ? o(r) : r } : o } }; function yg(t) { return Eg(this, arguments, function*() { yield Vn(yield*Cg(Rg(t))) }) } var ua = function(t) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var e = t[Symbol.asyncIterator], n; return e ? e.call(t) : (t = typeof __values == "function" ? __values(t) : t[Symbol.iterator](), n = {}, l("next"), l("throw"), l("return"), n[Symbol.asyncIterator] = function() { return this } , n); function l(o) { n[o] = t[o] && function(r) { return new Promise(function(c, a) { r = t[o](r), i(c, a, r.done, r.value) } ) } } function i(o, r, c, a) { Promise.resolve(a).then(function(d) { o({ value: d, done: c }) }, r) } } , jt = function(t) { return this instanceof jt ? (this.v = t, this) : new jt(t) } , Sg = function(t) { var e, n; return e = {}, l("next"), l("throw", function(i) { throw i }), l("return"), e[Symbol.iterator] = function() { return this } , e; function l(i, o) { e[i] = t[i] ? function(r) { return (n = !n) ? { value: jt(t[i](r)), done: !1 } : o ? o(r) : r } : o } } , Wg = function(t, e, n) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var l = n.apply(t, e || []), i, o = []; return i = Object.create((typeof AsyncIterator == "function" ? AsyncIterator : Object).prototype), c("next"), c("throw"), c("return", r), i[Symbol.asyncIterator] = function() { return this } , i; function r(g) { return function(V) { return Promise.resolve(V).then(g, u) } } function c(g, V) { l[g] && (i[g] = function(p) { return new Promise(function(X, Z) { o.push([g, p, X, Z]) > 1 || a(g, p) } ) } , V && (i[g] = V(i[g]))) } function a(g, V) { try { d(l[g](V)) } catch (p) { b(o[0][3], p) } } function d(g) { g.value instanceof jt ? Promise.resolve(g.value.v).then(s, u) : b(o[0][2], g) } function s(g) { a("next", g) } function u(g) { a("throw", g) } function b(g, V) { g(V), o.shift(), o.length && a(o[0][0], o[0][1]) } }; function k(t, e) { return Gg(t, n => { switch (n.methodKind) { case "unary": return vg(e, n); case "server_streaming": return Bg(e, n); case "client_streaming": return Ng(e, n); case "bidi_streaming": return Fg(e, n); default: return null } } ) } function vg(t, e) { return async function(n, l) { var i, o; const r = await t.unary(e, l == null ? void 0 : l.signal, l == null ? void 0 : l.timeoutMs, l == null ? void 0 : l.headers, n, l == null ? void 0 : l.contextValues); return (i = l == null ? void 0 : l.onHeader) === null || i === void 0 || i.call(l, r.header), (o = l == null ? void 0 : l.onTrailer) === null || o === void 0 || o.call(l, r.trailer), r.message } } function Bg(t, e) { return function(n, l) { return ga(t.stream(e, l == null ? void 0 : l.signal, l == null ? void 0 : l.timeoutMs, l == null ? void 0 : l.headers, yg([n]), l == null ? void 0 : l.contextValues), l) } } function Ng(t, e) { return async function(n, l) { var i, o, r, c, a, d; const s = await t.stream(e, l == null ? void 0 : l.signal, l == null ? void 0 : l.timeoutMs, l == null ? void 0 : l.headers, n, l == null ? void 0 : l.contextValues); (a = l == null ? void 0 : l.onHeader) === null || a === void 0 || a.call(l, s.header); let u, b = 0; try { for (var g = !0, V = ua(s.message), p; p = await V.next(), i = p.done, !i; g = !0) c = p.value, g = !1, u = c, b++ } catch (X) { o = { error: X } } finally { try { !g && !i && (r = V.return) && await r.call(V) } finally { if (o) throw o.error } } if (!u) throw new oe("protocol error: missing response message",H.Unimplemented); if (b > 1) throw new oe("protocol error: received extra messages for client streaming method",H.Unimplemented); return (d = l == null ? void 0 : l.onTrailer) === null || d === void 0 || d.call(l, s.trailer), u } } function Fg(t, e) { return function(n, l) { return ga(t.stream(e, l == null ? void 0 : l.signal, l == null ? void 0 : l.timeoutMs, l == null ? void 0 : l.headers, n, l == null ? void 0 : l.contextValues), l) } } function ga(t, e) { const n = function() { return Wg(this, arguments, function*() { var l, i; const o = yield jt(t); (l = e == null ? void 0 : e.onHeader) === null || l === void 0 || l.call(e, o.header), yield jt(yield*Sg(ua(o.message))), (i = e == null ? void 0 : e.onTrailer) === null || i === void 0 || i.call(e, o.trailer) }) }()[Symbol.asyncIterator](); return { [Symbol.asyncIterator]: () => ({ next: () => n.next() }) } } function Yg(...t) { const e = new AbortController , n = t.filter(i => i !== void 0).concat(e.signal); for (const i of n) { if (i.aborted) { l.apply(i); break } i.addEventListener("abort", l) } function l() { e.signal.aborted || e.abort(ha(this)); for (const i of n) i.removeEventListener("abort", l) } return e } function Ug(t) { const e = new AbortController , n = () => { e.abort(new oe("the operation timed out",H.DeadlineExceeded)) } ; let l; return t !== void 0 && (t <= 0 ? n() : l = setTimeout(n, t)), { signal: e.signal, cleanup: () => clearTimeout(l) } } function ha(t) { if (!t.aborted) return; if (t.reason !== void 0) return t.reason; const e = new Error("This operation was aborted"); return e.name = "AbortError", e } function $o() { return { get(t) { return t.id in this ? this[t.id] : t.defaultValue }, set(t, e) { return this[t.id] = e, this }, delete(t) { return delete this[t.id], this } } } function z(t, e, ...n) { if (n.length > 0) throw new Error; return t.services[e] } function qo(t, e) { return t.toString().replace(/\/?$/, `/${e.parent.typeName}/${e.name}`) } function ba(t, e) { return lt(t, e) } function Jg(t, e) { function n(l) { return l.done === !0 ? l : { done: l.done, value: ba(t, l.value) } } return { [Symbol.asyncIterator]() { const l = e[Symbol.asyncIterator]() , i = { next: () => l.next().then(n) }; return l.throw !== void 0 && (i.throw = o => l.throw(o).then(n)), l.return !== void 0 && (i.return = o => l.return(o).then(n)), i } } } function Va(t, e) { var n; return (n = e == null ? void 0 : e.concat().reverse().reduce( (l, i) => i(l), t)) !== null && n !== void 0 ? n : t } function ma(t) { var e; const n = Object.assign({}, t); return (e = n.ignoreUnknownFields) !== null && e !== void 0 || (n.ignoreUnknownFields = !0), n } function er(t, e, n, l) { const i = e ? tr(t.input, l) : nr(t.input, n); return { parse: (e ? tr(t.output, l) : nr(t.output, n)).parse, serialize: i.serialize } } function tr(t, e) { return { parse(n) { try { return bl(t, n, e) } catch (l) { const i = l instanceof Error ? l.message : String(l); throw new oe(`parse binary: ${i}`,H.Internal) } }, serialize(n) { try { return $c(t, n, e) } catch (l) { const i = l instanceof Error ? l.message : String(l); throw new oe(`serialize binary: ${i}`,H.Internal) } } } } function nr(t, e) { var n, l; const i = (n = e == null ? void 0 : e.textEncoder) !== null && n !== void 0 ? n : new TextEncoder , o = (l = e == null ? void 0 : e.textDecoder) !== null && l !== void 0 ? l : new TextDecoder , r = ma(e); return { parse(c) { try { const a = o.decode(c); return og(t, a, r) } catch (a) { throw oe.from(a, H.InvalidArgument) } }, serialize(c) { try { const a = _u(t, c, r); return i.encode(a) } catch (a) { throw oe.from(a, H.Internal) } } } } const xg = /^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i , wg = "application/proto" , kg = "application/json" , zg = "application/connect+proto" , Qg = "application/connect+json"; function Kg(t) { const e = t == null ? void 0 : t.match(xg); if (!e) return; const n = !!e[1] , l = !!e[3]; return { stream: n, binary: l } } function Aa(t, e, n) { var l; if (e && new Headers(e).forEach( (c, a) => n.metadata.append(a, c)), typeof t != "object" || t == null || Array.isArray(t)) throw n; let i = n.code; "code"in t && typeof t.code == "string" && (i = (l = Zg(t.code)) !== null && l !== void 0 ? l : i); const o = t.message; if (o != null && typeof o != "string") throw n; const r = new oe(o ?? "",i,e); if ("details"in t && Array.isArray(t.details)) for (const c of t.details) { if (c === null || typeof c != "object" || Array.isArray(c) || typeof c.type != "string" || typeof c.value != "string") throw n; try { r.details.push({ type: c.type, value: Bi(c.value), debug: c.debug }) } catch { throw n } } return r } const lr = 2; function Lg(t) { const e = new oe("invalid end stream",H.Unknown); let n; try { n = JSON.parse(typeof t == "string" ? t : new TextDecoder().decode(t)) } catch { throw e } if (typeof n != "object" || n == null || Array.isArray(n)) throw e; const l = new Headers; if ("metadata"in n) { if (typeof n.metadata != "object" || n.metadata == null || Array.isArray(n.metadata)) throw e; for (const [o,r] of Object.entries(n.metadata)) { if (!Array.isArray(r) || r.some(c => typeof c != "string")) throw e; for (const c of r) l.append(o, c) } } const i = "error"in n && n.error != null ? Aa(n.error, l, e) : void 0; return { metadata: l, error: i } } const nl = "Content-Type" , Mg = "Content-Length" , ir = "Content-Encoding" , Tg = "Accept-Encoding" , Hg = "Connect-Timeout-Ms" , Za = "Connect-Protocol-Version" , Dg = "User-Agent"; function jg(t) { switch (t) { case 400: return H.Internal; case 401: return H.Unauthenticated; case 403: return H.PermissionDenied; case 404: return H.Unimplemented; case 429: return H.Unavailable; case 502: return H.Unavailable; case 503: return H.Unavailable; case 504: return H.Unavailable; default: return H.Unknown } } function or(t) { const e = new Headers , n = new Headers; return t.forEach( (l, i) => { i.toLowerCase().startsWith("trailer-") ? n.append(i.substring(8), l) : e.append(i, l) } ), [e, n] } const fa = "1"; function rr(t, e, n, l, i) { const o = new Headers(l ?? {}); return n !== void 0 && o.set(Hg, `${n}`), o.set(nl, t == "unary" ? e ? wg : kg : e ? zg : Qg), o.set(Za, fa), o.has(Dg), o } function cr(t, e, n, l) { const i = l.get(nl) , o = Kg(i); if (n !== 200) { const c = new oe(`HTTP ${n}`,jg(n),l); if (t == "unary" && o && !o.binary) return { isUnaryError: !0, unaryError: c }; throw c } const r = { binary: e, stream: t !== "unary" }; if ((o == null ? void 0 : o.binary) !== r.binary || o.stream !== r.stream) throw new oe(`unsupported content type ${i}`,o === void 0 ? H.Unknown : H.Internal,l); return { isUnaryError: !1 } } const ar = "application/"; function _g(t, e) { return e ? zc(t, "url") : encodeURIComponent(new TextDecoder().decode(t)) } function Pg(t, e, n) { let l = `?connect=v${fa}`; const i = t.header.get(nl); (i == null ? void 0 : i.indexOf(ar)) === 0 && (l += "&encoding=" + encodeURIComponent(i.slice(ar.length))); const o = t.header.get(ir); o !== null && o !== "identity" && (l += "&compression=" + encodeURIComponent(o), n = !0), n && (l += "&base64=1"), l += "&message=" + _g(e, n); const r = t.url + l , c = new Headers(t.header); return [Za, nl, Mg, ir, Tg].forEach(a => c.delete(a)), Object.assign(Object.assign({}, t), { requestMethod: "GET", url: r, header: c }) } function Og(t) { const e = Va(t.next, t.interceptors) , [n,l,i] = pa(t) , o = Object.assign(Object.assign({}, t.req), { message: ba(t.req.method.input, t.req.message), signal: n }); return e(o).then(r => (i(), r), l) } function $g(t) { const e = Va(t.next, t.interceptors) , [n,l,i] = pa(t) , o = Object.assign(Object.assign({}, t.req), { message: Jg(t.req.method.input, t.req.message), signal: n }); let r = !1; return n.addEventListener("abort", function() { var c, a; const d = t.req.message[Symbol.asyncIterator](); r || (c = d.throw) === null || c === void 0 || c.call(d, this.reason).catch( () => {} ), (a = d.return) === null || a === void 0 || a.call(d).catch( () => {} ) }), e(o).then(c => Object.assign(Object.assign({}, c), { message: { [Symbol.asyncIterator]() { const a = c.message[Symbol.asyncIterator](); return { next() { return a.next().then(d => (d.done == !0 && (r = !0, i()), d), l) } } } } }), l) } function pa(t) { const {signal: e, cleanup: n} = Ug(t.timeoutMs) , l = Yg(t.signal, e); return [l.signal, function(o) { const r = oe.from(e.aborted ? ha(e) : o); return l.abort(r), n(), Promise.reject(r) } , function() { n(), l.abort() } ] } function qg() { try { new Headers } catch { throw new Error("connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.") } } var mn = function(t) { return this instanceof mn ? (this.v = t, this) : new mn(t) } , eh = function(t, e, n) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var l = n.apply(t, e || []), i, o = []; return i = Object.create((typeof AsyncIterator == "function" ? AsyncIterator : Object).prototype), c("next"), c("throw"), c("return", r), i[Symbol.asyncIterator] = function() { return this } , i; function r(g) { return function(V) { return Promise.resolve(V).then(g, u) } } function c(g, V) { l[g] && (i[g] = function(p) { return new Promise(function(X, Z) { o.push([g, p, X, Z]) > 1 || a(g, p) } ) } , V && (i[g] = V(i[g]))) } function a(g, V) { try { d(l[g](V)) } catch (p) { b(o[0][3], p) } } function d(g) { g.value instanceof mn ? Promise.resolve(g.value.v).then(s, u) : b(o[0][2], g) } function s(g) { a("next", g) } function u(g) { a("throw", g) } function b(g, V) { g(V), o.shift(), o.length && a(o[0][0], o[0][1]) } }; const dr = { redirect: "error" }; function th(t) { var e; qg(); const n = (e = t.useBinaryFormat) !== null && e !== void 0 ? e : !1; return { async unary(l, i, o, r, c, a) { const {serialize: d, parse: s} = er(l, n, t.jsonOptions, t.binaryOptions); return o = o === void 0 ? t.defaultTimeoutMs : o <= 0 ? void 0 : o, await Og({ interceptors: t.interceptors, signal: i, timeoutMs: o, req: { stream: !1, service: l.parent, method: l, requestMethod: "POST", url: qo(t.baseUrl, l), header: rr(l.methodKind, n, o, r, !1), contextValues: a ?? $o(), message: c }, next: async u => { var b; const g = t.useHttpGet === !0 && l.idempotency === ql.NO_SIDE_EFFECTS; let V = null; g ? u = Pg(u, d(u.message), n) : V = d(u.message); const X = await ((b = t.fetch) !== null && b !== void 0 ? b : globalThis.fetch)(u.url, Object.assign(Object.assign({}, dr), { method: u.requestMethod, headers: u.header, signal: u.signal, body: V })) , {isUnaryError: Z, unaryError: f} = cr(l.methodKind, n, X.status, X.headers); if (Z) throw Aa(await X.json(), pg(...or(X.headers)), f); const [G,C] = or(X.headers); return { stream: !1, service: l.parent, method: l, header: G, message: n ? s(new Uint8Array(await X.arrayBuffer())) : ca(l.output, await X.json(), ma(t.jsonOptions)), trailer: C } } }) }, async stream(l, i, o, r, c, a) { const {serialize: d, parse: s} = er(l, n, t.jsonOptions, t.binaryOptions); function u(g, V, p, X) { return eh(this, arguments, function*() { const f = Xg(g).getReader(); let G = !1; for (; ; ) { const C = yield mn(f.read()); if (C.done) break; const {flags: E, data: y} = C.value; if ((E & Oo) === Oo) throw new oe("protocol error: received unsupported compressed output",H.Internal); if ((E & lr) === lr) { G = !0; const A = Lg(y); if (A.error) { const F = A.error; throw p.forEach( (w, _) => { F.metadata.append(_, w) } ), F } A.metadata.forEach( (F, w) => V.set(w, F)); continue } yield yield mn(s(y)) } if ("throwIfAborted"in X && X.throwIfAborted(), !G) throw "missing EndStreamResponse" }) } async function b(g) { if (l.methodKind != "server_streaming") throw "The fetch API does not support streaming request bodies"; const V = await g[Symbol.asyncIterator]().next(); if (V.done == !0) throw "missing request message"; return Ig(0, d(V.value)) } return o = o === void 0 ? t.defaultTimeoutMs : o <= 0 ? void 0 : o, await $g({ interceptors: t.interceptors, timeoutMs: o, signal: i, req: { stream: !0, service: l.parent, method: l, requestMethod: "POST", url: qo(t.baseUrl, l), header: rr(l.methodKind, n, o, r, !1), contextValues: a ?? $o(), message: c }, next: async g => { var V; const X = await ((V = t.fetch) !== null && V !== void 0 ? V : globalThis.fetch)(g.url, Object.assign(Object.assign({}, dr), { method: g.requestMethod, headers: g.header, signal: g.signal, body: await b(g.message) })); if (cr(l.methodKind, n, X.status, X.headers), X.body === null) throw "missing response body"; const Z = new Headers; return Object.assign(Object.assign({}, g), { header: X.headers, trailer: Z, message: u(X.body, Z, X.headers, g.signal) }) } }) } } } const Ga = x("ChxvcGVyYXRpb24vdjEvcGxheV9jYXJkLnByb3RvEgxvcGVyYXRpb24udjEiOAoVR2V0Q3VyUGxheUNhcmRSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkSDgoGbG9jYWxlGAIgASgJIkwKFkdldEN1clBsYXlDYXJkUmVzcG9uc2USMgoOcGxheV9jYXJkX2luZm8YASABKAsyGi5vcGVyYXRpb24udjEuUGxheUNhcmRJbmZvIroDCgxQbGF5Q2FyZEluZm8SCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRINCgV0aXRsZRgDIAEoCRIMCgRkZXNjGAQgASgJEi4KC2FjdGlvbl90eXBlGAUgASgOMhkub3BlcmF0aW9uLnYxLkFDVElPTl9UWVBFEhIKCmV4dHJhX2RhdGEYBiABKAkSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoGc3RhdHVzGAkgASgOMh4ub3BlcmF0aW9uLnYxLlBMQVlfQ0FSRF9TVEFUVVMSLQoIcGxhdGZvcm0YCiABKA4yGy5vcGVyYXRpb24udjEuUExBVEZPUk1fVFlQRRI0CgVpbWFnZRgLIAMoCzIlLm9wZXJhdGlvbi52MS5QbGF5Q2FyZEluZm8uSW1hZ2VFbnRyeRIMCgRJMThuGAwgASgJGiwKCkltYWdlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASp2Cg1QTEFURk9STV9UWVBFEh0KGVBMQVRGT1JNX1RZUEVfVU5TUEVDSUZJRUQQABIVChFQTEFURk9STV9UWVBFX0FMTBABEhgKFFBMQVRGT1JNX1RZUEVfTU9CSUxFEAISFQoRUExBVEZPUk1fVFlQRV9XRUIQAypWCgtBQ1RJT05fVFlQRRIbChdBQ1RJT05fVFlQRV9VTlNQRUNJRklFRBAAEhUKEUFDVElPTl9UWVBFX1BPUFVQEAESEwoPQUNUSU9OX1RZUEVfVVJMEAIqZwoQUExBWV9DQVJEX1NUQVRVUxIgChxQTEFZX0NBUkRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTUExBWV9DQVJEX1NUQVRVU19PThABEhgKFFBMQVlfQ0FSRF9TVEFUVVNfT0ZGEAIyaQoIUGxheUNhcmQSXQoOR2V0Q3VyUGxheUNhcmQSIy5vcGVyYXRpb24udjEuR2V0Q3VyUGxheUNhcmRSZXF1ZXN0GiQub3BlcmF0aW9uLnYxLkdldEN1clBsYXlDYXJkUmVzcG9uc2UiAEK3AQoQY29tLm9wZXJhdGlvbi52MUINUGxheUNhcmRQcm90b1ABWkNnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvb3BlcmF0aW9uL3YxO29wZXJhdGlvbnYxogIDT1hYqgIMT3BlcmF0aW9uLlYxygIMT3BlcmF0aW9uXFYx4gIYT3BlcmF0aW9uXFYxXEdQQk1ldGFkYXRh6gINT3BlcmF0aW9uOjpWMWIGcHJvdG8z", [j]) , nh = z(Ga, 0) , lh = x("CiJvcGVyYXRpb24vdjEvcGxheV9jYXJkX2FkbWluLnByb3RvEgxvcGVyYXRpb24udjEi6gIKFUNyZWF0ZVBsYXlDYXJkUmVxdWVzdBIMCgRuYW1lGAEgASgJEg0KBXRpdGxlGAIgASgJEgwKBGRlc2MYAyABKAkSLgoLYWN0aW9uX3R5cGUYBCABKA4yGS5vcGVyYXRpb24udjEuQUNUSU9OX1RZUEUSEgoKZXh0cmFfZGF0YRgFIAEoCRIuCgZzdGF0dXMYBiABKA4yHi5vcGVyYXRpb24udjEuUExBWV9DQVJEX1NUQVRVUxItCghwbGF0Zm9ybRgIIAEoDjIbLm9wZXJhdGlvbi52MS5QTEFURk9STV9UWVBFEj0KBWltYWdlGAkgAygLMi4ub3BlcmF0aW9uLnYxLkNyZWF0ZVBsYXlDYXJkUmVxdWVzdC5JbWFnZUVudHJ5EhYKDnRyYW5zbGF0ZV9qc29uGAogASgJGiwKCkltYWdlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI2ChZDcmVhdGVQbGF5Q2FyZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSCwoDbXNnGAIgASgJIoQEChVVcGRhdGVQbGF5Q2FyZFJlcXVlc3QSCgoCaWQYASABKAMSEQoEbmFtZRgCIAEoCUgAiAEBEhIKBXRpdGxlGAMgASgJSAGIAQESEQoEZGVzYxgEIAEoCUgCiAEBEjMKC2FjdGlvbl90eXBlGAUgASgOMhkub3BlcmF0aW9uLnYxLkFDVElPTl9UWVBFSAOIAQESFwoKZXh0cmFfZGF0YRgHIAEoCUgEiAEBEjMKBnN0YXR1cxgIIAEoDjIeLm9wZXJhdGlvbi52MS5QTEFZX0NBUkRfU1RBVFVTSAWIAQESMgoIcGxhdGZvcm0YCiABKA4yGy5vcGVyYXRpb24udjEuUExBVEZPUk1fVFlQRUgGiAEBEj0KBWltYWdlGAsgAygLMi4ub3BlcmF0aW9uLnYxLlVwZGF0ZVBsYXlDYXJkUmVxdWVzdC5JbWFnZUVudHJ5EhsKDnRyYW5zbGF0ZV9qc29uGAwgASgJSAeIAQEaLAoKSW1hZ2VFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgcKBV9uYW1lQggKBl90aXRsZUIHCgVfZGVzY0IOCgxfYWN0aW9uX3R5cGVCDQoLX2V4dHJhX2RhdGFCCQoHX3N0YXR1c0ILCglfcGxhdGZvcm1CEQoPX3RyYW5zbGF0ZV9qc29uIjYKFlVwZGF0ZVBsYXlDYXJkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBILCgNtc2cYAiABKAkiIwoVRGVsZXRlUGxheUNhcmRSZXF1ZXN0EgoKAmlkGAEgASgDIjYKFkRlbGV0ZVBsYXlDYXJkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBILCgNtc2cYAiABKAki/gEKE0xpc3RQbGF5Q2FyZFJlcXVlc3QSDAoEcGFnZRgBIAEoBRIRCglwYWdlX3NpemUYAiABKAUSFAoHa2V5d29yZBgDIAEoCUgAiAEBEhMKBmxvY2FsZRgEIAEoCUgBiAEBEjIKCHBsYXRmb3JtGAUgASgOMhsub3BlcmF0aW9uLnYxLlBMQVRGT1JNX1RZUEVIAogBARIzCgthY3Rpb25fdHlwZRgGIAEoDjIZLm9wZXJhdGlvbi52MS5BQ1RJT05fVFlQRUgDiAEBQgoKCF9rZXl3b3JkQgkKB19sb2NhbGVCCwoJX3BsYXRmb3JtQg4KDF9hY3Rpb25fdHlwZSJzChRMaXN0UGxheUNhcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEgsKA21zZxgCIAEoCRIuCgpwbGF5X2NhcmRzGAMgAygLMhoub3BlcmF0aW9uLnYxLlBsYXlDYXJkSW5mbxINCgV0b3RhbBgEIAEoAzKFAwoNUGxheUNhcmRBZG1pbhJdCg5DcmVhdGVQbGF5Q2FyZBIjLm9wZXJhdGlvbi52MS5DcmVhdGVQbGF5Q2FyZFJlcXVlc3QaJC5vcGVyYXRpb24udjEuQ3JlYXRlUGxheUNhcmRSZXNwb25zZSIAEl0KDlVwZGF0ZVBsYXlDYXJkEiMub3BlcmF0aW9uLnYxLlVwZGF0ZVBsYXlDYXJkUmVxdWVzdBokLm9wZXJhdGlvbi52MS5VcGRhdGVQbGF5Q2FyZFJlc3BvbnNlIgASXQoORGVsZXRlUGxheUNhcmQSIy5vcGVyYXRpb24udjEuRGVsZXRlUGxheUNhcmRSZXF1ZXN0GiQub3BlcmF0aW9uLnYxLkRlbGV0ZVBsYXlDYXJkUmVzcG9uc2UiABJXCgxMaXN0UGxheUNhcmQSIS5vcGVyYXRpb24udjEuTGlzdFBsYXlDYXJkUmVxdWVzdBoiLm9wZXJhdGlvbi52MS5MaXN0UGxheUNhcmRSZXNwb25zZSIAQrwBChBjb20ub3BlcmF0aW9uLnYxQhJQbGF5Q2FyZEFkbWluUHJvdG9QAVpDZ2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L29wZXJhdGlvbi92MTtvcGVyYXRpb252MaICA09YWKoCDE9wZXJhdGlvbi5WMcoCDE9wZXJhdGlvblxWMeICGE9wZXJhdGlvblxWMVxHUEJNZXRhZGF0YeoCDU9wZXJhdGlvbjo6VjFiBnByb3RvMw", [j, Ga]) , ih = z(lh, 0) , Ge = x("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI9CgpDb25zdHJhaW50EgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJNChJNZXNzYWdlQ29uc3RyYWludHMSEAoIZGlzYWJsZWQYASABKAgSJQoDY2VsGAMgAygLMhguYnVmLnZhbGlkYXRlLkNvbnN0cmFpbnQiJAoQT25lb2ZDb25zdHJhaW50cxIQCghyZXF1aXJlZBgBIAEoCCLXCAoQRmllbGRDb25zdHJhaW50cxIlCgNjZWwYFyADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludBIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIABITCgdza2lwcGVkGBggASgIQgIYARIYCgxpZ25vcmVfZW1wdHkYGiABKAhCAhgBQgYKBHR5cGUiPgoVUHJlZGVmaW5lZENvbnN0cmFpbnRzEiUKA2NlbBgBIAMoCzIYLmJ1Zi52YWxpZGF0ZS5Db25zdHJhaW50IrUXCgpGbG9hdFJ1bGVzEmkKBWNvbnN0GAEgASgCQlrCSFcKVQoLZmxvYXQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSnwEKAmx0GAIgASgCQpABwkiMAQqJAQoIZmxvYXQubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASrwEKA2x0ZRgDIAEoAkKfAcJImwEKmAEKCWZsb2F0Lmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEu8HCgJndBgEIAEoAkLgB8JI3AcKjQEKCGZsb2F0Lmd0GoABIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKwwEKC2Zsb2F0Lmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKFWZsb2F0Lmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtMBCgxmbG9hdC5ndF9sdGUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrdAQoWZmxvYXQuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESuggKA2d0ZRgFIAEoAkKqCMJIpggKmwEKCWZsb2F0Lmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrSAQoMZmxvYXQuZ3RlX2x0GsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoWZmxvYXQuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4gEKDWZsb2F0Lmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCuwBChdmbG9hdC5ndGVfbHRlX2V4Y2x1c2l2ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ1CgJpbhgGIAMoAkJpwkhmCmQKCGZsb2F0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIscXCgtEb3VibGVSdWxlcxJqCgVjb25zdBgBIAEoAUJbwkhYClYKDGRvdWJsZS5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygBQmrCSGcKZQoJZG91YmxlLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoAUJnwkhkCmIKDWRvdWJsZS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJ2CgZmaW5pdGUYCCABKAhCZsJIYwphCg1kb3VibGUuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIsCgdleGFtcGxlGAkgAygBQhvCSBgKFgoOZG91YmxlLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIucUCgpJbnQzMlJ1bGVzEmkKBWNvbnN0GAEgASgFQlrCSFcKVQoLaW50MzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSigEKAmx0GAIgASgFQnzCSHkKdwoIaW50MzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnAEKA2x0ZRgDIAEoBUKMAcJIiAEKhQEKCWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASlwcKAmd0GAQgASgFQogHwkiEBwp6CghpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwwEKDGludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuMHCgNndGUYBSABKAVC0wfCSM8HCogBCglpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrCAQoMaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsoBChZpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrSAQoNaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwraAQoXaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKAVCacJIZgpkCghpbnQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5xQKCkludDY0UnVsZXMSaQoFY29uc3QYASABKANCWsJIVwpVCgtpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ1CgJpbhgGIAMoA0JpwkhmCmQKCGludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnYKBm5vdF9pbhgHIAMoA0JmwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FAoLVUludDMyUnVsZXMSagoFY29uc3QYASABKA1CW8JIWApWCgx1aW50MzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSiwEKAmx0GAIgASgNQn3CSHoKeAoJdWludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKA1CjQfCSIkHCnsKCXVpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgNQtgHwkjUBwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdgoCaW4YBiADKA1CasJIZwplCgl1aW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1VJbnQ2NFJ1bGVzEmoKBWNvbnN0GAEgASgEQlvCSFgKVgoMdWludDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygEQmrCSGcKZQoJdWludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoBEJnwkhkCmIKDXVpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygEQhvCSBgKFgoOdWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIvgUCgtTSW50MzJSdWxlcxJqCgVjb25zdBgBIAEoEUJbwkhYClYKDHNpbnQzMi5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKLAQoCbHQYAiABKBFCfcJIegp4CglzaW50MzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnQEKA2x0ZRgDIAEoEUKNAcJIiQEKhgEKCnNpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpwHCgJndBgEIAEoEUKNB8JIiQcKewoJc2ludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMc2ludDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWc2ludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg1zaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXc2ludDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEugHCgNndGUYBSABKBFC2AfCSNQHCokBCgpzaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXNpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3NpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOc2ludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHNpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoEUJqwkhnCmUKCXNpbnQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FAoLU0ludDY0UnVsZXMSagoFY29uc3QYASABKBJCW8JIWApWCgxzaW50NjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSiwEKAmx0GAIgASgSQn3CSHoKeAoJc2ludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBJCjQHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBJCjQfCSIkHCnsKCXNpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgSQtgHwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdgoCaW4YBiADKBJCasJIZwplCglzaW50NjQuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iiRUKDEZpeGVkMzJSdWxlcxJrCgVjb25zdBgBIAEoB0JcwkhZClcKDWZpeGVkMzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdwoCaW4YBiADKAdCa8JIaApmCgpmaXhlZDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEngKBm5vdF9pbhgHIAMoB0JowkhlCmMKDmZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoB0IcwkgZChcKD2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iiRUKDEZpeGVkNjRSdWxlcxJrCgVjb25zdBgBIAEoBkJcwkhZClcKDWZpeGVkNjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSjAEKAmx0GAIgASgGQn7CSHsKeQoKZml4ZWQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgGQo4BwkiKAQqHAQoLZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoBkKSB8JIjgcKfAoKZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkNjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoBkLdB8JI2QcKigEKC2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkNjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkNjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdwoCaW4YBiADKAZCa8JIaApmCgpmaXhlZDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEngKBm5vdF9pbhgHIAMoBkJowkhlCmMKDmZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4imhUKDVNGaXhlZDMyUnVsZXMSbAoFY29uc3QYASABKA9CXcJIWgpYCg5zZml4ZWQzMi5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ4CgJpbhgGIAMoD0JswkhpCmcKC3NmaXhlZDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKaFQoNU0ZpeGVkNjRSdWxlcxJsCgVjb25zdBgBIAEoEEJdwkhaClgKDnNmaXhlZDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEngKAmluGAYgAygQQmzCSGkKZwoLc2ZpeGVkNjQuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSeQoGbm90X2luGAcgAygQQmnCSGYKZAoPc2ZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoEEIdwkgaChgKEHNmaXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIqwBCglCb29sUnVsZXMSaAoFY29uc3QYASABKAhCWcJIVgpUCgpib29sLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEioKB2V4YW1wbGUYAiADKAhCGcJIFgoUCgxib29sLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiLgNgoLU3RyaW5nUnVsZXMSbAoFY29uc3QYASABKAlCXcJIWgpYCgxzdHJpbmcuY29uc3QaSHRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxJ+CgNsZW4YEyABKARCccJIbgpsCgpzdHJpbmcubGVuGl51aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEpkBCgdtaW5fbGVuGAIgASgEQocBwkiDAQqAAQoOc3RyaW5nLm1pbl9sZW4abnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1pbl9sZW5dKSA6ICcnEpcBCgdtYXhfbGVuGAMgASgEQoUBwkiBAQp/Cg5zdHJpbmcubWF4X2xlbhptdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IG1vc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJxKbAQoJbGVuX2J5dGVzGBQgASgEQocBwkiDAQqAAQoQc3RyaW5nLmxlbl9ieXRlcxpsdWludChieXRlcyh0aGlzKS5zaXplKCkpICE9IHJ1bGVzLmxlbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5fYnl0ZXNdKSA6ICcnEqMBCgltaW5fYnl0ZXMYBCABKARCjwHCSIsBCogBChBzdHJpbmcubWluX2J5dGVzGnR1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPCBydWxlcy5taW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2J5dGVzXSkgOiAnJxKiAQoJbWF4X2J5dGVzGAUgASgEQo4BwkiKAQqHAQoQc3RyaW5nLm1heF9ieXRlcxpzdWludChieXRlcyh0aGlzKS5zaXplKCkpID4gcnVsZXMubWF4X2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2J5dGVzXSkgOiAnJxKNAQoHcGF0dGVybhgGIAEoCUJ8wkh5CncKDnN0cmluZy5wYXR0ZXJuGmUhdGhpcy5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIGRvZXMgbm90IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxKEAQoGcHJlZml4GAcgASgJQnTCSHEKbwoNc3RyaW5nLnByZWZpeBpeIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4IGAlc2AnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxKCAQoGc3VmZml4GAggASgJQnLCSG8KbQoNc3RyaW5nLnN1ZmZpeBpcIXRoaXMuZW5kc1dpdGgocnVsZXMuc3VmZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHN1ZmZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSkAEKCGNvbnRhaW5zGAkgASgJQn7CSHsKeQoPc3RyaW5nLmNvbnRhaW5zGmYhdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSmAEKDG5vdF9jb250YWlucxgXIAEoCUKBAcJIfgp8ChNzdHJpbmcubm90X2NvbnRhaW5zGmV0aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAndmFsdWUgY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJxJ2CgJpbhgKIAMoCUJqwkhnCmUKCXN0cmluZy5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAASZgoHdXJpX3JlZhgSIAEoCEJTwkhQCk4KDnN0cmluZy51cmlfcmVmEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGiEhcnVsZXMudXJpX3JlZiB8fCB0aGlzLmlzVXJpUmVmKClIABKQAgoHYWRkcmVzcxgVIAEoCEL8AcJI+AEKgQEKDnN0cmluZy5hZGRyZXNzEi12YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaQCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0hvc3RuYW1lKCkgfHwgdGhpcy5pc0lwKCkKcgoUc3RyaW5nLmFkZHJlc3NfZW1wdHkSPHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxocIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyAhPSAnJ0gAEpgCCgR1dWlkGBYgASgIQocCwkiDAgqlAQoLc3RyaW5nLnV1aWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVVUlEGnohcnVsZXMudXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKQpZChFzdHJpbmcudXVpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVVSUQaGSFydWxlcy51dWlkIHx8IHRoaXMgIT0gJydIABLwAQoFdHV1aWQYISABKAhC3gHCSNoBCnMKDHN0cmluZy50dXVpZBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIHRyaW1tZWQgVVVJRBo/IXJ1bGVzLnR1dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17MzJ9JCcpCmMKEnN0cmluZy50dXVpZF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIHRyaW1tZWQgVVVJRBoaIXJ1bGVzLnR1dWlkIHx8IHRoaXMgIT0gJydIABKWAgoRaXBfd2l0aF9wcmVmaXhsZW4YGiABKAhC+AHCSPQBCngKGHN0cmluZy5pcF93aXRoX3ByZWZpeGxlbhIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo7IXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KCkKeAoec3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuX2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4GiYhcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY0X3dpdGhfcHJlZml4bGVuGBsgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjRfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2NF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg0KQqSAQogc3RyaW5nLmlwdjRfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2NF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjZfd2l0aF9wcmVmaXhsZW4YHCABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2Nl93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY2X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYpCpIBCiBzdHJpbmcuaXB2Nl93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY2X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLyAQoJaXBfcHJlZml4GB0gASgIQtwBwkjYAQpsChBzdHJpbmcuaXBfcHJlZml4Eh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjchcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KHRydWUpCmgKFnN0cmluZy5pcF9wcmVmaXhfZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaHiFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY0X3ByZWZpeBgeIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjRfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBwcmVmaXgaPCFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg0LCB0cnVlKQpuChhzdHJpbmcuaXB2NF9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IHByZWZpeBogIXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2Nl9wcmVmaXgYHyABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY2X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgcHJlZml4GjwhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNiwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjZfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBwcmVmaXgaICFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzICE9ICcnSAAStQIKDWhvc3RfYW5kX3BvcnQYICABKAhCmwLCSJcCCpkBChRzdHJpbmcuaG9zdF9hbmRfcG9ydBJBdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3QgKGhvc3RuYW1lIG9yIElQIGFkZHJlc3MpIGFuZCBwb3J0IHBhaXIaPiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0hvc3RBbmRQb3J0KHRydWUpCnkKGnN0cmluZy5ob3N0X2FuZF9wb3J0X2VtcHR5Ejd2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdCBhbmQgcG9ydCBwYWlyGiIhcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biK/EAoKQnl0ZXNSdWxlcxJmCgVjb25zdBgBIAEoDEJXwkhUClIKC2J5dGVzLmNvbnN0GkN0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgYmUgJXgnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEngKA2xlbhgNIAEoBEJrwkhoCmYKCWJ5dGVzLmxlbhpZdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSkAEKB21pbl9sZW4YAiABKARCf8JIfAp6Cg1ieXRlcy5taW5fbGVuGml1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg1ieXRlcy5tYXhfbGVuGmF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpABCgdwYXR0ZXJuGAQgASgJQn/CSHwKegoNYnl0ZXMucGF0dGVybhppIXN0cmluZyh0aGlzKS5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIG11c3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoEBCgZwcmVmaXgYBSABKAxCccJIbgpsCgxieXRlcy5wcmVmaXgaXCF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCAleCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEn8KBnN1ZmZpeBgGIAEoDEJvwkhsCmoKDGJ5dGVzLnN1ZmZpeBpaIXRoaXMuZW5kc1dpdGgocnVsZXMuc3VmZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHN1ZmZpeCAleCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEoMBCghjb250YWlucxgHIAEoDEJxwkhuCmwKDmJ5dGVzLmNvbnRhaW5zGlohdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSlwEKAmluGAggAygMQooBwkiGAQqDAQoIYnl0ZXMuaW4ad2R5bihydWxlcylbJ2luJ10uc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIq8DCglFbnVtUnVsZXMSaAoFY29uc3QYASABKAVCWcJIVgpUCgplbnVtLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ0CgJpbhgDIAMoBUJowkhlCmMKB2VudW0uaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdQoGbm90X2luGAQgAygFQmXCSGIKYAoLZW51bS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIqCgdleGFtcGxlGAUgAygFQhnCSBYKFAoMZW51bS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIigQQKDVJlcGVhdGVkUnVsZXMSngEKCW1pbl9pdGVtcxgBIAEoBEKKAcJIhgEKgwEKEnJlcGVhdGVkLm1pbl9pdGVtcxptdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5faXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIGF0IGxlYXN0ICVkIGl0ZW0ocyknLmZvcm1hdChbcnVsZXMubWluX2l0ZW1zXSkgOiAnJxKiAQoJbWF4X2l0ZW1zGAIgASgEQo4BwkiKAQqHAQoScmVwZWF0ZWQubWF4X2l0ZW1zGnF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gbm8gbW9yZSB0aGFuICVzIGl0ZW0ocyknLmZvcm1hdChbcnVsZXMubWF4X2l0ZW1zXSkgOiAnJxJwCgZ1bmlxdWUYAyABKAhCYMJIXQpbCg9yZXBlYXRlZC51bmlxdWUSKHJlcGVhdGVkIHZhbHVlIG11c3QgY29udGFpbiB1bmlxdWUgaXRlbXMaHiFydWxlcy51bmlxdWUgfHwgdGhpcy51bmlxdWUoKRItCgVpdGVtcxgEIAEoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZENvbnN0cmFpbnRzKgkI6AcQgICAgAIilgMKCE1hcFJ1bGVzEo8BCgltaW5fcGFpcnMYASABKARCfMJIeQp3Cg1tYXAubWluX3BhaXJzGmZ1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBsZWFzdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1pbl9wYWlyc10pIDogJycSjgEKCW1heF9wYWlycxgCIAEoBEJ7wkh4CnYKDW1hcC5tYXhfcGFpcnMaZXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IG1vc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5tYXhfcGFpcnNdKSA6ICcnEiwKBGtleXMYBCABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50cxIuCgZ2YWx1ZXMYBSABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50cyoJCOgHEICAgIACIiYKCEFueVJ1bGVzEgoKAmluGAIgAygJEg4KBm5vdF9pbhgDIAMoCSL1FgoNRHVyYXRpb25SdWxlcxKHAQoFY29uc3QYAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CXcJIWgpYCg5kdXJhdGlvbi5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKTAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CbMJIaQpnCgtkdXJhdGlvbi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxKUAQoGbm90X2luGAggAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQmnCSGYKZAoPZHVyYXRpb24ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSSQoHZXhhbXBsZRgJIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIdwkgaChgKEGR1cmF0aW9uLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIvgXCg5UaW1lc3RhbXBSdWxlcxKJAQoFY29uc3QYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQl7CSFsKWQoPdGltZXN0YW1wLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIqsBCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEhYKCmZpZWxkX3BhdGgYASABKAlCAhgBEhUKDWNvbnN0cmFpbnRfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgIIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqdAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhkKFUlHTk9SRV9JRl9VTlBPUFVMQVRFRBABEhsKF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFEAISEQoNSUdOT1JFX0FMV0FZUxADEhQKDElHTk9SRV9FTVBUWRABGgIIARIWCg5JR05PUkVfREVGQVVMVBACGgIIARoCEAEqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlwKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMiAuYnVmLnZhbGlkYXRlLk1lc3NhZ2VDb25zdHJhaW50c1IHbWVzc2FnZTpUCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMh4uYnVmLnZhbGlkYXRlLk9uZW9mQ29uc3RyYWludHNSBW9uZW9mOlQKBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50c1IFZmllbGQ6YwoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMiMuYnVmLnZhbGlkYXRlLlByZWRlZmluZWRDb25zdHJhaW50c1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU", [jc, wu, j]) , oh = x("CippMThuX3RlbXBsYXRlL3YxL2kxOG5fdGVtcGxhdGVfYWRtaW4ucHJvdG8SEGkxOG5fdGVtcGxhdGUudjEiHQobR2V0VGVtcGxhdGVGaWVsZEluZm9SZXF1ZXN0IlcKHEdldFRlbXBsYXRlRmllbGRJbmZvUmVzcG9uc2USNwoOdGFza190ZW1wbGF0ZXMYASADKAsyHy5pMThuX3RlbXBsYXRlLnYxLlRhc2tUZW1wbGF0ZXMicAoNVGFza1RlbXBsYXRlcxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEjAKC2ZpZWxkX2luZm9zGAQgAygLMhsuaTE4bl90ZW1wbGF0ZS52MS5GaWVsZEluZm8icwoJRmllbGRJbmZvEhAKCGkxOG5fa2V5GAEgASgJEhIKCmkxOG5fdmFsdWUYAiABKAkSDAoEZGVzYxgDIAEoCRIWCg5uZWVkX3RyYW5zbGF0ZRgEIAEoCRIMCgR0eXBlGAUgASgJEgwKBGVudW0YBiABKAkiIgoRTWFya2V0aW5nQ2FyZExpbmsSDQoFdGl0bGUYASABKAkiigMKFk1hcmtldGluZ0NhcmRQb3B1cEZpdmUSDQoFdGl0bGUYASABKAkSEwoLcG9wdXBfdGl0bGUYAiABKAkSFAoMcGFnZV8xX3RpdGxlGAMgASgJEhoKEnBhZ2VfMV9kZXNjcmlwdGlvbhgEIAEoCRIUCgxwYWdlXzJfdGl0bGUYBSABKAkSGgoScGFnZV8yX2Rlc2NyaXB0aW9uGAYgASgJEhQKDHBhZ2VfM190aXRsZRgHIAEoCRIaChJwYWdlXzNfZGVzY3JpcHRpb24YCCABKAkSFAoMcGFnZV80X3RpdGxlGAkgASgJEhoKEnBhZ2VfNF9kZXNjcmlwdGlvbhgKIAEoCRIUCgxwYWdlXzVfdGl0bGUYCyABKAkSGgoScGFnZV81X2Rlc2NyaXB0aW9uGAwgASgJEhIKCmJ0bl8xX3RleHQYDSABKAkSFAoMYnRuXzFfcHJvbXB0GA4gASgJEhIKCmJ0bl8yX3RleHQYDyABKAkSFAoMYnRuXzJfcHJvbXB0GBAgASgJMpEBChhJMThuVGVtcGxhdGVBZG1pblNlcnZpY2USdQoUR2V0VGVtcGxhdGVGaWVsZEluZm8SLS5pMThuX3RlbXBsYXRlLnYxLkdldFRlbXBsYXRlRmllbGRJbmZvUmVxdWVzdBouLmkxOG5fdGVtcGxhdGUudjEuR2V0VGVtcGxhdGVGaWVsZEluZm9SZXNwb25zZULYAQoUY29tLmkxOG5fdGVtcGxhdGUudjFCFkkxOG5UZW1wbGF0ZUFkbWluUHJvdG9QAVpLZ2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L2kxOG5fdGVtcGxhdGUvdjE7aTE4bl90ZW1wbGF0ZXYxogIDSVhYqgIPSTE4blRlbXBsYXRlLlYxygIPSTE4blRlbXBsYXRlXFYx4gIbSTE4blRlbXBsYXRlXFYxXEdQQk1ldGFkYXRh6gIQSTE4blRlbXBsYXRlOjpWMWIGcHJvdG8z", [Ge, Oc, Ne, j]) , rh = z(oh, 0) , ch = x("ChJmaWxlL3YxL2ZpbGUucHJvdG8SB2ZpbGUudjEiSgoOU2lnblVybFJlcXVlc3QSEAoIZmlsZW5hbWUYASABKAkSJgoGbW9kdWxlGAIgASgOMhYuZmlsZS52MS5QcmVTaWduTW9kdWxlIl4KD1NpZ25VcmxSZXNwb25zZRIUCgxwcmVfc2lnbl91cmwYASABKAkSEgoKb2JqZWN0X3VybBgCIAEoCRIPCgdjZG5fdXJsGAMgASgJEhAKCGZpbGVuYW1lGAQgASgJIjwKE0JhdGNoU2lnblVybFJlcXVlc3QSJQoEdXJscxgBIAMoCzIXLmZpbGUudjEuU2lnblVybFJlcXVlc3QiRwoUQmF0Y2hTaWduVXJsUmVzcG9uc2USLwoNc2lnbl91cmxfbGlzdBgBIAMoCzIYLmZpbGUudjEuU2lnblVybFJlc3BvbnNlKpYBCg1QcmVTaWduTW9kdWxlEh8KG1BSRV9TSUdOX01PRFVMRV9VTlNQRUNJRklFRBAAEiAKHFBSRV9TSUdOX01PRFVMRV9TRVNTSU9OX0ZJTEUQARIkCiBQUkVfU0lHTl9NT0RVTEVfU0VTU0lPTl9GRUVEQkFDSxACEhwKGFBSRV9TSUdOX01PRFVMRV9NQVJLRE9XThADMpgBCgtGaWxlU2VydmljZRI8CgdTaWduVXJsEhcuZmlsZS52MS5TaWduVXJsUmVxdWVzdBoYLmZpbGUudjEuU2lnblVybFJlc3BvbnNlEksKDEJhdGNoU2lnblVybBIcLmZpbGUudjEuQmF0Y2hTaWduVXJsUmVxdWVzdBodLmZpbGUudjEuQmF0Y2hTaWduVXJsUmVzcG9uc2VCkAEKC2NvbS5maWxlLnYxQglGaWxlUHJvdG9QAVo5Z2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L2ZpbGUvdjE7ZmlsZXYxogIDRlhYqgIHRmlsZS5WMcoCB0ZpbGVcVjHiAhNGaWxlXFYxXEdQQk1ldGFkYXRh6gIIRmlsZTo6VjFiBnByb3RvMw") , ah = z(ch, 0) , dh = x("ChhmaWxlL3YxL2FkbWluX2ZpbGUucHJvdG8SB2ZpbGUudjEiVAoTQWRtaW5TaWduVXJsUmVxdWVzdBIQCghmaWxlbmFtZRgBIAEoCRIrCgZtb2R1bGUYAiABKA4yGy5maWxlLnYxLkFkbWluUHJlU2lnbk1vZHVsZSJjChRBZG1pblNpZ25VcmxSZXNwb25zZRIUCgxwcmVfc2lnbl91cmwYASABKAkSEgoKb2JqZWN0X3VybBgCIAEoCRIPCgdjZG5fdXJsGAMgASgJEhAKCGZpbGVuYW1lGAQgASgJIkYKGEFkbWluQmF0Y2hTaWduVXJsUmVxdWVzdBIqCgR1cmxzGAEgAygLMhwuZmlsZS52MS5BZG1pblNpZ25VcmxSZXF1ZXN0IlEKGUFkbWluQmF0Y2hTaWduVXJsUmVzcG9uc2USNAoNc2lnbl91cmxfbGlzdBgBIAMoCzIdLmZpbGUudjEuQWRtaW5TaWduVXJsUmVzcG9uc2UqmAEKEkFkbWluUHJlU2lnbk1vZHVsZRIlCiFBRE1JTl9QUkVfU0lHTl9NT0RVTEVfVU5TUEVDSUZJRUQQABIuCipBRE1JTl9QUkVfU0lHTl9NT0RVTEVfQVBQX0hPTUVfUkVDT01NRU5ERUQQARIrCidBRE1JTl9QUkVfU0lHTl9NT0RVTEVfTk9USUZJQ0FUSU9OX0ZJTEUQAjK7AQoQQWRtaW5GaWxlU2VydmljZRJLCgxBZG1pblNpZ25VcmwSHC5maWxlLnYxLkFkbWluU2lnblVybFJlcXVlc3QaHS5maWxlLnYxLkFkbWluU2lnblVybFJlc3BvbnNlEloKEUFkbWluQmF0Y2hTaWduVXJsEiEuZmlsZS52MS5BZG1pbkJhdGNoU2lnblVybFJlcXVlc3QaIi5maWxlLnYxLkFkbWluQmF0Y2hTaWduVXJsUmVzcG9uc2VClQEKC2NvbS5maWxlLnYxQg5BZG1pbkZpbGVQcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvZmlsZS92MTtmaWxldjGiAgNGWFiqAgdGaWxlLlYxygIHRmlsZVxWMeICE0ZpbGVcVjFcR1BCTWV0YWRhdGHqAghGaWxlOjpWMWIGcHJvdG8z") , sh = z(dh, 0) , uh = x("Chpub3RpZmllci92MS9ub3RpZmllci5wcm90bxILbm90aWZpZXIudjEiKwoNTG9nb3V0UmVxdWVzdBIaCglkZXZpY2VfaWQYASABKAlCB7pIBHICEAEiEAoOTG9nb3V0UmVzcG9uc2UijAIKFVJlZ2lzdGVyRGV2aWNlUmVxdWVzdBIYCgd1c2VyX2lkGAEgASgJQge6SARyAhABEhoKCWRldmljZV9pZBgCIAEoCUIHukgEcgIQARIxCgtkZXZpY2VfdHlwZRgDIAEoCUIcukgZchdSB0JST1dTRVJSB0FORFJPSURSA0lPUxIYCgdvc190eXBlGAQgASgJQge6SARyAhABEhwKC2NsaWVudF90eXBlGAUgASgJQge6SARyAhABEh8KDmNsaWVudF92ZXJzaW9uGAYgASgJQge6SARyAhABEh4KDWNsaWVudF9sb2NhbGUYByABKAlCB7pIBHICEAESEQoJZmNtX3Rva2VuGAggASgJIhgKFlJlZ2lzdGVyRGV2aWNlUmVzcG9uc2UiNQoXRGVyZWdpc3RlckRldmljZVJlcXVlc3QSGgoJZGV2aWNlX2lkGAEgASgJQge6SARyAhABIhoKGERlcmVnaXN0ZXJEZXZpY2VSZXNwb25zZTKWAgoPTm90aWZpZXJTZXJ2aWNlElsKDlJlZ2lzdGVyRGV2aWNlEiIubm90aWZpZXIudjEuUmVnaXN0ZXJEZXZpY2VSZXF1ZXN0GiMubm90aWZpZXIudjEuUmVnaXN0ZXJEZXZpY2VSZXNwb25zZSIAEmEKEERlcmVnaXN0ZXJEZXZpY2USJC5ub3RpZmllci52MS5EZXJlZ2lzdGVyRGV2aWNlUmVxdWVzdBolLm5vdGlmaWVyLnYxLkRlcmVnaXN0ZXJEZXZpY2VSZXNwb25zZSIAEkMKBkxvZ291dBIaLm5vdGlmaWVyLnYxLkxvZ291dFJlcXVlc3QaGy5ub3RpZmllci52MS5Mb2dvdXRSZXNwb25zZSIAQrABCg9jb20ubm90aWZpZXIudjFCDU5vdGlmaWVyUHJvdG9QAVpBZ2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L25vdGlmaWVyL3YxO25vdGlmaWVydjGiAgNOWFiqAgtOb3RpZmllci5WMcoCC05vdGlmaWVyXFYx4gIXTm90aWZpZXJcVjFcR1BCTWV0YWRhdGHqAgxOb3RpZmllcjo6VjFiBnByb3RvMw", [Ge]) , gh = z(uh, 0) , Xa = x("Ch5ub3RpZmllci92MS9ub3RpZmljYXRpb24ucHJvdG8SC25vdGlmaWVyLnYxIuUBChBOb3RpZmljYXRpb25JdGVtEgsKA3VpZBgBIAEoCRI5CgZkZXRhaWwYAyADKAsyKS5ub3RpZmllci52MS5Ob3RpZmljYXRpb25JdGVtLkRldGFpbEVudHJ5EisKBHR5cGUYBCABKA4yHS5ub3RpZmllci52MS5Ob3RpZmljYXRpb25UeXBlEi0KCWNyZWF0ZV9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaLQoLRGV0YWlsRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJeChpHZXROb3RpZmljYXRpb25MaXN0UmVxdWVzdBIXCgpsYXRlc3RfdWlkGAEgASgJSACIAQESGAoFbGltaXQYAiABKAVCCbpIBhoEGAooAUINCgtfbGF0ZXN0X3VpZCJ8ChtHZXROb3RpZmljYXRpb25MaXN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIrCgRkYXRhGAIgAygLMh0ubm90aWZpZXIudjEuTm90aWZpY2F0aW9uSXRlbRINCgV0b3RhbBgDIAEoAxIQCghoYXNfbmV4dBgEIAEoCCLxAQoWTm90aWZpY2F0aW9uSXRlbURldGFpbBINCgV0aXRsZRgBIAEoCRIPCgdjb250ZW50GAIgASgJEicKBmJ1dHRvbhgDIAEoCzIXLm5vdGlmaWVyLnYxLkJ1dHRvbkluZm8SJQoFbWVkaWEYBCABKAsyFi5ub3RpZmllci52MS5NZWRpYUluZm8SMQoMbW9iaWxlX21lZGlhGAUgASgLMhYubm90aWZpZXIudjEuTWVkaWFJbmZvSACIAQESIwoEZGF0YRgGIAMoCzIVLm5vdGlmaWVyLnYxLlBhZ2VEYXRhQg8KDV9tb2JpbGVfbWVkaWEiJgoIUGFnZURhdGESCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIj8KCkJ1dHRvbkluZm8SEwoLYnV0dG9uX3RleHQYASABKAkSDAoEdHlwZRgCIAEoCRIOCgZ0YXJnZXQYAyABKAkiTAoJTWVkaWFJbmZvEgwKBHR5cGUYASABKAkSCwoDdXJsGAIgASgJEhYKCWNvdmVyX3VybBgDIAEoCUgAiAEBQgwKCl9jb3Zlcl91cmwisgEKEk5vdGlmaWNhdGlvbkl0ZW1WMhILCgN1aWQYASABKAkSMwoGZGV0YWlsGAMgASgLMiMubm90aWZpZXIudjEuTm90aWZpY2F0aW9uSXRlbURldGFpbBIrCgR0eXBlGAQgASgOMh0ubm90aWZpZXIudjEuTm90aWZpY2F0aW9uVHlwZRItCgljcmVhdGVfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIoABCh1HZXROb3RpZmljYXRpb25MaXN0UmVzcG9uc2VWMhIPCgdzdWNjZXNzGAEgASgIEi0KBGRhdGEYAiADKAsyHy5ub3RpZmllci52MS5Ob3RpZmljYXRpb25JdGVtVjISDQoFdG90YWwYAyABKAMSEAoIaGFzX25leHQYBCABKAgqgQEKEk5vdGlmaWNhdGlvblN0YXR1cxIjCh9OT1RJRklDQVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASIQodTk9USUZJQ0FUSU9OX1NUQVRVU19QVUJMSVNIRUQQARIjCh9OT1RJRklDQVRJT05fU1RBVFVTX1VOUFVCTElTSEVEEAIqkgEKEE5vdGlmaWNhdGlvblR5cGUSIQodTk9USUZJQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIcChhOT1RJRklDQVRJT05fVFlQRV9TWVNURU0QARIaChZOT1RJRklDQVRJT05fVFlQRV9VU0VSEAISIQodTk9USUZJQ0FUSU9OX1RZUEVfTkVXX1ZFUlNJT04QAzLtAQoTTm90aWZpY2F0aW9uU2VydmljZRJoChNHZXROb3RpZmljYXRpb25MaXN0Eicubm90aWZpZXIudjEuR2V0Tm90aWZpY2F0aW9uTGlzdFJlcXVlc3QaKC5ub3RpZmllci52MS5HZXROb3RpZmljYXRpb25MaXN0UmVzcG9uc2USbAoVR2V0Tm90aWZpY2F0aW9uTGlzdFYyEicubm90aWZpZXIudjEuR2V0Tm90aWZpY2F0aW9uTGlzdFJlcXVlc3QaKi5ub3RpZmllci52MS5HZXROb3RpZmljYXRpb25MaXN0UmVzcG9uc2VWMkK0AQoPY29tLm5vdGlmaWVyLnYxQhFOb3RpZmljYXRpb25Qcm90b1ABWkFnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvbm90aWZpZXIvdjE7bm90aWZpZXJ2MaICA05YWKoCC05vdGlmaWVyLlYxygILTm90aWZpZXJcVjHiAhdOb3RpZmllclxWMVxHUEJNZXRhZGF0YeoCDE5vdGlmaWVyOjpWMWIGcHJvdG8z", [Ge, j]) , hh = z(Xa, 0) , bh = x("CiRub3RpZmllci92MS9ub3RpZmljYXRpb25fYWRtaW4ucHJvdG8SC25vdGlmaWVyLnYxItwBCiBBZGROZXdWZXJzaW9uTm90aWZpY2F0aW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRITCgt0ZW1wbGF0ZV9pZBgDIAEoCRJcChBwbGFjZWhvbGRlcl9kYXRhGAQgAygLMkIubm90aWZpZXIudjEuQWRkTmV3VmVyc2lvbk5vdGlmaWNhdGlvblJlcXVlc3QuUGxhY2Vob2xkZXJEYXRhRW50cnkaNgoUUGxhY2Vob2xkZXJEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0CiFBZGROZXdWZXJzaW9uTm90aWZpY2F0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKaAQofVXBkYXRlU3lzdGVtTm90aWZpY2F0aW9uUmVxdWVzdBIYChBub3RpZmljYXRpb25fdWlkGAEgASgJEjQKBnN0YXR1cxgCIAEoDjIfLm5vdGlmaWVyLnYxLk5vdGlmaWNhdGlvblN0YXR1c0gAiAEBEhIKBXRpdGxlGAMgASgJSAGIAQFCCQoHX3N0YXR1c0IICgZfdGl0bGUiMwogVXBkYXRlU3lzdGVtTm90aWZpY2F0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCL3AQoVQWRtaW5Ob3RpZmljYXRpb25JdGVtEgsKA3VpZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIMCgRkZXNjGAMgASgJEicKBmRldGFpbBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKwoEdHlwZRgFIAEoDjIdLm5vdGlmaWVyLnYxLk5vdGlmaWNhdGlvblR5cGUSLwoGc3RhdHVzGAYgASgOMh8ubm90aWZpZXIudjEuTm90aWZpY2F0aW9uU3RhdHVzEi0KCWNyZWF0ZV9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi7gIKG1BhZ2VOb3RpZmljYXRpb25MaXN0UmVxdWVzdBIVCgRwYWdlGAEgASgFQge6SAQaAigBEhwKCXBhZ2Vfc2l6ZRgCIAEoBUIJukgGGgQYZCgBEj0KEW5vdGlmaWNhdGlvbl90eXBlGAMgASgOMh0ubm90aWZpZXIudjEuTm90aWZpY2F0aW9uVHlwZUgAiAEBEkEKE25vdGlmaWNhdGlvbl9zdGF0dXMYBCABKA4yHy5ub3RpZmllci52MS5Ob3RpZmljYXRpb25TdGF0dXNIAYgBARIdChBub3RpZmljYXRpb25fdWlkGAUgASgJSAKIAQESHwoSbm90aWZpY2F0aW9uX3RpdGxlGAYgASgJSAOIAQFCFAoSX25vdGlmaWNhdGlvbl90eXBlQhYKFF9ub3RpZmljYXRpb25fc3RhdHVzQhMKEV9ub3RpZmljYXRpb25fdWlkQhUKE19ub3RpZmljYXRpb25fdGl0bGUicAocUGFnZU5vdGlmaWNhdGlvbkxpc3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEjAKBGRhdGEYAiADKAsyIi5ub3RpZmllci52MS5BZG1pbk5vdGlmaWNhdGlvbkl0ZW0SDQoFdG90YWwYAyABKAMi1AEKHEFkZFN5c3RlbU5vdGlmaWNhdGlvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSEwoLdGVtcGxhdGVfaWQYAyABKAkSWAoQcGxhY2Vob2xkZXJfZGF0YRgEIAMoCzI+Lm5vdGlmaWVyLnYxLkFkZFN5c3RlbU5vdGlmaWNhdGlvblJlcXVlc3QuUGxhY2Vob2xkZXJEYXRhRW50cnkaNgoUUGxhY2Vob2xkZXJEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIwCh1BZGRTeXN0ZW1Ob3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIikKEkdldFRlbXBsYXRlUmVxdWVzdBITCgt0ZW1wbGF0ZV9pZBgBIAEoCSKJAQoTR2V0VGVtcGxhdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEioKCWkxOG5fZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNQoIdGVtcGxhdGUYBSABKAsyIy5ub3RpZmllci52MS5Ob3RpZmljYXRpb25JdGVtRGV0YWlsItkBChJBZGRUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIqCglpMThuX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EgsKA3VpZBgEIAEoCRI1Cgh0ZW1wbGF0ZRgFIAEoCzIjLm5vdGlmaWVyLnYxLk5vdGlmaWNhdGlvbkl0ZW1EZXRhaWwSMAoNdGVtcGxhdGVfdHlwZRgGIAEoDjIZLm5vdGlmaWVyLnYxLlRlbXBsYXRlVHlwZSKzAQoeQWRkTm90aWZpY2F0aW9uVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSKgoJaTE4bl9kYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBILCgN1aWQYBCABKAkSNQoIdGVtcGxhdGUYBSABKAsyIy5ub3RpZmllci52MS5Ob3RpZmljYXRpb25JdGVtRGV0YWlsIjsKE0FkZFRlbXBsYXRlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBITCgt0ZW1wbGF0ZV9pZBgCIAEoCSKhAQoMVGVtcGxhdGVJdGVtEgsKA3VpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEioKCWkxOG5fZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNQoIdGVtcGxhdGUYBSABKAsyIy5ub3RpZmllci52MS5Ob3RpZmljYXRpb25JdGVtRGV0YWlsIpsBChZHZXRUZW1wbGF0ZUxpc3RSZXF1ZXN0EhUKBHBhZ2UYASABKAVCB7pIBBoCKAESHAoJcGFnZV9zaXplGAIgASgFQgm6SAYaBBhkKAESEQoEbmFtZRgDIAEoCUgAiAEBEjAKDXRlbXBsYXRlX3R5cGUYBCABKA4yGS5ub3RpZmllci52MS5UZW1wbGF0ZVR5cGVCBwoFX25hbWUiYgoXR2V0VGVtcGxhdGVMaXN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBInCgRkYXRhGAIgAygLMhkubm90aWZpZXIudjEuVGVtcGxhdGVJdGVtEg0KBXRvdGFsGAMgASgDIu0SChBUZW1wbGF0ZUkxOG5EYXRhEjEKAmFyGAEgAygLMiUubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5BckVudHJ5EjEKAmNzGAIgAygLMiUubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5Dc0VudHJ5EjEKAmRlGAMgAygLMiUubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5EZUVudHJ5EjEKAmVuGAQgAygLMiUubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5FbkVudHJ5EjEKAmVzGAUgAygLMiUubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5Fc0VudHJ5EjgKBmVzXzQxORgGIAMoCzIoLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuRXM0MTlFbnRyeRIxCgJmYRgHIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuRmFFbnRyeRIxCgJmchgIIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuRnJFbnRyeRIxCgJoaRgJIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuSGlFbnRyeRIxCgJpZBgKIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuSWRFbnRyeRIxCgJpdBgLIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuSXRFbnRyeRIxCgJqYRgMIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuSmFFbnRyeRIxCgJrbxgNIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuS29FbnRyeRIxCgJubBgOIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuTmxFbnRyeRIxCgJwbBgPIAMoCzIlLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuUGxFbnRyeRI2CgVwdF9CUhgQIAMoCzInLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuUHRCUkVudHJ5EjYKBXB0X1BUGBEgAygLMicubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5QdFBURW50cnkSMQoCcnUYEiADKAsyJS5ub3RpZmllci52MS5UZW1wbGF0ZUkxOG5EYXRhLlJ1RW50cnkSMQoCdGgYEyADKAsyJS5ub3RpZmllci52MS5UZW1wbGF0ZUkxOG5EYXRhLlRoRW50cnkSMQoCdHIYFCADKAsyJS5ub3RpZmllci52MS5UZW1wbGF0ZUkxOG5EYXRhLlRyRW50cnkSMQoCdWsYFSADKAsyJS5ub3RpZmllci52MS5UZW1wbGF0ZUkxOG5EYXRhLlVrRW50cnkSMQoCdmkYFiADKAsyJS5ub3RpZmllci52MS5UZW1wbGF0ZUkxOG5EYXRhLlZpRW50cnkSNgoFemhfQ04YFyADKAsyJy5ub3RpZmllci52MS5UZW1wbGF0ZUkxOG5EYXRhLlpoQ05FbnRyeRI2CgV6aF9ISxgYIAMoCzInLm5vdGlmaWVyLnYxLlRlbXBsYXRlSTE4bkRhdGEuWmhIS0VudHJ5EjYKBXpoX1RXGBkgAygLMicubm90aWZpZXIudjEuVGVtcGxhdGVJMThuRGF0YS5aaFRXRW50cnkaKQoHQXJFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB0NzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARopCgdEZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKQoHRW5FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB0VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARosCgpFczQxOUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKQoHRmFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB0ZyRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARopCgdIaUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKQoHSWRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB0l0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARopCgdKYUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKQoHS29FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB05sRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARopCgdQbEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoJUHRCUkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoJUHRQVEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKQoHUnVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB1RoRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARopCgdUckVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKQoHVWtFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGikKB1ZpRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARorCglaaENORW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARorCglaaEhLRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARorCglaaFRXRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJECiREZWxldGVOb3RpZmljYXRpb25BbmRUZW1wbGF0ZVJlcXVlc3QSHAoLdGVtcGxhdGVfaWQYASABKAlCB7pIBHICEAEiOAolRGVsZXRlTm90aWZpY2F0aW9uQW5kVGVtcGxhdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIKlsKDFRlbXBsYXRlVHlwZRIZChVURU1QTEFURV9UWVBFX1VOS05PV04QABIYChRURU1QTEFURV9UWVBFX1NZU1RFTRABEhYKElRFTVBMQVRFX1RZUEVfVVNFUhACMvYGChhOb3RpZmljYXRpb25BZG1pblNlcnZpY2USbgoVQWRkU3lzdGVtTm90aWZpY2F0aW9uEikubm90aWZpZXIudjEuQWRkU3lzdGVtTm90aWZpY2F0aW9uUmVxdWVzdBoqLm5vdGlmaWVyLnYxLkFkZFN5c3RlbU5vdGlmaWNhdGlvblJlc3BvbnNlEmoKE0dldE5vdGlmaWNhdGlvbkxpc3QSKC5ub3RpZmllci52MS5QYWdlTm90aWZpY2F0aW9uTGlzdFJlcXVlc3QaKS5ub3RpZmllci52MS5QYWdlTm90aWZpY2F0aW9uTGlzdFJlc3BvbnNlEncKGFVwZGF0ZVN5c3RlbU5vdGlmaWNhdGlvbhIsLm5vdGlmaWVyLnYxLlVwZGF0ZVN5c3RlbU5vdGlmaWNhdGlvblJlcXVlc3QaLS5ub3RpZmllci52MS5VcGRhdGVTeXN0ZW1Ob3RpZmljYXRpb25SZXNwb25zZRJ6ChlBZGROZXdWZXJzaW9uTm90aWZpY2F0aW9uEi0ubm90aWZpZXIudjEuQWRkTmV3VmVyc2lvbk5vdGlmaWNhdGlvblJlcXVlc3QaLi5ub3RpZmllci52MS5BZGROZXdWZXJzaW9uTm90aWZpY2F0aW9uUmVzcG9uc2USUAoLQWRkVGVtcGxhdGUSHy5ub3RpZmllci52MS5BZGRUZW1wbGF0ZVJlcXVlc3QaIC5ub3RpZmllci52MS5BZGRUZW1wbGF0ZVJlc3BvbnNlElwKD0dldFRlbXBsYXRlTGlzdBIjLm5vdGlmaWVyLnYxLkdldFRlbXBsYXRlTGlzdFJlcXVlc3QaJC5ub3RpZmllci52MS5HZXRUZW1wbGF0ZUxpc3RSZXNwb25zZRJQCgtHZXRUZW1wbGF0ZRIfLm5vdGlmaWVyLnYxLkdldFRlbXBsYXRlUmVxdWVzdBogLm5vdGlmaWVyLnYxLkdldFRlbXBsYXRlUmVzcG9uc2UShgEKHURlbGV0ZU5vdGlmaWNhdGlvbkFuZFRlbXBsYXRlEjEubm90aWZpZXIudjEuRGVsZXRlTm90aWZpY2F0aW9uQW5kVGVtcGxhdGVSZXF1ZXN0GjIubm90aWZpZXIudjEuRGVsZXRlTm90aWZpY2F0aW9uQW5kVGVtcGxhdGVSZXNwb25zZUK5AQoPY29tLm5vdGlmaWVyLnYxQhZOb3RpZmljYXRpb25BZG1pblByb3RvUAFaQWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9ub3RpZmllci92MTtub3RpZmllcnYxogIDTlhYqgILTm90aWZpZXIuVjHKAgtOb3RpZmllclxWMeICF05vdGlmaWVyXFYxXEdQQk1ldGFkYXRh6gIMTm90aWZpZXI6OlYxYgZwcm90bzM", [Ge, j, Ne, Xa]) , Vh = z(bh, 0) , mh = x("ChZjb25maWcvdjEvY29uZmlnLnByb3RvEgljb25maWcudjEidAoJRTJCQ29uZmlnEhIKCmNsdXN0ZXJfaWQYASABKAkSEwoLZTJiX2FwaV9rZXkYAiABKAkSEgoKZTJiX2RvbWFpbhgDIAEoCRIOCgZ3ZWlnaHQYBSABKA0SGgoSbm9ybWFsX3VzZXJfd2VpZ2h0GAYgASgNIisKFUdldEJ5Q2x1c3RlcklEUmVxdWVzdBISCgpjbHVzdGVyX2lkGAEgASgJImoKFkdldEJ5Q2x1c3RlcklEUmVzcG9uc2USKAoKZTJiX2NvbmZpZxgBIAEoCzIULmNvbmZpZy52MS5FMkJDb25maWcSDwoHc3VjY2VzcxgCIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAMgASgJIiwKE0dldEF2YWlsYWJsZVJlcXVlc3QSFQoNaXNfbWVtYmVyc2hpcBgBIAEoCCJoChRHZXRBdmFpbGFibGVSZXNwb25zZRIoCgplMmJfY29uZmlnGAEgASgLMhQuY29uZmlnLnYxLkUyQkNvbmZpZxIPCgdzdWNjZXNzGAIgASgIEhUKDWVycm9yX21lc3NhZ2UYAyABKAkiEAoOTGlzdEFsbFJlcXVlc3QiZAoPTGlzdEFsbFJlc3BvbnNlEikKC2UyYl9jb25maWdzGAEgAygLMhQuY29uZmlnLnYxLkUyQkNvbmZpZxIPCgdzdWNjZXNzGAIgASgIEhUKDWVycm9yX21lc3NhZ2UYAyABKAky/AEKEEUyQkNvbmZpZ1NlcnZpY2USVQoOR2V0QnlDbHVzdGVySUQSIC5jb25maWcudjEuR2V0QnlDbHVzdGVySURSZXF1ZXN0GiEuY29uZmlnLnYxLkdldEJ5Q2x1c3RlcklEUmVzcG9uc2USTwoMR2V0QXZhaWxhYmxlEh4uY29uZmlnLnYxLkdldEF2YWlsYWJsZVJlcXVlc3QaHy5jb25maWcudjEuR2V0QXZhaWxhYmxlUmVzcG9uc2USQAoHTGlzdEFsbBIZLmNvbmZpZy52MS5MaXN0QWxsUmVxdWVzdBoaLmNvbmZpZy52MS5MaXN0QWxsUmVzcG9uc2VCoAEKDWNvbS5jb25maWcudjFCC0NvbmZpZ1Byb3RvUAFaPWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9jb25maWcvdjE7Y29uZmlndjGiAgNDWFiqAglDb25maWcuVjHKAglDb25maWdcVjHiAhVDb25maWdcVjFcR1BCTWV0YWRhdGHqAgpDb25maWc6OlYxYgZwcm90bzM") , Ah = z(mh, 0) , Ia = x("Ch9hY3Rpdml0eS92MS9hY3Rpdml0eV9iYXNlLnByb3RvEgthY3Rpdml0eS52MSKsAQoNVXNlckNvdW50SW5mbxINCgV0b3RhbBgBIAEoAxJBCgxkb21haW5fY291bnQYAiADKAsyKy5hY3Rpdml0eS52MS5Vc2VyQ291bnRJbmZvLkRvbWFpbkNvdW50RW50cnkSFQoNYmxvY2tlZF9jb3VudBgDIAEoAxoyChBEb21haW5Db3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEixwQKFEFjdGl2aXR5T3JnYW5pemF0aW9uEgoKAmlkGAEgASgDEgsKA3VpZBgCIAEoCRIMCgRuYW1lGAMgASgJEg4KBmF2YXRhchgEIAEoCRINCgV0aXRsZRgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIvCghvcmdfdHlwZRgHIAEoDjIdLmFjdGl2aXR5LnYxLk9yZ2FuaXphdGlvblR5cGUSIwoGc3RhdHVzGAggASgOMhMuYWN0aXZpdHkudjEuU3RhdHVzEh4KFnJlY29tbWVuZF91c2VjYXNlX2xpc3QYCSADKAkSGQoRZW1haWxfZG9tYWluX2xpc3QYCiADKAkSDgoGbG9jYWxlGAsgASgJEhIKCmV4dHJhX2RhdGEYDSABKAkSEwoLdW5pcXVlX25hbWUYDiABKAkSLgoKY3JlYXRlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZGVsZXRlZF9hdBgRIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKdXNlcl90b3RhbBgSIAEoAxIZChFyZWNvbW1lbmRfY3JlZGl0cxgTIAEoBRIYChByZWdpc3Rlcl9jcmVkaXRzGBQgASgFEg8KB2NvdW50cnkYFSABKAkSDAoEY2l0eRgWIAEoCRISCgphbGlhc19saXN0GBcgAygJItgBChNBY3Rpdml0eUVtYWlsRG9tYWluEgoKAmlkGAEgASgDEg8KB29yZ191aWQYAiABKAkSFAoMZW1haWxfZG9tYWluGAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmRlbGV0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIv4BCgxBY3Rpdml0eVVzZXISCgoCaWQYASABKAMSDwoHb3JnX3VpZBgCIAEoCRIPCgd1c2VyX2lkGAMgASgJEjAKDWFjdGl2aXR5X3R5cGUYBCABKA4yGS5hY3Rpdml0eS52MS5BY3Rpdml0eVR5cGUSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZGVsZXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAigwQKEEFjdGl2aXR5VXNlckluZm8SDwoHdXNlcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCglmaXJzdG5hbWUYAyABKAkSEAoIbGFzdG5hbWUYBCABKAkSEwoLZGlzcGxheW5hbWUYBSABKAkSEAoIbmlja25hbWUYBiABKAkSDgoGYXZhdGFyGAcgASgJEhAKCGlzX2FscGhhGAggASgIEhMKC2luX3dhaXRsaXN0GAkgASgIEhMKC3ZpcF92ZXJzaW9uGAogASgJEhQKDHZpcF9pbnRlcnZhbBgLIAEoCRIaChJjdXJyZW50X3BlcmlvZF9lbmQYDCABKAMSHAoUY2FuY2VsX2F0X3BlcmlvZF9lbmQYDSABKAgSDwoHaXNfYmV0YRgOIAEoCBIYChBwYXltZW50X3BsYXRmb3JtGA8gASgJEgsKA3VpZBgQIAEoCRIbChNjb25jdXJyZW50X3Nlc3Npb25zGBEgASgFEhUKDXBsYXRmb3JtX2xpc3QYEiADKAkSGgoSbWVtYmVyc2hpcF92ZXJzaW9uGB4gASgJEhsKE21lbWJlcnNoaXBfaW50ZXJ2YWwYHyABKAkSEgoKaXNfYmxvY2tlZBggIAEoCBIuCgpjcmVhdGVkX2F0GCMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKXAQobTGlzdE9yZ2FuaXphdGlvblVzZXJSZXF1ZXN0EgwKBHBhZ2UYASABKAUSEQoJcGFnZV9zaXplGAIgASgFEhQKB29yZ191aWQYAyABKAlIAIgBARIRCgR1c2VyGAQgASgJSAGIAQESGQoRZW1haWxfZG9tYWluX2xpc3QYBSADKAlCCgoIX29yZ191aWRCBwoFX3VzZXIiWgocTGlzdE9yZ2FuaXphdGlvblVzZXJSZXNwb25zZRINCgV0b3RhbBgBIAEoBRIrCgRsaXN0GAIgAygLMh0uYWN0aXZpdHkudjEuQWN0aXZpdHlVc2VySW5mbyKgAwofTGlzdEFjdGl2aXR5T3JnYW5pemF0aW9uUmVxdWVzdBIMCgRwYWdlGAEgASgFEhEKCXBhZ2Vfc2l6ZRgCIAEoBRIPCgJpZBgDIAEoA0gAiAEBEhAKA3VpZBgEIAEoCUgBiAEBEhEKBG5hbWUYBSABKAlIAogBARI0CghvcmdfdHlwZRgGIAEoDjIdLmFjdGl2aXR5LnYxLk9yZ2FuaXphdGlvblR5cGVIA4gBARITCgZsb2NhbGUYByABKAlIBIgBARIZCgxlbWFpbF9kb21haW4YCCABKAlIBYgBARIoCgZzdGF0dXMYCSABKA4yEy5hY3Rpdml0eS52MS5TdGF0dXNIBogBARIUCgdrZXl3b3JkGAogASgJSAeIAQESGAoLdW5pcXVlX25hbWUYCyABKAlICIgBAUIFCgNfaWRCBgoEX3VpZEIHCgVfbmFtZUILCglfb3JnX3R5cGVCCQoHX2xvY2FsZUIPCg1fZW1haWxfZG9tYWluQgkKB19zdGF0dXNCCgoIX2tleXdvcmRCDgoMX3VuaXF1ZV9uYW1lImIKIExpc3RBY3Rpdml0eU9yZ2FuaXphdGlvblJlc3BvbnNlEg0KBXRvdGFsGAEgASgFEi8KBGRhdGEYAiADKAsyIS5hY3Rpdml0eS52MS5BY3Rpdml0eU9yZ2FuaXphdGlvbipNCgxBY3Rpdml0eVR5cGUSHQoZQUNUSVZJVFlfVFlQRV9VTlNQRUNJRklFRBAAEh4KGkFDVElWSVRZX1RZUEVfT1JHQU5JWkFUSU9OEAEqkwEKEE9yZ2FuaXphdGlvblR5cGUSIQodT1JHQU5JWkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIdChlPUkdBTklaQVRJT05fVFlQRV9DT01QQU5ZEAESHAoYT1JHQU5JWkFUSU9OX1RZUEVfU0NIT09MEAISHwobT1JHQU5JWkFUSU9OX1RZUEVfQ09NTVVOSVRZEAMqSAoGU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEhEKDVNUQVRVU19BQ1RJVkUQARITCg9TVEFUVVNfSU5BQ1RJVkUQAipiCg9Vc2VyQmxvY2tlZFR5cGUSHAoYQkxPQ0tFRF9UWVBFX1VOU1BFQ0lGSUVEEAASGAoUQkxPQ0tFRF9UWVBFX0FDQ09VTlQQARIXChNCTE9DS0VEX1RZUEVfU0hVVFVQEAJCtAEKD2NvbS5hY3Rpdml0eS52MUIRQWN0aXZpdHlCYXNlUHJvdG9QAVpBZ2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L2FjdGl2aXR5L3YxO2FjdGl2aXR5djGiAgNBWFiqAgtBY3Rpdml0eS5WMcoCC0FjdGl2aXR5XFYx4gIXQWN0aXZpdHlcVjFcR1BCTWV0YWRhdGHqAgxBY3Rpdml0eTo6VjFiBnByb3RvMw", [Ne, j]) , Zh = x("ChphY3Rpdml0eS92MS9hY3Rpdml0eS5wcm90bxILYWN0aXZpdHkudjEiMgofR2V0T3JnYW5pemF0aW9uSW5mb0J5VUlEUmVxdWVzdBIPCgdvcmdfdWlkGAEgASgJIlcKIEdldE9yZ2FuaXphdGlvbkluZm9CeVVJRFJlc3BvbnNlEjMKCG9yZ19pbmZvGAEgASgLMiEuYWN0aXZpdHkudjEuQWN0aXZpdHlPcmdhbml6YXRpb24iMgohR2V0T3JnYW5pemF0aW9uSW5mb0J5RW1haWxSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIlkKIkdldE9yZ2FuaXphdGlvbkluZm9CeUVtYWlsUmVzcG9uc2USMwoIb3JnX2luZm8YASABKAsyIS5hY3Rpdml0eS52MS5BY3Rpdml0eU9yZ2FuaXphdGlvbiI9CiZHZXRPcmdhbml6YXRpb25JbmZvQnlVbmlxdWVOYW1lUmVxdWVzdBITCgt1bmlxdWVfbmFtZRgBIAEoCSJeCidHZXRPcmdhbml6YXRpb25JbmZvQnlVbmlxdWVOYW1lUmVzcG9uc2USMwoIb3JnX2luZm8YASABKAsyIS5hY3Rpdml0eS52MS5BY3Rpdml0eU9yZ2FuaXphdGlvbjKXBAoVUHVibGljQWN0aXZpdHlTZXJ2aWNlEncKGEdldE9yZ2FuaXphdGlvbkluZm9CeVVJRBIsLmFjdGl2aXR5LnYxLkdldE9yZ2FuaXphdGlvbkluZm9CeVVJRFJlcXVlc3QaLS5hY3Rpdml0eS52MS5HZXRPcmdhbml6YXRpb25JbmZvQnlVSURSZXNwb25zZRJ3ChhMaXN0QWN0aXZpdHlPcmdhbml6YXRpb24SLC5hY3Rpdml0eS52MS5MaXN0QWN0aXZpdHlPcmdhbml6YXRpb25SZXF1ZXN0Gi0uYWN0aXZpdHkudjEuTGlzdEFjdGl2aXR5T3JnYW5pemF0aW9uUmVzcG9uc2USfQoaR2V0T3JnYW5pemF0aW9uSW5mb0J5RW1haWwSLi5hY3Rpdml0eS52MS5HZXRPcmdhbml6YXRpb25JbmZvQnlFbWFpbFJlcXVlc3QaLy5hY3Rpdml0eS52MS5HZXRPcmdhbml6YXRpb25JbmZvQnlFbWFpbFJlc3BvbnNlEowBCh9HZXRPcmdhbml6YXRpb25JbmZvQnlVbmlxdWVOYW1lEjMuYWN0aXZpdHkudjEuR2V0T3JnYW5pemF0aW9uSW5mb0J5VW5pcXVlTmFtZVJlcXVlc3QaNC5hY3Rpdml0eS52MS5HZXRPcmdhbml6YXRpb25JbmZvQnlVbmlxdWVOYW1lUmVzcG9uc2VCsAEKD2NvbS5hY3Rpdml0eS52MUINQWN0aXZpdHlQcm90b1ABWkFnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvYWN0aXZpdHkvdjE7YWN0aXZpdHl2MaICA0FYWKoCC0FjdGl2aXR5LlYxygILQWN0aXZpdHlcVjHiAhdBY3Rpdml0eVxWMVxHUEJNZXRhZGF0YeoCDEFjdGl2aXR5OjpWMWIGcHJvdG8z", [Ia, Ne, j]) , fh = z(Zh, 0) , ph = x("CiBhY3Rpdml0eS92MS9hY3Rpdml0eV9hZG1pbi5wcm90bxILYWN0aXZpdHkudjEilAUKIVVwZGF0ZUFjdGl2aXR5T3JnYW5pemF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoAxIYCgt1bmlxdWVfbmFtZRgCIAEoCUgAiAEBEhEKBG5hbWUYAyABKAlIAYgBARI0CghvcmdfdHlwZRgEIAEoDjIdLmFjdGl2aXR5LnYxLk9yZ2FuaXphdGlvblR5cGVIAogBARITCgZsb2NhbGUYBSABKAlIA4gBARISCgV0aXRsZRgGIAEoCUgEiAEBEhgKC2Rlc2NyaXB0aW9uGAcgASgJSAWIAQESEwoGYXZhdGFyGAggASgJSAaIAQESGQoRZW1haWxfZG9tYWluX2xpc3QYCSADKAkSKAoGc3RhdHVzGAogASgOMhMuYWN0aXZpdHkudjEuU3RhdHVzSAeIAQESHgoWcmVjb21tZW5kX3VzZWNhc2VfbGlzdBgLIAMoCRIXCgpleHRyYV9kYXRhGAwgASgJSAiIAQESHgoRcmVjb21tZW5kX2NyZWRpdHMYDSABKAVICYgBARIdChByZWdpc3Rlcl9jcmVkaXRzGA4gASgFSAqIAQESFAoHY291bnRyeRgPIAEoCUgLiAEBEhEKBGNpdHkYECABKAlIDIgBARISCgphbGlhc19saXN0GBEgAygJQg4KDF91bmlxdWVfbmFtZUIHCgVfbmFtZUILCglfb3JnX3R5cGVCCQoHX2xvY2FsZUIICgZfdGl0bGVCDgoMX2Rlc2NyaXB0aW9uQgkKB19hdmF0YXJCCQoHX3N0YXR1c0INCgtfZXh0cmFfZGF0YUIUChJfcmVjb21tZW5kX2NyZWRpdHNCEwoRX3JlZ2lzdGVyX2NyZWRpdHNCCgoIX2NvdW50cnlCBwoFX2NpdHkiRgoiVXBkYXRlQWN0aXZpdHlPcmdhbml6YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkipwMKIUNyZWF0ZUFjdGl2aXR5T3JnYW5pemF0aW9uUmVxdWVzdBITCgt1bmlxdWVfbmFtZRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKBmF2YXRhchgDIAEoCUgAiAEBEg0KBXRpdGxlGAQgASgJEhMKC2Rlc2NyaXB0aW9uGAUgASgJEi8KCG9yZ190eXBlGAYgASgOMh0uYWN0aXZpdHkudjEuT3JnYW5pemF0aW9uVHlwZRIjCgZzdGF0dXMYByABKA4yEy5hY3Rpdml0eS52MS5TdGF0dXMSHgoWcmVjb21tZW5kX3VzZWNhc2VfbGlzdBgIIAMoCRIZChFlbWFpbF9kb21haW5fbGlzdBgJIAMoCRIOCgZsb2NhbGUYCiABKAkSEgoKZXh0cmFfZGF0YRgLIAEoCRIZChFyZWNvbW1lbmRfY3JlZGl0cxgMIAEoBRIYChByZWdpc3Rlcl9jcmVkaXRzGA0gASgFEg8KB2NvdW50cnkYDiABKAkSDAoEY2l0eRgPIAEoCRISCgphbGlhc19saXN0GBAgAygJQgkKB19hdmF0YXIidwoiQ3JlYXRlQWN0aXZpdHlPcmdhbml6YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSLwoEZGF0YRgDIAEoCzIhLmFjdGl2aXR5LnYxLkFjdGl2aXR5T3JnYW5pemF0aW9uIh4KEERlbGV0ZU9yZ1JlcXVlc3QSCgoCaWQYASABKAMiNAoQRGVsZXRlT3JnUmVzb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiLQoaR2V0T3JnVXNlckNvdW50SW5mb1JlcXVlc3QSDwoHb3JnX3VpZBgBIAEoCSLeAQobR2V0T3JnVXNlckNvdW50SW5mb1Jlc3BvbnNlEg0KBXRvdGFsGAEgASgDEk8KDGRvbWFpbl9jb3VudBgCIAMoCzI5LmFjdGl2aXR5LnYxLkdldE9yZ1VzZXJDb3VudEluZm9SZXNwb25zZS5Eb21haW5Db3VudEVudHJ5EhUKDWJsb2NrZWRfY291bnQYAyABKAMSFAoMYWN0aXZlX2NvdW50GAQgASgDGjIKEERvbWFpbkNvdW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASIpChZJbXBvcnREYXRhQnlDc3ZSZXF1ZXN0Eg8KB2Nzdl9zdHIYASABKAkifQoXSW1wb3J0RGF0YUJ5Q3N2UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEhUKDXN1Y2Nlc3NfY291bnQYBCABKAMSFAoMZmFpbGVkX2NvdW50GAUgASgDEhMKC2ZhaWxlZF9saXN0GAYgAygJMo0GChRBY3Rpdml0eUFkbWluU2VydmljZRJ3ChhMaXN0QWN0aXZpdHlPcmdhbml6YXRpb24SLC5hY3Rpdml0eS52MS5MaXN0QWN0aXZpdHlPcmdhbml6YXRpb25SZXF1ZXN0Gi0uYWN0aXZpdHkudjEuTGlzdEFjdGl2aXR5T3JnYW5pemF0aW9uUmVzcG9uc2USfQoaVXBkYXRlQWN0aXZpdHlPcmdhbml6YXRpb24SLi5hY3Rpdml0eS52MS5VcGRhdGVBY3Rpdml0eU9yZ2FuaXphdGlvblJlcXVlc3QaLy5hY3Rpdml0eS52MS5VcGRhdGVBY3Rpdml0eU9yZ2FuaXphdGlvblJlc3BvbnNlEn0KGkNyZWF0ZUFjdGl2aXR5T3JnYW5pemF0aW9uEi4uYWN0aXZpdHkudjEuQ3JlYXRlQWN0aXZpdHlPcmdhbml6YXRpb25SZXF1ZXN0Gi8uYWN0aXZpdHkudjEuQ3JlYXRlQWN0aXZpdHlPcmdhbml6YXRpb25SZXNwb25zZRJrChRMaXN0T3JnYW5pemF0aW9uVXNlchIoLmFjdGl2aXR5LnYxLkxpc3RPcmdhbml6YXRpb25Vc2VyUmVxdWVzdBopLmFjdGl2aXR5LnYxLkxpc3RPcmdhbml6YXRpb25Vc2VyUmVzcG9uc2USaAoTR2V0T3JnVXNlckNvdW50SW5mbxInLmFjdGl2aXR5LnYxLkdldE9yZ1VzZXJDb3VudEluZm9SZXF1ZXN0GiguYWN0aXZpdHkudjEuR2V0T3JnVXNlckNvdW50SW5mb1Jlc3BvbnNlEkkKCURlbGV0ZU9yZxIdLmFjdGl2aXR5LnYxLkRlbGV0ZU9yZ1JlcXVlc3QaHS5hY3Rpdml0eS52MS5EZWxldGVPcmdSZXNvbnNlElwKD0ltcG9ydERhdGFCeUNzdhIjLmFjdGl2aXR5LnYxLkltcG9ydERhdGFCeUNzdlJlcXVlc3QaJC5hY3Rpdml0eS52MS5JbXBvcnREYXRhQnlDc3ZSZXNwb25zZUK1AQoPY29tLmFjdGl2aXR5LnYxQhJBY3Rpdml0eUFkbWluUHJvdG9QAVpBZ2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L2FjdGl2aXR5L3YxO2FjdGl2aXR5djGiAgNBWFiqAgtBY3Rpdml0eS5WMcoCC0FjdGl2aXR5XFYx4gIXQWN0aXZpdHlcVjFcR1BCTWV0YWRhdGHqAgxBY3Rpdml0eTo6VjFiBnByb3RvMw", [Ia, Ne, j]) , Gh = z(ph, 0) , Ra = x("CiNsaXZlX2V2ZW50L3YxL2xpdmVfZXZlbnRfYmFzZS5wcm90bxINbGl2ZV9ldmVudC52MSptCg1QdWJsaXNoU3RhdHVzEh4KGlBVQkxJU0hfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHgoaUFVCTElTSF9TVEFUVVNfVU5QVUJMSVNIRUQQARIcChhQVUJMSVNIX1NUQVRVU19QVUJMSVNIRUQQAkK/AQoRY29tLmxpdmVfZXZlbnQudjFCEkxpdmVFdmVudEJhc2VQcm90b1ABWkVnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvbGl2ZV9ldmVudC92MTtsaXZlX2V2ZW50djGiAgNMWFiqAgxMaXZlRXZlbnQuVjHKAgxMaXZlRXZlbnRcVjHiAhhMaXZlRXZlbnRcVjFcR1BCTWV0YWRhdGHqAg1MaXZlRXZlbnQ6OlYxYgZwcm90bzM") , Xh = x("CiRsaXZlX2V2ZW50L3YxL2xpdmVfZXZlbnRfYWRtaW4ucHJvdG8SDWxpdmVfZXZlbnQudjEirAMKEkNyZWF0ZUV2ZW50UmVxdWVzdBIQCghldmVudF9pZBgBIAEoCRISCgpldmVudF9uYW1lGAIgASgJEgwKBGhvc3QYAyABKAkSLgoKc3RhcnRfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB2NvdW50cnkYBiABKAkSDgoGcmVnaW9uGAcgASgJEg8KB2FkZHJlc3MYCCABKAkSHwoXYWxsb3dfZnJlZV9yZWdpc3RyYXRpb24YCSABKAgSIQoZZ2l2ZV90ZW1wb3JhcnlfbWVtYmVyc2hpcBgKIAEoCBIUCgxmcmVlX2NyZWRpdHMYCyABKAUSFQoNZXZlbnRfY3JlZGl0cxgMIAEoBRIYChBtYXhfcGFydGljaXBhbnRzGA0gASgFEhgKEGdpZnRfaW52aXRlX2NvZGUYDiABKAUSFwoPY291bnRyeV9kaXNwbGF5GA8gASgJEhQKDGNpdHlfZGlzcGxheRgQIAEoCSIVChNDcmVhdGVFdmVudFJlc3BvbnNlIu4DChJVcGRhdGVFdmVudFJlcXVlc3QSCgoCaWQYASABKAUSEAoIZXZlbnRfaWQYAiABKAkSEgoKZXZlbnRfbmFtZRgDIAEoCRIMCgRob3N0GAQgASgJEi4KCnN0YXJ0X3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZF90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjb3VudHJ5GAcgASgJEg4KBnJlZ2lvbhgIIAEoCRIPCgdhZGRyZXNzGAkgASgJEh8KF2FsbG93X2ZyZWVfcmVnaXN0cmF0aW9uGAogASgIEiEKGWdpdmVfdGVtcG9yYXJ5X21lbWJlcnNoaXAYCyABKAgSFAoMZnJlZV9jcmVkaXRzGAwgASgFEhUKDWV2ZW50X2NyZWRpdHMYDSABKAUSGAoQbWF4X3BhcnRpY2lwYW50cxgOIAEoBRI0Cg5wdWJsaXNoX3N0YXR1cxgPIAEoDjIcLmxpdmVfZXZlbnQudjEuUHVibGlzaFN0YXR1cxIYChBnaWZ0X2ludml0ZV9jb2RlGBAgASgFEhcKD2NvdW50cnlfZGlzcGxheRgRIAEoCRIUCgxjaXR5X2Rpc3BsYXkYEiABKAkiFQoTVXBkYXRlRXZlbnRSZXNwb25zZSJyChFMaXN0RXZlbnRzUmVxdWVzdBIQCghldmVudF9pZBgBIAEoCRIqCgZzdGF0dXMYAiABKA4yGi5saXZlX2V2ZW50LnYxLkV2ZW50U3RhdHVzEgwKBHBhZ2UYAyABKAUSEQoJcGFnZV9zaXplGAQgASgFIk0KEkxpc3RFdmVudHNSZXNwb25zZRIoCgZldmVudHMYASADKAsyGC5saXZlX2V2ZW50LnYxLkV2ZW50SW5mbxINCgV0b3RhbBgCIAEoBSImChJEZWxldGVFdmVudFJlcXVlc3QSEAoIZXZlbnRfaWQYASABKAkiJgoTRGVsZXRlRXZlbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIisKF0dldEV2ZW50T3ZlcnZpZXdSZXF1ZXN0EhAKCGV2ZW50X2lkGAEgASgJIpoBChhHZXRFdmVudE92ZXJ2aWV3UmVzcG9uc2USGgoSdG90YWxfcGFydGljaXBhbnRzGAEgASgFEhYKDm5ld191c2VyX2NvdW50GAIgASgFEhsKE2V4aXN0aW5nX3VzZXJfY291bnQYAyABKAUSFQoNc2Vzc2lvbl9jb3VudBgEIAEoBRIWCg5jcmVkaXRzX2Nvc3RlZBgFIAEoBSJsChVMaXN0RXZlbnRVc2Vyc1JlcXVlc3QSEAoIZXZlbnRfaWQYASABKAkSFAoHdXNlcl9pZBgCIAEoCUgAiAEBEgwKBHBhZ2UYAyABKAUSEQoJcGFnZV9zaXplGAQgASgFQgoKCF91c2VyX2lkIlAKFkxpc3RFdmVudFVzZXJzUmVzcG9uc2USJwoFdXNlcnMYASADKAsyGC5saXZlX2V2ZW50LnYxLkV2ZW50VXNlchINCgV0b3RhbBgCIAEoBSKRAQoYTGlzdEV2ZW50U2Vzc2lvbnNSZXF1ZXN0EhAKCGV2ZW50X2lkGAEgASgJEhcKCnNlc3Npb25faWQYAiABKAlIAIgBARIMCgRwYWdlGAMgASgFEhEKCXBhZ2Vfc2l6ZRgEIAEoBRIRCgR1c2VyGAUgASgJSAGIAQFCDQoLX3Nlc3Npb25faWRCBwoFX3VzZXIiWQoZTGlzdEV2ZW50U2Vzc2lvbnNSZXNwb25zZRItCghzZXNzaW9ucxgBIAMoCzIbLmxpdmVfZXZlbnQudjEuRXZlbnRTZXNzaW9uEg0KBXRvdGFsGAIgASgFIp8FCglFdmVudEluZm8SCgoCaWQYASABKAUSEAoIZXZlbnRfaWQYAiABKAkSEgoKZXZlbnRfbmFtZRgDIAEoCRIMCgRob3N0GAQgASgJEi4KCnN0YXJ0X3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZF90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjb3VudHJ5GAcgASgJEg4KBnJlZ2lvbhgIIAEoCRIPCgdhZGRyZXNzGAkgASgJEh8KF2FsbG93X2ZyZWVfcmVnaXN0cmF0aW9uGAogASgIEiEKGWdpdmVfdGVtcG9yYXJ5X21lbWJlcnNoaXAYCyABKAgSFAoMZnJlZV9jcmVkaXRzGAwgASgFEhUKDWV2ZW50X2NyZWRpdHMYDSABKAUSGAoQbWF4X3BhcnRpY2lwYW50cxgOIAEoBRIcChRjdXJyZW50X3BhcnRpY2lwYW50cxgPIAEoBRIqCgZzdGF0dXMYECABKA4yGi5saXZlX2V2ZW50LnYxLkV2ZW50U3RhdHVzEjQKDnB1Ymxpc2hfc3RhdHVzGBEgASgOMhwubGl2ZV9ldmVudC52MS5QdWJsaXNoU3RhdHVzEi4KCmNyZWF0ZWRfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnFyY29kZRgUIAEoCRIYChBnaWZ0X2ludml0ZV9jb2RlGBUgASgFEhcKD2NvdW50cnlfZGlzcGxheRgWIAEoCRIUCgxjaXR5X2Rpc3BsYXkYFyABKAkigAEKCUV2ZW50VXNlchIPCgd1c2VyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhAKCHVzZXJuYW1lGAMgASgJEjEKDXJlZ2lzdGVyX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBmlzX25ldxgFIAEoCCKdAQoMRXZlbnRTZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAkSDQoFdGl0bGUYAiABKAkSFgoOY3JlZGl0c19jb3N0ZWQYAyABKAUSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJaXNfc2hhcmVkGAUgASgIEg8KB3VzZXJfaWQYBiABKAkqeAoLRXZlbnRTdGF0dXMSHAoYRVZFTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVRVZFTlRfU1RBVFVTX1VQQ09NSU5HEAESGAoURVZFTlRfU1RBVFVTX09OR09JTkcQAhIWChJFVkVOVF9TVEFUVVNfRU5ERUQQAzKmBQoVTGl2ZUV2ZW50QWRtaW5TZXJ2aWNlElYKC0NyZWF0ZUV2ZW50EiEubGl2ZV9ldmVudC52MS5DcmVhdGVFdmVudFJlcXVlc3QaIi5saXZlX2V2ZW50LnYxLkNyZWF0ZUV2ZW50UmVzcG9uc2UiABJWCgtVcGRhdGVFdmVudBIhLmxpdmVfZXZlbnQudjEuVXBkYXRlRXZlbnRSZXF1ZXN0GiIubGl2ZV9ldmVudC52MS5VcGRhdGVFdmVudFJlc3BvbnNlIgASUwoKTGlzdEV2ZW50cxIgLmxpdmVfZXZlbnQudjEuTGlzdEV2ZW50c1JlcXVlc3QaIS5saXZlX2V2ZW50LnYxLkxpc3RFdmVudHNSZXNwb25zZSIAElYKC0RlbGV0ZUV2ZW50EiEubGl2ZV9ldmVudC52MS5EZWxldGVFdmVudFJlcXVlc3QaIi5saXZlX2V2ZW50LnYxLkRlbGV0ZUV2ZW50UmVzcG9uc2UiABJlChBHZXRFdmVudE92ZXJ2aWV3EiYubGl2ZV9ldmVudC52MS5HZXRFdmVudE92ZXJ2aWV3UmVxdWVzdBonLmxpdmVfZXZlbnQudjEuR2V0RXZlbnRPdmVydmlld1Jlc3BvbnNlIgASXwoOTGlzdEV2ZW50VXNlcnMSJC5saXZlX2V2ZW50LnYxLkxpc3RFdmVudFVzZXJzUmVxdWVzdBolLmxpdmVfZXZlbnQudjEuTGlzdEV2ZW50VXNlcnNSZXNwb25zZSIAEmgKEUxpc3RFdmVudFNlc3Npb25zEicubGl2ZV9ldmVudC52MS5MaXN0RXZlbnRTZXNzaW9uc1JlcXVlc3QaKC5saXZlX2V2ZW50LnYxLkxpc3RFdmVudFNlc3Npb25zUmVzcG9uc2UiAELAAQoRY29tLmxpdmVfZXZlbnQudjFCE0xpdmVFdmVudEFkbWluUHJvdG9QAVpFZ2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L2xpdmVfZXZlbnQvdjE7bGl2ZV9ldmVudHYxogIDTFhYqgIMTGl2ZUV2ZW50LlYxygIMTGl2ZUV2ZW50XFYx4gIYTGl2ZUV2ZW50XFYxXEdQQk1ldGFkYXRh6gINTGl2ZUV2ZW50OjpWMWIGcHJvdG8z", [j, Ra]) , Ih = z(Xh, 0) , Rh = x("Ch5saXZlX2V2ZW50L3YxL2xpdmVfZXZlbnQucHJvdG8SDWxpdmVfZXZlbnQudjEiQQoVQ2hlY2tMaXZlRXZlbnRSZXF1ZXN0EhUKDWxpdmVfZXZlbnRfaWQYASABKAkSEQoJZGV2aWNlX2lkGAIgASgJIhgKFkNoZWNrTGl2ZUV2ZW50UmVzcG9uc2UycwoQTGl2ZUV2ZW50U2VydmljZRJfCg5DaGVja0xpdmVFdmVudBIkLmxpdmVfZXZlbnQudjEuQ2hlY2tMaXZlRXZlbnRSZXF1ZXN0GiUubGl2ZV9ldmVudC52MS5DaGVja0xpdmVFdmVudFJlc3BvbnNlIgBCuwEKEWNvbS5saXZlX2V2ZW50LnYxQg5MaXZlRXZlbnRQcm90b1ABWkVnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvbGl2ZV9ldmVudC92MTtsaXZlX2V2ZW50djGiAgNMWFiqAgxMaXZlRXZlbnQuVjHKAgxMaXZlRXZlbnRcVjHiAhhMaXZlRXZlbnRcVjFcR1BCTWV0YWRhdGHqAg1MaXZlRXZlbnQ6OlYxYgZwcm90bzM") , Eh = z(Rh, 0) , Ch = x("CiVsaXZlX2V2ZW50L3YxL2xpdmVfZXZlbnRfcHVibGljLnByb3RvEg1saXZlX2V2ZW50LnYxIicKE0dldExpdmVFdmVudFJlcXVlc3QSEAoIZXZlbnRfaWQYASABKAkiqQMKFEdldExpdmVFdmVudFJlc3BvbnNlEhAKCGV2ZW50X2lkGAEgASgJEhIKCmV2ZW50X25hbWUYAiABKAkSDAoEaG9zdBgDIAEoCRIuCgpzdGFydF90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYWRkcmVzcxgGIAEoCRIfChdhbGxvd19mcmVlX3JlZ2lzdHJhdGlvbhgHIAEoCBIhChlnaXZlX3RlbXBvcmFyeV9tZW1iZXJzaGlwGAggASgIEhQKDGZyZWVfY3JlZGl0cxgJIAEoBRIVCg1ldmVudF9jcmVkaXRzGAogASgFEhgKEG1heF9wYXJ0aWNpcGFudHMYCyABKAUSNAoOcHVibGlzaF9zdGF0dXMYDCABKA4yHC5saXZlX2V2ZW50LnYxLlB1Ymxpc2hTdGF0dXMSFwoPY291bnRyeV9kaXNwbGF5GA0gASgJEhQKDGNpdHlfZGlzcGxheRgOIAEoCTJzChZMaXZlRXZlbnRQdWJsaWNTZXJ2aWNlElkKDEdldExpdmVFdmVudBIiLmxpdmVfZXZlbnQudjEuR2V0TGl2ZUV2ZW50UmVxdWVzdBojLmxpdmVfZXZlbnQudjEuR2V0TGl2ZUV2ZW50UmVzcG9uc2UiAELBAQoRY29tLmxpdmVfZXZlbnQudjFCFExpdmVFdmVudFB1YmxpY1Byb3RvUAFaRWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9saXZlX2V2ZW50L3YxO2xpdmVfZXZlbnR2MaICA0xYWKoCDExpdmVFdmVudC5WMcoCDExpdmVFdmVudFxWMeICGExpdmVFdmVudFxWMVxHUEJNZXRhZGF0YeoCDUxpdmVFdmVudDo6VjFiBnByb3RvMw", [j, Ra]) , yh = z(Ch, 0) , Ea = x("Chd1c2VyL3YxL3VzZXJfYXV0aC5wcm90bxIHdXNlci52MSJDChVVcGRhdGVQYXNzd29yZFJlcXVlc3QSFAoMb2xkX3Bhc3N3b3JkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIYChZVcGRhdGVQYXNzd29yZFJlc3BvbnNlIg8KDUxvZ291dFJlcXVlc3QiEAoOTG9nb3V0UmVzcG9uc2UiKAoRRGVsZXRlVXNlclJlcXVlc3QSEwoLdmVyaWZ5X2NvZGUYASABKAkiFAoSRGVsZXRlVXNlclJlc3BvbnNlIk4KIlNlbmRFbWFpbFZlcmlmeUNvZGVXaXRoQXV0aFJlcXVlc3QSKAoGYWN0aW9uGAEgASgOMhgudXNlci52MS5TZW5kRW1haWxBY3Rpb24iJQojU2VuZEVtYWlsVmVyaWZ5Q29kZVdpdGhBdXRoUmVzcG9uc2UiRQocUmVzZXRQYXNzd29yZFdpdGhBdXRoUmVxdWVzdBITCgt2ZXJpZnlfY29kZRgBIAEoCRIQCghwYXNzd29yZBgCIAEoCSIfCh1SZXNldFBhc3N3b3JkV2l0aEF1dGhSZXNwb25zZSIdChtHZW5lcmF0ZVRlbXBBdXRoQ29kZVJlcXVlc3QiLQocR2VuZXJhdGVUZW1wQXV0aENvZGVSZXNwb25zZRINCgV0b2tlbhgBIAEoCSq8AQoPU2VuZEVtYWlsQWN0aW9uEiEKHVNFTkRfRU1BSUxfQUNUSU9OX1VOU1BFQ0lGSUVEEAASHgoaU0VORF9FTUFJTF9BQ1RJT05fUkVHSVNURVIQARIkCiBTRU5EX0VNQUlMX0FDVElPTl9SRVNFVF9QQVNTV09SRBACEhwKGFNFTkRfRU1BSUxfQUNUSU9OX0xPR09GRhADEiIKHlNFTkRfRU1BSUxfQUNUSU9OX0RJU01JU1NfVEVBTRAEMtoDCg9Vc2VyQXV0aFNlcnZpY2USOQoGTG9nb3V0EhYudXNlci52MS5Mb2dvdXRSZXF1ZXN0GhcudXNlci52MS5Mb2dvdXRSZXNwb25zZRJFCgpEZWxldGVVc2VyEhoudXNlci52MS5EZWxldGVVc2VyUmVxdWVzdBobLnVzZXIudjEuRGVsZXRlVXNlclJlc3BvbnNlEngKG1NlbmRFbWFpbFZlcmlmeUNvZGVXaXRoQXV0aBIrLnVzZXIudjEuU2VuZEVtYWlsVmVyaWZ5Q29kZVdpdGhBdXRoUmVxdWVzdBosLnVzZXIudjEuU2VuZEVtYWlsVmVyaWZ5Q29kZVdpdGhBdXRoUmVzcG9uc2USZgoVUmVzZXRQYXNzd29yZFdpdGhBdXRoEiUudXNlci52MS5SZXNldFBhc3N3b3JkV2l0aEF1dGhSZXF1ZXN0GiYudXNlci52MS5SZXNldFBhc3N3b3JkV2l0aEF1dGhSZXNwb25zZRJjChRHZW5lcmF0ZVRlbXBBdXRoQ29kZRIkLnVzZXIudjEuR2VuZXJhdGVUZW1wQXV0aENvZGVSZXF1ZXN0GiUudXNlci52MS5HZW5lcmF0ZVRlbXBBdXRoQ29kZVJlc3BvbnNlQpQBCgtjb20udXNlci52MUINVXNlckF1dGhQcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvdXNlci92MTt1c2VydjGiAgNVWFiqAgdVc2VyLlYxygIHVXNlclxWMeICE1VzZXJcVjFcR1BCTWV0YWRhdGHqAghVc2VyOjpWMWIGcHJvdG8z") , Sh = z(Ea, 0) , ki = x("Chd1c2VyL3YxL3VzZXJfYmFzZS5wcm90bxIHdXNlci52MSqJAQoPTWFudXNWaXBWZXJzaW9uEiEKHU1BTlVTX1ZJUF9WRVJTSU9OX1VOU1BFQ0lGSUVEEAASGgoWTUFOVVNfVklQX1ZFUlNJT05fRlJFRRABEhwKGE1BTlVTX1ZJUF9WRVJTSU9OX0NBU1VBTBACEhkKFU1BTlVTX1ZJUF9WRVJTSU9OX1BSTxADKuUCChJJbnZpdGF0aW9uQ29kZUtpbmQSJAogSU5WSVRBVElPTl9DT0RFX0tJTkRfVU5TUEVDSUZJRUQQABIgChxJTlZJVEFUSU9OX0NPREVfS0lORF9CVUlMVElOEAESHQoZSU5WSVRBVElPTl9DT0RFX0tJTkRfVVNFUhACEiIKHklOVklUQVRJT05fQ09ERV9LSU5EX0xJTktfRk9STRADEiIKHklOVklUQVRJT05fQ09ERV9LSU5EX0xJTktfVVNFUhAEEiUKIUlOVklUQVRJT05fQ09ERV9LSU5EX0xJTktfQ0hBTk5FTBAFEiYKIklOVklUQVRJT05fQ09ERV9LSU5EX0xJTktfV0FJVExJU1QQBhIkCiBJTlZJVEFUSU9OX0NPREVfS0lORF9GSVNTSU9OQUJMRRAHEisKJ0lOVklUQVRJT05fQ09ERV9LSU5EX0NBTVBVU19GSVNTSU9OQUJMRRAIKl4KC0Jsb2NrZWRUeXBlEhwKGEJMT0NLRURfVFlQRV9VTlNQRUNJRklFRBAAEhgKFEJMT0NLRURfVFlQRV9BQ0NPVU5UEAESFwoTQkxPQ0tFRF9UWVBFX1NIVVRVUBACKqYECg9CbG9ja1JlYXNvblR5cGUSIQodQkxPQ0tfUkVBU09OX1RZUEVfVU5TUEVDSUZJRUQQABIbChdCTE9DS19SRUFTT05fVFlQRV9PVEhFUhABEiEKHUJMT0NLX1JFQVNPTl9UWVBFX1BPUk5PR1JBUEhZEAISHgoaQkxPQ0tfUkVBU09OX1RZUEVfUE9MSVRJQ1MQAxIfChtCTE9DS19SRUFTT05fVFlQRV9URVJST1JJU00QBBIbChdCTE9DS19SRUFTT05fVFlQRV9EUlVHUxAFEiMKH0JMT0NLX1JFQVNPTl9UWVBFX0FUVEFDS19TWVNURU0QBhIhCh1CTE9DS19SRUFTT05fVFlQRV9SRVBPUlRfTUFOWRAHEiIKHkJMT0NLX1JFQVNPTl9UWVBFX1NFTExfQUNDT1VOVBAIEhsKF0JMT0NLX1JFQVNPTl9UWVBFX0ZSQVVEEAkSGgoWQkxPQ0tfUkVBU09OX1RZUEVfU1BBTRAKEiQKIEJMT0NLX1JFQVNPTl9UWVBFX0lMTEVHQUxfUkVHSU9OEAsSJwojQkxPQ0tfUkVBU09OX1RZUEVfSUxMRUdBTF9USU1FX1pPTkUQDBIgChxCTE9DS19SRUFTT05fVFlQRV9JTExFR0FMX1VBEA0SIAocQkxPQ0tfUkVBU09OX1RZUEVfSUxMRUdBTF9JUBAOEhoKFkJMT0NLX1JFQVNPTl9UWVBFX1JJU0sQDyqmAwoOTGlzdFJlY29yZFR5cGUSIAocTElTVF9SRUNPUkRfVFlQRV9VTlNQRUNJRklFRBAAEhkKFUxJU1RfUkVDT1JEX1RZUEVfR0lGVBABEhsKF0xJU1RfUkVDT1JEX1RZUEVfREVEVUNUEAISGwoXTElTVF9SRUNPUkRfVFlQRV9DSEFSR0UQAxIhCh1MSVNUX1JFQ09SRF9UWVBFX1VTRVJfRElTUExBWRAEEiIKHkxJU1RfUkVDT1JEX1RZUEVfQURNSU5fRElTUExBWRAFEhkKFUxJU1RfUkVDT1JEX1RZUEVfQ09TVBAGEh0KGUxJU1RfUkVDT1JEX1RZUEVfUk9MTEJBQ0sQBxIeChpMSVNUX1JFQ09SRF9UWVBFX1JBVEVfR0lGVBAIEhsKF0xJU1RfUkVDT1JEX1RZUEVfUkVGVU5EEAkSIAocTElTVF9SRUNPUkRfVFlQRV9JTlZJVEVfR0lGVBAKEh8KG0xJU1RfUkVDT1JEX1RZUEVfTElWRV9FVkVOVBALEhwKGExJU1RfUkVDT1JEX1RZUEVfUkVGUkVTSBAMKqABCgpDcmVkaXRUeXBlEhsKF0NSRURJVF9UWVBFX1VOU1BFQ0lGSUVEEAASFAoQQ1JFRElUX1RZUEVfRlJFRRABEhgKFENSRURJVF9UWVBFX1BFUklPRElDEAISFQoRQ1JFRElUX1RZUEVfQURET04QAxIVChFDUkVESVRfVFlQRV9FVkVOVBAEEhcKE0NSRURJVF9UWVBFX1JFRlJFU0gQBSrzAgoNQ3JlZGl0TG9nVHlwZRIfChtDUkVESVRfTE9HX1RZUEVfVU5TUEVDSUZJRUQQABIYChRDUkVESVRfTE9HX1RZUEVfQ09TVBABEhwKGENSRURJVF9MT0dfVFlQRV9ST0xMQkFDSxACEiQKIENSRURJVF9MT0dfVFlQRV9TVUJTQ1JJQkVfQ0FTVUFMEAMSIQodQ1JFRElUX0xPR19UWVBFX1NVQlNDUklCRV9QUk8QBBIfChtDUkVESVRfTE9HX1RZUEVfVVBHUkFERV9QUk8QBRIeChpDUkVESVRfTE9HX1RZUEVfQURET05fMTkwMBAGEh4KGkNSRURJVF9MT0dfVFlQRV9BRERPTl85OTAwEAcSHQoZQ1JFRElUX0xPR19UWVBFX0FETUlOX0FERBAIEiAKHENSRURJVF9MT0dfVFlQRV9BRE1JTl9ERURVQ1QQCRIeChpDUkVESVRfTE9HX1RZUEVfQ1JFRElUX0FMTBAKKkYKDEFjdGl2aXR5VHlwZRIdChlBQ1RJVklUWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQUNUSVZJVFlfVFlQRV9QRVJLUxABKlUKDFVzZXJUeXBlRW51bRIZChVVU0VSX1RZUEVfVU5TUEVDSUZJRUQQABIWChJVU0VSX1RZUEVfUEVSU09OQUwQARISCg5VU0VSX1RZUEVfVEVBTRACQpQBCgtjb20udXNlci52MUINVXNlckJhc2VQcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvdXNlci92MTt1c2VydjGiAgNVWFiqAgdVc2VyLlYxygIHVXNlclxWMeICE1VzZXJcVjFcR1BCTWV0YWRhdGHqAghVc2VyOjpWMWIGcHJvdG8z") , Wh = x("Chh1c2VyL3YxL3VzZXJfYWRtaW4ucHJvdG8SB3VzZXIudjEiiQEKIkxvb3BVcGRhdGVVc2VyQ3JlZGl0U3RhdHVzUmVzcG9uc2USDQoFY291bnQYASABKAUSDQoFdG90YWwYAiABKAUSLwoGc3RhdHVzGAMgASgOMh8udXNlci52MS5VcGRhdGVVc2VyQ3JlZGl0U3RhdHVzEhQKDGZhaWxlZF91c2VycxgEIAMoCSI0CiFMb29wVXBkYXRlVXNlckNyZWRpdFN0YXR1c1JlcXVlc3QSDwoHdGFza19pZBgBIAEoCSJJChVMaXN0VXNlclZpcExvZ1JlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCRIMCgRwYWdlGAIgASgFEhEKCXBhZ2Vfc2l6ZRgDIAEoBSJGChZMaXN0VXNlclZpcExvZ1Jlc3BvbnNlEh0KBGxvZ3MYASADKAsyDy51c2VyLnYxLlZpcExvZxINCgV0b3RhbBgCIAEoBSJ6CgZWaXBMb2cSDwoHdXNlcl9pZBgBIAEoCRITCgt2aXBfdmVyc2lvbhgCIAEoCRIUCgxwZXJpb2Rfc3RhcnQYAyABKAUSEgoKcGVyaW9kX2VuZBgEIAEoBRIQCghvcGVyYXRvchgFIAEoCRIOCgZyZWFzb24YBiABKAkicgoEVXNlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWVtYWlsGAMgASgJEhMKC3ZpcF92ZXJzaW9uGAQgASgJEhoKEmN1cnJlbnRfcGVyaW9kX2VuZBgFIAEoAxIQCghpc190cmlhbBgGIAEoCCI/ChBMaXN0VXNlclJlc3BvbnNlEhwKBXVzZXJzGAEgAygLMg0udXNlci52MS5Vc2VyEg0KBXRvdGFsGAIgASgFIkMKD0xpc3RVc2VyUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFIhYKFEFkbWluR2lmdFZpcFJlc3BvbnNlIoEBChNBZG1pbkdpZnRWaXBSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkSLQoLdmlwX3ZlcnNpb24YAiABKA4yGC51c2VyLnYxLk1hbnVzVmlwVmVyc2lvbhIaChJjdXJyZW50X3BlcmlvZF9lbmQYAyABKAMSDgoGcmVhc29uGAQgASgJIjcKFEdldFVzZXJRdW90YVJlc3BvbnNlEhIKCmxlZnRfcXVvdGEYASABKAUSCwoDdHRsGAIgASgDIiYKE0dldFVzZXJRdW90YVJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSJZChxMaXN0VXNlckNyZWRpdFJlY29yZFJlc3BvbnNlEioKB3JlY29yZHMYASADKAsyGS51c2VyLnYxLlVzZXJDcmVkaXRSZWNvcmQSDQoFdG90YWwYAiABKAUi4wIKEFVzZXJDcmVkaXRSZWNvcmQSDwoHdXNlcl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB2NyZWRpdHMYBSABKAUSKAoLY3JlZGl0X3R5cGUYBiABKA4yEy51c2VyLnYxLkNyZWRpdFR5cGUSDQoFZW1haWwYByABKAkSEAoIb3BlcmF0b3IYCCABKAkSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKgoEdHlwZRgKIAEoDjIcLnVzZXIudjEuVXBkYXRlQ3JlZGl0T3BlcmF0ZRIOCgZyZWFzb24YCyABKAkSFAoMc2Vzc2lvblRpdGxlGAwgASgJEhEKCXNlc3Npb25JZBgNIAEoCRIfChdzeXN0ZW1fcm9sbGJhY2tfY3JlZGl0cxgOIAEoBRIeChZhZG1pbl9yb2xsYmFja19jcmVkaXRzGA8gASgFIpQBChtMaXN0VXNlckNyZWRpdFJlY29yZFJlcXVlc3QSFAoHdXNlcl9pZBgBIAEoCUgAiAEBEjIKDHJlY29yZF90eXBlcxgCIAMoDjIcLnVzZXIudjEuVXBkYXRlQ3JlZGl0T3BlcmF0ZRIMCgRwYWdlGAMgASgFEhEKCXBhZ2Vfc2l6ZRgEIAEoBUIKCghfdXNlcl9pZCI4ChhVcGRhdGVVc2VyQ3JlZGl0UmVzcG9uc2USCwoDbXNnGAEgASgJEg8KB3Rhc2tfaWQYAiABKAkiuwEKF1VwZGF0ZVVzZXJDcmVkaXRSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkSDwoHY3JlZGl0cxgCIAEoBRIhCgR0eXBlGAMgASgOMhMudXNlci52MS5DcmVkaXRUeXBlEg4KBnJlYXNvbhgEIAEoCRItCgdvcGVyYXRlGAUgASgOMhwudXNlci52MS5VcGRhdGVDcmVkaXRPcGVyYXRlEg0KBXVzZXJzGAYgAygJEg0KBWVtYWlsGAsgASgJIlYKFkxpc3RVc2VyQ3JlZGl0UmVzcG9uc2USLQoMdXNlcl9jcmVkaXRzGAEgAygLMhcudXNlci52MS5Vc2VyQ3JlZGl0SW5mbxINCgV0b3RhbBgCIAEoBSLKAQoOVXNlckNyZWRpdEluZm8SDwoHdXNlcl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhQKDGZyZWVfY3JlZGl0cxgDIAEoBRIYChBwZXJpb2RpY19jcmVkaXRzGAQgASgFEhUKDWFkZG9uX2NyZWRpdHMYBSABKAUSFQoNdG90YWxfY3JlZGl0cxgGIAEoBRINCgVlbWFpbBgHIAEoCRITCgt2aXBfdmVyc2lvbhgIIAEoCRIXCg9yZWZyZXNoX2NyZWRpdHMYCSABKAUiewoVTGlzdFVzZXJDcmVkaXRSZXF1ZXN0EhQKB3VzZXJfaWQYASABKAlIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESFgoJcGFnZV9zaXplGAMgASgFSAKIAQFCCgoIX3VzZXJfaWRCBwoFX3BhZ2VCDAoKX3BhZ2Vfc2l6ZSK6AgobQ3JlYXRlSW52aXRhdGlvbkNvZGVSZXF1ZXN0Ei4KBGtpbmQYASABKA4yGy51c2VyLnYxLkludml0YXRpb25Db2RlS2luZEgAiAEBEhAKCG1heF91c2VzGAIgASgFEhgKBWNvdW50GAMgASgFQgm6SAYaBBhkKAESGQoFdXNlcnMYBCADKAlCCrpIB5IBBBDQhgMSFAoDdGFnGAUgASgJQge6SARyAhhAEiMKC2ludml0ZV9jb2RlGAYgASgJQgm6SAZyBBAGGCBIAYgBARIOCgZyZW1hcmsYCCABKAkSHgoNZmlzc2lvbl9jb3VudBgJIAEoBUIHukgEGgIYZBIUCgdjcmVkaXRzGAogASgFSAKIAQFCBwoFX2tpbmRCDgoMX2ludml0ZV9jb2RlQgoKCF9jcmVkaXRzIlUKHENyZWF0ZUludml0YXRpb25Db2RlUmVzcG9uc2USNQoQaW52aXRhdGlvbl9jb2RlcxgBIAMoCzIbLnVzZXIudjEuSW52aXRhdGlvbkNvZGVJbmZvIrYCChJJbnZpdGF0aW9uQ29kZUluZm8SCgoCaWQYASABKAMSDwoHdXNlcl9pZBgCIAEoCRITCgtpbnZpdGVfY29kZRgDIAEoCRIpCgRraW5kGAQgASgOMhsudXNlci52MS5JbnZpdGF0aW9uQ29kZUtpbmQSFAoMaXNfYWN0aXZhdGVkGAUgASgIEhAKCG1heF91c2VzGAYgASgFEhIKCnVzZWRfY291bnQYByABKAUSEgoKY3JlYXRlZF9ieRgIIAEoCRIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBILCgN0YWcYCiABKAkSDgoGcmVtYXJrGAsgASgJEhUKDWZpc3Npb25fY291bnQYDCABKAUSDwoHY3JlZGl0cxgNIAEoBSKwAQoaTGlzdEludml0YXRpb25Db2Rlc1JlcXVlc3QSFQoEcGFnZRgBIAEoBUIHukgEGgIgABIcCglwYWdlX3NpemUYAiABKAVCCbpIBhoEGGQgABIqCgVraW5kcxgDIAMoDjIbLnVzZXIudjEuSW52aXRhdGlvbkNvZGVLaW5kEg8KB3VzZXJfaWQYBCABKAkSEwoLaW52aXRlX2NvZGUYBSABKAkSCwoDdGFnGAYgASgJImMKG0xpc3RJbnZpdGF0aW9uQ29kZXNSZXNwb25zZRI1ChBpbnZpdGF0aW9uX2NvZGVzGAEgAygLMhsudXNlci52MS5JbnZpdGF0aW9uQ29kZUluZm8SDQoFdG90YWwYAiABKAMiNwodR2V0SW52aXRhdGlvbkNvZGVVc2FnZVJlcXVlc3QSFgoOaW52aXRlX2NvZGVfaWQYAiABKAMikQEKFkludml0YXRpb25SZWxhdGlvbkluZm8SCgoCaWQYASABKAMSEgoKaW52aXRlcl9pZBgCIAEoCRISCgppbnZpdGVlX2lkGAMgASgJEhMKC2ludml0ZV9jb2RlGAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIooBCh5HZXRJbnZpdGF0aW9uQ29kZVVzYWdlUmVzcG9uc2USNAoPaW52aXRhdGlvbl9jb2RlGAEgASgLMhsudXNlci52MS5JbnZpdGF0aW9uQ29kZUluZm8SMgoJcmVsYXRpb25zGAIgAygLMh8udXNlci52MS5JbnZpdGF0aW9uUmVsYXRpb25JbmZvItwCChtVcGRhdGVJbnZpdGF0aW9uQ29kZVJlcXVlc3QSMgoGc3RhdHVzGAIgASgOMh0udXNlci52MS5JbnZpdGF0aW9uQ29kZVN0YXR1c0gAiAEBEiIKCG1heF91c2VzGAMgASgFQgu6SAgaBhigjQYoAEgBiAEBEhYKDmludml0ZV9jb2RlX2lkGAQgASgDEg4KBnJlbWFyaxgFIAEoCRIlCg1maXNzaW9uX2NvdW50GAYgASgFQgm6SAYaBBhkIABIAogBARIuCgRraW5kGAcgASgOMhsudXNlci52MS5JbnZpdGF0aW9uQ29kZUtpbmRIA4gBARIUCgdjcmVkaXRzGAggASgFSASIAQFCCQoHX3N0YXR1c0ILCglfbWF4X3VzZXNCEAoOX2Zpc3Npb25fY291bnRCBwoFX2tpbmRCCgoIX2NyZWRpdHNKBAgBEAJSC2ludml0ZV9jb2RlIh4KHFVwZGF0ZUludml0YXRpb25Db2RlUmVzcG9uc2UizAIKHkdldEludml0YXRpb25TdGF0aXN0aWNzUmVxdWVzdBIuCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMaW52aXRlX2NvZGVzGAMgAygJEkwKC2dyYW51bGFyaXR5GAQgASgOMjcudXNlci52MS5HZXRJbnZpdGF0aW9uU3RhdGlzdGljc1JlcXVlc3QuVGltZUdyYW51bGFyaXR5ImgKD1RpbWVHcmFudWxhcml0eRIgChxUSU1FX0dSQU5VTEFSSVRZX1VOU1BFQ0lGSUVEEAASGAoUVElNRV9HUkFOVUxBUklUWV9EQVkQARIZChVUSU1FX0dSQU5VTEFSSVRZX0hPVVIQAiLMAQoUSW52aXRhdGlvblN0YXRpc3RpY3MSEwoLdG90YWxfY29kZXMYASABKAMSEgoKdXNlZF9jb2RlcxgCIAEoAxIUCgx1bnVzZWRfY29kZXMYAyABKAMSFgoOdG90YWxfaW52aXRlZXMYBCABKAMSMQoLZGFpbHlfc3RhdHMYBSADKAsyHC51c2VyLnYxLkRhaWx5SW52aXRhdGlvblN0YXQSKgoMdG9wX2ludml0ZXJzGAYgAygLMhQudXNlci52MS5JbnZpdGVyU3RhdCJrChNEYWlseUludml0YXRpb25TdGF0EgwKBGRhdGUYASABKAkSFQoNaW52aXRlZV9jb3VudBgCIAEoBRIaChJjb2RlX2NyZWF0ZWRfY291bnQYAyABKAUSEwoLaW52aXRlX2NvZGUYBCABKAkiSgoLSW52aXRlclN0YXQSEgoKaW52aXRlcl9pZBgBIAEoCRIQCghuaWNrbmFtZRgCIAEoCRIVCg1pbnZpdGVlX2NvdW50GAMgASgFIlQKH0dldEludml0YXRpb25TdGF0aXN0aWNzUmVzcG9uc2USMQoKc3RhdGlzdGljcxgBIAEoCzIdLnVzZXIudjEuSW52aXRhdGlvblN0YXRpc3RpY3MimwQKDFdhaXRsaXN0SW5mbxIKCgJpZBgBIAEoAxIUCgxjb250YWN0X3R5cGUYAiABKAkSFQoNY29udGFjdF92YWx1ZRgDIAEoCRIOCgZyZWFzb24YBCABKAkSKwoKZXh0cmFfZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJwoGc3RhdHVzGAYgASgOMhcudXNlci52MS5XYWl0bGlzdFN0YXR1cxIPCgd1c2VyX2lkGAcgASgJEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2FwcHJvdmVfdXNlcl9pZBgKIAEoCRITCgtjb3VudHJ5X2lzbxgLIAEoCRIvCgthcHByb3ZlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKd29ya19lbWFpbBgNIAEoCRISCgpwcm9mZXNzaW9uGA4gASgJEhwKFHNvY2lhbF9tZWRpYV9hY2NvdW50GA8gASgJEhAKCGluZHVzdHJ5GBAgASgJEhcKD2ludml0YXRpb25fY29kZRgRIAEoCRIRCgl0aW1lX3pvbmUYEiABKAkSGAoQdGltZV96b25lX29mZnNldBgTIAEoCSKAAwoTTGlzdFdhaXRsaXN0UmVxdWVzdBIVCgRwYWdlGAEgASgFQge6SAQaAigBEhwKCXBhZ2Vfc2l6ZRgCIAEoBUIJukgGGgQYZCgBEiwKBnN0YXR1cxgDIAEoDjIXLnVzZXIudjEuV2FpdGxpc3RTdGF0dXNIAIgBARIVCg1jb250YWN0X3ZhbHVlGAQgASgJEhUKDWxhbmd1YWdlX2xpc3QYBSADKAkSIAoTZXhjbHVkZV96aF9jbl91c2VycxgGIAEoCEgBiAEBEhkKEWVtYWlsX2RvbWFpbl9saXN0GAcgAygJEhgKEGNvdW50cnlfaXNvX2xpc3QYCCADKAkSHgoWd29ya19lbWFpbF9kb21haW5fbGlzdBgJIAMoCRIjChZleGNsdWRlX2NoaW5lc2VfcmVhc29uGAogASgISAKIAQFCCQoHX3N0YXR1c0IWChRfZXhjbHVkZV96aF9jbl91c2Vyc0IZChdfZXhjbHVkZV9jaGluZXNlX3JlYXNvbiJUChRMaXN0V2FpdGxpc3RSZXNwb25zZRItCg53YWl0bGlzdF9pdGVtcxgBIAMoCzIVLnVzZXIudjEuV2FpdGxpc3RJbmZvEg0KBXRvdGFsGAIgASgDInIKG1VwZGF0ZVdhaXRsaXN0U3RhdHVzUmVxdWVzdBIzCgZzdGF0dXMYAiABKA4yFy51c2VyLnYxLldhaXRsaXN0U3RhdHVzQgq6SAeCAQQQASAAEh4KDHdhaXRsaXN0X2lkcxgDIAMoA0IIukgFkgECEGQiHgocVXBkYXRlV2FpdGxpc3RTdGF0dXNSZXNwb25zZSI5ChNHZXRBZG1pbkluZm9SZXF1ZXN0EhUKCGFkbWluX2lkGAEgASgJSACIAQFCCwoJX2FkbWluX2lkIpgCCglBZG1pbkluZm8SDwoHdXNlcl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWVtYWlsGAMgASgJEhEKCXJvbGVfa2V5cxgEIAMoCRIOCgZhdmF0YXIYBSABKAkSMwoPbGFzdF9sb2dpbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgpleHRyYV9kYXRhGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIoCgtwZXJtaXNzaW9ucxgJIAMoCzITLnVzZXIudjEuUGVybWlzc2lvbiKqAQoKUGVybWlzc2lvbhImCgRyb2xlGAEgASgOMhgudXNlci52MS5QZXJtaXNzaW9uLlJvbGUSFAoMcHJvZHVjdF9uYW1lGAIgASgJEg4KBm1vZHVsZRgDIAEoCSJOCgRSb2xlEhQKEFJPTEVfVU5TUEVDSUZJRUQQABIOCgpST0xFX0FETUlOEAESDwoLUk9MRV9FRElUT1IQAhIPCgtST0xFX1ZJRVdFUhADIj4KFEdldEFkbWluSW5mb1Jlc3BvbnNlEiYKCmFkbWluX2luZm8YASABKAsyEi51c2VyLnYxLkFkbWluSW5mbyKmAQoMV2FpdGxpc3RSdWxlEicKBHR5cGUYASABKA4yGS51c2VyLnYxLldhaXRsaXN0UnVsZVR5cGUSFQoNc3RyaW5nX3ZhbHVlcxgCIAMoCRIRCglpbnRfdmFsdWUYAyABKAUSLgoKdGltZV92YWx1ZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLZmxvYXRfdmFsdWUYBSABKAEirwIKHUNyZWF0ZVdhaXRsaXN0QXV0b1Rhc2tSZXF1ZXN0Eg8KAmlkGAEgASgDSACIAQESFwoEbmFtZRgCIAEoCUIJukgGcgQQARhAEiQKBXJ1bGVzGAMgAygLMhUudXNlci52MS5XYWl0bGlzdFJ1bGUSKwoGYWN0aW9uGAQgASgOMhsudXNlci52MS5XYWl0bGlzdEF1dG9BY3Rpb24SLwoGc3RhdHVzGAUgASgOMh8udXNlci52MS5XYWl0bGlzdEF1dG9UYXNrU3RhdHVzEhUKDWFwcHJvdmFsX3JhdGUYBiABKAUSIQoZYXBwcm92YWxfaW50ZXJ2YWxfbWludXRlcxgHIAEoBRIfChdvcmRlcl9ieV9jcmVhdGVkX2F0X2FzYxgIIAEoCEIFCgNfaWQiLAoeQ3JlYXRlV2FpdGxpc3RBdXRvVGFza1Jlc3BvbnNlEgoKAmlkGAEgASgDIpwDChRXYWl0bGlzdEF1dG9UYXNrSW5mbxIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEiQKBXJ1bGVzGAMgAygLMhUudXNlci52MS5XYWl0bGlzdFJ1bGUSKwoGYWN0aW9uGAQgASgOMhsudXNlci52MS5XYWl0bGlzdEF1dG9BY3Rpb24SLwoGc3RhdHVzGAUgASgOMh8udXNlci52MS5XYWl0bGlzdEF1dG9UYXNrU3RhdHVzEhUKDWFwcHJvdmFsX3JhdGUYBiABKAUSIQoZYXBwcm92YWxfaW50ZXJ2YWxfbWludXRlcxgHIAEoBRISCgpjcmVhdGVkX2J5GAggASgJEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD3Byb2Nlc3NlZF9jb3VudBgLIAEoAxIfChdvcmRlcl9ieV9jcmVhdGVkX2F0X2FzYxgMIAEoCCLQAQobTGlzdFdhaXRsaXN0QXV0b1Rhc2tSZXF1ZXN0EhUKBHBhZ2UYASABKAVCB7pIBBoCKAESHAoJcGFnZV9zaXplGAIgASgFQgm6SAYaBBhkKAESNAoGc3RhdHVzGAMgASgOMh8udXNlci52MS5XYWl0bGlzdEF1dG9UYXNrU3RhdHVzSACIAQESMAoGYWN0aW9uGAQgASgOMhsudXNlci52MS5XYWl0bGlzdEF1dG9BY3Rpb25IAYgBAUIJCgdfc3RhdHVzQgkKB19hY3Rpb24iWwocTGlzdFdhaXRsaXN0QXV0b1Rhc2tSZXNwb25zZRIsCgV0YXNrcxgBIAMoCzIdLnVzZXIudjEuV2FpdGxpc3RBdXRvVGFza0luZm8SDQoFdG90YWwYAiABKAMiwwIKEVF1ZXN0aW9ubmFpcmVJbmZvEgoKAmlkGAEgASgDEg8KB3VzZXJfaWQYAiABKAkSDQoFZW1haWwYAyABKAkSDgoGcmVhc29uGAQgASgJEhIKCnByb2Zlc3Npb24YBSABKAkSHAoUc29jaWFsX21lZGlhX2FjY291bnQYBiABKAkSEAoIaW5kdXN0cnkYByABKAkSDAoEbmFtZRgIIAEoCRITCgtjb3VudHJ5X2lzbxgJIAEoCRIrCgpleHRyYV9kYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgpjcmVhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKVAgoYTGlzdFF1ZXN0aW9ubmFpcmVSZXF1ZXN0EhUKBHBhZ2UYASABKAVCB7pIBBoCKAESHAoJcGFnZV9zaXplGAIgASgFQgm6SAYaBBhkKAESFAoHdXNlcl9pZBgDIAEoCUgAiAEBEhIKBWVtYWlsGAQgASgJSAGIAQESGQoRZW1haWxfZG9tYWluX2xpc3QYBSADKAkSFQoNbGFuZ3VhZ2VfbGlzdBgGIAMoCRIgChNleGNsdWRlX3poX2NuX3VzZXJzGAcgASgISAKIAQESGAoQY291bnRyeV9pc29fbGlzdBgIIAMoCUIKCghfdXNlcl9pZEIICgZfZW1haWxCFgoUX2V4Y2x1ZGVfemhfY25fdXNlcnMiVQoZTGlzdFF1ZXN0aW9ubmFpcmVSZXNwb25zZRIpCgVpdGVtcxgBIAMoCzIaLnVzZXIudjEuUXVlc3Rpb25uYWlyZUluZm8SDQoFdG90YWwYAiABKAMiHgocR2V0U3lzdGVtTm90aWZpY2F0aW9uUmVxdWVzdCK7AQodR2V0U3lzdGVtTm90aWZpY2F0aW9uUmVzcG9uc2USCgoCaWQYASABKAUSDwoHdmVyc2lvbhgCIAEoBRITCgthbGxvd19jbG9zZRgDIAEoCBIsCghzdGFydF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKgoGZW5kX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZlbmFibGUYBiABKAgioQIKH1VwZGF0ZVN5c3RlbU5vdGlmaWNhdGlvblJlcXVlc3QSDwoCaWQYASABKAVIAIgBARIUCgd2ZXJzaW9uGAIgASgFSAGIAQESGAoLYWxsb3dfY2xvc2UYAyABKAhIAogBARIxCghzdGFydF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARIvCgZlbmRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEwoGZW5hYmxlGAYgASgISAWIAQFCBQoDX2lkQgoKCF92ZXJzaW9uQg4KDF9hbGxvd19jbG9zZUILCglfc3RhcnRfYXRCCQoHX2VuZF9hdEIJCgdfZW5hYmxlIiIKIFVwZGF0ZVN5c3RlbU5vdGlmaWNhdGlvblJlc3BvbnNlIhsKGUdldFBheW1lbnRTZXR0aW5nc1JlcXVlc3QiOAoaR2V0UGF5bWVudFNldHRpbmdzUmVzcG9uc2USGgoSZGlzYWJsaW5nX3BheW1lbnRzGAEgASgIIjoKHFVwZGF0ZVBheW1lbnRTZXR0aW5nc1JlcXVlc3QSGgoSZGlzYWJsaW5nX3BheW1lbnRzGAEgASgIIh8KHVVwZGF0ZVBheW1lbnRTZXR0aW5nc1Jlc3BvbnNlIhoKGEdldENOVGltZVpvbmVMaXN0UmVxdWVzdCJSChlHZXRDTlRpbWVab25lTGlzdFJlc3BvbnNlEhoKEmRlZmF1bHRfdGltZV96b25lcxgBIAMoCRIZChFlZGl0ZWRfdGltZV96b25lcxgCIAMoCSIxChtVcGRhdGVDTlRpbWVab25lTGlzdFJlcXVlc3QSEgoKdGltZV96b25lcxgBIAMoCSIeChxVcGRhdGVDTlRpbWVab25lTGlzdFJlc3BvbnNlIkIKHUJhbkludml0YXRpb25Db2Rlc0J5SVBSZXF1ZXN0EiEKDGlwX2FkZHJlc3NlcxgBIAMoCUILukgIkgEFCAEQ6AciTAoeQmFuSW52aXRhdGlvbkNvZGVzQnlJUFJlc3BvbnNlEhQKDGJhbm5lZF9jb2RlcxgBIAMoCRIUCgxiYW5uZWRfY291bnQYAiABKAUiFwoVR2V0SVBCbGFja2xpc3RSZXF1ZXN0Ii4KFkdldElQQmxhY2tsaXN0UmVzcG9uc2USFAoMaXBfYWRkcmVzc2VzGAEgAygJIjsKGFVwZGF0ZUlQQmxhY2tsaXN0UmVxdWVzdBIfCgxpcF9hZGRyZXNzZXMYASADKAlCCbpIBpIBAxDoByIbChlVcGRhdGVJUEJsYWNrbGlzdFJlc3BvbnNlIvwCCg9CbG9ja2VkVXNlckluZm8SCgoCaWQYASABKAMSDwoHdXNlcl9pZBgCIAEoCRIOCgZyZWFzb24YAyABKAkSDQoFZW1haWwYBCABKAkSFwoPYXBwcm92ZV91c2VyX2lkGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKDGJsb2NrZWRfdHlwZRgIIAEoDjIULnVzZXIudjEuQmxvY2tlZFR5cGUSMwoRYmxvY2tfcmVhc29uX3R5cGUYCSABKA4yGC51c2VyLnYxLkJsb2NrUmVhc29uVHlwZRImCgZzdGF0dXMYCiABKA4yFi51c2VyLnYxLkJsb2NrZWRTdGF0dXMSKwoKZXh0cmFfZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi5QEKIENyZWF0ZU9yVXBkYXRlQmxvY2tlZFVzZXJSZXF1ZXN0EhgKBXVzZXJzGAEgAygJQgm6SAaSAQMQiCcSJgoGc3RhdHVzGAIgASgOMhYudXNlci52MS5CbG9ja2VkU3RhdHVzEhMKBnJlYXNvbhgDIAEoCUgAiAEBEioKDGJsb2NrZWRfdHlwZRgEIAEoDjIULnVzZXIudjEuQmxvY2tlZFR5cGUSMwoRYmxvY2tfcmVhc29uX3R5cGUYBSABKA4yGC51c2VyLnYxLkJsb2NrUmVhc29uVHlwZUIJCgdfcmVhc29uIkkKIUNyZWF0ZU9yVXBkYXRlQmxvY2tlZFVzZXJSZXNwb25zZRIVCg1zdWNjZXNzX3VzZXJzGAEgAygJEg0KBXRvdGFsGAIgASgFIqgBChdMaXN0QmxvY2tlZFVzZXJzUmVxdWVzdBIVCgRwYWdlGAEgASgFQge6SAQaAigBEhwKCXBhZ2Vfc2l6ZRgCIAEoBUIJukgGGgQYZCgBEhQKB3VzZXJfaWQYAyABKAlIAIgBARIrCgZzdGF0dXMYBCABKA4yFi51c2VyLnYxLkJsb2NrZWRTdGF0dXNIAYgBAUIKCghfdXNlcl9pZEIJCgdfc3RhdHVzIloKGExpc3RCbG9ja2VkVXNlcnNSZXNwb25zZRIvCg1ibG9ja2VkX3VzZXJzGAEgAygLMhgudXNlci52MS5CbG9ja2VkVXNlckluZm8SDQoFdG90YWwYAiABKAMiKgoXQWRtaW5HZXRVc2VySW5mb1JlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSKOAwoYQWRtaW5HZXRVc2VySW5mb1Jlc3BvbnNlEg8KB3VzZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJZmlyc3RuYW1lGAMgASgJEhAKCGxhc3RuYW1lGAQgASgJEhMKC2Rpc3BsYXluYW1lGAUgASgJEhAKCG5pY2tuYW1lGAYgASgJEg4KBmF2YXRhchgHIAEoCRIQCghpc19hbHBoYRgIIAEoCBITCgtpbl93YWl0bGlzdBgJIAEoCBITCgt2aXBfdmVyc2lvbhgKIAEoCRIUCgx2aXBfaW50ZXJ2YWwYCyABKAkSGgoSY3VycmVudF9wZXJpb2RfZW5kGAwgASgDEhwKFGNhbmNlbF9hdF9wZXJpb2RfZW5kGA0gASgIEg8KB2lzX2JldGEYDiABKAgSGAoQcGF5bWVudF9wbGF0Zm9ybRgPIAEoCRILCgN1aWQYECABKAkSGwoTY29uY3VycmVudF9zZXNzaW9ucxgRIAEoBRIVCg1wbGF0Zm9ybV9saXN0GBIgAygJIkoKGkdldFVzZXJMb2dvZmZTdGF0dXNSZXF1ZXN0EgsKA2lkcxgBIAMoCRIMCgRwYWdlGAIgASgFEhEKCXBhZ2Vfc2l6ZRgDIAEoBSKBAQoQVXNlckxvZ29mZlN0YXR1cxIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIjCgZzdGF0dXMYAyABKA4yEy51c2VyLnYxLlVzZXJTdGF0dXMSLQoJdXBkYXRlX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJWChtHZXRVc2VyTG9nb2ZmU3RhdHVzUmVzcG9uc2USKAoFdXNlcnMYASADKAsyGS51c2VyLnYxLlVzZXJMb2dvZmZTdGF0dXMSDQoFdG90YWwYAiABKAUibQouQmF0Y2hBZGRBY3Rpdml0eVF1ZXN0aW9ubmFpcmVQZXJtaXNzaW9uUmVxdWVzdBIsCg1hY3Rpdml0eV90eXBlGAEgASgOMhUudXNlci52MS5BY3Rpdml0eVR5cGUSDQoFdXNlcnMYAiADKAkiXgovQmF0Y2hBZGRBY3Rpdml0eVF1ZXN0aW9ubmFpcmVQZXJtaXNzaW9uUmVzcG9uc2USFgoOYWRkZWRfdXNlcl9pZHMYASADKAkSEwoLYWRkZWRfY291bnQYAiABKAUi9AEKEFJpc2tJbnRlbGxpZ2VuY2USCgoCaWQYASABKAMSDwoHdXNlcl9pZBgCIAEoCRIxCgppbnRlbF90eXBlGAMgASgOMh0udXNlci52MS5SaXNrSW50ZWxsaWdlbmNlVHlwZRISCgppbnRlbF9kYXRhGAQgASgJEi8KBnN0YXR1cxgFIAEoDjIfLnVzZXIudjEuUmlza0ludGVsbGlnZW5jZVN0YXR1cxIOCgZzb3VyY2UYBiABKAkSCwoDdGFnGAcgASgJEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIrEBChpBZGRSaXNrSW50ZWxsaWdlbmNlUmVxdWVzdBIxCgppbnRlbF90eXBlGAEgASgOMh0udXNlci52MS5SaXNrSW50ZWxsaWdlbmNlVHlwZRISCgppbnRlbF9kYXRhGAIgAygJEi8KBnN0YXR1cxgDIAEoDjIfLnVzZXIudjEuUmlza0ludGVsbGlnZW5jZVN0YXR1cxIOCgZzb3VyY2UYBCABKAkSCwoDdGFnGAUgASgJIh0KG0FkZFJpc2tJbnRlbGxpZ2VuY2VSZXNwb25zZSLeAgobTGlzdFJpc2tJbnRlbGxpZ2VuY2VSZXF1ZXN0EjYKCmludGVsX3R5cGUYASABKA4yHS51c2VyLnYxLlJpc2tJbnRlbGxpZ2VuY2VUeXBlSACIAQESNAoGc3RhdHVzGAIgASgOMh8udXNlci52MS5SaXNrSW50ZWxsaWdlbmNlU3RhdHVzSAGIAQESEwoGc291cmNlGAMgASgJSAKIAQESFAoHdXNlcl9pZBgEIAEoCUgDiAEBEhAKA3RhZxgFIAEoCUgEiAEBEhcKCmludGVsX2RhdGEYBiABKAlIBYgBARIVCgRwYWdlGAcgASgFQge6SAQaAigBEhwKCXBhZ2Vfc2l6ZRgIIAEoBUIJukgGGgQYZCgBQg0KC19pbnRlbF90eXBlQgkKB19zdGF0dXNCCQoHX3NvdXJjZUIKCghfdXNlcl9pZEIGCgRfdGFnQg0KC19pbnRlbF9kYXRhIl4KHExpc3RSaXNrSW50ZWxsaWdlbmNlUmVzcG9uc2USLwoMaW50ZWxsaWdlbmNlGAEgAygLMhkudXNlci52MS5SaXNrSW50ZWxsaWdlbmNlEg0KBXRvdGFsGAIgASgFIqUCCh1VcGRhdGVSaXNrSW50ZWxsaWdlbmNlUmVxdWVzdBIKCgJpZBgBIAEoAxI0CgZzdGF0dXMYAiABKA4yHy51c2VyLnYxLlJpc2tJbnRlbGxpZ2VuY2VTdGF0dXNIAIgBARIQCgN0YWcYAyABKAlIAYgBARITCgZzb3VyY2UYBCABKAlIAogBARIXCgppbnRlbF9kYXRhGAUgASgJSAOIAQESNgoKaW50ZWxfdHlwZRgGIAEoDjIdLnVzZXIudjEuUmlza0ludGVsbGlnZW5jZVR5cGVIBIgBARIOCgZyZWFzb24YByABKAlCCQoHX3N0YXR1c0IGCgRfdGFnQgkKB19zb3VyY2VCDQoLX2ludGVsX2RhdGFCDQoLX2ludGVsX3R5cGUiIAoeVXBkYXRlUmlza0ludGVsbGlnZW5jZVJlc3BvbnNlIjIKI0Rpc2FibGVSaXNrSW50ZWxsaWdlbmNlQnlUYWdSZXF1ZXN0EgsKA3RhZxgBIAEoCSImCiREaXNhYmxlUmlza0ludGVsbGlnZW5jZUJ5VGFnUmVzcG9uc2UqiAEKFlVwZGF0ZVVzZXJDcmVkaXRTdGF0dXMSIgoeVXBkYXRlVXNlckNyZWRpdFN0YXR1c19Vbmtub3duEAASJQohVXBkYXRlVXNlckNyZWRpdFN0YXR1c19Qcm9jZXNzaW5nEAESIwofVXBkYXRlVXNlckNyZWRpdFN0YXR1c19GaW5pc2hlZBACKpsDChNVcGRhdGVDcmVkaXRPcGVyYXRlEiUKIVVQREFURV9DUkVESVRfT1BFUkFURV9VTlNQRUNJRklFRBAAEh4KGlVQREFURV9DUkVESVRfT1BFUkFURV9HSUZUEAESIAocVVBEQVRFX0NSRURJVF9PUEVSQVRFX0RFRFVDVBACEiAKHFVQREFURV9DUkVESVRfT1BFUkFURV9DSEFSR0UQAxIeChpVUERBVEVfQ1JFRElUX09QRVJBVEVfQ09TVBAEEiIKHlVQREFURV9DUkVESVRfT1BFUkFURV9ST0xMQkFDSxAFEiMKH1VQREFURV9DUkVESVRfT1BFUkFURV9SQVRFX0dJRlQQBhIgChxVUERBVEVfQ1JFRElUX09QRVJBVEVfUkVGVU5EEAcSJQohVVBEQVRFX0NSRURJVF9PUEVSQVRFX0lOVklURV9HSUZUEAgSJAogVVBEQVRFX0NSRURJVF9PUEVSQVRFX0xJVkVfRVZFTlQQCRIhCh1VUERBVEVfQ1JFRElUX09QRVJBVEVfUkVGUkVTSBAKKoYBChRJbnZpdGF0aW9uQ29kZVN0YXR1cxImCiJJTlZJVEFUSU9OX0NPREVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIQodSU5WSVRBVElPTl9DT0RFX1NUQVRVU19BQ1RJVkUQARIjCh9JTlZJVEFUSU9OX0NPREVfU1RBVFVTX0RJU0FCTEVEEAIqigEKDldhaXRsaXN0U3RhdHVzEh8KG1dBSVRMSVNUX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF1dBSVRMSVNUX1NUQVRVU19QRU5ESU5HEAESHAoYV0FJVExJU1RfU1RBVFVTX0FQUFJPVkVEEAISHAoYV0FJVExJU1RfU1RBVFVTX1JFSkVDVEVEEAMqmgMKEFdhaXRsaXN0UnVsZVR5cGUSIgoeV0FJVExJU1RfUlVMRV9UWVBFX1VOU1BFQ0lGSUVEEAASIwofV0FJVExJU1RfUlVMRV9UWVBFX0JST1dTRVJfTEFORxABEiMKH1dBSVRMSVNUX1JVTEVfVFlQRV9FTUFJTF9ET01BSU4QAhIiCh5XQUlUTElTVF9SVUxFX1RZUEVfQ09VTlRSWV9JU08QAxIkCiBXQUlUTElTVF9SVUxFX1RZUEVfUkVBU09OX0xFTkdUSBAEEi0KKVdBSVRMSVNUX1JVTEVfVFlQRV9FWENMVURFX0NISU5FU0VfUkVBU09OEAUSKAokV0FJVExJU1RfUlVMRV9UWVBFX0VYQ0xVREVfVElNRV9aT05FEAYSJwojV0FJVExJU1RfUlVMRV9UWVBFX1JFUVVFU1RfVElNRV9HVEUQBxInCiNXQUlUTElTVF9SVUxFX1RZUEVfUkVRVUVTVF9USU1FX0xURRAIEiMKH1dBSVRMSVNUX1JVTEVfVFlQRV9BSV9TQ09SRV9HVEUQCSp9ChJXYWl0bGlzdEF1dG9BY3Rpb24SJAogV0FJVExJU1RfQVVUT19BQ1RJT05fVU5TUEVDSUZJRUQQABIgChxXQUlUTElTVF9BVVRPX0FDVElPTl9BUFBST1ZFEAESHwobV0FJVExJU1RfQVVUT19BQ1RJT05fUkVKRUNUEAIqkgEKFldhaXRsaXN0QXV0b1Rhc2tTdGF0dXMSKQolV0FJVExJU1RfQVVUT19UQVNLX1NUQVRVU19VTlNQRUNJRklFRBAAEiUKIVdBSVRMSVNUX0FVVE9fVEFTS19TVEFUVVNfRU5BQkxFRBABEiYKIldBSVRMSVNUX0FVVE9fVEFTS19TVEFUVVNfRElTQUJMRUQQAippCg1CbG9ja2VkU3RhdHVzEh4KGkJMT0NLRURfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWQkxPQ0tFRF9TVEFUVVNfQkxPQ0tFRBABEhwKGEJMT0NLRURfU1RBVFVTX1VOQkxPQ0tFRBACKnEKClVzZXJTdGF0dXMSGwoXVVNFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIWChJVU0VSX1NUQVRVU19BQ1RJVkUQARIWChJVU0VSX1NUQVRVU19CQU5ORUQQAhIWChJVU0VSX1NUQVRVU19MT0dPRkYQAyrTAQoUUmlza0ludGVsbGlnZW5jZVR5cGUSJgoiVVNFUl9JTlRFTExJR0VOQ0VfVFlQRV9VTlNQRUNJRklFRBAAEh0KGVVTRVJfSU5URUxMSUdFTkNFX1RZUEVfSVAQARIpCiVVU0VSX0lOVEVMTElHRU5DRV9UWVBFX0VNQUlMX1BST1ZJREVSEAISJwojVVNFUl9JTlRFTExJR0VOQ0VfVFlQRV9FTUFJTF9TVUZGSVgQAxIgChxVU0VSX0lOVEVMTElHRU5DRV9UWVBFX1BIT05FEAQqkAEKFlJpc2tJbnRlbGxpZ2VuY2VTdGF0dXMSKAokVVNFUl9JTlRFTExJR0VOQ0VfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJgoiVVNFUl9JTlRFTExJR0VOQ0VfU1RBVFVTX0VGRkVDVElWRRABEiQKIFVTRVJfSU5URUxMSUdFTkNFX1NUQVRVU19JTlZBTElEEAIyjhwKEFVzZXJBZG1pblNlcnZpY2USYwoUQ3JlYXRlSW52aXRhdGlvbkNvZGUSJC51c2VyLnYxLkNyZWF0ZUludml0YXRpb25Db2RlUmVxdWVzdBolLnVzZXIudjEuQ3JlYXRlSW52aXRhdGlvbkNvZGVSZXNwb25zZRJgChNMaXN0SW52aXRhdGlvbkNvZGVzEiMudXNlci52MS5MaXN0SW52aXRhdGlvbkNvZGVzUmVxdWVzdBokLnVzZXIudjEuTGlzdEludml0YXRpb25Db2Rlc1Jlc3BvbnNlEmkKFkdldEludml0YXRpb25Db2RlVXNhZ2USJi51c2VyLnYxLkdldEludml0YXRpb25Db2RlVXNhZ2VSZXF1ZXN0GicudXNlci52MS5HZXRJbnZpdGF0aW9uQ29kZVVzYWdlUmVzcG9uc2USYwoUVXBkYXRlSW52aXRhdGlvbkNvZGUSJC51c2VyLnYxLlVwZGF0ZUludml0YXRpb25Db2RlUmVxdWVzdBolLnVzZXIudjEuVXBkYXRlSW52aXRhdGlvbkNvZGVSZXNwb25zZRJsChdHZXRJbnZpdGF0aW9uU3RhdGlzdGljcxInLnVzZXIudjEuR2V0SW52aXRhdGlvblN0YXRpc3RpY3NSZXF1ZXN0GigudXNlci52MS5HZXRJbnZpdGF0aW9uU3RhdGlzdGljc1Jlc3BvbnNlEksKDExpc3RXYWl0bGlzdBIcLnVzZXIudjEuTGlzdFdhaXRsaXN0UmVxdWVzdBodLnVzZXIudjEuTGlzdFdhaXRsaXN0UmVzcG9uc2USYwoUVXBkYXRlV2FpdGxpc3RTdGF0dXMSJC51c2VyLnYxLlVwZGF0ZVdhaXRsaXN0U3RhdHVzUmVxdWVzdBolLnVzZXIudjEuVXBkYXRlV2FpdGxpc3RTdGF0dXNSZXNwb25zZRJpChZDcmVhdGVXYWl0bGlzdEF1dG9UYXNrEiYudXNlci52MS5DcmVhdGVXYWl0bGlzdEF1dG9UYXNrUmVxdWVzdBonLnVzZXIudjEuQ3JlYXRlV2FpdGxpc3RBdXRvVGFza1Jlc3BvbnNlEmMKFExpc3RXYWl0bGlzdEF1dG9UYXNrEiQudXNlci52MS5MaXN0V2FpdGxpc3RBdXRvVGFza1JlcXVlc3QaJS51c2VyLnYxLkxpc3RXYWl0bGlzdEF1dG9UYXNrUmVzcG9uc2USWgoRTGlzdFF1ZXN0aW9ubmFpcmUSIS51c2VyLnYxLkxpc3RRdWVzdGlvbm5haXJlUmVxdWVzdBoiLnVzZXIudjEuTGlzdFF1ZXN0aW9ubmFpcmVSZXNwb25zZRJmChVHZXRTeXN0ZW1Ob3RpZmljYXRpb24SJS51c2VyLnYxLkdldFN5c3RlbU5vdGlmaWNhdGlvblJlcXVlc3QaJi51c2VyLnYxLkdldFN5c3RlbU5vdGlmaWNhdGlvblJlc3BvbnNlEm8KGFVwZGF0ZVN5c3RlbU5vdGlmaWNhdGlvbhIoLnVzZXIudjEuVXBkYXRlU3lzdGVtTm90aWZpY2F0aW9uUmVxdWVzdBopLnVzZXIudjEuVXBkYXRlU3lzdGVtTm90aWZpY2F0aW9uUmVzcG9uc2USXQoSR2V0UGF5bWVudFNldHRpbmdzEiIudXNlci52MS5HZXRQYXltZW50U2V0dGluZ3NSZXF1ZXN0GiMudXNlci52MS5HZXRQYXltZW50U2V0dGluZ3NSZXNwb25zZRJmChVVcGRhdGVQYXltZW50U2V0dGluZ3MSJS51c2VyLnYxLlVwZGF0ZVBheW1lbnRTZXR0aW5nc1JlcXVlc3QaJi51c2VyLnYxLlVwZGF0ZVBheW1lbnRTZXR0aW5nc1Jlc3BvbnNlEloKEUdldENOVGltZVpvbmVMaXN0EiEudXNlci52MS5HZXRDTlRpbWVab25lTGlzdFJlcXVlc3QaIi51c2VyLnYxLkdldENOVGltZVpvbmVMaXN0UmVzcG9uc2USYwoUVXBkYXRlQ05UaW1lWm9uZUxpc3QSJC51c2VyLnYxLlVwZGF0ZUNOVGltZVpvbmVMaXN0UmVxdWVzdBolLnVzZXIudjEuVXBkYXRlQ05UaW1lWm9uZUxpc3RSZXNwb25zZRJpChZCYW5JbnZpdGF0aW9uQ29kZXNCeUlQEiYudXNlci52MS5CYW5JbnZpdGF0aW9uQ29kZXNCeUlQUmVxdWVzdBonLnVzZXIudjEuQmFuSW52aXRhdGlvbkNvZGVzQnlJUFJlc3BvbnNlElEKDkdldElQQmxhY2tsaXN0Eh4udXNlci52MS5HZXRJUEJsYWNrbGlzdFJlcXVlc3QaHy51c2VyLnYxLkdldElQQmxhY2tsaXN0UmVzcG9uc2USWgoRVXBkYXRlSVBCbGFja2xpc3QSIS51c2VyLnYxLlVwZGF0ZUlQQmxhY2tsaXN0UmVxdWVzdBoiLnVzZXIudjEuVXBkYXRlSVBCbGFja2xpc3RSZXNwb25zZRJRCg5MaXN0VXNlckNyZWRpdBIeLnVzZXIudjEuTGlzdFVzZXJDcmVkaXRSZXF1ZXN0Gh8udXNlci52MS5MaXN0VXNlckNyZWRpdFJlc3BvbnNlElcKEFVwZGF0ZVVzZXJDcmVkaXQSIC51c2VyLnYxLlVwZGF0ZVVzZXJDcmVkaXRSZXF1ZXN0GiEudXNlci52MS5VcGRhdGVVc2VyQ3JlZGl0UmVzcG9uc2USdQoaTG9vcFVwZGF0ZVVzZXJDcmVkaXRTdGF0dXMSKi51c2VyLnYxLkxvb3BVcGRhdGVVc2VyQ3JlZGl0U3RhdHVzUmVxdWVzdBorLnVzZXIudjEuTG9vcFVwZGF0ZVVzZXJDcmVkaXRTdGF0dXNSZXNwb25zZRJjChRMaXN0VXNlckNyZWRpdFJlY29yZBIkLnVzZXIudjEuTGlzdFVzZXJDcmVkaXRSZWNvcmRSZXF1ZXN0GiUudXNlci52MS5MaXN0VXNlckNyZWRpdFJlY29yZFJlc3BvbnNlElcKEExpc3RCbG9ja2VkVXNlcnMSIC51c2VyLnYxLkxpc3RCbG9ja2VkVXNlcnNSZXF1ZXN0GiEudXNlci52MS5MaXN0QmxvY2tlZFVzZXJzUmVzcG9uc2UScgoZQ3JlYXRlT3JVcGRhdGVCbG9ja2VkVXNlchIpLnVzZXIudjEuQ3JlYXRlT3JVcGRhdGVCbG9ja2VkVXNlclJlcXVlc3QaKi51c2VyLnYxLkNyZWF0ZU9yVXBkYXRlQmxvY2tlZFVzZXJSZXNwb25zZRJLCgxHZXRVc2VyUXVvdGESHC51c2VyLnYxLkdldFVzZXJRdW90YVJlcXVlc3QaHS51c2VyLnYxLkdldFVzZXJRdW90YVJlc3BvbnNlElkKEEFkbWluR2V0VXNlckluZm8SIC51c2VyLnYxLkFkbWluR2V0VXNlckluZm9SZXF1ZXN0GiEudXNlci52MS5BZG1pbkdldFVzZXJJbmZvUmVzcG9uc2UiABJgChNHZXRVc2VyTG9nb2ZmU3RhdHVzEiMudXNlci52MS5HZXRVc2VyTG9nb2ZmU3RhdHVzUmVxdWVzdBokLnVzZXIudjEuR2V0VXNlckxvZ29mZlN0YXR1c1Jlc3BvbnNlEkEKCExpc3RVc2VyEhgudXNlci52MS5MaXN0VXNlclJlcXVlc3QaGS51c2VyLnYxLkxpc3RVc2VyUmVzcG9uc2UiABJTCg5MaXN0VXNlclZpcExvZxIeLnVzZXIudjEuTGlzdFVzZXJWaXBMb2dSZXF1ZXN0Gh8udXNlci52MS5MaXN0VXNlclZpcExvZ1Jlc3BvbnNlIgASTQoMQWRtaW5HaWZ0VmlwEhwudXNlci52MS5BZG1pbkdpZnRWaXBSZXF1ZXN0Gh0udXNlci52MS5BZG1pbkdpZnRWaXBSZXNwb25zZSIAEp4BCidCYXRjaEFkZEFjdGl2aXR5UXVlc3Rpb25uYWlyZVBlcm1pc3Npb24SNy51c2VyLnYxLkJhdGNoQWRkQWN0aXZpdHlRdWVzdGlvbm5haXJlUGVybWlzc2lvblJlcXVlc3QaOC51c2VyLnYxLkJhdGNoQWRkQWN0aXZpdHlRdWVzdGlvbm5haXJlUGVybWlzc2lvblJlc3BvbnNlIgASYgoTQWRkUmlza0ludGVsbGlnZW5jZRIjLnVzZXIudjEuQWRkUmlza0ludGVsbGlnZW5jZVJlcXVlc3QaJC51c2VyLnYxLkFkZFJpc2tJbnRlbGxpZ2VuY2VSZXNwb25zZSIAEmUKFExpc3RSaXNrSW50ZWxsaWdlbmNlEiQudXNlci52MS5MaXN0Umlza0ludGVsbGlnZW5jZVJlcXVlc3QaJS51c2VyLnYxLkxpc3RSaXNrSW50ZWxsaWdlbmNlUmVzcG9uc2UiABJrChZVcGRhdGVSaXNrSW50ZWxsaWdlbmNlEiYudXNlci52MS5VcGRhdGVSaXNrSW50ZWxsaWdlbmNlUmVxdWVzdBonLnVzZXIudjEuVXBkYXRlUmlza0ludGVsbGlnZW5jZVJlc3BvbnNlIgASfQocRGlzYWJsZVJpc2tJbnRlbGxpZ2VuY2VCeVRhZxIsLnVzZXIudjEuRGlzYWJsZVJpc2tJbnRlbGxpZ2VuY2VCeVRhZ1JlcXVlc3QaLS51c2VyLnYxLkRpc2FibGVSaXNrSW50ZWxsaWdlbmNlQnlUYWdSZXNwb25zZSIAQpUBCgtjb20udXNlci52MUIOVXNlckFkbWluUHJvdG9QAVo5Z2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L3VzZXIvdjE7dXNlcnYxogIDVVhYqgIHVXNlci5WMcoCB1VzZXJcVjHiAhNVc2VyXFYxXEdQQk1ldGFkYXRh6gIIVXNlcjo6VjFiBnByb3RvMw", [Ge, Ne, j, ki]) , vh = z(Wh, 0) , Ca = x("Chp1c2VyL3YxL3N1YnNjcmlwdGlvbi5wcm90bxIHdXNlci52MSJECh1Mb29wVGVhbVVwZ3JhZGVTdGF0dXNSZXNwb25zZRIjCgZzdGF0dXMYASABKA4yEy51c2VyLnYxLkxvb3BTdGF0dXMiRAocTG9vcFRlYW1VcGdyYWRlU3RhdHVzUmVxdWVzdBIQCgh0ZWFtX3VpZBgBIAEoCRISCgppbnZvaWNlX2lkGAIgASgJIkAKD1ByZXZpZXdSZXNwb25zZRIRCglzdWJfdG90YWwYASABKAkSCwoDdGF4GAIgASgJEg0KBXRvdGFsGAMgASgJIjUKDlByZXZpZXdSZXF1ZXN0EiMKCHBsYW5fa2V5GAEgASgOMhEudXNlci52MS5QbGFuX0tleSIQCg5VcGRhdGVSZXNwb25zZSI0Cg1VcGRhdGVSZXF1ZXN0EiMKCHBsYW5fa2V5GAEgASgOMhEudXNlci52MS5QbGFuX0tleSJWCh1UZWFtU3Vic2NyaXB0aW9uVXBkYXRlUmVxdWVzdBIjCghwbGFuX2tleRgBIAEoDjIRLnVzZXIudjEuUGxhbl9LZXkSEAoIcXVhbnRpdHkYAiABKAUiSAoeVGVhbVN1YnNjcmlwdGlvblVwZGF0ZVJlc3BvbnNlEhIKCklzX3VwZ3JhZGUYASABKAgSEgoKaW52b2ljZV9pZBgCIAEoCSJXCh5UZWFtU3Vic2NyaXB0aW9uUHJldmlld1JlcXVlc3QSIwoIcGxhbl9rZXkYASABKA4yES51c2VyLnYxLlBsYW5fS2V5EhAKCHF1YW50aXR5GAIgASgFIqwBCh9UZWFtU3Vic2NyaXB0aW9uUHJldmlld1Jlc3BvbnNlEhEKCXN1Yl90b3RhbBgBIAEoCRILCgN0YXgYAiABKAkSDQoFdG90YWwYAyABKAkSHAoUbmV4dF9wYXltZW50X2F0dGVtcHQYBCABKAMSFgoObmV4dF9zdWJfdG90YWwYBSABKAkSEAoIbmV4dF90YXgYBiABKAkSEgoKbmV4dF90b3RhbBgHIAEoCSJzCg9DaGVja291dFJlcXVlc3QSIwoIcGxhbl9rZXkYASABKA4yES51c2VyLnYxLlBsYW5fS2V5EhIKCmNhbmNlbF91cmwYAiABKAkSEwoLc3VjY2Vzc191cmwYAyABKAkSEgoKbW90aXZhdGlvbhgEIAEoCSI8ChBDaGVja291dFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMY2hlY2tvdXRfdXJsGAIgASgJIpMBCh9UZWFtU3Vic2NyaXB0aW9uQ2hlY2tvdXRSZXF1ZXN0EhAKCHRlYW1fdWlkGAEgASgJEiMKCHBsYW5fa2V5GAIgASgOMhEudXNlci52MS5QbGFuX0tleRIQCghxdWFudGl0eRgDIAEoBRISCgpjYW5jZWxfdXJsGAQgASgJEhMKC3N1Y2Nlc3NfdXJsGAUgASgJIkwKIFRlYW1TdWJzY3JpcHRpb25DaGVja291dFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMY2hlY2tvdXRfdXJsGAIgASgJIk4KDUNhbmNlbFJlcXVlc3QSLAoNY2FuY2VsX3JlYXNvbhgBIAEoDjIVLnVzZXIudjEuQ2FuY2VsUmVhc29uEg8KB2NvbW1lbnQYAiABKAkiEAoOQ2FuY2VsUmVzcG9uc2UiDwoNUmVzdW1lUmVxdWVzdCIQCg5SZXN1bWVSZXNwb25zZSIiCgxRdWVyeVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSI6Cg1RdWVyeVJlc3BvbnNlEhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCRIQCgh0ZWFtX3VpZBgCIAEoCSIUChJCaWxsaW5nUGFnZVJlcXVlc3QiIgoTQmlsbGluZ1BhZ2VSZXNwb25zZRILCgN1cmwYASABKAkiIAoeUmV2ZW51ZWNhdFN5bmNDdXN0b21lclJlcXVlc3RfIiEKH1JldmVudWVjYXRTeW5jQ3VzdG9tZXJSZXNwb25zZV8qbgoKTG9vcFN0YXR1cxIWChJMb29wU3RhdHVzX1Vua25vd24QABIZChVMb29wU3RhdHVzX1Byb2Nlc3NpbmcQARIWChJMb29wU3RhdHVzX1N1Y2Nlc3MQAhIVChFMb29wU3RhdHVzX0ZhaWxlZBADKoUCCghQbGFuX0tleRILCgdVTktOT1dOEAASDwoLUFJPX01PTlRITFkQARISCg5DQVNVQUxfTU9OVEhMWRACEg4KClBST19ZRUFSTFkQAxIRCg1DQVNVQUxfWUVBUkxZEAQSEAoMTElURV9NT05USExZEAUSDwoLTElURV9ZRUFSTFkQBhIQCgxDUkVESVRTXzIwMDAQZRIRCg1DUkVESVRTXzEwMDAwEGYSEQoNQ1JFRElUU18xOTkwMBBnEhEKDFRFQU1fTU9OVEhMWRDJARIQCgtURUFNX1lFQVJMWRDKARIPCgpURUFNX0FERE9OEMsBEhMKDlRFQU1fREVEVUNUSU9OEMwBKsoCCgxDYW5jZWxSZWFzb24SGAoUQ2FuY2VsUmVhc29uX1Vua25vd24QABIdChlDYW5jZWxSZWFzb25fVG9vRXhwZW5zaXZlEAESHwobQ2FuY2VsUmVhc29uX05vTG9uZ2VyTmVlZEl0EAISIwofQ2FuY2VsUmVhc29uX0ZvdW5kQW5BbHRlcm5hdGl2ZRADEh8KG0NhbmNlbFJlYXNvbl9EaWZmaWN1bHRUb1VzZRAEEiYKIkNhbmNlbFJlYXNvbl9EaWRudE1lZXRFeHBlY3RhdGlvbnMQBRIcChhDYW5jZWxSZWFzb25fT3RoZXJSZWFzb24QBhIvCitDYW5jZWxSZWFzb25fU3RpbGxEZWNpZGluZ0F2b2lkaW5nQXV0b1JlbmV3EAcSIwofQ2FuY2VsUmVhc29uX0RhdGFQcml2YWN5Q29uY2VybhAIMv4HChNTdWJzY3JpcHRpb25TZXJ2aWNlEjgKBVF1ZXJ5EhUudXNlci52MS5RdWVyeVJlcXVlc3QaFi51c2VyLnYxLlF1ZXJ5UmVzcG9uc2UiABI7CgZVcGRhdGUSFi51c2VyLnYxLlVwZGF0ZVJlcXVlc3QaFy51c2VyLnYxLlVwZGF0ZVJlc3BvbnNlIgASPgoHUHJldmlldxIXLnVzZXIudjEuUHJldmlld1JlcXVlc3QaGC51c2VyLnYxLlByZXZpZXdSZXNwb25zZSIAEkEKCENoZWNrb3V0EhgudXNlci52MS5DaGVja291dFJlcXVlc3QaGS51c2VyLnYxLkNoZWNrb3V0UmVzcG9uc2UiABJxChhUZWFtU3Vic2NyaXB0aW9uQ2hlY2tvdXQSKC51c2VyLnYxLlRlYW1TdWJzY3JpcHRpb25DaGVja291dFJlcXVlc3QaKS51c2VyLnYxLlRlYW1TdWJzY3JpcHRpb25DaGVja291dFJlc3BvbnNlIgASawoWVGVhbVN1YnNjcmlwdGlvblVwZGF0ZRImLnVzZXIudjEuVGVhbVN1YnNjcmlwdGlvblVwZGF0ZVJlcXVlc3QaJy51c2VyLnYxLlRlYW1TdWJzY3JpcHRpb25VcGRhdGVSZXNwb25zZSIAEm4KF1RlYW1TdWJzY3JpcHRpb25QcmV2aWV3EicudXNlci52MS5UZWFtU3Vic2NyaXB0aW9uUHJldmlld1JlcXVlc3QaKC51c2VyLnYxLlRlYW1TdWJzY3JpcHRpb25QcmV2aWV3UmVzcG9uc2UiABI7CgZDYW5jZWwSFi51c2VyLnYxLkNhbmNlbFJlcXVlc3QaFy51c2VyLnYxLkNhbmNlbFJlc3BvbnNlIgASOwoGUmVzdW1lEhYudXNlci52MS5SZXN1bWVSZXF1ZXN0GhcudXNlci52MS5SZXN1bWVSZXNwb25zZSIAEkoKC0JpbGxpbmdQYWdlEhsudXNlci52MS5CaWxsaW5nUGFnZVJlcXVlc3QaHC51c2VyLnYxLkJpbGxpbmdQYWdlUmVzcG9uc2UiABJtChZSZXZlbnVlY2F0U3luY0N1c3RvbWVyEicudXNlci52MS5SZXZlbnVlY2F0U3luY0N1c3RvbWVyUmVxdWVzdF8aKC51c2VyLnYxLlJldmVudWVjYXRTeW5jQ3VzdG9tZXJSZXNwb25zZV8iABJoChVMb29wVGVhbVVwZ3JhZGVTdGF0dXMSJS51c2VyLnYxLkxvb3BUZWFtVXBncmFkZVN0YXR1c1JlcXVlc3QaJi51c2VyLnYxLkxvb3BUZWFtVXBncmFkZVN0YXR1c1Jlc3BvbnNlIgBCmAEKC2NvbS51c2VyLnYxQhFTdWJzY3JpcHRpb25Qcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvdXNlci92MTt1c2VydjGiAgNVWFiqAgdVc2VyLlYxygIHVXNlclxWMeICE1VzZXJcVjFcR1BCTWV0YWRhdGHqAghVc2VyOjpWMWIGcHJvdG8z") , Bh = z(Ca, 0) , Nh = x("Chl1c2VyL3YxL3VzZXJfcHVibGljLnByb3RvEgd1c2VyLnYxInwKF0dldEV4Y2hhbmdlSW5mb1Jlc3BvbnNlEi8KDWFkZG9uX2NyZWRpdHMYASADKAsyGC51c2VyLnYxLkFkZG9uQ3JlZGl0SW5mbxIwCg1zdWJzY3JpcHRpb25zGAIgAygLMhkudXNlci52MS5TdWJzY3JpcHRpb25JbmZvImsKEFN1YnNjcmlwdGlvbkluZm8SHwoEcGxhbhgBIAEoDjIRLnVzZXIudjEuUGxhbl9LZXkSDQoFcHJpY2UYAiABKAUSFgoOZGlzY291bnRfcHJpY2UYAyABKAUSDwoHY3JlZGl0cxgEIAEoBSJSCg9BZGRvbkNyZWRpdEluZm8SHwoEcGxhbhgBIAEoDjIRLnVzZXIudjEuUGxhbl9LZXkSDQoFcHJpY2UYAiABKAUSDwoHY3JlZGl0cxgDIAEoBSIYChZHZXRFeGNoYW5nZUluZm9SZXF1ZXN0IvICChNKb2luV2FpdGxpc3RSZXF1ZXN0EioKBWVtYWlsGAEgASgJQhu6SBhyFjIUXlteQF0rQFteQF0rXC5bXkBdKyQSDgoGcmVhc29uGAIgASgJEisKCmV4dHJhX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh0KFWNmX2NoYWxsZW5nZV9yZXNwb25zZRgEIAEoCRIjChtoY2FwdGNoYV9jaGFsbGVuZ2VfcmVzcG9uc2UYBSABKAkSFwoKd29ya19lbWFpbBgGIAEoCUgAiAEBEhcKCnByb2Zlc3Npb24YByABKAlIAYgBARIhChRzb2NpYWxfbWVkaWFfYWNjb3VudBgIIAEoCUgCiAEBEhUKCGluZHVzdHJ5GAkgASgJSAOIAQFCDQoLX3dvcmtfZW1haWxCDQoLX3Byb2Zlc3Npb25CFwoVX3NvY2lhbF9tZWRpYV9hY2NvdW50QgsKCV9pbmR1c3RyeSJPChRKb2luV2FpdGxpc3RSZXNwb25zZRIVCg1hdXRvX2FwcHJvdmVkGAEgASgIEhQKB29yZ191aWQYAiABKAlIAIgBAUIKCghfb3JnX3VpZCJtChFTdGFydE9hdXRoUmVxdWVzdBIZCgZpZHBfaWQYAiABKAlCCbpIBnIEEAEYIBIfCgtzdWNjZXNzX3VybBgDIAEoCUIKukgHcgUQARiACBIcCghmYWlsX3VybBgEIAEoCUIKukgHcgUQARiACCIhChJTdGFydE9hdXRoUmVzcG9uc2USCwoDdXJsGAEgASgJInMKE09hdXRoU3VjY2Vzc1JlcXVlc3QSCgoCaWQYASABKAkSDQoFdG9rZW4YAiABKAkSDwoHdXNlcl9pZBgDIAEoCRIcCg9hdXRoX3JlcXVlc3RfaWQYBCABKAlIAIgBAUISChBfYXV0aF9yZXF1ZXN0X2lkIiUKFE9hdXRoU3VjY2Vzc1Jlc3BvbnNlEg0KBXRva2VuGAEgASgJIkAKCkF0dGFjaG1lbnQSEQoJZmlsZV9uYW1lGAEgASgJEhEKCW1pbWVfdHlwZRgCIAEoCRIMCgRkYXRhGAMgASgJIpECChVTdWJtaXRGZWVkYmFja1JlcXVlc3QSIwoEdHlwZRgBIAEoDjIVLnVzZXIudjEuRmVlZGJhY2tUeXBlEg0KBXRpdGxlGAIgASgJEhsKB2NvbnRlbnQYAyABKAlCCrpIB3IFEAEYkE4SKgoFZW1haWwYBCABKAlCG7pIGHIWMhReW15AXStAW15AXStcLlteQF0rJBINCgVyZWZlchgFIAEoCRIVCg1vcmlnaW5fZG9tYWluGAYgASgJEisKCmV4dHJhX2RhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EigKC2F0dGFjaG1lbnRzGAggAygLMhMudXNlci52MS5BdHRhY2htZW50Ii0KFlN1Ym1pdEZlZWRiYWNrUmVzcG9uc2USEwoLZmVlZGJhY2tfaWQYASABKAMifAodUHJlQ2hlY2tJbnZpdGF0aW9uQ29kZVJlcXVlc3QSFwoEY29kZRgBIAEoCUIJukgGcgQQBhggEh0KFWNmX2NoYWxsZW5nZV9yZXNwb25zZRgCIAEoCRIjChtoY2FwdGNoYV9jaGFsbGVuZ2VfcmVzcG9uc2UYAyABKAkiIAoeUHJlQ2hlY2tJbnZpdGF0aW9uQ29kZVJlc3BvbnNlIhQKEkNoZWNrUmVnaW9uUmVxdWVzdCJjChNDaGVja1JlZ2lvblJlc3BvbnNlEhYKDmlzX3Vuc3VwcG9ydGVkGAEgASgIEhkKEWlzX3Vuc3VwcG9ydGVkX3YyGAIgASgIEgsKA2lzbxgDIAEoCRIMCgRjb2RlGAQgASgJIjsKIUNoZWNrSW52aXRhdGlvbkNvZGVSZW1haW5zUmVxdWVzdBIWCg5pbnZpdGVfY29kZV9pZBgBIAEoCSLwAQoiQ2hlY2tJbnZpdGF0aW9uQ29kZVJlbWFpbnNSZXNwb25zZRIQCghtYXhfdXNlcxgBIAEoAxIPCgdyZW1haW5zGAIgASgDEg4KBnJlbWFyaxgDIAEoCRIMCgRraW5kGAQgASgFEhEKCXVzZXJfbmFtZRgFIAEoCRIWCg5lZHVfZW1haWxfbGlzdBgHIAMoCRIQCghlZHVfbmFtZRgIIAEoCRIXCg9lZHVfdW5pcXVlX25hbWUYCSABKAkSGQoRcmVjb21tZW5kX2NyZWRpdHMYCiABKAUSGAoQcmVnaXN0ZXJfY3JlZGl0cxgLIAEoBSIaChhHZXRHbG9iYWxTZXR0aW5nc1JlcXVlc3QinQEKD0dsb2JhbEVycm9ySW5mbxIKCgJpZBgBIAEoBRIPCgd2ZXJzaW9uGAIgASgFEhMKC2FsbG93X2Nsb3NlGAMgASgIEiwKCHN0YXJ0X2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIqCgZlbmRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImcKGUdldEdsb2JhbFNldHRpbmdzUmVzcG9uc2USGgoSZGlzYWJsaW5nX3BheW1lbnRzGAEgASgIEi4KDGdsb2JhbF9lcnJvchgCIAEoCzIYLnVzZXIudjEuR2xvYmFsRXJyb3JJbmZvIloKHlZlcmlmeU9yZ2FuaXphdGlvbkVtYWlsUmVxdWVzdBISCgVlbWFpbBgCIAEoCUgAiAEBEhEKBGNvZGUYAyABKAlIAYgBAUIICgZfZW1haWxCBwoFX2NvZGUiXgofVmVyaWZ5T3JnYW5pemF0aW9uRW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEgsKA21zZxgCIAEoCRIPCgdvcmdfdWlkGAMgASgJEgwKBGNvZGUYBCABKAUiVAojR2V0Q2FtcHVzSW52aXRhdGlvbkNvZGVVc2FnZVJlcXVlc3QSDAoEcGFnZRgBIAEoBRIRCglwYWdlX3NpemUYAiABKAUSDAoEY29kZRgDIAEoCSK2AQokR2V0Q2FtcHVzSW52aXRhdGlvbkNvZGVVc2FnZVJlc3BvbnNlEi8KBGNvZGUYASABKAsyIS51c2VyLnYxLkNhbXB1c0ludml0YXRpb25Db2RlSW5mbxI4CglyZWxhdGlvbnMYAiADKAsyJS51c2VyLnYxLkNhbXB1c0ludml0YXRpb25SZWxhdGlvbkluZm8SDQoFdG90YWwYAyABKAUSFAoMdG90YWxfZWFybmVkGAQgASgFIqsCChhDYW1wdXNJbnZpdGF0aW9uQ29kZUluZm8SCgoCaWQYASABKAMSDwoHdXNlcl9pZBgCIAEoCRITCgtpbnZpdGVfY29kZRgDIAEoCRIpCgRraW5kGAQgASgOMhsudXNlci52MS5JbnZpdGF0aW9uQ29kZUtpbmQSFAoMaXNfYWN0aXZhdGVkGAUgASgIEhAKCG1heF91c2VzGAYgASgFEhIKCnVzZWRfY291bnQYByABKAUSEgoKY3JlYXRlZF9ieRgIIAEoCRIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBILCgN0YWcYCiABKAkSDgoGcmVtYXJrGAsgASgJEhUKDWZpc3Npb25fY291bnQYDCABKAUihAIKHENhbXB1c0ludml0YXRpb25SZWxhdGlvbkluZm8SCgoCaWQYASABKAMSEgoKaW52aXRlcl9pZBgCIAEoCRIVCg1pbnZpdGVlX2VtYWlsGAMgASgJEhMKC2ludml0ZV9jb2RlGAQgASgJEjcKBnN0YXR1cxgFIAEoDjInLnVzZXIudjEuQ2FtcHVzSW52aXRhdGlvblJlbGF0aW9uU3RhdHVzEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2FjY2VwdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI5CihTZW5kQ2FtcHVzRW1haWxWZXJpZnlDb2RlV2l0aEF1dGhSZXF1ZXN0Eg0KBWVtYWlsGAIgASgJIkkKKVNlbmRDYW1wdXNFbWFpbFZlcmlmeUNvZGVXaXRoQXV0aFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSCwoDbXNnGAIgASgJKqYCCgxGZWVkYmFja1R5cGUSHQoZRkVFREJBQ0tfVFlQRV9VTlNQRUNJRklFRBAAEhUKEUZFRURCQUNLX1RZUEVfQlVHEAESKAokRkVFREJBQ0tfVFlQRV9GRUFUVVJFX1ZJUF9PUl9QQVlNRU5UEAISHwobRkVFREJBQ0tfVFlQRV9BQ0NPVU5UX0lTU1VFEAMSHAoYRkVFREJBQ0tfVFlQRV9URUFNX0lTU1VFEAQSIgoeRkVFREJBQ0tfVFlQRV9TTVNfVkVSSUZJQ0FUSU9OEAUSIQodRkVFREJBQ0tfVFlQRV9GRUFUVVJFX1JFUVVFU1QQBhIXChNGRUVEQkFDS19UWVBFX09USEVSEAcSFwoTRkVFREJBQ0tfVFlQRV9FTUFJTBAIKjsKHkNhbXB1c0ludml0YXRpb25SZWxhdGlvblN0YXR1cxILCgdQRU5ESU5HEAASDAoIQWNjZXB0ZWQQATKXCQoRVXNlclB1YmxpY1NlcnZpY2USSwoMSm9pbldhaXRsaXN0EhwudXNlci52MS5Kb2luV2FpdGxpc3RSZXF1ZXN0Gh0udXNlci52MS5Kb2luV2FpdGxpc3RSZXNwb25zZRJFCgpTdGFydE9hdXRoEhoudXNlci52MS5TdGFydE9hdXRoUmVxdWVzdBobLnVzZXIudjEuU3RhcnRPYXV0aFJlc3BvbnNlEksKDE9hdXRoU3VjY2VzcxIcLnVzZXIudjEuT2F1dGhTdWNjZXNzUmVxdWVzdBodLnVzZXIudjEuT2F1dGhTdWNjZXNzUmVzcG9uc2USUQoOU3VibWl0RmVlZGJhY2sSHi51c2VyLnYxLlN1Ym1pdEZlZWRiYWNrUmVxdWVzdBofLnVzZXIudjEuU3VibWl0RmVlZGJhY2tSZXNwb25zZRJpChZQcmVDaGVja0ludml0YXRpb25Db2RlEiYudXNlci52MS5QcmVDaGVja0ludml0YXRpb25Db2RlUmVxdWVzdBonLnVzZXIudjEuUHJlQ2hlY2tJbnZpdGF0aW9uQ29kZVJlc3BvbnNlEkgKC0NoZWNrUmVnaW9uEhsudXNlci52MS5DaGVja1JlZ2lvblJlcXVlc3QaHC51c2VyLnYxLkNoZWNrUmVnaW9uUmVzcG9uc2USdQoaQ2hlY2tJbnZpdGF0aW9uQ29kZVJlbWFpbnMSKi51c2VyLnYxLkNoZWNrSW52aXRhdGlvbkNvZGVSZW1haW5zUmVxdWVzdBorLnVzZXIudjEuQ2hlY2tJbnZpdGF0aW9uQ29kZVJlbWFpbnNSZXNwb25zZRJaChFHZXRHbG9iYWxTZXR0aW5ncxIhLnVzZXIudjEuR2V0R2xvYmFsU2V0dGluZ3NSZXF1ZXN0GiIudXNlci52MS5HZXRHbG9iYWxTZXR0aW5nc1Jlc3BvbnNlElQKD0dldEV4Y2hhbmdlSW5mbxIfLnVzZXIudjEuR2V0RXhjaGFuZ2VJbmZvUmVxdWVzdBogLnVzZXIudjEuR2V0RXhjaGFuZ2VJbmZvUmVzcG9uc2USZgoRVmVyaWZ5Q2FtcHVzRW1haWwSJy51c2VyLnYxLlZlcmlmeU9yZ2FuaXphdGlvbkVtYWlsUmVxdWVzdBooLnVzZXIudjEuVmVyaWZ5T3JnYW5pemF0aW9uRW1haWxSZXNwb25zZRJ7ChxHZXRDYW1wdXNJbnZpdGF0aW9uQ29kZVVzYWdlEiwudXNlci52MS5HZXRDYW1wdXNJbnZpdGF0aW9uQ29kZVVzYWdlUmVxdWVzdBotLnVzZXIudjEuR2V0Q2FtcHVzSW52aXRhdGlvbkNvZGVVc2FnZVJlc3BvbnNlEooBCiFTZW5kQ2FtcHVzRW1haWxWZXJpZnlDb2RlV2l0aEF1dGgSMS51c2VyLnYxLlNlbmRDYW1wdXNFbWFpbFZlcmlmeUNvZGVXaXRoQXV0aFJlcXVlc3QaMi51c2VyLnYxLlNlbmRDYW1wdXNFbWFpbFZlcmlmeUNvZGVXaXRoQXV0aFJlc3BvbnNlQpYBCgtjb20udXNlci52MUIPVXNlclB1YmxpY1Byb3RvUAFaOWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC91c2VyL3YxO3VzZXJ2MaICA1VYWKoCB1VzZXIuVjHKAgdVc2VyXFYx4gITVXNlclxWMVxHUEJNZXRhZGF0YeoCCFVzZXI6OlYxYgZwcm90bzM", [ki, Ge, Ne, j, Ca]) , Fh = z(Nh, 0) , Yh = x("CiF1c2VyL3YxL3VzZXJfZmVlZGJhY2tfYWRtaW4ucHJvdG8SB3VzZXIudjEixwEKGkxpc3RVc2VyRmVlZEJhY2tUYWdSZXF1ZXN0EhQKB2tleXdvcmQYASABKAlIAIgBARIUCgdpc19wdXNoGAIgASgISAGIAQESEwoGc3RhdHVzGAMgASgISAKIAQESDAoEcGFnZRgEIAEoBRIRCglwYWdlX3NpemUYBSABKAUSFgoJb25seV9yb290GAYgASgISAOIAQFCCgoIX2tleXdvcmRCCgoIX2lzX3B1c2hCCQoHX3N0YXR1c0IMCgpfb25seV9yb290IlQKG0xpc3RVc2VyRmVlZEJhY2tUYWdSZXNwb25zZRImCgR0YWdzGAEgAygLMhgudXNlci52MS5Vc2VyRmVlZEJhY2tUYWcSDQoFdG90YWwYAiABKAUiYAoaTGlzdEZlaXNodUdyb3VwSW5mb1JlcXVlc3QSFAoHY2hhdF9pZBgBIAEoCUgAiAEBEhQKB2tleXdvcmQYAiABKAlIAYgBAUIKCghfY2hhdF9pZEIKCghfa2V5d29yZCJHChtMaXN0RmVpc2h1R3JvdXBJbmZvUmVzcG9uc2USKAoGZ3JvdXBzGAEgAygLMhgudXNlci52MS5GZWlzaHVHcm91cEluZm8iTAoQQXV0b1JlcGx5Q29udGVudBIQCgh1c2Vfd2hlbhgBIAEoCRISCgplbl9jb250ZW50GAIgASgJEhIKCmNuX2NvbnRlbnQYAyABKAkizwIKGUFkZFVzZXJGZWVkQmFja1RhZ1JlcXVlc3QSFwoPdG9waWNfZ3JvdXBfdWlkGAUgASgJEg8KB2lzX3B1c2gYBiABKAgSEAoIcHJpb3JpdHkYByABKAUSDgoGc3RhdHVzGAggASgIEhEKCXBhcmVudF9pZBgJIAEoAxIZChFlbmFibGVfYXV0b19yZXBseRgKIAEoCBI1ChJhdXRvX3JlcGx5X2NvbnRlbnQYCyADKAsyGS51c2VyLnYxLkF1dG9SZXBseUNvbnRlbnQSGAoQZW5hYmxlX2F1dG9fbm90ZRgMIAEoCBIYChBhdXRvX25vdGVfZmllbGRzGA0gAygJEg4KBnByb21wdBgOIAEoCRIXCgRuYW1lGA8gASgJQgm6SAZyBBADGB4SEwoLZGVzY3JpcHRpb24YECABKAkSDwoHaXNfcm9vdBgRIAEoCCI+ChpBZGRVc2VyRmVlZEJhY2tUYWdSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiZQocRGVsZXRlVXNlckZlZWRCYWNrVGFnUmVxdWVzdBIKCgJpZBgBIAEoAxIRCglmaXJzdF90YWcYAiABKAkSFwoKc2Vjb25kX3RhZxgDIAEoCUgAiAEBQg0KC19zZWNvbmRfdGFnIkEKHURlbGV0ZVVzZXJGZWVkQmFja1RhZ1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSKGBAocVXBkYXRlVXNlckZlZWRCYWNrVGFnUmVxdWVzdBIKCgJpZBgBIAEoAxIcCg90b3BpY19ncm91cF91aWQYBiABKAlIAIgBARIUCgdpc19wdXNoGAcgASgISAGIAQESFQoIcHJpb3JpdHkYCCABKAVIAogBARITCgZzdGF0dXMYCSABKAhIA4gBARIWCglwYXJlbnRfaWQYCiABKANIBIgBARIeChFlbmFibGVfYXV0b19yZXBseRgLIAEoCEgFiAEBEjUKEmF1dG9fcmVwbHlfY29udGVudBgMIAMoCzIZLnVzZXIudjEuQXV0b1JlcGx5Q29udGVudBIdChBlbmFibGVfYXV0b19ub3RlGA0gASgISAaIAQESGAoQYXV0b19ub3RlX2ZpZWxkcxgOIAMoCRITCgZwcm9tcHQYDyABKAlIB4gBARIXCgRuYW1lGBAgASgJQgm6SAZyBBADGB4SGAoLZGVzY3JpcHRpb24YESABKAlICIgBAUISChBfdG9waWNfZ3JvdXBfdWlkQgoKCF9pc19wdXNoQgsKCV9wcmlvcml0eUIJCgdfc3RhdHVzQgwKCl9wYXJlbnRfaWRCFAoSX2VuYWJsZV9hdXRvX3JlcGx5QhMKEV9lbmFibGVfYXV0b19ub3RlQgkKB19wcm9tcHRCDgoMX2Rlc2NyaXB0aW9uIkEKHVVwZGF0ZVVzZXJGZWVkQmFja1RhZ1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSJjChlBZGRGZWlzaHVHcm91cEluZm9SZXF1ZXN0EhIKCmdyb3VwX3R5cGUYASABKAUSEgoKZ3JvdXBfbmFtZRgCIAEoCRINCgVvd25lchgDIAEoCRIPCgdjaGF0X2lkGAQgASgJIj4KGkFkZEZlaXNodUdyb3VwSW5mb1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSK6AQocVXBkYXRlRmVpc2h1R3JvdXBJbmZvUmVxdWVzdBIKCgJpZBgBIAEoAxIXCgpncm91cF90eXBlGAMgASgFSACIAQESFwoKZ3JvdXBfbmFtZRgEIAEoCUgBiAEBEhIKBW93bmVyGAUgASgJSAKIAQESFAoHY2hhdF9pZBgGIAEoCUgDiAEBQg0KC19ncm91cF90eXBlQg0KC19ncm91cF9uYW1lQggKBl9vd25lckIKCghfY2hhdF9pZCJBCh1VcGRhdGVGZWlzaHVHcm91cEluZm9SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiKgocRGVsZXRlRmVpc2h1R3JvdXBJbmZvUmVxdWVzdBIKCgJpZBgBIAEoAyJBCh1EZWxldGVGZWlzaHVHcm91cEluZm9SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAki9wMKD1VzZXJGZWVkQmFja1RhZxIKCgJpZBgBIAEoAxIXCg90b3BpY19ncm91cF91aWQYBiABKAkSDwoHaXNfcHVzaBgHIAEoCBIQCghwcmlvcml0eRgIIAEoBRIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCyABKAgSEgoKZ3JvdXBfbmFtZRgMIAEoCRIPCgdjaGF0X2lkGA0gASgJEhEKCXBhcmVudF9pZBgOIAEoAxIPCgdpc19yb290GA8gASgIEhkKEWVuYWJsZV9hdXRvX3JlcGx5GBAgASgIEjUKEmF1dG9fcmVwbHlfY29udGVudBgRIAMoCzIZLnVzZXIudjEuQXV0b1JlcGx5Q29udGVudBIYChBlbmFibGVfYXV0b19ub3RlGBIgASgIEhgKEGF1dG9fbm90ZV9maWVsZHMYEyADKAkSDgoGcHJvbXB0GBQgASgJEioKCGNoaWxkcmVuGBUgAygLMhgudXNlci52MS5Vc2VyRmVlZEJhY2tUYWcSDAoEbmFtZRgWIAEoCRITCgtkZXNjcmlwdGlvbhgXIAEoCSLSAQoPRmVpc2h1R3JvdXBJbmZvEgoKAmlkGAEgASgDEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgsKA3VpZBgFIAEoCRISCgpncm91cF90eXBlGAYgASgFEhIKCmdyb3VwX25hbWUYByABKAkSDQoFb3duZXIYCCABKAkSDwoHY2hhdF9pZBgJIAEoCSI3ChNMaXN0Rmlyc3RUYWdSZXF1ZXN0EhQKB2tleXdvcmQYAyABKAlIAIgBAUIKCghfa2V5d29yZCIzChRMaXN0Rmlyc3RUYWdSZXNwb25zZRIMCgR0YWdzGAEgAygJEg0KBXRvdGFsGAIgASgFIj4KFExpc3RSb290VGFnc1Jlc3BvbnNlEiYKBHRhZ3MYASADKAsyGC51c2VyLnYxLlVzZXJGZWVkQmFja1RhZyItCh9HZXRVc2VyRmVlZEJhY2tUYWdEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgDIkkKIEdldFVzZXJGZWVkQmFja1RhZ0RldGFpbFJlc3BvbnNlEiUKA3RhZxgBIAEoCzIYLnVzZXIudjEuVXNlckZlZWRCYWNrVGFnMtMIChRVc2VyRmVlZEJhY2tUYWdBZG1pbhJiChNMaXN0VXNlckZlZWRCYWNrVGFnEiMudXNlci52MS5MaXN0VXNlckZlZWRCYWNrVGFnUmVxdWVzdBokLnVzZXIudjEuTGlzdFVzZXJGZWVkQmFja1RhZ1Jlc3BvbnNlIgASYgoTTGlzdEZlaXNodUdyb3VwSW5mbxIjLnVzZXIudjEuTGlzdEZlaXNodUdyb3VwSW5mb1JlcXVlc3QaJC51c2VyLnYxLkxpc3RGZWlzaHVHcm91cEluZm9SZXNwb25zZSIAEl8KEkFkZFVzZXJGZWVkQmFja1RhZxIiLnVzZXIudjEuQWRkVXNlckZlZWRCYWNrVGFnUmVxdWVzdBojLnVzZXIudjEuQWRkVXNlckZlZWRCYWNrVGFnUmVzcG9uc2UiABJoChVVcGRhdGVVc2VyRmVlZEJhY2tUYWcSJS51c2VyLnYxLlVwZGF0ZVVzZXJGZWVkQmFja1RhZ1JlcXVlc3QaJi51c2VyLnYxLlVwZGF0ZVVzZXJGZWVkQmFja1RhZ1Jlc3BvbnNlIgASaAoVRGVsZXRlVXNlckZlZWRCYWNrVGFnEiUudXNlci52MS5EZWxldGVVc2VyRmVlZEJhY2tUYWdSZXF1ZXN0GiYudXNlci52MS5EZWxldGVVc2VyRmVlZEJhY2tUYWdSZXNwb25zZSIAEl8KEkFkZEZlaXNodUdyb3VwSW5mbxIiLnVzZXIudjEuQWRkRmVpc2h1R3JvdXBJbmZvUmVxdWVzdBojLnVzZXIudjEuQWRkRmVpc2h1R3JvdXBJbmZvUmVzcG9uc2UiABJoChVVcGRhdGVGZWlzaHVHcm91cEluZm8SJS51c2VyLnYxLlVwZGF0ZUZlaXNodUdyb3VwSW5mb1JlcXVlc3QaJi51c2VyLnYxLlVwZGF0ZUZlaXNodUdyb3VwSW5mb1Jlc3BvbnNlIgASaAoVRGVsZXRlRmVpc2h1R3JvdXBJbmZvEiUudXNlci52MS5EZWxldGVGZWlzaHVHcm91cEluZm9SZXF1ZXN0GiYudXNlci52MS5EZWxldGVGZWlzaHVHcm91cEluZm9SZXNwb25zZSIAEk0KDExpc3RGaXJzdFRhZxIcLnVzZXIudjEuTGlzdEZpcnN0VGFnUmVxdWVzdBodLnVzZXIudjEuTGlzdEZpcnN0VGFnUmVzcG9uc2UiABJHCgxMaXN0Um9vdFRhZ3MSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaHS51c2VyLnYxLkxpc3RSb290VGFnc1Jlc3BvbnNlIgAScQoYR2V0VXNlckZlZWRCYWNrVGFnRGV0YWlsEigudXNlci52MS5HZXRVc2VyRmVlZEJhY2tUYWdEZXRhaWxSZXF1ZXN0GikudXNlci52MS5HZXRVc2VyRmVlZEJhY2tUYWdEZXRhaWxSZXNwb25zZSIAQp0BCgtjb20udXNlci52MUIWVXNlckZlZWRiYWNrQWRtaW5Qcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvdXNlci92MTt1c2VydjGiAgNVWFiqAgdVc2VyLlYxygIHVXNlclxWMeICE1VzZXJcVjFcR1BCTWV0YWRhdGHqAghVc2VyOjpWMWIGcHJvdG8z", [Ge, ku, j]) , Uh = z(Yh, 0) , Jh = x("ChJ1c2VyL3YxL3VzZXIucHJvdG8SB3VzZXIudjEiWAoaTGlzdFVzZXJDcmVkaXRzTG9nUmVzcG9uc2USKwoEbG9ncxgBIAMoCzIdLnVzZXIudjEuVXNlclNlc3Npb25DcmVkaXRMb2cSDQoFdG90YWwYAiABKAUivgEKFFVzZXJTZXNzaW9uQ3JlZGl0TG9nEhIKCnNlc3Npb25faWQYASABKAkSDQoFdGl0bGUYAiABKAkSEQoJY3JlYXRlX2F0GAMgASgFEg8KB2NyZWRpdHMYBCABKAUSJAoEdHlwZRgFIAEoDjIWLnVzZXIudjEuQ3JlZGl0TG9nVHlwZRI5ChFjb2xsYWJvcmF0ZV9pbmZvcxgGIAMoCzIeLnVzZXIudjEuQ3JlZGl0Q29sbGFib3JhdGVJbmZvImEKFUNyZWRpdENvbGxhYm9yYXRlSW5mbxIPCgd1c2VyX2lkGAEgASgJEhEKCXVzZXJfbmFtZRgCIAEoCRITCgt1c2VyX2F2YXRhchgDIAEoCRIPCgdjcmVkaXRzGAQgASgFIjwKGUxpc3RVc2VyQ3JlZGl0c0xvZ1JlcXVlc3QSDAoEcGFnZRgBIAEoBRIRCglwYWdlX3NpemUYAiABKAUiFQoTR2V0RnJlZVF1b3RhUmVxdWVzdCI3ChRHZXRGcmVlUXVvdGFSZXNwb25zZRISCgpsZWZ0X3F1b3RhGAEgASgFEgsKA3R0bBgCIAEoAyJyCghUZWFtSW5mbxINCgVjb3VudBgBIAEoBRIVCgh0ZWFtX3VpZBgCIAEoCUgAiAEBEhgKEG9yaWdpbmFsX3VzZXJfaWQYAyABKAkSGQoRb3JpZ2luYWxfdXNlcl91aWQYBCABKAlCCwoJX3RlYW1fdWlkIhEKD1VzZXJJbmZvUmVxdWVzdCLgBgoQVXNlckluZm9SZXNwb25zZRIPCgd1c2VyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCWZpcnN0bmFtZRgDIAEoCRIQCghsYXN0bmFtZRgEIAEoCRITCgtkaXNwbGF5bmFtZRgFIAEoCRIQCghuaWNrbmFtZRgGIAEoCRIOCgZhdmF0YXIYByABKAkSEAoIaXNfYWxwaGEYCCABKAgSEwoLaW5fd2FpdGxpc3QYCSABKAgSGgoSY3VycmVudF9wZXJpb2RfZW5kGAwgASgDEhwKFGNhbmNlbF9hdF9wZXJpb2RfZW5kGA0gASgIEg8KB2lzX2JldGEYDiABKAgSGAoQcGF5bWVudF9wbGF0Zm9ybRgPIAEoCRILCgN1aWQYECABKAkSGwoTY29uY3VycmVudF9zZXNzaW9ucxgRIAEoBRIVCg1wbGF0Zm9ybV9saXN0GBIgAygJEi8KJ2Nhbl9yZWNlaXZlX2V4dHJhX2NyZWRpdHNfZm9yX3N1YnNjcmliZRgTIAEoCBItCiVjYW5fcmVjZWl2ZV9leHRyYV9jcmVkaXRzX2Zvcl91cGdyYWRlGBQgASgIEjgKE3N1YnNjcmlwdGlvbl9zdGF0dXMYFSABKA4yGy51c2VyLnYxLlN1YnNjcmlwdGlvblN0YXR1cxIaChJtZW1iZXJzaGlwX3ZlcnNpb24YHiABKAkSGwoTbWVtYmVyc2hpcF9pbnRlcnZhbBgfIAEoCRIfChduZXh0X21lbWJlcnNoaXBfdmVyc2lvbhggIAEoCRIoCgl1c2VyX3R5cGUYKCABKA4yFS51c2VyLnYxLlVzZXJUeXBlRW51bRIkCgl0ZWFtX2luZm8YKSABKAsyES51c2VyLnYxLlRlYW1JbmZvEhsKE2lzX21lbWJlcnNoaXBfdHJpYWwYISABKAgSJwoIZWR1X2luZm8YIiABKAsyEC51c2VyLnYxLkVkdUluZm9IAIgBARIUCgxzbXNfdmVyaWZpZWQYIyABKAgSIAoYbmV4dF9tZW1iZXJzaGlwX2ludGVydmFsGCQgASgJEg0KBXBlcmtzGCUgASgIQgsKCV9lZHVfaW5mb0oECAoQC0oECAsQDFILdmlwX3ZlcnNpb25SDHZpcF9pbnRlcnZhbCKWAQoHRWR1SW5mbxILCgN1aWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgllZHVfZW1haWwYAyABKAkSGQoRcmVjb21tZW5kX2NyZWRpdHMYBCABKAUSGAoQcmVnaXN0ZXJfY3JlZGl0cxgFIAEoBRITCgtlZHVfZG9tYWlucxgGIAMoCRITCgt1bmlxdWVfbmFtZRgHIAEoCSJ/ChpDaGVja0ludml0YXRpb25Db2RlUmVxdWVzdBIXCgRjb2RlGAEgASgJQgm6SAZyBBAGGCASKAobaGNhcHRjaGFfY2hhbGxlbmdlX3Jlc3BvbnNlGAIgASgJSACIAQFCHgocX2hjYXB0Y2hhX2NoYWxsZW5nZV9yZXNwb25zZSIdChtDaGVja0ludml0YXRpb25Db2RlUmVzcG9uc2UiPAoGQXZhdGFyEhEKCWZpbGVfbmFtZRgBIAEoCRIRCgltaW1lX3R5cGUYAiABKAkSDAoEZGF0YRgDIAEoCSJ2ChhVcGRhdGVVc2VyUHJvZmlsZVJlcXVlc3QSJAoMbmV3X25pY2tuYW1lGAIgASgJQgm6SAZyBBABGCBIAIgBARIjCgpuZXdfYXZhdGFyGAMgASgLMg8udXNlci52MS5BdmF0YXJCDwoNX25ld19uaWNrbmFtZSIbChlVcGRhdGVVc2VyUHJvZmlsZVJlc3BvbnNlIuEBChpDcmVhdGVRdWVzdGlvbm5haXJlUmVxdWVzdBIOCgZyZWFzb24YASABKAkSKwoKZXh0cmFfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoKcHJvZmVzc2lvbhgDIAEoCUgAiAEBEiEKFHNvY2lhbF9tZWRpYV9hY2NvdW50GAQgASgJSAGIAQESFQoIaW5kdXN0cnkYBSABKAlIAogBAUINCgtfcHJvZmVzc2lvbkIXChVfc29jaWFsX21lZGlhX2FjY291bnRCCwoJX2luZHVzdHJ5Ih0KG0NyZWF0ZVF1ZXN0aW9ubmFpcmVSZXNwb25zZSJPChpHZXRVc2VyQ2xpZW50Q29uZmlnUmVxdWVzdBIxCgtjb25maWdfa2V5cxgBIAMoDjIcLnVzZXIudjEuVXNlckNsaWVudENvbmZpZ0tleSLoAgobR2V0VXNlckNsaWVudENvbmZpZ1Jlc3BvbnNlEiEKFHJlY3ZfbWFya2V0aW5nX2VtYWlsGAEgASgISACIAQESGQoMaGFzX2ludGVyZXN0GAIgASgISAGIAQESJAoXc2Vzc2lvbl93YWl0X2RvbmVfZW1haWwYByABKAhIAogBARI6ChJhZ2VudF9kZXBsb3lfc3BhY2UYCiABKA4yGS51c2VyLnYxLkFnZW50RGVwbG95U3BhY2VIA4gBARIqCh1oYXNfc2hvd25fZWR1X3RlYW1fam9pbl9wb3B1cBgPIAEoCEgEiAEBQhcKFV9yZWN2X21hcmtldGluZ19lbWFpbEIPCg1faGFzX2ludGVyZXN0QhoKGF9zZXNzaW9uX3dhaXRfZG9uZV9lbWFpbEIVChNfYWdlbnRfZGVwbG95X3NwYWNlQiAKHl9oYXNfc2hvd25fZWR1X3RlYW1fam9pbl9wb3B1cCLnAgoaU2V0VXNlckNsaWVudENvbmZpZ1JlcXVlc3QSIQoUcmVjdl9tYXJrZXRpbmdfZW1haWwYASABKAhIAIgBARIZCgxoYXNfaW50ZXJlc3QYAiABKAhIAYgBARIkChdzZXNzaW9uX3dhaXRfZG9uZV9lbWFpbBgHIAEoCEgCiAEBEjoKEmFnZW50X2RlcGxveV9zcGFjZRgKIAEoDjIZLnVzZXIudjEuQWdlbnREZXBsb3lTcGFjZUgDiAEBEioKHWhhc19zaG93bl9lZHVfdGVhbV9qb2luX3BvcHVwGA8gASgISASIAQFCFwoVX3JlY3ZfbWFya2V0aW5nX2VtYWlsQg8KDV9oYXNfaW50ZXJlc3RCGgoYX3Nlc3Npb25fd2FpdF9kb25lX2VtYWlsQhUKE19hZ2VudF9kZXBsb3lfc3BhY2VCIAoeX2hhc19zaG93bl9lZHVfdGVhbV9qb2luX3BvcHVwIh0KG1NldFVzZXJDbGllbnRDb25maWdSZXNwb25zZSIeChxHZXRVc2VyR2xvYmFsU2V0dGluZ3NSZXF1ZXN0IjMKHUdldFVzZXJHbG9iYWxTZXR0aW5nc1Jlc3BvbnNlEhIKCnN1YnNjcmliZWQYASABKAgiHAoaR2V0QXZhaWxhYmxlQ3JlZGl0c1JlcXVlc3QitgIKG0dldEF2YWlsYWJsZUNyZWRpdHNSZXNwb25zZRIVCg10b3RhbF9jcmVkaXRzGAEgASgFEhQKDGZyZWVfY3JlZGl0cxgCIAEoBRIYChBwZXJpb2RpY19jcmVkaXRzGAMgASgFEhUKDWFkZG9uX2NyZWRpdHMYBCABKAUSGwoTcHJvX21vbnRobHlfY3JlZGl0cxgFIAEoBRIVCg1ldmVudF9jcmVkaXRzGAYgASgFEhcKD3JlZnJlc2hfY3JlZGl0cxgUIAEoBRIbChNtYXhfcmVmcmVzaF9jcmVkaXRzGBUgASgFEjUKEW5leHRfcmVmcmVzaF90aW1lGBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChByZWZyZXNoX2ludGVydmFsGBcgASgJIs8BChpQZXJzb25hbEludml0YXRpb25Db2RlSW5mbxIKCgJpZBgBIAEoAxIpCgRraW5kGAIgASgOMhsudXNlci52MS5JbnZpdGF0aW9uQ29kZUtpbmQSEwoLaW52aXRlX2NvZGUYAyABKAkSEAoIbWF4X3VzZXMYBCABKAUSEgoKdXNlZF9jb3VudBgFIAEoBRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdwZW5kaW5nGAggASgIIiMKIUdldFBlcnNvbmFsSW52aXRhdGlvbkNvZGVzUmVxdWVzdCJjCiJHZXRQZXJzb25hbEludml0YXRpb25Db2Rlc1Jlc3BvbnNlEj0KEGludml0YXRpb25fY29kZXMYASADKAsyIy51c2VyLnYxLlBlcnNvbmFsSW52aXRhdGlvbkNvZGVJbmZvIlAKF1NldFVzZXJJbnRlcmVzdHNSZXF1ZXN0EiMKBHRhZ3MYASADKA4yFS51c2VyLnYxLlVzZXJJbnRlcmVzdBIQCghmZWVkYmFjaxgCIAEoCSIaChhTZXRVc2VySW50ZXJlc3RzUmVzcG9uc2UiEgoQR2V0Q29ubmVjdEFQUFJlcSJvCgtDb25uZWN0SW5mbxINCgV0b2tlbhgBIAEoCRIvCgtleHBpcmVfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHd2ViX3VybBgEIAEoCUgAiAEBQgoKCF93ZWJfdXJsIm8KCkNvbm5lY3RBUFASDAoEdHlwZRgBIAEoCRIRCgljb25uZWN0ZWQYAiABKAgSLwoMY29ubmVjdF9pbmZvGAMgASgLMhQudXNlci52MS5Db25uZWN0SW5mb0gAiAEBQg8KDV9jb25uZWN0X2luZm8iPgoSQ29ubmVjdEFQUFJlc3BvbnNlEigKC2Nvbm5lY3RfYXBwGAEgAygLMhMudXNlci52MS5Db25uZWN0QVBQIjUKGEdldEdvb2dsZURyaXZlQXV0aFVybFJlcRIZChFjYWxsYmFja19yZWRpcmVjdBgBIAEoCSIsCh1HZXRHb29nbGVEcml2ZUF1dGhVcmxSZXNwb25zZRILCgN1cmwYASABKAkiIAoQRGlzY29ubmVjdEFQUFJlcRIMCgR0eXBlGAEgASgJIhcKFURpc2Nvbm5lY3RBUFBSZXNwb25zZSKRAQogU2VuZFBob25lVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QSFAoMcGhvbmVfbnVtYmVyGAEgASgJEhMKC3JlZ2lvbl9jb2RlGAIgASgJEg4KBmxvY2FsZRgDIAEoCRIyCgdjaGFubmVsGAQgASgOMiEudXNlci52MS5QaG9uZVZlcmlmaWNhdGlvbkNoYW5uZWwiIwohU2VuZFBob25lVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlIl0KFUJpbmRQaG9uZVRyYWl0UmVxdWVzdBIUCgxwaG9uZV9udW1iZXIYASABKAkSEwoLcmVnaW9uX2NvZGUYAiABKAkSGQoRcGhvbmVfdmVyaWZ5X2NvZGUYAyABKAkiGAoWQmluZFBob25lVHJhaXRSZXNwb25zZSIXChVMaXN0UmVnaW9uQ29kZVJlcXVlc3QiJwoKUmVnaW9uQ29kZRILCgNpc28YASABKAkSDAoEY29kZRgCIAEoCSJDChZMaXN0UmVnaW9uQ29kZVJlc3BvbnNlEikKDHJlZ2lvbl9jb2RlcxgBIAMoCzITLnVzZXIudjEuUmVnaW9uQ29kZSLiAQoVQWN0aXZpdHlUeXBlUGVya3NEYXRhEhEKCWZ1bGxfbmFtZRgBIAEoCRINCgVwaG9uZRgCIAEoCRINCgVlbWFpbBgDIAEoCRIPCgdhZGRyZXNzGAQgASgJEh0KEGFkZHJlc3Nfb3B0aW9uYWwYBSABKAlIAIgBARITCgtjb3VudHJ5X2lzbxgHIAEoCRIMCgRjaXR5GAggASgJEg0KBXN0YXRlGAkgASgJEgsKA3ppcBgKIAEoCRIUCgx0X3NoaXJ0X3NpemUYCyABKAlCEwoRX2FkZHJlc3Nfb3B0aW9uYWwiWworQ2hlY2tBY3Rpdml0eVF1ZXN0aW9ubmFpcmVQZXJtaXNzaW9uUmVxdWVzdBIsCg1hY3Rpdml0eV90eXBlGAEgASgOMhUudXNlci52MS5BY3Rpdml0eVR5cGUiRgosQ2hlY2tBY3Rpdml0eVF1ZXN0aW9ubmFpcmVQZXJtaXNzaW9uUmVzcG9uc2USFgoOaGFzX3Blcm1pc3Npb24YASABKAgimAEKKkNyZWF0ZU9yVXBkYXRlQWN0aXZpdHlRdWVzdGlvbm5haXJlUmVxdWVzdBIsCg1hY3Rpdml0eV90eXBlGAEgASgOMhUudXNlci52MS5BY3Rpdml0eVR5cGUSNAoKcGVya3NfZGF0YRgCIAEoCzIeLnVzZXIudjEuQWN0aXZpdHlUeXBlUGVya3NEYXRhSABCBgoEZGF0YSI6CitDcmVhdGVPclVwZGF0ZUFjdGl2aXR5UXVlc3Rpb25uYWlyZVJlc3BvbnNlEgsKA3VpZBgBIAEoCSJPCh9HZXRBY3Rpdml0eVF1ZXN0aW9ubmFpcmVSZXF1ZXN0EiwKDWFjdGl2aXR5X3R5cGUYASABKA4yFS51c2VyLnYxLkFjdGl2aXR5VHlwZSKdAQogR2V0QWN0aXZpdHlRdWVzdGlvbm5haXJlUmVzcG9uc2USDQoFdmFsaWQYASABKAgSLAoNYWN0aXZpdHlfdHlwZRgCIAEoDjIVLnVzZXIudjEuQWN0aXZpdHlUeXBlEjQKCnBlcmtzX2RhdGEYAyABKAsyHi51c2VyLnYxLkFjdGl2aXR5VHlwZVBlcmtzRGF0YUgAQgYKBGRhdGEiOQoaU2VuZEludml0YXRpb25FbWFpbFJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEY29kZRgCIAEoCSIuChtTZW5kSW52aXRhdGlvbkVtYWlsUmVzcG9uc2USDwoHcGVuZGluZxgBIAEoCCI6Ch1HZXRPbmVEcml2ZVBlcnNvbmFsQXV0aFVybFJlcRIZChFjYWxsYmFja19yZWRpcmVjdBgBIAEoCSIxCiJHZXRPbmVEcml2ZVBlcnNvbmFsQXV0aFVybFJlc3BvbnNlEgsKA3VybBgBIAEoCSI6Ch1HZXRPbmVEcml2ZUJ1c2luZXNzQXV0aFVybFJlcRIZChFjYWxsYmFja19yZWRpcmVjdBgBIAEoCSIxCiJHZXRPbmVEcml2ZUJ1c2luZXNzQXV0aFVybFJlc3BvbnNlEgsKA3VybBgBIAEoCSJMChhJbkV4cGVyaW1lbnRHcm91cFJlcXVlc3QSMAoPZXhwZXJpbWVudF90eXBlGAEgASgOMhcudXNlci52MS5FeHBlcmltZW50VHlwZSI4ChlJbkV4cGVyaW1lbnRHcm91cFJlc3BvbnNlEhsKE2luX2V4cGVyaW1lbnRfZ3JvdXAYASABKAgiMgohR2V0T25lRHJpdmVCdXNpbmVzc1Njb3BlZFRva2VuUmVxEg0KBXNjb3BlGAEgASgJIksKJkdldE9uZURyaXZlQnVzaW5lc3NTY29wZWRUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEhIKCmV4cGlyZXNfaW4YAiABKAUq0wEKElN1YnNjcmlwdGlvblN0YXR1cxIbChdPdGhlclN1YnNjcmlwdGlvblN0YXR1cxAAEhoKFkluaXRTdWJzY3JpcHRpb25TdGF0dXMQARIcChhBY3RpdmVTdWJzY3JpcHRpb25TdGF0dXMQAhIdChlQYXN0RHVlU3Vic2NyaXB0aW9uU3RhdHVzEAMSJwojSW5jb21wbGV0ZUV4cGlyZWRTdWJzY3JpcHRpb25TdGF0dXMQBBIeChpDYW5jZWxlZFN1YnNjcmlwdGlvblN0YXR1cxAFKocEChNVc2VyQ2xpZW50Q29uZmlnS2V5EiYKIlVTRVJfQ0xJRU5UX0NPTkZJR19LRVlfVU5TUEVDSUZJRUQQABIvCitVU0VSX0NMSUVOVF9DT05GSUdfS0VZX1JFQ1ZfTUFSS0VUSU5HX0VNQUlMEAESJwojVVNFUl9DTElFTlRfQ09ORklHX0tFWV9IQVNfSU5URVJFU1QQAhIuCipVU0VSX0NMSUVOVF9DT05GSUdfS0VZX09QRVJBVElPTl9QTEFZX0NBUkQQAxInCiNVU0VSX0NMSUVOVF9DT05GSUdfS0VZX1ZFUklGWV9QSE9ORRAEEiQKIFVTRVJfQ0xJRU5UX0NPTkZJR19LRVlfVElNRV9aT05FEAUSKwonVVNFUl9DTElFTlRfQ09ORklHX0tFWV9USU1FX1pPTkVfT0ZGU0VUEAYSMgouVVNFUl9DTElFTlRfQ09ORklHX0tFWV9TRVNTSU9OX1dBSVRfRE9ORV9FTUFJTBAHEiUKIVVTRVJfQ0xJRU5UX0NPTkZJR19LRVlfT05CT0FSRElORxAIEi0KKVVTRVJfQ0xJRU5UX0NPTkZJR19LRVlfQUdFTlRfREVQTE9ZX1NQQUNFEAoSOAo0VVNFUl9DTElFTlRfQ09ORklHX0tFWV9IQVNfU0hPV05fRURVX1RFQU1fSk9JTl9QT1BVUBAPKoIBChBBZ2VudERlcGxveVNwYWNlEiIKHkFHRU5UX0RFUExPWV9TUEFDRV9VTlNQRUNJRklFRBAAEiUKIUFHRU5UX0RFUExPWV9TUEFDRV9BU0tfRVZFUllfVElNRRABEiMKH0FHRU5UX0RFUExPWV9TUEFDRV9BTFdBWVNfQUxMT1cQAir+BgoMVXNlckludGVyZXN0Eh0KGVVTRVJfSU5URVJFU1RfVU5TUEVDSUZJRUQQABIjCh9VU0VSX0lOVEVSRVNUX0lORFVTVFJZX0FOQUxZU0lTEAESIQodVVNFUl9JTlRFUkVTVF9QT0xJQ1lfUkVTRUFSQ0gQAhIkCiBVU0VSX0lOVEVSRVNUX1BFUlNPTkFfUFJPRklMTElORxADEh8KG1VTRVJfSU5URVJFU1RfREFUQV9JTlNJR0hUUxAEEiUKIVVTRVJfSU5URVJFU1RfV0VCU0lURV9QUk9UT1RZUElORxAKEiIKHlVTRVJfSU5URVJFU1RfR0FNRV9ERVZFTE9QTUVOVBALEhwKGFVTRVJfSU5URVJFU1RfQVBQX0RFU0lHThAMEiMKH1VTRVJfSU5URVJFU1RfSU5URVJBQ1RJVkVfUEFHRVMQDRIgChxVU0VSX0lOVEVSRVNUX0FHRU5UX0JVSUxESU5HEBQSIgoeVVNFUl9JTlRFUkVTVF9UT09MX1BST1RPVFlQSU5HEBUSIQodVVNFUl9JTlRFUkVTVF9BVVRPTUFUSU9OX0ZMT1cQFhIgChxVU0VSX0lOVEVSRVNUX0FJX0lOVEVHUkFUSU9OEBcSIQodVVNFUl9JTlRFUkVTVF9DT1VSU0VfQ1JFQVRJT04QHhIgChxVU0VSX0lOVEVSRVNUX0xFQVJOSU5HX1RPT0xTEB8SIwofVVNFUl9JTlRFUkVTVF9LTk9XTEVER0VfTUFQUElORxAgEiIKHlVTRVJfSU5URVJFU1RfVEVBQ0hJTkdfQ09OVEVOVBAhEiAKHFVTRVJfSU5URVJFU1RfUkVQT1JUX1dSSVRJTkcQKBIgChxVU0VSX0lOVEVSRVNUX1NUT1JZX0NSRUFUSU9OECkSIQodVVNFUl9JTlRFUkVTVF9WSURFT19TQ1JJUFRJTkcQKhIgChxVU0VSX0lOVEVSRVNUX01FRElBX1BMQU5OSU5HECsSIQodVVNFUl9JTlRFUkVTVF9NQVJLRVRfUkVTRUFSQ0gQMhIlCiFVU0VSX0lOVEVSRVNUX0lOVkVTVE1FTlRfQU5BTFlTSVMQMxIkCiBVU0VSX0lOVEVSRVNUX0ZJTkFOQ0lBTF9NT0RFTElORxA0EiAKHFVTRVJfSU5URVJFU1RfREFUQV9SRVBPUlRJTkcQNSq5AQoYUGhvbmVWZXJpZmljYXRpb25DaGFubmVsEioKJlBIT05FX1ZFUklGSUNBVElPTl9DSEFOTkVMX1VOU1BFQ0lGSUVEEAASIgoeUEhPTkVfVkVSSUZJQ0FUSU9OX0NIQU5ORUxfU01TEAESJwojUEhPTkVfVkVSSUZJQ0FUSU9OX0NIQU5ORUxfV0hBVFNBUFAQAhIkCiBQSE9ORV9WRVJJRklDQVRJT05fQ0hBTk5FTF9WT0lDRRADKlEKDkV4cGVyaW1lbnRUeXBlEh8KG0VYUEVSSU1FTlRfVFlQRV9VTlNQRUNJRklFRBAAEh4KGkVYUEVSSU1FTlRfVFlQRV9PTkJPQVJESU5HEAEyzBQKC1VzZXJTZXJ2aWNlEkEKCFVzZXJJbmZvEhgudXNlci52MS5Vc2VySW5mb1JlcXVlc3QaGS51c2VyLnYxLlVzZXJJbmZvUmVzcG9uc2UiABJgChNDaGVja0ludml0YXRpb25Db2RlEiMudXNlci52MS5DaGVja0ludml0YXRpb25Db2RlUmVxdWVzdBokLnVzZXIudjEuQ2hlY2tJbnZpdGF0aW9uQ29kZVJlc3BvbnNlEloKEVVwZGF0ZVVzZXJQcm9maWxlEiEudXNlci52MS5VcGRhdGVVc2VyUHJvZmlsZVJlcXVlc3QaIi51c2VyLnYxLlVwZGF0ZVVzZXJQcm9maWxlUmVzcG9uc2USYAoTQ3JlYXRlUXVlc3Rpb25uYWlyZRIjLnVzZXIudjEuQ3JlYXRlUXVlc3Rpb25uYWlyZVJlcXVlc3QaJC51c2VyLnYxLkNyZWF0ZVF1ZXN0aW9ubmFpcmVSZXNwb25zZRJLCgxHZXRGcmVlUXVvdGESHC51c2VyLnYxLkdldEZyZWVRdW90YVJlcXVlc3QaHS51c2VyLnYxLkdldEZyZWVRdW90YVJlc3BvbnNlEmAKE0dldFVzZXJDbGllbnRDb25maWcSIy51c2VyLnYxLkdldFVzZXJDbGllbnRDb25maWdSZXF1ZXN0GiQudXNlci52MS5HZXRVc2VyQ2xpZW50Q29uZmlnUmVzcG9uc2USYAoTU2V0VXNlckNsaWVudENvbmZpZxIjLnVzZXIudjEuU2V0VXNlckNsaWVudENvbmZpZ1JlcXVlc3QaJC51c2VyLnYxLlNldFVzZXJDbGllbnRDb25maWdSZXNwb25zZRJdChJMaXN0VXNlckNyZWRpdHNMb2cSIi51c2VyLnYxLkxpc3RVc2VyQ3JlZGl0c0xvZ1JlcXVlc3QaIy51c2VyLnYxLkxpc3RVc2VyQ3JlZGl0c0xvZ1Jlc3BvbnNlEmYKFUdldFVzZXJHbG9iYWxTZXR0aW5ncxIlLnVzZXIudjEuR2V0VXNlckdsb2JhbFNldHRpbmdzUmVxdWVzdBomLnVzZXIudjEuR2V0VXNlckdsb2JhbFNldHRpbmdzUmVzcG9uc2USYAoTR2V0QXZhaWxhYmxlQ3JlZGl0cxIjLnVzZXIudjEuR2V0QXZhaWxhYmxlQ3JlZGl0c1JlcXVlc3QaJC51c2VyLnYxLkdldEF2YWlsYWJsZUNyZWRpdHNSZXNwb25zZRJ1ChpHZXRQZXJzb25hbEludml0YXRpb25Db2RlcxIqLnVzZXIudjEuR2V0UGVyc29uYWxJbnZpdGF0aW9uQ29kZXNSZXF1ZXN0GisudXNlci52MS5HZXRQZXJzb25hbEludml0YXRpb25Db2Rlc1Jlc3BvbnNlElcKEFNldFVzZXJJbnRlcmVzdHMSIC51c2VyLnYxLlNldFVzZXJJbnRlcmVzdHNSZXF1ZXN0GiEudXNlci52MS5TZXRVc2VySW50ZXJlc3RzUmVzcG9uc2USRwoNR2V0Q29ubmVjdEFQUBIZLnVzZXIudjEuR2V0Q29ubmVjdEFQUFJlcRobLnVzZXIudjEuQ29ubmVjdEFQUFJlc3BvbnNlEkoKDURpc2Nvbm5lY3RBUFASGS51c2VyLnYxLkRpc2Nvbm5lY3RBUFBSZXEaHi51c2VyLnYxLkRpc2Nvbm5lY3RBUFBSZXNwb25zZRJiChVHZXRHb29nbGVEcml2ZUF1dGhVcmwSIS51c2VyLnYxLkdldEdvb2dsZURyaXZlQXV0aFVybFJlcRomLnVzZXIudjEuR2V0R29vZ2xlRHJpdmVBdXRoVXJsUmVzcG9uc2UScQoaR2V0T25lRHJpdmVQZXJzb25hbEF1dGhVcmwSJi51c2VyLnYxLkdldE9uZURyaXZlUGVyc29uYWxBdXRoVXJsUmVxGisudXNlci52MS5HZXRPbmVEcml2ZVBlcnNvbmFsQXV0aFVybFJlc3BvbnNlEnEKGkdldE9uZURyaXZlQnVzaW5lc3NBdXRoVXJsEiYudXNlci52MS5HZXRPbmVEcml2ZUJ1c2luZXNzQXV0aFVybFJlcRorLnVzZXIudjEuR2V0T25lRHJpdmVCdXNpbmVzc0F1dGhVcmxSZXNwb25zZRJ9Ch5HZXRPbmVEcml2ZUJ1c2luZXNzU2NvcGVkVG9rZW4SKi51c2VyLnYxLkdldE9uZURyaXZlQnVzaW5lc3NTY29wZWRUb2tlblJlcRovLnVzZXIudjEuR2V0T25lRHJpdmVCdXNpbmVzc1Njb3BlZFRva2VuUmVzcG9uc2USYAoTU2VuZEludml0YXRpb25FbWFpbBIjLnVzZXIudjEuU2VuZEludml0YXRpb25FbWFpbFJlcXVlc3QaJC51c2VyLnYxLlNlbmRJbnZpdGF0aW9uRW1haWxSZXNwb25zZRKTAQokQ2hlY2tBY3Rpdml0eVF1ZXN0aW9ubmFpcmVQZXJtaXNzaW9uEjQudXNlci52MS5DaGVja0FjdGl2aXR5UXVlc3Rpb25uYWlyZVBlcm1pc3Npb25SZXF1ZXN0GjUudXNlci52MS5DaGVja0FjdGl2aXR5UXVlc3Rpb25uYWlyZVBlcm1pc3Npb25SZXNwb25zZRKQAQojQ3JlYXRlT3JVcGRhdGVBY3Rpdml0eVF1ZXN0aW9ubmFpcmUSMy51c2VyLnYxLkNyZWF0ZU9yVXBkYXRlQWN0aXZpdHlRdWVzdGlvbm5haXJlUmVxdWVzdBo0LnVzZXIudjEuQ3JlYXRlT3JVcGRhdGVBY3Rpdml0eVF1ZXN0aW9ubmFpcmVSZXNwb25zZRJvChhHZXRBY3Rpdml0eVF1ZXN0aW9ubmFpcmUSKC51c2VyLnYxLkdldEFjdGl2aXR5UXVlc3Rpb25uYWlyZVJlcXVlc3QaKS51c2VyLnYxLkdldEFjdGl2aXR5UXVlc3Rpb25uYWlyZVJlc3BvbnNlEnIKGVNlbmRQaG9uZVZlcmlmaWNhdGlvbkNvZGUSKS51c2VyLnYxLlNlbmRQaG9uZVZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0GioudXNlci52MS5TZW5kUGhvbmVWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USUQoOQmluZFBob25lVHJhaXQSHi51c2VyLnYxLkJpbmRQaG9uZVRyYWl0UmVxdWVzdBofLnVzZXIudjEuQmluZFBob25lVHJhaXRSZXNwb25zZRJRCg5MaXN0UmVnaW9uQ29kZRIeLnVzZXIudjEuTGlzdFJlZ2lvbkNvZGVSZXF1ZXN0Gh8udXNlci52MS5MaXN0UmVnaW9uQ29kZVJlc3BvbnNlElwKEUluRXhwZXJpbWVudEdyb3VwEiEudXNlci52MS5JbkV4cGVyaW1lbnRHcm91cFJlcXVlc3QaIi51c2VyLnYxLkluRXhwZXJpbWVudEdyb3VwUmVzcG9uc2UiAEKQAQoLY29tLnVzZXIudjFCCVVzZXJQcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvdXNlci92MTt1c2VydjGiAgNVWFiqAgdVc2VyLlYxygIHVXNlclxWMeICE1VzZXJcVjFcR1BCTWV0YWRhdGHqAghVc2VyOjpWMWIGcHJvdG8z", [Ge, Ne, j, ki]) , xh = z(Jh, 0) , wh = x("Ch51c2VyL3YxL3VzZXJfYXV0aF9wdWJsaWMucHJvdG8SB3VzZXIudjEi5wMKC0F1dGhDb21tYW5kEhAKA3V0bRgBIAEoCUgAiAEBEhIKBXJlZmVyGAIgASgJSAGIAQESGAoLZmlyc3RfZW50cnkYAyABKAlIAogBARIgChNmaXJzdF9mcm9tX3BsYXRmb3JtGAQgASgJSAOIAQESGQoMaW5zdGFsbF9mcm9tGAUgASgJSASIAQESEwoGbG9jYWxlGAYgASgJSAWIAQESFgoJZ3BzX2FkX2lkGAcgASgJSAaIAQESEQoEaWRmYRgIIAEoCUgHiAEBEhIKBWFkX2lkGAkgASgJSAiIAQESFwoKdXRtX3NvdXJjZRgKIAEoCUgJiAEBEhkKDHV0bV9jYW1wYWlnbhgLIAEoCUgKiAEBEg8KAnR6GAwgASgJSAuIAQESFgoJdHpfb2Zmc2V0GA0gASgJSAyIAQFCBgoEX3V0bUIICgZfcmVmZXJCDgoMX2ZpcnN0X2VudHJ5QhYKFF9maXJzdF9mcm9tX3BsYXRmb3JtQg8KDV9pbnN0YWxsX2Zyb21CCQoHX2xvY2FsZUIMCgpfZ3BzX2FkX2lkQgcKBV9pZGZhQggKBl9hZF9pZEINCgtfdXRtX3NvdXJjZUIPCg1fdXRtX2NhbXBhaWduQgUKA190ekIMCgpfdHpfb2Zmc2V0IrsBChZSZWdpc3RlckJ5RW1haWxSZXF1ZXN0EjMKEGF1dGhfY29tbWFuZF9jbWQYASABKAsyFC51c2VyLnYxLkF1dGhDb21tYW5kSACIAQESDQoFZW1haWwYAiABKAkSEwoLdmVyaWZ5X2NvZGUYAyABKAkSDAoEbmFtZRgEIAEoCRIQCghwYXNzd29yZBgFIAEoCRITCgtpbnZpdGVfY29kZRgGIAEoCUITChFfYXV0aF9jb21tYW5kX2NtZCIoChdSZWdpc3RlckJ5RW1haWxSZXNwb25zZRINCgV0b2tlbhgBIAEoCSKoAQoWT2F1dGgyQXV0aG9yaXplUmVxdWVzdBIvCgxhdXRoX2NvbW1hbmQYASABKAsyFC51c2VyLnYxLkF1dGhDb21tYW5kSACIAQESFAoMcmVkaXJlY3RfdXJsGAIgASgJEhMKC2ludml0ZV9jb2RlGAMgASgJEiEKBHR5cGUYBCABKA4yEy51c2VyLnYxLk9BdXRoMlR5cGVCDwoNX2F1dGhfY29tbWFuZCIvChdPYXV0aDJBdXRob3JpemVSZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiTAoTTG9naW5CeUVtYWlsUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIUCgxjYXB0Y2hhX2NvZGUYAyABKAkiJQoUTG9naW5CeUVtYWlsUmVzcG9uc2USDQoFdG9rZW4YASABKAkibQofUmVzZXRQYXNzd29yZFdpdGhDYXB0Y2hhUmVxdWVzdBINCgVlbWFpbBgBIAEoCRITCgt2ZXJpZnlfY29kZRgCIAEoCRIQCghwYXNzd29yZBgDIAEoCRIUCgxjYXB0Y2hhX2NvZGUYBCABKAkiIgogUmVzZXRQYXNzd29yZFdpdGhDYXB0Y2hhUmVzcG9uc2UiLgodSW50ZXJuYWxHZXRVc2VyQnlFbWFpbFJlcXVlc3QSDQoFZW1haWwYASABKAkiMQoeSW50ZXJuYWxHZXRVc2VyQnlFbWFpbFJlc3BvbnNlEg8KB3VzZXJfaWQYASABKAkidgolU2VuZEVtYWlsVmVyaWZ5Q29kZVdpdGhDYXB0Y2hhUmVxdWVzdBIUCgxjYXB0Y2hhX2NvZGUYASABKAkSDQoFZW1haWwYAiABKAkSKAoGYWN0aW9uGAMgASgOMhgudXNlci52MS5TZW5kRW1haWxBY3Rpb24iSgomU2VuZEVtYWlsVmVyaWZ5Q29kZVdpdGhDYXB0Y2hhUmVzcG9uc2USIAoYcmVnaXN0ZXJlZF9wbGF0Zm9ybV9saXN0GAEgAygJIooBCh1Hb29nbGVBcHBPYXV0aENhbGxiYWNrUmVxdWVzdBIRCglnb29nbGVfaWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEi8KDGF1dGhfY29tbWFuZBgDIAEoCzIULnVzZXIudjEuQXV0aENvbW1hbmRIAIgBAUIPCg1fYXV0aF9jb21tYW5kIi8KHkdvb2dsZUFwcE9hdXRoQ2FsbGJhY2tSZXNwb25zZRINCgV0b2tlbhgBIAEoCSItChdBcHBsZVNwZWNpYWxBdXRoUmVxdWVzdBISCgpzcGVjaWFsX2lkGAEgASgJIikKGEFwcGxlU3BlY2lhbEF1dGhSZXNwb25zZRINCgV0b2tlbhgBIAEoCSKQAQoNQXBwbGVVc2VySW5mbxIpCgRuYW1lGAEgASgLMhsudXNlci52MS5BcHBsZVVzZXJJbmZvLk5hbWUSDQoFZW1haWwYAiABKAkSFgoOaWRlbnRpdHlfdG9rZW4YAyABKAkaLQoETmFtZRISCgpmaXJzdF9uYW1lGAEgASgJEhEKCWxhc3RfbmFtZRgCIAEoCSJwCh1XZWJBcHBsZU9hdXRoMkNhbGxiYWNrUmVxdWVzdBIMCgRjb2RlGAEgASgJEg0KBXN0YXRlGAIgASgJEikKBHVzZXIYAyABKAsyFi51c2VyLnYxLkFwcGxlVXNlckluZm9IAIgBAUIHCgVfdXNlciJJCh5XZWJBcHBsZU9hdXRoMkNhbGxiYWNrUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJEhEKCWp3dF90b2tlbhgCIAEoCSLKAQocSW9zQXBwbGVPYXV0aENhbGxiYWNrUmVxdWVzdBIzChBhdXRoX2NvbW1hbmRfY21kGAEgASgLMhQudXNlci52MS5BdXRoQ29tbWFuZEgAiAEBEg0KBWVtYWlsGAIgASgJEhIKCmdpdmVuX25hbWUYAyABKAkSEwoLZmFtaWx5X25hbWUYBCABKAkSFQoNYXV0aF9hcHBsZV9pZBgFIAEoCRIRCglhdXRoX2NvZGUYBiABKAlCEwoRX2F1dGhfY29tbWFuZF9jbWQiLgodSW9zQXBwbGVPYXV0aENhbGxiYWNrUmVzcG9uc2USDQoFdG9rZW4YASABKAkiJAoRU3dpdGNoVXNlclJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSIjChJTd2l0Y2hVc2VyUmVzcG9uc2USDQoFdG9rZW4YASABKAkiKwoaRXhjaGFuZ2VUb2tlbkJ5Q29kZVJlcXVlc3QSDQoFdG9rZW4YASABKAkiHQobRXhjaGFuZ2VUb2tlbkJ5Q29kZVJlc3BvbnNlKlsKCk9BdXRoMlR5cGUSHAoYT19BVVRIMl9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTT19BVVRIMl9UWVBFX0dPT0dMRRABEhYKEk9fQVVUSDJfVFlQRV9BUFBMRRACMuwHChVVc2VyQXV0aFB1YmxpY1NlcnZpY2USVAoPUmVnaXN0ZXJCeUVtYWlsEh8udXNlci52MS5SZWdpc3RlckJ5RW1haWxSZXF1ZXN0GiAudXNlci52MS5SZWdpc3RlckJ5RW1haWxSZXNwb25zZRJUCg9PYXV0aDJBdXRob3JpemUSHy51c2VyLnYxLk9hdXRoMkF1dGhvcml6ZVJlcXVlc3QaIC51c2VyLnYxLk9hdXRoMkF1dGhvcml6ZVJlc3BvbnNlEksKDExvZ2luQnlFbWFpbBIcLnVzZXIudjEuTG9naW5CeUVtYWlsUmVxdWVzdBodLnVzZXIudjEuTG9naW5CeUVtYWlsUmVzcG9uc2USbwoYUmVzZXRQYXNzd29yZFdpdGhDYXB0Y2hhEigudXNlci52MS5SZXNldFBhc3N3b3JkV2l0aENhcHRjaGFSZXF1ZXN0GikudXNlci52MS5SZXNldFBhc3N3b3JkV2l0aENhcHRjaGFSZXNwb25zZRKBAQoeU2VuZEVtYWlsVmVyaWZ5Q29kZVdpdGhDYXB0Y2hhEi4udXNlci52MS5TZW5kRW1haWxWZXJpZnlDb2RlV2l0aENhcHRjaGFSZXF1ZXN0Gi8udXNlci52MS5TZW5kRW1haWxWZXJpZnlDb2RlV2l0aENhcHRjaGFSZXNwb25zZRJpChZHb29nbGVBcHBPYXV0aENhbGxiYWNrEiYudXNlci52MS5Hb29nbGVBcHBPYXV0aENhbGxiYWNrUmVxdWVzdBonLnVzZXIudjEuR29vZ2xlQXBwT2F1dGhDYWxsYmFja1Jlc3BvbnNlEmkKFldlYkFwcGxlT2F1dGgyQ2FsbGJhY2sSJi51c2VyLnYxLldlYkFwcGxlT2F1dGgyQ2FsbGJhY2tSZXF1ZXN0GicudXNlci52MS5XZWJBcHBsZU9hdXRoMkNhbGxiYWNrUmVzcG9uc2USZgoVSW9zQXBwbGVPYXV0aENhbGxiYWNrEiUudXNlci52MS5Jb3NBcHBsZU9hdXRoQ2FsbGJhY2tSZXF1ZXN0GiYudXNlci52MS5Jb3NBcHBsZU9hdXRoQ2FsbGJhY2tSZXNwb25zZRJFCgpTd2l0Y2hVc2VyEhoudXNlci52MS5Td2l0Y2hVc2VyUmVxdWVzdBobLnVzZXIudjEuU3dpdGNoVXNlclJlc3BvbnNlEmAKE0V4Y2hhbmdlVG9rZW5CeUNvZGUSIy51c2VyLnYxLkV4Y2hhbmdlVG9rZW5CeUNvZGVSZXF1ZXN0GiQudXNlci52MS5FeGNoYW5nZVRva2VuQnlDb2RlUmVzcG9uc2VCmgEKC2NvbS51c2VyLnYxQhNVc2VyQXV0aFB1YmxpY1Byb3RvUAFaOWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC91c2VyL3YxO3VzZXJ2MaICA1VYWKoCB1VzZXIuVjHKAgdVc2VyXFYx4gITVXNlclxWMVxHUEJNZXRhZGF0YeoCCFVzZXI6OlYxYgZwcm90bzM", [Ea]) , kh = z(wh, 0) , zh = x("CidkYXNoYm9hcmRfdG9vbHMvdjEvZGFzaGJvYXJkX3Rvb2wucHJvdG8SEmRhc2hib2FyZF90b29scy52MSKSAQoiQ3JlYXRlT3JVcGRhdGVUcmFuc2xhdGVUYXNrUmVxdWVzdBIUCgd0YXNrX2lkGAEgASgDSACIAQESDgoGbW9kdWxlGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0QgoKCF90YXNrX2lkIiUKI0NyZWF0ZU9yVXBkYXRlVHJhbnNsYXRlVGFza1Jlc3BvbnNlIl8KFFRyYW5zbGF0ZVRhc2tSZXF1ZXN0EhQKB3Rhc2tfaWQYASABKANIAIgBARIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIKCghfdGFza19pZCI+ChVUcmFuc2xhdGVUYXNrUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiYQoZTGlzdFRyYW5zbGF0ZVRhc2tzUmVxdWVzdBIPCgdtb2R1bGVzGAEgAygJEhUKBHBhZ2UYAiABKAVCB7pIBBoCKAESHAoJcGFnZV9zaXplGAMgASgFQgm6SAYaBBhkKAEizAEKDVRyYW5zbGF0ZVRhc2sSDwoHdGFza19pZBgBIAEoAxIOCgZtb2R1bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiXQoaTGlzdFRyYW5zbGF0ZVRhc2tzUmVzcG9uc2USMAoFdGFza3MYASADKAsyIS5kYXNoYm9hcmRfdG9vbHMudjEuVHJhbnNsYXRlVGFzaxINCgV0b3RhbBgCIAEoAyI7ChdHZXRUcmFuc2xhdGVUYXNrUmVxdWVzdBIUCgd0YXNrX2lkGAEgASgDSACIAQFCCgoIX3Rhc2tfaWQiSwoYR2V0VHJhbnNsYXRlVGFza1Jlc3BvbnNlEi8KBHRhc2sYASABKAsyIS5kYXNoYm9hcmRfdG9vbHMudjEuVHJhbnNsYXRlVGFzayItChpEZWxldGVUcmFuc2xhdGVUYXNrUmVxdWVzdBIPCgd0YXNrX2lkGAEgASgDIh0KG0RlbGV0ZVRyYW5zbGF0ZVRhc2tSZXNwb25zZTLzBAoURGFzaGJvYXJkVG9vbFNlcnZpY2USkAEKG0NyZWF0ZU9yVXBkYXRlVHJhbnNsYXRlVGFzaxI2LmRhc2hib2FyZF90b29scy52MS5DcmVhdGVPclVwZGF0ZVRyYW5zbGF0ZVRhc2tSZXF1ZXN0GjcuZGFzaGJvYXJkX3Rvb2xzLnYxLkNyZWF0ZU9yVXBkYXRlVHJhbnNsYXRlVGFza1Jlc3BvbnNlIgASZgoNVHJhbnNsYXRlVGFzaxIoLmRhc2hib2FyZF90b29scy52MS5UcmFuc2xhdGVUYXNrUmVxdWVzdBopLmRhc2hib2FyZF90b29scy52MS5UcmFuc2xhdGVUYXNrUmVzcG9uc2UiABJ1ChJMaXN0VHJhbnNsYXRlVGFza3MSLS5kYXNoYm9hcmRfdG9vbHMudjEuTGlzdFRyYW5zbGF0ZVRhc2tzUmVxdWVzdBouLmRhc2hib2FyZF90b29scy52MS5MaXN0VHJhbnNsYXRlVGFza3NSZXNwb25zZSIAEm8KEEdldFRyYW5zbGF0ZVRhc2sSKy5kYXNoYm9hcmRfdG9vbHMudjEuR2V0VHJhbnNsYXRlVGFza1JlcXVlc3QaLC5kYXNoYm9hcmRfdG9vbHMudjEuR2V0VHJhbnNsYXRlVGFza1Jlc3BvbnNlIgASeAoTRGVsZXRlVHJhbnNsYXRlVGFzaxIuLmRhc2hib2FyZF90b29scy52MS5EZWxldGVUcmFuc2xhdGVUYXNrUmVxdWVzdBovLmRhc2hib2FyZF90b29scy52MS5EZWxldGVUcmFuc2xhdGVUYXNrUmVzcG9uc2UiAELiAQoWY29tLmRhc2hib2FyZF90b29scy52MUISRGFzaGJvYXJkVG9vbFByb3RvUAFaT2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9kYXNoYm9hcmRfdG9vbHMvdjE7ZGFzaGJvYXJkX3Rvb2xzdjGiAgNEWFiqAhFEYXNoYm9hcmRUb29scy5WMcoCEURhc2hib2FyZFRvb2xzXFYx4gIdRGFzaGJvYXJkVG9vbHNcVjFcR1BCTWV0YWRhdGHqAhJEYXNoYm9hcmRUb29sczo6VjFiBnByb3RvMw", [Ne, j, Ge]) , Qh = z(zh, 0) , zi = x("Ch10ZWFtL3YxL3RlYW1fbWFuYWdlbWVudC5wcm90bxIHdGVhbS52MSI8CgZBdmF0YXISEQoJZmlsZV9uYW1lGAEgASgJEhEKCW1pbWVfdHlwZRgCIAEoCRIMCgRkYXRhGAMgASgJIqsBChFDcmVhdGVUZWFtUmVxdWVzdBIMCgRuYW1lGAEgASgJEg0KBXNlYXRzGAIgASgFEh8KBmF2YXRhchgDIAEoCzIPLnRlYW0udjEuQXZhdGFyEhYKDmF1dG9fZGVkdWN0aW9uGAQgASgIEh8KF3NpbmdsZV9kZWR1Y3Rpb25fYW1vdW50GAUgASgFEh8KF21vbnRobHlfZGVkdWN0aW9uX2xpbWl0GAYgASgFInYKEkNyZWF0ZVRlYW1SZXNwb25zZRIQCgh0ZWFtX3VpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEgwKBG5hbWUYAyABKAkSDgoGYXZhdGFyGAQgASgJEh8KBHN0ZXAYBSABKA4yES50ZWFtLnYxLlRlYW1TdGVwIkYKFVVwZGF0ZVRlYW1JbmZvUmVxdWVzdBIMCgRuYW1lGAEgASgJEh8KBmF2YXRhchgCIAEoCzIPLnRlYW0udjEuQXZhdGFyInMKFlVwZGF0ZVRlYW1JbmZvUmVzcG9uc2USEAoIdGVhbV91aWQYASABKAkSEQoJdGVhbV9uYW1lGAIgASgJEhMKC3RlYW1fYXZhdGFyGAMgASgJEh8KBHN0ZXAYBCABKA4yES50ZWFtLnYxLlRlYW1TdGVwIkIKCkludml0ZVVzZXISDQoFZW1haWwYASABKAkSJQoEcm9sZRgCIAEoDjIXLnRlYW0udjEuVGVhbU1lbWJlclJvbGUiUgoWQmF0Y2hJbnZpdGVVc2VyUmVxdWVzdBIUCgxpc19yZV9pbnZpdGUYASABKAgSIgoFdXNlcnMYAiADKAsyEy50ZWFtLnYxLkludml0ZVVzZXIiGQoXQmF0Y2hJbnZpdGVVc2VyUmVzcG9uc2UiKQoSRGlzbWlzc1RlYW1SZXF1ZXN0EhMKC3ZlcmlmeV9jb2RlGAEgASgJIiYKE0Rpc21pc3NUZWFtUmVzcG9uc2USDwoHdXNlcl9pZBgBIAEoCSIkChNUcmFuc2ZlclRlYW1SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIhYKFFRyYW5zZmVyVGVhbVJlc3BvbnNlIkEKGEJhdGNoUmVtb3ZlTWVtYmVyUmVxdWVzdBIVCg10ZWFtX3VzZXJfaWRzGAEgAygJEg4KBmVtYWlscxgCIAMoCSIbChlCYXRjaFJlbW92ZU1lbWJlclJlc3BvbnNlIlYKF1VwZGF0ZU1lbWJlclJvbGVSZXF1ZXN0EhQKDHRlYW1fdXNlcl9pZBgBIAEoCRIlCgRyb2xlGAIgASgOMhcudGVhbS52MS5UZWFtTWVtYmVyUm9sZSIaChhVcGRhdGVNZW1iZXJSb2xlUmVzcG9uc2UiOAoVVXBkYXRlVGVhbVN0ZXBSZXF1ZXN0Eh8KBHN0ZXAYASABKA4yES50ZWFtLnYxLlRlYW1TdGVwIhgKFlVwZGF0ZVRlYW1TdGVwUmVzcG9uc2UiTwoXVXBkYXRlSW52aXRlUm9sZVJlcXVlc3QSDQoFZW1haWwYASABKAkSJQoEcm9sZRgCIAEoDjIXLnRlYW0udjEuVGVhbU1lbWJlclJvbGUiGgoYVXBkYXRlSW52aXRlUm9sZVJlc3BvbnNlIn0KIVVwZGF0ZVRlYW1EZWR1Y3Rpb25TZXR0aW5nUmVxdWVzdBIWCg5hdXRvX2RlZHVjdGlvbhgBIAEoCBIfChdzaW5nbGVfZGVkdWN0aW9uX2Ftb3VudBgCIAEoBRIfChdtb250aGx5X2RlZHVjdGlvbl9saW1pdBgDIAEoBSIkCiJVcGRhdGVUZWFtRGVkdWN0aW9uU2V0dGluZ1Jlc3BvbnNlKk4KCFRlYW1UeXBlEhkKFVRFQU1fVFlQRV9VTlNQRUNJRklFRBAAEhQKEFRFQU1fVFlQRV9OT1JNQUwQARIRCg1URUFNX1RZUEVfRURVEAIqiQEKCFRlYW1TdGVwEhkKFVRFQU1fU1RFUF9VTlNQRUNJRklFRBAAEh4KGlRFQU1fU1RFUF9DSE9PU0VfU1VCU0NSSUJFEAESGQoVVEVBTV9TVEVQX1VQREFURV9JTkZPEAISEQoNVEVBTV9TVEVQX1BBWRADEhQKEFRFQU1fU1RFUF9GSU5JU0gQBCqHAQoOVGVhbU1lbWJlclJvbGUSIAocVEVBTV9NRU1CRVJfUk9MRV9VTlNQRUNJRklFRBAAEhoKFlRFQU1fTUVNQkVSX1JPTEVfT1dORVIQARIaChZURUFNX01FTUJFUl9ST0xFX0FETUlOEAISGwoXVEVBTV9NRU1CRVJfUk9MRV9NRU1CRVIQAzL2BgoVVGVhbU1hbmFnZW1lbnRTZXJ2aWNlEkUKCkNyZWF0ZVRlYW0SGi50ZWFtLnYxLkNyZWF0ZVRlYW1SZXF1ZXN0GhsudGVhbS52MS5DcmVhdGVUZWFtUmVzcG9uc2USUQoOVXBkYXRlVGVhbUluZm8SHi50ZWFtLnYxLlVwZGF0ZVRlYW1JbmZvUmVxdWVzdBofLnRlYW0udjEuVXBkYXRlVGVhbUluZm9SZXNwb25zZRJUCg9CYXRjaEludml0ZVVzZXISHy50ZWFtLnYxLkJhdGNoSW52aXRlVXNlclJlcXVlc3QaIC50ZWFtLnYxLkJhdGNoSW52aXRlVXNlclJlc3BvbnNlEkgKC0Rpc21pc3NUZWFtEhsudGVhbS52MS5EaXNtaXNzVGVhbVJlcXVlc3QaHC50ZWFtLnYxLkRpc21pc3NUZWFtUmVzcG9uc2USSwoMVHJhbnNmZXJUZWFtEhwudGVhbS52MS5UcmFuc2ZlclRlYW1SZXF1ZXN0Gh0udGVhbS52MS5UcmFuc2ZlclRlYW1SZXNwb25zZRJaChFCYXRjaFJlbW92ZU1lbWJlchIhLnRlYW0udjEuQmF0Y2hSZW1vdmVNZW1iZXJSZXF1ZXN0GiIudGVhbS52MS5CYXRjaFJlbW92ZU1lbWJlclJlc3BvbnNlElcKEFVwZGF0ZU1lbWJlclJvbGUSIC50ZWFtLnYxLlVwZGF0ZU1lbWJlclJvbGVSZXF1ZXN0GiEudGVhbS52MS5VcGRhdGVNZW1iZXJSb2xlUmVzcG9uc2USUQoOVXBkYXRlVGVhbVN0ZXASHi50ZWFtLnYxLlVwZGF0ZVRlYW1TdGVwUmVxdWVzdBofLnRlYW0udjEuVXBkYXRlVGVhbVN0ZXBSZXNwb25zZRJXChBVcGRhdGVJbnZpdGVSb2xlEiAudGVhbS52MS5VcGRhdGVJbnZpdGVSb2xlUmVxdWVzdBohLnRlYW0udjEuVXBkYXRlSW52aXRlUm9sZVJlc3BvbnNlEnUKGlVwZGF0ZVRlYW1EZWR1Y3Rpb25TZXR0aW5nEioudGVhbS52MS5VcGRhdGVUZWFtRGVkdWN0aW9uU2V0dGluZ1JlcXVlc3QaKy50ZWFtLnYxLlVwZGF0ZVRlYW1EZWR1Y3Rpb25TZXR0aW5nUmVzcG9uc2VCmgEKC2NvbS50ZWFtLnYxQhNUZWFtTWFuYWdlbWVudFByb3RvUAFaOWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC90ZWFtL3YxO3RlYW12MaICA1RYWKoCB1RlYW0uVjHKAgdUZWFtXFYx4gITVGVhbVxWMVxHUEJNZXRhZGF0YeoCCFRlYW06OlYxYgZwcm90bzM") , Kh = z(zi, 0) , Lh = x("ChJ0ZWFtL3YxL3RlYW0ucHJvdG8SB3RlYW0udjEiUQoYTGlzdFRlYW1JbnZvaWNlc1Jlc3BvbnNlEiYKCGludm9pY2VzGAEgAygLMhQudGVhbS52MS5UZWFtSW52b2ljZRINCgV0b3RhbBgCIAEoBSKDAQoLVGVhbUludm9pY2USEgoKaW52b2ljZV9pZBgBIAEoCRIOCgZhbW91bnQYAiABKAMSEQoJcHVyY2hhc2VyGAMgASgJEhMKC2ludm9pY2VfdXJsGAQgASgJEigKBGRhdGUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjoKF0xpc3RUZWFtSW52b2ljZXNSZXF1ZXN0EgwKBHBhZ2UYASABKAUSEQoJcGFnZV9zaXplGAIgASgFIjIKD0xpc3RUZWFtUmVxdWVzdBIMCgRwYWdlGAEgASgFEhEKCXBhZ2Vfc2l6ZRgCIAEoBSK0AQoEVGVhbRIQCgh0ZWFtX3VpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBmF2YXRhchgDIAEoCRIPCgd1c2VyX2lkGAQgASgJEiMKBnN0YXR1cxgFIAEoDjITLnRlYW0udjEuVGVhbVN0YXR1cxIlCgRyb2xlGAYgASgOMhcudGVhbS52MS5UZWFtTWVtYmVyUm9sZRIfCgR0eXBlGAcgASgOMhEudGVhbS52MS5UZWFtVHlwZSJ+ChBMaXN0VGVhbVJlc3BvbnNlEhwKBXRlYW1zGAEgAygLMg0udGVhbS52MS5UZWFtEhMKC3RvdGFsX2NvdW50GAIgASgFEg8KB3VzZXJfaWQYAyABKAkSEQoJdXNlcl9uYW1lGAQgASgJEhMKC3VzZXJfYXZhdGFyGAUgASgJIioKD0pvaW5UZWFtUmVxdWVzdBIXCg9pbnZpdGF0aW9uX2NvZGUYASABKAkidAoQSm9pblRlYW1SZXNwb25zZRIPCgd1c2VyX2lkGAEgASgJEhAKCHRlYW1fdWlkGAIgASgJEgwKBG5hbWUYAyABKAkSDgoGYXZhdGFyGAQgASgJEh8KBHR5cGUYBSABKA4yES50ZWFtLnYxLlRlYW1UeXBlIhEKD0V4aXRUZWFtUmVxdWVzdCISChBFeGl0VGVhbVJlc3BvbnNlIiYKEkdldFRlYW1JbmZvUmVxdWVzdBIQCgh0ZWFtX3VpZBgBIAEoCSLLAwoTR2V0VGVhbUluZm9SZXNwb25zZRIQCgh0ZWFtX3VpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBmF2YXRhchgDIAEoCRINCgVzZWF0cxgEIAEoBRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5hdXRvX2RlZHVjdGlvbhgGIAEoCBIfChdzaW5nbGVfZGVkdWN0aW9uX2Ftb3VudBgHIAEoBRIfChdtb250aGx5X2RlZHVjdGlvbl9saW1pdBgIIAEoBRIfCgRzdGVwGAkgASgOMhEudGVhbS52MS5UZWFtU3RlcBIlCgRyb2xlGAogASgOMhcudGVhbS52MS5UZWFtTWVtYmVyUm9sZRIUCgxtZW1iZXJfY291bnQYCyABKAUSEwoLdmlwX3ZlcnNpb24YDCABKAkSGgoSY3VycmVudF9wZXJpb2RfZW5kGA0gASgDEhEKCWlzX3llYXJseRgOIAEoCBIUCgx0ZWFtX3VzZXJfaWQYDyABKAkSEgoKbmV4dF9zZWF0cxgQIAEoBRIfCgR0eXBlGBEgASgOMhEudGVhbS52MS5UZWFtVHlwZSLAAQoZTGlzdFRlYW1DcmVkaXRzTG9nUmVxdWVzdBIzCgpzdGFydF9kYXRlGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjEKCGVuZF9kYXRlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEgwKBHBhZ2UYAyABKAUSEQoJcGFnZV9zaXplGAQgASgFQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZSJRChpMaXN0VGVhbUNyZWRpdHNMb2dSZXNwb25zZRIkCgRsb2dzGAEgAygLMhYudGVhbS52MS5UZWFtQ3JlZGl0TG9nEg0KBXRvdGFsGAIgASgFIogBCg1UZWFtQ3JlZGl0TG9nEg8KB3VzZXJfaWQYASABKAkSEQoJdXNlcl9uYW1lGAIgASgJEhMKC3VzZXJfYXZhdGFyGAMgASgJEg8KB2NyZWRpdHMYBCABKAUSLQoJY3JlYXRlX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKlAQofTGlzdFRlYW1DcmVkaXRzU3RhdGlzdGljUmVxdWVzdBIzCgpzdGFydF9kYXRlGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjEKCGVuZF9kYXRlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZSJaCiBMaXN0VGVhbUNyZWRpdHNTdGF0aXN0aWNSZXNwb25zZRI2CglzdGF0aXN0aWMYASADKAsyIy50ZWFtLnYxLlRlYW1TZXNzaW9uQ3JlZGl0U3RhdGlzdGljIlcKGlRlYW1TZXNzaW9uQ3JlZGl0U3RhdGlzdGljEigKBGRhdGUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB2NyZWRpdHMYAiABKAUiigEKFUxpc3RUZWFtTWVtYmVyUmVxdWVzdBIMCgRwYWdlGAEgASgFEhEKCXBhZ2Vfc2l6ZRgCIAEoBRIXCgpzZWFyY2hfa2V5GAMgASgJSACIAQESKAoLZmlsdGVyX3R5cGUYBCABKA4yEy50ZWFtLnYxLkZpbHRlclR5cGVCDQoLX3NlYXJjaF9rZXkimwEKClRlYW1NZW1iZXISEAoIdXNlcl91aWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVlbWFpbBgDIAEoCRIOCgZhdmF0YXIYBCABKAkSJwoGc3RhdHVzGAUgASgOMhcudGVhbS52MS5UZWFtVXNlclN0YXR1cxIlCgRyb2xlGAYgASgOMhcudGVhbS52MS5UZWFtTWVtYmVyUm9sZSJTChZMaXN0VGVhbU1lbWJlclJlc3BvbnNlEiQKB21lbWJlcnMYASADKAsyEy50ZWFtLnYxLlRlYW1NZW1iZXISEwoLdG90YWxfY291bnQYAiABKAUqngEKClRlYW1TdGF0dXMSGwoXVEVBTV9TVEFUVVNfVU5TUEVDSUZJRUQQABIXChNURUFNX1NUQVRVU19BQ1RJVkVEEAESFwoTVEVBTV9TVEFUVVNfRVhQSVJFRBACEhwKGFRFQU1fU1RBVFVTX05PX1NVQlNDUklCRRADEiMKH1RFQU1fU1RBVFVTX1NVQlNDUklCRV9DQU5DRUxMRUQQBCpbCgpGaWx0ZXJUeXBlEhsKF0ZJTFRFUl9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTRklMVEVSX1RZUEVfQUxMVVNFUhABEhcKE0ZJTFRFUl9UWVBFX1BFTkRJTkcQAiqpAQoOVGVhbVVzZXJTdGF0dXMSIAocVEVBTV9VU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhwKGFRFQU1fVVNFUl9TVEFUVVNfUEVORElORxABEh0KGVRFQU1fVVNFUl9TVEFUVVNfQUNDRVBURUQQAhIbChdURUFNX1VTRVJfU1RBVFVTX0VYSVRFRBADEhsKF1RFQU1fVVNFUl9TVEFUVVNfS0lDS0VEEAQylgUKC1RlYW1TZXJ2aWNlEj8KCExpc3RUZWFtEhgudGVhbS52MS5MaXN0VGVhbVJlcXVlc3QaGS50ZWFtLnYxLkxpc3RUZWFtUmVzcG9uc2USPwoISm9pblRlYW0SGC50ZWFtLnYxLkpvaW5UZWFtUmVxdWVzdBoZLnRlYW0udjEuSm9pblRlYW1SZXNwb25zZRI/CghFeGl0VGVhbRIYLnRlYW0udjEuRXhpdFRlYW1SZXF1ZXN0GhkudGVhbS52MS5FeGl0VGVhbVJlc3BvbnNlEkgKC0dldFRlYW1JbmZvEhsudGVhbS52MS5HZXRUZWFtSW5mb1JlcXVlc3QaHC50ZWFtLnYxLkdldFRlYW1JbmZvUmVzcG9uc2USUQoOTGlzdFRlYW1NZW1iZXISHi50ZWFtLnYxLkxpc3RUZWFtTWVtYmVyUmVxdWVzdBofLnRlYW0udjEuTGlzdFRlYW1NZW1iZXJSZXNwb25zZRJdChJMaXN0VGVhbUNyZWRpdHNMb2cSIi50ZWFtLnYxLkxpc3RUZWFtQ3JlZGl0c0xvZ1JlcXVlc3QaIy50ZWFtLnYxLkxpc3RUZWFtQ3JlZGl0c0xvZ1Jlc3BvbnNlEm8KGExpc3RUZWFtQ3JlZGl0c1N0YXRpc3RpYxIoLnRlYW0udjEuTGlzdFRlYW1DcmVkaXRzU3RhdGlzdGljUmVxdWVzdBopLnRlYW0udjEuTGlzdFRlYW1DcmVkaXRzU3RhdGlzdGljUmVzcG9uc2USVwoQTGlzdFRlYW1JbnZvaWNlcxIgLnRlYW0udjEuTGlzdFRlYW1JbnZvaWNlc1JlcXVlc3QaIS50ZWFtLnYxLkxpc3RUZWFtSW52b2ljZXNSZXNwb25zZUKQAQoLY29tLnRlYW0udjFCCVRlYW1Qcm90b1ABWjlnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvdGVhbS92MTt0ZWFtdjGiAgNUWFiqAgdUZWFtLlYxygIHVGVhbVxWMeICE1RlYW1cVjFcR1BCTWV0YWRhdGHqAghUZWFtOjpWMWIGcHJvdG8z", [j, zi]) , Mh = z(Lh, 0) , Th = x("Chx0ZWFtL3YxL2VkdV90ZWFtX2FkbWluLnByb3RvEgd0ZWFtLnYxImEKFENyZWF0ZUVkdVRlYW1SZXF1ZXN0EgwKBG5hbWUYASABKAkSDgoGYXZhdGFyGAIgASgJEhQKDGVtYWlsX3N1ZmZpeBgDIAMoCRIVCg1zZXNzaW9uX2xpbWl0GAQgASgFIhcKFUNyZWF0ZUVkdVRlYW1SZXNwb25zZSJrChhVcGRhdGVFZHVUZWFtSW5mb1JlcXVlc3QSCwoDdWlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGYXZhdGFyGAMgASgJEg0KBXNlYXRzGAQgASgFEhUKDXNlc3Npb25fbGltaXQYBSABKAUiGwoZVXBkYXRlRWR1VGVhbUluZm9SZXNwb25zZSKYAQoTTGlzdEVkdVRlYW1zUmVxdWVzdBIQCgN1aWQYASABKAlIAIgBARIRCgRuYW1lGAIgASgJSAGIAQESGQoMZW1haWxfc3VmZml4GAMgASgJSAKIAQESDAoEcGFnZRgEIAEoBRIRCglwYWdlX3NpemUYBSABKAVCBgoEX3VpZEIHCgVfbmFtZUIPCg1fZW1haWxfc3VmZml4Iq8BCgdFZHVUZWFtEgsKA3VpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBmF2YXRhchgDIAEoCRIUCgxlbWFpbF9zdWZmaXgYBCADKAkSFQoNc2Vzc2lvbl9saW1pdBgFIAEoBRIcChRjdXJyZW50X21lbWJlcl9jb3VudBgGIAEoBRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJGChRMaXN0RWR1VGVhbXNSZXNwb25zZRIfCgV0ZWFtcxgBIAMoCzIQLnRlYW0udjEuRWR1VGVhbRINCgV0b3RhbBgCIAEoBSKIAQoZTGlzdEVkdVRlYW1NZW1iZXJzUmVxdWVzdBIQCgh0ZWFtX3VpZBgBIAEoCRISCgVlbWFpbBgCIAEoCUgAiAEBEhEKBG5hbWUYAyABKAlIAYgBARIMCgRwYWdlGAQgASgFEhEKCXBhZ2Vfc2l6ZRgFIAEoBUIICgZfZW1haWxCBwoFX25hbWUigQEKDUVkdVRlYW1NZW1iZXISDwoHdXNlcl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWVtYWlsGAMgASgJEhIKCnZpcF9zdGF0dXMYBCABKAkSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiVAoaTGlzdEVkdVRlYW1NZW1iZXJzUmVzcG9uc2USJwoHbWVtYmVycxgBIAMoCzIWLnRlYW0udjEuRWR1VGVhbU1lbWJlchINCgV0b3RhbBgCIAEoBSIvChtHZXRFZHVUZWFtU3RhdGlzdGljc1JlcXVlc3QSEAoIdGVhbV91aWQYASABKAkigwEKHEdldEVkdVRlYW1TdGF0aXN0aWNzUmVzcG9uc2USHAoUY3VycmVudF9tZW1iZXJfY291bnQYASABKAUSFQoNc2Vzc2lvbl9jb3VudBgCIAEoBRIWCg5yZXNvdXJjZV91c2FnZRgDIAEoBRIWCg5yZXNvdXJjZV9xdW90YRgEIAEoBSJ3ChpMaXN0RWR1VGVhbVNlc3Npb25zUmVxdWVzdBIQCgh0ZWFtX3VpZBgBIAEoCRIXCgpzZXNzaW9uX2lkGAIgASgJSACIAQESDAoEcGFnZRgDIAEoBRIRCglwYWdlX3NpemUYBCABKAVCDQoLX3Nlc3Npb25faWQihwEKDkVkdVRlYW1TZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAkSDQoFdGl0bGUYAiABKAkSEgoKY3JlYXRlcl9pZBgDIAEoCRIWCg5jb25zdW1lX3BvaW50cxgEIAEoBRIRCglpc19zaGFyZWQYBSABKAgSEwoLY3JlYXRlX3RpbWUYBiABKAMiVwobTGlzdEVkdVRlYW1TZXNzaW9uc1Jlc3BvbnNlEikKCHNlc3Npb25zGAEgAygLMhcudGVhbS52MS5FZHVUZWFtU2Vzc2lvbhINCgV0b3RhbBgCIAEoBSIoChREZWxldGVFZHVUZWFtUmVxdWVzdBIQCgh0ZWFtX3VpZBgBIAEoCSIXChVEZWxldGVFZHVUZWFtUmVzcG9uc2UyhAUKE0VkdVRlYW1BZG1pblNlcnZpY2USTgoNQ3JlYXRlRWR1VGVhbRIdLnRlYW0udjEuQ3JlYXRlRWR1VGVhbVJlcXVlc3QaHi50ZWFtLnYxLkNyZWF0ZUVkdVRlYW1SZXNwb25zZRJaChFVcGRhdGVFZHVUZWFtSW5mbxIhLnRlYW0udjEuVXBkYXRlRWR1VGVhbUluZm9SZXF1ZXN0GiIudGVhbS52MS5VcGRhdGVFZHVUZWFtSW5mb1Jlc3BvbnNlEksKDExpc3RFZHVUZWFtcxIcLnRlYW0udjEuTGlzdEVkdVRlYW1zUmVxdWVzdBodLnRlYW0udjEuTGlzdEVkdVRlYW1zUmVzcG9uc2USXQoSTGlzdEVkdVRlYW1NZW1iZXJzEiIudGVhbS52MS5MaXN0RWR1VGVhbU1lbWJlcnNSZXF1ZXN0GiMudGVhbS52MS5MaXN0RWR1VGVhbU1lbWJlcnNSZXNwb25zZRJjChRHZXRFZHVUZWFtU3RhdGlzdGljcxIkLnRlYW0udjEuR2V0RWR1VGVhbVN0YXRpc3RpY3NSZXF1ZXN0GiUudGVhbS52MS5HZXRFZHVUZWFtU3RhdGlzdGljc1Jlc3BvbnNlEmAKE0xpc3RFZHVUZWFtU2Vzc2lvbnMSIy50ZWFtLnYxLkxpc3RFZHVUZWFtU2Vzc2lvbnNSZXF1ZXN0GiQudGVhbS52MS5MaXN0RWR1VGVhbVNlc3Npb25zUmVzcG9uc2USTgoNRGVsZXRlRWR1VGVhbRIdLnRlYW0udjEuRGVsZXRlRWR1VGVhbVJlcXVlc3QaHi50ZWFtLnYxLkRlbGV0ZUVkdVRlYW1SZXNwb25zZUKYAQoLY29tLnRlYW0udjFCEUVkdVRlYW1BZG1pblByb3RvUAFaOWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC90ZWFtL3YxO3RlYW12MaICA1RYWKoCB1RlYW0uVjHKAgdUZWFtXFYx4gITVGVhbVxWMVxHUEJNZXRhZGF0YeoCCFRlYW06OlYxYgZwcm90bzM", [j]) , Hh = z(Th, 0) , Dh = x("Chl0ZWFtL3YxL3RlYW1fcHVibGljLnByb3RvEgd0ZWFtLnYxIjcKHEdldFRlYW1JbnZpdGF0aW9uSW5mb1JlcXVlc3QSFwoPaW52aXRhdGlvbl9jb2RlGAEgASgJIqUBCh1HZXRUZWFtSW52aXRhdGlvbkluZm9SZXNwb25zZRIUCgxpbnZpdGVyX25hbWUYASABKAkSFgoOaW52aXRlcl9hdmF0YXIYAiABKAkSEQoJdGVhbV9uYW1lGAMgASgJEhMKC3RlYW1fYXZhdGFyGAQgASgJEg0KBWVtYWlsGAUgASgJEh8KBHR5cGUYBiABKA4yES50ZWFtLnYxLlRlYW1UeXBlMnsKEVRlYW1QdWJsaWNTZXJ2aWNlEmYKFUdldFRlYW1JbnZpdGF0aW9uSW5mbxIlLnRlYW0udjEuR2V0VGVhbUludml0YXRpb25JbmZvUmVxdWVzdBomLnRlYW0udjEuR2V0VGVhbUludml0YXRpb25JbmZvUmVzcG9uc2VClgEKC2NvbS50ZWFtLnYxQg9UZWFtUHVibGljUHJvdG9QAVo5Z2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L3RlYW0vdjE7dGVhbXYxogIDVFhYqgIHVGVhbS5WMcoCB1RlYW1cVjHiAhNUZWFtXFYxXEdQQk1ldGFkYXRh6gIIVGVhbTo6VjFiBnByb3RvMw", [zi]) , jh = z(Dh, 0) , ya = x("Chxrbm93bGVkZ2UvdjEva25vd2xlZGdlLnByb3RvEgxrbm93bGVkZ2UudjEi9gIKCUtub3dsZWRnZRILCgN1aWQYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdjb250ZW50GAMgASgJEg8KB3RyaWdnZXIYBCABKAkSDwoHZW5hYmxlZBgFIAEoCBITCgtzZXNzaW9uX3VpZBgGIAEoCRIZChFzZXNzaW9uX2V2ZW50X3VpZBgHIAEoCRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgRraW5kGAogASgOMhsua25vd2xlZGdlLnYxLktub3dsZWRnZUtpbmQSEAoIc2hvcnRfaWQYCyABKAkSNAoKdXNhZ2VfdHlwZRgMIAEoDjIgLmtub3dsZWRnZS52MS5Lbm93bGVkZ2VVc2FnZVR5cGUSGAoQdW5pcXVlX2luY19pbmRleBgNIAEoAyLTAwoOS25vd2xlZGdlRXZlbnQSCwoDdWlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHY29udGVudBgDIAEoCRIPCgd0cmlnZ2VyGAQgASgJEjIKBnN0YXR1cxgFIAEoDjIiLmtub3dsZWRnZS52MS5Lbm93bGVkZ2VFdmVudFN0YXR1cxITCgtzZXNzaW9uX3VpZBgGIAEoCRIZChFzZXNzaW9uX2V2ZW50X3VpZBgHIAEoCRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgRraW5kGAogASgOMiAua25vd2xlZGdlLnYxLktub3dsZWRnZUV2ZW50S2luZBIfChJrbm93bGVkZ2Vfc2hvcnRfaWQYCyABKAlIAIgBARIVCghzaG9ydF9pZBgMIAEoCUgBiAEBEjQKCnVzYWdlX3R5cGUYDSABKA4yIC5rbm93bGVkZ2UudjEuS25vd2xlZGdlVXNhZ2VUeXBlQhUKE19rbm93bGVkZ2Vfc2hvcnRfaWRCCwoJX3Nob3J0X2lkItcDChJTdWdnZXN0ZWRLbm93bGVkZ2USCwoDdWlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHY29udGVudBgDIAEoCRIPCgd0cmlnZ2VyGAQgASgJEjIKBnN0YXR1cxgFIAEoDjIiLmtub3dsZWRnZS52MS5Lbm93bGVkZ2VFdmVudFN0YXR1cxITCgtzZXNzaW9uX3VpZBgGIAEoCRIZChFzZXNzaW9uX2V2ZW50X3VpZBgHIAEoCRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgRraW5kGAogASgOMiAua25vd2xlZGdlLnYxLktub3dsZWRnZUV2ZW50S2luZBIfChJrbm93bGVkZ2Vfc2hvcnRfaWQYCyABKAlIAIgBARIVCghzaG9ydF9pZBgMIAEoCUgBiAEBEjQKCnVzYWdlX3R5cGUYDSABKA4yIC5rbm93bGVkZ2UudjEuS25vd2xlZGdlVXNhZ2VUeXBlQhUKE19rbm93bGVkZ2Vfc2hvcnRfaWRCCwoJX3Nob3J0X2lkItIBChRMaXN0S25vd2xlZGdlUmVxdWVzdBIOCgZvZmZzZXQYASABKAUSDQoFbGltaXQYAiABKAUSEwoLc2Vzc2lvbl91aWQYAyABKAkSFAoHZW5hYmxlZBgEIAEoCEgAiAEBEhoKEnJlY29tbWVuZF91aWRfbGlzdBgFIAMoCRI5Cgp1c2FnZV90eXBlGAYgASgOMiAua25vd2xlZGdlLnYxLktub3dsZWRnZVVzYWdlVHlwZUgBiAEBQgoKCF9lbmFibGVkQg0KC191c2FnZV90eXBlIp0BChVMaXN0S25vd2xlZGdlUmVzcG9uc2USKgoJa25vd2xlZGdlGAEgAygLMhcua25vd2xlZGdlLnYxLktub3dsZWRnZRINCgV0b3RhbBgCIAEoAxIQCghoYXNfbmV4dBgDIAEoCBIaChJyZWNvbW1lbmRfdWlkX2xpc3QYBSADKAkSGwoTbWF4X2tub3dsZWRnZV9saW1pdBgGIAEoBSKEAQoaTGlzdEtub3dsZWRnZUV2ZW50c1JlcXVlc3QSDgoGb2Zmc2V0GAEgASgFEg0KBWxpbWl0GAIgASgFEjIKBnN0YXR1cxgDIAEoDjIiLmtub3dsZWRnZS52MS5Lbm93bGVkZ2VFdmVudFN0YXR1cxITCgtzZXNzaW9uX3VpZBgEIAEoCSJsChtMaXN0S25vd2xlZGdlRXZlbnRzUmVzcG9uc2USLAoGZXZlbnRzGAEgAygLMhwua25vd2xlZGdlLnYxLktub3dsZWRnZUV2ZW50Eg0KBXRvdGFsGAIgASgDEhAKCGhhc19uZXh0GAMgASgIImoKIVVwZGF0ZUtub3dsZWRnZUV2ZW50U3RhdHVzUmVxdWVzdBIRCglldmVudF91aWQYASABKAkSMgoGc3RhdHVzGAIgASgOMiIua25vd2xlZGdlLnYxLktub3dsZWRnZUV2ZW50U3RhdHVzIjUKIlVwZGF0ZUtub3dsZWRnZUV2ZW50U3RhdHVzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLJAQoWQ3JlYXRlS25vd2xlZGdlUmVxdWVzdBIYCgRuYW1lGAEgASgJQgq6SAdyBRABGP8BEg8KB2NvbnRlbnQYAiABKAkSDwoHdHJpZ2dlchgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhoKDXJlY29tbWVuZF91aWQYBSABKAlIAIgBARI0Cgp1c2FnZV90eXBlGAYgASgOMiAua25vd2xlZGdlLnYxLktub3dsZWRnZVVzYWdlVHlwZUIQCg5fcmVjb21tZW5kX3VpZCJFChdDcmVhdGVLbm93bGVkZ2VSZXNwb25zZRIqCglrbm93bGVkZ2UYASABKAsyFy5rbm93bGVkZ2UudjEuS25vd2xlZGdlItUBChZVcGRhdGVLbm93bGVkZ2VSZXF1ZXN0EhUKDWtub3dsZWRnZV91aWQYASABKAkSFgoEbmFtZRgCIAEoCUIIukgFcgMY/wESDwoHY29udGVudBgDIAEoCRIPCgd0cmlnZ2VyGAQgASgJEhQKB2VuYWJsZWQYBSABKAhIAIgBARI5Cgp1c2FnZV90eXBlGAYgASgOMiAua25vd2xlZGdlLnYxLktub3dsZWRnZVVzYWdlVHlwZUgBiAEBQgoKCF9lbmFibGVkQg0KC191c2FnZV90eXBlIkUKF1VwZGF0ZUtub3dsZWRnZVJlc3BvbnNlEioKCWtub3dsZWRnZRgBIAEoCzIXLmtub3dsZWRnZS52MS5Lbm93bGVkZ2UiLwoWRGVsZXRlS25vd2xlZGdlUmVxdWVzdBIVCg1rbm93bGVkZ2VfdWlkGAEgASgJIioKF0RlbGV0ZUtub3dsZWRnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRwodVXBkYXRlS25vd2xlZGdlRW5hYmxlZFJlcXVlc3QSFQoNa25vd2xlZGdlX3VpZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIIjEKHlVwZGF0ZUtub3dsZWRnZUVuYWJsZWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIk4KGUdldEtub3dsZWRnZURldGFpbFJlcXVlc3QSFQoNa25vd2xlZGdlX3VpZBgBIAEoCRIaChJrbm93bGVkZ2Vfc2hvcnRfaWQYAiABKAkiSAoaR2V0S25vd2xlZGdlRGV0YWlsUmVzcG9uc2USKgoJa25vd2xlZGdlGAEgASgLMhcua25vd2xlZGdlLnYxLktub3dsZWRnZSLaAQobVXBkYXRlS25vd2xlZGdlRXZlbnRSZXF1ZXN0EhEKCWV2ZW50X3VpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFAoHY29udGVudBgDIAEoCUgBiAEBEhQKB3RyaWdnZXIYBCABKAlIAogBARI5Cgp1c2FnZV90eXBlGAUgASgOMiAua25vd2xlZGdlLnYxLktub3dsZWRnZVVzYWdlVHlwZUgDiAEBQgcKBV9uYW1lQgoKCF9jb250ZW50QgoKCF90cmlnZ2VyQg0KC191c2FnZV90eXBlIksKHFVwZGF0ZUtub3dsZWRnZUV2ZW50UmVzcG9uc2USKwoFZXZlbnQYASABKAsyHC5rbm93bGVkZ2UudjEuS25vd2xlZGdlRXZlbnQiLgoaR2V0QnVpbHRpbktub3dsZWRnZVJlcXVlc3QSEAoIc2hvcnRfaWQYASABKAkiSQobR2V0QnVpbHRpbktub3dsZWRnZVJlc3BvbnNlEioKCWtub3dsZWRnZRgBIAEoCzIXLmtub3dsZWRnZS52MS5Lbm93bGVkZ2UqrAEKFEtub3dsZWRnZUV2ZW50U3RhdHVzEiYKIktOT1dMRURHRV9FVkVOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIiCh5LTk9XTEVER0VfRVZFTlRfU1RBVFVTX1BFTkRJTkcQARIjCh9LTk9XTEVER0VfRVZFTlRfU1RBVFVTX0FDQ0VQVEVEEAISIwofS05PV0xFREdFX0VWRU5UX1NUQVRVU19SRUpFQ1RFRBADKmQKDUtub3dsZWRnZUtpbmQSHgoaS05PV0xFREdFX0tJTkRfVU5TUEVDSUZJRUQQABIXChNLTk9XTEVER0VfS0lORF9VU0VSEAESGgoWS05PV0xFREdFX0tJTkRfQlVJTFRJThACKoIBChJLbm93bGVkZ2VVc2FnZVR5cGUSJAogS05PV0xFREdFX1VTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIhCh1LTk9XTEVER0VfVVNBR0VfVFlQRV9VU0VfV0hFThABEiMKH0tOT1dMRURHRV9VU0FHRV9UWVBFX0FMV0FZU19VU0UQAiqdAQoSS25vd2xlZGdlRXZlbnRLaW5kEiQKIEtOT1dMRURHRV9FVkVOVF9LSU5EX1VOU1BFQ0lGSUVEEAASHwobS05PV0xFREdFX0VWRU5UX0tJTkRfQ1JFQVRFEAESHwobS05PV0xFREdFX0VWRU5UX0tJTkRfVVBEQVRFEAISHwobS05PV0xFREdFX0VWRU5UX0tJTkRfREVMRVRFEAMysggKEEtub3dsZWRnZVNlcnZpY2USWAoNTGlzdEtub3dsZWRnZRIiLmtub3dsZWRnZS52MS5MaXN0S25vd2xlZGdlUmVxdWVzdBojLmtub3dsZWRnZS52MS5MaXN0S25vd2xlZGdlUmVzcG9uc2USagoTTGlzdEtub3dsZWRnZUV2ZW50cxIoLmtub3dsZWRnZS52MS5MaXN0S25vd2xlZGdlRXZlbnRzUmVxdWVzdBopLmtub3dsZWRnZS52MS5MaXN0S25vd2xlZGdlRXZlbnRzUmVzcG9uc2USfwoaVXBkYXRlS25vd2xlZGdlRXZlbnRTdGF0dXMSLy5rbm93bGVkZ2UudjEuVXBkYXRlS25vd2xlZGdlRXZlbnRTdGF0dXNSZXF1ZXN0GjAua25vd2xlZGdlLnYxLlVwZGF0ZUtub3dsZWRnZUV2ZW50U3RhdHVzUmVzcG9uc2USXgoPQ3JlYXRlS25vd2xlZGdlEiQua25vd2xlZGdlLnYxLkNyZWF0ZUtub3dsZWRnZVJlcXVlc3QaJS5rbm93bGVkZ2UudjEuQ3JlYXRlS25vd2xlZGdlUmVzcG9uc2USXgoPVXBkYXRlS25vd2xlZGdlEiQua25vd2xlZGdlLnYxLlVwZGF0ZUtub3dsZWRnZVJlcXVlc3QaJS5rbm93bGVkZ2UudjEuVXBkYXRlS25vd2xlZGdlUmVzcG9uc2USXgoPRGVsZXRlS25vd2xlZGdlEiQua25vd2xlZGdlLnYxLkRlbGV0ZUtub3dsZWRnZVJlcXVlc3QaJS5rbm93bGVkZ2UudjEuRGVsZXRlS25vd2xlZGdlUmVzcG9uc2UScwoWVXBkYXRlS25vd2xlZGdlRW5hYmxlZBIrLmtub3dsZWRnZS52MS5VcGRhdGVLbm93bGVkZ2VFbmFibGVkUmVxdWVzdBosLmtub3dsZWRnZS52MS5VcGRhdGVLbm93bGVkZ2VFbmFibGVkUmVzcG9uc2USZwoSR2V0S25vd2xlZGdlRGV0YWlsEicua25vd2xlZGdlLnYxLkdldEtub3dsZWRnZURldGFpbFJlcXVlc3QaKC5rbm93bGVkZ2UudjEuR2V0S25vd2xlZGdlRGV0YWlsUmVzcG9uc2USbQoUVXBkYXRlS25vd2xlZGdlRXZlbnQSKS5rbm93bGVkZ2UudjEuVXBkYXRlS25vd2xlZGdlRXZlbnRSZXF1ZXN0Gioua25vd2xlZGdlLnYxLlVwZGF0ZUtub3dsZWRnZUV2ZW50UmVzcG9uc2USagoTR2V0QnVpbHRpbktub3dsZWRnZRIoLmtub3dsZWRnZS52MS5HZXRCdWlsdGluS25vd2xlZGdlUmVxdWVzdBopLmtub3dsZWRnZS52MS5HZXRCdWlsdGluS25vd2xlZGdlUmVzcG9uc2VCuAEKEGNvbS5rbm93bGVkZ2UudjFCDktub3dsZWRnZVByb3RvUAFaQ2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9rbm93bGVkZ2UvdjE7a25vd2xlZGdldjGiAgNLWFiqAgxLbm93bGVkZ2UuVjHKAgxLbm93bGVkZ2VcVjHiAhhLbm93bGVkZ2VcVjFcR1BCTWV0YWRhdGHqAg1Lbm93bGVkZ2U6OlYxYgZwcm90bzM", [Ge, j]) , _h = z(ya, 0) , Ph = x("CiJrbm93bGVkZ2UvdjEva25vd2xlZGdlX2FkbWluLnByb3RvEgxrbm93bGVkZ2UudjEiOwoaTGlzdFN5c3RlbUtub3dsZWRnZVJlcXVlc3QSDgoGb2Zmc2V0GAEgASgFEg0KBWxpbWl0GAIgASgFImoKG0xpc3RTeXN0ZW1Lbm93bGVkZ2VSZXNwb25zZRIqCglrbm93bGVkZ2UYASADKAsyFy5rbm93bGVkZ2UudjEuS25vd2xlZGdlEg0KBXRvdGFsGAIgASgDEhAKCGhhc19uZXh0GAMgASgIIpgBChxDcmVhdGVTeXN0ZW1Lbm93bGVkZ2VSZXF1ZXN0EgwKBG5hbWUYASABKAkSDwoHY29udGVudBgCIAEoCRIPCgd0cmlnZ2VyGAMgASgJEjkKCnVzYWdlX3R5cGUYBCABKA4yIC5rbm93bGVkZ2UudjEuS25vd2xlZGdlVXNhZ2VUeXBlSACIAQFCDQoLX3VzYWdlX3R5cGUiSwodQ3JlYXRlU3lzdGVtS25vd2xlZGdlUmVzcG9uc2USKgoJa25vd2xlZGdlGAEgASgLMhcua25vd2xlZGdlLnYxLktub3dsZWRnZSK/AgocVXBkYXRlU3lzdGVtS25vd2xlZGdlUmVxdWVzdBIVCg1rbm93bGVkZ2VfdWlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIUCgdjb250ZW50GAMgASgJSAGIAQESFAoHdHJpZ2dlchgEIAEoCUgCiAEBEjkKCnVzYWdlX3R5cGUYBSABKA4yIC5rbm93bGVkZ2UudjEuS25vd2xlZGdlVXNhZ2VUeXBlSAOIAQESGQoMaWRfZm9yX21hbnVzGAYgASgFSASIAQESHQoQdW5pcXVlX2luY19pbmRleBgHIAEoBUgFiAEBQgcKBV9uYW1lQgoKCF9jb250ZW50QgoKCF90cmlnZ2VyQg0KC191c2FnZV90eXBlQg8KDV9pZF9mb3JfbWFudXNCEwoRX3VuaXF1ZV9pbmNfaW5kZXgiSwodVXBkYXRlU3lzdGVtS25vd2xlZGdlUmVzcG9uc2USKgoJa25vd2xlZGdlGAEgASgLMhcua25vd2xlZGdlLnYxLktub3dsZWRnZSI1ChxEZWxldGVTeXN0ZW1Lbm93bGVkZ2VSZXF1ZXN0EhUKDWtub3dsZWRnZV91aWQYASABKAkiMAodRGVsZXRlU3lzdGVtS25vd2xlZGdlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCDLZAwoVS25vd2xlZGdlQWRtaW5TZXJ2aWNlEmoKE0xpc3RTeXN0ZW1Lbm93bGVkZ2USKC5rbm93bGVkZ2UudjEuTGlzdFN5c3RlbUtub3dsZWRnZVJlcXVlc3QaKS5rbm93bGVkZ2UudjEuTGlzdFN5c3RlbUtub3dsZWRnZVJlc3BvbnNlEnAKFUNyZWF0ZVN5c3RlbUtub3dsZWRnZRIqLmtub3dsZWRnZS52MS5DcmVhdGVTeXN0ZW1Lbm93bGVkZ2VSZXF1ZXN0Gisua25vd2xlZGdlLnYxLkNyZWF0ZVN5c3RlbUtub3dsZWRnZVJlc3BvbnNlEnAKFVVwZGF0ZVN5c3RlbUtub3dsZWRnZRIqLmtub3dsZWRnZS52MS5VcGRhdGVTeXN0ZW1Lbm93bGVkZ2VSZXF1ZXN0Gisua25vd2xlZGdlLnYxLlVwZGF0ZVN5c3RlbUtub3dsZWRnZVJlc3BvbnNlEnAKFURlbGV0ZVN5c3RlbUtub3dsZWRnZRIqLmtub3dsZWRnZS52MS5EZWxldGVTeXN0ZW1Lbm93bGVkZ2VSZXF1ZXN0Gisua25vd2xlZGdlLnYxLkRlbGV0ZVN5c3RlbUtub3dsZWRnZVJlc3BvbnNlQr0BChBjb20ua25vd2xlZGdlLnYxQhNLbm93bGVkZ2VBZG1pblByb3RvUAFaQ2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9rbm93bGVkZ2UvdjE7a25vd2xlZGdldjGiAgNLWFiqAgxLbm93bGVkZ2UuVjHKAgxLbm93bGVkZ2VcVjHiAhhLbm93bGVkZ2VcVjFcR1BCTWV0YWRhdGHqAg1Lbm93bGVkZ2U6OlYxYgZwcm90bzM", [ya]) , Oh = z(Ph, 0) , Qi = x("ChRzcGFjZS92MS9zcGFjZS5wcm90bxIIc3BhY2UudjEiZgoVU2V0U3BhY2VTdGF0dXNSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEhEKCWV2ZW50X3VpZBgCIAEoCRIlCgZzdGF0dXMYAyABKA4yFS5zcGFjZS52MS5TcGFjZVN0YXR1cyIpChZTZXRTcGFjZVN0YXR1c1Jlc3BvbnNlEg8KB1N1Y2Nlc3MYASABKAgikgQKD1NwYWNlU3RhdHVzSW5mbxIqCgZzdGF0dXMYASABKA4yFS5zcGFjZS52MS5TcGFjZVN0YXR1c0gAiAEBEhEKCXNwYWNlX3VpZBgCIAEoCRIRCglzcGFjZV9VcmwYAyABKAkSHgoWcHVibGlzaGVkX3RvX2NvbW11bml0eRgEIAEoCBJAChdzdWJfZG9tYWluX2F1ZGl0X3N0YXR1cxgFIAEoDjIaLnNwYWNlLnYxLlNwYWNlQXVkaXRTdGF0dXNIAYgBARIxCg1kZXBsb3llZF90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpzdWJfZG9tYWluGAcgASgJSAKIAQESDQoFdGl0bGUYCCABKAkSEwoLc2Vzc2lvbl91aWQYCSABKAkSEQoJZXZlbnRfdWlkGAogASgJEh0KEHN1Yl9kb21haW5fYXVkaXQYCyABKAlIA4gBARIrCgxhdWRpdF9zdGF0dXMYDCABKA4yFS5zcGFjZS52MS5BdWRpdFN0YXR1cxIxCgxSaXNrQ2F0ZWdvcnkYDSADKA4yGy5zcGFjZS52MS5TcGFjZVJpc2tDYXRlZ29yeUIJCgdfc3RhdHVzQhoKGF9zdWJfZG9tYWluX2F1ZGl0X3N0YXR1c0INCgtfc3ViX2RvbWFpbkITChFfc3ViX2RvbWFpbl9hdWRpdCJZChlQYWdlR2V0VXNlclNwYWNlc1Jlc3BvbnNlEi0KCnNwYWNlX2luZm8YAiADKAsyGS5zcGFjZS52MS5TcGFjZVN0YXR1c0luZm8SDQoFdG90YWwYAyABKAUiLAoVR2V0U3BhY2VTdGF0dXNSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJIl8KFkdldFNwYWNlU3RhdHVzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBI0ChFzcGFjZV9zdGF0dXNfaW5mbxgCIAMoCzIZLnNwYWNlLnYxLlNwYWNlU3RhdHVzSW5mbyI1ChRQYWdlR2V0VXNlclNwYWNlc1JlcRIOCgZvZmZzZXQYASABKAUSDQoFbGltaXQYAiABKAUiPgoVRWRpdFNwYWNlU3ViRG9tYWluUmVxEhEKCXNwYWNlX3VpZBgBIAEoCRISCgpzdWJfZG9tYWluGAIgASgJIhwKGkVkaXRTcGFjZVN1YkRvbWFpblJlc3BvbnNlIhkKF0dldEVkaXRTcGFjZVNpdGVDb2RlUmVxIk8KHEdldEVkaXRTcGFjZVNpdGVDb2RlUmVzcG9uc2USFwoPZWRpdF9zcGFjZV9jb2RlGAEgASgJEhYKDnZhbGlkX2R1cmF0aW9uGAIgASgDIjEKHUhhc1NwYWNlRWRpdFBlcm1pc3Npb25SZXF1ZXN0EhAKCHNwYWNlX2lkGAEgASgJIjIKHkhhc1NwYWNlRWRpdFBlcm1pc3Npb25SZXNwb25zZRIQCghjYW5fZWRpdBgBIAEoCCIvChpSZXN0b3JlT3JpZ2luYWxTaXRlUmVxdWVzdBIRCglzcGFjZV91aWQYASABKAkiLgobUmVzdG9yZU9yaWdpbmFsU2l0ZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRgobU2F2ZVNwYWNlU2l0ZVJhd0RhdGFSZXF1ZXN0EhEKCXNwYWNlX3VpZBgBIAEoCRIUCgx3ZWJfcmF3X2RhdGEYAiABKAkiLwocU2F2ZVNwYWNlU2l0ZVJhd0RhdGFSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIKlkKC1NwYWNlU3RhdHVzEhoKFlNQQUNFX1NUQVRVU19JTlZJU0lCTEUQABIYChRTUEFDRV9TVEFUVVNfVklTSUJMRRABEhQKEFNQQUNFX1NUQVRVU19CQU4QAipHCg5TcGFjZVN5c1N0YXR1cxIbChdTUEFDRV9TWVNfU1RBVFVTX05PUk1BTBAAEhgKFFNQQUNFX1NZU19TVEFUVVNfQkFOEAEqXQoLQXVkaXRTdGF0dXMSGAoUQVVESVRfU1RBVFVTX1BFTkRJTkcQABIZChVBVURJVF9TVEFUVVNfQVBQUk9WRUQQARIZChVBVURJVF9TVEFUVVNfUkVKRUNURUQQAiqYAQoQU3BhY2VBdWRpdFN0YXR1cxIdChlTUEFDRV9BVURJVF9TVEFUVVNfQ09NTUlUEAASGwoXU1BBQ0VfQVVESVRfU1RBVFVTX1BBU1MQARIdChlTUEFDRV9BVURJVF9TVEFUVVNfUkVKRUNUEAISKQolU1BBQ0VfQVVESVRfU1RBVFVTX05FRURfTUFOVUFMX1JFVklFVxAEKpIIChFTcGFjZVJpc2tDYXRlZ29yeRIlCiFDT05URU5UX1JJU0tfQ0FURUdPUllfVU5TUEVDSUZJRUQQABIPCgtTWVNURU1fUEFUSBABEhUKEUNPTU1BTkRfSU5KRUNUSU9OEAISFgoSU1BFQ0lBTF9DSEFSX0FCVVNFEAMSFAoQUkVTRVJWRURfS0VZV09SRBAEEg4KCkJSQU5EX05BTUUQBRINCglDT1BZUklHSFQQBhISCg5DRUxFQlJJVFlfTkFNRRAHEhQKEFBST1RFQ1RFRF9ET01BSU4QCBIOCgpMRUdBTF9SSVNLEAkSEwoPQ09OVFJPTExFRF9JVEVNEAoSEwoPRklOQU5DSUFMX0ZSQVVEEAsSFQoRRkFMU0VfQURWRVJUSVNJTkcQDBIWChJSRUdJT05BTF9TRU5TSVRJVkUQDRISCg5QUk9GQU5JVFlfTUlMRBAOEhYKElBST0ZBTklUWV9NT0RFUkFURRAPEhQKEFBST0ZBTklUWV9TRVZFUkUQEBIZChVESVNDUklNSU5BVElPTl9SQUNJQUwQERIZChVESVNDUklNSU5BVElPTl9HRU5ERVIQEhIcChhESVNDUklNSU5BVElPTl9SRUxJR0lPVVMQExIWChJESVNDUklNSU5BVElPTl9BR0UQFBIdChlESVNDUklNSU5BVElPTl9ESVNBQklMSVRZEBUSFQoRU0VYVUFMX1NVR0dFU1RJVkUQFhITCg9TRVhVQUxfRVhQTElDSVQQFxIQCgxTRVhVQUxfTUlOT1IQGBIUChBWSU9MRU5DRV9HRU5FUkFMEBkSFAoQVklPTEVOQ0VfRVhUUkVNRRAaEhQKEFZJT0xFTkNFX1dFQVBPTlMQGxIWChJWSU9MRU5DRV9URVJST1JJU00QHBISCg5NSVNJTkZPUk1BVElPThAdEgwKCFBISVNISU5HEB4SEQoNSU1QRVJTT05BVElPThAfEhQKEERFQ0VQVElWRV9ET01BSU4QIBISCg5DVUxUVVJBTF9UQUJPTxAhEhQKEE1VTFRJTElOR1VBTF9QVU4QIhIWChJJTVBMSUNJVF9SRUZFUkVOQ0UQIxISCg5FTUVSR0lOR19TTEFORxAkEggKBFNQQU0QJRIWChJNRUFOSU5HTEVTU19TVFJJTkcQJhIYChRFWENFU1NJVkVfUkVQRVRJVElPThAnEhAKDFNQRUNJQUxfQ0FTRRAoEhIKDkVWQVNJT05fUElOWUlOECkSFwoTRVZBU0lPTl9QSU5ZSU5fQUJCUhAqEhgKFEVWQVNJT05fTUlYRURfU0NSSVBUECsSFQoRRVZBU0lPTl9IT01PR1JBUEgQLBIcChhFVkFTSU9OX0NIQVJfUkVQTEFDRU1FTlQQLTKKBgoMU3BhY2VTZXJ2aWNlElMKDlNldFNwYWNlU3RhdHVzEh8uc3BhY2UudjEuU2V0U3BhY2VTdGF0dXNSZXF1ZXN0GiAuc3BhY2UudjEuU2V0U3BhY2VTdGF0dXNSZXNwb25zZRJTCg5HZXRTcGFjZVN0YXR1cxIfLnNwYWNlLnYxLkdldFNwYWNlU3RhdHVzUmVxdWVzdBogLnNwYWNlLnYxLkdldFNwYWNlU3RhdHVzUmVzcG9uc2USWAoRUGFnZUdldFVzZXJTcGFjZXMSHi5zcGFjZS52MS5QYWdlR2V0VXNlclNwYWNlc1JlcRojLnNwYWNlLnYxLlBhZ2VHZXRVc2VyU3BhY2VzUmVzcG9uc2USWwoSRWRpdFNwYWNlU3ViRG9tYWluEh8uc3BhY2UudjEuRWRpdFNwYWNlU3ViRG9tYWluUmVxGiQuc3BhY2UudjEuRWRpdFNwYWNlU3ViRG9tYWluUmVzcG9uc2USYQoUR2V0RWRpdFNwYWNlU2l0ZUNvZGUSIS5zcGFjZS52MS5HZXRFZGl0U3BhY2VTaXRlQ29kZVJlcRomLnNwYWNlLnYxLkdldEVkaXRTcGFjZVNpdGVDb2RlUmVzcG9uc2USawoWSGFzU3BhY2VFZGl0UGVybWlzc2lvbhInLnNwYWNlLnYxLkhhc1NwYWNlRWRpdFBlcm1pc3Npb25SZXF1ZXN0Giguc3BhY2UudjEuSGFzU3BhY2VFZGl0UGVybWlzc2lvblJlc3BvbnNlEmUKFFNhdmVTcGFjZVNpdGVSYXdEYXRhEiUuc3BhY2UudjEuU2F2ZVNwYWNlU2l0ZVJhd0RhdGFSZXF1ZXN0GiYuc3BhY2UudjEuU2F2ZVNwYWNlU2l0ZVJhd0RhdGFSZXNwb25zZRJiChNSZXN0b3JlT3JpZ2luYWxTaXRlEiQuc3BhY2UudjEuUmVzdG9yZU9yaWdpbmFsU2l0ZVJlcXVlc3QaJS5zcGFjZS52MS5SZXN0b3JlT3JpZ2luYWxTaXRlUmVzcG9uc2VCmAEKDGNvbS5zcGFjZS52MUIKU3BhY2VQcm90b1ABWjtnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvc3BhY2UvdjE7c3BhY2V2MaICA1NYWKoCCFNwYWNlLlYxygIIU3BhY2VcVjHiAhRTcGFjZVxWMVxHUEJNZXRhZGF0YeoCCVNwYWNlOjpWMWIGcHJvdG8z", [j]) , $h = z(Qi, 0) , qh = x("ChtzcGFjZS92MS9zcGFjZV9wdWJsaWMucHJvdG8SCHNwYWNlLnYxIioKFUdldFNwYWNlRGV0YWlsUmVxdWVzdBIRCglzcGFjZV91aWQYASABKAkingEKFkdldFNwYWNlRGV0YWlsUmVzcG9uc2USKgoGc3RhdHVzGAEgASgOMhUuc3BhY2UudjEuU3BhY2VTdGF0dXNIAIgBARIRCglzcGFjZV91cmwYAiABKAkSIQoUc2l0ZV9yYXdfZGF0YV9zM191cmwYAyABKAlIAYgBAUIJCgdfc3RhdHVzQhcKFV9zaXRlX3Jhd19kYXRhX3MzX3VybCI3ChxHZXRFZGl0U3BhY2VTaXRlVG9rZW5SZXF1ZXN0EhcKD2VkaXRfc3BhY2VfY29kZRgBIAEoCSI1Ch1HZXRFZGl0U3BhY2VTaXRlVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkyqAIKElNwYWNlUHVibGljU2VydmljZRJTCg5HZXRTcGFjZURldGFpbBIfLnNwYWNlLnYxLkdldFNwYWNlRGV0YWlsUmVxdWVzdBogLnNwYWNlLnYxLkdldFNwYWNlRGV0YWlsUmVzcG9uc2USUwoOR2V0U3BhY2VTdGF0dXMSHy5zcGFjZS52MS5HZXRTcGFjZVN0YXR1c1JlcXVlc3QaIC5zcGFjZS52MS5HZXRTcGFjZVN0YXR1c1Jlc3BvbnNlEmgKFUdldEVkaXRTcGFjZVNpdGVUb2tlbhImLnNwYWNlLnYxLkdldEVkaXRTcGFjZVNpdGVUb2tlblJlcXVlc3QaJy5zcGFjZS52MS5HZXRFZGl0U3BhY2VTaXRlVG9rZW5SZXNwb25zZUKeAQoMY29tLnNwYWNlLnYxQhBTcGFjZVB1YmxpY1Byb3RvUAFaO2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9zcGFjZS92MTtzcGFjZXYxogIDU1hYqgIIU3BhY2UuVjHKAghTcGFjZVxWMeICFFNwYWNlXFYxXEdQQk1ldGFkYXRh6gIJU3BhY2U6OlYxYgZwcm90bzM", [Ge, j, Qi]) , e1 = z(qh, 0) , t1 = x("ChpzcGFjZS92MS9zcGFjZV9hZG1pbi5wcm90bxIIc3BhY2UudjEiNgoRQmxvY2tTcGFjZVJlcXVlc3QSEQoJc3BhY2VfdWlkGAEgASgJEg4KBnJlbWFyaxgCIAEoCSIlChJCbG9ja1NwYWNlUmVzcG9uc2USDwoHU3VjY2VzcxgBIAEoCCKBAQoOU3BhY2VCbG9ja0luZm8SCgoCaWQYASABKAMSEQoJc3BhY2VfdWlkGAIgASgJEg4KBnJlbWFyaxgDIAEoCRIQCghvcGVyYXRvchgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIpChRVbmJsb2NrU3BhY2VzUmVxdWVzdBIRCglzcGFjZV91aWQYASABKAkiJwoUVW5ibG9ja1NwYWNlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJyChVTcGFjZUJsb2NrTGlzdFJlcXVlc3QSFQoEcGFnZRgBIAEoBUIHukgEGgIoARIcCglwYWdlX3NpemUYAiABKAVCCbpIBhoEGGQoARIWCglzcGFjZV91aWQYAyABKAlIAIgBAUIMCgpfc3BhY2VfdWlkIlsKFlNwYWNlQmxvY2tMaXN0UmVzcG9uc2USMgoQc3BhY2VfYmxvY2tfbGlzdBgBIAMoCzIYLnNwYWNlLnYxLlNwYWNlQmxvY2tJbmZvEg0KBXRvdGFsGAIgASgDIpECChZBdWRpdFNwYWNlU3ViRG9tYWluUmVxEgoKAmlkGAEgASgDEhEKCXNwYWNlX3VpZBgCIAEoCRISCgpzdWJfZG9tYWluGAMgASgJEioKBnN0YXR1cxgEIAEoDjIaLnNwYWNlLnYxLlNwYWNlQXVkaXRTdGF0dXMSGgoNcmVqZWN0X3JlYXNvbhgFIAEoCUgAiAEBEh4KEWFkZF9ibG9ja19jb250ZW50GAYgASgJSAGIAQESNAoPcmlza19jYXRlZ29yaWVzGAcgAygOMhsuc3BhY2UudjEuU3BhY2VSaXNrQ2F0ZWdvcnlCEAoOX3JlamVjdF9yZWFzb25CFAoSX2FkZF9ibG9ja19jb250ZW50Ih0KG0F1ZGl0U3BhY2VTdWJEb21haW5SZXNwb25zZSKgAQodUGFnZUdldEF1ZGl0U3BhY2VTdWJEb21haW5SZXESDgoGb2Zmc2V0GAEgASgFEg0KBWxpbWl0GAIgASgFEhYKCXNwYWNlX3VpZBgDIAEoCUgAiAEBEi8KBnN0YXR1cxgEIAEoDjIaLnNwYWNlLnYxLlNwYWNlQXVkaXRTdGF0dXNIAYgBAUIMCgpfc3BhY2VfdWlkQgkKB19zdGF0dXMitQMKF0F1ZGl0U3BhY2VTdWJEb21haW5JbmZvEgoKAmlkGAEgASgDEhEKCXNwYWNlX3VpZBgCIAEoCRISCgpzdWJfZG9tYWluGAMgASgJEioKBnN0YXR1cxgEIAEoDjIaLnNwYWNlLnYxLlNwYWNlQXVkaXRTdGF0dXMSEwoLc2Vzc2lvbl91aWQYBSABKAkSEQoJZXZlbnRfdWlkGAYgASgJEg8KB3VzZXJfaWQYByABKAkSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKYXVkaXRvcl9pZBgJIAEoCRIVCg1yZWplY3RfcmVhc29uGAogASgJEi4KCnVwZGF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDHNwYWNlX3N0YXR1cxgMIAEoDjIVLnNwYWNlLnYxLlNwYWNlU3RhdHVzSACIAQESNAoPcmlza19jYXRlZ29yaWVzGA0gAygOMhsuc3BhY2UudjEuU3BhY2VSaXNrQ2F0ZWdvcnlCDwoNX3NwYWNlX3N0YXR1cyJ7CiJQYWdlR2V0QXVkaXRTcGFjZVN1YkRvbWFpblJlc3BvbnNlEkYKG2F1ZGl0X3NwYWNlX3N1Yl9kb21haW5faW5mbxgBIAMoCzIhLnNwYWNlLnYxLkF1ZGl0U3BhY2VTdWJEb21haW5JbmZvEg0KBXRvdGFsGAIgASgFIj8KHlBhZ2VTcGFjZVN1YkRvbWFpbkJsb2NrV29yZFJlcRIOCgZvZmZzZXQYASABKAUSDQoFbGltaXQYAiABKAUiXQojUGFnZVNwYWNlU3ViRG9tYWluQmxvY2tXb3JkUmVzcG9uc2USJwoKYmxvY2tfd29yZBgBIAMoCzITLnNwYWNlLnYxLkJsb2NrV29yZBINCgV0b3RhbBgCIAEoBSKjAQoJQmxvY2tXb3JkEgoKAmlkGAEgASgFEhIKCmJsb2NrX3dvcmQYAiABKAkSLgoKY3JlYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIb3BlcmF0b3IYBCABKAkSNAoPcmlza19jYXRlZ29yaWVzGAcgAygOMhsuc3BhY2UudjEuU3BhY2VSaXNrQ2F0ZWdvcnkiaQodQWRkU3BhY2VTdWJEb21haW5CbG9ja1dvcmRSZXESEgoKYmxvY2tfd29yZBgBIAEoCRI0Cg9yaXNrX2NhdGVnb3JpZXMYByADKA4yGy5zcGFjZS52MS5TcGFjZVJpc2tDYXRlZ29yeSIzCh1EZWxTcGFjZVN1YkRvbWFpbkJsb2NrV29yZFJlcRISCgpibG9ja193b3JkGAEgASgJIiQKIkFkZFNwYWNlU3ViRG9tYWluQmxvY2tXb3JkUmVzcG9uc2UiJAoiRGVsU3BhY2VTdWJEb21haW5CbG9ja1dvcmRSZXNwb25zZTK4BgoRU3BhY2VBZG1pblNlcnZpY2USRwoKQmxvY2tTcGFjZRIbLnNwYWNlLnYxLkJsb2NrU3BhY2VSZXF1ZXN0Ghwuc3BhY2UudjEuQmxvY2tTcGFjZVJlc3BvbnNlEk4KDFVuYmxvY2tTcGFjZRIeLnNwYWNlLnYxLlVuYmxvY2tTcGFjZXNSZXF1ZXN0Gh4uc3BhY2UudjEuVW5ibG9ja1NwYWNlUmVzcG9uc2USUwoOU3BhY2VCbG9ja0xpc3QSHy5zcGFjZS52MS5TcGFjZUJsb2NrTGlzdFJlcXVlc3QaIC5zcGFjZS52MS5TcGFjZUJsb2NrTGlzdFJlc3BvbnNlEnMKGlBhZ2VHZXRBdWRpdFNwYWNlU3ViRG9tYWluEicuc3BhY2UudjEuUGFnZUdldEF1ZGl0U3BhY2VTdWJEb21haW5SZXEaLC5zcGFjZS52MS5QYWdlR2V0QXVkaXRTcGFjZVN1YkRvbWFpblJlc3BvbnNlEl4KE0F1ZGl0U3BhY2VTdWJEb21haW4SIC5zcGFjZS52MS5BdWRpdFNwYWNlU3ViRG9tYWluUmVxGiUuc3BhY2UudjEuQXVkaXRTcGFjZVN1YkRvbWFpblJlc3BvbnNlEnYKG1BhZ2VTcGFjZVN1YkRvbWFpbkJsb2NrV29yZBIoLnNwYWNlLnYxLlBhZ2VTcGFjZVN1YkRvbWFpbkJsb2NrV29yZFJlcRotLnNwYWNlLnYxLlBhZ2VTcGFjZVN1YkRvbWFpbkJsb2NrV29yZFJlc3BvbnNlEnMKGkRlbFNwYWNlU3ViRG9tYWluQmxvY2tXb3JkEicuc3BhY2UudjEuRGVsU3BhY2VTdWJEb21haW5CbG9ja1dvcmRSZXEaLC5zcGFjZS52MS5EZWxTcGFjZVN1YkRvbWFpbkJsb2NrV29yZFJlc3BvbnNlEnMKGkFkZFNwYWNlU3ViRG9tYWluQmxvY2tXb3JkEicuc3BhY2UudjEuQWRkU3BhY2VTdWJEb21haW5CbG9ja1dvcmRSZXEaLC5zcGFjZS52MS5BZGRTcGFjZVN1YkRvbWFpbkJsb2NrV29yZFJlc3BvbnNlQp0BCgxjb20uc3BhY2UudjFCD1NwYWNlQWRtaW5Qcm90b1ABWjtnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvc3BhY2UvdjE7c3BhY2V2MaICA1NYWKoCCFNwYWNlLlYxygIIU3BhY2VcVjHiAhRTcGFjZVxWMVxHUEJNZXRhZGF0YeoCCVNwYWNlOjpWMWIGcHJvdG8z", [j, Ge, Qi]) , n1 = z(t1, 0) , l1 = x("Ch9hcGlwcm94eS92MS9hcGlwcm94eV9iYXNlLnByb3RvEgthcGlwcm94eS52MSKxAgoKQXBpRXhhbXBsZRIMCgRuYW1lGAEgASgJEg4KBmFwaV9pZBgCIAEoCRIxCgVxdWVyeRgDIAMoCzIiLmFwaXByb3h5LnYxLkFwaUV4YW1wbGUuUXVlcnlFbnRyeRIqCgRib2R5GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEjwKC3BhdGhfcGFyYW1zGAYgAygLMicuYXBpcHJveHkudjEuQXBpRXhhbXBsZS5QYXRoUGFyYW1zRW50cnkaLAoKUXVlcnlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjEKD1BhdGhQYXJhbXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgcKBV9ib2R5Il0KCUFwaURldGFpbBIQCghzaG9ydF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBGRvY3MYAyABKAkSEAoIYXBpX25hbWUYBCABKAkSEAoIdXNlX3doZW4YBSABKAkiuwIKDkFwaVJlcXVlc3RJbmZvEgwKBGhvc3QYASABKAkSDAoEcGF0aBgCIAEoCRIOCgZtZXRob2QYAyABKAkSSAoPZGVmYXVsdF9oZWFkZXJzGAUgAygLMi8uYXBpcHJveHkudjEuQXBpUmVxdWVzdEluZm8uRGVmYXVsdEhlYWRlcnNFbnRyeRJGCg5kZWZhdWx0X3BhcmFtcxgGIAMoCzIuLmFwaXByb3h5LnYxLkFwaVJlcXVlc3RJbmZvLkRlZmF1bHRQYXJhbXNFbnRyeRo1ChNEZWZhdWx0SGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNAoSRGVmYXVsdFBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiuAEKB0FwaUluZm8SDAoEbmFtZRgBIAEoCRIQCghhcGlfbmFtZRgCIAEoCRIQCghwcm92aWRlchgDIAEoCRIQCgh1c2Vfd2hlbhgEIAEoCRILCgNkb2MYBSABKAkSMQoMcmVxdWVzdF9pbmZvGAYgASgLMhsuYXBpcHJveHkudjEuQXBpUmVxdWVzdEluZm8SKQoIZXhhbXBsZXMYByADKAsyFy5hcGlwcm94eS52MS5BcGlFeGFtcGxlIpEFCglBcGlTZWNyZXQSMgoJYXV0aF90eXBlGAEgASgOMh8uYXBpcHJveHkudjEuQXBpU2VjcmV0LkF1dGhUeXBlEjIKB2FwaV9rZXkYAiABKAsyIS5hcGlwcm94eS52MS5BcGlTZWNyZXQuQXBpS2V5QXV0aBIvCgViYXNpYxgDIAEoCzIgLmFwaXByb3h5LnYxLkFwaVNlY3JldC5CYXNpY0F1dGgSMQoGb2F1dGgyGAQgASgLMiEuYXBpcHJveHkudjEuQXBpU2VjcmV0Lk9BdXRoMkF1dGgaOQoKQXBpS2V5QXV0aBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghpbl9xdWVyeRgDIAEoCBovCglCYXNpY0F1dGgSEAoIdXNlcm5hbWUYASABKAkSEAoIcGFzc3dvcmQYAiABKAka3QEKCk9BdXRoMkF1dGgSEQoJY2xpZW50X2lkGAEgASgJEhUKDWNsaWVudF9zZWNyZXQYAiABKAkSEQoJdG9rZW5fdXJsGAMgASgJEhQKDGFjY2Vzc190b2tlbhgEIAEoCRJICgxleHRyYV9wYXJhbXMYBSADKAsyMi5hcGlwcm94eS52MS5BcGlTZWNyZXQuT0F1dGgyQXV0aC5FeHRyYVBhcmFtc0VudHJ5GjIKEEV4dHJhUGFyYW1zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJsCghBdXRoVHlwZRIZChVBVVRIX1RZUEVfVU5TUEVDSUZJRUQQABIVChFBVVRIX1RZUEVfQVBJX0tFWRABEhgKFEFVVEhfVFlQRV9CQVNJQ19BVVRIEAISFAoQQVVUSF9UWVBFX09BVVRIMhADQrQBCg9jb20uYXBpcHJveHkudjFCEUFwaXByb3h5QmFzZVByb3RvUAFaQWdpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9hcGlwcm94eS92MTthcGlwcm94eXYxogIDQVhYqgILQXBpcHJveHkuVjHKAgtBcGlwcm94eVxWMeICF0FwaXByb3h5XFYxXEdQQk1ldGFkYXRh6gIMQXBpcHJveHk6OlYxYgZwcm90bzM", [Ne]) , Sa = x("ChphcGlwcm94eS92MS9hcGlwcm94eS5wcm90bxILYXBpcHJveHkudjEirwIKDkNhbGxBcGlSZXF1ZXN0Eg4KBmFwaV9pZBgBIAEoCRI1CgVxdWVyeRgCIAMoCzImLmFwaXByb3h5LnYxLkNhbGxBcGlSZXF1ZXN0LlF1ZXJ5RW50cnkSKgoEYm9keRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARJACgtwYXRoX3BhcmFtcxgFIAMoCzIrLmFwaXByb3h5LnYxLkNhbGxBcGlSZXF1ZXN0LlBhdGhQYXJhbXNFbnRyeRosCgpRdWVyeUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMQoPUGF0aFBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCBwoFX2JvZHkijwEKD0NhbGxBcGlSZXNwb25zZRIRCglqc29uX2RhdGEYASABKAkSKgoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIRCgRjb2RlGAMgASgFSAGIAQESEAoDbXNnGAQgASgJSAKIAQFCBwoFX2RhdGFCBwoFX2NvZGVCBgoEX21zZzJZCg9BcGlQcm94eVNlcnZpY2USRgoHQ2FsbEFwaRIbLmFwaXByb3h5LnYxLkNhbGxBcGlSZXF1ZXN0GhwuYXBpcHJveHkudjEuQ2FsbEFwaVJlc3BvbnNlIgBCsAEKD2NvbS5hcGlwcm94eS52MUINQXBpcHJveHlQcm90b1ABWkFnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvYXBpcHJveHkvdjE7YXBpcHJveHl2MaICA0FYWKoCC0FwaXByb3h5LlYxygILQXBpcHJveHlcVjHiAhdBcGlwcm94eVxWMVxHUEJNZXRhZGF0YeoCDEFwaXByb3h5OjpWMWIGcHJvdG8z", [Ne]) , i1 = z(Sa, 0) , o1 = x("CiBhcGlwcm94eS92MS9hcGlwcm94eV9hZG1pbi5wcm90bxILYXBpcHJveHkudjEijQEKEENyZWF0ZUFwaVJlcXVlc3QSJgoIYXBpX2luZm8YASABKAsyFC5hcGlwcm94eS52MS5BcGlJbmZvEiYKBnNlY3JldBgCIAEoCzIWLmFwaXByb3h5LnYxLkFwaVNlY3JldBIpCghleGFtcGxlcxgDIAMoCzIXLmFwaXByb3h5LnYxLkFwaUV4YW1wbGUiIwoRQ3JlYXRlQXBpUmVzcG9uc2USDgoGYXBpX2lkGAEgASgJIp0BChBVcGRhdGVBcGlSZXF1ZXN0Eg4KBmFwaV9pZBgBIAEoCRImCghhcGlfaW5mbxgCIAEoCzIULmFwaXByb3h5LnYxLkFwaUluZm8SJgoGc2VjcmV0GAMgASgLMhYuYXBpcHJveHkudjEuQXBpU2VjcmV0EikKCGV4YW1wbGVzGAQgAygLMhcuYXBpcHJveHkudjEuQXBpRXhhbXBsZSIkChFVcGRhdGVBcGlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiIKEERlbGV0ZUFwaVJlcXVlc3QSDgoGYXBpX2lkGAEgASgJIiQKEURlbGV0ZUFwaVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHwoNR2V0QXBpUmVxdWVzdBIOCgZhcGlfaWQYASABKAki+wEKDkdldEFwaVJlc3BvbnNlEg4KBmFwaV9pZBgBIAEoCRImCghhcGlfaW5mbxgCIAEoCzIULmFwaXByb3h5LnYxLkFwaUluZm8SJgoGc2VjcmV0GAMgASgLMhYuYXBpcHJveHkudjEuQXBpU2VjcmV0Ei4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEikKCGV4YW1wbGVzGAYgAygLMhcuYXBpcHJveHkudjEuQXBpRXhhbXBsZSJRCg5MaXN0QXBpUmVxdWVzdBIOCgZvZmZzZXQYASABKAUSDQoFbGltaXQYAiABKAUSFAoHa2V5d29yZBgDIAEoCUgAiAEBQgoKCF9rZXl3b3JkIksKD0xpc3RBcGlSZXNwb25zZRINCgV0b3RhbBgBIAEoBRIpCgRhcGlzGAIgAygLMhsuYXBpcHJveHkudjEuR2V0QXBpUmVzcG9uc2UiVQoYVXBkYXRlQXBpRXhhbXBsZXNSZXF1ZXN0Eg4KBmFwaV9pZBgBIAEoCRIpCghleGFtcGxlcxgCIAMoCzIXLmFwaXByb3h5LnYxLkFwaUV4YW1wbGUiLAoZVXBkYXRlQXBpRXhhbXBsZXNSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIMr0EChRBcGlQcm94eUFkbWluU2VydmljZRJMCglDcmVhdGVBcGkSHS5hcGlwcm94eS52MS5DcmVhdGVBcGlSZXF1ZXN0Gh4uYXBpcHJveHkudjEuQ3JlYXRlQXBpUmVzcG9uc2UiABJMCglVcGRhdGVBcGkSHS5hcGlwcm94eS52MS5VcGRhdGVBcGlSZXF1ZXN0Gh4uYXBpcHJveHkudjEuVXBkYXRlQXBpUmVzcG9uc2UiABJMCglEZWxldGVBcGkSHS5hcGlwcm94eS52MS5EZWxldGVBcGlSZXF1ZXN0Gh4uYXBpcHJveHkudjEuRGVsZXRlQXBpUmVzcG9uc2UiABJDCgZHZXRBcGkSGi5hcGlwcm94eS52MS5HZXRBcGlSZXF1ZXN0GhsuYXBpcHJveHkudjEuR2V0QXBpUmVzcG9uc2UiABJGCgdMaXN0QXBpEhsuYXBpcHJveHkudjEuTGlzdEFwaVJlcXVlc3QaHC5hcGlwcm94eS52MS5MaXN0QXBpUmVzcG9uc2UiABJkChFVcGRhdGVBcGlFeGFtcGxlcxIlLmFwaXByb3h5LnYxLlVwZGF0ZUFwaUV4YW1wbGVzUmVxdWVzdBomLmFwaXByb3h5LnYxLlVwZGF0ZUFwaUV4YW1wbGVzUmVzcG9uc2UiABJICglQcm94eUNhbGwSGy5hcGlwcm94eS52MS5DYWxsQXBpUmVxdWVzdBocLmFwaXByb3h5LnYxLkNhbGxBcGlSZXNwb25zZSIAQrUBCg9jb20uYXBpcHJveHkudjFCEkFwaXByb3h5QWRtaW5Qcm90b1ABWkFnaXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvYXBpcHJveHkvdjE7YXBpcHJveHl2MaICA0FYWKoCC0FwaXByb3h5LlYxygILQXBpcHJveHlcVjHiAhdBcGlwcm94eVxWMVxHUEJNZXRhZGF0YeoCDEFwaXByb3h5OjpWMWIGcHJvdG8z", [l1, Sa, j]) , r1 = z(o1, 0) , c1 = x("Ch5zZXNzaW9uL3YxL3Nlc3Npb25fYWRtaW4ucHJvdG8SCnNlc3Npb24udjEiIAoeUm9sbGJhY2tTZXNzaW9uQ3JlZGl0c1Jlc3BvbnNlIkQKHVJvbGxiYWNrU2Vzc2lvbkNyZWRpdHNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHY3JlZGl0cxgCIAEoBSJUChNMaXN0U2Vzc2lvblJlc3BvbnNlEi4KCHNlc3Npb25zGAEgAygLMhwuc2Vzc2lvbi52MS5BZG1pblNlc3Npb25JbmZvEg0KBXRvdGFsGAIgASgFIpICChBBZG1pblNlc3Npb25JbmZvEhIKCnNlc3Npb25faWQYASABKAkSFgoOY29zdGVkX2NyZWRpdHMYAiABKAUSOQoPcm9sbGJhY2tfc3RhdHVzGAMgASgOMiAuc2Vzc2lvbi52MS5DcmVkaXRSb2xsYmFja1N0YXR1cxIWCg5ibG9ja2VkX3N0YXR1cxgEIAEoCBIPCgd1c2VyX2lkGAUgASgJEg0KBWVtYWlsGAYgASgJEhEKCWlzX3NoYXJlZBgHIAEoCBIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcChRjYW5fcm9sbGJhY2tfY3JlZGl0cxgJIAEoBSKmAQoSTGlzdFNlc3Npb25SZXF1ZXN0EhUKBHBhZ2UYASABKAVCB7pIBBoCKAESEQoJcGFnZV9zaXplGAIgASgFEgwKBHVzZXIYAyABKAkSEwoLc2Vzc2lvbl91aWQYBCABKAkSMgoMY3JlZGl0X3JhbmdlGAkgASgLMhcuc2Vzc2lvbi52MS5DcmVkaXRSYW5nZUgAiAEBQg8KDV9jcmVkaXRfcmFuZ2UiJQojVXBkYXRlU2Vzc2lvbkZlZWRiYWNrU3RhdHVzUmVzcG9uc2UibAoiVXBkYXRlU2Vzc2lvbkZlZWRiYWNrU3RhdHVzUmVxdWVzdBITCgtzZXNzaW9uX3VpZBgBIAEoCRIxCgZzdGF0dXMYAiABKA4yIS5zZXNzaW9uLnYxLlNlc3Npb25GZWVkYmFja1N0YXR1cyInCiVSb2xsYmFja1Nlc3Npb25GZWVkYmFja0NyZWRpdFJlc3BvbnNlIkwKJFJvbGxiYWNrU2Vzc2lvbkZlZWRiYWNrQ3JlZGl0UmVxdWVzdBITCgtzZXNzaW9uX3VpZBgBIAEoCRIPCgdjcmVkaXRzGAIgASgFIrcDCgtVc2VjYXNlSW5mbxIKCgJpZBgBIAEoAxIPCgd1c2VyX2lkGAIgASgJEg0KBWVtYWlsGAMgASgJEg8KB2NvbnRlbnQYBCABKAkSEwoLc2Vzc2lvbl91aWQYBSABKAkSFQoNc2hvd19ob21lcGFnZRgGIAEoCBIWCg5vcmRlcl9ob21lcGFnZRgHIAEoBRIUCgxzaG93X3VzZWNhc2UYCCABKAgSFQoNb3JkZXJfdXNlY2FzZRgJIAEoBRIpCgZzdGF0dXMYCiABKA4yGS5zZXNzaW9uLnYxLlVzZWNhc2VTdGF0dXMSDgoGcmVtYXJrGAsgASgJEikKBnNvdXJjZRgMIAEoDjIZLnNlc3Npb24udjEuU2Vzc2lvblNvdXJjZRIcChRzZXNzaW9uX2Zyb21fdXNlcl9pZBgNIAEoCRIuCgpjcmVhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5sYW5ndWFnZV9ncm91cBgQIAEoCSLYAwoSTGlzdFVzZWNhc2VSZXF1ZXN0EhUKBHBhZ2UYASABKAVCB7pIBBoCKAESHAoJcGFnZV9zaXplGAIgASgFQgm6SAYaBBhkKAESFAoHdXNlcl9pZBgDIAEoCUgAiAEBEhIKBWVtYWlsGAQgASgJSAGIAQESGgoNc2hvd19ob21lcGFnZRgFIAEoCEgCiAEBEhkKDHNob3dfdXNlY2FzZRgGIAEoCEgDiAEBEi4KC3N0YXR1c19saXN0GAcgAygOMhkuc2Vzc2lvbi52MS5Vc2VjYXNlU3RhdHVzEi4KBnNvdXJjZRgIIAEoDjIZLnNlc3Npb24udjEuU2Vzc2lvblNvdXJjZUgEiAEBEiEKFHNlc3Npb25fZnJvbV91c2VyX2lkGAkgASgJSAWIAQESGwoObGFuZ3VhZ2VfZ3JvdXAYCiABKAlIBogBARIcChRtdXN0X3dpdGhfc2Vzc2lvbl9pZBgLIAEoCEIKCghfdXNlcl9pZEIICgZfZW1haWxCEAoOX3Nob3dfaG9tZXBhZ2VCDwoNX3Nob3dfdXNlY2FzZUIJCgdfc291cmNlQhcKFV9zZXNzaW9uX2Zyb21fdXNlcl9pZEIRCg9fbGFuZ3VhZ2VfZ3JvdXAiTwoTTGlzdFVzZWNhc2VSZXNwb25zZRIpCgh1c2VjYXNlcxgBIAMoCzIXLnNlc3Npb24udjEuVXNlY2FzZUluZm8SDQoFdG90YWwYAiABKAMilwQKFFVwZGF0ZVVzZWNhc2VSZXF1ZXN0EhsKCnVzZWNhc2VfaWQYASABKANCB7pIBCICIAASGAoLc2Vzc2lvbl91aWQYAiABKAlIAIgBARIaCg1zaG93X2hvbWVwYWdlGAMgASgISAGIAQESGwoOb3JkZXJfaG9tZXBhZ2UYBCABKAVIAogBARIZCgxzaG93X3VzZWNhc2UYBSABKAhIA4gBARIaCg1vcmRlcl91c2VjYXNlGAYgASgFSASIAQESEwoGcmVtYXJrGAcgASgJSAWIAQESLgoGc3RhdHVzGAggASgOMhkuc2Vzc2lvbi52MS5Vc2VjYXNlU3RhdHVzSAaIAQESLgoGc291cmNlGAkgASgOMhkuc2Vzc2lvbi52MS5TZXNzaW9uU291cmNlSAeIAQESIQoUc2Vzc2lvbl9mcm9tX3VzZXJfaWQYCiABKAlICIgBARIbCg5sYW5ndWFnZV9ncm91cBgLIAEoCUgJiAEBQg4KDF9zZXNzaW9uX3VpZEIQCg5fc2hvd19ob21lcGFnZUIRCg9fb3JkZXJfaG9tZXBhZ2VCDwoNX3Nob3dfdXNlY2FzZUIQCg5fb3JkZXJfdXNlY2FzZUIJCgdfcmVtYXJrQgkKB19zdGF0dXNCCQoHX3NvdXJjZUIXChVfc2Vzc2lvbl9mcm9tX3VzZXJfaWRCEQoPX2xhbmd1YWdlX2dyb3VwIhcKFVVwZGF0ZVVzZWNhc2VSZXNwb25zZSK2AQoSQmxvY2tlZFNlc3Npb25JbmZvEgoKAmlkGAEgASgDEhMKC3Nlc3Npb25fdWlkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSDgoGcmVhc29uGAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIp0BChpMaXN0QmxvY2tlZFNlc3Npb25zUmVxdWVzdBIVCgRwYWdlGAEgASgFQge6SAQaAigBEhwKCXBhZ2Vfc2l6ZRgCIAEoBUIJukgGGgQYZCgBEhgKC3Nlc3Npb25fdWlkGAMgASgJSACIAQESFAoHdXNlcl9pZBgEIAEoCUgBiAEBQg4KDF9zZXNzaW9uX3VpZEIKCghfdXNlcl9pZCJmChtMaXN0QmxvY2tlZFNlc3Npb25zUmVzcG9uc2USOAoQYmxvY2tlZF9zZXNzaW9ucxgBIAMoCzIeLnNlc3Npb24udjEuQmxvY2tlZFNlc3Npb25JbmZvEg0KBXRvdGFsGAIgASgDInMKH1VwZGF0ZVNlc3Npb25CbG9ja1N0YXR1c1JlcXVlc3QSHAoLc2Vzc2lvbl91aWQYASABKAlCB7pIBHICEAESEgoKaXNfYmxvY2tlZBgCIAEoCBITCgZyZWFzb24YAyABKAlIAIgBAUIJCgdfcmVhc29uIiIKIFVwZGF0ZVNlc3Npb25CbG9ja1N0YXR1c1Jlc3BvbnNlIhsKGUdldE5ld1Nlc3Npb25MaW1pdFJlcXVlc3QiMAoPTmV3U2Vzc2lvbkNvdW50Eg4KBm1pbnV0ZRgBIAEoCRINCgVjb3VudBgCIAEoAyKKAQoaR2V0TmV3U2Vzc2lvbkxpbWl0UmVzcG9uc2USGwoTbmV3X3Nlc3Npb25fcGVyX21pbhgBIAEoAxIWCg53aGl0ZV91c2VyX2lkcxgCIAMoCRI3ChJuZXdfc2Vzc2lvbl9jb3VudHMYAyADKAsyGy5zZXNzaW9uLnYxLk5ld1Nlc3Npb25Db3VudCJQChxVcGRhdGVOZXdTZXNzaW9uTGltaXRSZXF1ZXN0EhsKE25ld19zZXNzaW9uX3Blcl9taW4YASABKAMSEwoLd2hpdGVfdXNlcnMYAiADKAkiHwodVXBkYXRlTmV3U2Vzc2lvbkxpbWl0UmVzcG9uc2UiFQoTR2V0UXVldWVJbmZvUmVxdWVzdCJlCglRdWV1ZUluZm8SKQoKcXVldWVfdHlwZRgBIAEoDjIVLnNlc3Npb24udjEuUXVldWVUeXBlEhQKDHF1ZXVlX2xlbmd0aBgCIAEoAxIXCg9tYXhfY29uY3VycmVuY2UYAyABKAMiMQoPUXVldWVDb25maWdJbmZvEh4KFmdsb2JhbF9tYXhfY29uY3VycmVuY2UYASABKAMidAoUR2V0UXVldWVJbmZvUmVzcG9uc2USKQoKcXVldWVfaW5mbxgBIAMoCzIVLnNlc3Npb24udjEuUXVldWVJbmZvEjEKDHF1ZXVlX2NvbmZpZxgCIAEoCzIbLnNlc3Npb24udjEuUXVldWVDb25maWdJbmZvImwKHVNldFF1ZXVlTWF4Q29uY3VycmVuY2VSZXF1ZXN0EikKCnF1ZXVlX3R5cGUYASABKA4yFS5zZXNzaW9uLnYxLlF1ZXVlVHlwZRIgCg9tYXhfY29uY3VycmVuY2UYAiABKANCB7pIBCICIAAiUwoeU2V0UXVldWVNYXhDb25jdXJyZW5jZVJlc3BvbnNlEjEKDHF1ZXVlX2NvbmZpZxgBIAEoCzIbLnNlc3Npb24udjEuUXVldWVDb25maWdJbmZvIkkKHlNldEdsb2JhbE1heENvbmN1cnJlbmNlUmVxdWVzdBInChZnbG9iYWxfbWF4X2NvbmN1cnJlbmNlGAEgASgDQge6SAQiAiAAIlQKH1NldEdsb2JhbE1heENvbmN1cnJlbmNlUmVzcG9uc2USMQoMcXVldWVfY29uZmlnGAEgASgLMhsuc2Vzc2lvbi52MS5RdWV1ZUNvbmZpZ0luZm8iPgoRQ2xlYXJRdWV1ZVJlcXVlc3QSKQoKcXVldWVfdHlwZRgBIAEoDjIVLnNlc3Npb24udjEuUXVldWVUeXBlIl4KEkNsZWFyUXVldWVSZXNwb25zZRIVCg10YXNrc19yZW1vdmVkGAEgASgDEjEKDHF1ZXVlX2NvbmZpZxgCIAEoCzIbLnNlc3Npb24udjEuUXVldWVDb25maWdJbmZvImEKJUJhdGNoVXBkYXRlUXVldWVNYXhDb25jdXJyZW5jZVJlcXVlc3QSOAoNcXVldWVfdXBkYXRlcxgBIAMoCzIXLnNlc3Npb24udjEuUXVldWVVcGRhdGVCCLpIBZIBAggBIloKC1F1ZXVlVXBkYXRlEikKCnF1ZXVlX3R5cGUYASABKA4yFS5zZXNzaW9uLnYxLlF1ZXVlVHlwZRIgCg9tYXhfY29uY3VycmVuY2UYAiABKANCB7pIBCICIAAiUwomQmF0Y2hVcGRhdGVRdWV1ZU1heENvbmN1cnJlbmNlUmVzcG9uc2USKQoKcXVldWVfaW5mbxgBIAMoCzIVLnNlc3Npb24udjEuUXVldWVJbmZvIhkKF0dldFF1ZXVlU2V0dGluZ3NSZXF1ZXN0InoKDFF1ZXVlU2V0dGluZxIpCgpxdWV1ZV90eXBlGAEgASgOMhUuc2Vzc2lvbi52MS5RdWV1ZVR5cGUSJgoeY29uc3VtcHRpb25fc3BlZWRfdGFza19wZXJfbWluGAIgASgBEhcKD21heF93YWl0aW5nX21pbhgDIAEoBSJMChhHZXRRdWV1ZVNldHRpbmdzUmVzcG9uc2USMAoOcXVldWVfc2V0dGluZ3MYASADKAsyGC5zZXNzaW9uLnYxLlF1ZXVlU2V0dGluZyJLChdTZXRRdWV1ZVNldHRpbmdzUmVxdWVzdBIwCg5xdWV1ZV9zZXR0aW5ncxgBIAMoCzIYLnNlc3Npb24udjEuUXVldWVTZXR0aW5nIhoKGFNldFF1ZXVlU2V0dGluZ3NSZXNwb25zZSKXAwoaTGlzdFNlc3Npb25GZWVkYmFja1JlcXVlc3QSFQoEcGFnZRgBIAEoBUIHukgEGgIoARIcCglwYWdlX3NpemUYAiABKAVCCbpIBhoEGGQoBRINCgVzY29yZRgDIAMoBRIMCgR1c2VyGAQgASgJEhMKC3Nlc3Npb25fdWlkGAUgASgJEjYKBnN0YXR1cxgGIAEoDjIhLnNlc3Npb24udjEuU2Vzc2lvbkZlZWRiYWNrU3RhdHVzSACIAQESHwoSYWxsb3dfY29sbGVjdF9pbmZvGAcgASgISAGIAQESPgoPcm9sbGJhY2tfc3RhdHVzGAggASgOMiAuc2Vzc2lvbi52MS5DcmVkaXRSb2xsYmFja1N0YXR1c0gCiAEBEjIKDGNyZWRpdF9yYW5nZRgJIAEoCzIXLnNlc3Npb24udjEuQ3JlZGl0UmFuZ2VIA4gBAUIJCgdfc3RhdHVzQhUKE19hbGxvd19jb2xsZWN0X2luZm9CEgoQX3JvbGxiYWNrX3N0YXR1c0IPCg1fY3JlZGl0X3JhbmdlIkEKC0NyZWRpdFJhbmdlEhAKA21pbhgBIAEoBUgAiAEBEhAKA21heBgCIAEoBUgBiAEBQgYKBF9taW5CBgoEX21heCJbChtMaXN0U2Vzc2lvbkZlZWRiYWNrUmVzcG9uc2USLQoIZmVlZGJhY2sYASADKAsyGy5zZXNzaW9uLnYxLlNlc3Npb25GZWVkYmFjaxINCgV0b3RhbBgCIAEoAyK/AwoPU2Vzc2lvbkZlZWRiYWNrEg0KBXNjb3JlGAEgASgFEg8KB2NvbnRlbnQYAiABKAkSEwoLc2Vzc2lvbl91aWQYAyABKAkSGgoSYWxsb3dfY29sbGVjdF9pbmZvGAQgASgIEjEKBnN0YXR1cxgFIAEoDjIhLnNlc3Npb24udjEuU2Vzc2lvbkZlZWRiYWNrU3RhdHVzEg8KB3VzZXJfaWQYBiABKAkSEQoJdXNlcl9uYW1lGAcgASgJEg0KBWVtYWlsGAggASgJEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCWlzX3NoYXJlZBgLIAEoCEgAiAEBEjkKD3JvbGxiYWNrX3N0YXR1cxgMIAEoDjIgLnNlc3Npb24udjEuQ3JlZGl0Um9sbGJhY2tTdGF0dXMSFgoOY29zdGVkX2NyZWRpdHMYDSABKAUSHAoUY2FuX3JvbGxiYWNrX2NyZWRpdHMYDiABKAVCDAoKX2lzX3NoYXJlZCIuChdTaWduYXR1cmVTZXNzaW9uUmVxdWVzdBITCgtzZXNzaW9uX3VpZBgBIAEoCSIpChhTaWduYXR1cmVTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkqegoNVXNlY2FzZVN0YXR1cxIeChpVU0VDQVNFX1NUQVRVU19VTlNQRUNJRklFRBAAEhcKE1VTRUNBU0VfU1RBVFVTX1BBU1MQARIXChNVU0VDQVNFX1NUQVRVU19ERU5ZEAISFwoTVVNFQ0FTRV9TVEFUVVNfVE9ETxADKmUKDVNlc3Npb25Tb3VyY2USHgoaU0VTU0lPTl9TT1VSQ0VfVU5TUEVDSUZJRUQQABIXChNTRVNTSU9OX1NPVVJDRV9VU0VSEAESGwoXU0VTU0lPTl9TT1VSQ0VfT0ZGSUNJQUwQAiqXAQoJUXVldWVUeXBlEhoKFlFVRVVFX1RZUEVfVU5TUEVDSUZJRUQQABISCg5RVUVVRV9UWVBFX0FMTBABEhYKElFVRVVFX1RZUEVfREVGQVVMVBACEhIKDlFVRVVFX1RZUEVfVklQEAMSFQoRUVVFVUVfVFlQRV9CVUZGRVIQBBIXChNRVUVVRV9UWVBFX0VEVV9URUFNEAUqYAoUQ3JlZGl0Um9sbGJhY2tTdGF0dXMSIgoeQ1JFRElUX1JPTExCQUNLX1NUQVRVU19QRU5ESU5HEAASJAogQ1JFRElUX1JPTExCQUNLX1NUQVRVU19QUk9DRVNTRUQQASquAQoVU2Vzc2lvbkZlZWRiYWNrU3RhdHVzEiMKH1NFU1NJT05fRkVFREJBQ0tfU1RBVFVTX1BFTkRJTkcQABImCiJTRVNTSU9OX0ZFRURCQUNLX1NUQVRVU19QUk9DRVNTSU5HEAESJAogU0VTU0lPTl9GRUVEQkFDS19TVEFUVVNfUkVTT0xWRUQQAhIiCh5TRVNTSU9OX0ZFRURCQUNLX1NUQVRVU19DTE9TRUQQAzLJDwoTU2Vzc2lvbkFkbWluU2VydmljZRJOCgtMaXN0VXNlY2FzZRIeLnNlc3Npb24udjEuTGlzdFVzZWNhc2VSZXF1ZXN0Gh8uc2Vzc2lvbi52MS5MaXN0VXNlY2FzZVJlc3BvbnNlElQKDVVwZGF0ZVVzZWNhc2USIC5zZXNzaW9uLnYxLlVwZGF0ZVVzZWNhc2VSZXF1ZXN0GiEuc2Vzc2lvbi52MS5VcGRhdGVVc2VjYXNlUmVzcG9uc2USZgoTTGlzdEJsb2NrZWRTZXNzaW9ucxImLnNlc3Npb24udjEuTGlzdEJsb2NrZWRTZXNzaW9uc1JlcXVlc3QaJy5zZXNzaW9uLnYxLkxpc3RCbG9ja2VkU2Vzc2lvbnNSZXNwb25zZRJ1ChhVcGRhdGVTZXNzaW9uQmxvY2tTdGF0dXMSKy5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25CbG9ja1N0YXR1c1JlcXVlc3QaLC5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25CbG9ja1N0YXR1c1Jlc3BvbnNlEmMKEkdldE5ld1Nlc3Npb25MaW1pdBIlLnNlc3Npb24udjEuR2V0TmV3U2Vzc2lvbkxpbWl0UmVxdWVzdBomLnNlc3Npb24udjEuR2V0TmV3U2Vzc2lvbkxpbWl0UmVzcG9uc2USbAoVVXBkYXRlTmV3U2Vzc2lvbkxpbWl0Eiguc2Vzc2lvbi52MS5VcGRhdGVOZXdTZXNzaW9uTGltaXRSZXF1ZXN0Gikuc2Vzc2lvbi52MS5VcGRhdGVOZXdTZXNzaW9uTGltaXRSZXNwb25zZRJRCgxHZXRRdWV1ZUluZm8SHy5zZXNzaW9uLnYxLkdldFF1ZXVlSW5mb1JlcXVlc3QaIC5zZXNzaW9uLnYxLkdldFF1ZXVlSW5mb1Jlc3BvbnNlEm8KFlNldFF1ZXVlTWF4Q29uY3VycmVuY2USKS5zZXNzaW9uLnYxLlNldFF1ZXVlTWF4Q29uY3VycmVuY2VSZXF1ZXN0Giouc2Vzc2lvbi52MS5TZXRRdWV1ZU1heENvbmN1cnJlbmNlUmVzcG9uc2UScgoXU2V0R2xvYmFsTWF4Q29uY3VycmVuY2USKi5zZXNzaW9uLnYxLlNldEdsb2JhbE1heENvbmN1cnJlbmNlUmVxdWVzdBorLnNlc3Npb24udjEuU2V0R2xvYmFsTWF4Q29uY3VycmVuY2VSZXNwb25zZRKHAQoeQmF0Y2hVcGRhdGVRdWV1ZU1heENvbmN1cnJlbmNlEjEuc2Vzc2lvbi52MS5CYXRjaFVwZGF0ZVF1ZXVlTWF4Q29uY3VycmVuY2VSZXF1ZXN0GjIuc2Vzc2lvbi52MS5CYXRjaFVwZGF0ZVF1ZXVlTWF4Q29uY3VycmVuY2VSZXNwb25zZRJLCgpDbGVhclF1ZXVlEh0uc2Vzc2lvbi52MS5DbGVhclF1ZXVlUmVxdWVzdBoeLnNlc3Npb24udjEuQ2xlYXJRdWV1ZVJlc3BvbnNlEl0KEEdldFF1ZXVlU2V0dGluZ3MSIy5zZXNzaW9uLnYxLkdldFF1ZXVlU2V0dGluZ3NSZXF1ZXN0GiQuc2Vzc2lvbi52MS5HZXRRdWV1ZVNldHRpbmdzUmVzcG9uc2USXQoQU2V0UXVldWVTZXR0aW5ncxIjLnNlc3Npb24udjEuU2V0UXVldWVTZXR0aW5nc1JlcXVlc3QaJC5zZXNzaW9uLnYxLlNldFF1ZXVlU2V0dGluZ3NSZXNwb25zZRJmChNMaXN0U2Vzc2lvbkZlZWRiYWNrEiYuc2Vzc2lvbi52MS5MaXN0U2Vzc2lvbkZlZWRiYWNrUmVxdWVzdBonLnNlc3Npb24udjEuTGlzdFNlc3Npb25GZWVkYmFja1Jlc3BvbnNlEk4KC0xpc3RTZXNzaW9uEh4uc2Vzc2lvbi52MS5MaXN0U2Vzc2lvblJlcXVlc3QaHy5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uUmVzcG9uc2USbwoWUm9sbGJhY2tTZXNzaW9uQ3JlZGl0cxIpLnNlc3Npb24udjEuUm9sbGJhY2tTZXNzaW9uQ3JlZGl0c1JlcXVlc3QaKi5zZXNzaW9uLnYxLlJvbGxiYWNrU2Vzc2lvbkNyZWRpdHNSZXNwb25zZRKEAQodUm9sbGJhY2tTZXNzaW9uRmVlZGJhY2tDcmVkaXQSMC5zZXNzaW9uLnYxLlJvbGxiYWNrU2Vzc2lvbkZlZWRiYWNrQ3JlZGl0UmVxdWVzdBoxLnNlc3Npb24udjEuUm9sbGJhY2tTZXNzaW9uRmVlZGJhY2tDcmVkaXRSZXNwb25zZRJ+ChtVcGRhdGVTZXNzaW9uRmVlZGJhY2tTdGF0dXMSLi5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25GZWVkYmFja1N0YXR1c1JlcXVlc3QaLy5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25GZWVkYmFja1N0YXR1c1Jlc3BvbnNlEl0KEFNpZ25hdHVyZVNlc3Npb24SIy5zZXNzaW9uLnYxLlNpZ25hdHVyZVNlc3Npb25SZXF1ZXN0GiQuc2Vzc2lvbi52MS5TaWduYXR1cmVTZXNzaW9uUmVzcG9uc2VCrQEKDmNvbS5zZXNzaW9uLnYxQhFTZXNzaW9uQWRtaW5Qcm90b1ABWj9naXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [Ge, j]) , a1 = z(c1, 0) , d1 = x("CiZzZXNzaW9uL3YxL2NvbW11bml0eV9JbnRlcmFjdGlvbi5wcm90bxIKc2Vzc2lvbi52MSJsChtDb21tdW5pdHlVc2VjYXNlTGlrZVJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhEKCXJlY29yZF9pZBgCIAEoCRInCglsaWtlX3R5cGUYAyABKA4yFC5zZXNzaW9uLnYxLkxpa2VUeXBlIk8KHENvbW11bml0eVVzZWNhc2VMaWtlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEg0KBWNvdW50GAMgASgDKlAKCExpa2VUeXBlEhkKFUxJS0VfVFlQRV9VTlNQRUNJRklFRBAAEhIKDkxJS0VfVFlQRV9MSUtFEAESFQoRTElLRV9UWVBFX0RJU0xJS0UQAjJ4ChtDb21tdW5pdHlJbnRlcmFjdGlvblNlcnZpY2USWQoETGlrZRInLnNlc3Npb24udjEuQ29tbXVuaXR5VXNlY2FzZUxpa2VSZXF1ZXN0Giguc2Vzc2lvbi52MS5Db21tdW5pdHlVc2VjYXNlTGlrZVJlc3BvbnNlQrUBCg5jb20uc2Vzc2lvbi52MUIZQ29tbXVuaXR5SW50ZXJhY3Rpb25Qcm90b1ABWj9naXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [j]) , s1 = z(d1, 0) , In = x("Ch1zZXNzaW9uL3YxL3Nlc3Npb25fYmFzZS5wcm90bxIKc2Vzc2lvbi52MSIzCgtTZXNzaW9uSW5mbxINCgV0aXRsZRgBIAEoCRIVCg11c2VyX3F1ZXN0aW9uGAIgASgJIlwKCVNwYWNlSW5mbxINCgV0aXRsZRgBIAEoCRISCgpzY3JlZW5zaG90GAIgASgJEhEKCXNwYWNlX3VybBgDIAEoCRIZChFpc19zZXNzaW9uX3B1YmxpYxgEIAEoCCJyCgdDcmVhdG9yEgwKBG5hbWUYASABKAkSDQoFZW1haWwYAiABKAkSDgoGYXZhdGFyGAMgASgJEiwKCXVzZXJfdHlwZRgEIAEoDjIULnNlc3Npb24udjEuVXNlclR5cGVIAIgBAUIMCgpfdXNlcl90eXBlIq8DChRDb21tdW5pdHlVc2VjYXNlSW5mbxIkCgdjcmVhdG9yGAEgASgLMhMuc2Vzc2lvbi52MS5DcmVhdG9yEhIKCnJlY29yZF91aWQYAiABKAkSEwoLc2Vzc2lvbl91aWQYAyABKAkSLwoNcmVzb3VyY2VfdHlwZRgEIAEoDjIYLnNlc3Npb24udjEuUmVzb3VyY2VUeXBlEhMKC3Jlc291cmNlX2lkGAUgASgJEg0KBWdyb3VwGAYgASgJEg4KBmxvY2FsZRgHIAEoCRIzCg9yZXNvdXJjZV9zb3VyY2UYCCABKA4yGi5zZXNzaW9uLnYxLlJlc291cmNlU291cmNlEhYKDmZhdm9yaXRlX2NvdW50GAkgASgDEjIKDHNlc3Npb25faW5mbxgKIAEoCzIXLnNlc3Npb24udjEuU2Vzc2lvbkluZm9IAIgBARIuCgpzcGFjZV9pbmZvGAsgASgLMhUuc2Vzc2lvbi52MS5TcGFjZUluZm9IAYgBARISCgpsaWtlX2NvdW50GAwgASgDQg8KDV9zZXNzaW9uX2luZm9CDQoLX3NwYWNlX2luZm8i9QEKDENvbGxhYm9yYXRvchIUCgd1c2VyX2lkGAEgASgJSACIAQESDQoFZW1haWwYAiABKAkSEQoEbmFtZRgDIAEoCUgBiAEBEhMKBmF2YXRhchgEIAEoCUgCiAEBEjYKCnBlcm1pc3Npb24YBSABKA4yIi5zZXNzaW9uLnYxLkNvbGxhYm9yYXRvclBlcm1pc3Npb24SEAoIaXNfb3duZXIYBiABKAgSLgoGc3RhdHVzGAcgASgOMh4uc2Vzc2lvbi52MS5Db2xsYWJvcmF0b3JTdGF0dXNCCgoIX3VzZXJfaWRCBwoFX25hbWVCCQoHX2F2YXRhciL2AQoPU2Vzc2lvbkZpbGVJdGVtEhQKDHNhbmRib3hfcGF0aBgBIAEoCRIQCghmaWxlX3VybBgCIAEoCRIwCgpmaWxlX3N0YWdlGAQgASgOMhwuc2Vzc2lvbi52MS5TZXNzaW9uRmlsZVN0YWdlEi4KCWZpbGVfdHlwZRgFIAEoDjIbLnNlc3Npb24udjEuU2Vzc2lvbkZpbGVUeXBlEjIKC2ZpbGVfZWRpdG9yGAYgASgOMh0uc2Vzc2lvbi52MS5TZXNzaW9uRmlsZUVkaXRvchITCgtzZXNzaW9uX3VpZBgHIAEoCRIQCghldmVudF9pZBgIIAEoCSKvAgofU2Vzc2lvbkZpbGVJdGVtV2l0aFNlc3Npb25UaXRsZRIuCglmaWxlX2l0ZW0YASABKAsyGy5zZXNzaW9uLnYxLlNlc3Npb25GaWxlSXRlbRIVCg1zZXNzaW9uX3RpdGxlGAIgASgJEhUKCHNoYXJlX2lkGAMgASgJSACIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglmaWxlX25hbWUYBSABKAkSEwoLdmVyc2lvbl91aWQYBiABKAkSGgoSaXNfbG9hZF90b19zYW5kYm94GAcgASgIEhgKC3NoYXJlX3RpdGxlGAggASgJSAGIAQFCCwoJX3NoYXJlX2lkQg4KDF9zaGFyZV90aXRsZSqmAQoNQWdlbnRUYXNrTW9kZRIfChtBR0VOVF9UQVNLX01PREVfVU5TUEVDSUZJRUQQABIcChhBR0VOVF9UQVNLX01PREVfU1RBTkRBUkQQARIfChtBR0VOVF9UQVNLX01PREVfSElHSF9FRkZPUlQQAhIYChRBR0VOVF9UQVNLX01PREVfTElURRADEhsKF0FHRU5UX1RBU0tfTU9ERV9ESVNDVVNTEAQqXQoLQXVkaXRTdGF0dXMSGAoUQVVESVRfU1RBVFVTX1BFTkRJTkcQABIZChVBVURJVF9TVEFUVVNfQVBQUk9WRUQQARIZChVBVURJVF9TVEFUVVNfUkVKRUNURUQQAiphCgxSZXNvdXJjZVR5cGUSHQoZUkVTT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEhkKFVJFU09VUkNFX1RZUEVfU0VTU0lPThABEhcKE1JFU09VUkNFX1RZUEVfU1BBQ0UQAippCg5SZXNvdXJjZVNvdXJjZRIfChtSRVNPVVJDRV9TT1VSQ0VfVU5TUEVDSUZJRUQQABIcChhSRVNPVVJDRV9TT1VSQ0VfT0ZGSUNJQUwQARIYChRSRVNPVVJDRV9TT1VSQ0VfVVNFUhACKlEKCFVzZXJUeXBlEhkKFVVTRVJfVFlQRV9VTlNQRUNJRklFRBAAEhYKElVTRVJfVFlQRV9PRkZJQ0lBTBABEhIKDlVTRVJfVFlQRV9VU0VSEAIqewoSQ29sbGFib3JhdG9yU3RhdHVzEiMKH0NPTExBQk9SQVRPUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtDT0xMQUJPUkFUT1JfU1RBVFVTX1JFTU9WRUQQARIfChtDT0xMQUJPUkFUT1JfU1RBVFVTX0RFTEVURUQQAiqQAQoWQ29sbGFib3JhdG9yUGVybWlzc2lvbhInCiNDT0xMQUJPUkFUT1JfUEVSTUlTU0lPTl9VTlNQRUNJRklFRBAAEiUKIUNPTExBQk9SQVRPUl9QRVJNSVNTSU9OX1JFQURfT05MWRABEiYKIkNPTExBQk9SQVRPUl9QRVJNSVNTSU9OX1JFQURfV1JJVEUQAipRCg5FeHBlcmltZW50VHlwZRIfChtFWFBFUklNRU5UX1RZUEVfVU5TUEVDSUZJRUQQABIeChpFWFBFUklNRU5UX1RZUEVfT05CT0FSRElORxABKooBCg9TZXNzaW9uRmlsZVR5cGUSIQodU0VTU0lPTl9GSUxFX1RZUEVfVU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX0ZJTEVfVFlQRV9GSUxFEAESGwoXU0VTU0lPTl9GSUxFX1RZUEVfSU1BR0UQAhIbChdTRVNTSU9OX0ZJTEVfVFlQRV9TTElERRADKnYKEFNlc3Npb25GaWxlU3RhZ2USIgoeU0VTU0lPTl9GSUxFX1NUQUdFX1VOU1BFQ0lGSUVEEAASHgoaU0VTU0lPTl9GSUxFX1NUQUdFX1BST0NFU1MQARIeChpTRVNTSU9OX0ZJTEVfU1RBR0VfUFJPRFVDVBACKngKEVNlc3Npb25GaWxlRWRpdG9yEiMKH1NFU1NJT05fRklMRV9FRElUT1JfVU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX0ZJTEVfRURJVE9SX0FJEAESIgoeU0VTU0lPTl9GSUxFX0VESVRPUl9VU0VSX09XTkVSEAIqmQEKFlNlc3Npb25GaWxlQ29udmVydFR5cGUSKQolU0VTU0lPTl9GSUxFX0NPTlZFUlRfVFlQRV9VTlNQRUNJRklFRBAAEikKJVNFU1NJT05fRklMRV9DT05WRVJUX1RZUEVfSFRNTF9UT19QREYQARIpCiVTRVNTSU9OX0ZJTEVfQ09OVkVSVF9UWVBFX0hUTUxfVE9fUFBUEAIq7QEKGFNlc3Npb25GaWxlQ29udmVydFN0YXR1cxIrCidTRVNTSU9OX0ZJTEVfQ09OVkVSVF9TVEFUVVNfVU5TUEVDSUZJRUQQABInCiNTRVNTSU9OX0ZJTEVfQ09OVkVSVF9TVEFUVVNfUEVORElORxABEioKJlNFU1NJT05fRklMRV9DT05WRVJUX1NUQVRVU19DT05WRVJUSU5HEAISJwojU0VTU0lPTl9GSUxFX0NPTlZFUlRfU1RBVFVTX1NVQ0NFU1MQAxImCiJTRVNTSU9OX0ZJTEVfQ09OVkVSVF9TVEFUVVNfRkFJTEVEEARCrAEKDmNvbS5zZXNzaW9uLnYxQhBTZXNzaW9uQmFzZVByb3RvUAFaP2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9zZXNzaW9uL3YxO3Nlc3Npb252MaICA1NYWKoCClNlc3Npb24uVjHKAgpTZXNzaW9uXFYx4gIWU2Vzc2lvblxWMVxHUEJNZXRhZGF0YeoCC1Nlc3Npb246OlYxYgZwcm90bzM", [j]) , u1 = x("CiRzZXNzaW9uL3YxL3Nlc3Npb25fY29sbGFib3JhdGUucHJvdG8SCnNlc3Npb24udjEiTQoYTGlzdENvbGxhYm9yYXRvcnNSZXF1ZXN0EiEKC3Nlc3Npb25fdWlkGAEgASgJQge6SARyAhABSACIAQFCDgoMX3Nlc3Npb25fdWlkIkwKGUxpc3RDb2xsYWJvcmF0b3JzUmVzcG9uc2USLwoNY29sbGFib3JhdG9ycxgBIAMoCzIYLnNlc3Npb24udjEuQ29sbGFib3JhdG9yIjIKGENoZWNrQWxwaGFCeUVtYWlsUmVxdWVzdBIWCgVlbWFpbBgBIAEoCUIHukgEcgIQASItChlDaGVja0FscGhhQnlFbWFpbFJlc3BvbnNlEhAKCGlzX2FscGhhGAEgASgIImgKFFNlbmRWaWV3RW1haWxSZXF1ZXN0EhwKC3Nlc3Npb25fdWlkGAEgASgJQge6SARyAhABEhYKBWVtYWlsGAIgASgJQge6SARyAhABEhoKCXZpZXdfbGluaxgDIAEoCUIHukgEcgIQASIXChVTZW5kVmlld0VtYWlsUmVzcG9uc2UipwEKGUludml0ZUNvbGxhYm9yYXRvclJlcXVlc3QSHAoLc2Vzc2lvbl91aWQYASABKAlCB7pIBHICEAESFgoFZW1haWwYAiABKAlCB7pIBHICEAESNgoKcGVybWlzc2lvbhgDIAEoDjIiLnNlc3Npb24udjEuQ29sbGFib3JhdG9yUGVybWlzc2lvbhIcCgtpbnZpdGVfbGluaxgEIAEoCUIHukgEcgIQASJjChpJbnZpdGVDb2xsYWJvcmF0b3JSZXNwb25zZRIVCg1pc19hbHBoYV91c2VyGAEgASgIEi4KDGNvbGxhYm9yYXRvchgCIAEoCzIYLnNlc3Npb24udjEuQ29sbGFib3JhdG9yIkcKGVJlbW92ZUNvbGxhYm9yYXRvclJlcXVlc3QSHAoLc2Vzc2lvbl91aWQYASABKAlCB7pIBHICEAESDAoEdXNlchgCIAEoCSIcChpSZW1vdmVDb2xsYWJvcmF0b3JSZXNwb25zZSKJAQojVXBkYXRlQ29sbGFib3JhdG9yUGVybWlzc2lvblJlcXVlc3QSHAoLc2Vzc2lvbl91aWQYASABKAlCB7pIBHICEAESDAoEdXNlchgCIAEoCRI2CgpwZXJtaXNzaW9uGAMgASgOMiIuc2Vzc2lvbi52MS5Db2xsYWJvcmF0b3JQZXJtaXNzaW9uIiYKJFVwZGF0ZUNvbGxhYm9yYXRvclBlcm1pc3Npb25SZXNwb25zZSIzChNBY2NlcHRJbnZpdGVSZXF1ZXN0EhwKC3Nlc3Npb25fdWlkGAEgASgJQge6SARyAhABIhYKFEFjY2VwdEludml0ZVJlc3BvbnNlIjMKE1JlamVjdEludml0ZVJlcXVlc3QSHAoLc2Vzc2lvbl91aWQYASABKAlCB7pIBHICEAEiFgoUUmVqZWN0SW52aXRlUmVzcG9uc2UyuQYKGVNlc3Npb25Db2xsYWJvcmF0ZVNlcnZpY2USYgoRTGlzdENvbGxhYm9yYXRvcnMSJC5zZXNzaW9uLnYxLkxpc3RDb2xsYWJvcmF0b3JzUmVxdWVzdBolLnNlc3Npb24udjEuTGlzdENvbGxhYm9yYXRvcnNSZXNwb25zZSIAEmIKEUNoZWNrQWxwaGFCeUVtYWlsEiQuc2Vzc2lvbi52MS5DaGVja0FscGhhQnlFbWFpbFJlcXVlc3QaJS5zZXNzaW9uLnYxLkNoZWNrQWxwaGFCeUVtYWlsUmVzcG9uc2UiABJWCg1TZW5kVmlld0VtYWlsEiAuc2Vzc2lvbi52MS5TZW5kVmlld0VtYWlsUmVxdWVzdBohLnNlc3Npb24udjEuU2VuZFZpZXdFbWFpbFJlc3BvbnNlIgASZQoSSW52aXRlQ29sbGFib3JhdG9yEiUuc2Vzc2lvbi52MS5JbnZpdGVDb2xsYWJvcmF0b3JSZXF1ZXN0GiYuc2Vzc2lvbi52MS5JbnZpdGVDb2xsYWJvcmF0b3JSZXNwb25zZSIAEmUKElJlbW92ZUNvbGxhYm9yYXRvchIlLnNlc3Npb24udjEuUmVtb3ZlQ29sbGFib3JhdG9yUmVxdWVzdBomLnNlc3Npb24udjEuUmVtb3ZlQ29sbGFib3JhdG9yUmVzcG9uc2UiABKDAQocVXBkYXRlQ29sbGFib3JhdG9yUGVybWlzc2lvbhIvLnNlc3Npb24udjEuVXBkYXRlQ29sbGFib3JhdG9yUGVybWlzc2lvblJlcXVlc3QaMC5zZXNzaW9uLnYxLlVwZGF0ZUNvbGxhYm9yYXRvclBlcm1pc3Npb25SZXNwb25zZSIAElMKDEFjY2VwdEludml0ZRIfLnNlc3Npb24udjEuQWNjZXB0SW52aXRlUmVxdWVzdBogLnNlc3Npb24udjEuQWNjZXB0SW52aXRlUmVzcG9uc2UiABJTCgxSZWplY3RJbnZpdGUSHy5zZXNzaW9uLnYxLlJlamVjdEludml0ZVJlcXVlc3QaIC5zZXNzaW9uLnYxLlJlamVjdEludml0ZVJlc3BvbnNlIgBCswEKDmNvbS5zZXNzaW9uLnYxQhdTZXNzaW9uQ29sbGFib3JhdGVQcm90b1ABWj9naXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [Ge, In]) , g1 = z(u1, 0) , h1 = x("Ch9zZXNzaW9uL3YxL3Nlc3Npb25fcHVibGljLnByb3RvEgpzZXNzaW9uLnYxIokBChRTdWJtaXRVc2VjYXNlUmVxdWVzdBIqCgVlbWFpbBgBIAEoCUIbukgYchYyFF5bXkBdK0BbXkBdK1wuW15AXSskEhsKB2NvbnRlbnQYAiABKAlCCrpIB3IFEAEYkE4SGAoLc2Vzc2lvbl91aWQYAyABKAlIAIgBAUIOCgxfc2Vzc2lvbl91aWQiKwoVU3VibWl0VXNlY2FzZVJlc3BvbnNlEhIKCnVzZWNhc2VfaWQYASABKAMi2wEKElVzZWNhc2VTZXNzaW9uSW5mbxITCgtzZXNzaW9uX3VpZBgBIAEoCRIVCg1zZXNzaW9uX3RpdGxlGAIgASgJEhQKDHNlc3Npb25faWNvbhgDIAEoCRIPCgd1c2VyX2lkGAQgASgJEhIKCnVzZXJfZW1haWwYBSABKAkSDwoHY29udGVudBgGIAEoCRINCgVvcmRlchgHIAEoBRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZsb2NhbGUYCSABKAkieAoaTGlzdFVzZWNhc2VTZXNzaW9uc1JlcXVlc3QSFQoNc2hvd19ob21lcGFnZRgBIAEoCBIUCgxzaG93X3VzZWNhc2UYAiABKAgSDgoGbG9jYWxlGAMgASgJEg0KBWxpbWl0GAQgASgDEg4KBm9mZnNldBgFIAEoAyJPChtMaXN0VXNlY2FzZVNlc3Npb25zUmVzcG9uc2USMAoIc2Vzc2lvbnMYASADKAsyHi5zZXNzaW9uLnYxLlVzZWNhc2VTZXNzaW9uSW5mbyK/AgocTGlzdENvbW11bml0eVVzZWNhc2VzUmVxdWVzdBIYCgVsaW1pdBgBIAEoA0IJukgGIgQYZCAAEhcKBm9mZnNldBgCIAEoA0IHukgEIgIoABI0Cg1yZXNvdXJjZV90eXBlGAMgASgOMhguc2Vzc2lvbi52MS5SZXNvdXJjZVR5cGVIAIgBARI4Cg9yZXNvdXJjZV9zb3VyY2UYBCABKA4yGi5zZXNzaW9uLnYxLlJlc291cmNlU291cmNlSAGIAQESEwoGbG9jYWxlGAUgASgJSAKIAQESEgoFZ3JvdXAYBiABKAlIA4gBARIQCgN0YWcYByABKAlIBIgBAUIQCg5fcmVzb3VyY2VfdHlwZUISChBfcmVzb3VyY2Vfc291cmNlQgkKB19sb2NhbGVCCAoGX2dyb3VwQgYKBF90YWciYgodTGlzdENvbW11bml0eVVzZWNhc2VzUmVzcG9uc2USMgoIdXNlY2FzZXMYASADKAsyIC5zZXNzaW9uLnYxLkNvbW11bml0eVVzZWNhc2VJbmZvEg0KBXRvdGFsGAIgASgDIjoKH0JhdGNoR2V0Q29tbXVuaXR5VXNlY2FzZVJlcXVlc3QSFwoPcmVjb3JkX3VpZF9saXN0GAEgAygJIloKIEJhdGNoR2V0Q29tbXVuaXR5VXNlY2FzZVJlc3BvbnNlEjYKDHVzZWNhc2VfbGlzdBgBIAMoCzIgLnNlc3Npb24udjEuQ29tbXVuaXR5VXNlY2FzZUluZm8iLwobR2V0U2hhcmVkU2Vzc2lvbkZpbGVSZXF1ZXN0EhAKCHNoYXJlX2lkGAEgASgJIpUBChxHZXRTaGFyZWRTZXNzaW9uRmlsZVJlc3BvbnNlEhMKC3Nlc3Npb25fdWlkGAEgASgJEhQKDHNhbmRib3hfcGF0aBgCIAEoCRIQCghmaWxlX3VybBgDIAEoCRIRCglmaWxlX25hbWUYBCABKAkSEAoIZWRpdGFibGUYBSABKAgSEwoLc2hhcmVfdGl0bGUYBiABKAkypgQKFFNlc3Npb25QdWJsaWNTZXJ2aWNlElQKDVN1Ym1pdFVzZWNhc2USIC5zZXNzaW9uLnYxLlN1Ym1pdFVzZWNhc2VSZXF1ZXN0GiEuc2Vzc2lvbi52MS5TdWJtaXRVc2VjYXNlUmVzcG9uc2USZgoTTGlzdFVzZWNhc2VTZXNzaW9ucxImLnNlc3Npb24udjEuTGlzdFVzZWNhc2VTZXNzaW9uc1JlcXVlc3QaJy5zZXNzaW9uLnYxLkxpc3RVc2VjYXNlU2Vzc2lvbnNSZXNwb25zZRJsChVMaXN0Q29tbXVuaXR5VXNlY2FzZXMSKC5zZXNzaW9uLnYxLkxpc3RDb21tdW5pdHlVc2VjYXNlc1JlcXVlc3QaKS5zZXNzaW9uLnYxLkxpc3RDb21tdW5pdHlVc2VjYXNlc1Jlc3BvbnNlEnUKGEJhdGNoR2V0Q29tbXVuaXR5VXNlY2FzZRIrLnNlc3Npb24udjEuQmF0Y2hHZXRDb21tdW5pdHlVc2VjYXNlUmVxdWVzdBosLnNlc3Npb24udjEuQmF0Y2hHZXRDb21tdW5pdHlVc2VjYXNlUmVzcG9uc2USawoUR2V0U2hhcmVkU2Vzc2lvbkZpbGUSJy5zZXNzaW9uLnYxLkdldFNoYXJlZFNlc3Npb25GaWxlUmVxdWVzdBooLnNlc3Npb24udjEuR2V0U2hhcmVkU2Vzc2lvbkZpbGVSZXNwb25zZSIAQq4BCg5jb20uc2Vzc2lvbi52MUISU2Vzc2lvblB1YmxpY1Byb3RvUAFaP2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9zZXNzaW9uL3YxO3Nlc3Npb252MaICA1NYWKoCClNlc3Npb24uVjHKAgpTZXNzaW9uXFYx4gIWU2Vzc2lvblxWMVxHUEJNZXRhZGF0YeoCC1Nlc3Npb246OlYxYgZwcm90bzM", [Ge, j, In]) , b1 = z(h1, 0) , V1 = x("CipzZXNzaW9uL3YxL3Nlc3Npb25fY29sbGFib3JhdF9wdWJsaWMucHJvdG8SCnNlc3Npb24udjEiUwoeTGlzdFB1YmxpY0NvbGxhYm9yYXRvcnNSZXF1ZXN0EiEKC3Nlc3Npb25fdWlkGAEgASgJQge6SARyAhABSACIAQFCDgoMX3Nlc3Npb25fdWlkIoUBChJQdWJsaWNDb2xsYWJvcmF0b3ISDwoHdXNlcl9pZBgBIAEoCRIMCgRuYW1lGAMgASgJEg4KBmF2YXRhchgEIAEoCRIQCghpc19vd25lchgGIAEoCBIuCgZzdGF0dXMYByABKA4yHi5zZXNzaW9uLnYxLkNvbGxhYm9yYXRvclN0YXR1cyJYCh9MaXN0UHVibGljQ29sbGFib3JhdG9yc1Jlc3BvbnNlEjUKDWNvbGxhYm9yYXRvcnMYASADKAsyHi5zZXNzaW9uLnYxLlB1YmxpY0NvbGxhYm9yYXRvcjKXAQofU2Vzc2lvbkNvbGxhYm9yYXRlUHVibGljU2VydmljZRJ0ChdMaXN0UHVibGljQ29sbGFib3JhdG9ycxIqLnNlc3Npb24udjEuTGlzdFB1YmxpY0NvbGxhYm9yYXRvcnNSZXF1ZXN0Gisuc2Vzc2lvbi52MS5MaXN0UHVibGljQ29sbGFib3JhdG9yc1Jlc3BvbnNlIgBCuAEKDmNvbS5zZXNzaW9uLnYxQhxTZXNzaW9uQ29sbGFib3JhdFB1YmxpY1Byb3RvUAFaP2dpdGxhYi5tb25pY2EuY24vdmlkYS9zZGsvYml6c2VydmVyLWdvLmdpdC9zZXNzaW9uL3YxO3Nlc3Npb252MaICA1NYWKoCClNlc3Npb24uVjHKAgpTZXNzaW9uXFYx4gIWU2Vzc2lvblxWMVxHUEJNZXRhZGF0YeoCC1Nlc3Npb246OlYxYgZwcm90bzM", [Ge, In]) , m1 = z(V1, 0) , A1 = x("CiBzZXNzaW9uL3YxL2NvbW11bml0eV9hZG1pbi5wcm90bxIKc2Vzc2lvbi52MSL/BAoVQXVkaXRDb21tdW5pdHlVc2VjYXNlEicKBnN0YXR1cxgBIAEoDjIXLnNlc3Npb24udjEuQXVkaXRTdGF0dXMSDgoGcmVtYXJrGAIgASgJEhMKC3Jldmlld2VyX2lkGAMgASgJEi8KC3Jldmlld2VkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgR0YWdzGAUgAygJEgoKAmlkGAYgASgDEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmRlbGV0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB3VzZXJfaWQYCiABKAkSDQoFZW1haWwYCyABKAkSEgoKcmVjb3JkX3VpZBgMIAEoCRIvCg1yZXNvdXJjZV90eXBlGA0gASgOMhguc2Vzc2lvbi52MS5SZXNvdXJjZVR5cGUSEwoLcmVzb3VyY2VfaWQYDiABKAkSDQoFZ3JvdXAYDyABKAkSDgoGbG9jYWxlGBAgASgJEg4KBmF2YXRhchgRIAEoCRINCgV0aXRsZRgSIAEoCRITCgtkZXNjcmlwdGlvbhgTIAEoCRIzCg9yZXNvdXJjZV9zb3VyY2UYFCABKA4yGi5zZXNzaW9uLnYxLlJlc291cmNlU291cmNlEg0KBW9yZGVyGBUgASgFEhIKCmlzX3B1Ymxpc2gYFiABKAgSGAoQcmVjb21tZW5kX3JlYXNvbhgXIAEoCSLbAwoZUmVjb21tZW5kQ29tbXVuaXR5VXNlY2FzZRIKCgJpZBgBIAEoAxIMCgR0YWdzGAIgAygJEi4KCmNyZWF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmRlbGV0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB3VzZXJfaWQYBiABKAkSEgoKcmVjb3JkX3VpZBgIIAEoCRIvCg1yZXNvdXJjZV90eXBlGAkgASgOMhguc2Vzc2lvbi52MS5SZXNvdXJjZVR5cGUSEwoLcmVzb3VyY2VfaWQYCiABKAkSDQoFZ3JvdXAYCyABKAkSDgoGbG9jYWxlGAwgASgJEg4KBmF2YXRhchgNIAEoCRINCgV0aXRsZRgOIAEoCRITCgtkZXNjcmlwdGlvbhgPIAEoCRIzCg9yZXNvdXJjZV9zb3VyY2UYECABKA4yGi5zZXNzaW9uLnYxLlJlc291cmNlU291cmNlEg0KBW9yZGVyGBEgASgFEhIKCmlzX3B1Ymxpc2gYEiABKAgiJwoKVXNlY2FzZVRhZxILCgN1aWQYASABKAkSDAoEbmFtZRgCIAEoCSIpCgxVc2VjYXNlR3JvdXASCwoDdWlkGAEgASgJEgwKBG5hbWUYAiABKAkitwMKIExpc3RBdWRpdENvbW11bml0eVVzZWNhc2VSZXF1ZXN0EgwKBHBhZ2UYASABKAUSEQoJcGFnZV9zaXplGAIgASgFEiwKBnN0YXR1cxgDIAEoDjIXLnNlc3Npb24udjEuQXVkaXRTdGF0dXNIAIgBARI0Cg1yZXNvdXJjZV90eXBlGAQgASgOMhguc2Vzc2lvbi52MS5SZXNvdXJjZVR5cGVIAYgBARIYCgtyZXNvdXJjZV9pZBgFIAEoCUgCiAEBEhEKBHVzZXIYBiABKAlIA4gBARIMCgR0YWdzGAcgAygJEhIKBWdyb3VwGAggASgJSASIAQESLgoKb3JkZXJfdHlwZRgJIAEoDjIVLnNlc3Npb24udjEuT3JkZXJUeXBlSAWIAQESFAoHa2V5d29yZBgKIAEoCUgGiAEBEhMKBmxvY2FsZRgLIAEoCUgHiAEBQgkKB19zdGF0dXNCEAoOX3Jlc291cmNlX3R5cGVCDgoMX3Jlc291cmNlX2lkQgcKBV91c2VyQggKBl9ncm91cEINCgtfb3JkZXJfdHlwZUIKCghfa2V5d29yZEIJCgdfbG9jYWxlImMKIUxpc3RBdWRpdENvbW11bml0eVVzZWNhc2VSZXNwb25zZRIvCgRsaXN0GAEgAygLMiEuc2Vzc2lvbi52MS5BdWRpdENvbW11bml0eVVzZWNhc2USDQoFdG90YWwYAiABKAUi1AMKJExpc3RSZWNvbW1lbmRDb21tdW5pdHlVc2VjYXNlUmVxdWVzdBIMCgRwYWdlGAEgASgFEhEKCXBhZ2Vfc2l6ZRgCIAEoBRI0Cg1yZXNvdXJjZV90eXBlGAMgASgOMhguc2Vzc2lvbi52MS5SZXNvdXJjZVR5cGVIAIgBARIYCgtyZXNvdXJjZV9pZBgEIAEoCUgBiAEBEhEKBHVzZXIYBSABKAlIAogBARIMCgR0YWdzGAYgAygJEhIKBWdyb3VwGAcgASgJSAOIAQESFwoKaXNfcHVibGlzaBgIIAEoCEgEiAEBEhgKC2lzX2ZlYXR1cmVkGAkgASgISAWIAQESLgoKb3JkZXJfdHlwZRgKIAEoDjIVLnNlc3Npb24udjEuT3JkZXJUeXBlSAaIAQESFAoHa2V5d29yZBgLIAEoCUgHiAEBEhMKBmxvY2FsZRgMIAEoCUgIiAEBQhAKDl9yZXNvdXJjZV90eXBlQg4KDF9yZXNvdXJjZV9pZEIHCgVfdXNlckIICgZfZ3JvdXBCDQoLX2lzX3B1Ymxpc2hCDgoMX2lzX2ZlYXR1cmVkQg0KC19vcmRlcl90eXBlQgoKCF9rZXl3b3JkQgkKB19sb2NhbGUiawolTGlzdFJlY29tbWVuZENvbW11bml0eVVzZWNhc2VSZXNwb25zZRIzCgRsaXN0GAEgAygLMiUuc2Vzc2lvbi52MS5SZWNvbW1lbmRDb21tdW5pdHlVc2VjYXNlEg0KBXRvdGFsGAIgASgFIqwCCiZVcGRhdGVSZWNvbW1lbmRDb21tdW5pdHlVc2VjYXNlUmVxdWVzdBIKCgJpZBgBIAEoAxISCgVncm91cBgFIAEoCUgAiAEBEgwKBHRhZ3MYBiADKAkSFwoKaXNfcHVibGlzaBgHIAEoCEgBiAEBEhIKBW9yZGVyGAggASgFSAKIAQESEgoFaW1hZ2UYCSABKAlIA4gBARITCgZsb2NhbGUYCiABKAlIBIgBARISCgV0aXRsZRgLIAEoCUgFiAEBEhgKC2Rlc2NyaXB0aW9uGAwgASgJSAaIAQFCCAoGX2dyb3VwQg0KC19pc19wdWJsaXNoQggKBl9vcmRlckIICgZfaW1hZ2VCCQoHX2xvY2FsZUIICgZfdGl0bGVCDgoMX2Rlc2NyaXB0aW9uIksKJ1VwZGF0ZVJlY29tbWVuZENvbW11bml0eVVzZWNhc2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiqwMKIlVwZGF0ZUF1ZGl0Q29tbXVuaXR5VXNlY2FzZVJlcXVlc3QSCgoCaWQYASABKAMSLAoGc3RhdHVzGAIgASgOMhcuc2Vzc2lvbi52MS5BdWRpdFN0YXR1c0gAiAEBEhMKBnJlbWFyaxgDIAEoCUgBiAEBEhgKC3Jldmlld2VyX2lkGAQgASgJSAKIAQESEgoFZ3JvdXAYBSABKAlIA4gBARIMCgR0YWdzGAYgAygJEhcKCmlzX3B1Ymxpc2gYByABKAhIBIgBARISCgVvcmRlchgIIAEoBUgFiAEBEhIKBWltYWdlGAkgASgJSAaIAQESEwoGbG9jYWxlGAogASgJSAeIAQESEgoFdGl0bGUYCyABKAlICIgBARIYCgtkZXNjcmlwdGlvbhgMIAEoCUgJiAEBQgkKB19zdGF0dXNCCQoHX3JlbWFya0IOCgxfcmV2aWV3ZXJfaWRCCAoGX2dyb3VwQg0KC19pc19wdWJsaXNoQggKBl9vcmRlckIICgZfaW1hZ2VCCQoHX2xvY2FsZUIICgZfdGl0bGVCDgoMX2Rlc2NyaXB0aW9uIkcKI1VwZGF0ZUF1ZGl0Q29tbXVuaXR5VXNlY2FzZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSIeCg5MaXN0VGFnUmVxdWVzdBIMCgR0YWdzGAEgAygJIjcKD0xpc3RUYWdSZXNwb25zZRIkCgR0YWdzGAEgAygLMhYuc2Vzc2lvbi52MS5Vc2VjYXNlVGFnIhIKEExpc3RHcm91cFJlcXVlc3QiPQoRTGlzdEdyb3VwUmVzcG9uc2USKAoGZ3JvdXBzGAEgAygLMhguc2Vzc2lvbi52MS5Vc2VjYXNlR3JvdXAiLgoZR2VuZXJhdGVTY3JlZW5zaG90UmVxdWVzdBIRCglzcGFjZV91aWQYASABKAkiKQoaR2VuZXJhdGVTY3JlZW5zaG90UmVzcG9uc2USCwoDdXJsGAEgASgJIisKHURlbGV0ZUNvbW11bml0eVVzZWNhc2VSZXF1ZXN0EgoKAmlkGAEgASgDIkIKHkRlbGV0ZUNvbW11bml0eVVzZWNhc2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkqPAoJT3JkZXJUeXBlEhkKFU9SREVSX1RZUEVfQ1JFQVRFRF9BVBAAEhQKEE9SREVSX1RZUEVfT1JERVIQATKJBwoVQ29tbXVuaXR5QWRtaW5TZXJ2aWNlEoQBCh1MaXN0UmVjb21tZW5kQ29tbXVuaXR5VXNlY2FzZRIwLnNlc3Npb24udjEuTGlzdFJlY29tbWVuZENvbW11bml0eVVzZWNhc2VSZXF1ZXN0GjEuc2Vzc2lvbi52MS5MaXN0UmVjb21tZW5kQ29tbXVuaXR5VXNlY2FzZVJlc3BvbnNlEngKGUxpc3RBdWRpdENvbW11bml0eVVzZWNhc2USLC5zZXNzaW9uLnYxLkxpc3RBdWRpdENvbW11bml0eVVzZWNhc2VSZXF1ZXN0Gi0uc2Vzc2lvbi52MS5MaXN0QXVkaXRDb21tdW5pdHlVc2VjYXNlUmVzcG9uc2USigEKH1VwZGF0ZVJlY29tbWVuZENvbW11bml0eVVzZWNhc2USMi5zZXNzaW9uLnYxLlVwZGF0ZVJlY29tbWVuZENvbW11bml0eVVzZWNhc2VSZXF1ZXN0GjMuc2Vzc2lvbi52MS5VcGRhdGVSZWNvbW1lbmRDb21tdW5pdHlVc2VjYXNlUmVzcG9uc2USfgobVXBkYXRlQXVkaXRDb21tdW5pdHlVc2VjYXNlEi4uc2Vzc2lvbi52MS5VcGRhdGVBdWRpdENvbW11bml0eVVzZWNhc2VSZXF1ZXN0Gi8uc2Vzc2lvbi52MS5VcGRhdGVBdWRpdENvbW11bml0eVVzZWNhc2VSZXNwb25zZRJCCgdMaXN0VGFnEhouc2Vzc2lvbi52MS5MaXN0VGFnUmVxdWVzdBobLnNlc3Npb24udjEuTGlzdFRhZ1Jlc3BvbnNlEmMKEkdlbmVyYXRlU2NyZWVuc2hvdBIlLnNlc3Npb24udjEuR2VuZXJhdGVTY3JlZW5zaG90UmVxdWVzdBomLnNlc3Npb24udjEuR2VuZXJhdGVTY3JlZW5zaG90UmVzcG9uc2USSAoJTGlzdEdyb3VwEhwuc2Vzc2lvbi52MS5MaXN0R3JvdXBSZXF1ZXN0Gh0uc2Vzc2lvbi52MS5MaXN0R3JvdXBSZXNwb25zZRJvChZEZWxldGVDb21tdW5pdHlVc2VjYXNlEikuc2Vzc2lvbi52MS5EZWxldGVDb21tdW5pdHlVc2VjYXNlUmVxdWVzdBoqLnNlc3Npb24udjEuRGVsZXRlQ29tbXVuaXR5VXNlY2FzZVJlc3BvbnNlQq8BCg5jb20uc2Vzc2lvbi52MUITQ29tbXVuaXR5QWRtaW5Qcm90b1ABWj9naXRsYWIubW9uaWNhLmNuL3ZpZGEvc2RrL2JpenNlcnZlci1nby5naXQvc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [j, In]) , Z1 = z(A1, 0) , f1 = x("ChhzZXNzaW9uL3YxL3Nlc3Npb24ucHJvdG8SCnNlc3Npb24udjEinAEKBFRhc2sSDwoHdGFza19pZBgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIOCgZzdGF0dXMYAyABKAkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAimwEKC1NhbmRib3hJbmZvEhIKCnNhbmRib3hfaWQYASABKAkSDgoGc3RhdHVzGAIgASgJEjcKCG1ldGFkYXRhGAMgAygLMiUuc2Vzc2lvbi52MS5TYW5kYm94SW5mby5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJVCghTdGVwUGxhbhIPCgdwbGFuX2lkGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEg0KBXN0ZXBzGAMgAygJEhQKDGN1cnJlbnRfc3RlcBgEIAEoBSKFAwoTQWdlbnRTZXNzaW9uUnVudGltZRILCgN1aWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIvCg5oYW5kbGVyX3N0b3JlcxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSHwoFdGFza3MYBCADKAsyEC5zZXNzaW9uLnYxLlRhc2sSJwoJc3RlcF9wbGFuGAUgASgLMhQuc2Vzc2lvbi52MS5TdGVwUGxhbhIeChZpbnN0YWxsZWRfZGF0YV9hcGlfaWRzGAYgAygJEiYKHmluc3RhbGxlZF9zeXN0ZW1fa25vd2xlZGdlX2lkcxgHIAMoCRItCgxzYW5kYm94X2luZm8YCCABKAsyFy5zZXNzaW9uLnYxLlNhbmRib3hJbmZvEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkYKCEljb25JbmZvEgsKA3VybBgBIAEoCRIWCg5iZ19jb2xvcl9saWdodBgCIAEoCRIVCg1iZ19jb2xvcl9kYXJrGAMgASgJIt0GCgxBZ2VudFNlc3Npb24SCwoDdWlkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSDAoEaWNvbhgEIAEoCRI1ChFsYXN0X21lc3NhZ2VfdGltZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoUbGFzdF9kaXNwbGF5X21lc3NhZ2UYBiABKAkSMAoMbGFzdF9yZWFkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgZzdGF0dXMYCSABKA4yGS5zZXNzaW9uLnYxLlNlc3Npb25TdGF0dXMSLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoUdW5yZWFkX21lc3NhZ2VfY291bnQYDCABKAUSEwoLaXNfZmF2b3JpdGUYDSABKAgSJwoJaWNvbl9pbmZvGA4gASgLMhQuc2Vzc2lvbi52MS5JY29uSW5mbxIRCglpc19zaGFyZWQYDyABKAgSMgoPYWdlbnRfdGFza19tb2RlGBAgASgOMhkuc2Vzc2lvbi52MS5BZ2VudFRhc2tNb2RlEhYKDmNvc3RlZF9jcmVkaXRzGBEgASgFEhoKEmZlZWRiYWNrX3N1Ym1pdHRlZBgSIAEoCBIeChZwdWJsaXNoZWRfdG9fY29tbXVuaXR5GBYgASgIEhwKD2Rpc3BsYXlfY29udGVudBgTIAEoCUgAiAEBEh0KEGRpc3BsYXlfZXZlbnRfaWQYFCABKAlIAYgBARIaCg1kaXNwbGF5X3RpdGxlGBUgASgJSAKIAQESLwoNY29sbGFib3JhdG9ycxgXIAMoCzIYLnNlc3Npb24udjEuQ29sbGFib3JhdG9yEi0KDGF1ZGl0X3N0YXR1cxgYIAEoDjIXLnNlc3Npb24udjEuQXVkaXRTdGF0dXNCEgoQX2Rpc3BsYXlfY29udGVudEITChFfZGlzcGxheV9ldmVudF9pZEIQCg5fZGlzcGxheV90aXRsZUoECAgQCVIPbGFzdF9yZWFkX2luZGV4IigKEUdldFNlc3Npb25SZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJInEKEkdldFNlc3Npb25SZXNwb25zZRIpCgdzZXNzaW9uGAEgASgLMhguc2Vzc2lvbi52MS5BZ2VudFNlc3Npb24SMAoHcnVudGltZRgCIAEoCzIfLnNlc3Npb24udjEuQWdlbnRTZXNzaW9uUnVudGltZSLqAQoTTGlzdFNlc3Npb25zUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIOCgZvZmZzZXQYAiABKAUSDwoHa2V5d29yZBgDIAEoCRIpCgZzdGF0dXMYBCADKA4yGS5zZXNzaW9uLnYxLlNlc3Npb25TdGF0dXMSGAoLaXNfZmF2b3JpdGUYBSABKAhIAIgBARIWCglpc19zaGFyZWQYBiABKAhIAYgBARIoCgVtb2RlcxgHIAMoDjIZLnNlc3Npb24udjEuQWdlbnRUYXNrTW9kZUIOCgxfaXNfZmF2b3JpdGVCDAoKX2lzX3NoYXJlZCJjChRMaXN0U2Vzc2lvbnNSZXNwb25zZRIqCghzZXNzaW9ucxgBIAMoCzIYLnNlc3Npb24udjEuQWdlbnRTZXNzaW9uEhAKCGhhc19uZXh0GAIgASgIEg0KBXRvdGFsGAMgASgDImIKGVVwZGF0ZVJlYWRQb3NpdGlvblJlcXVlc3QSEwoLc2Vzc2lvbl91aWQYASABKAkSMAoMbGFzdF9yZWFkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCItChpVcGRhdGVSZWFkUG9zaXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjsKFkZhdm9yaXRlU2Vzc2lvblJlcXVlc3QSEwoLc2Vzc2lvbl91aWQYASABKAkSDAoEbm90ZRgCIAEoCSIqChdGYXZvcml0ZVNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi8KGFVuRmF2b3JpdGVTZXNzaW9uUmVxdWVzdBITCgtzZXNzaW9uX3VpZBgBIAEoCSIsChlVbkZhdm9yaXRlU2Vzc2lvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgirwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEg0KBXRpdGxlGAIgASgJEgwKBGljb24YAyABKAkSKQoGc3RhdHVzGAQgASgOMhkuc2Vzc2lvbi52MS5TZXNzaW9uU3RhdHVzEiwKCWljb25faW5mbxgFIAEoCzIULnNlc3Npb24udjEuSWNvbkluZm9IAIgBAUIMCgpfaWNvbl9pbmZvIigKFVVwZGF0ZVNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIisKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJIigKFURlbGV0ZVNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIioKE1NoYXJlU2Vzc2lvblJlcXVlc3QSEwoLc2Vzc2lvbl91aWQYASABKAkiJwoUU2hhcmVTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChVVbnNoYXJlU2Vzc2lvblJlcXVlc3QSEwoLc2Vzc2lvbl91aWQYASABKAkiKQoWVW5zaGFyZVNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIoQBChZTZXNzaW9uRmVlZGJhY2tSZXF1ZXN0Eh4KBXNjb3JlGAEgASgFQg+6SAwaCjABMAIwAzAEMAUSGQoHY29udGVudBgCIAEoCUIIukgFcgMY0A8SEwoLc2Vzc2lvbl91aWQYAyABKAkSGgoSYWxsb3dfY29sbGVjdF9pbmZvGAQgASgIIi4KF1Nlc3Npb25GZWVkYmFja1Jlc3BvbnNlEhMKC2ZlZWRiYWNrX2lkGAEgASgDIj8KF0dldFRhc2tRdWV1ZUluZm9SZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkipQEKGEdldFRhc2tRdWV1ZUluZm9SZXNwb25zZRIjChtlc3RpbWF0ZWRfd2FpdF90aW1lX21pbnV0ZXMYASABKAUSFAoHbWVzc2FnZRgCIAEoCUgAiAEBEiMKG2VzdGltYXRlZF93YWl0X3RpbWVfc2Vjb25kcxgDIAEoBRIdChVuZXh0X2ludGVydmFsX3NlY29uZHMYBCABKAVCCgoIX21lc3NhZ2UipQIKHExpc3RSZWNvbW1lbmRVc2VjYXNlc1JlcXVlc3QSGAoFbGltaXQYASABKANCCbpIBiIEGGQgABIXCgZvZmZzZXQYAiABKANCB7pIBCICKAASNAoNcmVzb3VyY2VfdHlwZRgDIAEoDjIYLnNlc3Npb24udjEuUmVzb3VyY2VUeXBlSACIAQESOAoPcmVzb3VyY2Vfc291cmNlGAQgASgOMhouc2Vzc2lvbi52MS5SZXNvdXJjZVNvdXJjZUgBiAEBEhMKBmxvY2FsZRgFIAEoCUgCiAEBEhIKBWdyb3VwGAYgASgJSAOIAQFCEAoOX3Jlc291cmNlX3R5cGVCEgoQX3Jlc291cmNlX3NvdXJjZUIJCgdfbG9jYWxlQggKBl9ncm91cCJiCh1MaXN0UmVjb21tZW5kVXNlY2FzZXNSZXNwb25zZRIyCgh1c2VjYXNlcxgBIAMoCzIgLnNlc3Npb24udjEuQ29tbXVuaXR5VXNlY2FzZUluZm8SDQoFdG90YWwYAiABKAMingEKHlNoYXJlU2Vzc2lvblRvQ29tbXVuaXR5UmVxdWVzdBIcCgtzZXNzaW9uX3VpZBgBIAEoCUIHukgEcgIQARIZCgV0aXRsZRgCIAEoCUIKukgHcgUQARj/ARIfCg11c2VyX3F1ZXN0aW9uGAMgASgJQgi6SAVyAxiQThIiChByZWNvbW1lbmRfcmVhc29uGAQgASgJQgi6SAVyAxiQTiI1Ch9TaGFyZVNlc3Npb25Ub0NvbW11bml0eVJlc3BvbnNlEhIKCnJlY29yZF91aWQYASABKAkiQgoiVW5zaGFyZVNlc3Npb25Gcm9tQ29tbXVuaXR5UmVxdWVzdBIcCgtzZXNzaW9uX3VpZBgBIAEoCUIHukgEcgIQASIlCiNVbnNoYXJlU2Vzc2lvbkZyb21Db21tdW5pdHlSZXNwb25zZSKqAQocU2hhcmVTcGFjZVRvQ29tbXVuaXR5UmVxdWVzdBIaCglzcGFjZV91aWQYASABKAlCB7pIBHICEAESHAoLc2Vzc2lvbl91aWQYAiABKAlCB7pIBHICEAESGQoFdGl0bGUYAyABKAlCCrpIB3IFEAEY/wESEQoJc3BhY2VfdXJsGAQgASgJEiIKEHJlY29tbWVuZF9yZWFzb24YBSABKAlCCLpIBXIDGJBOIjMKHVNoYXJlU3BhY2VUb0NvbW11bml0eVJlc3BvbnNlEhIKCnJlY29yZF91aWQYASABKAkiXAogVW5zaGFyZVNwYWNlRnJvbUNvbW11bml0eVJlcXVlc3QSGgoJc3BhY2VfdWlkGAEgASgJQge6SARyAhABEhwKC3Nlc3Npb25fdWlkGAIgASgJQge6SARyAhABIiMKIVVuc2hhcmVTcGFjZUZyb21Db21tdW5pdHlSZXNwb25zZSI9Cg1TZWFyY2hSZXF1ZXN0EhwKC3Nlc3Npb25fdWlkGAEgASgJQge6SARyAhABEg4KBnF1ZXJ5cxgCIAMoCSLBAQoMU2VhcmNoUmVzdWx0EhAKCHBvc2l0aW9uGAEgASgDEhUKDXJlZGlyZWN0X2xpbmsYAiABKAkSIQoZc25pcHBldF9oaWdobGlnaHRlZF93b3JkcxgDIAMoCRINCgV0aXRsZRgEIAEoCRIMCgRsaW5rGAUgASgJEhYKDmRpc3BsYXllZF9saW5rGAYgASgJEg8KB2Zhdmljb24YByABKAkSDwoHc25pcHBldBgIIAEoCRIOCgZzb3VyY2UYCSABKAkiPAoRU2VhcmNoUmVzdWx0R3JvdXASJwoFaXRlbXMYASADKAsyGC5zZXNzaW9uLnYxLlNlYXJjaFJlc3VsdCKvAQoOU2VhcmNoUmVzcG9uc2USRwoPb3JnYW5pY19yZXN1bHRzGAEgAygLMi4uc2Vzc2lvbi52MS5TZWFyY2hSZXNwb25zZS5PcmdhbmljUmVzdWx0c0VudHJ5GlQKE09yZ2FuaWNSZXN1bHRzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0uc2Vzc2lvbi52MS5TZWFyY2hSZXN1bHRHcm91cDoCOAEiOwokQ29tbXVuaXR5U2Vzc2lvblNoYXJlZFByZXZpZXdSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJIrcBCiVDb21tdW5pdHlTZXNzaW9uU2hhcmVkUHJldmlld1Jlc3BvbnNlEhIKCnJlY29yZF91aWQYASABKAkSEwoLc2Vzc2lvbl91aWQYAiABKAkSDQoFdGl0bGUYAyABKAkSGAoQcmVjb21tZW5kX3JlYXNvbhgEIAEoCRITCgtkZXNjcmlwdGlvbhgFIAEoCRInCgZzdGF0dXMYBiABKA4yFy5zZXNzaW9uLnYxLkF1ZGl0U3RhdHVzIkwKIkNvbW11bml0eVNwYWNlU2hhcmVkUHJldmlld1JlcXVlc3QSEwoLc2Vzc2lvbl91aWQYASABKAkSEQoJc3BhY2VfdWlkGAIgASgJIrMBCiNDb21tdW5pdHlTcGFjZVNoYXJlZFByZXZpZXdSZXNwb25zZRISCgpyZWNvcmRfdWlkGAEgASgJEhEKCXNwYWNlX3VpZBgCIAEoCRINCgV0aXRsZRgDIAEoCRIYChByZWNvbW1lbmRfcmVhc29uGAQgASgJEhMKC2Rlc2NyaXB0aW9uGAUgASgJEicKBnN0YXR1cxgGIAEoDjIXLnNlc3Npb24udjEuQXVkaXRTdGF0dXMiQwoWU3luY1Nlc3Npb25GaWxlUmVxdWVzdBIpCgRmaWxlGAEgASgLMhsuc2Vzc2lvbi52MS5TZXNzaW9uRmlsZUl0ZW0iGQoXU3luY1Nlc3Npb25GaWxlUmVzcG9uc2UiVwoYVXBkYXRlU2Vzc2lvbkZpbGVSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEhQKDHNhbmRib3hfcGF0aBgCIAEoCRIQCghmaWxlX3VybBgDIAEoCSIbChlVcGRhdGVTZXNzaW9uRmlsZVJlc3BvbnNlIoABChdMaXN0U2Vzc2lvbkZpbGVzUmVxdWVzdBIXCgpzZXNzaW9uX2lkGAEgASgJSACIAQESEwoGc2hhcmVkGAIgASgISAGIAQESDgoGb2Zmc2V0GAMgASgFEg0KBWxpbWl0GAQgASgFQg0KC19zZXNzaW9uX2lkQgkKB19zaGFyZWQiZQoYTGlzdFNlc3Npb25GaWxlc1Jlc3BvbnNlEjoKBWZpbGVzGAEgAygLMisuc2Vzc2lvbi52MS5TZXNzaW9uRmlsZUl0ZW1XaXRoU2Vzc2lvblRpdGxlEg0KBXRvdGFsGAIgASgDIlkKF1NoYXJlU2Vzc2lvbkZpbGVSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEhQKDHNhbmRib3hfcGF0aBgCIAEoCRITCgtzaGFyZV90aXRsZRgDIAEoCSIsChhTaGFyZVNlc3Npb25GaWxlUmVzcG9uc2USEAoIc2hhcmVfaWQYASABKAkiRgoZVW5zaGFyZVNlc3Npb25GaWxlUmVxdWVzdBITCgtzZXNzaW9uX3VpZBgBIAEoCRIUCgxzYW5kYm94X3BhdGgYAiABKAkiHAoaVW5zaGFyZVNlc3Npb25GaWxlUmVzcG9uc2UiSwoeR2V0U2Vzc2lvbkZpbGVVcGxvYWRVcmxSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEhQKDHNhbmRib3hfcGF0aBgCIAEoCSJGCh9HZXRTZXNzaW9uRmlsZVVwbG9hZFVybFJlc3BvbnNlEhIKCnVwbG9hZF91cmwYASABKAkSDwoHY2RuX3VybBgCIAEoCSJDChZHZXRPcmlnaW5hbEZpbGVSZXF1ZXN0EhMKC3Nlc3Npb25fdWlkGAEgASgJEhQKDHNhbmRib3hfcGF0aBgCIAEoCSIrChdHZXRPcmlnaW5hbEZpbGVSZXNwb25zZRIQCghmaWxlX3VybBgBIAEoCSJHChpSZXN0b3JlT3JpZ2luYWxGaWxlUmVxdWVzdBITCgtzZXNzaW9uX3VpZBgBIAEoCRIUCgxzYW5kYm94X3BhdGgYAiABKAkiHQobUmVzdG9yZU9yaWdpbmFsRmlsZVJlc3BvbnNlInIKI0NyZWF0ZVNlc3Npb25GaWxlQ29udmVydFRhc2tSZXF1ZXN0EjgKDGNvbnZlcnRfdHlwZRgBIAEoDjIiLnNlc3Npb24udjEuU2Vzc2lvbkZpbGVDb252ZXJ0VHlwZRIRCglmcm9tX3VybHMYAiADKAkibgokQ3JlYXRlU2Vzc2lvbkZpbGVDb252ZXJ0VGFza1Jlc3BvbnNlEhAKCHRhc2tfdWlkGAEgASgJEjQKBnN0YXR1cxgCIAEoDjIkLnNlc3Npb24udjEuU2Vzc2lvbkZpbGVDb252ZXJ0U3RhdHVzIjUKIUxvb3BTZXNzaW9uRmlsZUNvbnZlcnRUYXNrUmVxdWVzdBIQCgh0YXNrX3VpZBgBIAEoCSLIAQoiTG9vcFNlc3Npb25GaWxlQ29udmVydFRhc2tSZXNwb25zZRIQCgh0YXNrX3VpZBgBIAEoCRI0CgZzdGF0dXMYAiABKA4yJC5zZXNzaW9uLnYxLlNlc3Npb25GaWxlQ29udmVydFN0YXR1cxIZCgxzdGF0dXNfZXJyb3IYAyABKAlIAIgBARIPCgd0b191cmxzGAQgAygJEh0KFW5leHRfaW50ZXJ2YWxfc2Vjb25kcxgFIAEoBUIPCg1fc3RhdHVzX2Vycm9yKpEDCg1TZXNzaW9uU3RhdHVzEh4KGlNFU1NJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWU0VTU0lPTl9TVEFUVVNfQ1JFQVRFRBABEhsKF1NFU1NJT05fU1RBVFVTX0FSQ0hJVkVEEAISGgoWU0VTU0lPTl9TVEFUVVNfREVMRVRFRBADEhoKFlNFU1NJT05fU1RBVFVTX1dBSVRJTkcQBRIaChZTRVNTSU9OX1NUQVRVU19SVU5OSU5HEAYSGgoWU0VTU0lPTl9TVEFUVVNfU1RPUFBFRBAHEhgKFFNFU1NJT05fU1RBVFVTX0VSUk9SEAgSGwoXU0VTU0lPTl9TVEFUVVNfSU5fUVVFVUUQCRIzCi9TRVNTSU9OX1NUQVRVU19DT0xMQUJPUkFUSU9OX1BFUk1JU1NJT05fQ0hBTkdFRBAKEiMKH1NFU1NJT05fU1RBVFVTX05FV19DT0xMQUJPUkFUT1IQCxImCiJTRVNTSU9OX1NUQVRVU19SRU1PVkVfQ09MTEFCT1JBVE9SEAwyyhcKDlNlc3Npb25TZXJ2aWNlEk0KCkdldFNlc3Npb24SHS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXF1ZXN0Gh4uc2Vzc2lvbi52MS5HZXRTZXNzaW9uUmVzcG9uc2UiABJTCgxMaXN0U2Vzc2lvbnMSHy5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc1JlcXVlc3QaIC5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc1Jlc3BvbnNlIgASZQoSVXBkYXRlUmVhZFBvc2l0aW9uEiUuc2Vzc2lvbi52MS5VcGRhdGVSZWFkUG9zaXRpb25SZXF1ZXN0GiYuc2Vzc2lvbi52MS5VcGRhdGVSZWFkUG9zaXRpb25SZXNwb25zZSIAElwKD0Zhdm9yaXRlU2Vzc2lvbhIiLnNlc3Npb24udjEuRmF2b3JpdGVTZXNzaW9uUmVxdWVzdBojLnNlc3Npb24udjEuRmF2b3JpdGVTZXNzaW9uUmVzcG9uc2UiABJiChFVbkZhdm9yaXRlU2Vzc2lvbhIkLnNlc3Npb24udjEuVW5GYXZvcml0ZVNlc3Npb25SZXF1ZXN0GiUuc2Vzc2lvbi52MS5VbkZhdm9yaXRlU2Vzc2lvblJlc3BvbnNlIgASVgoNVXBkYXRlU2Vzc2lvbhIgLnNlc3Npb24udjEuVXBkYXRlU2Vzc2lvblJlcXVlc3QaIS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXNwb25zZSIAElYKDURlbGV0ZVNlc3Npb24SIC5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXF1ZXN0GiEuc2Vzc2lvbi52MS5EZWxldGVTZXNzaW9uUmVzcG9uc2UiABJTCgxTaGFyZVNlc3Npb24SHy5zZXNzaW9uLnYxLlNoYXJlU2Vzc2lvblJlcXVlc3QaIC5zZXNzaW9uLnYxLlNoYXJlU2Vzc2lvblJlc3BvbnNlIgASWQoOVW5zaGFyZVNlc3Npb24SIS5zZXNzaW9uLnYxLlVuc2hhcmVTZXNzaW9uUmVxdWVzdBoiLnNlc3Npb24udjEuVW5zaGFyZVNlc3Npb25SZXNwb25zZSIAEloKD1Nlc3Npb25GZWVkYmFjaxIiLnNlc3Npb24udjEuU2Vzc2lvbkZlZWRiYWNrUmVxdWVzdBojLnNlc3Npb24udjEuU2Vzc2lvbkZlZWRiYWNrUmVzcG9uc2USXwoQR2V0VGFza1F1ZXVlSW5mbxIjLnNlc3Npb24udjEuR2V0VGFza1F1ZXVlSW5mb1JlcXVlc3QaJC5zZXNzaW9uLnYxLkdldFRhc2tRdWV1ZUluZm9SZXNwb25zZSIAEmwKFUxpc3RSZWNvbW1lbmRVc2VjYXNlcxIoLnNlc3Npb24udjEuTGlzdFJlY29tbWVuZFVzZWNhc2VzUmVxdWVzdBopLnNlc3Npb24udjEuTGlzdFJlY29tbWVuZFVzZWNhc2VzUmVzcG9uc2USdAoXU2hhcmVTZXNzaW9uVG9Db21tdW5pdHkSKi5zZXNzaW9uLnYxLlNoYXJlU2Vzc2lvblRvQ29tbXVuaXR5UmVxdWVzdBorLnNlc3Npb24udjEuU2hhcmVTZXNzaW9uVG9Db21tdW5pdHlSZXNwb25zZSIAEoABChtVbnNoYXJlU2Vzc2lvbkZyb21Db21tdW5pdHkSLi5zZXNzaW9uLnYxLlVuc2hhcmVTZXNzaW9uRnJvbUNvbW11bml0eVJlcXVlc3QaLy5zZXNzaW9uLnYxLlVuc2hhcmVTZXNzaW9uRnJvbUNvbW11bml0eVJlc3BvbnNlIgASbgoVU2hhcmVTcGFjZVRvQ29tbXVuaXR5Eiguc2Vzc2lvbi52MS5TaGFyZVNwYWNlVG9Db21tdW5pdHlSZXF1ZXN0Gikuc2Vzc2lvbi52MS5TaGFyZVNwYWNlVG9Db21tdW5pdHlSZXNwb25zZSIAEnoKGVVuc2hhcmVTcGFjZUZyb21Db21tdW5pdHkSLC5zZXNzaW9uLnYxLlVuc2hhcmVTcGFjZUZyb21Db21tdW5pdHlSZXF1ZXN0Gi0uc2Vzc2lvbi52MS5VbnNoYXJlU3BhY2VGcm9tQ29tbXVuaXR5UmVzcG9uc2UiABJBCgZTZWFyY2gSGS5zZXNzaW9uLnYxLlNlYXJjaFJlcXVlc3QaGi5zZXNzaW9uLnYxLlNlYXJjaFJlc3BvbnNlIgAShgEKHUNvbW11bml0eVVzZUNhc2VTaGFyZWRQcmV2aWV3EjAuc2Vzc2lvbi52MS5Db21tdW5pdHlTZXNzaW9uU2hhcmVkUHJldmlld1JlcXVlc3QaMS5zZXNzaW9uLnYxLkNvbW11bml0eVNlc3Npb25TaGFyZWRQcmV2aWV3UmVzcG9uc2UiABKAAQobQ29tbXVuaXR5U3BhY2VTaGFyZWRQcmV2aWV3Ei4uc2Vzc2lvbi52MS5Db21tdW5pdHlTcGFjZVNoYXJlZFByZXZpZXdSZXF1ZXN0Gi8uc2Vzc2lvbi52MS5Db21tdW5pdHlTcGFjZVNoYXJlZFByZXZpZXdSZXNwb25zZSIAElwKD1N5bmNTZXNzaW9uRmlsZRIiLnNlc3Npb24udjEuU3luY1Nlc3Npb25GaWxlUmVxdWVzdBojLnNlc3Npb24udjEuU3luY1Nlc3Npb25GaWxlUmVzcG9uc2UiABJiChFVcGRhdGVTZXNzaW9uRmlsZRIkLnNlc3Npb24udjEuVXBkYXRlU2Vzc2lvbkZpbGVSZXF1ZXN0GiUuc2Vzc2lvbi52MS5VcGRhdGVTZXNzaW9uRmlsZVJlc3BvbnNlIgASXwoQTGlzdFNlc3Npb25GaWxlcxIjLnNlc3Npb24udjEuTGlzdFNlc3Npb25GaWxlc1JlcXVlc3QaJC5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uRmlsZXNSZXNwb25zZSIAEl8KEFNoYXJlU2Vzc2lvbkZpbGUSIy5zZXNzaW9uLnYxLlNoYXJlU2Vzc2lvbkZpbGVSZXF1ZXN0GiQuc2Vzc2lvbi52MS5TaGFyZVNlc3Npb25GaWxlUmVzcG9uc2UiABJlChJVbnNoYXJlU2Vzc2lvbkZpbGUSJS5zZXNzaW9uLnYxLlVuc2hhcmVTZXNzaW9uRmlsZVJlcXVlc3QaJi5zZXNzaW9uLnYxLlVuc2hhcmVTZXNzaW9uRmlsZVJlc3BvbnNlIgASdAoXR2V0U2Vzc2lvbkZpbGVVcGxvYWRVcmwSKi5zZXNzaW9uLnYxLkdldFNlc3Npb25GaWxlVXBsb2FkVXJsUmVxdWVzdBorLnNlc3Npb24udjEuR2V0U2Vzc2lvbkZpbGVVcGxvYWRVcmxSZXNwb25zZSIAElwKD0dldE9yaWdpbmFsRmlsZRIiLnNlc3Npb24udjEuR2V0T3JpZ2luYWxGaWxlUmVxdWVzdBojLnNlc3Npb24udjEuR2V0T3JpZ2luYWxGaWxlUmVzcG9uc2UiABJoChNSZXN0b3JlT3JpZ2luYWxGaWxlEiYuc2Vzc2lvbi52MS5SZXN0b3JlT3JpZ2luYWxGaWxlUmVxdWVzdBonLnNlc3Npb24udjEuUmVzdG9yZU9yaWdpbmFsRmlsZVJlc3BvbnNlIgASgwEKHENyZWF0ZVNlc3Npb25GaWxlQ29udmVydFRhc2sSLy5zZXNzaW9uLnYxLkNyZWF0ZVNlc3Npb25GaWxlQ29udmVydFRhc2tSZXF1ZXN0GjAuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uRmlsZUNvbnZlcnRUYXNrUmVzcG9uc2UiABJ9ChpMb29wU2Vzc2lvbkZpbGVDb252ZXJ0VGFzaxItLnNlc3Npb24udjEuTG9vcFNlc3Npb25GaWxlQ29udmVydFRhc2tSZXF1ZXN0Gi4uc2Vzc2lvbi52MS5Mb29wU2Vzc2lvbkZpbGVDb252ZXJ0VGFza1Jlc3BvbnNlIgBCqAEKDmNvbS5zZXNzaW9uLnYxQgxTZXNzaW9uUHJvdG9QAVo/Z2l0bGFiLm1vbmljYS5jbi92aWRhL3Nkay9iaXpzZXJ2ZXItZ28uZ2l0L3Nlc3Npb24vdjE7c2Vzc2lvbnYxogIDU1hYqgIKU2Vzc2lvbi5WMcoCClNlc3Npb25cVjHiAhZTZXNzaW9uXFYxXEdQQk1ldGFkYXRh6gILU2Vzc2lvbjo6VjFiBnByb3RvMw", [Ge, Ne, j, In]) , p1 = z(f1, 0) , G1 = (t, {handleUnauth: e, beforeRequest: n, handlePermissionDenied: l}={}) => th({ baseUrl: t, interceptors: [i => async o => { try { return await (n == null ? void 0 : n(o.header)), await i(o) } catch (r) { throw r instanceof oe && r.code === H.Unauthenticated && (e == null || e()), r instanceof oe && r.code === H.PermissionDenied && (l == null || l(r)), r } } ] }) , X1 = (t, e) => { const n = G1(t, e); return { PlayCard: k(nh, n), PlayCardAdmin: k(ih, n), I18nTemplateAdminService: k(rh, n), FileService: k(ah, n), AdminFileService: k(sh, n), NotifierService: k(gh, n), NotificationService: k(hh, n), NotificationAdminService: k(Vh, n), E2BConfigService: k(Ah, n), PublicActivityService: k(fh, n), ActivityAdminService: k(Gh, n), LiveEventAdminService: k(Ih, n), LiveEventService: k(Eh, n), LiveEventPublicService: k(yh, n), UserAuthService: k(Sh, n), UserAdminService: k(vh, n), UserPublicService: k(Fh, n), UserFeedBackTagAdmin: k(Uh, n), SubscriptionService: k(Bh, n), UserService: k(xh, n), UserAuthPublicService: k(kh, n), DashboardToolService: k(Qh, n), TeamManagementService: k(Kh, n), TeamService: k(Mh, n), EduTeamAdminService: k(Hh, n), TeamPublicService: k(jh, n), KnowledgeAdminService: k(Oh, n), KnowledgeService: k(_h, n), SpacePublicService: k(e1, n), SpaceAdminService: k(n1, n), SpaceService: k($h, n), ApiProxyAdminService: k(r1, n), ApiProxyService: k(i1, n), SessionAdminService: k(a1, n), CommunityInteractionService: k(s1, n), SessionCollaborateService: k(g1, n), SessionPublicService: k(b1, n), SessionCollaboratePublicService: k(m1, n), CommunityAdminService: k(Z1, n), SessionService: k(p1, n) } } , I1 = _e.apiHost , wt = Td(); let Rt, R1 = new Promise(t => { Rt = t } ); const ll = X1(I1, { beforeRequest: async t => { const e = document.cookie.split(";"); let n = ""; for (let l = 0; l < e.length; l++) { const i = e[l] , [o,r] = i.split("="); if ((o == null ? void 0 : o.trim()) === tn.accessToken) { n = r; break } } n && (t.set("authorization", `Bearer ${n}`), t.set("X-Api-Key", n)), t.set("x-client-type", "space") } }); async function E1() { const e = new URL(window.location.href).searchParams.get("code"); jl(["code"]); const n = async i => { try { const {accessToken: o} = await ll.SpacePublicService.getEditSpaceSiteToken({ editSpaceCode: i }) , r = new URL(window.location.href); let c; const a = r.hostname.split("."); a.shift(), a.length > 0 && (c = "." + a.join(".")), Sn.setCookie(tn.accessToken, o, { daysToExpire: 365, domain: c }), Rt(!0) } catch { Sn.deleteCookie(tn.accessToken), Rt(!1); return } finally { wt.markReady() } } ; if (Sn.getCookie(tn.accessToken)) try { const {canEdit: i} = await ll.SpaceService.hasSpaceEditPermission({ spaceId: _e.spaceId }); i ? (wt.markReady(), Rt(!0)) : e ? await n(e) : (wt.markReady(), Rt(!1)) } catch { Sn.deleteCookie(tn.accessToken), e ? await n(e) : (wt.markReady(), Rt(!1)) } else e ? await n(e) : (wt.markReady(), Rt(!1)) } var Nn = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; function C1(t) { return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t } var Jl, sr; function y1() { if (sr) return Jl; sr = 1; var t = "Expected a function" , e = NaN , n = "[object Symbol]" , l = /^\s+|\s+$/g , i = /^[-+]0x[0-9a-f]+$/i , o = /^0b[01]+$/i , r = /^0o[0-7]+$/i , c = parseInt , a = typeof Nn == "object" && Nn && Nn.Object === Object && Nn , d = typeof self == "object" && self && self.Object === Object && self , s = a || d || Function("return this")() , u = Object.prototype , b = u.toString , g = Math.max , V = Math.min , p = function() { return s.Date.now() }; function X(E, y, A) { var F, w, _, D, T, Ve, Xe = 0, ke = !1, pe = !1, ze = !0; if (typeof E != "function") throw new TypeError(t); y = C(y) || 0, Z(A) && (ke = !!A.leading, pe = "maxWait"in A, _ = pe ? g(C(A.maxWait) || 0, y) : _, ze = "trailing"in A ? !!A.trailing : ze); function He(O) { var Se = F , et = w; return F = w = void 0, Xe = O, D = E.apply(et, Se), D } function Ye(O) { return Xe = O, T = setTimeout($e, y), ke ? He(O) : D } function Qe(O) { var Se = O - Ve , et = O - Xe , me = y - Se; return pe ? V(me, _ - et) : me } function Y(O) { var Se = O - Ve , et = O - Xe; return Ve === void 0 || Se >= y || Se < 0 || pe && et >= _ } function $e() { var O = p(); if (Y(O)) return Ke(O); T = setTimeout($e, Qe(O)) } function Ke(O) { return T = void 0, ze && F ? He(O) : (F = w = void 0, D) } function qe() { T !== void 0 && clearTimeout(T), Xe = 0, F = Ve = w = T = void 0 } function ut() { return T === void 0 ? D : Ke(p()) } function Ie() { var O = p() , Se = Y(O); if (F = arguments, w = this, Ve = O, Se) { if (T === void 0) return Ye(Ve); if (pe) return T = setTimeout($e, y), He(Ve) } return T === void 0 && (T = setTimeout($e, y)), D } return Ie.cancel = qe, Ie.flush = ut, Ie } function Z(E) { var y = typeof E; return !!E && (y == "object" || y == "function") } function f(E) { return !!E && typeof E == "object" } function G(E) { return typeof E == "symbol" || f(E) && b.call(E) == n } function C(E) { if (typeof E == "number") return E; if (G(E)) return e; if (Z(E)) { var y = typeof E.valueOf == "function" ? E.valueOf() : E; E = Z(y) ? y + "" : y } if (typeof E != "string") return E === 0 ? E : +E; E = E.replace(l, ""); var A = o.test(E); return A || r.test(E) ? c(E.slice(2), A ? 2 : 8) : i.test(E) ? e : +E } return Jl = X, Jl } var S1 = y1(); const W1 = C1(S1) , Wa = `.clr-picker { display: none; flex-wrap: wrap; position: absolute; width: 200px; z-index: 1000; border-radius: 10px; background-color: #fff; justify-content: flex-end; direction: ltr; box-shadow: 0 0 5px rgba(0,0,0,.05), 0 5px 20px rgba(0,0,0,.1); -moz-user-select: none; -webkit-user-select: none; user-select: none; } .clr-picker.clr-open, .clr-picker[data-inline="true"] { display: flex; } .clr-picker[data-inline="true"] { position: relative; } .clr-gradient { position: relative; width: 100%; height: 100px; margin-bottom: 15px; border-radius: 3px 3px 0 0; background-image: linear-gradient(rgba(0,0,0,0), #000), linear-gradient(90deg, #fff, currentColor); cursor: pointer; } .clr-marker { position: absolute; width: 12px; height: 12px; margin: -6px 0 0 -6px; border: 1px solid #fff; border-radius: 50%; background-color: currentColor; cursor: pointer; } .clr-picker input[type="range"]::-webkit-slider-runnable-track { width: 100%; height: 16px; } .clr-picker input[type="range"]::-webkit-slider-thumb { width: 16px; height: 16px; -webkit-appearance: none; } .clr-picker input[type="range"]::-moz-range-track { width: 100%; height: 16px; border: 0; } .clr-picker input[type="range"]::-moz-range-thumb { width: 16px; height: 16px; border: 0; } .clr-hue { background-image: linear-gradient(to right, #f00 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #f00 100%); } .clr-hue, .clr-alpha { position: relative; width: calc(100% - 40px); height: 8px; margin: 5px 20px; border-radius: 4px; } .clr-alpha span { display: block; height: 100%; width: 100%; border-radius: inherit; background-image: linear-gradient(90deg, rgba(0,0,0,0), currentColor); } .clr-hue input[type="range"], .clr-alpha input[type="range"] { position: absolute; width: calc(100% + 32px); height: 16px; left: -16px; top: -4px; margin: 0; background-color: transparent; opacity: 0; cursor: pointer; appearance: none; -webkit-appearance: none; } .clr-hue div, .clr-alpha div { position: absolute; width: 16px; height: 16px; left: 0; top: 50%; margin-left: -8px; transform: translateY(-50%); border: 2px solid #fff; border-radius: 50%; background-color: currentColor; box-shadow: 0 0 1px #888; pointer-events: none; } .clr-alpha div:before { content: ''; position: absolute; height: 100%; width: 100%; left: 0; top: 0; border-radius: 50%; background-color: currentColor; } .clr-format { display: none; order: 1; width: calc(100% - 40px); margin: 0 20px 20px; } .clr-segmented { display: flex; position: relative; width: 100%; margin: 0; padding: 0; border: 1px solid #ddd; border-radius: 15px; box-sizing: border-box; color: #999; font-size: 12px; } .clr-segmented input, .clr-segmented legend { position: absolute; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; left: 0; top: 0; opacity: 0; pointer-events: none; } .clr-segmented label { flex-grow: 1; margin: 0; padding: 4px 0; font-size: inherit; font-weight: normal; line-height: initial; text-align: center; cursor: pointer; } .clr-segmented label:first-of-type { border-radius: 10px 0 0 10px; } .clr-segmented label:last-of-type { border-radius: 0 10px 10px 0; } .clr-segmented input:checked + label { color: #fff; background-color: #666; } .clr-swatches { order: 2; width: calc(100% - 32px); margin: 0 16px; } .clr-swatches div { display: flex; flex-wrap: wrap; padding-bottom: 12px; justify-content: center; } .clr-swatches button { position: relative; width: 20px; height: 20px; margin: 0 4px 6px 4px; padding: 0; border: 0; border-radius: 50%; color: inherit; text-indent: -1000px; white-space: nowrap; overflow: hidden; cursor: pointer; } .clr-swatches button:after { content: ''; display: block; position: absolute; width: 100%; height: 100%; left: 0; top: 0; border-radius: inherit; background-color: currentColor; box-shadow: inset 0 0 0 1px rgba(0,0,0,.1); } input.clr-color { order: 1; width: calc(100% - 80px); height: 32px; margin: 15px 20px 20px auto; padding: 0 10px; border: 1px solid #ddd; border-radius: 16px; color: #444; background-color: #fff; font-family: sans-serif; font-size: 14px; text-align: center; box-shadow: none; } input.clr-color:focus { outline: none; border: 1px solid #1e90ff; } .clr-close, .clr-clear { display: none; order: 2; height: 24px; margin: 0 20px 20px; padding: 0 20px; border: 0; border-radius: 12px; color: #fff; background-color: #666; font-family: inherit; font-size: 12px; font-weight: 400; cursor: pointer; } .clr-close { display: block; margin: 0 20px 20px auto; } .clr-preview { position: relative; width: 32px; height: 32px; margin: 15px 0 20px 20px; border-radius: 50%; overflow: hidden; } .clr-preview:before, .clr-preview:after { content: ''; position: absolute; height: 100%; width: 100%; left: 0; top: 0; border: 1px solid #fff; border-radius: 50%; } .clr-preview:after { border: 0; background-color: currentColor; box-shadow: inset 0 0 0 1px rgba(0,0,0,.1); } .clr-preview button { position: absolute; width: 100%; height: 100%; z-index: 1; margin: 0; padding: 0; border: 0; border-radius: 50%; outline-offset: -2px; background-color: transparent; text-indent: -9999px; cursor: pointer; overflow: hidden; } .clr-marker, .clr-hue div, .clr-alpha div, .clr-color { box-sizing: border-box; } .clr-field { display: inline-block; position: relative; color: transparent; } .clr-field input { margin: 0; direction: ltr; } .clr-field.clr-rtl input { text-align: right; } .clr-field button { position: absolute; width: 30px; height: 100%; right: 0; top: 50%; transform: translateY(-50%); margin: 0; padding: 0; border: 0; color: inherit; text-indent: -1000px; white-space: nowrap; overflow: hidden; pointer-events: none; } .clr-field.clr-rtl button { right: auto; left: 0; } .clr-field button:after { content: ''; display: block; position: absolute; width: 100%; height: 100%; left: 0; top: 0; border-radius: inherit; background-color: currentColor; box-shadow: inset 0 0 1px rgba(0,0,0,.5); } .clr-alpha, .clr-alpha div, .clr-swatches button, .clr-preview:before, .clr-field button { background-image: repeating-linear-gradient(45deg, #aaa 25%, transparent 25%, transparent 75%, #aaa 75%, #aaa), repeating-linear-gradient(45deg, #aaa 25%, #fff 25%, #fff 75%, #aaa 75%, #aaa); background-position: 0 0, 4px 4px; background-size: 8px 8px; } .clr-marker:focus { outline: none; } .clr-keyboard-nav .clr-marker:focus, .clr-keyboard-nav .clr-hue input:focus + div, .clr-keyboard-nav .clr-alpha input:focus + div, .clr-keyboard-nav .clr-segmented input:focus + label { outline: none; box-shadow: 0 0 0 2px #1e90ff, 0 0 2px 2px #fff; } .clr-picker[data-alpha="false"] .clr-alpha { display: none; } .clr-picker[data-minimal="true"] { padding-top: 16px; } .clr-picker[data-minimal="true"] .clr-gradient, .clr-picker[data-minimal="true"] .clr-hue, .clr-picker[data-minimal="true"] .clr-alpha, .clr-picker[data-minimal="true"] .clr-color, .clr-picker[data-minimal="true"] .clr-preview { display: none; } /** Dark theme **/ .clr-dark { background-color: #444; } .clr-dark .clr-segmented { border-color: #777; } .clr-dark .clr-swatches button:after { box-shadow: inset 0 0 0 1px rgba(255,255,255,.3); } .clr-dark input.clr-color { color: #fff; border-color: #777; background-color: #555; } .clr-dark input.clr-color:focus { border-color: #1e90ff; } .clr-dark .clr-preview:after { box-shadow: inset 0 0 0 1px rgba(255,255,255,.5); } .clr-dark .clr-alpha, .clr-dark .clr-alpha div, .clr-dark .clr-swatches button, .clr-dark .clr-preview:before { background-image: repeating-linear-gradient(45deg, #666 25%, transparent 25%, transparent 75%, #888 75%, #888), repeating-linear-gradient(45deg, #888 25%, #444 25%, #444 75%, #888 75%, #888); } /** Polaroid theme **/ .clr-picker.clr-polaroid { border-radius: 6px; box-shadow: 0 0 5px rgba(0,0,0,.1), 0 5px 30px rgba(0,0,0,.2); } .clr-picker.clr-polaroid:before { content: ''; display: block; position: absolute; width: 16px; height: 10px; left: 20px; top: -10px; border: solid transparent; border-width: 0 8px 10px 8px; border-bottom-color: currentColor; box-sizing: border-box; color: #fff; filter: drop-shadow(0 -4px 3px rgba(0,0,0,.1)); pointer-events: none; } .clr-picker.clr-polaroid.clr-dark:before { color: #444; } .clr-picker.clr-polaroid.clr-left:before { left: auto; right: 20px; } .clr-picker.clr-polaroid.clr-top:before { top: auto; bottom: -10px; transform: rotateZ(180deg); } .clr-polaroid .clr-gradient { width: calc(100% - 20px); height: 120px; margin: 10px; border-radius: 3px; } .clr-polaroid .clr-hue, .clr-polaroid .clr-alpha { width: calc(100% - 30px); height: 10px; margin: 6px 15px; border-radius: 5px; } .clr-polaroid .clr-hue div, .clr-polaroid .clr-alpha div { box-shadow: 0 0 5px rgba(0,0,0,.2); } .clr-polaroid .clr-format { width: calc(100% - 20px); margin: 0 10px 15px; } .clr-polaroid .clr-swatches { width: calc(100% - 12px); margin: 0 6px; } .clr-polaroid .clr-swatches div { padding-bottom: 10px; } .clr-polaroid .clr-swatches button { width: 22px; height: 22px; } .clr-polaroid input.clr-color { width: calc(100% - 60px); margin: 10px 10px 15px auto; } .clr-polaroid .clr-clear { margin: 0 10px 15px 10px; } .clr-polaroid .clr-close { margin: 0 10px 15px auto; } .clr-polaroid .clr-preview { margin: 10px 0 15px 10px; } /** Large theme **/ .clr-picker.clr-large { width: 275px; } .clr-large .clr-gradient { height: 150px; } .clr-large .clr-swatches button { width: 22px; height: 22px; } /** Pill (horizontal) theme **/ .clr-picker.clr-pill { width: 380px; padding-left: 180px; box-sizing: border-box; } .clr-pill .clr-gradient { position: absolute; width: 180px; height: 100%; left: 0; top: 0; margin-bottom: 0; border-radius: 3px 0 0 3px; } .clr-pill .clr-hue { margin-top: 20px; }` , Ut = t => { var e; return (e = t.textContent) == null ? void 0 : e.trim() } , v1 = ["video", "iframe", "audio"] , ur = "__manus_style-id"; class B1 { constructor() { this.debugMode = !1, this.editMode = "normal", this.debouncedAddPatched = W1(e => { e.forEach(n => { this.addPatch(n) } ) } , 1e3, { leading: !0 }), this.originalElementStyle = new Map, this.patchList = [], this.textSplitMode = !0, this._boundHandlePreEditHover = () => {} , this._boundHandlePreEditOut = () => {} , this._boundHandleEditSelect = () => {} , this._boundHandleKeydown = () => {} , this.hoveringElement = null, this.activeElement = null, this.savedElements = new Map, this.filterClasses = [J.spaceEditorHighlight, J.virtualTextNode, J.onlyTextNode, J.textNodeActive, J.colorPicker], this.retryPatchIndexList = [] } init() { this.injectGlobalStyle(), this.patchList = _e.patchList ?? [], this.applyPatches() } initWithoutApplyPatches() { this.injectGlobalStyle(), this.patchList = _e.patchList ?? [] } destroy() { var e; (e = document.querySelector("#" + ur)) == null || e.remove(), this.onExitEdit() } registerViews(e) { e.textEditPanelView && (this.textEditPanelView = e.textEditPanelView), e.elementEditPanelView && (this.elementEditPanelView = e.elementEditPanelView) } createPatch(e, n) { const l = e.classList.contains(J.virtualTextNode); let i = []; const o = Date.now(); if (l) { const r = this.getNodeToElementSelector(e); if (r && !this.patchList.some(a => a.type === "nodeToElement" && a.selector === r.selector && a.nodeIndex === r.nodeIndex)) { const a = { type: "nodeToElement", nodeIndex: r.nodeIndex, selector: r.selector, timestamp: o }; i.push(a) } } if (n === "copy") { const r = e.cloneNode(!0); this.filterClasses.forEach(a => { r.classList.remove(a) } ), r.classList.add(J.copyNode); const c = { type: "copy", selector: this.generateSelector(e), timestamp: Date.now(), outerHtml: r.outerHTML }; i.push(c) } else { const r = { type: "style", selector: this.generateSelector(e), elementType: e.tagName.toLowerCase(), innerText: l ? e.textContent ?? void 0 : e.innerHTML, style: e.getAttribute("style") || "", timestamp: o }; i.push(r) } return i } getNodeToElementSelector(e) { if (!e.classList.contains(J.virtualTextNode)) return null; const n = e.parentElement; if (!n) return null; const l = this.generateSelector(n); let i = -1; return Array.from(n.childNodes).forEach( (o, r) => { o === e && (i = r) } ), i === -1 ? null : { selector: l, nodeIndex: i } } generateSelector(e) { if (e.id) return `#${e.id}`; function n(o) { return o.replace(/:/g, "\\:").replace(/\//g, "\\/").replace(/\[/g, "\\[").replace(/\]/g, "\\]").replace(/%/g, "\\%").replace(/\./g, "\\.") } let l = [] , i = e; for (; i && i !== document.body && i !== document.documentElement; ) { let o = i.tagName.toLowerCase(); if (i.className && typeof i.className == "string") { const r = i.className.split(" ").filter(c => c && this.filterClasses.every(a => a !== c)).map(c => `.${n(c)}`).join(""); r && (o += r) } if (i.parentNode) { const r = Array.from(i.parentNode.children).filter(a => !a.closest(`.${J.virtualTextNode}`)) , c = r.indexOf(i) + 1; r.length > 1 && (o += `:nth-child(${c})`) } l.unshift(o), i = i.parentNode } return i && l.unshift(i.tagName.toLowerCase()), l.join(" > ") } addPatch(e) { this.patchList.push(e), this.savePatchesToServer(), Mt.emit("patchListChange", {}) } undoPatch() { if (this.patchList.length > 0) { const e = this.patchList.pop(); if (e) { const n = document.querySelector(e.selector); if (n) { if (e.type === "nodeToElement") { const l = n.childNodes[e.nodeIndex]; if (l && l instanceof HTMLElement && l.classList.contains(J.virtualTextNode)) { const i = l.textContent; if (i) { const o = document.createTextNode(i); n.replaceChild(l, o) } } } else if ((e == null ? void 0 : e.type) === "style") { let l; for (let o = this.patchList.length - 1; o >= 0; o--) { const r = this.patchList[o]; if (r.type === "style" && r.selector === e.selector) { l = r; break } } const i = this.originalElementStyle.get(n); l ? (n.setAttribute("style", l.style), n.textContent = l.innerText ?? "") : i && (n.setAttribute("style", i.style), n.textContent = i.textContent) } else if ((e == null ? void 0 : e.type) === "copy") { const l = document.querySelector(e.selector); l && l.nextElementSibling instanceof HTMLElement && (l.nextElementSibling.style.display = "none") } } } this.savePatchesToServer() } Mt.emit("patchListChange", {}) } savePatchesToServer() { try { const e = this.optimizePatches(); ll.SpaceService.saveSpaceSiteRawData({ webRawData: JSON.stringify(e), spaceUid: _e.spaceId }) } catch (e) { console.error(e) } } applyPatches() { if (this.patchList.length !== 0) { this.retryPatchIndexList = []; for (let e = 0; e < this.patchList.length; e++) this.applyPatch(e), this.retryPatchList() } } retryPatchList() { if (this.retryPatchIndexList.length === 0) return; const e = new MutationObserver(n => { const l = [...this.retryPatchIndexList]; this.retryPatchIndexList = [], l.forEach(i => { this.applyPatch(i) } ), this.retryPatchIndexList.length === 0 && e.disconnect() } ); e.observe(document.body, { subtree: !0, childList: !0 }) } applyPatch(e) { if (e < 0 || e >= this.patchList.length) return; const n = this.patchList[e]; if (n) try { const l = document.querySelector(n.selector); if (!l) { console.warn(`Patch target not found. ${n.selector}`), this.retryPatchIndexList.push(e); return } if (n.type === "style" && (this.setOriginStyle(l), n.innerText && (l.classList && l.classList.contains(J.virtualTextNode) ? l.textContent !== n.innerText && (l.textContent = n.innerText) : l.innerHTML !== n.innerText && (l.innerHTML = n.innerText)), n.style ? (l.getAttribute("style") !== n.style && l.setAttribute("style", n.style), n.style.includes("display: none") && l instanceof HTMLElement && (l.style.display = "none")) : l.removeAttribute("style")), n.type === "copy") { const i = l.parentNode; if (i) { const o = document.createElement("div"); o.innerHTML = n.outerHtml; const r = o.children[0]; i && r && i.insertBefore(r, l.nextSibling) } } if (n.type === "nodeToElement") { const i = l.childNodes.item(n.nodeIndex); if (i && i.nodeType === Node.TEXT_NODE) { const o = document.createElement("span"); o.className = J.virtualTextNode, o.textContent = i.textContent, l.replaceChild(o, i) } } } catch (l) { console.error(l) } } restoreToOriginal() { window.location.reload() } toggleEditMode() { this.editMode === "normal" ? this.toggleToEditMode() : this.toggleToEditMode() } toggleToEditMode() { this.editMode = "edit", this.editInit(), document.body.classList.add(J.editModeActive) } toggleToPreviewMode() { this.editMode = "normal", this.onExitEdit(), document.body.classList.remove(J.editModeActive) } editInit() { this._boundHandlePreEditHover = e => this.handlePreEditHover(e), this._boundHandlePreEditOut = e => this.handlePreEditOut(e), this._boundHandleEditSelect = e => this.handleEditSelect(e), this._boundHandleKeydown = e => this.handleKeydown(e), document.addEventListener("mouseover", this._boundHandlePreEditHover), document.addEventListener("mouseout", this._boundHandlePreEditOut), document.addEventListener("click", this._boundHandleEditSelect), document.addEventListener("keydown", this._boundHandleKeydown), this.textSplitMode && this.wrapperTextNode() } handleKeydown(e) { const n = e.composedPath()[0]; n instanceof HTMLElement && this.isEditorUIElement(n) || Md(e) && this.undoPatch() } onExitEdit() { var e, n; document.removeEventListener("mouseover", this._boundHandlePreEditHover), document.removeEventListener("mouseout", this._boundHandlePreEditOut), document.removeEventListener("click", this._boundHandleEditSelect), document.removeEventListener("keydown", this._boundHandleKeydown), (e = this.textEditPanelView) == null || e.destroy(), (n = this.elementEditPanelView) == null || n.destroy(), this.hoveringElement = null, this.activeElement = null } optimizePatches() { if (this.patchList.length <= 1) return this.patchList; const e = []; return this.patchList.forEach(n => { if (n.type !== "style") e.push(n); else { const l = e.findIndex(i => i.selector === n.selector); l === -1 ? e.push(n) : e[l] = n } } ), e } isEditorUIElement(e) { return [`.${J.spaceControlView}`, `.${J.textEditorPanelView}`, `.${J.elementEditorPanelView}`, `.${J.footerToolbarView}`, `.${J.colorPicker}`].some(i => e.closest(i)) } handlePreEditHover(e) { if (this.editMode !== "edit") return; const n = e.composedPath() , l = n.flatMap(o => o instanceof HTMLElement ? [o] : []) , i = n[0]; if (!i || !(i instanceof HTMLElement) || i === document.documentElement || i === document.body) return null; l.some(o => this.isEditorUIElement(o)) || (this.hoveringElement && this.hoveringElement.classList.remove(J.spaceEditorHighlight), this.elementEditPanelView.destroy(), this.hoveringElement = i, this.elementEditPanelView.show(i, e), this.setOriginStyle(i)) } handlePreEditOut(e) { if (this.editMode !== "edit") return; const n = e.composedPath() , l = n.flatMap(r => r instanceof HTMLElement ? [r] : []) , i = n[0]; if (!i || !(i instanceof HTMLElement) || l.some(r => this.isEditorUIElement(r))) return; const o = e.relatedTarget; (o === document.documentElement || o === document.body) && this.elementEditPanelView.destroy() } handleEditSelect(e) { if (this.editMode !== "edit") return; const n = e.target; if (!n || !(n instanceof HTMLElement)) return; const l = n.tagName.toLowerCase(); v1.includes(l) || this.isEditorUIElement(n) || this.hasDirectTextContent(n) && (e.stopPropagation(), e.preventDefault(), this.activeElement && this.activeElement.classList.remove(J.spaceEditorHighlight), this.activeElement = n, this.setOriginStyle(n), this.textEditPanelView.show(n, e)) } wrapperTextNode() { const e = new Set , n = r => { let c = !1; for (let a = 0; a < r.childNodes.length; a++) { const d = r.childNodes[a]; if (d.nodeType === Node.ELEMENT_NODE) return !1; d.nodeType === Node.TEXT_NODE && Ut(d) && (c = !0) } return c } , l = r => { let c = !1 , a = !1; for (let d = 0; d < r.childNodes.length; d++) { const s = r.childNodes[d]; if (s.nodeType === Node.TEXT_NODE && Ut(s) ? c = !0 : s.nodeType === Node.ELEMENT_NODE && (a = !0), c && a) return !0 } return !1 } , i = r => ["STRONG", "EM", "U", "B", "I", "MARK", "SPAN"].includes(r.tagName) , o = r => { if (!(r.nodeType === Node.ELEMENT_NODE && r instanceof Element && this.isEditorUIElement(r))) { if (r.nodeType === Node.TEXT_NODE && Ut(r)) { if (r.parentNode && r.parentNode.nodeType === Node.ELEMENT_NODE) { const c = r.parentNode; if (!(c instanceof HTMLElement) || i(c) || n(c)) return; if (l(c)) { e.add(c); const a = document.createElement("span"); a.className = J.virtualTextNode, a.textContent = r.textContent, c.replaceChild(a, r) } } } else if (r.nodeType === Node.ELEMENT_NODE && r instanceof Element) { if (r.classList && r.classList.contains(J.virtualTextNode)) return; Array.from(r.childNodes).forEach(a => o(a)) } } } ; o(document.body), e.forEach(r => { this.savedElements.has(r) || this.savedElements.set(r, r.innerHTML) } ) } setOriginStyle(e) { if (!this.originalElementStyle.has(e)) { const n = e.getAttribute("style") || "" , l = e.textContent || ""; this.originalElementStyle.set(e, { style: n, textContent: l }) } } hasDirectTextContent(e) { var i, o, r, c; if (["BR", "HR", "IMG", "INPUT", "TEXTAREA", "SELECT", "BUTTON"].includes(e.tagName)) return !1; if (e.classList.contains(J.virtualTextNode)) return !!Ut(e); let l = !1; for (let a = 0; a < e.childNodes.length; a++) { const d = e.childNodes[a]; if (d.nodeType === Node.TEXT_NODE && Ut(d)) { l = !0; break } } if (l || e.children.length === 0 && Ut(e)) return !0; if (e.children.length > 0) { const a = document.createElement("div"); for (a.innerHTML = e.innerHTML; a.firstElementChild; ) a.removeChild(a.firstElementChild); if ((((i = a.textContent) == null ? void 0 : i.trim()) ?? "") !== "") return !0; let s = !1 , u = !1 , b = !1; for (let g = 0; g < e.childNodes.length; g++) { const V = e.childNodes[g]; if (V.nodeType === Node.TEXT_NODE && ((o = V.textContent) != null && o.trim()) ? u = !0 : V.nodeType === Node.ELEMENT_NODE && (b = !0), u && b) { s = !0; break } } return s ? !0 : (["DIV", "SECTION", "ARTICLE", "ASIDE", "NAV", "MAIN", "HEADER", "FOOTER"].includes(e.tagName) && !((r = e.textContent) != null && r.trim()), !1) } return !!((c = e.textContent) != null && c.trim()) } injectGlobalStyle() { const e = document.createElement("style"); e.id = ur, e.textContent = ` .${J.spaceEditorHighlight} { outline: 1px dashed #0081F2; position: relative; cursor: pointer; border-radius: 12px; } .${J.virtualTextNode}.${J.spaceEditorHighlight}{ outline: none; text-decoration: underline; border-radius:unset; } .${J.onlyTextNode}{ text-decoration: underline; cursor: pointer!important; border-radius: 12px; outline: 1px dashed #0081F2; } .${J.textNodeActive}{ border-radius: 6px; outline: 1px solid #0081F2; background: rgba(0, 129, 242, 0.08); text-decoration: none; } /* 编辑模式下通用光标样式 */ body.${J.editModeActive} * { cursor: default; } /* 可编辑元素的光标样式 */ body.${J.editModeActive} .${J.virtualTextNode}, body.${J.editModeActive} .${J.spaceEditorHighlight} { cursor: pointer; } .${J.hidden}{ opacity:0 } ${Wa} `, document.head.appendChild(e) } logElementInfo(e, n) { var l, i; console.log(`[Element Info] ${n}`, { tagName: e.tagName, id: e.id || "无", class: e.className || "无", childElementCount: e.childElementCount, hasChildNodes: e.hasChildNodes(), textContent: (((l = e.textContent) == null ? void 0 : l.length) ?? 0) > 50 ? ((i = e.textContent) == null ? void 0 : i.substring(0, 47)) + "..." : e.textContent }) } } var Ee = (t => (t.BOLD = "bold", t.ITALIC = "italic", t.UNDERLINE = "underline", t.COLOR = "color", t.COPY = "copy", t.DELETE = "delete", t))(Ee || {}); const N1 = [{ type: "bold", label: "Bold" }, { type: "italic", label: "Italic" }, { type: "underline", label: "Underline" }, { type: "color" }, { type: "copy" }, { type: "delete" }]; class Ae { constructor(e, n) { this.targetElement = e, this.se = n } static isTextBolded(e) { return e === "bold" || e === "700" } static isTextUnderlined(e) { return e === "underline" } static isTextItalic(e) { return e === "italic" } static isDomDeleted(e) { return e === "none" } handleQuickActionClick(e, n) { const l = c => { var d; const a = (d = this.se.originalElementStyle.get(this.targetElement)) == null ? void 0 : d.style; if (a) { const s = document.createElement("div"); return s.style.cssText = a, s.style[c] } return null } , i = getComputedStyle(this.targetElement) , o = this.targetElement.cloneNode(); o.style = ""; const r = getComputedStyle(o); switch (e) { case "bold": { if (Ae.isTextBolded(i.fontWeight)) { const c = l("fontWeight"); c ? Ae.isTextBolded(c) ? this.targetElement.style.fontWeight = "normal" : this.targetElement.style.fontWeight = c : Ae.isTextBolded(r.fontWeight) ? this.targetElement.style.removeProperty("font-weight") : this.targetElement.style.fontWeight = "normal" } else this.targetElement.style.fontWeight = "bold"; break } case "underline": { if (Ae.isTextUnderlined(i.textDecorationLine)) { const c = l("textDecorationLine"); c ? Ae.isTextUnderlined(c) ? this.targetElement.style.textDecorationLine = "none" : this.targetElement.style.textDecorationLine = c : Ae.isTextUnderlined(r.textDecorationLine) ? this.targetElement.style.removeProperty("text-decoration-line") : this.targetElement.style.textDecorationLine = "none" } else this.targetElement.style.textDecorationLine = "underline"; break } case "italic": { if (Ae.isTextItalic(i.fontStyle)) { const c = l("fontStyle"); c ? Ae.isTextItalic(c) ? this.targetElement.style.fontStyle = "normal" : this.targetElement.style.fontStyle = c : Ae.isTextItalic(r.fontStyle) ? this.targetElement.style.removeProperty("font-style") : this.targetElement.style.fontStyle = "normal" } else this.targetElement.style.fontStyle = "italic"; break } case "delete": { if (Ae.isDomDeleted(i.display)) { const c = l("display"); c ? Ae.isDomDeleted(c) ? this.targetElement.style.display = "" : this.targetElement.style.display = c : Ae.isDomDeleted(r.display) ? this.targetElement.style.removeProperty("display") : this.targetElement.style.display = "" } else this.targetElement.style.display = "none"; break } case "color": { n && (this.targetElement.style.color = n); break } } } updateTextContent(e) { const n = this.targetElement; n.classList.contains(J.virtualTextNode) ? n.textContent = e : this.updateElementTextWithFormattingPreserved(n, e), e.trim() && n.style.display === "none" && (n.style.display = "") } copyElement(e) { if (e) try { const n = e.parentNode; if (!n) { console.error("无法复制元素: 未找到父元素"); return } const l = e.cloneNode(!0); return l instanceof HTMLElement ? (l.id && l.removeAttribute("id"), l.style.display === "none" && (l.style.display = ""), l.classList.add(J.copyNode), e.nextSibling ? n.insertBefore(l, e.nextSibling) : n.appendChild(l), l) : void 0 } catch (n) { console.error(n) } } removeFormatting(e, n) { for (const l of n) e.querySelectorAll(l).forEach(o => { var d; const r = o.innerHTML , c = o.getAttribute("style") || "" , a = document.createElement("span"); if (a.innerHTML = r, l.toLowerCase() === "strong" || l.toLowerCase() === "b" ? a.style.fontWeight = "bold" : l.toLowerCase() === "em" || l.toLowerCase() === "i" ? a.style.fontStyle = "italic" : l.toLowerCase() === "u" && (a.style.textDecoration = "underline"), c) { const s = a.getAttribute("style") || ""; a.setAttribute("style", `${s}; ${c}`) } (d = o.parentNode) == null || d.replaceChild(a, o) } ) } updateElementTextWithFormattingPreserved(e, n) { e.querySelector("strong, em, u, b, i") && this.removeFormatting(e, ["strong", "em", "u", "b", "i"]), e.textContent = n } } const F1 = Be`` , Y1 = Be`` , U1 = Be`` , J1 = t => Be`` , x1 = Be`` , w1 = Be`` , gr = Be`` , k1 = Be`` , z1 = Be`` , Q1 = Be`` , K1 = Be`` , L1 = Be`` , M1 = Be`` , T1 = Be`` , H1 = Be``; function De(t) { return `element-edit-panel-view-${t}` } class D1 extends fn { constructor(e, n) { super(e), this.se = n, this.opacity = 0, this.handleCloseWhenEscape = l => { l.key === "Escape" && this.destroy() } , this.handleClickOutside = l => { const i = l.composedPath(); i[0] !== this.triggerEl && (!this.panelEl || !i.includes(this.panelEl)) && this.destroy() } , this.isMounted = !1 } get template() { return M`
` } show(e, n) { this.triggerEl = e, this.isMounted = !0, this.render(), setTimeout( () => { this.opacity = 1, this.render() } , 0), this.panelEl && (this.panelEl.setAnchor(this.triggerEl), this.panelEl.open(n)), this.se.hasDirectTextContent(this.triggerEl) ? this.triggerEl.classList.add(J.onlyTextNode) : this.triggerEl.classList.add(J.spaceEditorHighlight), this.domEditor = new Ae(e,this.se), document.addEventListener("keydown", this.handleCloseWhenEscape), document.addEventListener("mousedown", this.handleClickOutside) } destroy() { this.isMounted && (document.removeEventListener("keydown", this.handleCloseWhenEscape), document.removeEventListener("mousedown", this.handleClickOutside), this.triggerEl.classList.remove(J.spaceEditorHighlight), this.triggerEl.classList.remove(J.onlyTextNode), this.opacity = 0, this.render(), super.destroy(), this.isMounted = !1) } handleQuickActionClick(e) { const n = e === Ee.COPY; if (n) { if (!this.domEditor.copyElement(this.triggerEl)) return } else this.domEditor.handleQuickActionClick(e); const l = this.se.createPatch(this.triggerEl, n ? "copy" : void 0); l && this.se.debouncedAddPatched(l), this.destroy() } handleSetRootRef(e) { e instanceof hi && (this.panelEl = e) } } const st = ( () => { /*! * Copyright (c) 2021-2024 Momo Bassit. * Licensed under the MIT License (MIT) * https://github.com/mdbassit/Coloris * Version: 0.24.0 * NPM: https://github.com/melloware/coloris-npm */ return ( (t, e, n, l) => { const i = e.createElement("canvas").getContext("2d") , o = { r: 0, g: 0, b: 0, h: 0, s: 0, v: 0, a: 1 }; let r, c, a, d, s, u, b, g, V, p, X, Z, f, G, C, E, y = {}; const A = { el: "[data-coloris]", parent: "body", theme: "default", themeMode: "light", rtl: !1, wrap: !0, margin: 2, format: "hex", formatToggle: !1, swatches: [], swatchesOnly: !1, alpha: !0, forceAlpha: !1, focusInput: !0, selectInput: !1, inline: !1, defaultColor: "#000000", clearButton: !1, clearLabel: "Clear", closeButton: !1, closeLabel: "Close", onChange: () => l, a11y: { open: "Open color picker", close: "Close color picker", clear: "Clear the selected color", marker: "Saturation: {s}. Brightness: {v}.", hueSlider: "Hue slider", alphaSlider: "Opacity slider", input: "Color value field", format: "Color format", swatch: "Color swatch", instruction: "Saturation and brightness selector. Use up, down, left and right arrow keys to select." } } , F = {}; let w = "" , _ = {} , D = !1; function T(h) { if (typeof h == "object") for (const I in h) switch (I) { case "el": ze(h.el), h.wrap !== !1 && Qe(h.el); break; case "parent": r = h.parent instanceof HTMLElement ? h.parent : e.querySelector(h.parent), r && (r.appendChild(c), A.parent = h.parent, r === e.body && (r = l)); break; case "themeMode": A.themeMode = h.themeMode, h.themeMode === "auto" && t.matchMedia && t.matchMedia("(prefers-color-scheme: dark)").matches && (A.themeMode = "dark"); case "theme": h.theme && (A.theme = h.theme), c.className = `clr-picker clr-${A.theme} clr-${A.themeMode}`, A.inline && Ye(); break; case "rtl": A.rtl = !!h.rtl, Array.from(Rl().getElementsByClassName("clr-field")).forEach(N => N.classList.toggle("clr-rtl", A.rtl)); break; case "margin": h.margin *= 1, A.margin = isNaN(h.margin) ? A.margin : h.margin; break; case "wrap": h.el && h.wrap && Qe(h.el); break; case "formatToggle": A.formatToggle = !!h.formatToggle, We("clr-format").style.display = A.formatToggle ? "block" : "none", A.formatToggle && (A.format = "auto"); break; case "swatches": if (Array.isArray(h.swatches)) { const N = We("clr-swatches") , Q = e.createElement("div"); N.textContent = "", h.swatches.forEach( (q, ae) => { const P = e.createElement("button"); P.setAttribute("type", "button"), P.setAttribute("id", `clr-swatch-${ae}`), P.setAttribute("aria-labelledby", `clr-swatch-label clr-swatch-${ae}`), P.style.color = q, P.textContent = q, Q.appendChild(P) } ), h.swatches.length && N.appendChild(Q), A.swatches = h.swatches.slice() } break; case "swatchesOnly": A.swatchesOnly = !!h.swatchesOnly, c.setAttribute("data-minimal", A.swatchesOnly); break; case "alpha": A.alpha = !!h.alpha, c.setAttribute("data-alpha", A.alpha); break; case "inline": if (A.inline = !!h.inline, c.setAttribute("data-inline", A.inline), A.inline) { const N = h.defaultColor || A.defaultColor; G = ut(N), Ye(), qe(N) } break; case "clearButton": typeof h.clearButton == "object" && (h.clearButton.label && (A.clearLabel = h.clearButton.label, b.innerHTML = A.clearLabel), h.clearButton = h.clearButton.show), A.clearButton = !!h.clearButton, b.style.display = A.clearButton ? "block" : "none"; break; case "clearLabel": A.clearLabel = h.clearLabel, b.innerHTML = A.clearLabel; break; case "closeButton": A.closeButton = !!h.closeButton, A.closeButton ? c.insertBefore(g, s) : s.appendChild(g); break; case "closeLabel": A.closeLabel = h.closeLabel, g.innerHTML = A.closeLabel; break; case "a11y": const R = h.a11y; let v = !1; if (typeof R == "object") for (const N in R) R[N] && A.a11y[N] && (A.a11y[N] = R[N], v = !0); if (v) { const N = We("clr-open-label") , Q = We("clr-swatch-label"); N.innerHTML = A.a11y.open, Q.innerHTML = A.a11y.swatch, g.setAttribute("aria-label", A.a11y.close), b.setAttribute("aria-label", A.a11y.clear), V.setAttribute("aria-label", A.a11y.hueSlider), X.setAttribute("aria-label", A.a11y.alphaSlider), u.setAttribute("aria-label", A.a11y.input), a.setAttribute("aria-label", A.a11y.instruction) } break; default: A[I] = h[I] } } function Ve(h, I) { typeof h == "string" && typeof I == "object" && (F[h] = I, D = !0) } function Xe(h) { delete F[h], Object.keys(F).length === 0 && (D = !1, h === w && pe()) } function ke(h) { if (D) { const I = ["el", "wrap", "rtl", "inline", "defaultColor", "a11y"]; for (let R in F) { const v = F[R]; if (h.matches(R)) { w = R, _ = {}, I.forEach(N => delete v[N]); for (let N in v) _[N] = Array.isArray(A[N]) ? A[N].slice() : A[N]; T(v); break } } } } function pe() { Object.keys(_).length > 0 && (T(_), w = "", _ = {}) } function ze(h) { h instanceof HTMLElement && (h = [h]), Array.isArray(h) ? h.forEach(I => { $(I, "click", He), $(I, "input", $e) } ) : ($(e, "click", h, He), $(e, "input", h, $e)) } function He(h) { A.inline || (ke(h.target), f = h.target, C = f.value, G = ut(C), c.classList.add("clr-open"), Ye(), qe(C), (A.focusInput || A.selectInput) && (u.focus({ preventScroll: !0 }), u.setSelectionRange(f.selectionStart, f.selectionEnd)), A.selectInput && u.select(), (E || A.swatchesOnly) && eo().shift().focus(), f.dispatchEvent(new Event("open",{ bubbles: !0 }))) } function Ye() { if (!c || !f && !A.inline) return; const h = r , I = t.scrollY , R = c.offsetWidth , v = c.offsetHeight , N = { left: !1, top: !1 }; let Q, q, ae, P = { x: 0, y: 0 }; if (h && (Q = t.getComputedStyle(h), q = parseFloat(Q.marginTop), ae = parseFloat(Q.borderTopWidth), P = h.getBoundingClientRect(), P.y += ae + I), !A.inline) { const Ue = f.getBoundingClientRect(); let Vt = Ue.x , pt = I + Ue.y + Ue.height + A.margin; h ? (Vt -= P.x, pt -= P.y, Vt + R > h.clientWidth && (Vt += Ue.width - R, N.left = !0), pt + v > h.clientHeight - q && v + A.margin <= Ue.top - (P.y - I) && (pt -= Ue.height + v + A.margin * 2, N.top = !0), pt += h.scrollTop) : (Vt + R > e.documentElement.clientWidth && (Vt += Ue.width - R, N.left = !0), pt + v - I > e.documentElement.clientHeight && v + A.margin <= Ue.top && (pt = I + Ue.y - v - A.margin, N.top = !0)), c.classList.toggle("clr-left", N.left), c.classList.toggle("clr-top", N.top), c.style.left = `${Vt}px`, c.style.top = `${pt}px`, P.x += c.offsetLeft, P.y += c.offsetTop } y = { width: a.offsetWidth, height: a.offsetHeight, x: a.offsetLeft + P.x, y: a.offsetTop + P.y } } function Qe(h) { h instanceof HTMLElement ? Y(h) : Array.isArray(h) ? h.forEach(Y) : e.querySelectorAll(h).forEach(Y) } function Y(h) { const I = h.parentNode; if (!I.classList.contains("clr-field")) { const R = e.createElement("div"); let v = "clr-field"; (A.rtl || h.classList.contains("clr-rtl")) && (v += " clr-rtl"), R.innerHTML = '', I.insertBefore(R, h), R.className = v, R.style.color = h.value, R.appendChild(h) } } function $e(h) { const I = h.target.parentNode; I.classList.contains("clr-field") && (I.style.color = h.target.value) } function Ke(h) { if (f && !A.inline) { const I = f; h && (f = l, C !== I.value && (I.value = C, I.dispatchEvent(new Event("input",{ bubbles: !0 })))), setTimeout( () => { C !== I.value && I.dispatchEvent(new Event("change",{ bubbles: !0 })) } ), c.classList.remove("clr-open"), D && pe(), I.dispatchEvent(new Event("close",{ bubbles: !0 })), A.focusInput && I.focus({ preventScroll: !0 }), f = l } } function qe(h) { const I = wd(h) , R = xd(I); Se(R.s, R.v), Cn(I, R), V.value = R.h, c.style.color = `hsl(${R.h}, 100%, 50%)`, p.style.left = `${R.h / 360 * 100}%`, d.style.left = `${y.width * R.s / 100}px`, d.style.top = `${y.height - y.height * R.v / 100}px`, X.value = R.a * 100, Z.style.left = `${R.a * 100}%` } function ut(h) { const I = h.substring(0, 3).toLowerCase(); return I === "rgb" || I === "hsl" ? I : "hex" } function Ie(h) { h = h !== l ? h : u.value, f && (f.value = h, f.dispatchEvent(new Event("input",{ bubbles: !0 }))), A.onChange && A.onChange.call(t, h, f), e.dispatchEvent(new CustomEvent("coloris:pick",{ detail: { color: h, currentEl: f } })) } function O(h, I) { const R = { h: V.value * 1, s: h / y.width * 100, v: 100 - I / y.height * 100, a: X.value / 100 } , v = Ud(R); Se(R.s, R.v), Cn(v, R), Ie() } function Se(h, I) { let R = A.a11y.marker; h = h.toFixed(1) * 1, I = I.toFixed(1) * 1, R = R.replace("{s}", h), R = R.replace("{v}", I), d.setAttribute("aria-label", R) } function et(h) { return { pageX: h.changedTouches ? h.changedTouches[0].pageX : h.pageX, pageY: h.changedTouches ? h.changedTouches[0].pageY : h.pageY } } function me(h) { const I = et(h); let R = I.pageX - y.x , v = I.pageY - y.y; r && (v += r.scrollTop), qi(R, v), h.preventDefault(), h.stopPropagation() } function Nd(h, I) { let R = d.style.left.replace("px", "") * 1 + h , v = d.style.top.replace("px", "") * 1 + I; qi(R, v) } function qi(h, I) { h = h < 0 ? 0 : h > y.width ? y.width : h, I = I < 0 ? 0 : I > y.height ? y.height : I, d.style.left = `${h}px`, d.style.top = `${I}px`, O(h, I), d.focus() } function Cn(h, I) { h === void 0 && (h = {}), I === void 0 && (I = {}); let R = A.format; for (const ae in h) o[ae] = h[ae]; for (const ae in I) o[ae] = I[ae]; const v = kd(o) , N = v.substring(0, 7); switch (d.style.color = N, Z.parentNode.style.color = N, Z.style.color = v, s.style.color = v, a.style.display = "none", a.offsetHeight, a.style.display = "", Z.nextElementSibling.style.display = "none", Z.nextElementSibling.offsetHeight, Z.nextElementSibling.style.display = "", R === "mixed" ? R = o.a === 1 ? "hex" : "rgb" : R === "auto" && (R = G), R) { case "hex": u.value = v; break; case "rgb": u.value = zd(o); break; case "hsl": u.value = Qd(Jd(o)); break } var Q = typeof A.parent == "object" ? A.parent : e; const q = Q.querySelector(`.clr-format [value="${R}"]`); q && (q.checked = !0) } function Fd() { const h = V.value * 1 , I = d.style.left.replace("px", "") * 1 , R = d.style.top.replace("px", "") * 1; c.style.color = `hsl(${h}, 100%, 50%)`, p.style.left = `${h / 360 * 100}%`, O(I, R) } function Yd() { const h = X.value / 100; Z.style.left = `${h * 100}%`, Cn({ a: h }), Ie() } function Ud(h) { const I = h.s / 100 , R = h.v / 100; let v = I * R , N = h.h / 60 , Q = v * (1 - n.abs(N % 2 - 1)) , q = R - v; v = v + q, Q = Q + q; const ae = n.floor(N) % 6 , P = [v, Q, q, q, Q, v][ae] , Ue = [Q, v, v, Q, q, q][ae] , Vt = [q, q, Q, v, v, Q][ae]; return { r: n.round(P * 255), g: n.round(Ue * 255), b: n.round(Vt * 255), a: h.a } } function Jd(h) { const I = h.v / 100 , R = I * (1 - h.s / 100 / 2); let v; return R > 0 && R < 1 && (v = n.round((I - R) / n.min(R, 1 - R) * 100)), { h: h.h, s: v || 0, l: n.round(R * 100), a: h.a } } function xd(h) { const I = h.r / 255 , R = h.g / 255 , v = h.b / 255 , N = n.max(I, R, v) , Q = n.min(I, R, v) , q = N - Q , ae = N; let P = 0 , Ue = 0; return q && (N === I && (P = (R - v) / q), N === R && (P = 2 + (v - I) / q), N === v && (P = 4 + (I - R) / q), N && (Ue = q / N)), P = n.floor(P * 60), { h: P < 0 ? P + 360 : P, s: n.round(Ue * 100), v: n.round(ae * 100), a: h.a } } function wd(h) { const I = /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i; let R, v; return i.fillStyle = "#000", i.fillStyle = h, R = I.exec(i.fillStyle), R ? v = { r: R[3] * 1, g: R[4] * 1, b: R[5] * 1, a: R[6] * 1 } : (R = i.fillStyle.replace("#", "").match(/.{2}/g).map(N => parseInt(N, 16)), v = { r: R[0], g: R[1], b: R[2], a: 1 }), v } function kd(h) { let I = h.r.toString(16) , R = h.g.toString(16) , v = h.b.toString(16) , N = ""; if (h.r < 16 && (I = "0" + I), h.g < 16 && (R = "0" + R), h.b < 16 && (v = "0" + v), A.alpha && (h.a < 1 || A.forceAlpha)) { const Q = h.a * 255 | 0; N = Q.toString(16), Q < 16 && (N = "0" + N) } return "#" + I + R + v + N } function zd(h) { return !A.alpha || h.a === 1 && !A.forceAlpha ? `rgb(${h.r}, ${h.g}, ${h.b})` : `rgba(${h.r}, ${h.g}, ${h.b}, ${h.a})` } function Qd(h) { return !A.alpha || h.a === 1 && !A.forceAlpha ? `hsl(${h.h}, ${h.s}%, ${h.l}%)` : `hsla(${h.h}, ${h.s}%, ${h.l}%, ${h.a})` } function Kd() { Rl().querySelector("#clr-picker") || (r = l, c = e.createElement("div"), c.setAttribute("id", "clr-picker"), c.className = "clr-picker", c.innerHTML = `${A.a11y.open}${A.a11y.swatch}`, e.body.appendChild(c), a = We("clr-color-area"), d = We("clr-color-marker"), b = We("clr-clear"), g = We("clr-close"), s = We("clr-color-preview"), u = We("clr-color-value"), V = We("clr-hue-slider"), p = We("clr-hue-marker"), X = We("clr-alpha-slider"), Z = We("clr-alpha-marker"), ze(A.el), Qe(A.el), $(c, "mousedown", h => { c.classList.remove("clr-keyboard-nav"), h.stopPropagation() } ), $(a, "mousedown", h => { $(e, "mousemove", me) } ), $(a, "contextmenu", h => { h.preventDefault() } ), $(a, "touchstart", h => { e.addEventListener("touchmove", me, { passive: !1 }) } ), $(d, "mousedown", h => { $(e, "mousemove", me) } ), $(d, "touchstart", h => { e.addEventListener("touchmove", me, { passive: !1 }) } ), $(u, "change", h => { const I = u.value; if (f || A.inline) { const R = I === "" ? I : qe(I); Ie(R) } } ), $(b, "click", h => { Ie(""), Ke() } ), $(g, "click", h => { Ie(), Ke() } ), $(We("clr-format"), "click", ".clr-format input", h => { G = h.target.value, Cn(), Ie() } ), $(c, "click", ".clr-swatches button", h => { qe(h.target.textContent), Ie(), A.swatchesOnly && Ke() } ), $(e, "mouseup", h => { e.removeEventListener("mousemove", me) } ), $(e, "touchend", h => { e.removeEventListener("touchmove", me) } ), $(e, "mousedown", h => { E = !1, c.classList.remove("clr-keyboard-nav"), Ke() } ), $(e, "keydown", h => { const I = h.key , R = h.target , v = h.shiftKey; if (I === "Escape" ? Ke(!0) : ["Tab", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(I) && (E = !0, c.classList.add("clr-keyboard-nav")), I === "Tab" && R.matches(".clr-picker *")) { const Q = eo() , q = Q.shift() , ae = Q.pop(); v && R === q ? (ae.focus(), h.preventDefault()) : !v && R === ae && (q.focus(), h.preventDefault()) } } ), $(e, "click", ".clr-field button", h => { D && pe(), h.target.nextElementSibling.dispatchEvent(new Event("click",{ bubbles: !0 })) } ), $(d, "keydown", h => { const I = { ArrowUp: [0, -1], ArrowDown: [0, 1], ArrowLeft: [-1, 0], ArrowRight: [1, 0] }; Object.keys(I).includes(h.key) && (Nd(...I[h.key]), h.preventDefault()) } ), $(a, "click", me), $(V, "input", Fd), $(X, "input", Yd)) } function eo() { return Array.from(c.querySelectorAll("input, button")).filter(R => !!R.offsetWidth) } function We(h) { var I = Rl(); return I.querySelector("#" + h) } function Rl() { return typeof A.parent == "object" ? A.parent : e } function $(h, I, R, v) { const N = Element.prototype.matches || Element.prototype.msMatchesSelector; typeof R == "string" ? h.addEventListener(I, Q => { N.call(Q.target, R) && v.call(Q.target, Q) } ) : (v = R, h.addEventListener(I, v)) } function yn(h, I) { I = I !== l ? I : [], e.readyState !== "loading" ? h(...I) : e.addEventListener("DOMContentLoaded", () => { h(...I) } ) } NodeList !== l && NodeList.prototype && !NodeList.prototype.forEach && (NodeList.prototype.forEach = Array.prototype.forEach); function Ld(h, I) { f = I, C = f.value, ke(I), G = ut(h), Ye(), qe(h), Ie(), C !== h && f.dispatchEvent(new Event("change",{ bubbles: !0 })) } const El = ( () => { const h = { init: Kd, set: T, wrap: Qe, close: Ke, setInstance: Ve, setColor: Ld, removeInstance: Xe, updatePosition: Ye, ready: yn }; function I(R) { yn( () => { R && (typeof R == "string" ? ze(R) : T(R)) } ) } for (const R in h) I[R] = function() { for (var v = arguments.length, N = new Array(v), Q = 0; Q < v; Q++) N[Q] = arguments[Q]; yn(h[R], N) } ; return yn( () => { t.addEventListener("resize", R => { I.updatePosition() } ), t.addEventListener("scroll", R => { I.updatePosition() } ) } ), I } )(); return El.coloris = El, El } )(window, document, Math) } )(); st.coloris; st.init; st.set; st.wrap; st.close; st.setInstance; st.removeInstance; st.updatePosition; function de(t) { return `text-edit-panel-view-${t}` } class j1 extends fn { constructor(e, n) { super(e), this.se = n, this.textContent = "", this.currentTextColor = "", this.handleCloseWhenEscape = l => { l.key === "Escape" && this.destroy() } , this.handleClickOutside = l => { const i = l.composedPath(); (!this.panelEl || !i.includes(this.panelEl)) && this.destroy() } , this.handleColorChange = l => { const i = l.detail.color; this.domEditor.handleQuickActionClick(Ee.COLOR, i); const o = this.se.createPatch(this.triggerEl); this.se.debouncedAddPatched(o), this.currentTextColor = i, this.render() } } get template() { return M` ` } show(e, n) { this.triggerEl = e, this.textContent = e.textContent ?? "", this.currentTextColor = getComputedStyle(e).color, this.render(), this.panelEl && (this.panelEl.setAnchor(this.triggerEl), this.panelEl.open(n)), this.triggerEl.classList.add(J.textNodeActive), this.domEditor = new Ae(e,this.se), document.addEventListener("keydown", this.handleCloseWhenEscape), document.addEventListener("mousedown", this.handleClickOutside), document.addEventListener("coloris:pick", this.handleColorChange) } destroy() { var e; document.removeEventListener("keydown", this.handleCloseWhenEscape), document.removeEventListener("mousedown", this.handleClickOutside), document.removeEventListener("coloris:pick", this.handleColorChange), (e = this.triggerEl) == null || e.classList.remove(J.textNodeActive), super.destroy() } handleQuickActionClick(e) { this.domEditor.handleQuickActionClick(e); const n = this.se.createPatch(this.triggerEl); this.se.debouncedAddPatched(n), e === Ee.DELETE && this.destroy(), this.render() } handleInput(e) { const n = e.target; if (n instanceof HTMLTextAreaElement) { this.textContent = n.value, this.render(), this.domEditor.updateTextContent(this.textContent); const l = this.se.createPatch(this.triggerEl); this.se.debouncedAddPatched(l) } } handleSetRootRef(e) { e instanceof hi && (this.panelEl = e) } handleInitColorPicker(e) { e instanceof HTMLInputElement && (st.init(), st.coloris({ el: e, alpha: !0, swatches: ["#FFF", "#000000", "#FF0001", "#FF5100", "#FFC700", "#00B336", "#00CBFF", "#65BAFF", "#B400D8", "#86A3AB", "#4F5559"] })) } } const _1 = { snakeToCamel: t => t.replace(/(_[a-z])/g, e => e.toUpperCase().replace("_", "")), camelToSnake: t => t.replace(/([A-Z])/g, e => `_${e.toLowerCase()}`).replace(/^_/, "") }; function P1(t, e) { return _1.camelToSnake(e) } function il(t, e) { return e && (Array.isArray(e) ? e.map(n => il(t, n)) : typeof e == "object" ? Object.keys(e).reduce( (n, l) => { const i = e[l] , o = P1(t, l); return n[o] = il(t, i), n } , {}) : e) } var ni = function(t, e) { return ni = Object.setPrototypeOf || { __proto__: [] }instanceof Array && function(n, l) { n.__proto__ = l } || function(n, l) { for (var i in l) Object.prototype.hasOwnProperty.call(l, i) && (n[i] = l[i]) } , ni(t, e) }; function Fe(t, e) { if (typeof e != "function" && e !== null) throw new TypeError("Class extends value " + String(e) + " is not a constructor or null"); ni(t, e); function n() { this.constructor = t } t.prototype = e === null ? Object.create(e) : (n.prototype = e.prototype, new n) } var B = function() { return B = Object.assign || function(e) { for (var n, l = 1, i = arguments.length; l < i; l++) { n = arguments[l]; for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]) } return e } , B.apply(this, arguments) }; function li(t, e) { var n = {}; for (var l in t) Object.prototype.hasOwnProperty.call(t, l) && e.indexOf(l) < 0 && (n[l] = t[l]); if (t != null && typeof Object.getOwnPropertySymbols == "function") for (var i = 0, l = Object.getOwnPropertySymbols(t); i < l.length; i++) e.indexOf(l[i]) < 0 && Object.prototype.propertyIsEnumerable.call(t, l[i]) && (n[l[i]] = t[l[i]]); return n } function W(t, e, n, l) { function i(o) { return o instanceof n ? o : new n(function(r) { r(o) } ) } return new (n || (n = Promise))(function(o, r) { function c(s) { try { d(l.next(s)) } catch (u) { r(u) } } function a(s) { try { d(l.throw(s)) } catch (u) { r(u) } } function d(s) { s.done ? o(s.value) : i(s.value).then(c, a) } d((l = l.apply(t, e || [])).next()) } ) } function S(t, e) { var n = { label: 0, sent: function() { if (o[0] & 1) throw o[1]; return o[1] }, trys: [], ops: [] }, l, i, o, r = Object.create((typeof Iterator == "function" ? Iterator : Object).prototype); return r.next = c(0), r.throw = c(1), r.return = c(2), typeof Symbol == "function" && (r[Symbol.iterator] = function() { return this } ), r; function c(d) { return function(s) { return a([d, s]) } } function a(d) { if (l) throw new TypeError("Generator is already executing."); for (; r && (r = 0, d[0] && (n = 0)), n; ) try { if (l = 1, i && (o = d[0] & 2 ? i.return : d[0] ? i.throw || ((o = i.return) && o.call(i), 0) : i.next) && !(o = o.call(i, d[1])).done) return o; switch (i = 0, o && (d = [d[0] & 2, o.value]), d[0]) { case 0: case 1: o = d; break; case 4: return n.label++, { value: d[1], done: !1 }; case 5: n.label++, i = d[1], d = [0]; continue; case 7: d = n.ops.pop(), n.trys.pop(); continue; default: if (o = n.trys, !(o = o.length > 0 && o[o.length - 1]) && (d[0] === 6 || d[0] === 2)) { n = 0; continue } if (d[0] === 3 && (!o || d[1] > o[0] && d[1] < o[3])) { n.label = d[1]; break } if (d[0] === 6 && n.label < o[1]) { n.label = o[1], o = d; break } if (o && n.label < o[2]) { n.label = o[2], n.ops.push(d); break } o[2] && n.ops.pop(), n.trys.pop(); continue } d = e.call(t, n) } catch (s) { d = [6, s], i = 0 } finally { l = o = 0 } if (d[0] & 5) throw d[1]; return { value: d[0] ? d[1] : void 0, done: !0 } } } function ce(t) { var e = typeof Symbol == "function" && Symbol.iterator , n = e && t[e] , l = 0; if (n) return n.call(t); if (t && typeof t.length == "number") return { next: function() { return t && l >= t.length && (t = void 0), { value: t && t[l++], done: !t } } }; throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.") } function K(t, e) { var n = typeof Symbol == "function" && t[Symbol.iterator]; if (!n) return t; var l = n.call(t), i, o = [], r; try { for (; (e === void 0 || e-- > 0) && !(i = l.next()).done; ) o.push(i.value) } catch (c) { r = { error: c } } finally { try { i && !i.done && (n = l.return) && n.call(l) } finally { if (r) throw r.error } } return o } function Ze(t, e, n) { if (n || arguments.length === 2) for (var l = 0, i = e.length, o; l < i; l++) (o || !(l in e)) && (o || (o = Array.prototype.slice.call(e, 0, l)), o[l] = e[l]); return t.concat(o || Array.prototype.slice.call(e)) } function Qt(t) { return this instanceof Qt ? (this.v = t, this) : new Qt(t) } function O1(t, e, n) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var l = n.apply(t, e || []), i, o = []; return i = Object.create((typeof AsyncIterator == "function" ? AsyncIterator : Object).prototype), c("next"), c("throw"), c("return", r), i[Symbol.asyncIterator] = function() { return this } , i; function r(g) { return function(V) { return Promise.resolve(V).then(g, u) } } function c(g, V) { l[g] && (i[g] = function(p) { return new Promise(function(X, Z) { o.push([g, p, X, Z]) > 1 || a(g, p) } ) } , V && (i[g] = V(i[g]))) } function a(g, V) { try { d(l[g](V)) } catch (p) { b(o[0][3], p) } } function d(g) { g.value instanceof Qt ? Promise.resolve(g.value.v).then(s, u) : b(o[0][2], g) } function s(g) { a("next", g) } function u(g) { a("throw", g) } function b(g, V) { g(V), o.shift(), o.length && a(o[0][0], o[0][1]) } } function $1(t) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var e = t[Symbol.asyncIterator], n; return e ? e.call(t) : (t = typeof ce == "function" ? ce(t) : t[Symbol.iterator](), n = {}, l("next"), l("throw"), l("return"), n[Symbol.asyncIterator] = function() { return this } , n); function l(o) { n[o] = t[o] && function(r) { return new Promise(function(c, a) { r = t[o](r), i(c, a, r.done, r.value) } ) } } function i(o, r, c, a) { Promise.resolve(a).then(function(d) { o({ value: d, done: c }) }, r) } } var kt; (function(t) { t.SET = "$set", t.SET_ONCE = "$setOnce", t.ADD = "$add", t.APPEND = "$append", t.PREPEND = "$prepend", t.REMOVE = "$remove", t.PREINSERT = "$preInsert", t.POSTINSERT = "$postInsert", t.UNSET = "$unset", t.CLEAR_ALL = "$clearAll" } )(kt || (kt = {})); var Nt; (function(t) { t.IDENTIFY = "$identify", t.GROUP_IDENTIFY = "$groupidentify", t.REVENUE = "revenue_amount" } )(Nt || (Nt = {})); var hr = "-", pl = "AMP", q1 = "".concat(pl, "_unsent"), va = "https://api2.amplitude.com/2/httpapi", e0 = "https://api.eu.amplitude.com/2/httpapi", t0 = "https://api2.amplitude.com/batch", n0 = "https://api.eu.amplitude.com/batch", l0 = 1e3, ii = function(t) { if (Object.keys(t).length > l0) return !1; for (var e in t) { var n = t[e]; if (!Ba(e, n)) return !1 } return !0 }, Ba = function(t, e) { var n, l; if (typeof t != "string") return !1; if (Array.isArray(e)) { var i = !0; try { for (var o = ce(e), r = o.next(); !r.done; r = o.next()) { var c = r.value; if (Array.isArray(c)) return !1; if (typeof c == "object") i = i && ii(c); else if (!["number", "string"].includes(typeof c)) return !1; if (!i) return !1 } } catch (a) { n = { error: a } } finally { try { r && !r.done && (l = o.return) && l.call(o) } finally { if (n) throw n.error } } } else { if (e == null) return !1; if (typeof e == "object") return ii(e); if (!["number", "string", "boolean"].includes(typeof e)) return !1 } return !0 }, _t = function() { function t() { this._propertySet = new Set, this._properties = {} } return t.prototype.getUserProperties = function() { return B({}, this._properties) } , t.prototype.set = function(e, n) { return this._safeSet(ee.SET, e, n), this } , t.prototype.setOnce = function(e, n) { return this._safeSet(ee.SET_ONCE, e, n), this } , t.prototype.append = function(e, n) { return this._safeSet(ee.APPEND, e, n), this } , t.prototype.prepend = function(e, n) { return this._safeSet(ee.PREPEND, e, n), this } , t.prototype.postInsert = function(e, n) { return this._safeSet(ee.POSTINSERT, e, n), this } , t.prototype.preInsert = function(e, n) { return this._safeSet(ee.PREINSERT, e, n), this } , t.prototype.remove = function(e, n) { return this._safeSet(ee.REMOVE, e, n), this } , t.prototype.add = function(e, n) { return this._safeSet(ee.ADD, e, n), this } , t.prototype.unset = function(e) { return this._safeSet(ee.UNSET, e, hr), this } , t.prototype.clearAll = function() { return this._properties = {}, this._properties[ee.CLEAR_ALL] = hr, this } , t.prototype._safeSet = function(e, n, l) { if (this._validate(e, n, l)) { var i = this._properties[e]; return i === void 0 && (i = {}, this._properties[e] = i), i[n] = l, this._propertySet.add(n), !0 } return !1 } , t.prototype._validate = function(e, n, l) { return this._properties[ee.CLEAR_ALL] !== void 0 || this._propertySet.has(n) ? !1 : e === ee.ADD ? typeof l == "number" : e !== ee.UNSET && e !== ee.REMOVE ? Ba(n, l) : !0 } , t }(), ee; (function(t) { t.SET = "$set", t.SET_ONCE = "$setOnce", t.ADD = "$add", t.APPEND = "$append", t.PREPEND = "$prepend", t.REMOVE = "$remove", t.PREINSERT = "$preInsert", t.POSTINSERT = "$postInsert", t.UNSET = "$unset", t.CLEAR_ALL = "$clearAll" } )(ee || (ee = {})); var i0 = [ee.CLEAR_ALL, ee.UNSET, ee.SET, ee.SET_ONCE, ee.ADD, ee.APPEND, ee.PREPEND, ee.PREINSERT, ee.POSTINSERT, ee.REMOVE], o0 = "Event tracked successfully", r0 = "Unexpected error occurred", c0 = "Event rejected due to exceeded retry count", a0 = "Event skipped due to optOut config", d0 = "Event rejected due to missing API key", s0 = "Invalid API key", u0 = "Client not initialized", he; (function(t) { t.Unknown = "unknown", t.Skipped = "skipped", t.Success = "success", t.RateLimit = "rate_limit", t.PayloadTooLarge = "payload_too_large", t.Invalid = "invalid", t.Failed = "failed", t.Timeout = "Timeout", t.SystemError = "SystemError" } )(he || (he = {})); var Kt = function(t, e, n) { return e === void 0 && (e = 0), n === void 0 && (n = he.Unknown), { event: t, code: e, message: n } }, Ce = function() { var t = "ampIntegrationContext"; if (typeof globalThis < "u" && typeof globalThis[t] < "u") return globalThis[t]; if (typeof globalThis < "u") return globalThis; if (typeof window < "u") return window; if (typeof self < "u") return self; if (typeof global < "u") return global }, g0 = function(t) { return t ? (t ^ Math.random() * 16 >> t / 4).toString(16) : (String(1e7) + String(-1e3) + String(-4e3) + String(-8e3) + String(-1e11)).replace(/[018]/g, Ft) }, br = Ze([], K(Array(256).keys()), !1).map(function(t) { return t.toString(16).padStart(2, "0") }), Ft = function(t) { var e, n = Ce(); if (!(!((e = n == null ? void 0 : n.crypto) === null || e === void 0) && e.getRandomValues)) return g0(t); var l = n.crypto.getRandomValues(new Uint8Array(16)); return l[6] = l[6] & 15 | 64, l[8] = l[8] & 63 | 128, Ze([], K(l.entries()), !1).map(function(i) { var o = K(i, 2) , r = o[0] , c = o[1]; return [4, 6, 8, 10].includes(r) ? "-".concat(br[c]) : br[c] }).join("") }, h0 = function() { function t(e) { this.client = e, this.queue = [], this.applying = !1, this.plugins = [] } return t.prototype.register = function(e, n) { var l, i; return W(this, void 0, void 0, function() { return S(this, function(o) { switch (o.label) { case 0: return this.plugins.some(function(r) { return r.name === e.name }) ? (n.loggerProvider.warn("Plugin with name ".concat(e.name, " already exists, skipping registration")), [2]) : (e.name === void 0 && (e.name = Ft(), n.loggerProvider.warn(`Plugin name is undefined. Generating a random UUID for plugin name: `.concat(e.name, `. Set a name for the plugin to prevent it from being added multiple times.`))), e.type = (l = e.type) !== null && l !== void 0 ? l : "enrichment", [4, (i = e.setup) === null || i === void 0 ? void 0 : i.call(e, n, this.client)]); case 1: return o.sent(), this.plugins.push(e), [2] } }) }) } , t.prototype.deregister = function(e, n) { var l; return W(this, void 0, void 0, function() { var i, o; return S(this, function(r) { switch (r.label) { case 0: return i = this.plugins.findIndex(function(c) { return c.name === e }), i === -1 ? (n.loggerProvider.warn("Plugin with name ".concat(e, " does not exist, skipping deregistration")), [2]) : (o = this.plugins[i], this.plugins.splice(i, 1), [4, (l = o.teardown) === null || l === void 0 ? void 0 : l.call(o)]); case 1: return r.sent(), [2] } }) }) } , t.prototype.reset = function(e) { this.applying = !1; var n = this.plugins; n.map(function(l) { var i; return (i = l.teardown) === null || i === void 0 ? void 0 : i.call(l) }), this.plugins = [], this.client = e } , t.prototype.push = function(e) { var n = this; return new Promise(function(l) { n.queue.push([e, l]), n.scheduleApply(0) } ) } , t.prototype.scheduleApply = function(e) { var n = this; this.applying || (this.applying = !0, setTimeout(function() { n.apply(n.queue.shift()).then(function() { n.applying = !1, n.queue.length > 0 && n.scheduleApply(0) }) }, e)) } , t.prototype.apply = function(e) { return W(this, void 0, void 0, function() { var n, l, i, o, r, c, a, g, V, d, s, u, b, g, V, p, X, Z, f, G, C, E; return S(this, function(y) { switch (y.label) { case 0: if (!e) return [2]; n = K(e, 1), l = n[0], i = K(e, 2), o = i[1], r = this.plugins.filter(function(A) { return A.type === "before" }), y.label = 1; case 1: y.trys.push([1, 6, 7, 8]), c = ce(r), a = c.next(), y.label = 2; case 2: return a.done ? [3, 5] : (g = a.value, g.execute ? [4, g.execute(B({}, l))] : [3, 4]); case 3: if (V = y.sent(), V === null) return o({ event: l, code: 0, message: "" }), [2]; l = V, y.label = 4; case 4: return a = c.next(), [3, 2]; case 5: return [3, 8]; case 6: return d = y.sent(), f = { error: d }, [3, 8]; case 7: try { a && !a.done && (G = c.return) && G.call(c) } finally { if (f) throw f.error } return [7]; case 8: s = this.plugins.filter(function(A) { return A.type === "enrichment" || A.type === void 0 }), y.label = 9; case 9: y.trys.push([9, 14, 15, 16]), u = ce(s), b = u.next(), y.label = 10; case 10: return b.done ? [3, 13] : (g = b.value, g.execute ? [4, g.execute(B({}, l))] : [3, 12]); case 11: if (V = y.sent(), V === null) return o({ event: l, code: 0, message: "" }), [2]; l = V, y.label = 12; case 12: return b = u.next(), [3, 10]; case 13: return [3, 16]; case 14: return p = y.sent(), C = { error: p }, [3, 16]; case 15: try { b && !b.done && (E = u.return) && E.call(u) } finally { if (C) throw C.error } return [7]; case 16: return X = this.plugins.filter(function(A) { return A.type === "destination" }), Z = X.map(function(A) { var F = B({}, l); return A.execute(F).catch(function(w) { return Kt(F, 0, String(w)) }) }), Promise.all(Z).then(function(A) { var F = K(A, 1) , w = F[0] , _ = w || Kt(l, 100, "Event not tracked, no destination plugins on the instance"); o(_) }), [2] } }) }) } , t.prototype.flush = function() { return W(this, void 0, void 0, function() { var e, n, l, i = this; return S(this, function(o) { switch (o.label) { case 0: return e = this.queue, this.queue = [], [4, Promise.all(e.map(function(r) { return i.apply(r) }))]; case 1: return o.sent(), n = this.plugins.filter(function(r) { return r.type === "destination" }), l = n.map(function(r) { return r.flush && r.flush() }), [4, Promise.all(l)]; case 2: return o.sent(), [2] } }) }) } , t.prototype.onIdentityChanged = function(e) { this.plugins.forEach(function(n) { var l; (l = n.onIdentityChanged) === null || l === void 0 || l.call(n, e) }) } , t.prototype.onSessionIdChanged = function(e) { this.plugins.forEach(function(n) { var l; (l = n.onSessionIdChanged) === null || l === void 0 || l.call(n, e) }) } , t.prototype.onOptOutChanged = function(e) { this.plugins.forEach(function(n) { var l; (l = n.onOptOutChanged) === null || l === void 0 || l.call(n, e) }) } , t }(), b0 = function(t, e, n) { var l = typeof t == "string" ? { event_type: t } : t; return B(B(B({}, l), n), e && { event_properties: e }) }, Na = function(t, e) { var n = B(B({}, e), { event_type: Nt.IDENTIFY, user_properties: t.getUserProperties() }); return n }, V0 = function(t, e, n, l) { var i, o = B(B({}, l), { event_type: Nt.GROUP_IDENTIFY, group_properties: n.getUserProperties(), groups: (i = {}, i[t] = e, i) }); return o }, m0 = function(t, e, n) { var l, i = new _t; i.set(t, e); var o = B(B({}, n), { event_type: Nt.IDENTIFY, user_properties: i.getUserProperties(), groups: (l = {}, l[t] = e, l) }); return o }, A0 = function(t, e) { return B(B({}, e), { event_type: Nt.REVENUE, event_properties: t.getEventProperties() }) }, xe = function(t) { return { promise: t || Promise.resolve() } }, Z0 = function() { function t(e) { e === void 0 && (e = "$default"), this.initializing = !1, this.isReady = !1, this.q = [], this.dispatchQ = [], this.logEvent = this.track.bind(this), this.timeline = new h0(this), this.name = e } return t.prototype._init = function(e) { return W(this, void 0, void 0, function() { return S(this, function(n) { switch (n.label) { case 0: return this.config = e, this.timeline.reset(this), [4, this.runQueuedFunctions("q")]; case 1: return n.sent(), this.isReady = !0, [2] } }) }) } , t.prototype.runQueuedFunctions = function(e) { return W(this, void 0, void 0, function() { var n, l, i, o, r, c, a, d; return S(this, function(s) { switch (s.label) { case 0: n = this[e], this[e] = [], s.label = 1; case 1: s.trys.push([1, 8, 9, 10]), l = ce(n), i = l.next(), s.label = 2; case 2: return i.done ? [3, 7] : (o = i.value, r = o(), r && "promise"in r ? [4, r.promise] : [3, 4]); case 3: return s.sent(), [3, 6]; case 4: return [4, r]; case 5: s.sent(), s.label = 6; case 6: return i = l.next(), [3, 2]; case 7: return [3, 10]; case 8: return c = s.sent(), a = { error: c }, [3, 10]; case 9: try { i && !i.done && (d = l.return) && d.call(l) } finally { if (a) throw a.error } return [7]; case 10: return this[e].length ? [4, this.runQueuedFunctions(e)] : [3, 12]; case 11: s.sent(), s.label = 12; case 12: return [2] } }) }) } , t.prototype.track = function(e, n, l) { var i = b0(e, n, l); return xe(this.dispatch(i)) } , t.prototype.identify = function(e, n) { var l = Na(e, n); return xe(this.dispatch(l)) } , t.prototype.groupIdentify = function(e, n, l, i) { var o = V0(e, n, l, i); return xe(this.dispatch(o)) } , t.prototype.setGroup = function(e, n, l) { var i = m0(e, n, l); return xe(this.dispatch(i)) } , t.prototype.revenue = function(e, n) { var l = A0(e, n); return xe(this.dispatch(l)) } , t.prototype.add = function(e) { return this.isReady ? this._addPlugin(e) : (this.q.push(this._addPlugin.bind(this, e)), xe()) } , t.prototype._addPlugin = function(e) { return xe(this.timeline.register(e, this.config)) } , t.prototype.remove = function(e) { return this.isReady ? this._removePlugin(e) : (this.q.push(this._removePlugin.bind(this, e)), xe()) } , t.prototype._removePlugin = function(e) { return xe(this.timeline.deregister(e, this.config)) } , t.prototype.dispatchWithCallback = function(e, n) { if (!this.isReady) return n(Kt(e, 0, u0)); this.process(e).then(n) } , t.prototype.dispatch = function(e) { return W(this, void 0, void 0, function() { var n = this; return S(this, function(l) { return this.isReady ? [2, this.process(e)] : [2, new Promise(function(i) { n.dispatchQ.push(n.dispatchWithCallback.bind(n, e, i)) } )] }) }) } , t.prototype.getOperationAppliedUserProperties = function(e) { var n = {}; if (e === void 0) return n; var l = {}; return Object.keys(e).forEach(function(i) { Object.values(kt).includes(i) || (l[i] = e[i]) }), i0.forEach(function(i) { if (Object.keys(e).includes(i)) { var o = e[i]; switch (i) { case kt.CLEAR_ALL: Object.keys(n).forEach(function(r) { delete n[r] }); break; case kt.UNSET: Object.keys(o).forEach(function(r) { delete n[r] }); break; case kt.SET: Object.assign(n, o); break } } }), Object.assign(n, l), n } , t.prototype.process = function(e) { return W(this, void 0, void 0, function() { var n, o, l, i, o; return S(this, function(r) { switch (r.label) { case 0: return r.trys.push([0, 2, , 3]), this.config.optOut ? [2, Kt(e, 0, a0)] : (e.event_type === Nt.IDENTIFY && (n = this.getOperationAppliedUserProperties(e.user_properties), this.timeline.onIdentityChanged({ userProperties: n })), [4, this.timeline.push(e)]); case 1: return o = r.sent(), o.code === 200 ? this.config.loggerProvider.log(o.message) : o.code === 100 ? this.config.loggerProvider.warn(o.message) : this.config.loggerProvider.error(o.message), [2, o]; case 2: return l = r.sent(), i = String(l), this.config.loggerProvider.error(i), o = Kt(e, 0, i), [2, o]; case 3: return [2] } }) }) } , t.prototype.setOptOut = function(e) { if (!this.isReady) { this.q.push(this._setOptOut.bind(this, !!e)); return } this._setOptOut(e) } , t.prototype._setOptOut = function(e) { this.config.optOut !== e && (this.timeline.onOptOutChanged(e), this.config.optOut = !!e) } , t.prototype.flush = function() { return xe(this.timeline.flush()) } , t.prototype.plugin = function(e) { var n = this.timeline.plugins.find(function(l) { return l.name === e }); if (n === void 0) { this.config.loggerProvider.debug("Cannot find plugin with name ".concat(e)); return } return n } , t.prototype.plugins = function(e) { return this.timeline.plugins.filter(function(n) { return n instanceof e }) } , t }(), f0 = function() { function t() { this.productId = "", this.quantity = 1, this.price = 0 } return t.prototype.setProductId = function(e) { return this.productId = e, this } , t.prototype.setQuantity = function(e) { return e > 0 && (this.quantity = e), this } , t.prototype.setPrice = function(e) { return this.price = e, this } , t.prototype.setRevenueType = function(e) { return this.revenueType = e, this } , t.prototype.setCurrency = function(e) { return this.currency = e, this } , t.prototype.setRevenue = function(e) { return this.revenue = e, this } , t.prototype.setReceipt = function(e) { return this.receipt = e, this } , t.prototype.setReceiptSig = function(e) { return this.receiptSig = e, this } , t.prototype.setEventProperties = function(e) { return ii(e) && (this.properties = e), this } , t.prototype.getEventProperties = function() { var e = this.properties ? B({}, this.properties) : {}; return e[ot.REVENUE_PRODUCT_ID] = this.productId, e[ot.REVENUE_QUANTITY] = this.quantity, e[ot.REVENUE_PRICE] = this.price, e[ot.REVENUE_TYPE] = this.revenueType, e[ot.REVENUE_CURRENCY] = this.currency, e[ot.REVENUE] = this.revenue, e[ot.RECEIPT] = this.receipt, e[ot.RECEIPT_SIG] = this.receiptSig, e } , t }(), ot; (function(t) { t.REVENUE_PRODUCT_ID = "$productId", t.REVENUE_QUANTITY = "$quantity", t.REVENUE_PRICE = "$price", t.REVENUE_TYPE = "$revenueType", t.REVENUE_CURRENCY = "$currency", t.REVENUE = "$revenue", t.RECEIPT = "$receipt", t.RECEIPT_SIG = "$receiptSig" } )(ot || (ot = {})); var p0 = function(t, e) { var n = Math.max(e, 1); return t.reduce(function(l, i, o) { var r = Math.floor(o / n); return l[r] || (l[r] = []), l[r].push(i), l }, []) }, Le; (function(t) { t[t.None = 0] = "None", t[t.Error = 1] = "Error", t[t.Warn = 2] = "Warn", t[t.Verbose = 3] = "Verbose", t[t.Debug = 4] = "Debug" } )(Le || (Le = {})); var Fn = "Amplitude Logger " , Fa = function() { function t() { this.logLevel = Le.None } return t.prototype.disable = function() { this.logLevel = Le.None } , t.prototype.enable = function(e) { e === void 0 && (e = Le.Warn), this.logLevel = e } , t.prototype.log = function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; this.logLevel < Le.Verbose || console.log("".concat(Fn, "[Log]: ").concat(e.join(" "))) } , t.prototype.warn = function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; this.logLevel < Le.Warn || console.warn("".concat(Fn, "[Warn]: ").concat(e.join(" "))) } , t.prototype.error = function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; this.logLevel < Le.Error || console.error("".concat(Fn, "[Error]: ").concat(e.join(" "))) } , t.prototype.debug = function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; this.logLevel < Le.Debug || console.log("".concat(Fn, "[Debug]: ").concat(e.join(" "))) } , t }() , Ln = function() { return { flushMaxRetries: 12, flushQueueSize: 200, flushIntervalMillis: 1e4, instanceName: "$default_instance", logLevel: Le.Warn, loggerProvider: new Fa, offline: !1, optOut: !1, serverUrl: va, serverZone: "US", useBatch: !1 } } , G0 = function() { function t(e) { var n, l, i, o; this._optOut = !1; var r = Ln(); this.apiKey = e.apiKey, this.flushIntervalMillis = (n = e.flushIntervalMillis) !== null && n !== void 0 ? n : r.flushIntervalMillis, this.flushMaxRetries = e.flushMaxRetries || r.flushMaxRetries, this.flushQueueSize = e.flushQueueSize || r.flushQueueSize, this.instanceName = e.instanceName || r.instanceName, this.loggerProvider = e.loggerProvider || r.loggerProvider, this.logLevel = (l = e.logLevel) !== null && l !== void 0 ? l : r.logLevel, this.minIdLength = e.minIdLength, this.plan = e.plan, this.ingestionMetadata = e.ingestionMetadata, this.offline = e.offline !== void 0 ? e.offline : r.offline, this.optOut = (i = e.optOut) !== null && i !== void 0 ? i : r.optOut, this.serverUrl = e.serverUrl, this.serverZone = e.serverZone || r.serverZone, this.storageProvider = e.storageProvider, this.transportProvider = e.transportProvider, this.useBatch = (o = e.useBatch) !== null && o !== void 0 ? o : r.useBatch, this.loggerProvider.enable(this.logLevel); var c = Ya(e.serverUrl, e.serverZone, e.useBatch); this.serverZone = c.serverZone, this.serverUrl = c.serverUrl } return Object.defineProperty(t.prototype, "optOut", { get: function() { return this._optOut }, set: function(e) { this._optOut = e }, enumerable: !1, configurable: !0 }), t }() , X0 = function(t, e) { return t === "EU" ? e ? n0 : e0 : e ? t0 : va } , Ya = function(t, e, n) { if (t === void 0 && (t = ""), e === void 0 && (e = Ln().serverZone), n === void 0 && (n = Ln().useBatch), t) return { serverUrl: t, serverZone: void 0 }; var l = ["US", "EU"].includes(e) ? e : Ln().serverZone; return { serverZone: l, serverUrl: X0(l, n) } } , Ua = function() { function t() { this.sdk = { metrics: { histogram: {} } } } return t.prototype.recordHistogram = function(e, n) { this.sdk.metrics.histogram[e] = n } , t }(); function I0(t) { return t instanceof Error ? t.message : String(t) } function Yn(t) { var e = ""; try { "body"in t && (e = JSON.stringify(t.body, null, 2)) } catch {} return e } var R0 = function() { function t() { this.name = "amplitude", this.type = "destination", this.retryTimeout = 1e3, this.throttleTimeout = 3e4, this.storageKey = "", this.scheduleId = null, this.scheduledTimeout = 0, this.flushId = null, this.queue = [] } return t.prototype.setup = function(e) { var n; return W(this, void 0, void 0, function() { var l, i = this; return S(this, function(o) { switch (o.label) { case 0: return this.config = e, this.storageKey = "".concat(q1, "_").concat(this.config.apiKey.substring(0, 10)), [4, (n = this.config.storageProvider) === null || n === void 0 ? void 0 : n.get(this.storageKey)]; case 1: return l = o.sent(), l && l.length > 0 && Promise.all(l.map(function(r) { return i.execute(r) })).catch(), [2, Promise.resolve(void 0)] } }) }) } , t.prototype.execute = function(e) { var n = this; return e.insert_id || (e.insert_id = Ft()), new Promise(function(l) { var i = { event: e, attempts: 0, callback: function(o) { return l(o) }, timeout: 0 }; n.queue.push(i), n.schedule(n.config.flushIntervalMillis), n.saveEvents() } ) } , t.prototype.removeEventsExceedFlushMaxRetries = function(e) { var n = this; return e.filter(function(l) { return l.attempts += 1, l.attempts < n.config.flushMaxRetries ? !0 : (n.fulfillRequest([l], 500, c0), !1) }) } , t.prototype.scheduleEvents = function(e) { var n = this; e.forEach(function(l) { n.schedule(l.timeout === 0 ? n.config.flushIntervalMillis : l.timeout) }) } , t.prototype.schedule = function(e) { var n = this; if (!this.config.offline && (this.scheduleId === null || this.scheduleId && e > this.scheduledTimeout)) { this.scheduleId && clearTimeout(this.scheduleId), this.scheduledTimeout = e, this.scheduleId = setTimeout(function() { n.queue = n.queue.map(function(l) { return l.timeout = 0, l }), n.flush(!0) }, e); return } } , t.prototype.resetSchedule = function() { this.scheduleId = null, this.scheduledTimeout = 0 } , t.prototype.flush = function(e) { return e === void 0 && (e = !1), W(this, void 0, void 0, function() { var n, l, i, o = this; return S(this, function(r) { switch (r.label) { case 0: return this.config.offline ? (this.resetSchedule(), this.config.loggerProvider.debug("Skipping flush while offline."), [2]) : this.flushId ? (this.resetSchedule(), this.config.loggerProvider.debug("Skipping flush because previous flush has not resolved."), [2]) : (this.flushId = this.scheduleId, this.resetSchedule(), n = [], l = [], this.queue.forEach(function(c) { return c.timeout === 0 ? n.push(c) : l.push(c) }), i = p0(n, this.config.flushQueueSize), [4, i.reduce(function(c, a) { return W(o, void 0, void 0, function() { return S(this, function(d) { switch (d.label) { case 0: return [4, c]; case 1: return d.sent(), [4, this.send(a, e)]; case 2: return [2, d.sent()] } }) }) }, Promise.resolve())]); case 1: return r.sent(), this.flushId = null, this.scheduleEvents(this.queue), [2] } }) }) } , t.prototype.send = function(e, n) { return n === void 0 && (n = !0), W(this, void 0, void 0, function() { var l, i, o, r, c; return S(this, function(a) { switch (a.label) { case 0: if (!this.config.apiKey) return [2, this.fulfillRequest(e, 400, d0)]; l = { api_key: this.config.apiKey, events: e.map(function(d) { var s = d.event; s.extra; var u = li(s, ["extra"]); return u }), options: { min_id_length: this.config.minIdLength }, client_upload_time: new Date().toISOString(), request_metadata: this.config.requestMetadata }, this.config.requestMetadata = new Ua, a.label = 1; case 1: return a.trys.push([1, 3, , 4]), i = Ya(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl, [4, this.config.transportProvider.send(i, l)]; case 2: return o = a.sent(), o === null ? (this.fulfillRequest(e, 0, r0), [2]) : n ? (this.handleResponse(o, e), [3, 4]) : ("body"in o ? this.fulfillRequest(e, o.statusCode, "".concat(o.status, ": ").concat(Yn(o))) : this.fulfillRequest(e, o.statusCode, o.status), [2]); case 3: return r = a.sent(), c = I0(r), this.config.loggerProvider.error(c), this.handleResponse({ status: he.Failed, statusCode: 0 }, e), [3, 4]; case 4: return [2] } }) }) } , t.prototype.handleResponse = function(e, n) { var l = e.status; switch (l) { case he.Success: { this.handleSuccessResponse(e, n); break } case he.Invalid: { this.handleInvalidResponse(e, n); break } case he.PayloadTooLarge: { this.handlePayloadTooLargeResponse(e, n); break } case he.RateLimit: { this.handleRateLimitResponse(e, n); break } default: { this.config.loggerProvider.warn(`{code: 0, error: "Status '`.concat(l, "' provided for ").concat(n.length, ' events"}')), this.handleOtherResponse(n); break } } } , t.prototype.handleSuccessResponse = function(e, n) { this.fulfillRequest(n, e.statusCode, o0) } , t.prototype.handleInvalidResponse = function(e, n) { var l = this; if (e.body.missingField || e.body.error.startsWith(s0)) { this.fulfillRequest(n, e.statusCode, e.body.error); return } var i = Ze(Ze(Ze(Ze([], K(Object.values(e.body.eventsWithInvalidFields)), !1), K(Object.values(e.body.eventsWithMissingFields)), !1), K(Object.values(e.body.eventsWithInvalidIdLengths)), !1), K(e.body.silencedEvents), !1).flat() , o = new Set(i) , r = n.filter(function(a, d) { if (o.has(d)) { l.fulfillRequest([a], e.statusCode, e.body.error); return } return !0 }); r.length > 0 && this.config.loggerProvider.warn(Yn(e)); var c = this.removeEventsExceedFlushMaxRetries(r); this.scheduleEvents(c) } , t.prototype.handlePayloadTooLargeResponse = function(e, n) { if (n.length === 1) { this.fulfillRequest(n, e.statusCode, e.body.error); return } this.config.loggerProvider.warn(Yn(e)), this.config.flushQueueSize /= 2; var l = this.removeEventsExceedFlushMaxRetries(n); this.scheduleEvents(l) } , t.prototype.handleRateLimitResponse = function(e, n) { var l = this , i = Object.keys(e.body.exceededDailyQuotaUsers) , o = Object.keys(e.body.exceededDailyQuotaDevices) , r = e.body.throttledEvents , c = new Set(i) , a = new Set(o) , d = new Set(r) , s = n.filter(function(b, g) { if (b.event.user_id && c.has(b.event.user_id) || b.event.device_id && a.has(b.event.device_id)) { l.fulfillRequest([b], e.statusCode, e.body.error); return } return d.has(g) && (b.timeout = l.throttleTimeout), !0 }); s.length > 0 && this.config.loggerProvider.warn(Yn(e)); var u = this.removeEventsExceedFlushMaxRetries(s); this.scheduleEvents(u) } , t.prototype.handleOtherResponse = function(e) { var n = this , l = e.map(function(o) { return o.timeout = o.attempts * n.retryTimeout, o }) , i = this.removeEventsExceedFlushMaxRetries(l); this.scheduleEvents(i) } , t.prototype.fulfillRequest = function(e, n, l) { this.removeEvents(e), e.forEach(function(i) { return i.callback(Kt(i.event, n, l)) }) } , t.prototype.saveEvents = function() { if (this.config.storageProvider) { var e = this.queue.map(function(n) { return n.event }); this.config.storageProvider.set(this.storageKey, e) } } , t.prototype.removeEvents = function(e) { this.queue = this.queue.filter(function(n) { return !e.some(function(l) { return l.event.insert_id === n.event.insert_id }) }), this.saveEvents() } , t }() , E0 = function() { function t() {} return t.prototype.getApplicationContext = function() { return { versionName: this.versionName, language: C0(), platform: "Web", os: void 0, deviceModel: void 0 } } , t }() , C0 = function() { return typeof navigator < "u" && (navigator.languages && navigator.languages[0] || navigator.language) || "" } , y0 = function() { function t() { this.queue = [] } return t.prototype.logEvent = function(e) { this.receiver ? this.receiver(e) : this.queue.length < 512 && this.queue.push(e) } , t.prototype.setEventReceiver = function(e) { this.receiver = e, this.queue.length > 0 && (this.queue.forEach(function(n) { e(n) }), this.queue = []) } , t }() , mt = function() { return mt = Object.assign || function(e) { for (var n, l = 1, i = arguments.length; l < i; l++) { n = arguments[l]; for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]) } return e } , mt.apply(this, arguments) }; function Mn(t) { var e = typeof Symbol == "function" && Symbol.iterator , n = e && t[e] , l = 0; if (n) return n.call(t); if (t && typeof t.length == "number") return { next: function() { return t && l >= t.length && (t = void 0), { value: t && t[l++], done: !t } } }; throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.") } function Vr(t, e) { var n = typeof Symbol == "function" && t[Symbol.iterator]; if (!n) return t; var l = n.call(t), i, o = [], r; try { for (; (e === void 0 || e-- > 0) && !(i = l.next()).done; ) o.push(i.value) } catch (c) { r = { error: c } } finally { try { i && !i.done && (n = l.return) && n.call(l) } finally { if (r) throw r.error } } return o } var Tn = function(t, e) { var n, l, i = ["string", "number", "boolean", "undefined"], o = typeof t, r = typeof e; if (o !== r) return !1; try { for (var c = Mn(i), a = c.next(); !a.done; a = c.next()) { var d = a.value; if (d === o) return t === e } } catch (X) { n = { error: X } } finally { try { a && !a.done && (l = c.return) && l.call(c) } finally { if (n) throw n.error } } if (t == null && e == null) return !0; if (t == null || e == null || t.length !== e.length) return !1; var s = Array.isArray(t) , u = Array.isArray(e); if (s !== u) return !1; if (s && u) { for (var b = 0; b < t.length; b++) if (!Tn(t[b], e[b])) return !1 } else { var g = Object.keys(t).sort() , V = Object.keys(e).sort(); if (!Tn(g, V)) return !1; var p = !0; return Object.keys(t).forEach(function(X) { Tn(t[X], e[X]) || (p = !1) }), p } return !0 } , S0 = "$set" , W0 = "$unset" , v0 = "$clearAll"; Object.entries || (Object.entries = function(t) { for (var e = Object.keys(t), n = e.length, l = new Array(n); n--; ) l[n] = [e[n], t[e[n]]]; return l } ); var B0 = function() { function t() { this.identity = { userProperties: {} }, this.listeners = new Set } return t.prototype.editIdentity = function() { var e = this , n = mt({}, this.identity.userProperties) , l = mt(mt({}, this.identity), { userProperties: n }); return { setUserId: function(i) { return l.userId = i, this }, setDeviceId: function(i) { return l.deviceId = i, this }, setUserProperties: function(i) { return l.userProperties = i, this }, setOptOut: function(i) { return l.optOut = i, this }, updateUserProperties: function(i) { var o, r, c, a, d, s, u = l.userProperties || {}; try { for (var b = Mn(Object.entries(i)), g = b.next(); !g.done; g = b.next()) { var V = Vr(g.value, 2) , p = V[0] , X = V[1]; switch (p) { case S0: try { for (var Z = (c = void 0, Mn(Object.entries(X))), f = Z.next(); !f.done; f = Z.next()) { var G = Vr(f.value, 2) , C = G[0] , E = G[1]; u[C] = E } } catch (F) { c = { error: F } } finally { try { f && !f.done && (a = Z.return) && a.call(Z) } finally { if (c) throw c.error } } break; case W0: try { for (var y = (d = void 0, Mn(Object.keys(X))), A = y.next(); !A.done; A = y.next()) { var C = A.value; delete u[C] } } catch (F) { d = { error: F } } finally { try { A && !A.done && (s = y.return) && s.call(y) } finally { if (d) throw d.error } } break; case v0: u = {}; break } } } catch (F) { o = { error: F } } finally { try { g && !g.done && (r = b.return) && r.call(b) } finally { if (o) throw o.error } } return l.userProperties = u, this }, commit: function() { return e.setIdentity(l), this } } } , t.prototype.getIdentity = function() { return mt({}, this.identity) } , t.prototype.setIdentity = function(e) { var n = mt({}, this.identity); this.identity = mt({}, e), Tn(n, this.identity) || this.listeners.forEach(function(l) { l(e) }) } , t.prototype.addIdentityListener = function(e) { this.listeners.add(e) } , t.prototype.removeIdentityListener = function(e) { this.listeners.delete(e) } , t }() , en = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : self , N0 = function() { function t() { this.identityStore = new B0, this.eventBridge = new y0, this.applicationContextProvider = new E0 } return t.getInstance = function(e) { return en.analyticsConnectorInstances || (en.analyticsConnectorInstances = {}), en.analyticsConnectorInstances[e] || (en.analyticsConnectorInstances[e] = new t), en.analyticsConnectorInstances[e] } , t }() , An = function(t) { return t === void 0 && (t = "$default_instance"), N0.getInstance(t) } , F0 = function(t, e) { An(e).identityStore.editIdentity().setUserId(t).commit() } , Y0 = function(t, e) { An(e).identityStore.editIdentity().setDeviceId(t).commit() } , U0 = function() { function t() { this.name = "identity", this.type = "before", this.identityStore = An().identityStore } return t.prototype.execute = function(e) { return W(this, void 0, void 0, function() { var n; return S(this, function(l) { return n = e.user_properties, n && this.identityStore.editIdentity().updateUserProperties(n).commit(), [2, e] }) }) } , t.prototype.setup = function(e) { return W(this, void 0, void 0, function() { return S(this, function(n) { return e.instanceName && (this.identityStore = An(e.instanceName).identityStore), [2] }) }) } , t }() , Ja = function(t, e) { e === void 0 && (e = Date.now()); var n = Date.now() , l = n - e; return l > t } , xa = function(t, e, n) { return e === void 0 && (e = ""), n === void 0 && (n = 10), [pl, e, t.substring(0, n)].filter(Boolean).join("_") } , J0 = function(t) { return "".concat(pl.toLowerCase(), "_").concat(t.substring(0, 6)) } , x0 = function() { var t, e, n, l; if (typeof navigator > "u") return ""; var i = navigator.userLanguage; return (l = (n = (e = (t = navigator.languages) === null || t === void 0 ? void 0 : t[0]) !== null && e !== void 0 ? e : navigator.language) !== null && n !== void 0 ? n : i) !== null && l !== void 0 ? l : "" } , ol = function() { var t, e = Ce(); if (!(!((t = e == null ? void 0 : e.location) === null || t === void 0) && t.search)) return {}; var n = e.location.search.substring(1).split("&").filter(Boolean) , l = n.reduce(function(i, o) { var r = o.split("=", 2) , c = mr(r[0]) , a = mr(r[1]); return a && (i[c] = a), i }, {}); return l } , mr = function(t) { t === void 0 && (t = ""); try { return decodeURIComponent(t) } catch { return "" } } , w0 = function(t) { var e = new Error().stack || ""; return e.split(` `).slice(2 + t).map(function(n) { return n.trim() }) } , se = function(t) { return function() { var e = B({}, t.config) , n = e.loggerProvider , l = e.logLevel; return { logger: n, logLevel: l } } } , k0 = function(t, e) { var n, l; e = e.replace(/\[(\w+)\]/g, ".$1"), e = e.replace(/^\./, ""); try { for (var i = ce(e.split(".")), o = i.next(); !o.done; o = i.next()) { var r = o.value; if (r in t) t = t[r]; else return } } catch (c) { n = { error: c } } finally { try { o && !o.done && (l = i.return) && l.call(i) } finally { if (n) throw n.error } } return t } , ue = function(t, e) { return function() { var n, l, i = {}; try { for (var o = ce(e), r = o.next(); !r.done; r = o.next()) { var c = r.value; i[c] = k0(t, c) } } catch (a) { n = { error: a } } finally { try { r && !r.done && (l = o.return) && l.call(o) } finally { if (n) throw n.error } } return i } } , ge = function(t, e, n, l, i) { return i === void 0 && (i = null), function() { for (var o = [], r = 0; r < arguments.length; r++) o[r] = arguments[r]; var c = n() , a = c.logger , d = c.logLevel; if (d && d < Le.Debug || !d || !a) return t.apply(i, o); var s = { type: "invoke public method", name: e, args: o, stacktrace: w0(1), time: { start: new Date().toISOString() }, states: {} }; l && s.states && (s.states.before = l()); var u = t.apply(i, o); return u && u.promise ? u.promise.then(function() { l && s.states && (s.states.after = l()), s.time && (s.time.end = new Date().toISOString()), a.debug(JSON.stringify(s, null, 2)) }) : (l && s.states && (s.states.after = l()), s.time && (s.time.end = new Date().toISOString()), a.debug(JSON.stringify(s, null, 2))), u } } , Ki = function() { function t() { this.memoryStorage = new Map } return t.prototype.isEnabled = function() { return W(this, void 0, void 0, function() { return S(this, function(e) { return [2, !0] }) }) } , t.prototype.get = function(e) { return W(this, void 0, void 0, function() { return S(this, function(n) { return [2, this.memoryStorage.get(e)] }) }) } , t.prototype.getRaw = function(e) { return W(this, void 0, void 0, function() { var n; return S(this, function(l) { switch (l.label) { case 0: return [4, this.get(e)]; case 1: return n = l.sent(), [2, n ? JSON.stringify(n) : void 0] } }) }) } , t.prototype.set = function(e, n) { return W(this, void 0, void 0, function() { return S(this, function(l) { return this.memoryStorage.set(e, n), [2] }) }) } , t.prototype.remove = function(e) { return W(this, void 0, void 0, function() { return S(this, function(n) { return this.memoryStorage.delete(e), [2] }) }) } , t.prototype.reset = function() { return W(this, void 0, void 0, function() { return S(this, function(e) { return this.memoryStorage.clear(), [2] }) }) } , t }() , oi = function() { function t(e) { this.options = B({}, e) } return t.prototype.isEnabled = function() { return W(this, void 0, void 0, function() { var e, n, l; return S(this, function(i) { switch (i.label) { case 0: if (!Ce()) return [2, !1]; t.testValue = String(Date.now()), e = new t(this.options), n = "AMP_TEST", i.label = 1; case 1: return i.trys.push([1, 4, 5, 7]), [4, e.set(n, t.testValue)]; case 2: return i.sent(), [4, e.get(n)]; case 3: return l = i.sent(), [2, l === t.testValue]; case 4: return i.sent(), [2, !1]; case 5: return [4, e.remove(n)]; case 6: return i.sent(), [7]; case 7: return [2] } }) }) } , t.prototype.get = function(e) { var n; return W(this, void 0, void 0, function() { var l, i; return S(this, function(o) { switch (o.label) { case 0: return [4, this.getRaw(e)]; case 1: if (l = o.sent(), !l) return [2, void 0]; try { return i = (n = z0(l)) !== null && n !== void 0 ? n : Q0(l), i === void 0 ? (console.error("Amplitude Logger [Error]: Failed to decode cookie value for key: ".concat(e, ", value: ").concat(l)), [2, void 0]) : [2, JSON.parse(i)] } catch { return console.error("Amplitude Logger [Error]: Failed to parse cookie value for key: ".concat(e, ", value: ").concat(l)), [2, void 0] } return [2] } }) }) } , t.prototype.getRaw = function(e) { var n, l; return W(this, void 0, void 0, function() { var i, o, r; return S(this, function(c) { return i = Ce(), o = (l = (n = i == null ? void 0 : i.document) === null || n === void 0 ? void 0 : n.cookie.split("; ")) !== null && l !== void 0 ? l : [], r = o.find(function(a) { return a.indexOf(e + "=") === 0 }), r ? [2, r.substring(e.length + 1)] : [2, void 0] }) }) } , t.prototype.set = function(e, n) { var l; return W(this, void 0, void 0, function() { var i, o, r, c, a, d, s; return S(this, function(u) { try { i = (l = this.options.expirationDays) !== null && l !== void 0 ? l : 0, o = n !== null ? i : -1, r = void 0, o && (c = new Date, c.setTime(c.getTime() + o * 24 * 60 * 60 * 1e3), r = c), a = "".concat(e, "=").concat(btoa(encodeURIComponent(JSON.stringify(n)))), r && (a += "; expires=".concat(r.toUTCString())), a += "; path=/", this.options.domain && (a += "; domain=".concat(this.options.domain)), this.options.secure && (a += "; Secure"), this.options.sameSite && (a += "; SameSite=".concat(this.options.sameSite)), d = Ce(), d && (d.document.cookie = a) } catch (b) { s = b instanceof Error ? b.message : String(b), console.error("Amplitude Logger [Error]: Failed to set cookie for key: ".concat(e, ". Error: ").concat(s)) } return [2] }) }) } , t.prototype.remove = function(e) { return W(this, void 0, void 0, function() { return S(this, function(n) { switch (n.label) { case 0: return [4, this.set(e, null)]; case 1: return n.sent(), [2] } }) }) } , t.prototype.reset = function() { return W(this, void 0, void 0, function() { return S(this, function(e) { return [2] }) }) } , t }() , z0 = function(t) { try { return decodeURIComponent(atob(t)) } catch { return } } , Q0 = function(t) { try { return decodeURIComponent(atob(decodeURIComponent(t))) } catch { return } } , K0 = function(t, e, n) { return n === void 0 && (n = 10), [pl, e, t.substring(0, n)].filter(Boolean).join("_") } , Gl = function() { function t() {} return t.prototype.send = function(e, n) { return Promise.resolve(null) } , t.prototype.buildResponse = function(e) { var n, l, i, o, r, c, a, d, s, u, b, g, V, p, X, Z, f, G, C, E, y, A; if (typeof e != "object") return null; var F = e.code || 0 , w = this.buildStatus(F); switch (w) { case he.Success: return { status: w, statusCode: F, body: { eventsIngested: (n = e.events_ingested) !== null && n !== void 0 ? n : 0, payloadSizeBytes: (l = e.payload_size_bytes) !== null && l !== void 0 ? l : 0, serverUploadTime: (i = e.server_upload_time) !== null && i !== void 0 ? i : 0 } }; case he.Invalid: return { status: w, statusCode: F, body: { error: (o = e.error) !== null && o !== void 0 ? o : "", missingField: (r = e.missing_field) !== null && r !== void 0 ? r : "", eventsWithInvalidFields: (c = e.events_with_invalid_fields) !== null && c !== void 0 ? c : {}, eventsWithMissingFields: (a = e.events_with_missing_fields) !== null && a !== void 0 ? a : {}, eventsWithInvalidIdLengths: (d = e.events_with_invalid_id_lengths) !== null && d !== void 0 ? d : {}, epsThreshold: (s = e.eps_threshold) !== null && s !== void 0 ? s : 0, exceededDailyQuotaDevices: (u = e.exceeded_daily_quota_devices) !== null && u !== void 0 ? u : {}, silencedDevices: (b = e.silenced_devices) !== null && b !== void 0 ? b : [], silencedEvents: (g = e.silenced_events) !== null && g !== void 0 ? g : [], throttledDevices: (V = e.throttled_devices) !== null && V !== void 0 ? V : {}, throttledEvents: (p = e.throttled_events) !== null && p !== void 0 ? p : [] } }; case he.PayloadTooLarge: return { status: w, statusCode: F, body: { error: (X = e.error) !== null && X !== void 0 ? X : "" } }; case he.RateLimit: return { status: w, statusCode: F, body: { error: (Z = e.error) !== null && Z !== void 0 ? Z : "", epsThreshold: (f = e.eps_threshold) !== null && f !== void 0 ? f : 0, throttledDevices: (G = e.throttled_devices) !== null && G !== void 0 ? G : {}, throttledUsers: (C = e.throttled_users) !== null && C !== void 0 ? C : {}, exceededDailyQuotaDevices: (E = e.exceeded_daily_quota_devices) !== null && E !== void 0 ? E : {}, exceededDailyQuotaUsers: (y = e.exceeded_daily_quota_users) !== null && y !== void 0 ? y : {}, throttledEvents: (A = e.throttled_events) !== null && A !== void 0 ? A : [] } }; case he.Timeout: default: return { status: w, statusCode: F } } } , t.prototype.buildStatus = function(e) { return e >= 200 && e < 300 ? he.Success : e === 429 ? he.RateLimit : e === 413 ? he.PayloadTooLarge : e === 408 ? he.Timeout : e >= 400 && e < 500 ? he.Invalid : e >= 500 ? he.Failed : he.Unknown } , t }() , L0 = function(t) { Fe(e, t); function e() { return t !== null && t.apply(this, arguments) || this } return e.prototype.send = function(n, l) { return W(this, void 0, void 0, function() { var i, o, r; return S(this, function(c) { switch (c.label) { case 0: if (typeof fetch > "u") throw new Error("FetchTransport is not supported"); return i = { headers: { "Content-Type": "application/json", Accept: "*/*" }, body: JSON.stringify(l), method: "POST" }, [4, fetch(n, i)]; case 1: return o = c.sent(), [4, o.text()]; case 2: r = c.sent(); try { return [2, this.buildResponse(JSON.parse(r))] } catch { return [2, this.buildResponse({ code: o.status })] } return [2] } }) }) } , e }(Gl) , M0 = null , T0 = ["a", "button", "input", "select", "textarea", "label", "video", "audio", '[contenteditable="true" i]', "[data-amp-default-track]", ".amp-default-track"] , H0 = "data-amp-track-" , D0 = ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"] , wa = 100 , j0 = function() { function t(e) { this.request = e } return Object.defineProperty(t.prototype, "headers", { get: function() { if (this._headers) return this._headers; var e = this.request.headers; if (Array.isArray(e)) { var n = e; this._headers = n.reduce(function(o, r) { var c = K(r, 2) , a = c[0] , d = c[1]; return o[a] = d, o }, {}) } else if (e instanceof Headers) { var l = e , i = {}; l.forEach(function(o, r) { i[r] = o }), this._headers = i } else typeof e == "object" && (this._headers = e); return this._headers }, enumerable: !1, configurable: !0 }), Object.defineProperty(t.prototype, "bodySize", { get: function() { if (typeof this._bodySize == "number") return this._bodySize; var e = Ce(); if (e != null && e.TextEncoder) { var n = this.request.body; return this._bodySize = ka(n, wa), this._bodySize } }, enumerable: !1, configurable: !0 }), Object.defineProperty(t.prototype, "method", { get: function() { return this.request.method }, enumerable: !1, configurable: !0 }), t }() , _0 = function() { function t(e) { this.body = e } return Object.defineProperty(t.prototype, "bodySize", { get: function() { return ka(this.body, wa) }, enumerable: !1, configurable: !0 }), t }(); function ka(t, e) { var n, l, i, o = Ce(), r = o == null ? void 0 : o.TextEncoder; if (r) { var c; if (typeof t == "string") c = t, i = new r().encode(c).length; else if (t instanceof Blob) c = t, i = c.size; else if (t instanceof URLSearchParams) c = t, i = new r().encode(c.toString()).length; else if (ArrayBuffer.isView(t)) c = t, i = c.byteLength; else if (t instanceof ArrayBuffer) c = t, i = c.byteLength; else if (t instanceof FormData) { var a = t , d = 0 , s = 0; try { for (var u = ce(a.entries()), b = u.next(); !b.done; b = u.next()) { var g = K(b.value, 2) , V = g[0] , p = g[1]; if (d += V.length, typeof p == "string") d += new r().encode(p).length; else if (p instanceof Blob) d += p.size; else return; if (++s >= e) return } } catch (X) { n = { error: X } } finally { try { b && !b.done && (l = u.return) && l.call(u) } finally { if (n) throw n.error } } i = d } else if (t instanceof ReadableStream) { c = t; return } return i } } var P0 = function() { function t(e) { this.response = e } return Object.defineProperty(t.prototype, "headers", { get: function() { var e; if (this._headers) return this._headers; if (this.response.headers instanceof Headers) { var n = this.response.headers , l = {}; return (e = n == null ? void 0 : n.forEach) === null || e === void 0 || e.call(n, function(i, o) { l[o] = i }), this._headers = l, l } }, enumerable: !1, configurable: !0 }), Object.defineProperty(t.prototype, "bodySize", { get: function() { var e, n; if (this._bodySize !== void 0) return this._bodySize; var l = (n = (e = this.response.headers) === null || e === void 0 ? void 0 : e.get) === null || n === void 0 ? void 0 : n.call(e, "content-length") , i = l ? parseInt(l, 10) : void 0; return this._bodySize = i, i }, enumerable: !1, configurable: !0 }), Object.defineProperty(t.prototype, "status", { get: function() { return this.response.status }, enumerable: !1, configurable: !0 }), t }() , O0 = function() { function t(e, n, l) { this.statusCode = e, this.headersString = n, this.size = l } return Object.defineProperty(t.prototype, "bodySize", { get: function() { return this.size }, enumerable: !1, configurable: !0 }), Object.defineProperty(t.prototype, "status", { get: function() { return this.statusCode }, enumerable: !1, configurable: !0 }), Object.defineProperty(t.prototype, "headers", { get: function() { var e, n; if (this.headersString) { var l = {} , i = this.headersString.split(`\r `); try { for (var o = ce(i), r = o.next(); !r.done; r = o.next()) { var c = r.value , a = K(c.split(": "), 2) , d = a[0] , s = a[1]; d && s && (l[d] = s) } } catch (u) { e = { error: u } } finally { try { r && !r.done && (n = o.return) && n.call(o) } finally { if (e) throw e.error } } return l } }, enumerable: !1, configurable: !0 }), t }() , $0 = function() { function t(e, n, l, i, o, r, c, a, d, s, u) { c === void 0 && (c = 0), this.type = e, this.method = n, this.timestamp = l, this.startTime = i, this.url = o, this.requestWrapper = r, this.status = c, this.duration = a, this.responseWrapper = d, this.error = s, this.endTime = u } return t.prototype.toSerializable = function() { var e, n, l, i, o = { type: this.type, method: this.method, url: this.url, timestamp: this.timestamp, status: this.status, duration: this.duration, error: this.error, startTime: this.startTime, endTime: this.endTime, requestHeaders: (e = this.requestWrapper) === null || e === void 0 ? void 0 : e.headers, requestBodySize: (n = this.requestWrapper) === null || n === void 0 ? void 0 : n.bodySize, responseHeaders: (l = this.responseWrapper) === null || l === void 0 ? void 0 : l.headers, responseBodySize: (i = this.responseWrapper) === null || i === void 0 ? void 0 : i.bodySize }; return Object.fromEntries(Object.entries(o).filter(function(r) { var c = K(r, 2); c[0]; var a = c[1]; return a !== void 0 })) } , t }(); function q0(t) { return typeof t == "object" && t !== null && "url"in t && "method"in t } var eb = function() { function t(e, n) { n === void 0 && (n = Ft()), this.callback = e, this.id = n } return t }(), tb = function() { function t(e) { this.eventCallbacks = new Map, this.isObserving = !1, this.logger = e; var n = Ce(); t.isSupported() && (this.globalScope = n) } return t.isSupported = function() { var e = Ce(); return !!e && !!e.fetch } , t.prototype.subscribe = function(e, n) { var l, i, o, r, c, a, d; if (this.logger || (this.logger = n), this.eventCallbacks.set(e.id, e), !this.isObserving) { var s = (o = (i = (l = this.globalScope) === null || l === void 0 ? void 0 : l.XMLHttpRequest) === null || i === void 0 ? void 0 : i.prototype) === null || o === void 0 ? void 0 : o.open , u = (a = (c = (r = this.globalScope) === null || r === void 0 ? void 0 : r.XMLHttpRequest) === null || c === void 0 ? void 0 : c.prototype) === null || a === void 0 ? void 0 : a.send; s && u && this.observeXhr(s, u); var b = (d = this.globalScope) === null || d === void 0 ? void 0 : d.fetch; b && this.observeFetch(b), this.isObserving = !0 } } , t.prototype.unsubscribe = function(e) { this.eventCallbacks.delete(e.id) } , t.prototype.triggerEventCallbacks = function(e) { var n = this; this.eventCallbacks.forEach(function(l) { var i; try { l.callback(e) } catch (o) { (i = n.logger) === null || i === void 0 || i.debug("an unexpected error occurred while triggering event callbacks", o) } }) } , t.prototype.handleNetworkRequestEvent = function(e, n, l, i, o, r, c) { var a; if (!(r === void 0 || c === void 0)) { var d, s = "GET"; q0(n) ? (d = n.url, s = n.method) : d = (a = n == null ? void 0 : n.toString) === null || a === void 0 ? void 0 : a.call(n), s = (l == null ? void 0 : l.method) || s; var u, b; i && (u = i.status), o && (b = { name: o.name || "UnknownError", message: o.message || "An unknown error occurred" }, u = 0); var g = Math.floor(performance.now() - c) , V = Math.floor(r + g) , p = new $0(e,s,r,r,d,l,u,g,i,b,V); this.triggerEventCallbacks(p) } } , t.prototype.getTimestamps = function() { var e, n; return { startTime: (e = Date.now) === null || e === void 0 ? void 0 : e.call(Date), durationStart: (n = performance == null ? void 0 : performance.now) === null || n === void 0 ? void 0 : n.call(performance) } } , t.prototype.observeFetch = function(e) { var n = this; !this.globalScope || !e || (this.globalScope.fetch = function(l, i) { return W(n, void 0, void 0, function() { var o, r, c, a, d, s; return S(this, function(u) { switch (u.label) { case 0: try { o = this.getTimestamps() } catch (b) { (d = this.logger) === null || d === void 0 || d.debug("an unexpected error occurred while retrieving timestamps", b) } u.label = 1; case 1: return u.trys.push([1, 3, , 4]), [4, e(l, i)]; case 2: return r = u.sent(), [3, 4]; case 3: return a = u.sent(), c = a, [3, 4]; case 4: try { this.handleNetworkRequestEvent("fetch", l, i ? new j0(i) : void 0, r ? new P0(r) : void 0, c, o == null ? void 0 : o.startTime, o == null ? void 0 : o.durationStart) } catch (b) { (s = this.logger) === null || s === void 0 || s.debug("an unexpected error occurred while handling fetch", b) } if (r) return [2, r]; throw c } }) }) } ) } , t.prototype.observeXhr = function(e, n) { if (!(!this.globalScope || !e || !n)) { var l = this.globalScope.XMLHttpRequest.prototype , i = this; l.open = function() { for (var o, r, c = [], a = 0; a < arguments.length; a++) c[a] = arguments[a]; var d = this , s = K(c, 2) , u = s[0] , b = s[1]; try { d.$$AmplitudeAnalyticsEvent = B({ method: u, url: (o = b == null ? void 0 : b.toString) === null || o === void 0 ? void 0 : o.call(b) }, i.getTimestamps()) } catch (g) { (r = i.logger) === null || r === void 0 || r.debug("an unexpected error occurred while calling xhr open", g) } return e.apply(d, c) } , l.send = function() { for (var o = [], r = 0; r < arguments.length; r++) o[r] = arguments[r]; var c = this , a = o[0] , d = c.$$AmplitudeAnalyticsEvent; return c.addEventListener("loadend", function() { var s; try { var u = c.getAllResponseHeaders() , b = c.getResponseHeader("content-length") , g = new O0(c.status,u,b ? parseInt(b, 10) : void 0) , V = new _0(a); d.status = c.status, i.handleNetworkRequestEvent("xhr", { url: d.url, method: d.method }, V, g, void 0, d.startTime, d.durationStart) } catch (p) { (s = i.logger) === null || s === void 0 || s.debug("an unexpected error occurred while handling xhr send", p) } }), n.apply(c, o) } } } , t }(), Ar = new tb, Rn = function(t, e) { return typeof t == "boolean" ? t : (t == null ? void 0 : t[e]) !== !1 }, za = function(t) { return Rn(t, "attribution") }, nb = function(t) { return Rn(t, "fileDownloads") }, lb = function(t) { return Rn(t, "formInteractions") }, Qa = function(t) { return Rn(t, "pageViews") }, Zr = function(t) { return Rn(t, "sessions") }, Ka = function(t) { return typeof t == "object" && (t.networkTracking === !0 || typeof t.networkTracking == "object") }, La = function(t) { return typeof t == "boolean" ? t : typeof t == "object" && (t.elementInteractions === !0 || typeof t.elementInteractions == "object") }, ib = function(t) { if (La(t.autocapture) && typeof t.autocapture == "object" && typeof t.autocapture.elementInteractions == "object") return t.autocapture.elementInteractions }, ob = function(t) { if (Ka(t.autocapture)) { if (typeof t.autocapture == "object" && typeof t.autocapture.networkTracking == "object") return t.autocapture.networkTracking; if (t.networkTrackingOptions) return t.networkTrackingOptions } }, rb = function(t) { var e = function() { return !1 }, n = void 0, l, i = t.pageCounter, o = Qa(t.defaultTracking); return o && (e = void 0, l = void 0, t.defaultTracking && typeof t.defaultTracking == "object" && t.defaultTracking.pageViews && typeof t.defaultTracking.pageViews == "object" && ("trackOn"in t.defaultTracking.pageViews && (e = t.defaultTracking.pageViews.trackOn), "trackHistoryChanges"in t.defaultTracking.pageViews && (n = t.defaultTracking.pageViews.trackHistoryChanges), "eventType"in t.defaultTracking.pageViews && t.defaultTracking.pageViews.eventType && (l = t.defaultTracking.pageViews.eventType))), { trackOn: e, trackHistoryChanges: n, eventType: l, pageCounter: i } }, cb = function(t) { return za(t.defaultTracking) && t.defaultTracking && typeof t.defaultTracking == "object" && t.defaultTracking.attribution && typeof t.defaultTracking.attribution == "object" ? B({}, t.defaultTracking.attribution) : {} }, xl = function(t, e) { for (var n = 0; n < e.length; n++) { var l = e[n] , i = l.name , o = l.args , r = l.resolve , c = t && t[i]; if (typeof c == "function") { var a = c.apply(t, o); typeof r == "function" && r(a == null ? void 0 : a.promise) } } return t }, wl = function(t) { var e = t; return e && e._q !== void 0 }, Ma = "2.17.8", ab = "amplitude-ts", db = "Web", sb = "$remote", ub = function() { function t() { this.name = "@amplitude/plugin-context-browser", this.type = "before", this.library = "".concat(ab, "/").concat(Ma), typeof navigator < "u" && (this.userAgent = navigator.userAgent) } return t.prototype.setup = function(e) { return this.config = e, Promise.resolve(void 0) } , t.prototype.execute = function(e) { var n, l; return W(this, void 0, void 0, function() { var i, o, r, c; return S(this, function(a) { return i = new Date().getTime(), o = (n = this.config.lastEventId) !== null && n !== void 0 ? n : -1, r = (l = e.event_id) !== null && l !== void 0 ? l : o + 1, this.config.lastEventId = r, e.time || (this.config.lastEventTime = i), c = B(B(B(B(B(B(B(B({ user_id: this.config.userId, device_id: this.config.deviceId, session_id: this.config.sessionId, time: i }, this.config.appVersion && { app_version: this.config.appVersion }), this.config.trackingOptions.platform && { platform: db }), this.config.trackingOptions.language && { language: x0() }), this.config.trackingOptions.ipAddress && { ip: sb }), { insert_id: Ft(), partner_id: this.config.partnerId, plan: this.config.plan }), this.config.ingestionMetadata && { ingestion_metadata: { source_name: this.config.ingestionMetadata.sourceName, source_version: this.config.ingestionMetadata.sourceVersion } }), e), { event_id: r, library: this.library, user_agent: this.userAgent }), [2, c] }) }) } , t }(), Ta = function() { function t(e) { this.storage = e } return t.prototype.isEnabled = function() { return W(this, void 0, void 0, function() { var e, n, l, i; return S(this, function(o) { switch (o.label) { case 0: if (!this.storage) return [2, !1]; e = String(Date.now()), n = new t(this.storage), l = "AMP_TEST", o.label = 1; case 1: return o.trys.push([1, 4, 5, 7]), [4, n.set(l, e)]; case 2: return o.sent(), [4, n.get(l)]; case 3: return i = o.sent(), [2, i === e]; case 4: return o.sent(), [2, !1]; case 5: return [4, n.remove(l)]; case 6: return o.sent(), [7]; case 7: return [2] } }) }) } , t.prototype.get = function(e) { return W(this, void 0, void 0, function() { var n; return S(this, function(l) { switch (l.label) { case 0: return l.trys.push([0, 2, , 3]), [4, this.getRaw(e)]; case 1: return n = l.sent(), n ? [2, JSON.parse(n)] : [2, void 0]; case 2: return l.sent(), console.error("[Amplitude] Error: Could not get value from storage"), [2, void 0]; case 3: return [2] } }) }) } , t.prototype.getRaw = function(e) { var n; return W(this, void 0, void 0, function() { return S(this, function(l) { return [2, ((n = this.storage) === null || n === void 0 ? void 0 : n.getItem(e)) || void 0] }) }) } , t.prototype.set = function(e, n) { var l; return W(this, void 0, void 0, function() { return S(this, function(i) { try { (l = this.storage) === null || l === void 0 || l.setItem(e, JSON.stringify(n)) } catch {} return [2] }) }) } , t.prototype.remove = function(e) { var n; return W(this, void 0, void 0, function() { return S(this, function(l) { try { (n = this.storage) === null || n === void 0 || n.removeItem(e) } catch {} return [2] }) }) } , t.prototype.reset = function() { var e; return W(this, void 0, void 0, function() { return S(this, function(n) { try { (e = this.storage) === null || e === void 0 || e.clear() } catch {} return [2] }) }) } , t }(), Un = 1e3, Ha = function(t) { Fe(e, t); function e(n) { var l = this, i, o, r; try { r = (i = Ce()) === null || i === void 0 ? void 0 : i.localStorage } catch (c) { (o = n == null ? void 0 : n.loggerProvider) === null || o === void 0 || o.debug("Failed to access localStorage. error=".concat(JSON.stringify(c))), r = void 0 } return l = t.call(this, r) || this, l.loggerProvider = n == null ? void 0 : n.loggerProvider, l } return e.prototype.set = function(n, l) { var i; return W(this, void 0, void 0, function() { var o; return S(this, function(r) { switch (r.label) { case 0: return Array.isArray(l) && l.length > Un ? (o = l.length - Un, [4, t.prototype.set.call(this, n, l.slice(0, Un))]) : [3, 2]; case 1: return r.sent(), (i = this.loggerProvider) === null || i === void 0 || i.error("Failed to save ".concat(o, " events because the queue length exceeded ").concat(Un, ".")), [3, 4]; case 2: return [4, t.prototype.set.call(this, n, l)]; case 3: r.sent(), r.label = 4; case 4: return [2] } }) }) } , e }(Ta), gb = function(t) { Fe(e, t); function e() { var n; return t.call(this, (n = Ce()) === null || n === void 0 ? void 0 : n.sessionStorage) || this } return e }(Ta), hb = function(t) { Fe(e, t); function e() { var n = t !== null && t.apply(this, arguments) || this; return n.state = { done: 4 }, n } return e.prototype.send = function(n, l) { return W(this, void 0, void 0, function() { var i = this; return S(this, function(o) { return [2, new Promise(function(r, c) { typeof XMLHttpRequest > "u" && c(new Error("XHRTransport is not supported.")); var a = new XMLHttpRequest; a.open("POST", n, !0), a.onreadystatechange = function() { if (a.readyState === i.state.done) { var d = a.responseText; try { r(i.buildResponse(JSON.parse(d))) } catch { r(i.buildResponse({ code: a.status })) } } } , a.setRequestHeader("Content-Type", "application/json"), a.setRequestHeader("Accept", "*/*"), a.send(JSON.stringify(l)) } )] }) }) } , e }(Gl), bb = function(t) { Fe(e, t); function e() { return t !== null && t.apply(this, arguments) || this } return e.prototype.send = function(n, l) { return W(this, void 0, void 0, function() { var i = this; return S(this, function(o) { return [2, new Promise(function(r, c) { var a = Ce(); if (!(a != null && a.navigator.sendBeacon)) throw new Error("SendBeaconTransport is not supported"); try { var d = JSON.stringify(l) , s = a.navigator.sendBeacon(n, JSON.stringify(l)); return r(s ? i.buildResponse({ code: 200, events_ingested: l.events.length, payload_size_bytes: d.length, server_upload_time: Date.now() }) : i.buildResponse({ code: 500 })) } catch (u) { c(u) } } )] }) }) } , e }(Gl), Vb = function(t, e, n) { return n === void 0 && (n = !0), W(void 0, void 0, void 0, function() { var l, i, o, r, c, a, d, s, u; return S(this, function(b) { switch (b.label) { case 0: return l = J0(t), [4, e.getRaw(l)]; case 1: return i = b.sent(), i ? n ? [4, e.remove(l)] : [3, 3] : [2, { optOut: !1 }]; case 2: b.sent(), b.label = 3; case 3: return o = K(i.split("."), 6), r = o[0], c = o[1], a = o[2], d = o[3], s = o[4], u = o[5], [2, { deviceId: r, userId: mb(c), sessionId: kl(d), lastEventId: kl(u), lastEventTime: kl(s), optOut: !!a }] } }) }) }, kl = function(t) { var e = parseInt(t, 32); if (!isNaN(e)) return e }, mb = function(t) { if (!(!atob || !escape || !t)) try { return decodeURIComponent(escape(atob(t))) } catch { return } }, it = "[Amplitude]", fr = "".concat(it, " Form Started"), Ab = "".concat(it, " Form Submitted"), Zb = "".concat(it, " File Downloaded"), pr = "session_start", Gr = "session_end", fb = "".concat(it, " File Extension"), pb = "".concat(it, " File Name"), Gb = "".concat(it, " Link ID"), Xb = "".concat(it, " Link Text"), Ib = "".concat(it, " Link URL"), zl = "".concat(it, " Form ID"), Ql = "".concat(it, " Form Name"), Kl = "".concat(it, " Form Destination"), rl = "cookie", Rb = "US", Eb = function(t) { Fe(e, t); function e(n, l, i, o, r, c, a, d, s, u, b, g, V, p, X, Z, f, G, C, E, y, A, F, w, _, D, T, Ve, Xe, ke, pe, ze, He, Ye, Qe) { i === void 0 && (i = new Ki), o === void 0 && (o = { domain: "", expiration: 365, sameSite: "Lax", secure: !1, upgrade: !0 }), d === void 0 && (d = 1e3), s === void 0 && (s = 5), u === void 0 && (u = 30), b === void 0 && (b = rl), Z === void 0 && (Z = new Fa), f === void 0 && (f = Le.Warn), C === void 0 && (C = !1), E === void 0 && (E = !1), F === void 0 && (F = ""), w === void 0 && (w = Rb), D === void 0 && (D = 30 * 60 * 1e3), T === void 0 && (T = new Ha({ loggerProvider: Z })), Ve === void 0 && (Ve = { ipAddress: !0, language: !0, platform: !0 }), Xe === void 0 && (Xe = "fetch"), ke === void 0 && (ke = !1), pe === void 0 && (pe = !0); var Y = t.call(this, { apiKey: n, storageProvider: T, transportProvider: Da(Xe) }) || this; return Y.apiKey = n, Y.appVersion = l, Y.cookieOptions = o, Y.defaultTracking = r, Y.autocapture = c, Y.flushIntervalMillis = d, Y.flushMaxRetries = s, Y.flushQueueSize = u, Y.identityStorage = b, Y.ingestionMetadata = g, Y.instanceName = V, Y.loggerProvider = Z, Y.logLevel = f, Y.minIdLength = G, Y.offline = C, Y.partnerId = y, Y.plan = A, Y.serverUrl = F, Y.serverZone = w, Y.sessionTimeout = D, Y.storageProvider = T, Y.trackingOptions = Ve, Y.transport = Xe, Y.useBatch = ke, Y.fetchRemoteConfig = pe, Y.networkTrackingOptions = Qe, Y.version = Ma, Y._optOut = !1, Y._cookieStorage = i, Y.deviceId = a, Y.lastEventId = p, Y.lastEventTime = X, Y.optOut = E, Y.sessionId = _, Y.pageCounter = He, Y.userId = ze, Y.debugLogsEnabled = Ye, Y.loggerProvider.enable(Ye ? Le.Debug : Y.logLevel), Y.networkTrackingOptions = Qe, Y } return Object.defineProperty(e.prototype, "cookieStorage", { get: function() { return this._cookieStorage }, set: function(n) { this._cookieStorage !== n && (this._cookieStorage = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "deviceId", { get: function() { return this._deviceId }, set: function(n) { this._deviceId !== n && (this._deviceId = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "userId", { get: function() { return this._userId }, set: function(n) { this._userId !== n && (this._userId = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "sessionId", { get: function() { return this._sessionId }, set: function(n) { this._sessionId !== n && (this._sessionId = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "optOut", { get: function() { return this._optOut }, set: function(n) { this._optOut !== n && (this._optOut = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "lastEventTime", { get: function() { return this._lastEventTime }, set: function(n) { this._lastEventTime !== n && (this._lastEventTime = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "lastEventId", { get: function() { return this._lastEventId }, set: function(n) { this._lastEventId !== n && (this._lastEventId = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "pageCounter", { get: function() { return this._pageCounter }, set: function(n) { this._pageCounter !== n && (this._pageCounter = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "debugLogsEnabled", { set: function(n) { this._debugLogsEnabled !== n && (this._debugLogsEnabled = n, this.updateStorage()) }, enumerable: !1, configurable: !0 }), e.prototype.updateStorage = function() { var n = { deviceId: this._deviceId, userId: this._userId, sessionId: this._sessionId, optOut: this._optOut, lastEventTime: this._lastEventTime, lastEventId: this._lastEventId, pageCounter: this._pageCounter, debugLogsEnabled: this._debugLogsEnabled }; this.cookieStorage.set(xa(this.apiKey), n) } , e }(G0), Cb = function(t, e, n) { return e === void 0 && (e = {}), W(void 0, void 0, void 0, function() { var l, i, o, r, c, a, d, s, u, b, g, V, p, X, Z, f, G, C, E, y, A, F, w, _, D, T, Ve, Xe, ke, pe, ze, He, Ye, Qe, Y, $e, Ke, qe, ut, Ie, O, Se, et; return S(this, function(me) { switch (me.label) { case 0: return l = e.identityStorage || rl, E = {}, l === rl ? [3, 1] : (o = "", [3, 5]); case 1: return (A = (y = e.cookieOptions) === null || y === void 0 ? void 0 : y.domain) !== null && A !== void 0 ? (r = A, [3, 4]) : [3, 2]; case 2: return [4, Sb()]; case 3: r = me.sent(), me.label = 4; case 4: o = r, me.label = 5; case 5: return i = B.apply(void 0, [(E.domain = o, E.expiration = 365, E.sameSite = "Lax", E.secure = !1, E.upgrade = !0, E), e.cookieOptions]), c = yb(e.identityStorage, i), [4, Vb(t, c, (w = (F = e.cookieOptions) === null || F === void 0 ? void 0 : F.upgrade) !== null && w !== void 0 ? w : !0)]; case 6: return a = me.sent(), [4, c.get(xa(t))]; case 7: return d = me.sent(), s = ol(), u = (Xe = (Ve = (T = (D = (_ = e.deviceId) !== null && _ !== void 0 ? _ : s.ampDeviceId) !== null && D !== void 0 ? D : s.deviceId) !== null && T !== void 0 ? T : d == null ? void 0 : d.deviceId) !== null && Ve !== void 0 ? Ve : a.deviceId) !== null && Xe !== void 0 ? Xe : Ft(), b = (ke = d == null ? void 0 : d.lastEventId) !== null && ke !== void 0 ? ke : a.lastEventId, g = (pe = d == null ? void 0 : d.lastEventTime) !== null && pe !== void 0 ? pe : a.lastEventTime, V = (He = (ze = e.optOut) !== null && ze !== void 0 ? ze : d == null ? void 0 : d.optOut) !== null && He !== void 0 ? He : a.optOut, p = (Ye = d == null ? void 0 : d.sessionId) !== null && Ye !== void 0 ? Ye : a.sessionId, X = (Y = (Qe = e.userId) !== null && Qe !== void 0 ? Qe : d == null ? void 0 : d.userId) !== null && Y !== void 0 ? Y : a.userId, n.previousSessionDeviceId = ($e = d == null ? void 0 : d.deviceId) !== null && $e !== void 0 ? $e : a.deviceId, n.previousSessionUserId = (Ke = d == null ? void 0 : d.userId) !== null && Ke !== void 0 ? Ke : a.userId, Z = { ipAddress: (ut = (qe = e.trackingOptions) === null || qe === void 0 ? void 0 : qe.ipAddress) !== null && ut !== void 0 ? ut : !0, language: (O = (Ie = e.trackingOptions) === null || Ie === void 0 ? void 0 : Ie.language) !== null && O !== void 0 ? O : !0, platform: (et = (Se = e.trackingOptions) === null || Se === void 0 ? void 0 : Se.platform) !== null && et !== void 0 ? et : !0 }, f = d == null ? void 0 : d.pageCounter, G = d == null ? void 0 : d.debugLogsEnabled, e.autocapture !== void 0 && (e.defaultTracking = e.autocapture), C = new Eb(t,e.appVersion,c,i,e.defaultTracking,e.autocapture,u,e.flushIntervalMillis,e.flushMaxRetries,e.flushQueueSize,l,e.ingestionMetadata,e.instanceName,b,g,e.loggerProvider,e.logLevel,e.minIdLength,e.offline,V,e.partnerId,e.plan,e.serverUrl,e.serverZone,p,e.sessionTimeout,e.storageProvider,Z,e.transport,e.useBatch,e.fetchRemoteConfig,X,f,G,e.networkTrackingOptions), [4, C.storageProvider.isEnabled()]; case 8: return me.sent() || (C.loggerProvider.warn("Storage provider ".concat(C.storageProvider.constructor.name, " is not enabled. Falling back to MemoryStorage.")), C.storageProvider = new Ki), [2, C] } }) }) }, yb = function(t, e) { switch (t === void 0 && (t = rl), e === void 0 && (e = {}), t) { case "localStorage": return new Ha; case "sessionStorage": return new gb; case "none": return new Ki; case "cookie": default: return new oi(B(B({}, e), { expirationDays: e.expiration })) } }, Da = function(t) { return t === "xhr" ? new hb : t === "beacon" ? new bb : new L0 }, Sb = function(t) { return W(void 0, void 0, void 0, function() { var e, n, l, i, o, o, r, c, a, d; return S(this, function(s) { switch (s.label) { case 0: return [4, new oi().isEnabled()]; case 1: if (!s.sent() || typeof location > "u" || !location.hostname) return [2, ""]; for (e = location.hostname, n = e.split("."), l = [], i = "AMP_TLDTEST", o = n.length - 2; o >= 0; --o) l.push(n.slice(o).join(".")); o = 0, s.label = 2; case 2: return o < l.length ? (r = l[o], c = { domain: "." + r }, a = new oi(c), [4, a.set(i, 1)]) : [3, 7]; case 3: return s.sent(), [4, a.get(i)]; case 4: return d = s.sent(), d ? [4, a.remove(i)] : [3, 6]; case 5: return s.sent(), [2, "." + r]; case 6: return o++, [3, 2]; case 7: return [2, ""] } }) }) }, ja = function() { var t = "ampIntegrationContext"; if (typeof globalThis < "u" && typeof globalThis[t] < "u") return globalThis[t]; if (typeof globalThis < "u") return globalThis; if (typeof window < "u") return window; if (typeof self < "u") return self; if (typeof global < "u") return global }, Xr = function() { var t, e = ja(); if (!(!((t = e == null ? void 0 : e.location) === null || t === void 0) && t.search)) return {}; var n = e.location.search.substring(1).split("&").filter(Boolean) , l = n.reduce(function(i, o) { var r = o.split("=", 2) , c = Ir(r[0]) , a = Ir(r[1]); return a && (i[c] = a), i }, {}); return l }, Ir = function(t) { t === void 0 && (t = ""); try { return decodeURIComponent(t) } catch { return "" } }, Wb = "utm_campaign", vb = "utm_content", Bb = "utm_id", Nb = "utm_medium", Fb = "utm_source", Yb = "utm_term", Rr = "dclid", Er = "fbclid", Cr = "gbraid", yr = "gclid", Sr = "ko_click_id", Wr = "li_fat_id", vr = "msclkid", Br = "rtd_cid", Nr = "ttclid", Fr = "twclid", Yr = "wbraid", _a = { utm_campaign: void 0, utm_content: void 0, utm_id: void 0, utm_medium: void 0, utm_source: void 0, utm_term: void 0, referrer: void 0, referring_domain: void 0, dclid: void 0, gbraid: void 0, gclid: void 0, fbclid: void 0, ko_click_id: void 0, li_fat_id: void 0, msclkid: void 0, rtd_cid: void 0, ttclid: void 0, twclid: void 0, wbraid: void 0 }, Ub = function() { function t() {} return t.prototype.parse = function() { return W(this, void 0, void 0, function() { return S(this, function(e) { return [2, B(B(B(B({}, _a), this.getUtmParam()), this.getReferrer()), this.getClickIds())] }) }) } , t.prototype.getUtmParam = function() { var e = Xr() , n = e[Wb] , l = e[vb] , i = e[Bb] , o = e[Nb] , r = e[Fb] , c = e[Yb]; return { utm_campaign: n, utm_content: l, utm_id: i, utm_medium: o, utm_source: r, utm_term: c } } , t.prototype.getReferrer = function() { var e, n, l = { referrer: void 0, referring_domain: void 0 }; try { l.referrer = document.referrer || void 0, l.referring_domain = (n = (e = l.referrer) === null || e === void 0 ? void 0 : e.split("/")[2]) !== null && n !== void 0 ? n : void 0 } catch {} return l } , t.prototype.getClickIds = function() { var e, n = Xr(); return e = {}, e[Rr] = n[Rr], e[Er] = n[Er], e[Cr] = n[Cr], e[yr] = n[yr], e[Sr] = n[Sr], e[Wr] = n[Wr], e[vr] = n[vr], e[Br] = n[Br], e[Nr] = n[Nr], e[Fr] = n[Fr], e[Yr] = n[Yr], e } , t }(), cl; (function(t) { t.SET = "$set", t.SET_ONCE = "$setOnce", t.ADD = "$add", t.APPEND = "$append", t.PREPEND = "$prepend", t.REMOVE = "$remove", t.PREINSERT = "$preInsert", t.POSTINSERT = "$postInsert", t.UNSET = "$unset", t.CLEAR_ALL = "$clearAll" } )(cl || (cl = {})); var Ur; (function(t) { t.REVENUE_PRODUCT_ID = "$productId", t.REVENUE_QUANTITY = "$quantity", t.REVENUE_PRICE = "$price", t.REVENUE_TYPE = "$revenueType", t.REVENUE_CURRENCY = "$currency", t.REVENUE = "$revenue" } )(Ur || (Ur = {})); var Jr; (function(t) { t.IDENTIFY = "$identify", t.GROUP_IDENTIFY = "$groupidentify", t.REVENUE = "revenue_amount" } )(Jr || (Jr = {})); var al; (function(t) { t.US = "US", t.EU = "EU" } )(al || (al = {})); var dl; (function(t) { t.Unknown = "unknown", t.Skipped = "skipped", t.Success = "success", t.RateLimit = "rate_limit", t.PayloadTooLarge = "payload_too_large", t.Invalid = "invalid", t.Failed = "failed", t.Timeout = "Timeout", t.SystemError = "SystemError" } )(dl || (dl = {})); var Jb = function(t) { var e = {}; for (var n in t) { var l = t[n]; l && (e[n] = l) } return e } , xb = "[Amplitude] Page Viewed" , wb = function(t) { t === void 0 && (t = {}); var e, n = ja(), l = void 0, i = !1, o, r = t.trackOn, c = t.trackHistoryChanges, a = t.eventType, d = a === void 0 ? xb : a, s = function(Z) { var f = Z; try { f = decodeURI(Z) } catch (G) { l == null || l.error("Malformed URI sequence: ", G) } return f }, u = function() { return W(void 0, void 0, void 0, function() { var Z, f, G; return S(this, function(C) { switch (C.label) { case 0: return Z = s(typeof location < "u" && location.href || ""), G = { event_type: d }, f = [{}], [4, kb()]; case 1: return [2, (G.event_properties = B.apply(void 0, [B.apply(void 0, f.concat([C.sent()])), { "[Amplitude] Page Domain": typeof location < "u" && location.hostname || "", "[Amplitude] Page Location": Z, "[Amplitude] Page Path": typeof location < "u" && s(location.pathname) || "", "[Amplitude] Page Title": typeof document < "u" && document.title || "", "[Amplitude] Page URL": Z.split("?")[0] }]), G)] } }) }) }, b = function() { return typeof r > "u" || typeof r == "function" && r() }, g = typeof location < "u" ? location.href : null, V = function() { return W(void 0, void 0, void 0, function() { var Z, f, G, C; return S(this, function(E) { switch (E.label) { case 0: return Z = location.href, f = Qb(c, Z, g || "") && b(), g = Z, f ? (l == null || l.log("Tracking page view event"), e != null ? [3, 1] : [3, 3]) : [3, 4]; case 1: return C = (G = e).track, [4, u()]; case 2: C.apply(G, [E.sent()]), E.label = 3; case 3: E.label = 4; case 4: return [2] } }) }) }, p = function() { V() }, X = { name: "@amplitude/plugin-page-view-tracking-browser", type: "enrichment", setup: function(Z, f) { return W(void 0, void 0, void 0, function() { var G, C; return S(this, function(E) { switch (E.label) { case 0: return e = f, o = Z, l = Z.loggerProvider, l.log("Installing @amplitude/plugin-page-view-tracking-browser"), i = !0, n && (n.addEventListener("popstate", p), n.history.pushState = new Proxy(n.history.pushState,{ apply: function(y, A, F) { var w = K(F, 3) , _ = w[0] , D = w[1] , T = w[2]; y.apply(A, [_, D, T]), i && V() } })), b() ? (l.log("Tracking page view event"), C = (G = e).track, [4, u()]) : [3, 2]; case 1: C.apply(G, [E.sent()]), E.label = 2; case 2: return [2] } }) }) }, execute: function(Z) { return W(void 0, void 0, void 0, function() { var f; return S(this, function(G) { switch (G.label) { case 0: return r === "attribution" && zb(Z) ? (l == null || l.log("Enriching campaign event to page view event with campaign parameters"), [4, u()]) : [3, 2]; case 1: f = G.sent(), Z.event_type = f.event_type, Z.event_properties = B(B({}, Z.event_properties), f.event_properties), G.label = 2; case 2: return o && Z.event_type === d && (o.pageCounter = o.pageCounter ? o.pageCounter + 1 : 1, Z.event_properties = B(B({}, Z.event_properties), { "[Amplitude] Page Counter": o.pageCounter })), [2, Z] } }) }) }, teardown: function() { return W(void 0, void 0, void 0, function() { return S(this, function(Z) { return n && (n.removeEventListener("popstate", p), i = !1), [2] }) }) } }; return X } , kb = function() { return W(void 0, void 0, void 0, function() { var t; return S(this, function(e) { switch (e.label) { case 0: return t = Jb, [4, new Ub().parse()]; case 1: return [2, t.apply(void 0, [e.sent()])] } }) }) } , zb = function(t) { if (t.event_type === "$identify" && t.user_properties) { var e = t.user_properties , n = e[cl.SET] || {} , l = e[cl.UNSET] || {} , i = Ze(Ze([], K(Object.keys(n)), !1), K(Object.keys(l)), !1); return Object.keys(_a).every(function(o) { return i.includes(o) }) } return !1 } , Qb = function(t, e, n) { switch (t) { case "pathOnly": { if (n == "") return !0; var l = new URL(e) , i = new URL(n) , o = l.origin + l.pathname , r = i.origin + i.pathname; return o !== r } default: return e !== n } } , Kb = function() { var t, e = [], n = function(d, s, u) { d.addEventListener(s, u), e.push({ element: d, type: s, handler: u }) }, l = function() { e.forEach(function(d) { var s = d.element , u = d.type , b = d.handler; s == null || s.removeEventListener(u, b) }), e = [] }, i = "@amplitude/plugin-form-interaction-tracking-browser", o = "enrichment", r = function(d, s) { return W(void 0, void 0, void 0, function() { var u, b; return S(this, function(g) { return u = function() { if (!s) { d.loggerProvider.warn("Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked."); return } if (!(typeof document > "u")) { var V = function(X) { var Z = !1; n(X, "change", function() { var f, G = xr(X); Z || s.track(fr, (f = {}, f[zl] = Jt(X.id), f[Ql] = Jt(X.name), f[Kl] = G, f)), Z = !0 }), n(X, "submit", function() { var f, G, C = xr(X); Z || s.track(fr, (f = {}, f[zl] = Jt(X.id), f[Ql] = Jt(X.name), f[Kl] = C, f)), s.track(Ab, (G = {}, G[zl] = Jt(X.id), G[Ql] = Jt(X.name), G[Kl] = C, G)), Z = !1 }) } , p = Array.from(document.getElementsByTagName("form")); p.forEach(V), typeof MutationObserver < "u" && (t = new MutationObserver(function(X) { X.forEach(function(Z) { Z.addedNodes.forEach(function(f) { f.nodeName === "FORM" && V(f), "querySelectorAll"in f && typeof f.querySelectorAll == "function" && Array.from(f.querySelectorAll("form")).map(V) }) }) } ), t.observe(document.body, { subtree: !0, childList: !0 })) } } , document.readyState === "complete" ? u() : (b = Ce(), b ? b.addEventListener("load", u) : d.loggerProvider.debug("Form interaction tracking is not installed because global is undefined.")), [2] }) }) }, c = function(d) { return W(void 0, void 0, void 0, function() { return S(this, function(s) { return [2, d] }) }) }, a = function() { return W(void 0, void 0, void 0, function() { return S(this, function(d) { return t == null || t.disconnect(), l(), [2] }) }) }; return { name: i, type: o, setup: r, execute: c, teardown: a } } , Jt = function(t) { if (typeof t == "string") return t } , xr = function(t) { var e = t.getAttribute("action"); try { e = new URL(encodeURI(e ?? ""),window.location.href).href } catch {} return e } , Lb = function() { var t, e = [], n = function(d, s, u) { d.addEventListener(s, u), e.push({ element: d, type: s, handler: u }) }, l = function() { e.forEach(function(d) { var s = d.element , u = d.type , b = d.handler; s == null || s.removeEventListener(u, b) }), e = [] }, i = "@amplitude/plugin-file-download-tracking-browser", o = "enrichment", r = function(d, s) { return W(void 0, void 0, void 0, function() { var u, b; return S(this, function(g) { return u = function() { if (!s) { d.loggerProvider.warn("File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked."); return } if (!(typeof document > "u")) { var V = function(Z) { var f; try { f = new URL(Z.href,window.location.href) } catch { return } var G = p.exec(f.href) , C = G == null ? void 0 : G[1]; C && n(Z, "click", function() { var E; C && s.track(Zb, (E = {}, E[fb] = C, E[pb] = f.pathname, E[Gb] = Z.id, E[Xb] = Z.text, E[Ib] = Z.href, E)) }) } , p = /\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)(\?.+)?$/ , X = Array.from(document.getElementsByTagName("a")); X.forEach(V), typeof MutationObserver < "u" && (t = new MutationObserver(function(Z) { Z.forEach(function(f) { f.addedNodes.forEach(function(G) { G.nodeName === "A" && V(G), "querySelectorAll"in G && typeof G.querySelectorAll == "function" && Array.from(G.querySelectorAll("a")).map(V) }) }) } ), t.observe(document.body, { subtree: !0, childList: !0 })) } } , document.readyState === "complete" ? u() : (b = Ce(), b ? b.addEventListener("load", u) : d.loggerProvider.debug("File download tracking is not installed because global is undefined.")), [2] }) }) }, c = function(d) { return W(void 0, void 0, void 0, function() { return S(this, function(s) { return [2, d] }) }) }, a = function() { return W(void 0, void 0, void 0, function() { return S(this, function(d) { return t == null || t.disconnect(), l(), [2] }) }) }; return { name: i, type: o, setup: r, execute: c, teardown: a } } , wr = !1 , Mb = function(t) { if (!(wr || t.defaultTracking !== void 0)) { var e = `\`options.defaultTracking\` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to \`options.defaultTracking\`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example: amplitude.init(, { defaultTracking: true, }); Visit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.`; t.loggerProvider.warn(e), wr = !0 } } , Tb = function() { var t = "@amplitude/plugin-network-checker-browser" , e = "before" , n = Ce() , l = [] , i = function(a, d) { n && (n.addEventListener(a, d), l.push({ type: a, handler: d })) } , o = function() { l.forEach(function(a) { var d = a.type , s = a.handler; n && n.removeEventListener(d, s) }), l = [] } , r = function(a, d) { return W(void 0, void 0, void 0, function() { return S(this, function(s) { return typeof navigator > "u" ? (a.loggerProvider.debug("Network connectivity checker plugin is disabled because navigator is not available."), a.offline = !1, [2]) : (a.offline = !navigator.onLine, i("online", function() { a.loggerProvider.debug("Network connectivity changed to online."), a.offline = !1, setTimeout(function() { d.flush() }, a.flushIntervalMillis) }), i("offline", function() { a.loggerProvider.debug("Network connectivity changed to offline."), a.offline = !0 }), [2]) }) }) } , c = function() { return W(void 0, void 0, void 0, function() { return S(this, function(a) { return o(), [2] }) }) }; return { name: t, type: e, setup: r, teardown: c } } , Hb = "Network error occurred, remote config fetch failed" , Db = "Remote config successfully fetched" , jb = "Remote config fetch rejected due to exceeded retry count" , kr = "Remote config fetch rejected due to timeout after 5 seconds" , zr = "Unexpected error occurred" , _b = "https://sr-client-cfg.amplitude.com/config" , Pb = "https://sr-client-cfg.stag2.amplitude.com/config" , Ob = "https://sr-client-cfg.eu.amplitude.com/config" , $b = function() { function t(e) { var n = e.localConfig , l = e.configKeys , i = this; this.retryTimeout = 1e3, this.attempts = 0, this.sessionTargetingMatch = !1, this.metrics = {}, this.getRemoteConfig = function(o, r, c) { return W(i, void 0, void 0, function() { var a, d, s; return S(this, function(u) { switch (u.label) { case 0: return a = Date.now(), [4, this.fetchWithTimeout(c)]; case 1: return d = u.sent(), d && (s = d.configs && d.configs[o], s) ? (this.metrics.fetchTimeAPISuccess = Date.now() - a, [2, s[r]]) : (this.metrics.fetchTimeAPIFail = Date.now() - a, [2, void 0]) } }) }) } , this.fetchWithTimeout = function(o) { return W(i, void 0, void 0, function() { var r, c, a; return S(this, function(d) { switch (d.label) { case 0: return r = new AbortController, c = setTimeout(function() { return r.abort() }, 5e3), [4, this.fetchRemoteConfig(r.signal, o)]; case 1: return a = d.sent(), clearTimeout(c), [2, a] } }) }) } , this.fetchRemoteConfig = function(o, r) { return W(i, void 0, void 0, function() { var c, a, d, s, u, b, g, V, p, X, Z, f, G; return S(this, function(C) { switch (C.label) { case 0: if (r === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) return [2, this.completeRequest({ err: jb })]; if (o.aborted) return [2, this.completeRequest({ err: kr })]; r !== this.lastFetchedSessionId && (this.lastFetchedSessionId = r, this.attempts = 0), C.label = 1; case 1: C.trys.push([1, 3, , 4]), c = new URLSearchParams({ api_key: this.localConfig.apiKey }); try { for (a = ce(this.configKeys), d = a.next(); !d.done; d = a.next()) s = d.value, c.append("config_keys", s) } catch (E) { Z = { error: E } } finally { try { d && !d.done && (f = a.return) && f.call(a) } finally { if (Z) throw Z.error } } return r && c.set("session_id", String(r)), u = { headers: { Accept: "*/*" }, method: "GET" }, b = "".concat(this.getServerUrl(), "?").concat(c.toString()), this.attempts += 1, [4, fetch(b, B(B({}, u), { signal: o }))]; case 2: if (g = C.sent(), g === null) return [2, this.completeRequest({ err: zr })]; switch (V = new Gl().buildStatus(g.status), V) { case dl.Success: return this.attempts = 0, [2, this.parseAndStoreConfig(g)]; case dl.Failed: return [2, this.retryFetch(o, r)]; default: return [2, this.completeRequest({ err: Hb })] } case 3: return p = C.sent(), X = p, o.aborted ? [2, this.completeRequest({ err: kr })] : [2, this.completeRequest({ err: (G = X.message) !== null && G !== void 0 ? G : zr })]; case 4: return [2] } }) }) } , this.retryFetch = function(o, r) { return W(i, void 0, void 0, function() { var c = this; return S(this, function(a) { switch (a.label) { case 0: return [4, new Promise(function(d) { return setTimeout(d, c.attempts * c.retryTimeout) } )]; case 1: return a.sent(), [2, this.fetchRemoteConfig(o, r)] } }) }) } , this.parseAndStoreConfig = function(o) { return W(i, void 0, void 0, function() { var r; return S(this, function(c) { switch (c.label) { case 0: return [4, o.json()]; case 1: return r = c.sent(), this.completeRequest({ success: Db }), [2, r] } }) }) } , this.localConfig = n, this.configKeys = l } return t.prototype.getServerUrl = function() { return this.localConfig.serverZone === al.STAGING ? Pb : this.localConfig.serverZone === al.EU ? Ob : _b } , t.prototype.completeRequest = function(e) { var n = e.err , l = e.success; if (n) throw new Error(n); l && this.localConfig.loggerProvider.log(l) } , t }() , qb = function(t) { var e = t.localConfig , n = t.configKeys; return W(void 0, void 0, void 0, function() { return S(this, function(l) { return [2, new $b({ localConfig: e, configKeys: n })] }) }) } , eV = qb , tV = function() { function t(e) { this.config = e, this.config.loggerProvider.debug("Local configuration before merging with remote config", JSON.stringify(this.config, null, 2)) } return t.prototype.initialize = function() { return W(this, void 0, void 0, function() { var e; return S(this, function(n) { switch (n.label) { case 0: return e = this, [4, eV({ localConfig: this.config, configKeys: ["analyticsSDK"] })]; case 1: return e.remoteConfigFetch = n.sent(), [2] } }) }) } , t.prototype.generateJoinedConfig = function() { var e, n, l, i, o, r; return W(this, void 0, void 0, function() { var c, a, d, s, u, b, g, V, p, X, Z, f, G; return S(this, function(C) { switch (C.label) { case 0: return C.trys.push([0, 3, , 4]), a = this.remoteConfigFetch, a ? [4, this.remoteConfigFetch.getRemoteConfig("analyticsSDK", "browserSDK", this.config.sessionId)] : [3, 2]; case 1: a = C.sent(), C.label = 2; case 2: if (c = a, this.config.loggerProvider.debug("Remote configuration:", JSON.stringify(c, null, 2)), c && "autocapture"in c) { if (typeof c.autocapture == "boolean" && (this.config.autocapture = c.autocapture), typeof c.autocapture == "object") { if (d = B({}, c.autocapture), this.config.autocapture === void 0 && (this.config.autocapture = c.autocapture), typeof c.autocapture.elementInteractions == "object" && (!((e = c.autocapture.elementInteractions.pageUrlAllowlistRegex) === null || e === void 0) && e.length)) { d.elementInteractions = B({}, c.autocapture.elementInteractions), s = d.elementInteractions, u = (n = s.pageUrlAllowlist) !== null && n !== void 0 ? n : [], b = []; try { for (g = ce(c.autocapture.elementInteractions.pageUrlAllowlistRegex), V = g.next(); !V.done; V = g.next()) { p = V.value; try { b.push(new RegExp(p)) } catch (E) { this.config.loggerProvider.warn("Invalid regex pattern: ".concat(p), E) } } } catch (E) { f = { error: E } } finally { try { V && !V.done && (G = g.return) && G.call(g) } finally { if (f) throw f.error } } X = u.concat(b), s.pageUrlAllowlist = X, delete s.pageUrlAllowlistRegex } typeof this.config.autocapture == "boolean" && (this.config.autocapture = B({ attribution: this.config.autocapture, fileDownloads: this.config.autocapture, formInteractions: this.config.autocapture, pageViews: this.config.autocapture, sessions: this.config.autocapture, elementInteractions: this.config.autocapture }, d)), typeof this.config.autocapture == "object" && (this.config.autocapture = B(B({}, this.config.autocapture), d)) } this.config.defaultTracking = this.config.autocapture } return this.config.loggerProvider.debug("Joined configuration: ", JSON.stringify(this.config, null, 2)), (l = (r = this.config).requestMetadata) !== null && l !== void 0 || (r.requestMetadata = new Ua), !((i = this.remoteConfigFetch) === null || i === void 0) && i.metrics.fetchTimeAPISuccess && this.config.requestMetadata.recordHistogram("remote_config_fetch_time_API_success", this.remoteConfigFetch.metrics.fetchTimeAPISuccess), !((o = this.remoteConfigFetch) === null || o === void 0) && o.metrics.fetchTimeAPIFail && this.config.requestMetadata.recordHistogram("remote_config_fetch_time_API_fail", this.remoteConfigFetch.metrics.fetchTimeAPIFail), [3, 4]; case 3: return Z = C.sent(), this.config.loggerProvider.error("Failed to fetch remote configuration because of error: ", Z), [3, 4]; case 4: return [2, this.config] } }) }) } , t }() , nV = function(t) { return W(void 0, void 0, void 0, function() { var e; return S(this, function(n) { switch (n.label) { case 0: return e = new tV(t), [4, e.initialize()]; case 1: return n.sent(), [2, e] } }) }) } , lV = "@amplitude/plugin-autocapture-browser" , ri = "[Amplitude] Element Clicked" , iV = "[Amplitude] Element Changed" , oV = "[Amplitude] Element ID" , rV = "[Amplitude] Element Class" , Pa = "[Amplitude] Element Tag" , Oa = "[Amplitude] Element Text" , cV = "[Amplitude] Element Hierarchy" , aV = "[Amplitude] Element Href" , dV = "[Amplitude] Element Position Left" , sV = "[Amplitude] Element Position Top" , uV = "[Amplitude] Element Aria Label" , gV = "[Amplitude] Element Attributes" , hV = "[Amplitude] Element Parent Label" , $a = "[Amplitude] Page URL" , bV = "[Amplitude] Page Title" , VV = "[Amplitude] Viewport Height" , mV = "[Amplitude] Viewport Width" , Hn = "https://app.amplitude.com" , AV = "https://app.eu.amplitude.com" , ZV = "https://apps.stag2.amplitude.com" , fV = { US: Hn, EU: AV, STAGING: ZV } , pV = "https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz" , GV = "amp-visual-tagging-selector-highlight"; function te(t) { return typeof t == "function" } function Li(t) { var e = function(l) { Error.call(l), l.stack = new Error().stack } , n = t(e); return n.prototype = Object.create(Error.prototype), n.prototype.constructor = n, n } var Ll = Li(function(t) { return function(n) { t(this), this.message = n ? n.length + ` errors occurred during unsubscription: ` + n.map(function(l, i) { return i + 1 + ") " + l.toString() }).join(` `) : "", this.name = "UnsubscriptionError", this.errors = n } }); function sl(t, e) { if (t) { var n = t.indexOf(e); 0 <= n && t.splice(n, 1) } } var En = function() { function t(e) { this.initialTeardown = e, this.closed = !1, this._parentage = null, this._finalizers = null } return t.prototype.unsubscribe = function() { var e, n, l, i, o; if (!this.closed) { this.closed = !0; var r = this._parentage; if (r) if (this._parentage = null, Array.isArray(r)) try { for (var c = ce(r), a = c.next(); !a.done; a = c.next()) { var d = a.value; d.remove(this) } } catch (p) { e = { error: p } } finally { try { a && !a.done && (n = c.return) && n.call(c) } finally { if (e) throw e.error } } else r.remove(this); var s = this.initialTeardown; if (te(s)) try { s() } catch (p) { o = p instanceof Ll ? p.errors : [p] } var u = this._finalizers; if (u) { this._finalizers = null; try { for (var b = ce(u), g = b.next(); !g.done; g = b.next()) { var V = g.value; try { Qr(V) } catch (p) { o = o ?? [], p instanceof Ll ? o = Ze(Ze([], K(o)), K(p.errors)) : o.push(p) } } } catch (p) { l = { error: p } } finally { try { g && !g.done && (i = b.return) && i.call(b) } finally { if (l) throw l.error } } } if (o) throw new Ll(o) } } , t.prototype.add = function(e) { var n; if (e && e !== this) if (this.closed) Qr(e); else { if (e instanceof t) { if (e.closed || e._hasParent(this)) return; e._addParent(this) } (this._finalizers = (n = this._finalizers) !== null && n !== void 0 ? n : []).push(e) } } , t.prototype._hasParent = function(e) { var n = this._parentage; return n === e || Array.isArray(n) && n.includes(e) } , t.prototype._addParent = function(e) { var n = this._parentage; this._parentage = Array.isArray(n) ? (n.push(e), n) : n ? [n, e] : e } , t.prototype._removeParent = function(e) { var n = this._parentage; n === e ? this._parentage = null : Array.isArray(n) && sl(n, e) } , t.prototype.remove = function(e) { var n = this._finalizers; n && sl(n, e), e instanceof t && e._removeParent(this) } , t.EMPTY = function() { var e = new t; return e.closed = !0, e }(), t }() , qa = En.EMPTY; function ed(t) { return t instanceof En || t && "closed"in t && te(t.remove) && te(t.add) && te(t.unsubscribe) } function Qr(t) { te(t) ? t() : t.unsubscribe() } var XV = { Promise: void 0 } , IV = { setTimeout: function(t, e) { for (var n = [], l = 2; l < arguments.length; l++) n[l - 2] = arguments[l]; return setTimeout.apply(void 0, Ze([t, e], K(n))) }, clearTimeout: function(t) { return clearTimeout(t) }, delegate: void 0 }; function td(t) { IV.setTimeout(function() { throw t }) } function ci() {} function Dn(t) { t() } var Mi = function(t) { Fe(e, t); function e(n) { var l = t.call(this) || this; return l.isStopped = !1, n ? (l.destination = n, ed(n) && n.add(l)) : l.destination = CV, l } return e.create = function(n, l, i) { return new Zn(n,l,i) } , e.prototype.next = function(n) { this.isStopped || this._next(n) } , e.prototype.error = function(n) { this.isStopped || (this.isStopped = !0, this._error(n)) } , e.prototype.complete = function() { this.isStopped || (this.isStopped = !0, this._complete()) } , e.prototype.unsubscribe = function() { this.closed || (this.isStopped = !0, t.prototype.unsubscribe.call(this), this.destination = null) } , e.prototype._next = function(n) { this.destination.next(n) } , e.prototype._error = function(n) { try { this.destination.error(n) } finally { this.unsubscribe() } } , e.prototype._complete = function() { try { this.destination.complete() } finally { this.unsubscribe() } } , e }(En) , RV = function() { function t(e) { this.partialObserver = e } return t.prototype.next = function(e) { var n = this.partialObserver; if (n.next) try { n.next(e) } catch (l) { Jn(l) } } , t.prototype.error = function(e) { var n = this.partialObserver; if (n.error) try { n.error(e) } catch (l) { Jn(l) } else Jn(e) } , t.prototype.complete = function() { var e = this.partialObserver; if (e.complete) try { e.complete() } catch (n) { Jn(n) } } , t }() , Zn = function(t) { Fe(e, t); function e(n, l, i) { var o = t.call(this) || this, r; return te(n) || !n ? r = { next: n ?? void 0, error: l ?? void 0, complete: i ?? void 0 } : r = n, o.destination = new RV(r), o } return e }(Mi); function Jn(t) { td(t) } function EV(t) { throw t } var CV = { closed: !0, next: ci, error: EV, complete: ci } , Ti = function() { return typeof Symbol == "function" && Symbol.observable || "@@observable" }(); function nd(t) { return t } function yV(t) { return t.length === 0 ? nd : t.length === 1 ? t[0] : function(n) { return t.reduce(function(l, i) { return i(l) }, n) } } var ye = function() { function t(e) { e && (this._subscribe = e) } return t.prototype.lift = function(e) { var n = new t; return n.source = this, n.operator = e, n } , t.prototype.subscribe = function(e, n, l) { var i = this , o = WV(e) ? e : new Zn(e,n,l); return Dn(function() { var r = i , c = r.operator , a = r.source; o.add(c ? c.call(o, a) : a ? i._subscribe(o) : i._trySubscribe(o)) }), o } , t.prototype._trySubscribe = function(e) { try { return this._subscribe(e) } catch (n) { e.error(n) } } , t.prototype.forEach = function(e, n) { var l = this; return n = Kr(n), new n(function(i, o) { var r = new Zn({ next: function(c) { try { e(c) } catch (a) { o(a), r.unsubscribe() } }, error: o, complete: i }); l.subscribe(r) } ) } , t.prototype._subscribe = function(e) { var n; return (n = this.source) === null || n === void 0 ? void 0 : n.subscribe(e) } , t.prototype[Ti] = function() { return this } , t.prototype.pipe = function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; return yV(e)(this) } , t.prototype.toPromise = function(e) { var n = this; return e = Kr(e), new e(function(l, i) { var o; n.subscribe(function(r) { return o = r }, function(r) { return i(r) }, function() { return l(o) }) } ) } , t.create = function(e) { return new t(e) } , t }(); function Kr(t) { var e; return (e = t ?? XV.Promise) !== null && e !== void 0 ? e : Promise } function SV(t) { return t && te(t.next) && te(t.error) && te(t.complete) } function WV(t) { return t && t instanceof Mi || SV(t) && ed(t) } function vV(t) { return te(t == null ? void 0 : t.lift) } function Oe(t) { return function(e) { if (vV(e)) return e.lift(function(n) { try { return t(n, this) } catch (l) { this.error(l) } }); throw new TypeError("Unable to lift unknown Observable type") } } function Me(t, e, n, l, i) { return new BV(t,e,n,l,i) } var BV = function(t) { Fe(e, t); function e(n, l, i, o, r, c) { var a = t.call(this, n) || this; return a.onFinalize = r, a.shouldUnsubscribe = c, a._next = l ? function(d) { try { l(d) } catch (s) { n.error(s) } } : t.prototype._next, a._error = o ? function(d) { try { o(d) } catch (s) { n.error(s) } finally { this.unsubscribe() } } : t.prototype._error, a._complete = i ? function() { try { i() } catch (d) { n.error(d) } finally { this.unsubscribe() } } : t.prototype._complete, a } return e.prototype.unsubscribe = function() { var n; if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { var l = this.closed; t.prototype.unsubscribe.call(this), !l && ((n = this.onFinalize) === null || n === void 0 || n.call(this)) } } , e }(Mi) , NV = Li(function(t) { return function() { t(this), this.name = "ObjectUnsubscribedError", this.message = "object unsubscribed" } }) , ld = function(t) { Fe(e, t); function e() { var n = t.call(this) || this; return n.closed = !1, n.currentObservers = null, n.observers = [], n.isStopped = !1, n.hasError = !1, n.thrownError = null, n } return e.prototype.lift = function(n) { var l = new Lr(this,this); return l.operator = n, l } , e.prototype._throwIfClosed = function() { if (this.closed) throw new NV } , e.prototype.next = function(n) { var l = this; Dn(function() { var i, o; if (l._throwIfClosed(), !l.isStopped) { l.currentObservers || (l.currentObservers = Array.from(l.observers)); try { for (var r = ce(l.currentObservers), c = r.next(); !c.done; c = r.next()) { var a = c.value; a.next(n) } } catch (d) { i = { error: d } } finally { try { c && !c.done && (o = r.return) && o.call(r) } finally { if (i) throw i.error } } } }) } , e.prototype.error = function(n) { var l = this; Dn(function() { if (l._throwIfClosed(), !l.isStopped) { l.hasError = l.isStopped = !0, l.thrownError = n; for (var i = l.observers; i.length; ) i.shift().error(n) } }) } , e.prototype.complete = function() { var n = this; Dn(function() { if (n._throwIfClosed(), !n.isStopped) { n.isStopped = !0; for (var l = n.observers; l.length; ) l.shift().complete() } }) } , e.prototype.unsubscribe = function() { this.isStopped = this.closed = !0, this.observers = this.currentObservers = null } , Object.defineProperty(e.prototype, "observed", { get: function() { var n; return ((n = this.observers) === null || n === void 0 ? void 0 : n.length) > 0 }, enumerable: !1, configurable: !0 }), e.prototype._trySubscribe = function(n) { return this._throwIfClosed(), t.prototype._trySubscribe.call(this, n) } , e.prototype._subscribe = function(n) { return this._throwIfClosed(), this._checkFinalizedStatuses(n), this._innerSubscribe(n) } , e.prototype._innerSubscribe = function(n) { var l = this , i = this , o = i.hasError , r = i.isStopped , c = i.observers; return o || r ? qa : (this.currentObservers = null, c.push(n), new En(function() { l.currentObservers = null, sl(c, n) } )) } , e.prototype._checkFinalizedStatuses = function(n) { var l = this , i = l.hasError , o = l.thrownError , r = l.isStopped; i ? n.error(o) : r && n.complete() } , e.prototype.asObservable = function() { var n = new ye; return n.source = this, n } , e.create = function(n, l) { return new Lr(n,l) } , e }(ye) , Lr = function(t) { Fe(e, t); function e(n, l) { var i = t.call(this) || this; return i.destination = n, i.source = l, i } return e.prototype.next = function(n) { var l, i; (i = (l = this.destination) === null || l === void 0 ? void 0 : l.next) === null || i === void 0 || i.call(l, n) } , e.prototype.error = function(n) { var l, i; (i = (l = this.destination) === null || l === void 0 ? void 0 : l.error) === null || i === void 0 || i.call(l, n) } , e.prototype.complete = function() { var n, l; (l = (n = this.destination) === null || n === void 0 ? void 0 : n.complete) === null || l === void 0 || l.call(n) } , e.prototype._subscribe = function(n) { var l, i; return (i = (l = this.source) === null || l === void 0 ? void 0 : l.subscribe(n)) !== null && i !== void 0 ? i : qa } , e }(ld) , FV = { now: function() { return Date.now() } } , YV = function(t) { Fe(e, t); function e(n, l) { return t.call(this) || this } return e.prototype.schedule = function(n, l) { return this } , e }(En) , Mr = { setInterval: function(t, e) { for (var n = [], l = 2; l < arguments.length; l++) n[l - 2] = arguments[l]; return setInterval.apply(void 0, Ze([t, e], K(n))) }, clearInterval: function(t) { return clearInterval(t) }, delegate: void 0 } , UV = function(t) { Fe(e, t); function e(n, l) { var i = t.call(this, n, l) || this; return i.scheduler = n, i.work = l, i.pending = !1, i } return e.prototype.schedule = function(n, l) { var i; if (l === void 0 && (l = 0), this.closed) return this; this.state = n; var o = this.id , r = this.scheduler; return o != null && (this.id = this.recycleAsyncId(r, o, l)), this.pending = !0, this.delay = l, this.id = (i = this.id) !== null && i !== void 0 ? i : this.requestAsyncId(r, this.id, l), this } , e.prototype.requestAsyncId = function(n, l, i) { return i === void 0 && (i = 0), Mr.setInterval(n.flush.bind(n, this), i) } , e.prototype.recycleAsyncId = function(n, l, i) { if (i === void 0 && (i = 0), i != null && this.delay === i && this.pending === !1) return l; l != null && Mr.clearInterval(l) } , e.prototype.execute = function(n, l) { if (this.closed) return new Error("executing a cancelled action"); this.pending = !1; var i = this._execute(n, l); if (i) return i; this.pending === !1 && this.id != null && (this.id = this.recycleAsyncId(this.scheduler, this.id, null)) } , e.prototype._execute = function(n, l) { var i = !1, o; try { this.work(n) } catch (r) { i = !0, o = r || new Error("Scheduled action threw falsy error") } if (i) return this.unsubscribe(), o } , e.prototype.unsubscribe = function() { if (!this.closed) { var n = this , l = n.id , i = n.scheduler , o = i.actions; this.work = this.state = this.scheduler = null, this.pending = !1, sl(o, this), l != null && (this.id = this.recycleAsyncId(i, l, null)), this.delay = null, t.prototype.unsubscribe.call(this) } } , e }(YV) , Tr = function() { function t(e, n) { n === void 0 && (n = t.now), this.schedulerActionCtor = e, this.now = n } return t.prototype.schedule = function(e, n, l) { return n === void 0 && (n = 0), new this.schedulerActionCtor(this,e).schedule(l, n) } , t.now = FV.now, t }() , JV = function(t) { Fe(e, t); function e(n, l) { l === void 0 && (l = Tr.now); var i = t.call(this, n, l) || this; return i.actions = [], i._active = !1, i } return e.prototype.flush = function(n) { var l = this.actions; if (this._active) { l.push(n); return } var i; this._active = !0; do if (i = n.execute(n.state, n.delay)) break; while (n = l.shift()); if (this._active = !1, i) { for (; n = l.shift(); ) n.unsubscribe(); throw i } } , e }(Tr) , Xl = new JV(UV) , xV = Xl , Hi = new ye(function(t) { return t.complete() } ); function id(t) { return t && te(t.schedule) } function od(t) { return t[t.length - 1] } function wV(t) { return id(od(t)) ? t.pop() : void 0 } function kV(t, e) { return typeof od(t) == "number" ? t.pop() : e } var Di = function(t) { return t && typeof t.length == "number" && typeof t != "function" }; function rd(t) { return te(t == null ? void 0 : t.then) } function cd(t) { return te(t[Ti]) } function ad(t) { return Symbol.asyncIterator && te(t == null ? void 0 : t[Symbol.asyncIterator]) } function dd(t) { return new TypeError("You provided " + (t !== null && typeof t == "object" ? "an invalid object" : "'" + t + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.") } function zV() { return typeof Symbol != "function" || !Symbol.iterator ? "@@iterator" : Symbol.iterator } var sd = zV(); function ud(t) { return te(t == null ? void 0 : t[sd]) } function gd(t) { return O1(this, arguments, function() { var n, l, i, o; return S(this, function(r) { switch (r.label) { case 0: n = t.getReader(), r.label = 1; case 1: r.trys.push([1, , 9, 10]), r.label = 2; case 2: return [4, Qt(n.read())]; case 3: return l = r.sent(), i = l.value, o = l.done, o ? [4, Qt(void 0)] : [3, 5]; case 4: return [2, r.sent()]; case 5: return [4, Qt(i)]; case 6: return [4, r.sent()]; case 7: return r.sent(), [3, 2]; case 8: return [3, 10]; case 9: return n.releaseLock(), [7]; case 10: return [2] } }) }) } function hd(t) { return te(t == null ? void 0 : t.getReader) } function Te(t) { if (t instanceof ye) return t; if (t != null) { if (cd(t)) return QV(t); if (Di(t)) return KV(t); if (rd(t)) return LV(t); if (ad(t)) return bd(t); if (ud(t)) return MV(t); if (hd(t)) return TV(t) } throw dd(t) } function QV(t) { return new ye(function(e) { var n = t[Ti](); if (te(n.subscribe)) return n.subscribe(e); throw new TypeError("Provided object does not correctly implement Symbol.observable") } ) } function KV(t) { return new ye(function(e) { for (var n = 0; n < t.length && !e.closed; n++) e.next(t[n]); e.complete() } ) } function LV(t) { return new ye(function(e) { t.then(function(n) { e.closed || (e.next(n), e.complete()) }, function(n) { return e.error(n) }).then(null, td) } ) } function MV(t) { return new ye(function(e) { var n, l; try { for (var i = ce(t), o = i.next(); !o.done; o = i.next()) { var r = o.value; if (e.next(r), e.closed) return } } catch (c) { n = { error: c } } finally { try { o && !o.done && (l = i.return) && l.call(i) } finally { if (n) throw n.error } } e.complete() } ) } function bd(t) { return new ye(function(e) { HV(t, e).catch(function(n) { return e.error(n) }) } ) } function TV(t) { return bd(gd(t)) } function HV(t, e) { var n, l, i, o; return W(this, void 0, void 0, function() { var r, c; return S(this, function(a) { switch (a.label) { case 0: a.trys.push([0, 5, 6, 11]), n = $1(t), a.label = 1; case 1: return [4, n.next()]; case 2: if (l = a.sent(), !!l.done) return [3, 4]; if (r = l.value, e.next(r), e.closed) return [2]; a.label = 3; case 3: return [3, 1]; case 4: return [3, 11]; case 5: return c = a.sent(), i = { error: c }, [3, 11]; case 6: return a.trys.push([6, , 9, 10]), l && !l.done && (o = n.return) ? [4, o.call(n)] : [3, 8]; case 7: a.sent(), a.label = 8; case 8: return [3, 10]; case 9: if (i) throw i.error; return [7]; case 10: return [7]; case 11: return e.complete(), [2] } }) }) } function Zt(t, e, n, l, i) { l === void 0 && (l = 0), i === void 0 && (i = !1); var o = e.schedule(function() { n(), i ? t.add(this.schedule(null, l)) : this.unsubscribe() }, l); if (t.add(o), !i) return o } function Vd(t, e) { return e === void 0 && (e = 0), Oe(function(n, l) { n.subscribe(Me(l, function(i) { return Zt(l, t, function() { return l.next(i) }, e) }, function() { return Zt(l, t, function() { return l.complete() }, e) }, function(i) { return Zt(l, t, function() { return l.error(i) }, e) })) }) } function md(t, e) { return e === void 0 && (e = 0), Oe(function(n, l) { l.add(t.schedule(function() { return n.subscribe(l) }, e)) }) } function DV(t, e) { return Te(t).pipe(md(e), Vd(e)) } function jV(t, e) { return Te(t).pipe(md(e), Vd(e)) } function _V(t, e) { return new ye(function(n) { var l = 0; return e.schedule(function() { l === t.length ? n.complete() : (n.next(t[l++]), n.closed || this.schedule()) }) } ) } function PV(t, e) { return new ye(function(n) { var l; return Zt(n, e, function() { l = t[sd](), Zt(n, e, function() { var i, o, r; try { i = l.next(), o = i.value, r = i.done } catch (c) { n.error(c); return } r ? n.complete() : n.next(o) }, 0, !0) }), function() { return te(l == null ? void 0 : l.return) && l.return() } } ) } function Ad(t, e) { if (!t) throw new Error("Iterable cannot be null"); return new ye(function(n) { Zt(n, e, function() { var l = t[Symbol.asyncIterator](); Zt(n, e, function() { l.next().then(function(i) { i.done ? n.complete() : n.next(i.value) }) }, 0, !0) }) } ) } function OV(t, e) { return Ad(gd(t), e) } function $V(t, e) { if (t != null) { if (cd(t)) return DV(t, e); if (Di(t)) return _V(t, e); if (rd(t)) return jV(t, e); if (ad(t)) return Ad(t, e); if (ud(t)) return PV(t, e); if (hd(t)) return OV(t, e) } throw dd(t) } function qV(t, e) { return e ? $V(t, e) : Te(t) } function Zd(t) { return t instanceof Date && !isNaN(t) } var e2 = Li(function(t) { return function(n) { n === void 0 && (n = null), t(this), this.message = "Timeout has occurred", this.name = "TimeoutError", this.info = n } }); function t2(t, e) { var n = Zd(t) ? { first: t } : typeof t == "number" ? { each: t } : t , l = n.first , i = n.each , o = n.with , r = o === void 0 ? n2 : o , c = n.scheduler , a = c === void 0 ? Xl : c , d = n.meta , s = d === void 0 ? null : d; if (l == null && i == null) throw new TypeError("No timeout provided."); return Oe(function(u, b) { var g, V, p = null, X = 0, Z = function(f) { V = Zt(b, a, function() { try { g.unsubscribe(), Te(r({ meta: s, lastValue: p, seen: X })).subscribe(b) } catch (G) { b.error(G) } }, f) }; g = u.subscribe(Me(b, function(f) { V == null || V.unsubscribe(), X++, b.next(p = f), i > 0 && Z(i) }, void 0, void 0, function() { V != null && V.closed || V == null || V.unsubscribe(), p = null })), !X && Z(l != null ? typeof l == "number" ? l : +l - a.now() : i) }) } function n2(t) { throw new e2(t) } function ct(t, e) { return Oe(function(n, l) { var i = 0; n.subscribe(Me(l, function(o) { l.next(t.call(e, o, i++)) })) }) } var l2 = Array.isArray; function i2(t, e) { return l2(e) ? t.apply(void 0, Ze([], K(e))) : t(e) } function o2(t) { return ct(function(e) { return i2(t, e) }) } function r2(t, e, n, l, i, o, r, c) { var a = [] , d = 0 , s = 0 , u = !1 , b = function() { u && !a.length && !d && e.complete() } , g = function(p) { return d < l ? V(p) : a.push(p) } , V = function(p) { d++; var X = !1; Te(n(p, s++)).subscribe(Me(e, function(Z) { e.next(Z) }, function() { X = !0 }, void 0, function() { if (X) try { d--; for (var Z = function() { var f = a.shift(); r || V(f) }; a.length && d < l; ) Z(); b() } catch (f) { e.error(f) } })) }; return t.subscribe(Me(e, g, function() { u = !0, b() })), function() {} } function Il(t, e, n) { return n === void 0 && (n = 1 / 0), te(e) ? Il(function(l, i) { return ct(function(o, r) { return e(l, o, i, r) })(Te(t(l, i))) }, n) : (typeof e == "number" && (n = e), Oe(function(l, i) { return r2(l, i, t, n) })) } function c2(t) { return t === void 0 && (t = 1 / 0), Il(nd, t) } var a2 = ["addListener", "removeListener"] , d2 = ["addEventListener", "removeEventListener"] , s2 = ["on", "off"]; function rn(t, e, n, l) { if (te(n) && (l = n, n = void 0), l) return rn(t, e, n).pipe(o2(l)); var i = K(h2(t) ? d2.map(function(c) { return function(a) { return t[c](e, a, n) } }) : u2(t) ? a2.map(Hr(t, e)) : g2(t) ? s2.map(Hr(t, e)) : [], 2) , o = i[0] , r = i[1]; if (!o && Di(t)) return Il(function(c) { return rn(c, e, n) })(Te(t)); if (!o) throw new TypeError("Invalid event target"); return new ye(function(c) { var a = function() { for (var d = [], s = 0; s < arguments.length; s++) d[s] = arguments[s]; return c.next(1 < d.length ? d : d[0]) }; return o(a), function() { return r(a) } } ) } function Hr(t, e) { return function(n) { return function(l) { return t[n](e, l) } } } function u2(t) { return te(t.addListener) && te(t.removeListener) } function g2(t) { return te(t.on) && te(t.off) } function h2(t) { return te(t.addEventListener) && te(t.removeEventListener) } function b2(t, e, n) { n === void 0 && (n = xV); var l = -1; return e != null && (id(e) ? n = e : l = e), new ye(function(i) { var o = Zd(t) ? 0 - n.now() : t; o < 0 && (o = 0); var r = 0; return n.schedule(function() { i.closed || (i.next(r++), 0 <= l ? this.schedule(void 0, l) : i.complete()) }, o) } ) } function fd() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; var n = wV(t) , l = kV(t, 1 / 0) , i = t; return i.length ? i.length === 1 ? Te(i[0]) : c2(l)(qV(i, n)) : Hi } function bt(t, e) { return Oe(function(n, l) { var i = 0; n.subscribe(Me(l, function(o) { return t.call(e, o, i++) && l.next(o) })) }) } function V2(t) { return Oe(function(e, n) { var l = []; return e.subscribe(Me(n, function(i) { return l.push(i) }, function() { n.next(l), n.complete() })), Te(t).subscribe(Me(n, function() { var i = l; l = [], n.next(i) }, ci)), function() { l = null } }) } function m2(t, e) { return e === void 0 && (e = Xl), Oe(function(n, l) { var i = null , o = null , r = null , c = function() { if (i) { i.unsubscribe(), i = null; var d = o; o = null, l.next(d) } }; function a() { var d = r + t , s = e.now(); if (s < d) { i = this.schedule(void 0, d - s), l.add(i); return } c() } n.subscribe(Me(l, function(d) { o = d, r = e.now(), i || (i = e.schedule(a, t), l.add(i)) }, function() { c(), l.complete() }, void 0, function() { o = i = null })) }) } function pd(t) { return t <= 0 ? function() { return Hi } : Oe(function(e, n) { var l = 0; e.subscribe(Me(n, function(i) { ++l <= t && (n.next(i), t <= l && n.complete()) })) }) } function A2(t) { return ct(function() { return t }) } function Z2(t, e) { return Il(function(n, l) { return Te(t(n, l)).pipe(pd(1), A2(n)) }) } function f2(t, e) { e === void 0 && (e = Xl); var n = b2(t, e); return Z2(function() { return n }) } function p2() { return Oe(function(t, e) { var n, l = !1; t.subscribe(Me(e, function(i) { var o = n; n = i, l && e.next([o, i]), l = !0 })) }) } function xn(t) { t === void 0 && (t = {}); var e = t.connector , n = e === void 0 ? function() { return new ld } : e , l = t.resetOnError , i = l === void 0 ? !0 : l , o = t.resetOnComplete , r = o === void 0 ? !0 : o , c = t.resetOnRefCountZero , a = c === void 0 ? !0 : c; return function(d) { var s, u, b, g = 0, V = !1, p = !1, X = function() { u == null || u.unsubscribe(), u = void 0 }, Z = function() { X(), s = b = void 0, V = p = !1 }, f = function() { var G = s; Z(), G == null || G.unsubscribe() }; return Oe(function(G, C) { g++, !p && !V && X(); var E = b = b ?? n(); C.add(function() { g--, g === 0 && !p && !V && (u = Ml(f, a)) }), E.subscribe(C), !s && g > 0 && (s = new Zn({ next: function(y) { return E.next(y) }, error: function(y) { p = !0, X(), u = Ml(Z, i, y), E.error(y) }, complete: function() { V = !0, X(), u = Ml(Z, r), E.complete() } }), Te(G).subscribe(s)) })(d) } } function Ml(t, e) { for (var n = [], l = 2; l < arguments.length; l++) n[l - 2] = arguments[l]; if (e === !0) { t(); return } if (e !== !1) { var i = new Zn({ next: function() { i.unsubscribe(), t() } }); return Te(e.apply(void 0, Ze([], K(n)))).subscribe(i) } } function G2(t, e) { return Oe(function(n, l) { var i = null , o = 0 , r = !1 , c = function() { return r && !i && l.complete() }; n.subscribe(Me(l, function(a) { i == null || i.unsubscribe(); var d = 0 , s = o++; Te(t(a, s)).subscribe(i = Me(l, function(u) { return l.next(e ? e(a, u, s, d++) : u) }, function() { i = null, c() })) }, function() { r = !0, c() })) }) } var X2 = ["input", "select", "textarea"] , Tl = function(t, e) { return function(n, l) { var i, o, r, c = t.pageUrlAllowlist, a = t.shouldTrackEventResolver, d = (o = (i = l == null ? void 0 : l.tagName) === null || i === void 0 ? void 0 : i.toLowerCase) === null || o === void 0 ? void 0 : o.call(i); if (!d) return !1; if (a) return a(n, l); if (!R2(window.location.href, c)) return !1; var s = String(l == null ? void 0 : l.getAttribute("type")) || ""; if (typeof s == "string") switch (s.toLowerCase()) { case "hidden": return !1; case "password": return !1 } if (e) { var u = e.some(function(g) { var V; return !!(!((V = l == null ? void 0 : l.matches) === null || V === void 0) && V.call(l, g)) }); if (!u) return !1 } switch (d) { case "input": case "select": case "textarea": return n === "change" || n === "click"; default: { var b = (r = window == null ? void 0 : window.getComputedStyle) === null || r === void 0 ? void 0 : r.call(window, l); return b && b.getPropertyValue("cursor") === "pointer" && n === "click" ? !0 : n === "click" } } } } , Gd = function(t) { if (t == null) return !1; if (typeof t == "string") { var e = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/; if (e.test((t || "").replace(/[- ]/g, ""))) return !1; var n = /(^\d{3}-?\d{2}-?\d{4}$)/; if (n.test(t)) return !1 } return !0 } , I2 = function(t) { return !!t && t.nodeType === 3 } , Xd = function(t) { var e, n, l, i = (n = (e = t == null ? void 0 : t.tagName) === null || e === void 0 ? void 0 : e.toLowerCase) === null || n === void 0 ? void 0 : n.call(e), o = t instanceof HTMLElement ? ((l = t.getAttribute("contenteditable")) === null || l === void 0 ? void 0 : l.toLowerCase()) === "true" : !1; return !X2.includes(i) && !o } , ji = function(t) { var e = ""; return Xd(t) && t.childNodes && t.childNodes.length && t.childNodes.forEach(function(n) { var l = ""; I2(n) ? n.textContent && (l = n.textContent) : l = ji(n), e += l.split(/(\s+)/).filter(Gd).join("").replace(/[\r\n]/g, " ").replace(/[ ]+/g, " ").substring(0, 255) }), e } , R2 = function(t, e) { return !e || !e.length ? !0 : e.some(function(n) { return typeof n == "string" ? t === n : t.match(n) }) } , E2 = function(t, e) { return t.getAttributeNames().reduce(function(n, l) { if (l.startsWith(e)) { var i = l.replace(e, "") , o = t.getAttribute(l); i && (n[i] = o || "") } return n }, {}) } , C2 = function(t) { return t == null || typeof t == "object" && Object.keys(t).length === 0 || typeof t == "string" && t.trim().length === 0 } , Id = function(t) { return Object.keys(t).reduce(function(e, n) { var l = t[n]; return C2(l) || (e[n] = l), e }, {}) } , Rd = function(t) { var e = t.parentElement; if (!e) return ""; var n; try { n = e.querySelector(":scope>span,h1,h2,h3,h4,h5,h6") } catch { n = null } if (n) { var l = n.textContent || ""; return Gd(l) ? l : "" } return Rd(e) } , _i = function(t, e) { return t ? e.some(function(n) { var l; return (l = t == null ? void 0 : t.matches) === null || l === void 0 ? void 0 : l.call(t, n) }) ? t : _i(t == null ? void 0 : t.parentElement, e) : null } , y2 = function(t) { var e, n, l; if (!t) return {}; var i = (l = (n = t == null ? void 0 : t.tagName) === null || n === void 0 ? void 0 : n.toLowerCase) === null || l === void 0 ? void 0 : l.call(n) , o = (e = {}, e[Pa] = i, e[Oa] = ji(t), e[$a] = window.location.href.split("?")[0], e); return Id(o) } , S2 = function(t) { return new Promise(function(e, n) { var l; try { var i = document.createElement("script"); i.type = "text/javascript", i.async = !0, i.src = t, i.addEventListener("load", function() { e({ status: !0 }) }, { once: !0 }), i.addEventListener("error", function() { n({ status: !1, message: "Failed to load the script ".concat(t) }) }), (l = document.head) === null || l === void 0 || l.appendChild(i) } catch (o) { n(o) } } ) }; function W2() { return "".concat(Date.now(), "-").concat(Math.random().toString(36).substr(2, 9)) } var Pi = function(t) { return !(t.event.target === null || !t.closestTrackedAncestor) } , v2 = function() { function t(e) { var n = e === void 0 ? {} : e , l = n.origin , i = l === void 0 ? Hn : l , o = this; this.endpoint = Hn, this.requestCallbacks = {}, this.onSelect = function(r) { o.notify({ action: "element-selected", data: r }) } , this.onTrack = function(r, c) { r === "selector-mode-changed" ? o.notify({ action: "track-selector-mode-changed", data: c }) : r === "selector-moved" && o.notify({ action: "track-selector-moved", data: c }) } , this.endpoint = i } return t.prototype.notify = function(e) { var n, l, i, o; (l = (n = this.logger) === null || n === void 0 ? void 0 : n.debug) === null || l === void 0 || l.call(n, "Message sent: ", JSON.stringify(e)), (o = (i = window.opener) === null || i === void 0 ? void 0 : i.postMessage) === null || o === void 0 || o.call(i, e, this.endpoint) } , t.prototype.sendRequest = function(e, n, l) { var i = this; l === void 0 && (l = { timeout: 15e3 }); var o = W2() , r = { id: o, action: e, args: n } , c = new Promise(function(a, d) { i.requestCallbacks[o] = { resolve: a, reject: d }, i.notify(r), (l == null ? void 0 : l.timeout) > 0 && setTimeout(function() { d(new Error("".concat(e, " timed out (id: ").concat(o, ")"))), delete i.requestCallbacks[o] }, l.timeout) } ); return c } , t.prototype.handleResponse = function(e) { var n; if (!this.requestCallbacks[e.id]) { (n = this.logger) === null || n === void 0 || n.warn("No callback found for request id: ".concat(e.id)); return } this.requestCallbacks[e.id].resolve(e.responseData), delete this.requestCallbacks[e.id] } , t.prototype.setup = function(e) { var n = this , l = e === void 0 ? {} : e , i = l.logger , o = l.endpoint , r = l.isElementSelectable , c = l.cssSelectorAllowlist , a = l.actionClickAllowlist; this.logger = i, o && this.endpoint === Hn && (this.endpoint = o); var d = null; window.addEventListener("message", function(s) { var u, b, g, V, p; if ((b = (u = n.logger) === null || u === void 0 ? void 0 : u.debug) === null || b === void 0 || b.call(u, "Message received: ", JSON.stringify(s)), n.endpoint === s.origin) { var X = s == null ? void 0 : s.data , Z = X == null ? void 0 : X.action; if (Z) if ("id"in X) (V = (g = n.logger) === null || g === void 0 ? void 0 : g.debug) === null || V === void 0 || V.call(g, "Received Response to previous request: ", JSON.stringify(s)), n.handleResponse(X); else if (Z === "ping") n.notify({ action: "pong" }); else if (Z === "initialize-visual-tagging-selector") { var f = X == null ? void 0 : X.data; S2(pV).then(function() { var G; d = (G = window == null ? void 0 : window.amplitudeVisualTaggingSelector) === null || G === void 0 ? void 0 : G.call(window, { getEventTagProps: y2, isElementSelectable: function(C) { return r ? r((f == null ? void 0 : f.actionType) || "click", C) : !0 }, onTrack: n.onTrack, onSelect: n.onSelect, visualHighlightClass: GV, messenger: n, cssSelectorAllowlist: c, actionClickAllowlist: a }), n.notify({ action: "selector-loaded" }) }).catch(function() { var G; (G = n.logger) === null || G === void 0 || G.warn("Failed to initialize visual tagging selector") }) } else Z === "close-visual-tagging-selector" && ((p = d == null ? void 0 : d.close) === null || p === void 0 || p.call(d)) } }), this.notify({ action: "page-loaded" }) } , t }() , B2 = ["id", "class", "style", "value", "onclick", "onchange", "oninput", "onblur", "onsubmit", "onfocus", "onkeydown", "onkeyup", "onkeypress", "data-reactid", "data-react-checksum", "data-reactroot"] , N2 = ["type"] , F2 = ["svg", "path", "g"] , Y2 = ["password", "hidden"] , U2 = 128 , J2 = 1024; function x2(t) { var e, n, l, i, o, r; if (t === null) return null; var c = String(t.tagName).toLowerCase() , a = { tag: c } , d = Array.from((i = (l = t.parentElement) === null || l === void 0 ? void 0 : l.children) !== null && i !== void 0 ? i : []); d.length && (a.index = d.indexOf(t), a.indexOfType = d.filter(function(C) { return C.tagName === t.tagName }).indexOf(t)); var s = (r = (o = t.previousElementSibling) === null || o === void 0 ? void 0 : o.tagName) === null || r === void 0 ? void 0 : r.toLowerCase(); s && (a.prevSib = String(s)); var u = t.getAttribute("id"); u && (a.id = String(u)); var b = Array.from(t.classList); b.length && (a.classes = b); var g = {} , V = Array.from(t.attributes) , p = V.filter(function(C) { return !B2.includes(C.name) }) , X = !Xd(t); if (!Y2.includes(String(t.getAttribute("type"))) && !F2.includes(c)) try { for (var Z = ce(p), f = Z.next(); !f.done; f = Z.next()) { var G = f.value; X && !N2.includes(G.name) || (g[G.name] = String(G.value).substring(0, U2)) } } catch (C) { e = { error: C } } finally { try { f && !f.done && (n = Z.return) && n.call(Z) } finally { if (e) throw e.error } } return Object.keys(g).length && (a.attrs = g), a } function w2(t) { var e = []; if (!t) return e; e.push(t); for (var n = t.parentElement; n && n.tagName !== "HTML"; ) e.push(n), n = n.parentElement; return e } var k2 = function(t) { var e = []; if (!t) return []; var n = w2(t); return e = z2(n.map(function(l) { return x2(l) }), J2), e }; function z2(t, e) { for (var n = 0, l = 0; l < t.length; l++) { var i = t[l]; if (i === null) n += 4; else { var o = jn(i); n += o ? Array.from(o).length : 4 } if (n > e) return t.slice(0, l) } return t } function jn(t, e) { e === void 0 && (e = !1); try { if (t == null) return e ? "None" : null; if (typeof t == "string") return e ? (t = t.replace(/\\/g, "\\\\").replace(/\n/g, "\\n").replace(/\t/g, "\\t").replace(/\r/g, "\\r"), t.includes('"') ? "'".concat(t, "'") : t.includes("'") ? '"'.concat(t.replace(/'/g, "\\'"), '"') : "'".concat(t, "'")) : t; if (typeof t == "boolean") return t ? "True" : "False"; if (Array.isArray(t)) { var n = t.map(function(o) { return jn(o, !0) }); return "[".concat(n.join(", "), "]") } else if (typeof t == "object") { var l = Object.entries(t).filter(function(o) { var r = K(o, 1) , c = r[0]; return c != null }).map(function(o) { var r = K(o, 2) , c = r[0] , a = r[1]; return "".concat(String(jn(c, !0)), ": ").concat(String(jn(a, !0))) }) , i = "{".concat(l.join(", "), "}"); return i.includes("\\'") && (i = i.replace(/'/g, "'").replace(/'/g, "\\'")), i } return t.toString() } catch { return null } } var Q2 = 5; function K2(t) { var e = t.amplitude , n = t.allObservables , l = t.options , i = t.shouldTrackEvent , o = n.clickObservable , r = o.pipe(p2(), bt(function(s) { var u = K(s, 2) , b = u[0] , g = u[1] , V = b.event.target !== g.event.target , p = Math.abs(g.event.screenX - b.event.screenX) <= 20 && Math.abs(g.event.screenY - b.event.screenY) <= 20; return V && !p })) , c = o.pipe(m2(l.debounceTime), ct(function() { return "timeout" })) , a = fd(r, c) , d = o.pipe(f2(0), bt(Pi), bt(function(s) { return i("click", s.closestTrackedAncestor) }), V2(a)); return d.subscribe(function(s) { var u, b, g = (s.length >= Q2, ri); try { for (var V = ce(s), p = V.next(); !p.done; p = V.next()) { var X = p.value; e == null || e.track(g, X.targetElementProperties) } } catch (Z) { u = { error: Z } } finally { try { p && !p.done && (b = V.return) && b.call(V) } finally { if (u) throw u.error } } }) } function L2(t) { var e = t.amplitude , n = t.allObservables , l = t.getEventProperties , i = t.shouldTrackEvent , o = n.changeObservable , r = o.pipe(bt(Pi), bt(function(c) { return i("change", c.closestTrackedAncestor) })); return r.subscribe(function(c) { e == null || e.track(iV, l("change", c.closestTrackedAncestor)) }) } function M2(t) { var e = t.amplitude , n = t.allObservables , l = t.options , i = t.getEventProperties , o = t.shouldTrackEvent , r = t.shouldTrackActionClick , c = n.clickObservable , a = n.mutationObservable , d = n.navigateObservable , s = c.pipe(bt(function(V) { return !o("click", V.closestTrackedAncestor) }), ct(function(V) { var p = _i(V.event.target, l.actionClickAllowlist); return V.closestTrackedAncestor = p, V.closestTrackedAncestor !== null && (V.targetElementProperties = i(V.type, V.closestTrackedAncestor)), V }), bt(Pi), bt(function(V) { return r("click", V.closestTrackedAncestor) })) , u = [a]; d && u.push(d); var b = fd.apply(void 0, Ze([], K(u), !1)) , g = s.pipe(G2(function(V) { return b.pipe(pd(1), t2({ first: 500, with: function() { return Hi } }), ct(function() { return V })) })); return g.subscribe(function(V) { e == null || e.track(ri, i("click", V.closestTrackedAncestor)) }) } var zt; (function(t) { t.ClickObservable = "clickObservable", t.ChangeObservable = "changeObservable", t.NavigateObservable = "navigateObservable", t.MutationObservable = "mutationObservable" } )(zt || (zt = {})); function T2(t) { return t.type === "click" || t.type === "change" } var H2 = function(t) { var e, n, l; t === void 0 && (t = {}); var i = t.dataAttributePrefix , o = i === void 0 ? H0 : i , r = t.visualTaggingOptions , c = r === void 0 ? { enabled: !0, messenger: new v2 } : r; t.cssSelectorAllowlist = (e = t.cssSelectorAllowlist) !== null && e !== void 0 ? e : T0, t.actionClickAllowlist = (n = t.actionClickAllowlist) !== null && n !== void 0 ? n : D0, t.debounceTime = (l = t.debounceTime) !== null && l !== void 0 ? l : 0; var a = lV , d = "enrichment" , s = [] , u = function() { var Z, f = rn(document, "click", { capture: !0 }).pipe(ct(function(y) { return g(y, "click") }), xn()), G = rn(document, "change", { capture: !0 }).pipe(ct(function(y) { return g(y, "change") }), xn()), C; window.navigation && (C = rn(window.navigation, "navigate").pipe(ct(function(y) { return g(y, "navigate") }), xn())); var E = new ye(function(y) { var A = new MutationObserver(function(F) { y.next(F) } ); return A.observe(document.body, { childList: !0, attributes: !0, characterData: !0, subtree: !0 }), function() { return A.disconnect() } } ).pipe(ct(function(y) { return g(y, "mutation") }), xn()); return Z = {}, Z[zt.ClickObservable] = f, Z[zt.ChangeObservable] = G, Z[zt.NavigateObservable] = C, Z[zt.MutationObservable] = E, Z } , b = function(Z, f) { var G, C, E, y = (E = (C = f == null ? void 0 : f.tagName) === null || C === void 0 ? void 0 : C.toLowerCase) === null || E === void 0 ? void 0 : E.call(C), A = typeof f.getBoundingClientRect == "function" ? f.getBoundingClientRect() : { left: null, top: null }, F = f.getAttribute("aria-label"), w = E2(f, o), _ = Rd(f), D = (G = {}, G[oV] = f.getAttribute("id") || "", G[rV] = f.getAttribute("class"), G[cV] = k2(f), G[Pa] = y, G[Oa] = ji(f), G[dV] = A.left == null ? null : Math.round(A.left), G[sV] = A.top == null ? null : Math.round(A.top), G[uV] = F, G[gV] = w, G[hV] = _, G[$a] = window.location.href.split("?")[0], G[bV] = typeof document < "u" && document.title || "", G[VV] = window.innerHeight, G[mV] = window.innerWidth, G); return y === "a" && Z === "click" && f instanceof HTMLAnchorElement && (D[aV] = f.href), Id(D) } , g = function(Z, f) { var G = { event: Z, timestamp: Date.now(), type: f }; if (T2(G) && G.event.target !== null) { var C = _i(G.event.target, t.cssSelectorAllowlist); return C && (G.closestTrackedAncestor = C, G.targetElementProperties = b(G.type, C)), G } return G } , V = function(Z, f) { return W(void 0, void 0, void 0, function() { var G, C, E, y, A, F, w, _, D, T; return S(this, function(Ve) { return typeof document > "u" ? [2] : (G = Tl(t, t.cssSelectorAllowlist), C = Tl(t, t.actionClickAllowlist), E = u(), y = K2({ allObservables: E, options: t, amplitude: f, shouldTrackEvent: G }), s.push(y), A = L2({ allObservables: E, getEventProperties: b, amplitude: f, shouldTrackEvent: G }), s.push(A), F = M2({ allObservables: E, options: t, getEventProperties: b, amplitude: f, shouldTrackEvent: G, shouldTrackActionClick: C }), s.push(F), (D = Z == null ? void 0 : Z.loggerProvider) === null || D === void 0 || D.log("".concat(a, " has been successfully added.")), window.opener && c.enabled && (w = t.cssSelectorAllowlist, _ = t.actionClickAllowlist, (T = c.messenger) === null || T === void 0 || T.setup(B(B({ logger: Z == null ? void 0 : Z.loggerProvider }, (Z == null ? void 0 : Z.serverZone) && { endpoint: fV[Z.serverZone] }), { isElementSelectable: Tl(t, Ze(Ze([], K(w), !1), K(_), !1)), cssSelectorAllowlist: w, actionClickAllowlist: _ }))), [2]) }) }) } , p = function(Z) { return W(void 0, void 0, void 0, function() { return S(this, function(f) { return [2, Z] }) }) } , X = function() { return W(void 0, void 0, void 0, function() { var Z, f, G, C, E; return S(this, function(y) { try { for (Z = ce(s), f = Z.next(); !f.done; f = Z.next()) G = f.value, G.unsubscribe() } catch (A) { C = { error: A } } finally { try { f && !f.done && (E = Z.return) && E.call(Z) } finally { if (C) throw C.error } } return [2] }) }) }; return { name: a, type: d, setup: V, execute: p, teardown: X } } , D2 = "@amplitude/plugin-network-capture-browser" , j2 = "[Amplitude] Network Request" , Ed = "500-599"; function _n(t, e) { var n = e.replace(/[-[\]{}()+?.,\\^$|#\s]/g, "\\$&") , l = "^" + n.replace(/\*/g, ".*") + "$" , i = new RegExp(l); return i.test(t) } function Cd(t, e) { var n, l, i = e.split(","); try { for (var o = ce(i), r = o.next(); !r.done; r = o.next()) { var c = r.value , a = K(c.split("-").map(Number), 2) , d = a[0] , s = a[1]; if (t === d && s === void 0 || t >= d && t <= s) return !0 } } catch (u) { n = { error: u } } finally { try { r && !r.done && (l = o.return) && l.call(o) } finally { if (n) throw n.error } } return !1 } function _2(t, e, n) { if (!(t.hosts && !t.hosts.find(function(i) { return _n(e, i) }))) { if (n || n === 0) { var l = t.statusCodeRange || Ed; if (!Cd(n, l)) return !1 } return !0 } } function yd(t) { var e; if (t) try { var n = (e = Ce()) === null || e === void 0 ? void 0 : e.location.href , l = new URL(t,n) , i = l.searchParams.toString() , o = l.hash.replace("#", "") , r = l.href , c = l.host; l.hash = "", l.search = ""; var a = l.href; return { query: i, fragment: o, href: r, hrefWithoutQueryOrHash: a, host: c } } catch { return } } function P2(t, e) { var n; e === void 0 && (e = {}); var l = yd(t.url); if (!l) return !1; var i = l.host; if (e.ignoreAmplitudeRequests !== !1 && (_n(i, "*.amplitude.com") || _n(i, "amplitude.com")) || !((n = e.ignoreHosts) === null || n === void 0) && n.find(function(r) { return _n(i, r) }) || !e.captureRules && t.status !== void 0 && !Cd(t.status, Ed)) return !1; if (e.captureRules) { var o; if (Ze([], K(e.captureRules), !1).reverse().find(function(r) { return o = _2(r, i, t.status), o !== void 0 }), !o) return !1 } return !0 } function O2(t) { var e = t.allObservables , n = t.networkTrackingOptions , l = t.amplitude , i = e.networkObservable , o = i.pipe(bt(function(r) { return P2(r.event, n) })); return o.subscribe(function(r) { var c, a, d, s = r.event, u = yd(s.url); if (u) { var b = (a = s.responseWrapper) === null || a === void 0 ? void 0 : a.bodySize , g = (d = s.requestWrapper) === null || d === void 0 ? void 0 : d.bodySize , V = (c = {}, c["[Amplitude] URL"] = u.hrefWithoutQueryOrHash, c["[Amplitude] URL Query"] = u.query, c["[Amplitude] URL Fragment"] = u.fragment, c["[Amplitude] Request Method"] = s.method, c["[Amplitude] Status Code"] = s.status, c["[Amplitude] Start Time"] = s.startTime, c["[Amplitude] Completion Time"] = s.endTime, c["[Amplitude] Duration"] = s.duration, c["[Amplitude] Request Body Size"] = g, c["[Amplitude] Response Body Size"] = b, c["[Amplitude] Request Type"] = s.type, c); l == null || l.track(j2, V) } }) } var ai; (function(t) { t.NetworkObservable = "networkObservable" } )(ai || (ai = {})); var $2 = function(t) { t === void 0 && (t = {}); var e = D2, n = "enrichment", l, i = [], o = function(s, u) { var b = { event: s, timestamp: Date.now(), type: u }; return b }, r = function() { var s, u = new ye(function(b) { var g = new eb(function(V) { var p = o(V, "network"); b.next(p) } ); return Ar.subscribe(g, l), function() { Ar.unsubscribe(g) } } ); return s = {}, s[ai.NetworkObservable] = u, s }, c = function(s, u) { return W(void 0, void 0, void 0, function() { var b, g; return S(this, function(V) { return typeof document > "u" ? [2] : (b = r(), g = O2({ allObservables: b, networkTrackingOptions: t, amplitude: u }), i.push(g), l = s == null ? void 0 : s.loggerProvider, l == null || l.log("".concat(e, " has been successfully added.")), [2]) }) }) }, a = function(s) { return W(void 0, void 0, void 0, function() { return S(this, function(u) { return [2, s] }) }) }, d = function() { return W(void 0, void 0, void 0, function() { var s, u, b, g, V; return S(this, function(p) { try { for (s = ce(i), u = s.next(); !u.done; u = s.next()) b = u.value, b.unsubscribe() } catch (X) { g = { error: X } } finally { try { u && !u.done && (V = s.return) && V.call(s) } finally { if (g) throw g.error } } return [2] }) }) }; return { name: e, type: n, setup: c, execute: a, teardown: d } } , q2 = "utm_campaign" , em = "utm_content" , tm = "utm_id" , nm = "utm_medium" , lm = "utm_source" , im = "utm_term" , Dr = "dclid" , jr = "fbclid" , _r = "gbraid" , Pr = "gclid" , Or = "ko_click_id" , $r = "li_fat_id" , qr = "msclkid" , ec = "rtd_cid" , tc = "ttclid" , nc = "twclid" , lc = "wbraid" , Oi = { utm_campaign: void 0, utm_content: void 0, utm_id: void 0, utm_medium: void 0, utm_source: void 0, utm_term: void 0, referrer: void 0, referring_domain: void 0, dclid: void 0, gbraid: void 0, gclid: void 0, fbclid: void 0, ko_click_id: void 0, li_fat_id: void 0, msclkid: void 0, rtd_cid: void 0, ttclid: void 0, twclid: void 0, wbraid: void 0 } , ic = function(t) { var e = t.split("."); return e.length <= 2 ? t : e.slice(e.length - 2, e.length).join(".") } , om = function(t) { return Object.values(t).every(function(e) { return !e }) } , rm = function(t, e, n, l, i) { i === void 0 && (i = !0), t.referrer; var o = t.referring_domain , r = li(t, ["referrer", "referring_domain"]) , c = e || {}; c.referrer; var a = c.referring_domain , d = li(c, ["referrer", "referring_domain"]); if (cm(n.excludeReferrers, t.referring_domain)) return l.debug("This is not a new campaign because ".concat(t.referring_domain, " is in the exclude referrer list.")), !1; if (!i && om(t) && e) return l.debug("This is not a new campaign because this is a direct traffic in the same session."), !1; var s = JSON.stringify(r) !== JSON.stringify(d) , u = ic(o || "") !== ic(a || "") , b = !e || s || u; return b ? l.debug("This is a new campaign. An $identify event will be sent.") : l.debug("This is not a new campaign because it's the same as the previous one."), b } , cm = function(t, e) { return t === void 0 && (t = []), e === void 0 && (e = ""), t.some(function(n) { return n instanceof RegExp ? n.test(e) : n === e }) } , am = function(t, e) { var n = B(B({}, Oi), t) , l = Object.entries(n).reduce(function(i, o) { var r, c = K(o, 2), a = c[0], d = c[1]; return i.setOnce("initial_".concat(a), (r = d ?? e.initialEmptyValue) !== null && r !== void 0 ? r : "EMPTY"), d ? i.set(a, d) : i.unset(a) }, new _t); return Na(l) } , dm = function(t) { var e = t; return e ? (e.startsWith(".") && (e = e.substring(1)), [new RegExp("".concat(e.replace(".", "\\."), "$"))]) : [] } , sm = function() { function t() {} return t.prototype.parse = function() { return W(this, void 0, void 0, function() { return S(this, function(e) { return [2, B(B(B(B({}, Oi), this.getUtmParam()), this.getReferrer()), this.getClickIds())] }) }) } , t.prototype.getUtmParam = function() { var e = ol() , n = e[q2] , l = e[em] , i = e[tm] , o = e[nm] , r = e[lm] , c = e[im]; return { utm_campaign: n, utm_content: l, utm_id: i, utm_medium: o, utm_source: r, utm_term: c } } , t.prototype.getReferrer = function() { var e, n, l = { referrer: void 0, referring_domain: void 0 }; try { l.referrer = document.referrer || void 0, l.referring_domain = (n = (e = l.referrer) === null || e === void 0 ? void 0 : e.split("/")[2]) !== null && n !== void 0 ? n : void 0 } catch {} return l } , t.prototype.getClickIds = function() { var e, n = ol(); return e = {}, e[Dr] = n[Dr], e[jr] = n[jr], e[_r] = n[_r], e[Pr] = n[Pr], e[Or] = n[Or], e[$r] = n[$r], e[qr] = n[qr], e[ec] = n[ec], e[tc] = n[tc], e[nc] = n[nc], e[lc] = n[lc], e } , t }() , um = function() { function t(e, n) { var l; this.shouldTrackNewCampaign = !1, this.options = B({ initialEmptyValue: "EMPTY", resetSessionOnNewCampaign: !1, excludeReferrers: dm((l = n.cookieOptions) === null || l === void 0 ? void 0 : l.domain) }, e), this.storage = n.cookieStorage, this.storageKey = K0(n.apiKey, "MKTG"), this.currentCampaign = Oi, this.sessionTimeout = n.sessionTimeout, this.lastEventTime = n.lastEventTime, this.logger = n.loggerProvider, n.loggerProvider.log("Installing web attribution tracking.") } return t.prototype.init = function() { return W(this, void 0, void 0, function() { var e, n; return S(this, function(l) { switch (l.label) { case 0: return [4, this.fetchCampaign()]; case 1: return n = K.apply(void 0, [l.sent(), 2]), this.currentCampaign = n[0], this.previousCampaign = n[1], e = this.lastEventTime ? Ja(this.sessionTimeout, this.lastEventTime) : !0, rm(this.currentCampaign, this.previousCampaign, this.options, this.logger, e) ? (this.shouldTrackNewCampaign = !0, [4, this.storage.set(this.storageKey, this.currentCampaign)]) : [3, 3]; case 2: l.sent(), l.label = 3; case 3: return [2] } }) }) } , t.prototype.fetchCampaign = function() { return W(this, void 0, void 0, function() { return S(this, function(e) { switch (e.label) { case 0: return [4, Promise.all([new sm().parse(), this.storage.get(this.storageKey)])]; case 1: return [2, e.sent()] } }) }) } , t.prototype.generateCampaignEvent = function(e) { this.shouldTrackNewCampaign = !1; var n = am(this.currentCampaign, this.options); return e && (n.event_id = e), n } , t.prototype.shouldSetSessionIdOnNewCampaign = function() { return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign } , t }() , gm = function(t) { Fe(e, t); function e() { return t !== null && t.apply(this, arguments) || this } return e.prototype.init = function(n, l, i) { n === void 0 && (n = ""); var o, r; return arguments.length > 2 ? (o = l, r = i) : typeof l == "string" ? (o = l, r = void 0) : (o = l == null ? void 0 : l.userId, r = l), xe(this._init(B(B({}, r), { userId: o, apiKey: n }))) } , e.prototype._init = function(n) { var l, i, o; return W(this, void 0, void 0, function() { var r, c, a, d, s, u, b = this; return S(this, function(g) { switch (g.label) { case 0: return this.initializing ? [2] : (this.initializing = !0, [4, Cb(n.apiKey, n, this)]); case 1: return r = g.sent(), r.fetchRemoteConfig ? [4, nV(r)] : [3, 4]; case 2: return c = g.sent(), [4, c.generateJoinedConfig()]; case 3: r = g.sent(), g.label = 4; case 4: return [4, t.prototype._init.call(this, r)]; case 5: return g.sent(), this.logBrowserOptions(r), za(this.config.defaultTracking) ? (a = cb(this.config), this.webAttribution = new um(a,this.config), [4, this.webAttribution.init()]) : [3, 7]; case 6: g.sent(), g.label = 7; case 7: return d = ol(), s = Number.isNaN(Number(d.ampSessionId)) ? void 0 : Number(d.ampSessionId), this.setSessionId((o = (i = (l = n.sessionId) !== null && l !== void 0 ? l : s) !== null && i !== void 0 ? i : this.config.sessionId) !== null && o !== void 0 ? o : Date.now()), u = An(n.instanceName), u.identityStore.setIdentity({ userId: this.config.userId, deviceId: this.config.deviceId }), this.config.offline === M0 ? [3, 9] : [4, this.add(Tb()).promise]; case 8: g.sent(), g.label = 9; case 9: return [4, this.add(new R0).promise]; case 10: return g.sent(), [4, this.add(new ub).promise]; case 11: return g.sent(), [4, this.add(new U0).promise]; case 12: return g.sent(), Mb(this.config), nb(this.config.defaultTracking) ? (this.config.loggerProvider.debug("Adding file download tracking plugin"), [4, this.add(Lb()).promise]) : [3, 14]; case 13: g.sent(), g.label = 14; case 14: return lb(this.config.defaultTracking) ? (this.config.loggerProvider.debug("Adding form interaction plugin"), [4, this.add(Kb()).promise]) : [3, 16]; case 15: g.sent(), g.label = 16; case 16: return Qa(this.config.defaultTracking) ? (this.config.loggerProvider.debug("Adding page view tracking plugin"), [4, this.add(wb(rb(this.config))).promise]) : [3, 18]; case 17: g.sent(), g.label = 18; case 18: return La(this.config.autocapture) ? (this.config.loggerProvider.debug("Adding user interactions plugin (autocapture plugin)"), [4, this.add(H2(ib(this.config))).promise]) : [3, 20]; case 19: g.sent(), g.label = 20; case 20: return Ka(this.config.autocapture) ? (this.config.loggerProvider.debug("Adding network tracking plugin"), [4, this.add($2(ob(this.config))).promise]) : [3, 22]; case 21: g.sent(), g.label = 22; case 22: return this.initializing = !1, [4, this.runQueuedFunctions("dispatchQ")]; case 23: return g.sent(), u.eventBridge.setEventReceiver(function(V) { b.track(V.eventType, V.eventProperties) }), [2] } }) }) } , e.prototype.getUserId = function() { var n; return (n = this.config) === null || n === void 0 ? void 0 : n.userId } , e.prototype.setUserId = function(n) { if (!this.config) { this.q.push(this.setUserId.bind(this, n)); return } this.config.loggerProvider.debug("function setUserId: ", n), (n !== this.config.userId || n === void 0) && (this.config.userId = n, this.timeline.onIdentityChanged({ userId: n }), F0(n, this.config.instanceName)) } , e.prototype.getDeviceId = function() { var n; return (n = this.config) === null || n === void 0 ? void 0 : n.deviceId } , e.prototype.setDeviceId = function(n) { if (!this.config) { this.q.push(this.setDeviceId.bind(this, n)); return } this.config.loggerProvider.debug("function setDeviceId: ", n), n !== this.config.deviceId && (this.config.deviceId = n, this.timeline.onIdentityChanged({ deviceId: n }), Y0(n, this.config.instanceName)) } , e.prototype.reset = function() { this.setDeviceId(Ft()), this.setUserId(void 0) } , e.prototype.getSessionId = function() { var n; return (n = this.config) === null || n === void 0 ? void 0 : n.sessionId } , e.prototype.setSessionId = function(n) { var l, i = []; if (!this.config) return this.q.push(this.setSessionId.bind(this, n)), xe(Promise.resolve()); if (n === this.config.sessionId) return xe(Promise.resolve()); this.config.loggerProvider.debug("function setSessionId: ", n); var o = this.getSessionId(); o !== n && this.timeline.onSessionIdChanged(n); var r = this.config.lastEventTime , c = (l = this.config.lastEventId) !== null && l !== void 0 ? l : -1; this.config.sessionId = n, this.config.lastEventTime = void 0, this.config.pageCounter = 0, Zr(this.config.defaultTracking) && (o && r && i.push(this.track(Gr, void 0, { device_id: this.previousSessionDeviceId, event_id: ++c, session_id: o, time: r + 1, user_id: this.previousSessionUserId }).promise), this.config.lastEventTime = this.config.sessionId); var a = this.trackCampaignEventIfNeeded(++c, i); return Zr(this.config.defaultTracking) && i.push(this.track(pr, void 0, { event_id: a ? ++c : c, session_id: this.config.sessionId, time: this.config.lastEventTime }).promise), this.previousSessionDeviceId = this.config.deviceId, this.previousSessionUserId = this.config.userId, xe(Promise.all(i)) } , e.prototype.extendSession = function() { if (!this.config) { this.q.push(this.extendSession.bind(this)); return } this.config.lastEventTime = Date.now() } , e.prototype.setTransport = function(n) { if (!this.config) { this.q.push(this.setTransport.bind(this, n)); return } this.config.transportProvider = Da(n) } , e.prototype.identify = function(n, l) { if (wl(n)) { var i = n._q; n._q = [], n = xl(new _t, i) } return l != null && l.user_id && this.setUserId(l.user_id), l != null && l.device_id && this.setDeviceId(l.device_id), t.prototype.identify.call(this, n, l) } , e.prototype.groupIdentify = function(n, l, i, o) { if (wl(i)) { var r = i._q; i._q = [], i = xl(new _t, r) } return t.prototype.groupIdentify.call(this, n, l, i, o) } , e.prototype.revenue = function(n, l) { if (wl(n)) { var i = n._q; n._q = [], n = xl(new f0, i) } return t.prototype.revenue.call(this, n, l) } , e.prototype.trackCampaignEventIfNeeded = function(n, l) { if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) return !1; var i = this.webAttribution.generateCampaignEvent(n); return l ? l.push(this.track(i).promise) : this.track(i), this.config.loggerProvider.log("Tracking attribution."), !0 } , e.prototype.process = function(n) { return W(this, void 0, void 0, function() { var l, i, o; return S(this, function(r) { return l = Date.now(), i = Ja(this.config.sessionTimeout, this.config.lastEventTime), o = this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign(), n.event_type !== pr && n.event_type !== Gr && (!n.session_id || n.session_id === this.getSessionId()) && (i || o ? (this.setSessionId(l), o && this.config.loggerProvider.log("Created a new session for new campaign.")) : i || this.trackCampaignEventIfNeeded()), [2, t.prototype.process.call(this, n)] }) }) } , e.prototype.logBrowserOptions = function(n) { try { var l = B(B({}, n), { apiKey: n.apiKey.substring(0, 10) + "********" }); this.config.loggerProvider.debug("Initialized Amplitude with BrowserConfig:", JSON.stringify(l)) } catch (i) { this.config.loggerProvider.error("Error logging browser config", i) } } , e }(Z0) , hm = function() { var t = new gm; return { init: ge(t.init.bind(t), "init", se(t), ue(t, ["config"])), add: ge(t.add.bind(t), "add", se(t), ue(t, ["config.apiKey", "timeline.plugins"])), remove: ge(t.remove.bind(t), "remove", se(t), ue(t, ["config.apiKey", "timeline.plugins"])), track: ge(t.track.bind(t), "track", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), logEvent: ge(t.logEvent.bind(t), "logEvent", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), identify: ge(t.identify.bind(t), "identify", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), groupIdentify: ge(t.groupIdentify.bind(t), "groupIdentify", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), setGroup: ge(t.setGroup.bind(t), "setGroup", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), revenue: ge(t.revenue.bind(t), "revenue", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), flush: ge(t.flush.bind(t), "flush", se(t), ue(t, ["config.apiKey", "timeline.queue.length"])), getUserId: ge(t.getUserId.bind(t), "getUserId", se(t), ue(t, ["config", "config.userId"])), setUserId: ge(t.setUserId.bind(t), "setUserId", se(t), ue(t, ["config", "config.userId"])), getDeviceId: ge(t.getDeviceId.bind(t), "getDeviceId", se(t), ue(t, ["config", "config.deviceId"])), setDeviceId: ge(t.setDeviceId.bind(t), "setDeviceId", se(t), ue(t, ["config", "config.deviceId"])), reset: ge(t.reset.bind(t), "reset", se(t), ue(t, ["config", "config.userId", "config.deviceId"])), getSessionId: ge(t.getSessionId.bind(t), "getSessionId", se(t), ue(t, ["config"])), setSessionId: ge(t.setSessionId.bind(t), "setSessionId", se(t), ue(t, ["config"])), extendSession: ge(t.extendSession.bind(t), "extendSession", se(t), ue(t, ["config"])), setOptOut: ge(t.setOptOut.bind(t), "setOptOut", se(t), ue(t, ["config"])), setTransport: ge(t.setTransport.bind(t), "setTransport", se(t), ue(t, ["config"])) } }; const Ot = hm(); var bm = Ot.add , oc = Ot.identify , Vm = Ot.init , mm = Ot.reset , Am = Ot.setUserId , rc = Ot.track; const cn = class cn { constructor() { this.inited = !1, this.storageUserId = null, this.storageUserProperties = {}, this.experiment = null } static createPageViewTrackingEnrichment() { return { name: "page-view-tracking-enrichment", type: "enrichment", setup: async () => {} , execute: async e => { if (e.event_properties && typeof e.event_properties == "object") for (const n of cn.PROPERTIES_TO_REMOVE) delete e.event_properties[n]; return e } } } init() { this.inited || _e.amplitudeKey && (this.inited = !0, bm(cn.createPageViewTrackingEnrichment()), Vm(_e.amplitudeKey, { transport: "beacon", autocapture: { elementInteractions: !0 } })) } reset() { this.inited = !1, this.storageUserId = null, this.storageUserProperties = {}, mm() } setUserId(e) { !e || this.storageUserId === e || (this.inited || this.init(), this.storageUserId = e, Am(e)) } trackOnce(e) { this.inited || this.init(), rc(e) } batchTrack(e) { this.inited || this.init(); for (const n of e) rc(n) } customUserProperties(e) { if (!e || Object.keys(e).length === 0) return; this.inited || this.init(); let n; this.storageUserProperties ? n = this.extractChangedValues(this.storageUserProperties, e) : n = e, this.storageUserProperties = e; const l = new _t; Object.entries(n).forEach( ([i,o]) => { l.set(i, typeof o == "number" ? `${o}` : o) } ), oc(l) } customUserPropertyOne(e, n) { if (!e || (this.inited || this.init(), this.storageUserProperties[e] === n)) return; this.storageUserProperties[e] = n; const l = new _t; l.set(e, n), oc(l) } extractChangedValues(e, n) { const l = {}; return Object.keys(n).forEach(i => { (!(i in e) || e[i] !== n[i]) && (l[i] = n[i]) } ), l } formatToAmplitude(e) { const {events: n, clientInfo: l} = e; return il("server", n.map(i => { const {eventName: o, extData: r} = i; return { event_type: o, event_properties: { ext_data: r, client_info: l } } } )) } } ; cn.PROPERTIES_TO_REMOVE = ["page_title", "[Amplitude] Page Title"]; let di = cn; const cc = new di; function at(t, e, n, l) { return new (n || (n = Promise))(function(i, o) { function r(d) { try { a(l.next(d)) } catch (s) { o(s) } } function c(d) { try { a(l.throw(d)) } catch (s) { o(s) } } function a(d) { var s; d.done ? i(d.value) : (s = d.value, s instanceof n ? s : new n(function(u) { u(s) } )).then(r, c) } a((l = l.apply(t, [])).next()) } ) } function dt(t, e) { var n, l, i, o, r = { label: 0, sent: function() { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: c(0), throw: c(1), return: c(2) }, typeof Symbol == "function" && (o[Symbol.iterator] = function() { return this } ), o; function c(a) { return function(d) { return function(s) { if (n) throw new TypeError("Generator is already executing."); for (; o && (o = 0, s[0] && (r = 0)), r; ) try { if (n = 1, l && (i = 2 & s[0] ? l.return : s[0] ? l.throw || ((i = l.return) && i.call(l), 0) : l.next) && !(i = i.call(l, s[1])).done) return i; switch (l = 0, i && (s = [2 & s[0], i.value]), s[0]) { case 0: case 1: i = s; break; case 4: return r.label++, { value: s[1], done: !1 }; case 5: r.label++, l = s[1], s = [0]; continue; case 7: s = r.ops.pop(), r.trys.pop(); continue; default: if (i = r.trys, !((i = i.length > 0 && i[i.length - 1]) || s[0] !== 6 && s[0] !== 2)) { r = 0; continue } if (s[0] === 3 && (!i || s[1] > i[0] && s[1] < i[3])) { r.label = s[1]; break } if (s[0] === 6 && r.label < i[1]) { r.label = i[1], i = s; break } if (i && r.label < i[2]) { r.label = i[2], r.ops.push(s); break } i[2] && r.ops.pop(), r.trys.pop(); continue } s = e.call(t, r) } catch (u) { s = [6, u], l = 0 } finally { n = i = 0 } if (5 & s[0]) throw s[1]; return { value: s[0] ? s[1] : void 0, done: !0 } }([a, d]) } } } var be = { exclude: [], include: [], logging: !0, timeout: 1e3 }; function Hl(t, e) { if (!["include", "exclude", "permissions_to_check", "retries", "timeout", "logging"].includes(t)) throw new Error("Unknown option " + t); if (["include", "exclude", "permissions_to_check"].includes(t) && (!Array.isArray(e) || !e.every(function(n) { return typeof n == "string" }))) throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings"); if (["retries", "timeout"].includes(t) && typeof e != "number") throw new Error("The value of retries must be a number"); be[t] = e } var Sd = {} , Zm = { timeout: "true" } , tt = function(t, e) { typeof window < "u" && (Sd[t] = e) } , fm = function() { return Object.fromEntries(Object.entries(Sd).filter(function(t) { var e, n = t[0]; return !(!((e = be == null ? void 0 : be.exclude) === null || e === void 0) && e.includes(n)) }).filter(function(t) { var e, n, l, i, o = t[0]; return !((e = be == null ? void 0 : be.include) === null || e === void 0) && e.some(function(r) { return r.includes(".") }) ? (n = be == null ? void 0 : be.include) === null || n === void 0 ? void 0 : n.some(function(r) { return r.startsWith(o) }) : ((l = be == null ? void 0 : be.include) === null || l === void 0 ? void 0 : l.length) === 0 || ((i = be == null ? void 0 : be.include) === null || i === void 0 ? void 0 : i.includes(o)) }).map(function(t) { return [t[0], (0, t[1])()] })) }; function wn(t) { return t ^= t >>> 16, t = Math.imul(t, 2246822507), t ^= t >>> 13, t = Math.imul(t, 3266489909), (t ^= t >>> 16) >>> 0 } var Re = new Uint32Array([597399067, 2869860233, 951274213, 2716044179]); function je(t, e) { return t << e | t >>> 32 - e } function $i(t, e) { var n; if (e === void 0 && (e = 0), e = e ? 0 | e : 0, typeof t == "string" && (n = t, t = new TextEncoder().encode(n).buffer), !(t instanceof ArrayBuffer)) throw new TypeError("Expected key to be ArrayBuffer or string"); var l = new Uint32Array([e, e, e, e]); (function(o, r) { for (var c = o.byteLength / 16 | 0, a = new Uint32Array(o,0,4 * c), d = 0; d < c; d++) { var s = a.subarray(4 * d, 4 * (d + 1)); s[0] = Math.imul(s[0], Re[0]), s[0] = je(s[0], 15), s[0] = Math.imul(s[0], Re[1]), r[0] = r[0] ^ s[0], r[0] = je(r[0], 19), r[0] = r[0] + r[1], r[0] = Math.imul(r[0], 5) + 1444728091, s[1] = Math.imul(s[1], Re[1]), s[1] = je(s[1], 16), s[1] = Math.imul(s[1], Re[2]), r[1] = r[1] ^ s[1], r[1] = je(r[1], 17), r[1] = r[1] + r[2], r[1] = Math.imul(r[1], 5) + 197830471, s[2] = Math.imul(s[2], Re[2]), s[2] = je(s[2], 17), s[2] = Math.imul(s[2], Re[3]), r[2] = r[2] ^ s[2], r[2] = je(r[2], 15), r[2] = r[2] + r[3], r[2] = Math.imul(r[2], 5) + 2530024501, s[3] = Math.imul(s[3], Re[3]), s[3] = je(s[3], 18), s[3] = Math.imul(s[3], Re[0]), r[3] = r[3] ^ s[3], r[3] = je(r[3], 13), r[3] = r[3] + r[0], r[3] = Math.imul(r[3], 5) + 850148119 } } )(t, l), function(o, r) { var c = o.byteLength / 16 | 0 , a = o.byteLength % 16 , d = new Uint32Array(4) , s = new Uint8Array(o,16 * c,a); switch (a) { case 15: d[3] = d[3] ^ s[14] << 16; case 14: d[3] = d[3] ^ s[13] << 8; case 13: d[3] = d[3] ^ s[12], d[3] = Math.imul(d[3], Re[3]), d[3] = je(d[3], 18), d[3] = Math.imul(d[3], Re[0]), r[3] = r[3] ^ d[3]; case 12: d[2] = d[2] ^ s[11] << 24; case 11: d[2] = d[2] ^ s[10] << 16; case 10: d[2] = d[2] ^ s[9] << 8; case 9: d[2] = d[2] ^ s[8], d[2] = Math.imul(d[2], Re[2]), d[2] = je(d[2], 17), d[2] = Math.imul(d[2], Re[3]), r[2] = r[2] ^ d[2]; case 8: d[1] = d[1] ^ s[7] << 24; case 7: d[1] = d[1] ^ s[6] << 16; case 6: d[1] = d[1] ^ s[5] << 8; case 5: d[1] = d[1] ^ s[4], d[1] = Math.imul(d[1], Re[1]), d[1] = je(d[1], 16), d[1] = Math.imul(d[1], Re[2]), r[1] = r[1] ^ d[1]; case 4: d[0] = d[0] ^ s[3] << 24; case 3: d[0] = d[0] ^ s[2] << 16; case 2: d[0] = d[0] ^ s[1] << 8; case 1: d[0] = d[0] ^ s[0], d[0] = Math.imul(d[0], Re[0]), d[0] = je(d[0], 15), d[0] = Math.imul(d[0], Re[1]), r[0] = r[0] ^ d[0] } }(t, l), function(o, r) { r[0] = r[0] ^ o.byteLength, r[1] = r[1] ^ o.byteLength, r[2] = r[2] ^ o.byteLength, r[3] = r[3] ^ o.byteLength, r[0] = r[0] + r[1] | 0, r[0] = r[0] + r[2] | 0, r[0] = r[0] + r[3] | 0, r[1] = r[1] + r[0] | 0, r[2] = r[2] + r[0] | 0, r[3] = r[3] + r[0] | 0, r[0] = wn(r[0]), r[1] = wn(r[1]), r[2] = wn(r[2]), r[3] = wn(r[3]), r[0] = r[0] + r[1] | 0, r[0] = r[0] + r[2] | 0, r[0] = r[0] + r[3] | 0, r[1] = r[1] + r[0] | 0, r[2] = r[2] + r[0] | 0, r[3] = r[3] + r[0] | 0 }(t, l); var i = new Uint8Array(l.buffer); return Array.from(i).map(function(o) { return o.toString(16).padStart(2, "0") }).join("") } function pm(t, e) { return new Promise(function(n) { setTimeout(function() { return n(e) }, t) } ) } function Gm(t, e, n) { return Promise.all(t.map(function(l) { return Promise.race([l, pm(e, n)]) })) } function Wd() { return at(this, void 0, void 0, function() { var t, e, n, l, i; return dt(this, function(o) { switch (o.label) { case 0: return o.trys.push([0, 2, , 3]), t = fm(), e = Object.keys(t), [4, Gm(Object.values(t), (be == null ? void 0 : be.timeout) || 1e3, Zm)]; case 1: return n = o.sent(), l = n.filter(function(r) { return r !== void 0 }), i = {}, l.forEach(function(r, c) { i[e[c]] = r }), [2, vd(i, be.exclude || [], be.include || [], "")]; case 2: throw o.sent(); case 3: return [2] } }) }) } function vd(t, e, n, l) { l === void 0 && (l = ""); for (var i = {}, o = function(d, s) { var u = l + d + "."; if (typeof s != "object" || Array.isArray(s)) { var b = e.some(function(p) { return u.startsWith(p) }) , g = n.some(function(p) { return u.startsWith(p) }); b && !g || (i[d] = s) } else { var V = vd(s, e, n, u); Object.keys(V).length > 0 && (i[d] = V) } }, r = 0, c = Object.entries(t); r < c.length; r++) { var a = c[r]; o(a[0], a[1]) } return i } function Xm(t) { return at(this, void 0, void 0, function() { var e, n; return dt(this, function(l) { switch (l.label) { case 0: return l.trys.push([0, 2, , 3]), [4, Wd()]; case 1: return e = l.sent(), n = $i(JSON.stringify(e)), Math.random() < 1e-4 && be.logging && function(i, o) { at(this, void 0, void 0, function() { var r, c; return dt(this, function(a) { switch (a.label) { case 0: if (r = "https://logging.thumbmarkjs.com/v1/log", c = { thumbmark: i, components: o, version: "0.20.2" }, sessionStorage.getItem("_tmjs_l")) return [3, 4]; sessionStorage.setItem("_tmjs_l", "1"), a.label = 1; case 1: return a.trys.push([1, 3, , 4]), [4, fetch(r, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(c) })]; case 2: case 3: return a.sent(), [3, 4]; case 4: return [2] } }) }) }(n, e), [2, n.toString()]; case 2: throw l.sent(); case 3: return [2] } }) }) } function Pt() { if (typeof navigator > "u") return { name: "unknown", version: "unknown" }; for (var t = navigator.userAgent, e = { edg: "Edge", opr: "Opera", samsung: "SamsungBrowser" }, n = 0, l = [/(?Edge|Edg)\/(?\d+(?:\.\d+)?)/, /(?(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?\d+(?:\.\d+)?)/, /(?(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?\d+(?:\.\d+)?)/, /(?Safari)\/(?\d+(?:\.\d+)?)/, /(?MSIE|Trident|IEMobile).+?(?\d+(?:\.\d+)?)/, /(?[A-Za-z]+)\/(?\d+(?:\.\d+)?)/, /(?SamsungBrowser)\/(?\d+(?:\.\d+)?)/, /(?samsung).*Version\/(?\d+(?:\.\d+)?)/i]; n < l.length; n++) { var i = l[n] , o = t.match(i); if (o && o.groups) return { name: e[o.groups.name.toLowerCase()] || o.groups.name, version: o.groups.version } } return { name: "unknown", version: "unknown" } } function Im(t) { for (var e = 0, n = 0; n < t.length; ++n) e += Math.abs(t[n]); return e } var Rm = Pt(); function Bd(t, e, n) { for (var l = [], i = 0; i < t[0].data.length; i++) { for (var o = [], r = 0; r < t.length; r++) o.push(t[r].data[i]); l.push(Em(o)) } var c = new Uint8ClampedArray(l); return new ImageData(c,e,n) } function Em(t) { if (t.length === 0) return 0; for (var e = {}, n = 0, l = t; n < l.length; n++) e[o = l[n]] = (e[o] || 0) + 1; var i = t[0]; for (var o in e) e[o] > e[i] && (i = parseInt(o, 10)); return i } ["SamsungBrowser", "Safari"].includes(Rm.name) || tt("audio", function() { return at(this, void 0, void 0, function() { return dt(this, function(t) { return [2, new Promise(function(e, n) { try { var l = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1,5e3,44100) , i = l.createBufferSource() , o = l.createOscillator(); o.frequency.value = 1e3; var r, c = l.createDynamicsCompressor(); c.threshold.value = -50, c.knee.value = 40, c.ratio.value = 12, c.attack.value = 0, c.release.value = .2, o.connect(c), c.connect(l.destination), o.start(), l.oncomplete = function(a) { r = a.renderedBuffer.getChannelData(0), e({ sampleHash: Im(r), oscillator: o.type, maxChannels: l.destination.maxChannelCount, channelCountMode: i.channelCountMode }) } , l.startRendering() } catch (a) { console.error("Error creating audio fingerprint:", a), n(a) } } )] }) }) }); var Cm = Pt().name !== "SamsungBrowser" ? 1 : 3; Pt().name != "Firefox" && tt("canvas", function() { return document.createElement("canvas").getContext("2d"), new Promise(function(t) { var e = Array.from({ length: Cm }, function() { return function() { var n = document.createElement("canvas") , l = n.getContext("2d"); if (!l) return new ImageData(1,1); n.width = 280, n.height = 20; var i = l.createLinearGradient(0, 0, n.width, n.height); i.addColorStop(0, "red"), i.addColorStop(.16666666666666666, "orange"), i.addColorStop(.3333333333333333, "yellow"), i.addColorStop(.5, "green"), i.addColorStop(.6666666666666666, "blue"), i.addColorStop(.8333333333333334, "indigo"), i.addColorStop(1, "violet"), l.fillStyle = i, l.fillRect(0, 0, n.width, n.height); var o = "Random Text WMwmil10Oo"; l.font = "23.123px Arial", l.fillStyle = "black", l.fillText(o, -5, 15), l.fillStyle = "rgba(0, 0, 255, 0.5)", l.fillText(o, -3.3, 17.7), l.beginPath(), l.moveTo(0, 0), l.lineTo(2 * n.width / 7, n.height), l.strokeStyle = "white", l.lineWidth = 2, l.stroke(); var r = l.getImageData(0, 0, n.width, n.height); return r }() }); t({ commonImageDataHash: $i(Bd(e, 280, 20).data.toString()).toString() }) } ) }); var Dl, ym = ["Arial", "Arial Black", "Arial Narrow", "Arial Rounded MT", "Arimo", "Archivo", "Barlow", "Bebas Neue", "Bitter", "Bookman", "Calibri", "Cabin", "Candara", "Century", "Century Gothic", "Comic Sans MS", "Constantia", "Courier", "Courier New", "Crimson Text", "DM Mono", "DM Sans", "DM Serif Display", "DM Serif Text", "Dosis", "Droid Sans", "Exo", "Fira Code", "Fira Sans", "Franklin Gothic Medium", "Garamond", "Geneva", "Georgia", "Gill Sans", "Helvetica", "Impact", "Inconsolata", "Indie Flower", "Inter", "Josefin Sans", "Karla", "Lato", "Lexend", "Lucida Bright", "Lucida Console", "Lucida Sans Unicode", "Manrope", "Merriweather", "Merriweather Sans", "Montserrat", "Myriad", "Noto Sans", "Nunito", "Nunito Sans", "Open Sans", "Optima", "Orbitron", "Oswald", "Pacifico", "Palatino", "Perpetua", "PT Sans", "PT Serif", "Poppins", "Prompt", "Public Sans", "Quicksand", "Rajdhani", "Recursive", "Roboto", "Roboto Condensed", "Rockwell", "Rubik", "Segoe Print", "Segoe Script", "Segoe UI", "Sora", "Source Sans Pro", "Space Mono", "Tahoma", "Taviraj", "Times", "Times New Roman", "Titillium Web", "Trebuchet MS", "Ubuntu", "Varela Round", "Verdana", "Work Sans"], Sm = ["monospace", "sans-serif", "serif"]; function ac(t, e) { if (!t) throw new Error("Canvas context not supported"); return t.font, t.font = "72px ".concat(e), t.measureText("WwMmLli0Oo").width } function Wm() { var t, e = document.createElement("canvas"), n = (t = e.getContext("webgl")) !== null && t !== void 0 ? t : e.getContext("experimental-webgl"); if (n && "getParameter"in n) try { var l = (n.getParameter(n.VENDOR) || "").toString() , i = (n.getParameter(n.RENDERER) || "").toString() , o = { vendor: l, renderer: i, version: (n.getParameter(n.VERSION) || "").toString(), shadingLanguageVersion: (n.getParameter(n.SHADING_LANGUAGE_VERSION) || "").toString() }; if (!i.length || !l.length) { var r = n.getExtension("WEBGL_debug_renderer_info"); if (r) { var c = (n.getParameter(r.UNMASKED_VENDOR_WEBGL) || "").toString() , a = (n.getParameter(r.UNMASKED_RENDERER_WEBGL) || "").toString(); c && (o.vendorUnmasked = c), a && (o.rendererUnmasked = a) } } return o } catch {} return "undefined" } function vm() { var t = new Float32Array(1) , e = new Uint8Array(t.buffer); return t[0] = 1 / 0, t[0] = t[0] - t[0], e[3] } function Bm(t, e) { var n = {}; return e.forEach(function(l) { var i = function(o) { if (o.length === 0) return null; var r = {}; o.forEach(function(d) { var s = String(d); r[s] = (r[s] || 0) + 1 }); var c = o[0] , a = 1; return Object.keys(r).forEach(function(d) { r[d] > a && (c = d, a = r[d]) }), c }(t.map(function(o) { return l in o ? o[l] : void 0 }).filter(function(o) { return o !== void 0 })); i && (n[l] = i) }), n } function Nm() { var t = [] , e = { "prefers-contrast": ["high", "more", "low", "less", "forced", "no-preference"], "any-hover": ["hover", "none"], "any-pointer": ["none", "coarse", "fine"], pointer: ["none", "coarse", "fine"], hover: ["hover", "none"], update: ["fast", "slow"], "inverted-colors": ["inverted", "none"], "prefers-reduced-motion": ["reduce", "no-preference"], "prefers-reduced-transparency": ["reduce", "no-preference"], scripting: ["none", "initial-only", "enabled"], "forced-colors": ["active", "none"] }; return Object.keys(e).forEach(function(n) { e[n].forEach(function(l) { matchMedia("(".concat(n, ": ").concat(l, ")")).matches && t.push("".concat(n, ": ").concat(l)) }) }), t } function Fm() { if (window.location.protocol === "https:" && typeof window.ApplePaySession == "function") try { for (var t = window.ApplePaySession.supportsVersion, e = 15; e > 0; e--) if (t(e)) return e } catch { return 0 } return 0 } Pt().name != "Firefox" && tt("fonts", function() { var t = this; return new Promise(function(e, n) { try { (function(l) { var i; at(this, void 0, void 0, function() { var o, r, c; return dt(this, function(a) { switch (a.label) { case 0: return document.body ? [3, 2] : [4, (d = 50, new Promise(function(u) { return setTimeout(u, d, s) } ))]; case 1: return a.sent(), [3, 0]; case 2: if ((o = document.createElement("iframe")).setAttribute("frameBorder", "0"), (r = o.style).setProperty("position", "fixed"), r.setProperty("display", "block", "important"), r.setProperty("visibility", "visible"), r.setProperty("border", "0"), r.setProperty("opacity", "0"), o.src = "about:blank", document.body.appendChild(o), !(c = o.contentDocument || ((i = o.contentWindow) === null || i === void 0 ? void 0 : i.document))) throw new Error("Iframe document is not accessible"); return l({ iframe: c }), setTimeout(function() { document.body.removeChild(o) }, 0), [2] } var d, s }) }) } )(function(l) { var i = l.iframe; return at(t, void 0, void 0, function() { var o, r, c, a; return dt(this, function(d) { return o = i.createElement("canvas"), r = o.getContext("2d"), c = Sm.map(function(s) { return ac(r, s) }), a = {}, ym.forEach(function(s) { var u = ac(r, s); c.includes(u) || (a[s] = u) }), e(a), [2] }) }) }) } catch { n({ error: "unsupported" }) } } ) }), tt("hardware", function() { return new Promise(function(t, e) { var n = navigator.deviceMemory !== void 0 ? navigator.deviceMemory : 0 , l = window.performance && window.performance.memory ? window.performance.memory : 0; t({ videocard: Wm(), architecture: vm(), deviceMemory: n.toString() || "undefined", jsHeapSizeLimit: l.jsHeapSizeLimit || 0 }) } ) }), tt("locales", function() { return new Promise(function(t) { t({ languages: navigator.language, timezone: Intl.DateTimeFormat().resolvedOptions().timeZone }) } ) }), tt("permissions", function() { return at(this, void 0, void 0, function() { var t; return dt(this, function(e) { return Dl = (be == null ? void 0 : be.permissions_to_check) || ["accelerometer", "accessibility", "accessibility-events", "ambient-light-sensor", "background-fetch", "background-sync", "bluetooth", "camera", "clipboard-read", "clipboard-write", "device-info", "display-capture", "gyroscope", "geolocation", "local-fonts", "magnetometer", "microphone", "midi", "nfc", "notifications", "payment-handler", "persistent-storage", "push", "speaker", "storage-access", "top-level-storage-access", "window-management", "query"], t = Array.from({ length: (be == null ? void 0 : be.retries) || 3 }, function() { return function() { return at(this, void 0, void 0, function() { var n, l, i, o, r; return dt(this, function(c) { switch (c.label) { case 0: n = {}, l = 0, i = Dl, c.label = 1; case 1: if (!(l < i.length)) return [3, 6]; o = i[l], c.label = 2; case 2: return c.trys.push([2, 4, , 5]), [4, navigator.permissions.query({ name: o })]; case 3: return r = c.sent(), n[o] = r.state.toString(), [3, 5]; case 4: return c.sent(), [3, 5]; case 5: return l++, [3, 1]; case 6: return [2, n] } }) }) }() }), [2, Promise.all(t).then(function(n) { return Bm(n, Dl) })] }) }) }), tt("plugins", function() { var t = []; if (navigator.plugins) for (var e = 0; e < navigator.plugins.length; e++) { var n = navigator.plugins[e]; t.push([n.name, n.filename, n.description].join("|")) } return new Promise(function(l) { l({ plugins: t }) } ) }), tt("screen", function() { return new Promise(function(t) { t({ is_touchscreen: navigator.maxTouchPoints > 0, maxTouchPoints: navigator.maxTouchPoints, colorDepth: screen.colorDepth, mediaMatches: Nm() }) } ) }), tt("system", function() { return new Promise(function(t) { var e = Pt(); t({ platform: window.navigator.platform, cookieEnabled: window.navigator.cookieEnabled, productSub: navigator.productSub, product: navigator.product, useragent: navigator.userAgent, hardwareConcurrency: navigator.hardwareConcurrency, browser: { name: e.name, version: e.version }, applePayVersion: Fm() }) } ) }); var ve, Ym = Pt().name !== "SamsungBrowser" ? 1 : 3, U = null; tt("webgl", function() { return at(this, void 0, void 0, function() { var t; return dt(this, function(e) { typeof document < "u" && ((ve = document.createElement("canvas")).width = 200, ve.height = 100, U = ve.getContext("webgl")); try { if (!U) throw new Error("WebGL not supported"); return t = Array.from({ length: Ym }, function() { return function() { try { if (!U) throw new Error("WebGL not supported"); var n = ` attribute vec2 position; void main() { gl_Position = vec4(position, 0.0, 1.0); } ` , l = ` precision mediump float; void main() { gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color } ` , i = U.createShader(U.VERTEX_SHADER) , o = U.createShader(U.FRAGMENT_SHADER); if (!i || !o) throw new Error("Failed to create shaders"); if (U.shaderSource(i, n), U.shaderSource(o, l), U.compileShader(i), !U.getShaderParameter(i, U.COMPILE_STATUS)) throw new Error("Vertex shader compilation failed: " + U.getShaderInfoLog(i)); if (U.compileShader(o), !U.getShaderParameter(o, U.COMPILE_STATUS)) throw new Error("Fragment shader compilation failed: " + U.getShaderInfoLog(o)); var r = U.createProgram(); if (!r) throw new Error("Failed to create shader program"); if (U.attachShader(r, i), U.attachShader(r, o), U.linkProgram(r), !U.getProgramParameter(r, U.LINK_STATUS)) throw new Error("Shader program linking failed: " + U.getProgramInfoLog(r)); U.useProgram(r); for (var c = 137, a = new Float32Array(4 * c), d = 2 * Math.PI / c, s = 0; s < c; s++) { var u = s * d; a[4 * s] = 0, a[4 * s + 1] = 0, a[4 * s + 2] = Math.cos(u) * (ve.width / 2), a[4 * s + 3] = Math.sin(u) * (ve.height / 2) } var b = U.createBuffer(); U.bindBuffer(U.ARRAY_BUFFER, b), U.bufferData(U.ARRAY_BUFFER, a, U.STATIC_DRAW); var g = U.getAttribLocation(r, "position"); U.enableVertexAttribArray(g), U.vertexAttribPointer(g, 2, U.FLOAT, !1, 0, 0), U.viewport(0, 0, ve.width, ve.height), U.clearColor(0, 0, 0, 1), U.clear(U.COLOR_BUFFER_BIT), U.drawArrays(U.LINES, 0, 2 * c); var V = new Uint8ClampedArray(ve.width * ve.height * 4); return U.readPixels(0, 0, ve.width, ve.height, U.RGBA, U.UNSIGNED_BYTE, V), new ImageData(V,ve.width,ve.height) } catch { return new ImageData(1,1) } finally { U && (U.bindBuffer(U.ARRAY_BUFFER, null), U.useProgram(null), U.viewport(0, 0, U.drawingBufferWidth, U.drawingBufferHeight), U.clearColor(0, 0, 0, 0)) } }() }), [2, { commonImageHash: $i(Bd(t, ve.width, ve.height).data.toString()).toString() }] } catch { return [2, { webgl: "unsupported" }] } return [2] }) }) }); var Xt = function(t, e, n, l) { for (var i = (n - e) / l, o = 0, r = 0; r < l; r++) o += t(e + (r + .5) * i); return o * i }; tt("math", function() { return at(void 0, void 0, void 0, function() { return dt(this, function(t) { return [2, { acos: Math.acos(.5), asin: Xt(Math.asin, -1, 1, 97), atan: Xt(Math.atan, -1, 1, 97), cos: Xt(Math.cos, 0, Math.PI, 97), cosh: Math.cosh(9 / 7), e: Math.E, largeCos: Math.cos(1e20), largeSin: Math.sin(1e20), largeTan: Math.tan(1e20), log: Math.log(1e3), pi: Math.PI, sin: Xt(Math.sin, -Math.PI, Math.PI, 97), sinh: Xt(Math.sinh, -9 / 7, 7 / 9, 97), sqrt: Math.sqrt(2), tan: Xt(Math.tan, 0, 2 * Math.PI, 97), tanh: Xt(Math.tanh, -9 / 7, 7 / 9, 97) }] }) }) }); class Um { constructor() { this.defaultIncludeOption = ["audio", "canvas", "fonts", "hardware", "locales", "math", "permissions", "plugins", "screen", "system", "webgl"], this.currentIncludeOption = [], this.initOption() } async getId() { return await Xm() } async getJsonData() { return await Wd() } initOption() { this.currentIncludeOption = [...this.defaultIncludeOption], Hl("exclude", ["fonts", "locales", "permissions", "plugins", "system.browser.name", "system.browser.version"]) } changeIncludeOption(e) { typeof e == "string" ? (this.currentIncludeOption = this.currentIncludeOption.includes(e) ? this.currentIncludeOption.filter(n => n !== e) : [...this.currentIncludeOption, e], Hl("include", this.currentIncludeOption)) : (this.currentIncludeOption = [...e], Hl("include", this.currentIncludeOption)) } } const Jm = new Um; class xm { constructor(e, n) { this.interval = e, this.getClientInfo = n, this.events = [], this.timer = null } push(e) { e.extData || (e.extData = {}), e.extData.url = window.location.href, this.events.push(e), this.doChecking() } doChecking() { this.timer && this.clearTimer(), this.timer = setTimeout( () => { this.send(), this.clearTimer() } , this.interval) } clearTimer() { clearTimeout(this.timer), this.timer = null } async send() { var i; const e = { ...this.getClientInfo(), tmToken: await Jm.getId() } , n = { events: this.events, clientInfo: e } , l = cc.formatToAmplitude(n); cc.batchTrack(l), (i = navigator == null ? void 0 : navigator.sendBeacon) == null || i.call(navigator, `${_e.apiHost}/api/user_behavior/batch_create_event_v2`, JSON.stringify(il("server", n))), this.events = [] } } function wm() { const t = new Date; return { clientType: "web", clientVersion: "", productName: "Manus", timezone: ( () => { try { return Intl.DateTimeFormat().resolvedOptions().timeZone } catch { return } } )(), timezoneOffset: t.getTimezoneOffset() } } const km = new xm(200,wm); function Ct(t) { (Array.isArray(t) ? t : [t]).map(n => ({ ...n, extData: { ...n.extData }, eventAt: new Date().toISOString() })).forEach(n => { km.push(n) } ) } function xt(t) { return `control-panel-view-${t}` } class zm extends fn { constructor(e, n) { super(e), this.se = n, Mt.listenBy(this, "onViewTypeChange", () => { this.render() } ) } get template() { const e = () => Je.viewType === "edit" ? M`` : M``; return M` ${e()}` } handleToggleEditMode() { Je.viewType === "default" ? (Je.setViewType("edit"), this.se.toggleEditMode(), $n.showToast({ title: "You're now editing - all changes auto-save", variant: "success" }), Ct({ eventName: "edit_click", extData: { type: "space" } })) : (Je.setViewType("default"), this.se.toggleToPreviewMode(), $n.showToast({ title: "Switched to preview mode", variant: "success" })) } } function L(t) { return `footer-toolbar-${t}` } class Qm extends fn { constructor(e) { super(e, !1), this.container = e, this.hasPrivilege = !1, this.isRestoring = !1, this.isShowHistoryBtn = !1, this.isFolded = !1, this.isFolded = localStorage.getItem(ao.embedClosed) === "true", this.init() } get template() { const e = () => { const n = M`${T1}
`; if (!this.hasPrivilege) return M``; const l = Je.viewType !== "history" ? M`` : M`` , i = Je.viewType === "history" && this.isShowHistoryBtn ? M`` : "" , o = M` this.toggleEditModeRef = c)} >
` , r = M` this.handleSetDialogRef(c))} title="Restore to this version?"> This will overwrite existing content and affect the current task.
`; return M`${l} ${i} ${o} ${n} ${r}` } ; return M` ${k1}
${e()}
` } handleRestore() { var e; (e = this.dialogRef) == null || e.show() } async handleRestoreConfirm() { var e, n, l; if (!this.isRestoring) try { this.isRestoring = !0, this.render(), await ll.SpaceService.restoreOriginalSite({ spaceUid: _e.spaceId }), (e = this.se) == null || e.restoreToOriginal(), (n = this.dialogRef) == null || n.close(), Je.setViewType(Je.prevViewType), Je.viewType !== "edit" && ((l = this.se) == null || l.toggleToPreviewMode()) } catch {} finally { this.isRestoring = !1, this.render() } } async init() { const e = new B1; this.se = e; const n = new URL(window.location.href); let l = "default"; n.searchParams.get("edit") === "1" ? l = "edit" : n.searchParams.get("history") === "1" && (l = "history"), this.updateIsShowHistoryBtn(); const i = async () => new Promise(r => { l === "history" ? (e.initWithoutApplyPatches(), jl(["history"]), this.isShowHistoryBtn && Je.setViewType("history"), r(!0)) : jd() && _e.patchList.length > 0 ? (document.body.style.opacity = "0", _d().then( () => { e.init(), document.body.style.opacity = "1", r(!0) } )) : (e.init(), r(!0)) } ); let o = !1; _e.patchList.length > 0 && (await i(), o = !0); try { l === "edit" && (this.hasPrivilege = !0, e.toggleEditMode(), Je.setViewType("edit"), this.render()), jl(["edit"]) } catch {} if (await wt.waitReady(), this.hasPrivilege = await R1, this.render(), this.hasPrivilege) { o || await i(), l === "edit" && $n.showToast({ title: "You're now editing - all changes auto-save", variant: "success" }), Mt.listenBy(this, "onViewTypeChange", () => { this.render() } ), Mt.listenBy(this, "patchListChange", () => { this.updateIsShowHistoryBtn(), this.render() } ); const r = document.createElement("div"); r.classList.add(J.textEditorPanelView); const c = document.createElement("div"); c.classList.add(J.elementEditorPanelView), this.container.appendChild(c), this.container.appendChild(r); const a = new j1(r,e) , d = new D1(c,e); e.registerViews({ textEditPanelView: a, elementEditPanelView: d }), this.toggleEditModeRef && new zm(this.toggleEditModeRef,e) } else e.toggleToPreviewMode(), Je.setViewType("default") } destroy() { var e; (e = this.se) == null || e.destroy(), super.destroy() } toggleFolded() { this.isFolded = !this.isFolded, localStorage.setItem(ao.embedClosed, this.isFolded ? "true" : "false"), this.render() } handleViewOriginVersion() { const e = new URL(window.location.href); e.searchParams.append("history", "1"), window.location.href = e.toString() } handleExitOriginVersion() { const e = new URL(window.location.href); e.searchParams.delete("history"), window.location.href = e.toString() } handleSetDialogRef(e) { e instanceof gi && (this.dialogRef = e) } updateIsShowHistoryBtn() { this.isShowHistoryBtn = (_e.patchList.length ?? 0) > 0 } } const ul = "content-root" , Km = `#${ul} { /* Text Colors */ --text-primary: #34322d; --text-secondary: #535350; --text-tertiary: #858481; --text-disable: #b9b9b7; --text-brand: #0081f2; --text-onblack: #ffffff; --text-white: #ffffff; --text-white-tsp: #ffffff99; --theme-text-primary: #262626; --logo-color: #34322d; /* Background Colors */ --background-gray-main: #f8f8f7; --background-white-main: #ffffff; --background-menu-white: #ffffff; --background-tsp-menu-white: #ffffff14; --background-tsp-card-gray: #37352f0a; --background-nav: #ebebeb; --background-card: #fafafa; --background-mask: #000000a6; --background-card-gray: #fafafa; --background-preview-mask: #000000d9; /* Border Colors */ --border-main: #0000000f; --border-white: #ffffff33; --border-btn-main: #0000001f; --border-input-active: #0081f280; --border-light: #0000000a; --border-dark: #0000001f; --border-primary: #4f59661f; /* Icon Colors */ --icon-primary: #34322d; --icon-secondary: #535350; --icon-tertiary: #858481; --icon-disable: #b9b9b7; --icon-brand: #0081f2; --icon-onblack: #ffffff; --icon-white: #ffffff; --icon-white-tsp: #ffffff99; /* Function Colors */ --function-error: #f25a5a; --function-success: #25ba3b; --function-warning: #efa201; --function-error-tsp: #f25a5a14; --function-warning-tsp: #efa2011f; /* Fill Colors */ --fill-blue: #0081f214; --fill-tsp-white-main: #37352f0f; --fill-tsp-white-dark: #37352f14; --fill-tsp-white-light: #37352f0a; --fill-tsp-gray-dark: #37352f14; --fill-tsp-gray-main: #37352f0a; --fill-input-chat: #ffffff; --fill-white: #ffffff; --fill-black: #28282973; --fill-gray: #f8f8f7; /* Button Colors */ --Button-primary-black: #1a1a19; --Button-primary-white: #ffffff; --Button-primary-brand: #0081f2; --Button-primary-brand-disabled: #7cbdf5; --Button-secondary-brand: #0081f21a; --Button-secondary-error-border: #f25a5a80; --Button-secondary-error-fill: #ffffff; --Button-secondary-main: #ffffff; --Button-secondary-gray: #37352f0f; /* Tab Colors */ --tab-fill: rgba(0, 0, 0, 0.04); --tab-active-black: #1a1a19; /* Shadow Colors */ --shadow-L: #0000003d; --shadow-M: #0000001f; --shadow-S: #00000014; --shadow-XS: #0000000f; --shadows-inner-0: #ffffff00; --shadows-inner-1: #16191d14; --shadows-inner-2: #16191d1f; --shadows-drop-1: #16191d08; --shadows-drop-2: #16191d0a; --shadows-drop-3: #16191d14; --shadows-drop-4: #16191d1f; --shadows-highlight-1: #cce5ff; --shadows-highlight-2: #1487fa; --shadows-danger-1: #fed7d7; --shadows-danger-2: #ee3a3a; --shadows-card-border: #16191d1f; --shadows-card-border-2: #16191d1f; /* Tooltips */ --Tooltips-main: #000000e6; /* Gradual Colors */ --gradual-white-0: #ffffff00; --gradual-gray-100: #ffffff00; --gradual-gray-0: #ffffff00; --gradual-dark-20: #00000033; /** input */ --fill-input-chat: #ffffff; /** gradient */ --gradient-bg-mask-gray-0: #eaeaeb00; } #${ul}.dark { /* Text Colors */ --text-primary: #dadada; --text-secondary: #acacac; --text-tertiary: #7f7f7f; --text-disable: #5f5f5f; --text-brand: #1a93fe; --text-onblack: #000000e6; --text-white: #ffffff; --text-white-tsp: #ffffff99; --theme-text-primary: #dbdbdb; --logo-color: #dadada; /* Background Colors */ --background-gray-main: #272728; --background-white-main: #161618; --background-menu-white: #383739; --background-tsp-menu-white: #ffffff0f; --background-tsp-card-gray: #ffffff0f; --background-nav: #212122; --background-card: #383739; --background-mask: #000000a6; --background-card-gray: #383739; --background-preview-mask: #000000d9; /* Border Colors */ --border-main: #ffffff14; --border-white: #00000014; --border-btn-main: #ffffff1a; --border-input-active: #1a93fe80; --border-light: #ffffff0f; --border-dark: #ffffff29; --border-primary: #56565f52; /* Icon Colors */ --icon-primary: #dadada; --icon-secondary: #acacac; --icon-tertiary: #7f7f7f; --icon-disable: #5f5f5f; --icon-brand: #1a93fe; --icon-onblack: #000000d9; --icon-white: #ffffff; --icon-white-tsp: #ffffff99; /* Function Colors */ --function-error: #eb4d4d; --function-success: #5eb92d; --function-warning: #ffbf36; --function-error-tsp: #eb4d4d14; --function-warning-tsp: #ffbf361f; /* Fill Colors */ --fill-blue: #1a93fe1f; --fill-tsp-white-main: #ffffff0f; --fill-tsp-white-dark: #ffffff1f; --fill-tsp-white-light: #ffffff0a; --fill-tsp-gray-dark: #00000047; --fill-tsp-gray-main: #00000033; --fill-input-chat: #363537; --fill-white: #3e3d3e; --fill-black: #28282973; --fill-gray: #444345; /* Button Colors */ --Button-primary-black: #ffffff; --Button-primary-white: #ffffff14; --Button-primary-brand: #1a93fe; --Button-primary-brand-disabled: #215d93; --Button-secondary-brand: #1a93fe1f; --Button-secondary-error-border: #eb4d4d29; --Button-secondary-error-fill: #eb4d4d1f; --Button-secondary-main: #ffffff1f; --Button-secondary-gray: #ffffff0f; /* Tab Colors */ --tab-fill: rgba(255, 255, 255, 0.06); --tab-active-black: #ffffff; /* Shadow Colors */ --shadow-L: #00000066; --shadow-M: #0000003d; --shadow-S: #00000029; --shadow-XS: #0000001f; --shadows-inner-0: #ffffff1f; --shadows-inner-1: #ffffff14; --shadows-inner-2: #ffffff1f; --shadows-drop-1: #0000001f; --shadows-drop-2: #00000033; --shadows-drop-3: #00000047; --shadows-drop-4: #0000005c; --shadows-highlight-1: #1b61a6; --shadows-highlight-2: #1487fa; --shadows-danger-1: #8f1919; --shadows-danger-2: #ee3a3a; --shadows-card-border: #ffffff1f; --shadows-card-border-2: #ffffff00; /* Tooltips */ --Tooltips-main: #000000e6; /* Gradual Colors */ --gradual-white-0: #27272800; --gradual-gray-100: #444345; --gradual-gray-0: #44434500; --gradual-dark-20: #ffffff33; /** input */ --fill-input-chat: #363537; /** gradient */ --gradient-bg-mask-gray-0: #1E1E1E00; } ` , Lm = `/* CSS Reset */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } img, picture, video, canvas, svg { display: block; max-width: 100%; } input, button, textarea, select { font: inherit; } p, h1, h2, h3, h4, h5, h6 { overflow-wrap: break-word; } a { text-decoration: none; color: inherit; } button { background: none; border: none; cursor: pointer; } ` , Mm = ` .tooltip-trigger-css { position: relative; } .tooltip-trigger-css::after { content: attr(data-tooltip); display: flex; justify-content: center; align-items: center; max-width: 280px; min-width: 40px; padding: 10px; background: rgba(0, 0, 0, 0.90); border-radius: 12px; color: var(--text-white); font-size: 12px; line-height: 16px; word-wrap: break-word; white-space: pre-wrap; text-align: left; position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%) translateY(-8px); z-index: 10; width:max-content; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out, visibility 0s linear 0.2s; } .tooltip-trigger-css.tooltip-trigger-right-css::after { left: unset; right: 0; transform: translateX(0) translateY(-8px); } .tooltip-trigger-css.tooltip-trigger-right-css:hover::after { left: unset; right: 0; transform: translateX(0) translateY(-8px); } /* 当触发元素被 hover 或 focus 时显示 tooltip */ .tooltip-trigger-css:hover::after, .tooltip-trigger-css:focus::after { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(-10px); /* 轻微向上移动的动画 */ transition-delay: 0s, 0s, 0s; /* 确保立即显示,覆盖 visibility 的延迟 */ } /* 确保非交互元素可聚焦,以便 tooltip 可以通过键盘触发 */ .tooltip-trigger-css:not(button):not(input):not(a[href]) { outline: none; /* 移除默认轮廓,如果需要自定义焦点样式 */ } .tooltip-trigger-css:focus { /* 自定义焦点样式 (可选) */ box-shadow: 0 0 0 2px skyblue; }` , Tm = ` ${Km} ${Lm} ${Mm} * { box-sizing: border-box; } p { margin-block-start:0; margin-block-end:0; } #${ul} { font-family: 'SF Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif } `; let kn; class Hm extends HTMLElement { constructor() { super(), this.attachShadow({ mode: "open" }) } connectedCallback() { const e = this.shadowRoot , n = document.createElement("div"); n.id = ul, e.appendChild(n); const l = document.createElement("style"); l.textContent = `${Tm} `, n.appendChild(l), kn = new Qm(n), $n.initRoot(n), Ct({ eventName: "session_file_view", extData: { type: "space" } }), Ct({ eventName: "manus_space_show" }) } disconnectedCallback() { kn == null || kn.destroy() } } class Dm extends HTMLElement { constructor() { super(); const e = this.attachShadow({ mode: "open" }) , n = document.createElement("div"); n.setAttribute("class", "wrapper"), n.innerHTML = `