@enegelai/bot-widget 1.19.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/enegelaibot.umd.js +177 -177
- package/dist/index.es.js +927 -804
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { css as K, LitElement as Fe, html as
|
|
2
|
-
import { property as x, customElement as J, query as xe, state as
|
|
1
|
+
import { css as K, LitElement as Fe, html as p, nothing as Ae, svg as pe } from "lit";
|
|
2
|
+
import { property as x, customElement as J, query as xe, state as Wa, queryAll as Ga, eventOptions as oa } from "lit/decorators.js";
|
|
3
3
|
import { when as W } from "lit/directives/when.js";
|
|
4
4
|
import { unsafeHTML as G } from "lit-html/directives/unsafe-html.js";
|
|
5
|
-
import { registerIconLibrary as
|
|
5
|
+
import { registerIconLibrary as ji } from "@shoelace-style/shoelace";
|
|
6
6
|
import "@shoelace-style/shoelace/dist/components/button/button.js";
|
|
7
7
|
import "@shoelace-style/shoelace/dist/components/avatar/avatar.js";
|
|
8
8
|
import "@shoelace-style/shoelace/dist/components/input/input.js";
|
|
@@ -23,13 +23,13 @@ import "@shoelace-style/shoelace/dist/components/progress-bar/progress-bar.js";
|
|
|
23
23
|
import "@shoelace-style/shoelace/dist/components/badge/badge.js";
|
|
24
24
|
import { repeat as et } from "lit/directives/repeat.js";
|
|
25
25
|
import { until as bt } from "lit-html/directives/until.js";
|
|
26
|
-
import
|
|
27
|
-
import
|
|
26
|
+
import Vi from "markdown-it";
|
|
27
|
+
import Ui from "markdown-it-link-attributes";
|
|
28
28
|
import Gt from "highlight.js";
|
|
29
29
|
import "@shoelace-style/shoelace/dist/components/popup/popup.js";
|
|
30
30
|
import "@shoelace-style/shoelace/dist/components/rating/rating.js";
|
|
31
|
-
import { createRef as
|
|
32
|
-
function
|
|
31
|
+
import { createRef as Ni, ref as Tt } from "lit/directives/ref.js";
|
|
32
|
+
function Xa(a) {
|
|
33
33
|
return typeof a == "function" ? a() : a;
|
|
34
34
|
}
|
|
35
35
|
const Ut = class Ut extends Event {
|
|
@@ -45,7 +45,7 @@ const Ut = class Ut extends Event {
|
|
|
45
45
|
};
|
|
46
46
|
Ut.eventName = "lit-state-changed";
|
|
47
47
|
let at = Ut;
|
|
48
|
-
const
|
|
48
|
+
const Wi = (a, e) => e !== a && (e === e || a === a), pa = class pa extends EventTarget {
|
|
49
49
|
static initPropertyMap() {
|
|
50
50
|
this.propertyMap || (this.propertyMap = /* @__PURE__ */ new Map());
|
|
51
51
|
}
|
|
@@ -58,7 +58,7 @@ const ji = (a, e) => e !== a && (e === e || a === a), ba = class ba extends Even
|
|
|
58
58
|
constructor() {
|
|
59
59
|
super(), this.hookMap = /* @__PURE__ */ new Map(), this.constructor.finalize(), this.propertyMap && [...this.propertyMap].forEach(([e, t]) => {
|
|
60
60
|
if (t.initialValue !== void 0) {
|
|
61
|
-
const i =
|
|
61
|
+
const i = Xa(t.initialValue);
|
|
62
62
|
this[e] = i, t.value = i;
|
|
63
63
|
}
|
|
64
64
|
});
|
|
@@ -78,7 +78,7 @@ const ji = (a, e) => e !== a && (e === e || a === a), ba = class ba extends Even
|
|
|
78
78
|
Object.defineProperty(this.prototype, e, s);
|
|
79
79
|
}
|
|
80
80
|
static getPropertyDescriptor(e, t, i) {
|
|
81
|
-
const s = i?.hasChanged ||
|
|
81
|
+
const s = i?.hasChanged || Wi;
|
|
82
82
|
return {
|
|
83
83
|
get() {
|
|
84
84
|
return this[t];
|
|
@@ -119,8 +119,8 @@ const ji = (a, e) => e !== a && (e === e || a === a), ba = class ba extends Even
|
|
|
119
119
|
this.dispatchEvent(new at(e, t, i));
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
|
-
|
|
123
|
-
let
|
|
122
|
+
pa.finalized = !1;
|
|
123
|
+
let Qt = pa;
|
|
124
124
|
class it {
|
|
125
125
|
constructor(e, t, i) {
|
|
126
126
|
this.host = e, this.state = t, this.callback = i || (() => this.host.requestUpdate()), this.host.addController(this);
|
|
@@ -146,7 +146,7 @@ function z(a) {
|
|
|
146
146
|
}), i.createProperty(t, a), s ? Object.getOwnPropertyDescriptor(e, t) : void 0;
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function Gi(a, e) {
|
|
150
150
|
if (a !== null && (e === Boolean || e === Number || e === Array || e === Object))
|
|
151
151
|
try {
|
|
152
152
|
a = JSON.parse(a);
|
|
@@ -156,37 +156,37 @@ function Vi(a, e) {
|
|
|
156
156
|
return a;
|
|
157
157
|
}
|
|
158
158
|
new URL(location.href);
|
|
159
|
-
const
|
|
159
|
+
const Xi = {
|
|
160
160
|
prefix: "_ls"
|
|
161
161
|
};
|
|
162
162
|
function le(a) {
|
|
163
|
-
return a = { ...
|
|
163
|
+
return a = { ...Xi, ...a }, (e, t) => {
|
|
164
164
|
const i = Object.getOwnPropertyDescriptor(e, t);
|
|
165
165
|
if (!i)
|
|
166
166
|
throw new Error("@local-storage decorator need to be called after @property");
|
|
167
167
|
const s = `${a?.prefix || ""}_${a?.key || String(t)}`, r = e.constructor, o = r.propertyMap.get(t), f = o?.type;
|
|
168
168
|
if (o) {
|
|
169
169
|
const w = o.initialValue;
|
|
170
|
-
o.initialValue = () =>
|
|
170
|
+
o.initialValue = () => Gi(localStorage.getItem(s), f) ?? Xa(w), r.propertyMap.set(t, { ...o, ...a });
|
|
171
171
|
}
|
|
172
|
-
const
|
|
172
|
+
const b = i?.set, k = {
|
|
173
173
|
...i,
|
|
174
174
|
set: function(w) {
|
|
175
|
-
w !== void 0 && localStorage.setItem(s, f === Object || f === Array ? JSON.stringify(w) : w),
|
|
175
|
+
w !== void 0 && localStorage.setItem(s, f === Object || f === Array ? JSON.stringify(w) : w), b && b.call(this, w);
|
|
176
176
|
}
|
|
177
177
|
};
|
|
178
178
|
Object.defineProperty(r.prototype, t, k);
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
|
-
function
|
|
181
|
+
function Ya(a) {
|
|
182
182
|
return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
|
|
183
183
|
}
|
|
184
|
-
var Rt = { exports: {} },
|
|
185
|
-
function
|
|
186
|
-
return
|
|
184
|
+
var Rt = { exports: {} }, Yi = Rt.exports, Ca;
|
|
185
|
+
function Ki() {
|
|
186
|
+
return Ca || (Ca = 1, (function(a) {
|
|
187
187
|
(function(e, t) {
|
|
188
188
|
a.exports ? a.exports = t() : e.log = t();
|
|
189
|
-
})(
|
|
189
|
+
})(Yi, function() {
|
|
190
190
|
var e = function() {
|
|
191
191
|
}, t = "undefined", i = typeof window !== t && typeof window.navigator !== t && /Trident\/|MSIE /.test(window.navigator.userAgent), s = [
|
|
192
192
|
"trace",
|
|
@@ -195,43 +195,43 @@ function Wi() {
|
|
|
195
195
|
"warn",
|
|
196
196
|
"error"
|
|
197
197
|
], r = {}, o = null;
|
|
198
|
-
function f(
|
|
199
|
-
var C =
|
|
198
|
+
function f(T, L) {
|
|
199
|
+
var C = T[L];
|
|
200
200
|
if (typeof C.bind == "function")
|
|
201
|
-
return C.bind(
|
|
201
|
+
return C.bind(T);
|
|
202
202
|
try {
|
|
203
|
-
return Function.prototype.bind.call(C,
|
|
203
|
+
return Function.prototype.bind.call(C, T);
|
|
204
204
|
} catch {
|
|
205
205
|
return function() {
|
|
206
|
-
return Function.prototype.apply.apply(C, [
|
|
206
|
+
return Function.prototype.apply.apply(C, [T, arguments]);
|
|
207
207
|
};
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
|
-
function
|
|
210
|
+
function b() {
|
|
211
211
|
console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace();
|
|
212
212
|
}
|
|
213
|
-
function v(
|
|
214
|
-
return
|
|
213
|
+
function v(T) {
|
|
214
|
+
return T === "debug" && (T = "log"), typeof console === t ? !1 : T === "trace" && i ? b : console[T] !== void 0 ? f(console, T) : console.log !== void 0 ? f(console, "log") : e;
|
|
215
215
|
}
|
|
216
216
|
function k() {
|
|
217
|
-
for (var
|
|
217
|
+
for (var T = this.getLevel(), L = 0; L < s.length; L++) {
|
|
218
218
|
var C = s[L];
|
|
219
|
-
this[C] = L <
|
|
219
|
+
this[C] = L < T ? e : this.methodFactory(C, T, this.name);
|
|
220
220
|
}
|
|
221
|
-
if (this.log = this.debug, typeof console === t &&
|
|
221
|
+
if (this.log = this.debug, typeof console === t && T < this.levels.SILENT)
|
|
222
222
|
return "No console available for logging";
|
|
223
223
|
}
|
|
224
|
-
function w(
|
|
224
|
+
function w(T) {
|
|
225
225
|
return function() {
|
|
226
|
-
typeof console !== t && (k.call(this), this[
|
|
226
|
+
typeof console !== t && (k.call(this), this[T].apply(this, arguments));
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
|
-
function _(
|
|
230
|
-
return v(
|
|
229
|
+
function _(T, L, C) {
|
|
230
|
+
return v(T) || w.apply(this, arguments);
|
|
231
231
|
}
|
|
232
|
-
function P(
|
|
232
|
+
function P(T, L) {
|
|
233
233
|
var C = this, Z, N, X, te = "loglevel";
|
|
234
|
-
typeof
|
|
234
|
+
typeof T == "string" ? te += ":" + T : typeof T == "symbol" && (te = void 0);
|
|
235
235
|
function je(V) {
|
|
236
236
|
var U = (s[V] || "silent").toUpperCase();
|
|
237
237
|
if (!(typeof window === t || !te)) {
|
|
@@ -282,7 +282,7 @@ function Wi() {
|
|
|
282
282
|
return U;
|
|
283
283
|
throw new TypeError("log.setLevel() called with invalid level: " + V);
|
|
284
284
|
}
|
|
285
|
-
C.name =
|
|
285
|
+
C.name = T, C.levels = {
|
|
286
286
|
TRACE: 0,
|
|
287
287
|
DEBUG: 1,
|
|
288
288
|
INFO: 2,
|
|
@@ -329,8 +329,8 @@ function Wi() {
|
|
|
329
329
|
});
|
|
330
330
|
})(Rt)), Rt.exports;
|
|
331
331
|
}
|
|
332
|
-
var
|
|
333
|
-
const Ke = /* @__PURE__ */
|
|
332
|
+
var Ji = Ki();
|
|
333
|
+
const Ke = /* @__PURE__ */ Ya(Ji), Zi = K`
|
|
334
334
|
:host {
|
|
335
335
|
--enegelai-bot-width: 420px;
|
|
336
336
|
--enegelai-bot-base-font-size: 16px;
|
|
@@ -641,7 +641,7 @@ const Ke = /* @__PURE__ */ Wa(Gi), Xi = K`
|
|
|
641
641
|
}
|
|
642
642
|
|
|
643
643
|
|
|
644
|
-
`,
|
|
644
|
+
`, Ka = K`
|
|
645
645
|
${ke}
|
|
646
646
|
|
|
647
647
|
:host {
|
|
@@ -666,45 +666,45 @@ const Ke = /* @__PURE__ */ Wa(Gi), Xi = K`
|
|
|
666
666
|
color: white;
|
|
667
667
|
}
|
|
668
668
|
`;
|
|
669
|
-
var
|
|
670
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
669
|
+
var Qi = Object.defineProperty, es = Object.getOwnPropertyDescriptor, ca = (a, e, t, i) => {
|
|
670
|
+
for (var s = i > 1 ? void 0 : i ? es(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
671
671
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
672
|
-
return i && s &&
|
|
672
|
+
return i && s && Qi(e, t, s), s;
|
|
673
673
|
};
|
|
674
674
|
let pt = class extends Fe {
|
|
675
675
|
constructor() {
|
|
676
676
|
super(...arguments), this.color = "primary", this.svg = "";
|
|
677
677
|
}
|
|
678
678
|
render() {
|
|
679
|
-
return
|
|
679
|
+
return p`<span class="cb-icon" part="base">${G(this.svg)}</span>`;
|
|
680
680
|
}
|
|
681
681
|
};
|
|
682
|
-
pt.styles =
|
|
683
|
-
|
|
682
|
+
pt.styles = Ka;
|
|
683
|
+
ca([
|
|
684
684
|
x({ type: String })
|
|
685
685
|
], pt.prototype, "color", 2);
|
|
686
|
-
|
|
686
|
+
ca([
|
|
687
687
|
x({ type: String })
|
|
688
688
|
], pt.prototype, "svg", 2);
|
|
689
|
-
pt =
|
|
689
|
+
pt = ca([
|
|
690
690
|
J("cb-icon")
|
|
691
691
|
], pt);
|
|
692
|
-
let
|
|
692
|
+
let ts = (a) => crypto.getRandomValues(new Uint8Array(a)), as = (a, e, t) => {
|
|
693
693
|
let i = (2 << Math.log2(a.length - 1)) - 1, s = -~(1.6 * i * e / a.length);
|
|
694
694
|
return (r = e) => {
|
|
695
695
|
let o = "";
|
|
696
696
|
for (; ; ) {
|
|
697
|
-
let f = t(s),
|
|
698
|
-
for (;
|
|
699
|
-
if (o += a[f[
|
|
697
|
+
let f = t(s), b = s | 0;
|
|
698
|
+
for (; b--; )
|
|
699
|
+
if (o += a[f[b] & i] || "", o.length >= r) return o;
|
|
700
700
|
}
|
|
701
701
|
};
|
|
702
|
-
},
|
|
703
|
-
const
|
|
702
|
+
}, is = (a, e = 21) => as(a, e | 0, ts);
|
|
703
|
+
const ss = is("1234567890abcdefghijklmnopqrstuvwxyz", 10);
|
|
704
704
|
function ce(a = 10) {
|
|
705
|
-
return
|
|
705
|
+
return ss(a);
|
|
706
706
|
}
|
|
707
|
-
function
|
|
707
|
+
function ns(a) {
|
|
708
708
|
return new Promise((e, t) => {
|
|
709
709
|
try {
|
|
710
710
|
navigator.clipboard.writeText(a).then(() => {
|
|
@@ -715,7 +715,7 @@ function ts(a) {
|
|
|
715
715
|
}
|
|
716
716
|
});
|
|
717
717
|
}
|
|
718
|
-
function
|
|
718
|
+
function Ja(a = !0, e = null) {
|
|
719
719
|
return new Promise((t) => {
|
|
720
720
|
const i = document.createElement("input");
|
|
721
721
|
i.type = "file", a && (i.multiple = !0), i.accept = e || ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3", i.style.display = "none", i.addEventListener("change", () => {
|
|
@@ -731,10 +731,127 @@ function xt(a) {
|
|
|
731
731
|
let i = a.replace(/https?:\/\/[^\s<]+/g, (s) => s.replace(/&/g, e)).replace(/&(?!lt;|gt;)/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
732
732
|
return i = i.replace(/<br\s*\/?>/gi, "<br>"), i = i.replace(new RegExp(e, "g"), "&"), i;
|
|
733
733
|
}
|
|
734
|
+
const rs = {
|
|
735
|
+
info: () => {
|
|
736
|
+
},
|
|
737
|
+
warn: () => {
|
|
738
|
+
}
|
|
739
|
+
};
|
|
740
|
+
function os(a, e = window.location, t = rs) {
|
|
741
|
+
const i = e.href, s = `${e.pathname}${e.search}${e.hash}`;
|
|
742
|
+
if (!a || typeof a != "object")
|
|
743
|
+
return t.info(`C7O-BOT:PAGES-RULES: Bot enabled on "${i}": pagesRules is not configured.`), !0;
|
|
744
|
+
const r = a, o = Aa(r.disabledPages, "disabledPages", s, i, t);
|
|
745
|
+
if (o)
|
|
746
|
+
return t.info(
|
|
747
|
+
`C7O-BOT:PAGES-RULES: Bot disabled on "${i}": ${o.ruleSet}[${o.index}] ${o.matchType} "${o.pattern}" matched ${o.target} "${o.value}".`
|
|
748
|
+
), !1;
|
|
749
|
+
const f = Za(r.enabledPages, "enabledPages", t), b = Aa(f, "enabledPages", s, i, t);
|
|
750
|
+
return b ? (t.info(
|
|
751
|
+
`C7O-BOT:PAGES-RULES: Bot enabled on "${i}": ${b.ruleSet}[${b.index}] ${b.matchType} "${b.pattern}" matched ${b.target} "${b.value}".`
|
|
752
|
+
), !0) : f.length > 0 ? (t.info(`C7O-BOT:PAGES-RULES: Bot disabled on "${i}": enabledPages is configured, but no enabledPages regex matched path "${s}" or URL "${i}".`), !1) : (t.info(`C7O-BOT:PAGES-RULES: Bot enabled on "${i}": no disabledPages regex matched and enabledPages is not configured.`), !0);
|
|
753
|
+
}
|
|
754
|
+
function Aa(a, e, t, i, s) {
|
|
755
|
+
const r = Za(a, e, s);
|
|
756
|
+
for (let o = 0; o < r.length; o += 1) {
|
|
757
|
+
const f = r[o], b = cs(f, t, i);
|
|
758
|
+
if (b)
|
|
759
|
+
return {
|
|
760
|
+
ruleSet: e,
|
|
761
|
+
index: o,
|
|
762
|
+
pattern: Xt(f),
|
|
763
|
+
matchType: "literal",
|
|
764
|
+
target: b.target,
|
|
765
|
+
value: b.value
|
|
766
|
+
};
|
|
767
|
+
const v = fs(f, e, o, s);
|
|
768
|
+
if (v) {
|
|
769
|
+
if (Ma(v, t))
|
|
770
|
+
return {
|
|
771
|
+
ruleSet: e,
|
|
772
|
+
index: o,
|
|
773
|
+
pattern: Xt(f),
|
|
774
|
+
matchType: "regex",
|
|
775
|
+
target: "path",
|
|
776
|
+
value: t
|
|
777
|
+
};
|
|
778
|
+
if (Ma(v, i))
|
|
779
|
+
return {
|
|
780
|
+
ruleSet: e,
|
|
781
|
+
index: o,
|
|
782
|
+
pattern: Xt(f),
|
|
783
|
+
matchType: "regex",
|
|
784
|
+
target: "url",
|
|
785
|
+
value: i
|
|
786
|
+
};
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
return null;
|
|
790
|
+
}
|
|
791
|
+
function cs(a, e, t) {
|
|
792
|
+
if (typeof a != "string")
|
|
793
|
+
return null;
|
|
794
|
+
const i = a.trim();
|
|
795
|
+
if (!i)
|
|
796
|
+
return null;
|
|
797
|
+
if (i === e)
|
|
798
|
+
return {
|
|
799
|
+
target: "path",
|
|
800
|
+
value: e
|
|
801
|
+
};
|
|
802
|
+
if (i === t)
|
|
803
|
+
return {
|
|
804
|
+
target: "url",
|
|
805
|
+
value: t
|
|
806
|
+
};
|
|
807
|
+
const s = ls(i, t);
|
|
808
|
+
return s && s === t ? {
|
|
809
|
+
target: "url",
|
|
810
|
+
value: t
|
|
811
|
+
} : null;
|
|
812
|
+
}
|
|
813
|
+
function ls(a, e) {
|
|
814
|
+
if (!ds(a) && !a.startsWith("/"))
|
|
815
|
+
return null;
|
|
816
|
+
try {
|
|
817
|
+
return new URL(a, e).href;
|
|
818
|
+
} catch {
|
|
819
|
+
return null;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
function ds(a) {
|
|
823
|
+
return /^[a-z][a-z\d+\-.]*:\/\//i.test(a);
|
|
824
|
+
}
|
|
825
|
+
function Za(a, e, t) {
|
|
826
|
+
return Array.isArray(a) ? a : typeof a == "string" || a instanceof RegExp ? [a] : (a != null && t.warn(`C7O-BOT:PAGES-RULES: Ignoring ${e}: expected an array of regex strings.`), []);
|
|
827
|
+
}
|
|
828
|
+
function fs(a, e, t, i) {
|
|
829
|
+
if (a instanceof RegExp)
|
|
830
|
+
return a;
|
|
831
|
+
if (typeof a != "string")
|
|
832
|
+
return i.warn(`C7O-BOT:PAGES-RULES: Ignoring ${e}[${t}]: expected a regex string.`), null;
|
|
833
|
+
const s = a.trim();
|
|
834
|
+
if (!s)
|
|
835
|
+
return i.warn(`C7O-BOT:PAGES-RULES: Ignoring ${e}[${t}]: regex string is empty.`), null;
|
|
836
|
+
try {
|
|
837
|
+
const r = s.match(/^\/(.+)\/([dgimsuvy]*)$/);
|
|
838
|
+
return r ? new RegExp(r[1], r[2]) : new RegExp(s);
|
|
839
|
+
} catch (r) {
|
|
840
|
+
return i.warn(`C7O-BOT:PAGES-RULES: Ignoring invalid regex ${e}[${t}] "${s}": ${r?.message || r}`), null;
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
function Ma(a, e) {
|
|
844
|
+
a.lastIndex = 0;
|
|
845
|
+
const t = a.test(e);
|
|
846
|
+
return a.lastIndex = 0, t;
|
|
847
|
+
}
|
|
848
|
+
function Xt(a) {
|
|
849
|
+
return a instanceof RegExp ? a.toString() : String(a);
|
|
850
|
+
}
|
|
734
851
|
const ne = Ke.noConflict();
|
|
735
852
|
ne.setLevel("info");
|
|
736
|
-
const
|
|
737
|
-
class
|
|
853
|
+
const Yt = 3e4;
|
|
854
|
+
class hs {
|
|
738
855
|
constructor(e = {}) {
|
|
739
856
|
this.id = 0, this.url = e?.url || null, this.orgId = e?.orgId || null, this.botId = e?.botId || null, this.convId = e?.convId || null, this._options = e || {}, this._ws = null, this.started = !1, this.connected = !1, this.connecting = !1, this.suspendDetected = !1, this.onMessage = e?.onMessage || null, this.onConnecting = e?.onConnecting || null, this.onConnectError = e?.onConnectError || null, this.onClose = e?.onClose || null, this.queue = e?.queue || [], this.pause = (t) => new Promise((i) => setTimeout(i, t)), this.lastTickTs = 0, this.lastAckTs = 0, this.tickInterval = null, ne.info(`WSC: Created, url: ${this.url}`);
|
|
740
857
|
}
|
|
@@ -802,7 +919,7 @@ class as {
|
|
|
802
919
|
async start() {
|
|
803
920
|
this.started = !0, this.connect(), this.lastTickTs = Date.now(), this.tickInterval = setInterval(() => {
|
|
804
921
|
this.tick();
|
|
805
|
-
},
|
|
922
|
+
}, Yt);
|
|
806
923
|
}
|
|
807
924
|
async stop() {
|
|
808
925
|
this.started = !1, this.disconnect(), this.tickInterval && (clearInterval(this.tickInterval), this.tickInterval = null);
|
|
@@ -845,7 +962,7 @@ class as {
|
|
|
845
962
|
const e = Date.now();
|
|
846
963
|
let t = !1;
|
|
847
964
|
const i = e - this.lastAckTs;
|
|
848
|
-
i >
|
|
965
|
+
i > Yt + 5e3 && (t = !0, ne.info(`WSC: checkConnection: connection loss detected - last ack delay ${i} msec, reconnecting`)), t && this.disconnect();
|
|
849
966
|
}
|
|
850
967
|
checkConnectionOnLifecycleResume() {
|
|
851
968
|
if (!this.connecting)
|
|
@@ -853,7 +970,7 @@ class as {
|
|
|
853
970
|
try {
|
|
854
971
|
this._ws.send(JSON.stringify({ type: "heartbeat", id: ce() })), this.lastTickTs = Date.now(), this.tickInterval && clearInterval(this.tickInterval), this.tickInterval = setInterval(() => {
|
|
855
972
|
this.tick();
|
|
856
|
-
},
|
|
973
|
+
}, Yt);
|
|
857
974
|
} catch {
|
|
858
975
|
this.disconnect();
|
|
859
976
|
}
|
|
@@ -908,7 +1025,7 @@ class as {
|
|
|
908
1025
|
});
|
|
909
1026
|
}*/
|
|
910
1027
|
}
|
|
911
|
-
class
|
|
1028
|
+
class us {
|
|
912
1029
|
constructor(e = {}) {
|
|
913
1030
|
this.name = e.name || "EventEmitter", this.events = {};
|
|
914
1031
|
}
|
|
@@ -1031,10 +1148,10 @@ class Je {
|
|
|
1031
1148
|
),
|
|
1032
1149
|
// Chunk length
|
|
1033
1150
|
r
|
|
1034
|
-
], f = new Blob(o, { type: "audio/mpeg" }),
|
|
1151
|
+
], f = new Blob(o, { type: "audio/mpeg" }), b = URL.createObjectURL(f);
|
|
1035
1152
|
return {
|
|
1036
1153
|
blob: f,
|
|
1037
|
-
url:
|
|
1154
|
+
url: b,
|
|
1038
1155
|
channelCount: s.length,
|
|
1039
1156
|
sampleRate: e,
|
|
1040
1157
|
duration: r.byteLength / (s.length * e * 2)
|
|
@@ -1042,7 +1159,7 @@ class Je {
|
|
|
1042
1159
|
}
|
|
1043
1160
|
}
|
|
1044
1161
|
globalThis.WavPacker = Je;
|
|
1045
|
-
const
|
|
1162
|
+
const Ta = [
|
|
1046
1163
|
4186.01,
|
|
1047
1164
|
4434.92,
|
|
1048
1165
|
4698.63,
|
|
@@ -1055,7 +1172,7 @@ const Ca = [
|
|
|
1055
1172
|
7040,
|
|
1056
1173
|
7458.62,
|
|
1057
1174
|
7902.13
|
|
1058
|
-
],
|
|
1175
|
+
], bs = [
|
|
1059
1176
|
"C",
|
|
1060
1177
|
"C#",
|
|
1061
1178
|
"D",
|
|
@@ -1068,13 +1185,13 @@ const Ca = [
|
|
|
1068
1185
|
"A",
|
|
1069
1186
|
"A#",
|
|
1070
1187
|
"B"
|
|
1071
|
-
], We = [],
|
|
1188
|
+
], We = [], la = [];
|
|
1072
1189
|
for (let a = 1; a <= 8; a++)
|
|
1073
|
-
for (let e = 0; e <
|
|
1074
|
-
const t =
|
|
1075
|
-
We.push(t / Math.pow(2, 8 - a)),
|
|
1190
|
+
for (let e = 0; e < Ta.length; e++) {
|
|
1191
|
+
const t = Ta[e];
|
|
1192
|
+
We.push(t / Math.pow(2, 8 - a)), la.push(bs[e] + a);
|
|
1076
1193
|
}
|
|
1077
|
-
const Ot = [32, 2e3],
|
|
1194
|
+
const Ot = [32, 2e3], Ia = We.filter((a, e) => We[e] > Ot[0] && We[e] < Ot[1]), ps = la.filter((a, e) => We[e] > Ot[0] && We[e] < Ot[1]);
|
|
1078
1195
|
class lt {
|
|
1079
1196
|
/**
|
|
1080
1197
|
* Retrieves frequency domain data from an AnalyserNode adjusted to a decibel range
|
|
@@ -1089,21 +1206,21 @@ class lt {
|
|
|
1089
1206
|
*/
|
|
1090
1207
|
static getFrequencies(e, t, i, s = "frequency", r = -100, o = -30) {
|
|
1091
1208
|
i || (i = new Float32Array(e.frequencyBinCount), e.getFloatFrequencyData(i));
|
|
1092
|
-
const f = t / 2,
|
|
1209
|
+
const f = t / 2, b = 1 / i.length * f;
|
|
1093
1210
|
let v, k, w;
|
|
1094
1211
|
if (s === "music" || s === "voice") {
|
|
1095
|
-
const E = s === "voice" ?
|
|
1212
|
+
const E = s === "voice" ? Ia : We, T = Array(E.length).fill(r);
|
|
1096
1213
|
for (let L = 0; L < i.length; L++) {
|
|
1097
|
-
const C = L *
|
|
1214
|
+
const C = L * b, Z = i[L];
|
|
1098
1215
|
for (let N = E.length - 1; N >= 0; N--)
|
|
1099
1216
|
if (C > E[N]) {
|
|
1100
|
-
|
|
1217
|
+
T[N] = Math.max(T[N], Z);
|
|
1101
1218
|
break;
|
|
1102
1219
|
}
|
|
1103
1220
|
}
|
|
1104
|
-
v =
|
|
1221
|
+
v = T, k = s === "voice" ? Ia : We, w = s === "voice" ? ps : la;
|
|
1105
1222
|
} else
|
|
1106
|
-
v = Array.from(i), k = v.map((E,
|
|
1223
|
+
v = Array.from(i), k = v.map((E, T) => b * T), w = k.map((E) => `${E.toFixed(2)} Hz`);
|
|
1107
1224
|
const _ = v.map((E) => Math.max(
|
|
1108
1225
|
0,
|
|
1109
1226
|
Math.min((E - r) / (o - r), 1)
|
|
@@ -1129,8 +1246,8 @@ class lt {
|
|
|
1129
1246
|
o.buffer = t;
|
|
1130
1247
|
const f = r.createAnalyser();
|
|
1131
1248
|
f.fftSize = 8192, f.smoothingTimeConstant = 0.1, o.connect(f);
|
|
1132
|
-
const
|
|
1133
|
-
const _ =
|
|
1249
|
+
const b = 1 / 60, v = i / s, k = (w) => {
|
|
1250
|
+
const _ = b * w;
|
|
1134
1251
|
_ < v && r.suspend(_).then(() => {
|
|
1135
1252
|
const P = new Float32Array(f.frequencyBinCount);
|
|
1136
1253
|
f.getFloatFrequencyData(P), this.fftResults.push(P), k(w + 1);
|
|
@@ -1177,7 +1294,7 @@ class lt {
|
|
|
1177
1294
|
}
|
|
1178
1295
|
}
|
|
1179
1296
|
globalThis.AudioAnalysis = lt;
|
|
1180
|
-
const
|
|
1297
|
+
const gs = `
|
|
1181
1298
|
class StreamProcessor extends AudioWorkletProcessor {
|
|
1182
1299
|
constructor() {
|
|
1183
1300
|
super();
|
|
@@ -1266,17 +1383,17 @@ class StreamProcessor extends AudioWorkletProcessor {
|
|
|
1266
1383
|
}
|
|
1267
1384
|
|
|
1268
1385
|
registerProcessor('stream_processor', StreamProcessor);
|
|
1269
|
-
`,
|
|
1386
|
+
`, ms = new Blob([gs], {
|
|
1270
1387
|
type: "application/javascript"
|
|
1271
|
-
}),
|
|
1272
|
-
class
|
|
1388
|
+
}), ys = URL.createObjectURL(ms), vs = ys;
|
|
1389
|
+
class ws {
|
|
1273
1390
|
/**
|
|
1274
1391
|
* Creates a new WavStreamPlayer instance
|
|
1275
1392
|
* @param {{sampleRate?: number}} options
|
|
1276
1393
|
* @returns {WavStreamPlayer}
|
|
1277
1394
|
*/
|
|
1278
1395
|
constructor({ sampleRate: e = 44100, onPlaybackEnded: t = null } = {}) {
|
|
1279
|
-
this.scriptSrc =
|
|
1396
|
+
this.scriptSrc = vs, this.sampleRate = e, this.context = null, this.stream = null, this.analyser = null, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this.onPlaybackEnded = t && typeof t == "function" ? t : null;
|
|
1280
1397
|
}
|
|
1281
1398
|
/**
|
|
1282
1399
|
* Connects the audio context and enables output to speakers
|
|
@@ -1371,8 +1488,8 @@ class ds {
|
|
|
1371
1488
|
return this.getTrackSampleOffset(!0);
|
|
1372
1489
|
}
|
|
1373
1490
|
}
|
|
1374
|
-
globalThis.WavStreamPlayer =
|
|
1375
|
-
const
|
|
1491
|
+
globalThis.WavStreamPlayer = ws;
|
|
1492
|
+
const xs = URL.createObjectURL(
|
|
1376
1493
|
new Blob([`
|
|
1377
1494
|
class UpsampleStreamPCM extends AudioWorkletProcessor {
|
|
1378
1495
|
constructor(options) {
|
|
@@ -1544,7 +1661,7 @@ class UpsampleStreamPCM extends AudioWorkletProcessor {
|
|
|
1544
1661
|
registerProcessor('upsample-stream-pcm', UpsampleStreamPCM);
|
|
1545
1662
|
`], { type: "application/javascript" })
|
|
1546
1663
|
);
|
|
1547
|
-
class
|
|
1664
|
+
class Qa {
|
|
1548
1665
|
/**
|
|
1549
1666
|
* @param {{
|
|
1550
1667
|
* inputSampleRate?: number,
|
|
@@ -1567,12 +1684,12 @@ class Ya {
|
|
|
1567
1684
|
// default decided below by isMobile()
|
|
1568
1685
|
} = {}) {
|
|
1569
1686
|
this.inputSampleRate = e, this.onPlaybackEnded = typeof t == "function" ? t : null, this.debug = !!i;
|
|
1570
|
-
const
|
|
1687
|
+
const b = navigator.userAgent || "", v = /iP(hone|ad|od)/.test(b), k = /CriOS/.test(b), w = /FxiOS/.test(b), _ = /EdgiOS/.test(b), P = /Safari/.test(b) && !/Chrome|Chromium|Edg/.test(b);
|
|
1571
1688
|
this._isSafariMobile = v && P && !k && !w && !_;
|
|
1572
|
-
const E = !!(navigator.userAgentData && typeof navigator.userAgentData.mobile == "boolean" && navigator.userAgentData.mobile),
|
|
1689
|
+
const E = !!(navigator.userAgentData && typeof navigator.userAgentData.mobile == "boolean" && navigator.userAgentData.mobile), T = /Android|iPhone|iPod|Mobile/.test(b), L = (() => {
|
|
1573
1690
|
const Z = navigator.platform || "";
|
|
1574
|
-
return /iPad/.test(
|
|
1575
|
-
})(), C = E ||
|
|
1691
|
+
return /iPad/.test(b) || Z === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
1692
|
+
})(), C = E || T || L;
|
|
1576
1693
|
this._firstTurnRampInMs = s ?? (this._isSafariMobile ? 140 : 0), this._primeMs = r ?? (this._isSafariMobile ? 220 : 0), this._requireGestureToUnlock = o != null ? !!o : !!this._isSafariMobile, this._enableLoopbackRef = f != null ? !!f : !!C, this.context = null, this.analyser = null, this._worklet = null, this._audibleGain = null, this._renderDest = null, this._pcSend = null, this._pcRecv = null, this._firstTurn = !0, this._unlocked = !this._requireGestureToUnlock, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this._onGestureUnlock = this._onGestureUnlock.bind(this);
|
|
1577
1694
|
}
|
|
1578
1695
|
_log(...e) {
|
|
@@ -1589,7 +1706,7 @@ class Ya {
|
|
|
1589
1706
|
/** Build the WebAudio graph. Always audible via direct path; loopback ref is optional and non-critical. */
|
|
1590
1707
|
async connect() {
|
|
1591
1708
|
if (this.context) return !0;
|
|
1592
|
-
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(
|
|
1709
|
+
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(xs), this._worklet = new AudioWorkletNode(this.context, "upsample-stream-pcm", {
|
|
1593
1710
|
processorOptions: {
|
|
1594
1711
|
sourceSampleRate: this.inputSampleRate,
|
|
1595
1712
|
prerollSrc: Math.round(this.inputSampleRate * 0.02)
|
|
@@ -1717,8 +1834,8 @@ class Ya {
|
|
|
1717
1834
|
return this.connect();
|
|
1718
1835
|
}
|
|
1719
1836
|
}
|
|
1720
|
-
globalThis.WavStreamPlayerV2 =
|
|
1721
|
-
const
|
|
1837
|
+
globalThis.WavStreamPlayerV2 = Qa;
|
|
1838
|
+
const ks = `
|
|
1722
1839
|
class AudioProcessor extends AudioWorkletProcessor {
|
|
1723
1840
|
|
|
1724
1841
|
constructor() {
|
|
@@ -1925,17 +2042,17 @@ class AudioProcessor extends AudioWorkletProcessor {
|
|
|
1925
2042
|
}
|
|
1926
2043
|
|
|
1927
2044
|
registerProcessor('audio_processor', AudioProcessor);
|
|
1928
|
-
`,
|
|
2045
|
+
`, _s = new Blob([ks], {
|
|
1929
2046
|
type: "application/javascript"
|
|
1930
|
-
}),
|
|
1931
|
-
class
|
|
2047
|
+
}), Ss = URL.createObjectURL(_s), Cs = Ss;
|
|
2048
|
+
class As {
|
|
1932
2049
|
/**
|
|
1933
2050
|
* Create a new WavRecorder instance
|
|
1934
2051
|
* @param {{sampleRate?: number, outputToSpeakers?: boolean, debug?: boolean}} [options]
|
|
1935
2052
|
* @returns {WavRecorder}
|
|
1936
2053
|
*/
|
|
1937
2054
|
constructor({ sampleRate: e = 44100, outputToSpeakers: t = !1, debug: i = !1 } = {}) {
|
|
1938
|
-
this.scriptSrc =
|
|
2055
|
+
this.scriptSrc = Cs, this.sampleRate = e, this.outputToSpeakers = t, this.debug = !!i, this._deviceChangeCallback = null, this._devices = [], this.stream = null, this.processor = null, this.source = null, this.node = null, this.recording = !1, this._lastEventId = 0, this.eventReceipts = {}, this.eventTimeout = 5e3, this._chunkProcessor = () => {
|
|
1939
2056
|
}, this._chunkProcessorSize = void 0, this._chunkProcessorBuffer = {
|
|
1940
2057
|
raw: new ArrayBuffer(0),
|
|
1941
2058
|
mono: new ArrayBuffer(0)
|
|
@@ -1963,8 +2080,8 @@ class gs {
|
|
|
1963
2080
|
let k, w;
|
|
1964
2081
|
if (e instanceof Int16Array) {
|
|
1965
2082
|
w = e, k = new Float32Array(e.length);
|
|
1966
|
-
for (let
|
|
1967
|
-
k[
|
|
2083
|
+
for (let T = 0; T < e.length; T++)
|
|
2084
|
+
k[T] = e[T] / 32768;
|
|
1968
2085
|
} else if (e instanceof Float32Array)
|
|
1969
2086
|
k = e;
|
|
1970
2087
|
else if (e instanceof Array)
|
|
@@ -1983,11 +2100,11 @@ class gs {
|
|
|
1983
2100
|
};
|
|
1984
2101
|
o = new Je().pack(i, _).blob, r = await o.arrayBuffer();
|
|
1985
2102
|
}
|
|
1986
|
-
const f = await s.decodeAudioData(r),
|
|
2103
|
+
const f = await s.decodeAudioData(r), b = f.getChannelData(0), v = URL.createObjectURL(o);
|
|
1987
2104
|
return {
|
|
1988
2105
|
blob: o,
|
|
1989
2106
|
url: v,
|
|
1990
|
-
values:
|
|
2107
|
+
values: b,
|
|
1991
2108
|
audioBuffer: f
|
|
1992
2109
|
};
|
|
1993
2110
|
}
|
|
@@ -2147,10 +2264,10 @@ class gs {
|
|
|
2147
2264
|
}
|
|
2148
2265
|
const s = new AudioWorkletNode(t, "audio_processor");
|
|
2149
2266
|
s.port.onmessage = (f) => {
|
|
2150
|
-
const { event:
|
|
2151
|
-
if (
|
|
2267
|
+
const { event: b, id: v, data: k } = f.data;
|
|
2268
|
+
if (b === "receipt")
|
|
2152
2269
|
this.eventReceipts[v] = k;
|
|
2153
|
-
else if (
|
|
2270
|
+
else if (b === "chunk")
|
|
2154
2271
|
if (this._chunkProcessorSize) {
|
|
2155
2272
|
const w = this._chunkProcessorBuffer;
|
|
2156
2273
|
this._chunkProcessorBuffer = {
|
|
@@ -2264,8 +2381,8 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2264
2381
|
return this.listenForDeviceChange(null), this.processor && await this.end(), !0;
|
|
2265
2382
|
}
|
|
2266
2383
|
}
|
|
2267
|
-
globalThis.WavRecorder =
|
|
2268
|
-
const
|
|
2384
|
+
globalThis.WavRecorder = As;
|
|
2385
|
+
const Ms = URL.createObjectURL(
|
|
2269
2386
|
new Blob([`
|
|
2270
2387
|
class DownsampleRecorder extends AudioWorkletProcessor {
|
|
2271
2388
|
constructor(options) {
|
|
@@ -2486,7 +2603,7 @@ class ot {
|
|
|
2486
2603
|
echoCancellationType: this.captureInfo.trackSettings?.echoCancellationType ?? null
|
|
2487
2604
|
}, this._log("Granted track settings:", this.captureInfo.trackSettings), this.audioCtx = new (window.AudioContext || window.webkitAudioContext)({
|
|
2488
2605
|
latencyHint: "interactive"
|
|
2489
|
-
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(
|
|
2606
|
+
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(Ms);
|
|
2490
2607
|
const s = Math.round(this.targetSampleRate * this.chunkMs / 1e3);
|
|
2491
2608
|
return this.node = new AudioWorkletNode(this.audioCtx, "downsample-recorder", {
|
|
2492
2609
|
processorOptions: {
|
|
@@ -2553,8 +2670,8 @@ class ot {
|
|
|
2553
2670
|
if (typeof e == "function") {
|
|
2554
2671
|
let t = 0, i = "";
|
|
2555
2672
|
const s = (o) => o.map((f) => f.deviceId).sort().join(","), r = async () => {
|
|
2556
|
-
const o = ++t, f = await this.listDevices(),
|
|
2557
|
-
o === t &&
|
|
2673
|
+
const o = ++t, f = await this.listDevices(), b = s(f);
|
|
2674
|
+
o === t && b !== i && (i = b, e(f.slice()));
|
|
2558
2675
|
};
|
|
2559
2676
|
return navigator.mediaDevices.addEventListener("devicechange", r), r(), this._deviceChangeCallback = r, !0;
|
|
2560
2677
|
}
|
|
@@ -2562,11 +2679,11 @@ class ot {
|
|
|
2562
2679
|
}
|
|
2563
2680
|
}
|
|
2564
2681
|
globalThis.WavRecorderV2 = ot;
|
|
2565
|
-
class
|
|
2682
|
+
class Ts {
|
|
2566
2683
|
constructor(e = {}) {
|
|
2567
|
-
this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor =
|
|
2684
|
+
this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor = Ea(e.floor ?? 0.12), this.attackSamples = Ce(e.attackMs ?? 12, this.sr), this.releaseSamples = Ce(e.releaseMs ?? 150, this.sr), this.escapeAttackSamples = Ce(e.escapeAttackMs ?? 10, this.sr), this.defaultGuardSamples = Ce(e.defaultGuardMs ?? 0, this.sr), this.gain = 1, this.target = 1, this.rampRemain = 0, this._step = 0, this.duckActive = !1, this.guardRemain = 0, this.vadEnabled = e.vadEnabled !== !1;
|
|
2568
2685
|
const t = Math.max(2, e.vadFastMs ?? 10), i = Math.max(t + 20, e.vadSlowMs ?? 250);
|
|
2569
|
-
this.alphaFast =
|
|
2686
|
+
this.alphaFast = Pa(t, this.sr), this.alphaSlow = Pa(i, this.sr), this.vadFast = 0, this.vadSlow = 1e-12, this.vadRatio = $a(e.vadTriggerDb ?? 9), this.vadAttackSamples = Ce(e.vadAttackMs ?? 18, this.sr), this.vadHangSamples = Ce(e.vadHangMs ?? 120, this.sr), this._speechCount = 0, this._hangRemain = 0, this._speaking = !1, this._nextShield = null, this._shieldActive = !1, this._shieldFloor = this.floor, this._shieldHardMute = !1, this._eps = 1e-12;
|
|
2570
2687
|
}
|
|
2571
2688
|
/** Arm a one‑shot, VAD‑escapable shield for the NEXT TTS start. */
|
|
2572
2689
|
armFirstTurnShield({
|
|
@@ -2580,8 +2697,8 @@ class ys {
|
|
|
2580
2697
|
vadAttackMs: r,
|
|
2581
2698
|
vadHangMs: o
|
|
2582
2699
|
} = {}) {
|
|
2583
|
-
const
|
|
2584
|
-
s != null && (
|
|
2700
|
+
const b = { durationSamp: Ce(e, this.sr), floor: Ea(t), hardMute: !!i };
|
|
2701
|
+
s != null && (b.vadRatio = $a(s)), r != null && (b.vadAttackSamples = Ce(r, this.sr)), o != null && (b.vadHangSamples = Ce(o, this.sr)), this._nextShield = b;
|
|
2585
2702
|
}
|
|
2586
2703
|
onTTSStart(e) {
|
|
2587
2704
|
if (this.duckActive = !0, this._nextShield) {
|
|
@@ -2600,12 +2717,12 @@ class ys {
|
|
|
2600
2717
|
const t = e.length;
|
|
2601
2718
|
if (!t) return e;
|
|
2602
2719
|
const i = new Int16Array(t);
|
|
2603
|
-
let s = this.gain, r = this._step, o = this.rampRemain, f = this.vadFast,
|
|
2720
|
+
let s = this.gain, r = this._step, o = this.rampRemain, f = this.vadFast, b = this.vadSlow, v = this._speechCount, k = this._hangRemain, w = this._speaking;
|
|
2604
2721
|
const _ = this._eps, P = this.vadRatio;
|
|
2605
2722
|
for (let E = 0; E < t; E++) {
|
|
2606
2723
|
this.guardRemain > 0 && this.guardRemain--;
|
|
2607
|
-
const
|
|
2608
|
-
f = f + (1 - this.alphaFast) * (L - f),
|
|
2724
|
+
const T = e[E] / 32768, L = T * T;
|
|
2725
|
+
f = f + (1 - this.alphaFast) * (L - f), b = b + (1 - this.alphaSlow) * (L - b), this.vadEnabled && (f / (b + _) >= P ? v < this.vadAttackSamples && v++ : v = 0, v >= this.vadAttackSamples ? (w = !0, k = this.vadHangSamples) : k > 0 ? (w = !0, k--) : w = !1), w && this._shieldActive && (this._shieldActive = !1, this.target = 1, o = this.escapeAttackSamples, r = o > 0 ? (1 - s) / o : 0);
|
|
2609
2726
|
let C = 1, Z = 0, N = !1;
|
|
2610
2727
|
if (this.duckActive) {
|
|
2611
2728
|
const te = this.guardRemain > 0;
|
|
@@ -2616,26 +2733,26 @@ class ys {
|
|
|
2616
2733
|
let X;
|
|
2617
2734
|
N && !w ? X = 0 : (X = e[E] * s, X > 32767 ? X = 32767 : X < -32768 && (X = -32768)), i[E] = X | 0;
|
|
2618
2735
|
}
|
|
2619
|
-
return this.gain = s, this._step = r, this.rampRemain = o, this.vadFast = f, this.vadSlow =
|
|
2736
|
+
return this.gain = s, this._step = r, this.rampRemain = o, this.vadFast = f, this.vadSlow = b, this._speechCount = v, this._hangRemain = k, this._speaking = w, i;
|
|
2620
2737
|
}
|
|
2621
2738
|
_startRamp(e, t) {
|
|
2622
2739
|
this.target = e, this.rampRemain = t, this.rampRemain <= 0 ? (this.gain = this.target, this._step = 0) : this._step = (this.target - this.gain) / this.rampRemain;
|
|
2623
2740
|
}
|
|
2624
2741
|
}
|
|
2625
|
-
function
|
|
2742
|
+
function Ea(a) {
|
|
2626
2743
|
return Math.max(0, Math.min(1, a));
|
|
2627
2744
|
}
|
|
2628
2745
|
function Ce(a, e) {
|
|
2629
2746
|
return Math.max(0, Math.round(a * e / 1e3));
|
|
2630
2747
|
}
|
|
2631
|
-
function
|
|
2748
|
+
function $a(a) {
|
|
2632
2749
|
return Math.pow(10, a / 10);
|
|
2633
2750
|
}
|
|
2634
|
-
function
|
|
2751
|
+
function Pa(a, e) {
|
|
2635
2752
|
const t = Math.max(1, a * e / 1e3);
|
|
2636
2753
|
return Math.exp(-1 / t);
|
|
2637
2754
|
}
|
|
2638
|
-
class
|
|
2755
|
+
class Is {
|
|
2639
2756
|
/**
|
|
2640
2757
|
* @param {object} opts
|
|
2641
2758
|
* @param {number} opts.sampleRate - Hz of your PCM (e.g., 24000)
|
|
@@ -2707,17 +2824,17 @@ class vs {
|
|
|
2707
2824
|
const r = this._downsample(t, this.ds), o = r.length;
|
|
2708
2825
|
if (this.pbFilled - i <= 0)
|
|
2709
2826
|
return this._float32ToInt16(t);
|
|
2710
|
-
const
|
|
2827
|
+
const b = this._iterDownsampleView(this.pb, this.pbWrite, this.pbFilled, this.ds), k = b.length - o;
|
|
2711
2828
|
if (k <= 0)
|
|
2712
2829
|
return this._float32ToInt16(t);
|
|
2713
|
-
const w = this.preEmphasis > 0, _ = w ? this._preEmphasize(r, this.preEmphasis, "mic") : r, P = w ? this._preEmphasize(
|
|
2830
|
+
const w = this.preEmphasis > 0, _ = w ? this._preEmphasize(r, this.preEmphasis, "mic") : r, P = w ? this._preEmphasize(b, this.preEmphasis, "pb") : b;
|
|
2714
2831
|
let E = 0;
|
|
2715
2832
|
for (let ae = 0; ae < o; ae++) {
|
|
2716
2833
|
const he = _[ae];
|
|
2717
2834
|
E += he * he;
|
|
2718
2835
|
}
|
|
2719
2836
|
E = Math.sqrt(E) + 1e-12;
|
|
2720
|
-
const
|
|
2837
|
+
const T = this.sr / this.ds, L = (this.baseLatencySec + this.outputLatencySec) * 1e3 + this.latencyCompMs, C = Math.max(0, Math.round(L * T / 1e3)), Z = Math.max(1, Math.round(this.windowMs * T / 1e3));
|
|
2721
2838
|
let N = 0, X = k;
|
|
2722
2839
|
C > 0 && (N = Math.max(0, Math.min(k, C - Z)), X = Math.max(N, Math.min(k, C + Z)));
|
|
2723
2840
|
const te = Math.max(1, Math.floor(this.hop / this.ds));
|
|
@@ -2784,13 +2901,13 @@ class vs {
|
|
|
2784
2901
|
*/
|
|
2785
2902
|
_iterDownsampleView(e, t, i, s) {
|
|
2786
2903
|
const r = Math.floor(i / s), o = new Float32Array(r);
|
|
2787
|
-
let
|
|
2904
|
+
let b = (t - i + e.length) % e.length, v = 0, k = 0;
|
|
2788
2905
|
for (; v < r; )
|
|
2789
|
-
k === 0 ? (o[v++] = e[
|
|
2906
|
+
k === 0 ? (o[v++] = e[b], k = s - 1) : k--, b++, b === e.length && (b = 0);
|
|
2790
2907
|
return o;
|
|
2791
2908
|
}
|
|
2792
2909
|
}
|
|
2793
|
-
class
|
|
2910
|
+
class Es {
|
|
2794
2911
|
/**
|
|
2795
2912
|
* @param {object} opts
|
|
2796
2913
|
* @param {number} opts.sampleRate - PCM sample rate (e.g., 24000)
|
|
@@ -2843,13 +2960,13 @@ class ws {
|
|
|
2843
2960
|
this.pbFilled >= i && i >= r && (o = this._bestNormalizedCorrelation(t));
|
|
2844
2961
|
const f = this._alphaForMs(s, o >= this._corrSmoothed ? this.corrAttackMs : this.corrReleaseMs);
|
|
2845
2962
|
this._corrSmoothed = (1 - f) * this._corrSmoothed + f * o;
|
|
2846
|
-
let
|
|
2847
|
-
this._corrSmoothed <= this.low ?
|
|
2963
|
+
let b;
|
|
2964
|
+
this._corrSmoothed <= this.low ? b = 1 : this._corrSmoothed >= this.high ? b = this.gainFloor : b = 1 + (this._corrSmoothed - this.low) / (this.high - this.low) * (this.gainFloor - 1);
|
|
2848
2965
|
const v = this._alphaForMs(
|
|
2849
2966
|
s,
|
|
2850
|
-
|
|
2967
|
+
b < this._gainSmoothed ? this.gainAttackMs : this.gainReleaseMs
|
|
2851
2968
|
);
|
|
2852
|
-
this._gainSmoothed = (1 - v) * this._gainSmoothed + v *
|
|
2969
|
+
this._gainSmoothed = (1 - v) * this._gainSmoothed + v * b;
|
|
2853
2970
|
const k = this._gainSmoothed;
|
|
2854
2971
|
for (let w = 0; w < i; w++) t[w] *= k;
|
|
2855
2972
|
return this._float32ToInt16(t);
|
|
@@ -2876,17 +2993,17 @@ class ws {
|
|
|
2876
2993
|
for (let v = 0; v < i; v++) o += t[v] * t[v];
|
|
2877
2994
|
o = Math.sqrt(o) + 1e-12;
|
|
2878
2995
|
const f = Math.max(1, Math.floor(this.hop / this.ds));
|
|
2879
|
-
let
|
|
2996
|
+
let b = -1;
|
|
2880
2997
|
for (let v = 0; v <= r; v += f) {
|
|
2881
2998
|
let k = 0, w = 0;
|
|
2882
2999
|
for (let E = 0; E < i; E++) {
|
|
2883
|
-
const
|
|
2884
|
-
k +=
|
|
3000
|
+
const T = t[E], L = s[v + E];
|
|
3001
|
+
k += T * L, w += L * L;
|
|
2885
3002
|
}
|
|
2886
3003
|
const _ = o * (Math.sqrt(w) + 1e-12), P = _ > 0 ? k / _ : 0;
|
|
2887
|
-
if (P >
|
|
3004
|
+
if (P > b && (b = P), b > Math.min(0.98, this.high + 0.25)) break;
|
|
2888
3005
|
}
|
|
2889
|
-
return Math.max(0, Math.min(1,
|
|
3006
|
+
return Math.max(0, Math.min(1, b));
|
|
2890
3007
|
}
|
|
2891
3008
|
_toFloat32Mono(e, t = !1) {
|
|
2892
3009
|
if (e instanceof Float32Array) return t ? e : new Float32Array(e);
|
|
@@ -2921,13 +3038,13 @@ class ws {
|
|
|
2921
3038
|
*/
|
|
2922
3039
|
_iterDownsampleView(e, t, i, s) {
|
|
2923
3040
|
const r = Math.floor(i / s), o = new Float32Array(r);
|
|
2924
|
-
let
|
|
3041
|
+
let b = (t - i + e.length) % e.length, v = 0, k = 0;
|
|
2925
3042
|
for (; v < r; )
|
|
2926
|
-
k === 0 ? (o[v++] = e[
|
|
3043
|
+
k === 0 ? (o[v++] = e[b], k = s - 1) : k--, b++, b === e.length && (b = 0);
|
|
2927
3044
|
return o;
|
|
2928
3045
|
}
|
|
2929
3046
|
}
|
|
2930
|
-
class
|
|
3047
|
+
class $s {
|
|
2931
3048
|
/**
|
|
2932
3049
|
* @param {object} opts
|
|
2933
3050
|
* @param {number} opts.sampleRate - Mic PCM sample rate (e.g., 24000)
|
|
@@ -2972,26 +3089,26 @@ class xs {
|
|
|
2972
3089
|
}
|
|
2973
3090
|
const Ne = Ke.noConflict();
|
|
2974
3091
|
Ne.setLevel("info");
|
|
2975
|
-
class gt extends
|
|
3092
|
+
class gt extends us {
|
|
2976
3093
|
constructor(e = {}) {
|
|
2977
3094
|
super({ name: "WebAudioProcessorV2" }), this.options = e, this.muted = !1, this.audioRecorder = new ot({
|
|
2978
3095
|
targetSampleRate: 24e3,
|
|
2979
3096
|
debug: !!e.debug
|
|
2980
|
-
}), this.audioPlayer = new
|
|
3097
|
+
}), this.audioPlayer = new Qa({
|
|
2981
3098
|
inputSampleRate: 24e3,
|
|
2982
3099
|
onPlaybackEnded: this.handleOnPlaybackEnded.bind(this),
|
|
2983
3100
|
firstTurnRampInMs: 200,
|
|
2984
3101
|
primeMs: 200,
|
|
2985
3102
|
// keep or remove; it’s harmless
|
|
2986
3103
|
debug: !!e.debug
|
|
2987
|
-
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new
|
|
3104
|
+
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new $s({
|
|
2988
3105
|
sampleRate: 24e3,
|
|
2989
3106
|
windowMs: this.firstTurnDropMs,
|
|
2990
3107
|
partialPass: !0,
|
|
2991
3108
|
// pass remainder of crossing frame
|
|
2992
3109
|
hardDrop: !0
|
|
2993
3110
|
// set true if you prefer simpler "drop whole frame"
|
|
2994
|
-
}), this.ducker = new
|
|
3111
|
+
}), this.ducker = new Ts({
|
|
2995
3112
|
sampleRate: 24e3,
|
|
2996
3113
|
floor: 0.12,
|
|
2997
3114
|
attackMs: 12,
|
|
@@ -3006,7 +3123,7 @@ class gt extends is {
|
|
|
3006
3123
|
vadSlowMs: 250,
|
|
3007
3124
|
vadAttackMs: 18,
|
|
3008
3125
|
vadHangMs: 120
|
|
3009
|
-
}), this.mixMinus = new
|
|
3126
|
+
}), this.mixMinus = new Is({
|
|
3010
3127
|
sampleRate: 24e3,
|
|
3011
3128
|
bufferMs: 1e3,
|
|
3012
3129
|
threshold: 0.3,
|
|
@@ -3015,7 +3132,7 @@ class gt extends is {
|
|
|
3015
3132
|
hop: 64,
|
|
3016
3133
|
downsampleFactor: 3,
|
|
3017
3134
|
minCorrLenMs: 15
|
|
3018
|
-
}), this.mixMinusSmooth = new
|
|
3135
|
+
}), this.mixMinusSmooth = new Es({
|
|
3019
3136
|
sampleRate: 24e3,
|
|
3020
3137
|
bufferMs: 800,
|
|
3021
3138
|
lowThresh: 0.25,
|
|
@@ -3190,17 +3307,17 @@ class gt extends is {
|
|
|
3190
3307
|
}
|
|
3191
3308
|
}
|
|
3192
3309
|
globalThis.WebAudioProcessorV2 = gt;
|
|
3193
|
-
var
|
|
3194
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
3310
|
+
var Ps = Object.defineProperty, Ls = Object.getOwnPropertyDescriptor, st = (a, e, t, i) => {
|
|
3311
|
+
for (var s = i > 1 ? void 0 : i ? Ls(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
3195
3312
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
3196
|
-
return i && s &&
|
|
3313
|
+
return i && s && Ps(e, t, s), s;
|
|
3197
3314
|
};
|
|
3198
|
-
const It = "cb-toast-outlet",
|
|
3199
|
-
function
|
|
3315
|
+
const It = "cb-toast-outlet", La = "cb-toast-outlet-style";
|
|
3316
|
+
function Rs() {
|
|
3200
3317
|
let a = document.getElementById(It);
|
|
3201
|
-
if (a || (a = document.createElement("div"), a.id = It, document.body.appendChild(a)), !document.getElementById(
|
|
3318
|
+
if (a || (a = document.createElement("div"), a.id = It, document.body.appendChild(a)), !document.getElementById(La)) {
|
|
3202
3319
|
const e = document.createElement("style");
|
|
3203
|
-
e.id =
|
|
3320
|
+
e.id = La, e.textContent = `
|
|
3204
3321
|
/* Global outlet that holds all toasts */
|
|
3205
3322
|
#${It} {
|
|
3206
3323
|
position: fixed;
|
|
@@ -3224,8 +3341,8 @@ function Ss() {
|
|
|
3224
3341
|
}
|
|
3225
3342
|
return a;
|
|
3226
3343
|
}
|
|
3227
|
-
function
|
|
3228
|
-
const e =
|
|
3344
|
+
function ei(a) {
|
|
3345
|
+
const e = Rs(), t = document.createElement("cb-toast");
|
|
3229
3346
|
return t.message = a.message, t.variant = a.variant ?? "success", t.duration = typeof a.duration == "number" ? a.duration : 3e3, t.closeable = !!a.closeable, t.icon = a.icon ?? "", t.ariaLive = a.ariaLive ?? "polite", e.appendChild(t), t;
|
|
3230
3347
|
}
|
|
3231
3348
|
let qe = class extends Fe {
|
|
@@ -3247,17 +3364,17 @@ let qe = class extends Fe {
|
|
|
3247
3364
|
}
|
|
3248
3365
|
render() {
|
|
3249
3366
|
const a = ["toast", this.variant, this._open ? "open" : "", this._closing ? "closing" : ""].filter(Boolean).join(" "), e = this.icon || this._defaultIcons[this.variant] || this._defaultIcons.success;
|
|
3250
|
-
return
|
|
3367
|
+
return p`
|
|
3251
3368
|
<div
|
|
3252
3369
|
class=${a}
|
|
3253
3370
|
role="status"
|
|
3254
3371
|
aria-live=${this.ariaLive}
|
|
3255
3372
|
>
|
|
3256
|
-
${
|
|
3373
|
+
${p`<span class="icon" aria-hidden="true">${this._renderIcon(e)}</span>`}
|
|
3257
3374
|
<div class="msg">
|
|
3258
|
-
${this.message ?
|
|
3375
|
+
${this.message ? p`${this.message}` : p`<slot></slot>`}
|
|
3259
3376
|
</div>
|
|
3260
|
-
${this.closeable ?
|
|
3377
|
+
${this.closeable ? p`<button class="close" @click=${this.close} aria-label="Close">×</button>` : Ae}
|
|
3261
3378
|
</div>
|
|
3262
3379
|
`;
|
|
3263
3380
|
}
|
|
@@ -3272,7 +3389,7 @@ let qe = class extends Fe {
|
|
|
3272
3389
|
this._timer && (clearTimeout(this._timer), this._timer = void 0);
|
|
3273
3390
|
}
|
|
3274
3391
|
_renderIcon(a) {
|
|
3275
|
-
return a.trim().startsWith("<") ?
|
|
3392
|
+
return a.trim().startsWith("<") ? p`${G(a)}` : a;
|
|
3276
3393
|
}
|
|
3277
3394
|
};
|
|
3278
3395
|
qe.styles = K`
|
|
@@ -3430,7 +3547,7 @@ function Ze(a) {
|
|
|
3430
3547
|
}
|
|
3431
3548
|
};
|
|
3432
3549
|
}
|
|
3433
|
-
function
|
|
3550
|
+
function zs(a) {
|
|
3434
3551
|
return function e(t, i, s) {
|
|
3435
3552
|
switch (arguments.length) {
|
|
3436
3553
|
case 0:
|
|
@@ -3464,47 +3581,47 @@ function Cs(a) {
|
|
|
3464
3581
|
}
|
|
3465
3582
|
};
|
|
3466
3583
|
}
|
|
3467
|
-
const
|
|
3584
|
+
const Os = Number.isInteger || function(e) {
|
|
3468
3585
|
return e << 0 === e;
|
|
3469
3586
|
};
|
|
3470
|
-
function
|
|
3587
|
+
function Bs(a, e) {
|
|
3471
3588
|
var t = a < 0 ? e.length + a : a;
|
|
3472
3589
|
return e[t];
|
|
3473
3590
|
}
|
|
3474
|
-
var
|
|
3591
|
+
var qs = /* @__PURE__ */ Ze(function(e, t) {
|
|
3475
3592
|
return t == null || t !== t ? e : t;
|
|
3476
3593
|
});
|
|
3477
|
-
function
|
|
3594
|
+
function Ds(a, e) {
|
|
3478
3595
|
for (var t = e, i = 0; i < a.length; i += 1) {
|
|
3479
3596
|
if (t == null)
|
|
3480
3597
|
return;
|
|
3481
3598
|
var s = a[i];
|
|
3482
|
-
|
|
3599
|
+
Os(s) ? t = Bs(s, t) : t = t[s];
|
|
3483
3600
|
}
|
|
3484
3601
|
return t;
|
|
3485
3602
|
}
|
|
3486
|
-
var
|
|
3487
|
-
return
|
|
3603
|
+
var Kt = /* @__PURE__ */ zs(function(e, t, i) {
|
|
3604
|
+
return qs(e, Ds(t, i));
|
|
3488
3605
|
});
|
|
3489
|
-
const Es = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3490
|
-
var
|
|
3606
|
+
const Fs = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3607
|
+
var Hs = Object.defineProperty, O = (a, e, t, i) => {
|
|
3491
3608
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
3492
3609
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
3493
|
-
return s &&
|
|
3610
|
+
return s && Hs(e, t, s), s;
|
|
3494
3611
|
};
|
|
3495
|
-
const
|
|
3496
|
-
|
|
3497
|
-
const ie = "cb_",
|
|
3498
|
-
class R extends
|
|
3612
|
+
const A = Ke.noConflict();
|
|
3613
|
+
A.setLevel("info");
|
|
3614
|
+
const ie = "cb_", js = (a) => new Promise((e) => setTimeout(e, a));
|
|
3615
|
+
class R extends Qt {
|
|
3499
3616
|
constructor() {
|
|
3500
3617
|
super(), this.actionIdCounter = 0, this.currentLoadContext = {}, this.prefilledFormValues = {}, this.wsClient = null, this.checkConnectionOnLifecycleResumePromise = null, this.webAudioProcessor = null, this.webAudioTrackId = null, this.webAudioCurrentMark = null, this.replyMessage = null, this.streamingResponseInProgress = !1, this.streamingResponseLastText = null, this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null, this.tabsBroadcastChannel = new BroadcastChannel("c7o-bot-tabs"), this.tabId = "c7o-bot-tab-" + (self.crypto?.randomUUID?.() || Math.random().toString(36).slice(2)), this.tabsBroadcastChannel.addEventListener("message", this.handleBroadcastMessage.bind(this)), console.log(`c7o: AppState: created, tabId=${this.tabId}`);
|
|
3501
3618
|
}
|
|
3502
3619
|
// this is called at startup
|
|
3503
3620
|
setSetting(e) {
|
|
3504
|
-
|
|
3621
|
+
A.info("appState: Startup: setSetting", e);
|
|
3505
3622
|
const t = this.setting;
|
|
3506
3623
|
!!t && (t.orgId !== e.orgId || t.botId !== e.botId || t.url !== e.url || t.version !== e.version || t.testMode !== e.testMode) && (this.botSettingsInitialized = !1, this.botSettings = null, this.botSettingsRetryTimeout = 5, this.disabled = !1), this.setting = e, this.initBot().catch((s) => {
|
|
3507
|
-
|
|
3624
|
+
A.info(`Exception during bot initialization: ${s.message}`);
|
|
3508
3625
|
});
|
|
3509
3626
|
}
|
|
3510
3627
|
// set language
|
|
@@ -3519,7 +3636,7 @@ class R extends Zt {
|
|
|
3519
3636
|
async initBot() {
|
|
3520
3637
|
if (!this.botSettingsInitialized) {
|
|
3521
3638
|
const t = this.setting.url.startsWith("localhost") ? "http" : "https", i = this.setting.version && this.setting.version !== "current" ? `?version=${encodeURIComponent(this.setting.version)}` : "", s = `${t}://${this.setting.url}/api/bot/settings/${this.setting.orgId}/${this.setting.botId}${i}`;
|
|
3522
|
-
|
|
3639
|
+
A.info(`Getting bot settings at ${s} ...`);
|
|
3523
3640
|
let r = null, o = null;
|
|
3524
3641
|
try {
|
|
3525
3642
|
r = await fetch(s, {
|
|
@@ -3529,13 +3646,13 @@ class R extends Zt {
|
|
|
3529
3646
|
"X-Enegel-Signature": this.setting.botId
|
|
3530
3647
|
//"ngrok-skip-browser-warning": "1",
|
|
3531
3648
|
}
|
|
3532
|
-
}), !r.ok || r.status !== 200 ?
|
|
3533
|
-
} catch (
|
|
3534
|
-
|
|
3649
|
+
}), !r.ok || r.status !== 200 ? A.error(`Failed to get bot ${this.setting.botId} settings: ${r.status} ${r.statusText}`) : o = await r.json();
|
|
3650
|
+
} catch (b) {
|
|
3651
|
+
A.error(`Failed to get bot ${this.setting.botId} settings: ${b.message}`), o = null;
|
|
3535
3652
|
}
|
|
3536
3653
|
if (this.botSettingsInitialized = !0, this.botSettings = o, !o) {
|
|
3537
|
-
if (
|
|
3538
|
-
|
|
3654
|
+
if (A.error(`Unable to retrieve bot settings - bot disabled. Retry in ${this.botSettingsRetryTimeout} seconds.`), this.disabled = !0, this.botSettingsRetryTimeout > 80) {
|
|
3655
|
+
A.error("Failed to retrieve bot settings - bot disabled. Retries exhausted. Refresh page to attempt again.");
|
|
3539
3656
|
return;
|
|
3540
3657
|
}
|
|
3541
3658
|
this.botSettingsInitialized = !1, setTimeout(async () => {
|
|
@@ -3543,17 +3660,23 @@ class R extends Zt {
|
|
|
3543
3660
|
}, this.botSettingsRetryTimeout * 1e3), this.botSettingsRetryTimeout = this.botSettingsRetryTimeout * 2;
|
|
3544
3661
|
return;
|
|
3545
3662
|
}
|
|
3546
|
-
|
|
3663
|
+
A.info("Got bot settings", o), this.disabled = !1, this.setting.welcomeMessage = o?.welcomeMessage || "How can I help ?", this.setting.disclaimerMessage = o?.disclaimerMessage && o.disclaimerMessage !== "" ? o.disclaimerMessage : null, this.setting.engageMessage = o?.engageMessage || "How can I help ?", this.setting.engageTimeout = o?.engageTimeout || 5, this.setting.splitMessagesAtBreak = "splitMessagesAtBreak" in o ? o.splitMessagesAtBreak : !1, this.setting.feedbackEnabled = "feedbackEnabled" in o ? o.feedbackEnabled : !1, this.setting.uploadImages = "uploadImages" in o ? o.uploadImages : !1, this.setting.newConversationTimeoutInSec = o?.newConversationTimeoutInSec || 86400, this.setting.enableNotificationSound = "enableNotificationSound" in o ? o.enableNotificationSound : !0, this.setting.botAdvancedSettings = o?.botAdvancedSettings ?? {}, this.setting.startFeedbackFromMessage = "startFeedbackFromMessage" in this.setting.botAdvancedSettings ? this.setting.botAdvancedSettings.startFeedbackFromMessage : 1, this.setting.enableMultiModalConnection = this.setting.botAdvancedSettings?.enableMultiModalConnection ?? !1, this.setting.enablePassContextOnConnect = this.setting.botAdvancedSettings?.enablePassContextOnConnect ?? !1, this.setting.enableShowFullDisclaimerMessage = this.setting.botAdvancedSettings?.enableShowFullDisclaimerMessage ?? !1, this.setting.fileUploadEnabledExtensions = this.setting.botAdvancedSettings?.fileUploadEnabledExtensions || ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3", this.setting.fileUploadMaxFileSizeMB = this.setting.botAdvancedSettings?.fileUploadMaxFileSizeMB || 30, this.setting.enableAgentDisconnectedMessage = this.setting.botAdvancedSettings?.enableAgentDisconnectedMessage ?? !1, this.setting.enableTicketCreatedMessage = this.setting.botAdvancedSettings?.enableTicketCreatedMessage ?? !1, this.setting.showNewConversationOnAgentDisconnected = this.setting.botAdvancedSettings?.showNewConversationOnAgentDisconnected ?? !1, this.setting.engagePopupSuppressPermanently = this.setting.botAdvancedSettings?.engagePopupSuppressPermanently || 0;
|
|
3664
|
+
const f = this.setting.botAdvancedSettings?.pagesRules || null;
|
|
3665
|
+
if (f && typeof f == "object" && !os(this.setting.botAdvancedSettings?.pagesRules, window.location, A)) {
|
|
3666
|
+
this.disabled = !0, A.info(`Bot is disabled on page ${window.location} by configuration`, f);
|
|
3667
|
+
return;
|
|
3668
|
+
}
|
|
3669
|
+
this.setting.enableMultiModalConnection ? this.setting.enableAudio = !0 : this.setting.enableAudio = !1, this.initConversation(), this.shouldEngage === "true" && setTimeout(() => {
|
|
3547
3670
|
this.showEngagePopup();
|
|
3548
3671
|
}, this.setting.engageTimeout * 1e3);
|
|
3549
3672
|
}
|
|
3550
3673
|
const e = new URLSearchParams(window.location.search);
|
|
3551
3674
|
if (e.has("c7o_bot_open")) {
|
|
3552
3675
|
const t = e.get("c7o_bot_open");
|
|
3553
|
-
this.open = t !== "false" && t !== "no" && t !== "0",
|
|
3676
|
+
this.open = t !== "false" && t !== "no" && t !== "0", A.info(`C7O-BOT:INIT: Force open=${this.open} from query parameter c7o_bot_open=${e.get("c7o_bot_open")}`);
|
|
3554
3677
|
}
|
|
3555
|
-
this.connectWs === "true" && (
|
|
3556
|
-
|
|
3678
|
+
this.connectWs === "true" && (A.info("appState: connectWs is true"), this.getWsClient().catch((t) => {
|
|
3679
|
+
A.error(`Exception during ws client startup: ${t.message}`);
|
|
3557
3680
|
})), setTimeout(() => {
|
|
3558
3681
|
window.dispatchEvent(
|
|
3559
3682
|
new CustomEvent("c7o:bot:stateEvent", {
|
|
@@ -3586,7 +3709,7 @@ class R extends Zt {
|
|
|
3586
3709
|
}
|
|
3587
3710
|
// AGENT // ////////////////////////////////////////////////////
|
|
3588
3711
|
async handleAgentConnected(e) {
|
|
3589
|
-
|
|
3712
|
+
A.info("c7o: Agent Connected", e);
|
|
3590
3713
|
const t = e?.userName || "Agent";
|
|
3591
3714
|
this.addMessage({
|
|
3592
3715
|
id: e?.id || null,
|
|
@@ -3600,7 +3723,7 @@ class R extends Zt {
|
|
|
3600
3723
|
});
|
|
3601
3724
|
}
|
|
3602
3725
|
async handleAgentDisconnected(e) {
|
|
3603
|
-
if (
|
|
3726
|
+
if (A.info("c7o: Agent disconnected", e), !this.setting.enableAgentDisconnectedMessage)
|
|
3604
3727
|
return;
|
|
3605
3728
|
const t = e?.userName || "Agent";
|
|
3606
3729
|
this.addMessage({
|
|
@@ -3694,7 +3817,7 @@ class R extends Zt {
|
|
|
3694
3817
|
}
|
|
3695
3818
|
// When finished playing audio, clear trackId and send mark message
|
|
3696
3819
|
async onPlaybackEnded() {
|
|
3697
|
-
this.webAudioCurrentMark && (
|
|
3820
|
+
this.webAudioCurrentMark && (A.info(`c7o: mark ${this.webAudioCurrentMark} completed`), await this.sendEvent({
|
|
3698
3821
|
id: ce(),
|
|
3699
3822
|
type: "mediaMark",
|
|
3700
3823
|
mark: {
|
|
@@ -3703,7 +3826,7 @@ class R extends Zt {
|
|
|
3703
3826
|
}), this.webAudioCurrentMark = null, this.webAudioTrackId = null);
|
|
3704
3827
|
}
|
|
3705
3828
|
async onWebAudioTerminate() {
|
|
3706
|
-
|
|
3829
|
+
A.info("c7o: terminating audio"), await this.stopAudio();
|
|
3707
3830
|
}
|
|
3708
3831
|
// Confirmation from server that media started
|
|
3709
3832
|
// {"type":"mediaStarted","mediaType":"audio","mediaTransport":"webmedia","webmedia":{"mimeType":"audio/L16","mediaSpec":{"sampleRate":24000,"channels":1}}}
|
|
@@ -3722,16 +3845,16 @@ class R extends Zt {
|
|
|
3722
3845
|
if (!e || e?.type !== "media" || !e?.media || e?.mediaType !== "audio" || !e?.media?.payload || !this.webAudioProcessor || !this.webAudioStarted)
|
|
3723
3846
|
return;
|
|
3724
3847
|
const t = e.media.payload;
|
|
3725
|
-
this.webAudioTrackId || (this.webAudioTrackId = ce()),
|
|
3848
|
+
this.webAudioTrackId || (this.webAudioTrackId = ce()), A.info(`${Date.now()}: Playing audio: ${t.length} bytes, trackId: ${this.webAudioTrackId}`), await this.webAudioProcessor.playAudio(t, this.webAudioTrackId);
|
|
3726
3849
|
}
|
|
3727
3850
|
// {"type": "mediaMark","mark": {"name": "1757277902935"}}
|
|
3728
3851
|
async handleMediaMark(e) {
|
|
3729
|
-
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null,
|
|
3852
|
+
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null, A.info(`c7o: Current media mark set to ${this.webAudioCurrentMark}`, e));
|
|
3730
3853
|
}
|
|
3731
3854
|
// Confirmation from server that media stopped
|
|
3732
3855
|
//{"type":"mediaClear","mediaType":"audio"}
|
|
3733
3856
|
async handleMediaClear(e) {
|
|
3734
|
-
|
|
3857
|
+
A.info("c7o: Got mediaClear, clearing buffered media", e), this.mediaStartedAudio = !1, !(!this.webAudioProcessor || !this.webAudioStarted) && (this.webAudioTrackId = null, await this.webAudioProcessor.interruptAudio());
|
|
3735
3858
|
}
|
|
3736
3859
|
// ////////////////////////////////////////////////////////////
|
|
3737
3860
|
setPrefilledFormFields(e) {
|
|
@@ -3754,7 +3877,7 @@ class R extends Zt {
|
|
|
3754
3877
|
return;
|
|
3755
3878
|
const e = await this.getWsClient();
|
|
3756
3879
|
if (!e) {
|
|
3757
|
-
|
|
3880
|
+
A.error("Error - failed to obtain ws client");
|
|
3758
3881
|
return;
|
|
3759
3882
|
}
|
|
3760
3883
|
const t = {
|
|
@@ -3762,7 +3885,7 @@ class R extends Zt {
|
|
|
3762
3885
|
type: "setContext",
|
|
3763
3886
|
contextData: this.context
|
|
3764
3887
|
};
|
|
3765
|
-
e.sendMessage(t),
|
|
3888
|
+
e.sendMessage(t), A.info("Sent context:", this.context);
|
|
3766
3889
|
}
|
|
3767
3890
|
getContext() {
|
|
3768
3891
|
return this.context;
|
|
@@ -3776,23 +3899,23 @@ class R extends Zt {
|
|
|
3776
3899
|
return;
|
|
3777
3900
|
}
|
|
3778
3901
|
if (this.setting.suppressStartupForm) {
|
|
3779
|
-
|
|
3902
|
+
A.info("Startup form not suppressed by widget settings.");
|
|
3780
3903
|
return;
|
|
3781
3904
|
}
|
|
3782
|
-
const e =
|
|
3905
|
+
const e = Kt(null, ["startupForm"], this.botSettings);
|
|
3783
3906
|
if (!e || !e?.name) {
|
|
3784
|
-
|
|
3907
|
+
A.info("Startup form not present");
|
|
3785
3908
|
return;
|
|
3786
3909
|
}
|
|
3787
3910
|
this.initForm(e);
|
|
3788
3911
|
}
|
|
3789
3912
|
initForm(e = null) {
|
|
3790
|
-
const t = e, i =
|
|
3913
|
+
const t = e, i = Kt(null, ["name"], e);
|
|
3791
3914
|
if (!t || !i)
|
|
3792
3915
|
return;
|
|
3793
|
-
const s =
|
|
3916
|
+
const s = Kt(null, ["fields"], e);
|
|
3794
3917
|
if (!Array.isArray(s) || s.length <= 0) {
|
|
3795
|
-
|
|
3918
|
+
A.info("form has no fields", e);
|
|
3796
3919
|
return;
|
|
3797
3920
|
}
|
|
3798
3921
|
const r = `${ie}${this.setting.botId}.${this.conversationId}.form.${i}`, o = localStorage.getItem(r);
|
|
@@ -3800,12 +3923,12 @@ class R extends Zt {
|
|
|
3800
3923
|
let f = null;
|
|
3801
3924
|
try {
|
|
3802
3925
|
f = JSON.parse(o);
|
|
3803
|
-
} catch (
|
|
3804
|
-
|
|
3926
|
+
} catch (b) {
|
|
3927
|
+
A.error(`Failed to parse stored form data: ${b.message}`), f = null;
|
|
3805
3928
|
}
|
|
3806
3929
|
if (f) {
|
|
3807
|
-
this.sendFormData(i, f).catch((
|
|
3808
|
-
|
|
3930
|
+
this.sendFormData(i, f).catch((b) => {
|
|
3931
|
+
A.error(`Error when submitting form: ${b.message}`);
|
|
3809
3932
|
});
|
|
3810
3933
|
return;
|
|
3811
3934
|
}
|
|
@@ -3815,7 +3938,7 @@ class R extends Zt {
|
|
|
3815
3938
|
suppressEngagePopup() {
|
|
3816
3939
|
if (this.engage = !1, this.shouldEngage = "false", this.setting.engagePopupSuppressPermanently && this.setting.engagePopupSuppressPermanently > 0) {
|
|
3817
3940
|
const e = Date.now();
|
|
3818
|
-
localStorage.setItem(`${ie}_engagePopupSuppressed`, `${e}`),
|
|
3941
|
+
localStorage.setItem(`${ie}_engagePopupSuppressed`, `${e}`), A.info(`Engage popup suppressed for ${this.setting.engagePopupSuppressPermanently} days`);
|
|
3819
3942
|
}
|
|
3820
3943
|
}
|
|
3821
3944
|
showEngagePopup() {
|
|
@@ -3828,7 +3951,7 @@ class R extends Zt {
|
|
|
3828
3951
|
return;
|
|
3829
3952
|
}
|
|
3830
3953
|
}
|
|
3831
|
-
|
|
3954
|
+
A.info("Engaging User"), this.engage = !0, this.playAudioNotification();
|
|
3832
3955
|
}
|
|
3833
3956
|
}
|
|
3834
3957
|
playAudioNotification() {
|
|
@@ -3840,7 +3963,7 @@ class R extends Zt {
|
|
|
3840
3963
|
o[f] = parseInt(r.substr(f * 2, 2), 16);
|
|
3841
3964
|
return o;
|
|
3842
3965
|
};
|
|
3843
|
-
let t = new Blob([e(
|
|
3966
|
+
let t = new Blob([e(Fs)], { type: "application/octet-stream" });
|
|
3844
3967
|
const i = URL.createObjectURL(t);
|
|
3845
3968
|
new Audio(i).play();
|
|
3846
3969
|
}
|
|
@@ -3854,14 +3977,14 @@ class R extends Zt {
|
|
|
3854
3977
|
return this.wsClient;
|
|
3855
3978
|
let t = `${this.setting.url.startsWith("localhost") ? "ws" : "wss"}://${this.setting.url}/api/bot/connect/${this.setting.orgId}/${this.setting.botId}/${this.conversationId}`;
|
|
3856
3979
|
const i = new URL(t);
|
|
3857
|
-
if (this.setting.version && this.setting.version !== "current" && i.searchParams.set("version", this.setting.version), this.setting.testMode && (i.searchParams.set("testMode", "true"),
|
|
3980
|
+
if (this.setting.version && this.setting.version !== "current" && i.searchParams.set("version", this.setting.version), this.setting.testMode && (i.searchParams.set("testMode", "true"), A.info("Test Mode enabled - adding testMode=true parameter")), this.setting.enableMultiModalConnection && (i.searchParams.set("multiModal", "true"), A.info("MultiModal connection enabled - adding multiModal=true parameter")), this.setting.enablePassContextOnConnect && this.context && typeof this.context == "object")
|
|
3858
3981
|
try {
|
|
3859
3982
|
const s = JSON.stringify(this.context);
|
|
3860
|
-
i.searchParams.set("context", s),
|
|
3983
|
+
i.searchParams.set("context", s), A.info("Adding context to connect URL");
|
|
3861
3984
|
} catch (s) {
|
|
3862
|
-
|
|
3985
|
+
A.error(`Failed to stringify context: ${s.message}`);
|
|
3863
3986
|
}
|
|
3864
|
-
return t = i.toString(),
|
|
3987
|
+
return t = i.toString(), A.info(`Initiating ws connection to ${t} ...`), this.wsClient = new hs({
|
|
3865
3988
|
url: t,
|
|
3866
3989
|
orgId: this.setting.orgId,
|
|
3867
3990
|
botId: this.setting.botId,
|
|
@@ -3881,19 +4004,19 @@ class R extends Zt {
|
|
|
3881
4004
|
}), await this.wsClient.start(), this.connectWs = "true", this.wsClient;
|
|
3882
4005
|
}
|
|
3883
4006
|
handleWscClose(e) {
|
|
3884
|
-
|
|
4007
|
+
A.info(`WSC: connection closed, connected: ${this.wsClient?.connected}`, e), this.stopWebAudio().catch((t) => {
|
|
3885
4008
|
}), this.connected = !1;
|
|
3886
4009
|
}
|
|
3887
4010
|
async _checkConnectionOnLifecycleResume() {
|
|
3888
4011
|
try {
|
|
3889
4012
|
const e = await this.getWsClient();
|
|
3890
4013
|
if (!e) {
|
|
3891
|
-
|
|
4014
|
+
A.error("Error - failed to obtain ws client for check connection");
|
|
3892
4015
|
return;
|
|
3893
4016
|
}
|
|
3894
4017
|
e.checkConnectionOnLifecycleResume();
|
|
3895
4018
|
} catch (e) {
|
|
3896
|
-
|
|
4019
|
+
A.error(`Check connection on lifecycle resume failed: ${e.message}`);
|
|
3897
4020
|
}
|
|
3898
4021
|
}
|
|
3899
4022
|
// Check connection for parallel calls - if there is already a check in progress, wait for it instead of starting a new one
|
|
@@ -3907,20 +4030,20 @@ class R extends Zt {
|
|
|
3907
4030
|
handleLifecycleResume(e = "unknown", t = () => {
|
|
3908
4031
|
}) {
|
|
3909
4032
|
if (e === "visibilitychange" && document.visibilityState !== "visible") {
|
|
3910
|
-
|
|
4033
|
+
A.info("WSC: lifecycle resume - document not visible, skipping connection check");
|
|
3911
4034
|
return;
|
|
3912
4035
|
}
|
|
3913
4036
|
if (this.isConversationStart()) {
|
|
3914
|
-
|
|
4037
|
+
A.info("WSC: lifecycle resume - conversation just started, skipping connection check");
|
|
3915
4038
|
return;
|
|
3916
4039
|
}
|
|
3917
|
-
|
|
4040
|
+
A.info(`WSC: lifecycle resume (${e})`), this.checkConnectionOnLifecycleResume().catch(() => {
|
|
3918
4041
|
}).finally(() => {
|
|
3919
4042
|
t();
|
|
3920
4043
|
});
|
|
3921
4044
|
}
|
|
3922
4045
|
async handleWscConnectError(e) {
|
|
3923
|
-
|
|
4046
|
+
A.info("WSC: connect error - resetting conversation", e);
|
|
3924
4047
|
const t = this.wsClient?.url || null;
|
|
3925
4048
|
if (this.wsClient)
|
|
3926
4049
|
try {
|
|
@@ -3945,14 +4068,14 @@ class R extends Zt {
|
|
|
3945
4068
|
}
|
|
3946
4069
|
const s = t.includes("?"), [r, o] = s ? t.split("?") : [t, ""], f = r.split("/");
|
|
3947
4070
|
f[f.length - 1] = this.conversationId;
|
|
3948
|
-
const
|
|
3949
|
-
this.wsClient.url = v, await
|
|
4071
|
+
const b = f.join("/"), v = o ? `${b}?${o}` : b;
|
|
4072
|
+
this.wsClient.url = v, await js(1e3), await this.wsClient.start(), A.info(`WSC: started new conversation, conversationId=${this.conversationId}`);
|
|
3950
4073
|
} catch (i) {
|
|
3951
|
-
|
|
4074
|
+
A.error(`WSC: failed to reset conversation: ${i.message}`, i);
|
|
3952
4075
|
}
|
|
3953
4076
|
}
|
|
3954
4077
|
handleWscConnecting(e) {
|
|
3955
|
-
|
|
4078
|
+
A.info(`WSC: on connecting(${e}), connected: ${this.wsClient?.connected}`), this.connecting = e, !this.connecting && this.wsClient?.connected ? (this.connected = !0, this.context && typeof this.context == "object" && Object.keys(this.context).length > 0 && this.wsClient.queueMessage(
|
|
3956
4079
|
{
|
|
3957
4080
|
id: ce(),
|
|
3958
4081
|
type: "setContext",
|
|
@@ -3969,7 +4092,7 @@ class R extends Zt {
|
|
|
3969
4092
|
}
|
|
3970
4093
|
// Update typing state based on received message
|
|
3971
4094
|
updateTypingState(e) {
|
|
3972
|
-
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1,
|
|
4095
|
+
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1, A.info("c7o: typing stopped")) : e && e?.type === "typing" && (this.typingActive = !0, A.info("c7o: typing started"));
|
|
3973
4096
|
}
|
|
3974
4097
|
handleWscMessage(e) {
|
|
3975
4098
|
if (e?.type === "ack")
|
|
@@ -4046,7 +4169,7 @@ class R extends Zt {
|
|
|
4046
4169
|
//{"type":"agent-connected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
4047
4170
|
//{"type":"agent-disconnected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
4048
4171
|
case "form": {
|
|
4049
|
-
if (
|
|
4172
|
+
if (A.info("Got form:", e), this.replyMessage && this.replyMessage.id) {
|
|
4050
4173
|
const i = this.replyMessage.data?.text || "";
|
|
4051
4174
|
(this.replyMessage.isThinking || i.trim() === "") && (this.removeMessage(this.replyMessage.id), this.replyMessage = null);
|
|
4052
4175
|
}
|
|
@@ -4092,7 +4215,7 @@ class R extends Zt {
|
|
|
4092
4215
|
if (e !== -1)
|
|
4093
4216
|
if (this.setting.splitMessagesAtBreak) {
|
|
4094
4217
|
const t = this.streamingResponseBuffer.substring(0, e).trim(), i = this.streamingResponseBuffer.substring(e + 4).trim();
|
|
4095
|
-
(t !== "" || this.replyMessage?.data?.text !== "") && (
|
|
4218
|
+
(t !== "" || this.replyMessage?.data?.text !== "") && (A.info(`BREAK: Splitting the message: ${this.streamingResponseBuffer} >>> prev: ${t} next: ${i}`), this.replyMessage = this.updateMessage(this.replyMessage, t), this.replyMessage = { author: "assistant", type: "text", isThinking: !1, data: { text: i } }, this.addMessage(this.replyMessage));
|
|
4096
4219
|
} else
|
|
4097
4220
|
this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer);
|
|
4098
4221
|
this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null;
|
|
@@ -4101,11 +4224,11 @@ class R extends Zt {
|
|
|
4101
4224
|
if (!this.streamingResponseBuffer || !this.replyMessage)
|
|
4102
4225
|
return;
|
|
4103
4226
|
if (this.streamingResponseBuffer.indexOf("![") === -1) {
|
|
4104
|
-
|
|
4227
|
+
A.info(`NOT IMG TAG: ${this.streamingResponseBuffer}`), this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null;
|
|
4105
4228
|
return;
|
|
4106
4229
|
}
|
|
4107
4230
|
const e = this.streamingResponseBuffer.lastIndexOf("]"), t = this.streamingResponseBuffer.lastIndexOf(")");
|
|
4108
|
-
e === -1 || t === -1 || e > t || (
|
|
4231
|
+
e === -1 || t === -1 || e > t || (A.info(`IMG TAG END: ${this.streamingResponseBuffer}`), this.isValidImageLink(this.streamingResponseBuffer) && (this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer)), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null);
|
|
4109
4232
|
}
|
|
4110
4233
|
isValidImageLink(e = "") {
|
|
4111
4234
|
return !(e.indexOf("example.com") !== -1 || e.indexOf("imgur.com") !== -1 || e.indexOf("attachment:") !== -1);
|
|
@@ -4125,7 +4248,7 @@ class R extends Zt {
|
|
|
4125
4248
|
this.streamingResponseBuffer = e, this.streamingResponseTagStartPos = e.indexOf("<"), this.streamingResponseCurrentTag = "br";
|
|
4126
4249
|
return;
|
|
4127
4250
|
} else if (e.indexOf("![") !== -1 || e.endsWith("!")) {
|
|
4128
|
-
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img",
|
|
4251
|
+
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img", A.info(`IMG TAG START: ${this.streamingResponseBuffer}`);
|
|
4129
4252
|
return;
|
|
4130
4253
|
}
|
|
4131
4254
|
this.streamingResponseLastText = t, this.replyMessage = this.updateMessage(this.replyMessage, t);
|
|
@@ -4180,8 +4303,8 @@ class R extends Zt {
|
|
|
4180
4303
|
new CustomEvent("c7o:bot:stateEvent", {
|
|
4181
4304
|
detail: f
|
|
4182
4305
|
})
|
|
4183
|
-
), this.sendActionCompleted(f).catch((
|
|
4184
|
-
|
|
4306
|
+
), this.sendActionCompleted(f).catch((b) => {
|
|
4307
|
+
A.error(`Error: failed to send action completed: ${b.message}`);
|
|
4185
4308
|
});
|
|
4186
4309
|
}
|
|
4187
4310
|
this.actions.splice(s, 1);
|
|
@@ -4199,10 +4322,10 @@ class R extends Zt {
|
|
|
4199
4322
|
}
|
|
4200
4323
|
}
|
|
4201
4324
|
async sendMessage(e) {
|
|
4202
|
-
e = this.formatMessage(e),
|
|
4325
|
+
e = this.formatMessage(e), A.info("Send Message:", e), this.showNewConversation && (this.showNewConversation = !1), this.messages = this.messages.concat([e]), this.lastConversationUpdate = Date.now();
|
|
4203
4326
|
const t = await this.getWsClient();
|
|
4204
4327
|
if (!t) {
|
|
4205
|
-
|
|
4328
|
+
A.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
4206
4329
|
return;
|
|
4207
4330
|
}
|
|
4208
4331
|
t.sendMessage({
|
|
@@ -4248,7 +4371,7 @@ class R extends Zt {
|
|
|
4248
4371
|
// Submit current form data
|
|
4249
4372
|
async submitForm(e) {
|
|
4250
4373
|
if (!this.form) {
|
|
4251
|
-
|
|
4374
|
+
A.info("submitForm: No form is active - ignored");
|
|
4252
4375
|
return;
|
|
4253
4376
|
}
|
|
4254
4377
|
const t = `${ie}${this.setting.botId}.${this.conversationId}.form.${this.form.name}`;
|
|
@@ -4257,7 +4380,7 @@ class R extends Zt {
|
|
|
4257
4380
|
async sendFormData(e, t) {
|
|
4258
4381
|
const i = await this.getWsClient();
|
|
4259
4382
|
if (!i) {
|
|
4260
|
-
|
|
4383
|
+
A.error("Error - failed to obtain ws client");
|
|
4261
4384
|
return;
|
|
4262
4385
|
}
|
|
4263
4386
|
i.sendMessage({
|
|
@@ -4269,7 +4392,7 @@ class R extends Zt {
|
|
|
4269
4392
|
async sendActionCompleted(e) {
|
|
4270
4393
|
const t = await this.getWsClient();
|
|
4271
4394
|
if (!t) {
|
|
4272
|
-
|
|
4395
|
+
A.error("Error - failed to obtain ws client");
|
|
4273
4396
|
return;
|
|
4274
4397
|
}
|
|
4275
4398
|
t.sendMessage({
|
|
@@ -4280,7 +4403,7 @@ class R extends Zt {
|
|
|
4280
4403
|
async sendEvent(e) {
|
|
4281
4404
|
const t = await this.getWsClient();
|
|
4282
4405
|
if (!t) {
|
|
4283
|
-
|
|
4406
|
+
A.error("Error - failed to obtain ws client");
|
|
4284
4407
|
return;
|
|
4285
4408
|
}
|
|
4286
4409
|
t.sendMessage(e);
|
|
@@ -4293,10 +4416,10 @@ class R extends Zt {
|
|
|
4293
4416
|
this.feedbackMessages.push(t), this.feedbackUserMessage = this.messages.findLast((i) => i.id === t.replyId)?.data?.text || "", this.feedbackAnswer = t?.data.text || "", this.feedbackAnswerMessageId = t?.id || "", this.feedbackAnswerUserName = t?.data.userName || "", this.feedback = !0;
|
|
4294
4417
|
}
|
|
4295
4418
|
async submitFeedback(e, t, i) {
|
|
4296
|
-
|
|
4419
|
+
A.info(`submitFeedback: ${this.feedbackScore}`), this.feedbackName = e, this.feedbackEmail = t;
|
|
4297
4420
|
const s = await this.getWsClient();
|
|
4298
4421
|
if (!s) {
|
|
4299
|
-
|
|
4422
|
+
A.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
4300
4423
|
return;
|
|
4301
4424
|
}
|
|
4302
4425
|
s.sendMessage({
|
|
@@ -4339,9 +4462,9 @@ class R extends Zt {
|
|
|
4339
4462
|
if (!e?.length) return;
|
|
4340
4463
|
const t = h.setting.fileUploadMaxFileSizeMB || 30, i = t * 1024 * 1024, s = e?.find((v) => v.size > i);
|
|
4341
4464
|
if (s) {
|
|
4342
|
-
|
|
4465
|
+
A.error(
|
|
4343
4466
|
`File "${s.name}" exceeds the ${t} MB limit and will not be uploaded.`
|
|
4344
|
-
),
|
|
4467
|
+
), ei({
|
|
4345
4468
|
message: `File is larger than ${t} MB`,
|
|
4346
4469
|
variant: "danger",
|
|
4347
4470
|
duration: 3800,
|
|
@@ -4350,10 +4473,10 @@ class R extends Zt {
|
|
|
4350
4473
|
return;
|
|
4351
4474
|
}
|
|
4352
4475
|
const r = await this.filesToBase64(e);
|
|
4353
|
-
|
|
4476
|
+
A.info("Uploading files:", r);
|
|
4354
4477
|
const o = await this.getWsClient();
|
|
4355
4478
|
if (!o) {
|
|
4356
|
-
|
|
4479
|
+
A.error("Error - failed to obtain ws client");
|
|
4357
4480
|
return;
|
|
4358
4481
|
}
|
|
4359
4482
|
const f = ce();
|
|
@@ -4362,7 +4485,7 @@ class R extends Zt {
|
|
|
4362
4485
|
type: "upload",
|
|
4363
4486
|
files: r
|
|
4364
4487
|
});
|
|
4365
|
-
const
|
|
4488
|
+
const b = {
|
|
4366
4489
|
id: f,
|
|
4367
4490
|
timestamp: Date.now(),
|
|
4368
4491
|
author: "user",
|
|
@@ -4371,7 +4494,7 @@ class R extends Zt {
|
|
|
4371
4494
|
uploadedFiles: r
|
|
4372
4495
|
}
|
|
4373
4496
|
};
|
|
4374
|
-
this.addMessage(
|
|
4497
|
+
this.addMessage(b);
|
|
4375
4498
|
}
|
|
4376
4499
|
notifyWidgetOpenState() {
|
|
4377
4500
|
this.wsClient && this.wsClient.sendMessage({
|
|
@@ -4583,7 +4706,7 @@ O([
|
|
|
4583
4706
|
O([
|
|
4584
4707
|
z({ type: Boolean, value: !1 })
|
|
4585
4708
|
], R.prototype, "webAudioMuted");
|
|
4586
|
-
const h = new R(),
|
|
4709
|
+
const h = new R(), Vs = K`
|
|
4587
4710
|
${ke}
|
|
4588
4711
|
:host {
|
|
4589
4712
|
position: relative;
|
|
@@ -4658,12 +4781,12 @@ const h = new R(), Ls = K`
|
|
|
4658
4781
|
display: inline;
|
|
4659
4782
|
}
|
|
4660
4783
|
`;
|
|
4661
|
-
var
|
|
4784
|
+
var Us = Object.defineProperty, Ns = (a, e, t, i) => {
|
|
4662
4785
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
4663
4786
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
4664
|
-
return s &&
|
|
4787
|
+
return s && Us(e, t, s), s;
|
|
4665
4788
|
};
|
|
4666
|
-
|
|
4789
|
+
ji("system", {
|
|
4667
4790
|
resolver: (a) => ""
|
|
4668
4791
|
});
|
|
4669
4792
|
(() => {
|
|
@@ -4700,15 +4823,15 @@ class re extends Fe {
|
|
|
4700
4823
|
return this.dispatchEvent(i), i;
|
|
4701
4824
|
}
|
|
4702
4825
|
}
|
|
4703
|
-
|
|
4826
|
+
Ns([
|
|
4704
4827
|
x({ type: String })
|
|
4705
4828
|
], re.prototype, "lang");
|
|
4706
|
-
var
|
|
4707
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4829
|
+
var Ws = Object.defineProperty, Gs = Object.getOwnPropertyDescriptor, ti = (a, e, t, i) => {
|
|
4830
|
+
for (var s = i > 1 ? void 0 : i ? Gs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4708
4831
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
4709
|
-
return i && s &&
|
|
4832
|
+
return i && s && Ws(e, t, s), s;
|
|
4710
4833
|
};
|
|
4711
|
-
const
|
|
4834
|
+
const Xs = '<svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"></path></svg>';
|
|
4712
4835
|
let Bt = class extends re {
|
|
4713
4836
|
constructor() {
|
|
4714
4837
|
super(...arguments), this.title = "ChatBot";
|
|
@@ -4719,32 +4842,32 @@ let Bt = class extends re {
|
|
|
4719
4842
|
}
|
|
4720
4843
|
*/
|
|
4721
4844
|
renderExp() {
|
|
4722
|
-
return
|
|
4845
|
+
return p` <header class="cb-header" part="header">
|
|
4723
4846
|
${W(
|
|
4724
4847
|
h.setting.logoUrl !== "",
|
|
4725
|
-
() =>
|
|
4726
|
-
() =>
|
|
4848
|
+
() => p`<img class="cb-header-logo" part="header-logo" src="${h.setting.logoUrl}" />`,
|
|
4849
|
+
() => p`<div class="cb-header-logo" part="header-logo">${G(h.setting.logoSvg)}</div>`
|
|
4727
4850
|
)}
|
|
4728
4851
|
<div class="cb-header-title" part="header-title">${xt(this.title)}</div>
|
|
4729
4852
|
${W(
|
|
4730
4853
|
h.alwaysOpen,
|
|
4731
|
-
() =>
|
|
4732
|
-
() =>
|
|
4854
|
+
() => p``,
|
|
4855
|
+
() => p`<div class="cb-header-close" part="header-close">${G(Xs)}</div>`
|
|
4733
4856
|
)}
|
|
4734
4857
|
</header>`;
|
|
4735
4858
|
}
|
|
4736
4859
|
render() {
|
|
4737
|
-
return
|
|
4860
|
+
return p`<header class="cb-header" part="header">
|
|
4738
4861
|
${W(
|
|
4739
4862
|
h.setting.logoUrl !== "",
|
|
4740
|
-
() =>
|
|
4741
|
-
() =>
|
|
4863
|
+
() => p`<img class="cb-header-img" part="header-logo" src="${h.setting.logoUrl}" />`,
|
|
4864
|
+
() => p`<div class="cb-header-logo" part="header-logo">${G(h.setting.logoSvg)}</div>`
|
|
4742
4865
|
)}
|
|
4743
4866
|
<div class="cb-header-title" part="header-title">${this.title}</div>
|
|
4744
4867
|
${W(
|
|
4745
4868
|
h.alwaysOpen,
|
|
4746
|
-
() =>
|
|
4747
|
-
() =>
|
|
4869
|
+
() => p`<div></div>`,
|
|
4870
|
+
() => p`<div @click=${this._clickCloseHandler} class="cb-header-close" part="header-close">${G(h.setting.closeSvg)}</div>`
|
|
4748
4871
|
)}
|
|
4749
4872
|
</header>`;
|
|
4750
4873
|
}
|
|
@@ -4771,14 +4894,14 @@ let Bt = class extends re {
|
|
|
4771
4894
|
});
|
|
4772
4895
|
}
|
|
4773
4896
|
};
|
|
4774
|
-
Bt.styles =
|
|
4775
|
-
|
|
4897
|
+
Bt.styles = Vs;
|
|
4898
|
+
ti([
|
|
4776
4899
|
x({ type: String, attribute: "title" })
|
|
4777
4900
|
], Bt.prototype, "title", 2);
|
|
4778
|
-
Bt =
|
|
4901
|
+
Bt = ti([
|
|
4779
4902
|
J("cb-header")
|
|
4780
4903
|
], Bt);
|
|
4781
|
-
const
|
|
4904
|
+
const Ys = K`
|
|
4782
4905
|
${ke}
|
|
4783
4906
|
.cb-footer {
|
|
4784
4907
|
line-height: 60px;
|
|
@@ -4793,17 +4916,17 @@ const Ds = K`
|
|
|
4793
4916
|
color: var(--primary-color);
|
|
4794
4917
|
}
|
|
4795
4918
|
`;
|
|
4796
|
-
var
|
|
4797
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4919
|
+
var Ks = Object.getOwnPropertyDescriptor, Js = (a, e, t, i) => {
|
|
4920
|
+
for (var s = i > 1 ? void 0 : i ? Ks(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4798
4921
|
(o = a[r]) && (s = o(s) || s);
|
|
4799
4922
|
return s;
|
|
4800
4923
|
};
|
|
4801
|
-
let
|
|
4924
|
+
let ea = class extends re {
|
|
4802
4925
|
constructor() {
|
|
4803
4926
|
super(...arguments), this.year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
4804
4927
|
}
|
|
4805
4928
|
render() {
|
|
4806
|
-
return
|
|
4929
|
+
return p`
|
|
4807
4930
|
<div class="cb-footer" part="footer">
|
|
4808
4931
|
yugasun@${this.year}
|
|
4809
4932
|
<a
|
|
@@ -4833,11 +4956,11 @@ let Qt = class extends re {
|
|
|
4833
4956
|
`;
|
|
4834
4957
|
}
|
|
4835
4958
|
};
|
|
4836
|
-
|
|
4837
|
-
|
|
4959
|
+
ea.styles = Ys;
|
|
4960
|
+
ea = Js([
|
|
4838
4961
|
J("cb-footer")
|
|
4839
|
-
],
|
|
4840
|
-
const
|
|
4962
|
+
], ea);
|
|
4963
|
+
const Zs = K`
|
|
4841
4964
|
${ke}
|
|
4842
4965
|
|
|
4843
4966
|
:host {
|
|
@@ -5038,7 +5161,7 @@ const js = K`
|
|
|
5038
5161
|
background-size: 100%;
|
|
5039
5162
|
transition: background 0s;
|
|
5040
5163
|
}
|
|
5041
|
-
`,
|
|
5164
|
+
`, ai = K`
|
|
5042
5165
|
:host {
|
|
5043
5166
|
--primary-color: var(--sl-color-primary-600);
|
|
5044
5167
|
}
|
|
@@ -5192,7 +5315,7 @@ const js = K`
|
|
|
5192
5315
|
.card-btn[aria-disabled="true"]:focus-visible {
|
|
5193
5316
|
box-shadow: none;
|
|
5194
5317
|
}
|
|
5195
|
-
`,
|
|
5318
|
+
`, ii = K`
|
|
5196
5319
|
:host {
|
|
5197
5320
|
--primary-color: var(--sl-color-primary-600);
|
|
5198
5321
|
}
|
|
@@ -5283,20 +5406,20 @@ const js = K`
|
|
|
5283
5406
|
}
|
|
5284
5407
|
.split-btn[aria-expanded="true"] .split-btn__caret { transform: rotate(180deg); }
|
|
5285
5408
|
`;
|
|
5286
|
-
var
|
|
5287
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5409
|
+
var Qs = Object.defineProperty, en = Object.getOwnPropertyDescriptor, He = (a, e, t, i) => {
|
|
5410
|
+
for (var s = i > 1 ? void 0 : i ? en(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5288
5411
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5289
|
-
return i && s &&
|
|
5412
|
+
return i && s && Qs(e, t, s), s;
|
|
5290
5413
|
};
|
|
5291
5414
|
let mt = class extends Fe {
|
|
5292
5415
|
constructor() {
|
|
5293
5416
|
super(...arguments), this.options = [], this.minWidth = 180;
|
|
5294
5417
|
}
|
|
5295
5418
|
render() {
|
|
5296
|
-
return
|
|
5419
|
+
return p`
|
|
5297
5420
|
<div class="menu" part="menu" style="min-width:${Math.max(this.minWidth, 180)}px">
|
|
5298
5421
|
<div class="list" role="menu">
|
|
5299
|
-
${this.options.map((a, e) =>
|
|
5422
|
+
${this.options.map((a, e) => p`
|
|
5300
5423
|
<a
|
|
5301
5424
|
class="item"
|
|
5302
5425
|
role="menuitem"
|
|
@@ -5396,7 +5519,7 @@ let Ge = class extends Fe {
|
|
|
5396
5519
|
}
|
|
5397
5520
|
render() {
|
|
5398
5521
|
const a = ["split-btn", this.variant, this.size].filter(Boolean).join(" ");
|
|
5399
|
-
return
|
|
5522
|
+
return p`
|
|
5400
5523
|
<button
|
|
5401
5524
|
type="button"
|
|
5402
5525
|
class=${a}
|
|
@@ -5442,7 +5565,7 @@ let Ge = class extends Fe {
|
|
|
5442
5565
|
positionMenu(a, e) {
|
|
5443
5566
|
const i = window.innerWidth, s = window.innerHeight;
|
|
5444
5567
|
a.style.minWidth = Math.max(e.width, 180) + "px";
|
|
5445
|
-
const r = a.getBoundingClientRect(), o = s - e.bottom - 8, f = e.top - 8,
|
|
5568
|
+
const r = a.getBoundingClientRect(), o = s - e.bottom - 8, f = e.top - 8, b = o >= r.height || o >= f, v = Math.max(8, Math.min(e.left, i - r.width - 8)), k = b ? Math.min(e.bottom + 6, s - r.height - 8) : Math.max(e.top - r.height - 6, 8);
|
|
5446
5569
|
a.style.left = `${Math.round(v)}px`, a.style.top = `${Math.round(k)}px`;
|
|
5447
5570
|
}
|
|
5448
5571
|
attachReposition(a, e) {
|
|
@@ -5467,7 +5590,7 @@ let Ge = class extends Fe {
|
|
|
5467
5590
|
this._onDocPointerDown && (document.removeEventListener("pointerdown", this._onDocPointerDown, { capture: !0 }), this._onDocPointerDown = void 0), this._onKeydown && (document.removeEventListener("keydown", this._onKeydown, { capture: !0 }), this._onKeydown = void 0);
|
|
5468
5591
|
}
|
|
5469
5592
|
};
|
|
5470
|
-
Ge.styles =
|
|
5593
|
+
Ge.styles = ii;
|
|
5471
5594
|
He([
|
|
5472
5595
|
x({ type: String })
|
|
5473
5596
|
], Ge.prototype, "variant", 2);
|
|
@@ -5486,12 +5609,12 @@ He([
|
|
|
5486
5609
|
Ge = He([
|
|
5487
5610
|
J("cb-split-button")
|
|
5488
5611
|
], Ge);
|
|
5489
|
-
var
|
|
5490
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5612
|
+
var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor, kt = (a, e, t, i) => {
|
|
5613
|
+
for (var s = i > 1 ? void 0 : i ? an(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5491
5614
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5492
|
-
return i && s &&
|
|
5615
|
+
return i && s && tn(e, t, s), s;
|
|
5493
5616
|
};
|
|
5494
|
-
const Et = Ke.noConflict(),
|
|
5617
|
+
const Et = Ke.noConflict(), Ra = "M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z", sn = K`
|
|
5495
5618
|
:host { display: block; width: 100%; color: var(--cb-fg, #111827); }
|
|
5496
5619
|
|
|
5497
5620
|
/* CARD */
|
|
@@ -5599,23 +5722,23 @@ let Me = class extends Fe {
|
|
|
5599
5722
|
}
|
|
5600
5723
|
/* ----------------- CARD ----------------- */
|
|
5601
5724
|
renderCard(a) {
|
|
5602
|
-
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(),
|
|
5725
|
+
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), b = o.length > 0, v = a.info?.text, k = typeof a.info?.rating == "number" ? a.info.rating : typeof a.rating == "number" ? a.rating : void 0, w = !!v, _ = typeof k == "number", P = ["card__info", w && _ ? "card__info--between" : ""].filter(Boolean).join(" "), E = r.some((N) => (N.type ?? "").toLowerCase() === "primary"), T = r.some((N) => (N.type ?? "").toLowerCase() === "secondary"), L = ["card__actions", E && T ? "card__actions--between" : ""].filter(Boolean).join(" "), C = () => {
|
|
5603
5726
|
if (!i) return Ae;
|
|
5604
|
-
const N =
|
|
5605
|
-
return
|
|
5606
|
-
}, Z = () => e ?
|
|
5607
|
-
return
|
|
5727
|
+
const N = p`<img class="card__image" src=${i} alt=${s ?? e ?? "Image"} draggable="false" />`;
|
|
5728
|
+
return b ? p`<a class="card__image-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false" aria-label=${e ? `Open: ${e}` : "Open"}>${N}</a>` : N;
|
|
5729
|
+
}, Z = () => e ? b && !i ? p`<h3 class="card__title"><a class="card__title-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false">${e}</a></h3>` : p`<h3 class="card__title">${e}</h3>` : Ae;
|
|
5730
|
+
return p`
|
|
5608
5731
|
<div class="card" role="group" aria-label=${e ? `Card: ${e}` : "Card"}>
|
|
5609
5732
|
${C()}
|
|
5610
5733
|
<div class="card__content">
|
|
5611
5734
|
${Z()}
|
|
5612
|
-
${t ?
|
|
5613
|
-
${w || _ ?
|
|
5735
|
+
${t ? p`<div class="card__subtitle">${t}</div>` : Ae}
|
|
5736
|
+
${w || _ ? p`
|
|
5614
5737
|
<div class=${P}>
|
|
5615
|
-
${w ?
|
|
5738
|
+
${w ? p`<div class="card__info-text">${v}</div>` : Ae}
|
|
5616
5739
|
${_ ? this.renderRating(k) : Ae}
|
|
5617
5740
|
</div>` : Ae}
|
|
5618
|
-
${r.length ?
|
|
5741
|
+
${r.length ? p`
|
|
5619
5742
|
<div class=${L}>
|
|
5620
5743
|
${r.map((N, X) => this.renderAnyButton(N, X))}
|
|
5621
5744
|
</div>` : Ae}
|
|
@@ -5629,7 +5752,7 @@ let Me = class extends Fe {
|
|
|
5629
5752
|
}
|
|
5630
5753
|
renderSingleButton(a) {
|
|
5631
5754
|
const t = `card-btn ${(a.type ?? "primary").toLowerCase() === "secondary" ? "secondary" : "primary"}`, i = a.text || "Open";
|
|
5632
|
-
return a.url ?
|
|
5755
|
+
return a.url ? p`
|
|
5633
5756
|
<a
|
|
5634
5757
|
class=${t}
|
|
5635
5758
|
href=${a.url}
|
|
@@ -5639,7 +5762,7 @@ let Me = class extends Fe {
|
|
|
5639
5762
|
@click=${() => this.emitButtonClick(a)}
|
|
5640
5763
|
@pointerdown=${(s) => s.stopPropagation()}
|
|
5641
5764
|
>${i}</a>
|
|
5642
|
-
` :
|
|
5765
|
+
` : p`
|
|
5643
5766
|
<button
|
|
5644
5767
|
type="button"
|
|
5645
5768
|
class=${t}
|
|
@@ -5650,7 +5773,7 @@ let Me = class extends Fe {
|
|
|
5650
5773
|
}
|
|
5651
5774
|
renderSplitButton(a, e) {
|
|
5652
5775
|
const t = (a.type ?? "primary").toLowerCase();
|
|
5653
|
-
return
|
|
5776
|
+
return p`
|
|
5654
5777
|
<cb-split-button
|
|
5655
5778
|
.label=${a.text || "Select"}
|
|
5656
5779
|
.variant=${t}
|
|
@@ -5666,7 +5789,7 @@ let Me = class extends Fe {
|
|
|
5666
5789
|
/* ----------------- Rating ----------------- */
|
|
5667
5790
|
renderRating(a) {
|
|
5668
5791
|
const e = Math.max(0, Math.min(5, a)), t = [0, 1, 2, 3, 4].map((i) => Math.max(0, Math.min(1, e - i)));
|
|
5669
|
-
return
|
|
5792
|
+
return p`<div class="rating" aria-label="${e} out of 5 stars">
|
|
5670
5793
|
<span class="stars">${t.map((i) => this.renderStar(i))}</span>
|
|
5671
5794
|
</div>`;
|
|
5672
5795
|
}
|
|
@@ -5676,11 +5799,11 @@ let Me = class extends Fe {
|
|
|
5676
5799
|
-webkit-mask: linear-gradient(to right, #000 0, #000 ${t}, transparent ${t}, transparent 100%);
|
|
5677
5800
|
mask: linear-gradient(to right, #000 0, #000 ${t}, transparent ${t}, transparent 100%);
|
|
5678
5801
|
`;
|
|
5679
|
-
return
|
|
5802
|
+
return p`
|
|
5680
5803
|
<span class="star" role="img" aria-label="${e.toFixed(2)} filled">
|
|
5681
|
-
<svg class="star__base" viewBox="0 0 16 16" aria-hidden="true"><path d="${
|
|
5804
|
+
<svg class="star__base" viewBox="0 0 16 16" aria-hidden="true"><path d="${Ra}"/></svg>
|
|
5682
5805
|
<div class="star__fill" style="${s}">
|
|
5683
|
-
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="${
|
|
5806
|
+
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="${Ra}"/></svg>
|
|
5684
5807
|
</div>
|
|
5685
5808
|
</span>
|
|
5686
5809
|
`;
|
|
@@ -5688,7 +5811,7 @@ let Me = class extends Fe {
|
|
|
5688
5811
|
/* ----------------- Carousel ----------------- */
|
|
5689
5812
|
renderCarouselSimple(a) {
|
|
5690
5813
|
const e = Array.isArray(a.items) ? a.items : [], t = Math.max(1, a.slidesPerPage || 1), i = t > 1 ? `width: calc((100% - ${(t - 1) * 0.75}em) / ${t}); max-width: none;` : "";
|
|
5691
|
-
return
|
|
5814
|
+
return p`
|
|
5692
5815
|
<div class="hc-wrapper">
|
|
5693
5816
|
<button
|
|
5694
5817
|
type="button"
|
|
@@ -5699,7 +5822,7 @@ let Me = class extends Fe {
|
|
|
5699
5822
|
>❮</button>
|
|
5700
5823
|
|
|
5701
5824
|
<div class="horizontal-carousel" @scroll=${this.onCarouselScroll}>
|
|
5702
|
-
${e.map((s) =>
|
|
5825
|
+
${e.map((s) => p`
|
|
5703
5826
|
<div class="horizontal-carousel__item" style=${i}>
|
|
5704
5827
|
<cb-block .block=${s}></cb-block>
|
|
5705
5828
|
</div>
|
|
@@ -5743,16 +5866,16 @@ let Me = class extends Fe {
|
|
|
5743
5866
|
o.pointerType !== "touch" && (o.button !== 0 && o.pointerType !== "pen" || (this._dragging = !0, this._startX = o.clientX, this._startY = o.clientY, this._startScrollLeft = a.scrollLeft, this._lastPointerId = o.pointerId, a.classList.add("dragging")));
|
|
5744
5867
|
}, i = (o) => {
|
|
5745
5868
|
if (!this._dragging) return;
|
|
5746
|
-
const f = o.clientX - this._startX,
|
|
5747
|
-
a.scrollLeft = this._startScrollLeft - f, Math.abs(f) > Me.DRAG_THRESHOLD_PX && Math.abs(f) > Math.abs(
|
|
5869
|
+
const f = o.clientX - this._startX, b = o.clientY - this._startY;
|
|
5870
|
+
a.scrollLeft = this._startScrollLeft - f, Math.abs(f) > Me.DRAG_THRESHOLD_PX && Math.abs(f) > Math.abs(b) && this._lastPointerId != null && a.setPointerCapture?.(this._lastPointerId), o.preventDefault(), this.updateArrows(a);
|
|
5748
5871
|
}, s = () => {
|
|
5749
5872
|
if (!this._dragging) return;
|
|
5750
5873
|
if (Math.abs(a.scrollLeft - this._startScrollLeft) > Me.DRAG_THRESHOLD_PX) {
|
|
5751
5874
|
let f;
|
|
5752
|
-
const
|
|
5875
|
+
const b = (v) => {
|
|
5753
5876
|
v.preventDefault(), v.stopPropagation(), f && clearTimeout(f);
|
|
5754
5877
|
};
|
|
5755
|
-
a.addEventListener("click",
|
|
5878
|
+
a.addEventListener("click", b, { capture: !0, once: !0 }), f = window.setTimeout(() => a.removeEventListener("click", b, !0), 200);
|
|
5756
5879
|
}
|
|
5757
5880
|
this._dragging = !1, a.classList.remove("dragging"), this._lastPointerId != null && (a.releasePointerCapture?.(this._lastPointerId), this._lastPointerId = null), this.updateArrows(a);
|
|
5758
5881
|
}, r = () => {
|
|
@@ -5764,7 +5887,7 @@ let Me = class extends Fe {
|
|
|
5764
5887
|
}
|
|
5765
5888
|
}
|
|
5766
5889
|
renderUnknown(a) {
|
|
5767
|
-
return
|
|
5890
|
+
return p`<div class="unknown">Unknown block type: <code>${a?.type ?? "—"}</code></div>`;
|
|
5768
5891
|
}
|
|
5769
5892
|
/* ----------------- handle clicks ----------------- */
|
|
5770
5893
|
emitButtonClick(a) {
|
|
@@ -5811,7 +5934,7 @@ let Me = class extends Fe {
|
|
|
5811
5934
|
body: JSON.stringify(r)
|
|
5812
5935
|
});
|
|
5813
5936
|
if (!o.ok) {
|
|
5814
|
-
Et.error("c7o: cart/add.js failed"),
|
|
5937
|
+
Et.error("c7o: cart/add.js failed"), ei({
|
|
5815
5938
|
message: "Unable to add item to cart.",
|
|
5816
5939
|
variant: "danger",
|
|
5817
5940
|
duration: 2800,
|
|
@@ -5822,7 +5945,7 @@ let Me = class extends Fe {
|
|
|
5822
5945
|
await o.json(), Et.info("c7o: cart/add.js - cart updated"), Et.info("c7o: reloading window after cart update"), window.location.reload();
|
|
5823
5946
|
}
|
|
5824
5947
|
};
|
|
5825
|
-
Me.styles = [
|
|
5948
|
+
Me.styles = [sn, ai, ii];
|
|
5826
5949
|
Me.DRAG_THRESHOLD_PX = 10;
|
|
5827
5950
|
kt([
|
|
5828
5951
|
x({ type: Object })
|
|
@@ -5831,27 +5954,27 @@ kt([
|
|
|
5831
5954
|
xe(".horizontal-carousel")
|
|
5832
5955
|
], Me.prototype, "_hCarousel", 2);
|
|
5833
5956
|
kt([
|
|
5834
|
-
|
|
5957
|
+
Wa()
|
|
5835
5958
|
], Me.prototype, "_canPrev", 2);
|
|
5836
5959
|
kt([
|
|
5837
|
-
|
|
5960
|
+
Wa()
|
|
5838
5961
|
], Me.prototype, "_canNext", 2);
|
|
5839
5962
|
Me = kt([
|
|
5840
5963
|
J("cb-block")
|
|
5841
5964
|
], Me);
|
|
5842
|
-
var
|
|
5843
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5965
|
+
var nn = Object.defineProperty, rn = Object.getOwnPropertyDescriptor, si = (a, e, t, i) => {
|
|
5966
|
+
for (var s = i > 1 ? void 0 : i ? rn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5844
5967
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5845
|
-
return i && s &&
|
|
5968
|
+
return i && s && nn(e, t, s), s;
|
|
5846
5969
|
};
|
|
5847
5970
|
let qt = class extends Fe {
|
|
5848
5971
|
constructor() {
|
|
5849
5972
|
super(...arguments), this.blocks = [];
|
|
5850
5973
|
}
|
|
5851
5974
|
render() {
|
|
5852
|
-
return !this.blocks || this.blocks.length === 0 ? Ae :
|
|
5975
|
+
return !this.blocks || this.blocks.length === 0 ? Ae : p`
|
|
5853
5976
|
<div class="stack">
|
|
5854
|
-
${this.blocks.map((a) =>
|
|
5977
|
+
${this.blocks.map((a) => p`<cb-block .block=${a}></cb-block>`)}
|
|
5855
5978
|
</div>
|
|
5856
5979
|
`;
|
|
5857
5980
|
}
|
|
@@ -5867,18 +5990,18 @@ qt.styles = K`
|
|
|
5867
5990
|
gap: 0.75em; /* vertical rhythm between blocks */
|
|
5868
5991
|
}
|
|
5869
5992
|
`;
|
|
5870
|
-
|
|
5993
|
+
si([
|
|
5871
5994
|
x({ type: Array })
|
|
5872
5995
|
], qt.prototype, "blocks", 2);
|
|
5873
|
-
qt =
|
|
5996
|
+
qt = si([
|
|
5874
5997
|
J("cb-blocks")
|
|
5875
5998
|
], qt);
|
|
5876
|
-
var zt = { exports: {} },
|
|
5877
|
-
function
|
|
5878
|
-
return
|
|
5999
|
+
var zt = { exports: {} }, on = zt.exports, za;
|
|
6000
|
+
function cn() {
|
|
6001
|
+
return za || (za = 1, (function(a, e) {
|
|
5879
6002
|
(function(t, i) {
|
|
5880
6003
|
a.exports = i();
|
|
5881
|
-
})(
|
|
6004
|
+
})(on, (function() {
|
|
5882
6005
|
function t(n, c) {
|
|
5883
6006
|
if (!(n instanceof c)) throw new TypeError("Cannot call a class as a function");
|
|
5884
6007
|
}
|
|
@@ -5912,11 +6035,11 @@ function Js() {
|
|
|
5912
6035
|
})(n);
|
|
5913
6036
|
}
|
|
5914
6037
|
var f = Date.now();
|
|
5915
|
-
function
|
|
6038
|
+
function b() {
|
|
5916
6039
|
var n = {}, c = !0, l = 0, d = arguments.length;
|
|
5917
6040
|
Object.prototype.toString.call(arguments[0]) === "[object Boolean]" && (c = arguments[0], l++);
|
|
5918
6041
|
for (var u = function(g) {
|
|
5919
|
-
for (var y in g) Object.prototype.hasOwnProperty.call(g, y) && (c && Object.prototype.toString.call(g[y]) === "[object Object]" ? n[y] =
|
|
6042
|
+
for (var y in g) Object.prototype.hasOwnProperty.call(g, y) && (c && Object.prototype.toString.call(g[y]) === "[object Object]" ? n[y] = b(!0, n[y], g[y]) : n[y] = g[y]);
|
|
5920
6043
|
}; l < d; l++) {
|
|
5921
6044
|
var m = arguments[l];
|
|
5922
6045
|
u(m);
|
|
@@ -5924,7 +6047,7 @@ function Js() {
|
|
|
5924
6047
|
return n;
|
|
5925
6048
|
}
|
|
5926
6049
|
function v(n, c) {
|
|
5927
|
-
if ((U(n) || n === window || n === document) && (n = [n]), Pe(n) || Ve(n) || (n = [n]),
|
|
6050
|
+
if ((U(n) || n === window || n === document) && (n = [n]), Pe(n) || Ve(n) || (n = [n]), ga(n) != 0) {
|
|
5928
6051
|
if (Pe(n) && !Ve(n)) for (var l = n.length, d = 0; d < l && c.call(n[d], n[d], d, n) !== !1; d++) ;
|
|
5929
6052
|
else if (Ve(n)) {
|
|
5930
6053
|
for (var u in n) if (se(n, u) && c.call(n[u], n[u], u, n) === !1) break;
|
|
@@ -5933,12 +6056,12 @@ function Js() {
|
|
|
5933
6056
|
}
|
|
5934
6057
|
function k(n) {
|
|
5935
6058
|
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, l = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, d = n[f] = n[f] || [], u = { all: d, evt: null, found: null };
|
|
5936
|
-
return c && l &&
|
|
6059
|
+
return c && l && ga(d) > 0 && v(d, (function(m, g) {
|
|
5937
6060
|
if (m.eventName == c && m.fn.toString() == l.toString()) return u.found = !0, u.evt = g, !1;
|
|
5938
6061
|
})), u;
|
|
5939
6062
|
}
|
|
5940
6063
|
function w(n) {
|
|
5941
|
-
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, u = c.avoidDuplicate, m = u === void 0 || u, g = c.once, y = g !== void 0 && g,
|
|
6064
|
+
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, u = c.avoidDuplicate, m = u === void 0 || u, g = c.once, y = g !== void 0 && g, M = c.useCapture, S = M !== void 0 && M, I = arguments.length > 2 ? arguments[2] : void 0, $ = l || [];
|
|
5942
6065
|
function B(q) {
|
|
5943
6066
|
j(d) && d.call(I, q, this), y && B.destroy();
|
|
5944
6067
|
}
|
|
@@ -5965,7 +6088,7 @@ function Js() {
|
|
|
5965
6088
|
function E(n, c) {
|
|
5966
6089
|
return n.classList.contains(c);
|
|
5967
6090
|
}
|
|
5968
|
-
function
|
|
6091
|
+
function T(n, c) {
|
|
5969
6092
|
for (; n !== document.body; ) {
|
|
5970
6093
|
if (!(n = n.parentElement)) return !1;
|
|
5971
6094
|
if (typeof n.matches == "function" ? n.matches(c) : n.msMatchesSelector(c)) return n;
|
|
@@ -6078,7 +6201,7 @@ function Js() {
|
|
|
6078
6201
|
function se(n, c) {
|
|
6079
6202
|
return n !== null && hasOwnProperty.call(n, c);
|
|
6080
6203
|
}
|
|
6081
|
-
function
|
|
6204
|
+
function ga(n) {
|
|
6082
6205
|
if (Ve(n)) {
|
|
6083
6206
|
if (n.keys) return n.keys().length;
|
|
6084
6207
|
var c = 0;
|
|
@@ -6090,7 +6213,7 @@ function Js() {
|
|
|
6090
6213
|
function _t(n) {
|
|
6091
6214
|
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
6092
6215
|
}
|
|
6093
|
-
function
|
|
6216
|
+
function ma() {
|
|
6094
6217
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : -1, c = document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");
|
|
6095
6218
|
if (!c.length) return !1;
|
|
6096
6219
|
if (c.length == 1) return c[0];
|
|
@@ -6108,7 +6231,7 @@ function Js() {
|
|
|
6108
6231
|
})), g = m.sort()[0];
|
|
6109
6232
|
return document.querySelector('.gbtn[data-taborder="'.concat(g, '"]'));
|
|
6110
6233
|
}
|
|
6111
|
-
function
|
|
6234
|
+
function Si(n) {
|
|
6112
6235
|
if (n.events.hasOwnProperty("keyboard")) return !1;
|
|
6113
6236
|
n.events.keyboard = w("keydown", { onElement: window, withCallback: function(c, l) {
|
|
6114
6237
|
var d = (c = c || window.event).keyCode;
|
|
@@ -6122,16 +6245,16 @@ function Js() {
|
|
|
6122
6245
|
var g = document.querySelectorAll(".gbtn[data-taborder]");
|
|
6123
6246
|
if (!g || g.length <= 0) return;
|
|
6124
6247
|
if (!u) {
|
|
6125
|
-
var y =
|
|
6248
|
+
var y = ma();
|
|
6126
6249
|
return void (y && (y.focus(), _(y, "focused")));
|
|
6127
6250
|
}
|
|
6128
|
-
var
|
|
6129
|
-
P(u, "focused"),
|
|
6251
|
+
var M = ma(u.getAttribute("data-taborder"));
|
|
6252
|
+
P(u, "focused"), M && (M.focus(), _(M, "focused"));
|
|
6130
6253
|
}
|
|
6131
6254
|
d == 39 && n.nextSlide(), d == 37 && n.prevSlide(), d == 27 && n.close();
|
|
6132
6255
|
} });
|
|
6133
6256
|
}
|
|
6134
|
-
var
|
|
6257
|
+
var Ci = s((function n(c, l) {
|
|
6135
6258
|
var d = this, u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
|
|
6136
6259
|
if (t(this, n), this.img = c, this.slide = l, this.onclose = u, this.img.setZoomEvents) return !1;
|
|
6137
6260
|
this.active = !1, this.zoomedIn = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.img.addEventListener("mousedown", (function(m) {
|
|
@@ -6173,10 +6296,10 @@ function Js() {
|
|
|
6173
6296
|
n.style.transform = "translate3d(" + c + "px, " + l + "px, 0)";
|
|
6174
6297
|
} }, { key: "widowWidth", value: function() {
|
|
6175
6298
|
return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
|
|
6176
|
-
} }]),
|
|
6299
|
+
} }]), ya = s((function n() {
|
|
6177
6300
|
var c = this, l = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6178
6301
|
t(this, n);
|
|
6179
|
-
var d = l.dragEl, u = l.toleranceX, m = u === void 0 ? 40 : u, g = l.toleranceY, y = g === void 0 ? 65 : g,
|
|
6302
|
+
var d = l.dragEl, u = l.toleranceX, m = u === void 0 ? 40 : u, g = l.toleranceY, y = g === void 0 ? 65 : g, M = l.slide, S = M === void 0 ? null : M, I = l.instance, $ = I === void 0 ? null : I;
|
|
6180
6303
|
this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance = $, this.el.addEventListener("mousedown", (function(B) {
|
|
6181
6304
|
return c.dragStart(B);
|
|
6182
6305
|
}), !1), this.el.addEventListener("mouseup", (function(B) {
|
|
@@ -6189,7 +6312,7 @@ function Js() {
|
|
|
6189
6312
|
else {
|
|
6190
6313
|
n.type === "touchstart" ? (this.initialX = n.touches[0].clientX - this.xOffset, this.initialY = n.touches[0].clientY - this.yOffset) : (this.initialX = n.clientX - this.xOffset, this.initialY = n.clientY - this.yOffset);
|
|
6191
6314
|
var c = n.target.nodeName.toLowerCase();
|
|
6192
|
-
n.target.classList.contains("nodrag") ||
|
|
6315
|
+
n.target.classList.contains("nodrag") || T(n.target, ".nodrag") || ["input", "select", "textarea", "button", "a"].indexOf(c) !== -1 ? this.active = !1 : (n.preventDefault(), (n.target === this.el || c !== "img" && T(n.target, ".gslide-inline")) && (this.active = !0, this.el.classList.add("dragging"), this.dragContainer = T(n.target, ".ginner-container")));
|
|
6193
6316
|
}
|
|
6194
6317
|
} }, { key: "dragEnd", value: function(n) {
|
|
6195
6318
|
var c = this;
|
|
@@ -6225,14 +6348,14 @@ function Js() {
|
|
|
6225
6348
|
var d = arguments.length > 3 && arguments[3] !== void 0 && arguments[3];
|
|
6226
6349
|
n.style.transition = d ? "all .2s ease" : "", n.style.transform = "translate3d(".concat(c, "px, ").concat(l, "px, 0)");
|
|
6227
6350
|
} }]);
|
|
6228
|
-
function
|
|
6351
|
+
function Ai(n, c, l, d) {
|
|
6229
6352
|
var u = n.querySelector(".gslide-media"), m = new Image(), g = "gSlideTitle_" + l, y = "gSlideDesc_" + l;
|
|
6230
6353
|
m.addEventListener("load", (function() {
|
|
6231
6354
|
j(d) && d();
|
|
6232
6355
|
}), !1), m.src = c.href, c.sizes != "" && c.srcset != "" && (m.sizes = c.sizes, m.srcset = c.srcset), m.alt = "", ue(c.alt) || c.alt === "" || (m.alt = c.alt), c.title !== "" && m.setAttribute("aria-labelledby", g), c.description !== "" && m.setAttribute("aria-describedby", y), c.hasOwnProperty("_hasCustomWidth") && c._hasCustomWidth && (m.style.width = c.width), c.hasOwnProperty("_hasCustomHeight") && c._hasCustomHeight && (m.style.height = c.height), u.insertBefore(m, u.firstChild);
|
|
6233
6356
|
}
|
|
6234
|
-
function
|
|
6235
|
-
var u = this, m = n.querySelector(".ginner-container"), g = "gvideo" + l, y = n.querySelector(".gslide-media"),
|
|
6357
|
+
function Mi(n, c, l, d) {
|
|
6358
|
+
var u = this, m = n.querySelector(".ginner-container"), g = "gvideo" + l, y = n.querySelector(".gslide-media"), M = this.getAllPlayers();
|
|
6236
6359
|
_(m, "gvideo-container"), y.insertBefore(X('<div class="gvideo-wrapper"></div>'), y.firstChild);
|
|
6237
6360
|
var S = n.querySelector(".gvideo-wrapper");
|
|
6238
6361
|
he(this.settings.plyr.css, "Plyr");
|
|
@@ -6247,24 +6370,24 @@ function Js() {
|
|
|
6247
6370
|
_(S, "".concat($, "-video gvideo")), S.appendChild(F), S.setAttribute("data-id", g), S.setAttribute("data-index", l);
|
|
6248
6371
|
var ee = se(u.settings.plyr, "config") ? u.settings.plyr.config : {}, me = new Plyr("#" + g, ee);
|
|
6249
6372
|
me.on("ready", (function(be) {
|
|
6250
|
-
|
|
6373
|
+
M[g] = be.detail.plyr, j(d) && d();
|
|
6251
6374
|
})), ae((function() {
|
|
6252
6375
|
return n.querySelector("iframe") && n.querySelector("iframe").dataset.ready == "true";
|
|
6253
6376
|
}), (function() {
|
|
6254
6377
|
u.resize(n);
|
|
6255
|
-
})), me.on("enterfullscreen",
|
|
6378
|
+
})), me.on("enterfullscreen", va), me.on("exitfullscreen", va);
|
|
6256
6379
|
}));
|
|
6257
6380
|
}
|
|
6258
|
-
function
|
|
6259
|
-
var c =
|
|
6381
|
+
function va(n) {
|
|
6382
|
+
var c = T(n.target, ".gslide-media");
|
|
6260
6383
|
n.type === "enterfullscreen" && _(c, "fullscreen"), n.type === "exitfullscreen" && P(c, "fullscreen");
|
|
6261
6384
|
}
|
|
6262
|
-
function
|
|
6263
|
-
var u, m = this, g = n.querySelector(".gslide-media"), y = !(!se(c, "href") || !c.href) && c.href.split("#").pop().trim(),
|
|
6264
|
-
if (
|
|
6265
|
-
|
|
6385
|
+
function Ti(n, c, l, d) {
|
|
6386
|
+
var u, m = this, g = n.querySelector(".gslide-media"), y = !(!se(c, "href") || !c.href) && c.href.split("#").pop().trim(), M = !(!se(c, "content") || !c.content) && c.content;
|
|
6387
|
+
if (M && (V(M) && (u = X('<div class="ginlined-content">'.concat(M, "</div>"))), U(M))) {
|
|
6388
|
+
M.style.display == "none" && (M.style.display = "block");
|
|
6266
6389
|
var S = document.createElement("div");
|
|
6267
|
-
S.className = "ginlined-content", S.appendChild(
|
|
6390
|
+
S.className = "ginlined-content", S.appendChild(M), u = S;
|
|
6268
6391
|
}
|
|
6269
6392
|
if (y) {
|
|
6270
6393
|
var I = document.getElementById(y);
|
|
@@ -6277,26 +6400,26 @@ function Js() {
|
|
|
6277
6400
|
B.preventDefault(), m.close();
|
|
6278
6401
|
} }), j(d) && d();
|
|
6279
6402
|
}
|
|
6280
|
-
function
|
|
6403
|
+
function Ii(n, c, l, d) {
|
|
6281
6404
|
var u = n.querySelector(".gslide-media"), m = (function(g) {
|
|
6282
|
-
var y = g.url,
|
|
6283
|
-
return $.className = "vimeo-video gvideo", $.src = y, $.style.width = "100%", $.style.height = "100%",
|
|
6405
|
+
var y = g.url, M = g.allow, S = g.callback, I = g.appendTo, $ = document.createElement("iframe");
|
|
6406
|
+
return $.className = "vimeo-video gvideo", $.src = y, $.style.width = "100%", $.style.height = "100%", M && $.setAttribute("allow", M), $.onload = function() {
|
|
6284
6407
|
$.onload = null, _($, "node-ready"), j(S) && S();
|
|
6285
6408
|
}, I && I.appendChild($), $;
|
|
6286
6409
|
})({ url: c.href, callback: d });
|
|
6287
6410
|
u.parentNode.style.maxWidth = c.width, u.parentNode.style.height = c.height, u.appendChild(m);
|
|
6288
6411
|
}
|
|
6289
|
-
var
|
|
6412
|
+
var Ei = s((function n() {
|
|
6290
6413
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6291
|
-
t(this, n), this.defaults = { href: "", sizes: "", srcset: "", title: "", type: "", videoProvider: "", description: "", alt: "", descPosition: "bottom", effect: "", width: "", height: "", content: !1, zoomable: !0, draggable: !0 }, Ve(c) && (this.defaults =
|
|
6414
|
+
t(this, n), this.defaults = { href: "", sizes: "", srcset: "", title: "", type: "", videoProvider: "", description: "", alt: "", descPosition: "bottom", effect: "", width: "", height: "", content: !1, zoomable: !0, draggable: !0 }, Ve(c) && (this.defaults = b(this.defaults, c));
|
|
6292
6415
|
}), [{ key: "sourceType", value: function(n) {
|
|
6293
6416
|
var c = n;
|
|
6294
6417
|
return (n = n.toLowerCase()).match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/) !== null ? "image" : n.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || n.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || n.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || n.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/) || n.match(/vimeo\.com\/([0-9]*)/) || n.match(/\.(mp4|ogg|webm|mov)/) !== null ? "video" : n.match(/\.(mp3|wav|wma|aac|ogg)/) !== null ? "audio" : n.indexOf("#") > -1 && c.split("#").pop().trim() !== "" ? "inline" : n.indexOf("goajax=true") > -1 ? "ajax" : "external";
|
|
6295
6418
|
} }, { key: "parseConfig", value: function(n, c) {
|
|
6296
|
-
var l = this, d =
|
|
6419
|
+
var l = this, d = b({ descPosition: c.descPosition }, this.defaults);
|
|
6297
6420
|
if (Ve(n) && !U(n)) {
|
|
6298
6421
|
se(n, "type") || (se(n, "content") && n.content ? n.type = "inline" : se(n, "href") && (n.type = this.sourceType(n.href)));
|
|
6299
|
-
var u =
|
|
6422
|
+
var u = b(d, n);
|
|
6300
6423
|
return this.setSize(u, c), u;
|
|
6301
6424
|
}
|
|
6302
6425
|
var m = "", g = n.getAttribute("data-glightbox"), y = n.nodeName.toLowerCase();
|
|
@@ -6306,8 +6429,8 @@ function Js() {
|
|
|
6306
6429
|
ue(ee) || (d[F] = l.sanitizeValue(ee));
|
|
6307
6430
|
})), d.content && (d.type = "inline"), !d.type && m && (d.type = this.sourceType(m)), ue(g)) {
|
|
6308
6431
|
if (!d.title && y == "a") {
|
|
6309
|
-
var
|
|
6310
|
-
ue(
|
|
6432
|
+
var M = n.title;
|
|
6433
|
+
ue(M) || M === "" || (d.title = M);
|
|
6311
6434
|
}
|
|
6312
6435
|
if (!d.title && y == "img") {
|
|
6313
6436
|
var S = n.alt;
|
|
@@ -6353,18 +6476,18 @@ function Js() {
|
|
|
6353
6476
|
if (E(c, "loaded")) return !1;
|
|
6354
6477
|
var d = this.instance.settings, u = this.slideConfig, m = ge();
|
|
6355
6478
|
j(d.beforeSlideLoad) && d.beforeSlideLoad({ index: this.index, slide: c, player: !1 });
|
|
6356
|
-
var g = u.type, y = u.descPosition,
|
|
6479
|
+
var g = u.type, y = u.descPosition, M = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), I = c.querySelector(".gslide-desc"), $ = c.querySelector(".gdesc-inner"), B = l, q = "gSlideTitle_" + this.index, F = "gSlideDesc_" + this.index;
|
|
6357
6480
|
if (j(d.afterSlideLoad) && (B = function() {
|
|
6358
6481
|
j(l) && l(), d.afterSlideLoad({ index: n.index, slide: c, player: n.instance.getSlidePlayerInstance(n.index) });
|
|
6359
|
-
}), u.title == "" && u.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && u.title !== "" ? (S.id = q, S.innerHTML = u.title) : S.parentNode.removeChild(S), I && u.description !== "" ? (I.id = F, m && d.moreLength > 0 ? (u.smallDescription = this.slideShortDesc(u.description, d.moreLength, d.moreText), I.innerHTML = u.smallDescription, this.descriptionEvents(I, u)) : I.innerHTML = u.description) : I.parentNode.removeChild(I), _(
|
|
6360
|
-
if (g !== "external") return g === "inline" ? (
|
|
6482
|
+
}), u.title == "" && u.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && u.title !== "" ? (S.id = q, S.innerHTML = u.title) : S.parentNode.removeChild(S), I && u.description !== "" ? (I.id = F, m && d.moreLength > 0 ? (u.smallDescription = this.slideShortDesc(u.description, d.moreLength, d.moreText), I.innerHTML = u.smallDescription, this.descriptionEvents(I, u)) : I.innerHTML = u.description) : I.parentNode.removeChild(I), _(M.parentNode, "desc-".concat(y)), _($.parentNode, "description-".concat(y))), _(M, "gslide-".concat(g)), _(c, "loaded"), g !== "video") {
|
|
6483
|
+
if (g !== "external") return g === "inline" ? (Ti.apply(this.instance, [c, u, this.index, B]), void (u.draggable && new ya({ dragEl: c.querySelector(".gslide-inline"), toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: this.instance }))) : void (g !== "image" ? j(B) && B() : Ai(c, u, this.index, (function() {
|
|
6361
6484
|
var ee = c.querySelector("img");
|
|
6362
|
-
u.draggable && new
|
|
6485
|
+
u.draggable && new ya({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), u.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new Ci(ee, c, (function() {
|
|
6363
6486
|
n.instance.resize();
|
|
6364
6487
|
}))), j(B) && B();
|
|
6365
6488
|
})));
|
|
6366
|
-
|
|
6367
|
-
} else
|
|
6489
|
+
Ii.apply(this, [c, u, this.index, B]);
|
|
6490
|
+
} else Mi.apply(this.instance, [c, u, this.index, B]);
|
|
6368
6491
|
} }, { key: "slideShortDesc", value: function(n) {
|
|
6369
6492
|
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 50, l = arguments.length > 2 && arguments[2] !== void 0 && arguments[2], d = document.createElement("div");
|
|
6370
6493
|
d.innerHTML = n;
|
|
@@ -6377,31 +6500,31 @@ function Js() {
|
|
|
6377
6500
|
if (!d) return !1;
|
|
6378
6501
|
w("click", { onElement: d, withCallback: function(u, m) {
|
|
6379
6502
|
u.preventDefault();
|
|
6380
|
-
var g = document.body, y =
|
|
6503
|
+
var g = document.body, y = T(m, ".gslide-desc");
|
|
6381
6504
|
if (!y) return !1;
|
|
6382
6505
|
y.innerHTML = c.description, _(g, "gdesc-open");
|
|
6383
|
-
var
|
|
6506
|
+
var M = w("click", { onElement: [g, T(y, ".gslide-description")], withCallback: function(S, I) {
|
|
6384
6507
|
S.target.nodeName.toLowerCase() !== "a" && (P(g, "gdesc-open"), _(g, "gdesc-closed"), y.innerHTML = c.smallDescription, l.descriptionEvents(y, c), setTimeout((function() {
|
|
6385
6508
|
P(g, "gdesc-closed");
|
|
6386
|
-
}), 400),
|
|
6509
|
+
}), 400), M.destroy());
|
|
6387
6510
|
} });
|
|
6388
6511
|
} });
|
|
6389
6512
|
} }, { key: "create", value: function() {
|
|
6390
6513
|
return X(this.instance.settings.slideHTML);
|
|
6391
6514
|
} }, { key: "getConfig", value: function() {
|
|
6392
6515
|
U(this.element) || this.element.hasOwnProperty("draggable") || (this.element.draggable = this.instance.settings.draggable);
|
|
6393
|
-
var n = new
|
|
6516
|
+
var n = new Ei(this.instance.settings.slideExtraAttributes);
|
|
6394
6517
|
return this.slideConfig = n.parseConfig(this.element, this.instance.settings), this.slideConfig;
|
|
6395
6518
|
} }]);
|
|
6396
6519
|
function Ct(n) {
|
|
6397
6520
|
return Math.sqrt(n.x * n.x + n.y * n.y);
|
|
6398
6521
|
}
|
|
6399
|
-
function
|
|
6522
|
+
function $i(n, c) {
|
|
6400
6523
|
var l = (function(d, u) {
|
|
6401
6524
|
var m = Ct(d) * Ct(u);
|
|
6402
6525
|
if (m === 0) return 0;
|
|
6403
|
-
var g = (function(y,
|
|
6404
|
-
return y.x *
|
|
6526
|
+
var g = (function(y, M) {
|
|
6527
|
+
return y.x * M.x + y.y * M.y;
|
|
6405
6528
|
})(d, u) / m;
|
|
6406
6529
|
return g > 1 && (g = 1), Math.acos(g);
|
|
6407
6530
|
})(n, c);
|
|
@@ -6409,7 +6532,7 @@ function Js() {
|
|
|
6409
6532
|
return d.x * u.y - u.x * d.y;
|
|
6410
6533
|
})(n, c) > 0 && (l *= -1), 180 * l / Math.PI;
|
|
6411
6534
|
}
|
|
6412
|
-
var
|
|
6535
|
+
var Pi = s((function n(c) {
|
|
6413
6536
|
t(this, n), this.handlers = [], this.el = c;
|
|
6414
6537
|
}), [{ key: "add", value: function(n) {
|
|
6415
6538
|
this.handlers.push(n);
|
|
@@ -6423,10 +6546,10 @@ function Js() {
|
|
|
6423
6546
|
}
|
|
6424
6547
|
} }]);
|
|
6425
6548
|
function de(n, c) {
|
|
6426
|
-
var l = new
|
|
6549
|
+
var l = new Pi(n);
|
|
6427
6550
|
return l.add(c), l;
|
|
6428
6551
|
}
|
|
6429
|
-
var
|
|
6552
|
+
var Li = s((function n(c, l) {
|
|
6430
6553
|
t(this, n), this.element = typeof c == "string" ? document.querySelector(c) : c, this.start = this.start.bind(this), this.move = this.move.bind(this), this.end = this.end.bind(this), this.cancel = this.cancel.bind(this), this.element.addEventListener("touchstart", this.start, !1), this.element.addEventListener("touchmove", this.move, !1), this.element.addEventListener("touchend", this.end, !1), this.element.addEventListener("touchcancel", this.cancel, !1), this.preV = { x: null, y: null }, this.pinchStartLen = null, this.zoom = 1, this.isDoubleTap = !1;
|
|
6431
6554
|
var d = function() {
|
|
6432
6555
|
};
|
|
@@ -6450,12 +6573,12 @@ function Js() {
|
|
|
6450
6573
|
var c = this.preV, l = n.touches.length, d = n.touches[0].pageX, u = n.touches[0].pageY;
|
|
6451
6574
|
if (this.isDoubleTap = !1, l > 1) {
|
|
6452
6575
|
var m = n.touches[1].pageX, g = n.touches[1].pageY, y = { x: n.touches[1].pageX - d, y: n.touches[1].pageY - u };
|
|
6453
|
-
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = Ct(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle =
|
|
6576
|
+
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = Ct(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle = $i(y, c), this.rotate.dispatch(n, this.element)), c.x = y.x, c.y = y.y, this.x2 !== null && this.sx2 !== null ? (n.deltaX = (d - this.x2 + m - this.sx2) / 2, n.deltaY = (u - this.y2 + g - this.sy2) / 2) : (n.deltaX = 0, n.deltaY = 0), this.twoFingerPressMove.dispatch(n, this.element), this.sx2 = m, this.sy2 = g;
|
|
6454
6577
|
} else {
|
|
6455
6578
|
if (this.x2 !== null) {
|
|
6456
6579
|
n.deltaX = d - this.x2, n.deltaY = u - this.y2;
|
|
6457
|
-
var
|
|
6458
|
-
(
|
|
6580
|
+
var M = Math.abs(this.x1 - this.x2), S = Math.abs(this.y1 - this.y2);
|
|
6581
|
+
(M > 10 || S > 10) && (this._preventTap = !0);
|
|
6459
6582
|
} else n.deltaX = 0, n.deltaY = 0;
|
|
6460
6583
|
this.pressMove.dispatch(n, this.element);
|
|
6461
6584
|
}
|
|
@@ -6492,18 +6615,18 @@ function Js() {
|
|
|
6492
6615
|
} }]);
|
|
6493
6616
|
function Wt(n) {
|
|
6494
6617
|
var c = (function() {
|
|
6495
|
-
var g, y = document.createElement("fakeelement"),
|
|
6496
|
-
for (g in
|
|
6497
|
-
})(), l = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, d = E(n, "gslide-media") ? n : n.querySelector(".gslide-media"), u =
|
|
6618
|
+
var g, y = document.createElement("fakeelement"), M = { transition: "transitionend", OTransition: "oTransitionEnd", MozTransition: "transitionend", WebkitTransition: "webkitTransitionEnd" };
|
|
6619
|
+
for (g in M) if (y.style[g] !== void 0) return M[g];
|
|
6620
|
+
})(), l = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, d = E(n, "gslide-media") ? n : n.querySelector(".gslide-media"), u = T(d, ".ginner-container"), m = n.querySelector(".gslide-description");
|
|
6498
6621
|
l > 769 && (d = u), _(d, "greset"), C(d, "translate3d(0, 0, 0)"), w(c, { onElement: d, once: !0, withCallback: function(g, y) {
|
|
6499
6622
|
P(d, "greset");
|
|
6500
6623
|
} }), d.style.opacity = "", m && (m.style.opacity = "");
|
|
6501
6624
|
}
|
|
6502
|
-
function
|
|
6625
|
+
function Ri(n) {
|
|
6503
6626
|
if (n.events.hasOwnProperty("touch")) return !1;
|
|
6504
|
-
var c, l, d, u = te(), m = u.width, g = u.height, y = !1,
|
|
6505
|
-
if (y = !0, (E(Y.targetTouches[0].target, "ginner-container") ||
|
|
6506
|
-
if (Se = Y.targetTouches[0], _e.pageX = Y.targetTouches[0].pageX, _e.pageY = Y.targetTouches[0].pageY,
|
|
6627
|
+
var c, l, d, u = te(), m = u.width, g = u.height, y = !1, M = null, S = null, I = null, $ = !1, B = 1, q = 1, F = !1, ee = !1, me = null, be = null, Le = null, oe = null, Re = 0, ze = 0, ht = !1, rt = !1, _e = {}, Se = {}, _a = 0, Sa = 0, Bi = document.getElementById("glightbox-slider"), At = document.querySelector(".goverlay"), qi = new Li(Bi, { touchStart: function(Y) {
|
|
6628
|
+
if (y = !0, (E(Y.targetTouches[0].target, "ginner-container") || T(Y.targetTouches[0].target, ".gslide-desc") || Y.targetTouches[0].target.nodeName.toLowerCase() == "a") && (y = !1), T(Y.targetTouches[0].target, ".gslide-inline") && !E(Y.targetTouches[0].target.parentNode, "gslide-inline") && (y = !1), y) {
|
|
6629
|
+
if (Se = Y.targetTouches[0], _e.pageX = Y.targetTouches[0].pageX, _e.pageY = Y.targetTouches[0].pageY, _a = Y.targetTouches[0].clientX, Sa = Y.targetTouches[0].clientY, M = n.activeSlide, S = M.querySelector(".gslide-media"), d = M.querySelector(".gslide-inline"), I = null, E(S, "gslide-image") && (I = S.querySelector("img")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (S = M.querySelector(".ginner-container")), P(At, "greset"), Y.pageX > 20 && Y.pageX < window.innerWidth - 20) return;
|
|
6507
6630
|
Y.preventDefault();
|
|
6508
6631
|
}
|
|
6509
6632
|
}, touchMove: function(Y) {
|
|
@@ -6513,8 +6636,8 @@ function Js() {
|
|
|
6513
6636
|
if (Math.abs(fe) <= 13) return !1;
|
|
6514
6637
|
}
|
|
6515
6638
|
$ = !0;
|
|
6516
|
-
var Ue, Mt = Y.targetTouches[0].clientX,
|
|
6517
|
-
if (Math.abs(
|
|
6639
|
+
var Ue, Mt = Y.targetTouches[0].clientX, Di = Y.targetTouches[0].clientY, Fi = _a - Mt, Hi = Sa - Di;
|
|
6640
|
+
if (Math.abs(Fi) > Math.abs(Hi) ? (ht = !1, rt = !0) : (rt = !1, ht = !0), c = Se.pageX - _e.pageX, Re = 100 * c / m, l = Se.pageY - _e.pageY, ze = 100 * l / g, ht && I && (Ue = 1 - Math.abs(l) / g, At.style.opacity = Ue, n.settings.touchFollowAxis && (Re = 0)), rt && (Ue = 1 - Math.abs(c) / m, S.style.opacity = Ue, n.settings.touchFollowAxis && (ze = 0)), !I) return C(S, "translate3d(".concat(Re, "%, 0, 0)"));
|
|
6518
6641
|
C(S, "translate3d(".concat(Re, "%, ").concat(ze, "%, 0)"));
|
|
6519
6642
|
}
|
|
6520
6643
|
}, touchEnd: function() {
|
|
@@ -6556,9 +6679,9 @@ function Js() {
|
|
|
6556
6679
|
}
|
|
6557
6680
|
}
|
|
6558
6681
|
} });
|
|
6559
|
-
n.events.touch =
|
|
6682
|
+
n.events.touch = qi;
|
|
6560
6683
|
}
|
|
6561
|
-
var
|
|
6684
|
+
var wa = ge(), xa = ge() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, ka = document.getElementsByTagName("html")[0], zi = { selector: ".glightbox", elements: null, skin: "clean", theme: "clean", closeButton: !0, startAt: null, autoplayVideos: !0, autofocusVideos: !0, descPosition: "bottom", width: "900px", height: "506px", videosWidth: "960px", beforeSlideChange: null, afterSlideChange: null, beforeSlideLoad: null, afterSlideLoad: null, slideInserted: null, slideRemoved: null, slideExtraAttributes: null, onOpen: null, onClose: null, loop: !1, zoomable: !0, draggable: !0, dragAutoSnap: !1, dragToleranceX: 40, dragToleranceY: 65, preload: !0, oneSlidePerOpen: !1, touchNavigation: !0, touchFollowAxis: !0, keyboardNavigation: !0, closeOnOutsideClick: !0, plugins: !1, plyr: { css: "https://cdn.plyr.io/3.6.12/plyr.css", js: "https://cdn.plyr.io/3.6.12/plyr.js", config: { ratio: "16:9", fullscreen: { enabled: !0, iosNative: !0 }, youtube: { noCookie: !0, rel: 0, showinfo: 0, iv_load_policy: 3 }, vimeo: { byline: !1, portrait: !1, title: !1, transparent: !1 } } }, openEffect: "zoom", closeEffect: "zoom", slideEffect: "slide", moreText: "See more", moreLength: 60, cssEfects: { fade: { in: "fadeIn", out: "fadeOut" }, zoom: { in: "zoomIn", out: "zoomOut" }, slide: { in: "slideInRight", out: "slideOutLeft" }, slideBack: { in: "slideInLeft", out: "slideOutRight" }, none: { in: "none", out: "none" } }, svg: { close: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>', next: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>', prev: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>' }, slideHTML: `<div class="gslide">
|
|
6562
6685
|
<div class="gslide-inner-content">
|
|
6563
6686
|
<div class="ginner-container">
|
|
6564
6687
|
<div class="gslide-media">
|
|
@@ -6580,9 +6703,9 @@ function Js() {
|
|
|
6580
6703
|
<button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>
|
|
6581
6704
|
<button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>
|
|
6582
6705
|
</div>
|
|
6583
|
-
</div>` },
|
|
6706
|
+
</div>` }, Oi = s((function n() {
|
|
6584
6707
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6585
|
-
t(this, n), this.customOptions = c, this.settings =
|
|
6708
|
+
t(this, n), this.customOptions = c, this.settings = b(zi, c), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;
|
|
6586
6709
|
}), [{ key: "init", value: function() {
|
|
6587
6710
|
var n = this, c = this.getSelector();
|
|
6588
6711
|
c && (this.baseEvents = w("click", { onElement: c, withCallback: function(l, d) {
|
|
@@ -6603,7 +6726,7 @@ function Js() {
|
|
|
6603
6726
|
var g = document.createElement("style");
|
|
6604
6727
|
g.type = "text/css", g.className = "gcss-styles", g.innerText = ".gscrollbar-fixer {margin-right: ".concat(m, "px}"), document.head.appendChild(g), _(u, "gscrollbar-fixer");
|
|
6605
6728
|
}
|
|
6606
|
-
_(u, "glightbox-open"), _(
|
|
6729
|
+
_(u, "glightbox-open"), _(ka, "glightbox-open"), wa && (_(document.body, "glightbox-mobile"), this.settings.slideEffect = "slide"), this.showSlide(l, !0), this.elements.length === 1 ? (_(this.prevButton, "glightbox-button-hidden"), _(this.nextButton, "glightbox-button-hidden")) : (P(this.prevButton, "glightbox-button-hidden"), P(this.nextButton, "glightbox-button-hidden")), this.lightboxOpen = !0, this.trigger("open"), j(this.settings.onOpen) && this.settings.onOpen(), xa && this.settings.touchNavigation && Ri(this), this.settings.keyboardNavigation && Si(this);
|
|
6607
6730
|
} }, { key: "openAt", value: function() {
|
|
6608
6731
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
|
|
6609
6732
|
this.open(null, n);
|
|
@@ -6646,18 +6769,18 @@ function Js() {
|
|
|
6646
6769
|
} }, { key: "insertSlide", value: function() {
|
|
6647
6770
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1;
|
|
6648
6771
|
c < 0 && (c = this.elements.length);
|
|
6649
|
-
var l = new St(n, this, c), d = l.getConfig(), u =
|
|
6772
|
+
var l = new St(n, this, c), d = l.getConfig(), u = b({}, d), m = l.create(), g = this.elements.length - 1;
|
|
6650
6773
|
u.index = c, u.node = !1, u.instance = l, u.slideConfig = d, this.elements.splice(c, 0, u);
|
|
6651
|
-
var y = null,
|
|
6774
|
+
var y = null, M = null;
|
|
6652
6775
|
if (this.slidesContainer) {
|
|
6653
6776
|
if (c > g) this.slidesContainer.appendChild(m);
|
|
6654
6777
|
else {
|
|
6655
6778
|
var S = this.slidesContainer.querySelectorAll(".gslide")[c];
|
|
6656
6779
|
this.slidesContainer.insertBefore(m, S);
|
|
6657
6780
|
}
|
|
6658
|
-
(this.settings.preload && this.index == 0 && c == 0 || this.index - 1 == c || this.index + 1 == c) && this.preloadSlide(c), this.index === 0 && c === 0 && (this.index = 1), this.updateNavigationClasses(), y = this.slidesContainer.querySelectorAll(".gslide")[c],
|
|
6781
|
+
(this.settings.preload && this.index == 0 && c == 0 || this.index - 1 == c || this.index + 1 == c) && this.preloadSlide(c), this.index === 0 && c === 0 && (this.index = 1), this.updateNavigationClasses(), y = this.slidesContainer.querySelectorAll(".gslide")[c], M = this.getSlidePlayerInstance(c), u.slideNode = y;
|
|
6659
6782
|
}
|
|
6660
|
-
this.trigger("slide_inserted", { index: c, slide: y, slideNode: y, slideConfig: d, slideIndex: c, trigger: null, player:
|
|
6783
|
+
this.trigger("slide_inserted", { index: c, slide: y, slideNode: y, slideConfig: d, slideIndex: c, trigger: null, player: M }), j(this.settings.slideInserted) && this.settings.slideInserted({ index: c, slide: y, player: M });
|
|
6661
6784
|
} }, { key: "removeSlide", value: function() {
|
|
6662
6785
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : -1;
|
|
6663
6786
|
if (n < 0 || n > this.elements.length - 1) return !1;
|
|
@@ -6669,8 +6792,8 @@ function Js() {
|
|
|
6669
6792
|
l.settings.autoplayVideos && l.slidePlayerPlay(n), l.trigger("slide_changed", { prev: m, current: g }), j(l.settings.afterSlideChange) && l.settings.afterSlideChange.apply(l, [m, g]);
|
|
6670
6793
|
}));
|
|
6671
6794
|
else {
|
|
6672
|
-
var y = this.settings.slideEffect,
|
|
6673
|
-
this.prevActiveSlideIndex > this.index && this.settings.slideEffect == "slide" && (
|
|
6795
|
+
var y = this.settings.slideEffect, M = y !== "none" ? this.settings.cssEfects[y].in : y;
|
|
6796
|
+
this.prevActiveSlideIndex > this.index && this.settings.slideEffect == "slide" && (M = this.settings.cssEfects.slideBack.in), L(n, M, (function() {
|
|
6674
6797
|
l.settings.autoplayVideos && l.slidePlayerPlay(n), l.trigger("slide_changed", { prev: m, current: g }), j(l.settings.afterSlideChange) && l.settings.afterSlideChange.apply(l, [m, g]);
|
|
6675
6798
|
}));
|
|
6676
6799
|
}
|
|
@@ -6716,7 +6839,7 @@ function Js() {
|
|
|
6716
6839
|
l && !l.playing && l.play();
|
|
6717
6840
|
} }, { key: "slidePlayerPlay", value: function(n) {
|
|
6718
6841
|
var c;
|
|
6719
|
-
if (!
|
|
6842
|
+
if (!wa || (c = this.settings.plyr.config) !== null && c !== void 0 && c.muted) {
|
|
6720
6843
|
if (U(n)) {
|
|
6721
6844
|
var l = n.querySelector(".gvideo-wrapper");
|
|
6722
6845
|
l && (n = l.getAttribute("data-index"));
|
|
@@ -6729,7 +6852,7 @@ function Js() {
|
|
|
6729
6852
|
this.settings.elements = !1;
|
|
6730
6853
|
var l = [];
|
|
6731
6854
|
n && n.length && v(n, (function(d, u) {
|
|
6732
|
-
var m = new St(d, c, u), g = m.getConfig(), y =
|
|
6855
|
+
var m = new St(d, c, u), g = m.getConfig(), y = b({}, g);
|
|
6733
6856
|
y.slideConfig = g, y.instance = m, y.index = u, l.push(y);
|
|
6734
6857
|
})), this.elements = l, this.lightboxOpen && (this.slidesContainer.innerHTML = "", this.elements.length && (v(this.elements, (function() {
|
|
6735
6858
|
var d = X(c.settings.slideHTML);
|
|
@@ -6743,12 +6866,12 @@ function Js() {
|
|
|
6743
6866
|
} }, { key: "getElements", value: function() {
|
|
6744
6867
|
var n = this, c = [];
|
|
6745
6868
|
this.elements = this.elements ? this.elements : [], !ue(this.settings.elements) && $e(this.settings.elements) && this.settings.elements.length && v(this.settings.elements, (function(d, u) {
|
|
6746
|
-
var m = new St(d, n, u), g = m.getConfig(), y =
|
|
6869
|
+
var m = new St(d, n, u), g = m.getConfig(), y = b({}, g);
|
|
6747
6870
|
y.node = !1, y.index = u, y.instance = m, y.slideConfig = g, c.push(y);
|
|
6748
6871
|
}));
|
|
6749
6872
|
var l = !1;
|
|
6750
6873
|
return this.getSelector() && (l = document.querySelectorAll(this.getSelector())), l && v(l, (function(d, u) {
|
|
6751
|
-
var m = new St(d, n, u), g = m.getConfig(), y =
|
|
6874
|
+
var m = new St(d, n, u), g = m.getConfig(), y = b({}, g);
|
|
6752
6875
|
y.node = d, y.index = u, y.instance = m, y.slideConfig = g, y.gallery = d.getAttribute("data-gallery"), c.push(y);
|
|
6753
6876
|
})), c;
|
|
6754
6877
|
} }, { key: "getGalleryElements", value: function(n, c) {
|
|
@@ -6779,18 +6902,18 @@ function Js() {
|
|
|
6779
6902
|
g = X(g = (g = (g = g.replace(/{nextSVG}/g, d)).replace(/{prevSVG}/g, u)).replace(/{closeSVG}/g, m)), document.body.appendChild(g);
|
|
6780
6903
|
var y = document.getElementById("glightbox-body");
|
|
6781
6904
|
this.modal = y;
|
|
6782
|
-
var
|
|
6783
|
-
this.prevButton = y.querySelector(".gprev"), this.nextButton = y.querySelector(".gnext"), this.overlay = y.querySelector(".goverlay"), this.loader = y.querySelector(".gloader"), this.slidesContainer = document.getElementById("glightbox-slider"), this.bodyHiddenChildElms = l, this.events = {}, _(this.modal, "glightbox-" + this.settings.skin), this.settings.closeButton &&
|
|
6905
|
+
var M = y.querySelector(".gclose");
|
|
6906
|
+
this.prevButton = y.querySelector(".gprev"), this.nextButton = y.querySelector(".gnext"), this.overlay = y.querySelector(".goverlay"), this.loader = y.querySelector(".gloader"), this.slidesContainer = document.getElementById("glightbox-slider"), this.bodyHiddenChildElms = l, this.events = {}, _(this.modal, "glightbox-" + this.settings.skin), this.settings.closeButton && M && (this.events.close = w("click", { onElement: M, withCallback: function(S, I) {
|
|
6784
6907
|
S.preventDefault(), n.close();
|
|
6785
|
-
} })),
|
|
6908
|
+
} })), M && !this.settings.closeButton && M.parentNode.removeChild(M), this.nextButton && (this.events.next = w("click", { onElement: this.nextButton, withCallback: function(S, I) {
|
|
6786
6909
|
S.preventDefault(), n.nextSlide();
|
|
6787
6910
|
} })), this.prevButton && (this.events.prev = w("click", { onElement: this.prevButton, withCallback: function(S, I) {
|
|
6788
6911
|
S.preventDefault(), n.prevSlide();
|
|
6789
6912
|
} })), this.settings.closeOnOutsideClick && (this.events.outClose = w("click", { onElement: y, withCallback: function(S, I) {
|
|
6790
|
-
n.preventOutsideClick || E(document.body, "glightbox-mobile") ||
|
|
6913
|
+
n.preventOutsideClick || E(document.body, "glightbox-mobile") || T(S.target, ".ginner-container") || T(S.target, ".gbtn") || E(S.target, "gnext") || E(S.target, "gprev") || n.close();
|
|
6791
6914
|
} })), v(this.elements, (function(S, I) {
|
|
6792
6915
|
n.slidesContainer.appendChild(S.instance.create()), S.slideNode = n.slidesContainer.querySelectorAll(".gslide")[I];
|
|
6793
|
-
})),
|
|
6916
|
+
})), xa && _(document.body, "glightbox-touch"), this.events.resize = w("resize", { onElement: window, withCallback: function() {
|
|
6794
6917
|
n.resize();
|
|
6795
6918
|
} }), this.built = !0;
|
|
6796
6919
|
} }, { key: "resize", value: function() {
|
|
@@ -6802,7 +6925,7 @@ function Js() {
|
|
|
6802
6925
|
if (u && (E(u, "description-bottom") || E(u, "description-top")) && !E(u, "gabsolute") && (y = !0), d) {
|
|
6803
6926
|
if (m <= 768) d.querySelector("img");
|
|
6804
6927
|
else if (y) {
|
|
6805
|
-
var
|
|
6928
|
+
var M, S, I = u.offsetHeight, $ = d.querySelector("img"), B = (M = this.elements[this.index]) === null || M === void 0 ? void 0 : M.node, q = "100vh";
|
|
6806
6929
|
B && (q = (S = B.getAttribute("data-height")) !== null && S !== void 0 ? S : q), $.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(I, "px)")), u.setAttribute("style", "max-width: ".concat($.offsetWidth, "px;"));
|
|
6807
6930
|
}
|
|
6808
6931
|
}
|
|
@@ -6846,7 +6969,7 @@ function Js() {
|
|
|
6846
6969
|
n.events = null;
|
|
6847
6970
|
}
|
|
6848
6971
|
var d = document.body;
|
|
6849
|
-
P(
|
|
6972
|
+
P(ka, "glightbox-open"), P(d, "glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"), n.modal.parentNode.removeChild(n.modal), n.trigger("close"), j(n.settings.onClose) && n.settings.onClose();
|
|
6850
6973
|
var u = document.querySelector(".gcss-styles");
|
|
6851
6974
|
u && u.parentNode.removeChild(u), n.lightboxOpen = !1, n.closing = null;
|
|
6852
6975
|
}));
|
|
@@ -6861,8 +6984,8 @@ function Js() {
|
|
|
6861
6984
|
} }, { key: "trigger", value: function(n) {
|
|
6862
6985
|
var c = this, l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, d = [];
|
|
6863
6986
|
v(this.apiEvents, (function(u, m) {
|
|
6864
|
-
var g = u.evt, y = u.once,
|
|
6865
|
-
g == n && (
|
|
6987
|
+
var g = u.evt, y = u.once, M = u.callback;
|
|
6988
|
+
g == n && (M(l), y && d.push(m));
|
|
6866
6989
|
})), d.length && v(d, (function(u) {
|
|
6867
6990
|
return c.apiEvents.splice(u, 1);
|
|
6868
6991
|
}));
|
|
@@ -6872,25 +6995,25 @@ function Js() {
|
|
|
6872
6995
|
return "3.3.1";
|
|
6873
6996
|
} }]);
|
|
6874
6997
|
return function() {
|
|
6875
|
-
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new
|
|
6998
|
+
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new Oi(n);
|
|
6876
6999
|
return c.init(), c;
|
|
6877
7000
|
};
|
|
6878
7001
|
}));
|
|
6879
7002
|
})(zt)), zt.exports;
|
|
6880
7003
|
}
|
|
6881
|
-
var
|
|
6882
|
-
const
|
|
6883
|
-
var
|
|
6884
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
7004
|
+
var ln = cn();
|
|
7005
|
+
const dn = /* @__PURE__ */ Ya(ln);
|
|
7006
|
+
var fn = Object.getOwnPropertyDescriptor, hn = (a, e, t, i) => {
|
|
7007
|
+
for (var s = i > 1 ? void 0 : i ? fn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6885
7008
|
(o = a[r]) && (s = o(s) || s);
|
|
6886
7009
|
return s;
|
|
6887
7010
|
};
|
|
6888
|
-
let
|
|
7011
|
+
let ta = class extends Fe {
|
|
6889
7012
|
render() {
|
|
6890
|
-
return
|
|
7013
|
+
return p` <div class="cb-thinking"><span></span><span></span><span></span></div>`;
|
|
6891
7014
|
}
|
|
6892
7015
|
};
|
|
6893
|
-
|
|
7016
|
+
ta.styles = K`
|
|
6894
7017
|
.cb-thinking {
|
|
6895
7018
|
text-align: center;
|
|
6896
7019
|
}
|
|
@@ -6928,26 +7051,26 @@ ea.styles = K`
|
|
|
6928
7051
|
}
|
|
6929
7052
|
}
|
|
6930
7053
|
`;
|
|
6931
|
-
|
|
7054
|
+
ta = hn([
|
|
6932
7055
|
J("cb-thinking")
|
|
6933
|
-
],
|
|
6934
|
-
var
|
|
6935
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
7056
|
+
], ta);
|
|
7057
|
+
var un = Object.defineProperty, bn = Object.getOwnPropertyDescriptor, ni = (a, e, t, i) => {
|
|
7058
|
+
for (var s = i > 1 ? void 0 : i ? bn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6936
7059
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
6937
|
-
return i && s &&
|
|
7060
|
+
return i && s && un(e, t, s), s;
|
|
6938
7061
|
};
|
|
6939
7062
|
let Dt = class extends re {
|
|
6940
7063
|
constructor() {
|
|
6941
7064
|
super(...arguments), this.files = [];
|
|
6942
7065
|
}
|
|
6943
7066
|
render() {
|
|
6944
|
-
return
|
|
7067
|
+
return p` <div class="cb-uploading">
|
|
6945
7068
|
<div class="cb-uploading__title">
|
|
6946
7069
|
<sl-spinner class="cb-spinner"></sl-spinner>
|
|
6947
7070
|
<span>Uploading...</span>
|
|
6948
7071
|
</div>
|
|
6949
7072
|
<div class="cb-uploading__filelist">
|
|
6950
|
-
${this.files.map((a) =>
|
|
7073
|
+
${this.files.map((a) => p`${a.name}<br />`)}
|
|
6951
7074
|
</div>
|
|
6952
7075
|
</div>`;
|
|
6953
7076
|
}
|
|
@@ -6970,13 +7093,13 @@ Dt.styles = K`
|
|
|
6970
7093
|
margin-right: 5px;
|
|
6971
7094
|
}
|
|
6972
7095
|
`;
|
|
6973
|
-
|
|
7096
|
+
ni([
|
|
6974
7097
|
x({ type: Array })
|
|
6975
7098
|
], Dt.prototype, "files", 2);
|
|
6976
|
-
Dt =
|
|
7099
|
+
Dt = ni([
|
|
6977
7100
|
J("cb-uploading")
|
|
6978
7101
|
], Dt);
|
|
6979
|
-
const
|
|
7102
|
+
const pn = K`
|
|
6980
7103
|
${ke}
|
|
6981
7104
|
:host {
|
|
6982
7105
|
}
|
|
@@ -6997,17 +7120,17 @@ const nn = K`
|
|
|
6997
7120
|
margin-right: 0.2em;
|
|
6998
7121
|
}
|
|
6999
7122
|
`;
|
|
7000
|
-
var
|
|
7001
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
7123
|
+
var gn = Object.defineProperty, mn = Object.getOwnPropertyDescriptor, da = (a, e, t, i) => {
|
|
7124
|
+
for (var s = i > 1 ? void 0 : i ? mn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
7002
7125
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
7003
|
-
return i && s &&
|
|
7126
|
+
return i && s && gn(e, t, s), s;
|
|
7004
7127
|
};
|
|
7005
7128
|
let yt = class extends Fe {
|
|
7006
7129
|
constructor() {
|
|
7007
7130
|
super(...arguments), this.url = "", this.inverse = !1;
|
|
7008
7131
|
}
|
|
7009
7132
|
render() {
|
|
7010
|
-
return
|
|
7133
|
+
return p`
|
|
7011
7134
|
<a
|
|
7012
7135
|
class="
|
|
7013
7136
|
cb-external-link link__item
|
|
@@ -7047,29 +7170,29 @@ yt.styles = K`
|
|
|
7047
7170
|
text-decoration: underline;
|
|
7048
7171
|
}
|
|
7049
7172
|
`;
|
|
7050
|
-
|
|
7173
|
+
da([
|
|
7051
7174
|
x({ type: String })
|
|
7052
7175
|
], yt.prototype, "url", 2);
|
|
7053
|
-
|
|
7176
|
+
da([
|
|
7054
7177
|
x({ type: Boolean })
|
|
7055
7178
|
], yt.prototype, "inverse", 2);
|
|
7056
|
-
yt =
|
|
7179
|
+
yt = da([
|
|
7057
7180
|
J("cb-external-link")
|
|
7058
7181
|
], yt);
|
|
7059
|
-
const
|
|
7060
|
-
var
|
|
7061
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
7182
|
+
const yn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-2v-1h2a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 15.849v-3.337h1.136v-.662H0v.662h1.134v3.337zm4.689-3.999h-.894L4.9 13.289h-.035l-.832-1.439h-.932l1.228 1.983l-1.24 2.016h.862l.853-1.415h.035l.85 1.415h.907l-1.253-1.992zm1.93.662v3.337h-.794v-3.337H6.619v-.662h3.064v.662H8.546Z"/></svg>', vn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173q.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38a.57.57 0 0 1-.238.241a.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181q.185.183.185.522m1.217-1.333v3.999h1.46q.602 0 .998-.237a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084q0-.63-.196-1.075a1.43 1.43 0 0 0-.589-.68q-.396-.234-1.005-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592a1.1 1.1 0 0 1-.196.422a.8.8 0 0 1-.334.252a1.3 1.3 0 0 1-.483.082h-.563zm3.743 1.763v1.591h-.79V11.85h2.548v.653H7.896v1.117h1.606v.638z"/></svg>', wn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 13.189v2.66H0V11.85h.806l1.14 2.596h.026l1.14-2.596h.8v3.999h-.716v-2.66h-.038l-.946 2.159h-.516l-.952-2.16H.706Zm3.919 2.66V11.85h1.459q.609 0 1.005.234t.589.68q.195.445.196 1.075q0 .634-.196 1.084q-.197.451-.595.689q-.396.237-1 .237H4.626Zm1.353-3.354h-.562v2.707h.562q.279 0 .484-.082a.8.8 0 0 0 .334-.252a1.1 1.1 0 0 0 .196-.422q.067-.252.067-.592a2.1 2.1 0 0 0-.117-.753a.9.9 0 0 0-.354-.454q-.238-.152-.61-.152"/></svg>', xn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.517 14.841a1.13 1.13 0 0 0 .401.823q.195.162.478.252q.284.091.665.091q.507 0 .859-.158q.354-.158.539-.44q.187-.284.187-.656q0-.336-.134-.56a1 1 0 0 0-.375-.357a2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176a.37.37 0 0 1-.144-.299q0-.234.185-.384q.188-.152.512-.152q.214 0 .37.068a.6.6 0 0 1 .246.181a.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566a1.2 1.2 0 0 0-.5-.41a1.8 1.8 0 0 0-.78-.152q-.439 0-.776.15q-.337.149-.527.421q-.19.273-.19.639q0 .302.122.524q.124.223.352.367q.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326a.5.5 0 0 1-.085.29a.56.56 0 0 1-.255.193q-.167.07-.413.07q-.175 0-.32-.04a.8.8 0 0 1-.248-.115a.58.58 0 0 1-.255-.384zM.806 13.693q0-.373.102-.633a.87.87 0 0 1 .302-.399a.8.8 0 0 1 .475-.137q.225 0 .398.097a.7.7 0 0 1 .272.26a.85.85 0 0 1 .12.381h.765v-.072a1.33 1.33 0 0 0-.466-.964a1.4 1.4 0 0 0-.489-.272a1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223q-.375.222-.572.632q-.195.41-.196.979v.498q0 .568.193.976q.197.407.572.626q.375.217.914.217q.439 0 .785-.164t.55-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.764a.8.8 0 0 1-.118.363a.7.7 0 0 1-.272.25a.9.9 0 0 1-.401.087a.85.85 0 0 1-.478-.132a.83.83 0 0 1-.299-.392a1.7 1.7 0 0 1-.102-.627zm8.239 2.238h-.953l-1.338-3.999h.917l.896 3.138h.038l.888-3.138h.879z"/></svg>', kn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173q.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38a.57.57 0 0 1-.238.241a.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181q.185.183.185.522m2.817-1.333h-1.6v3.999h.791v-1.342h.803q.43 0 .732-.173q.305-.175.463-.474q.162-.302.161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38a.57.57 0 0 1-.238.241a.8.8 0 0 1-.375.082H4.15V12.48h.66q.327 0 .512.181q.185.183.185.522m2.767-.67v3.336H7.48v-3.337H6.346v-.662h3.065v.662z"/></svg>', _n = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-7.839 9.166v.522q0 .384-.117.641a.86.86 0 0 1-.322.387a.9.9 0 0 1-.469.126a.9.9 0 0 1-.471-.126a.87.87 0 0 1-.32-.386a1.55 1.55 0 0 1-.117-.642v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387a.87.87 0 0 1 .471-.129q.264 0 .469.13a.86.86 0 0 1 .322.386q.117.255.117.641m.803.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.589-.63q-.381-.22-.917-.22q-.533 0-.92.22a1.44 1.44 0 0 0-.589.627q-.204.406-.205.975v.513q0 .563.205.973q.205.406.59.627q.386.216.92.216q.535 0 .916-.216q.383-.22.59-.627q.204-.41.204-.973M0 11.926v4h1.459q.603 0 .999-.238a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084q0-.63-.196-1.075a1.43 1.43 0 0 0-.59-.68q-.395-.234-1.004-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592a1.1 1.1 0 0 1-.196.422a.8.8 0 0 1-.334.252a1.3 1.3 0 0 1-.483.082H.79V12.57Zm7.422.483a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .298.393a.85.85 0 0 0 .478.131a.9.9 0 0 0 .401-.088a.7.7 0 0 0 .273-.248a.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.205.29-.55.454a1.8 1.8 0 0 1-.786.164q-.54 0-.914-.216a1.4 1.4 0 0 1-.571-.627q-.194-.408-.194-.976v-.498q0-.568.197-.978q.195-.411.571-.633q.378-.223.911-.223q.328 0 .607.097q.28.093.489.272a1.33 1.33 0 0 1 .466.964v.073H9.78a.85.85 0 0 0-.12-.38a.7.7 0 0 0-.273-.261a.8.8 0 0 0-.398-.097a.8.8 0 0 0-.475.138a.87.87 0 0 0-.301.398"/></svg>', Sn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-6.839 9.688v-.522a1.5 1.5 0 0 0-.117-.641a.86.86 0 0 0-.322-.387a.86.86 0 0 0-.469-.129a.87.87 0 0 0-.471.13a.87.87 0 0 0-.32.386a1.5 1.5 0 0 0-.117.641v.522q0 .384.117.641a.87.87 0 0 0 .32.387a.9.9 0 0 0 .471.126a.9.9 0 0 0 .469-.126a.86.86 0 0 0 .322-.386a1.55 1.55 0 0 0 .117-.642m.803-.516v.513q0 .563-.205.973a1.47 1.47 0 0 1-.589.627q-.381.216-.917.216a1.86 1.86 0 0 1-.92-.216a1.46 1.46 0 0 1-.589-.627a2.15 2.15 0 0 1-.205-.973v-.513q0-.569.205-.975q.205-.411.59-.627q.386-.22.92-.22q.535 0 .916.22q.383.219.59.63q.204.406.204.972M1 15.925v-3.999h1.459q.609 0 1.005.235q.396.233.589.68q.196.445.196 1.074q0 .634-.196 1.084q-.197.451-.595.689q-.396.237-.999.237zm1.354-3.354H1.79v2.707h.563q.277 0 .483-.082a.8.8 0 0 0 .334-.252q.132-.17.196-.422a2.3 2.3 0 0 0 .068-.592q0-.45-.118-.753a.9.9 0 0 0-.354-.454q-.237-.152-.61-.152Zm6.756 1.116q0-.373.103-.633a.87.87 0 0 1 .301-.398a.8.8 0 0 1 .475-.138q.225 0 .398.097a.7.7 0 0 1 .273.26a.85.85 0 0 1 .12.381h.765v-.073a1.33 1.33 0 0 0-.466-.964a1.4 1.4 0 0 0-.49-.272a1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223q-.375.222-.571.633q-.197.41-.197.978v.498q0 .568.194.976q.195.406.571.627q.375.216.914.216q.44 0 .785-.164t.551-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.765a.8.8 0 0 1-.117.364a.7.7 0 0 1-.273.248a.9.9 0 0 1-.401.088a.85.85 0 0 1-.478-.131a.83.83 0 0 1-.298-.393a1.7 1.7 0 0 1-.103-.627zm5.092-1.76h.894l-1.275 2.006l1.254 1.992h-.908l-.85-1.415h-.035l-.852 1.415h-.862l1.24-2.015l-1.228-1.984h.932l.832 1.439h.035z"/></svg>';
|
|
7183
|
+
var Cn = Object.defineProperty, An = Object.getOwnPropertyDescriptor, fa = (a, e, t, i) => {
|
|
7184
|
+
for (var s = i > 1 ? void 0 : i ? An(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
7062
7185
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
7063
|
-
return i && s &&
|
|
7186
|
+
return i && s && Cn(e, t, s), s;
|
|
7064
7187
|
};
|
|
7065
|
-
const
|
|
7066
|
-
pdf:
|
|
7067
|
-
txt:
|
|
7068
|
-
md:
|
|
7069
|
-
csv:
|
|
7070
|
-
ppd:
|
|
7071
|
-
doc:
|
|
7072
|
-
docx:
|
|
7188
|
+
const Oa = {
|
|
7189
|
+
pdf: vn,
|
|
7190
|
+
txt: yn,
|
|
7191
|
+
md: wn,
|
|
7192
|
+
csv: xn,
|
|
7193
|
+
ppd: kn,
|
|
7194
|
+
doc: _n,
|
|
7195
|
+
docx: Sn
|
|
7073
7196
|
};
|
|
7074
7197
|
let vt = class extends re {
|
|
7075
7198
|
constructor() {
|
|
@@ -7082,7 +7205,7 @@ let vt = class extends re {
|
|
|
7082
7205
|
return e ? e.toLowerCase() : "txt";
|
|
7083
7206
|
}
|
|
7084
7207
|
render() {
|
|
7085
|
-
return
|
|
7208
|
+
return p`
|
|
7086
7209
|
<cb-external-link url="${this.url}" inverse>
|
|
7087
7210
|
<div class="cb-file">
|
|
7088
7211
|
${this.renderFileIcon()}
|
|
@@ -7092,25 +7215,25 @@ let vt = class extends re {
|
|
|
7092
7215
|
`;
|
|
7093
7216
|
}
|
|
7094
7217
|
renderFileIcon() {
|
|
7095
|
-
return
|
|
7218
|
+
return p`
|
|
7096
7219
|
<cb-icon
|
|
7097
7220
|
class="cb-file-icon"
|
|
7098
|
-
svg="${
|
|
7221
|
+
svg="${Oa[this.type] || Oa.txt}"
|
|
7099
7222
|
></cb-icon>
|
|
7100
7223
|
`;
|
|
7101
7224
|
}
|
|
7102
7225
|
};
|
|
7103
|
-
vt.styles =
|
|
7104
|
-
|
|
7226
|
+
vt.styles = pn;
|
|
7227
|
+
fa([
|
|
7105
7228
|
x({ type: String })
|
|
7106
7229
|
], vt.prototype, "filename", 2);
|
|
7107
|
-
|
|
7230
|
+
fa([
|
|
7108
7231
|
x({ type: String })
|
|
7109
7232
|
], vt.prototype, "url", 2);
|
|
7110
|
-
vt =
|
|
7233
|
+
vt = fa([
|
|
7111
7234
|
J("cb-file")
|
|
7112
7235
|
], vt);
|
|
7113
|
-
const
|
|
7236
|
+
const Mn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></g></svg>', Ba = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 8a3 3 0 1 0 0-6a3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1s1-4 6-4s6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></svg>', ri = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M5 9v12H1V9zm4 12a2 2 0 0 1-2-2V9c0-.55.22-1.05.59-1.41L14.17 1l1.06 1.06c.27.27.44.64.44 1.05l-.03.32L14.69 8H21a2 2 0 0 1 2 2v2c0 .26-.05.5-.14.73l-3.02 7.05C19.54 20.5 18.83 21 18 21zm0-2h9.03L21 12v-2h-8.79l1.13-5.32L9 9.03z"/></svg>', oi = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M19 15V3h4v12zM15 3a2 2 0 0 1 2 2v10c0 .55-.22 1.05-.59 1.41L9.83 23l-1.06-1.06c-.27-.27-.44-.64-.44-1.06l.03-.31l.95-4.57H3a2 2 0 0 1-2-2v-2c0-.26.05-.5.14-.73l3.02-7.05C4.46 3.5 5.17 3 6 3zm0 2H5.97L3 12v2h8.78l-1.13 5.32L15 14.97z"/></svg>', Tn = K`
|
|
7114
7237
|
pre code.hljs {
|
|
7115
7238
|
display: block;
|
|
7116
7239
|
overflow-x: auto;
|
|
@@ -8325,9 +8448,9 @@ const mn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8325
8448
|
white-space: pre-wrap;
|
|
8326
8449
|
color: var(--n-text-color);
|
|
8327
8450
|
}
|
|
8328
|
-
`,
|
|
8451
|
+
`, In = K`
|
|
8329
8452
|
${ke}
|
|
8330
|
-
${
|
|
8453
|
+
${Tn}
|
|
8331
8454
|
|
|
8332
8455
|
.cb-message-row {
|
|
8333
8456
|
width: 100%;
|
|
@@ -8568,36 +8691,36 @@ const mn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8568
8691
|
filter: alpha(opacity=80);
|
|
8569
8692
|
}
|
|
8570
8693
|
`;
|
|
8571
|
-
function
|
|
8694
|
+
function qa(a, e) {
|
|
8572
8695
|
return `<pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">${e}</span><span class="code-block-header__copy">Copy</span></div><code class="hljs code-block-body ${e}">${a}</code></pre>`;
|
|
8573
8696
|
}
|
|
8574
|
-
function
|
|
8575
|
-
const a = new
|
|
8697
|
+
function En() {
|
|
8698
|
+
const a = new Vi({
|
|
8576
8699
|
html: !0,
|
|
8577
8700
|
breaks: !0,
|
|
8578
8701
|
linkify: !0,
|
|
8579
8702
|
highlight(e, t) {
|
|
8580
8703
|
if (!!(t && Gt.getLanguage(t))) {
|
|
8581
8704
|
const s = t ?? "";
|
|
8582
|
-
return
|
|
8705
|
+
return qa(Gt.highlight(e, { language: s }).value, s);
|
|
8583
8706
|
}
|
|
8584
|
-
return
|
|
8707
|
+
return qa(Gt.highlightAuto(e).value, "");
|
|
8585
8708
|
}
|
|
8586
8709
|
});
|
|
8587
|
-
return a.use(
|
|
8710
|
+
return a.use(Ui, { attrs: { target: "_blank", rel: "noopener" } }), a;
|
|
8588
8711
|
}
|
|
8589
8712
|
async function Ft(a) {
|
|
8590
|
-
const t =
|
|
8591
|
-
return
|
|
8713
|
+
const t = En().render(a);
|
|
8714
|
+
return p`${G(t)}`;
|
|
8592
8715
|
}
|
|
8593
|
-
var
|
|
8594
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
8716
|
+
var $n = Object.defineProperty, Pn = Object.getOwnPropertyDescriptor, nt = (a, e, t, i) => {
|
|
8717
|
+
for (var s = i > 1 ? void 0 : i ? Pn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
8595
8718
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
8596
|
-
return i && s &&
|
|
8719
|
+
return i && s && $n(e, t, s), s;
|
|
8597
8720
|
};
|
|
8598
8721
|
let De = class extends re {
|
|
8599
8722
|
constructor() {
|
|
8600
|
-
super(...arguments), this.store = new it(this, h), this.type = "assistant", this.suppressFeedback = !1, this.lightbox =
|
|
8723
|
+
super(...arguments), this.store = new it(this, h), this.type = "assistant", this.suppressFeedback = !1, this.lightbox = dn({
|
|
8601
8724
|
touchNavigation: !0,
|
|
8602
8725
|
loop: !0,
|
|
8603
8726
|
autoplayVideos: !0,
|
|
@@ -8662,7 +8785,7 @@ let De = class extends re {
|
|
|
8662
8785
|
this.copyBtns.forEach((a) => {
|
|
8663
8786
|
a.addEventListener("click", () => {
|
|
8664
8787
|
const e = a.parentElement?.nextElementSibling?.textContent;
|
|
8665
|
-
e &&
|
|
8788
|
+
e && ns(e).then(() => {
|
|
8666
8789
|
a.textContent = "Success", setTimeout(() => {
|
|
8667
8790
|
a.textContent = "Copy";
|
|
8668
8791
|
}, 500);
|
|
@@ -8681,11 +8804,11 @@ let De = class extends re {
|
|
|
8681
8804
|
return this.renderInfoMessage(this.message);
|
|
8682
8805
|
if (this.message?.type === "blocks") {
|
|
8683
8806
|
const a = this.message?.data?.blocks ?? [];
|
|
8684
|
-
return
|
|
8807
|
+
return p`<cb-blocks .blocks=${a}></cb-blocks>`;
|
|
8685
8808
|
}
|
|
8686
8809
|
return W(
|
|
8687
8810
|
this.message.data || this.message.isThinking,
|
|
8688
|
-
() =>
|
|
8811
|
+
() => p`
|
|
8689
8812
|
<div class="cb-message-row" part="bot-message">
|
|
8690
8813
|
<!-- message -->
|
|
8691
8814
|
${W(
|
|
@@ -8699,15 +8822,15 @@ let De = class extends re {
|
|
|
8699
8822
|
);
|
|
8700
8823
|
}
|
|
8701
8824
|
renderButtons(a = "left") {
|
|
8702
|
-
return
|
|
8825
|
+
return p`<div class="cb-message__buttons ${a}">
|
|
8703
8826
|
<!-- delete button -->
|
|
8704
8827
|
<sl-button class="cb-message__delete-button" name="trash" @click=${this._removeMessageHandler} circle variant="text" size="small">
|
|
8705
|
-
<cb-icon svg="${
|
|
8828
|
+
<cb-icon svg="${Mn}" style="font-size: 1em !important;"></cb-icon>
|
|
8706
8829
|
</sl-button>
|
|
8707
8830
|
</div>`;
|
|
8708
8831
|
}
|
|
8709
8832
|
renderInfoMessage(a) {
|
|
8710
|
-
return
|
|
8833
|
+
return p`
|
|
8711
8834
|
<div class="cb-message cb-bot-message-wrapper" part="cb-message">
|
|
8712
8835
|
<div class="avatar info-avatar xsmall" part="info-avatar" style="margin-top:4px;">${this.renderInfoMessageAvatar(a)}</div>
|
|
8713
8836
|
<div
|
|
@@ -8719,7 +8842,7 @@ let De = class extends re {
|
|
|
8719
8842
|
>
|
|
8720
8843
|
<div class="cb-message-text">
|
|
8721
8844
|
${bt(
|
|
8722
|
-
this._getMessageText(a).then((e) =>
|
|
8845
|
+
this._getMessageText(a).then((e) => p`${e}`)
|
|
8723
8846
|
)}
|
|
8724
8847
|
</div>
|
|
8725
8848
|
</div>
|
|
@@ -8728,10 +8851,10 @@ let De = class extends re {
|
|
|
8728
8851
|
}
|
|
8729
8852
|
renderInfoMessageAvatar(a) {
|
|
8730
8853
|
const e = a.data?.userAvatar || "";
|
|
8731
|
-
return e !== "" ?
|
|
8854
|
+
return e !== "" ? p` <img src="${e}" style="width: 24px;height: 24px;" /> ` : pe`${G(h.setting.infoIconSvg)}`;
|
|
8732
8855
|
}
|
|
8733
8856
|
renderMessage(a, e = "bot-message-content") {
|
|
8734
|
-
return
|
|
8857
|
+
return p`
|
|
8735
8858
|
<div
|
|
8736
8859
|
class="cb-message__content
|
|
8737
8860
|
${a.author}-message
|
|
@@ -8748,48 +8871,48 @@ let De = class extends re {
|
|
|
8748
8871
|
return Ft(xt(a.data.text));
|
|
8749
8872
|
}
|
|
8750
8873
|
renderMessageContent(a) {
|
|
8751
|
-
return a.isThinking ?
|
|
8874
|
+
return a.isThinking ? p`<cb-thinking></cb-thinking>` : a.isUploading ? p`<cb-uploading .files="${a.data.files || []}"></cb-uploading>` : a.type === "text" ? p`<div class="cb-message-text">
|
|
8752
8875
|
${W(
|
|
8753
8876
|
a.data.userName,
|
|
8754
|
-
() =>
|
|
8877
|
+
() => p`<div class="assistant-message-user-name">${a.data.userName}</div>`,
|
|
8755
8878
|
() => null
|
|
8756
8879
|
)}
|
|
8757
8880
|
${bt(
|
|
8758
|
-
this._getMessageText(a).then((e) =>
|
|
8881
|
+
this._getMessageText(a).then((e) => p`${e}`)
|
|
8759
8882
|
)}
|
|
8760
|
-
</div>` : a.type === "file" ?
|
|
8883
|
+
</div>` : a.type === "file" ? p`${et(
|
|
8761
8884
|
a.data.files || [],
|
|
8762
8885
|
(e) => e.id,
|
|
8763
|
-
(e) =>
|
|
8764
|
-
)}` : a.type === "upload" ?
|
|
8886
|
+
(e) => p`<cb-file filename="${e.name}" url="${e.url}"></cb-file>`
|
|
8887
|
+
)}` : a.type === "upload" ? p`${et(
|
|
8765
8888
|
a.data.uploadedFiles || [],
|
|
8766
8889
|
(e) => e.name,
|
|
8767
|
-
(e) =>
|
|
8768
|
-
)}` :
|
|
8890
|
+
(e) => p`<div>${e.name}</div>`
|
|
8891
|
+
)}` : p`<div class="cb-message-text">
|
|
8769
8892
|
${bt(
|
|
8770
|
-
Ft(a.data.text?.toString() || "").then((e) =>
|
|
8893
|
+
Ft(a.data.text?.toString() || "").then((e) => p`${e}`)
|
|
8771
8894
|
)}
|
|
8772
8895
|
</div>`;
|
|
8773
8896
|
}
|
|
8774
8897
|
renderMessageUploads(a) {
|
|
8775
8898
|
if (a.type === "upload")
|
|
8776
|
-
return
|
|
8899
|
+
return p`<div class="user-message-uploads">
|
|
8777
8900
|
${et(
|
|
8778
8901
|
a.data.uploadedFiles || [],
|
|
8779
8902
|
(e) => e.name,
|
|
8780
|
-
(e) => (e?.type || "").startsWith("image/") ?
|
|
8903
|
+
(e) => (e?.type || "").startsWith("image/") ? p`<img src="data:${e.type};base64,${e.base64}" alt="${e.name}" />` : null
|
|
8781
8904
|
)}
|
|
8782
8905
|
</div>`;
|
|
8783
8906
|
}
|
|
8784
8907
|
renderBotMessageAvatar(a) {
|
|
8785
8908
|
if (a.data.userName && a.data.userName !== "") {
|
|
8786
8909
|
const e = a.data?.userAvatar || "";
|
|
8787
|
-
return e !== "" ?
|
|
8910
|
+
return e !== "" ? p` <img src="${e}" style="width: 24px;height: 24px;" /> ` : pe`${G(h.setting.agentIconSvg)}`;
|
|
8788
8911
|
}
|
|
8789
8912
|
return a.author === "system" ? pe`${G(h.setting.systemIconSvg)}` : pe`${G(h.setting.botIconSvg)}`;
|
|
8790
8913
|
}
|
|
8791
8914
|
renderBotMessage(a) {
|
|
8792
|
-
return
|
|
8915
|
+
return p`
|
|
8793
8916
|
<div class="cb-message cb-bot-message-wrapper" part="cb-message">
|
|
8794
8917
|
<div class="avatar assistant-avatar xsmall" part="assistant-avatar" style="margin-top:4px;">${this.renderBotMessageAvatar(a)}</div>
|
|
8795
8918
|
${this.renderMessage(a, "bot-message-content")}
|
|
@@ -8798,10 +8921,10 @@ let De = class extends re {
|
|
|
8798
8921
|
`;
|
|
8799
8922
|
}
|
|
8800
8923
|
renderBotMessageFeedback(a) {
|
|
8801
|
-
return this.suppressFeedback || !h.setting.feedbackEnabled || this.index < h.setting.startFeedbackFromMessage * 2 ? null :
|
|
8924
|
+
return this.suppressFeedback || !h.setting.feedbackEnabled || this.index < h.setting.startFeedbackFromMessage * 2 ? null : p`
|
|
8802
8925
|
<div class="cb-message-feedback-tools" part="feedback-wrapper">
|
|
8803
|
-
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${pe`${G(
|
|
8804
|
-
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${pe`${G(
|
|
8926
|
+
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${pe`${G(ri)}`}</div>
|
|
8927
|
+
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${pe`${G(oi)}`}</div>
|
|
8805
8928
|
</div>
|
|
8806
8929
|
`;
|
|
8807
8930
|
}
|
|
@@ -8809,19 +8932,19 @@ let De = class extends re {
|
|
|
8809
8932
|
console.log("startFeedback", e), h.collectFeedback(a, e);
|
|
8810
8933
|
}
|
|
8811
8934
|
renderUserMessage(a) {
|
|
8812
|
-
return
|
|
8935
|
+
return p`
|
|
8813
8936
|
<div class="cb-message" part="cb-message" style="display: flex; justify-content: end;align-items: start;">
|
|
8814
8937
|
<!--<sl-avatar class="avatar user-avatar small" label="User">
|
|
8815
|
-
<cb-icon slot="icon" svg="${
|
|
8938
|
+
<cb-icon slot="icon" svg="${Ba}" color="white"></cb-icon>
|
|
8816
8939
|
//appState.appearanceUserMessageAvatarPosition
|
|
8817
8940
|
</sl-avatar>-->
|
|
8818
8941
|
${W(
|
|
8819
8942
|
h.appearanceUserMessageAvatarPosition === "left",
|
|
8820
|
-
() =>
|
|
8943
|
+
() => p`
|
|
8821
8944
|
<div class="avatar user-avatar" part="user-avatar">${G(h.setting.userIconSvg)}</div>
|
|
8822
8945
|
${this.renderMessage(a, "user-message-content")}
|
|
8823
8946
|
`,
|
|
8824
|
-
() =>
|
|
8947
|
+
() => p`
|
|
8825
8948
|
${this.renderMessage(a, "user-message-content")}
|
|
8826
8949
|
<div class="avatar user-avatar" part="user-avatar">${G(h.setting.userIconSvg)}</div>
|
|
8827
8950
|
`
|
|
@@ -8832,19 +8955,19 @@ let De = class extends re {
|
|
|
8832
8955
|
}
|
|
8833
8956
|
// todo ???
|
|
8834
8957
|
renderUserMessageUpload(a) {
|
|
8835
|
-
return
|
|
8958
|
+
return p`
|
|
8836
8959
|
<div class="cb-message" part="cb-message" style="display: flex; justify-content: end;align-items: start;">
|
|
8837
8960
|
<!--<sl-avatar class="avatar user-avatar small" label="User">
|
|
8838
|
-
<cb-icon slot="icon" svg="${
|
|
8961
|
+
<cb-icon slot="icon" svg="${Ba}" color="white"></cb-icon>
|
|
8839
8962
|
//appState.appearanceUserMessageAvatarPosition
|
|
8840
8963
|
</sl-avatar>-->
|
|
8841
8964
|
${W(
|
|
8842
8965
|
h.appearanceUserMessageAvatarPosition === "left",
|
|
8843
|
-
() =>
|
|
8966
|
+
() => p`
|
|
8844
8967
|
<div class="avatar user-avatar">${G(h.setting.userIconSvg)}</div>
|
|
8845
8968
|
${this.renderMessage(a, "user-message-content")}
|
|
8846
8969
|
`,
|
|
8847
|
-
() =>
|
|
8970
|
+
() => p`
|
|
8848
8971
|
${this.renderMessage(a, "user-message-content")}
|
|
8849
8972
|
<div class="avatar user-avatar">${G(h.setting.userIconSvg)}</div>
|
|
8850
8973
|
`
|
|
@@ -8853,7 +8976,7 @@ let De = class extends re {
|
|
|
8853
8976
|
`;
|
|
8854
8977
|
}
|
|
8855
8978
|
};
|
|
8856
|
-
De.styles =
|
|
8979
|
+
De.styles = In;
|
|
8857
8980
|
nt([
|
|
8858
8981
|
x({ type: Object })
|
|
8859
8982
|
], De.prototype, "message", 2);
|
|
@@ -8867,18 +8990,18 @@ nt([
|
|
|
8867
8990
|
x({ type: Boolean })
|
|
8868
8991
|
], De.prototype, "suppressFeedback", 2);
|
|
8869
8992
|
nt([
|
|
8870
|
-
|
|
8993
|
+
Ga(".code-block-header__copy")
|
|
8871
8994
|
], De.prototype, "copyBtns", 2);
|
|
8872
8995
|
nt([
|
|
8873
|
-
|
|
8996
|
+
Ga("img")
|
|
8874
8997
|
], De.prototype, "glightboxImages", 2);
|
|
8875
8998
|
De = nt([
|
|
8876
8999
|
J("cb-message")
|
|
8877
9000
|
], De);
|
|
8878
|
-
var
|
|
8879
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9001
|
+
var Ln = Object.defineProperty, Rn = Object.getOwnPropertyDescriptor, Te = (a, e, t, i) => {
|
|
9002
|
+
for (var s = i > 1 ? void 0 : i ? Rn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
8880
9003
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
8881
|
-
return i && s &&
|
|
9004
|
+
return i && s && Ln(e, t, s), s;
|
|
8882
9005
|
};
|
|
8883
9006
|
const Oe = Ke.noConflict();
|
|
8884
9007
|
Oe.setLevel("info");
|
|
@@ -8910,13 +9033,13 @@ let ye = class extends re {
|
|
|
8910
9033
|
autoplayVideos: true,
|
|
8911
9034
|
});*/
|
|
8912
9035
|
render() {
|
|
8913
|
-
return
|
|
9036
|
+
return p`
|
|
8914
9037
|
<div id="cb-message-list-container" class="cb-message-list" part="bot-message-list">
|
|
8915
9038
|
${this.renderDisclaimerMessage()}
|
|
8916
9039
|
${et(
|
|
8917
9040
|
this.messages,
|
|
8918
9041
|
(a) => a.id + JSON.stringify(a.data),
|
|
8919
|
-
(a, e) =>
|
|
9042
|
+
(a, e) => p`<cb-message .message="${a}" .index="${e}" exportparts="bot-message, cb-message, bot-message-content, user-message-content, user-avatar, assistant-avatar,feedback-wrapper,feedback-up,feedback-down" ?suppressFeedback=${this.suppressFeedback}></cb-message>`
|
|
8920
9043
|
)}
|
|
8921
9044
|
${this.renderActions()} ${this.renderForm()}
|
|
8922
9045
|
<div id="cb-message-list-bottom-anchor"></div>
|
|
@@ -8924,18 +9047,18 @@ let ye = class extends re {
|
|
|
8924
9047
|
`;
|
|
8925
9048
|
}
|
|
8926
9049
|
renderDisclaimerMessage() {
|
|
8927
|
-
return !h.setting.disclaimerMessage || !h.isConversationStart() ? null :
|
|
9050
|
+
return !h.setting.disclaimerMessage || !h.isConversationStart() ? null : p`
|
|
8928
9051
|
<details class="cb-disclaimer-wrapper" part="disclaimer-wrapper" ?open=${h.setting.enableShowFullDisclaimerMessage}>
|
|
8929
9052
|
<summary class="cb-disclaimer-message" part="disclaimer-message">
|
|
8930
9053
|
${bt(
|
|
8931
|
-
Ft(h.setting.disclaimerMessage).then((a) =>
|
|
9054
|
+
Ft(h.setting.disclaimerMessage).then((a) => p`${a}`)
|
|
8932
9055
|
)}
|
|
8933
9056
|
</summary>
|
|
8934
9057
|
</details>
|
|
8935
9058
|
`;
|
|
8936
9059
|
}
|
|
8937
9060
|
renderForm() {
|
|
8938
|
-
return this.form ?
|
|
9061
|
+
return this.form ? p` <form class="cb-input-form" part="form" @submit="${this.handleFormSubmit.bind(this)}">
|
|
8939
9062
|
<div class="cb-input-form-title" part="form-title">${this.form.title}</div>
|
|
8940
9063
|
${et(
|
|
8941
9064
|
this.form.fields,
|
|
@@ -8945,7 +9068,7 @@ let ye = class extends re {
|
|
|
8945
9068
|
switch (a.type) {
|
|
8946
9069
|
case "name":
|
|
8947
9070
|
case "string":
|
|
8948
|
-
return
|
|
9071
|
+
return p`<sl-input
|
|
8949
9072
|
value="${t}"
|
|
8950
9073
|
part="form-input"
|
|
8951
9074
|
class="cb-input-form-input"
|
|
@@ -8955,7 +9078,7 @@ let ye = class extends re {
|
|
|
8955
9078
|
?required="${e}"
|
|
8956
9079
|
></sl-input>`;
|
|
8957
9080
|
case "email":
|
|
8958
|
-
return
|
|
9081
|
+
return p`<sl-input
|
|
8959
9082
|
part="form-input"
|
|
8960
9083
|
value="${t}"
|
|
8961
9084
|
class="cb-input-form-input"
|
|
@@ -8966,7 +9089,7 @@ let ye = class extends re {
|
|
|
8966
9089
|
?required="${e}"
|
|
8967
9090
|
></sl-input>`;
|
|
8968
9091
|
case "phone":
|
|
8969
|
-
return
|
|
9092
|
+
return p`<sl-input
|
|
8970
9093
|
part="form-input"
|
|
8971
9094
|
value="${t}"
|
|
8972
9095
|
class="cb-input-form-input"
|
|
@@ -8978,20 +9101,20 @@ let ye = class extends re {
|
|
|
8978
9101
|
></sl-input>`;
|
|
8979
9102
|
case "select": {
|
|
8980
9103
|
const i = Array.isArray(a.options) ? a.options : a.options.split(",").map((s) => s.trim());
|
|
8981
|
-
return t || i[0],
|
|
9104
|
+
return t || i[0], p`<div class="cb-form-field">
|
|
8982
9105
|
<label class="cb-form-field-label"
|
|
8983
9106
|
>${a.title}
|
|
8984
9107
|
${W(
|
|
8985
9108
|
e,
|
|
8986
|
-
() =>
|
|
8987
|
-
() =>
|
|
9109
|
+
() => p`*`,
|
|
9110
|
+
() => p``
|
|
8988
9111
|
)}
|
|
8989
9112
|
</label>
|
|
8990
9113
|
<select id="${"cb-form-field" + a.name}" class="cb-form-field-select" part="form-input" name="${a.name}">
|
|
8991
9114
|
${et(
|
|
8992
9115
|
i,
|
|
8993
9116
|
(s, r) => r,
|
|
8994
|
-
(s) =>
|
|
9117
|
+
(s) => p`<option value="${s}">${s}</option>`
|
|
8995
9118
|
)}
|
|
8996
9119
|
</select>
|
|
8997
9120
|
</div>`;
|
|
@@ -9038,7 +9161,7 @@ let ye = class extends re {
|
|
|
9038
9161
|
<br /><br />
|
|
9039
9162
|
*/
|
|
9040
9163
|
renderActions() {
|
|
9041
|
-
return !Array.isArray(this.actions) || this.actions.length <= 0 ? null :
|
|
9164
|
+
return !Array.isArray(this.actions) || this.actions.length <= 0 ? null : p`
|
|
9042
9165
|
<div class="cb-actions-list">
|
|
9043
9166
|
${et(
|
|
9044
9167
|
this.actions,
|
|
@@ -9092,7 +9215,7 @@ let ye = class extends re {
|
|
|
9092
9215
|
s.origin === "https://calendly.com" && s.data.event && s.data.event.indexOf("calendly.") !== -1 && this.handleCalendlyEvent(s);
|
|
9093
9216
|
}), this.calendlyInjected = !0;
|
|
9094
9217
|
}
|
|
9095
|
-
return
|
|
9218
|
+
return p`
|
|
9096
9219
|
<div class="cb-actions-list">
|
|
9097
9220
|
<div class="cb-action ripple" @click="${this.invokeCalendlyAction.bind(this, a)}">
|
|
9098
9221
|
<div class="cb-action-icon">
|
|
@@ -9109,7 +9232,7 @@ let ye = class extends re {
|
|
|
9109
9232
|
`;
|
|
9110
9233
|
}
|
|
9111
9234
|
renderLinkAction(a) {
|
|
9112
|
-
return
|
|
9235
|
+
return p`
|
|
9113
9236
|
<div class="cb-actions-list">
|
|
9114
9237
|
<div class="cb-action ripple" @click="${this.invokeLinkAction.bind(this, a)}">
|
|
9115
9238
|
<div class="cb-action-icon">
|
|
@@ -9175,7 +9298,7 @@ let ye = class extends re {
|
|
|
9175
9298
|
}
|
|
9176
9299
|
return a?.hubspotMeetingAuto && !("triggered" in a) && setTimeout(() => {
|
|
9177
9300
|
this.invokeHubspotMeetingAction(a);
|
|
9178
|
-
}, 500),
|
|
9301
|
+
}, 500), p`
|
|
9179
9302
|
<div class="cb-actions-list">
|
|
9180
9303
|
<div class="cb-action ripple" @click="${this.invokeHubspotMeetingAction.bind(this, a)}">
|
|
9181
9304
|
<div class="cb-action-icon">
|
|
@@ -9192,7 +9315,7 @@ let ye = class extends re {
|
|
|
9192
9315
|
`;
|
|
9193
9316
|
}
|
|
9194
9317
|
};
|
|
9195
|
-
ye.styles =
|
|
9318
|
+
ye.styles = Zs;
|
|
9196
9319
|
Te([
|
|
9197
9320
|
x({ type: Array })
|
|
9198
9321
|
], ye.prototype, "messages", 2);
|
|
@@ -9212,18 +9335,18 @@ Te([
|
|
|
9212
9335
|
xe(".cb-input-form")
|
|
9213
9336
|
], ye.prototype, "_inputForm", 2);
|
|
9214
9337
|
Te([
|
|
9215
|
-
|
|
9338
|
+
oa({ capture: !1, passive: !0 })
|
|
9216
9339
|
], ye.prototype, "invokeLinkAction", 1);
|
|
9217
9340
|
Te([
|
|
9218
|
-
|
|
9341
|
+
oa({ capture: !1, passive: !0 })
|
|
9219
9342
|
], ye.prototype, "invokeCalendlyAction", 1);
|
|
9220
9343
|
Te([
|
|
9221
|
-
|
|
9344
|
+
oa({ capture: !1, passive: !0 })
|
|
9222
9345
|
], ye.prototype, "invokeHubspotMeetingAction", 1);
|
|
9223
9346
|
ye = Te([
|
|
9224
9347
|
J("cb-message-list")
|
|
9225
9348
|
], ye);
|
|
9226
|
-
const
|
|
9349
|
+
const zn = K`
|
|
9227
9350
|
${ke}
|
|
9228
9351
|
|
|
9229
9352
|
:host {
|
|
@@ -9265,11 +9388,11 @@ const Cn = K`
|
|
|
9265
9388
|
align-items: center;
|
|
9266
9389
|
margin: 6px 2px;
|
|
9267
9390
|
}
|
|
9268
|
-
`,
|
|
9269
|
-
var
|
|
9270
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9391
|
+
`, ci = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></svg>', li = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/></svg>', di = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"/></svg>', ha = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z"/></svg>';
|
|
9392
|
+
var On = Object.defineProperty, Bn = Object.getOwnPropertyDescriptor, Ie = (a, e, t, i) => {
|
|
9393
|
+
for (var s = i > 1 ? void 0 : i ? Bn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9271
9394
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9272
|
-
return i && s &&
|
|
9395
|
+
return i && s && On(e, t, s), s;
|
|
9273
9396
|
};
|
|
9274
9397
|
let ve = class extends re {
|
|
9275
9398
|
constructor() {
|
|
@@ -9306,7 +9429,7 @@ let ve = class extends re {
|
|
|
9306
9429
|
});
|
|
9307
9430
|
}
|
|
9308
9431
|
async _sendFileHandler() {
|
|
9309
|
-
const a = await
|
|
9432
|
+
const a = await Ja(!1, h.setting.fileUploadEnabledExtensions);
|
|
9310
9433
|
this.emit("message:send:file", {
|
|
9311
9434
|
detail: {
|
|
9312
9435
|
files: a
|
|
@@ -9317,11 +9440,11 @@ let ve = class extends re {
|
|
|
9317
9440
|
this.emit("audio:toggle", {});
|
|
9318
9441
|
}
|
|
9319
9442
|
render() {
|
|
9320
|
-
return
|
|
9443
|
+
return p`
|
|
9321
9444
|
${W(
|
|
9322
9445
|
this.loading,
|
|
9323
|
-
() =>
|
|
9324
|
-
() =>
|
|
9446
|
+
() => p`<sl-progress-bar style="--height: 2px;" indeterminate></sl-progress-bar>`,
|
|
9447
|
+
() => p``
|
|
9325
9448
|
)}
|
|
9326
9449
|
<div class="cb-user-input-wrapper" part="user-input-wrapper">
|
|
9327
9450
|
<sl-textarea
|
|
@@ -9344,37 +9467,37 @@ let ve = class extends re {
|
|
|
9344
9467
|
<sl-button @click=${this._sendHandler} name="send" label="Send" size="small" class="send-button" variant="text" ?disabled=${this.value.length === 0} ?loading=${this.loading} circle>
|
|
9345
9468
|
${W(
|
|
9346
9469
|
h.setting.sendIconSvg !== "",
|
|
9347
|
-
() =>
|
|
9348
|
-
() =>
|
|
9470
|
+
() => p`<cb-icon part="user-input-send-icon" svg="${h.setting.sendIconSvg}"></cb-icon>`,
|
|
9471
|
+
() => p`<cb-icon part="user-input-send-icon" svg="${ci}"></cb-icon>`
|
|
9349
9472
|
)}
|
|
9350
9473
|
</sl-button>
|
|
9351
9474
|
${W(
|
|
9352
9475
|
this.enableFileUpload,
|
|
9353
|
-
() =>
|
|
9476
|
+
() => p`
|
|
9354
9477
|
<sl-button @click=${this._sendFileHandler} name="paperclip" label="Attachment" size="small" class="paperclip-button" variant="text" circle>
|
|
9355
9478
|
${W(
|
|
9356
9479
|
h.setting.attachIconSvg !== "",
|
|
9357
|
-
() =>
|
|
9358
|
-
() =>
|
|
9480
|
+
() => p`<cb-icon part="user-input-attach-icon" svg="${h.setting.attachIconSvg}"></cb-icon>`,
|
|
9481
|
+
() => p`<cb-icon part="user-input-attach-icon" svg="${li}"></cb-icon>`
|
|
9359
9482
|
)}
|
|
9360
9483
|
<!-- select file input -->
|
|
9361
9484
|
<input type="file" id="file" name="file" class="file-input" />
|
|
9362
9485
|
</sl-button>
|
|
9363
9486
|
`,
|
|
9364
|
-
() =>
|
|
9487
|
+
() => p``
|
|
9365
9488
|
)}
|
|
9366
9489
|
${W(
|
|
9367
9490
|
this.enableAudio,
|
|
9368
|
-
() =>
|
|
9491
|
+
() => p`
|
|
9369
9492
|
<sl-button @click=${this._toggleAudioHandler} name="paperclip" label="Audio" size="small" class="audio-button" variant="text" circle>
|
|
9370
9493
|
${W(
|
|
9371
9494
|
h.webAudioStarted,
|
|
9372
|
-
() =>
|
|
9373
|
-
() =>
|
|
9495
|
+
() => p`<cb-icon svg="${ha}"></cb-icon>`,
|
|
9496
|
+
() => p`<cb-icon svg="${di}"></cb-icon>`
|
|
9374
9497
|
)}
|
|
9375
9498
|
</sl-button>
|
|
9376
9499
|
`,
|
|
9377
|
-
() =>
|
|
9500
|
+
() => p``
|
|
9378
9501
|
)}
|
|
9379
9502
|
</div>
|
|
9380
9503
|
</div>
|
|
@@ -9384,7 +9507,7 @@ let ve = class extends re {
|
|
|
9384
9507
|
a.key === "Enter" && !a.shiftKey && this._sendHandler();
|
|
9385
9508
|
}
|
|
9386
9509
|
};
|
|
9387
|
-
ve.styles =
|
|
9510
|
+
ve.styles = zn;
|
|
9388
9511
|
Ie([
|
|
9389
9512
|
x({ type: String, attribute: "placeholder" })
|
|
9390
9513
|
], ve.prototype, "placeholder", 2);
|
|
@@ -9415,7 +9538,7 @@ Ie([
|
|
|
9415
9538
|
ve = Ie([
|
|
9416
9539
|
J("cb-user-input")
|
|
9417
9540
|
], ve);
|
|
9418
|
-
const
|
|
9541
|
+
const qn = K`
|
|
9419
9542
|
${ke}
|
|
9420
9543
|
|
|
9421
9544
|
:host {
|
|
@@ -9473,11 +9596,11 @@ const Tn = K`
|
|
|
9473
9596
|
border-radius: 40px;
|
|
9474
9597
|
outline: none !important;
|
|
9475
9598
|
}
|
|
9476
|
-
`,
|
|
9477
|
-
var
|
|
9478
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9599
|
+
`, Dn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></svg>', Fn = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M8 18c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1m4 4c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1s-1 .45-1 1v18c0 .55.45 1 1 1m-8-8c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1v2c0 .55.45 1 1 1m12 4c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1m3-7v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1"/></svg>', Da = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"/></svg>';
|
|
9600
|
+
var Hn = Object.defineProperty, jn = Object.getOwnPropertyDescriptor, Ee = (a, e, t, i) => {
|
|
9601
|
+
for (var s = i > 1 ? void 0 : i ? jn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9479
9602
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9480
|
-
return i && s &&
|
|
9603
|
+
return i && s && Hn(e, t, s), s;
|
|
9481
9604
|
};
|
|
9482
9605
|
let we = class extends re {
|
|
9483
9606
|
constructor() {
|
|
@@ -9520,7 +9643,7 @@ let we = class extends re {
|
|
|
9520
9643
|
});
|
|
9521
9644
|
}
|
|
9522
9645
|
async _sendFileHandler() {
|
|
9523
|
-
const a = await
|
|
9646
|
+
const a = await Ja(!1, h.setting.fileUploadEnabledExtensions);
|
|
9524
9647
|
this.emit("message:send:file", {
|
|
9525
9648
|
detail: {
|
|
9526
9649
|
files: a
|
|
@@ -9552,28 +9675,28 @@ let we = class extends re {
|
|
|
9552
9675
|
await h.toggleAudio();
|
|
9553
9676
|
}
|
|
9554
9677
|
getCtrlIconSvg() {
|
|
9555
|
-
return this.value && this.value !== "" || h.webAudioStarted ?
|
|
9678
|
+
return this.value && this.value !== "" || h.webAudioStarted ? Da : Fn;
|
|
9556
9679
|
}
|
|
9557
9680
|
getCtrlClass() {
|
|
9558
9681
|
return this.value && this.value !== "" ? "" : h.webAudioStarted || h.mediaStartAudioRequested ? "disabled" : "";
|
|
9559
9682
|
}
|
|
9560
9683
|
render() {
|
|
9561
|
-
return
|
|
9684
|
+
return p`
|
|
9562
9685
|
${W(
|
|
9563
9686
|
this.loading,
|
|
9564
|
-
() =>
|
|
9565
|
-
() =>
|
|
9687
|
+
() => p`<sl-progress-bar style="--height: 2px;" indeterminate></sl-progress-bar>`,
|
|
9688
|
+
() => p``
|
|
9566
9689
|
)}
|
|
9567
9690
|
<div class="cb-user-input-mm-wrapper" part="user-input-wrapper">
|
|
9568
9691
|
<div class="cb-user-input-mm" part="user-input-inner">
|
|
9569
9692
|
${W(
|
|
9570
9693
|
this.enableFileUpload,
|
|
9571
|
-
() =>
|
|
9694
|
+
() => p`
|
|
9572
9695
|
<button type="button" class="circle-btn" part="upload-button" title="Upload" @click=${this._sendFileHandler}>
|
|
9573
|
-
${G(
|
|
9696
|
+
${G(Dn)}
|
|
9574
9697
|
</button>
|
|
9575
9698
|
`,
|
|
9576
|
-
() =>
|
|
9699
|
+
() => p``
|
|
9577
9700
|
)}
|
|
9578
9701
|
<sl-textarea
|
|
9579
9702
|
part="user-input"
|
|
@@ -9597,11 +9720,11 @@ let we = class extends re {
|
|
|
9597
9720
|
`;
|
|
9598
9721
|
}
|
|
9599
9722
|
renderOld() {
|
|
9600
|
-
return
|
|
9723
|
+
return p`
|
|
9601
9724
|
${W(
|
|
9602
9725
|
this.loading,
|
|
9603
|
-
() =>
|
|
9604
|
-
() =>
|
|
9726
|
+
() => p`<sl-progress-bar style="--height: 2px;" indeterminate></sl-progress-bar>`,
|
|
9727
|
+
() => p``
|
|
9605
9728
|
)}
|
|
9606
9729
|
<div class="cb-user-input-mm-wrapper" part="user-input-wrapper">
|
|
9607
9730
|
<sl-textarea
|
|
@@ -9624,37 +9747,37 @@ let we = class extends re {
|
|
|
9624
9747
|
<sl-button @click=${this._sendHandler} name="send" label="Send" size="small" class="send-button" variant="text" ?disabled=${this.value.length === 0} ?loading=${this.loading} circle>
|
|
9625
9748
|
${W(
|
|
9626
9749
|
h.setting.sendIconSvg !== "",
|
|
9627
|
-
() =>
|
|
9628
|
-
() =>
|
|
9750
|
+
() => p`<cb-icon part="user-input-send-icon" svg="${h.setting.sendIconSvg}"></cb-icon>`,
|
|
9751
|
+
() => p`<cb-icon part="user-input-send-icon" svg="${ci}"></cb-icon>`
|
|
9629
9752
|
)}
|
|
9630
9753
|
</sl-button>
|
|
9631
9754
|
${W(
|
|
9632
9755
|
this.enableFileUpload,
|
|
9633
|
-
() =>
|
|
9756
|
+
() => p`
|
|
9634
9757
|
<sl-button @click=${this._sendFileHandler} name="paperclip" label="Attachment" size="small" class="paperclip-button" variant="text" circle>
|
|
9635
9758
|
${W(
|
|
9636
9759
|
h.setting.attachIconSvg !== "",
|
|
9637
|
-
() =>
|
|
9638
|
-
() =>
|
|
9760
|
+
() => p`<cb-icon part="user-input-attach-icon" svg="${h.setting.attachIconSvg}"></cb-icon>`,
|
|
9761
|
+
() => p`<cb-icon part="user-input-attach-icon" svg="${li}"></cb-icon>`
|
|
9639
9762
|
)}
|
|
9640
9763
|
<!-- select file input -->
|
|
9641
9764
|
<input type="file" id="file" name="file" class="file-input" />
|
|
9642
9765
|
</sl-button>
|
|
9643
9766
|
`,
|
|
9644
|
-
() =>
|
|
9767
|
+
() => p``
|
|
9645
9768
|
)}
|
|
9646
9769
|
${W(
|
|
9647
9770
|
this.enableAudio,
|
|
9648
|
-
() =>
|
|
9771
|
+
() => p`
|
|
9649
9772
|
<sl-button @click=${this._toggleAudioHandler} name="paperclip" label="Audio" size="small" class="audio-button" variant="text" circle>
|
|
9650
9773
|
${W(
|
|
9651
9774
|
h.webAudioStarted,
|
|
9652
|
-
() =>
|
|
9653
|
-
() =>
|
|
9775
|
+
() => p`<cb-icon svg="${ha}"></cb-icon>`,
|
|
9776
|
+
() => p`<cb-icon svg="${di}"></cb-icon>`
|
|
9654
9777
|
)}
|
|
9655
9778
|
</sl-button>
|
|
9656
9779
|
`,
|
|
9657
|
-
() =>
|
|
9780
|
+
() => p``
|
|
9658
9781
|
)}
|
|
9659
9782
|
</div>
|
|
9660
9783
|
</div>
|
|
@@ -9664,7 +9787,7 @@ let we = class extends re {
|
|
|
9664
9787
|
a.key === "Enter" && !a.shiftKey && this._sendHandler();
|
|
9665
9788
|
}
|
|
9666
9789
|
};
|
|
9667
|
-
we.styles =
|
|
9790
|
+
we.styles = qn;
|
|
9668
9791
|
Ee([
|
|
9669
9792
|
x({ type: String, attribute: "placeholder" })
|
|
9670
9793
|
], we.prototype, "placeholder", 2);
|
|
@@ -9695,7 +9818,7 @@ Ee([
|
|
|
9695
9818
|
we = Ee([
|
|
9696
9819
|
J("cb-user-input-mm")
|
|
9697
9820
|
], we);
|
|
9698
|
-
const
|
|
9821
|
+
const fi = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', Vn = K`
|
|
9699
9822
|
${ke}
|
|
9700
9823
|
|
|
9701
9824
|
sl-dialog::part(base) {
|
|
@@ -9730,10 +9853,10 @@ const oi = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="c
|
|
|
9730
9853
|
gap: 8px;
|
|
9731
9854
|
}
|
|
9732
9855
|
`;
|
|
9733
|
-
var
|
|
9734
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9856
|
+
var Un = Object.defineProperty, Nn = Object.getOwnPropertyDescriptor, Nt = (a, e, t, i) => {
|
|
9857
|
+
for (var s = i > 1 ? void 0 : i ? Nn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9735
9858
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9736
|
-
return i && s &&
|
|
9859
|
+
return i && s && Un(e, t, s), s;
|
|
9737
9860
|
};
|
|
9738
9861
|
let ct = class extends re {
|
|
9739
9862
|
constructor() {
|
|
@@ -9743,7 +9866,7 @@ let ct = class extends re {
|
|
|
9743
9866
|
this.emit("cancel");
|
|
9744
9867
|
}
|
|
9745
9868
|
render() {
|
|
9746
|
-
return
|
|
9869
|
+
return p` <sl-dialog
|
|
9747
9870
|
label="Setting"
|
|
9748
9871
|
class="cb-dialog"
|
|
9749
9872
|
style="sl-dialog::part(base) { z-index: ${this.zindex}; }"
|
|
@@ -9753,7 +9876,7 @@ let ct = class extends re {
|
|
|
9753
9876
|
>
|
|
9754
9877
|
<header class="cb-header">
|
|
9755
9878
|
<div class="cb-header__left">
|
|
9756
|
-
${this.label ?
|
|
9879
|
+
${this.label ? p`<span class="title">${this.label}</span>` : ""}
|
|
9757
9880
|
</div>
|
|
9758
9881
|
<sl-button
|
|
9759
9882
|
@click=${this._settingCancelHandler}
|
|
@@ -9766,7 +9889,7 @@ let ct = class extends re {
|
|
|
9766
9889
|
<cb-icon
|
|
9767
9890
|
color="default"
|
|
9768
9891
|
style="font-size: 1em;"
|
|
9769
|
-
svg="${
|
|
9892
|
+
svg="${fi}"
|
|
9770
9893
|
></cb-icon>
|
|
9771
9894
|
</sl-button>
|
|
9772
9895
|
</header>
|
|
@@ -9779,7 +9902,7 @@ let ct = class extends re {
|
|
|
9779
9902
|
</sl-dialog>`;
|
|
9780
9903
|
}
|
|
9781
9904
|
};
|
|
9782
|
-
ct.styles =
|
|
9905
|
+
ct.styles = Vn;
|
|
9783
9906
|
Nt([
|
|
9784
9907
|
x({ type: Boolean })
|
|
9785
9908
|
], ct.prototype, "open", 2);
|
|
@@ -9792,17 +9915,17 @@ Nt([
|
|
|
9792
9915
|
ct = Nt([
|
|
9793
9916
|
J("cb-dialog")
|
|
9794
9917
|
], ct);
|
|
9795
|
-
var
|
|
9796
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9918
|
+
var Wn = Object.defineProperty, Gn = Object.getOwnPropertyDescriptor, hi = (a, e, t, i) => {
|
|
9919
|
+
for (var s = i > 1 ? void 0 : i ? Gn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9797
9920
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9798
|
-
return i && s &&
|
|
9921
|
+
return i && s && Wn(e, t, s), s;
|
|
9799
9922
|
};
|
|
9800
9923
|
let Ht = class extends re {
|
|
9801
9924
|
constructor() {
|
|
9802
9925
|
super(...arguments), this.open = !1;
|
|
9803
9926
|
}
|
|
9804
9927
|
render() {
|
|
9805
|
-
return
|
|
9928
|
+
return p` <cb-dialog
|
|
9806
9929
|
label="Confirm"
|
|
9807
9930
|
class="cb-clear-message-dialog"
|
|
9808
9931
|
?open=${this.open}
|
|
@@ -9839,13 +9962,13 @@ Ht.styles = K`
|
|
|
9839
9962
|
z-index: 1000;
|
|
9840
9963
|
}
|
|
9841
9964
|
`;
|
|
9842
|
-
|
|
9965
|
+
hi([
|
|
9843
9966
|
x({ type: Boolean })
|
|
9844
9967
|
], Ht.prototype, "open", 2);
|
|
9845
|
-
Ht =
|
|
9968
|
+
Ht = hi([
|
|
9846
9969
|
J("cb-clear-message-dialog")
|
|
9847
9970
|
], Ht);
|
|
9848
|
-
const
|
|
9971
|
+
const Xn = K`
|
|
9849
9972
|
:host {
|
|
9850
9973
|
// width: 380px;
|
|
9851
9974
|
|
|
@@ -9905,17 +10028,17 @@ const qn = K`
|
|
|
9905
10028
|
grid-column-start: 2;
|
|
9906
10029
|
}
|
|
9907
10030
|
`;
|
|
9908
|
-
var
|
|
9909
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10031
|
+
var Yn = Object.defineProperty, Kn = Object.getOwnPropertyDescriptor, dt = (a, e, t, i) => {
|
|
10032
|
+
for (var s = i > 1 ? void 0 : i ? Kn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9910
10033
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9911
|
-
return i && s &&
|
|
10034
|
+
return i && s && Yn(e, t, s), s;
|
|
9912
10035
|
};
|
|
9913
10036
|
let Xe = class extends re {
|
|
9914
10037
|
constructor() {
|
|
9915
10038
|
super(...arguments), this.open = !1, this.clearMessageDialogOpen = !1, this.customRequest = !1;
|
|
9916
10039
|
}
|
|
9917
10040
|
render() {
|
|
9918
|
-
return this.customRequest = this.setting.customRequest,
|
|
10041
|
+
return this.customRequest = this.setting.customRequest, p`
|
|
9919
10042
|
<cb-dialog label="Setting" class="cb-dialog" ?open=${this.open} ?no-header=${!0} @cancel=${this._settingCancelHandler}>
|
|
9920
10043
|
<form>
|
|
9921
10044
|
<div class="form-item">
|
|
@@ -9979,7 +10102,7 @@ let Xe = class extends re {
|
|
|
9979
10102
|
`;
|
|
9980
10103
|
}
|
|
9981
10104
|
renderInternalServices() {
|
|
9982
|
-
return
|
|
10105
|
+
return p`
|
|
9983
10106
|
<div class="form-item">
|
|
9984
10107
|
<label class="label">Service</label>
|
|
9985
10108
|
<sl-radio-group name="openai" value="openai" size="small">
|
|
@@ -10029,7 +10152,7 @@ let Xe = class extends re {
|
|
|
10029
10152
|
});
|
|
10030
10153
|
}
|
|
10031
10154
|
};
|
|
10032
|
-
Xe.styles =
|
|
10155
|
+
Xe.styles = Xn;
|
|
10033
10156
|
dt([
|
|
10034
10157
|
x({ type: Boolean })
|
|
10035
10158
|
], Xe.prototype, "open", 2);
|
|
@@ -10048,7 +10171,7 @@ dt([
|
|
|
10048
10171
|
Xe = dt([
|
|
10049
10172
|
J("cb-setting")
|
|
10050
10173
|
], Xe);
|
|
10051
|
-
const
|
|
10174
|
+
const Jn = K`
|
|
10052
10175
|
${ke}
|
|
10053
10176
|
:host {
|
|
10054
10177
|
--primary-color: var(--sl-color-primary-600);
|
|
@@ -10166,10 +10289,10 @@ const Hn = K`
|
|
|
10166
10289
|
margin: 4px 4px 0px 0px;
|
|
10167
10290
|
}
|
|
10168
10291
|
`;
|
|
10169
|
-
var
|
|
10170
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10292
|
+
var Zn = Object.defineProperty, Qn = Object.getOwnPropertyDescriptor, ui = (a, e, t, i) => {
|
|
10293
|
+
for (var s = i > 1 ? void 0 : i ? Qn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10171
10294
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10172
|
-
return i && s &&
|
|
10295
|
+
return i && s && Zn(e, t, s), s;
|
|
10173
10296
|
};
|
|
10174
10297
|
let jt = class extends re {
|
|
10175
10298
|
constructor() {
|
|
@@ -10203,34 +10326,34 @@ let jt = class extends re {
|
|
|
10203
10326
|
return a = h.appearanceAnchorBadgeVariant, a;
|
|
10204
10327
|
}
|
|
10205
10328
|
renderPopupLogo() {
|
|
10206
|
-
return h.setting.popupLogoUrl !== "" ?
|
|
10329
|
+
return h.setting.popupLogoUrl !== "" ? p`<img class="cb-engage-popup-img" src="${h.setting.popupLogoUrl}" />` : h.setting.popupLogoSvg !== "" ? p`<div class="cb-engage-popup-logo">${pe`${G(h.setting.popupLogoSvg)}`}</div>` : h.setting.logoUrl !== "" ? p`<img class="cb-engage-popup-img" src="${h.setting.logoUrl}" />` : h.setting.logoSvg !== "" ? p`<div class="cb-engage-popup-logo">${pe`${G(h.setting.logoSvg)}`}</div>` : null;
|
|
10207
10330
|
}
|
|
10208
10331
|
async _getEngageMessageHtml(a) {
|
|
10209
10332
|
return Ft(xt(a));
|
|
10210
10333
|
}
|
|
10211
10334
|
render() {
|
|
10212
|
-
return
|
|
10335
|
+
return p`
|
|
10213
10336
|
<div class="cb-anchor ${this.open ? "open" : ""}" part="anchor" @click=${this._clickHandler.bind(this)}>
|
|
10214
10337
|
<sl-popup placement="${this.getPopupPlacement()}" distance="16" ?active="${h.engage && !h.open}">
|
|
10215
10338
|
<sl-button slot="anchor" label="Start" size="large" variant="primary" class="anchor-button" circle>
|
|
10216
10339
|
${W(
|
|
10217
10340
|
this.open,
|
|
10218
|
-
() =>
|
|
10219
|
-
() =>
|
|
10341
|
+
() => p`<div class="cb-anchor-icon" part="anchor-icon">${pe`${G(h.setting.anchorCloseSvg)}`}</div>`,
|
|
10342
|
+
() => p`<div class="cb-anchor-icon" part="anchor-icon">${pe`${G(h.setting.anchorOpenSvg)}`}</div>`
|
|
10220
10343
|
)}
|
|
10221
10344
|
${W(
|
|
10222
10345
|
!this.open && h.unreadMessages > 0,
|
|
10223
|
-
() =>
|
|
10346
|
+
() => p`<sl-badge part="anchor-badge" class="cb-anchor-badge" variant="${this.getBadgeVariant()}" pill>${h.unreadMessages}</sl-badge>`,
|
|
10224
10347
|
() => null
|
|
10225
10348
|
)}
|
|
10226
10349
|
</sl-button>
|
|
10227
10350
|
<div class="cb-engage-popup">
|
|
10228
|
-
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${pe`${G(
|
|
10351
|
+
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${pe`${G(fi)}`}</div>
|
|
10229
10352
|
<div class="cb-engage-popup-content">
|
|
10230
10353
|
${this.renderPopupLogo()}
|
|
10231
10354
|
<div class="cb-engage-popup-text">
|
|
10232
10355
|
${bt(
|
|
10233
|
-
this._getEngageMessageHtml(h.setting.engageMessage).then((a) =>
|
|
10356
|
+
this._getEngageMessageHtml(h.setting.engageMessage).then((a) => p`${a}`)
|
|
10234
10357
|
)}
|
|
10235
10358
|
</div>
|
|
10236
10359
|
</div>
|
|
@@ -10240,41 +10363,41 @@ let jt = class extends re {
|
|
|
10240
10363
|
`;
|
|
10241
10364
|
}
|
|
10242
10365
|
};
|
|
10243
|
-
jt.styles =
|
|
10244
|
-
|
|
10366
|
+
jt.styles = Jn;
|
|
10367
|
+
ui([
|
|
10245
10368
|
x({ type: Boolean })
|
|
10246
10369
|
], jt.prototype, "open", 2);
|
|
10247
|
-
jt =
|
|
10370
|
+
jt = ui([
|
|
10248
10371
|
J("cb-anchor")
|
|
10249
10372
|
], jt);
|
|
10250
|
-
const
|
|
10373
|
+
const er = K`
|
|
10251
10374
|
${ke}
|
|
10252
|
-
`,
|
|
10253
|
-
var
|
|
10254
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10375
|
+
`, Fa = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', tr = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016a.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06a.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017a.2.2 0 0 1-.054-.06a.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', ar = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764a.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0a5.5 5.5 0 1 1-11 0"/><path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293L5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/></g></svg>', ir = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588l-2.29.287l-.082.38l.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319c.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246c-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0a1 1 0 0 1 2 0"/></g></svg>';
|
|
10376
|
+
var sr = Object.defineProperty, nr = Object.getOwnPropertyDescriptor, bi = (a, e, t, i) => {
|
|
10377
|
+
for (var s = i > 1 ? void 0 : i ? nr(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10255
10378
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10256
|
-
return i && s &&
|
|
10379
|
+
return i && s && sr(e, t, s), s;
|
|
10257
10380
|
};
|
|
10258
|
-
const
|
|
10381
|
+
const Ha = {
|
|
10259
10382
|
error: {
|
|
10260
10383
|
variant: "danger",
|
|
10261
|
-
icon:
|
|
10384
|
+
icon: Fa
|
|
10262
10385
|
},
|
|
10263
10386
|
danger: {
|
|
10264
10387
|
variant: "danger",
|
|
10265
|
-
icon:
|
|
10388
|
+
icon: Fa
|
|
10266
10389
|
},
|
|
10267
10390
|
warning: {
|
|
10268
10391
|
variant: "warning",
|
|
10269
|
-
icon:
|
|
10392
|
+
icon: tr
|
|
10270
10393
|
},
|
|
10271
10394
|
success: {
|
|
10272
10395
|
variant: "success",
|
|
10273
|
-
icon:
|
|
10396
|
+
icon: ar
|
|
10274
10397
|
},
|
|
10275
10398
|
info: {
|
|
10276
10399
|
variant: "primary",
|
|
10277
|
-
icon:
|
|
10400
|
+
icon: ir
|
|
10278
10401
|
}
|
|
10279
10402
|
};
|
|
10280
10403
|
let Vt = class extends re {
|
|
@@ -10282,25 +10405,25 @@ let Vt = class extends re {
|
|
|
10282
10405
|
super(...arguments), this.status = "info";
|
|
10283
10406
|
}
|
|
10284
10407
|
render() {
|
|
10285
|
-
const { variant: a, icon: e } =
|
|
10286
|
-
return
|
|
10408
|
+
const { variant: a, icon: e } = Ha[this.status] || Ha.info;
|
|
10409
|
+
return p`<cb-icon svg=${e} color="${a}"></cb-icon>`;
|
|
10287
10410
|
}
|
|
10288
10411
|
};
|
|
10289
|
-
Vt.styles =
|
|
10290
|
-
|
|
10412
|
+
Vt.styles = Ka;
|
|
10413
|
+
bi([
|
|
10291
10414
|
x({ type: String })
|
|
10292
10415
|
], Vt.prototype, "status", 2);
|
|
10293
|
-
Vt =
|
|
10416
|
+
Vt = bi([
|
|
10294
10417
|
J("cb-status-icon")
|
|
10295
10418
|
], Vt);
|
|
10296
|
-
var
|
|
10297
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10419
|
+
var rr = Object.getOwnPropertyDescriptor, or = (a, e, t, i) => {
|
|
10420
|
+
for (var s = i > 1 ? void 0 : i ? rr(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10298
10421
|
(o = a[r]) && (s = o(s) || s);
|
|
10299
10422
|
return s;
|
|
10300
10423
|
};
|
|
10301
|
-
let
|
|
10424
|
+
let aa = class extends re {
|
|
10302
10425
|
render() {
|
|
10303
|
-
return
|
|
10426
|
+
return p` <sl-alert variant="danger" open>
|
|
10304
10427
|
<cb-status-icon status="error" slot="icon"></cb-status-icon>
|
|
10305
10428
|
Please config openai api key in the settings.
|
|
10306
10429
|
<span
|
|
@@ -10314,11 +10437,11 @@ let ta = class extends re {
|
|
|
10314
10437
|
this.emit("setting:show");
|
|
10315
10438
|
}
|
|
10316
10439
|
};
|
|
10317
|
-
|
|
10318
|
-
|
|
10440
|
+
aa.styles = er;
|
|
10441
|
+
aa = or([
|
|
10319
10442
|
J("cb-auth-alert")
|
|
10320
|
-
],
|
|
10321
|
-
const
|
|
10443
|
+
], aa);
|
|
10444
|
+
const cr = K`
|
|
10322
10445
|
sl-dialog::part(base) {
|
|
10323
10446
|
z-index: 1000;
|
|
10324
10447
|
}
|
|
@@ -10402,32 +10525,32 @@ const Zn = K`
|
|
|
10402
10525
|
filter: alpha(opacity=80);
|
|
10403
10526
|
}
|
|
10404
10527
|
`;
|
|
10405
|
-
var
|
|
10406
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10528
|
+
var lr = Object.defineProperty, dr = Object.getOwnPropertyDescriptor, ft = (a, e, t, i) => {
|
|
10529
|
+
for (var s = i > 1 ? void 0 : i ? dr(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10407
10530
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10408
|
-
return i && s &&
|
|
10531
|
+
return i && s && lr(e, t, s), s;
|
|
10409
10532
|
};
|
|
10410
|
-
const
|
|
10533
|
+
const ja = Ke.noConflict(), fr = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16"><path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/></svg>';
|
|
10411
10534
|
let Ye = class extends re {
|
|
10412
10535
|
constructor() {
|
|
10413
10536
|
super(...arguments), this.store = new it(this, h), this.zindex = 100;
|
|
10414
10537
|
}
|
|
10415
10538
|
connectedCallback() {
|
|
10416
|
-
super.connectedCallback(),
|
|
10539
|
+
super.connectedCallback(), ja.info("connectedCallback");
|
|
10417
10540
|
}
|
|
10418
10541
|
firstUpdated() {
|
|
10419
|
-
this._rating.getSymbol = () =>
|
|
10542
|
+
this._rating.getSymbol = () => fr;
|
|
10420
10543
|
}
|
|
10421
10544
|
_stateEventHandler(a) {
|
|
10422
10545
|
const e = a.detail, t = e?.type || null;
|
|
10423
|
-
|
|
10546
|
+
ja.info(`FEEDBACK: stateEvent: ${t}`, e);
|
|
10424
10547
|
}
|
|
10425
10548
|
_cancelHandler() {
|
|
10426
10549
|
h.feedback && (console.log("Feedback dialog cancelled"), h.feedback = !1);
|
|
10427
10550
|
}
|
|
10428
10551
|
// todo render empty if feedback is disabled
|
|
10429
10552
|
render() {
|
|
10430
|
-
return
|
|
10553
|
+
return p` <sl-dialog ?no-header=${!0} ?open=${h.feedback} @sl-hide=${this._cancelHandler} class="cb-feedback-dialog">
|
|
10431
10554
|
<div style="">
|
|
10432
10555
|
<h2>Please share your feedback</h2>
|
|
10433
10556
|
<div class="cb-feedback-messages-wrapper">
|
|
@@ -10441,7 +10564,7 @@ let Ye = class extends re {
|
|
|
10441
10564
|
h.feedbackScore = 0;
|
|
10442
10565
|
}}"
|
|
10443
10566
|
>
|
|
10444
|
-
${pe`${G(
|
|
10567
|
+
${pe`${G(oi)}`}
|
|
10445
10568
|
</div>
|
|
10446
10569
|
<sl-rating id="cb-feedback-rating-el" class="cb-feedback-rating" @sl-change="${this._ratingChangeHandler}" label="Rating" precision="1" .value=${h.feedbackScore}></sl-rating>
|
|
10447
10570
|
<div
|
|
@@ -10450,7 +10573,7 @@ let Ye = class extends re {
|
|
|
10450
10573
|
h.feedbackScore = 5;
|
|
10451
10574
|
}}"
|
|
10452
10575
|
>
|
|
10453
|
-
${pe`${G(
|
|
10576
|
+
${pe`${G(ri)}`}
|
|
10454
10577
|
</div>
|
|
10455
10578
|
</div>
|
|
10456
10579
|
<div style="display: flex">
|
|
@@ -10471,7 +10594,7 @@ let Ye = class extends re {
|
|
|
10471
10594
|
this._comments.value = "", await h.submitFeedback(a, e, t);
|
|
10472
10595
|
}
|
|
10473
10596
|
};
|
|
10474
|
-
Ye.styles =
|
|
10597
|
+
Ye.styles = cr;
|
|
10475
10598
|
ft([
|
|
10476
10599
|
x({ type: Number })
|
|
10477
10600
|
], Ye.prototype, "zindex", 2);
|
|
@@ -10490,7 +10613,7 @@ ft([
|
|
|
10490
10613
|
Ye = ft([
|
|
10491
10614
|
J("cb-dialog-feedback")
|
|
10492
10615
|
], Ye);
|
|
10493
|
-
const
|
|
10616
|
+
const hr = K`
|
|
10494
10617
|
${ke}
|
|
10495
10618
|
:host {
|
|
10496
10619
|
display: block;
|
|
@@ -10573,7 +10696,7 @@ const ar = K`
|
|
|
10573
10696
|
display: inline;
|
|
10574
10697
|
}
|
|
10575
10698
|
`;
|
|
10576
|
-
class
|
|
10699
|
+
class ur extends HTMLElement {
|
|
10577
10700
|
static get observedAttributes() {
|
|
10578
10701
|
return ["audio-selector", "max-additional-height", "disabled", "fft-size"];
|
|
10579
10702
|
}
|
|
@@ -10796,9 +10919,9 @@ class ir extends HTMLElement {
|
|
|
10796
10919
|
this._animationId && (cancelAnimationFrame(this._animationId), this._animationId = null);
|
|
10797
10920
|
}
|
|
10798
10921
|
}
|
|
10799
|
-
customElements.get("volume-visualizer") || customElements.define("volume-visualizer",
|
|
10800
|
-
const
|
|
10801
|
-
class
|
|
10922
|
+
customElements.get("volume-visualizer") || customElements.define("volume-visualizer", ur);
|
|
10923
|
+
const ua = 1, Va = 2;
|
|
10924
|
+
class pi extends HTMLElement {
|
|
10802
10925
|
constructor() {
|
|
10803
10926
|
super(), this.attachShadow({ mode: "open" }), this._analyserInput = null, this._dataArrayInput = null, this._analyserOutput = null, this._dataArrayOutput = null, this._thinking = !1, this._muted = !1, this._fftSize = 512, this._smoothingTimeConstant = 0.55, this._canvas = null, this._context = null, this._lastTime = 0, this._render();
|
|
10804
10927
|
}
|
|
@@ -10832,12 +10955,12 @@ class fi extends HTMLElement {
|
|
|
10832
10955
|
const e = (i) => i.some((s) => s > 10), t = (i) => {
|
|
10833
10956
|
const r = [];
|
|
10834
10957
|
for (let o = 0; o < i.length; o += 8) {
|
|
10835
|
-
const f = i.slice(o, o + 8),
|
|
10836
|
-
r.push(
|
|
10958
|
+
const f = i.slice(o, o + 8), b = f.reduce((v, k) => v + k, 0) / f.length;
|
|
10959
|
+
r.push(b / 255);
|
|
10837
10960
|
}
|
|
10838
10961
|
return r;
|
|
10839
10962
|
};
|
|
10840
|
-
return this._analyserOutput && (this._analyserOutput.getByteFrequencyData(this._dataArrayOutput), e(this._dataArrayOutput)) ? { data: t(this._dataArrayOutput), source:
|
|
10963
|
+
return this._analyserOutput && (this._analyserOutput.getByteFrequencyData(this._dataArrayOutput), e(this._dataArrayOutput)) ? { data: t(this._dataArrayOutput), source: Va, hasActivity: !0 } : this._analyserInput && !this._muted && (this._analyserInput.getByteFrequencyData(this._dataArrayInput), e(this._dataArrayInput)) ? { data: t(this._dataArrayInput), source: ua, hasActivity: !0 } : this._analyserOutput ? { data: t(this._dataArrayOutput), source: Va, hasActivity: !1 } : { data: [], source: null, hasActivity: !1 };
|
|
10841
10964
|
}
|
|
10842
10965
|
_render() {
|
|
10843
10966
|
const e = `
|
|
@@ -10880,7 +11003,7 @@ class fi extends HTMLElement {
|
|
|
10880
11003
|
this._stop(), this._analyserInput = null, this._analyserOutput = null;
|
|
10881
11004
|
}
|
|
10882
11005
|
}
|
|
10883
|
-
class
|
|
11006
|
+
class br extends pi {
|
|
10884
11007
|
constructor() {
|
|
10885
11008
|
super(), this._ribbons = [], this._lastTime = 0, this._ribbons.push(
|
|
10886
11009
|
new $t(
|
|
@@ -10924,7 +11047,7 @@ class sr extends fi {
|
|
|
10924
11047
|
f.update(s, i, this._thinking), f.draw(e, t, r, this._thinking);
|
|
10925
11048
|
}
|
|
10926
11049
|
}
|
|
10927
|
-
customElements.get("volume-visualizer-liquid") || customElements.define("volume-visualizer-liquid",
|
|
11050
|
+
customElements.get("volume-visualizer-liquid") || customElements.define("volume-visualizer-liquid", br);
|
|
10928
11051
|
class $t {
|
|
10929
11052
|
constructor(e, t, i, s) {
|
|
10930
11053
|
this.inputColorRGB = t, this.outputColorRGB = i, this.currentColorRGB = { ...i }, this.options = s, this.segments = e, this.renderPoints = Array(e).fill(0), this.targetPoints = Array(e).fill(0), this.velocity = Array(e).fill(0), this.springStrength = s.springStrength || 10, this.damping = s.damping || 0.5, this.phase = s.phase || 0, this.scale = s.scale || 1, this.thinkingPhase = 0;
|
|
@@ -10951,15 +11074,15 @@ class $t {
|
|
|
10951
11074
|
if (v === 0)
|
|
10952
11075
|
e.moveTo(k, w);
|
|
10953
11076
|
else {
|
|
10954
|
-
const _ = (v - 1) * o, P = this.renderPoints[v - 1] * i * 0.8, E = _ + o * 0.5,
|
|
10955
|
-
e.bezierCurveTo(E,
|
|
11077
|
+
const _ = (v - 1) * o, P = this.renderPoints[v - 1] * i * 0.8, E = _ + o * 0.5, T = P, L = k - o * 0.5, C = w;
|
|
11078
|
+
e.bezierCurveTo(E, T, L, C, k, w);
|
|
10956
11079
|
}
|
|
10957
11080
|
}
|
|
10958
|
-
e.lineTo(t, 0), e.lineTo(0, 0), s ===
|
|
11081
|
+
e.lineTo(t, 0), e.lineTo(0, 0), s === ua && !r ? this.currentColorRGB = this._lerpColor(this.currentColorRGB, this.inputColorRGB, 0.02) : this.currentColorRGB = this._lerpColor(this.currentColorRGB, this.outputColorRGB, 0.02);
|
|
10959
11082
|
const f = e.createLinearGradient(0, 0, 0, i);
|
|
10960
11083
|
f.addColorStop(0, this._rgbToString(this.currentColorRGB, 0.5)), f.addColorStop(0.5, this._rgbToString(this.currentColorRGB, 0.75)), f.addColorStop(1, this._rgbToString(this.currentColorRGB, 0.25));
|
|
10961
|
-
const
|
|
10962
|
-
|
|
11084
|
+
const b = e.createLinearGradient(0, 0, t, 0);
|
|
11085
|
+
b.addColorStop(0.4, "rgba(255, 255, 255, 0)"), b.addColorStop(0.7, "#FFFFFF"), e.fillStyle = f, e.fill(), e.globalCompositeOperation = "source-atop", e.fillStyle = b, e.fill(), e.globalCompositeOperation = "source-over";
|
|
10963
11086
|
}
|
|
10964
11087
|
update(e, t, i) {
|
|
10965
11088
|
if (e.length !== 0) {
|
|
@@ -10972,7 +11095,7 @@ class $t {
|
|
|
10972
11095
|
} else {
|
|
10973
11096
|
const s = e.length / this.segments;
|
|
10974
11097
|
for (let r = 0; r < this.segments; r++) {
|
|
10975
|
-
const o = r / this.segments, f = Math.sin(o * 2 * Math.PI + this.phase),
|
|
11098
|
+
const o = r / this.segments, f = Math.sin(o * 2 * Math.PI + this.phase), b = Math.min(Math.floor(r * s), e.length - 1), v = Math.min(b + 1, e.length - 1), k = r * s - b, _ = (e[b] * (1 - k) + e[v] * k) * (1 + f * 2);
|
|
10976
11099
|
this.targetPoints[r] = _ * this.scale;
|
|
10977
11100
|
}
|
|
10978
11101
|
}
|
|
@@ -10983,7 +11106,7 @@ class $t {
|
|
|
10983
11106
|
}
|
|
10984
11107
|
}
|
|
10985
11108
|
}
|
|
10986
|
-
class
|
|
11109
|
+
class pr extends pi {
|
|
10987
11110
|
constructor() {
|
|
10988
11111
|
super(), this._numBars = 32, this._renderHeights = Array(this._numBars).fill(0), this._targetHeights = Array(this._numBars).fill(0), this._velocity = Array(this._numBars).fill(0), this._springStrength = 25, this._damping = 0.75, this._inputColor = { r: 255, g: 126, b: 103 }, this._outputColor = { r: 99, g: 193, b: 208 }, this._currentColor = { ...this._outputColor }, this._thinkingPhase = 0;
|
|
10989
11112
|
}
|
|
@@ -11000,7 +11123,7 @@ class nr extends fi {
|
|
|
11000
11123
|
_draw(e, t, i) {
|
|
11001
11124
|
e.clearRect(0, 0, t.width, t.height);
|
|
11002
11125
|
const { data: s, source: r, hasActivity: o } = this._getAudioFrequencyData();
|
|
11003
|
-
if (r ===
|
|
11126
|
+
if (r === ua && !this._thinking ? this._currentColor = this._lerpColor(this._currentColor, this._inputColor, 0.1) : this._currentColor = this._lerpColor(this._currentColor, this._outputColor, 0.1), this._thinking) {
|
|
11004
11127
|
this._thinkingPhase -= i * 4;
|
|
11005
11128
|
for (let w = 0; w < this._numBars; w++) {
|
|
11006
11129
|
const _ = w / this._numBars;
|
|
@@ -11018,34 +11141,34 @@ class nr extends fi {
|
|
|
11018
11141
|
const P = (this._targetHeights[w] - this._renderHeights[w]) * this._springStrength;
|
|
11019
11142
|
this._velocity[w] += P * i, this._velocity[w] *= this._damping, this._renderHeights[w] += this._velocity[w];
|
|
11020
11143
|
}
|
|
11021
|
-
const f = Math.max(2, t.width / (this._numBars * 2) * 0.8),
|
|
11144
|
+
const f = Math.max(2, t.width / (this._numBars * 2) * 0.8), b = t.width / 2, v = t.height / 2;
|
|
11022
11145
|
e.save();
|
|
11023
11146
|
const k = e.createLinearGradient(0, 0, 0, t.height);
|
|
11024
11147
|
k.addColorStop(0, this._rgbToString(this._currentColor, 0.8)), k.addColorStop(1, this._rgbToString(this._currentColor, 0.2)), e.fillStyle = k;
|
|
11025
11148
|
for (let w = 0; w < this._numBars; w++) {
|
|
11026
|
-
const _ = this._renderHeights[w] * t.height * 0.9, P =
|
|
11149
|
+
const _ = this._renderHeights[w] * t.height * 0.9, P = b - (w + 1) * (f * 1.2);
|
|
11027
11150
|
e.fillRect(P, v - _ / 2, f, _);
|
|
11028
|
-
const E =
|
|
11151
|
+
const E = b + w * (f * 1.2);
|
|
11029
11152
|
e.fillRect(E, v - _ / 2, f, _);
|
|
11030
11153
|
}
|
|
11031
11154
|
e.restore();
|
|
11032
11155
|
}
|
|
11033
11156
|
}
|
|
11034
|
-
customElements.get("volume-visualizer-bars") || customElements.define("volume-visualizer-bars",
|
|
11035
|
-
const
|
|
11036
|
-
var
|
|
11037
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
11157
|
+
customElements.get("volume-visualizer-bars") || customElements.define("volume-visualizer-bars", pr);
|
|
11158
|
+
const gr = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 11h-1.7c0 .74-.16 1.43-.43 2.05l1.23 1.23c.56-.98.9-2.09.9-3.28m-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9 3.34 9 5v.18zM4.27 3L3 4.27l6.01 6.01V11c0 1.66 1.33 3 2.99 3c.22 0 .44-.03.65-.08l1.66 1.66c-.71.33-1.5.52-2.31.52c-2.76 0-5.3-2.1-5.3-5.1H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c.91-.13 1.77-.45 2.54-.9L19.73 21L21 19.73z"/></svg>';
|
|
11159
|
+
var mr = Object.getOwnPropertyDescriptor, yr = (a, e, t, i) => {
|
|
11160
|
+
for (var s = i > 1 ? void 0 : i ? mr(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
11038
11161
|
(o = a[r]) && (s = o(s) || s);
|
|
11039
11162
|
return s;
|
|
11040
11163
|
};
|
|
11041
11164
|
const ut = Ke.noConflict();
|
|
11042
11165
|
ut.setLevel("info");
|
|
11043
|
-
let
|
|
11166
|
+
let ia = class extends re {
|
|
11044
11167
|
constructor() {
|
|
11045
11168
|
super(...arguments), this.store = new it(this, h), this.unsubscribeTypingActive = h.subscribe(
|
|
11046
11169
|
this._handleTypingActiveChanged.bind(this),
|
|
11047
11170
|
["typingActive"]
|
|
11048
|
-
), this.volumeVisualizerRef =
|
|
11171
|
+
), this.volumeVisualizerRef = Ni(), this.volumeVisualizerInitialized = !1;
|
|
11049
11172
|
}
|
|
11050
11173
|
/*
|
|
11051
11174
|
createRenderRoot() {
|
|
@@ -11069,22 +11192,22 @@ let aa = class extends re {
|
|
|
11069
11192
|
</header>`;
|
|
11070
11193
|
}*/
|
|
11071
11194
|
render() {
|
|
11072
|
-
return h.webAudioStarted ?
|
|
11195
|
+
return h.webAudioStarted ? p`<div class="cb-audio-controls-wrapper" part="audio-controls-wrapper">
|
|
11073
11196
|
<div class="cb-audio-controls" part="audio-controls" @click=${this._toggleMute}>
|
|
11074
11197
|
${W(
|
|
11075
11198
|
!0,
|
|
11076
|
-
() =>
|
|
11199
|
+
() => p`
|
|
11077
11200
|
<button type="button" part="${h.webAudioMuted ? "audio-unmute-button" : "audio-mute-button"}" class="circle-btn ${h.webAudioMuted ? "danger" : "clear"}" title="${h.webAudioMuted ? "Unmute" : "Mute"}" @click=${this._toggleMute}>
|
|
11078
|
-
${G(
|
|
11201
|
+
${G(gr)}
|
|
11079
11202
|
</button>
|
|
11080
11203
|
`,
|
|
11081
|
-
() =>
|
|
11204
|
+
() => p``
|
|
11082
11205
|
)}
|
|
11083
11206
|
<div class="cb-audio-controls-viz" part="audio-controls-viz">
|
|
11084
11207
|
${this.renderVisualizer()}
|
|
11085
11208
|
</div>
|
|
11086
11209
|
<button type="button" part="audio-end-button" class="circle-btn clear" title="End" @click=${this._toggleHangup}>
|
|
11087
|
-
${G(
|
|
11210
|
+
${G(ha)}
|
|
11088
11211
|
</button>
|
|
11089
11212
|
</div>
|
|
11090
11213
|
</div>` : null;
|
|
@@ -11092,19 +11215,19 @@ let aa = class extends re {
|
|
|
11092
11215
|
renderVisualizer() {
|
|
11093
11216
|
switch (h.setting.botAdvancedSettings?.audioVisualizerName || "bars") {
|
|
11094
11217
|
case "default":
|
|
11095
|
-
return
|
|
11218
|
+
return p`
|
|
11096
11219
|
<volume-visualizer ${Tt(this.volumeVisualizerRef)}></volume-visualizer>
|
|
11097
11220
|
`;
|
|
11098
11221
|
case "liquid":
|
|
11099
|
-
return
|
|
11222
|
+
return p`
|
|
11100
11223
|
<volume-visualizer-liquid ${Tt(this.volumeVisualizerRef)}></volume-visualizer-liquid>
|
|
11101
11224
|
`;
|
|
11102
11225
|
case "bars":
|
|
11103
|
-
return
|
|
11226
|
+
return p`
|
|
11104
11227
|
<volume-visualizer-bars ${Tt(this.volumeVisualizerRef)}></volume-visualizer-bars>
|
|
11105
11228
|
`;
|
|
11106
11229
|
default:
|
|
11107
|
-
return
|
|
11230
|
+
return p`
|
|
11108
11231
|
<volume-visualizer ${Tt(this.volumeVisualizerRef)}></volume-visualizer>
|
|
11109
11232
|
`;
|
|
11110
11233
|
}
|
|
@@ -11140,11 +11263,11 @@ let aa = class extends re {
|
|
|
11140
11263
|
h.webAudioStarted && (ut.info(`Typing state changed: ${e}`), this.volumeVisualizerRef.value && this.volumeVisualizerRef.value.setThinking(e));
|
|
11141
11264
|
}
|
|
11142
11265
|
};
|
|
11143
|
-
|
|
11144
|
-
|
|
11266
|
+
ia.styles = hr;
|
|
11267
|
+
ia = yr([
|
|
11145
11268
|
J("cb-audio-controls")
|
|
11146
|
-
],
|
|
11147
|
-
class
|
|
11269
|
+
], ia);
|
|
11270
|
+
class sa extends Error {
|
|
11148
11271
|
response;
|
|
11149
11272
|
request;
|
|
11150
11273
|
options;
|
|
@@ -11153,7 +11276,7 @@ class ia extends Error {
|
|
|
11153
11276
|
super(`Request failed with ${f}: ${t.method} ${t.url}`), this.name = "HTTPError", this.response = e, this.request = t, this.options = i;
|
|
11154
11277
|
}
|
|
11155
11278
|
}
|
|
11156
|
-
class
|
|
11279
|
+
class gi extends Error {
|
|
11157
11280
|
name = "NonError";
|
|
11158
11281
|
value;
|
|
11159
11282
|
constructor(e) {
|
|
@@ -11165,17 +11288,17 @@ class hi extends Error {
|
|
|
11165
11288
|
super(t), this.value = e;
|
|
11166
11289
|
}
|
|
11167
11290
|
}
|
|
11168
|
-
class
|
|
11291
|
+
class Jt extends Error {
|
|
11169
11292
|
name = "ForceRetryError";
|
|
11170
11293
|
customDelay;
|
|
11171
11294
|
code;
|
|
11172
11295
|
customRequest;
|
|
11173
11296
|
constructor(e) {
|
|
11174
|
-
const t = e?.cause ? e.cause instanceof Error ? e.cause : new
|
|
11297
|
+
const t = e?.cause ? e.cause instanceof Error ? e.cause : new gi(e.cause) : void 0;
|
|
11175
11298
|
super(e?.code ? `Forced retry: ${e.code}` : "Forced retry", t ? { cause: t } : void 0), this.customDelay = e?.delay, this.code = e?.code, this.customRequest = e?.request;
|
|
11176
11299
|
}
|
|
11177
11300
|
}
|
|
11178
|
-
const
|
|
11301
|
+
const Ua = (() => {
|
|
11179
11302
|
let a = !1, e = !1;
|
|
11180
11303
|
const t = typeof globalThis.ReadableStream == "function", i = typeof globalThis.Request == "function";
|
|
11181
11304
|
if (t && i)
|
|
@@ -11194,7 +11317,7 @@ const Ha = (() => {
|
|
|
11194
11317
|
throw s;
|
|
11195
11318
|
}
|
|
11196
11319
|
return a && !e;
|
|
11197
|
-
})(),
|
|
11320
|
+
})(), vr = typeof globalThis.AbortController == "function", mi = typeof globalThis.AbortSignal == "function" && typeof globalThis.AbortSignal.any == "function", wr = typeof globalThis.ReadableStream == "function", xr = typeof globalThis.FormData == "function", yi = ["get", "post", "put", "patch", "head", "delete"], kr = {
|
|
11198
11321
|
json: "application/json",
|
|
11199
11322
|
text: "text/*",
|
|
11200
11323
|
formData: "multipart/form-data",
|
|
@@ -11203,14 +11326,14 @@ const Ha = (() => {
|
|
|
11203
11326
|
// Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).
|
|
11204
11327
|
// We still feature-check at runtime before exposing the shortcut.
|
|
11205
11328
|
bytes: "*/*"
|
|
11206
|
-
},
|
|
11207
|
-
class
|
|
11329
|
+
}, Zt = 2147483647, _r = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length, vi = Symbol("stop");
|
|
11330
|
+
class wi {
|
|
11208
11331
|
options;
|
|
11209
11332
|
constructor(e) {
|
|
11210
11333
|
this.options = e;
|
|
11211
11334
|
}
|
|
11212
11335
|
}
|
|
11213
|
-
const
|
|
11336
|
+
const Sr = (a) => new wi(a), Cr = {
|
|
11214
11337
|
json: !0,
|
|
11215
11338
|
parseJson: !0,
|
|
11216
11339
|
stringifyJson: !0,
|
|
@@ -11224,10 +11347,10 @@ const br = (a) => new gi(a), pr = {
|
|
|
11224
11347
|
onUploadProgress: !0,
|
|
11225
11348
|
fetch: !0,
|
|
11226
11349
|
context: !0
|
|
11227
|
-
},
|
|
11350
|
+
}, Ar = {
|
|
11228
11351
|
next: !0
|
|
11229
11352
|
// Next.js cache revalidation (revalidate, tags)
|
|
11230
|
-
},
|
|
11353
|
+
}, Mr = {
|
|
11231
11354
|
method: !0,
|
|
11232
11355
|
headers: !0,
|
|
11233
11356
|
body: !0,
|
|
@@ -11242,13 +11365,13 @@ const br = (a) => new gi(a), pr = {
|
|
|
11242
11365
|
signal: !0,
|
|
11243
11366
|
window: !0,
|
|
11244
11367
|
duplex: !0
|
|
11245
|
-
},
|
|
11368
|
+
}, Tr = (a) => {
|
|
11246
11369
|
if (!a)
|
|
11247
11370
|
return 0;
|
|
11248
11371
|
if (a instanceof FormData) {
|
|
11249
11372
|
let e = 0;
|
|
11250
11373
|
for (const [t, i] of a)
|
|
11251
|
-
e +=
|
|
11374
|
+
e += _r, e += new TextEncoder().encode(`Content-Disposition: form-data; name="${t}"`).length, e += typeof i == "string" ? new TextEncoder().encode(i).length : i.size;
|
|
11252
11375
|
return e;
|
|
11253
11376
|
}
|
|
11254
11377
|
if (a instanceof Blob)
|
|
@@ -11269,7 +11392,7 @@ const br = (a) => new gi(a), pr = {
|
|
|
11269
11392
|
return 0;
|
|
11270
11393
|
}
|
|
11271
11394
|
return 0;
|
|
11272
|
-
},
|
|
11395
|
+
}, xi = (a, e, t) => {
|
|
11273
11396
|
let i, s = 0;
|
|
11274
11397
|
return a.pipeThrough(new TransformStream({
|
|
11275
11398
|
transform(r, o) {
|
|
@@ -11284,7 +11407,7 @@ const br = (a) => new gi(a), pr = {
|
|
|
11284
11407
|
i && (s += i.byteLength, t?.({ percent: 1, totalBytes: Math.max(e, s), transferredBytes: s }, i));
|
|
11285
11408
|
}
|
|
11286
11409
|
}));
|
|
11287
|
-
},
|
|
11410
|
+
}, Ir = (a, e) => {
|
|
11288
11411
|
if (!a.body)
|
|
11289
11412
|
return a;
|
|
11290
11413
|
if (a.status === 204)
|
|
@@ -11294,40 +11417,40 @@ const br = (a) => new gi(a), pr = {
|
|
|
11294
11417
|
headers: a.headers
|
|
11295
11418
|
});
|
|
11296
11419
|
const t = Math.max(0, Number(a.headers.get("content-length")) || 0);
|
|
11297
|
-
return new Response(
|
|
11420
|
+
return new Response(xi(a.body, t, e), {
|
|
11298
11421
|
status: a.status,
|
|
11299
11422
|
statusText: a.statusText,
|
|
11300
11423
|
headers: a.headers
|
|
11301
11424
|
});
|
|
11302
|
-
},
|
|
11425
|
+
}, Er = (a, e, t) => {
|
|
11303
11426
|
if (!a.body)
|
|
11304
11427
|
return a;
|
|
11305
|
-
const i =
|
|
11428
|
+
const i = Tr(t ?? a.body);
|
|
11306
11429
|
return new Request(a, {
|
|
11307
11430
|
// @ts-expect-error - Types are outdated.
|
|
11308
11431
|
duplex: "half",
|
|
11309
|
-
body:
|
|
11432
|
+
body: xi(a.body, i, e)
|
|
11310
11433
|
});
|
|
11311
11434
|
}, Qe = (a) => a !== null && typeof a == "object", Pt = (...a) => {
|
|
11312
11435
|
for (const e of a)
|
|
11313
11436
|
if ((!Qe(e) || Array.isArray(e)) && e !== void 0)
|
|
11314
11437
|
throw new TypeError("The `options` argument must be an object");
|
|
11315
|
-
return
|
|
11316
|
-
},
|
|
11438
|
+
return ba({}, ...a);
|
|
11439
|
+
}, ki = (a = {}, e = {}) => {
|
|
11317
11440
|
const t = new globalThis.Headers(a), i = e instanceof globalThis.Headers, s = new globalThis.Headers(e);
|
|
11318
11441
|
for (const [r, o] of s.entries())
|
|
11319
11442
|
i && o === "undefined" || o === void 0 ? t.delete(r) : t.set(r, o);
|
|
11320
11443
|
return t;
|
|
11321
11444
|
};
|
|
11322
11445
|
function Lt(a, e, t) {
|
|
11323
|
-
return Object.hasOwn(e, t) && e[t] === void 0 ? [] :
|
|
11446
|
+
return Object.hasOwn(e, t) && e[t] === void 0 ? [] : ba(a[t] ?? [], e[t] ?? []);
|
|
11324
11447
|
}
|
|
11325
|
-
const
|
|
11448
|
+
const _i = (a = {}, e = {}) => ({
|
|
11326
11449
|
beforeRequest: Lt(a, e, "beforeRequest"),
|
|
11327
11450
|
beforeRetry: Lt(a, e, "beforeRetry"),
|
|
11328
11451
|
afterResponse: Lt(a, e, "afterResponse"),
|
|
11329
11452
|
beforeError: Lt(a, e, "beforeError")
|
|
11330
|
-
}),
|
|
11453
|
+
}), $r = (a, e) => {
|
|
11331
11454
|
const t = new URLSearchParams();
|
|
11332
11455
|
for (const i of [a, e])
|
|
11333
11456
|
if (i !== void 0)
|
|
@@ -11349,50 +11472,50 @@ const vi = (a = {}, e = {}) => ({
|
|
|
11349
11472
|
t.append(r, o);
|
|
11350
11473
|
}
|
|
11351
11474
|
return t;
|
|
11352
|
-
},
|
|
11475
|
+
}, ba = (...a) => {
|
|
11353
11476
|
let e = {}, t = {}, i = {}, s;
|
|
11354
11477
|
const r = [];
|
|
11355
11478
|
for (const o of a)
|
|
11356
11479
|
if (Array.isArray(o))
|
|
11357
11480
|
Array.isArray(e) || (e = []), e = [...e, ...o];
|
|
11358
11481
|
else if (Qe(o)) {
|
|
11359
|
-
for (let [f,
|
|
11360
|
-
if (f === "signal" &&
|
|
11361
|
-
r.push(
|
|
11482
|
+
for (let [f, b] of Object.entries(o)) {
|
|
11483
|
+
if (f === "signal" && b instanceof globalThis.AbortSignal) {
|
|
11484
|
+
r.push(b);
|
|
11362
11485
|
continue;
|
|
11363
11486
|
}
|
|
11364
11487
|
if (f === "context") {
|
|
11365
|
-
if (
|
|
11488
|
+
if (b != null && (!Qe(b) || Array.isArray(b)))
|
|
11366
11489
|
throw new TypeError("The `context` option must be an object");
|
|
11367
11490
|
e = {
|
|
11368
11491
|
...e,
|
|
11369
|
-
context:
|
|
11492
|
+
context: b == null ? {} : { ...e.context, ...b }
|
|
11370
11493
|
};
|
|
11371
11494
|
continue;
|
|
11372
11495
|
}
|
|
11373
11496
|
if (f === "searchParams") {
|
|
11374
|
-
|
|
11497
|
+
b == null ? s = void 0 : s = s === void 0 ? b : $r(s, b);
|
|
11375
11498
|
continue;
|
|
11376
11499
|
}
|
|
11377
|
-
Qe(
|
|
11500
|
+
Qe(b) && f in e && (b = ba(e[f], b)), e = { ...e, [f]: b };
|
|
11378
11501
|
}
|
|
11379
|
-
Qe(o.hooks) && (i =
|
|
11502
|
+
Qe(o.hooks) && (i = _i(i, o.hooks), e.hooks = i), Qe(o.headers) && (t = ki(t, o.headers), e.headers = t);
|
|
11380
11503
|
}
|
|
11381
|
-
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] :
|
|
11382
|
-
},
|
|
11504
|
+
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] : mi ? e.signal = AbortSignal.any(r) : e.signal = r.at(-1)), e.context === void 0 && (e.context = {}), e;
|
|
11505
|
+
}, Pr = (a) => yi.includes(a) ? a.toUpperCase() : a, Lr = ["get", "put", "head", "delete", "options", "trace"], Rr = [408, 413, 429, 500, 502, 503, 504], zr = [413, 429, 503], Na = {
|
|
11383
11506
|
limit: 2,
|
|
11384
|
-
methods:
|
|
11385
|
-
statusCodes:
|
|
11386
|
-
afterStatusCodes:
|
|
11507
|
+
methods: Lr,
|
|
11508
|
+
statusCodes: Rr,
|
|
11509
|
+
afterStatusCodes: zr,
|
|
11387
11510
|
maxRetryAfter: Number.POSITIVE_INFINITY,
|
|
11388
11511
|
backoffLimit: Number.POSITIVE_INFINITY,
|
|
11389
11512
|
delay: (a) => 0.3 * 2 ** (a - 1) * 1e3,
|
|
11390
11513
|
jitter: void 0,
|
|
11391
11514
|
retryOnTimeout: !1
|
|
11392
|
-
},
|
|
11515
|
+
}, Or = (a = {}) => {
|
|
11393
11516
|
if (typeof a == "number")
|
|
11394
11517
|
return {
|
|
11395
|
-
...
|
|
11518
|
+
...Na,
|
|
11396
11519
|
limit: a
|
|
11397
11520
|
};
|
|
11398
11521
|
if (a.methods && !Array.isArray(a.methods))
|
|
@@ -11400,27 +11523,27 @@ const vi = (a = {}, e = {}) => ({
|
|
|
11400
11523
|
if (a.statusCodes && !Array.isArray(a.statusCodes))
|
|
11401
11524
|
throw new Error("retry.statusCodes must be an array");
|
|
11402
11525
|
return {
|
|
11403
|
-
...
|
|
11526
|
+
...Na,
|
|
11404
11527
|
...a
|
|
11405
11528
|
};
|
|
11406
11529
|
};
|
|
11407
|
-
class
|
|
11530
|
+
class na extends Error {
|
|
11408
11531
|
request;
|
|
11409
11532
|
constructor(e) {
|
|
11410
11533
|
super(`Request timed out: ${e.method} ${e.url}`), this.name = "TimeoutError", this.request = e;
|
|
11411
11534
|
}
|
|
11412
11535
|
}
|
|
11413
|
-
async function
|
|
11536
|
+
async function Br(a, e, t, i) {
|
|
11414
11537
|
return new Promise((s, r) => {
|
|
11415
11538
|
const o = setTimeout(() => {
|
|
11416
|
-
t && t.abort(), r(new
|
|
11539
|
+
t && t.abort(), r(new na(a));
|
|
11417
11540
|
}, i.timeout);
|
|
11418
11541
|
i.fetch(a, e).then(s).catch(r).then(() => {
|
|
11419
11542
|
clearTimeout(o);
|
|
11420
11543
|
});
|
|
11421
11544
|
});
|
|
11422
11545
|
}
|
|
11423
|
-
async function
|
|
11546
|
+
async function qr(a, { signal: e }) {
|
|
11424
11547
|
return new Promise((t, i) => {
|
|
11425
11548
|
e && (e.throwIfAborted(), e.addEventListener("abort", s, { once: !0 }));
|
|
11426
11549
|
function s() {
|
|
@@ -11431,62 +11554,62 @@ async function Tr(a, { signal: e }) {
|
|
|
11431
11554
|
}, a);
|
|
11432
11555
|
});
|
|
11433
11556
|
}
|
|
11434
|
-
const
|
|
11557
|
+
const Dr = (a, e) => {
|
|
11435
11558
|
const t = {};
|
|
11436
11559
|
for (const i in e)
|
|
11437
|
-
Object.hasOwn(e, i) && !(i in
|
|
11560
|
+
Object.hasOwn(e, i) && !(i in Mr) && !(i in Cr) && (!(i in a) || i in Ar) && (t[i] = e[i]);
|
|
11438
11561
|
return t;
|
|
11439
|
-
},
|
|
11440
|
-
function
|
|
11441
|
-
return a instanceof ia || a?.name === ia.name;
|
|
11442
|
-
}
|
|
11443
|
-
function Pr(a) {
|
|
11562
|
+
}, Fr = (a) => a === void 0 ? !1 : Array.isArray(a) ? a.length > 0 : a instanceof URLSearchParams ? a.size > 0 : typeof a == "object" ? Object.keys(a).length > 0 : typeof a == "string" ? a.trim().length > 0 : !!a;
|
|
11563
|
+
function Hr(a) {
|
|
11444
11564
|
return a instanceof sa || a?.name === sa.name;
|
|
11445
11565
|
}
|
|
11566
|
+
function jr(a) {
|
|
11567
|
+
return a instanceof na || a?.name === na.name;
|
|
11568
|
+
}
|
|
11446
11569
|
class wt {
|
|
11447
11570
|
static create(e, t) {
|
|
11448
11571
|
const i = new wt(e, t), s = async () => {
|
|
11449
|
-
if (typeof i.#e.timeout == "number" && i.#e.timeout >
|
|
11450
|
-
throw new RangeError(`The \`timeout\` option cannot be greater than ${
|
|
11572
|
+
if (typeof i.#e.timeout == "number" && i.#e.timeout > Zt)
|
|
11573
|
+
throw new RangeError(`The \`timeout\` option cannot be greater than ${Zt}`);
|
|
11451
11574
|
await Promise.resolve();
|
|
11452
11575
|
let o = await i.#p();
|
|
11453
11576
|
for (const f of i.#e.hooks.afterResponse) {
|
|
11454
|
-
const
|
|
11455
|
-
if (v instanceof globalThis.Response && (o = v), v instanceof
|
|
11577
|
+
const b = i.#d(o.clone()), v = await f(i.request, i.#o(), b, { retryCount: i.#a });
|
|
11578
|
+
if (v instanceof globalThis.Response && (o = v), v instanceof wi)
|
|
11456
11579
|
throw await Promise.all([
|
|
11457
|
-
|
|
11580
|
+
b.body?.cancel(),
|
|
11458
11581
|
o.body?.cancel()
|
|
11459
|
-
]), new
|
|
11582
|
+
]), new Jt(v.options);
|
|
11460
11583
|
}
|
|
11461
11584
|
if (i.#d(o), !o.ok && (typeof i.#e.throwHttpErrors == "function" ? i.#e.throwHttpErrors(o.status) : i.#e.throwHttpErrors)) {
|
|
11462
|
-
let f = new
|
|
11463
|
-
for (const
|
|
11464
|
-
f = await
|
|
11585
|
+
let f = new sa(o, i.request, i.#o());
|
|
11586
|
+
for (const b of i.#e.hooks.beforeError)
|
|
11587
|
+
f = await b(f, { retryCount: i.#a });
|
|
11465
11588
|
throw f;
|
|
11466
11589
|
}
|
|
11467
11590
|
if (i.#e.onDownloadProgress) {
|
|
11468
11591
|
if (typeof i.#e.onDownloadProgress != "function")
|
|
11469
11592
|
throw new TypeError("The `onDownloadProgress` option must be a function");
|
|
11470
|
-
if (!
|
|
11593
|
+
if (!wr)
|
|
11471
11594
|
throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");
|
|
11472
|
-
return
|
|
11595
|
+
return Ir(o.clone(), i.#e.onDownloadProgress);
|
|
11473
11596
|
}
|
|
11474
11597
|
return o;
|
|
11475
11598
|
}, r = i.#f(s).finally(async () => {
|
|
11476
11599
|
const o = i.#n, f = [];
|
|
11477
11600
|
o && !o.bodyUsed && f.push(o.body?.cancel()), i.request.bodyUsed || f.push(i.request.body?.cancel()), await Promise.all(f);
|
|
11478
11601
|
});
|
|
11479
|
-
for (const [o, f] of Object.entries(
|
|
11602
|
+
for (const [o, f] of Object.entries(kr))
|
|
11480
11603
|
o === "bytes" && typeof globalThis.Response?.prototype?.bytes != "function" || (r[o] = async () => {
|
|
11481
11604
|
i.request.headers.set("accept", i.request.headers.get("accept") || f);
|
|
11482
|
-
const
|
|
11605
|
+
const b = await r;
|
|
11483
11606
|
if (o === "json") {
|
|
11484
|
-
if (
|
|
11607
|
+
if (b.status === 204)
|
|
11485
11608
|
return "";
|
|
11486
|
-
const v = await
|
|
11609
|
+
const v = await b.text();
|
|
11487
11610
|
return v === "" ? "" : t.parseJson ? t.parseJson(v) : JSON.parse(v);
|
|
11488
11611
|
}
|
|
11489
|
-
return
|
|
11612
|
+
return b[o]();
|
|
11490
11613
|
});
|
|
11491
11614
|
return r;
|
|
11492
11615
|
}
|
|
@@ -11507,17 +11630,17 @@ class wt {
|
|
|
11507
11630
|
constructor(e, t = {}) {
|
|
11508
11631
|
if (this.#t = e, this.#e = {
|
|
11509
11632
|
...t,
|
|
11510
|
-
headers:
|
|
11511
|
-
hooks:
|
|
11633
|
+
headers: ki(this.#t.headers, t.headers),
|
|
11634
|
+
hooks: _i({
|
|
11512
11635
|
beforeRequest: [],
|
|
11513
11636
|
beforeRetry: [],
|
|
11514
11637
|
beforeError: [],
|
|
11515
11638
|
afterResponse: []
|
|
11516
11639
|
}, t.hooks),
|
|
11517
|
-
method:
|
|
11640
|
+
method: Pr(t.method ?? this.#t.method ?? "GET"),
|
|
11518
11641
|
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
11519
11642
|
prefixUrl: String(t.prefixUrl || ""),
|
|
11520
|
-
retry:
|
|
11643
|
+
retry: Or(t.retry),
|
|
11521
11644
|
throwHttpErrors: t.throwHttpErrors ?? !0,
|
|
11522
11645
|
timeout: t.timeout ?? 1e4,
|
|
11523
11646
|
fetch: t.fetch ?? globalThis.fetch.bind(globalThis),
|
|
@@ -11529,16 +11652,16 @@ class wt {
|
|
|
11529
11652
|
throw new Error("`input` must not begin with a slash when using `prefixUrl`");
|
|
11530
11653
|
this.#e.prefixUrl.endsWith("/") || (this.#e.prefixUrl += "/"), this.#t = this.#e.prefixUrl + this.#t;
|
|
11531
11654
|
}
|
|
11532
|
-
|
|
11655
|
+
vr && mi && (this.#s = this.#e.signal ?? this.#t.signal, this.#i = new globalThis.AbortController(), this.#e.signal = this.#s ? AbortSignal.any([this.#s, this.#i.signal]) : this.#i.signal), Ua && (this.#e.duplex = "half"), this.#e.json !== void 0 && (this.#e.body = this.#e.stringifyJson?.(this.#e.json) ?? JSON.stringify(this.#e.json), this.#e.headers.set("content-type", this.#e.headers.get("content-type") ?? "application/json"));
|
|
11533
11656
|
const i = t.headers && new globalThis.Headers(t.headers).has("content-type");
|
|
11534
|
-
if (this.#t instanceof globalThis.Request && (
|
|
11657
|
+
if (this.#t instanceof globalThis.Request && (xr && this.#e.body instanceof globalThis.FormData || this.#e.body instanceof URLSearchParams) && !i && this.#e.headers.delete("content-type"), this.request = new globalThis.Request(this.#t, this.#e), Fr(this.#e.searchParams)) {
|
|
11535
11658
|
const r = "?" + (typeof this.#e.searchParams == "string" ? this.#e.searchParams.replace(/^\?/, "") : new URLSearchParams(wt.#u(this.#e.searchParams)).toString()), o = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, r);
|
|
11536
11659
|
this.request = new globalThis.Request(o, this.#e);
|
|
11537
11660
|
}
|
|
11538
11661
|
if (this.#e.onUploadProgress) {
|
|
11539
11662
|
if (typeof this.#e.onUploadProgress != "function")
|
|
11540
11663
|
throw new TypeError("The `onUploadProgress` option must be a function");
|
|
11541
|
-
if (!
|
|
11664
|
+
if (!Ua)
|
|
11542
11665
|
throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");
|
|
11543
11666
|
this.request = this.#h(this.request, this.#e.body ?? void 0);
|
|
11544
11667
|
}
|
|
@@ -11551,8 +11674,8 @@ class wt {
|
|
|
11551
11674
|
async #b(e) {
|
|
11552
11675
|
if (this.#a++, this.#a > this.#e.retry.limit)
|
|
11553
11676
|
throw e;
|
|
11554
|
-
const t = e instanceof Error ? e : new
|
|
11555
|
-
if (t instanceof
|
|
11677
|
+
const t = e instanceof Error ? e : new gi(e);
|
|
11678
|
+
if (t instanceof Jt)
|
|
11556
11679
|
return t.customDelay ?? this.#c();
|
|
11557
11680
|
if (!this.#e.retry.methods.includes(this.request.method.toLowerCase()))
|
|
11558
11681
|
throw e;
|
|
@@ -11563,9 +11686,9 @@ class wt {
|
|
|
11563
11686
|
if (i === !0)
|
|
11564
11687
|
return this.#c();
|
|
11565
11688
|
}
|
|
11566
|
-
if (
|
|
11689
|
+
if (jr(e) && !this.#e.retry.retryOnTimeout)
|
|
11567
11690
|
throw e;
|
|
11568
|
-
if (
|
|
11691
|
+
if (Hr(e)) {
|
|
11569
11692
|
if (!this.#e.retry.statusCodes.includes(e.response.status))
|
|
11570
11693
|
throw e;
|
|
11571
11694
|
const i = e.response.headers.get("Retry-After") ?? e.response.headers.get("RateLimit-Reset") ?? e.response.headers.get("X-RateLimit-Retry-After") ?? e.response.headers.get("X-RateLimit-Reset") ?? e.response.headers.get("X-Rate-Limit-Reset");
|
|
@@ -11587,10 +11710,10 @@ class wt {
|
|
|
11587
11710
|
try {
|
|
11588
11711
|
return await e();
|
|
11589
11712
|
} catch (t) {
|
|
11590
|
-
const i = Math.min(await this.#b(t),
|
|
11713
|
+
const i = Math.min(await this.#b(t), Zt);
|
|
11591
11714
|
if (this.#a < 1)
|
|
11592
11715
|
throw t;
|
|
11593
|
-
if (await
|
|
11716
|
+
if (await qr(i, this.#s ? { signal: this.#s } : {}), t instanceof Jt && t.customRequest) {
|
|
11594
11717
|
const s = this.#e.signal ? new globalThis.Request(t.customRequest, { signal: this.#e.signal }) : new globalThis.Request(t.customRequest);
|
|
11595
11718
|
this.#l(s);
|
|
11596
11719
|
}
|
|
@@ -11607,7 +11730,7 @@ class wt {
|
|
|
11607
11730
|
}
|
|
11608
11731
|
if (r instanceof globalThis.Response)
|
|
11609
11732
|
return r;
|
|
11610
|
-
if (r ===
|
|
11733
|
+
if (r === vi)
|
|
11611
11734
|
return;
|
|
11612
11735
|
}
|
|
11613
11736
|
return this.#f(e);
|
|
@@ -11624,8 +11747,8 @@ class wt {
|
|
|
11624
11747
|
break;
|
|
11625
11748
|
}
|
|
11626
11749
|
}
|
|
11627
|
-
const e =
|
|
11628
|
-
return this.#n = this.request, this.request = this.#n.clone(), this.#e.timeout === !1 ? this.#e.fetch(this.#n, e) :
|
|
11750
|
+
const e = Dr(this.request, this.#e);
|
|
11751
|
+
return this.#n = this.request, this.request = this.#n.clone(), this.#e.timeout === !1 ? this.#e.fetch(this.#n, e) : Br(this.#n, e, this.#i, this.#e);
|
|
11629
11752
|
}
|
|
11630
11753
|
#o() {
|
|
11631
11754
|
if (!this.#r) {
|
|
@@ -11638,16 +11761,16 @@ class wt {
|
|
|
11638
11761
|
this.#r = void 0, this.request = this.#h(e);
|
|
11639
11762
|
}
|
|
11640
11763
|
#h(e, t) {
|
|
11641
|
-
return !this.#e.onUploadProgress || !e.body ? e :
|
|
11764
|
+
return !this.#e.onUploadProgress || !e.body ? e : Er(e, this.#e.onUploadProgress, t ?? this.#e.body ?? void 0);
|
|
11642
11765
|
}
|
|
11643
11766
|
}
|
|
11644
|
-
const
|
|
11767
|
+
const ra = (a) => {
|
|
11645
11768
|
const e = (t, i) => wt.create(t, Pt(a, i));
|
|
11646
|
-
for (const t of
|
|
11769
|
+
for (const t of yi)
|
|
11647
11770
|
e[t] = (i, s) => wt.create(i, Pt(a, s, { method: t }));
|
|
11648
|
-
return e.create = (t) =>
|
|
11649
|
-
},
|
|
11650
|
-
|
|
11771
|
+
return e.create = (t) => ra(Pt(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ra(Pt(a, t))), e.stop = vi, e.retry = Sr, e;
|
|
11772
|
+
}, Vr = ra();
|
|
11773
|
+
Vr.extend({
|
|
11651
11774
|
hooks: {
|
|
11652
11775
|
beforeRequest: [
|
|
11653
11776
|
() => {
|
|
@@ -11655,10 +11778,10 @@ Lr.extend({
|
|
|
11655
11778
|
]
|
|
11656
11779
|
}
|
|
11657
11780
|
});
|
|
11658
|
-
async function
|
|
11781
|
+
async function Ur(a, e) {
|
|
11659
11782
|
const { onmessage: t, onclose: i, ...s } = e, r = async (o, f) => {
|
|
11660
|
-
const { value:
|
|
11661
|
-
v ? (o.close(), i?.()) : (t?.(
|
|
11783
|
+
const { value: b, done: v } = await f.read();
|
|
11784
|
+
v ? (o.close(), i?.()) : (t?.(b), o.enqueue(b), r(o, f));
|
|
11662
11785
|
};
|
|
11663
11786
|
return s.body && typeof s.body == "object" && (s.body = JSON.stringify(s.body)), console.log("Fetching:", s), fetch(a, s).then((o) => {
|
|
11664
11787
|
const f = o.body.getReader();
|
|
@@ -11676,14 +11799,14 @@ async function Rr(a, e) {
|
|
|
11676
11799
|
}).text()
|
|
11677
11800
|
);
|
|
11678
11801
|
}
|
|
11679
|
-
var
|
|
11680
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
11802
|
+
var Nr = Object.defineProperty, Wr = Object.getOwnPropertyDescriptor, H = (a, e, t, i) => {
|
|
11803
|
+
for (var s = i > 1 ? void 0 : i ? Wr(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
11681
11804
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
11682
|
-
return i && s &&
|
|
11805
|
+
return i && s && Nr(e, t, s), s;
|
|
11683
11806
|
};
|
|
11684
11807
|
const Be = Ke.noConflict();
|
|
11685
11808
|
Be.setLevel("info");
|
|
11686
|
-
function
|
|
11809
|
+
function Gr() {
|
|
11687
11810
|
const a = navigator.userAgent, e = /iPhone|iPad|iPod/.test(a), t = /AppleWebKit/.test(a), i = /Safari/.test(a) && !/CriOS|FxiOS|EdgiOS|OPiOS/.test(a);
|
|
11688
11811
|
return e && t && !i;
|
|
11689
11812
|
}
|
|
@@ -11723,7 +11846,7 @@ let D = class extends re {
|
|
|
11723
11846
|
h.handleLifecycleResume("focus", this.boundScrollToBottomOnUpdate);
|
|
11724
11847
|
}, this.handleWindowOnline = () => {
|
|
11725
11848
|
h.handleLifecycleResume("online", this.boundScrollToBottomOnUpdate);
|
|
11726
|
-
}, this.fetchStream =
|
|
11849
|
+
}, this.fetchStream = Ur;
|
|
11727
11850
|
}
|
|
11728
11851
|
/**
|
|
11729
11852
|
* decodeStreamData
|
|
@@ -11758,7 +11881,7 @@ let D = class extends re {
|
|
|
11758
11881
|
h.addActions(a);
|
|
11759
11882
|
}
|
|
11760
11883
|
render() {
|
|
11761
|
-
return h.disabled && !this.alwaysOpen ? (Be.info("Bot is disabled until settings are loaded"), null) :
|
|
11884
|
+
return h.disabled && !this.alwaysOpen ? (Be.info("Bot is disabled until settings are loaded"), null) : p`
|
|
11762
11885
|
<div class="cb-wrapper${h.open ? " cb-open" : ""}" part="wrapper${h.open ? " open" : ""}" exportparts="new-conversation-wrapper new-conversation-button wrapper${h.open ? " open" : ""}">
|
|
11763
11886
|
<cb-header title="${this.name}" exportparts="header, header-logo, header-title, header-close"></cb-header>
|
|
11764
11887
|
<cb-message-list
|
|
@@ -11769,12 +11892,12 @@ let D = class extends re {
|
|
|
11769
11892
|
></cb-message-list>
|
|
11770
11893
|
${W(
|
|
11771
11894
|
h.showNewConversation,
|
|
11772
|
-
() =>
|
|
11895
|
+
() => p`
|
|
11773
11896
|
<div class="cb-new-conversation-wrapper" part="new-conversation-wrapper">
|
|
11774
11897
|
<button type="button" class="card-btn info" part="new-conversation-button" @click=${this.clearConversation}>Start New Conversation</button>
|
|
11775
11898
|
</div>
|
|
11776
11899
|
`,
|
|
11777
|
-
() =>
|
|
11900
|
+
() => p``
|
|
11778
11901
|
)}
|
|
11779
11902
|
<cb-audio-controls exportparts="audio-controls-wrapper, audio-controls, audio-mute-button, audio-unmute-button, audio-end-button, audio-controls-viz"></cb-audio-controls>
|
|
11780
11903
|
${this.renderUserInput()} ${this.renderFeedbackDialog()}
|
|
@@ -11783,13 +11906,13 @@ let D = class extends re {
|
|
|
11783
11906
|
`;
|
|
11784
11907
|
}
|
|
11785
11908
|
renderFeedbackDialog() {
|
|
11786
|
-
return
|
|
11909
|
+
return p`<cb-dialog-feedback></cb-dialog-feedback>`;
|
|
11787
11910
|
}
|
|
11788
11911
|
_dialogCancelHandler() {
|
|
11789
11912
|
console.log("Feedback dialog cancelled"), h.feedback = !1;
|
|
11790
11913
|
}
|
|
11791
11914
|
renderUserInput() {
|
|
11792
|
-
return h.form || h.disabled && this.alwaysOpen ? null : h.setting.enableAudio ?
|
|
11915
|
+
return h.form || h.disabled && this.alwaysOpen ? null : h.setting.enableAudio ? p`
|
|
11793
11916
|
<cb-user-input-mm
|
|
11794
11917
|
part="user-input-control"
|
|
11795
11918
|
?loading=${h.connecting}
|
|
@@ -11797,7 +11920,7 @@ let D = class extends re {
|
|
|
11797
11920
|
?enable-file-upload=${h.setting.uploadImages && h.connected}
|
|
11798
11921
|
?enable-audio=${h.setting.enableAudio && h.connected}
|
|
11799
11922
|
exportparts="user-input-control,user-input, user-input-wrapper, user-input-inner, user-input-base, upload-button, control-button, user-input-textarea, user-input-buttons-wrapper, user-input-send-icon, user-input-attach-icon"
|
|
11800
|
-
></cb-user-input-mm>` :
|
|
11923
|
+
></cb-user-input-mm>` : p`
|
|
11801
11924
|
<cb-user-input
|
|
11802
11925
|
part="user-input-control"
|
|
11803
11926
|
?loading=${h.connecting}
|
|
@@ -11840,7 +11963,7 @@ let D = class extends re {
|
|
|
11840
11963
|
Be.info("disconnectedCallback"), super.disconnectedCallback(), this.detachViewportListener(), window.removeEventListener("c7o:bot:stateEvent", this.handleStateEvent), window.removeEventListener("message:send", this.handleAddMessage), window.removeEventListener("chatbot:toggle", this.handleToggleEvent), window.removeEventListener("form:submit", this.handleFormSubmitEvent), window.removeEventListener("message:send:file", this._uploadFileHandler), window.removeEventListener("audio:toggle", this._audioToggleHandler), this.detachLifecycleListeners();
|
|
11841
11964
|
}
|
|
11842
11965
|
attachLifecycleListeners() {
|
|
11843
|
-
this.lifecycleListenersAttached ||
|
|
11966
|
+
this.lifecycleListenersAttached || Gr() && (document.addEventListener("visibilitychange", this.handleVisibilityChange), window.addEventListener("pageshow", this.handlePageShow), window.addEventListener("focus", this.handleWindowFocus), window.addEventListener("online", this.handleWindowOnline), this.lifecycleListenersAttached = !0);
|
|
11844
11967
|
}
|
|
11845
11968
|
detachLifecycleListeners() {
|
|
11846
11969
|
this.lifecycleListenersAttached && (document.removeEventListener("visibilitychange", this.handleVisibilityChange), window.removeEventListener("pageshow", this.handlePageShow), window.removeEventListener("focus", this.handleWindowFocus), window.removeEventListener("online", this.handleWindowOnline), this.lifecycleListenersAttached = !1);
|
|
@@ -12053,7 +12176,7 @@ let D = class extends re {
|
|
|
12053
12176
|
this._viewportRafId && (cancelAnimationFrame(this._viewportRafId), this._viewportRafId = 0), this._viewportResizeHandler && window.visualViewport && (window.visualViewport.removeEventListener("resize", this._viewportResizeHandler), window.visualViewport.removeEventListener("scroll", this._viewportResizeHandler)), this._viewportResizeHandler = null, this.style.removeProperty("--c7o-vv-height"), this.style.removeProperty("--c7o-vv-offset");
|
|
12054
12177
|
}
|
|
12055
12178
|
};
|
|
12056
|
-
D.styles = [
|
|
12179
|
+
D.styles = [Zi, ai];
|
|
12057
12180
|
H([
|
|
12058
12181
|
x({ type: Boolean, attribute: "display-license" })
|
|
12059
12182
|
], D.prototype, "displayLicense", 2);
|