easy-email-pro-kit 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.es.js CHANGED
@@ -1,22 +1,22 @@
1
- var at = Object.defineProperty, dt = Object.defineProperties;
2
- var mt = Object.getOwnPropertyDescriptors;
1
+ var it = Object.defineProperty, at = Object.defineProperties;
2
+ var dt = Object.getOwnPropertyDescriptors;
3
3
  var H = Object.getOwnPropertySymbols;
4
- var Ze = Object.prototype.hasOwnProperty, ge = Object.prototype.propertyIsEnumerable;
5
- var ce = (e, t, l) => t in e ? at(e, t, { enumerable: !0, configurable: !0, writable: !0, value: l }) : e[t] = l, K = (e, t) => {
4
+ var Ze = Object.prototype.hasOwnProperty, we = Object.prototype.propertyIsEnumerable;
5
+ var ce = (e, t, l) => t in e ? it(e, t, { enumerable: !0, configurable: !0, writable: !0, value: l }) : e[t] = l, K = (e, t) => {
6
6
  for (var l in t || (t = {}))
7
7
  Ze.call(t, l) && ce(e, l, t[l]);
8
8
  if (H)
9
9
  for (var l of H(t))
10
- ge.call(t, l) && ce(e, l, t[l]);
10
+ we.call(t, l) && ce(e, l, t[l]);
11
11
  return e;
12
- }, E = (e, t) => dt(e, mt(t));
13
- var we = (e, t) => {
12
+ }, E = (e, t) => at(e, dt(t));
13
+ var ge = (e, t) => {
14
14
  var l = {};
15
15
  for (var s in e)
16
16
  Ze.call(e, s) && t.indexOf(s) < 0 && (l[s] = e[s]);
17
17
  if (e != null && H)
18
18
  for (var s of H(e))
19
- t.indexOf(s) < 0 && ge.call(e, s) && (l[s] = e[s]);
19
+ t.indexOf(s) < 0 && we.call(e, s) && (l[s] = e[s]);
20
20
  return l;
21
21
  };
22
22
  var Te = (e, t, l) => (ce(e, typeof t != "symbol" ? t + "" : t, l), l);
@@ -36,25 +36,25 @@ var z = (e, t, l) => new Promise((s, c) => {
36
36
  }, n = (o) => o.done ? s(o.value) : Promise.resolve(o.value).then(i, a);
37
37
  n((l = l.apply(e, t)).next());
38
38
  });
39
- import { useEmailRenderContext as bt, EmailRenderProvider as R, components as ye, ElementType as ie, ResponsivePlugin as ut, BlockManager as he, classnames as A, mergeBlock as Q, createCustomBlock as ze, t as N, ElementCategory as Ve, NodeUtils as pt, ElementPlugin as je } from "easy-email-pro-core";
40
- import { get as Oe, set as O, flatMap as Mt, cloneDeep as ee, isEqual as Pe } from "lodash";
41
- import b, { useState as ve, useEffect as Qe } from "react";
42
- import yt from "react-dom/server";
43
- import { AttributesPanelWrapper as Ue, ResponsiveTabs as Je, useEditorForm as Fe, CollapseWrapper as He, ResponsiveField as S, AttributeField as Y, ConfigPanelsMap as Re, previewLoadImage as ht } from "easy-email-pro-theme";
44
- import { Collapse as C, Button as Ae, Grid as ae, Message as Be } from "@arco-design/web-react";
45
- import { useSlate as xt, ReactEditor as Zt } from "slate-react";
46
- import { ActiveTabKeys as P, useEditorProps as $e, useSelectedNode as _e, useEditorState as qe } from "easy-email-pro-editor";
39
+ import { useEmailRenderContext as mt, EmailRenderProvider as R, components as ye, ElementType as ie, ResponsivePlugin as bt, BlockManager as he, classnames as A, mergeBlock as Q, createCustomBlock as Ee, t as N, ElementCategory as ze, NodeUtils as ut, ElementPlugin as Ve } from "easy-email-pro-core";
40
+ import { get as je, set as O, flatMap as pt, cloneDeep as ee, isEqual as Oe } from "lodash";
41
+ import b, { useState as ve, useEffect as Pe } from "react";
42
+ import Mt from "react-dom/server";
43
+ import { AttributesPanelWrapper as Qe, ResponsiveTabs as Ue, useEditorForm as Je, CollapseWrapper as Fe, ResponsiveField as S, AttributeField as Y, ConfigPanelsMap as He, previewLoadImage as yt } from "easy-email-pro-theme";
44
+ import { Collapse as C, Button as Re, Grid as ae, Message as Ae } from "@arco-design/web-react";
45
+ import { useSlate as ht, ReactEditor as xt } from "slate-react";
46
+ import { ActiveTabKeys as v, useEditorProps as Be, useSelectedNode as $e, useEditorState as _e } from "easy-email-pro-editor";
47
47
  const { Raw: B } = ye;
48
- function gt(e) {
49
- const { desktop: t, mobile: l } = e, s = bt(), { displayMode: c = "desktop-mobile" } = s;
48
+ function Zt(e) {
49
+ const { desktop: t, mobile: l } = e, s = mt(), { displayMode: c = "desktop-mobile" } = s;
50
50
  return c === "only-desktop" ? /* @__PURE__ */ b.createElement(R, E(K({}, s), { displayMode: "only-desktop" }), /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(t, null))) : c === "only-mobile" ? /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(B, null, "<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"), /* @__PURE__ */ b.createElement(R, E(K({}, s), { displayMode: "only-mobile" }), /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(l, null))), /* @__PURE__ */ b.createElement(B, null, "<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->")) : /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(R, E(K({}, s), { displayMode: "only-desktop" }), /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(t, null))), /* @__PURE__ */ b.createElement(B, null, "<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"), /* @__PURE__ */ b.createElement(R, E(K({}, s), { displayMode: "only-mobile" }), /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(l, null))), /* @__PURE__ */ b.createElement(B, null, "<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->"));
51
51
  }
52
- const wt = "hide-desktop-block", Tt = "hide-mobile-block", Nt = "hide-desktop-inline-block", Wt = "hide-mobile-inline-block", Ne = [
52
+ const wt = "hide-desktop-block", gt = "hide-mobile-block", Tt = "hide-desktop-inline-block", Nt = "hide-mobile-inline-block", Ne = [
53
53
  ie.GROUP,
54
54
  ie.COLUMN,
55
55
  ie.NAVBAR_LINK
56
56
  ];
57
- class On extends ut {
57
+ class jn extends bt {
58
58
  constructor() {
59
59
  super(...arguments);
60
60
  Te(this, "generateResponsive", (l) => {
@@ -74,22 +74,22 @@ class On extends ut {
74
74
  const y = he.getBlockByType(i.type);
75
75
  if (!y)
76
76
  throw new Error(`${i.type} block is not registered`);
77
- const M = i.mobileAttributes && Object.keys(i.mobileAttributes).some((Z) => i.mobileAttributes[Z] !== i.attributes[Z]), m = Ne.includes(y.type) ? Nt : wt, h = Ne.includes(y.type) ? Wt : Tt, g = Oe(i, "attributes.css-class") || "";
77
+ const M = i.mobileAttributes && Object.keys(i.mobileAttributes).some((Z) => i.mobileAttributes[Z] !== i.attributes[Z]), m = Ne.includes(y.type) ? Tt : wt, h = Ne.includes(y.type) ? Nt : gt, w = je(i, "attributes.css-class") || "";
78
78
  if (c === "only-desktop") {
79
- if (g.includes(m))
79
+ if (w.includes(m))
80
80
  return null;
81
- g.includes(h) || O(
81
+ w.includes(h) || O(
82
82
  i,
83
83
  "attributes.css-class",
84
- A(g, h)
84
+ A(w, h)
85
85
  );
86
86
  } else if (c === "only-mobile") {
87
- if (g.includes(h))
87
+ if (w.includes(h))
88
88
  return null;
89
- g.includes(m) || O(
89
+ w.includes(m) || O(
90
90
  i,
91
91
  "attributes.css-class",
92
- A(g, m)
92
+ A(w, m)
93
93
  );
94
94
  }
95
95
  c === "only-mobile" ? i.attributes = Q(
@@ -104,11 +104,11 @@ class On extends ut {
104
104
  ), i.visible === "desktop" ? O(
105
105
  i,
106
106
  "attributes.css-class",
107
- A(g, h)
107
+ A(w, h)
108
108
  ) : i.visible === "mobile" && O(
109
109
  i,
110
110
  "attributes.css-class",
111
- A(g, m)
111
+ A(w, m)
112
112
  );
113
113
  const W = y.render({
114
114
  mode: s,
@@ -123,7 +123,7 @@ class On extends ut {
123
123
  mergetagsData: n
124
124
  });
125
125
  return M && (u = /* @__PURE__ */ b.createElement(b.Fragment, null, /* @__PURE__ */ b.createElement(
126
- gt,
126
+ Zt,
127
127
  {
128
128
  desktop: () => /* @__PURE__ */ b.createElement(b.Fragment, null, p),
129
129
  mobile: () => /* @__PURE__ */ b.createElement(b.Fragment, null, W)
@@ -133,7 +133,7 @@ class On extends ut {
133
133
  }
134
134
  }
135
135
  const pe = 60, _ = 60 * pe, $ = 24 * _;
136
- function et(e) {
136
+ function qe(e) {
137
137
  const t = Math.floor(e / $), l = Math.floor((e - t * $) / _), s = Math.floor((e - t * $ - l * _) / pe), c = Math.floor(e - t * $ - l * _ - s * pe);
138
138
  return {
139
139
  day: t < 10 ? "0" + t : t.toString(),
@@ -142,12 +142,12 @@ function et(e) {
142
142
  second: c < 10 ? "0" + c : c.toString()
143
143
  };
144
144
  }
145
- const q = document.createElement("canvas"), We = q.getContext("2d"), Yt = (e) => z(void 0, null, function* () {
145
+ const q = document.createElement("canvas"), We = q.getContext("2d"), Wt = (e) => z(void 0, null, function* () {
146
146
  const t = new Image();
147
147
  return t.src = e, yield new Promise((l, s) => {
148
148
  t.onload = l, t.onerror = s;
149
149
  }), t;
150
- }), Lt = (e) => z(void 0, null, function* () {
150
+ }), Yt = (e) => z(void 0, null, function* () {
151
151
  const t = new Image();
152
152
  return t.crossOrigin = "anonymous", new Promise((l, s) => {
153
153
  t.onload = () => {
@@ -155,14 +155,14 @@ const q = document.createElement("canvas"), We = q.getContext("2d"), Yt = (e) =>
155
155
  q.width = c, q.height = i, We.clearRect(0, 0, c, i), We.drawImage(t, 0, 0), l(q.toDataURL());
156
156
  }, t.onerror = s, t.src = e.src;
157
157
  });
158
- }), Gt = Mt(
158
+ }), Lt = pt(
159
159
  ["padding", "margin", "border"].map((e) => [
160
160
  `${e}-top`,
161
161
  `${e}-right`,
162
162
  `${e}-bottom`,
163
163
  `${e}-left`
164
164
  ])
165
- ), St = [
165
+ ), Gt = [
166
166
  "color",
167
167
  "width",
168
168
  "height",
@@ -184,22 +184,22 @@ const q = document.createElement("canvas"), We = q.getContext("2d"), Yt = (e) =>
184
184
  "opacity",
185
185
  "visibility",
186
186
  "textTransform",
187
- ...Gt
187
+ ...Lt
188
188
  ];
189
- function tt(e) {
189
+ function et(e) {
190
190
  const t = e.cloneNode(!0);
191
191
  if (!(t instanceof HTMLElement && e instanceof HTMLElement))
192
192
  return t;
193
193
  const l = window.getComputedStyle(e);
194
- return St.forEach((s) => {
194
+ return Gt.forEach((s) => {
195
195
  t.style.setProperty(s, l.getPropertyValue(s));
196
196
  }), t.childNodes.forEach((s, c) => {
197
- t.replaceChild(tt(e.childNodes[c]), s);
197
+ t.replaceChild(et(e.childNodes[c]), s);
198
198
  }), t;
199
199
  }
200
- const Dt = function(l) {
200
+ const St = function(l) {
201
201
  return z(this, arguments, function* (e, t = {}) {
202
- const s = t.width || e.offsetWidth, c = t.height || e.offsetHeight, { overwrite: i = [], wrapper: a = (d) => d } = t, n = tt(e);
202
+ const s = t.width || e.offsetWidth, c = t.height || e.offsetHeight, { overwrite: i = [], wrapper: a = (d) => d } = t, n = et(e);
203
203
  if (n.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"), n.classList.remove("outline"), t.styleText) {
204
204
  const d = document.createElement("style");
205
205
  d.innerHTML = t.styleText, n.appendChild(d);
@@ -214,7 +214,7 @@ const Dt = function(l) {
214
214
  });
215
215
  }
216
216
  n.querySelectorAll(d.selector).forEach((p) => {
217
- if (Oe(p, "nodeType") === 1) {
217
+ if (je(p, "nodeType") === 1) {
218
218
  const u = p, y = u.style;
219
219
  if (d.style && Object.keys(d.style).forEach((M) => {
220
220
  y.setProperty(M, d.style[M]);
@@ -225,7 +225,7 @@ const Dt = function(l) {
225
225
  });
226
226
  }), yield Promise.all(
227
227
  [...n.querySelectorAll("img")].map((d) => z(this, null, function* () {
228
- d.src = yield Lt(d);
228
+ d.src = yield Yt(d);
229
229
  }))
230
230
  );
231
231
  const o = new XMLSerializer().serializeToString(a(n));
@@ -233,14 +233,14 @@ const Dt = function(l) {
233
233
  return r = r.replace(/\n/g, "").replace(/\t/g, "").replace(/#/g, "%23"), r;
234
234
  });
235
235
  };
236
- var It = Object.defineProperty, Kt = Object.defineProperties, kt = Object.getOwnPropertyDescriptors, Ye = Object.getOwnPropertySymbols, ft = Object.prototype.hasOwnProperty, Xt = Object.prototype.propertyIsEnumerable, f = Math.pow, Le = (e, t, l) => t in e ? It(e, t, { enumerable: !0, configurable: !0, writable: !0, value: l }) : e[t] = l, j = (e, t) => {
236
+ var Dt = Object.defineProperty, It = Object.defineProperties, Kt = Object.getOwnPropertyDescriptors, Ye = Object.getOwnPropertySymbols, kt = Object.prototype.hasOwnProperty, Xt = Object.prototype.propertyIsEnumerable, X = Math.pow, Le = (e, t, l) => t in e ? Dt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: l }) : e[t] = l, j = (e, t) => {
237
237
  for (var l in t || (t = {}))
238
- ft.call(t, l) && Le(e, l, t[l]);
238
+ kt.call(t, l) && Le(e, l, t[l]);
239
239
  if (Ye)
240
240
  for (var l of Ye(t))
241
241
  Xt.call(t, l) && Le(e, l, t[l]);
242
242
  return e;
243
- }, F = (e, t) => Kt(e, kt(t)), V = (e, t, l) => new Promise((s, c) => {
243
+ }, F = (e, t) => It(e, Kt(t)), V = (e, t, l) => new Promise((s, c) => {
244
244
  var i = (o) => {
245
245
  try {
246
246
  n(l.next(o));
@@ -256,7 +256,7 @@ var It = Object.defineProperty, Kt = Object.defineProperties, kt = Object.getOwn
256
256
  }, n = (o) => o.done ? s(o.value) : Promise.resolve(o.value).then(i, a);
257
257
  n((l = l.apply(e, t)).next());
258
258
  });
259
- const Ct = typeof window < "u", T = 65536 - 1, v = T * T, Et = 512 - 1, de = [
259
+ const ft = typeof window < "u", T = 65536 - 1, P = T * T, Ct = 512 - 1, de = [
260
260
  0,
261
261
  20,
262
262
  40,
@@ -1035,20 +1035,20 @@ function me(e) {
1035
1035
  return T;
1036
1036
  t = e * (e * (e + -144107) / T + 132114) / T + 14379;
1037
1037
  for (let l = 0; l < 2; l++) {
1038
- const s = t * t * t, c = e + (2 * s + v / 2) / v;
1039
- t = (t * (2 * e + (s + v / 2) / v) + c / 2) / c;
1038
+ const s = t * t * t, c = e + (2 * s + P / 2) / P;
1039
+ t = (t * (2 * e + (s + P / 2) / P) + c / 2) / c;
1040
1040
  }
1041
1041
  return t;
1042
1042
  }
1043
- function X(e, t) {
1043
+ function f(e, t) {
1044
1044
  return (e ^ t) < 0 ? (e - t / 2) / t : (e + t / 2) / t;
1045
1045
  }
1046
- function nt(e) {
1046
+ function tt(e) {
1047
1047
  const t = de[e >> 16 & 255], l = de[e >> 8 & 255], s = de[e & 255], c = (27015 * t + 35149 * l + 3372 * s + T / 2) / T, i = (13887 * t + 44610 * l + 7038 * s + T / 2) / T, a = (5787 * t + 18462 * l + 41286 * s + T / 2) / T, n = me(c), o = me(i), r = me(a);
1048
1048
  return [
1049
- X(13792 * n + 52010 * o - 267 * r, T),
1050
- X(129628 * n - 159158 * o + 29530 * r, T),
1051
- X(1698 * n + 51299 * o - 52997 * r, T)
1049
+ f(13792 * n + 52010 * o - 267 * r, T),
1050
+ f(129628 * n - 159158 * o + 29530 * r, T),
1051
+ f(1698 * n + 51299 * o - 52997 * r, T)
1052
1052
  ];
1053
1053
  }
1054
1054
  function be(e) {
@@ -1057,32 +1057,32 @@ function be(e) {
1057
1057
  if (e >= T)
1058
1058
  return 255;
1059
1059
  {
1060
- const t = e * Et, l = ~~(t / T), s = t % T, c = Ge[l], i = Ge[l + 1];
1060
+ const t = e * Ct, l = ~~(t / T), s = t % T, c = Ge[l], i = Ge[l + 1];
1061
1061
  return (s * (i - c) + T / 2) / T + c;
1062
1062
  }
1063
1063
  }
1064
- function zt(e) {
1065
- const t = e[0] + X(25974 * e[1], T) + X(14143 * e[2], T), l = e[0] + X(-6918 * e[1], T) + X(-4185 * e[2], T), s = e[0] + X(-5864 * e[1], T) + X(-84638 * e[2], T), c = f(t, 2) * t / v, i = f(l, 2) * l / v, a = f(s, 2) * s / v, n = be((267169 * c + -216771 * i + 15137 * a + T / 2) / T), o = be((-83127 * c + 171030 * i + -22368 * a + T / 2) / T), r = be((-275 * c + -46099 * i + 111909 * a + T / 2) / T);
1064
+ function Et(e) {
1065
+ const t = e[0] + f(25974 * e[1], T) + f(14143 * e[2], T), l = e[0] + f(-6918 * e[1], T) + f(-4185 * e[2], T), s = e[0] + f(-5864 * e[1], T) + f(-84638 * e[2], T), c = X(t, 2) * t / P, i = X(l, 2) * l / P, a = X(s, 2) * s / P, n = be((267169 * c + -216771 * i + 15137 * a + T / 2) / T), o = be((-83127 * c + 171030 * i + -22368 * a + T / 2) / T), r = be((-275 * c + -46099 * i + 111909 * a + T / 2) / T);
1066
1066
  return n << 16 | o << 8 | r;
1067
1067
  }
1068
- function Vt(e) {
1068
+ function zt(e) {
1069
1069
  const t = { l: 0, a: 1, b: 2 }, l = e[0], s = e[1], c = e[2], i = t[l], a = t[s], n = t[c];
1070
1070
  return (o, r) => o.oklab[i] - r.oklab[i] || o.oklab[a] - r.oklab[a] || o.oklab[n] - r.oklab[n];
1071
1071
  }
1072
- function jt(e, t, l) {
1072
+ function Vt(e, t, l) {
1073
1073
  return e >= t ? t >= l ? "lab" : e >= l ? "lba" : "bla" : e >= l ? "alb" : t >= l ? "abl" : "bal";
1074
1074
  }
1075
- function Ot(e) {
1075
+ function jt(e) {
1076
1076
  return new Promise((t) => {
1077
1077
  const l = new Image();
1078
1078
  l.decoding = "sync", l.loading = "eager", l.crossOrigin = "anonymous", l.onload = () => t(l), l.onerror = () => t(l), l.src = e;
1079
1079
  });
1080
1080
  }
1081
- function lt(e) {
1081
+ function nt(e) {
1082
1082
  return e && typeof e == "object" && "__CONTEXT__" in e;
1083
1083
  }
1084
- function Pt(e) {
1085
- return lt(e) ? e : vt(e);
1084
+ function Ot(e) {
1085
+ return nt(e) ? e : vt(e);
1086
1086
  }
1087
1087
  function vt(e = {}) {
1088
1088
  const {
@@ -1104,21 +1104,21 @@ function vt(e = {}) {
1104
1104
  finderCache: /* @__PURE__ */ new Map()
1105
1105
  };
1106
1106
  }
1107
- function st(e) {
1108
- const t = lt(e) ? e : e.context, {
1107
+ function lt(e) {
1108
+ const t = nt(e) ? e : e.context, {
1109
1109
  colorBoxesIndexTree: l,
1110
1110
  finderCache: s
1111
1111
  } = t;
1112
1112
  function c(a, n, o) {
1113
1113
  const { left: r, right: d, longest: p, oklab: u, colorBoxIndex: y } = l[a], M = Math.min(
1114
- f(n[0] - u[0], 2) + f(n[1] - u[1], 2) + f(n[2] - u[2], 2),
1114
+ X(n[0] - u[0], 2) + X(n[1] - u[1], 2) + X(n[2] - u[2], 2),
1115
1115
  4294967295 - 1
1116
1116
  );
1117
1117
  M < o.dist && (o.colorBoxIndex = y, o.dist = M);
1118
1118
  let m, h;
1119
1119
  if (r !== -1 || d !== -1) {
1120
- const g = n[p] - u[p];
1121
- g <= 0 ? (m = r, h = d) : (m = d, h = r), m !== -1 && c(m, n, o), h !== -1 && f(g, 2) < o.dist && c(h, n, o);
1120
+ const w = n[p] - u[p];
1121
+ w <= 0 ? (m = r, h = d) : (m = d, h = r), m !== -1 && c(m, n, o), h !== -1 && X(w, 2) < o.dist && c(h, n, o);
1122
1122
  }
1123
1123
  }
1124
1124
  function i(a) {
@@ -1133,10 +1133,10 @@ function st(e) {
1133
1133
  let o = s.get(n);
1134
1134
  o || (o = /* @__PURE__ */ new Map(), s.set(n, o));
1135
1135
  let r = o.get(a);
1136
- return r !== void 0 || (r = i(nt(a)), o.set(a, r)), r;
1136
+ return r !== void 0 || (r = i(tt(a)), o.set(a, r)), r;
1137
1137
  };
1138
1138
  }
1139
- function Qt(e, t) {
1139
+ function Pt(e, t) {
1140
1140
  const { colorBoxes: l } = e, s = l.reduce((a, n) => a + n.weight, 0);
1141
1141
  if (!t)
1142
1142
  return e.colorBoxes.map((a) => {
@@ -1212,7 +1212,7 @@ function Me(e, t, l) {
1212
1212
  if (!M)
1213
1213
  return;
1214
1214
  const m = M.canvas;
1215
- return Ot(t).then((h) => (M.clearRect(0, 0, m.width, m.height), m.width = h.width, m.height = h.height, M.drawImage(h, 0, 0, m.width, m.height), Me(
1215
+ return jt(t).then((h) => (M.clearRect(0, 0, m.width, m.height), m.width = h.width, m.height = h.height, M.drawImage(h, 0, 0, m.width, m.height), Me(
1216
1216
  e,
1217
1217
  M.getImageData(0, 0, m.width, m.height).data,
1218
1218
  l
@@ -1229,13 +1229,13 @@ function Me(e, t, l) {
1229
1229
  );
1230
1230
  }
1231
1231
  for (let M = y.length, m = 0; m < M; m += 4) {
1232
- const h = y[m], g = y[m + 1], W = y[m + 2], x = y[m + 3];
1233
- if (r && x === 0 || d === "diff" && o && h === o[m] && g === o[m + 1] && W === o[m + 2] && x === o[m + 3])
1232
+ const h = y[m], w = y[m + 1], W = y[m + 2], x = y[m + 3];
1233
+ if (r && x === 0 || d === "diff" && o && h === o[m] && w === o[m + 1] && W === o[m + 2] && x === o[m + 3])
1234
1234
  continue;
1235
- const Z = h << 16 | g << 8 | W, w = x * 1e8 + Z, L = w % 32768;
1235
+ const Z = h << 16 | w << 8 | W, g = x * 1e8 + Z, L = g % 32768;
1236
1236
  let G = u.get(L);
1237
1237
  G || (G = /* @__PURE__ */ new Map(), u.set(L, G));
1238
- let k = G.get(w);
1238
+ let k = G.get(g);
1239
1239
  if (k !== void 0) {
1240
1240
  p[k].count++;
1241
1241
  continue;
@@ -1243,13 +1243,13 @@ function Me(e, t, l) {
1243
1243
  k = p.push({
1244
1244
  alpha: x,
1245
1245
  srgb: Z,
1246
- oklab: nt(Z),
1246
+ oklab: tt(Z),
1247
1247
  count: 1
1248
- }) - 1, G.set(w, k);
1248
+ }) - 1, G.set(g, k);
1249
1249
  }
1250
1250
  return y;
1251
1251
  }
1252
- function ot(e, t) {
1252
+ function st(e, t) {
1253
1253
  const { colorSamples: l } = t, { start: s, end: c } = e;
1254
1254
  e.length = c - s, e.weight = 0;
1255
1255
  const i = [0, 0, 0];
@@ -1265,9 +1265,9 @@ function ot(e, t) {
1265
1265
  const a = [0, 0, 0];
1266
1266
  for (let n = s; n < c; n++) {
1267
1267
  const o = l[n];
1268
- a[0] += f(o.oklab[0] - e.oklab[0], 2) * o.count, a[1] += f(o.oklab[1] - e.oklab[1], 2) * o.count, a[2] += f(o.oklab[2] - e.oklab[2], 2) * o.count;
1268
+ a[0] += X(o.oklab[0] - e.oklab[0], 2) * o.count, a[1] += X(o.oklab[1] - e.oklab[1], 2) * o.count, a[2] += X(o.oklab[2] - e.oklab[2], 2) * o.count;
1269
1269
  }
1270
- e.sort = jt(a[0], a[1], a[2]), e.score = Math.max(a[0], a[1], a[2]);
1270
+ e.sort = Vt(a[0], a[1], a[2]), e.score = Math.max(a[0], a[1], a[2]);
1271
1271
  }
1272
1272
  function Se(e, t) {
1273
1273
  const l = j({
@@ -1281,9 +1281,9 @@ function Se(e, t) {
1281
1281
  srgb: 0,
1282
1282
  oklab: [0, 0, 0]
1283
1283
  }, e);
1284
- return ot(l, t), l;
1284
+ return st(l, t), l;
1285
1285
  }
1286
- function Ut(e) {
1286
+ function Qt(e) {
1287
1287
  const { colorBoxes: t } = e, l = [], s = /* @__PURE__ */ new Map();
1288
1288
  for (let a = -1, n = t.length, o = 0; o < n; o++) {
1289
1289
  const { srgb: r } = t[o];
@@ -1338,7 +1338,7 @@ function Ut(e) {
1338
1338
  }
1339
1339
  return l;
1340
1340
  }
1341
- function Jt(e, t = {}) {
1341
+ function Ut(e, t = {}) {
1342
1342
  const {
1343
1343
  maxColors: l,
1344
1344
  colorSamples: s
@@ -1367,29 +1367,29 @@ function Jt(e, t = {}) {
1367
1367
  end: p.end,
1368
1368
  sorted: p.sorted
1369
1369
  }, e);
1370
- p.end -= y.length, ot(p, e), o.push(y), n++;
1370
+ p.end -= y.length, st(p, e), o.push(y), n++;
1371
1371
  }
1372
1372
  for (; a && a.length > 1; ) {
1373
1373
  const { start: p, end: u, sort: y, sorted: M } = a;
1374
1374
  if (y !== M) {
1375
- const x = s.slice(p, u).sort(Vt(y));
1376
- for (let Z = x.length, w = 0; w < Z; w++)
1377
- s[p + w] = x[w];
1375
+ const x = s.slice(p, u).sort(zt(y));
1376
+ for (let Z = x.length, g = 0; g < Z; g++)
1377
+ s[p + g] = x[g];
1378
1378
  a.sorted = y;
1379
1379
  }
1380
1380
  const m = a.weight + 1 >> 1;
1381
- let h = p, g = 0;
1382
- for (let x = u - 2; h < x && (g += s[h].count, !(g > m)); h++)
1381
+ let h = p, w = 0;
1382
+ for (let x = u - 2; h < x && (w += s[h].count, !(w > m)); h++)
1383
1383
  ;
1384
1384
  d(a, h);
1385
1385
  const W = r();
1386
1386
  a = W >= 0 ? o[W] : null;
1387
1387
  }
1388
1388
  for (let p = o.length, u = 0; u < p; u++)
1389
- o[u].srgb = zt(o[u].oklab);
1390
- e.colorBoxes = o.sort((p, u) => p.srgb - u.srgb), e.colorBoxesIndexTree = Ut(e), i && (e.colorSamples = [], e.colorSamplesCache.clear()), e.finderCache.clear();
1389
+ o[u].srgb = Et(o[u].oklab);
1390
+ e.colorBoxes = o.sort((p, u) => p.srgb - u.srgb), e.colorBoxesIndexTree = Qt(e), i && (e.colorSamples = [], e.colorSamplesCache.clear()), e.finderCache.clear();
1391
1391
  }
1392
- function Ft(e, t, l) {
1392
+ function Jt(e, t, l) {
1393
1393
  const { colorBoxes: s } = e;
1394
1394
  if (!t)
1395
1395
  return;
@@ -1434,17 +1434,17 @@ function Ft(e, t, l) {
1434
1434
  index: i
1435
1435
  };
1436
1436
  }
1437
- function Ht(e) {
1437
+ function Ft(e) {
1438
1438
  e.colorSamples = [], e.colorSamplesCache.clear(), e.colorBoxes = [], e.colorBoxesIndexTree = [], e.finderCache.clear();
1439
1439
  }
1440
1440
  function De(e) {
1441
- const t = Pt(e), {
1441
+ const t = Ot(e), {
1442
1442
  statsMode: l,
1443
1443
  samples: s,
1444
1444
  skipTransparent: c
1445
1445
  } = t, i = function() {
1446
1446
  let r;
1447
- return () => (!r && Ct && (r = document.createElement("canvas").getContext("2d", {
1447
+ return () => (!r && ft && (r = document.createElement("canvas").getContext("2d", {
1448
1448
  willReadFrequently: !0
1449
1449
  })), r);
1450
1450
  }();
@@ -1464,22 +1464,22 @@ function De(e) {
1464
1464
  },
1465
1465
  generate(r = {}) {
1466
1466
  const { clearSamples: d = !0 } = r;
1467
- return d && (a = null), Jt(t, r), this;
1467
+ return d && (a = null), Ut(t, r), this;
1468
1468
  },
1469
- getColors: (r) => Qt(t, r),
1470
- findNearestColor: (r) => (n || (n = st(t)), Ft(t, n, r)),
1471
- reset: () => Ht(t)
1469
+ getColors: (r) => Pt(t, r),
1470
+ findNearestColor: (r) => (n || (n = lt(t)), Jt(t, n, r)),
1471
+ reset: () => Ft(t)
1472
1472
  };
1473
1473
  return s.length && (s.forEach((r) => o.addSample(r)), t.samples = []), o;
1474
1474
  }
1475
- const ne = "[modern-gif]", Rt = "GIF", At = 44, rt = 33, Bt = 255, $t = 11, _t = 249, qt = 4, en = 59, tn = (...e) => console.warn(ne, ...e), nn = (...e) => console.debug(ne, ...e), ln = (e) => console.time(`${ne} ${e}`), sn = (e) => console.timeEnd(`${ne} ${e}`);
1476
- function on(e) {
1475
+ const ne = "[modern-gif]", Ht = "GIF", Rt = 44, ot = 33, At = 255, Bt = 11, $t = 249, _t = 4, qt = 59, en = (...e) => console.warn(ne, ...e), tn = (...e) => console.debug(ne, ...e), nn = (e) => console.time(`${ne} ${e}`), ln = (e) => console.timeEnd(`${ne} ${e}`);
1476
+ function sn(e) {
1477
1477
  const t = new Uint8Array(
1478
1478
  e.reduce((l, s) => l + s.byteLength, 0)
1479
1479
  );
1480
1480
  return e.reduce((l, s) => (t.set(s, l), l + s.byteLength), 0), t;
1481
1481
  }
1482
- function rn(e, t, l) {
1482
+ function on(e, t, l) {
1483
1483
  let s;
1484
1484
  if (ArrayBuffer.isView(e))
1485
1485
  s = e.buffer;
@@ -1502,27 +1502,27 @@ function rn(e, t, l) {
1502
1502
  throw new Error("Unsupported output format");
1503
1503
  }
1504
1504
  }
1505
- function cn(e) {
1505
+ function rn(e) {
1506
1506
  const t = new Image();
1507
1507
  return t.decoding = "sync", t.loading = "eager", t.crossOrigin = "anonymous", t.src = e, t;
1508
1508
  }
1509
- function an(e) {
1509
+ function cn(e) {
1510
1510
  return new Promise((t, l) => {
1511
- const s = cn(e);
1511
+ const s = rn(e);
1512
1512
  s.onload = () => t(s), s.onerror = l;
1513
1513
  });
1514
1514
  }
1515
- function dn(e, t) {
1515
+ function an(e, t) {
1516
1516
  var l;
1517
1517
  const { top: s = 0, left: c = 0, width: i, height: a, rawWidth: n, rate: o = 4, callback: r } = t, d = new Uint8ClampedArray(i * a * o), p = c * o, u = s * o, y = i * o, M = n * o;
1518
1518
  for (let m = 0; m < a; m++)
1519
1519
  for (let h = 0; h < y; h++) {
1520
- const g = (u + m) * M + (p + h);
1521
- d[m * y + h] = (l = r == null ? void 0 : r(g)) != null ? l : e[g];
1520
+ const w = (u + m) * M + (p + h);
1521
+ d[m * y + h] = (l = r == null ? void 0 : r(w)) != null ? l : e[w];
1522
1522
  }
1523
1523
  return d;
1524
1524
  }
1525
- function ct(e = {}) {
1525
+ function rt(e = {}) {
1526
1526
  const {
1527
1527
  chunkSize: t = 4096
1528
1528
  } = e;
@@ -1550,7 +1550,7 @@ function ct(e = {}) {
1550
1550
  }
1551
1551
  };
1552
1552
  }
1553
- function mn(e) {
1553
+ function dn(e) {
1554
1554
  var t, l, s;
1555
1555
  const c = j({
1556
1556
  version: "89a",
@@ -1578,43 +1578,43 @@ function mn(e) {
1578
1578
  if (c.backgroundColorIndex === 0)
1579
1579
  throw new Error("Background index explicitly passed as 0.");
1580
1580
  }
1581
- const a = ct(), {
1581
+ const a = rt(), {
1582
1582
  writeByte: n,
1583
1583
  writeBytes: o,
1584
1584
  writeUnsigned: r,
1585
1585
  writeString: d,
1586
1586
  flush: p
1587
1587
  } = a;
1588
- return d(Rt), d(c.version), r(c.width), r(c.height), n(parseInt(`${c.colorTableSize ? 1 : 0}1110${c.colorTableSize.toString(2).padStart(3, "0")}`, 2)), n(c.backgroundColorIndex), n(c.pixelAspectRatio), o((s = (l = c.colorTable) == null ? void 0 : l.flat()) != null ? s : []), c.looped && (n(rt), n(Bt), n($t), d("NETSCAPE2.0"), n(3), n(1), r(c.loopCount), n(0)), p();
1588
+ return d(Ht), d(c.version), r(c.width), r(c.height), n(parseInt(`${c.colorTableSize ? 1 : 0}1110${c.colorTableSize.toString(2).padStart(3, "0")}`, 2)), n(c.backgroundColorIndex), n(c.pixelAspectRatio), o((s = (l = c.colorTable) == null ? void 0 : l.flat()) != null ? s : []), c.looped && (n(ot), n(At), n(Bt), d("NETSCAPE2.0"), n(3), n(1), r(c.loopCount), n(0)), p();
1589
1589
  }
1590
- function bn(e, t, l) {
1590
+ function mn(e, t, l) {
1591
1591
  const { writeByte: s, getCursor: c, calculateDistance: i } = l;
1592
1592
  s(e);
1593
1593
  let a = c();
1594
1594
  s(0);
1595
1595
  const n = 1 << e, o = n - 1, r = n + 1;
1596
1596
  let d = r + 1, p = e + 1, u = 0, y = 0;
1597
- function M(w) {
1598
- for (; u >= w; )
1597
+ function M(g) {
1598
+ for (; u >= g; )
1599
1599
  s(y & 255), y >>= 8, u -= 8, i(a) === 256 && (s(255, a), a = c(), s(0));
1600
1600
  }
1601
- function m(w) {
1602
- y |= w << u, u += p, M(8);
1601
+ function m(g) {
1602
+ y |= g << u, u += p, M(8);
1603
1603
  }
1604
- let h = t[0] & o, g = {}, W, x, Z;
1604
+ let h = t[0] & o, w = {}, W, x, Z;
1605
1605
  m(n);
1606
- for (let w = t.length, L = 1; L < w; ++L)
1607
- if (Z = t[L] & o, W = h << 8 | Z, x = g[W], x === void 0) {
1606
+ for (let g = t.length, L = 1; L < g; ++L)
1607
+ if (Z = t[L] & o, W = h << 8 | Z, x = w[W], x === void 0) {
1608
1608
  for (y |= h << u, u += p; u >= 8; )
1609
1609
  s(y & 255), y >>= 8, u -= 8, i(a) === 256 && (s(255, a), a = c(), s(0));
1610
- d === 4096 ? (m(n), d = r + 1, p = e + 1, g = {}) : (d >= 1 << p && ++p, g[W] = d++), h = Z;
1610
+ d === 4096 ? (m(n), d = r + 1, p = e + 1, w = {}) : (d >= 1 << p && ++p, w[W] = d++), h = Z;
1611
1611
  } else
1612
1612
  h = x;
1613
1613
  m(h), m(r), M(1), i(a) === 1 ? s(0, a) : (s(i(a) - 1, a), s(0));
1614
1614
  }
1615
- function un(e) {
1615
+ function bn(e) {
1616
1616
  var t, l, s;
1617
- const c = ct(), {
1617
+ const c = rt(), {
1618
1618
  writeByte: i,
1619
1619
  writeBytes: a,
1620
1620
  writeUnsigned: n,
@@ -1631,7 +1631,7 @@ function un(e) {
1631
1631
  disposal: m = 0
1632
1632
  } = e;
1633
1633
  const h = (t = e.graphicControl) == null ? void 0 : t.transparent;
1634
- let g = (s = (l = e.graphicControl) == null ? void 0 : l.transparentIndex) != null ? s : 255;
1634
+ let w = (s = (l = e.graphicControl) == null ? void 0 : l.transparentIndex) != null ? s : 255;
1635
1635
  if (r < 0 || r > 65535)
1636
1636
  throw new Error("Left invalid.");
1637
1637
  if (d < 0 || d > 65535)
@@ -1647,14 +1647,14 @@ function un(e) {
1647
1647
  for (; x >>= 1; )
1648
1648
  ++W;
1649
1649
  }
1650
- return i(rt), i(_t), i(qt), h ? m || (m = 2) : g = 0, i(parseInt(`000${Number(m & 7).toString(2).padStart(3, "0")}0${h ? 1 : 0}`, 2)), n(y / 10), i(g), i(0), i(At), n(r), n(d), n(p), n(u), M != null && M.length ? (i(parseInt(`10000${(W - 1).toString(2).padStart(3, "0")}`, 2)), a(M.flat())) : i(0), bn(W, e.imageData, c), o();
1650
+ return i(ot), i($t), i(_t), h ? m || (m = 2) : w = 0, i(parseInt(`000${Number(m & 7).toString(2).padStart(3, "0")}0${h ? 1 : 0}`, 2)), n(y / 10), i(w), i(0), i(Rt), n(r), n(d), n(p), n(u), M != null && M.length ? (i(parseInt(`10000${(W - 1).toString(2).padStart(3, "0")}`, 2)), a(M.flat())) : i(0), mn(W, e.imageData, c), o();
1651
1651
  }
1652
- function pn(e) {
1652
+ function un(e) {
1653
1653
  const {
1654
1654
  frames: t,
1655
1655
  palette: l,
1656
1656
  transparentIndex: s
1657
- } = e, c = st(l);
1657
+ } = e, c = lt(l);
1658
1658
  return t.map(({ imageData: i }) => {
1659
1659
  let a = !1;
1660
1660
  const n = new Uint8ClampedArray(i.length / 4);
@@ -1668,7 +1668,7 @@ function pn(e) {
1668
1668
  };
1669
1669
  });
1670
1670
  }
1671
- function Mn(e) {
1671
+ function pn(e) {
1672
1672
  const { frames: t, transparentIndex: l } = e;
1673
1673
  let s;
1674
1674
  const c = t.length;
@@ -1730,8 +1730,8 @@ function Mn(e) {
1730
1730
  for (; u < M; ) {
1731
1731
  let x = !0;
1732
1732
  for (let Z = 0; Z < n; Z++) {
1733
- const w = n * u + Z;
1734
- if (d[w] !== s[w]) {
1733
+ const g = n * u + Z;
1734
+ if (d[g] !== s[g]) {
1735
1735
  x = !1;
1736
1736
  break;
1737
1737
  }
@@ -1743,8 +1743,8 @@ function Mn(e) {
1743
1743
  for (; M > u; ) {
1744
1744
  let x = !0;
1745
1745
  for (let Z = 0; Z < n; Z++) {
1746
- const w = n * M + Z;
1747
- if (d[w] !== s[w]) {
1746
+ const g = n * M + Z;
1747
+ if (d[g] !== s[g]) {
1748
1748
  x = !1;
1749
1749
  break;
1750
1750
  }
@@ -1759,8 +1759,8 @@ function Mn(e) {
1759
1759
  for (; p < y; ) {
1760
1760
  let x = !0;
1761
1761
  for (let Z = u; Z <= M; Z++) {
1762
- const w = Z * n + p;
1763
- if (d[w] !== s[w]) {
1762
+ const g = Z * n + p;
1763
+ if (d[g] !== s[g]) {
1764
1764
  x = !1;
1765
1765
  break;
1766
1766
  }
@@ -1772,8 +1772,8 @@ function Mn(e) {
1772
1772
  for (; y > p; ) {
1773
1773
  let x = !0;
1774
1774
  for (let Z = u; Z <= M; Z++) {
1775
- const w = Z * n + y;
1776
- if (d[w] !== s[w]) {
1775
+ const g = Z * n + y;
1776
+ if (d[g] !== s[g]) {
1777
1777
  x = !1;
1778
1778
  break;
1779
1779
  }
@@ -1786,13 +1786,13 @@ function Mn(e) {
1786
1786
  }
1787
1787
  m = s, s = d;
1788
1788
  }
1789
- const h = y + 1 - p, g = M + 1 - u, W = dn(
1789
+ const h = y + 1 - p, w = M + 1 - u, W = an(
1790
1790
  d,
1791
1791
  {
1792
1792
  left: p,
1793
1793
  top: u,
1794
1794
  width: h,
1795
- height: g,
1795
+ height: w,
1796
1796
  rawWidth: n,
1797
1797
  rate: 1,
1798
1798
  callback: (x) => {
@@ -1805,21 +1805,21 @@ function Mn(e) {
1805
1805
  left: p,
1806
1806
  top: u,
1807
1807
  width: h,
1808
- height: g,
1808
+ height: w,
1809
1809
  disposal: r && a !== c - 1 ? 2 : 1,
1810
1810
  imageData: W
1811
1811
  };
1812
1812
  });
1813
1813
  }
1814
- function yn(e) {
1814
+ function Mn(e) {
1815
1815
  return {
1816
- time: (t) => e && ln(t),
1817
- timeEnd: (t) => e && sn(t),
1818
- debug: (...t) => e && nn(...t),
1819
- warn: (...t) => e && tn(...t)
1816
+ time: (t) => e && nn(t),
1817
+ timeEnd: (t) => e && ln(t),
1818
+ debug: (...t) => e && tn(...t),
1819
+ warn: (...t) => e && en(...t)
1820
1820
  };
1821
1821
  }
1822
- function hn(e) {
1822
+ function yn(e) {
1823
1823
  const t = /* @__PURE__ */ new Map(), { workerUrl: l } = e;
1824
1824
  let { workerNumber: s = 1 } = e;
1825
1825
  const c = [...new Array(l ? s : 0)].map(() => {
@@ -1852,7 +1852,7 @@ function hn(e) {
1852
1852
  }()
1853
1853
  };
1854
1854
  }
1855
- function xn(e) {
1855
+ function hn(e) {
1856
1856
  const {
1857
1857
  width: t,
1858
1858
  height: l,
@@ -1867,27 +1867,27 @@ function xn(e) {
1867
1867
  height: l,
1868
1868
  maxColors: n,
1869
1869
  frames: [],
1870
- log: yn(o),
1870
+ log: Mn(o),
1871
1871
  palette: De({
1872
1872
  skipTransparent: !1
1873
1873
  }),
1874
- worker: hn({ workerUrl: s, workerNumber: c }),
1874
+ worker: yn({ workerUrl: s, workerNumber: c }),
1875
1875
  encodeId: 0,
1876
1876
  encode(m) {
1877
1877
  return V(this, null, function* () {
1878
- const { log: h, frames: g, encodeId: W, width: x, height: Z } = r;
1878
+ const { log: h, frames: w, encodeId: W, width: x, height: Z } = r;
1879
1879
  r.encodeId++;
1880
- const { width: w = x, height: L = Z } = m;
1880
+ const { width: g = x, height: L = Z } = m;
1881
1881
  let { imageData: G } = m;
1882
1882
  h.time(`palette:sample-${W}`);
1883
1883
  try {
1884
- G = typeof G == "string" ? yield an(G) : G;
1885
- const k = rn(G, "uint8ClampedArray", {
1886
- width: w,
1884
+ G = typeof G == "string" ? yield cn(G) : G;
1885
+ const k = on(G, "uint8ClampedArray", {
1886
+ width: g,
1887
1887
  height: L
1888
1888
  });
1889
- g.push(F(j({
1890
- width: w,
1889
+ w.push(F(j({
1890
+ width: g,
1891
1891
  height: L
1892
1892
  }, m), {
1893
1893
  imageData: k
@@ -1899,9 +1899,9 @@ function xn(e) {
1899
1899
  },
1900
1900
  flush() {
1901
1901
  return V(this, null, function* () {
1902
- const { log: m, frames: h, width: g, height: W, maxColors: x, palette: Z } = r;
1902
+ const { log: m, frames: h, width: w, height: W, maxColors: x, palette: Z } = r;
1903
1903
  m.time("palette:generate");
1904
- const w = yield p(x), L = De(w).getColors("rgb").map((I) => I.value);
1904
+ const g = yield p(x), L = De(g).getColors("rgb").map((I) => I.value);
1905
1905
  m.debug("palette:maxColors", x);
1906
1906
  const G = L.map((I) => {
1907
1907
  const J = I[0].toString(16).padStart(2, "0"), oe = I[1].toString(16).padStart(2, "0"), re = I[2].toString(16).padStart(2, "0");
@@ -1915,7 +1915,7 @@ function xn(e) {
1915
1915
  m.timeEnd("palette:generate"), m.time("frames:index");
1916
1916
  const k = yield u({
1917
1917
  frames: h,
1918
- palette: w,
1918
+ palette: g,
1919
1919
  transparentIndex: a
1920
1920
  });
1921
1921
  m.timeEnd("frames:index"), m.time("frames:crop");
@@ -1939,13 +1939,13 @@ function xn(e) {
1939
1939
  })
1940
1940
  )));
1941
1941
  m.timeEnd("frames:encode"), m.time("output");
1942
- const D = mn(F(j({}, e), {
1942
+ const D = dn(F(j({}, e), {
1943
1943
  colorTable: L,
1944
1944
  backgroundColorIndex: a,
1945
- width: g,
1945
+ width: w,
1946
1946
  height: W
1947
- })), xe = on(se), U = new Uint8Array(D.length + xe.byteLength + 1);
1948
- return U.set(D), U.set(xe, D.byteLength), U[U.length - 1] = en, m.timeEnd("output"), Z.reset(), r.frames = [], r.encodeId = 0, U;
1947
+ })), xe = sn(se), U = new Uint8Array(D.length + xe.byteLength + 1);
1948
+ return U.set(D), U.set(xe, D.byteLength), U[U.length - 1] = qt, m.timeEnd("output"), Z.reset(), r.frames = [], r.encodeId = 0, U;
1949
1949
  });
1950
1950
  }
1951
1951
  };
@@ -1974,7 +1974,7 @@ function xn(e) {
1974
1974
  return (yield r.worker.call(
1975
1975
  "frames:index",
1976
1976
  m
1977
- )) || pn(m);
1977
+ )) || un(m);
1978
1978
  });
1979
1979
  }
1980
1980
  function y(m) {
@@ -1982,8 +1982,8 @@ function xn(e) {
1982
1982
  return (yield r.worker.call(
1983
1983
  "frames:crop",
1984
1984
  m,
1985
- m.frames.map((g) => g.imageData.buffer)
1986
- )) || Mn(m);
1985
+ m.frames.map((w) => w.imageData.buffer)
1986
+ )) || pn(m);
1987
1987
  });
1988
1988
  }
1989
1989
  function M(m) {
@@ -1992,20 +1992,20 @@ function xn(e) {
1992
1992
  "frame:encode",
1993
1993
  m,
1994
1994
  [m.imageData.buffer]
1995
- )) || un(m);
1995
+ )) || bn(m);
1996
1996
  });
1997
1997
  }
1998
1998
  return r;
1999
1999
  }
2000
- function Zn(e) {
2000
+ function xn(e) {
2001
2001
  return V(this, null, function* () {
2002
- const { frames: t } = e, l = xn(e);
2002
+ const { frames: t } = e, l = hn(e);
2003
2003
  for (let s = t.length, c = 0; c < s; c++)
2004
2004
  yield l.encode(t[c]);
2005
2005
  return yield l.flush();
2006
2006
  });
2007
2007
  }
2008
- const gn = "data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgc2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxxZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3ZhciBBPU1hdGgucG93LGllPShCLHgsayk9PnggaW4gQj9HZShCLHgse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KTpCW3hdPWssWj0oQix4KT0+e2Zvcih2YXIgayBpbiB4fHwoeD17fSkpSGUuY2FsbCh4LGspJiZpZShCLGsseFtrXSk7aWYoc2UpZm9yKHZhciBrIG9mIHNlKHgpKXFlLmNhbGwoeCxrKSYmaWUoQixrLHhba10pO3JldHVybiBCfTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgQj10eXBlb2Ygd2luZG93PCJ1Iix4PTY1NTM2LTEsaz14KngsY2U9NTEyLTEsTD1bMCwyMCw0MCw2MCw4MCw5OSwxMTksMTM5LDE1OSwxNzksMTk5LDIxOSwyNDEsMjY0LDI4OCwzMTMsMzQwLDM2NywzOTYsNDI3LDQ1OCw0OTEsNTI2LDU2Miw1OTksNjM3LDY3Nyw3MTgsNzYxLDgwNSw4NTEsODk4LDk0Nyw5OTcsMTA0OCwxMTAxLDExNTYsMTIxMiwxMjcwLDEzMzAsMTM5MSwxNDUzLDE1MTcsMTU4MywxNjUxLDE3MjAsMTc5MCwxODYzLDE5MzcsMjAxMywyMDkwLDIxNzAsMjI1MCwyMzMzLDI0MTgsMjUwNCwyNTkyLDI2ODEsMjc3MywyODY2LDI5NjEsMzA1OCwzMTU3LDMyNTgsMzM2MCwzNDY0LDM1NzAsMzY3OCwzNzg4LDM5MDAsNDAxNCw0MTI5LDQyNDcsNDM2Niw0NDg4LDQ2MTEsNDczNiw0ODY0LDQ5OTMsNTEyNCw1MjU3LDUzOTIsNTUzMCw1NjY5LDU4MTAsNTk1Myw2MDk5LDYyNDYsNjM5NSw2NTQ3LDY3MDAsNjg1Niw3MDE0LDcxNzQsNzMzNSw3NTAwLDc2NjYsNzgzNCw4MDA0LDgxNzcsODM1Miw4NTI4LDg3MDgsODg4OSw5MDcyLDkyNTgsOTQ0NSw5NjM1LDk4MjgsMTAwMjIsMTAyMTksMTA0MTcsMTA2MTksMTA4MjIsMTEwMjgsMTEyMzUsMTE0NDYsMTE2NTgsMTE4NzMsMTIwOTAsMTIzMDksMTI1MzAsMTI3NTQsMTI5ODAsMTMyMDksMTM0NDAsMTM2NzMsMTM5MDksMTQxNDYsMTQzODcsMTQ2MjksMTQ4NzQsMTUxMjIsMTUzNzEsMTU2MjMsMTU4NzgsMTYxMzUsMTYzOTQsMTY2NTYsMTY5MjAsMTcxODcsMTc0NTYsMTc3MjcsMTgwMDEsMTgyNzcsMTg1NTYsMTg4MzcsMTkxMjEsMTk0MDcsMTk2OTYsMTk5ODcsMjAyODEsMjA1NzcsMjA4NzYsMjExNzcsMjE0ODEsMjE3ODcsMjIwOTYsMjI0MDcsMjI3MjEsMjMwMzgsMjMzNTcsMjM2NzgsMjQwMDIsMjQzMjksMjQ2NTgsMjQ5OTAsMjUzMjUsMjU2NjIsMjYwMDEsMjYzNDQsMjY2ODgsMjcwMzYsMjczODYsMjc3MzksMjgwOTQsMjg0NTIsMjg4MTMsMjkxNzYsMjk1NDIsMjk5MTEsMzAyODIsMzA2NTYsMzEwMzMsMzE0MTIsMzE3OTQsMzIxNzksMzI1NjcsMzI5NTcsMzMzNTAsMzM3NDUsMzQxNDMsMzQ1NDQsMzQ5NDgsMzUzNTUsMzU3NjQsMzYxNzYsMzY1OTEsMzcwMDgsMzc0MjksMzc4NTIsMzgyNzgsMzg3MDYsMzkxMzgsMzk1NzIsNDAwMDksNDA0NDksNDA4OTEsNDEzMzcsNDE3ODUsNDIyMzYsNDI2OTAsNDMxNDcsNDM2MDYsNDQwNjksNDQ1MzQsNDUwMDIsNDU0NzMsNDU5NDcsNDY0MjMsNDY5MDMsNDczODUsNDc4NzEsNDgzNTksNDg4NTAsNDkzNDQsNDk4NDEsNTAzNDEsNTA4NDQsNTEzNDksNTE4NTgsNTIzNjksNTI4ODQsNTM0MDEsNTM5MjEsNTQ0NDUsNTQ5NzEsNTU1MDAsNTYwMzIsNTY1NjcsNTcxMDUsNTc2NDYsNTgxOTAsNTg3MzcsNTkyODcsNTk4NDAsNjAzOTYsNjA5NTUsNjE1MTcsNjIwODIsNjI2NTAsNjMyMjEsNjM3OTUsNjQzNzIsNjQ5NTIsNjU1MzVdLEc9WzAsNiwxMywxOCwyMiwyNSwyOCwzMSwzNCwzNiwzOCw0MCw0Miw0NCw0Niw0OCw1MCw1MSw1Myw1NCw1Niw1Nyw1OSw2MCw2MSw2Miw2NCw2NSw2Niw2Nyw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Niw4Nyw4OCw4OSw5MCw5MSw5MSw5Miw5Myw5NCw5NSw5NSw5Niw5Nyw5OCw5OCw5OSwxMDAsMTAxLDEwMSwxMDIsMTAzLDEwMywxMDQsMTA1LDEwNiwxMDYsMTA3LDEwOCwxMDgsMTA5LDExMCwxMTAsMTExLDExMSwxMTIsMTEzLDExMywxMTQsMTE1LDExNSwxMTYsMTE2LDExNywxMTgsMTE4LDExOSwxMTksMTIwLDEyMSwxMjEsMTIyLDEyMiwxMjMsMTIzLDEyNCwxMjUsMTI1LDEyNiwxMjYsMTI3LDEyNywxMjgsMTI4LDEyOSwxMjksMTMwLDEzMCwxMzEsMTMyLDEzMiwxMzMsMTMzLDEzNCwxMzQsMTM1LDEzNSwxMzYsMTM2LDEzNywxMzcsMTM4LDEzOCwxMzksMTM5LDE0MCwxNDAsMTQwLDE0MSwxNDEsMTQyLDE0MiwxNDMsMTQzLDE0NCwxNDQsMTQ1LDE0NSwxNDYsMTQ2LDE0NywxNDcsMTQ3LDE0OCwxNDgsMTQ5LDE0OSwxNTAsMTUwLDE1MSwxNTEsMTUxLDE1MiwxNTIsMTUzLDE1MywxNTQsMTU0LDE1NCwxNTUsMTU1LDE1NiwxNTYsMTU2LDE1NywxNTcsMTU4LDE1OCwxNTksMTU5LDE1OSwxNjAsMTYwLDE2MSwxNjEsMTYxLDE2MiwxNjIsMTYzLDE2MywxNjMsMTY0LDE2NCwxNjUsMTY1LDE2NSwxNjYsMTY2LDE2NiwxNjcsMTY3LDE2OCwxNjgsMTY4LDE2OSwxNjksMTY5LDE3MCwxNzAsMTcxLDE3MSwxNzEsMTcyLDE3MiwxNzIsMTczLDE3MywxNzQsMTc0LDE3NCwxNzUsMTc1LDE3NSwxNzYsMTc2LDE3NiwxNzcsMTc3LDE3NywxNzgsMTc4LDE3OSwxNzksMTc5LDE4MCwxODAsMTgwLDE4MSwxODEsMTgxLDE4MiwxODIsMTgyLDE4MywxODMsMTgzLDE4NCwxODQsMTg0LDE4NSwxODUsMTg1LDE4NiwxODYsMTg2LDE4NywxODcsMTg3LDE4OCwxODgsMTg4LDE4OSwxODksMTg5LDE5MCwxOTAsMTkwLDE5MSwxOTEsMTkxLDE5MiwxOTIsMTkyLDE5MywxOTMsMTkzLDE5MywxOTQsMTk0LDE5NCwxOTUsMTk1LDE5NSwxOTYsMTk2LDE5NiwxOTcsMTk3LDE5NywxOTgsMTk4LDE5OCwxOTgsMTk5LDE5OSwxOTksMjAwLDIwMCwyMDAsMjAxLDIwMSwyMDEsMjAxLDIwMiwyMDIsMjAyLDIwMywyMDMsMjAzLDIwNCwyMDQsMjA0LDIwNCwyMDUsMjA1LDIwNSwyMDYsMjA2LDIwNiwyMDYsMjA3LDIwNywyMDcsMjA4LDIwOCwyMDgsMjA4LDIwOSwyMDksMjA5LDIxMCwyMTAsMjEwLDIxMCwyMTEsMjExLDIxMSwyMTIsMjEyLDIxMiwyMTIsMjEzLDIxMywyMTMsMjE0LDIxNCwyMTQsMjE0LDIxNSwyMTUsMjE1LDIxNSwyMTYsMjE2LDIxNiwyMTcsMjE3LDIxNywyMTcsMjE4LDIxOCwyMTgsMjE4LDIxOSwyMTksMjE5LDIyMCwyMjAsMjIwLDIyMCwyMjEsMjIxLDIyMSwyMjEsMjIyLDIyMiwyMjIsMjIyLDIyMywyMjMsMjIzLDIyNCwyMjQsMjI0LDIyNCwyMjUsMjI1LDIyNSwyMjUsMjI2LDIyNiwyMjYsMjI2LDIyNywyMjcsMjI3LDIyNywyMjgsMjI4LDIyOCwyMjgsMjI5LDIyOSwyMjksMjI5LDIzMCwyMzAsMjMwLDIzMCwyMzEsMjMxLDIzMSwyMzEsMjMyLDIzMiwyMzIsMjMyLDIzMywyMzMsMjMzLDIzMywyMzQsMjM0LDIzNCwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNiwyMzYsMjM2LDIzNiwyMzcsMjM3LDIzNywyMzcsMjM4LDIzOCwyMzgsMjM4LDIzOSwyMzksMjM5LDIzOSwyMzksMjQwLDI0MCwyNDAsMjQwLDI0MSwyNDEsMjQxLDI0MSwyNDIsMjQyLDI0MiwyNDIsMjQzLDI0MywyNDMsMjQzLDI0MywyNDQsMjQ0LDI0NCwyNDQsMjQ1LDI0NSwyNDUsMjQ1LDI0NiwyNDYsMjQ2LDI0NiwyNDYsMjQ3LDI0NywyNDcsMjQ3LDI0OCwyNDgsMjQ4LDI0OCwyNDksMjQ5LDI0OSwyNDksMjQ5LDI1MCwyNTAsMjUwLDI1MCwyNTEsMjUxLDI1MSwyNTEsMjUxLDI1MiwyNTIsMjUyLDI1MiwyNTMsMjUzLDI1MywyNTMsMjUzLDI1NCwyNTQsMjU0LDI1NCwyNTUsMjU1LDI1NV07ZnVuY3Rpb24gUihuKXtsZXQgZTtpZihuPD0wKXJldHVybiAwO2lmKG4+PXgpcmV0dXJuIHg7ZT1uKihuKihuKy0xNDQxMDcpL3grMTMyMTE0KS94KzE0Mzc5O2ZvcihsZXQgbz0wO288MjtvKyspe2NvbnN0IGk9ZSplKmUsbD1uKygyKmkray8yKS9rO2U9KGUqKDIqbisoaStrLzIpL2spK2wvMikvbH1yZXR1cm4gZX1mdW5jdGlvbiBfKG4sZSl7cmV0dXJuKG5eZSk8MD8obi1lLzIpL2U6KG4rZS8yKS9lfWZ1bmN0aW9uIEgobil7Y29uc3QgZT1MW24+PjE2JjI1NV0sbz1MW24+PjgmMjU1XSxpPUxbbiYyNTVdLGw9KDI3MDE1KmUrMzUxNDkqbyszMzcyKmkreC8yKS94LGM9KDEzODg3KmUrNDQ2MTAqbys3MDM4KmkreC8yKS94LGE9KDU3ODcqZSsxODQ2MipvKzQxMjg2KmkreC8yKS94LHQ9UihsKSxyPVIoYykscz1SKGEpO3JldHVybltfKDEzNzkyKnQrNTIwMTAqci0yNjcqcyx4KSxfKDEyOTYyOCp0LTE1OTE1OCpyKzI5NTMwKnMseCksXygxNjk4KnQrNTEyOTkqci01Mjk5NypzLHgpXX1mdW5jdGlvbiB6KG4pe2lmKG48PTApcmV0dXJuIDA7aWYobj49eClyZXR1cm4gMjU1O3tjb25zdCBlPW4qY2Usbz1+fihlL3gpLGk9ZSV4LGw9R1tvXSxjPUdbbysxXTtyZXR1cm4oaSooYy1sKSt4LzIpL3grbH19ZnVuY3Rpb24gZmUobil7Y29uc3QgZT1uWzBdK18oMjU5NzQqblsxXSx4KStfKDE0MTQzKm5bMl0seCksbz1uWzBdK18oLTY5MTgqblsxXSx4KStfKC00MTg1Km5bMl0seCksaT1uWzBdK18oLTU4NjQqblsxXSx4KStfKC04NDYzOCpuWzJdLHgpLGw9QShlLDIpKmUvayxjPUEobywyKSpvL2ssYT1BKGksMikqaS9rLHQ9eigoMjY3MTY5KmwrLTIxNjc3MSpjKzE1MTM3KmEreC8yKS94KSxyPXooKC04MzEyNypsKzE3MTAzMCpjKy0yMjM2OCphK3gvMikveCkscz16KCgtMjc1KmwrLTQ2MDk5KmMrMTExOTA5KmEreC8yKS94KTtyZXR1cm4gdDw8MTZ8cjw8OHxzfWZ1bmN0aW9uIGRlKG4pe2NvbnN0IGU9e2w6MCxhOjEsYjoyfSxvPW5bMF0saT1uWzFdLGw9blsyXSxjPWVbb10sYT1lW2ldLHQ9ZVtsXTtyZXR1cm4ocixzKT0+ci5va2xhYltjXS1zLm9rbGFiW2NdfHxyLm9rbGFiW2FdLXMub2tsYWJbYV18fHIub2tsYWJbdF0tcy5va2xhYlt0XX1mdW5jdGlvbiB1ZShuLGUsbyl7cmV0dXJuIG4+PWU/ZT49bz8ibGFiIjpuPj1vPyJsYmEiOiJibGEiOm4+PW8/ImFsYiI6ZT49bz8iYWJsIjoiYmFsIn1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2NvbnN0IG89bmV3IEltYWdlO28uZGVjb2Rpbmc9InN5bmMiLG8ubG9hZGluZz0iZWFnZXIiLG8uY3Jvc3NPcmlnaW49ImFub255bW91cyIsby5vbmxvYWQ9KCk9PmUobyksby5vbmVycm9yPSgpPT5lKG8pLG8uc3JjPW59KX1mdW5jdGlvbiBxKG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJfX0NPTlRFWFRfXyJpbiBufWZ1bmN0aW9uIGdlKG4pe3JldHVybiBxKG4pP246cGUobil9ZnVuY3Rpb24gcGUobj17fSl7Y29uc3R7bWF4Q29sb3JzOmU9MjU2LHN0YXRzTW9kZTpvPSJmdWxsIixzYW1wbGVzOmk9W10sc2tpcFRyYW5zcGFyZW50Omw9ITB9PW47cmV0dXJue19fQ09OVEVYVF9fOiEwLHNhbXBsZXM6aSxtYXhDb2xvcnM6ZSxzdGF0c01vZGU6byxza2lwVHJhbnNwYXJlbnQ6bCxjb2xvclNhbXBsZXM6W10sY29sb3JTYW1wbGVzQ2FjaGU6bmV3IE1hcCxjb2xvckJveGVzOltdLGNvbG9yQm94ZXNJbmRleFRyZWU6W10sZmluZGVyQ2FjaGU6bmV3IE1hcH19ZnVuY3Rpb24gWShuKXtjb25zdCBlPXEobik/bjpuLmNvbnRleHQse2NvbG9yQm94ZXNJbmRleFRyZWU6byxmaW5kZXJDYWNoZTppfT1lO2Z1bmN0aW9uIGwoYSx0LHIpe2NvbnN0e2xlZnQ6cyxyaWdodDp1LGxvbmdlc3Q6ZCxva2xhYjpoLGNvbG9yQm94SW5kZXg6Yn09b1thXSxwPU1hdGgubWluKEEodFswXS1oWzBdLDIpK0EodFsxXS1oWzFdLDIpK0EodFsyXS1oWzJdLDIpLDQyOTQ5NjcyOTUtMSk7cDxyLmRpc3QmJihyLmNvbG9yQm94SW5kZXg9YixyLmRpc3Q9cCk7bGV0IGYsZztpZihzIT09LTF8fHUhPT0tMSl7Y29uc3QgQz10W2RdLWhbZF07Qzw9MD8oZj1zLGc9dSk6KGY9dSxnPXMpLGYhPT0tMSYmbChmLHQsciksZyE9PS0xJiZBKEMsMik8ci5kaXN0JiZsKGcsdCxyKX19ZnVuY3Rpb24gYyhhKXtjb25zdCB0PXtkaXN0Ok51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGNvbG9yQm94SW5kZXg6LTF9O3JldHVybiBsKDAsYSx0KSx0LmNvbG9yQm94SW5kZXh9cmV0dXJuIGE9Pntjb25zdCB0PWElMzI3Njg7bGV0IHI9aS5nZXQodCk7cnx8KHI9bmV3IE1hcCxpLnNldCh0LHIpKTtsZXQgcz1yLmdldChhKTtyZXR1cm4gcyE9PXZvaWQgMHx8KHM9YyhIKGEpKSxyLnNldChhLHMpKSxzfX1mdW5jdGlvbiBtZShuLGUpe2NvbnN0e2NvbG9yQm94ZXM6b309bixpPW8ucmVkdWNlKChhLHQpPT5hK3Qud2VpZ2h0LDApO2lmKCFlKXJldHVybiBuLmNvbG9yQm94ZXMubWFwKGE9Pntjb25zdHtzcmdiOnQsd2VpZ2h0OnJ9PWE7cmV0dXJue3ZhbHVlOnQscGVyY2VudGFnZTpyL2l9fSk7Y29uc3QgbD1bXTtmb3IobGV0IGE9by5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0e3NyZ2I6cix3ZWlnaHQ6c309b1t0XTtsLnB1c2goe3ZhbHVlOltyPj4xNiYyNTUscj4+OCYyNTUsciYyNTVdLHBlcmNlbnRhZ2U6cy9pfSl9bGV0IGM7aWYoZT09PSJidWZmZXIiKXtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsLmxlbmd0aCo0KTtmb3IobGV0IGE9bC5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0IHI9dCo0LHM9bFt0XS52YWx1ZTtjW3JdPXNbMF0sY1tyKzFdPXNbMV0sY1tyKzJdPXNbMl0sY1tyKzNdPTI1NX19ZWxzZSBpZihlPT09ImhleCIpe2M9W107Zm9yKGxldCBhPWwubGVuZ3RoLHQ9MDt0PGE7dCsrKXtjb25zdHt2YWx1ZTpyLHBlcmNlbnRhZ2U6c309bFt0XSx1PXJbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxkPXJbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxoPXJbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtjLnB1c2goe3ZhbHVlOmAjJHt1fSR7ZH0ke2h9YCxwZXJjZW50YWdlOnN9KX19ZWxzZSBjPWw7cmV0dXJuIGN9ZnVuY3Rpb24gRihuLGUsbyl7dmFyIHUsZCxoLGI7Y29uc3R7Z2V0Q29udGV4dDJkOmkscHJldmlvdXNTYW1wbGU6bCxza2lwVHJhbnNwYXJlbnQ6Y309byx7c3RhdHNNb2RlOmEsY29sb3JTYW1wbGVzOnQsY29sb3JTYW1wbGVzQ2FjaGU6cn09bjtsZXQgcztpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZS5idWZmZXIpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpZihBcnJheS5pc0FycmF5KGVbMF0pKXtjb25zdCBwPVtdO2ZvcihsZXQgZj1lLmxlbmd0aCxnPTA7ZzxmO2crKylwLnB1c2goKHU9ZVtnXVswXSkhPW51bGw/dTowLChkPWVbZ11bMV0pIT1udWxsP2Q6MCwoaD1lW2ddWzJdKSE9bnVsbD9oOjAsKGI9ZVtnXVszXSkhPW51bGw/YjoyNTUpO3M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApfWVsc2Ugcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IHA9aT09bnVsbD92b2lkIDA6aSgpO2lmKCFwKXJldHVybjtjb25zdCBmPXAuY2FudmFzO3JldHVybiBoZShlKS50aGVuKGc9PihwLmNsZWFyUmVjdCgwLDAsZi53aWR0aCxmLmhlaWdodCksZi53aWR0aD1nLndpZHRoLGYuaGVpZ2h0PWcuaGVpZ2h0LHAuZHJhd0ltYWdlKGcsMCwwLGYud2lkdGgsZi5oZWlnaHQpLEYobixwLmdldEltYWdlRGF0YSgwLDAsZi53aWR0aCxmLmhlaWdodCkuZGF0YSxvKSkpfWVsc2V7Y29uc3QgcD1pPT1udWxsP3ZvaWQgMDppKCk7aWYoIXApcmV0dXJuO2NvbnN0IGY9cC5jYW52YXM7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxmLndpZHRoLGYuaGVpZ2h0KSxmLndpZHRoPXR5cGVvZiBlLndpZHRoPT0ibnVtYmVyIj9lLndpZHRoOmUud2lkdGguYmFzZVZhbC52YWx1ZSxmLmhlaWdodD10eXBlb2YgZS5oZWlnaHQ9PSJudW1iZXIiP2UuaGVpZ2h0OmUuaGVpZ2h0LmJhc2VWYWwudmFsdWUscC5kcmF3SW1hZ2UoZSwwLDAsZi53aWR0aCxmLmhlaWdodCksRihuLHAuZ2V0SW1hZ2VEYXRhKDAsMCxmLndpZHRoLGYuaGVpZ2h0KS5kYXRhLG8pfWZvcihsZXQgcD1zLmxlbmd0aCxmPTA7ZjxwO2YrPTQpe2NvbnN0IGc9c1tmXSxDPXNbZisxXSx5PXNbZisyXSx3PXNbZiszXTtpZihjJiZ3PT09MHx8YT09PSJkaWZmIiYmbCYmZz09PWxbZl0mJkM9PT1sW2YrMV0mJnk9PT1sW2YrMl0mJnc9PT1sW2YrM10pY29udGludWU7Y29uc3QgbT1nPDwxNnxDPDw4fHksUz13KjFlOCttLEk9UyUzMjc2ODtsZXQgVD1yLmdldChJKTtUfHwoVD1uZXcgTWFwLHIuc2V0KEksVCkpO2xldCBFPVQuZ2V0KFMpO2lmKEUhPT12b2lkIDApe3RbRV0uY291bnQrKztjb250aW51ZX1FPXQucHVzaCh7YWxwaGE6dyxzcmdiOm0sb2tsYWI6SChtKSxjb3VudDoxfSktMSxULnNldChTLEUpfXJldHVybiBzfWZ1bmN0aW9uIEoobixlKXtjb25zdHtjb2xvclNhbXBsZXM6b309ZSx7c3RhcnQ6aSxlbmQ6bH09bjtuLmxlbmd0aD1sLWksbi53ZWlnaHQ9MDtjb25zdCBjPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2NbMF0rPXIub2tsYWJbMF0qci5jb3VudCxjWzFdKz1yLm9rbGFiWzFdKnIuY291bnQsY1syXSs9ci5va2xhYlsyXSpyLmNvdW50LG4ud2VpZ2h0Kz1yLmNvdW50fW4ub2tsYWI9W2NbMF0vbi53ZWlnaHQsY1sxXS9uLndlaWdodCxjWzJdL24ud2VpZ2h0XTtjb25zdCBhPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2FbMF0rPUEoci5va2xhYlswXS1uLm9rbGFiWzBdLDIpKnIuY291bnQsYVsxXSs9QShyLm9rbGFiWzFdLW4ub2tsYWJbMV0sMikqci5jb3VudCxhWzJdKz1BKHIub2tsYWJbMl0tbi5va2xhYlsyXSwyKSpyLmNvdW50fW4uc29ydD11ZShhWzBdLGFbMV0sYVsyXSksbi5zY29yZT1NYXRoLm1heChhWzBdLGFbMV0sYVsyXSl9ZnVuY3Rpb24gUShuLGUpe2NvbnN0IG89Wih7c3RhcnQ6MCxlbmQ6MCxsZW5ndGg6MCxzY29yZTowLHdlaWdodDowLHNvcnQ6ImxhYiIsc29ydGVkOm51bGwsc3JnYjowLG9rbGFiOlswLDAsMF19LG4pO3JldHVybiBKKG8sZSksb31mdW5jdGlvbiB3ZShuKXtjb25zdHtjb2xvckJveGVzOmV9PW4sbz1bXSxpPW5ldyBNYXA7Zm9yKGxldCBhPS0xLHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspe2NvbnN0e3NyZ2I6c309ZVtyXTtpZihzPT09YSl7aS5zZXQociwhMCk7Y29udGludWV9YT1zfWMoe21pbjpbLTY1NTM1LC02NTUzNSwtNjU1MzVdLG1heDpbNjU1MzUsNjU1MzUsNjU1MzVdfSk7ZnVuY3Rpb24gbChhKXtjb25zdCB0PXttaW46WzY1NTM1LDY1NTM1LDY1NTM1XSxtYXg6Wy02NTUzNSwtNjU1MzUsLTY1NTM1XX07bGV0IHI9MDtjb25zdCBzPVtdO2ZvcihsZXQgcD1lLmxlbmd0aCxmPTA7ZjxwO2YrKyl7Y29uc3R7b2tsYWI6Z309ZVtmXTtpLmhhcyhmKXx8Z1swXTxhLm1pblswXXx8Z1sxXTxhLm1pblsxXXx8Z1syXTxhLm1pblsyXXx8Z1swXT5hLm1heFswXXx8Z1sxXT5hLm1heFsxXXx8Z1syXT5hLm1heFsyXXx8KGdbMF08dC5taW5bMF0mJih0Lm1pblswXT1nWzBdKSxnWzFdPHQubWluWzFdJiYodC5taW5bMV09Z1sxXSksZ1syXTx0Lm1pblsyXSYmKHQubWluWzJdPWdbMl0pLGdbMF0+dC5tYXhbMF0mJih0Lm1heFswXT1nWzBdKSxnWzFdPnQubWF4WzFdJiYodC5tYXhbMV09Z1sxXSksZ1syXT50Lm1heFsyXSYmKHQubWF4WzJdPWdbMl0pLHNbcisrXT17b2tsYWI6Zyxjb2xvckJveEluZGV4OmZ9KX1sZXQgdT0wO2lmKCFyKXJldHVybntjb2xvckJveEluZGV4Oi0xLGxvbmdlc3Q6dX07Y29uc3QgZD10Lm1heFswXS10Lm1pblswXSxoPXQubWF4WzFdLXQubWluWzFdLGI9dC5tYXhbMl0tdC5taW5bMl07cmV0dXJuIGQ+PWgmJmQ+PWI/dT0wOmI+PWQmJmI+PWg/dT0yOmg+PWQmJmg+PWImJih1PTEpLHtjb2xvckJveEluZGV4OnMuc29ydCgocCxmKT0+cC5va2xhYlt1XS1mLm9rbGFiW3VdKVtyPj4xXS5jb2xvckJveEluZGV4LGxvbmdlc3Q6dX19ZnVuY3Rpb24gYyhhKXtjb25zdHtjb2xvckJveEluZGV4OnQsbG9uZ2VzdDpyfT1sKGEpO2lmKHQ8MClyZXR1cm4tMTtjb25zdHtva2xhYjpzfT1lW3RdLHU9e2xvbmdlc3Q6cixva2xhYjpzLGNvbG9yQm94SW5kZXg6dH0sZD1vLnB1c2godSktMTtpLnNldCh0LCEwKTtjb25zdCBoPXttYXg6Wy4uLmEubWF4XSxtaW46Wy4uLmEubWluXX0sYj17bWF4OlsuLi5hLm1heF0sbWluOlsuLi5hLm1pbl19O2gubWF4W3JdPXNbcl0sYi5taW5bcl09TWF0aC5taW4oc1tyXSsxLDY1NTM1KTtjb25zdCBwPWMoaCk7bGV0IGY9LTE7cmV0dXJuIGIubWluW3JdPD1iLm1heFtyXSYmKGY9YyhiKSksdS5sZWZ0PXAsdS5yaWdodD1mLGR9cmV0dXJuIG99ZnVuY3Rpb24gYmUobixlPXt9KXtjb25zdHttYXhDb2xvcnM6byxjb2xvclNhbXBsZXM6aX09bjtpZighaS5sZW5ndGgpcmV0dXJuO2NvbnN0e21heENvbG9yczpsPW8sY2xlYXJTYW1wbGVzOmM9ITB9PWU7bGV0IGE9USh7ZW5kOmkubGVuZ3RofSxuKSx0PTE7Y29uc3Qgcj1bYV07ZnVuY3Rpb24gcygpe2xldCBkPS0xLGg9LTE7aWYodD09PWwpcmV0dXJuLTE7Zm9yKGxldCBiPTA7Yjx0O2IrKyl7Y29uc3QgcD1yW2JdO3AubGVuZ3RoPj0yJiZwLnNjb3JlPmgmJihkPWIsaD1wLnNjb3JlKX1yZXR1cm4gZH1mdW5jdGlvbiB1KGQsaCl7Y29uc3QgYj1RKHtzdGFydDpoKzEsZW5kOmQuZW5kLHNvcnRlZDpkLnNvcnRlZH0sbik7ZC5lbmQtPWIubGVuZ3RoLEooZCxuKSxyLnB1c2goYiksdCsrfWZvcig7YSYmYS5sZW5ndGg+MTspe2NvbnN0e3N0YXJ0OmQsZW5kOmgsc29ydDpiLHNvcnRlZDpwfT1hO2lmKGIhPT1wKXtjb25zdCB3PWkuc2xpY2UoZCxoKS5zb3J0KGRlKGIpKTtmb3IobGV0IG09dy5sZW5ndGgsUz0wO1M8bTtTKyspaVtkK1NdPXdbU107YS5zb3J0ZWQ9Yn1jb25zdCBmPWEud2VpZ2h0KzE+PjE7bGV0IGc9ZCxDPTA7Zm9yKGxldCB3PWgtMjtnPHcmJihDKz1pW2ddLmNvdW50LCEoQz5mKSk7ZysrKTt1KGEsZyk7Y29uc3QgeT1zKCk7YT15Pj0wP3JbeV06bnVsbH1mb3IobGV0IGQ9ci5sZW5ndGgsaD0wO2g8ZDtoKyspcltoXS5zcmdiPWZlKHJbaF0ub2tsYWIpO24uY29sb3JCb3hlcz1yLnNvcnQoKGQsaCk9PmQuc3JnYi1oLnNyZ2IpLG4uY29sb3JCb3hlc0luZGV4VHJlZT13ZShuKSxjJiYobi5jb2xvclNhbXBsZXM9W10sbi5jb2xvclNhbXBsZXNDYWNoZS5jbGVhcigpKSxuLmZpbmRlckNhY2hlLmNsZWFyKCl9ZnVuY3Rpb24geGUobixlLG8pe2NvbnN0e2NvbG9yQm94ZXM6aX09bjtpZighZSlyZXR1cm47bGV0IGw7aWYodHlwZW9mIG89PSJudW1iZXIiKWw9bztlbHNlIGlmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj1vLnJlcGxhY2UoL14jLywiIikscz1bYCR7clswXX0ke3JbMV19YCxgJHtyWzJdfSR7clszXX1gLGAke3JbNF19JHtyWzVdfWBdLm1hcCh1PT5wYXJzZUludCh1LDE2KSk7bD1zWzBdPDwxNnxzWzFdPDw4fHNbMl19ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKWw9b1swXTw8MTZ8b1sxXTw8OHxvWzJdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0Iik7Y29uc3QgYz1lKGwpO2lmKGM9PT12b2lkIDApcmV0dXJuO2NvbnN0IGE9aVtjXTtpZighYSlyZXR1cm47Y29uc3R7c3JnYjp0fT1hO2lmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj0odD4+MTYmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9KHQ+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHU9KHQmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpO3JldHVybnt2YWx1ZTpgIyR7cn0ke3N9JHt1fWAsaW5kZXg6Y319ZWxzZSBpZih0eXBlb2Ygbz09Im9iamVjdCImJkFycmF5LmlzQXJyYXkobykpcmV0dXJue3ZhbHVlOlt0Pj4xNiYyNTUsdD4+OCYyNTUsdCYyNTVdLGluZGV4OmN9O3JldHVybnt2YWx1ZTp0LGluZGV4OmN9fWZ1bmN0aW9uIFNlKG4pe24uY29sb3JTYW1wbGVzPVtdLG4uY29sb3JTYW1wbGVzQ2FjaGUuY2xlYXIoKSxuLmNvbG9yQm94ZXM9W10sbi5jb2xvckJveGVzSW5kZXhUcmVlPVtdLG4uZmluZGVyQ2FjaGUuY2xlYXIoKX1mdW5jdGlvbiBDZShuKXtjb25zdCBlPWdlKG4pLHtzdGF0c01vZGU6byxzYW1wbGVzOmksc2tpcFRyYW5zcGFyZW50Omx9PWUsYz1mdW5jdGlvbigpe2xldCBzO3JldHVybigpPT4oIXMmJkImJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHMpfSgpO2xldCBhPW51bGwsdD1udWxsO2NvbnN0IHI9e2NvbnRleHQ6ZSxhZGRTYW1wbGU6cz0+e2UuY29sb3JTYW1wbGVzLmxlbmd0aD09PTAmJihhPW51bGwpO2NvbnN0IHU9RihlLHMse2dldENvbnRleHQyZDpjLHByZXZpb3VzU2FtcGxlOmEsc2tpcFRyYW5zcGFyZW50Omx9KTtyZXR1cm4odSBpbnN0YW5jZW9mIFByb21pc2U/dTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT51KSkudGhlbihkPT57ZCYmbz09PSJkaWZmIiYmKGE9ZCl9KSx1fSxnZW5lcmF0ZShzPXt9KXtjb25zdHtjbGVhclNhbXBsZXM6dT0hMH09cztyZXR1cm4gdSYmKGE9bnVsbCksYmUoZSxzKSx0aGlzfSxnZXRDb2xvcnM6cz0+bWUoZSxzKSxmaW5kTmVhcmVzdENvbG9yOnM9Pih0fHwodD1ZKGUpKSx4ZShlLHQscykpLHJlc2V0OigpPT5TZShlKX07cmV0dXJuIGkubGVuZ3RoJiYoaS5mb3JFYWNoKHM9PnIuYWRkU2FtcGxlKHMpKSxlLnNhbXBsZXM9W10pLHJ9Y29uc3QgeWU9Ilttb2Rlcm4tZ2lmXSIsSWU9IkdJRiIsa2U9WyI4N2EiLCI4OWEiXSxlZT00NCx0ZT0zMyxUZT0yNTUsQWU9MTEsRWU9MjU0LG5lPTI0OSxyZT00LEJlPTEsX2U9MSxNZT01OSxvZT0oLi4ubik9PmNvbnNvbGUud2Fybih5ZSwuLi5uKTtmdW5jdGlvbiB2ZShuKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ucmVkdWNlKChvLGkpPT5vK2kuYnl0ZUxlbmd0aCwwKSk7cmV0dXJuIG4ucmVkdWNlKChvLGkpPT4oZS5zZXQoaSxvKSxvK2kuYnl0ZUxlbmd0aCksMCksZX1mdW5jdGlvbiBhZShuLGUsbyl7bGV0IGk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KG4pKWk9bi5idWZmZXI7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpaT1uO2Vsc2V7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx7d2lkdGg6YyxoZWlnaHQ6YX09b3x8e30sdD1sLmdldENvbnRleHQoIjJkIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyBjb250ZXh0MmQiKTtsLndpZHRoPWMhPW51bGw/Yzp0eXBlb2Ygbi53aWR0aD09Im51bWJlciI/bi53aWR0aDpuLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQ9YSE9bnVsbD9hOnR5cGVvZiBuLmhlaWdodD09Im51bWJlciI/bi5oZWlnaHQ6bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSx0LmRyYXdJbWFnZShuLDAsMCxsLndpZHRoLGwuaGVpZ2h0KSxpPXQuZ2V0SW1hZ2VEYXRhKDAsMCxsLndpZHRoLGwuaGVpZ2h0KS5kYXRhLmJ1ZmZlcn1zd2l0Y2goZSl7Y2FzZSJ1aW50OEFycmF5IjpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSJ1aW50OENsYW1wZWRBcnJheSI6cmV0dXJuIG5ldyBVaW50OENsYW1wZWRBcnJheShpKTtjYXNlImRhdGFWaWV3IjpyZXR1cm4gbmV3IERhdGFWaWV3KGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgZm9ybWF0Iil9fWZ1bmN0aW9uIE5lKG4sZSl7dmFyIHA7Y29uc3R7dG9wOm89MCxsZWZ0Omk9MCx3aWR0aDpsLGhlaWdodDpjLHJhd1dpZHRoOmEscmF0ZTp0PTQsY2FsbGJhY2s6cn09ZSxzPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmMqdCksdT1pKnQsZD1vKnQsaD1sKnQsYj1hKnQ7Zm9yKGxldCBmPTA7ZjxjO2YrKylmb3IobGV0IGc9MDtnPGg7ZysrKXtjb25zdCBDPShkK2YpKmIrKHUrZyk7c1tmKmgrZ109KHA9cj09bnVsbD92b2lkIDA6cihDKSkhPW51bGw/cDpuW0NdfXJldHVybiBzfWZ1bmN0aW9uIFVlKG4pe2NvbnN0IGU9YWUobiwiZGF0YVZpZXciKTtsZXQgbz0wO2NvbnN0IGk9KCk9PmUuZ2V0VWludDgobysrKSxsPWM9PkFycmF5LmZyb20oe2xlbmd0aDpjfSkubWFwKGkpO3JldHVybntnZXRDdXJzb3I6KCk9Pm8sc2V0Q3Vyc29yOmM9Pm89YyxyZWFkQnl0ZTppLHJlYWRCeXRlczpsLHJlYWRTdHJpbmc6Yz0+U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKGMpKSxyZWFkVW5zaWduZWQ6KCk9PltlLmdldFVpbnQxNihvLCEwKSxvKz0yXVswXSxyZWFkQml0czooKT0+ZS5nZXRVaW50OChvKyspLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsIjAiKS5zcGxpdCgiIikubWFwKE51bWJlcikscmVhZENvbG9yVGFibGU6Yz0+QXJyYXkuZnJvbSh7bGVuZ3RoOmN9LCgpPT5BcnJheS5mcm9tKGwoMykpKSxyZWFkU3ViQmxvY2s6KCk9Pntjb25zdCBjPVtdO2Zvcig7Oyl7Y29uc3QgYT1pKCk7aWYoYT09PTAmJmUuZ2V0VWludDgobykhPT0wKWJyZWFrO2MucHVzaChhKX1yZXR1cm4gY319fWZ1bmN0aW9uIE9lKG4pe2NvbnN0IGU9e30se2dldEN1cnNvcjpvLHNldEN1cnNvcjppLHJlYWRCeXRlOmwscmVhZFN0cmluZzpjLHJlYWRVbnNpZ25lZDphLHJlYWRCaXRzOnQscmVhZENvbG9yVGFibGU6cixyZWFkU3ViQmxvY2s6c309VWUobiksdT0oKT0+KHtpbmRleDowLGRlbGF5OjEwMCxkaXNwb3NhbDowfSksZD1jKDMpLGg9YygzKTtpZihkIT09SWV8fCFrZS5pbmNsdWRlcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgbm90IGEgODdhLzg5YSBHSUYgZGF0YS4iKTtlLnZlcnNpb249aCxlLndpZHRoPWEoKSxlLmhlaWdodD1hKCk7Y29uc3QgYj10KCk7ZS5nbG9iYWxDb2xvclRhYmxlPSEhYlswXSxlLmNvbG9yUmVzb2x1VGlvbj1wYXJzZUludChiLnNsaWNlKDEsNCkuam9pbigiIiksMikrMSxlLmNvbG9yVGFibGVTb3J0ZWQ9ISFiWzRdO2NvbnN0IHA9cGFyc2VJbnQoYi5zbGljZSg1LDgpLmpvaW4oIiIpLDIpO2UuY29sb3JUYWJsZVNpemU9cD9NYXRoLnBvdygyLHArMSk6MCxlLmJhY2tncm91bmRDb2xvckluZGV4PWwoKSxlLnBpeGVsQXNwZWN0UmF0aW89bCgpLGUuZ2xvYmFsQ29sb3JUYWJsZSYmKGUuY29sb3JUYWJsZVNpemU/ZS5jb2xvclRhYmxlPXIoZS5jb2xvclRhYmxlU2l6ZSk6cygpKSxlLmZyYW1lcz1bXTtsZXQgZj11KCk7Y29uc3QgZz1bXSxDPVtdO2Zvcig7Oyl7Y29uc3QgeT1sKCk7aWYoZy5wdXNoKHkpLHk9PT1lZSl7Zi5sZWZ0PWEoKSxmLnRvcD1hKCksZi53aWR0aD1hKCksZi5oZWlnaHQ9YSgpO2NvbnN0IHc9dCgpO2YubG9jYWxDb2xvclRhYmxlPSEhd1swXSxmLmludGVybGFjZWQ9ISF3WzFdLGYuY29sb3JUYWJsZVNvcnRlZD0hIXdbMl0sZi5yZXNlcnZlZD1wYXJzZUludCh3LnNsaWNlKDMsNSkuam9pbigiIiksMik7Y29uc3QgbT1wYXJzZUludCh3LnNsaWNlKDUsOCkuam9pbigiIiksMik7Zm9yKGYuY29sb3JUYWJsZVNpemU9bT9NYXRoLnBvdygyLG0rMSk6MCxmLmxvY2FsQ29sb3JUYWJsZSYmKGYuY29sb3JUYWJsZT1yKGYuY29sb3JUYWJsZVNpemUpKSxmLmx6d01pbkNvZGVTaXplPWwoKSxmLmltYWdlRGF0YVBvc2l0aW9ucz1bXTs7KXtjb25zdCBTPWwoKTtpZihTPT09MClicmVhaztjb25zdCBJPW8oKTtmLmltYWdlRGF0YVBvc2l0aW9ucy5wdXNoKFtJLFNdKSxpKEkrUyl9ZS5mcmFtZXMucHVzaChmKSxmPXUoKSxmLmluZGV4PWUuZnJhbWVzLmxlbmd0aDtjb250aW51ZX1pZih5PT09dGUpe2NvbnN0IHc9bCgpO2lmKEMucHVzaCh3KSx3PT09VGUpe2lmKGwoKSE9PUFlKWNvbnRpbnVlO2NvbnN0IG09e2lkZW50aWZpZXI6Yyg4KSxjb2RlOmMoMyksZGF0YTpbXX07YCR7bS5pZGVudGlmaWVyfSR7bS5jb2RlfWA9PSJORVRTQ0FQRTIuMCImJmwoKT09PTMmJihlLmxvb3BlZD0hIWwoKSxlLmxvb3BDb3VudD1hKCkpLG0uZGF0YT1zKCksZi5hcHBsaWNhdGlvbj1tO2NvbnRpbnVlfWlmKHc9PT1FZSl7Zi5jb21tZW50PXMoKS5tYXAobT0+U3RyaW5nLmZyb21DaGFyQ29kZShtKSkuam9pbigiIik7Y29udGludWV9aWYodz09PW5lKXtpZihsKCkhPT1yZSljb250aW51ZTtjb25zdCBtPXQoKSxTPXtyZXNlcnZlZDpwYXJzZUludChtLnNsaWNlKDAsMykuam9pbigiIiksMiksZGlzcG9zYWw6cGFyc2VJbnQobS5zbGljZSgzLDYpLmpvaW4oIiIpLDIpLHVzZXJJbnB1dDohIW1bNl0sdHJhbnNwYXJlbnQ6ISFtWzddLGRlbGF5VGltZTphKCksdHJhbnNwYXJlbnRJbmRleDpsKCl9O3MoKSxmLmdyYXBoaWNDb250cm9sPVMsZi5kaXNwb3NhbD1TLmRpc3Bvc2FsLGYuZGVsYXk9KFMuZGVsYXlUaW1lfHwxMCkqMTA7Y29udGludWV9aWYodz09PUJlKXtpZihsKCkhPT1fZSljb250aW51ZTtmLnBsYWluVGV4dD17bGVmdDphKCksdG9wOmEoKSx3aWR0aDphKCksaGVpZ2h0OmEoKSxjZWxsV2lkdGg6bCgpLGNlbGxIZWlnaHQ6bCgpLGNvbG9ySW5kZXg6bCgpLGJhY2tncm91bmRDb2xvckluZGV4OmwoKSxkYXRhOnMoKX07Y29udGludWV9b2UoYFVua25vd24gZXh0ZW5zaW9uIGJsb2NrOiAweCR7dy50b1N0cmluZygxNil9YCxnLnNsaWNlKDAsZy5sZW5ndGgtMSkubWFwKG09PmAweCR7bS50b1N0cmluZygxNil9YCksQy5zbGljZSgwLEMubGVuZ3RoLTEpLm1hcChtPT5gMHgke20udG9TdHJpbmcoMTYpfWApKTtjb250aW51ZX1pZih5PT09TWUpYnJlYWs7b2UoYFVua25vd24gYmxvY2s6IDB4JHt5LnRvU3RyaW5nKDE2KX1gLGcuc2xpY2UoMCxnLmxlbmd0aC0xKS5tYXAodz0+YDB4JHt3LnRvU3RyaW5nKDE2KX1gKSxDLnNsaWNlKDAsQy5sZW5ndGgtMSkubWFwKHc9PmAweCR7dy50b1N0cmluZygxNil9YCkpfXJldHVybiBlfWZ1bmN0aW9uIFBlKG4sZSxvKXtjb25zdCBjPW87bGV0IGEsdCxyLHMsdSxkLGg7Y29uc3QgYj1uZXcgQXJyYXkobykscD1uZXcgQXJyYXkoNDA5NiksZj1uZXcgQXJyYXkoNDA5NiksZz1uZXcgQXJyYXkoNDA5NisxKSxDPW4seT0xPDxDLHc9eSsxO2ZvcihhPXkrMix1PS0xLHI9QysxLHQ9KDE8PHIpLTEsZD0wO2Q8eTtkKyspcFtkXT0wLGZbZF09ZDtsZXQgbSxTLEksVCxFLFA7Zm9yKG09Uz1JPVQ9RT1QPTAsaD0wO2g8Yzspe2lmKFQ9PT0wKXtpZihTPHIpe20rPWVbUF08PFMsUys9OCxQKys7Y29udGludWV9aWYoZD1tJnQsbT4+PXIsUy09cixkPmF8fGQ9PT13KWJyZWFrO2lmKGQ9PT15KXtyPUMrMSx0PSgxPDxyKS0xLGE9eSsyLHU9LTE7Y29udGludWV9aWYodT09PS0xKXtnW1QrK109ZltkXSx1PWQsST1kO2NvbnRpbnVlfWZvcihzPWQsZD09PWEmJihnW1QrK109SSxkPXUpO2Q+eTspZ1tUKytdPWZbZF0sZD1wW2RdO0k9ZltkXSYyNTUsZ1tUKytdPUksYTw0MDk2JiYocFthXT11LGZbYV09SSxhKyssIShhJnQpJiZhPDQwOTYmJihyKyssdCs9YSkpLHU9c31ULS0sYltFKytdPWdbVF0saCsrfWZvcihoPUU7aDxjO2grKyliW2hdPTA7cmV0dXJuIGJ9ZnVuY3Rpb24gJGUobixlKXtjb25zdCBvPW5ldyBBcnJheShuLmxlbmd0aCksaT1uLmxlbmd0aC9lLGw9WzAsNCwyLDFdLGM9WzgsOCw0LDJdO2xldCBhPTA7Zm9yKGxldCB0PTA7dDw0O3QrKylmb3IobGV0IHI9bFt0XTtyPGk7cis9Y1t0XSlvLnNwbGljZS5hcHBseShvLFtyKmUsZV0uY29uY2F0KG4uc2xpY2UoYSplLChhKzEpKmUpKSksYSsrO3JldHVybiBvfWZ1bmN0aW9uIERlKG4pe2NvbnN0IGU9bmV3IE1hcCx7d29ya2VyVXJsOm99PW47bGV0e3dvcmtlck51bWJlcjppPTF9PW47Y29uc3QgbD1bLi4ubmV3IEFycmF5KG8/aTowKV0ubWFwKCgpPT57dHJ5e2NvbnN0IHI9bmV3IFdvcmtlcihvKTtyZXR1cm4gci5vbm1lc3NhZ2U9YyxyfWNhdGNoKHIpe3JldHVybiBudWxsfX0pLmZpbHRlcihCb29sZWFuKTtpPWwubGVuZ3RoO2Z1bmN0aW9uIGMocil7dmFyIGQ7Y29uc3R7aWQ6cyxkYXRhOnV9PXIuZGF0YTsoZD1lLmdldChzKSk9PW51bGx8fGQodSksZS5kZWxldGUocyl9Y29uc3QgYT1mdW5jdGlvbigpe2xldCByPTA7cmV0dXJuIHM9PmxbKHMhPW51bGw/czpyKyspJWldfSgpO3JldHVybntjYWxsOmZ1bmN0aW9uKCl7bGV0IHI9MDtyZXR1cm4ocyx1LGQsaCk9Pm5ldyBQcm9taXNlKGI9Pntjb25zdCBwPWEoaCk7aWYoIXApcmV0dXJuIGIodm9pZCAwKTtlLnNldChyLGIpLHAucG9zdE1lc3NhZ2Uoe2lkOnIrKyx0eXBlOnMsZGF0YTp1fSx7dHJhbnNmZXI6ZH0pfSl9KCl9fWZ1bmN0aW9uIFhlKG4sZSl7Y29uc3Qgbz1hZShuLCJ1aW50OEFycmF5Iik7aWYoZSE9bnVsbCYmZS53b3JrZXJVcmwpcmV0dXJuIERlKHt3b3JrZXJVcmw6ZS53b3JrZXJVcmx9KS5jYWxsKCJmcmFtZXM6ZGVjb2RlIixvLFtvLmJ1ZmZlcl0pO2NvbnN0e2dpZjppPU9lKG4pLHJhbmdlOmx9PWUhPW51bGw/ZTp7fSx7d2lkdGg6YyxoZWlnaHQ6YSxjb2xvclRhYmxlOnQsZnJhbWVzOnJ9PWkscz1sP3Iuc2xpY2UobFswXSxsWzFdKzEpOnIsdT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyphKjQpO2xldCBkO3JldHVybiBzLm1hcChoPT57dmFyIGxlO2NvbnN0e2xlZnQ6Yix0b3A6cCx3aWR0aDpmLGhlaWdodDpnLGludGVybGFjZWQ6Qyxsb2NhbENvbG9yVGFibGU6eSxjb2xvclRhYmxlOncsbHp3TWluQ29kZVNpemU6bSxpbWFnZURhdGFQb3NpdGlvbnM6UyxncmFwaGljQ29udHJvbDpJLGRpc3Bvc2FsOlQsZGVsYXk6RX09aCxQPXArZyx7dHJhbnNwYXJlbnQ6S2UsdHJhbnNwYXJlbnRJbmRleDpWZX09SSE9bnVsbD9JOnt9LFc9eT93OnQsamU9S2U/VmU6LTEsWmU9dmUoUy5tYXAoKFtNLFVdKT0+by5zdWJhcnJheShNLE0rVSkpKTtsZXQgSz1QZShtLFplLGYqZyk7aWYoQyYmKEs9JGUoSyxmKSksKGQ9PW51bGw/dm9pZCAwOmQuZGlzcG9zYWwpIT09MSl7Y29uc3R7bGVmdDpNPTAsdG9wOlU9MCx3aWR0aDpWPWMsaGVpZ2h0Ok89YX09ZCE9bnVsbD9kOnt9LFg9VStPO2ZvcihsZXQgJD1VOyQ8WDskKyspe2NvbnN0IGo9JCpjK007Zm9yKGxldCBEPTA7RDxWO0QrKyl7Y29uc3Qgdj0oaitEKSo0O3Vbdl09dVt2KzFdPXVbdisyXT11W3YrM109MH19fWZvcihsZXQgTT1wO008UDtNKyspe2NvbnN0IFU9TSpjK2IsVj0oTS1wKSpmO2ZvcihsZXQgTz0wO088ZjtPKyspe2NvbnN0IFg9S1tWK09dO2lmKFg9PT1qZSljb250aW51ZTtjb25zdFskLGosRF09KGxlPVc9PW51bGw/dm9pZCAwOldbWF0pIT1udWxsP2xlOlswLDAsMF0sdj0oVStPKSo0O3Vbdl09JCx1W3YrMV09aix1W3YrMl09RCx1W3YrM109MjU1fX1yZXR1cm4gVCE9PTMmJihkPWgpLHt3aWR0aDpjLGhlaWdodDphLGRlbGF5OkUsaW1hZ2VEYXRhOnUuc2xpY2UoMCl9fSl9ZnVuY3Rpb24gTGUobixlLG8pe2NvbnN0e3dyaXRlQnl0ZTppLGdldEN1cnNvcjpsLGNhbGN1bGF0ZURpc3RhbmNlOmN9PW87aShuKTtsZXQgYT1sKCk7aSgwKTtjb25zdCB0PTE8PG4scj10LTEscz10KzE7bGV0IHU9cysxLGQ9bisxLGg9MCxiPTA7ZnVuY3Rpb24gcChTKXtmb3IoO2g+PVM7KWkoYiYyNTUpLGI+Pj04LGgtPTgsYyhhKT09PTI1NiYmKGkoMjU1LGEpLGE9bCgpLGkoMCkpfWZ1bmN0aW9uIGYoUyl7Ynw9Uzw8aCxoKz1kLHAoOCl9bGV0IGc9ZVswXSZyLEM9e30seSx3LG07Zih0KTtmb3IobGV0IFM9ZS5sZW5ndGgsST0xO0k8UzsrK0kpaWYobT1lW0ldJnIseT1nPDw4fG0sdz1DW3ldLHc9PT12b2lkIDApe2ZvcihifD1nPDxoLGgrPWQ7aD49ODspaShiJjI1NSksYj4+PTgsaC09OCxjKGEpPT09MjU2JiYoaSgyNTUsYSksYT1sKCksaSgwKSk7dT09PTQwOTY/KGYodCksdT1zKzEsZD1uKzEsQz17fSk6KHU+PTE8PGQmJisrZCxDW3ldPXUrKyksZz1tfWVsc2UgZz13O2YoZyksZihzKSxwKDEpLGMoYSk9PT0xP2koMCxhKTooaShjKGEpLTEsYSksaSgwKSl9ZnVuY3Rpb24gUmUobj17fSl7Y29uc3R7Y2h1bmtTaXplOmU9NDA5Nn09bjtsZXQgbz1bbmV3IFVpbnQ4QXJyYXkoZSldLGk9MCxsPTA7Y29uc3QgYz0odCxyKT0+e3I/b1tyWzBdXVtyWzFdXT10OihsPj1lJiYob1srK2ldPW5ldyBVaW50OEFycmF5KGUpLGw9MCksb1tpXVtsKytdPXQpfSxhPXQ9PnQuZm9yRWFjaChyPT5jKHIpKTtyZXR1cm57Z2V0Q3Vyc29yOigpPT5baSxsXSxzZXRDdXJzb3I6dD0+e2k9dFswXSxsPXRbMV19LGNhbGN1bGF0ZURpc3RhbmNlOnQ9PmkqZStsLSh0WzBdKmUrdFsxXSksd3JpdGVCeXRlOmMsd3JpdGVCeXRlczphLHdyaXRlU3RyaW5nOnQ9PnQuc3BsaXQoIiIpLmZvckVhY2goKHIscyk9PmModC5jaGFyQ29kZUF0KHMpKSksd3JpdGVVbnNpZ25lZDp0PT5hKFt0JjI1NSx0Pj44JjI1NV0pLGZsdXNoOigpPT57b1tpXT1vW2ldLnNsaWNlKDAsbCk7Y29uc3QgdD1uZXcgVWludDhBcnJheShvLnJlZHVjZSgocyx1KT0+cyt1LmJ5dGVMZW5ndGgsMCkpO2xldCByPTA7cmV0dXJuIG8uZm9yRWFjaChzPT57dC5zZXQocyxyKSxyKz1zLmJ5dGVMZW5ndGh9KSxvPVtuZXcgVWludDhBcnJheShlKV0saT0wLGw9MCx0fX19ZnVuY3Rpb24gemUobil7dmFyIEMseSx3O2NvbnN0IGU9UmUoKSx7d3JpdGVCeXRlOm8sd3JpdGVCeXRlczppLHdyaXRlVW5zaWduZWQ6bCxmbHVzaDpjfT1lLHtsZWZ0OmE9MCx0b3A6dD0wLHdpZHRoOnI9MCxoZWlnaHQ6cz0wLGRlbGF5OnU9MTAwLGNvbG9yVGFibGU6ZH09bjtsZXR7ZGlzcG9zYWw6aD0wfT1uO2NvbnN0IGI9KEM9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOkMudHJhbnNwYXJlbnQ7bGV0IHA9KHc9KHk9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOnkudHJhbnNwYXJlbnRJbmRleCkhPW51bGw/dzoyNTU7aWYoYTwwfHxhPjY1NTM1KXRocm93IG5ldyBFcnJvcigiTGVmdCBpbnZhbGlkLiIpO2lmKHQ8MHx8dD42NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvcCBpbnZhbGlkLiIpO2lmKHI8PTB8fHI+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJXaWR0aCBpbnZhbGlkLiIpO2lmKHM8PTB8fHM+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgaW52YWxpZC4iKTtsZXQgZj04LGc9ZD9kLmxlbmd0aDowO2lmKGcpe2lmKGc8Mnx8Zz4yNTZ8fGcmZy0xKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciB0YWJsZSBsZW5ndGgsIG11c3QgYmUgcG93ZXIgb2YgMiBhbmQgMiAuLiAyNTYuIik7Zm9yKDtnPj49MTspKytmfXJldHVybiBvKHRlKSxvKG5lKSxvKHJlKSxiP2h8fChoPTIpOnA9MCxvKHBhcnNlSW50KGAwMDAke051bWJlcihoJjcpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDMsIjAiKX0wJHtiPzE6MH1gLDIpKSxsKHUvMTApLG8ocCksbygwKSxvKGVlKSxsKGEpLGwodCksbChyKSxsKHMpLGQhPW51bGwmJmQubGVuZ3RoPyhvKHBhcnNlSW50KGAxMDAwMCR7KGYtMSkudG9TdHJpbmcoMikucGFkU3RhcnQoMywiMCIpfWAsMikpLGkoZC5mbGF0KCkpKTpvKDApLExlKGYsbi5pbWFnZURhdGEsZSksYygpfWZ1bmN0aW9uIEZlKG4pe2NvbnN0e2ZyYW1lczplLHBhbGV0dGU6byx0cmFuc3BhcmVudEluZGV4Oml9PW4sbD1ZKG8pO3JldHVybiBlLm1hcCgoe2ltYWdlRGF0YTpjfSk9PntsZXQgYT0hMTtjb25zdCB0PW5ldyBVaW50OENsYW1wZWRBcnJheShjLmxlbmd0aC80KTtmb3IobGV0IHI9Yy5sZW5ndGgscz0wO3M8cjtzKz00KWNbcyszXT09PTA/KHRbcy80XT1pLGE9ITApOnRbcy80XT1sKGNbc108PDE2fGNbcysxXTw8OHxjW3MrMl0pO3JldHVybntpbWFnZURhdGE6dCx0cmFuc3BhcmVudDphfX0pfWZ1bmN0aW9uIFdlKG4pe2NvbnN0e2ZyYW1lczplLHRyYW5zcGFyZW50SW5kZXg6b309bjtsZXQgaTtjb25zdCBsPWUubGVuZ3RoO3JldHVybiBlLm1hcCgoYyxhKT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OnIsdHJhbnNwYXJlbnQ6cyxpbWFnZURhdGE6dX09YztsZXQgZD0wLGg9MCxiPXQtMSxwPXItMSxmO2lmKHMpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqaCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqcCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7cC0tfWZvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStkXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7ZCsrfWZvcig7Yj5kOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStiXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7Yi0tfX1lbHNle2lmKGkpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KmgrbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KnArbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7cC0tfWlmKGg9PT1wKWQ9YjtlbHNle2Zvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTw9cDttKyspe2NvbnN0IFM9bSp0K2Q7aWYodVtTXSE9PWlbU10pe3c9ITE7YnJlYWt9fWlmKCF3KWJyZWFrO2QrK31mb3IoO2I+ZDspe2xldCB3PSEwO2ZvcihsZXQgbT1oO208PXA7bSsrKXtjb25zdCBTPW0qdCtiO2lmKHVbU10hPT1pW1NdKXt3PSExO2JyZWFrfX1pZighdylicmVhaztiLS19fX1mPWksaT11fWNvbnN0IGc9YisxLWQsQz1wKzEtaCx5PU5lKHUse2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLHJhd1dpZHRoOnQscmF0ZToxLGNhbGxiYWNrOnc9PntpZighcyYmZiYmdVt3XT09PWZbd10pcmV0dXJuIG99fSk7cmV0dXJue2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLGRpc3Bvc2FsOnMmJmEhPT1sLTE/MjoxLGltYWdlRGF0YTp5fX0pfWNvbnN0IE49Q2Uoe3NraXBUcmFuc3BhcmVudDohMX0pO3NlbGYub25tZXNzYWdlPW49Pntjb25zdHtpZDplLHR5cGU6byxkYXRhOml9PW4uZGF0YTtpZihvPT09InBhbGV0dGU6YWRkU2FtcGxlIiYmTilyZXR1cm4gTi5hZGRTYW1wbGUoaSksc2VsZi5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOm8sZGF0YTohMH0pO2lmKG89PT0icGFsZXR0ZTpnZW5lcmF0ZSImJk4pe04uZ2VuZXJhdGUoaSk7Y29uc3QgbD1aKHt9LE4uY29udGV4dCk7cmV0dXJuIE4ucmVzZXQoKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9KX1pZihvPT09ImZyYW1lczppbmRleCIpe2NvbnN0IGw9RmUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZXM6Y3JvcCIpe2NvbnN0IGw9V2UoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZTplbmNvZGUiKXtjb25zdCBsPXplKGkpO3JldHVybiBzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9LFtsLmJ1ZmZlcl0pfWlmKG89PT0iZnJhbWVzOmRlY29kZSIpe2NvbnN0IGw9WGUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9fX0pKCk7Cg==", it = (e) => z(void 0, null, function* () {
2008
+ const Zn = "data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgc2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxxZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3ZhciBBPU1hdGgucG93LGllPShCLHgsayk9PnggaW4gQj9HZShCLHgse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KTpCW3hdPWssWj0oQix4KT0+e2Zvcih2YXIgayBpbiB4fHwoeD17fSkpSGUuY2FsbCh4LGspJiZpZShCLGsseFtrXSk7aWYoc2UpZm9yKHZhciBrIG9mIHNlKHgpKXFlLmNhbGwoeCxrKSYmaWUoQixrLHhba10pO3JldHVybiBCfTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgQj10eXBlb2Ygd2luZG93PCJ1Iix4PTY1NTM2LTEsaz14KngsY2U9NTEyLTEsTD1bMCwyMCw0MCw2MCw4MCw5OSwxMTksMTM5LDE1OSwxNzksMTk5LDIxOSwyNDEsMjY0LDI4OCwzMTMsMzQwLDM2NywzOTYsNDI3LDQ1OCw0OTEsNTI2LDU2Miw1OTksNjM3LDY3Nyw3MTgsNzYxLDgwNSw4NTEsODk4LDk0Nyw5OTcsMTA0OCwxMTAxLDExNTYsMTIxMiwxMjcwLDEzMzAsMTM5MSwxNDUzLDE1MTcsMTU4MywxNjUxLDE3MjAsMTc5MCwxODYzLDE5MzcsMjAxMywyMDkwLDIxNzAsMjI1MCwyMzMzLDI0MTgsMjUwNCwyNTkyLDI2ODEsMjc3MywyODY2LDI5NjEsMzA1OCwzMTU3LDMyNTgsMzM2MCwzNDY0LDM1NzAsMzY3OCwzNzg4LDM5MDAsNDAxNCw0MTI5LDQyNDcsNDM2Niw0NDg4LDQ2MTEsNDczNiw0ODY0LDQ5OTMsNTEyNCw1MjU3LDUzOTIsNTUzMCw1NjY5LDU4MTAsNTk1Myw2MDk5LDYyNDYsNjM5NSw2NTQ3LDY3MDAsNjg1Niw3MDE0LDcxNzQsNzMzNSw3NTAwLDc2NjYsNzgzNCw4MDA0LDgxNzcsODM1Miw4NTI4LDg3MDgsODg4OSw5MDcyLDkyNTgsOTQ0NSw5NjM1LDk4MjgsMTAwMjIsMTAyMTksMTA0MTcsMTA2MTksMTA4MjIsMTEwMjgsMTEyMzUsMTE0NDYsMTE2NTgsMTE4NzMsMTIwOTAsMTIzMDksMTI1MzAsMTI3NTQsMTI5ODAsMTMyMDksMTM0NDAsMTM2NzMsMTM5MDksMTQxNDYsMTQzODcsMTQ2MjksMTQ4NzQsMTUxMjIsMTUzNzEsMTU2MjMsMTU4NzgsMTYxMzUsMTYzOTQsMTY2NTYsMTY5MjAsMTcxODcsMTc0NTYsMTc3MjcsMTgwMDEsMTgyNzcsMTg1NTYsMTg4MzcsMTkxMjEsMTk0MDcsMTk2OTYsMTk5ODcsMjAyODEsMjA1NzcsMjA4NzYsMjExNzcsMjE0ODEsMjE3ODcsMjIwOTYsMjI0MDcsMjI3MjEsMjMwMzgsMjMzNTcsMjM2NzgsMjQwMDIsMjQzMjksMjQ2NTgsMjQ5OTAsMjUzMjUsMjU2NjIsMjYwMDEsMjYzNDQsMjY2ODgsMjcwMzYsMjczODYsMjc3MzksMjgwOTQsMjg0NTIsMjg4MTMsMjkxNzYsMjk1NDIsMjk5MTEsMzAyODIsMzA2NTYsMzEwMzMsMzE0MTIsMzE3OTQsMzIxNzksMzI1NjcsMzI5NTcsMzMzNTAsMzM3NDUsMzQxNDMsMzQ1NDQsMzQ5NDgsMzUzNTUsMzU3NjQsMzYxNzYsMzY1OTEsMzcwMDgsMzc0MjksMzc4NTIsMzgyNzgsMzg3MDYsMzkxMzgsMzk1NzIsNDAwMDksNDA0NDksNDA4OTEsNDEzMzcsNDE3ODUsNDIyMzYsNDI2OTAsNDMxNDcsNDM2MDYsNDQwNjksNDQ1MzQsNDUwMDIsNDU0NzMsNDU5NDcsNDY0MjMsNDY5MDMsNDczODUsNDc4NzEsNDgzNTksNDg4NTAsNDkzNDQsNDk4NDEsNTAzNDEsNTA4NDQsNTEzNDksNTE4NTgsNTIzNjksNTI4ODQsNTM0MDEsNTM5MjEsNTQ0NDUsNTQ5NzEsNTU1MDAsNTYwMzIsNTY1NjcsNTcxMDUsNTc2NDYsNTgxOTAsNTg3MzcsNTkyODcsNTk4NDAsNjAzOTYsNjA5NTUsNjE1MTcsNjIwODIsNjI2NTAsNjMyMjEsNjM3OTUsNjQzNzIsNjQ5NTIsNjU1MzVdLEc9WzAsNiwxMywxOCwyMiwyNSwyOCwzMSwzNCwzNiwzOCw0MCw0Miw0NCw0Niw0OCw1MCw1MSw1Myw1NCw1Niw1Nyw1OSw2MCw2MSw2Miw2NCw2NSw2Niw2Nyw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Niw4Nyw4OCw4OSw5MCw5MSw5MSw5Miw5Myw5NCw5NSw5NSw5Niw5Nyw5OCw5OCw5OSwxMDAsMTAxLDEwMSwxMDIsMTAzLDEwMywxMDQsMTA1LDEwNiwxMDYsMTA3LDEwOCwxMDgsMTA5LDExMCwxMTAsMTExLDExMSwxMTIsMTEzLDExMywxMTQsMTE1LDExNSwxMTYsMTE2LDExNywxMTgsMTE4LDExOSwxMTksMTIwLDEyMSwxMjEsMTIyLDEyMiwxMjMsMTIzLDEyNCwxMjUsMTI1LDEyNiwxMjYsMTI3LDEyNywxMjgsMTI4LDEyOSwxMjksMTMwLDEzMCwxMzEsMTMyLDEzMiwxMzMsMTMzLDEzNCwxMzQsMTM1LDEzNSwxMzYsMTM2LDEzNywxMzcsMTM4LDEzOCwxMzksMTM5LDE0MCwxNDAsMTQwLDE0MSwxNDEsMTQyLDE0MiwxNDMsMTQzLDE0NCwxNDQsMTQ1LDE0NSwxNDYsMTQ2LDE0NywxNDcsMTQ3LDE0OCwxNDgsMTQ5LDE0OSwxNTAsMTUwLDE1MSwxNTEsMTUxLDE1MiwxNTIsMTUzLDE1MywxNTQsMTU0LDE1NCwxNTUsMTU1LDE1NiwxNTYsMTU2LDE1NywxNTcsMTU4LDE1OCwxNTksMTU5LDE1OSwxNjAsMTYwLDE2MSwxNjEsMTYxLDE2MiwxNjIsMTYzLDE2MywxNjMsMTY0LDE2NCwxNjUsMTY1LDE2NSwxNjYsMTY2LDE2NiwxNjcsMTY3LDE2OCwxNjgsMTY4LDE2OSwxNjksMTY5LDE3MCwxNzAsMTcxLDE3MSwxNzEsMTcyLDE3MiwxNzIsMTczLDE3MywxNzQsMTc0LDE3NCwxNzUsMTc1LDE3NSwxNzYsMTc2LDE3NiwxNzcsMTc3LDE3NywxNzgsMTc4LDE3OSwxNzksMTc5LDE4MCwxODAsMTgwLDE4MSwxODEsMTgxLDE4MiwxODIsMTgyLDE4MywxODMsMTgzLDE4NCwxODQsMTg0LDE4NSwxODUsMTg1LDE4NiwxODYsMTg2LDE4NywxODcsMTg3LDE4OCwxODgsMTg4LDE4OSwxODksMTg5LDE5MCwxOTAsMTkwLDE5MSwxOTEsMTkxLDE5MiwxOTIsMTkyLDE5MywxOTMsMTkzLDE5MywxOTQsMTk0LDE5NCwxOTUsMTk1LDE5NSwxOTYsMTk2LDE5NiwxOTcsMTk3LDE5NywxOTgsMTk4LDE5OCwxOTgsMTk5LDE5OSwxOTksMjAwLDIwMCwyMDAsMjAxLDIwMSwyMDEsMjAxLDIwMiwyMDIsMjAyLDIwMywyMDMsMjAzLDIwNCwyMDQsMjA0LDIwNCwyMDUsMjA1LDIwNSwyMDYsMjA2LDIwNiwyMDYsMjA3LDIwNywyMDcsMjA4LDIwOCwyMDgsMjA4LDIwOSwyMDksMjA5LDIxMCwyMTAsMjEwLDIxMCwyMTEsMjExLDIxMSwyMTIsMjEyLDIxMiwyMTIsMjEzLDIxMywyMTMsMjE0LDIxNCwyMTQsMjE0LDIxNSwyMTUsMjE1LDIxNSwyMTYsMjE2LDIxNiwyMTcsMjE3LDIxNywyMTcsMjE4LDIxOCwyMTgsMjE4LDIxOSwyMTksMjE5LDIyMCwyMjAsMjIwLDIyMCwyMjEsMjIxLDIyMSwyMjEsMjIyLDIyMiwyMjIsMjIyLDIyMywyMjMsMjIzLDIyNCwyMjQsMjI0LDIyNCwyMjUsMjI1LDIyNSwyMjUsMjI2LDIyNiwyMjYsMjI2LDIyNywyMjcsMjI3LDIyNywyMjgsMjI4LDIyOCwyMjgsMjI5LDIyOSwyMjksMjI5LDIzMCwyMzAsMjMwLDIzMCwyMzEsMjMxLDIzMSwyMzEsMjMyLDIzMiwyMzIsMjMyLDIzMywyMzMsMjMzLDIzMywyMzQsMjM0LDIzNCwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNiwyMzYsMjM2LDIzNiwyMzcsMjM3LDIzNywyMzcsMjM4LDIzOCwyMzgsMjM4LDIzOSwyMzksMjM5LDIzOSwyMzksMjQwLDI0MCwyNDAsMjQwLDI0MSwyNDEsMjQxLDI0MSwyNDIsMjQyLDI0MiwyNDIsMjQzLDI0MywyNDMsMjQzLDI0MywyNDQsMjQ0LDI0NCwyNDQsMjQ1LDI0NSwyNDUsMjQ1LDI0NiwyNDYsMjQ2LDI0NiwyNDYsMjQ3LDI0NywyNDcsMjQ3LDI0OCwyNDgsMjQ4LDI0OCwyNDksMjQ5LDI0OSwyNDksMjQ5LDI1MCwyNTAsMjUwLDI1MCwyNTEsMjUxLDI1MSwyNTEsMjUxLDI1MiwyNTIsMjUyLDI1MiwyNTMsMjUzLDI1MywyNTMsMjUzLDI1NCwyNTQsMjU0LDI1NCwyNTUsMjU1LDI1NV07ZnVuY3Rpb24gUihuKXtsZXQgZTtpZihuPD0wKXJldHVybiAwO2lmKG4+PXgpcmV0dXJuIHg7ZT1uKihuKihuKy0xNDQxMDcpL3grMTMyMTE0KS94KzE0Mzc5O2ZvcihsZXQgbz0wO288MjtvKyspe2NvbnN0IGk9ZSplKmUsbD1uKygyKmkray8yKS9rO2U9KGUqKDIqbisoaStrLzIpL2spK2wvMikvbH1yZXR1cm4gZX1mdW5jdGlvbiBfKG4sZSl7cmV0dXJuKG5eZSk8MD8obi1lLzIpL2U6KG4rZS8yKS9lfWZ1bmN0aW9uIEgobil7Y29uc3QgZT1MW24+PjE2JjI1NV0sbz1MW24+PjgmMjU1XSxpPUxbbiYyNTVdLGw9KDI3MDE1KmUrMzUxNDkqbyszMzcyKmkreC8yKS94LGM9KDEzODg3KmUrNDQ2MTAqbys3MDM4KmkreC8yKS94LGE9KDU3ODcqZSsxODQ2MipvKzQxMjg2KmkreC8yKS94LHQ9UihsKSxyPVIoYykscz1SKGEpO3JldHVybltfKDEzNzkyKnQrNTIwMTAqci0yNjcqcyx4KSxfKDEyOTYyOCp0LTE1OTE1OCpyKzI5NTMwKnMseCksXygxNjk4KnQrNTEyOTkqci01Mjk5NypzLHgpXX1mdW5jdGlvbiB6KG4pe2lmKG48PTApcmV0dXJuIDA7aWYobj49eClyZXR1cm4gMjU1O3tjb25zdCBlPW4qY2Usbz1+fihlL3gpLGk9ZSV4LGw9R1tvXSxjPUdbbysxXTtyZXR1cm4oaSooYy1sKSt4LzIpL3grbH19ZnVuY3Rpb24gZmUobil7Y29uc3QgZT1uWzBdK18oMjU5NzQqblsxXSx4KStfKDE0MTQzKm5bMl0seCksbz1uWzBdK18oLTY5MTgqblsxXSx4KStfKC00MTg1Km5bMl0seCksaT1uWzBdK18oLTU4NjQqblsxXSx4KStfKC04NDYzOCpuWzJdLHgpLGw9QShlLDIpKmUvayxjPUEobywyKSpvL2ssYT1BKGksMikqaS9rLHQ9eigoMjY3MTY5KmwrLTIxNjc3MSpjKzE1MTM3KmEreC8yKS94KSxyPXooKC04MzEyNypsKzE3MTAzMCpjKy0yMjM2OCphK3gvMikveCkscz16KCgtMjc1KmwrLTQ2MDk5KmMrMTExOTA5KmEreC8yKS94KTtyZXR1cm4gdDw8MTZ8cjw8OHxzfWZ1bmN0aW9uIGRlKG4pe2NvbnN0IGU9e2w6MCxhOjEsYjoyfSxvPW5bMF0saT1uWzFdLGw9blsyXSxjPWVbb10sYT1lW2ldLHQ9ZVtsXTtyZXR1cm4ocixzKT0+ci5va2xhYltjXS1zLm9rbGFiW2NdfHxyLm9rbGFiW2FdLXMub2tsYWJbYV18fHIub2tsYWJbdF0tcy5va2xhYlt0XX1mdW5jdGlvbiB1ZShuLGUsbyl7cmV0dXJuIG4+PWU/ZT49bz8ibGFiIjpuPj1vPyJsYmEiOiJibGEiOm4+PW8/ImFsYiI6ZT49bz8iYWJsIjoiYmFsIn1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2NvbnN0IG89bmV3IEltYWdlO28uZGVjb2Rpbmc9InN5bmMiLG8ubG9hZGluZz0iZWFnZXIiLG8uY3Jvc3NPcmlnaW49ImFub255bW91cyIsby5vbmxvYWQ9KCk9PmUobyksby5vbmVycm9yPSgpPT5lKG8pLG8uc3JjPW59KX1mdW5jdGlvbiBxKG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJfX0NPTlRFWFRfXyJpbiBufWZ1bmN0aW9uIGdlKG4pe3JldHVybiBxKG4pP246cGUobil9ZnVuY3Rpb24gcGUobj17fSl7Y29uc3R7bWF4Q29sb3JzOmU9MjU2LHN0YXRzTW9kZTpvPSJmdWxsIixzYW1wbGVzOmk9W10sc2tpcFRyYW5zcGFyZW50Omw9ITB9PW47cmV0dXJue19fQ09OVEVYVF9fOiEwLHNhbXBsZXM6aSxtYXhDb2xvcnM6ZSxzdGF0c01vZGU6byxza2lwVHJhbnNwYXJlbnQ6bCxjb2xvclNhbXBsZXM6W10sY29sb3JTYW1wbGVzQ2FjaGU6bmV3IE1hcCxjb2xvckJveGVzOltdLGNvbG9yQm94ZXNJbmRleFRyZWU6W10sZmluZGVyQ2FjaGU6bmV3IE1hcH19ZnVuY3Rpb24gWShuKXtjb25zdCBlPXEobik/bjpuLmNvbnRleHQse2NvbG9yQm94ZXNJbmRleFRyZWU6byxmaW5kZXJDYWNoZTppfT1lO2Z1bmN0aW9uIGwoYSx0LHIpe2NvbnN0e2xlZnQ6cyxyaWdodDp1LGxvbmdlc3Q6ZCxva2xhYjpoLGNvbG9yQm94SW5kZXg6Yn09b1thXSxwPU1hdGgubWluKEEodFswXS1oWzBdLDIpK0EodFsxXS1oWzFdLDIpK0EodFsyXS1oWzJdLDIpLDQyOTQ5NjcyOTUtMSk7cDxyLmRpc3QmJihyLmNvbG9yQm94SW5kZXg9YixyLmRpc3Q9cCk7bGV0IGYsZztpZihzIT09LTF8fHUhPT0tMSl7Y29uc3QgQz10W2RdLWhbZF07Qzw9MD8oZj1zLGc9dSk6KGY9dSxnPXMpLGYhPT0tMSYmbChmLHQsciksZyE9PS0xJiZBKEMsMik8ci5kaXN0JiZsKGcsdCxyKX19ZnVuY3Rpb24gYyhhKXtjb25zdCB0PXtkaXN0Ok51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGNvbG9yQm94SW5kZXg6LTF9O3JldHVybiBsKDAsYSx0KSx0LmNvbG9yQm94SW5kZXh9cmV0dXJuIGE9Pntjb25zdCB0PWElMzI3Njg7bGV0IHI9aS5nZXQodCk7cnx8KHI9bmV3IE1hcCxpLnNldCh0LHIpKTtsZXQgcz1yLmdldChhKTtyZXR1cm4gcyE9PXZvaWQgMHx8KHM9YyhIKGEpKSxyLnNldChhLHMpKSxzfX1mdW5jdGlvbiBtZShuLGUpe2NvbnN0e2NvbG9yQm94ZXM6b309bixpPW8ucmVkdWNlKChhLHQpPT5hK3Qud2VpZ2h0LDApO2lmKCFlKXJldHVybiBuLmNvbG9yQm94ZXMubWFwKGE9Pntjb25zdHtzcmdiOnQsd2VpZ2h0OnJ9PWE7cmV0dXJue3ZhbHVlOnQscGVyY2VudGFnZTpyL2l9fSk7Y29uc3QgbD1bXTtmb3IobGV0IGE9by5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0e3NyZ2I6cix3ZWlnaHQ6c309b1t0XTtsLnB1c2goe3ZhbHVlOltyPj4xNiYyNTUscj4+OCYyNTUsciYyNTVdLHBlcmNlbnRhZ2U6cy9pfSl9bGV0IGM7aWYoZT09PSJidWZmZXIiKXtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsLmxlbmd0aCo0KTtmb3IobGV0IGE9bC5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0IHI9dCo0LHM9bFt0XS52YWx1ZTtjW3JdPXNbMF0sY1tyKzFdPXNbMV0sY1tyKzJdPXNbMl0sY1tyKzNdPTI1NX19ZWxzZSBpZihlPT09ImhleCIpe2M9W107Zm9yKGxldCBhPWwubGVuZ3RoLHQ9MDt0PGE7dCsrKXtjb25zdHt2YWx1ZTpyLHBlcmNlbnRhZ2U6c309bFt0XSx1PXJbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxkPXJbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxoPXJbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtjLnB1c2goe3ZhbHVlOmAjJHt1fSR7ZH0ke2h9YCxwZXJjZW50YWdlOnN9KX19ZWxzZSBjPWw7cmV0dXJuIGN9ZnVuY3Rpb24gRihuLGUsbyl7dmFyIHUsZCxoLGI7Y29uc3R7Z2V0Q29udGV4dDJkOmkscHJldmlvdXNTYW1wbGU6bCxza2lwVHJhbnNwYXJlbnQ6Y309byx7c3RhdHNNb2RlOmEsY29sb3JTYW1wbGVzOnQsY29sb3JTYW1wbGVzQ2FjaGU6cn09bjtsZXQgcztpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZS5idWZmZXIpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpZihBcnJheS5pc0FycmF5KGVbMF0pKXtjb25zdCBwPVtdO2ZvcihsZXQgZj1lLmxlbmd0aCxnPTA7ZzxmO2crKylwLnB1c2goKHU9ZVtnXVswXSkhPW51bGw/dTowLChkPWVbZ11bMV0pIT1udWxsP2Q6MCwoaD1lW2ddWzJdKSE9bnVsbD9oOjAsKGI9ZVtnXVszXSkhPW51bGw/YjoyNTUpO3M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApfWVsc2Ugcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IHA9aT09bnVsbD92b2lkIDA6aSgpO2lmKCFwKXJldHVybjtjb25zdCBmPXAuY2FudmFzO3JldHVybiBoZShlKS50aGVuKGc9PihwLmNsZWFyUmVjdCgwLDAsZi53aWR0aCxmLmhlaWdodCksZi53aWR0aD1nLndpZHRoLGYuaGVpZ2h0PWcuaGVpZ2h0LHAuZHJhd0ltYWdlKGcsMCwwLGYud2lkdGgsZi5oZWlnaHQpLEYobixwLmdldEltYWdlRGF0YSgwLDAsZi53aWR0aCxmLmhlaWdodCkuZGF0YSxvKSkpfWVsc2V7Y29uc3QgcD1pPT1udWxsP3ZvaWQgMDppKCk7aWYoIXApcmV0dXJuO2NvbnN0IGY9cC5jYW52YXM7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxmLndpZHRoLGYuaGVpZ2h0KSxmLndpZHRoPXR5cGVvZiBlLndpZHRoPT0ibnVtYmVyIj9lLndpZHRoOmUud2lkdGguYmFzZVZhbC52YWx1ZSxmLmhlaWdodD10eXBlb2YgZS5oZWlnaHQ9PSJudW1iZXIiP2UuaGVpZ2h0OmUuaGVpZ2h0LmJhc2VWYWwudmFsdWUscC5kcmF3SW1hZ2UoZSwwLDAsZi53aWR0aCxmLmhlaWdodCksRihuLHAuZ2V0SW1hZ2VEYXRhKDAsMCxmLndpZHRoLGYuaGVpZ2h0KS5kYXRhLG8pfWZvcihsZXQgcD1zLmxlbmd0aCxmPTA7ZjxwO2YrPTQpe2NvbnN0IGc9c1tmXSxDPXNbZisxXSx5PXNbZisyXSx3PXNbZiszXTtpZihjJiZ3PT09MHx8YT09PSJkaWZmIiYmbCYmZz09PWxbZl0mJkM9PT1sW2YrMV0mJnk9PT1sW2YrMl0mJnc9PT1sW2YrM10pY29udGludWU7Y29uc3QgbT1nPDwxNnxDPDw4fHksUz13KjFlOCttLEk9UyUzMjc2ODtsZXQgVD1yLmdldChJKTtUfHwoVD1uZXcgTWFwLHIuc2V0KEksVCkpO2xldCBFPVQuZ2V0KFMpO2lmKEUhPT12b2lkIDApe3RbRV0uY291bnQrKztjb250aW51ZX1FPXQucHVzaCh7YWxwaGE6dyxzcmdiOm0sb2tsYWI6SChtKSxjb3VudDoxfSktMSxULnNldChTLEUpfXJldHVybiBzfWZ1bmN0aW9uIEoobixlKXtjb25zdHtjb2xvclNhbXBsZXM6b309ZSx7c3RhcnQ6aSxlbmQ6bH09bjtuLmxlbmd0aD1sLWksbi53ZWlnaHQ9MDtjb25zdCBjPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2NbMF0rPXIub2tsYWJbMF0qci5jb3VudCxjWzFdKz1yLm9rbGFiWzFdKnIuY291bnQsY1syXSs9ci5va2xhYlsyXSpyLmNvdW50LG4ud2VpZ2h0Kz1yLmNvdW50fW4ub2tsYWI9W2NbMF0vbi53ZWlnaHQsY1sxXS9uLndlaWdodCxjWzJdL24ud2VpZ2h0XTtjb25zdCBhPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2FbMF0rPUEoci5va2xhYlswXS1uLm9rbGFiWzBdLDIpKnIuY291bnQsYVsxXSs9QShyLm9rbGFiWzFdLW4ub2tsYWJbMV0sMikqci5jb3VudCxhWzJdKz1BKHIub2tsYWJbMl0tbi5va2xhYlsyXSwyKSpyLmNvdW50fW4uc29ydD11ZShhWzBdLGFbMV0sYVsyXSksbi5zY29yZT1NYXRoLm1heChhWzBdLGFbMV0sYVsyXSl9ZnVuY3Rpb24gUShuLGUpe2NvbnN0IG89Wih7c3RhcnQ6MCxlbmQ6MCxsZW5ndGg6MCxzY29yZTowLHdlaWdodDowLHNvcnQ6ImxhYiIsc29ydGVkOm51bGwsc3JnYjowLG9rbGFiOlswLDAsMF19LG4pO3JldHVybiBKKG8sZSksb31mdW5jdGlvbiB3ZShuKXtjb25zdHtjb2xvckJveGVzOmV9PW4sbz1bXSxpPW5ldyBNYXA7Zm9yKGxldCBhPS0xLHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspe2NvbnN0e3NyZ2I6c309ZVtyXTtpZihzPT09YSl7aS5zZXQociwhMCk7Y29udGludWV9YT1zfWMoe21pbjpbLTY1NTM1LC02NTUzNSwtNjU1MzVdLG1heDpbNjU1MzUsNjU1MzUsNjU1MzVdfSk7ZnVuY3Rpb24gbChhKXtjb25zdCB0PXttaW46WzY1NTM1LDY1NTM1LDY1NTM1XSxtYXg6Wy02NTUzNSwtNjU1MzUsLTY1NTM1XX07bGV0IHI9MDtjb25zdCBzPVtdO2ZvcihsZXQgcD1lLmxlbmd0aCxmPTA7ZjxwO2YrKyl7Y29uc3R7b2tsYWI6Z309ZVtmXTtpLmhhcyhmKXx8Z1swXTxhLm1pblswXXx8Z1sxXTxhLm1pblsxXXx8Z1syXTxhLm1pblsyXXx8Z1swXT5hLm1heFswXXx8Z1sxXT5hLm1heFsxXXx8Z1syXT5hLm1heFsyXXx8KGdbMF08dC5taW5bMF0mJih0Lm1pblswXT1nWzBdKSxnWzFdPHQubWluWzFdJiYodC5taW5bMV09Z1sxXSksZ1syXTx0Lm1pblsyXSYmKHQubWluWzJdPWdbMl0pLGdbMF0+dC5tYXhbMF0mJih0Lm1heFswXT1nWzBdKSxnWzFdPnQubWF4WzFdJiYodC5tYXhbMV09Z1sxXSksZ1syXT50Lm1heFsyXSYmKHQubWF4WzJdPWdbMl0pLHNbcisrXT17b2tsYWI6Zyxjb2xvckJveEluZGV4OmZ9KX1sZXQgdT0wO2lmKCFyKXJldHVybntjb2xvckJveEluZGV4Oi0xLGxvbmdlc3Q6dX07Y29uc3QgZD10Lm1heFswXS10Lm1pblswXSxoPXQubWF4WzFdLXQubWluWzFdLGI9dC5tYXhbMl0tdC5taW5bMl07cmV0dXJuIGQ+PWgmJmQ+PWI/dT0wOmI+PWQmJmI+PWg/dT0yOmg+PWQmJmg+PWImJih1PTEpLHtjb2xvckJveEluZGV4OnMuc29ydCgocCxmKT0+cC5va2xhYlt1XS1mLm9rbGFiW3VdKVtyPj4xXS5jb2xvckJveEluZGV4LGxvbmdlc3Q6dX19ZnVuY3Rpb24gYyhhKXtjb25zdHtjb2xvckJveEluZGV4OnQsbG9uZ2VzdDpyfT1sKGEpO2lmKHQ8MClyZXR1cm4tMTtjb25zdHtva2xhYjpzfT1lW3RdLHU9e2xvbmdlc3Q6cixva2xhYjpzLGNvbG9yQm94SW5kZXg6dH0sZD1vLnB1c2godSktMTtpLnNldCh0LCEwKTtjb25zdCBoPXttYXg6Wy4uLmEubWF4XSxtaW46Wy4uLmEubWluXX0sYj17bWF4OlsuLi5hLm1heF0sbWluOlsuLi5hLm1pbl19O2gubWF4W3JdPXNbcl0sYi5taW5bcl09TWF0aC5taW4oc1tyXSsxLDY1NTM1KTtjb25zdCBwPWMoaCk7bGV0IGY9LTE7cmV0dXJuIGIubWluW3JdPD1iLm1heFtyXSYmKGY9YyhiKSksdS5sZWZ0PXAsdS5yaWdodD1mLGR9cmV0dXJuIG99ZnVuY3Rpb24gYmUobixlPXt9KXtjb25zdHttYXhDb2xvcnM6byxjb2xvclNhbXBsZXM6aX09bjtpZighaS5sZW5ndGgpcmV0dXJuO2NvbnN0e21heENvbG9yczpsPW8sY2xlYXJTYW1wbGVzOmM9ITB9PWU7bGV0IGE9USh7ZW5kOmkubGVuZ3RofSxuKSx0PTE7Y29uc3Qgcj1bYV07ZnVuY3Rpb24gcygpe2xldCBkPS0xLGg9LTE7aWYodD09PWwpcmV0dXJuLTE7Zm9yKGxldCBiPTA7Yjx0O2IrKyl7Y29uc3QgcD1yW2JdO3AubGVuZ3RoPj0yJiZwLnNjb3JlPmgmJihkPWIsaD1wLnNjb3JlKX1yZXR1cm4gZH1mdW5jdGlvbiB1KGQsaCl7Y29uc3QgYj1RKHtzdGFydDpoKzEsZW5kOmQuZW5kLHNvcnRlZDpkLnNvcnRlZH0sbik7ZC5lbmQtPWIubGVuZ3RoLEooZCxuKSxyLnB1c2goYiksdCsrfWZvcig7YSYmYS5sZW5ndGg+MTspe2NvbnN0e3N0YXJ0OmQsZW5kOmgsc29ydDpiLHNvcnRlZDpwfT1hO2lmKGIhPT1wKXtjb25zdCB3PWkuc2xpY2UoZCxoKS5zb3J0KGRlKGIpKTtmb3IobGV0IG09dy5sZW5ndGgsUz0wO1M8bTtTKyspaVtkK1NdPXdbU107YS5zb3J0ZWQ9Yn1jb25zdCBmPWEud2VpZ2h0KzE+PjE7bGV0IGc9ZCxDPTA7Zm9yKGxldCB3PWgtMjtnPHcmJihDKz1pW2ddLmNvdW50LCEoQz5mKSk7ZysrKTt1KGEsZyk7Y29uc3QgeT1zKCk7YT15Pj0wP3JbeV06bnVsbH1mb3IobGV0IGQ9ci5sZW5ndGgsaD0wO2g8ZDtoKyspcltoXS5zcmdiPWZlKHJbaF0ub2tsYWIpO24uY29sb3JCb3hlcz1yLnNvcnQoKGQsaCk9PmQuc3JnYi1oLnNyZ2IpLG4uY29sb3JCb3hlc0luZGV4VHJlZT13ZShuKSxjJiYobi5jb2xvclNhbXBsZXM9W10sbi5jb2xvclNhbXBsZXNDYWNoZS5jbGVhcigpKSxuLmZpbmRlckNhY2hlLmNsZWFyKCl9ZnVuY3Rpb24geGUobixlLG8pe2NvbnN0e2NvbG9yQm94ZXM6aX09bjtpZighZSlyZXR1cm47bGV0IGw7aWYodHlwZW9mIG89PSJudW1iZXIiKWw9bztlbHNlIGlmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj1vLnJlcGxhY2UoL14jLywiIikscz1bYCR7clswXX0ke3JbMV19YCxgJHtyWzJdfSR7clszXX1gLGAke3JbNF19JHtyWzVdfWBdLm1hcCh1PT5wYXJzZUludCh1LDE2KSk7bD1zWzBdPDwxNnxzWzFdPDw4fHNbMl19ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKWw9b1swXTw8MTZ8b1sxXTw8OHxvWzJdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0Iik7Y29uc3QgYz1lKGwpO2lmKGM9PT12b2lkIDApcmV0dXJuO2NvbnN0IGE9aVtjXTtpZighYSlyZXR1cm47Y29uc3R7c3JnYjp0fT1hO2lmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj0odD4+MTYmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9KHQ+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHU9KHQmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpO3JldHVybnt2YWx1ZTpgIyR7cn0ke3N9JHt1fWAsaW5kZXg6Y319ZWxzZSBpZih0eXBlb2Ygbz09Im9iamVjdCImJkFycmF5LmlzQXJyYXkobykpcmV0dXJue3ZhbHVlOlt0Pj4xNiYyNTUsdD4+OCYyNTUsdCYyNTVdLGluZGV4OmN9O3JldHVybnt2YWx1ZTp0LGluZGV4OmN9fWZ1bmN0aW9uIFNlKG4pe24uY29sb3JTYW1wbGVzPVtdLG4uY29sb3JTYW1wbGVzQ2FjaGUuY2xlYXIoKSxuLmNvbG9yQm94ZXM9W10sbi5jb2xvckJveGVzSW5kZXhUcmVlPVtdLG4uZmluZGVyQ2FjaGUuY2xlYXIoKX1mdW5jdGlvbiBDZShuKXtjb25zdCBlPWdlKG4pLHtzdGF0c01vZGU6byxzYW1wbGVzOmksc2tpcFRyYW5zcGFyZW50Omx9PWUsYz1mdW5jdGlvbigpe2xldCBzO3JldHVybigpPT4oIXMmJkImJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHMpfSgpO2xldCBhPW51bGwsdD1udWxsO2NvbnN0IHI9e2NvbnRleHQ6ZSxhZGRTYW1wbGU6cz0+e2UuY29sb3JTYW1wbGVzLmxlbmd0aD09PTAmJihhPW51bGwpO2NvbnN0IHU9RihlLHMse2dldENvbnRleHQyZDpjLHByZXZpb3VzU2FtcGxlOmEsc2tpcFRyYW5zcGFyZW50Omx9KTtyZXR1cm4odSBpbnN0YW5jZW9mIFByb21pc2U/dTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT51KSkudGhlbihkPT57ZCYmbz09PSJkaWZmIiYmKGE9ZCl9KSx1fSxnZW5lcmF0ZShzPXt9KXtjb25zdHtjbGVhclNhbXBsZXM6dT0hMH09cztyZXR1cm4gdSYmKGE9bnVsbCksYmUoZSxzKSx0aGlzfSxnZXRDb2xvcnM6cz0+bWUoZSxzKSxmaW5kTmVhcmVzdENvbG9yOnM9Pih0fHwodD1ZKGUpKSx4ZShlLHQscykpLHJlc2V0OigpPT5TZShlKX07cmV0dXJuIGkubGVuZ3RoJiYoaS5mb3JFYWNoKHM9PnIuYWRkU2FtcGxlKHMpKSxlLnNhbXBsZXM9W10pLHJ9Y29uc3QgeWU9Ilttb2Rlcm4tZ2lmXSIsSWU9IkdJRiIsa2U9WyI4N2EiLCI4OWEiXSxlZT00NCx0ZT0zMyxUZT0yNTUsQWU9MTEsRWU9MjU0LG5lPTI0OSxyZT00LEJlPTEsX2U9MSxNZT01OSxvZT0oLi4ubik9PmNvbnNvbGUud2Fybih5ZSwuLi5uKTtmdW5jdGlvbiB2ZShuKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ucmVkdWNlKChvLGkpPT5vK2kuYnl0ZUxlbmd0aCwwKSk7cmV0dXJuIG4ucmVkdWNlKChvLGkpPT4oZS5zZXQoaSxvKSxvK2kuYnl0ZUxlbmd0aCksMCksZX1mdW5jdGlvbiBhZShuLGUsbyl7bGV0IGk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KG4pKWk9bi5idWZmZXI7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpaT1uO2Vsc2V7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx7d2lkdGg6YyxoZWlnaHQ6YX09b3x8e30sdD1sLmdldENvbnRleHQoIjJkIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyBjb250ZXh0MmQiKTtsLndpZHRoPWMhPW51bGw/Yzp0eXBlb2Ygbi53aWR0aD09Im51bWJlciI/bi53aWR0aDpuLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQ9YSE9bnVsbD9hOnR5cGVvZiBuLmhlaWdodD09Im51bWJlciI/bi5oZWlnaHQ6bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSx0LmRyYXdJbWFnZShuLDAsMCxsLndpZHRoLGwuaGVpZ2h0KSxpPXQuZ2V0SW1hZ2VEYXRhKDAsMCxsLndpZHRoLGwuaGVpZ2h0KS5kYXRhLmJ1ZmZlcn1zd2l0Y2goZSl7Y2FzZSJ1aW50OEFycmF5IjpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSJ1aW50OENsYW1wZWRBcnJheSI6cmV0dXJuIG5ldyBVaW50OENsYW1wZWRBcnJheShpKTtjYXNlImRhdGFWaWV3IjpyZXR1cm4gbmV3IERhdGFWaWV3KGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgZm9ybWF0Iil9fWZ1bmN0aW9uIE5lKG4sZSl7dmFyIHA7Y29uc3R7dG9wOm89MCxsZWZ0Omk9MCx3aWR0aDpsLGhlaWdodDpjLHJhd1dpZHRoOmEscmF0ZTp0PTQsY2FsbGJhY2s6cn09ZSxzPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmMqdCksdT1pKnQsZD1vKnQsaD1sKnQsYj1hKnQ7Zm9yKGxldCBmPTA7ZjxjO2YrKylmb3IobGV0IGc9MDtnPGg7ZysrKXtjb25zdCBDPShkK2YpKmIrKHUrZyk7c1tmKmgrZ109KHA9cj09bnVsbD92b2lkIDA6cihDKSkhPW51bGw/cDpuW0NdfXJldHVybiBzfWZ1bmN0aW9uIFVlKG4pe2NvbnN0IGU9YWUobiwiZGF0YVZpZXciKTtsZXQgbz0wO2NvbnN0IGk9KCk9PmUuZ2V0VWludDgobysrKSxsPWM9PkFycmF5LmZyb20oe2xlbmd0aDpjfSkubWFwKGkpO3JldHVybntnZXRDdXJzb3I6KCk9Pm8sc2V0Q3Vyc29yOmM9Pm89YyxyZWFkQnl0ZTppLHJlYWRCeXRlczpsLHJlYWRTdHJpbmc6Yz0+U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKGMpKSxyZWFkVW5zaWduZWQ6KCk9PltlLmdldFVpbnQxNihvLCEwKSxvKz0yXVswXSxyZWFkQml0czooKT0+ZS5nZXRVaW50OChvKyspLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsIjAiKS5zcGxpdCgiIikubWFwKE51bWJlcikscmVhZENvbG9yVGFibGU6Yz0+QXJyYXkuZnJvbSh7bGVuZ3RoOmN9LCgpPT5BcnJheS5mcm9tKGwoMykpKSxyZWFkU3ViQmxvY2s6KCk9Pntjb25zdCBjPVtdO2Zvcig7Oyl7Y29uc3QgYT1pKCk7aWYoYT09PTAmJmUuZ2V0VWludDgobykhPT0wKWJyZWFrO2MucHVzaChhKX1yZXR1cm4gY319fWZ1bmN0aW9uIE9lKG4pe2NvbnN0IGU9e30se2dldEN1cnNvcjpvLHNldEN1cnNvcjppLHJlYWRCeXRlOmwscmVhZFN0cmluZzpjLHJlYWRVbnNpZ25lZDphLHJlYWRCaXRzOnQscmVhZENvbG9yVGFibGU6cixyZWFkU3ViQmxvY2s6c309VWUobiksdT0oKT0+KHtpbmRleDowLGRlbGF5OjEwMCxkaXNwb3NhbDowfSksZD1jKDMpLGg9YygzKTtpZihkIT09SWV8fCFrZS5pbmNsdWRlcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgbm90IGEgODdhLzg5YSBHSUYgZGF0YS4iKTtlLnZlcnNpb249aCxlLndpZHRoPWEoKSxlLmhlaWdodD1hKCk7Y29uc3QgYj10KCk7ZS5nbG9iYWxDb2xvclRhYmxlPSEhYlswXSxlLmNvbG9yUmVzb2x1VGlvbj1wYXJzZUludChiLnNsaWNlKDEsNCkuam9pbigiIiksMikrMSxlLmNvbG9yVGFibGVTb3J0ZWQ9ISFiWzRdO2NvbnN0IHA9cGFyc2VJbnQoYi5zbGljZSg1LDgpLmpvaW4oIiIpLDIpO2UuY29sb3JUYWJsZVNpemU9cD9NYXRoLnBvdygyLHArMSk6MCxlLmJhY2tncm91bmRDb2xvckluZGV4PWwoKSxlLnBpeGVsQXNwZWN0UmF0aW89bCgpLGUuZ2xvYmFsQ29sb3JUYWJsZSYmKGUuY29sb3JUYWJsZVNpemU/ZS5jb2xvclRhYmxlPXIoZS5jb2xvclRhYmxlU2l6ZSk6cygpKSxlLmZyYW1lcz1bXTtsZXQgZj11KCk7Y29uc3QgZz1bXSxDPVtdO2Zvcig7Oyl7Y29uc3QgeT1sKCk7aWYoZy5wdXNoKHkpLHk9PT1lZSl7Zi5sZWZ0PWEoKSxmLnRvcD1hKCksZi53aWR0aD1hKCksZi5oZWlnaHQ9YSgpO2NvbnN0IHc9dCgpO2YubG9jYWxDb2xvclRhYmxlPSEhd1swXSxmLmludGVybGFjZWQ9ISF3WzFdLGYuY29sb3JUYWJsZVNvcnRlZD0hIXdbMl0sZi5yZXNlcnZlZD1wYXJzZUludCh3LnNsaWNlKDMsNSkuam9pbigiIiksMik7Y29uc3QgbT1wYXJzZUludCh3LnNsaWNlKDUsOCkuam9pbigiIiksMik7Zm9yKGYuY29sb3JUYWJsZVNpemU9bT9NYXRoLnBvdygyLG0rMSk6MCxmLmxvY2FsQ29sb3JUYWJsZSYmKGYuY29sb3JUYWJsZT1yKGYuY29sb3JUYWJsZVNpemUpKSxmLmx6d01pbkNvZGVTaXplPWwoKSxmLmltYWdlRGF0YVBvc2l0aW9ucz1bXTs7KXtjb25zdCBTPWwoKTtpZihTPT09MClicmVhaztjb25zdCBJPW8oKTtmLmltYWdlRGF0YVBvc2l0aW9ucy5wdXNoKFtJLFNdKSxpKEkrUyl9ZS5mcmFtZXMucHVzaChmKSxmPXUoKSxmLmluZGV4PWUuZnJhbWVzLmxlbmd0aDtjb250aW51ZX1pZih5PT09dGUpe2NvbnN0IHc9bCgpO2lmKEMucHVzaCh3KSx3PT09VGUpe2lmKGwoKSE9PUFlKWNvbnRpbnVlO2NvbnN0IG09e2lkZW50aWZpZXI6Yyg4KSxjb2RlOmMoMyksZGF0YTpbXX07YCR7bS5pZGVudGlmaWVyfSR7bS5jb2RlfWA9PSJORVRTQ0FQRTIuMCImJmwoKT09PTMmJihlLmxvb3BlZD0hIWwoKSxlLmxvb3BDb3VudD1hKCkpLG0uZGF0YT1zKCksZi5hcHBsaWNhdGlvbj1tO2NvbnRpbnVlfWlmKHc9PT1FZSl7Zi5jb21tZW50PXMoKS5tYXAobT0+U3RyaW5nLmZyb21DaGFyQ29kZShtKSkuam9pbigiIik7Y29udGludWV9aWYodz09PW5lKXtpZihsKCkhPT1yZSljb250aW51ZTtjb25zdCBtPXQoKSxTPXtyZXNlcnZlZDpwYXJzZUludChtLnNsaWNlKDAsMykuam9pbigiIiksMiksZGlzcG9zYWw6cGFyc2VJbnQobS5zbGljZSgzLDYpLmpvaW4oIiIpLDIpLHVzZXJJbnB1dDohIW1bNl0sdHJhbnNwYXJlbnQ6ISFtWzddLGRlbGF5VGltZTphKCksdHJhbnNwYXJlbnRJbmRleDpsKCl9O3MoKSxmLmdyYXBoaWNDb250cm9sPVMsZi5kaXNwb3NhbD1TLmRpc3Bvc2FsLGYuZGVsYXk9KFMuZGVsYXlUaW1lfHwxMCkqMTA7Y29udGludWV9aWYodz09PUJlKXtpZihsKCkhPT1fZSljb250aW51ZTtmLnBsYWluVGV4dD17bGVmdDphKCksdG9wOmEoKSx3aWR0aDphKCksaGVpZ2h0OmEoKSxjZWxsV2lkdGg6bCgpLGNlbGxIZWlnaHQ6bCgpLGNvbG9ySW5kZXg6bCgpLGJhY2tncm91bmRDb2xvckluZGV4OmwoKSxkYXRhOnMoKX07Y29udGludWV9b2UoYFVua25vd24gZXh0ZW5zaW9uIGJsb2NrOiAweCR7dy50b1N0cmluZygxNil9YCxnLnNsaWNlKDAsZy5sZW5ndGgtMSkubWFwKG09PmAweCR7bS50b1N0cmluZygxNil9YCksQy5zbGljZSgwLEMubGVuZ3RoLTEpLm1hcChtPT5gMHgke20udG9TdHJpbmcoMTYpfWApKTtjb250aW51ZX1pZih5PT09TWUpYnJlYWs7b2UoYFVua25vd24gYmxvY2s6IDB4JHt5LnRvU3RyaW5nKDE2KX1gLGcuc2xpY2UoMCxnLmxlbmd0aC0xKS5tYXAodz0+YDB4JHt3LnRvU3RyaW5nKDE2KX1gKSxDLnNsaWNlKDAsQy5sZW5ndGgtMSkubWFwKHc9PmAweCR7dy50b1N0cmluZygxNil9YCkpfXJldHVybiBlfWZ1bmN0aW9uIFBlKG4sZSxvKXtjb25zdCBjPW87bGV0IGEsdCxyLHMsdSxkLGg7Y29uc3QgYj1uZXcgQXJyYXkobykscD1uZXcgQXJyYXkoNDA5NiksZj1uZXcgQXJyYXkoNDA5NiksZz1uZXcgQXJyYXkoNDA5NisxKSxDPW4seT0xPDxDLHc9eSsxO2ZvcihhPXkrMix1PS0xLHI9QysxLHQ9KDE8PHIpLTEsZD0wO2Q8eTtkKyspcFtkXT0wLGZbZF09ZDtsZXQgbSxTLEksVCxFLFA7Zm9yKG09Uz1JPVQ9RT1QPTAsaD0wO2g8Yzspe2lmKFQ9PT0wKXtpZihTPHIpe20rPWVbUF08PFMsUys9OCxQKys7Y29udGludWV9aWYoZD1tJnQsbT4+PXIsUy09cixkPmF8fGQ9PT13KWJyZWFrO2lmKGQ9PT15KXtyPUMrMSx0PSgxPDxyKS0xLGE9eSsyLHU9LTE7Y29udGludWV9aWYodT09PS0xKXtnW1QrK109ZltkXSx1PWQsST1kO2NvbnRpbnVlfWZvcihzPWQsZD09PWEmJihnW1QrK109SSxkPXUpO2Q+eTspZ1tUKytdPWZbZF0sZD1wW2RdO0k9ZltkXSYyNTUsZ1tUKytdPUksYTw0MDk2JiYocFthXT11LGZbYV09SSxhKyssIShhJnQpJiZhPDQwOTYmJihyKyssdCs9YSkpLHU9c31ULS0sYltFKytdPWdbVF0saCsrfWZvcihoPUU7aDxjO2grKyliW2hdPTA7cmV0dXJuIGJ9ZnVuY3Rpb24gJGUobixlKXtjb25zdCBvPW5ldyBBcnJheShuLmxlbmd0aCksaT1uLmxlbmd0aC9lLGw9WzAsNCwyLDFdLGM9WzgsOCw0LDJdO2xldCBhPTA7Zm9yKGxldCB0PTA7dDw0O3QrKylmb3IobGV0IHI9bFt0XTtyPGk7cis9Y1t0XSlvLnNwbGljZS5hcHBseShvLFtyKmUsZV0uY29uY2F0KG4uc2xpY2UoYSplLChhKzEpKmUpKSksYSsrO3JldHVybiBvfWZ1bmN0aW9uIERlKG4pe2NvbnN0IGU9bmV3IE1hcCx7d29ya2VyVXJsOm99PW47bGV0e3dvcmtlck51bWJlcjppPTF9PW47Y29uc3QgbD1bLi4ubmV3IEFycmF5KG8/aTowKV0ubWFwKCgpPT57dHJ5e2NvbnN0IHI9bmV3IFdvcmtlcihvKTtyZXR1cm4gci5vbm1lc3NhZ2U9YyxyfWNhdGNoKHIpe3JldHVybiBudWxsfX0pLmZpbHRlcihCb29sZWFuKTtpPWwubGVuZ3RoO2Z1bmN0aW9uIGMocil7dmFyIGQ7Y29uc3R7aWQ6cyxkYXRhOnV9PXIuZGF0YTsoZD1lLmdldChzKSk9PW51bGx8fGQodSksZS5kZWxldGUocyl9Y29uc3QgYT1mdW5jdGlvbigpe2xldCByPTA7cmV0dXJuIHM9PmxbKHMhPW51bGw/czpyKyspJWldfSgpO3JldHVybntjYWxsOmZ1bmN0aW9uKCl7bGV0IHI9MDtyZXR1cm4ocyx1LGQsaCk9Pm5ldyBQcm9taXNlKGI9Pntjb25zdCBwPWEoaCk7aWYoIXApcmV0dXJuIGIodm9pZCAwKTtlLnNldChyLGIpLHAucG9zdE1lc3NhZ2Uoe2lkOnIrKyx0eXBlOnMsZGF0YTp1fSx7dHJhbnNmZXI6ZH0pfSl9KCl9fWZ1bmN0aW9uIFhlKG4sZSl7Y29uc3Qgbz1hZShuLCJ1aW50OEFycmF5Iik7aWYoZSE9bnVsbCYmZS53b3JrZXJVcmwpcmV0dXJuIERlKHt3b3JrZXJVcmw6ZS53b3JrZXJVcmx9KS5jYWxsKCJmcmFtZXM6ZGVjb2RlIixvLFtvLmJ1ZmZlcl0pO2NvbnN0e2dpZjppPU9lKG4pLHJhbmdlOmx9PWUhPW51bGw/ZTp7fSx7d2lkdGg6YyxoZWlnaHQ6YSxjb2xvclRhYmxlOnQsZnJhbWVzOnJ9PWkscz1sP3Iuc2xpY2UobFswXSxsWzFdKzEpOnIsdT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyphKjQpO2xldCBkO3JldHVybiBzLm1hcChoPT57dmFyIGxlO2NvbnN0e2xlZnQ6Yix0b3A6cCx3aWR0aDpmLGhlaWdodDpnLGludGVybGFjZWQ6Qyxsb2NhbENvbG9yVGFibGU6eSxjb2xvclRhYmxlOncsbHp3TWluQ29kZVNpemU6bSxpbWFnZURhdGFQb3NpdGlvbnM6UyxncmFwaGljQ29udHJvbDpJLGRpc3Bvc2FsOlQsZGVsYXk6RX09aCxQPXArZyx7dHJhbnNwYXJlbnQ6S2UsdHJhbnNwYXJlbnRJbmRleDpWZX09SSE9bnVsbD9JOnt9LFc9eT93OnQsamU9S2U/VmU6LTEsWmU9dmUoUy5tYXAoKFtNLFVdKT0+by5zdWJhcnJheShNLE0rVSkpKTtsZXQgSz1QZShtLFplLGYqZyk7aWYoQyYmKEs9JGUoSyxmKSksKGQ9PW51bGw/dm9pZCAwOmQuZGlzcG9zYWwpIT09MSl7Y29uc3R7bGVmdDpNPTAsdG9wOlU9MCx3aWR0aDpWPWMsaGVpZ2h0Ok89YX09ZCE9bnVsbD9kOnt9LFg9VStPO2ZvcihsZXQgJD1VOyQ8WDskKyspe2NvbnN0IGo9JCpjK007Zm9yKGxldCBEPTA7RDxWO0QrKyl7Y29uc3Qgdj0oaitEKSo0O3Vbdl09dVt2KzFdPXVbdisyXT11W3YrM109MH19fWZvcihsZXQgTT1wO008UDtNKyspe2NvbnN0IFU9TSpjK2IsVj0oTS1wKSpmO2ZvcihsZXQgTz0wO088ZjtPKyspe2NvbnN0IFg9S1tWK09dO2lmKFg9PT1qZSljb250aW51ZTtjb25zdFskLGosRF09KGxlPVc9PW51bGw/dm9pZCAwOldbWF0pIT1udWxsP2xlOlswLDAsMF0sdj0oVStPKSo0O3Vbdl09JCx1W3YrMV09aix1W3YrMl09RCx1W3YrM109MjU1fX1yZXR1cm4gVCE9PTMmJihkPWgpLHt3aWR0aDpjLGhlaWdodDphLGRlbGF5OkUsaW1hZ2VEYXRhOnUuc2xpY2UoMCl9fSl9ZnVuY3Rpb24gTGUobixlLG8pe2NvbnN0e3dyaXRlQnl0ZTppLGdldEN1cnNvcjpsLGNhbGN1bGF0ZURpc3RhbmNlOmN9PW87aShuKTtsZXQgYT1sKCk7aSgwKTtjb25zdCB0PTE8PG4scj10LTEscz10KzE7bGV0IHU9cysxLGQ9bisxLGg9MCxiPTA7ZnVuY3Rpb24gcChTKXtmb3IoO2g+PVM7KWkoYiYyNTUpLGI+Pj04LGgtPTgsYyhhKT09PTI1NiYmKGkoMjU1LGEpLGE9bCgpLGkoMCkpfWZ1bmN0aW9uIGYoUyl7Ynw9Uzw8aCxoKz1kLHAoOCl9bGV0IGc9ZVswXSZyLEM9e30seSx3LG07Zih0KTtmb3IobGV0IFM9ZS5sZW5ndGgsST0xO0k8UzsrK0kpaWYobT1lW0ldJnIseT1nPDw4fG0sdz1DW3ldLHc9PT12b2lkIDApe2ZvcihifD1nPDxoLGgrPWQ7aD49ODspaShiJjI1NSksYj4+PTgsaC09OCxjKGEpPT09MjU2JiYoaSgyNTUsYSksYT1sKCksaSgwKSk7dT09PTQwOTY/KGYodCksdT1zKzEsZD1uKzEsQz17fSk6KHU+PTE8PGQmJisrZCxDW3ldPXUrKyksZz1tfWVsc2UgZz13O2YoZyksZihzKSxwKDEpLGMoYSk9PT0xP2koMCxhKTooaShjKGEpLTEsYSksaSgwKSl9ZnVuY3Rpb24gUmUobj17fSl7Y29uc3R7Y2h1bmtTaXplOmU9NDA5Nn09bjtsZXQgbz1bbmV3IFVpbnQ4QXJyYXkoZSldLGk9MCxsPTA7Y29uc3QgYz0odCxyKT0+e3I/b1tyWzBdXVtyWzFdXT10OihsPj1lJiYob1srK2ldPW5ldyBVaW50OEFycmF5KGUpLGw9MCksb1tpXVtsKytdPXQpfSxhPXQ9PnQuZm9yRWFjaChyPT5jKHIpKTtyZXR1cm57Z2V0Q3Vyc29yOigpPT5baSxsXSxzZXRDdXJzb3I6dD0+e2k9dFswXSxsPXRbMV19LGNhbGN1bGF0ZURpc3RhbmNlOnQ9PmkqZStsLSh0WzBdKmUrdFsxXSksd3JpdGVCeXRlOmMsd3JpdGVCeXRlczphLHdyaXRlU3RyaW5nOnQ9PnQuc3BsaXQoIiIpLmZvckVhY2goKHIscyk9PmModC5jaGFyQ29kZUF0KHMpKSksd3JpdGVVbnNpZ25lZDp0PT5hKFt0JjI1NSx0Pj44JjI1NV0pLGZsdXNoOigpPT57b1tpXT1vW2ldLnNsaWNlKDAsbCk7Y29uc3QgdD1uZXcgVWludDhBcnJheShvLnJlZHVjZSgocyx1KT0+cyt1LmJ5dGVMZW5ndGgsMCkpO2xldCByPTA7cmV0dXJuIG8uZm9yRWFjaChzPT57dC5zZXQocyxyKSxyKz1zLmJ5dGVMZW5ndGh9KSxvPVtuZXcgVWludDhBcnJheShlKV0saT0wLGw9MCx0fX19ZnVuY3Rpb24gemUobil7dmFyIEMseSx3O2NvbnN0IGU9UmUoKSx7d3JpdGVCeXRlOm8sd3JpdGVCeXRlczppLHdyaXRlVW5zaWduZWQ6bCxmbHVzaDpjfT1lLHtsZWZ0OmE9MCx0b3A6dD0wLHdpZHRoOnI9MCxoZWlnaHQ6cz0wLGRlbGF5OnU9MTAwLGNvbG9yVGFibGU6ZH09bjtsZXR7ZGlzcG9zYWw6aD0wfT1uO2NvbnN0IGI9KEM9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOkMudHJhbnNwYXJlbnQ7bGV0IHA9KHc9KHk9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOnkudHJhbnNwYXJlbnRJbmRleCkhPW51bGw/dzoyNTU7aWYoYTwwfHxhPjY1NTM1KXRocm93IG5ldyBFcnJvcigiTGVmdCBpbnZhbGlkLiIpO2lmKHQ8MHx8dD42NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvcCBpbnZhbGlkLiIpO2lmKHI8PTB8fHI+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJXaWR0aCBpbnZhbGlkLiIpO2lmKHM8PTB8fHM+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgaW52YWxpZC4iKTtsZXQgZj04LGc9ZD9kLmxlbmd0aDowO2lmKGcpe2lmKGc8Mnx8Zz4yNTZ8fGcmZy0xKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciB0YWJsZSBsZW5ndGgsIG11c3QgYmUgcG93ZXIgb2YgMiBhbmQgMiAuLiAyNTYuIik7Zm9yKDtnPj49MTspKytmfXJldHVybiBvKHRlKSxvKG5lKSxvKHJlKSxiP2h8fChoPTIpOnA9MCxvKHBhcnNlSW50KGAwMDAke051bWJlcihoJjcpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDMsIjAiKX0wJHtiPzE6MH1gLDIpKSxsKHUvMTApLG8ocCksbygwKSxvKGVlKSxsKGEpLGwodCksbChyKSxsKHMpLGQhPW51bGwmJmQubGVuZ3RoPyhvKHBhcnNlSW50KGAxMDAwMCR7KGYtMSkudG9TdHJpbmcoMikucGFkU3RhcnQoMywiMCIpfWAsMikpLGkoZC5mbGF0KCkpKTpvKDApLExlKGYsbi5pbWFnZURhdGEsZSksYygpfWZ1bmN0aW9uIEZlKG4pe2NvbnN0e2ZyYW1lczplLHBhbGV0dGU6byx0cmFuc3BhcmVudEluZGV4Oml9PW4sbD1ZKG8pO3JldHVybiBlLm1hcCgoe2ltYWdlRGF0YTpjfSk9PntsZXQgYT0hMTtjb25zdCB0PW5ldyBVaW50OENsYW1wZWRBcnJheShjLmxlbmd0aC80KTtmb3IobGV0IHI9Yy5sZW5ndGgscz0wO3M8cjtzKz00KWNbcyszXT09PTA/KHRbcy80XT1pLGE9ITApOnRbcy80XT1sKGNbc108PDE2fGNbcysxXTw8OHxjW3MrMl0pO3JldHVybntpbWFnZURhdGE6dCx0cmFuc3BhcmVudDphfX0pfWZ1bmN0aW9uIFdlKG4pe2NvbnN0e2ZyYW1lczplLHRyYW5zcGFyZW50SW5kZXg6b309bjtsZXQgaTtjb25zdCBsPWUubGVuZ3RoO3JldHVybiBlLm1hcCgoYyxhKT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OnIsdHJhbnNwYXJlbnQ6cyxpbWFnZURhdGE6dX09YztsZXQgZD0wLGg9MCxiPXQtMSxwPXItMSxmO2lmKHMpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqaCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqcCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7cC0tfWZvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStkXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7ZCsrfWZvcig7Yj5kOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStiXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7Yi0tfX1lbHNle2lmKGkpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KmgrbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KnArbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7cC0tfWlmKGg9PT1wKWQ9YjtlbHNle2Zvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTw9cDttKyspe2NvbnN0IFM9bSp0K2Q7aWYodVtTXSE9PWlbU10pe3c9ITE7YnJlYWt9fWlmKCF3KWJyZWFrO2QrK31mb3IoO2I+ZDspe2xldCB3PSEwO2ZvcihsZXQgbT1oO208PXA7bSsrKXtjb25zdCBTPW0qdCtiO2lmKHVbU10hPT1pW1NdKXt3PSExO2JyZWFrfX1pZighdylicmVhaztiLS19fX1mPWksaT11fWNvbnN0IGc9YisxLWQsQz1wKzEtaCx5PU5lKHUse2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLHJhd1dpZHRoOnQscmF0ZToxLGNhbGxiYWNrOnc9PntpZighcyYmZiYmdVt3XT09PWZbd10pcmV0dXJuIG99fSk7cmV0dXJue2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLGRpc3Bvc2FsOnMmJmEhPT1sLTE/MjoxLGltYWdlRGF0YTp5fX0pfWNvbnN0IE49Q2Uoe3NraXBUcmFuc3BhcmVudDohMX0pO3NlbGYub25tZXNzYWdlPW49Pntjb25zdHtpZDplLHR5cGU6byxkYXRhOml9PW4uZGF0YTtpZihvPT09InBhbGV0dGU6YWRkU2FtcGxlIiYmTilyZXR1cm4gTi5hZGRTYW1wbGUoaSksc2VsZi5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOm8sZGF0YTohMH0pO2lmKG89PT0icGFsZXR0ZTpnZW5lcmF0ZSImJk4pe04uZ2VuZXJhdGUoaSk7Y29uc3QgbD1aKHt9LE4uY29udGV4dCk7cmV0dXJuIE4ucmVzZXQoKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9KX1pZihvPT09ImZyYW1lczppbmRleCIpe2NvbnN0IGw9RmUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZXM6Y3JvcCIpe2NvbnN0IGw9V2UoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZTplbmNvZGUiKXtjb25zdCBsPXplKGkpO3JldHVybiBzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9LFtsLmJ1ZmZlcl0pfWlmKG89PT0iZnJhbWVzOmRlY29kZSIpe2NvbnN0IGw9WGUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9fX0pKCk7Cg==", ct = (e) => z(void 0, null, function* () {
2009
2009
  const {
2010
2010
  perFrameTime: t = 1e3 / 24,
2011
2011
  gif: l,
@@ -2022,8 +2022,8 @@ const gn = "data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZ
2022
2022
  delay: t
2023
2023
  });
2024
2024
  });
2025
- const n = yield Zn({
2026
- workerUrl: gn,
2025
+ const n = yield xn({
2026
+ workerUrl: Zn,
2027
2027
  width: i.width || 200,
2028
2028
  height: i.height || 200,
2029
2029
  maxColors: 255,
@@ -2044,7 +2044,7 @@ function wn(e) {
2044
2044
  case "day":
2045
2045
  s = 60 * 60 * 24 * s;
2046
2046
  }
2047
- const { day: c, hour: i, minute: a, second: n } = et(s), o = [
2047
+ const { day: c, hour: i, minute: a, second: n } = qe(s), o = [
2048
2048
  {
2049
2049
  unit: "days",
2050
2050
  value: c
@@ -2076,7 +2076,7 @@ function wn(e) {
2076
2076
  display: "flex",
2077
2077
  alignItems: "center",
2078
2078
  justifyContent: "center",
2079
- paddingBottom: 10
2079
+ paddingBottom: 15
2080
2080
  }
2081
2081
  },
2082
2082
  o.map((r, d) => /* @__PURE__ */ b.createElement(
@@ -2170,7 +2170,7 @@ function wn(e) {
2170
2170
  const te = {
2171
2171
  MARKETING_SHOPWINDOW: "marketing-shopwindow",
2172
2172
  MARKETING_COUNTDOWN: "marketing-countdown"
2173
- }, { Column: Ie, Image: Tn, Raw: Nn, Section: Ke, Spacer: Wn, ContentEditableBlock: Yn } = ye, ue = {
2173
+ }, { Image: gn, Raw: Tn, Spacer: Nn, ContentEditableBlock: Wn, HtmlDomNode: Ie } = ye, ue = {
2174
2174
  attributes: {
2175
2175
  color: "#ffffff",
2176
2176
  "padding-top": "20px",
@@ -2186,7 +2186,7 @@ const te = {
2186
2186
  remainingTime: 24,
2187
2187
  unit: "hour"
2188
2188
  }
2189
- }, ke = ze({
2189
+ }, Ke = Ee({
2190
2190
  get name() {
2191
2191
  return N("Countdown");
2192
2192
  },
@@ -2232,76 +2232,84 @@ const te = {
2232
2232
  };
2233
2233
  return Q(t, e);
2234
2234
  },
2235
- category: Ve.SECTION,
2235
+ category: ze.UNKNOWN_CONTENT,
2236
2236
  render(e) {
2237
2237
  const { node: t, mode: l } = e, { attributes: s, children: c } = t;
2238
2238
  if (l === "testing") {
2239
- const i = yt.renderToString(
2239
+ const i = Mt.renderToString(
2240
2240
  /* @__PURE__ */ b.createElement(wn, { attributes: t.attributes, data: t.data })
2241
2241
  );
2242
2242
  return /* @__PURE__ */ b.createElement(
2243
- Ke,
2243
+ Ie,
2244
2244
  {
2245
- "padding-bottom": s["padding-bottom"],
2246
- "padding-top": s["padding-top"],
2247
- "padding-left": s["padding-left"],
2248
- "padding-right": s["padding-right"],
2249
- "background-color": s["background-color"]
2245
+ tagName: "div",
2246
+ style: {
2247
+ backgroundColor: s["background-color"],
2248
+ paddingBottom: s["padding-bottom"],
2249
+ paddingTop: s["padding-top"],
2250
+ paddingLeft: s["padding-left"],
2251
+ paddingRight: s["padding-right"],
2252
+ fontSize: "0px",
2253
+ lineHeight: 1
2254
+ }
2250
2255
  },
2251
- /* @__PURE__ */ b.createElement(Ie, null, c.map((a, n) => pt.isTextElement(a) ? /* @__PURE__ */ b.createElement(Yn, { key: n, node: a }) : null), /* @__PURE__ */ b.createElement(Wn, { height: "20px" }), /* @__PURE__ */ b.createElement(Nn, null, i))
2256
+ /* @__PURE__ */ b.createElement(
2257
+ Ie,
2258
+ {
2259
+ tagName: "div",
2260
+ style: {
2261
+ width: "100%",
2262
+ textAlign: "center",
2263
+ display: "table"
2264
+ }
2265
+ },
2266
+ c.map((a, n) => ut.isTextElement(a) ? /* @__PURE__ */ b.createElement(Wn, { key: n, node: a }) : null),
2267
+ /* @__PURE__ */ b.createElement(Nn, { height: "20px" }),
2268
+ /* @__PURE__ */ b.createElement(Tn, null, i)
2269
+ )
2252
2270
  );
2253
2271
  }
2254
2272
  return /* @__PURE__ */ b.createElement(
2255
- Ke,
2256
- {
2257
- "padding-bottom": s["padding-bottom"],
2258
- "padding-top": s["padding-top"],
2259
- "padding-left": s["padding-left"],
2260
- "padding-right": s["padding-right"],
2261
- "background-color": s["background-color"]
2262
- },
2263
- /* @__PURE__ */ b.createElement(Ie, null, /* @__PURE__ */ b.createElement(
2264
- Tn,
2265
- E(K({
2266
- idx: e.idx
2267
- }, e.node.attributes), {
2268
- children: t.children
2269
- })
2270
- ))
2273
+ gn,
2274
+ E(K({
2275
+ idx: e.idx
2276
+ }, e.node.attributes), {
2277
+ children: t.children
2278
+ })
2271
2279
  );
2272
2280
  }
2273
- }), Ln = ({ nodePath: e }) => /* @__PURE__ */ b.createElement(Ue, null, /* @__PURE__ */ b.createElement(
2274
- Je,
2281
+ }), Yn = ({ nodePath: e }) => /* @__PURE__ */ b.createElement(Qe, null, /* @__PURE__ */ b.createElement(
2282
+ Ue,
2275
2283
  {
2276
2284
  desktop: /* @__PURE__ */ b.createElement(
2277
- fe,
2285
+ ke,
2278
2286
  {
2279
- mode: P.DESKTOP,
2287
+ mode: v.DESKTOP,
2280
2288
  nodePath: e
2281
2289
  }
2282
2290
  ),
2283
2291
  mobile: /* @__PURE__ */ b.createElement(
2284
- fe,
2292
+ ke,
2285
2293
  {
2286
- mode: P.MOBILE,
2294
+ mode: v.MOBILE,
2287
2295
  nodePath: e
2288
2296
  }
2289
2297
  )
2290
2298
  }
2291
2299
  ));
2292
- function fe({
2300
+ function ke({
2293
2301
  nodePath: e,
2294
2302
  mode: t
2295
2303
  }) {
2296
- const l = xt(), { onUpload: s } = $e(), { setFieldValue: c } = Fe(), { selectedNode: i } = _e(), { setLock: a } = qe(), [n, o] = ve(!1), r = b.useRef();
2297
- r.current || (r.current = ee(i)), Qe(() => {
2298
- Pe(r.current, i) ? a(!1) : a(!0);
2304
+ const l = ht(), { onUpload: s } = Be(), { setFieldValue: c } = Je(), { selectedNode: i } = $e(), { setLock: a } = _e(), [n, o] = ve(!1), r = b.useRef();
2305
+ r.current || (r.current = ee(i)), Pe(() => {
2306
+ Oe(r.current, i) ? a(!1) : a(!0);
2299
2307
  }, [i, a]);
2300
2308
  const d = () => z(this, null, function* () {
2301
2309
  if (i)
2302
2310
  try {
2303
2311
  o(!0);
2304
- const p = Zt.toDOMNode(l, i), u = [], y = i.data;
2312
+ const p = xt.toDOMNode(l, i), u = [], y = i.data;
2305
2313
  let M = y.remainingTime;
2306
2314
  switch (y.unit) {
2307
2315
  case "minute":
@@ -2315,9 +2323,9 @@ function fe({
2315
2323
  }
2316
2324
  const m = 60 * 2;
2317
2325
  for (let x = 0; x < m; x++) {
2318
- const { day: Z, hour: w, minute: L, second: G } = et(
2326
+ const { day: Z, hour: g, minute: L, second: G } = qe(
2319
2327
  M -= 1
2320
- ), k = yield Dt(p, {
2328
+ ), k = yield St(p, {
2321
2329
  wrapper(se) {
2322
2330
  const D = document.createElement("table");
2323
2331
  return D.style.width = "100%", D.border = "0", D.cellPadding = "0", D.cellSpacing = "0", D.role = "presentation", D.style.verticalAlign = "top", D.appendChild(se), D;
@@ -2330,7 +2338,7 @@ function fe({
2330
2338
  },
2331
2339
  {
2332
2340
  selector: ".hrs",
2333
- innerText: w
2341
+ innerText: g
2334
2342
  },
2335
2343
  {
2336
2344
  selector: ".mins",
@@ -2341,36 +2349,36 @@ function fe({
2341
2349
  innerText: G
2342
2350
  }
2343
2351
  ]
2344
- }), le = yield Yt(k);
2352
+ }), le = yield Wt(k);
2345
2353
  u.push(le);
2346
2354
  }
2347
- const h = yield it({
2355
+ const h = yield ct({
2348
2356
  images: u,
2349
2357
  perFrameTime: 1e3
2350
- }), g = yield s == null ? void 0 : s(new File([h], "countdown.gif"));
2358
+ }), w = yield s == null ? void 0 : s(new File([h], "countdown.gif"));
2351
2359
  c(
2352
2360
  e,
2353
- t === P.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2354
- g
2361
+ t === v.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2362
+ w
2355
2363
  );
2356
2364
  const W = ee(i);
2357
2365
  O(
2358
2366
  W,
2359
- t === P.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2360
- g
2367
+ t === v.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2368
+ w
2361
2369
  ), r.current = W;
2362
2370
  } catch (p) {
2363
- console.error(p), Be.error(String(p));
2371
+ console.error(p), Ae.error(String(p));
2364
2372
  } finally {
2365
2373
  o(!1);
2366
2374
  }
2367
2375
  });
2368
- return i ? /* @__PURE__ */ b.createElement(He, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ b.createElement(
2376
+ return i ? /* @__PURE__ */ b.createElement(Fe, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ b.createElement(
2369
2377
  C.Item,
2370
2378
  {
2371
2379
  name: "0",
2372
2380
  header: N("Image"),
2373
- extra: /* @__PURE__ */ b.createElement(Ae, { loading: n, type: "primary", onClick: d }, N("Save as gif"))
2381
+ extra: /* @__PURE__ */ b.createElement(Re, { loading: n, type: "primary", onClick: d }, N("Save as gif"))
2374
2382
  },
2375
2383
  /* @__PURE__ */ b.createElement(
2376
2384
  S,
@@ -2480,12 +2488,12 @@ function fe({
2480
2488
  )
2481
2489
  )) : null;
2482
2490
  }
2483
- class Pn extends je {
2491
+ class On extends Ve {
2484
2492
  generateElement() {
2485
- he.registerBlocks([ke]), O(Re, ke.type, Ln);
2493
+ he.registerBlocks([Ke]), O(He, Ke.type, Yn);
2486
2494
  }
2487
2495
  }
2488
- const { Image: Gn } = ye, Xe = {
2496
+ const { Image: Ln } = ye, Xe = {
2489
2497
  attributes: {
2490
2498
  align: "center",
2491
2499
  border: "0",
@@ -2513,7 +2521,7 @@ const { Image: Gn } = ye, Xe = {
2513
2521
  }
2514
2522
  ]
2515
2523
  }
2516
- }, Ce = ze({
2524
+ }, fe = Ee({
2517
2525
  get name() {
2518
2526
  return N("Shopwindow");
2519
2527
  },
@@ -2531,21 +2539,21 @@ const { Image: Gn } = ye, Xe = {
2531
2539
  };
2532
2540
  return Q(t, e);
2533
2541
  },
2534
- category: Ve.IMAGE,
2542
+ category: ze.IMAGE,
2535
2543
  render(e) {
2536
2544
  const { node: t } = e, o = t.attributes, {
2537
2545
  "border-enabled": l,
2538
2546
  "border-width": s,
2539
2547
  "border-style": c,
2540
2548
  "border-color": i
2541
- } = o, a = we(o, [
2549
+ } = o, a = ge(o, [
2542
2550
  "border-enabled",
2543
2551
  "border-width",
2544
2552
  "border-style",
2545
2553
  "border-color"
2546
2554
  ]), n = l ? `${s || "1px"} ${c || "solid"} ${i || "#AAAAAA"}` : "";
2547
2555
  return /* @__PURE__ */ b.createElement(
2548
- Gn,
2556
+ Ln,
2549
2557
  E(K({
2550
2558
  idx: e.idx
2551
2559
  }, a), {
@@ -2555,74 +2563,74 @@ const { Image: Gn } = ye, Xe = {
2555
2563
  })
2556
2564
  );
2557
2565
  }
2558
- }), Sn = {
2566
+ }), Gn = {
2559
2567
  formatter(e) {
2560
2568
  return !!e;
2561
2569
  },
2562
2570
  normalize(e) {
2563
2571
  return e ? "true" : void 0;
2564
2572
  }
2565
- }, Dn = ({ nodePath: e }) => /* @__PURE__ */ b.createElement(Ue, null, /* @__PURE__ */ b.createElement(
2566
- Je,
2573
+ }, Sn = ({ nodePath: e }) => /* @__PURE__ */ b.createElement(Qe, null, /* @__PURE__ */ b.createElement(
2574
+ Ue,
2567
2575
  {
2568
2576
  desktop: /* @__PURE__ */ b.createElement(
2569
- Ee,
2577
+ Ce,
2570
2578
  {
2571
- mode: P.DESKTOP,
2579
+ mode: v.DESKTOP,
2572
2580
  nodePath: e
2573
2581
  }
2574
2582
  ),
2575
2583
  mobile: /* @__PURE__ */ b.createElement(
2576
- Ee,
2584
+ Ce,
2577
2585
  {
2578
- mode: P.MOBILE,
2586
+ mode: v.MOBILE,
2579
2587
  nodePath: e
2580
2588
  }
2581
2589
  )
2582
2590
  }
2583
2591
  ));
2584
- function Ee({
2592
+ function Ce({
2585
2593
  nodePath: e,
2586
2594
  mode: t
2587
2595
  }) {
2588
- const { onUpload: l } = $e(), { setFieldValue: s } = Fe(), { selectedNode: c } = _e(), { setLock: i } = qe(), [a, n] = ve(!1), o = b.useRef();
2589
- o.current || (o.current = ee(c)), Qe(() => {
2596
+ const { onUpload: l } = Be(), { setFieldValue: s } = Je(), { selectedNode: c } = $e(), { setLock: i } = _e(), [a, n] = ve(!1), o = b.useRef();
2597
+ o.current || (o.current = ee(c)), Pe(() => {
2590
2598
  var d;
2591
- Pe((d = o.current) == null ? void 0 : d.data.list, c == null ? void 0 : c.data.list) ? i(!1) : i(!0);
2599
+ Oe((d = o.current) == null ? void 0 : d.data.list, c == null ? void 0 : c.data.list) ? i(!1) : i(!0);
2592
2600
  }, [c, i]);
2593
2601
  const r = () => z(this, null, function* () {
2594
2602
  if (c)
2595
2603
  try {
2596
2604
  n(!0);
2597
2605
  const d = yield Promise.all(
2598
- c.data.list.filter((M) => M.src).map((M) => ht(M.src))
2599
- ), p = yield it({
2606
+ c.data.list.filter((M) => M.src).map((M) => yt(M.src))
2607
+ ), p = yield ct({
2600
2608
  images: d,
2601
2609
  perFrameTime: 1e3
2602
2610
  }), u = yield l == null ? void 0 : l(new File([p], "shopwindow.gif"));
2603
2611
  s(
2604
2612
  e,
2605
- t === P.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2613
+ t === v.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2606
2614
  u
2607
2615
  );
2608
2616
  const y = ee(c);
2609
2617
  O(
2610
2618
  y,
2611
- t === P.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2619
+ t === v.DESKTOP ? "attributes.src" : "mobileAttributes.src",
2612
2620
  u
2613
2621
  ), o.current = y;
2614
2622
  } catch (d) {
2615
- console.error(d), Be.error(String(d));
2623
+ console.error(d), Ae.error(String(d));
2616
2624
  } finally {
2617
2625
  n(!1);
2618
2626
  }
2619
2627
  });
2620
- return c ? /* @__PURE__ */ b.createElement(He, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ b.createElement(
2628
+ return c ? /* @__PURE__ */ b.createElement(Fe, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ b.createElement(
2621
2629
  C.Item,
2622
2630
  {
2623
2631
  name: "3",
2624
2632
  header: N("Image"),
2625
- extra: /* @__PURE__ */ b.createElement(Ae, { loading: a, type: "primary", onClick: r }, N("Save as gif"))
2633
+ extra: /* @__PURE__ */ b.createElement(Re, { loading: a, type: "primary", onClick: r }, N("Save as gif"))
2626
2634
  },
2627
2635
  /* @__PURE__ */ b.createElement(
2628
2636
  Y.EditPanelTabsField,
@@ -2631,7 +2639,7 @@ function Ee({
2631
2639
  tabPosition: "top",
2632
2640
  name: "data.list",
2633
2641
  label: "",
2634
- renderItem: (d, p) => /* @__PURE__ */ b.createElement(In, { index: p, path: e }),
2642
+ renderItem: (d, p) => /* @__PURE__ */ b.createElement(Dn, { index: p, path: e }),
2635
2643
  renderHeader: (d, p) => d.content || N("Image") + " " + (p + 1)
2636
2644
  }
2637
2645
  )
@@ -2659,7 +2667,7 @@ function Ee({
2659
2667
  path: e,
2660
2668
  name: "fluid-on-mobile",
2661
2669
  label: N("Full width on mobile"),
2662
- formItem: Sn
2670
+ formItem: Gn
2663
2671
  }
2664
2672
  )), /* @__PURE__ */ b.createElement(C.Item, { name: "0", header: N("Dimension") }, /* @__PURE__ */ b.createElement(
2665
2673
  S,
@@ -2706,19 +2714,19 @@ function Ee({
2706
2714
  }
2707
2715
  ))) : null;
2708
2716
  }
2709
- function In({ index: e, path: t }) {
2717
+ function Dn({ index: e, path: t }) {
2710
2718
  return /* @__PURE__ */ b.createElement("div", { style: { paddingTop: 20 } }, /* @__PURE__ */ b.createElement(Y.ImageUrl, { path: t, name: `data.list.[${e}].src` }));
2711
2719
  }
2712
- class vn extends je {
2720
+ class vn extends Ve {
2713
2721
  generateElement() {
2714
- he.registerBlocks([Ce]), O(Re, Ce.type, Dn);
2722
+ he.registerBlocks([fe]), O(He, fe.type, Sn);
2715
2723
  }
2716
2724
  }
2717
2725
  export {
2718
- Pn as Countdown,
2719
- ke as MarketingCountdown,
2720
- Ce as MarketingShopwindow,
2726
+ On as Countdown,
2727
+ Ke as MarketingCountdown,
2728
+ fe as MarketingShopwindow,
2721
2729
  te as MarketingType,
2722
- On as Responsive,
2730
+ jn as Responsive,
2723
2731
  vn as Shopwindow
2724
2732
  };