@enegelai/bot-widget 1.16.4 → 1.16.6
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 +453 -429
- package/dist/index.es.js +812 -735
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { css as J, LitElement as Fe, html as u, nothing as Ae, svg as
|
|
2
|
-
import { property as x, customElement as
|
|
1
|
+
import { css as J, LitElement as Fe, html as u, nothing as Ae, svg as pe } from "lit";
|
|
2
|
+
import { property as x, customElement as Z, query as xe, state as Ha, queryAll as Va, eventOptions as sa } from "lit/decorators.js";
|
|
3
3
|
import { when as W } from "lit/directives/when.js";
|
|
4
|
-
import { unsafeHTML as
|
|
5
|
-
import { registerIconLibrary as
|
|
4
|
+
import { unsafeHTML as G } from "lit-html/directives/unsafe-html.js";
|
|
5
|
+
import { registerIconLibrary as Bi } 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";
|
|
@@ -22,30 +22,30 @@ import "@shoelace-style/shoelace/dist/components/alert/alert.js";
|
|
|
22
22
|
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
|
-
import { until as
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
25
|
+
import { until as Pt } from "lit-html/directives/until.js";
|
|
26
|
+
import qi from "markdown-it";
|
|
27
|
+
import Di from "markdown-it-link-attributes";
|
|
28
|
+
import Ut 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
|
|
31
|
+
import { createRef as Fi, ref as At } from "lit/directives/ref.js";
|
|
32
32
|
function Na(a) {
|
|
33
33
|
return typeof a == "function" ? a() : a;
|
|
34
34
|
}
|
|
35
|
-
const
|
|
35
|
+
const Ht = class Ht extends Event {
|
|
36
36
|
/**
|
|
37
37
|
* @param {string} key of the state that has changed
|
|
38
38
|
* @param {unknown} value for the changed key
|
|
39
39
|
*/
|
|
40
40
|
constructor(e, t, i) {
|
|
41
|
-
super(
|
|
41
|
+
super(Ht.eventName, {
|
|
42
42
|
cancelable: !1
|
|
43
43
|
}), this.key = e, this.value = t, this.state = i;
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
|
|
47
|
-
let at =
|
|
48
|
-
const
|
|
46
|
+
Ht.eventName = "lit-state-changed";
|
|
47
|
+
let at = Ht;
|
|
48
|
+
const ji = (a, e) => e !== a && (e === e || a === a), ha = class ha extends EventTarget {
|
|
49
49
|
static initPropertyMap() {
|
|
50
50
|
this.propertyMap || (this.propertyMap = /* @__PURE__ */ new Map());
|
|
51
51
|
}
|
|
@@ -78,7 +78,7 @@ const Fi = (a, e) => e !== a && (e === e || a === a), ha = class ha 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 || ji;
|
|
82
82
|
return {
|
|
83
83
|
get() {
|
|
84
84
|
return this[t];
|
|
@@ -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 Hi(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,18 +156,18 @@ function ji(a, e) {
|
|
|
156
156
|
return a;
|
|
157
157
|
}
|
|
158
158
|
new URL(location.href);
|
|
159
|
-
const
|
|
159
|
+
const Vi = {
|
|
160
160
|
prefix: "_ls"
|
|
161
161
|
};
|
|
162
162
|
function ce(a) {
|
|
163
|
-
return a = { ...
|
|
163
|
+
return a = { ...Vi, ...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 = () => Hi(localStorage.getItem(s), f) ?? Na(w), r.propertyMap.set(t, { ...o, ...a });
|
|
171
171
|
}
|
|
172
172
|
const p = i?.set, k = {
|
|
173
173
|
...i,
|
|
@@ -181,12 +181,12 @@ function ce(a) {
|
|
|
181
181
|
function Ua(a) {
|
|
182
182
|
return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
|
|
183
183
|
}
|
|
184
|
-
var
|
|
185
|
-
function
|
|
184
|
+
var Lt = { exports: {} }, Ni = Lt.exports, ka;
|
|
185
|
+
function Ui() {
|
|
186
186
|
return ka || (ka = 1, (function(a) {
|
|
187
187
|
(function(e, t) {
|
|
188
188
|
a.exports ? a.exports = t() : e.log = t();
|
|
189
|
-
})(
|
|
189
|
+
})(Ni, 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",
|
|
@@ -230,7 +230,7 @@ function Ni() {
|
|
|
230
230
|
return v(M) || w.apply(this, arguments);
|
|
231
231
|
}
|
|
232
232
|
function P(M, L) {
|
|
233
|
-
var C = this,
|
|
233
|
+
var C = this, K, U, X, te = "loglevel";
|
|
234
234
|
typeof M == "string" ? te += ":" + M : typeof M == "symbol" && (te = void 0);
|
|
235
235
|
function He(j) {
|
|
236
236
|
var V = (s[j] || "silent").toUpperCase();
|
|
@@ -276,7 +276,7 @@ function Ni() {
|
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
|
-
function
|
|
279
|
+
function ge(j) {
|
|
280
280
|
var V = j;
|
|
281
281
|
if (typeof V == "string" && C.levels[V.toUpperCase()] !== void 0 && (V = C.levels[V.toUpperCase()]), typeof V == "number" && V >= 0 && V <= C.levels.SILENT)
|
|
282
282
|
return V;
|
|
@@ -290,26 +290,26 @@ function Ni() {
|
|
|
290
290
|
ERROR: 4,
|
|
291
291
|
SILENT: 5
|
|
292
292
|
}, C.methodFactory = L || _, C.getLevel = function() {
|
|
293
|
-
return
|
|
293
|
+
return X ?? U ?? K;
|
|
294
294
|
}, C.setLevel = function(j, V) {
|
|
295
|
-
return
|
|
295
|
+
return X = ge(j), V !== !1 && He(X), k.call(C);
|
|
296
296
|
}, C.setDefaultLevel = function(j) {
|
|
297
|
-
U =
|
|
297
|
+
U = ge(j), ae() || C.setLevel(j, !1);
|
|
298
298
|
}, C.resetLevel = function() {
|
|
299
|
-
|
|
299
|
+
X = null, he(), k.call(C);
|
|
300
300
|
}, C.enableAll = function(j) {
|
|
301
301
|
C.setLevel(C.levels.TRACE, j);
|
|
302
302
|
}, C.disableAll = function(j) {
|
|
303
303
|
C.setLevel(C.levels.SILENT, j);
|
|
304
304
|
}, C.rebuild = function() {
|
|
305
|
-
if (o !== C && (
|
|
305
|
+
if (o !== C && (K = ge(o.getLevel())), k.call(C), o === C)
|
|
306
306
|
for (var j in r)
|
|
307
307
|
r[j].rebuild();
|
|
308
|
-
},
|
|
308
|
+
}, K = ge(
|
|
309
309
|
o ? o.getLevel() : "WARN"
|
|
310
310
|
);
|
|
311
311
|
var F = ae();
|
|
312
|
-
F != null && (
|
|
312
|
+
F != null && (X = ge(F)), k.call(C);
|
|
313
313
|
}
|
|
314
314
|
o = new P(), o.getLogger = function(L) {
|
|
315
315
|
if (typeof L != "symbol" && typeof L != "string" || L === "")
|
|
@@ -320,17 +320,17 @@ function Ni() {
|
|
|
320
320
|
o.methodFactory
|
|
321
321
|
)), C;
|
|
322
322
|
};
|
|
323
|
-
var
|
|
323
|
+
var E = typeof window !== t ? window.log : void 0;
|
|
324
324
|
return o.noConflict = function() {
|
|
325
|
-
return typeof window !== t && window.log === o && (window.log =
|
|
325
|
+
return typeof window !== t && window.log === o && (window.log = E), o;
|
|
326
326
|
}, o.getLoggers = function() {
|
|
327
327
|
return r;
|
|
328
328
|
}, o.default = o, o;
|
|
329
329
|
});
|
|
330
|
-
})(
|
|
330
|
+
})(Lt)), Lt.exports;
|
|
331
331
|
}
|
|
332
|
-
var
|
|
333
|
-
const Je = /* @__PURE__ */ Ua(
|
|
332
|
+
var Wi = Ui();
|
|
333
|
+
const Je = /* @__PURE__ */ Ua(Wi), Gi = J`
|
|
334
334
|
:host {
|
|
335
335
|
--enegelai-bot-width: 420px;
|
|
336
336
|
--enegelai-bot-base-font-size: 16px;
|
|
@@ -663,17 +663,17 @@ const Je = /* @__PURE__ */ Ua(Ui), Wi = J`
|
|
|
663
663
|
color: white;
|
|
664
664
|
}
|
|
665
665
|
`;
|
|
666
|
-
var
|
|
667
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
666
|
+
var Xi = Object.defineProperty, Yi = Object.getOwnPropertyDescriptor, na = (a, e, t, i) => {
|
|
667
|
+
for (var s = i > 1 ? void 0 : i ? Yi(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
668
668
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
669
|
-
return i && s &&
|
|
669
|
+
return i && s && Xi(e, t, s), s;
|
|
670
670
|
};
|
|
671
671
|
let ut = class extends Fe {
|
|
672
672
|
constructor() {
|
|
673
673
|
super(...arguments), this.color = "primary", this.svg = "";
|
|
674
674
|
}
|
|
675
675
|
render() {
|
|
676
|
-
return u`<span class="cb-icon" part="base">${
|
|
676
|
+
return u`<span class="cb-icon" part="base">${G(this.svg)}</span>`;
|
|
677
677
|
}
|
|
678
678
|
};
|
|
679
679
|
ut.styles = Wa;
|
|
@@ -684,9 +684,9 @@ na([
|
|
|
684
684
|
x({ type: String })
|
|
685
685
|
], ut.prototype, "svg", 2);
|
|
686
686
|
ut = na([
|
|
687
|
-
|
|
687
|
+
Z("cb-icon")
|
|
688
688
|
], ut);
|
|
689
|
-
let
|
|
689
|
+
let Ji = (a) => crypto.getRandomValues(new Uint8Array(a)), Zi = (a, e, t) => {
|
|
690
690
|
let i = (2 << Math.log2(a.length - 1)) - 1, s = -~(1.6 * i * e / a.length);
|
|
691
691
|
return (r = e) => {
|
|
692
692
|
let o = "";
|
|
@@ -696,12 +696,12 @@ let Yi = (a) => crypto.getRandomValues(new Uint8Array(a)), Ji = (a, e, t) => {
|
|
|
696
696
|
if (o += a[f[p] & i] || "", o.length >= r) return o;
|
|
697
697
|
}
|
|
698
698
|
};
|
|
699
|
-
}, Ki = (a, e = 21) =>
|
|
700
|
-
const
|
|
699
|
+
}, Ki = (a, e = 21) => Zi(a, e | 0, Ji);
|
|
700
|
+
const Qi = Ki("1234567890abcdefghijklmnopqrstuvwxyz", 10);
|
|
701
701
|
function fe(a = 10) {
|
|
702
|
-
return
|
|
702
|
+
return Qi(a);
|
|
703
703
|
}
|
|
704
|
-
function
|
|
704
|
+
function es(a) {
|
|
705
705
|
return new Promise((e, t) => {
|
|
706
706
|
try {
|
|
707
707
|
navigator.clipboard.writeText(a).then(() => {
|
|
@@ -712,19 +712,19 @@ function Qi(a) {
|
|
|
712
712
|
}
|
|
713
713
|
});
|
|
714
714
|
}
|
|
715
|
-
function Ga(a = !0) {
|
|
716
|
-
return new Promise((
|
|
717
|
-
const
|
|
718
|
-
|
|
719
|
-
const
|
|
720
|
-
|
|
721
|
-
}),
|
|
715
|
+
function Ga(a = !0, e = null) {
|
|
716
|
+
return new Promise((t) => {
|
|
717
|
+
const i = document.createElement("input");
|
|
718
|
+
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", () => {
|
|
719
|
+
const s = Array.prototype.slice.call(i.files);
|
|
720
|
+
t(s);
|
|
721
|
+
}), i.click();
|
|
722
722
|
});
|
|
723
723
|
}
|
|
724
724
|
const se = Je.noConflict();
|
|
725
725
|
se.setLevel("info");
|
|
726
726
|
const _a = 3e4;
|
|
727
|
-
class
|
|
727
|
+
class ts {
|
|
728
728
|
constructor(e = {}) {
|
|
729
729
|
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, se.info(`WSC: Created, url: ${this.url}`);
|
|
730
730
|
}
|
|
@@ -885,7 +885,7 @@ class es {
|
|
|
885
885
|
});
|
|
886
886
|
}*/
|
|
887
887
|
}
|
|
888
|
-
class
|
|
888
|
+
class as {
|
|
889
889
|
constructor(e = {}) {
|
|
890
890
|
this.name = e.name || "EventEmitter", this.events = {};
|
|
891
891
|
}
|
|
@@ -923,7 +923,7 @@ class ts {
|
|
|
923
923
|
}
|
|
924
924
|
}
|
|
925
925
|
}
|
|
926
|
-
class
|
|
926
|
+
class Ze {
|
|
927
927
|
/**
|
|
928
928
|
* Converts Float32Array of amplitude data to ArrayBuffer in Int16Array format
|
|
929
929
|
* @param {Float32Array} float32Array
|
|
@@ -1018,7 +1018,7 @@ class Ke {
|
|
|
1018
1018
|
};
|
|
1019
1019
|
}
|
|
1020
1020
|
}
|
|
1021
|
-
globalThis.WavPacker =
|
|
1021
|
+
globalThis.WavPacker = Ze;
|
|
1022
1022
|
const Sa = [
|
|
1023
1023
|
4186.01,
|
|
1024
1024
|
4434.92,
|
|
@@ -1032,7 +1032,7 @@ const Sa = [
|
|
|
1032
1032
|
7040,
|
|
1033
1033
|
7458.62,
|
|
1034
1034
|
7902.13
|
|
1035
|
-
],
|
|
1035
|
+
], is = [
|
|
1036
1036
|
"C",
|
|
1037
1037
|
"C#",
|
|
1038
1038
|
"D",
|
|
@@ -1049,9 +1049,9 @@ const Sa = [
|
|
|
1049
1049
|
for (let a = 1; a <= 8; a++)
|
|
1050
1050
|
for (let e = 0; e < Sa.length; e++) {
|
|
1051
1051
|
const t = Sa[e];
|
|
1052
|
-
We.push(t / Math.pow(2, 8 - a)), ra.push(
|
|
1052
|
+
We.push(t / Math.pow(2, 8 - a)), ra.push(is[e] + a);
|
|
1053
1053
|
}
|
|
1054
|
-
const
|
|
1054
|
+
const zt = [32, 2e3], Ca = We.filter((a, e) => We[e] > zt[0] && We[e] < zt[1]), ss = ra.filter((a, e) => We[e] > zt[0] && We[e] < zt[1]);
|
|
1055
1055
|
class lt {
|
|
1056
1056
|
/**
|
|
1057
1057
|
* Retrieves frequency domain data from an AnalyserNode adjusted to a decibel range
|
|
@@ -1069,21 +1069,21 @@ class lt {
|
|
|
1069
1069
|
const f = t / 2, p = 1 / i.length * f;
|
|
1070
1070
|
let v, k, w;
|
|
1071
1071
|
if (s === "music" || s === "voice") {
|
|
1072
|
-
const
|
|
1072
|
+
const E = s === "voice" ? Ca : We, M = Array(E.length).fill(r);
|
|
1073
1073
|
for (let L = 0; L < i.length; L++) {
|
|
1074
|
-
const C = L * p,
|
|
1075
|
-
for (let U =
|
|
1076
|
-
if (C >
|
|
1077
|
-
M[U] = Math.max(M[U],
|
|
1074
|
+
const C = L * p, K = i[L];
|
|
1075
|
+
for (let U = E.length - 1; U >= 0; U--)
|
|
1076
|
+
if (C > E[U]) {
|
|
1077
|
+
M[U] = Math.max(M[U], K);
|
|
1078
1078
|
break;
|
|
1079
1079
|
}
|
|
1080
1080
|
}
|
|
1081
|
-
v = M, k = s === "voice" ? Ca : We, w = s === "voice" ?
|
|
1081
|
+
v = M, k = s === "voice" ? Ca : We, w = s === "voice" ? ss : ra;
|
|
1082
1082
|
} else
|
|
1083
|
-
v = Array.from(i), k = v.map((
|
|
1084
|
-
const _ = v.map((
|
|
1083
|
+
v = Array.from(i), k = v.map((E, M) => p * M), w = k.map((E) => `${E.toFixed(2)} Hz`);
|
|
1084
|
+
const _ = v.map((E) => Math.max(
|
|
1085
1085
|
0,
|
|
1086
|
-
Math.min((
|
|
1086
|
+
Math.min((E - r) / (o - r), 1)
|
|
1087
1087
|
));
|
|
1088
1088
|
return {
|
|
1089
1089
|
values: new Float32Array(_),
|
|
@@ -1154,7 +1154,7 @@ class lt {
|
|
|
1154
1154
|
}
|
|
1155
1155
|
}
|
|
1156
1156
|
globalThis.AudioAnalysis = lt;
|
|
1157
|
-
const
|
|
1157
|
+
const ns = `
|
|
1158
1158
|
class StreamProcessor extends AudioWorkletProcessor {
|
|
1159
1159
|
constructor() {
|
|
1160
1160
|
super();
|
|
@@ -1243,17 +1243,17 @@ class StreamProcessor extends AudioWorkletProcessor {
|
|
|
1243
1243
|
}
|
|
1244
1244
|
|
|
1245
1245
|
registerProcessor('stream_processor', StreamProcessor);
|
|
1246
|
-
`,
|
|
1246
|
+
`, rs = new Blob([ns], {
|
|
1247
1247
|
type: "application/javascript"
|
|
1248
|
-
}),
|
|
1249
|
-
class
|
|
1248
|
+
}), os = URL.createObjectURL(rs), cs = os;
|
|
1249
|
+
class ls {
|
|
1250
1250
|
/**
|
|
1251
1251
|
* Creates a new WavStreamPlayer instance
|
|
1252
1252
|
* @param {{sampleRate?: number}} options
|
|
1253
1253
|
* @returns {WavStreamPlayer}
|
|
1254
1254
|
*/
|
|
1255
1255
|
constructor({ sampleRate: e = 44100, onPlaybackEnded: t = null } = {}) {
|
|
1256
|
-
this.scriptSrc =
|
|
1256
|
+
this.scriptSrc = cs, this.sampleRate = e, this.context = null, this.stream = null, this.analyser = null, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this.onPlaybackEnded = t && typeof t == "function" ? t : null;
|
|
1257
1257
|
}
|
|
1258
1258
|
/**
|
|
1259
1259
|
* Connects the audio context and enables output to speakers
|
|
@@ -1348,8 +1348,8 @@ class cs {
|
|
|
1348
1348
|
return this.getTrackSampleOffset(!0);
|
|
1349
1349
|
}
|
|
1350
1350
|
}
|
|
1351
|
-
globalThis.WavStreamPlayer =
|
|
1352
|
-
const
|
|
1351
|
+
globalThis.WavStreamPlayer = ls;
|
|
1352
|
+
const ds = URL.createObjectURL(
|
|
1353
1353
|
new Blob([`
|
|
1354
1354
|
class UpsampleStreamPCM extends AudioWorkletProcessor {
|
|
1355
1355
|
constructor(options) {
|
|
@@ -1546,10 +1546,10 @@ class Xa {
|
|
|
1546
1546
|
this.inputSampleRate = e, this.onPlaybackEnded = typeof t == "function" ? t : null, this.debug = !!i;
|
|
1547
1547
|
const p = navigator.userAgent || "", v = /iP(hone|ad|od)/.test(p), k = /CriOS/.test(p), w = /FxiOS/.test(p), _ = /EdgiOS/.test(p), P = /Safari/.test(p) && !/Chrome|Chromium|Edg/.test(p);
|
|
1548
1548
|
this._isSafariMobile = v && P && !k && !w && !_;
|
|
1549
|
-
const
|
|
1550
|
-
const
|
|
1551
|
-
return /iPad/.test(p) ||
|
|
1552
|
-
})(), C =
|
|
1549
|
+
const E = !!(navigator.userAgentData && typeof navigator.userAgentData.mobile == "boolean" && navigator.userAgentData.mobile), M = /Android|iPhone|iPod|Mobile/.test(p), L = (() => {
|
|
1550
|
+
const K = navigator.platform || "";
|
|
1551
|
+
return /iPad/.test(p) || K === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
1552
|
+
})(), C = E || M || L;
|
|
1553
1553
|
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);
|
|
1554
1554
|
}
|
|
1555
1555
|
_log(...e) {
|
|
@@ -1566,7 +1566,7 @@ class Xa {
|
|
|
1566
1566
|
/** Build the WebAudio graph. Always audible via direct path; loopback ref is optional and non-critical. */
|
|
1567
1567
|
async connect() {
|
|
1568
1568
|
if (this.context) return !0;
|
|
1569
|
-
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(
|
|
1569
|
+
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(ds), this._worklet = new AudioWorkletNode(this.context, "upsample-stream-pcm", {
|
|
1570
1570
|
processorOptions: {
|
|
1571
1571
|
sourceSampleRate: this.inputSampleRate,
|
|
1572
1572
|
prerollSrc: Math.round(this.inputSampleRate * 0.02)
|
|
@@ -1695,7 +1695,7 @@ class Xa {
|
|
|
1695
1695
|
}
|
|
1696
1696
|
}
|
|
1697
1697
|
globalThis.WavStreamPlayerV2 = Xa;
|
|
1698
|
-
const
|
|
1698
|
+
const fs = `
|
|
1699
1699
|
class AudioProcessor extends AudioWorkletProcessor {
|
|
1700
1700
|
|
|
1701
1701
|
constructor() {
|
|
@@ -1902,17 +1902,17 @@ class AudioProcessor extends AudioWorkletProcessor {
|
|
|
1902
1902
|
}
|
|
1903
1903
|
|
|
1904
1904
|
registerProcessor('audio_processor', AudioProcessor);
|
|
1905
|
-
`,
|
|
1905
|
+
`, hs = new Blob([fs], {
|
|
1906
1906
|
type: "application/javascript"
|
|
1907
|
-
}),
|
|
1908
|
-
class
|
|
1907
|
+
}), bs = URL.createObjectURL(hs), us = bs;
|
|
1908
|
+
class ps {
|
|
1909
1909
|
/**
|
|
1910
1910
|
* Create a new WavRecorder instance
|
|
1911
1911
|
* @param {{sampleRate?: number, outputToSpeakers?: boolean, debug?: boolean}} [options]
|
|
1912
1912
|
* @returns {WavRecorder}
|
|
1913
1913
|
*/
|
|
1914
1914
|
constructor({ sampleRate: e = 44100, outputToSpeakers: t = !1, debug: i = !1 } = {}) {
|
|
1915
|
-
this.scriptSrc =
|
|
1915
|
+
this.scriptSrc = us, 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 = () => {
|
|
1916
1916
|
}, this._chunkProcessorSize = void 0, this._chunkProcessorBuffer = {
|
|
1917
1917
|
raw: new ArrayBuffer(0),
|
|
1918
1918
|
mono: new ArrayBuffer(0)
|
|
@@ -1952,13 +1952,13 @@ class us {
|
|
|
1952
1952
|
throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');
|
|
1953
1953
|
if (i < 3e3)
|
|
1954
1954
|
throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');
|
|
1955
|
-
w || (w =
|
|
1955
|
+
w || (w = Ze.floatTo16BitPCM(k));
|
|
1956
1956
|
const _ = {
|
|
1957
1957
|
bitsPerSample: 16,
|
|
1958
1958
|
channels: [k],
|
|
1959
1959
|
data: w
|
|
1960
1960
|
};
|
|
1961
|
-
o = new
|
|
1961
|
+
o = new Ze().pack(i, _).blob, r = await o.arrayBuffer();
|
|
1962
1962
|
}
|
|
1963
1963
|
const f = await s.decodeAudioData(r), p = f.getChannelData(0), v = URL.createObjectURL(o);
|
|
1964
1964
|
return {
|
|
@@ -2131,8 +2131,8 @@ class us {
|
|
|
2131
2131
|
if (this._chunkProcessorSize) {
|
|
2132
2132
|
const w = this._chunkProcessorBuffer;
|
|
2133
2133
|
this._chunkProcessorBuffer = {
|
|
2134
|
-
raw:
|
|
2135
|
-
mono:
|
|
2134
|
+
raw: Ze.mergeBuffers(w.raw, k.raw),
|
|
2135
|
+
mono: Ze.mergeBuffers(w.mono, k.mono)
|
|
2136
2136
|
}, this._chunkProcessorBuffer.mono.byteLength >= this._chunkProcessorSize && (this._chunkProcessor(this._chunkProcessorBuffer), this._chunkProcessorBuffer = {
|
|
2137
2137
|
raw: new ArrayBuffer(0),
|
|
2138
2138
|
mono: new ArrayBuffer(0)
|
|
@@ -2218,7 +2218,7 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2218
2218
|
throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");
|
|
2219
2219
|
this.log("Exporting ...");
|
|
2220
2220
|
const t = await this._event("export");
|
|
2221
|
-
return new
|
|
2221
|
+
return new Ze().pack(this.sampleRate, t.audio);
|
|
2222
2222
|
}
|
|
2223
2223
|
/**
|
|
2224
2224
|
* Ends the current recording session and saves the result
|
|
@@ -2230,7 +2230,7 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2230
2230
|
const e = this.processor;
|
|
2231
2231
|
this.log("Stopping ..."), await this._event("stop"), this.recording = !1, this.stream.getTracks().forEach((o) => o.stop()), this.log("Exporting ...");
|
|
2232
2232
|
const i = await this._event("export", {}, e);
|
|
2233
|
-
return this.processor.disconnect(), this.source.disconnect(), this.node.disconnect(), this.analyser.disconnect(), this.stream = null, this.processor = null, this.source = null, this.node = null, new
|
|
2233
|
+
return this.processor.disconnect(), this.source.disconnect(), this.node.disconnect(), this.analyser.disconnect(), this.stream = null, this.processor = null, this.source = null, this.node = null, new Ze().pack(this.sampleRate, i.audio);
|
|
2234
2234
|
}
|
|
2235
2235
|
/**
|
|
2236
2236
|
* Performs a full cleanup of WavRecorder instance
|
|
@@ -2241,8 +2241,8 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2241
2241
|
return this.listenForDeviceChange(null), this.processor && await this.end(), !0;
|
|
2242
2242
|
}
|
|
2243
2243
|
}
|
|
2244
|
-
globalThis.WavRecorder =
|
|
2245
|
-
const
|
|
2244
|
+
globalThis.WavRecorder = ps;
|
|
2245
|
+
const gs = URL.createObjectURL(
|
|
2246
2246
|
new Blob([`
|
|
2247
2247
|
class DownsampleRecorder extends AudioWorkletProcessor {
|
|
2248
2248
|
constructor(options) {
|
|
@@ -2463,7 +2463,7 @@ class ot {
|
|
|
2463
2463
|
echoCancellationType: this.captureInfo.trackSettings?.echoCancellationType ?? null
|
|
2464
2464
|
}, this._log("Granted track settings:", this.captureInfo.trackSettings), this.audioCtx = new (window.AudioContext || window.webkitAudioContext)({
|
|
2465
2465
|
latencyHint: "interactive"
|
|
2466
|
-
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(
|
|
2466
|
+
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(gs);
|
|
2467
2467
|
const s = Math.round(this.targetSampleRate * this.chunkMs / 1e3);
|
|
2468
2468
|
return this.node = new AudioWorkletNode(this.audioCtx, "downsample-recorder", {
|
|
2469
2469
|
processorOptions: {
|
|
@@ -2539,7 +2539,7 @@ class ot {
|
|
|
2539
2539
|
}
|
|
2540
2540
|
}
|
|
2541
2541
|
globalThis.WavRecorderV2 = ot;
|
|
2542
|
-
class
|
|
2542
|
+
class ms {
|
|
2543
2543
|
constructor(e = {}) {
|
|
2544
2544
|
this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor = Aa(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;
|
|
2545
2545
|
const t = Math.max(2, e.vadFastMs ?? 10), i = Math.max(t + 20, e.vadSlowMs ?? 250);
|
|
@@ -2579,19 +2579,19 @@ class gs {
|
|
|
2579
2579
|
const i = new Int16Array(t);
|
|
2580
2580
|
let s = this.gain, r = this._step, o = this.rampRemain, f = this.vadFast, p = this.vadSlow, v = this._speechCount, k = this._hangRemain, w = this._speaking;
|
|
2581
2581
|
const _ = this._eps, P = this.vadRatio;
|
|
2582
|
-
for (let
|
|
2582
|
+
for (let E = 0; E < t; E++) {
|
|
2583
2583
|
this.guardRemain > 0 && this.guardRemain--;
|
|
2584
|
-
const M = e[
|
|
2584
|
+
const M = e[E] / 32768, L = M * M;
|
|
2585
2585
|
f = f + (1 - this.alphaFast) * (L - f), p = p + (1 - this.alphaSlow) * (L - p), this.vadEnabled && (f / (p + _) >= 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);
|
|
2586
|
-
let C = 1,
|
|
2586
|
+
let C = 1, K = 0, U = !1;
|
|
2587
2587
|
if (this.duckActive) {
|
|
2588
2588
|
const te = this.guardRemain > 0;
|
|
2589
|
-
te && this._shieldActive && !w ? (U = this._shieldHardMute, C = this._shieldHardMute ? 0 : this._shieldFloor,
|
|
2589
|
+
te && this._shieldActive && !w ? (U = this._shieldHardMute, C = this._shieldHardMute ? 0 : this._shieldFloor, K = this.attackSamples, this.guardRemain === 0 && (this._shieldActive = !1, this._shieldHardMute = !1)) : w ? (C = 1, K = this.escapeAttackSamples) : te ? (C = this.floor, K = this.attackSamples) : (C = 1, K = this.releaseSamples);
|
|
2590
2590
|
} else
|
|
2591
|
-
C = 1,
|
|
2592
|
-
Math.abs(C - this.target) > 1e-4 && (this.target = C, o =
|
|
2593
|
-
let
|
|
2594
|
-
U && !w ?
|
|
2591
|
+
C = 1, K = this.releaseSamples;
|
|
2592
|
+
Math.abs(C - this.target) > 1e-4 && (this.target = C, o = K, r = o > 0 ? (C - s) / o : 0, o === 0 && (s = C)), o > 0 && (s += r, o--, o === 0 && (s = this.target, r = 0));
|
|
2593
|
+
let X;
|
|
2594
|
+
U && !w ? X = 0 : (X = e[E] * s, X > 32767 ? X = 32767 : X < -32768 && (X = -32768)), i[E] = X | 0;
|
|
2595
2595
|
}
|
|
2596
2596
|
return this.gain = s, this._step = r, this.rampRemain = o, this.vadFast = f, this.vadSlow = p, this._speechCount = v, this._hangRemain = k, this._speaking = w, i;
|
|
2597
2597
|
}
|
|
@@ -2612,7 +2612,7 @@ function Ta(a, e) {
|
|
|
2612
2612
|
const t = Math.max(1, a * e / 1e3);
|
|
2613
2613
|
return Math.exp(-1 / t);
|
|
2614
2614
|
}
|
|
2615
|
-
class
|
|
2615
|
+
class ys {
|
|
2616
2616
|
/**
|
|
2617
2617
|
* @param {object} opts
|
|
2618
2618
|
* @param {number} opts.sampleRate - Hz of your PCM (e.g., 24000)
|
|
@@ -2688,24 +2688,24 @@ class ms {
|
|
|
2688
2688
|
if (k <= 0)
|
|
2689
2689
|
return this._float32ToInt16(t);
|
|
2690
2690
|
const w = this.preEmphasis > 0, _ = w ? this._preEmphasize(r, this.preEmphasis, "mic") : r, P = w ? this._preEmphasize(p, this.preEmphasis, "pb") : p;
|
|
2691
|
-
let
|
|
2691
|
+
let E = 0;
|
|
2692
2692
|
for (let ae = 0; ae < o; ae++) {
|
|
2693
2693
|
const he = _[ae];
|
|
2694
|
-
|
|
2694
|
+
E += he * he;
|
|
2695
2695
|
}
|
|
2696
|
-
|
|
2697
|
-
const M = this.sr / this.ds, L = (this.baseLatencySec + this.outputLatencySec) * 1e3 + this.latencyCompMs, C = Math.max(0, Math.round(L * M / 1e3)),
|
|
2698
|
-
let U = 0,
|
|
2699
|
-
C > 0 && (U = Math.max(0, Math.min(k, C -
|
|
2696
|
+
E = Math.sqrt(E) + 1e-12;
|
|
2697
|
+
const M = this.sr / this.ds, L = (this.baseLatencySec + this.outputLatencySec) * 1e3 + this.latencyCompMs, C = Math.max(0, Math.round(L * M / 1e3)), K = Math.max(1, Math.round(this.windowMs * M / 1e3));
|
|
2698
|
+
let U = 0, X = k;
|
|
2699
|
+
C > 0 && (U = Math.max(0, Math.min(k, C - K)), X = Math.max(U, Math.min(k, C + K)));
|
|
2700
2700
|
const te = Math.max(1, Math.floor(this.hop / this.ds));
|
|
2701
2701
|
let He = -1;
|
|
2702
|
-
for (let ae = U; ae <=
|
|
2703
|
-
let he = 0,
|
|
2702
|
+
for (let ae = U; ae <= X; ae += te) {
|
|
2703
|
+
let he = 0, ge = 0;
|
|
2704
2704
|
for (let V = 0; V < o; V++) {
|
|
2705
2705
|
const $e = _[V], Pe = P[ae + V];
|
|
2706
|
-
he += $e * Pe,
|
|
2706
|
+
he += $e * Pe, ge += Pe * Pe;
|
|
2707
2707
|
}
|
|
2708
|
-
const F =
|
|
2708
|
+
const F = E * (Math.sqrt(ge) + 1e-12), j = F > 0 ? he / F : 0;
|
|
2709
2709
|
if (j > He && (He = j), He > Math.min(0.98, this.threshold + 0.25)) break;
|
|
2710
2710
|
}
|
|
2711
2711
|
if (He >= this.threshold) {
|
|
@@ -2767,7 +2767,7 @@ class ms {
|
|
|
2767
2767
|
return o;
|
|
2768
2768
|
}
|
|
2769
2769
|
}
|
|
2770
|
-
class
|
|
2770
|
+
class vs {
|
|
2771
2771
|
/**
|
|
2772
2772
|
* @param {object} opts
|
|
2773
2773
|
* @param {number} opts.sampleRate - PCM sample rate (e.g., 24000)
|
|
@@ -2856,8 +2856,8 @@ class ys {
|
|
|
2856
2856
|
let p = -1;
|
|
2857
2857
|
for (let v = 0; v <= r; v += f) {
|
|
2858
2858
|
let k = 0, w = 0;
|
|
2859
|
-
for (let
|
|
2860
|
-
const M = t[
|
|
2859
|
+
for (let E = 0; E < i; E++) {
|
|
2860
|
+
const M = t[E], L = s[v + E];
|
|
2861
2861
|
k += M * L, w += L * L;
|
|
2862
2862
|
}
|
|
2863
2863
|
const _ = o * (Math.sqrt(w) + 1e-12), P = _ > 0 ? k / _ : 0;
|
|
@@ -2904,7 +2904,7 @@ class ys {
|
|
|
2904
2904
|
return o;
|
|
2905
2905
|
}
|
|
2906
2906
|
}
|
|
2907
|
-
class
|
|
2907
|
+
class ws {
|
|
2908
2908
|
/**
|
|
2909
2909
|
* @param {object} opts
|
|
2910
2910
|
* @param {number} opts.sampleRate - Mic PCM sample rate (e.g., 24000)
|
|
@@ -2949,7 +2949,7 @@ class vs {
|
|
|
2949
2949
|
}
|
|
2950
2950
|
const Ue = Je.noConflict();
|
|
2951
2951
|
Ue.setLevel("info");
|
|
2952
|
-
class pt extends
|
|
2952
|
+
class pt extends as {
|
|
2953
2953
|
constructor(e = {}) {
|
|
2954
2954
|
super({ name: "WebAudioProcessorV2" }), this.options = e, this.muted = !1, this.audioRecorder = new ot({
|
|
2955
2955
|
targetSampleRate: 24e3,
|
|
@@ -2961,14 +2961,14 @@ class pt extends ts {
|
|
|
2961
2961
|
primeMs: 200,
|
|
2962
2962
|
// keep or remove; it’s harmless
|
|
2963
2963
|
debug: !!e.debug
|
|
2964
|
-
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new
|
|
2964
|
+
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new ws({
|
|
2965
2965
|
sampleRate: 24e3,
|
|
2966
2966
|
windowMs: this.firstTurnDropMs,
|
|
2967
2967
|
partialPass: !0,
|
|
2968
2968
|
// pass remainder of crossing frame
|
|
2969
2969
|
hardDrop: !0
|
|
2970
2970
|
// set true if you prefer simpler "drop whole frame"
|
|
2971
|
-
}), this.ducker = new
|
|
2971
|
+
}), this.ducker = new ms({
|
|
2972
2972
|
sampleRate: 24e3,
|
|
2973
2973
|
floor: 0.12,
|
|
2974
2974
|
attackMs: 12,
|
|
@@ -2983,7 +2983,7 @@ class pt extends ts {
|
|
|
2983
2983
|
vadSlowMs: 250,
|
|
2984
2984
|
vadAttackMs: 18,
|
|
2985
2985
|
vadHangMs: 120
|
|
2986
|
-
}), this.mixMinus = new
|
|
2986
|
+
}), this.mixMinus = new ys({
|
|
2987
2987
|
sampleRate: 24e3,
|
|
2988
2988
|
bufferMs: 1e3,
|
|
2989
2989
|
threshold: 0.3,
|
|
@@ -2992,7 +2992,7 @@ class pt extends ts {
|
|
|
2992
2992
|
hop: 64,
|
|
2993
2993
|
downsampleFactor: 3,
|
|
2994
2994
|
minCorrLenMs: 15
|
|
2995
|
-
}), this.mixMinusSmooth = new
|
|
2995
|
+
}), this.mixMinusSmooth = new vs({
|
|
2996
2996
|
sampleRate: 24e3,
|
|
2997
2997
|
bufferMs: 800,
|
|
2998
2998
|
lowThresh: 0.25,
|
|
@@ -3167,6 +3167,220 @@ class pt extends ts {
|
|
|
3167
3167
|
}
|
|
3168
3168
|
}
|
|
3169
3169
|
globalThis.WebAudioProcessorV2 = pt;
|
|
3170
|
+
var xs = Object.defineProperty, ks = Object.getOwnPropertyDescriptor, st = (a, e, t, i) => {
|
|
3171
|
+
for (var s = i > 1 ? void 0 : i ? ks(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
3172
|
+
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
3173
|
+
return i && s && xs(e, t, s), s;
|
|
3174
|
+
};
|
|
3175
|
+
const Mt = "cb-toast-outlet", Ia = "cb-toast-outlet-style";
|
|
3176
|
+
function _s() {
|
|
3177
|
+
let a = document.getElementById(Mt);
|
|
3178
|
+
if (a || (a = document.createElement("div"), a.id = Mt, document.body.appendChild(a)), !document.getElementById(Ia)) {
|
|
3179
|
+
const e = document.createElement("style");
|
|
3180
|
+
e.id = Ia, e.textContent = `
|
|
3181
|
+
/* Global outlet that holds all toasts */
|
|
3182
|
+
#${Mt} {
|
|
3183
|
+
position: fixed;
|
|
3184
|
+
right: 40px;
|
|
3185
|
+
bottom: 55px;
|
|
3186
|
+
display: flex;
|
|
3187
|
+
flex-direction: column;
|
|
3188
|
+
gap: 10px;
|
|
3189
|
+
z-index: 2147483646; /* below very-top overlays if any */
|
|
3190
|
+
align-items: flex-end;
|
|
3191
|
+
pointer-events: none; /* clicks pass through except on toast itself */
|
|
3192
|
+
}
|
|
3193
|
+
@media (max-width: 600px) {
|
|
3194
|
+
#${Mt} {
|
|
3195
|
+
left: 8px;
|
|
3196
|
+
right: 8px;
|
|
3197
|
+
align-items: stretch; /* stretch toasts to full width on mobile */
|
|
3198
|
+
}
|
|
3199
|
+
}
|
|
3200
|
+
`, document.head.appendChild(e);
|
|
3201
|
+
}
|
|
3202
|
+
return a;
|
|
3203
|
+
}
|
|
3204
|
+
function Ya(a) {
|
|
3205
|
+
const e = _s(), t = document.createElement("cb-toast");
|
|
3206
|
+
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;
|
|
3207
|
+
}
|
|
3208
|
+
let qe = class extends Fe {
|
|
3209
|
+
constructor() {
|
|
3210
|
+
super(...arguments), this.message = "", this.variant = "success", this.duration = 3e3, this.closeable = !1, this.icon = "", this.ariaLive = "polite", this._open = !1, this._closing = !1, this._defaultIcons = {
|
|
3211
|
+
success: "✓",
|
|
3212
|
+
danger: "❌",
|
|
3213
|
+
warning: "⚠️",
|
|
3214
|
+
info: "ℹ️",
|
|
3215
|
+
neutral: "💬",
|
|
3216
|
+
primary: "⭐"
|
|
3217
|
+
};
|
|
3218
|
+
}
|
|
3219
|
+
connectedCallback() {
|
|
3220
|
+
super.connectedCallback(), queueMicrotask(() => this.open());
|
|
3221
|
+
}
|
|
3222
|
+
disconnectedCallback() {
|
|
3223
|
+
super.disconnectedCallback(), this._clearTimer();
|
|
3224
|
+
}
|
|
3225
|
+
render() {
|
|
3226
|
+
const a = ["toast", this.variant, this._open ? "open" : "", this._closing ? "closing" : ""].filter(Boolean).join(" "), e = this.icon || this._defaultIcons[this.variant] || this._defaultIcons.success;
|
|
3227
|
+
return u`
|
|
3228
|
+
<div
|
|
3229
|
+
class=${a}
|
|
3230
|
+
role="status"
|
|
3231
|
+
aria-live=${this.ariaLive}
|
|
3232
|
+
>
|
|
3233
|
+
${u`<span class="icon" aria-hidden="true">${this._renderIcon(e)}</span>`}
|
|
3234
|
+
<div class="msg">
|
|
3235
|
+
${this.message ? u`${this.message}` : u`<slot></slot>`}
|
|
3236
|
+
</div>
|
|
3237
|
+
${this.closeable ? u`<button class="close" @click=${this.close} aria-label="Close">×</button>` : Ae}
|
|
3238
|
+
</div>
|
|
3239
|
+
`;
|
|
3240
|
+
}
|
|
3241
|
+
/** Programmatic API */
|
|
3242
|
+
open() {
|
|
3243
|
+
this._open || (this._open = !0, this.requestUpdate(), this.duration > 0 && (this._timer = window.setTimeout(() => this.close(), this.duration)));
|
|
3244
|
+
}
|
|
3245
|
+
async close() {
|
|
3246
|
+
this._closing || (this._closing = !0, this.requestUpdate(), await new Promise((a) => setTimeout(() => a(), 200)), this.remove());
|
|
3247
|
+
}
|
|
3248
|
+
_clearTimer() {
|
|
3249
|
+
this._timer && (clearTimeout(this._timer), this._timer = void 0);
|
|
3250
|
+
}
|
|
3251
|
+
_renderIcon(a) {
|
|
3252
|
+
return a.trim().startsWith("<") ? u`${G(a)}` : a;
|
|
3253
|
+
}
|
|
3254
|
+
};
|
|
3255
|
+
qe.styles = J`
|
|
3256
|
+
:host {
|
|
3257
|
+
display: block;
|
|
3258
|
+
pointer-events: auto; /* receive pointer events within toast */
|
|
3259
|
+
contain: content;
|
|
3260
|
+
font-size: var(--enegelai-bot-base-font-size, 16px);
|
|
3261
|
+
font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
3262
|
+
}
|
|
3263
|
+
|
|
3264
|
+
.toast {
|
|
3265
|
+
--_bg: var(--sl-color-success-600, #2f9e44);
|
|
3266
|
+
--_fg: #fff;
|
|
3267
|
+
--_border: transparent;
|
|
3268
|
+
|
|
3269
|
+
display: grid;
|
|
3270
|
+
grid-template-columns: auto 1fr auto;
|
|
3271
|
+
align-items: center;
|
|
3272
|
+
gap: 10px;
|
|
3273
|
+
|
|
3274
|
+
font-size: 0.7em;
|
|
3275
|
+
font-weight: 400;
|
|
3276
|
+
|
|
3277
|
+
max-width: min(420px, 92vw);
|
|
3278
|
+
padding: 16px 20px;
|
|
3279
|
+
border-radius: 12px;
|
|
3280
|
+
border: 1px solid var(--_border);
|
|
3281
|
+
background: var(--_bg);
|
|
3282
|
+
background: color-mix(in srgb, var(--_bg) 85%, transparent);
|
|
3283
|
+
color: var(--_fg);
|
|
3284
|
+
box-shadow:
|
|
3285
|
+
0 10px 15px -3px rgba(0,0,0,.1),
|
|
3286
|
+
0 4px 6px -4px rgba(0,0,0,.08);
|
|
3287
|
+
|
|
3288
|
+
opacity: 0;
|
|
3289
|
+
transform: translateY(6px);
|
|
3290
|
+
transition: opacity 1s ease, transform 1s ease, filter 1s ease;
|
|
3291
|
+
}
|
|
3292
|
+
|
|
3293
|
+
.toast.open {
|
|
3294
|
+
opacity: 1;
|
|
3295
|
+
transform: translateY(0);
|
|
3296
|
+
}
|
|
3297
|
+
|
|
3298
|
+
.toast.closing {
|
|
3299
|
+
opacity: 0;
|
|
3300
|
+
transform: translateY(6px);
|
|
3301
|
+
filter: saturate(.9) brightness(.98);
|
|
3302
|
+
}
|
|
3303
|
+
|
|
3304
|
+
.icon {
|
|
3305
|
+
display: inline-flex;
|
|
3306
|
+
align-items: center;
|
|
3307
|
+
justify-content: center;
|
|
3308
|
+
width: 22px;
|
|
3309
|
+
height: 22px;
|
|
3310
|
+
line-height: 1;
|
|
3311
|
+
font-size: 22px;
|
|
3312
|
+
user-select: none;
|
|
3313
|
+
background: transparent; /* ensure transparent background */
|
|
3314
|
+
}
|
|
3315
|
+
|
|
3316
|
+
.msg {
|
|
3317
|
+
font-size: 1.5em;
|
|
3318
|
+
line-height: 1.25;
|
|
3319
|
+
word-break: break-word;
|
|
3320
|
+
}
|
|
3321
|
+
|
|
3322
|
+
.close {
|
|
3323
|
+
appearance: none;
|
|
3324
|
+
background: transparent;
|
|
3325
|
+
border: none;
|
|
3326
|
+
color: inherit;
|
|
3327
|
+
font: inherit;
|
|
3328
|
+
font-size: 20px;
|
|
3329
|
+
cursor: pointer;
|
|
3330
|
+
opacity: .9;
|
|
3331
|
+
width: 28px;
|
|
3332
|
+
height: 28px;
|
|
3333
|
+
border-radius: 50%;
|
|
3334
|
+
display: inline-flex;
|
|
3335
|
+
align-items: center;
|
|
3336
|
+
justify-content: center;
|
|
3337
|
+
transition: background 1s ease, transform 1s ease;
|
|
3338
|
+
}
|
|
3339
|
+
.close:hover { background: color-mix(in srgb, #000 10%, transparent); }
|
|
3340
|
+
.close:active { transform: scale(.94); }
|
|
3341
|
+
.close:focus-visible {
|
|
3342
|
+
outline: none;
|
|
3343
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, #fff 60%, transparent);
|
|
3344
|
+
}
|
|
3345
|
+
|
|
3346
|
+
/* Variants — keep parity with your button palette */
|
|
3347
|
+
.toast.success { --_bg: var(--sl-color-success-600, #2f9e44); --_fg: #fff; }
|
|
3348
|
+
.toast.info { --_bg: var(--sl-color-info-600, #0b7285); --_fg: #fff; }
|
|
3349
|
+
.toast.warning { --_bg: var(--sl-color-warning-600, #f08c00); --_fg: #212529; }
|
|
3350
|
+
.toast.danger { --_bg: var(--sl-color-danger-600, #c92a2a); --_fg: #fff; }
|
|
3351
|
+
.toast.primary { --_bg: var(--sl-color-primary-600, hsl(200.4 98% 39.4%)); --_fg: #fff; }
|
|
3352
|
+
.toast.neutral {
|
|
3353
|
+
--_bg: var(--sl-color-neutral-50, hsl(0 0% 97.5%));
|
|
3354
|
+
--_fg: var(--sl-color-neutral-900, hsl(240 5.9% 10%));
|
|
3355
|
+
--_border: var(--sl-color-neutral-300, #d1d5db);
|
|
3356
|
+
}
|
|
3357
|
+
|
|
3358
|
+
/* Mobile fine-tuning: give a bit more padding */
|
|
3359
|
+
@media (max-width: 600px) {
|
|
3360
|
+
.toast { padding: 12px; }
|
|
3361
|
+
}
|
|
3362
|
+
`;
|
|
3363
|
+
st([
|
|
3364
|
+
x({ type: String })
|
|
3365
|
+
], qe.prototype, "message", 2);
|
|
3366
|
+
st([
|
|
3367
|
+
x({ type: String })
|
|
3368
|
+
], qe.prototype, "variant", 2);
|
|
3369
|
+
st([
|
|
3370
|
+
x({ type: Number })
|
|
3371
|
+
], qe.prototype, "duration", 2);
|
|
3372
|
+
st([
|
|
3373
|
+
x({ type: Boolean })
|
|
3374
|
+
], qe.prototype, "closeable", 2);
|
|
3375
|
+
st([
|
|
3376
|
+
x({ type: String })
|
|
3377
|
+
], qe.prototype, "icon", 2);
|
|
3378
|
+
st([
|
|
3379
|
+
x({ type: String })
|
|
3380
|
+
], qe.prototype, "ariaLive", 2);
|
|
3381
|
+
qe = st([
|
|
3382
|
+
Z("cb-toast")
|
|
3383
|
+
], qe);
|
|
3170
3384
|
function Q(a) {
|
|
3171
3385
|
return a != null && typeof a == "object" && a["@@functional/placeholder"] === !0;
|
|
3172
3386
|
}
|
|
@@ -3175,7 +3389,7 @@ function tt(a) {
|
|
|
3175
3389
|
return arguments.length === 0 || Q(t) ? e : a.apply(this, arguments);
|
|
3176
3390
|
};
|
|
3177
3391
|
}
|
|
3178
|
-
function
|
|
3392
|
+
function Ke(a) {
|
|
3179
3393
|
return function e(t, i) {
|
|
3180
3394
|
switch (arguments.length) {
|
|
3181
3395
|
case 0:
|
|
@@ -3193,29 +3407,29 @@ function Ze(a) {
|
|
|
3193
3407
|
}
|
|
3194
3408
|
};
|
|
3195
3409
|
}
|
|
3196
|
-
function
|
|
3410
|
+
function Ss(a) {
|
|
3197
3411
|
return function e(t, i, s) {
|
|
3198
3412
|
switch (arguments.length) {
|
|
3199
3413
|
case 0:
|
|
3200
3414
|
return e;
|
|
3201
3415
|
case 1:
|
|
3202
|
-
return Q(t) ? e :
|
|
3416
|
+
return Q(t) ? e : Ke(function(r, o) {
|
|
3203
3417
|
return a(t, r, o);
|
|
3204
3418
|
});
|
|
3205
3419
|
case 2:
|
|
3206
|
-
return Q(t) && Q(i) ? e : Q(t) ?
|
|
3420
|
+
return Q(t) && Q(i) ? e : Q(t) ? Ke(function(r, o) {
|
|
3207
3421
|
return a(r, i, o);
|
|
3208
|
-
}) : Q(i) ?
|
|
3422
|
+
}) : Q(i) ? Ke(function(r, o) {
|
|
3209
3423
|
return a(t, r, o);
|
|
3210
3424
|
}) : tt(function(r) {
|
|
3211
3425
|
return a(t, i, r);
|
|
3212
3426
|
});
|
|
3213
3427
|
default:
|
|
3214
|
-
return Q(t) && Q(i) && Q(s) ? e : Q(t) && Q(i) ?
|
|
3428
|
+
return Q(t) && Q(i) && Q(s) ? e : Q(t) && Q(i) ? Ke(function(r, o) {
|
|
3215
3429
|
return a(r, o, s);
|
|
3216
|
-
}) : Q(t) && Q(s) ?
|
|
3430
|
+
}) : Q(t) && Q(s) ? Ke(function(r, o) {
|
|
3217
3431
|
return a(r, i, o);
|
|
3218
|
-
}) : Q(i) && Q(s) ?
|
|
3432
|
+
}) : Q(i) && Q(s) ? Ke(function(r, o) {
|
|
3219
3433
|
return a(t, r, o);
|
|
3220
3434
|
}) : Q(t) ? tt(function(r) {
|
|
3221
3435
|
return a(r, i, s);
|
|
@@ -3227,45 +3441,45 @@ function ws(a) {
|
|
|
3227
3441
|
}
|
|
3228
3442
|
};
|
|
3229
3443
|
}
|
|
3230
|
-
const
|
|
3444
|
+
const Cs = Number.isInteger || function(e) {
|
|
3231
3445
|
return e << 0 === e;
|
|
3232
3446
|
};
|
|
3233
|
-
function
|
|
3447
|
+
function As(a, e) {
|
|
3234
3448
|
var t = a < 0 ? e.length + a : a;
|
|
3235
3449
|
return e[t];
|
|
3236
3450
|
}
|
|
3237
|
-
var
|
|
3451
|
+
var Ms = /* @__PURE__ */ Ke(function(e, t) {
|
|
3238
3452
|
return t == null || t !== t ? e : t;
|
|
3239
3453
|
});
|
|
3240
|
-
function
|
|
3454
|
+
function Ts(a, e) {
|
|
3241
3455
|
for (var t = e, i = 0; i < a.length; i += 1) {
|
|
3242
3456
|
if (t == null)
|
|
3243
3457
|
return;
|
|
3244
3458
|
var s = a[i];
|
|
3245
|
-
|
|
3459
|
+
Cs(s) ? t = As(s, t) : t = t[s];
|
|
3246
3460
|
}
|
|
3247
3461
|
return t;
|
|
3248
3462
|
}
|
|
3249
|
-
var
|
|
3250
|
-
return
|
|
3463
|
+
var Wt = /* @__PURE__ */ Ss(function(e, t, i) {
|
|
3464
|
+
return Ms(e, Ts(t, i));
|
|
3251
3465
|
});
|
|
3252
|
-
const Cs = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3253
|
-
var
|
|
3466
|
+
const Is = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3467
|
+
var Es = Object.defineProperty, O = (a, e, t, i) => {
|
|
3254
3468
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
3255
3469
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
3256
|
-
return s &&
|
|
3470
|
+
return s && Es(e, t, s), s;
|
|
3257
3471
|
};
|
|
3258
|
-
const
|
|
3259
|
-
|
|
3260
|
-
const ne = "cb_",
|
|
3472
|
+
const T = Je.noConflict();
|
|
3473
|
+
T.setLevel("info");
|
|
3474
|
+
const ne = "cb_", $s = (a) => new Promise((e) => setTimeout(e, a));
|
|
3261
3475
|
class R extends Yt {
|
|
3262
3476
|
constructor() {
|
|
3263
3477
|
super(), this.actionIdCounter = 0, this.currentLoadContext = {}, this.prefilledFormValues = {}, this.wsClient = 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}`);
|
|
3264
3478
|
}
|
|
3265
3479
|
// this is called at startup
|
|
3266
3480
|
setSetting(e) {
|
|
3267
|
-
|
|
3268
|
-
|
|
3481
|
+
T.info("appState: Startup: setSetting", e), this.setting = e, this.initBot().catch((t) => {
|
|
3482
|
+
T.info(`Exception during bot initialization: ${t.message}`);
|
|
3269
3483
|
});
|
|
3270
3484
|
}
|
|
3271
3485
|
// set language
|
|
@@ -3280,7 +3494,7 @@ class R extends Yt {
|
|
|
3280
3494
|
async initBot() {
|
|
3281
3495
|
if (!this.botSettingsInitialized) {
|
|
3282
3496
|
const i = `${this.setting.url.startsWith("localhost") ? "http" : "https"}://${this.setting.url}/api/bot/settings/${this.setting.orgId}/${this.setting.botId}`;
|
|
3283
|
-
|
|
3497
|
+
T.info(`Getting bot settings at ${i} ...`);
|
|
3284
3498
|
let s = null, r = null;
|
|
3285
3499
|
try {
|
|
3286
3500
|
s = await fetch(i, {
|
|
@@ -3290,13 +3504,13 @@ class R extends Yt {
|
|
|
3290
3504
|
"X-Enegel-Signature": this.setting.botId
|
|
3291
3505
|
//"ngrok-skip-browser-warning": "1",
|
|
3292
3506
|
}
|
|
3293
|
-
}), !s.ok || s.status !== 200 ?
|
|
3507
|
+
}), !s.ok || s.status !== 200 ? T.error(`Failed to get bot ${this.setting.botId} settings: ${s.status} ${s.statusText}`) : r = await s.json();
|
|
3294
3508
|
} catch (o) {
|
|
3295
|
-
|
|
3509
|
+
T.error(`Failed to get bot ${this.setting.botId} settings: ${o.message}`), r = null;
|
|
3296
3510
|
}
|
|
3297
3511
|
if (this.botSettingsInitialized = !0, this.botSettings = r, !r) {
|
|
3298
|
-
if (
|
|
3299
|
-
|
|
3512
|
+
if (T.error(`Unable to retrieve bot settings - bot disabled. Retry in ${this.botSettingsRetryTimeout} seconds.`), this.disabled = !0, this.botSettingsRetryTimeout > 80) {
|
|
3513
|
+
T.error("Failed to retrieve bot settings - bot disabled. Retries exhausted. Refresh page to attempt again.");
|
|
3300
3514
|
return;
|
|
3301
3515
|
}
|
|
3302
3516
|
this.botSettingsInitialized = !1, setTimeout(async () => {
|
|
@@ -3304,17 +3518,17 @@ class R extends Yt {
|
|
|
3304
3518
|
}, this.botSettingsRetryTimeout * 1e3), this.botSettingsRetryTimeout = this.botSettingsRetryTimeout * 2;
|
|
3305
3519
|
return;
|
|
3306
3520
|
}
|
|
3307
|
-
|
|
3521
|
+
T.info("Got bot settings - bot is enabled", r), this.disabled = !1, this.setting.welcomeMessage = r?.welcomeMessage || "How can I help ?", this.setting.disclaimerMessage = r?.disclaimerMessage && r.disclaimerMessage !== "" ? r.disclaimerMessage : null, this.setting.engageMessage = r?.engageMessage || "How can I help ?", this.setting.engageTimeout = r?.engageTimeout || 5, this.setting.splitMessagesAtBreak = "splitMessagesAtBreak" in r ? r.splitMessagesAtBreak : !1, this.setting.feedbackEnabled = "feedbackEnabled" in r ? r.feedbackEnabled : !1, this.setting.uploadImages = "uploadImages" in r ? r.uploadImages : !1, this.setting.newConversationTimeoutInSec = r?.newConversationTimeoutInSec || 86400, this.setting.enableNotificationSound = "enableNotificationSound" in r ? r.enableNotificationSound : !0, this.setting.botAdvancedSettings = r?.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.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.showNewConversationOnAgentDisconnected = this.setting.botAdvancedSettings?.showNewConversationOnAgentDisconnected ?? !1, this.setting.enableMultiModalConnection ? this.setting.enableAudio = !0 : this.setting.enableAudio = !1, this.initConversation(), this.shouldEngage === "true" && setTimeout(() => {
|
|
3308
3522
|
this.showEngagePopup();
|
|
3309
3523
|
}, this.setting.engageTimeout * 1e3);
|
|
3310
3524
|
}
|
|
3311
3525
|
const e = new URLSearchParams(window.location.search);
|
|
3312
3526
|
if (e.has("c7o_bot_open")) {
|
|
3313
3527
|
const t = e.get("c7o_bot_open");
|
|
3314
|
-
this.open = t !== "false" && t !== "no" && t !== "0",
|
|
3528
|
+
this.open = t !== "false" && t !== "no" && t !== "0", T.info(`C7O-BOT:INIT: Force open=${this.open} from query parameter c7o_bot_open=${e.get("c7o_bot_open")}`);
|
|
3315
3529
|
}
|
|
3316
|
-
this.connectWs === "true" && (
|
|
3317
|
-
|
|
3530
|
+
this.connectWs === "true" && (T.info("appState: connectWs is true"), this.getWsClient().catch((t) => {
|
|
3531
|
+
T.error(`Exception during ws client startup: ${t.message}`);
|
|
3318
3532
|
})), setTimeout(() => {
|
|
3319
3533
|
window.dispatchEvent(
|
|
3320
3534
|
new CustomEvent("c7o:bot:stateEvent", {
|
|
@@ -3346,17 +3560,34 @@ class R extends Yt {
|
|
|
3346
3560
|
}), this.initStartupForm();
|
|
3347
3561
|
}
|
|
3348
3562
|
// AGENT // ////////////////////////////////////////////////////
|
|
3563
|
+
async handleAgentConnected(e) {
|
|
3564
|
+
T.info("c7o: Agent Connected", e);
|
|
3565
|
+
const t = e?.userName || "Agent";
|
|
3566
|
+
this.addMessage({
|
|
3567
|
+
id: e?.id || null,
|
|
3568
|
+
author: "system",
|
|
3569
|
+
type: "info",
|
|
3570
|
+
data: {
|
|
3571
|
+
text: `**${t}** joined chat`,
|
|
3572
|
+
...e.userName && { userName: e.userName },
|
|
3573
|
+
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3574
|
+
}
|
|
3575
|
+
});
|
|
3576
|
+
}
|
|
3349
3577
|
async handleAgentDisconnected(e) {
|
|
3350
|
-
|
|
3578
|
+
if (T.info("c7o: Agent disconnected", e), !this.setting.enableAgentDisconnectedMessage)
|
|
3579
|
+
return;
|
|
3580
|
+
const t = e?.userName || "Agent";
|
|
3581
|
+
this.addMessage({
|
|
3351
3582
|
id: e?.id || null,
|
|
3352
|
-
author: "
|
|
3353
|
-
type: "
|
|
3583
|
+
author: "system",
|
|
3584
|
+
type: "info",
|
|
3354
3585
|
data: {
|
|
3355
|
-
text:
|
|
3586
|
+
text: `**${t}** left chat`,
|
|
3356
3587
|
...e.userName && { userName: e.userName },
|
|
3357
3588
|
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3358
3589
|
}
|
|
3359
|
-
}), this.showNewConversation = !0;
|
|
3590
|
+
}), this.setting.showNewConversationOnAgentDisconnected && (this.showNewConversation = !0);
|
|
3360
3591
|
}
|
|
3361
3592
|
// BROADCAST // ///////////////////////////////////////////////////
|
|
3362
3593
|
async handleBroadcastMessage(e) {
|
|
@@ -3425,7 +3656,7 @@ class R extends Yt {
|
|
|
3425
3656
|
}
|
|
3426
3657
|
// When finished playing audio, clear trackId and send mark message
|
|
3427
3658
|
async onPlaybackEnded() {
|
|
3428
|
-
this.webAudioCurrentMark && (
|
|
3659
|
+
this.webAudioCurrentMark && (T.info(`c7o: mark ${this.webAudioCurrentMark} completed`), await this.sendEvent({
|
|
3429
3660
|
id: fe(),
|
|
3430
3661
|
type: "mediaMark",
|
|
3431
3662
|
mark: {
|
|
@@ -3434,7 +3665,7 @@ class R extends Yt {
|
|
|
3434
3665
|
}), this.webAudioCurrentMark = null, this.webAudioTrackId = null);
|
|
3435
3666
|
}
|
|
3436
3667
|
async onWebAudioTerminate() {
|
|
3437
|
-
|
|
3668
|
+
T.info("c7o: terminating audio"), await this.stopAudio();
|
|
3438
3669
|
}
|
|
3439
3670
|
// Confirmation from server that media started
|
|
3440
3671
|
// {"type":"mediaStarted","mediaType":"audio","mediaTransport":"webmedia","webmedia":{"mimeType":"audio/L16","mediaSpec":{"sampleRate":24000,"channels":1}}}
|
|
@@ -3453,16 +3684,16 @@ class R extends Yt {
|
|
|
3453
3684
|
if (!e || e?.type !== "media" || !e?.media || e?.mediaType !== "audio" || !e?.media?.payload || !this.webAudioProcessor || !this.webAudioStarted)
|
|
3454
3685
|
return;
|
|
3455
3686
|
const t = e.media.payload;
|
|
3456
|
-
this.webAudioTrackId || (this.webAudioTrackId = fe()),
|
|
3687
|
+
this.webAudioTrackId || (this.webAudioTrackId = fe()), T.info(`${Date.now()}: Playing audio: ${t.length} bytes, trackId: ${this.webAudioTrackId}`), await this.webAudioProcessor.playAudio(t, this.webAudioTrackId);
|
|
3457
3688
|
}
|
|
3458
3689
|
// {"type": "mediaMark","mark": {"name": "1757277902935"}}
|
|
3459
3690
|
async handleMediaMark(e) {
|
|
3460
|
-
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null,
|
|
3691
|
+
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null, T.info(`c7o: Current media mark set to ${this.webAudioCurrentMark}`, e));
|
|
3461
3692
|
}
|
|
3462
3693
|
// Confirmation from server that media stopped
|
|
3463
3694
|
//{"type":"mediaClear","mediaType":"audio"}
|
|
3464
3695
|
async handleMediaClear(e) {
|
|
3465
|
-
|
|
3696
|
+
T.info("c7o: Got mediaClear, clearing buffered media", e), this.mediaStartedAudio = !1, !(!this.webAudioProcessor || !this.webAudioStarted) && (this.webAudioTrackId = null, await this.webAudioProcessor.interruptAudio());
|
|
3466
3697
|
}
|
|
3467
3698
|
// ////////////////////////////////////////////////////////////
|
|
3468
3699
|
setPrefilledFormFields(e) {
|
|
@@ -3485,7 +3716,7 @@ class R extends Yt {
|
|
|
3485
3716
|
return;
|
|
3486
3717
|
const e = await this.getWsClient();
|
|
3487
3718
|
if (!e) {
|
|
3488
|
-
|
|
3719
|
+
T.error("Error - failed to obtain ws client");
|
|
3489
3720
|
return;
|
|
3490
3721
|
}
|
|
3491
3722
|
const t = {
|
|
@@ -3493,7 +3724,7 @@ class R extends Yt {
|
|
|
3493
3724
|
type: "setContext",
|
|
3494
3725
|
contextData: this.context
|
|
3495
3726
|
};
|
|
3496
|
-
e.sendMessage(t),
|
|
3727
|
+
e.sendMessage(t), T.info("Sent context:", this.context);
|
|
3497
3728
|
}
|
|
3498
3729
|
getContext() {
|
|
3499
3730
|
return this.context;
|
|
@@ -3506,20 +3737,20 @@ class R extends Yt {
|
|
|
3506
3737
|
this.initForm(this.form);
|
|
3507
3738
|
return;
|
|
3508
3739
|
}
|
|
3509
|
-
const e =
|
|
3740
|
+
const e = Wt(null, ["startupForm"], this.botSettings);
|
|
3510
3741
|
if (!e || !e?.name) {
|
|
3511
|
-
|
|
3742
|
+
T.info("Startup form not present");
|
|
3512
3743
|
return;
|
|
3513
3744
|
}
|
|
3514
3745
|
this.initForm(e);
|
|
3515
3746
|
}
|
|
3516
3747
|
initForm(e = null) {
|
|
3517
|
-
const t = e, i =
|
|
3748
|
+
const t = e, i = Wt(null, ["name"], e);
|
|
3518
3749
|
if (!t || !i)
|
|
3519
3750
|
return;
|
|
3520
|
-
const s =
|
|
3751
|
+
const s = Wt(null, ["fields"], e);
|
|
3521
3752
|
if (!Array.isArray(s) || s.length <= 0) {
|
|
3522
|
-
|
|
3753
|
+
T.info("form has no fields", e);
|
|
3523
3754
|
return;
|
|
3524
3755
|
}
|
|
3525
3756
|
const r = `${ne}${this.setting.botId}.${this.conversationId}.form.${i}`, o = localStorage.getItem(r);
|
|
@@ -3528,11 +3759,11 @@ class R extends Yt {
|
|
|
3528
3759
|
try {
|
|
3529
3760
|
f = JSON.parse(o);
|
|
3530
3761
|
} catch (p) {
|
|
3531
|
-
|
|
3762
|
+
T.error(`Failed to parse stored form data: ${p.message}`), f = null;
|
|
3532
3763
|
}
|
|
3533
3764
|
if (f) {
|
|
3534
3765
|
this.sendFormData(i, f).catch((p) => {
|
|
3535
|
-
|
|
3766
|
+
T.error(`Error when submitting form: ${p.message}`);
|
|
3536
3767
|
});
|
|
3537
3768
|
return;
|
|
3538
3769
|
}
|
|
@@ -3543,7 +3774,7 @@ class R extends Yt {
|
|
|
3543
3774
|
this.engage = !1, this.shouldEngage = "false";
|
|
3544
3775
|
}
|
|
3545
3776
|
showEngagePopup() {
|
|
3546
|
-
this.open || (
|
|
3777
|
+
this.open || (T.info("Engaging User !"), this.engage = !0, this.playAudioNotification());
|
|
3547
3778
|
}
|
|
3548
3779
|
playAudioNotification() {
|
|
3549
3780
|
if (!this.setting.enableNotificationSound)
|
|
@@ -3554,7 +3785,7 @@ class R extends Yt {
|
|
|
3554
3785
|
o[f] = parseInt(r.substr(f * 2, 2), 16);
|
|
3555
3786
|
return o;
|
|
3556
3787
|
};
|
|
3557
|
-
let t = new Blob([e(
|
|
3788
|
+
let t = new Blob([e(Is)], { type: "application/octet-stream" });
|
|
3558
3789
|
const i = URL.createObjectURL(t);
|
|
3559
3790
|
new Audio(i).play();
|
|
3560
3791
|
}
|
|
@@ -3567,7 +3798,15 @@ class R extends Yt {
|
|
|
3567
3798
|
if (this.wsClient)
|
|
3568
3799
|
return this.wsClient;
|
|
3569
3800
|
let t = `${this.setting.url.startsWith("localhost") ? "ws" : "wss"}://${this.setting.url}/api/bot/connect/${this.setting.orgId}/${this.setting.botId}/${this.conversationId}`;
|
|
3570
|
-
|
|
3801
|
+
const i = new URL(t);
|
|
3802
|
+
if (this.setting.enableMultiModalConnection && (i.searchParams.set("multiModal", "true"), T.info("MultiModal connection enabled - adding multiModal=true parameter")), this.setting.enablePassContextOnConnect && this.context && typeof this.context == "object")
|
|
3803
|
+
try {
|
|
3804
|
+
const s = JSON.stringify(this.context);
|
|
3805
|
+
i.searchParams.set("context", s), T.info("Adding context to connect URL");
|
|
3806
|
+
} catch (s) {
|
|
3807
|
+
T.error(`Failed to stringify context: ${s.message}`);
|
|
3808
|
+
}
|
|
3809
|
+
return t = i.toString(), T.info(`Initiating ws connection to ${t} ...`), this.wsClient = new ts({
|
|
3571
3810
|
url: t,
|
|
3572
3811
|
orgId: this.setting.orgId,
|
|
3573
3812
|
botId: this.setting.botId,
|
|
@@ -3587,11 +3826,11 @@ class R extends Yt {
|
|
|
3587
3826
|
}), await this.wsClient.start(), this.connectWs = "true", this.wsClient;
|
|
3588
3827
|
}
|
|
3589
3828
|
handleWscClose(e) {
|
|
3590
|
-
|
|
3829
|
+
T.info(`WSC: connection closed, connected: ${this.wsClient?.connected}`, e), this.stopWebAudio().catch((t) => {
|
|
3591
3830
|
}), this.connected = !1;
|
|
3592
3831
|
}
|
|
3593
3832
|
async handleWscConnectError(e) {
|
|
3594
|
-
|
|
3833
|
+
T.info("WSC: connect error - resetting conversation", e);
|
|
3595
3834
|
const t = this.wsClient?.url || null;
|
|
3596
3835
|
if (this.wsClient)
|
|
3597
3836
|
try {
|
|
@@ -3617,13 +3856,13 @@ class R extends Yt {
|
|
|
3617
3856
|
const s = t.includes("?"), [r, o] = s ? t.split("?") : [t, ""], f = r.split("/");
|
|
3618
3857
|
f[f.length - 1] = this.conversationId;
|
|
3619
3858
|
const p = f.join("/"), v = o ? `${p}?${o}` : p;
|
|
3620
|
-
this.wsClient.url = v, await
|
|
3859
|
+
this.wsClient.url = v, await $s(1e3), await this.wsClient.start(), T.info(`WSC: started new conversation, conversationId=${this.conversationId}`);
|
|
3621
3860
|
} catch (i) {
|
|
3622
|
-
|
|
3861
|
+
T.error(`WSC: failed to reset conversation: ${i.message}`, i);
|
|
3623
3862
|
}
|
|
3624
3863
|
}
|
|
3625
3864
|
handleWscConnecting(e) {
|
|
3626
|
-
|
|
3865
|
+
T.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(
|
|
3627
3866
|
{
|
|
3628
3867
|
id: fe(),
|
|
3629
3868
|
type: "setContext",
|
|
@@ -3640,7 +3879,7 @@ class R extends Yt {
|
|
|
3640
3879
|
}
|
|
3641
3880
|
// Update typing state based on received message
|
|
3642
3881
|
updateTypingState(e) {
|
|
3643
|
-
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1,
|
|
3882
|
+
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1, T.info("c7o: typing stopped")) : e && e?.type === "typing" && (this.typingActive = !0, T.info("c7o: typing started"));
|
|
3644
3883
|
}
|
|
3645
3884
|
handleWscMessage(e) {
|
|
3646
3885
|
if (e?.type === "ack")
|
|
@@ -3700,15 +3939,7 @@ class R extends Yt {
|
|
|
3700
3939
|
break;
|
|
3701
3940
|
}
|
|
3702
3941
|
case "agent-connected": {
|
|
3703
|
-
this.
|
|
3704
|
-
id: e?.id || null,
|
|
3705
|
-
author: "assistant",
|
|
3706
|
-
type: "text",
|
|
3707
|
-
data: {
|
|
3708
|
-
text: "_Joined chat_",
|
|
3709
|
-
...e.userName && { userName: e.userName },
|
|
3710
|
-
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3711
|
-
}
|
|
3942
|
+
this.handleAgentConnected(e).catch((i) => {
|
|
3712
3943
|
});
|
|
3713
3944
|
break;
|
|
3714
3945
|
}
|
|
@@ -3720,7 +3951,7 @@ class R extends Yt {
|
|
|
3720
3951
|
//{"type":"agent-connected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
3721
3952
|
//{"type":"agent-disconnected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
3722
3953
|
case "form": {
|
|
3723
|
-
if (
|
|
3954
|
+
if (T.info("Got form:", e), this.replyMessage && this.replyMessage.id) {
|
|
3724
3955
|
const i = this.replyMessage.data?.text || "";
|
|
3725
3956
|
(this.replyMessage.isThinking || i.trim() === "") && (this.removeMessage(this.replyMessage.id), this.replyMessage = null);
|
|
3726
3957
|
}
|
|
@@ -3766,7 +3997,7 @@ class R extends Yt {
|
|
|
3766
3997
|
if (e !== -1)
|
|
3767
3998
|
if (this.setting.splitMessagesAtBreak) {
|
|
3768
3999
|
const t = this.streamingResponseBuffer.substring(0, e).trim(), i = this.streamingResponseBuffer.substring(e + 4).trim();
|
|
3769
|
-
(t !== "" || this.replyMessage?.data?.text !== "") && (
|
|
4000
|
+
(t !== "" || this.replyMessage?.data?.text !== "") && (T.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));
|
|
3770
4001
|
} else
|
|
3771
4002
|
this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer);
|
|
3772
4003
|
this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null;
|
|
@@ -3775,11 +4006,11 @@ class R extends Yt {
|
|
|
3775
4006
|
if (!this.streamingResponseBuffer || !this.replyMessage)
|
|
3776
4007
|
return;
|
|
3777
4008
|
if (this.streamingResponseBuffer.indexOf("![") === -1) {
|
|
3778
|
-
|
|
4009
|
+
T.info(`NOT IMG TAG: ${this.streamingResponseBuffer}`), this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null;
|
|
3779
4010
|
return;
|
|
3780
4011
|
}
|
|
3781
4012
|
const e = this.streamingResponseBuffer.lastIndexOf("]"), t = this.streamingResponseBuffer.lastIndexOf(")");
|
|
3782
|
-
e === -1 || t === -1 || e > t || (
|
|
4013
|
+
e === -1 || t === -1 || e > t || (T.info(`IMG TAG END: ${this.streamingResponseBuffer}`), this.isValidImageLink(this.streamingResponseBuffer) && (this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer)), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null);
|
|
3783
4014
|
}
|
|
3784
4015
|
isValidImageLink(e = "") {
|
|
3785
4016
|
return !(e.indexOf("example.com") !== -1 || e.indexOf("imgur.com") !== -1 || e.indexOf("attachment:") !== -1);
|
|
@@ -3799,7 +4030,7 @@ class R extends Yt {
|
|
|
3799
4030
|
this.streamingResponseBuffer = e, this.streamingResponseTagStartPos = e.indexOf("<"), this.streamingResponseCurrentTag = "br";
|
|
3800
4031
|
return;
|
|
3801
4032
|
} else if (e.indexOf("![") !== -1 || e.endsWith("!")) {
|
|
3802
|
-
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img",
|
|
4033
|
+
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img", T.info(`IMG TAG START: ${this.streamingResponseBuffer}`);
|
|
3803
4034
|
return;
|
|
3804
4035
|
}
|
|
3805
4036
|
this.streamingResponseLastText = t, this.replyMessage = this.updateMessage(this.replyMessage, t);
|
|
@@ -3855,7 +4086,7 @@ class R extends Yt {
|
|
|
3855
4086
|
detail: f
|
|
3856
4087
|
})
|
|
3857
4088
|
), this.sendActionCompleted(f).catch((p) => {
|
|
3858
|
-
|
|
4089
|
+
T.error(`Error: failed to send action completed: ${p.message}`);
|
|
3859
4090
|
});
|
|
3860
4091
|
}
|
|
3861
4092
|
this.actions.splice(s, 1);
|
|
@@ -3873,10 +4104,10 @@ class R extends Yt {
|
|
|
3873
4104
|
}
|
|
3874
4105
|
}
|
|
3875
4106
|
async sendMessage(e) {
|
|
3876
|
-
e = this.formatMessage(e),
|
|
4107
|
+
e = this.formatMessage(e), T.info("Send Message:", e), this.showNewConversation && (this.showNewConversation = !1), this.messages = this.messages.concat([e]), this.lastConversationUpdate = Date.now();
|
|
3877
4108
|
const t = await this.getWsClient();
|
|
3878
4109
|
if (!t) {
|
|
3879
|
-
|
|
4110
|
+
T.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
3880
4111
|
return;
|
|
3881
4112
|
}
|
|
3882
4113
|
t.sendMessage({
|
|
@@ -3922,7 +4153,7 @@ class R extends Yt {
|
|
|
3922
4153
|
// Submit current form data
|
|
3923
4154
|
async submitForm(e) {
|
|
3924
4155
|
if (!this.form) {
|
|
3925
|
-
|
|
4156
|
+
T.info("submitForm: No form is active - ignored");
|
|
3926
4157
|
return;
|
|
3927
4158
|
}
|
|
3928
4159
|
const t = `${ne}${this.setting.botId}.${this.conversationId}.form.${this.form.name}`;
|
|
@@ -3931,7 +4162,7 @@ class R extends Yt {
|
|
|
3931
4162
|
async sendFormData(e, t) {
|
|
3932
4163
|
const i = await this.getWsClient();
|
|
3933
4164
|
if (!i) {
|
|
3934
|
-
|
|
4165
|
+
T.error("Error - failed to obtain ws client");
|
|
3935
4166
|
return;
|
|
3936
4167
|
}
|
|
3937
4168
|
i.sendMessage({
|
|
@@ -3943,7 +4174,7 @@ class R extends Yt {
|
|
|
3943
4174
|
async sendActionCompleted(e) {
|
|
3944
4175
|
const t = await this.getWsClient();
|
|
3945
4176
|
if (!t) {
|
|
3946
|
-
|
|
4177
|
+
T.error("Error - failed to obtain ws client");
|
|
3947
4178
|
return;
|
|
3948
4179
|
}
|
|
3949
4180
|
t.sendMessage({
|
|
@@ -3954,7 +4185,7 @@ class R extends Yt {
|
|
|
3954
4185
|
async sendEvent(e) {
|
|
3955
4186
|
const t = await this.getWsClient();
|
|
3956
4187
|
if (!t) {
|
|
3957
|
-
|
|
4188
|
+
T.error("Error - failed to obtain ws client");
|
|
3958
4189
|
return;
|
|
3959
4190
|
}
|
|
3960
4191
|
t.sendMessage(e);
|
|
@@ -3967,10 +4198,10 @@ class R extends Yt {
|
|
|
3967
4198
|
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;
|
|
3968
4199
|
}
|
|
3969
4200
|
async submitFeedback(e, t, i) {
|
|
3970
|
-
|
|
4201
|
+
T.info(`submitFeedback: ${this.feedbackScore}`), this.feedbackName = e, this.feedbackEmail = t;
|
|
3971
4202
|
const s = await this.getWsClient();
|
|
3972
4203
|
if (!s) {
|
|
3973
|
-
|
|
4204
|
+
T.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
3974
4205
|
return;
|
|
3975
4206
|
}
|
|
3976
4207
|
s.sendMessage({
|
|
@@ -4011,29 +4242,41 @@ class R extends Yt {
|
|
|
4011
4242
|
}
|
|
4012
4243
|
async uploadFiles(e) {
|
|
4013
4244
|
if (!e?.length) return;
|
|
4014
|
-
const t =
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4245
|
+
const t = b.setting.fileUploadMaxFileSizeMB || 30, i = t * 1024 * 1024, s = e?.find((v) => v.size > i);
|
|
4246
|
+
if (s) {
|
|
4247
|
+
T.error(
|
|
4248
|
+
`File "${s.name}" exceeds the ${t} MB limit and will not be uploaded.`
|
|
4249
|
+
), Ya({
|
|
4250
|
+
message: `File is larger than ${t} MB`,
|
|
4251
|
+
variant: "danger",
|
|
4252
|
+
duration: 3800,
|
|
4253
|
+
closeable: !0
|
|
4254
|
+
});
|
|
4019
4255
|
return;
|
|
4020
4256
|
}
|
|
4021
|
-
const
|
|
4022
|
-
|
|
4023
|
-
|
|
4257
|
+
const r = await this.filesToBase64(e);
|
|
4258
|
+
T.info("Uploading files:", r);
|
|
4259
|
+
const o = await this.getWsClient();
|
|
4260
|
+
if (!o) {
|
|
4261
|
+
T.error("Error - failed to obtain ws client");
|
|
4262
|
+
return;
|
|
4263
|
+
}
|
|
4264
|
+
const f = fe();
|
|
4265
|
+
o.sendMessage({
|
|
4266
|
+
id: f,
|
|
4024
4267
|
type: "upload",
|
|
4025
|
-
files:
|
|
4268
|
+
files: r
|
|
4026
4269
|
});
|
|
4027
|
-
const
|
|
4028
|
-
id:
|
|
4270
|
+
const p = {
|
|
4271
|
+
id: f,
|
|
4029
4272
|
timestamp: Date.now(),
|
|
4030
4273
|
author: "user",
|
|
4031
4274
|
type: "upload",
|
|
4032
4275
|
data: {
|
|
4033
|
-
uploadedFiles:
|
|
4276
|
+
uploadedFiles: r
|
|
4034
4277
|
}
|
|
4035
4278
|
};
|
|
4036
|
-
this.addMessage(
|
|
4279
|
+
this.addMessage(p);
|
|
4037
4280
|
}
|
|
4038
4281
|
notifyWidgetOpenState() {
|
|
4039
4282
|
this.wsClient && this.wsClient.sendMessage({
|
|
@@ -4176,7 +4419,12 @@ O([
|
|
|
4176
4419
|
newConversationTimeoutInSec: 86400,
|
|
4177
4420
|
enableNotificationSound: !0,
|
|
4178
4421
|
botAdvancedOptions: null,
|
|
4179
|
-
enableMultiModalConnection: !1
|
|
4422
|
+
enableMultiModalConnection: !1,
|
|
4423
|
+
enablePassContextOnConnect: !1,
|
|
4424
|
+
fileUploadEnabledExtensions: ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3",
|
|
4425
|
+
fileUploadMaxFileSizeMB: 30,
|
|
4426
|
+
enableAgentDisconnectedMessage: !1,
|
|
4427
|
+
showNewConversationOnAgentDisconnected: !1
|
|
4180
4428
|
}
|
|
4181
4429
|
})
|
|
4182
4430
|
], R.prototype, "setting");
|
|
@@ -4234,7 +4482,7 @@ O([
|
|
|
4234
4482
|
O([
|
|
4235
4483
|
z({ type: Boolean, value: !1 })
|
|
4236
4484
|
], R.prototype, "webAudioMuted");
|
|
4237
|
-
const b = new R(),
|
|
4485
|
+
const b = new R(), Ps = J`
|
|
4238
4486
|
${ke}
|
|
4239
4487
|
:host {
|
|
4240
4488
|
position: relative;
|
|
@@ -4309,12 +4557,12 @@ const b = new R(), Ts = J`
|
|
|
4309
4557
|
display: inline;
|
|
4310
4558
|
}
|
|
4311
4559
|
`;
|
|
4312
|
-
var
|
|
4560
|
+
var Ls = Object.defineProperty, Rs = (a, e, t, i) => {
|
|
4313
4561
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
4314
4562
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
4315
|
-
return s &&
|
|
4563
|
+
return s && Ls(e, t, s), s;
|
|
4316
4564
|
};
|
|
4317
|
-
|
|
4565
|
+
Bi("system", {
|
|
4318
4566
|
resolver: (a) => ""
|
|
4319
4567
|
});
|
|
4320
4568
|
(() => {
|
|
@@ -4351,16 +4599,16 @@ class re extends Fe {
|
|
|
4351
4599
|
return this.dispatchEvent(i), i;
|
|
4352
4600
|
}
|
|
4353
4601
|
}
|
|
4354
|
-
|
|
4602
|
+
Rs([
|
|
4355
4603
|
x({ type: String })
|
|
4356
4604
|
], re.prototype, "lang");
|
|
4357
|
-
var
|
|
4358
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4605
|
+
var zs = Object.defineProperty, Os = Object.getOwnPropertyDescriptor, Ja = (a, e, t, i) => {
|
|
4606
|
+
for (var s = i > 1 ? void 0 : i ? Os(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4359
4607
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
4360
|
-
return i && s &&
|
|
4608
|
+
return i && s && zs(e, t, s), s;
|
|
4361
4609
|
};
|
|
4362
|
-
const
|
|
4363
|
-
let
|
|
4610
|
+
const Bs = '<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>';
|
|
4611
|
+
let Ot = class extends re {
|
|
4364
4612
|
constructor() {
|
|
4365
4613
|
super(...arguments), this.title = "ChatBot";
|
|
4366
4614
|
}
|
|
@@ -4374,13 +4622,13 @@ let zt = class extends re {
|
|
|
4374
4622
|
${W(
|
|
4375
4623
|
b.setting.logoUrl !== "",
|
|
4376
4624
|
() => u`<img class="cb-header-logo" part="header-logo" src="${b.setting.logoUrl}" />`,
|
|
4377
|
-
() => u`<div class="cb-header-logo" part="header-logo">${
|
|
4625
|
+
() => u`<div class="cb-header-logo" part="header-logo">${G(b.setting.logoSvg)}</div>`
|
|
4378
4626
|
)}
|
|
4379
4627
|
<div class="cb-header-title" part="header-title">${this.title}</div>
|
|
4380
4628
|
${W(
|
|
4381
4629
|
b.alwaysOpen,
|
|
4382
4630
|
() => u``,
|
|
4383
|
-
() => u`<div class="cb-header-close" part="header-close">${
|
|
4631
|
+
() => u`<div class="cb-header-close" part="header-close">${G(Bs)}</div>`
|
|
4384
4632
|
)}
|
|
4385
4633
|
</header>`;
|
|
4386
4634
|
}
|
|
@@ -4389,13 +4637,13 @@ let zt = class extends re {
|
|
|
4389
4637
|
${W(
|
|
4390
4638
|
b.setting.logoUrl !== "",
|
|
4391
4639
|
() => u`<img class="cb-header-img" part="header-logo" src="${b.setting.logoUrl}" />`,
|
|
4392
|
-
() => u`<div class="cb-header-logo" part="header-logo">${
|
|
4640
|
+
() => u`<div class="cb-header-logo" part="header-logo">${G(b.setting.logoSvg)}</div>`
|
|
4393
4641
|
)}
|
|
4394
4642
|
<div class="cb-header-title" part="header-title">${this.title}</div>
|
|
4395
4643
|
${W(
|
|
4396
4644
|
b.alwaysOpen,
|
|
4397
4645
|
() => u`<div></div>`,
|
|
4398
|
-
() => u`<div @click=${this._clickCloseHandler} class="cb-header-close" part="header-close">${
|
|
4646
|
+
() => u`<div @click=${this._clickCloseHandler} class="cb-header-close" part="header-close">${G(b.setting.closeSvg)}</div>`
|
|
4399
4647
|
)}
|
|
4400
4648
|
</header>`;
|
|
4401
4649
|
}
|
|
@@ -4422,14 +4670,14 @@ let zt = class extends re {
|
|
|
4422
4670
|
});
|
|
4423
4671
|
}
|
|
4424
4672
|
};
|
|
4425
|
-
|
|
4426
|
-
|
|
4673
|
+
Ot.styles = Ps;
|
|
4674
|
+
Ja([
|
|
4427
4675
|
x({ type: String, attribute: "title" })
|
|
4428
|
-
],
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
],
|
|
4432
|
-
const
|
|
4676
|
+
], Ot.prototype, "title", 2);
|
|
4677
|
+
Ot = Ja([
|
|
4678
|
+
Z("cb-header")
|
|
4679
|
+
], Ot);
|
|
4680
|
+
const qs = J`
|
|
4433
4681
|
${ke}
|
|
4434
4682
|
.cb-footer {
|
|
4435
4683
|
line-height: 60px;
|
|
@@ -4444,8 +4692,8 @@ const Rs = J`
|
|
|
4444
4692
|
color: var(--primary-color);
|
|
4445
4693
|
}
|
|
4446
4694
|
`;
|
|
4447
|
-
var
|
|
4448
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4695
|
+
var Ds = Object.getOwnPropertyDescriptor, Fs = (a, e, t, i) => {
|
|
4696
|
+
for (var s = i > 1 ? void 0 : i ? Ds(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4449
4697
|
(o = a[r]) && (s = o(s) || s);
|
|
4450
4698
|
return s;
|
|
4451
4699
|
};
|
|
@@ -4484,11 +4732,11 @@ let Jt = class extends re {
|
|
|
4484
4732
|
`;
|
|
4485
4733
|
}
|
|
4486
4734
|
};
|
|
4487
|
-
Jt.styles =
|
|
4488
|
-
Jt =
|
|
4489
|
-
|
|
4735
|
+
Jt.styles = qs;
|
|
4736
|
+
Jt = Fs([
|
|
4737
|
+
Z("cb-footer")
|
|
4490
4738
|
], Jt);
|
|
4491
|
-
const
|
|
4739
|
+
const js = J`
|
|
4492
4740
|
${ke}
|
|
4493
4741
|
|
|
4494
4742
|
:host {
|
|
@@ -4689,7 +4937,7 @@ const Bs = J`
|
|
|
4689
4937
|
background-size: 100%;
|
|
4690
4938
|
transition: background 0s;
|
|
4691
4939
|
}
|
|
4692
|
-
`,
|
|
4940
|
+
`, Za = J`
|
|
4693
4941
|
:host {
|
|
4694
4942
|
--primary-color: var(--sl-color-primary-600);
|
|
4695
4943
|
}
|
|
@@ -4934,10 +5182,10 @@ const Bs = J`
|
|
|
4934
5182
|
}
|
|
4935
5183
|
.split-btn[aria-expanded="true"] .split-btn__caret { transform: rotate(180deg); }
|
|
4936
5184
|
`;
|
|
4937
|
-
var
|
|
4938
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5185
|
+
var Hs = Object.defineProperty, Vs = Object.getOwnPropertyDescriptor, je = (a, e, t, i) => {
|
|
5186
|
+
for (var s = i > 1 ? void 0 : i ? Vs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4939
5187
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
4940
|
-
return i && s &&
|
|
5188
|
+
return i && s && Hs(e, t, s), s;
|
|
4941
5189
|
};
|
|
4942
5190
|
let gt = class extends Fe {
|
|
4943
5191
|
constructor() {
|
|
@@ -5031,7 +5279,7 @@ je([
|
|
|
5031
5279
|
x({ type: Number })
|
|
5032
5280
|
], gt.prototype, "minWidth", 2);
|
|
5033
5281
|
gt = je([
|
|
5034
|
-
|
|
5282
|
+
Z("cb-split-menu")
|
|
5035
5283
|
], gt);
|
|
5036
5284
|
let Ge = class extends Fe {
|
|
5037
5285
|
constructor() {
|
|
@@ -5135,222 +5383,8 @@ je([
|
|
|
5135
5383
|
xe(".split-btn")
|
|
5136
5384
|
], Ge.prototype, "_btn", 2);
|
|
5137
5385
|
Ge = je([
|
|
5138
|
-
|
|
5386
|
+
Z("cb-split-button")
|
|
5139
5387
|
], Ge);
|
|
5140
|
-
var Fs = Object.defineProperty, js = Object.getOwnPropertyDescriptor, st = (a, e, t, i) => {
|
|
5141
|
-
for (var s = i > 1 ? void 0 : i ? js(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5142
|
-
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5143
|
-
return i && s && Fs(e, t, s), s;
|
|
5144
|
-
};
|
|
5145
|
-
const Mt = "cb-toast-outlet", Ia = "cb-toast-outlet-style";
|
|
5146
|
-
function Hs() {
|
|
5147
|
-
let a = document.getElementById(Mt);
|
|
5148
|
-
if (a || (a = document.createElement("div"), a.id = Mt, document.body.appendChild(a)), !document.getElementById(Ia)) {
|
|
5149
|
-
const e = document.createElement("style");
|
|
5150
|
-
e.id = Ia, e.textContent = `
|
|
5151
|
-
/* Global outlet that holds all toasts */
|
|
5152
|
-
#${Mt} {
|
|
5153
|
-
position: fixed;
|
|
5154
|
-
right: 40px;
|
|
5155
|
-
bottom: 55px;
|
|
5156
|
-
display: flex;
|
|
5157
|
-
flex-direction: column;
|
|
5158
|
-
gap: 10px;
|
|
5159
|
-
z-index: 2147483646; /* below very-top overlays if any */
|
|
5160
|
-
align-items: flex-end;
|
|
5161
|
-
pointer-events: none; /* clicks pass through except on toast itself */
|
|
5162
|
-
}
|
|
5163
|
-
@media (max-width: 600px) {
|
|
5164
|
-
#${Mt} {
|
|
5165
|
-
left: 8px;
|
|
5166
|
-
right: 8px;
|
|
5167
|
-
align-items: stretch; /* stretch toasts to full width on mobile */
|
|
5168
|
-
}
|
|
5169
|
-
}
|
|
5170
|
-
`, document.head.appendChild(e);
|
|
5171
|
-
}
|
|
5172
|
-
return a;
|
|
5173
|
-
}
|
|
5174
|
-
function Vs(a) {
|
|
5175
|
-
const e = Hs(), t = document.createElement("cb-toast");
|
|
5176
|
-
return t.message = a.message, t.variant = a.variant ?? "success", t.duration = typeof a.duration == "number" ? a.duration : 3e3, t.closeable = !0, t.icon = a.icon ?? "", t.ariaLive = a.ariaLive ?? "polite", e.appendChild(t), t;
|
|
5177
|
-
}
|
|
5178
|
-
let qe = class extends Fe {
|
|
5179
|
-
constructor() {
|
|
5180
|
-
super(...arguments), this.message = "", this.variant = "success", this.duration = 3e3, this.closeable = !1, this.icon = "", this.ariaLive = "polite", this._open = !1, this._closing = !1, this._defaultIcons = {
|
|
5181
|
-
success: "✓",
|
|
5182
|
-
danger: "❌",
|
|
5183
|
-
warning: "⚠️",
|
|
5184
|
-
info: "ℹ️",
|
|
5185
|
-
neutral: "💬",
|
|
5186
|
-
primary: "⭐"
|
|
5187
|
-
};
|
|
5188
|
-
}
|
|
5189
|
-
connectedCallback() {
|
|
5190
|
-
super.connectedCallback(), queueMicrotask(() => this.open());
|
|
5191
|
-
}
|
|
5192
|
-
disconnectedCallback() {
|
|
5193
|
-
super.disconnectedCallback(), this._clearTimer();
|
|
5194
|
-
}
|
|
5195
|
-
render() {
|
|
5196
|
-
const a = ["toast", this.variant, this._open ? "open" : "", this._closing ? "closing" : ""].filter(Boolean).join(" "), e = this.icon || this._defaultIcons[this.variant] || this._defaultIcons.success;
|
|
5197
|
-
return u`
|
|
5198
|
-
<div
|
|
5199
|
-
class=${a}
|
|
5200
|
-
role="status"
|
|
5201
|
-
aria-live=${this.ariaLive}
|
|
5202
|
-
>
|
|
5203
|
-
${u`<span class="icon" aria-hidden="true">${this._renderIcon(e)}</span>`}
|
|
5204
|
-
<div class="msg">
|
|
5205
|
-
${this.message ? u`${this.message}` : u`<slot></slot>`}
|
|
5206
|
-
</div>
|
|
5207
|
-
${this.closeable ? u`<button class="close" @click=${this.close} aria-label="Close">×</button>` : Ae}
|
|
5208
|
-
</div>
|
|
5209
|
-
`;
|
|
5210
|
-
}
|
|
5211
|
-
/** Programmatic API */
|
|
5212
|
-
open() {
|
|
5213
|
-
this._open || (this._open = !0, this.requestUpdate(), this.duration > 0 && (this._timer = window.setTimeout(() => this.close(), this.duration)));
|
|
5214
|
-
}
|
|
5215
|
-
async close() {
|
|
5216
|
-
this._closing || (this._closing = !0, this.requestUpdate(), await new Promise((a) => setTimeout(() => a(), 200)), this.remove());
|
|
5217
|
-
}
|
|
5218
|
-
_clearTimer() {
|
|
5219
|
-
this._timer && (clearTimeout(this._timer), this._timer = void 0);
|
|
5220
|
-
}
|
|
5221
|
-
_renderIcon(a) {
|
|
5222
|
-
return a.trim().startsWith("<") ? u`${Y(a)}` : a;
|
|
5223
|
-
}
|
|
5224
|
-
};
|
|
5225
|
-
qe.styles = J`
|
|
5226
|
-
:host {
|
|
5227
|
-
display: block;
|
|
5228
|
-
pointer-events: auto; /* receive pointer events within toast */
|
|
5229
|
-
contain: content;
|
|
5230
|
-
font-size: var(--enegelai-bot-base-font-size, 16px);
|
|
5231
|
-
font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
5232
|
-
}
|
|
5233
|
-
|
|
5234
|
-
.toast {
|
|
5235
|
-
--_bg: var(--sl-color-success-600, #2f9e44);
|
|
5236
|
-
--_fg: #fff;
|
|
5237
|
-
--_border: transparent;
|
|
5238
|
-
|
|
5239
|
-
display: grid;
|
|
5240
|
-
grid-template-columns: auto 1fr auto;
|
|
5241
|
-
align-items: center;
|
|
5242
|
-
gap: 10px;
|
|
5243
|
-
|
|
5244
|
-
font-size: 0.7em;
|
|
5245
|
-
font-weight: 400;
|
|
5246
|
-
|
|
5247
|
-
max-width: min(420px, 92vw);
|
|
5248
|
-
padding: 16px 20px;
|
|
5249
|
-
border-radius: 12px;
|
|
5250
|
-
border: 1px solid var(--_border);
|
|
5251
|
-
background: var(--_bg);
|
|
5252
|
-
background: color-mix(in srgb, var(--_bg) 85%, transparent);
|
|
5253
|
-
color: var(--_fg);
|
|
5254
|
-
box-shadow:
|
|
5255
|
-
0 10px 15px -3px rgba(0,0,0,.1),
|
|
5256
|
-
0 4px 6px -4px rgba(0,0,0,.08);
|
|
5257
|
-
|
|
5258
|
-
opacity: 0;
|
|
5259
|
-
transform: translateY(6px);
|
|
5260
|
-
transition: opacity 1s ease, transform 1s ease, filter 1s ease;
|
|
5261
|
-
}
|
|
5262
|
-
|
|
5263
|
-
.toast.open {
|
|
5264
|
-
opacity: 1;
|
|
5265
|
-
transform: translateY(0);
|
|
5266
|
-
}
|
|
5267
|
-
|
|
5268
|
-
.toast.closing {
|
|
5269
|
-
opacity: 0;
|
|
5270
|
-
transform: translateY(6px);
|
|
5271
|
-
filter: saturate(.9) brightness(.98);
|
|
5272
|
-
}
|
|
5273
|
-
|
|
5274
|
-
.icon {
|
|
5275
|
-
display: inline-flex;
|
|
5276
|
-
align-items: center;
|
|
5277
|
-
justify-content: center;
|
|
5278
|
-
width: 22px;
|
|
5279
|
-
height: 22px;
|
|
5280
|
-
line-height: 1;
|
|
5281
|
-
font-size: 22px;
|
|
5282
|
-
user-select: none;
|
|
5283
|
-
background: transparent; /* ensure transparent background */
|
|
5284
|
-
}
|
|
5285
|
-
|
|
5286
|
-
.msg {
|
|
5287
|
-
font-size: 1.5em;
|
|
5288
|
-
line-height: 1.25;
|
|
5289
|
-
word-break: break-word;
|
|
5290
|
-
}
|
|
5291
|
-
|
|
5292
|
-
.close {
|
|
5293
|
-
appearance: none;
|
|
5294
|
-
background: transparent;
|
|
5295
|
-
border: none;
|
|
5296
|
-
color: inherit;
|
|
5297
|
-
font: inherit;
|
|
5298
|
-
font-size: 20px;
|
|
5299
|
-
cursor: pointer;
|
|
5300
|
-
opacity: .9;
|
|
5301
|
-
width: 28px;
|
|
5302
|
-
height: 28px;
|
|
5303
|
-
border-radius: 50%;
|
|
5304
|
-
display: inline-flex;
|
|
5305
|
-
align-items: center;
|
|
5306
|
-
justify-content: center;
|
|
5307
|
-
transition: background 1s ease, transform 1s ease;
|
|
5308
|
-
}
|
|
5309
|
-
.close:hover { background: color-mix(in srgb, #000 10%, transparent); }
|
|
5310
|
-
.close:active { transform: scale(.94); }
|
|
5311
|
-
.close:focus-visible {
|
|
5312
|
-
outline: none;
|
|
5313
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, #fff 60%, transparent);
|
|
5314
|
-
}
|
|
5315
|
-
|
|
5316
|
-
/* Variants — keep parity with your button palette */
|
|
5317
|
-
.toast.success { --_bg: var(--sl-color-success-600, #2f9e44); --_fg: #fff; }
|
|
5318
|
-
.toast.info { --_bg: var(--sl-color-info-600, #0b7285); --_fg: #fff; }
|
|
5319
|
-
.toast.warning { --_bg: var(--sl-color-warning-600, #f08c00); --_fg: #212529; }
|
|
5320
|
-
.toast.danger { --_bg: var(--sl-color-danger-600, #c92a2a); --_fg: #fff; }
|
|
5321
|
-
.toast.primary { --_bg: var(--sl-color-primary-600, hsl(200.4 98% 39.4%)); --_fg: #fff; }
|
|
5322
|
-
.toast.neutral {
|
|
5323
|
-
--_bg: var(--sl-color-neutral-50, hsl(0 0% 97.5%));
|
|
5324
|
-
--_fg: var(--sl-color-neutral-900, hsl(240 5.9% 10%));
|
|
5325
|
-
--_border: var(--sl-color-neutral-300, #d1d5db);
|
|
5326
|
-
}
|
|
5327
|
-
|
|
5328
|
-
/* Mobile fine-tuning: give a bit more padding */
|
|
5329
|
-
@media (max-width: 600px) {
|
|
5330
|
-
.toast { padding: 12px; }
|
|
5331
|
-
}
|
|
5332
|
-
`;
|
|
5333
|
-
st([
|
|
5334
|
-
x({ type: String })
|
|
5335
|
-
], qe.prototype, "message", 2);
|
|
5336
|
-
st([
|
|
5337
|
-
x({ type: String })
|
|
5338
|
-
], qe.prototype, "variant", 2);
|
|
5339
|
-
st([
|
|
5340
|
-
x({ type: Number })
|
|
5341
|
-
], qe.prototype, "duration", 2);
|
|
5342
|
-
st([
|
|
5343
|
-
x({ type: Boolean })
|
|
5344
|
-
], qe.prototype, "closeable", 2);
|
|
5345
|
-
st([
|
|
5346
|
-
x({ type: String })
|
|
5347
|
-
], qe.prototype, "icon", 2);
|
|
5348
|
-
st([
|
|
5349
|
-
x({ type: String })
|
|
5350
|
-
], qe.prototype, "ariaLive", 2);
|
|
5351
|
-
qe = st([
|
|
5352
|
-
K("cb-toast")
|
|
5353
|
-
], qe);
|
|
5354
5388
|
var Ns = Object.defineProperty, Us = Object.getOwnPropertyDescriptor, wt = (a, e, t, i) => {
|
|
5355
5389
|
for (var s = i > 1 ? void 0 : i ? Us(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5356
5390
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
@@ -5464,16 +5498,16 @@ let Me = class extends Fe {
|
|
|
5464
5498
|
}
|
|
5465
5499
|
/* ----------------- CARD ----------------- */
|
|
5466
5500
|
renderCard(a) {
|
|
5467
|
-
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), p = 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(" "),
|
|
5501
|
+
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), p = 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((U) => (U.type ?? "").toLowerCase() === "primary"), M = r.some((U) => (U.type ?? "").toLowerCase() === "secondary"), L = ["card__actions", E && M ? "card__actions--between" : ""].filter(Boolean).join(" "), C = () => {
|
|
5468
5502
|
if (!i) return Ae;
|
|
5469
5503
|
const U = u`<img class="card__image" src=${i} alt=${s ?? e ?? "Image"} draggable="false" />`;
|
|
5470
5504
|
return p ? u`<a class="card__image-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false" aria-label=${e ? `Open: ${e}` : "Open"}>${U}</a>` : U;
|
|
5471
|
-
},
|
|
5505
|
+
}, K = () => e ? p && !i ? u`<h3 class="card__title"><a class="card__title-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false">${e}</a></h3>` : u`<h3 class="card__title">${e}</h3>` : Ae;
|
|
5472
5506
|
return u`
|
|
5473
5507
|
<div class="card" role="group" aria-label=${e ? `Card: ${e}` : "Card"}>
|
|
5474
5508
|
${C()}
|
|
5475
5509
|
<div class="card__content">
|
|
5476
|
-
${
|
|
5510
|
+
${K()}
|
|
5477
5511
|
${t ? u`<div class="card__subtitle">${t}</div>` : Ae}
|
|
5478
5512
|
${w || _ ? u`
|
|
5479
5513
|
<div class=${P}>
|
|
@@ -5482,7 +5516,7 @@ let Me = class extends Fe {
|
|
|
5482
5516
|
</div>` : Ae}
|
|
5483
5517
|
${r.length ? u`
|
|
5484
5518
|
<div class=${L}>
|
|
5485
|
-
${r.map((U,
|
|
5519
|
+
${r.map((U, X) => this.renderAnyButton(U, X))}
|
|
5486
5520
|
</div>` : Ae}
|
|
5487
5521
|
</div>
|
|
5488
5522
|
</div>
|
|
@@ -5676,17 +5710,18 @@ let Me = class extends Fe {
|
|
|
5676
5710
|
body: JSON.stringify(r)
|
|
5677
5711
|
});
|
|
5678
5712
|
if (!o.ok) {
|
|
5679
|
-
Tt.error("c7o: cart/add.js failed"),
|
|
5713
|
+
Tt.error("c7o: cart/add.js failed"), Ya({
|
|
5680
5714
|
message: "Unable to add item to cart.",
|
|
5681
5715
|
variant: "danger",
|
|
5682
|
-
duration: 2800
|
|
5716
|
+
duration: 2800,
|
|
5717
|
+
closeable: !0
|
|
5683
5718
|
});
|
|
5684
5719
|
return;
|
|
5685
5720
|
}
|
|
5686
5721
|
await o.json(), Tt.info("c7o: cart/add.js - cart updated"), Tt.info("c7o: reloading window after cart update"), window.location.reload();
|
|
5687
5722
|
}
|
|
5688
5723
|
};
|
|
5689
|
-
Me.styles = [Ws,
|
|
5724
|
+
Me.styles = [Ws, Za, Ka];
|
|
5690
5725
|
Me.DRAG_THRESHOLD_PX = 10;
|
|
5691
5726
|
wt([
|
|
5692
5727
|
x({ type: Object })
|
|
@@ -5701,14 +5736,14 @@ wt([
|
|
|
5701
5736
|
Ha()
|
|
5702
5737
|
], Me.prototype, "_canNext", 2);
|
|
5703
5738
|
Me = wt([
|
|
5704
|
-
|
|
5739
|
+
Z("cb-block")
|
|
5705
5740
|
], Me);
|
|
5706
|
-
var Gs = Object.defineProperty, Xs = Object.getOwnPropertyDescriptor,
|
|
5741
|
+
var Gs = Object.defineProperty, Xs = Object.getOwnPropertyDescriptor, Qa = (a, e, t, i) => {
|
|
5707
5742
|
for (var s = i > 1 ? void 0 : i ? Xs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5708
5743
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5709
5744
|
return i && s && Gs(e, t, s), s;
|
|
5710
5745
|
};
|
|
5711
|
-
let
|
|
5746
|
+
let Bt = class extends Fe {
|
|
5712
5747
|
constructor() {
|
|
5713
5748
|
super(...arguments), this.blocks = [];
|
|
5714
5749
|
}
|
|
@@ -5720,7 +5755,7 @@ let Ot = class extends Fe {
|
|
|
5720
5755
|
`;
|
|
5721
5756
|
}
|
|
5722
5757
|
};
|
|
5723
|
-
|
|
5758
|
+
Bt.styles = J`
|
|
5724
5759
|
:host {
|
|
5725
5760
|
display: block;
|
|
5726
5761
|
}
|
|
@@ -5731,13 +5766,13 @@ Ot.styles = J`
|
|
|
5731
5766
|
gap: 0.75em; /* vertical rhythm between blocks */
|
|
5732
5767
|
}
|
|
5733
5768
|
`;
|
|
5734
|
-
|
|
5769
|
+
Qa([
|
|
5735
5770
|
x({ type: Array })
|
|
5736
|
-
],
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
],
|
|
5740
|
-
var
|
|
5771
|
+
], Bt.prototype, "blocks", 2);
|
|
5772
|
+
Bt = Qa([
|
|
5773
|
+
Z("cb-blocks")
|
|
5774
|
+
], Bt);
|
|
5775
|
+
var Rt = { exports: {} }, Ys = Rt.exports, $a;
|
|
5741
5776
|
function Js() {
|
|
5742
5777
|
return $a || ($a = 1, (function(a, e) {
|
|
5743
5778
|
(function(t, i) {
|
|
@@ -5802,9 +5837,9 @@ function Js() {
|
|
|
5802
5837
|
})), h;
|
|
5803
5838
|
}
|
|
5804
5839
|
function w(n) {
|
|
5805
|
-
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A,
|
|
5840
|
+
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A, I = arguments.length > 2 ? arguments[2] : void 0, $ = l || [];
|
|
5806
5841
|
function B(q) {
|
|
5807
|
-
F(d) && d.call(
|
|
5842
|
+
F(d) && d.call(I, q, this), y && B.destroy();
|
|
5808
5843
|
}
|
|
5809
5844
|
return j($) && ($ = document.querySelectorAll($)), B.destroy = function() {
|
|
5810
5845
|
v($, (function(q) {
|
|
@@ -5826,7 +5861,7 @@ function Js() {
|
|
|
5826
5861
|
return n.classList.remove(l);
|
|
5827
5862
|
}));
|
|
5828
5863
|
}
|
|
5829
|
-
function
|
|
5864
|
+
function E(n, c) {
|
|
5830
5865
|
return n.classList.contains(c);
|
|
5831
5866
|
}
|
|
5832
5867
|
function M(n, c) {
|
|
@@ -5853,13 +5888,13 @@ function Js() {
|
|
|
5853
5888
|
if (c === "") return n.style.webkitTransform = "", n.style.MozTransform = "", n.style.msTransform = "", n.style.OTransform = "", n.style.transform = "", !1;
|
|
5854
5889
|
n.style.webkitTransform = c, n.style.MozTransform = c, n.style.msTransform = c, n.style.OTransform = c, n.style.transform = c;
|
|
5855
5890
|
}
|
|
5856
|
-
function
|
|
5891
|
+
function K(n) {
|
|
5857
5892
|
n.style.display = "block";
|
|
5858
5893
|
}
|
|
5859
5894
|
function U(n) {
|
|
5860
5895
|
n.style.display = "none";
|
|
5861
5896
|
}
|
|
5862
|
-
function
|
|
5897
|
+
function X(n) {
|
|
5863
5898
|
var c = document.createDocumentFragment(), l = document.createElement("div");
|
|
5864
5899
|
for (l.innerHTML = n; l.firstChild; ) c.appendChild(l.firstChild);
|
|
5865
5900
|
return c;
|
|
@@ -5915,7 +5950,7 @@ function Js() {
|
|
|
5915
5950
|
}
|
|
5916
5951
|
}
|
|
5917
5952
|
}
|
|
5918
|
-
function
|
|
5953
|
+
function ge() {
|
|
5919
5954
|
return "navigator" in window && window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);
|
|
5920
5955
|
}
|
|
5921
5956
|
function F(n) {
|
|
@@ -5972,7 +6007,7 @@ function Js() {
|
|
|
5972
6007
|
})), g = m.sort()[0];
|
|
5973
6008
|
return document.querySelector('.gbtn[data-taborder="'.concat(g, '"]'));
|
|
5974
6009
|
}
|
|
5975
|
-
function
|
|
6010
|
+
function vi(n) {
|
|
5976
6011
|
if (n.events.hasOwnProperty("keyboard")) return !1;
|
|
5977
6012
|
n.events.keyboard = w("keydown", { onElement: window, withCallback: function(c, l) {
|
|
5978
6013
|
var d = (c = c || window.event).keyCode;
|
|
@@ -5995,7 +6030,7 @@ function Js() {
|
|
|
5995
6030
|
d == 39 && n.nextSlide(), d == 37 && n.prevSlide(), d == 27 && n.close();
|
|
5996
6031
|
} });
|
|
5997
6032
|
}
|
|
5998
|
-
var
|
|
6033
|
+
var wi = s((function n(c, l) {
|
|
5999
6034
|
var d = this, h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
|
|
6000
6035
|
if (t(this, n), this.img = c, this.slide = l, this.onclose = h, this.img.setZoomEvents) return !1;
|
|
6001
6036
|
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) {
|
|
@@ -6040,7 +6075,7 @@ function Js() {
|
|
|
6040
6075
|
} }]), pa = s((function n() {
|
|
6041
6076
|
var c = this, l = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6042
6077
|
t(this, n);
|
|
6043
|
-
var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A,
|
|
6078
|
+
var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A, I = l.instance, $ = I === void 0 ? null : I;
|
|
6044
6079
|
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) {
|
|
6045
6080
|
return c.dragStart(B);
|
|
6046
6081
|
}), !1), this.el.addEventListener("mouseup", (function(B) {
|
|
@@ -6089,51 +6124,51 @@ function Js() {
|
|
|
6089
6124
|
var d = arguments.length > 3 && arguments[3] !== void 0 && arguments[3];
|
|
6090
6125
|
n.style.transition = d ? "all .2s ease" : "", n.style.transform = "translate3d(".concat(c, "px, ").concat(l, "px, 0)");
|
|
6091
6126
|
} }]);
|
|
6092
|
-
function
|
|
6127
|
+
function xi(n, c, l, d) {
|
|
6093
6128
|
var h = n.querySelector(".gslide-media"), m = new Image(), g = "gSlideTitle_" + l, y = "gSlideDesc_" + l;
|
|
6094
6129
|
m.addEventListener("load", (function() {
|
|
6095
6130
|
F(d) && d();
|
|
6096
6131
|
}), !1), m.src = c.href, c.sizes != "" && c.srcset != "" && (m.sizes = c.sizes, m.srcset = c.srcset), m.alt = "", be(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), h.insertBefore(m, h.firstChild);
|
|
6097
6132
|
}
|
|
6098
|
-
function
|
|
6133
|
+
function ki(n, c, l, d) {
|
|
6099
6134
|
var h = this, m = n.querySelector(".ginner-container"), g = "gvideo" + l, y = n.querySelector(".gslide-media"), A = this.getAllPlayers();
|
|
6100
|
-
_(m, "gvideo-container"), y.insertBefore(
|
|
6135
|
+
_(m, "gvideo-container"), y.insertBefore(X('<div class="gvideo-wrapper"></div>'), y.firstChild);
|
|
6101
6136
|
var S = n.querySelector(".gvideo-wrapper");
|
|
6102
6137
|
he(this.settings.plyr.css, "Plyr");
|
|
6103
|
-
var
|
|
6138
|
+
var I = c.href, $ = c?.videoProvider, B = !1;
|
|
6104
6139
|
y.style.maxWidth = c.width, he(this.settings.plyr.js, "Plyr", (function() {
|
|
6105
|
-
if (!$ &&
|
|
6140
|
+
if (!$ && I.match(/vimeo\.com\/([0-9]*)/) && ($ = "vimeo"), !$ && (I.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || I.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || I.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || I.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)) && ($ = "youtube"), $ === "local" || !$) {
|
|
6106
6141
|
$ = "local";
|
|
6107
6142
|
var q = '<video id="' + g + '" ';
|
|
6108
|
-
q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(
|
|
6143
|
+
q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(I, '">'), B = X(q += "</video>");
|
|
6109
6144
|
}
|
|
6110
|
-
var D = B ||
|
|
6145
|
+
var D = B || X('<div id="'.concat(g, '" data-plyr-provider="').concat($, '" data-plyr-embed-id="').concat(I, '"></div>'));
|
|
6111
6146
|
_(S, "".concat($, "-video gvideo")), S.appendChild(D), S.setAttribute("data-id", g), S.setAttribute("data-index", l);
|
|
6112
|
-
var ee = ie(h.settings.plyr, "config") ? h.settings.plyr.config : {},
|
|
6113
|
-
|
|
6147
|
+
var ee = ie(h.settings.plyr, "config") ? h.settings.plyr.config : {}, me = new Plyr("#" + g, ee);
|
|
6148
|
+
me.on("ready", (function(ue) {
|
|
6114
6149
|
A[g] = ue.detail.plyr, F(d) && d();
|
|
6115
6150
|
})), ae((function() {
|
|
6116
6151
|
return n.querySelector("iframe") && n.querySelector("iframe").dataset.ready == "true";
|
|
6117
6152
|
}), (function() {
|
|
6118
6153
|
h.resize(n);
|
|
6119
|
-
})),
|
|
6154
|
+
})), me.on("enterfullscreen", ga), me.on("exitfullscreen", ga);
|
|
6120
6155
|
}));
|
|
6121
6156
|
}
|
|
6122
6157
|
function ga(n) {
|
|
6123
6158
|
var c = M(n.target, ".gslide-media");
|
|
6124
6159
|
n.type === "enterfullscreen" && _(c, "fullscreen"), n.type === "exitfullscreen" && P(c, "fullscreen");
|
|
6125
6160
|
}
|
|
6126
|
-
function
|
|
6161
|
+
function _i(n, c, l, d) {
|
|
6127
6162
|
var h, m = this, g = n.querySelector(".gslide-media"), y = !(!ie(c, "href") || !c.href) && c.href.split("#").pop().trim(), A = !(!ie(c, "content") || !c.content) && c.content;
|
|
6128
|
-
if (A && (j(A) && (h =
|
|
6163
|
+
if (A && (j(A) && (h = X('<div class="ginlined-content">'.concat(A, "</div>"))), V(A))) {
|
|
6129
6164
|
A.style.display == "none" && (A.style.display = "block");
|
|
6130
6165
|
var S = document.createElement("div");
|
|
6131
6166
|
S.className = "ginlined-content", S.appendChild(A), h = S;
|
|
6132
6167
|
}
|
|
6133
6168
|
if (y) {
|
|
6134
|
-
var
|
|
6135
|
-
if (!
|
|
6136
|
-
var $ =
|
|
6169
|
+
var I = document.getElementById(y);
|
|
6170
|
+
if (!I) return !1;
|
|
6171
|
+
var $ = I.cloneNode(!0);
|
|
6137
6172
|
$.style.height = c.height, $.style.maxWidth = c.width, _($, "ginlined-content"), h = $;
|
|
6138
6173
|
}
|
|
6139
6174
|
if (!h) return console.error("Unable to append inline slide content", c), !1;
|
|
@@ -6141,16 +6176,16 @@ function Js() {
|
|
|
6141
6176
|
B.preventDefault(), m.close();
|
|
6142
6177
|
} }), F(d) && d();
|
|
6143
6178
|
}
|
|
6144
|
-
function
|
|
6179
|
+
function Si(n, c, l, d) {
|
|
6145
6180
|
var h = n.querySelector(".gslide-media"), m = (function(g) {
|
|
6146
|
-
var y = g.url, A = g.allow, S = g.callback,
|
|
6181
|
+
var y = g.url, A = g.allow, S = g.callback, I = g.appendTo, $ = document.createElement("iframe");
|
|
6147
6182
|
return $.className = "vimeo-video gvideo", $.src = y, $.style.width = "100%", $.style.height = "100%", A && $.setAttribute("allow", A), $.onload = function() {
|
|
6148
6183
|
$.onload = null, _($, "node-ready"), F(S) && S();
|
|
6149
|
-
},
|
|
6184
|
+
}, I && I.appendChild($), $;
|
|
6150
6185
|
})({ url: c.href, callback: d });
|
|
6151
6186
|
h.parentNode.style.maxWidth = c.width, h.parentNode.style.height = c.height, h.appendChild(m);
|
|
6152
6187
|
}
|
|
6153
|
-
var
|
|
6188
|
+
var Ci = s((function n() {
|
|
6154
6189
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6155
6190
|
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 = p(this.defaults, c));
|
|
6156
6191
|
}), [{ key: "sourceType", value: function(n) {
|
|
@@ -6178,11 +6213,11 @@ function Js() {
|
|
|
6178
6213
|
be(S) || S === "" || (d.title = S);
|
|
6179
6214
|
}
|
|
6180
6215
|
} else {
|
|
6181
|
-
var
|
|
6216
|
+
var I = [];
|
|
6182
6217
|
v(d, (function(q, D) {
|
|
6183
|
-
|
|
6184
|
-
})),
|
|
6185
|
-
var ee = g,
|
|
6218
|
+
I.push(";\\s?" + D);
|
|
6219
|
+
})), I = I.join("\\s?:|"), g.trim() !== "" && v(d, (function(q, D) {
|
|
6220
|
+
var ee = g, me = new RegExp("s?" + D + "s?:s?(.*?)(" + I + "s?:|$)"), ue = ee.match(me);
|
|
6186
6221
|
if (ue && ue.length && ue[1]) {
|
|
6187
6222
|
var Le = ue[1].trim().replace(/;\s*$/, "");
|
|
6188
6223
|
d[D] = l.sanitizeValue(Le);
|
|
@@ -6214,21 +6249,21 @@ function Js() {
|
|
|
6214
6249
|
t(this, n), this.element = c, this.instance = l, this.index = d;
|
|
6215
6250
|
}), [{ key: "setContent", value: function() {
|
|
6216
6251
|
var n = this, c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null, l = arguments.length > 1 && arguments[1] !== void 0 && arguments[1];
|
|
6217
|
-
if (
|
|
6218
|
-
var d = this.instance.settings, h = this.slideConfig, m =
|
|
6252
|
+
if (E(c, "loaded")) return !1;
|
|
6253
|
+
var d = this.instance.settings, h = this.slideConfig, m = ge();
|
|
6219
6254
|
F(d.beforeSlideLoad) && d.beforeSlideLoad({ index: this.index, slide: c, player: !1 });
|
|
6220
|
-
var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"),
|
|
6255
|
+
var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), I = c.querySelector(".gslide-desc"), $ = c.querySelector(".gdesc-inner"), B = l, q = "gSlideTitle_" + this.index, D = "gSlideDesc_" + this.index;
|
|
6221
6256
|
if (F(d.afterSlideLoad) && (B = function() {
|
|
6222
6257
|
F(l) && l(), d.afterSlideLoad({ index: n.index, slide: c, player: n.instance.getSlidePlayerInstance(n.index) });
|
|
6223
|
-
}), h.title == "" && h.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S),
|
|
6224
|
-
if (g !== "external") return g === "inline" ? (
|
|
6258
|
+
}), h.title == "" && h.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S), I && h.description !== "" ? (I.id = D, m && d.moreLength > 0 ? (h.smallDescription = this.slideShortDesc(h.description, d.moreLength, d.moreText), I.innerHTML = h.smallDescription, this.descriptionEvents(I, h)) : I.innerHTML = h.description) : I.parentNode.removeChild(I), _(A.parentNode, "desc-".concat(y)), _($.parentNode, "description-".concat(y))), _(A, "gslide-".concat(g)), _(c, "loaded"), g !== "video") {
|
|
6259
|
+
if (g !== "external") return g === "inline" ? (_i.apply(this.instance, [c, h, this.index, B]), void (h.draggable && new pa({ dragEl: c.querySelector(".gslide-inline"), toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: this.instance }))) : void (g !== "image" ? F(B) && B() : xi(c, h, this.index, (function() {
|
|
6225
6260
|
var ee = c.querySelector("img");
|
|
6226
|
-
h.draggable && new pa({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new
|
|
6261
|
+
h.draggable && new pa({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new wi(ee, c, (function() {
|
|
6227
6262
|
n.instance.resize();
|
|
6228
6263
|
}))), F(B) && B();
|
|
6229
6264
|
})));
|
|
6230
|
-
|
|
6231
|
-
} else
|
|
6265
|
+
Si.apply(this, [c, h, this.index, B]);
|
|
6266
|
+
} else ki.apply(this.instance, [c, h, this.index, B]);
|
|
6232
6267
|
} }, { key: "slideShortDesc", value: function(n) {
|
|
6233
6268
|
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");
|
|
6234
6269
|
d.innerHTML = n;
|
|
@@ -6244,23 +6279,23 @@ function Js() {
|
|
|
6244
6279
|
var g = document.body, y = M(m, ".gslide-desc");
|
|
6245
6280
|
if (!y) return !1;
|
|
6246
6281
|
y.innerHTML = c.description, _(g, "gdesc-open");
|
|
6247
|
-
var A = w("click", { onElement: [g, M(y, ".gslide-description")], withCallback: function(S,
|
|
6282
|
+
var A = w("click", { onElement: [g, M(y, ".gslide-description")], withCallback: function(S, I) {
|
|
6248
6283
|
S.target.nodeName.toLowerCase() !== "a" && (P(g, "gdesc-open"), _(g, "gdesc-closed"), y.innerHTML = c.smallDescription, l.descriptionEvents(y, c), setTimeout((function() {
|
|
6249
6284
|
P(g, "gdesc-closed");
|
|
6250
6285
|
}), 400), A.destroy());
|
|
6251
6286
|
} });
|
|
6252
6287
|
} });
|
|
6253
6288
|
} }, { key: "create", value: function() {
|
|
6254
|
-
return
|
|
6289
|
+
return X(this.instance.settings.slideHTML);
|
|
6255
6290
|
} }, { key: "getConfig", value: function() {
|
|
6256
6291
|
V(this.element) || this.element.hasOwnProperty("draggable") || (this.element.draggable = this.instance.settings.draggable);
|
|
6257
|
-
var n = new
|
|
6292
|
+
var n = new Ci(this.instance.settings.slideExtraAttributes);
|
|
6258
6293
|
return this.slideConfig = n.parseConfig(this.element, this.instance.settings), this.slideConfig;
|
|
6259
6294
|
} }]);
|
|
6260
6295
|
function _t(n) {
|
|
6261
6296
|
return Math.sqrt(n.x * n.x + n.y * n.y);
|
|
6262
6297
|
}
|
|
6263
|
-
function
|
|
6298
|
+
function Ai(n, c) {
|
|
6264
6299
|
var l = (function(d, h) {
|
|
6265
6300
|
var m = _t(d) * _t(h);
|
|
6266
6301
|
if (m === 0) return 0;
|
|
@@ -6273,7 +6308,7 @@ function Js() {
|
|
|
6273
6308
|
return d.x * h.y - h.x * d.y;
|
|
6274
6309
|
})(n, c) > 0 && (l *= -1), 180 * l / Math.PI;
|
|
6275
6310
|
}
|
|
6276
|
-
var
|
|
6311
|
+
var Mi = s((function n(c) {
|
|
6277
6312
|
t(this, n), this.handlers = [], this.el = c;
|
|
6278
6313
|
}), [{ key: "add", value: function(n) {
|
|
6279
6314
|
this.handlers.push(n);
|
|
@@ -6287,10 +6322,10 @@ function Js() {
|
|
|
6287
6322
|
}
|
|
6288
6323
|
} }]);
|
|
6289
6324
|
function le(n, c) {
|
|
6290
|
-
var l = new
|
|
6325
|
+
var l = new Mi(n);
|
|
6291
6326
|
return l.add(c), l;
|
|
6292
6327
|
}
|
|
6293
|
-
var
|
|
6328
|
+
var Ti = s((function n(c, l) {
|
|
6294
6329
|
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;
|
|
6295
6330
|
var d = function() {
|
|
6296
6331
|
};
|
|
@@ -6314,7 +6349,7 @@ function Js() {
|
|
|
6314
6349
|
var c = this.preV, l = n.touches.length, d = n.touches[0].pageX, h = n.touches[0].pageY;
|
|
6315
6350
|
if (this.isDoubleTap = !1, l > 1) {
|
|
6316
6351
|
var m = n.touches[1].pageX, g = n.touches[1].pageY, y = { x: n.touches[1].pageX - d, y: n.touches[1].pageY - h };
|
|
6317
|
-
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle =
|
|
6352
|
+
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle = Ai(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 = (h - this.y2 + g - this.sy2) / 2) : (n.deltaX = 0, n.deltaY = 0), this.twoFingerPressMove.dispatch(n, this.element), this.sx2 = m, this.sy2 = g;
|
|
6318
6353
|
} else {
|
|
6319
6354
|
if (this.x2 !== null) {
|
|
6320
6355
|
n.deltaX = d - this.x2, n.deltaY = h - this.y2;
|
|
@@ -6354,38 +6389,38 @@ function Js() {
|
|
|
6354
6389
|
} }, { key: "destroy", value: function() {
|
|
6355
6390
|
return this.singleTapTimeout && clearTimeout(this.singleTapTimeout), this.tapTimeout && clearTimeout(this.tapTimeout), this.longTapTimeout && clearTimeout(this.longTapTimeout), this.swipeTimeout && clearTimeout(this.swipeTimeout), this.element.removeEventListener("touchstart", this.start), this.element.removeEventListener("touchmove", this.move), this.element.removeEventListener("touchend", this.end), this.element.removeEventListener("touchcancel", this.cancel), this.rotate.del(), this.touchStart.del(), this.multipointStart.del(), this.multipointEnd.del(), this.pinch.del(), this.swipe.del(), this.tap.del(), this.doubleTap.del(), this.longTap.del(), this.singleTap.del(), this.pressMove.del(), this.twoFingerPressMove.del(), this.touchMove.del(), this.touchEnd.del(), this.touchCancel.del(), this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null, window.removeEventListener("scroll", this._cancelAllHandler), null;
|
|
6356
6391
|
} }]);
|
|
6357
|
-
function
|
|
6392
|
+
function Nt(n) {
|
|
6358
6393
|
var c = (function() {
|
|
6359
6394
|
var g, y = document.createElement("fakeelement"), A = { transition: "transitionend", OTransition: "oTransitionEnd", MozTransition: "transitionend", WebkitTransition: "webkitTransitionEnd" };
|
|
6360
6395
|
for (g in A) if (y.style[g] !== void 0) return A[g];
|
|
6361
|
-
})(), l = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, d =
|
|
6396
|
+
})(), l = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, d = E(n, "gslide-media") ? n : n.querySelector(".gslide-media"), h = M(d, ".ginner-container"), m = n.querySelector(".gslide-description");
|
|
6362
6397
|
l > 769 && (d = h), _(d, "greset"), C(d, "translate3d(0, 0, 0)"), w(c, { onElement: d, once: !0, withCallback: function(g, y) {
|
|
6363
6398
|
P(d, "greset");
|
|
6364
6399
|
} }), d.style.opacity = "", m && (m.style.opacity = "");
|
|
6365
6400
|
}
|
|
6366
|
-
function
|
|
6401
|
+
function Ii(n) {
|
|
6367
6402
|
if (n.events.hasOwnProperty("touch")) return !1;
|
|
6368
|
-
var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null,
|
|
6369
|
-
if (y = !0, (
|
|
6370
|
-
if (Se =
|
|
6371
|
-
|
|
6403
|
+
var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null, I = null, $ = !1, B = 1, q = 1, D = !1, ee = !1, me = null, ue = null, Le = null, oe = null, Re = 0, ze = 0, ht = !1, rt = !1, _e = {}, Se = {}, wa = 0, xa = 0, Pi = document.getElementById("glightbox-slider"), St = document.querySelector(".goverlay"), Li = new Ti(Pi, { touchStart: function(Y) {
|
|
6404
|
+
if (y = !0, (E(Y.targetTouches[0].target, "ginner-container") || M(Y.targetTouches[0].target, ".gslide-desc") || Y.targetTouches[0].target.nodeName.toLowerCase() == "a") && (y = !1), M(Y.targetTouches[0].target, ".gslide-inline") && !E(Y.targetTouches[0].target.parentNode, "gslide-inline") && (y = !1), y) {
|
|
6405
|
+
if (Se = Y.targetTouches[0], _e.pageX = Y.targetTouches[0].pageX, _e.pageY = Y.targetTouches[0].pageY, wa = Y.targetTouches[0].clientX, xa = Y.targetTouches[0].clientY, A = n.activeSlide, S = A.querySelector(".gslide-media"), d = A.querySelector(".gslide-inline"), I = null, E(S, "gslide-image") && (I = S.querySelector("img")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (S = A.querySelector(".ginner-container")), P(St, "greset"), Y.pageX > 20 && Y.pageX < window.innerWidth - 20) return;
|
|
6406
|
+
Y.preventDefault();
|
|
6372
6407
|
}
|
|
6373
|
-
}, touchMove: function(
|
|
6374
|
-
if (y && (Se =
|
|
6408
|
+
}, touchMove: function(Y) {
|
|
6409
|
+
if (y && (Se = Y.targetTouches[0], !D && !ee)) {
|
|
6375
6410
|
if (d && d.offsetHeight > g) {
|
|
6376
6411
|
var de = _e.pageX - Se.pageX;
|
|
6377
6412
|
if (Math.abs(de) <= 13) return !1;
|
|
6378
6413
|
}
|
|
6379
6414
|
$ = !0;
|
|
6380
|
-
var Ne, Ct =
|
|
6381
|
-
if (Math.abs(
|
|
6415
|
+
var Ne, Ct = Y.targetTouches[0].clientX, Ri = Y.targetTouches[0].clientY, zi = wa - Ct, Oi = xa - Ri;
|
|
6416
|
+
if (Math.abs(zi) > Math.abs(Oi) ? (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 && (Ne = 1 - Math.abs(l) / g, St.style.opacity = Ne, n.settings.touchFollowAxis && (Re = 0)), rt && (Ne = 1 - Math.abs(c) / m, S.style.opacity = Ne, n.settings.touchFollowAxis && (ze = 0)), !I) return C(S, "translate3d(".concat(Re, "%, 0, 0)"));
|
|
6382
6417
|
C(S, "translate3d(".concat(Re, "%, ").concat(ze, "%, 0)"));
|
|
6383
6418
|
}
|
|
6384
6419
|
}, touchEnd: function() {
|
|
6385
6420
|
if (y) {
|
|
6386
|
-
if ($ = !1, ee || D) return Le =
|
|
6387
|
-
var
|
|
6388
|
-
if (!(
|
|
6421
|
+
if ($ = !1, ee || D) return Le = me, void (oe = ue);
|
|
6422
|
+
var Y = Math.abs(parseInt(ze)), de = Math.abs(parseInt(Re));
|
|
6423
|
+
if (!(Y > 29 && I)) return Y < 29 && de < 25 ? (_(St, "greset"), St.style.opacity = 1, Nt(S)) : void 0;
|
|
6389
6424
|
n.close();
|
|
6390
6425
|
}
|
|
6391
6426
|
}, multipointEnd: function() {
|
|
@@ -6394,35 +6429,35 @@ function Js() {
|
|
|
6394
6429
|
}), 50);
|
|
6395
6430
|
}, multipointStart: function() {
|
|
6396
6431
|
D = !0, B = q || 1;
|
|
6397
|
-
}, pinch: function(
|
|
6398
|
-
if (!
|
|
6399
|
-
D = !0,
|
|
6400
|
-
var de = B *
|
|
6401
|
-
if (ee = !0, de <= 1) return ee = !1, de = 1, oe = null, Le = null,
|
|
6402
|
-
de > 4.5 && (de = 4.5),
|
|
6403
|
-
}, pressMove: function(
|
|
6432
|
+
}, pinch: function(Y) {
|
|
6433
|
+
if (!I || $) return !1;
|
|
6434
|
+
D = !0, I.scaleX = I.scaleY = B * Y.zoom;
|
|
6435
|
+
var de = B * Y.zoom;
|
|
6436
|
+
if (ee = !0, de <= 1) return ee = !1, de = 1, oe = null, Le = null, me = null, ue = null, void I.setAttribute("style", "");
|
|
6437
|
+
de > 4.5 && (de = 4.5), I.style.transform = "scale3d(".concat(de, ", ").concat(de, ", 1)"), q = de;
|
|
6438
|
+
}, pressMove: function(Y) {
|
|
6404
6439
|
if (ee && !D) {
|
|
6405
6440
|
var de = Se.pageX - _e.pageX, Ne = Se.pageY - _e.pageY;
|
|
6406
|
-
Le && (de += Le), oe && (Ne += oe),
|
|
6441
|
+
Le && (de += Le), oe && (Ne += oe), me = de, ue = Ne;
|
|
6407
6442
|
var Ct = "translate3d(".concat(de, "px, ").concat(Ne, "px, 0)");
|
|
6408
|
-
q && (Ct += " scale3d(".concat(q, ", ").concat(q, ", 1)")), C(
|
|
6443
|
+
q && (Ct += " scale3d(".concat(q, ", ").concat(q, ", 1)")), C(I, Ct);
|
|
6409
6444
|
}
|
|
6410
|
-
}, swipe: function(
|
|
6445
|
+
}, swipe: function(Y) {
|
|
6411
6446
|
if (!ee) if (D) D = !1;
|
|
6412
6447
|
else {
|
|
6413
|
-
if (
|
|
6414
|
-
if (n.index == n.elements.length - 1) return
|
|
6448
|
+
if (Y.direction == "Left") {
|
|
6449
|
+
if (n.index == n.elements.length - 1) return Nt(S);
|
|
6415
6450
|
n.nextSlide();
|
|
6416
6451
|
}
|
|
6417
|
-
if (
|
|
6418
|
-
if (n.index == 0) return
|
|
6452
|
+
if (Y.direction == "Right") {
|
|
6453
|
+
if (n.index == 0) return Nt(S);
|
|
6419
6454
|
n.prevSlide();
|
|
6420
6455
|
}
|
|
6421
6456
|
}
|
|
6422
6457
|
} });
|
|
6423
|
-
n.events.touch =
|
|
6458
|
+
n.events.touch = Li;
|
|
6424
6459
|
}
|
|
6425
|
-
var ma =
|
|
6460
|
+
var ma = ge(), ya = ge() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, va = document.getElementsByTagName("html")[0], Ei = { 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">
|
|
6426
6461
|
<div class="gslide-inner-content">
|
|
6427
6462
|
<div class="ginner-container">
|
|
6428
6463
|
<div class="gslide-media">
|
|
@@ -6444,9 +6479,9 @@ function Js() {
|
|
|
6444
6479
|
<button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>
|
|
6445
6480
|
<button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>
|
|
6446
6481
|
</div>
|
|
6447
|
-
</div>` },
|
|
6482
|
+
</div>` }, $i = s((function n() {
|
|
6448
6483
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6449
|
-
t(this, n), this.customOptions = c, this.settings = p(
|
|
6484
|
+
t(this, n), this.customOptions = c, this.settings = p(Ei, c), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;
|
|
6450
6485
|
}), [{ key: "init", value: function() {
|
|
6451
6486
|
var n = this, c = this.getSelector();
|
|
6452
6487
|
c && (this.baseEvents = w("click", { onElement: c, withCallback: function(l, d) {
|
|
@@ -6467,30 +6502,30 @@ function Js() {
|
|
|
6467
6502
|
var g = document.createElement("style");
|
|
6468
6503
|
g.type = "text/css", g.className = "gcss-styles", g.innerText = ".gscrollbar-fixer {margin-right: ".concat(m, "px}"), document.head.appendChild(g), _(h, "gscrollbar-fixer");
|
|
6469
6504
|
}
|
|
6470
|
-
_(h, "glightbox-open"), _(va, "glightbox-open"), ma && (_(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"), F(this.settings.onOpen) && this.settings.onOpen(), ya && this.settings.touchNavigation &&
|
|
6505
|
+
_(h, "glightbox-open"), _(va, "glightbox-open"), ma && (_(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"), F(this.settings.onOpen) && this.settings.onOpen(), ya && this.settings.touchNavigation && Ii(this), this.settings.keyboardNavigation && vi(this);
|
|
6471
6506
|
} }, { key: "openAt", value: function() {
|
|
6472
6507
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
|
|
6473
6508
|
this.open(null, n);
|
|
6474
6509
|
} }, { key: "showSlide", value: function() {
|
|
6475
6510
|
var n = this, c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0, l = arguments.length > 1 && arguments[1] !== void 0 && arguments[1];
|
|
6476
|
-
|
|
6511
|
+
K(this.loader), this.index = parseInt(c);
|
|
6477
6512
|
var d = this.slidesContainer.querySelector(".current");
|
|
6478
6513
|
d && P(d, "current"), this.slideAnimateOut();
|
|
6479
6514
|
var h = this.slidesContainer.querySelectorAll(".gslide")[c];
|
|
6480
|
-
if (
|
|
6515
|
+
if (E(h, "loaded")) this.slideAnimateIn(h, l), U(this.loader);
|
|
6481
6516
|
else {
|
|
6482
|
-
|
|
6517
|
+
K(this.loader);
|
|
6483
6518
|
var m = this.elements[c], g = { index: this.index, slide: h, slideNode: h, slideConfig: m.slideConfig, slideIndex: this.index, trigger: m.node, player: null };
|
|
6484
6519
|
this.trigger("slide_before_load", g), m.instance.setContent(h, (function() {
|
|
6485
6520
|
U(n.loader), n.resize(), n.slideAnimateIn(h, l), n.trigger("slide_after_load", g);
|
|
6486
6521
|
}));
|
|
6487
6522
|
}
|
|
6488
|
-
this.slideDescription = h.querySelector(".gslide-description"), this.slideDescriptionContained = this.slideDescription &&
|
|
6523
|
+
this.slideDescription = h.querySelector(".gslide-description"), this.slideDescriptionContained = this.slideDescription && E(this.slideDescription.parentNode, "gslide-media"), this.settings.preload && (this.preloadSlide(c + 1), this.preloadSlide(c - 1)), this.updateNavigationClasses(), this.activeSlide = h;
|
|
6489
6524
|
} }, { key: "preloadSlide", value: function(n) {
|
|
6490
6525
|
var c = this;
|
|
6491
6526
|
if (n < 0 || n > this.elements.length - 1 || be(this.elements[n])) return !1;
|
|
6492
6527
|
var l = this.slidesContainer.querySelectorAll(".gslide")[n];
|
|
6493
|
-
if (
|
|
6528
|
+
if (E(l, "loaded")) return !1;
|
|
6494
6529
|
var d = this.elements[n], h = d.type, m = { index: n, slide: l, slideNode: l, slideConfig: d.slideConfig, slideIndex: n, trigger: d.node, player: null };
|
|
6495
6530
|
this.trigger("slide_before_load", m), h === "video" || h === "external" ? setTimeout((function() {
|
|
6496
6531
|
d.instance.setContent(l, (function() {
|
|
@@ -6596,7 +6631,7 @@ function Js() {
|
|
|
6596
6631
|
var m = new kt(d, c, h), g = m.getConfig(), y = p({}, g);
|
|
6597
6632
|
y.slideConfig = g, y.instance = m, y.index = h, l.push(y);
|
|
6598
6633
|
})), this.elements = l, this.lightboxOpen && (this.slidesContainer.innerHTML = "", this.elements.length && (v(this.elements, (function() {
|
|
6599
|
-
var d =
|
|
6634
|
+
var d = X(c.settings.slideHTML);
|
|
6600
6635
|
c.slidesContainer.appendChild(d);
|
|
6601
6636
|
})), this.showSlide(0, !0)));
|
|
6602
6637
|
} }, { key: "getElementIndex", value: function(n) {
|
|
@@ -6640,41 +6675,41 @@ function Js() {
|
|
|
6640
6675
|
S.parentNode == document.body && S.nodeName.charAt(0) !== "#" && S.hasAttribute && !S.hasAttribute("aria-hidden") && (l.push(S), S.setAttribute("aria-hidden", "true"));
|
|
6641
6676
|
}));
|
|
6642
6677
|
var d = ie(this.settings.svg, "next") ? this.settings.svg.next : "", h = ie(this.settings.svg, "prev") ? this.settings.svg.prev : "", m = ie(this.settings.svg, "close") ? this.settings.svg.close : "", g = this.settings.lightboxHTML;
|
|
6643
|
-
g =
|
|
6678
|
+
g = X(g = (g = (g = g.replace(/{nextSVG}/g, d)).replace(/{prevSVG}/g, h)).replace(/{closeSVG}/g, m)), document.body.appendChild(g);
|
|
6644
6679
|
var y = document.getElementById("glightbox-body");
|
|
6645
6680
|
this.modal = y;
|
|
6646
6681
|
var A = y.querySelector(".gclose");
|
|
6647
|
-
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 && A && (this.events.close = w("click", { onElement: A, withCallback: function(S,
|
|
6682
|
+
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 && A && (this.events.close = w("click", { onElement: A, withCallback: function(S, I) {
|
|
6648
6683
|
S.preventDefault(), n.close();
|
|
6649
|
-
} })), A && !this.settings.closeButton && A.parentNode.removeChild(A), this.nextButton && (this.events.next = w("click", { onElement: this.nextButton, withCallback: function(S,
|
|
6684
|
+
} })), A && !this.settings.closeButton && A.parentNode.removeChild(A), this.nextButton && (this.events.next = w("click", { onElement: this.nextButton, withCallback: function(S, I) {
|
|
6650
6685
|
S.preventDefault(), n.nextSlide();
|
|
6651
|
-
} })), this.prevButton && (this.events.prev = w("click", { onElement: this.prevButton, withCallback: function(S,
|
|
6686
|
+
} })), this.prevButton && (this.events.prev = w("click", { onElement: this.prevButton, withCallback: function(S, I) {
|
|
6652
6687
|
S.preventDefault(), n.prevSlide();
|
|
6653
|
-
} })), this.settings.closeOnOutsideClick && (this.events.outClose = w("click", { onElement: y, withCallback: function(S,
|
|
6654
|
-
n.preventOutsideClick ||
|
|
6655
|
-
} })), v(this.elements, (function(S,
|
|
6656
|
-
n.slidesContainer.appendChild(S.instance.create()), S.slideNode = n.slidesContainer.querySelectorAll(".gslide")[
|
|
6688
|
+
} })), this.settings.closeOnOutsideClick && (this.events.outClose = w("click", { onElement: y, withCallback: function(S, I) {
|
|
6689
|
+
n.preventOutsideClick || E(document.body, "glightbox-mobile") || M(S.target, ".ginner-container") || M(S.target, ".gbtn") || E(S.target, "gnext") || E(S.target, "gprev") || n.close();
|
|
6690
|
+
} })), v(this.elements, (function(S, I) {
|
|
6691
|
+
n.slidesContainer.appendChild(S.instance.create()), S.slideNode = n.slidesContainer.querySelectorAll(".gslide")[I];
|
|
6657
6692
|
})), ya && _(document.body, "glightbox-touch"), this.events.resize = w("resize", { onElement: window, withCallback: function() {
|
|
6658
6693
|
n.resize();
|
|
6659
6694
|
} }), this.built = !0;
|
|
6660
6695
|
} }, { key: "resize", value: function() {
|
|
6661
6696
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
|
|
6662
|
-
if ((n = n || this.activeSlide) && !
|
|
6697
|
+
if ((n = n || this.activeSlide) && !E(n, "zoomed")) {
|
|
6663
6698
|
var c = te(), l = n.querySelector(".gvideo-wrapper"), d = n.querySelector(".gslide-image"), h = this.slideDescription, m = c.width, g = c.height;
|
|
6664
6699
|
if (m <= 768 ? _(document.body, "glightbox-mobile") : P(document.body, "glightbox-mobile"), l || d) {
|
|
6665
6700
|
var y = !1;
|
|
6666
|
-
if (h && (
|
|
6701
|
+
if (h && (E(h, "description-bottom") || E(h, "description-top")) && !E(h, "gabsolute") && (y = !0), d) {
|
|
6667
6702
|
if (m <= 768) d.querySelector("img");
|
|
6668
6703
|
else if (y) {
|
|
6669
|
-
var A, S,
|
|
6670
|
-
B && (q = (S = B.getAttribute("data-height")) !== null && S !== void 0 ? S : q), $.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(
|
|
6704
|
+
var A, S, I = h.offsetHeight, $ = d.querySelector("img"), B = (A = this.elements[this.index]) === null || A === void 0 ? void 0 : A.node, q = "100vh";
|
|
6705
|
+
B && (q = (S = B.getAttribute("data-height")) !== null && S !== void 0 ? S : q), $.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(I, "px)")), h.setAttribute("style", "max-width: ".concat($.offsetWidth, "px;"));
|
|
6671
6706
|
}
|
|
6672
6707
|
}
|
|
6673
6708
|
if (l) {
|
|
6674
6709
|
var D = ie(this.settings.plyr.config, "ratio") ? this.settings.plyr.config.ratio : "";
|
|
6675
6710
|
if (!D) {
|
|
6676
|
-
var ee = l.clientWidth,
|
|
6677
|
-
D = "".concat(ee / ue, ":").concat(
|
|
6711
|
+
var ee = l.clientWidth, me = l.clientHeight, ue = ee / me;
|
|
6712
|
+
D = "".concat(ee / ue, ":").concat(me / ue);
|
|
6678
6713
|
}
|
|
6679
6714
|
var Le = D.split(":"), oe = this.settings.videosWidth, Re = this.settings.videosWidth, ze = (Re = xt(oe) || oe.indexOf("px") !== -1 ? parseInt(oe) : oe.indexOf("vw") !== -1 ? m * parseInt(oe) / 100 : oe.indexOf("vh") !== -1 ? g * parseInt(oe) / 100 : oe.indexOf("%") !== -1 ? m * parseInt(oe) / 100 : parseInt(l.clientWidth)) / (parseInt(Le[0]) / parseInt(Le[1]));
|
|
6680
6715
|
if (ze = Math.floor(ze), y && (g -= h.offsetHeight), Re > m || ze > g || g < ze && m > Re) {
|
|
@@ -6736,25 +6771,25 @@ function Js() {
|
|
|
6736
6771
|
return "3.3.1";
|
|
6737
6772
|
} }]);
|
|
6738
6773
|
return function() {
|
|
6739
|
-
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new
|
|
6774
|
+
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new $i(n);
|
|
6740
6775
|
return c.init(), c;
|
|
6741
6776
|
};
|
|
6742
6777
|
}));
|
|
6743
|
-
})(
|
|
6778
|
+
})(Rt)), Rt.exports;
|
|
6744
6779
|
}
|
|
6745
|
-
var
|
|
6746
|
-
const
|
|
6780
|
+
var Zs = Js();
|
|
6781
|
+
const Ks = /* @__PURE__ */ Ua(Zs);
|
|
6747
6782
|
var Qs = Object.getOwnPropertyDescriptor, en = (a, e, t, i) => {
|
|
6748
6783
|
for (var s = i > 1 ? void 0 : i ? Qs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6749
6784
|
(o = a[r]) && (s = o(s) || s);
|
|
6750
6785
|
return s;
|
|
6751
6786
|
};
|
|
6752
|
-
let
|
|
6787
|
+
let Zt = class extends Fe {
|
|
6753
6788
|
render() {
|
|
6754
6789
|
return u` <div class="cb-thinking"><span></span><span></span><span></span></div>`;
|
|
6755
6790
|
}
|
|
6756
6791
|
};
|
|
6757
|
-
|
|
6792
|
+
Zt.styles = J`
|
|
6758
6793
|
.cb-thinking {
|
|
6759
6794
|
text-align: center;
|
|
6760
6795
|
}
|
|
@@ -6792,15 +6827,15 @@ Kt.styles = J`
|
|
|
6792
6827
|
}
|
|
6793
6828
|
}
|
|
6794
6829
|
`;
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
],
|
|
6798
|
-
var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor,
|
|
6830
|
+
Zt = en([
|
|
6831
|
+
Z("cb-thinking")
|
|
6832
|
+
], Zt);
|
|
6833
|
+
var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor, ei = (a, e, t, i) => {
|
|
6799
6834
|
for (var s = i > 1 ? void 0 : i ? an(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6800
6835
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
6801
6836
|
return i && s && tn(e, t, s), s;
|
|
6802
6837
|
};
|
|
6803
|
-
let
|
|
6838
|
+
let qt = class extends re {
|
|
6804
6839
|
constructor() {
|
|
6805
6840
|
super(...arguments), this.files = [];
|
|
6806
6841
|
}
|
|
@@ -6816,7 +6851,7 @@ let Bt = class extends re {
|
|
|
6816
6851
|
</div>`;
|
|
6817
6852
|
}
|
|
6818
6853
|
};
|
|
6819
|
-
|
|
6854
|
+
qt.styles = J`
|
|
6820
6855
|
.cb-uploading {
|
|
6821
6856
|
text-align: left;
|
|
6822
6857
|
}
|
|
@@ -6834,12 +6869,12 @@ Bt.styles = J`
|
|
|
6834
6869
|
margin-right: 5px;
|
|
6835
6870
|
}
|
|
6836
6871
|
`;
|
|
6837
|
-
|
|
6872
|
+
ei([
|
|
6838
6873
|
x({ type: Array })
|
|
6839
|
-
],
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
],
|
|
6874
|
+
], qt.prototype, "files", 2);
|
|
6875
|
+
qt = ei([
|
|
6876
|
+
Z("cb-uploading")
|
|
6877
|
+
], qt);
|
|
6843
6878
|
const sn = J`
|
|
6844
6879
|
${ke}
|
|
6845
6880
|
:host {
|
|
@@ -6918,7 +6953,7 @@ oa([
|
|
|
6918
6953
|
x({ type: Boolean })
|
|
6919
6954
|
], mt.prototype, "inverse", 2);
|
|
6920
6955
|
mt = oa([
|
|
6921
|
-
|
|
6956
|
+
Z("cb-external-link")
|
|
6922
6957
|
], mt);
|
|
6923
6958
|
const on = '<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>', cn = '<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>', ln = '<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>', dn = '<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>', fn = '<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>', hn = '<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>', bn = '<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>';
|
|
6924
6959
|
var un = Object.defineProperty, pn = Object.getOwnPropertyDescriptor, ca = (a, e, t, i) => {
|
|
@@ -6972,9 +7007,9 @@ ca([
|
|
|
6972
7007
|
x({ type: String })
|
|
6973
7008
|
], yt.prototype, "url", 2);
|
|
6974
7009
|
yt = ca([
|
|
6975
|
-
|
|
7010
|
+
Z("cb-file")
|
|
6976
7011
|
], yt);
|
|
6977
|
-
const gn = '<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>', La = '<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>',
|
|
7012
|
+
const gn = '<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>', La = '<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>', ti = '<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>', ai = '<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>', mn = J`
|
|
6978
7013
|
pre code.hljs {
|
|
6979
7014
|
display: block;
|
|
6980
7015
|
overflow-x: auto;
|
|
@@ -8266,6 +8301,15 @@ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8266
8301
|
border-radius: 4px;
|
|
8267
8302
|
}
|
|
8268
8303
|
|
|
8304
|
+
.info-avatar {
|
|
8305
|
+
margin-right: 2px;
|
|
8306
|
+
color: rgba(0, 0, 0, 0.2);
|
|
8307
|
+
}
|
|
8308
|
+
|
|
8309
|
+
.info-avatar img {
|
|
8310
|
+
border-radius: 4px;
|
|
8311
|
+
}
|
|
8312
|
+
|
|
8269
8313
|
.user-message,
|
|
8270
8314
|
.assistant-message,
|
|
8271
8315
|
.system-message {
|
|
@@ -8346,7 +8390,7 @@ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8346
8390
|
margin-top: 2px;
|
|
8347
8391
|
//color: rgba(34, 34, 34, 0.6);
|
|
8348
8392
|
color: var(--enegelai-bot-message-system-color, rgba(34, 34, 34, 0.6));
|
|
8349
|
-
background-color: var(--enegelai-bot-message-system-background, rgba(254, 243, 199, 0.5));
|
|
8393
|
+
//background-color: var(--enegelai-bot-message-system-background, rgba(254, 243, 199, 0.5));
|
|
8350
8394
|
padding: 4px 12px 6px 12px;
|
|
8351
8395
|
}
|
|
8352
8396
|
|
|
@@ -8427,23 +8471,23 @@ function Ra(a, e) {
|
|
|
8427
8471
|
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>`;
|
|
8428
8472
|
}
|
|
8429
8473
|
function vn() {
|
|
8430
|
-
const a = new
|
|
8474
|
+
const a = new qi({
|
|
8431
8475
|
html: !0,
|
|
8432
8476
|
breaks: !0,
|
|
8433
8477
|
linkify: !0,
|
|
8434
8478
|
highlight(e, t) {
|
|
8435
|
-
if (!!(t &&
|
|
8479
|
+
if (!!(t && Ut.getLanguage(t))) {
|
|
8436
8480
|
const s = t ?? "";
|
|
8437
|
-
return Ra(
|
|
8481
|
+
return Ra(Ut.highlight(e, { language: s }).value, s);
|
|
8438
8482
|
}
|
|
8439
|
-
return Ra(
|
|
8483
|
+
return Ra(Ut.highlightAuto(e).value, "");
|
|
8440
8484
|
}
|
|
8441
8485
|
});
|
|
8442
|
-
return a.use(
|
|
8486
|
+
return a.use(Di, { attrs: { target: "_blank", rel: "noopener" } }), a;
|
|
8443
8487
|
}
|
|
8444
|
-
async function
|
|
8488
|
+
async function Kt(a) {
|
|
8445
8489
|
const t = vn().render(a);
|
|
8446
|
-
return u`${
|
|
8490
|
+
return u`${G(t)}`;
|
|
8447
8491
|
}
|
|
8448
8492
|
var wn = Object.defineProperty, xn = Object.getOwnPropertyDescriptor, nt = (a, e, t, i) => {
|
|
8449
8493
|
for (var s = i > 1 ? void 0 : i ? xn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
@@ -8452,7 +8496,7 @@ var wn = Object.defineProperty, xn = Object.getOwnPropertyDescriptor, nt = (a, e
|
|
|
8452
8496
|
};
|
|
8453
8497
|
let De = class extends re {
|
|
8454
8498
|
constructor() {
|
|
8455
|
-
super(...arguments), this.store = new it(this, b), this.type = "assistant", this.suppressFeedback = !1, this.lightbox =
|
|
8499
|
+
super(...arguments), this.store = new it(this, b), this.type = "assistant", this.suppressFeedback = !1, this.lightbox = Ks({
|
|
8456
8500
|
touchNavigation: !0,
|
|
8457
8501
|
loop: !0,
|
|
8458
8502
|
autoplayVideos: !0,
|
|
@@ -8517,7 +8561,7 @@ let De = class extends re {
|
|
|
8517
8561
|
this.copyBtns.forEach((a) => {
|
|
8518
8562
|
a.addEventListener("click", () => {
|
|
8519
8563
|
const e = a.parentElement?.nextElementSibling?.textContent;
|
|
8520
|
-
e &&
|
|
8564
|
+
e && es(e).then(() => {
|
|
8521
8565
|
a.textContent = "Success", setTimeout(() => {
|
|
8522
8566
|
a.textContent = "Copy";
|
|
8523
8567
|
}, 500);
|
|
@@ -8532,6 +8576,8 @@ let De = class extends re {
|
|
|
8532
8576
|
});
|
|
8533
8577
|
}
|
|
8534
8578
|
render() {
|
|
8579
|
+
if (this.message?.type === "info")
|
|
8580
|
+
return this.renderInfoMessage(this.message);
|
|
8535
8581
|
if (this.message?.type === "blocks") {
|
|
8536
8582
|
const a = this.message?.data?.blocks ?? [];
|
|
8537
8583
|
return u`<cb-blocks .blocks=${a}></cb-blocks>`;
|
|
@@ -8559,6 +8605,30 @@ let De = class extends re {
|
|
|
8559
8605
|
</sl-button>
|
|
8560
8606
|
</div>`;
|
|
8561
8607
|
}
|
|
8608
|
+
renderInfoMessage(a) {
|
|
8609
|
+
return u`
|
|
8610
|
+
<div class="cb-message cb-bot-message-wrapper" part="cb-message">
|
|
8611
|
+
<div class="avatar info-avatar xsmall" part="info-avatar" style="margin-top:4px;">${this.renderInfoMessageAvatar(a)}</div>
|
|
8612
|
+
<div
|
|
8613
|
+
class="cb-message__content
|
|
8614
|
+
${a.author}-message
|
|
8615
|
+
message-type-${a.type}"
|
|
8616
|
+
style="display: flex;"
|
|
8617
|
+
part="info-message-content"
|
|
8618
|
+
>
|
|
8619
|
+
<div class="cb-message-text">
|
|
8620
|
+
${Pt(
|
|
8621
|
+
this._getMessageText(a).then((e) => u`${e}`)
|
|
8622
|
+
)}
|
|
8623
|
+
</div>
|
|
8624
|
+
</div>
|
|
8625
|
+
</div>
|
|
8626
|
+
`;
|
|
8627
|
+
}
|
|
8628
|
+
renderInfoMessageAvatar(a) {
|
|
8629
|
+
const e = a.data?.userAvatar || "";
|
|
8630
|
+
return e !== "" ? u` <img src="${e}" style="width: 24px;height: 24px;" /> ` : pe`${G(b.setting.infoIconSvg)}`;
|
|
8631
|
+
}
|
|
8562
8632
|
renderMessage(a, e = "bot-message-content") {
|
|
8563
8633
|
return u`
|
|
8564
8634
|
<div
|
|
@@ -8574,7 +8644,7 @@ let De = class extends re {
|
|
|
8574
8644
|
`;
|
|
8575
8645
|
}
|
|
8576
8646
|
async _getMessageText(a) {
|
|
8577
|
-
return
|
|
8647
|
+
return Kt(a.data.text);
|
|
8578
8648
|
}
|
|
8579
8649
|
renderMessageContent(a) {
|
|
8580
8650
|
return a.isThinking ? u`<cb-thinking></cb-thinking>` : a.isUploading ? u`<cb-uploading .files="${a.data.files || []}"></cb-uploading>` : a.type === "text" ? u`<div class="cb-message-text">
|
|
@@ -8583,7 +8653,7 @@ let De = class extends re {
|
|
|
8583
8653
|
() => u`<div class="assistant-message-user-name">${a.data.userName}</div>`,
|
|
8584
8654
|
() => null
|
|
8585
8655
|
)}
|
|
8586
|
-
${
|
|
8656
|
+
${Pt(
|
|
8587
8657
|
this._getMessageText(a).then((e) => u`${e}`)
|
|
8588
8658
|
)}
|
|
8589
8659
|
</div>` : a.type === "file" ? u`${et(
|
|
@@ -8595,8 +8665,8 @@ let De = class extends re {
|
|
|
8595
8665
|
(e) => e.name,
|
|
8596
8666
|
(e) => u`<div>${e.name}</div>`
|
|
8597
8667
|
)}` : u`<div class="cb-message-text">
|
|
8598
|
-
${
|
|
8599
|
-
|
|
8668
|
+
${Pt(
|
|
8669
|
+
Kt(a.data.text?.toString() || "").then((e) => u`${e}`)
|
|
8600
8670
|
)}
|
|
8601
8671
|
</div>`;
|
|
8602
8672
|
}
|
|
@@ -8613,9 +8683,9 @@ let De = class extends re {
|
|
|
8613
8683
|
renderBotMessageAvatar(a) {
|
|
8614
8684
|
if (a.data.userName && a.data.userName !== "") {
|
|
8615
8685
|
const e = a.data?.userAvatar || "";
|
|
8616
|
-
return e !== "" ? u` <img src="${e}" style="width: 24px;height: 24px;" /> ` :
|
|
8686
|
+
return e !== "" ? u` <img src="${e}" style="width: 24px;height: 24px;" /> ` : pe`${G(b.setting.agentIconSvg)}`;
|
|
8617
8687
|
}
|
|
8618
|
-
return a.author === "system" ?
|
|
8688
|
+
return a.author === "system" ? pe`${G(b.setting.systemIconSvg)}` : pe`${G(b.setting.botIconSvg)}`;
|
|
8619
8689
|
}
|
|
8620
8690
|
renderBotMessage(a) {
|
|
8621
8691
|
return u`
|
|
@@ -8629,8 +8699,8 @@ let De = class extends re {
|
|
|
8629
8699
|
renderBotMessageFeedback(a) {
|
|
8630
8700
|
return this.suppressFeedback || !b.setting.feedbackEnabled || this.index < b.setting.startFeedbackFromMessage * 2 ? null : u`
|
|
8631
8701
|
<div class="cb-message-feedback-tools" part="feedback-wrapper">
|
|
8632
|
-
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${
|
|
8633
|
-
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${
|
|
8702
|
+
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${pe`${G(ti)}`}</div>
|
|
8703
|
+
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${pe`${G(ai)}`}</div>
|
|
8634
8704
|
</div>
|
|
8635
8705
|
`;
|
|
8636
8706
|
}
|
|
@@ -8647,12 +8717,12 @@ let De = class extends re {
|
|
|
8647
8717
|
${W(
|
|
8648
8718
|
b.appearanceUserMessageAvatarPosition === "left",
|
|
8649
8719
|
() => u`
|
|
8650
|
-
<div class="avatar user-avatar" part="user-avatar">${
|
|
8720
|
+
<div class="avatar user-avatar" part="user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8651
8721
|
${this.renderMessage(a, "user-message-content")}
|
|
8652
8722
|
`,
|
|
8653
8723
|
() => u`
|
|
8654
8724
|
${this.renderMessage(a, "user-message-content")}
|
|
8655
|
-
<div class="avatar user-avatar" part="user-avatar">${
|
|
8725
|
+
<div class="avatar user-avatar" part="user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8656
8726
|
`
|
|
8657
8727
|
)}
|
|
8658
8728
|
</div>
|
|
@@ -8670,12 +8740,12 @@ let De = class extends re {
|
|
|
8670
8740
|
${W(
|
|
8671
8741
|
b.appearanceUserMessageAvatarPosition === "left",
|
|
8672
8742
|
() => u`
|
|
8673
|
-
<div class="avatar user-avatar">${
|
|
8743
|
+
<div class="avatar user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8674
8744
|
${this.renderMessage(a, "user-message-content")}
|
|
8675
8745
|
`,
|
|
8676
8746
|
() => u`
|
|
8677
8747
|
${this.renderMessage(a, "user-message-content")}
|
|
8678
|
-
<div class="avatar user-avatar">${
|
|
8748
|
+
<div class="avatar user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8679
8749
|
`
|
|
8680
8750
|
)}
|
|
8681
8751
|
</div>
|
|
@@ -8702,7 +8772,7 @@ nt([
|
|
|
8702
8772
|
Va("img")
|
|
8703
8773
|
], De.prototype, "glightboxImages", 2);
|
|
8704
8774
|
De = nt([
|
|
8705
|
-
|
|
8775
|
+
Z("cb-message")
|
|
8706
8776
|
], De);
|
|
8707
8777
|
var kn = Object.defineProperty, _n = Object.getOwnPropertyDescriptor, Te = (a, e, t, i) => {
|
|
8708
8778
|
for (var s = i > 1 ? void 0 : i ? _n(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
@@ -8756,8 +8826,8 @@ let ye = class extends re {
|
|
|
8756
8826
|
return !b.setting.disclaimerMessage || !b.isConversationStart() ? null : u`
|
|
8757
8827
|
<details class="cb-disclaimer-wrapper" part="disclaimer-wrapper">
|
|
8758
8828
|
<summary class="cb-disclaimer-message" part="disclaimer-message">
|
|
8759
|
-
${
|
|
8760
|
-
|
|
8829
|
+
${Pt(
|
|
8830
|
+
Kt(b.setting.disclaimerMessage).then((a) => u`${a}`)
|
|
8761
8831
|
)}
|
|
8762
8832
|
</summary>
|
|
8763
8833
|
</details>
|
|
@@ -9021,7 +9091,7 @@ let ye = class extends re {
|
|
|
9021
9091
|
`;
|
|
9022
9092
|
}
|
|
9023
9093
|
};
|
|
9024
|
-
ye.styles =
|
|
9094
|
+
ye.styles = js;
|
|
9025
9095
|
Te([
|
|
9026
9096
|
x({ type: Array })
|
|
9027
9097
|
], ye.prototype, "messages", 2);
|
|
@@ -9050,7 +9120,7 @@ Te([
|
|
|
9050
9120
|
sa({ capture: !1, passive: !0 })
|
|
9051
9121
|
], ye.prototype, "invokeHubspotMeetingAction", 1);
|
|
9052
9122
|
ye = Te([
|
|
9053
|
-
|
|
9123
|
+
Z("cb-message-list")
|
|
9054
9124
|
], ye);
|
|
9055
9125
|
const Sn = J`
|
|
9056
9126
|
${ke}
|
|
@@ -9094,7 +9164,7 @@ const Sn = J`
|
|
|
9094
9164
|
align-items: center;
|
|
9095
9165
|
margin: 6px 2px;
|
|
9096
9166
|
}
|
|
9097
|
-
`,
|
|
9167
|
+
`, ii = '<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>', si = '<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>', ni = '<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>', la = '<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>';
|
|
9098
9168
|
var Cn = Object.defineProperty, An = Object.getOwnPropertyDescriptor, Ie = (a, e, t, i) => {
|
|
9099
9169
|
for (var s = i > 1 ? void 0 : i ? An(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9100
9170
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
@@ -9135,7 +9205,7 @@ let ve = class extends re {
|
|
|
9135
9205
|
});
|
|
9136
9206
|
}
|
|
9137
9207
|
async _sendFileHandler() {
|
|
9138
|
-
const a = await Ga(!1);
|
|
9208
|
+
const a = await Ga(!1, b.setting.fileUploadEnabledExtensions);
|
|
9139
9209
|
this.emit("message:send:file", {
|
|
9140
9210
|
detail: {
|
|
9141
9211
|
files: a
|
|
@@ -9174,7 +9244,7 @@ let ve = class extends re {
|
|
|
9174
9244
|
${W(
|
|
9175
9245
|
b.setting.sendIconSvg !== "",
|
|
9176
9246
|
() => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
|
|
9177
|
-
() => u`<cb-icon part="user-input-send-icon" svg="${
|
|
9247
|
+
() => u`<cb-icon part="user-input-send-icon" svg="${ii}"></cb-icon>`
|
|
9178
9248
|
)}
|
|
9179
9249
|
</sl-button>
|
|
9180
9250
|
${W(
|
|
@@ -9184,7 +9254,7 @@ let ve = class extends re {
|
|
|
9184
9254
|
${W(
|
|
9185
9255
|
b.setting.attachIconSvg !== "",
|
|
9186
9256
|
() => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
|
|
9187
|
-
() => u`<cb-icon part="user-input-attach-icon" svg="${
|
|
9257
|
+
() => u`<cb-icon part="user-input-attach-icon" svg="${si}"></cb-icon>`
|
|
9188
9258
|
)}
|
|
9189
9259
|
<!-- select file input -->
|
|
9190
9260
|
<input type="file" id="file" name="file" class="file-input" />
|
|
@@ -9199,7 +9269,7 @@ let ve = class extends re {
|
|
|
9199
9269
|
${W(
|
|
9200
9270
|
b.webAudioStarted,
|
|
9201
9271
|
() => u`<cb-icon svg="${la}"></cb-icon>`,
|
|
9202
|
-
() => u`<cb-icon svg="${
|
|
9272
|
+
() => u`<cb-icon svg="${ni}"></cb-icon>`
|
|
9203
9273
|
)}
|
|
9204
9274
|
</sl-button>
|
|
9205
9275
|
`,
|
|
@@ -9242,7 +9312,7 @@ Ie([
|
|
|
9242
9312
|
xe("sl-textarea")
|
|
9243
9313
|
], ve.prototype, "inputElement", 2);
|
|
9244
9314
|
ve = Ie([
|
|
9245
|
-
|
|
9315
|
+
Z("cb-user-input")
|
|
9246
9316
|
], ve);
|
|
9247
9317
|
const Mn = J`
|
|
9248
9318
|
${ke}
|
|
@@ -9349,7 +9419,7 @@ let we = class extends re {
|
|
|
9349
9419
|
});
|
|
9350
9420
|
}
|
|
9351
9421
|
async _sendFileHandler() {
|
|
9352
|
-
const a = await Ga(!1);
|
|
9422
|
+
const a = await Ga(!1, b.setting.fileUploadEnabledExtensions);
|
|
9353
9423
|
this.emit("message:send:file", {
|
|
9354
9424
|
detail: {
|
|
9355
9425
|
files: a
|
|
@@ -9399,7 +9469,7 @@ let we = class extends re {
|
|
|
9399
9469
|
this.enableFileUpload,
|
|
9400
9470
|
() => u`
|
|
9401
9471
|
<button type="button" class="circle-btn" part="upload-button" title="Upload" @click=${this._sendFileHandler}>
|
|
9402
|
-
${
|
|
9472
|
+
${G(Tn)}
|
|
9403
9473
|
</button>
|
|
9404
9474
|
`,
|
|
9405
9475
|
() => u``
|
|
@@ -9419,7 +9489,7 @@ let we = class extends re {
|
|
|
9419
9489
|
@keydown=${this._keyDownHandler}
|
|
9420
9490
|
></sl-textarea>
|
|
9421
9491
|
<button type="button" class="circle-btn ${this.getCtrlClass()}" part="control-button" @click=${this._ctrlHandler}>
|
|
9422
|
-
${
|
|
9492
|
+
${G(this.getCtrlIconSvg())}
|
|
9423
9493
|
</button>
|
|
9424
9494
|
</div>
|
|
9425
9495
|
</div>
|
|
@@ -9454,7 +9524,7 @@ let we = class extends re {
|
|
|
9454
9524
|
${W(
|
|
9455
9525
|
b.setting.sendIconSvg !== "",
|
|
9456
9526
|
() => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
|
|
9457
|
-
() => u`<cb-icon part="user-input-send-icon" svg="${
|
|
9527
|
+
() => u`<cb-icon part="user-input-send-icon" svg="${ii}"></cb-icon>`
|
|
9458
9528
|
)}
|
|
9459
9529
|
</sl-button>
|
|
9460
9530
|
${W(
|
|
@@ -9464,7 +9534,7 @@ let we = class extends re {
|
|
|
9464
9534
|
${W(
|
|
9465
9535
|
b.setting.attachIconSvg !== "",
|
|
9466
9536
|
() => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
|
|
9467
|
-
() => u`<cb-icon part="user-input-attach-icon" svg="${
|
|
9537
|
+
() => u`<cb-icon part="user-input-attach-icon" svg="${si}"></cb-icon>`
|
|
9468
9538
|
)}
|
|
9469
9539
|
<!-- select file input -->
|
|
9470
9540
|
<input type="file" id="file" name="file" class="file-input" />
|
|
@@ -9479,7 +9549,7 @@ let we = class extends re {
|
|
|
9479
9549
|
${W(
|
|
9480
9550
|
b.webAudioStarted,
|
|
9481
9551
|
() => u`<cb-icon svg="${la}"></cb-icon>`,
|
|
9482
|
-
() => u`<cb-icon svg="${
|
|
9552
|
+
() => u`<cb-icon svg="${ni}"></cb-icon>`
|
|
9483
9553
|
)}
|
|
9484
9554
|
</sl-button>
|
|
9485
9555
|
`,
|
|
@@ -9522,9 +9592,9 @@ Ee([
|
|
|
9522
9592
|
xe("sl-textarea")
|
|
9523
9593
|
], we.prototype, "inputElement", 2);
|
|
9524
9594
|
we = Ee([
|
|
9525
|
-
|
|
9595
|
+
Z("cb-user-input-mm")
|
|
9526
9596
|
], we);
|
|
9527
|
-
const
|
|
9597
|
+
const ri = '<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>', Pn = J`
|
|
9528
9598
|
${ke}
|
|
9529
9599
|
|
|
9530
9600
|
sl-dialog::part(base) {
|
|
@@ -9559,7 +9629,7 @@ const ni = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="c
|
|
|
9559
9629
|
gap: 8px;
|
|
9560
9630
|
}
|
|
9561
9631
|
`;
|
|
9562
|
-
var Ln = Object.defineProperty, Rn = Object.getOwnPropertyDescriptor,
|
|
9632
|
+
var Ln = Object.defineProperty, Rn = Object.getOwnPropertyDescriptor, Vt = (a, e, t, i) => {
|
|
9563
9633
|
for (var s = i > 1 ? void 0 : i ? Rn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9564
9634
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9565
9635
|
return i && s && Ln(e, t, s), s;
|
|
@@ -9595,7 +9665,7 @@ let ct = class extends re {
|
|
|
9595
9665
|
<cb-icon
|
|
9596
9666
|
color="default"
|
|
9597
9667
|
style="font-size: 1em;"
|
|
9598
|
-
svg="${
|
|
9668
|
+
svg="${ri}"
|
|
9599
9669
|
></cb-icon>
|
|
9600
9670
|
</sl-button>
|
|
9601
9671
|
</header>
|
|
@@ -9609,24 +9679,24 @@ let ct = class extends re {
|
|
|
9609
9679
|
}
|
|
9610
9680
|
};
|
|
9611
9681
|
ct.styles = Pn;
|
|
9612
|
-
|
|
9682
|
+
Vt([
|
|
9613
9683
|
x({ type: Boolean })
|
|
9614
9684
|
], ct.prototype, "open", 2);
|
|
9615
|
-
|
|
9685
|
+
Vt([
|
|
9616
9686
|
x({ type: String, attribute: "label" })
|
|
9617
9687
|
], ct.prototype, "label", 2);
|
|
9618
|
-
|
|
9688
|
+
Vt([
|
|
9619
9689
|
x({ type: Number })
|
|
9620
9690
|
], ct.prototype, "zindex", 2);
|
|
9621
|
-
ct =
|
|
9622
|
-
|
|
9691
|
+
ct = Vt([
|
|
9692
|
+
Z("cb-dialog")
|
|
9623
9693
|
], ct);
|
|
9624
|
-
var zn = Object.defineProperty, On = Object.getOwnPropertyDescriptor,
|
|
9694
|
+
var zn = Object.defineProperty, On = Object.getOwnPropertyDescriptor, oi = (a, e, t, i) => {
|
|
9625
9695
|
for (var s = i > 1 ? void 0 : i ? On(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9626
9696
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9627
9697
|
return i && s && zn(e, t, s), s;
|
|
9628
9698
|
};
|
|
9629
|
-
let
|
|
9699
|
+
let Dt = class extends re {
|
|
9630
9700
|
constructor() {
|
|
9631
9701
|
super(...arguments), this.open = !1;
|
|
9632
9702
|
}
|
|
@@ -9660,7 +9730,7 @@ let qt = class extends re {
|
|
|
9660
9730
|
this.emit("cancel");
|
|
9661
9731
|
}
|
|
9662
9732
|
};
|
|
9663
|
-
|
|
9733
|
+
Dt.styles = J`
|
|
9664
9734
|
.cb-clear-message-dialog {
|
|
9665
9735
|
}
|
|
9666
9736
|
|
|
@@ -9668,12 +9738,12 @@ qt.styles = J`
|
|
|
9668
9738
|
z-index: 1000;
|
|
9669
9739
|
}
|
|
9670
9740
|
`;
|
|
9671
|
-
|
|
9741
|
+
oi([
|
|
9672
9742
|
x({ type: Boolean })
|
|
9673
|
-
],
|
|
9674
|
-
|
|
9675
|
-
|
|
9676
|
-
],
|
|
9743
|
+
], Dt.prototype, "open", 2);
|
|
9744
|
+
Dt = oi([
|
|
9745
|
+
Z("cb-clear-message-dialog")
|
|
9746
|
+
], Dt);
|
|
9677
9747
|
const Bn = J`
|
|
9678
9748
|
:host {
|
|
9679
9749
|
// width: 380px;
|
|
@@ -9875,7 +9945,7 @@ dt([
|
|
|
9875
9945
|
x({ type: Boolean })
|
|
9876
9946
|
], Xe.prototype, "customRequest", 2);
|
|
9877
9947
|
Xe = dt([
|
|
9878
|
-
|
|
9948
|
+
Z("cb-setting")
|
|
9879
9949
|
], Xe);
|
|
9880
9950
|
const Fn = J`
|
|
9881
9951
|
${ke}
|
|
@@ -9991,12 +10061,12 @@ const Fn = J`
|
|
|
9991
10061
|
margin: 4px 4px 0px 0px;
|
|
9992
10062
|
}
|
|
9993
10063
|
`;
|
|
9994
|
-
var jn = Object.defineProperty, Hn = Object.getOwnPropertyDescriptor,
|
|
10064
|
+
var jn = Object.defineProperty, Hn = Object.getOwnPropertyDescriptor, ci = (a, e, t, i) => {
|
|
9995
10065
|
for (var s = i > 1 ? void 0 : i ? Hn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9996
10066
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9997
10067
|
return i && s && jn(e, t, s), s;
|
|
9998
10068
|
};
|
|
9999
|
-
let
|
|
10069
|
+
let Ft = class extends re {
|
|
10000
10070
|
constructor() {
|
|
10001
10071
|
super(...arguments), this.store = new it(this, b), this.open = !1;
|
|
10002
10072
|
}
|
|
@@ -10028,7 +10098,7 @@ let Dt = class extends re {
|
|
|
10028
10098
|
return a = b.appearanceAnchorBadgeVariant, a;
|
|
10029
10099
|
}
|
|
10030
10100
|
renderPopupLogo() {
|
|
10031
|
-
return b.setting.popupLogoUrl !== "" ? u`<img class="cb-engage-popup-img" src="${b.setting.popupLogoUrl}" />` : b.setting.popupLogoSvg !== "" ? u`<div class="cb-engage-popup-logo">${
|
|
10101
|
+
return b.setting.popupLogoUrl !== "" ? u`<img class="cb-engage-popup-img" src="${b.setting.popupLogoUrl}" />` : b.setting.popupLogoSvg !== "" ? u`<div class="cb-engage-popup-logo">${pe`${G(b.setting.popupLogoSvg)}`}</div>` : b.setting.logoUrl !== "" ? u`<img class="cb-engage-popup-img" src="${b.setting.logoUrl}" />` : b.setting.logoSvg !== "" ? u`<div class="cb-engage-popup-logo">${pe`${G(b.setting.logoSvg)}`}</div>` : null;
|
|
10032
10102
|
}
|
|
10033
10103
|
render() {
|
|
10034
10104
|
return u`
|
|
@@ -10037,8 +10107,8 @@ let Dt = class extends re {
|
|
|
10037
10107
|
<sl-button slot="anchor" label="Start" size="large" variant="primary" class="anchor-button" circle>
|
|
10038
10108
|
${W(
|
|
10039
10109
|
this.open,
|
|
10040
|
-
() => u`<div class="cb-anchor-icon" part="anchor-icon">${
|
|
10041
|
-
() => u`<div class="cb-anchor-icon" part="anchor-icon">${
|
|
10110
|
+
() => u`<div class="cb-anchor-icon" part="anchor-icon">${pe`${G(b.setting.anchorCloseSvg)}`}</div>`,
|
|
10111
|
+
() => u`<div class="cb-anchor-icon" part="anchor-icon">${pe`${G(b.setting.anchorOpenSvg)}`}</div>`
|
|
10042
10112
|
)}
|
|
10043
10113
|
${W(
|
|
10044
10114
|
!this.open && b.unreadMessages > 0,
|
|
@@ -10047,7 +10117,7 @@ let Dt = class extends re {
|
|
|
10047
10117
|
)}
|
|
10048
10118
|
</sl-button>
|
|
10049
10119
|
<div class="cb-engage-popup">
|
|
10050
|
-
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${
|
|
10120
|
+
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${pe`${G(ri)}`}</div>
|
|
10051
10121
|
<div class="cb-engage-popup-content">
|
|
10052
10122
|
${this.renderPopupLogo()}
|
|
10053
10123
|
<div>${b.setting.engageMessage}</div>
|
|
@@ -10058,17 +10128,17 @@ let Dt = class extends re {
|
|
|
10058
10128
|
`;
|
|
10059
10129
|
}
|
|
10060
10130
|
};
|
|
10061
|
-
|
|
10062
|
-
|
|
10131
|
+
Ft.styles = Fn;
|
|
10132
|
+
ci([
|
|
10063
10133
|
x({ type: Boolean })
|
|
10064
|
-
],
|
|
10065
|
-
|
|
10066
|
-
|
|
10067
|
-
],
|
|
10134
|
+
], Ft.prototype, "open", 2);
|
|
10135
|
+
Ft = ci([
|
|
10136
|
+
Z("cb-anchor")
|
|
10137
|
+
], Ft);
|
|
10068
10138
|
const Vn = J`
|
|
10069
10139
|
${ke}
|
|
10070
10140
|
`, Oa = '<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>', Nn = '<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>', Un = '<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>', Wn = '<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>';
|
|
10071
|
-
var Gn = Object.defineProperty, Xn = Object.getOwnPropertyDescriptor,
|
|
10141
|
+
var Gn = Object.defineProperty, Xn = Object.getOwnPropertyDescriptor, li = (a, e, t, i) => {
|
|
10072
10142
|
for (var s = i > 1 ? void 0 : i ? Xn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10073
10143
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10074
10144
|
return i && s && Gn(e, t, s), s;
|
|
@@ -10095,7 +10165,7 @@ const Ba = {
|
|
|
10095
10165
|
icon: Wn
|
|
10096
10166
|
}
|
|
10097
10167
|
};
|
|
10098
|
-
let
|
|
10168
|
+
let jt = class extends re {
|
|
10099
10169
|
constructor() {
|
|
10100
10170
|
super(...arguments), this.status = "info";
|
|
10101
10171
|
}
|
|
@@ -10104,13 +10174,13 @@ let Ft = class extends re {
|
|
|
10104
10174
|
return u`<cb-icon svg=${e} color="${a}"></cb-icon>`;
|
|
10105
10175
|
}
|
|
10106
10176
|
};
|
|
10107
|
-
|
|
10108
|
-
|
|
10177
|
+
jt.styles = Wa;
|
|
10178
|
+
li([
|
|
10109
10179
|
x({ type: String })
|
|
10110
|
-
],
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
],
|
|
10180
|
+
], jt.prototype, "status", 2);
|
|
10181
|
+
jt = li([
|
|
10182
|
+
Z("cb-status-icon")
|
|
10183
|
+
], jt);
|
|
10114
10184
|
var Yn = Object.getOwnPropertyDescriptor, Jn = (a, e, t, i) => {
|
|
10115
10185
|
for (var s = i > 1 ? void 0 : i ? Yn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10116
10186
|
(o = a[r]) && (s = o(s) || s);
|
|
@@ -10134,9 +10204,9 @@ let Qt = class extends re {
|
|
|
10134
10204
|
};
|
|
10135
10205
|
Qt.styles = Vn;
|
|
10136
10206
|
Qt = Jn([
|
|
10137
|
-
|
|
10207
|
+
Z("cb-auth-alert")
|
|
10138
10208
|
], Qt);
|
|
10139
|
-
const
|
|
10209
|
+
const Zn = J`
|
|
10140
10210
|
sl-dialog::part(base) {
|
|
10141
10211
|
z-index: 1000;
|
|
10142
10212
|
}
|
|
@@ -10220,10 +10290,10 @@ const Kn = J`
|
|
|
10220
10290
|
filter: alpha(opacity=80);
|
|
10221
10291
|
}
|
|
10222
10292
|
`;
|
|
10223
|
-
var
|
|
10293
|
+
var Kn = Object.defineProperty, Qn = Object.getOwnPropertyDescriptor, ft = (a, e, t, i) => {
|
|
10224
10294
|
for (var s = i > 1 ? void 0 : i ? Qn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10225
10295
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10226
|
-
return i && s &&
|
|
10296
|
+
return i && s && Kn(e, t, s), s;
|
|
10227
10297
|
};
|
|
10228
10298
|
const qa = Je.noConflict(), er = '<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>';
|
|
10229
10299
|
let Ye = class extends re {
|
|
@@ -10259,7 +10329,7 @@ let Ye = class extends re {
|
|
|
10259
10329
|
b.feedbackScore = 0;
|
|
10260
10330
|
}}"
|
|
10261
10331
|
>
|
|
10262
|
-
${
|
|
10332
|
+
${pe`${G(ai)}`}
|
|
10263
10333
|
</div>
|
|
10264
10334
|
<sl-rating id="cb-feedback-rating-el" class="cb-feedback-rating" @sl-change="${this._ratingChangeHandler}" label="Rating" precision="1" .value=${b.feedbackScore}></sl-rating>
|
|
10265
10335
|
<div
|
|
@@ -10268,7 +10338,7 @@ let Ye = class extends re {
|
|
|
10268
10338
|
b.feedbackScore = 5;
|
|
10269
10339
|
}}"
|
|
10270
10340
|
>
|
|
10271
|
-
${
|
|
10341
|
+
${pe`${G(ti)}`}
|
|
10272
10342
|
</div>
|
|
10273
10343
|
</div>
|
|
10274
10344
|
<div style="display: flex">
|
|
@@ -10289,7 +10359,7 @@ let Ye = class extends re {
|
|
|
10289
10359
|
this._comments.value = "", await b.submitFeedback(a, e, t);
|
|
10290
10360
|
}
|
|
10291
10361
|
};
|
|
10292
|
-
Ye.styles =
|
|
10362
|
+
Ye.styles = Zn;
|
|
10293
10363
|
ft([
|
|
10294
10364
|
x({ type: Number })
|
|
10295
10365
|
], Ye.prototype, "zindex", 2);
|
|
@@ -10306,7 +10376,7 @@ ft([
|
|
|
10306
10376
|
xe("#cb-feedback-email-el")
|
|
10307
10377
|
], Ye.prototype, "_email", 2);
|
|
10308
10378
|
Ye = ft([
|
|
10309
|
-
|
|
10379
|
+
Z("cb-dialog-feedback")
|
|
10310
10380
|
], Ye);
|
|
10311
10381
|
const tr = J`
|
|
10312
10382
|
${ke}
|
|
@@ -10616,7 +10686,7 @@ class ar extends HTMLElement {
|
|
|
10616
10686
|
}
|
|
10617
10687
|
customElements.get("volume-visualizer") || customElements.define("volume-visualizer", ar);
|
|
10618
10688
|
const da = 1, Da = 2;
|
|
10619
|
-
class
|
|
10689
|
+
class di extends HTMLElement {
|
|
10620
10690
|
constructor() {
|
|
10621
10691
|
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();
|
|
10622
10692
|
}
|
|
@@ -10698,7 +10768,7 @@ class li extends HTMLElement {
|
|
|
10698
10768
|
this._stop(), this._analyserInput = null, this._analyserOutput = null;
|
|
10699
10769
|
}
|
|
10700
10770
|
}
|
|
10701
|
-
class ir extends
|
|
10771
|
+
class ir extends di {
|
|
10702
10772
|
constructor() {
|
|
10703
10773
|
super(), this._ribbons = [], this._lastTime = 0, this._ribbons.push(
|
|
10704
10774
|
new It(
|
|
@@ -10769,8 +10839,8 @@ class It {
|
|
|
10769
10839
|
if (v === 0)
|
|
10770
10840
|
e.moveTo(k, w);
|
|
10771
10841
|
else {
|
|
10772
|
-
const _ = (v - 1) * o, P = this.renderPoints[v - 1] * i * 0.8,
|
|
10773
|
-
e.bezierCurveTo(
|
|
10842
|
+
const _ = (v - 1) * o, P = this.renderPoints[v - 1] * i * 0.8, E = _ + o * 0.5, M = P, L = k - o * 0.5, C = w;
|
|
10843
|
+
e.bezierCurveTo(E, M, L, C, k, w);
|
|
10774
10844
|
}
|
|
10775
10845
|
}
|
|
10776
10846
|
e.lineTo(t, 0), e.lineTo(0, 0), s === da && !r ? this.currentColorRGB = this._lerpColor(this.currentColorRGB, this.inputColorRGB, 0.02) : this.currentColorRGB = this._lerpColor(this.currentColorRGB, this.outputColorRGB, 0.02);
|
|
@@ -10801,7 +10871,7 @@ class It {
|
|
|
10801
10871
|
}
|
|
10802
10872
|
}
|
|
10803
10873
|
}
|
|
10804
|
-
class sr extends
|
|
10874
|
+
class sr extends di {
|
|
10805
10875
|
constructor() {
|
|
10806
10876
|
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;
|
|
10807
10877
|
}
|
|
@@ -10843,8 +10913,8 @@ class sr extends li {
|
|
|
10843
10913
|
for (let w = 0; w < this._numBars; w++) {
|
|
10844
10914
|
const _ = this._renderHeights[w] * t.height * 0.9, P = p - (w + 1) * (f * 1.2);
|
|
10845
10915
|
e.fillRect(P, v - _ / 2, f, _);
|
|
10846
|
-
const
|
|
10847
|
-
e.fillRect(
|
|
10916
|
+
const E = p + w * (f * 1.2);
|
|
10917
|
+
e.fillRect(E, v - _ / 2, f, _);
|
|
10848
10918
|
}
|
|
10849
10919
|
e.restore();
|
|
10850
10920
|
}
|
|
@@ -10863,7 +10933,7 @@ let ea = class extends re {
|
|
|
10863
10933
|
super(...arguments), this.store = new it(this, b), this.unsubscribeTypingActive = b.subscribe(
|
|
10864
10934
|
this._handleTypingActiveChanged.bind(this),
|
|
10865
10935
|
["typingActive"]
|
|
10866
|
-
), this.volumeVisualizerRef =
|
|
10936
|
+
), this.volumeVisualizerRef = Fi(), this.volumeVisualizerInitialized = !1;
|
|
10867
10937
|
}
|
|
10868
10938
|
/*
|
|
10869
10939
|
createRenderRoot() {
|
|
@@ -10893,7 +10963,7 @@ let ea = class extends re {
|
|
|
10893
10963
|
!0,
|
|
10894
10964
|
() => u`
|
|
10895
10965
|
<button type="button" part="${b.webAudioMuted ? "audio-unmute-button" : "audio-mute-button"}" class="circle-btn ${b.webAudioMuted ? "danger" : "clear"}" title="${b.webAudioMuted ? "Unmute" : "Mute"}" @click=${this._toggleMute}>
|
|
10896
|
-
${
|
|
10966
|
+
${G(nr)}
|
|
10897
10967
|
</button>
|
|
10898
10968
|
`,
|
|
10899
10969
|
() => u``
|
|
@@ -10902,7 +10972,7 @@ let ea = class extends re {
|
|
|
10902
10972
|
${this.renderVisualizer()}
|
|
10903
10973
|
</div>
|
|
10904
10974
|
<button type="button" part="audio-end-button" class="circle-btn clear" title="End" @click=${this._toggleHangup}>
|
|
10905
|
-
${
|
|
10975
|
+
${G(la)}
|
|
10906
10976
|
</button>
|
|
10907
10977
|
</div>
|
|
10908
10978
|
</div>` : null;
|
|
@@ -10960,7 +11030,7 @@ let ea = class extends re {
|
|
|
10960
11030
|
};
|
|
10961
11031
|
ea.styles = tr;
|
|
10962
11032
|
ea = or([
|
|
10963
|
-
|
|
11033
|
+
Z("cb-audio-controls")
|
|
10964
11034
|
], ea);
|
|
10965
11035
|
class ta extends Error {
|
|
10966
11036
|
response;
|
|
@@ -10971,7 +11041,7 @@ class ta extends Error {
|
|
|
10971
11041
|
super(`Request failed with ${f}: ${t.method} ${t.url}`), this.name = "HTTPError", this.response = e, this.request = t, this.options = i;
|
|
10972
11042
|
}
|
|
10973
11043
|
}
|
|
10974
|
-
class
|
|
11044
|
+
class fi extends Error {
|
|
10975
11045
|
name = "NonError";
|
|
10976
11046
|
value;
|
|
10977
11047
|
constructor(e) {
|
|
@@ -10983,13 +11053,13 @@ class di extends Error {
|
|
|
10983
11053
|
super(t), this.value = e;
|
|
10984
11054
|
}
|
|
10985
11055
|
}
|
|
10986
|
-
class
|
|
11056
|
+
class Gt extends Error {
|
|
10987
11057
|
name = "ForceRetryError";
|
|
10988
11058
|
customDelay;
|
|
10989
11059
|
code;
|
|
10990
11060
|
customRequest;
|
|
10991
11061
|
constructor(e) {
|
|
10992
|
-
const t = e?.cause ? e.cause instanceof Error ? e.cause : new
|
|
11062
|
+
const t = e?.cause ? e.cause instanceof Error ? e.cause : new fi(e.cause) : void 0;
|
|
10993
11063
|
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;
|
|
10994
11064
|
}
|
|
10995
11065
|
}
|
|
@@ -11012,7 +11082,7 @@ const Fa = (() => {
|
|
|
11012
11082
|
throw s;
|
|
11013
11083
|
}
|
|
11014
11084
|
return a && !e;
|
|
11015
|
-
})(), cr = typeof globalThis.AbortController == "function",
|
|
11085
|
+
})(), cr = typeof globalThis.AbortController == "function", hi = typeof globalThis.AbortSignal == "function" && typeof globalThis.AbortSignal.any == "function", lr = typeof globalThis.ReadableStream == "function", dr = typeof globalThis.FormData == "function", bi = ["get", "post", "put", "patch", "head", "delete"], fr = {
|
|
11016
11086
|
json: "application/json",
|
|
11017
11087
|
text: "text/*",
|
|
11018
11088
|
formData: "multipart/form-data",
|
|
@@ -11021,14 +11091,14 @@ const Fa = (() => {
|
|
|
11021
11091
|
// Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).
|
|
11022
11092
|
// We still feature-check at runtime before exposing the shortcut.
|
|
11023
11093
|
bytes: "*/*"
|
|
11024
|
-
},
|
|
11025
|
-
class
|
|
11094
|
+
}, Xt = 2147483647, hr = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length, ui = Symbol("stop");
|
|
11095
|
+
class pi {
|
|
11026
11096
|
options;
|
|
11027
11097
|
constructor(e) {
|
|
11028
11098
|
this.options = e;
|
|
11029
11099
|
}
|
|
11030
11100
|
}
|
|
11031
|
-
const br = (a) => new
|
|
11101
|
+
const br = (a) => new pi(a), ur = {
|
|
11032
11102
|
json: !0,
|
|
11033
11103
|
parseJson: !0,
|
|
11034
11104
|
stringifyJson: !0,
|
|
@@ -11087,7 +11157,7 @@ const br = (a) => new ui(a), ur = {
|
|
|
11087
11157
|
return 0;
|
|
11088
11158
|
}
|
|
11089
11159
|
return 0;
|
|
11090
|
-
},
|
|
11160
|
+
}, gi = (a, e, t) => {
|
|
11091
11161
|
let i, s = 0;
|
|
11092
11162
|
return a.pipeThrough(new TransformStream({
|
|
11093
11163
|
transform(r, o) {
|
|
@@ -11112,7 +11182,7 @@ const br = (a) => new ui(a), ur = {
|
|
|
11112
11182
|
headers: a.headers
|
|
11113
11183
|
});
|
|
11114
11184
|
const t = Math.max(0, Number(a.headers.get("content-length")) || 0);
|
|
11115
|
-
return new Response(
|
|
11185
|
+
return new Response(gi(a.body, t, e), {
|
|
11116
11186
|
status: a.status,
|
|
11117
11187
|
statusText: a.statusText,
|
|
11118
11188
|
headers: a.headers
|
|
@@ -11124,14 +11194,14 @@ const br = (a) => new ui(a), ur = {
|
|
|
11124
11194
|
return new Request(a, {
|
|
11125
11195
|
// @ts-expect-error - Types are outdated.
|
|
11126
11196
|
duplex: "half",
|
|
11127
|
-
body:
|
|
11197
|
+
body: gi(a.body, i, e)
|
|
11128
11198
|
});
|
|
11129
11199
|
}, Qe = (a) => a !== null && typeof a == "object", Et = (...a) => {
|
|
11130
11200
|
for (const e of a)
|
|
11131
11201
|
if ((!Qe(e) || Array.isArray(e)) && e !== void 0)
|
|
11132
11202
|
throw new TypeError("The `options` argument must be an object");
|
|
11133
11203
|
return fa({}, ...a);
|
|
11134
|
-
},
|
|
11204
|
+
}, mi = (a = {}, e = {}) => {
|
|
11135
11205
|
const t = new globalThis.Headers(a), i = e instanceof globalThis.Headers, s = new globalThis.Headers(e);
|
|
11136
11206
|
for (const [r, o] of s.entries())
|
|
11137
11207
|
i && o === "undefined" || o === void 0 ? t.delete(r) : t.set(r, o);
|
|
@@ -11140,7 +11210,7 @@ const br = (a) => new ui(a), ur = {
|
|
|
11140
11210
|
function $t(a, e, t) {
|
|
11141
11211
|
return Object.hasOwn(e, t) && e[t] === void 0 ? [] : fa(a[t] ?? [], e[t] ?? []);
|
|
11142
11212
|
}
|
|
11143
|
-
const
|
|
11213
|
+
const yi = (a = {}, e = {}) => ({
|
|
11144
11214
|
beforeRequest: $t(a, e, "beforeRequest"),
|
|
11145
11215
|
beforeRetry: $t(a, e, "beforeRetry"),
|
|
11146
11216
|
afterResponse: $t(a, e, "afterResponse"),
|
|
@@ -11194,10 +11264,10 @@ const mi = (a = {}, e = {}) => ({
|
|
|
11194
11264
|
}
|
|
11195
11265
|
Qe(p) && f in e && (p = fa(e[f], p)), e = { ...e, [f]: p };
|
|
11196
11266
|
}
|
|
11197
|
-
Qe(o.hooks) && (i =
|
|
11267
|
+
Qe(o.hooks) && (i = yi(i, o.hooks), e.hooks = i), Qe(o.headers) && (t = mi(t, o.headers), e.headers = t);
|
|
11198
11268
|
}
|
|
11199
|
-
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] :
|
|
11200
|
-
}, xr = (a) =>
|
|
11269
|
+
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] : hi ? e.signal = AbortSignal.any(r) : e.signal = r.at(-1)), e.context === void 0 && (e.context = {}), e;
|
|
11270
|
+
}, xr = (a) => bi.includes(a) ? a.toUpperCase() : a, kr = ["get", "put", "head", "delete", "options", "trace"], _r = [408, 413, 429, 500, 502, 503, 504], Sr = [413, 429, 503], ja = {
|
|
11201
11271
|
limit: 2,
|
|
11202
11272
|
methods: kr,
|
|
11203
11273
|
statusCodes: _r,
|
|
@@ -11264,17 +11334,17 @@ function $r(a) {
|
|
|
11264
11334
|
class vt {
|
|
11265
11335
|
static create(e, t) {
|
|
11266
11336
|
const i = new vt(e, t), s = async () => {
|
|
11267
|
-
if (typeof i.#e.timeout == "number" && i.#e.timeout >
|
|
11268
|
-
throw new RangeError(`The \`timeout\` option cannot be greater than ${
|
|
11337
|
+
if (typeof i.#e.timeout == "number" && i.#e.timeout > Xt)
|
|
11338
|
+
throw new RangeError(`The \`timeout\` option cannot be greater than ${Xt}`);
|
|
11269
11339
|
await Promise.resolve();
|
|
11270
11340
|
let o = await i.#p();
|
|
11271
11341
|
for (const f of i.#e.hooks.afterResponse) {
|
|
11272
11342
|
const p = i.#d(o.clone()), v = await f(i.request, i.#o(), p, { retryCount: i.#a });
|
|
11273
|
-
if (v instanceof globalThis.Response && (o = v), v instanceof
|
|
11343
|
+
if (v instanceof globalThis.Response && (o = v), v instanceof pi)
|
|
11274
11344
|
throw await Promise.all([
|
|
11275
11345
|
p.body?.cancel(),
|
|
11276
11346
|
o.body?.cancel()
|
|
11277
|
-
]), new
|
|
11347
|
+
]), new Gt(v.options);
|
|
11278
11348
|
}
|
|
11279
11349
|
if (i.#d(o), !o.ok && (typeof i.#e.throwHttpErrors == "function" ? i.#e.throwHttpErrors(o.status) : i.#e.throwHttpErrors)) {
|
|
11280
11350
|
let f = new ta(o, i.request, i.#o());
|
|
@@ -11325,8 +11395,8 @@ class vt {
|
|
|
11325
11395
|
constructor(e, t = {}) {
|
|
11326
11396
|
if (this.#t = e, this.#e = {
|
|
11327
11397
|
...t,
|
|
11328
|
-
headers:
|
|
11329
|
-
hooks:
|
|
11398
|
+
headers: mi(this.#t.headers, t.headers),
|
|
11399
|
+
hooks: yi({
|
|
11330
11400
|
beforeRequest: [],
|
|
11331
11401
|
beforeRetry: [],
|
|
11332
11402
|
beforeError: [],
|
|
@@ -11347,7 +11417,7 @@ class vt {
|
|
|
11347
11417
|
throw new Error("`input` must not begin with a slash when using `prefixUrl`");
|
|
11348
11418
|
this.#e.prefixUrl.endsWith("/") || (this.#e.prefixUrl += "/"), this.#t = this.#e.prefixUrl + this.#t;
|
|
11349
11419
|
}
|
|
11350
|
-
cr &&
|
|
11420
|
+
cr && hi && (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), Fa && (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"));
|
|
11351
11421
|
const i = t.headers && new globalThis.Headers(t.headers).has("content-type");
|
|
11352
11422
|
if (this.#t instanceof globalThis.Request && (dr && 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), Ir(this.#e.searchParams)) {
|
|
11353
11423
|
const r = "?" + (typeof this.#e.searchParams == "string" ? this.#e.searchParams.replace(/^\?/, "") : new URLSearchParams(vt.#b(this.#e.searchParams)).toString()), o = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, r);
|
|
@@ -11369,8 +11439,8 @@ class vt {
|
|
|
11369
11439
|
async #u(e) {
|
|
11370
11440
|
if (this.#a++, this.#a > this.#e.retry.limit)
|
|
11371
11441
|
throw e;
|
|
11372
|
-
const t = e instanceof Error ? e : new
|
|
11373
|
-
if (t instanceof
|
|
11442
|
+
const t = e instanceof Error ? e : new fi(e);
|
|
11443
|
+
if (t instanceof Gt)
|
|
11374
11444
|
return t.customDelay ?? this.#c();
|
|
11375
11445
|
if (!this.#e.retry.methods.includes(this.request.method.toLowerCase()))
|
|
11376
11446
|
throw e;
|
|
@@ -11405,10 +11475,10 @@ class vt {
|
|
|
11405
11475
|
try {
|
|
11406
11476
|
return await e();
|
|
11407
11477
|
} catch (t) {
|
|
11408
|
-
const i = Math.min(await this.#u(t),
|
|
11478
|
+
const i = Math.min(await this.#u(t), Xt);
|
|
11409
11479
|
if (this.#a < 1)
|
|
11410
11480
|
throw t;
|
|
11411
|
-
if (await Mr(i, this.#s ? { signal: this.#s } : {}), t instanceof
|
|
11481
|
+
if (await Mr(i, this.#s ? { signal: this.#s } : {}), t instanceof Gt && t.customRequest) {
|
|
11412
11482
|
const s = this.#e.signal ? new globalThis.Request(t.customRequest, { signal: this.#e.signal }) : new globalThis.Request(t.customRequest);
|
|
11413
11483
|
this.#l(s);
|
|
11414
11484
|
}
|
|
@@ -11425,7 +11495,7 @@ class vt {
|
|
|
11425
11495
|
}
|
|
11426
11496
|
if (r instanceof globalThis.Response)
|
|
11427
11497
|
return r;
|
|
11428
|
-
if (r ===
|
|
11498
|
+
if (r === ui)
|
|
11429
11499
|
return;
|
|
11430
11500
|
}
|
|
11431
11501
|
return this.#f(e);
|
|
@@ -11461,9 +11531,9 @@ class vt {
|
|
|
11461
11531
|
}
|
|
11462
11532
|
const ia = (a) => {
|
|
11463
11533
|
const e = (t, i) => vt.create(t, Et(a, i));
|
|
11464
|
-
for (const t of
|
|
11534
|
+
for (const t of bi)
|
|
11465
11535
|
e[t] = (i, s) => vt.create(i, Et(a, s, { method: t }));
|
|
11466
|
-
return e.create = (t) => ia(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ia(Et(a, t))), e.stop =
|
|
11536
|
+
return e.create = (t) => ia(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ia(Et(a, t))), e.stop = ui, e.retry = br, e;
|
|
11467
11537
|
}, Pr = ia();
|
|
11468
11538
|
Pr.extend({
|
|
11469
11539
|
hooks: {
|
|
@@ -11521,7 +11591,7 @@ let H = class extends re {
|
|
|
11521
11591
|
<rect width="400" height="400" fill="white"/>
|
|
11522
11592
|
</clipPath>
|
|
11523
11593
|
</defs>
|
|
11524
|
-
</svg>`, this.popupLogoSvg = "", this.popupLogoUrl = "", this.botIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z" /></svg>', this.userIconSvg = '<svg fill="currentColor" viewBox="0 0 24 24" width="24" height="24"> <path d="M12 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c4.42 0 8 1.79 8 4v2H4v-2c0-2.21 3.58-4 8-4Z" /></svg>', this.systemIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"/></svg>', this.agentIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z" /></svg>', this.anchorOpenSvg = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234c-.2.032-.352-.176-.273-.362c.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0a1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0a1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2a1 1 0 0 0 0 2"/></svg>', this.anchorCloseSvg = '<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>', this.sendIconSvg = "", this.attachIconSvg = "", this.stream = !1, this.customRequest = !1, this.enableFileUpload = !1, this.uploadFileUrl = "", this.open = !1, this.alwaysOpen = !1, this.prefilledFormFields = "{}", this.loading = !1, this.showSetting = !1, this.showAuthAlert = !1, this.handleAddMessage = (a) => {
|
|
11594
|
+
</svg>`, this.popupLogoSvg = "", this.popupLogoUrl = "", this.botIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z" /></svg>', this.userIconSvg = '<svg fill="currentColor" viewBox="0 0 24 24" width="24" height="24"> <path d="M12 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c4.42 0 8 1.79 8 4v2H4v-2c0-2.21 3.58-4 8-4Z" /></svg>', this.systemIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"/></svg>', this.agentIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z" /></svg>', this.infoIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" /></svg>', this.anchorOpenSvg = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234c-.2.032-.352-.176-.273-.362c.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0a1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0a1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2a1 1 0 0 0 0 2"/></svg>', this.anchorCloseSvg = '<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>', this.sendIconSvg = "", this.attachIconSvg = "", this.stream = !1, this.customRequest = !1, this.enableFileUpload = !1, this.uploadFileUrl = "", this.open = !1, this.alwaysOpen = !1, this.prefilledFormFields = "{}", this.loading = !1, this.showSetting = !1, this.showAuthAlert = !1, this.handleAddMessage = (a) => {
|
|
11525
11595
|
this._addMessageHandler(a);
|
|
11526
11596
|
}, this.handleStateEvent = (a) => {
|
|
11527
11597
|
this._stateEventHandler(a);
|
|
@@ -11657,7 +11727,7 @@ let H = class extends re {
|
|
|
11657
11727
|
_initSetting() {
|
|
11658
11728
|
Be.info("_initSetting");
|
|
11659
11729
|
const a = b.setting;
|
|
11660
|
-
a.orgId = this.orgId, a.botId = this.botId, a.url = this.url, a.logoUrl = this.logoUrl, a.logoSvg = this.logoSvg, a.closeSvg = this.closeSvg, a.popupLogoSvg = this.popupLogoSvg, a.popupLogoUrl = this.popupLogoUrl, a.botIconSvg = this.botIconSvg, a.userIconSvg = this.userIconSvg, a.systemIconSvg = this.systemIconSvg, a.agentIconSvg = this.agentIconSvg, a.anchorOpenSvg = this.anchorOpenSvg, a.anchorCloseSvg = this.anchorCloseSvg, a.sendIconSvg = this.sendIconSvg, a.attachIconSvg = this.attachIconSvg, b.setSetting(a);
|
|
11730
|
+
a.orgId = this.orgId, a.botId = this.botId, a.url = this.url, a.logoUrl = this.logoUrl, a.logoSvg = this.logoSvg, a.closeSvg = this.closeSvg, a.popupLogoSvg = this.popupLogoSvg, a.popupLogoUrl = this.popupLogoUrl, a.botIconSvg = this.botIconSvg, a.userIconSvg = this.userIconSvg, a.systemIconSvg = this.systemIconSvg, a.agentIconSvg = this.agentIconSvg, a.infoIconSvg = this.infoIconSvg, a.anchorOpenSvg = this.anchorOpenSvg, a.anchorCloseSvg = this.anchorCloseSvg, a.sendIconSvg = this.sendIconSvg, a.attachIconSvg = this.attachIconSvg, b.setSetting(a);
|
|
11661
11731
|
let e = {};
|
|
11662
11732
|
try {
|
|
11663
11733
|
e = JSON.parse(this.prefilledFormFields);
|
|
@@ -11763,6 +11833,10 @@ let H = class extends re {
|
|
|
11763
11833
|
return this._processSendMessage(e);
|
|
11764
11834
|
}
|
|
11765
11835
|
// [sv2] for testing only
|
|
11836
|
+
processAgentConnected(a) {
|
|
11837
|
+
b.handleAgentConnected(a).catch((e) => {
|
|
11838
|
+
});
|
|
11839
|
+
}
|
|
11766
11840
|
processAgentDisconnected(a) {
|
|
11767
11841
|
b.handleAgentDisconnected(a).catch((e) => {
|
|
11768
11842
|
});
|
|
@@ -11818,7 +11892,7 @@ let H = class extends re {
|
|
|
11818
11892
|
this._messageList?.scrollToBottom();
|
|
11819
11893
|
}
|
|
11820
11894
|
};
|
|
11821
|
-
H.styles = [
|
|
11895
|
+
H.styles = [Gi, Za];
|
|
11822
11896
|
N([
|
|
11823
11897
|
x({ type: Boolean, attribute: "display-license" })
|
|
11824
11898
|
], H.prototype, "displayLicense", 2);
|
|
@@ -11861,6 +11935,9 @@ N([
|
|
|
11861
11935
|
N([
|
|
11862
11936
|
x({ type: String, attribute: "agent-icon-svg" })
|
|
11863
11937
|
], H.prototype, "agentIconSvg", 2);
|
|
11938
|
+
N([
|
|
11939
|
+
x({ type: String, attribute: "info-icon-svg" })
|
|
11940
|
+
], H.prototype, "infoIconSvg", 2);
|
|
11864
11941
|
N([
|
|
11865
11942
|
x({ type: String, attribute: "anchor-open-svg" })
|
|
11866
11943
|
], H.prototype, "anchorOpenSvg", 2);
|
|
@@ -11907,7 +11984,7 @@ N([
|
|
|
11907
11984
|
xe("cb-message-list")
|
|
11908
11985
|
], H.prototype, "_messageList", 2);
|
|
11909
11986
|
H = N([
|
|
11910
|
-
|
|
11987
|
+
Z("enegelai-bot")
|
|
11911
11988
|
], H);
|
|
11912
11989
|
export {
|
|
11913
11990
|
H as default
|