@kulupu-linku/sona 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js CHANGED
@@ -1,160 +1,165 @@
1
1
  var y = Object.defineProperty;
2
- var w = (e, t, r) => t in e ? y(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
3
- var c = (e, t, r) => (w(e, typeof t != "symbol" ? t + "" : t, r), r);
4
- var v = (e, t, r = {}) => {
5
- let i = `${e}=${t}`;
6
- if (e.startsWith("__Secure-") && !r.secure)
2
+ var w = (e, r, t) => r in e ? y(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
+ var c = (e, r, t) => (w(e, typeof r != "symbol" ? r + "" : r, t), t);
4
+ var v = (e, r, t = {}) => {
5
+ let i = `${e}=${r}`;
6
+ if (e.startsWith("__Secure-") && !t.secure)
7
7
  throw new Error("__Secure- Cookie must have Secure attributes");
8
8
  if (e.startsWith("__Host-")) {
9
- if (!r.secure)
9
+ if (!t.secure)
10
10
  throw new Error("__Host- Cookie must have Secure attributes");
11
- if (r.path !== "/")
11
+ if (t.path !== "/")
12
12
  throw new Error('__Host- Cookie must have Path attributes with "/"');
13
- if (r.domain)
13
+ if (t.domain)
14
14
  throw new Error("__Host- Cookie must not have Domain attributes");
15
15
  }
16
- if (r && typeof r.maxAge == "number" && r.maxAge >= 0) {
17
- if (r.maxAge > 3456e4)
16
+ if (t && typeof t.maxAge == "number" && t.maxAge >= 0) {
17
+ if (t.maxAge > 3456e4)
18
18
  throw new Error(
19
19
  "Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration."
20
20
  );
21
- i += `; Max-Age=${Math.floor(r.maxAge)}`;
21
+ i += `; Max-Age=${Math.floor(t.maxAge)}`;
22
22
  }
23
- if (r.domain && r.prefix !== "host" && (i += `; Domain=${r.domain}`), r.path && (i += `; Path=${r.path}`), r.expires) {
24
- if (r.expires.getTime() - Date.now() > 3456e7)
23
+ if (t.domain && t.prefix !== "host" && (i += `; Domain=${t.domain}`), t.path && (i += `; Path=${t.path}`), t.expires) {
24
+ if (t.expires.getTime() - Date.now() > 3456e7)
25
25
  throw new Error(
26
26
  "Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future."
27
27
  );
28
- i += `; Expires=${r.expires.toUTCString()}`;
28
+ i += `; Expires=${t.expires.toUTCString()}`;
29
29
  }
30
- if (r.httpOnly && (i += "; HttpOnly"), r.secure && (i += "; Secure"), r.sameSite && (i += `; SameSite=${r.sameSite}`), r.partitioned) {
31
- if (!r.secure)
30
+ if (t.httpOnly && (i += "; HttpOnly"), t.secure && (i += "; Secure"), t.sameSite && (i += `; SameSite=${t.sameSite}`), t.partitioned) {
31
+ if (!t.secure)
32
32
  throw new Error("Partitioned Cookie must have Secure attributes");
33
33
  i += "; Partitioned";
34
34
  }
35
35
  return i;
36
- }, p = (e, t, r) => (t = encodeURIComponent(t), v(e, t, r)), x = (e, t) => (e = e.replace(/\/+$/, ""), e = e + "/", t = t.replace(/^\/+/, ""), e + t), m = (e, t) => {
37
- for (const [r, i] of Object.entries(t)) {
38
- const a = new RegExp("/:" + r + "(?:{[^/]+})?");
39
- e = e.replace(a, `/${i}`);
36
+ }, x = (e, r, t) => (r = encodeURIComponent(r), v(e, r, t)), p = (e, r) => (e = e.replace(/\/+$/, ""), e = e + "/", r = r.replace(/^\/+/, ""), e + r), m = (e, r) => {
37
+ for (const [t, i] of Object.entries(r)) {
38
+ const n = new RegExp("/:" + t + "(?:{[^/]+})?");
39
+ e = e.replace(n, `/${i}`);
40
40
  }
41
41
  return e;
42
- }, P = (e, t) => {
43
- switch (t) {
42
+ }, P = (e, r) => {
43
+ switch (r) {
44
44
  case "ws":
45
45
  return e.replace(/^http/, "ws");
46
46
  case "http":
47
47
  return e.replace(/^ws/, "http");
48
48
  }
49
- }, k = (e) => e.replace(/\/index$/, "");
50
- function u(e) {
49
+ }, k = (e) => /^https?:\/\/[^\/]+?\/index$/.test(e) ? e.replace(/\/index$/, "/") : e.replace(/\/index$/, "");
50
+ function f(e) {
51
51
  return typeof e == "object" && e !== null && !Array.isArray(e);
52
52
  }
53
- function d(e, t) {
54
- if (!u(e) && !u(t))
55
- return t;
56
- const r = { ...e };
57
- for (const i in t) {
58
- const a = t[i];
59
- u(r[i]) && u(a) ? r[i] = d(r[i], a) : r[i] = a;
53
+ function l(e, r) {
54
+ if (!f(e) && !f(r))
55
+ return r;
56
+ const t = { ...e };
57
+ for (const i in r) {
58
+ const n = r[i];
59
+ f(t[i]) && f(n) ? t[i] = l(t[i], n) : t[i] = n;
60
60
  }
61
- return r;
61
+ return t;
62
62
  }
63
- var l = (e, t) => new Proxy(() => {
63
+ var d = (e, r) => new Proxy(() => {
64
64
  }, {
65
- get(i, a) {
66
- if (!(typeof a != "string" || a === "then"))
67
- return l(e, [...t, a]);
65
+ get(i, n) {
66
+ if (!(typeof n != "string" || n === "then"))
67
+ return d(e, [...r, n]);
68
68
  },
69
- apply(i, a, s) {
69
+ apply(i, n, a) {
70
70
  return e({
71
- path: t,
72
- args: s
71
+ path: r,
72
+ args: a
73
73
  });
74
74
  }
75
- }), _ = class {
76
- constructor(e, t) {
75
+ }), C = class {
76
+ constructor(e, r) {
77
77
  c(this, "url");
78
78
  c(this, "method");
79
79
  c(this, "queryParams");
80
80
  c(this, "pathParams", {});
81
81
  c(this, "rBody");
82
82
  c(this, "cType");
83
- c(this, "fetch", async (e, t) => {
83
+ c(this, "fetch", async (e, r) => {
84
84
  if (e) {
85
85
  if (e.query) {
86
- for (const [o, n] of Object.entries(e.query))
87
- if (n !== void 0)
88
- if (this.queryParams || (this.queryParams = new URLSearchParams()), Array.isArray(n))
89
- for (const f of n)
90
- this.queryParams.append(o, f);
86
+ for (const [s, h] of Object.entries(e.query))
87
+ if (h !== void 0)
88
+ if (this.queryParams || (this.queryParams = new URLSearchParams()), Array.isArray(h))
89
+ for (const o of h)
90
+ this.queryParams.append(s, o);
91
91
  else
92
- this.queryParams.set(o, n);
92
+ this.queryParams.set(s, h);
93
93
  }
94
94
  if (e.form) {
95
- const o = new FormData();
96
- for (const [n, f] of Object.entries(e.form))
97
- o.append(n, f);
98
- this.rBody = o;
95
+ const s = new FormData();
96
+ for (const [h, o] of Object.entries(e.form))
97
+ s.append(h, o);
98
+ this.rBody = s;
99
99
  }
100
100
  e.json && (this.rBody = JSON.stringify(e.json), this.cType = "application/json"), e.param && (this.pathParams = e.param);
101
101
  }
102
- let r = this.method.toUpperCase();
102
+ let t = this.method.toUpperCase();
103
103
  const i = {
104
104
  ...(e == null ? void 0 : e.header) ?? {},
105
- ...typeof (t == null ? void 0 : t.headers) == "function" ? await t.headers() : t != null && t.headers ? t.headers : {}
105
+ ...typeof (r == null ? void 0 : r.headers) == "function" ? await r.headers() : r != null && r.headers ? r.headers : {}
106
106
  };
107
107
  if (e != null && e.cookie) {
108
- const o = [];
109
- for (const [n, f] of Object.entries(e.cookie))
110
- o.push(p(n, f, { path: "/" }));
111
- i.Cookie = o.join(",");
108
+ const s = [];
109
+ for (const [h, o] of Object.entries(e.cookie))
110
+ s.push(x(h, o, { path: "/" }));
111
+ i.Cookie = s.join(",");
112
112
  }
113
113
  this.cType && (i["Content-Type"] = this.cType);
114
- const a = new Headers(i ?? void 0);
115
- let s = this.url;
116
- s = k(s), s = m(s, this.pathParams), this.queryParams && (s = s + "?" + this.queryParams.toString()), r = this.method.toUpperCase();
117
- const h = !(r === "GET" || r === "HEAD");
118
- return ((t == null ? void 0 : t.fetch) || fetch)(s, {
119
- body: h ? this.rBody : void 0,
120
- method: r,
121
- headers: a
114
+ const n = new Headers(i ?? void 0);
115
+ let a = this.url;
116
+ a = k(a), a = m(a, this.pathParams), this.queryParams && (a = a + "?" + this.queryParams.toString()), t = this.method.toUpperCase();
117
+ const u = !(t === "GET" || t === "HEAD");
118
+ return ((r == null ? void 0 : r.fetch) || fetch)(a, {
119
+ body: u ? this.rBody : void 0,
120
+ method: t,
121
+ headers: n,
122
+ ...r == null ? void 0 : r.init
122
123
  });
123
124
  });
124
- this.url = e, this.method = t;
125
+ this.url = e, this.method = r;
125
126
  }
126
- }, C = (e, t) => l((r) => {
127
- const i = [...r.path];
127
+ }, _ = (e, r) => d(function t(i) {
128
+ const n = [...i.path];
129
+ if (n[n.length - 1] === "toString")
130
+ return n[n.length - 2] === "name" ? n[n.length - 3] || "" : t.toString();
131
+ if (n[n.length - 1] === "valueOf")
132
+ return n[n.length - 2] === "name" ? n[n.length - 3] || "" : t;
128
133
  let a = "";
129
- if (/^\$/.test(i[i.length - 1])) {
130
- const n = i.pop();
131
- n && (a = n.replace(/^\$/, ""));
134
+ if (/^\$/.test(n[n.length - 1])) {
135
+ const o = n.pop();
136
+ o && (a = o.replace(/^\$/, ""));
132
137
  }
133
- const s = i.join("/"), h = x(e, s);
138
+ const u = n.join("/"), s = p(e, u);
134
139
  if (a === "url")
135
- return r.args[0] && r.args[0].param ? new URL(m(h, r.args[0].param)) : new URL(h);
140
+ return i.args[0] && i.args[0].param ? new URL(m(s, i.args[0].param)) : new URL(s);
136
141
  if (a === "ws") {
137
- const n = P(
138
- r.args[0] && r.args[0].param ? m(h, r.args[0].param) : h,
142
+ const o = P(
143
+ i.args[0] && i.args[0].param ? m(s, i.args[0].param) : s,
139
144
  "ws"
140
145
  );
141
- return new WebSocket(n);
146
+ return new WebSocket(o);
142
147
  }
143
- const o = new _(h, a);
148
+ const h = new C(s, a);
144
149
  if (a) {
145
- t ?? (t = {});
146
- const n = d(t, { ...r.args[1] ?? {} });
147
- return o.fetch(r.args[0], n);
150
+ r ?? (r = {});
151
+ const o = l(r, { ...i.args[1] ?? {} });
152
+ return h.fetch(i.args[0], o);
148
153
  }
149
- return o;
154
+ return h;
150
155
  }, []);
151
- const b = (e) => {
152
- const { baseUrl: t = "https://api.linku.la", fetch: r = global.fetch } = e;
153
- return C(t, {
154
- fetch: r
156
+ const g = (e) => {
157
+ const { baseUrl: r = "https://api.linku.la", fetch: t = globalThis.fetch } = e ?? {};
158
+ return _(r, {
159
+ fetch: t
155
160
  });
156
161
  };
157
162
  export {
158
- b as client
163
+ g as client
159
164
  };
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjIuNC9ub2RlX21vZHVsZXMvaG9uby9kaXN0L3V0aWxzL2Nvb2tpZS5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9ob25vQDQuMi40L25vZGVfbW9kdWxlcy9ob25vL2Rpc3QvY2xpZW50L3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2hvbm9ANC4yLjQvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIl9fU2VjdXJlLVwiKSAmJiAhb3B0LnNlY3VyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIl9fU2VjdXJlLSBDb29raWUgbXVzdCBoYXZlIFNlY3VyZSBhdHRyaWJ1dGVzXCIpO1xuICB9XG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJfX0hvc3QtXCIpKSB7XG4gICAgaWYgKCFvcHQuc2VjdXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGlmIChvcHQucGF0aCAhPT0gXCIvXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignX19Ib3N0LSBDb29raWUgbXVzdCBoYXZlIFBhdGggYXR0cmlidXRlcyB3aXRoIFwiL1wiJyk7XG4gICAgfVxuICAgIGlmIChvcHQuZG9tYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IG5vdCBoYXZlIERvbWFpbiBhdHRyaWJ1dGVzXCIpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0ICYmIHR5cGVvZiBvcHQubWF4QWdlID09PSBcIm51bWJlclwiICYmIG9wdC5tYXhBZ2UgPj0gMCkge1xuICAgIGlmIChvcHQubWF4QWdlID4gMzQ1NmU0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ29va2llcyBNYXgtQWdlIFNIT1VMRCBOT1QgYmUgZ3JlYXRlciB0aGFuIDQwMCBkYXlzICgzNDU2MDAwMCBzZWNvbmRzKSBpbiBkdXJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IE1heC1BZ2U9JHtNYXRoLmZsb29yKG9wdC5tYXhBZ2UpfWA7XG4gIH1cbiAgaWYgKG9wdC5kb21haW4gJiYgb3B0LnByZWZpeCAhPT0gXCJob3N0XCIpIHtcbiAgICBjb29raWUgKz0gYDsgRG9tYWluPSR7b3B0LmRvbWFpbn1gO1xuICB9XG4gIGlmIChvcHQucGF0aCkge1xuICAgIGNvb2tpZSArPSBgOyBQYXRoPSR7b3B0LnBhdGh9YDtcbiAgfVxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAob3B0LmV4cGlyZXMuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA+IDM0NTZlNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNvb2tpZXMgRXhwaXJlcyBTSE9VTEQgTk9UIGJlIGdyZWF0ZXIgdGhhbiA0MDAgZGF5cyAoMzQ1NjAwMDAgc2Vjb25kcykgaW4gdGhlIGZ1dHVyZS5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IEV4cGlyZXM9JHtvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpfWA7XG4gIH1cbiAgaWYgKG9wdC5odHRwT25seSkge1xuICAgIGNvb2tpZSArPSBcIjsgSHR0cE9ubHlcIjtcbiAgfVxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIGNvb2tpZSArPSBcIjsgU2VjdXJlXCI7XG4gIH1cbiAgaWYgKG9wdC5zYW1lU2l0ZSkge1xuICAgIGNvb2tpZSArPSBgOyBTYW1lU2l0ZT0ke29wdC5zYW1lU2l0ZX1gO1xuICB9XG4gIGlmIChvcHQucGFydGl0aW9uZWQpIHtcbiAgICBpZiAoIW9wdC5zZWN1cmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnRpdGlvbmVkIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGNvb2tpZSArPSBcIjsgUGFydGl0aW9uZWRcIjtcbiAgfVxuICByZXR1cm4gY29va2llO1xufTtcbnZhciBzZXJpYWxpemUgPSAobmFtZSwgdmFsdWUsIG9wdCkgPT4ge1xuICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIHJldHVybiBfc2VyaWFsaXplKG5hbWUsIHZhbHVlLCBvcHQpO1xufTtcbnZhciBzZXJpYWxpemVTaWduZWQgPSBhc3luYyAobmFtZSwgdmFsdWUsIHNlY3JldCwgb3B0ID0ge30pID0+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgbWFrZVNpZ25hdHVyZSh2YWx1ZSwgc2VjcmV0KTtcbiAgdmFsdWUgPSBgJHt2YWx1ZX0uJHtzaWduYXR1cmV9YDtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG5leHBvcnQge1xuICBwYXJzZSxcbiAgcGFyc2VTaWduZWQsXG4gIHNlcmlhbGl6ZSxcbiAgc2VyaWFsaXplU2lnbmVkXG59O1xuIiwiLy8gc3JjL2NsaWVudC91dGlscy50c1xudmFyIG1lcmdlUGF0aCA9IChiYXNlLCBwYXRoKSA9PiB7XG4gIGJhc2UgPSBiYXNlLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gIGJhc2UgPSBiYXNlICsgXCIvXCI7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gIHJldHVybiBiYXNlICsgcGF0aDtcbn07XG52YXIgcmVwbGFjZVVybFBhcmFtID0gKHVybFN0cmluZywgcGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKFwiLzpcIiArIGsgKyBcIig/OntbXi9dK30pP1wiKTtcbiAgICB1cmxTdHJpbmcgPSB1cmxTdHJpbmcucmVwbGFjZShyZWcsIGAvJHt2fWApO1xuICB9XG4gIHJldHVybiB1cmxTdHJpbmc7XG59O1xudmFyIHJlcGxhY2VVcmxQcm90b2NvbCA9ICh1cmxTdHJpbmcsIHByb3RvY29sKSA9PiB7XG4gIHN3aXRjaCAocHJvdG9jb2wpIHtcbiAgICBjYXNlIFwid3NcIjpcbiAgICAgIHJldHVybiB1cmxTdHJpbmcucmVwbGFjZSgvXmh0dHAvLCBcIndzXCIpO1xuICAgIGNhc2UgXCJodHRwXCI6XG4gICAgICByZXR1cm4gdXJsU3RyaW5nLnJlcGxhY2UoL153cy8sIFwiaHR0cFwiKTtcbiAgfVxufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCJcIik7XG59O1xuZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgaXRlbSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgJiYgIWlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4udGFyZ2V0IH07XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKGlzT2JqZWN0KG1lcmdlZFtrZXldKSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVlcE1lcmdlKG1lcmdlZFtrZXldLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQge1xuICBkZWVwTWVyZ2UsXG4gIG1lcmdlUGF0aCxcbiAgcmVtb3ZlSW5kZXhTdHJpbmcsXG4gIHJlcGxhY2VVcmxQYXJhbSxcbiAgcmVwbGFjZVVybFByb3RvY29sXG59O1xuIiwiLy8gc3JjL2NsaWVudC9jbGllbnQudHNcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCIuLi91dGlscy9jb29raWUuanNcIjtcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgbWVyZ2VQYXRoLFxuICByZW1vdmVJbmRleFN0cmluZyxcbiAgcmVwbGFjZVVybFBhcmFtLFxuICByZXBsYWNlVXJsUHJvdG9jb2xcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbnZhciBjcmVhdGVQcm94eSA9IChjYWxsYmFjaywgcGF0aCkgPT4ge1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSgoKSA9PiB7XG4gIH0sIHtcbiAgICBnZXQoX29iaiwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIiB8fCBrZXkgPT09IFwidGhlblwiKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoY2FsbGJhY2ssIFsuLi5wYXRoLCBrZXldKTtcbiAgICB9LFxuICAgIGFwcGx5KF8xLCBfMiwgYXJncykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgYXJnc1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3h5O1xufTtcbnZhciBDbGllbnRSZXF1ZXN0SW1wbCA9IGNsYXNzIHtcbiAgdXJsO1xuICBtZXRob2Q7XG4gIHF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICBwYXRoUGFyYW1zID0ge307XG4gIHJCb2R5O1xuICBjVHlwZSA9IHZvaWQgMDtcbiAgY29uc3RydWN0b3IodXJsLCBtZXRob2QpIHtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxuICBmZXRjaCA9IGFzeW5jIChhcmdzLCBvcHQpID0+IHtcbiAgICBpZiAoYXJncykge1xuICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5xdWVyeSkpIHtcbiAgICAgICAgICBpZiAodiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyB8fD0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYyIG9mIHYpIHtcbiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLmZvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgZm9ybS5hcHBlbmQoaywgdik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5qc29uKSB7XG4gICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICB0aGlzLmNUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICB0aGlzLnBhdGhQYXJhbXMgPSBhcmdzLnBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBoZWFkZXJWYWx1ZXMgPSB7XG4gICAgICAuLi5hcmdzPy5oZWFkZXIgPz8ge30sXG4gICAgICAuLi50eXBlb2Ygb3B0Py5oZWFkZXJzID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBvcHQuaGVhZGVycygpIDogb3B0Py5oZWFkZXJzID8gb3B0LmhlYWRlcnMgOiB7fVxuICAgIH07XG4gICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgY29uc3QgY29va2llcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5jb29raWUpKSB7XG4gICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICB9XG4gICAgICBoZWFkZXJWYWx1ZXNbXCJDb29raWVcIl0gPSBjb29raWVzLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jVHlwZSkge1xuICAgICAgaGVhZGVyVmFsdWVzW1wiQ29udGVudC1UeXBlXCJdID0gdGhpcy5jVHlwZTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlclZhbHVlcyA/PyB2b2lkIDApO1xuICAgIGxldCB1cmwgPSB0aGlzLnVybDtcbiAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgIHVybCA9IHJlcGxhY2VVcmxQYXJhbSh1cmwsIHRoaXMucGF0aFBhcmFtcyk7XG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICByZXR1cm4gKG9wdD8uZmV0Y2ggfHwgZmV0Y2gpKHVybCwge1xuICAgICAgYm9keTogc2V0Qm9keSA/IHRoaXMuckJvZHkgOiB2b2lkIDAsXG4gICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgIGhlYWRlcnNcbiAgICB9KTtcbiAgfTtcbn07XG52YXIgaGMgPSAoYmFzZVVybCwgb3B0aW9ucykgPT4gY3JlYXRlUHJveHkoKG9wdHMpID0+IHtcbiAgY29uc3QgcGFydHMgPSBbLi4ub3B0cy5wYXRoXTtcbiAgbGV0IG1ldGhvZCA9IFwiXCI7XG4gIGlmICgvXlxcJC8udGVzdChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSkpIHtcbiAgICBjb25zdCBsYXN0ID0gcGFydHMucG9wKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIG1ldGhvZCA9IGxhc3QucmVwbGFjZSgvXlxcJC8sIFwiXCIpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXRoID0gcGFydHMuam9pbihcIi9cIik7XG4gIGNvbnN0IHVybCA9IG1lcmdlUGF0aChiYXNlVXJsLCBwYXRoKTtcbiAgaWYgKG1ldGhvZCA9PT0gXCJ1cmxcIikge1xuICAgIGlmIChvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtKSB7XG4gICAgICByZXR1cm4gbmV3IFVSTChyZXBsYWNlVXJsUGFyYW0odXJsLCBvcHRzLmFyZ3NbMF0ucGFyYW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfVxuICBpZiAobWV0aG9kID09PSBcIndzXCIpIHtcbiAgICBjb25zdCB0YXJnZXRVcmwgPSByZXBsYWNlVXJsUHJvdG9jb2woXG4gICAgICBvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtID8gcmVwbGFjZVVybFBhcmFtKHVybCwgb3B0cy5hcmdzWzBdLnBhcmFtKSA6IHVybCxcbiAgICAgIFwid3NcIlxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBXZWJTb2NrZXQodGFyZ2V0VXJsKTtcbiAgfVxuICBjb25zdCByZXEgPSBuZXcgQ2xpZW50UmVxdWVzdEltcGwodXJsLCBtZXRob2QpO1xuICBpZiAobWV0aG9kKSB7XG4gICAgb3B0aW9ucyA/Pz0ge307XG4gICAgY29uc3QgYXJncyA9IGRlZXBNZXJnZShvcHRpb25zLCB7IC4uLm9wdHMuYXJnc1sxXSA/PyB7fSB9KTtcbiAgICByZXR1cm4gcmVxLmZldGNoKG9wdHMuYXJnc1swXSwgYXJncyk7XG4gIH1cbiAgcmV0dXJuIHJlcTtcbn0sIFtdKTtcbmV4cG9ydCB7XG4gIGhjXG59O1xuIiwiaW1wb3J0IHsgaGMgfSBmcm9tIFwiaG9uby9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQXBwVHlwZSB9IGZyb20gXCIkc2VydmVyXCI7XG5cbmV4cG9ydCBjb25zdCBjbGllbnQgPSAoYXJncz86IHsgYmFzZVVybD86IHN0cmluZzsgZmV0Y2g/OiAodHlwZW9mIGdsb2JhbClbXCJmZXRjaFwiXSB9KSA9PiB7XG5cdGNvbnN0IHsgYmFzZVVybCA9IFwiaHR0cHM6Ly9hcGkubGlua3UubGFcIiwgZmV0Y2ggPSBnbG9iYWwuZmV0Y2ggfSA9IGFyZ3M7XG5cdHJldHVybiBoYzxBcHBUeXBlPihiYXNlVXJsLCB7XG5cdFx0ZmV0Y2gsXG5cdH0pO1xufTtcblxuZXhwb3J0IHR5cGUgQXBpVHlwZSA9IEFwcFR5cGU7XG4iXSwibmFtZXMiOlsiX3NlcmlhbGl6ZSIsIm5hbWUiLCJ2YWx1ZSIsIm9wdCIsImNvb2tpZSIsInNlcmlhbGl6ZSIsIm1lcmdlUGF0aCIsImJhc2UiLCJwYXRoIiwicmVwbGFjZVVybFBhcmFtIiwidXJsU3RyaW5nIiwicGFyYW1zIiwiayIsInYiLCJyZWciLCJyZXBsYWNlVXJsUHJvdG9jb2wiLCJwcm90b2NvbCIsInJlbW92ZUluZGV4U3RyaW5nIiwidXJsU3RpbmciLCJpc09iamVjdCIsIml0ZW0iLCJkZWVwTWVyZ2UiLCJ0YXJnZXQiLCJzb3VyY2UiLCJtZXJnZWQiLCJrZXkiLCJjcmVhdGVQcm94eSIsImNhbGxiYWNrIiwiX29iaiIsIl8xIiwiXzIiLCJhcmdzIiwiQ2xpZW50UmVxdWVzdEltcGwiLCJ1cmwiLCJtZXRob2QiLCJfX3B1YmxpY0ZpZWxkIiwidjIiLCJmb3JtIiwibWV0aG9kVXBwZXJDYXNlIiwiaGVhZGVyVmFsdWVzIiwiY29va2llcyIsImhlYWRlcnMiLCJzZXRCb2R5IiwiaGMiLCJiYXNlVXJsIiwib3B0aW9ucyIsIm9wdHMiLCJwYXJ0cyIsImxhc3QiLCJ0YXJnZXRVcmwiLCJyZXEiLCJjbGllbnQiLCJmZXRjaCJdLCJtYXBwaW5ncyI6Ijs7O0FBa0VBLElBQUlBLElBQWEsQ0FBQ0MsR0FBTUMsR0FBT0MsSUFBTSxDQUFBLE1BQU87QUFDMUMsTUFBSUMsSUFBUyxHQUFHSCxDQUFJLElBQUlDLENBQUs7QUFDN0IsTUFBSUQsRUFBSyxXQUFXLFdBQVcsS0FBSyxDQUFDRSxFQUFJO0FBQ3ZDLFVBQU0sSUFBSSxNQUFNLDhDQUE4QztBQUVoRSxNQUFJRixFQUFLLFdBQVcsU0FBUyxHQUFHO0FBQzlCLFFBQUksQ0FBQ0UsRUFBSTtBQUNQLFlBQU0sSUFBSSxNQUFNLDRDQUE0QztBQUU5RCxRQUFJQSxFQUFJLFNBQVM7QUFDZixZQUFNLElBQUksTUFBTSxtREFBbUQ7QUFFckUsUUFBSUEsRUFBSTtBQUNOLFlBQU0sSUFBSSxNQUFNLGdEQUFnRDtBQUFBLEVBRW5FO0FBQ0QsTUFBSUEsS0FBTyxPQUFPQSxFQUFJLFVBQVcsWUFBWUEsRUFBSSxVQUFVLEdBQUc7QUFDNUQsUUFBSUEsRUFBSSxTQUFTO0FBQ2YsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLE1BQ1I7QUFFSSxJQUFBQyxLQUFVLGFBQWEsS0FBSyxNQUFNRCxFQUFJLE1B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
165
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjMuMC9ub2RlX21vZHVsZXMvaG9uby9kaXN0L3V0aWxzL2Nvb2tpZS5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9ob25vQDQuMy4wL25vZGVfbW9kdWxlcy9ob25vL2Rpc3QvY2xpZW50L3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2hvbm9ANC4zLjAvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIl9fU2VjdXJlLVwiKSAmJiAhb3B0LnNlY3VyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIl9fU2VjdXJlLSBDb29raWUgbXVzdCBoYXZlIFNlY3VyZSBhdHRyaWJ1dGVzXCIpO1xuICB9XG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJfX0hvc3QtXCIpKSB7XG4gICAgaWYgKCFvcHQuc2VjdXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGlmIChvcHQucGF0aCAhPT0gXCIvXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignX19Ib3N0LSBDb29raWUgbXVzdCBoYXZlIFBhdGggYXR0cmlidXRlcyB3aXRoIFwiL1wiJyk7XG4gICAgfVxuICAgIGlmIChvcHQuZG9tYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IG5vdCBoYXZlIERvbWFpbiBhdHRyaWJ1dGVzXCIpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0ICYmIHR5cGVvZiBvcHQubWF4QWdlID09PSBcIm51bWJlclwiICYmIG9wdC5tYXhBZ2UgPj0gMCkge1xuICAgIGlmIChvcHQubWF4QWdlID4gMzQ1NmU0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ29va2llcyBNYXgtQWdlIFNIT1VMRCBOT1QgYmUgZ3JlYXRlciB0aGFuIDQwMCBkYXlzICgzNDU2MDAwMCBzZWNvbmRzKSBpbiBkdXJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IE1heC1BZ2U9JHtNYXRoLmZsb29yKG9wdC5tYXhBZ2UpfWA7XG4gIH1cbiAgaWYgKG9wdC5kb21haW4gJiYgb3B0LnByZWZpeCAhPT0gXCJob3N0XCIpIHtcbiAgICBjb29raWUgKz0gYDsgRG9tYWluPSR7b3B0LmRvbWFpbn1gO1xuICB9XG4gIGlmIChvcHQucGF0aCkge1xuICAgIGNvb2tpZSArPSBgOyBQYXRoPSR7b3B0LnBhdGh9YDtcbiAgfVxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAob3B0LmV4cGlyZXMuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA+IDM0NTZlNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNvb2tpZXMgRXhwaXJlcyBTSE9VTEQgTk9UIGJlIGdyZWF0ZXIgdGhhbiA0MDAgZGF5cyAoMzQ1NjAwMDAgc2Vjb25kcykgaW4gdGhlIGZ1dHVyZS5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IEV4cGlyZXM9JHtvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpfWA7XG4gIH1cbiAgaWYgKG9wdC5odHRwT25seSkge1xuICAgIGNvb2tpZSArPSBcIjsgSHR0cE9ubHlcIjtcbiAgfVxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIGNvb2tpZSArPSBcIjsgU2VjdXJlXCI7XG4gIH1cbiAgaWYgKG9wdC5zYW1lU2l0ZSkge1xuICAgIGNvb2tpZSArPSBgOyBTYW1lU2l0ZT0ke29wdC5zYW1lU2l0ZX1gO1xuICB9XG4gIGlmIChvcHQucGFydGl0aW9uZWQpIHtcbiAgICBpZiAoIW9wdC5zZWN1cmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnRpdGlvbmVkIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGNvb2tpZSArPSBcIjsgUGFydGl0aW9uZWRcIjtcbiAgfVxuICByZXR1cm4gY29va2llO1xufTtcbnZhciBzZXJpYWxpemUgPSAobmFtZSwgdmFsdWUsIG9wdCkgPT4ge1xuICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIHJldHVybiBfc2VyaWFsaXplKG5hbWUsIHZhbHVlLCBvcHQpO1xufTtcbnZhciBzZXJpYWxpemVTaWduZWQgPSBhc3luYyAobmFtZSwgdmFsdWUsIHNlY3JldCwgb3B0ID0ge30pID0+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgbWFrZVNpZ25hdHVyZSh2YWx1ZSwgc2VjcmV0KTtcbiAgdmFsdWUgPSBgJHt2YWx1ZX0uJHtzaWduYXR1cmV9YDtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG5leHBvcnQge1xuICBwYXJzZSxcbiAgcGFyc2VTaWduZWQsXG4gIHNlcmlhbGl6ZSxcbiAgc2VyaWFsaXplU2lnbmVkXG59O1xuIiwiLy8gc3JjL2NsaWVudC91dGlscy50c1xudmFyIG1lcmdlUGF0aCA9IChiYXNlLCBwYXRoKSA9PiB7XG4gIGJhc2UgPSBiYXNlLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gIGJhc2UgPSBiYXNlICsgXCIvXCI7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gIHJldHVybiBiYXNlICsgcGF0aDtcbn07XG52YXIgcmVwbGFjZVVybFBhcmFtID0gKHVybFN0cmluZywgcGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKFwiLzpcIiArIGsgKyBcIig/OntbXi9dK30pP1wiKTtcbiAgICB1cmxTdHJpbmcgPSB1cmxTdHJpbmcucmVwbGFjZShyZWcsIGAvJHt2fWApO1xuICB9XG4gIHJldHVybiB1cmxTdHJpbmc7XG59O1xudmFyIHJlcGxhY2VVcmxQcm90b2NvbCA9ICh1cmxTdHJpbmcsIHByb3RvY29sKSA9PiB7XG4gIHN3aXRjaCAocHJvdG9jb2wpIHtcbiAgICBjYXNlIFwid3NcIjpcbiAgICAgIHJldHVybiB1cmxTdHJpbmcucmVwbGFjZSgvXmh0dHAvLCBcIndzXCIpO1xuICAgIGNhc2UgXCJodHRwXCI6XG4gICAgICByZXR1cm4gdXJsU3RyaW5nLnJlcGxhY2UoL153cy8sIFwiaHR0cFwiKTtcbiAgfVxufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICBpZiAoL15odHRwcz86XFwvXFwvW15cXC9dKz9cXC9pbmRleCQvLnRlc3QodXJsU3RpbmcpKSB7XG4gICAgcmV0dXJuIHVybFN0aW5nLnJlcGxhY2UoL1xcL2luZGV4JC8sIFwiL1wiKTtcbiAgfVxuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCJcIik7XG59O1xuZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgaXRlbSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgJiYgIWlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4udGFyZ2V0IH07XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKGlzT2JqZWN0KG1lcmdlZFtrZXldKSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVlcE1lcmdlKG1lcmdlZFtrZXldLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQge1xuICBkZWVwTWVyZ2UsXG4gIG1lcmdlUGF0aCxcbiAgcmVtb3ZlSW5kZXhTdHJpbmcsXG4gIHJlcGxhY2VVcmxQYXJhbSxcbiAgcmVwbGFjZVVybFByb3RvY29sXG59O1xuIiwiLy8gc3JjL2NsaWVudC9jbGllbnQudHNcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCIuLi91dGlscy9jb29raWUuanNcIjtcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgbWVyZ2VQYXRoLFxuICByZW1vdmVJbmRleFN0cmluZyxcbiAgcmVwbGFjZVVybFBhcmFtLFxuICByZXBsYWNlVXJsUHJvdG9jb2xcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbnZhciBjcmVhdGVQcm94eSA9IChjYWxsYmFjaywgcGF0aCkgPT4ge1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSgoKSA9PiB7XG4gIH0sIHtcbiAgICBnZXQoX29iaiwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIiB8fCBrZXkgPT09IFwidGhlblwiKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoY2FsbGJhY2ssIFsuLi5wYXRoLCBrZXldKTtcbiAgICB9LFxuICAgIGFwcGx5KF8xLCBfMiwgYXJncykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgYXJnc1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3h5O1xufTtcbnZhciBDbGllbnRSZXF1ZXN0SW1wbCA9IGNsYXNzIHtcbiAgdXJsO1xuICBtZXRob2Q7XG4gIHF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICBwYXRoUGFyYW1zID0ge307XG4gIHJCb2R5O1xuICBjVHlwZSA9IHZvaWQgMDtcbiAgY29uc3RydWN0b3IodXJsLCBtZXRob2QpIHtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxuICBmZXRjaCA9IGFzeW5jIChhcmdzLCBvcHQpID0+IHtcbiAgICBpZiAoYXJncykge1xuICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5xdWVyeSkpIHtcbiAgICAgICAgICBpZiAodiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyB8fD0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYyIG9mIHYpIHtcbiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLmZvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgZm9ybS5hcHBlbmQoaywgdik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5qc29uKSB7XG4gICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICB0aGlzLmNUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICB0aGlzLnBhdGhQYXJhbXMgPSBhcmdzLnBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBoZWFkZXJWYWx1ZXMgPSB7XG4gICAgICAuLi5hcmdzPy5oZWFkZXIgPz8ge30sXG4gICAgICAuLi50eXBlb2Ygb3B0Py5oZWFkZXJzID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBvcHQuaGVhZGVycygpIDogb3B0Py5oZWFkZXJzID8gb3B0LmhlYWRlcnMgOiB7fVxuICAgIH07XG4gICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgY29uc3QgY29va2llcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5jb29raWUpKSB7XG4gICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICB9XG4gICAgICBoZWFkZXJWYWx1ZXNbXCJDb29raWVcIl0gPSBjb29raWVzLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jVHlwZSkge1xuICAgICAgaGVhZGVyVmFsdWVzW1wiQ29udGVudC1UeXBlXCJdID0gdGhpcy5jVHlwZTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlclZhbHVlcyA/PyB2b2lkIDApO1xuICAgIGxldCB1cmwgPSB0aGlzLnVybDtcbiAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgIHVybCA9IHJlcGxhY2VVcmxQYXJhbSh1cmwsIHRoaXMucGF0aFBhcmFtcyk7XG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICByZXR1cm4gKG9wdD8uZmV0Y2ggfHwgZmV0Y2gpKHVybCwge1xuICAgICAgYm9keTogc2V0Qm9keSA/IHRoaXMuckJvZHkgOiB2b2lkIDAsXG4gICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICAuLi5vcHQ/LmluaXRcbiAgICB9KTtcbiAgfTtcbn07XG52YXIgaGMgPSAoYmFzZVVybCwgb3B0aW9ucykgPT4gY3JlYXRlUHJveHkoZnVuY3Rpb24gcHJveHlDYWxsYmFjayhvcHRzKSB7XG4gIGNvbnN0IHBhcnRzID0gWy4uLm9wdHMucGF0aF07XG4gIGlmIChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA9PT0gXCJ0b1N0cmluZ1wiKSB7XG4gICAgaWYgKHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJdID09PSBcIm5hbWVcIikge1xuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDNdIHx8IFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBwcm94eUNhbGxiYWNrLnRvU3RyaW5nKCk7XG4gIH1cbiAgaWYgKHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID09PSBcInZhbHVlT2ZcIikge1xuICAgIGlmIChwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXSA9PT0gXCJuYW1lXCIpIHtcbiAgICAgIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAzXSB8fCBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gcHJveHlDYWxsYmFjaztcbiAgfVxuICBsZXQgbWV0aG9kID0gXCJcIjtcbiAgaWYgKC9eXFwkLy50ZXN0KHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdKSkge1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0cy5wb3AoKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbWV0aG9kID0gbGFzdC5yZXBsYWNlKC9eXFwkLywgXCJcIik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhdGggPSBwYXJ0cy5qb2luKFwiL1wiKTtcbiAgY29uc3QgdXJsID0gbWVyZ2VQYXRoKGJhc2VVcmwsIHBhdGgpO1xuICBpZiAobWV0aG9kID09PSBcInVybFwiKSB7XG4gICAgaWYgKG9wdHMuYXJnc1swXSAmJiBvcHRzLmFyZ3NbMF0ucGFyYW0pIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHJlcGxhY2VVcmxQYXJhbSh1cmwsIG9wdHMuYXJnc1swXS5wYXJhbSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFVSTCh1cmwpO1xuICB9XG4gIGlmIChtZXRob2QgPT09IFwid3NcIikge1xuICAgIGNvbnN0IHRhcmdldFVybCA9IHJlcGxhY2VVcmxQcm90b2NvbChcbiAgICAgIG9wdHMuYXJnc1swXSAmJiBvcHRzLmFyZ3NbMF0ucGFyYW0gPyByZXBsYWNlVXJsUGFyYW0odXJsLCBvcHRzLmFyZ3NbMF0ucGFyYW0pIDogdXJsLFxuICAgICAgXCJ3c1wiXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IFdlYlNvY2tldCh0YXJnZXRVcmwpO1xuICB9XG4gIGNvbnN0IHJlcSA9IG5ldyBDbGllbnRSZXF1ZXN0SW1wbCh1cmwsIG1ldGhvZCk7XG4gIGlmIChtZXRob2QpIHtcbiAgICBvcHRpb25zID8/PSB7fTtcbiAgICBjb25zdCBhcmdzID0gZGVlcE1lcmdlKG9wdGlvbnMsIHsgLi4ub3B0cy5hcmdzWzFdID8/IHt9IH0pO1xuICAgIHJldHVybiByZXEuZmV0Y2gob3B0cy5hcmdzWzBdLCBhcmdzKTtcbiAgfVxuICByZXR1cm4gcmVxO1xufSwgW10pO1xuZXhwb3J0IHtcbiAgaGNcbn07XG4iLCJpbXBvcnQgeyBoYyB9IGZyb20gXCJob25vL2NsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBBcHBUeXBlIH0gZnJvbSBcIiRzZXJ2ZXJcIjtcblxuZXhwb3J0IGNvbnN0IGNsaWVudCA9IChhcmdzPzogeyBiYXNlVXJsPzogc3RyaW5nOyBmZXRjaD86ICh0eXBlb2YgZ2xvYmFsVGhpcylbXCJmZXRjaFwiXSB9KSA9PiB7XG5cdGNvbnN0IHsgYmFzZVVybCA9IFwiaHR0cHM6Ly9hcGkubGlua3UubGFcIiwgZmV0Y2ggPSBnbG9iYWxUaGlzLmZldGNoIH0gPSBhcmdzID8/IHt9O1xuXHRyZXR1cm4gaGM8QXBwVHlwZT4oYmFzZVVybCwge1xuXHRcdGZldGNoLFxuXHR9KTtcbn07XG5cbmV4cG9ydCB0eXBlIEFwaVR5cGUgPSBBcHBUeXBlO1xuIl0sIm5hbWVzIjpbIl9zZXJpYWxpemUiLCJuYW1lIiwidmFsdWUiLCJvcHQiLCJjb29raWUiLCJzZXJpYWxpemUiLCJtZXJnZVBhdGgiLCJiYXNlIiwicGF0aCIsInJlcGxhY2VVcmxQYXJhbSIsInVybFN0cmluZyIsInBhcmFtcyIsImsiLCJ2IiwicmVnIiwicmVwbGFjZVVybFByb3RvY29sIiwicHJvdG9jb2wiLCJyZW1vdmVJbmRleFN0cmluZyIsInVybFN0aW5nIiwiaXNPYmplY3QiLCJpdGVtIiwiZGVlcE1lcmdlIiwidGFyZ2V0Iiwic291cmNlIiwibWVyZ2VkIiwia2V5IiwiY3JlYXRlUHJveHkiLCJjYWxsYmFjayIsIl9vYmoiLCJfMSIsIl8yIiwiYXJncyIsIkNsaWVudFJlcXVlc3RJbXBsIiwidXJsIiwibWV0aG9kIiwiX19wdWJsaWNGaWVsZCIsInYyIiwiZm9ybSIsIm1ldGhvZFVwcGVyQ2FzZSIsImhlYWRlclZhbHVlcyIsImNvb2tpZXMiLCJoZWFkZXJzIiwic2V0Qm9keSIsImhjIiwiYmFzZVVybCIsIm9wdGlvbnMiLCJwcm94eUNhbGxiYWNrIiwi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
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { z as e, B as o, C as n, U as t, W as r } from "./utils-CnA4OULt.js";
1
+ import { z as e, B as o, C as n, U as t, W as r } from "./utils-GfUvEzD4.js";
2
2
  const s = e.string().regex(/^20\d{2}-(0[1-9]|1[0-2])$/g), a = e.object({
3
3
  id: e.string().min(1).describe(
4
4
  'A unique identifier for the word. Usually the word but may have an integer added in case of a word with multiple definitions (like "we")'