@getopenpay/openpay-js-react 0.3.10 → 0.3.13-alpha.bdbda7a

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.
Files changed (28) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-CSs7JUop-DOycYeHk.js → Resource-mNYeZF9D-DyAeU6nH.js} +3 -3
  3. package/dist/{SimpleSpanProcessor-CpPfWwEZ-kGWDuDR5.js → SimpleSpanProcessor-CLadx1Ry-DFbqCyTE.js} +21 -21
  4. package/dist/detect-resources-BVj-Nv9j-D-K1Nx4L.js +854 -0
  5. package/dist/diag-api-DlzYu3FX-C5uOnDAk.js +6 -0
  6. package/dist/{index-DOjg62b6-BQhNj6gg.js → index-73Zci8QM-BH36xwJQ.js} +2 -2
  7. package/dist/{index-f7gZCxGK-CZl4xZMA.js → index-BufYIG0q-CphSOJz1.js} +103 -103
  8. package/dist/index-Bzsy-QHz-BSCoOj2p.js +150 -0
  9. package/dist/{index-B6pew86H-DquIY2lc.js → index-C1QTH_fF-7edQgvhb.js} +8 -8
  10. package/dist/{index-Qk72FwVY-CfWtg_pu.js → index-C6VsGa_X-DnI1zZA6.js} +2 -2
  11. package/dist/index-Cgr3OZtX.js +7646 -0
  12. package/dist/{index-CW-cTYDf-Cp697kMP.js → index-SDtMvSt9-B3WXwcGr.js} +19 -19
  13. package/dist/{index-BHi2yhiW-LMMdZxIZ.js → index-Y8rIshZP-BFN_roTi.js} +71 -71
  14. package/dist/{index-DOJYaZF--a7D-QGt4.js → index-hlw2CLDg-CvpGBRWb.js} +13 -13
  15. package/dist/{index-mG-441Dh-DZ_keoTO.js → index-rsJVRXFy-BlJGDRfL.js} +5 -5
  16. package/dist/index.d.ts +125 -1
  17. package/dist/index.js +7 -6
  18. package/dist/{metrics-api-Bn9Tfk4W-81_FgHy5.js → metrics-api-Boddpk8P-5Yd9BTNs.js} +11 -11
  19. package/dist/{sdk-info-C7LRuYBx-4M9Rimfv.js → sdk-info-Bhg46kME-KwjisWfA.js} +2 -2
  20. package/dist/url-DKZ7gj4s-DwKrihmA.js +797 -0
  21. package/dist/{utils-YVA_SJbP-CMsLPXfE.js → utils-BJLZP7xv-CsKnCWfD.js} +10 -10
  22. package/dist/{utils-DlZCz_-h-FEcwXP9C.js → utils-Cp6QoutJ-BvvfzCHa.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/detect-resources-DvMoXvPs-CtVf7C01.js +0 -854
  25. package/dist/diag-api-tLAtACvP-DQAXhz1c.js +0 -6
  26. package/dist/index-8BkUkSRP.js +0 -7457
  27. package/dist/index-D2dV86NC-CEdO2lAo.js +0 -150
  28. package/dist/url-DyCKv0-e-B0mm5nuH.js +0 -797
@@ -1,15 +1,15 @@
1
- import { D as jt } from "./index-8BkUkSRP.js";
1
+ import { J as jt } from "./index-Cgr3OZtX.js";
2
2
  function de(t) {
3
3
  return t === void 0 && (t = {}), typeof t.addEventListener == "function" && typeof t.removeEventListener == "function";
4
4
  }
5
- var Jt = "OT_ZONE_CONTEXT", qe = (
5
+ var Yt = "OT_ZONE_CONTEXT", qe = (
6
6
  /** @class */
7
7
  function() {
8
8
  function t() {
9
9
  this._enabled = !1, this._zoneCounter = 0;
10
10
  }
11
11
  return t.prototype._activeContextFromZone = function(n) {
12
- return n && n.get(Jt) || jt;
12
+ return n && n.get(Yt) || jt;
13
13
  }, t.prototype._bindFunction = function(n, a) {
14
14
  var e = this, s = function() {
15
15
  for (var l = this, g = [], p = 0; p < arguments.length; p++)
@@ -35,7 +35,7 @@ var Jt = "OT_ZONE_CONTEXT", qe = (
35
35
  var e;
36
36
  return Zone.current.fork({
37
37
  name: n,
38
- properties: (e = {}, e[Jt] = a, e)
38
+ properties: (e = {}, e[Yt] = a, e)
39
39
  });
40
40
  }, t.prototype._getActiveZone = function() {
41
41
  return Zone.current;
@@ -107,7 +107,7 @@ function ke() {
107
107
  return E.zone;
108
108
  }
109
109
  static get currentTask() {
110
- return J;
110
+ return Y;
111
111
  }
112
112
  // tslint:disable-next-line:require-internal-with-underscore
113
113
  static __load_patch(i, o, c = !1) {
@@ -181,12 +181,12 @@ function ke() {
181
181
  if (i.zone != this)
182
182
  throw new Error("A task can only be run in the zone of creation! (Creation: " + (i.zone || K).name + "; Execution: " + this.name + ")");
183
183
  const b = i, { type: F, data: { isPeriodic: L = !1, isRefreshable: it = !1 } = {} } = i;
184
- if (i.state === v && (F === D || F === B))
184
+ if (i.state === v && (F === P || F === B))
185
185
  return;
186
186
  const lt = i.state != N;
187
187
  lt && b._transitionTo(N, x);
188
- const ut = J;
189
- J = b, E = { parent: E, zone: this };
188
+ const ut = Y;
189
+ Y = b, E = { parent: E, zone: this };
190
190
  try {
191
191
  F == B && i.data && !L && !it && (i.cancelFn = void 0);
192
192
  try {
@@ -198,13 +198,13 @@ function ke() {
198
198
  } finally {
199
199
  const nt = i.state;
200
200
  if (nt !== v && nt !== U)
201
- if (F == D || L || it && nt === _)
201
+ if (F == P || L || it && nt === _)
202
202
  lt && b._transitionTo(x, N, _);
203
203
  else {
204
204
  const h = b._zoneDelegates;
205
205
  this._updateTaskCount(b, -1), lt && b._transitionTo(v, N, v), it && (b._zoneDelegates = h);
206
206
  }
207
- E = E.parent, J = ut;
207
+ E = E.parent, Y = ut;
208
208
  }
209
209
  }
210
210
  scheduleTask(i) {
@@ -233,7 +233,7 @@ function ke() {
233
233
  return this.scheduleTask(new p(B, i, o, c, b, F));
234
234
  }
235
235
  scheduleEventTask(i, o, c, b, F) {
236
- return this.scheduleTask(new p(D, i, o, c, b, F));
236
+ return this.scheduleTask(new p(P, i, o, c, b, F));
237
237
  }
238
238
  cancelTask(i) {
239
239
  if (i.zone != this)
@@ -344,7 +344,7 @@ function ke() {
344
344
  throw new Error("callback is not defined");
345
345
  this.callback = c;
346
346
  const it = this;
347
- i === D && b && b.useG ? this.invoke = p.invokeTask : this.invoke = function() {
347
+ i === P && b && b.useG ? this.invoke = p.invokeTask : this.invoke = function() {
348
348
  return p.invokeTask.call(ct, it, this, arguments);
349
349
  };
350
350
  }
@@ -353,7 +353,7 @@ function ke() {
353
353
  try {
354
354
  return i.runCount++, i.zone.runTask(i, o, c);
355
355
  } finally {
356
- Q == 1 && Y(), Q--;
356
+ Q == 1 && J(), Q--;
357
357
  }
358
358
  }
359
359
  get zone() {
@@ -388,7 +388,7 @@ function ke() {
388
388
  }
389
389
  }
390
390
  const k = tt("setTimeout"), w = tt("Promise"), m = tt("then");
391
- let P = [], R = !1, I;
391
+ let D = [], R = !1, I;
392
392
  function W(H) {
393
393
  if (I || ct[w] && (I = ct[w].resolve(0)), I) {
394
394
  let i = I[m];
@@ -397,13 +397,13 @@ function ke() {
397
397
  ct[k](H, 0);
398
398
  }
399
399
  function $(H) {
400
- Q === 0 && P.length === 0 && W(Y), H && P.push(H);
400
+ Q === 0 && D.length === 0 && W(J), H && D.push(H);
401
401
  }
402
- function Y() {
402
+ function J() {
403
403
  if (!R) {
404
- for (R = !0; P.length; ) {
405
- const H = P;
406
- P = [];
404
+ for (R = !0; D.length; ) {
405
+ const H = D;
406
+ D = [];
407
407
  for (let i = 0; i < H.length; i++) {
408
408
  const o = H[i];
409
409
  try {
@@ -416,7 +416,7 @@ function ke() {
416
416
  C.microtaskDrainDone(), R = !1;
417
417
  }
418
418
  }
419
- const K = { name: "NO ZONE" }, v = "notScheduled", _ = "scheduling", x = "scheduled", N = "running", V = "canceling", U = "unknown", T = "microTask", B = "macroTask", D = "eventTask", S = {}, C = {
419
+ const K = { name: "NO ZONE" }, v = "notScheduled", _ = "scheduling", x = "scheduled", N = "running", V = "canceling", U = "unknown", T = "microTask", B = "macroTask", P = "eventTask", S = {}, C = {
420
420
  symbol: tt,
421
421
  currentZoneFrame: () => E,
422
422
  onUnhandledError: A,
@@ -447,7 +447,7 @@ function ke() {
447
447
  patchCallbacks: () => A,
448
448
  nativeScheduleMicroTask: W
449
449
  };
450
- let E = { parent: null, zone: new s(null, null) }, J = null, Q = 0;
450
+ let E = { parent: null, zone: new s(null, null) }, Y = null, Q = 0;
451
451
  function A() {
452
452
  }
453
453
  return a("Zone", "Zone"), s;
@@ -465,7 +465,7 @@ function qt(t, n) {
465
465
  function Gt(t, n, a, e, s) {
466
466
  return Zone.current.scheduleMacroTask(t, n, a, e, s);
467
467
  }
468
- const M = tt, Pt = typeof window < "u", vt = Pt ? window : void 0, X = Pt && vt || globalThis, Te = "removeAttribute";
468
+ const M = tt, Dt = typeof window < "u", vt = Dt ? window : void 0, X = Dt && vt || globalThis, Te = "removeAttribute";
469
469
  function Ut(t, n) {
470
470
  for (let a = t.length - 1; a >= 0; a--)
471
471
  typeof t[a] == "function" && (t[a] = qt(t[a], n + "_" + a));
@@ -491,11 +491,11 @@ function be(t, n) {
491
491
  function oe(t) {
492
492
  return t ? t.writable === !1 ? !1 : !(typeof t.get == "function" && typeof t.set > "u") : !0;
493
493
  }
494
- const se = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope, Ot = !("nw" in X) && typeof X.process < "u" && X.process.toString() === "[object process]", Wt = !Ot && !se && !!(Pt && vt.HTMLElement), ie = typeof X.process < "u" && X.process.toString() === "[object process]" && !se && !!(Pt && vt.HTMLElement), Dt = {}, Ee = M("enable_beforeunload"), Kt = function(t) {
494
+ const se = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope, Ot = !("nw" in X) && typeof X.process < "u" && X.process.toString() === "[object process]", Wt = !Ot && !se && !!(Dt && vt.HTMLElement), ie = typeof X.process < "u" && X.process.toString() === "[object process]" && !se && !!(Dt && vt.HTMLElement), Pt = {}, Ee = M("enable_beforeunload"), Kt = function(t) {
495
495
  if (t = t || X.event, !t)
496
496
  return;
497
- let n = Dt[t.type];
498
- n || (n = Dt[t.type] = M("ON_PROPERTY" + t.type));
497
+ let n = Pt[t.type];
498
+ n || (n = Pt[t.type] = M("ON_PROPERTY" + t.type));
499
499
  const a = this || t.target || X, e = a[n];
500
500
  let s;
501
501
  if (Wt && a === vt && t.type === "error") {
@@ -526,8 +526,8 @@ function Qt(t, n, a) {
526
526
  return;
527
527
  delete e.writable, delete e.value;
528
528
  const l = e.get, g = e.set, p = n.slice(2);
529
- let k = Dt[p];
530
- k || (k = Dt[p] = M("ON_PROPERTY" + p)), e.set = function(w) {
529
+ let k = Pt[p];
530
+ k || (k = Pt[p] = M("ON_PROPERTY" + p)), e.set = function(w) {
531
531
  let m = this;
532
532
  !m && t === X && (m = X), m && (typeof m[k] == "function" && m.removeEventListener(p, Kt), g && g.call(m, null), m[k] = w, typeof w == "function" && m.addEventListener(p, Kt, !1));
533
533
  }, e.get = function() {
@@ -538,9 +538,9 @@ function Qt(t, n, a) {
538
538
  if (m)
539
539
  return m;
540
540
  if (l) {
541
- let P = l.call(this);
542
- if (P)
543
- return e.set.call(this, P), typeof w[Te] == "function" && w.removeAttribute(n), P;
541
+ let D = l.call(this);
542
+ if (D)
543
+ return e.set.call(this, D), typeof w[Te] == "function" && w.removeAttribute(n), D;
544
544
  }
545
545
  return null;
546
546
  }, Mt(t, n, e), t[s] = !0;
@@ -677,15 +677,15 @@ if (typeof window < "u")
677
677
  } catch {
678
678
  yt = !1;
679
679
  }
680
- const De = {
680
+ const Pe = {
681
681
  useG: !0
682
682
  }, et = {}, ce = {}, le = new RegExp("^" + wt + "(\\w+)(true|false)$"), ue = M("propagationStopped");
683
683
  function he(t, n) {
684
684
  const a = (n ? n(t) : t) + ft, e = (n ? n(t) : t) + ht, s = wt + a, l = wt + e;
685
685
  et[t] = {}, et[t][ft] = s, et[t][ht] = l;
686
686
  }
687
- function Pe(t, n, a, e) {
688
- const s = e && e.add || Ft, l = e && e.rm || Ht, g = e && e.listeners || "eventListeners", p = e && e.rmAll || "removeAllListeners", k = M(s), w = "." + s + ":", m = "prependListener", P = "." + m + ":", R = function(v, _, x) {
687
+ function De(t, n, a, e) {
688
+ const s = e && e.add || Ft, l = e && e.rm || Ht, g = e && e.listeners || "eventListeners", p = e && e.rmAll || "removeAllListeners", k = M(s), w = "." + s + ":", m = "prependListener", D = "." + m + ":", R = function(v, _, x) {
689
689
  if (v.isRemoved)
690
690
  return;
691
691
  const N = v.callback;
@@ -715,8 +715,8 @@ function Pe(t, n, a, e) {
715
715
  } else {
716
716
  const T = V.slice();
717
717
  for (let B = 0; B < T.length && !(_ && _[ue] === !0); B++) {
718
- const D = R(T[B], N, _);
719
- D && U.push(D);
718
+ const P = R(T[B], N, _);
719
+ P && U.push(P);
720
720
  }
721
721
  }
722
722
  if (U.length === 1)
@@ -734,7 +734,7 @@ function Pe(t, n, a, e) {
734
734
  }, $ = function(v) {
735
735
  return I(this, v, !0);
736
736
  };
737
- function Y(v, _) {
737
+ function J(v, _) {
738
738
  if (!v)
739
739
  return !1;
740
740
  let x = !0;
@@ -749,15 +749,15 @@ function Pe(t, n, a, e) {
749
749
  T = xt(T);
750
750
  if (!T && v[s] && (T = v), !T || T[k])
751
751
  return !1;
752
- const B = _ && _.eventNameToString, D = {}, S = T[k] = T[s], C = T[M(l)] = T[l], E = T[M(g)] = T[g], J = T[M(p)] = T[p];
752
+ const B = _ && _.eventNameToString, P = {}, S = T[k] = T[s], C = T[M(l)] = T[l], E = T[M(g)] = T[g], Y = T[M(p)] = T[p];
753
753
  let Q;
754
754
  _ && _.prepend && (Q = T[M(_.prepend)] = T[_.prepend]);
755
755
  function A(r, f) {
756
756
  return !yt && typeof r == "object" && r ? !!r.capture : !yt || !f ? r : typeof r == "boolean" ? { capture: r, passive: !0 } : r ? typeof r == "object" && r.passive !== !1 ? { ...r, passive: !0 } : r : { passive: !0 };
757
757
  }
758
758
  const H = function(r) {
759
- if (!D.isExisting)
760
- return S.call(D.target, D.eventName, D.capture ? $ : W, D.options);
759
+ if (!P.isExisting)
760
+ return S.call(P.target, P.eventName, P.capture ? $ : W, P.options);
761
761
  }, i = function(r) {
762
762
  if (!r.isRemoved) {
763
763
  const f = et[r.eventName];
@@ -775,9 +775,9 @@ function Pe(t, n, a, e) {
775
775
  if (r.allRemoved)
776
776
  return C.call(r.target, r.eventName, r.capture ? $ : W, r.options);
777
777
  }, o = function(r) {
778
- return S.call(D.target, D.eventName, r.invoke, D.options);
778
+ return S.call(P.target, P.eventName, r.invoke, P.options);
779
779
  }, c = function(r) {
780
- return Q.call(D.target, D.eventName, r.invoke, D.options);
780
+ return Q.call(P.target, P.eventName, r.invoke, P.options);
781
781
  }, b = function(r) {
782
782
  return C.call(r.target, r.eventName, r.invoke, r.options);
783
783
  }, F = x ? H : o, L = x ? i : b, it = function(r, f) {
@@ -831,21 +831,21 @@ function Pe(t, n, a, e) {
831
831
  } else
832
832
  kt = j[Vt] = [];
833
833
  let Zt;
834
- const $t = j.constructor.name, Yt = ce[$t];
835
- Yt && (Zt = Yt[z]), Zt || (Zt = $t + f + (B ? B(z) : z)), D.options = rt, Bt && (D.options.once = !1), D.target = j, D.capture = zt, D.eventName = z, D.isExisting = Xt;
836
- const Tt = x ? De : void 0;
837
- Tt && (Tt.taskData = D), dt && (D.options.signal = void 0);
834
+ const $t = j.constructor.name, Jt = ce[$t];
835
+ Jt && (Zt = Jt[z]), Zt || (Zt = $t + f + (B ? B(z) : z)), P.options = rt, Bt && (P.options.once = !1), P.target = j, P.capture = zt, P.eventName = z, P.isExisting = Xt;
836
+ const Tt = x ? Pe : void 0;
837
+ Tt && (Tt.taskData = P), dt && (P.options.signal = void 0);
838
838
  const ot = ge.scheduleEventTask(Zt, q, Tt, y, Z);
839
839
  if (dt) {
840
- D.options.signal = dt;
840
+ P.options.signal = dt;
841
841
  const at = () => ot.zone.cancelTask(ot);
842
842
  r.call(dt, "abort", at, { once: !0 }), ot.removeAbortListener = () => dt.removeEventListener("abort", at);
843
843
  }
844
- if (D.target = null, Tt && (Tt.taskData = null), Bt && (D.options.once = !0), !yt && typeof ot.options == "boolean" || (ot.options = rt), ot.target = j, ot.capture = zt, ot.eventName = z, G && (ot.originalDelegate = q), O ? kt.unshift(ot) : kt.push(ot), d)
844
+ if (P.target = null, Tt && (Tt.taskData = null), Bt && (P.options.once = !0), !yt && typeof ot.options == "boolean" || (ot.options = rt), ot.target = j, ot.capture = zt, ot.eventName = z, G && (ot.originalDelegate = q), O ? kt.unshift(ot) : kt.push(ot), d)
845
845
  return j;
846
846
  };
847
847
  };
848
- return T[s] = u(S, w, F, L, U), Q && (T[m] = u(Q, P, c, L, U, !0)), T[l] = function() {
848
+ return T[s] = u(S, w, F, L, U), Q && (T[m] = u(Q, D, c, L, U, !0)), T[l] = function() {
849
849
  const r = this || t;
850
850
  let f = arguments[0];
851
851
  _ && _.transferEventName && (f = _.transferEventName(f));
@@ -917,11 +917,11 @@ function Pe(t, n, a, e) {
917
917
  }
918
918
  if (U)
919
919
  return this;
920
- }, _t(T[s], S), _t(T[l], C), J && _t(T[p], J), E && _t(T[g], E), !0;
920
+ }, _t(T[s], S), _t(T[l], C), Y && _t(T[p], Y), E && _t(T[g], E), !0;
921
921
  }
922
922
  let K = [];
923
923
  for (let v = 0; v < a.length; v++)
924
- K[v] = Y(a[v], e);
924
+ K[v] = J(a[v], e);
925
925
  return K;
926
926
  }
927
927
  function fe(t, n) {
@@ -965,22 +965,22 @@ function mt(t, n, a, e) {
965
965
  m.args[0] = function() {
966
966
  return w.invoke.apply(this, arguments);
967
967
  };
968
- const P = s.apply(t, m.args);
969
- return ne(P) ? m.handleId = P : (m.handle = P, m.isRefreshable = ee(P.refresh)), w;
968
+ const D = s.apply(t, m.args);
969
+ return ne(D) ? m.handleId = D : (m.handle = D, m.isRefreshable = ee(D.refresh)), w;
970
970
  }
971
971
  function k(w) {
972
- const { handle: m, handleId: P } = w.data;
973
- return l.call(t, m ?? P);
972
+ const { handle: m, handleId: D } = w.data;
973
+ return l.call(t, m ?? D);
974
974
  }
975
- s = pt(t, n, (w) => function(m, P) {
976
- if (ee(P[0])) {
975
+ s = pt(t, n, (w) => function(m, D) {
976
+ if (ee(D[0])) {
977
977
  const R = {
978
978
  isRefreshable: !1,
979
979
  isPeriodic: e === "Interval",
980
- delay: e === "Timeout" || e === "Interval" ? P[1] || 0 : void 0,
981
- args: P
982
- }, I = P[0];
983
- P[0] = function() {
980
+ delay: e === "Timeout" || e === "Interval" ? D[1] || 0 : void 0,
981
+ args: D
982
+ }, I = D[0];
983
+ D[0] = function() {
984
984
  try {
985
985
  return I.apply(this, arguments);
986
986
  } finally {
@@ -988,26 +988,26 @@ function mt(t, n, a, e) {
988
988
  !N && !V && (x ? delete g[x] : _ && (_[St] = null));
989
989
  }
990
990
  };
991
- const W = Gt(n, P[0], R, p, k);
991
+ const W = Gt(n, D[0], R, p, k);
992
992
  if (!W)
993
993
  return W;
994
- const { handleId: $, handle: Y, isRefreshable: K, isPeriodic: v } = W.data;
994
+ const { handleId: $, handle: J, isRefreshable: K, isPeriodic: v } = W.data;
995
995
  if ($)
996
996
  g[$] = W;
997
- else if (Y && (Y[St] = W, K && !v)) {
998
- const _ = Y.refresh;
999
- Y.refresh = function() {
997
+ else if (J && (J[St] = W, K && !v)) {
998
+ const _ = J.refresh;
999
+ J.refresh = function() {
1000
1000
  const { zone: x, state: N } = W;
1001
1001
  return N === "notScheduled" ? (W._state = "scheduled", x._updateTaskCount(W, 1)) : N === "running" && (W._state = "scheduling"), _.call(this);
1002
1002
  };
1003
1003
  }
1004
- return Y ?? $ ?? W;
1004
+ return J ?? $ ?? W;
1005
1005
  } else
1006
- return w.apply(t, P);
1007
- }), l = pt(t, a, (w) => function(m, P) {
1008
- const R = P[0];
1006
+ return w.apply(t, D);
1007
+ }), l = pt(t, a, (w) => function(m, D) {
1008
+ const R = D[0];
1009
1009
  let I;
1010
- ne(R) ? (I = g[R], delete g[R]) : (I = R == null ? void 0 : R[St], I ? R[St] = null : I = R), I != null && I.type ? I.cancelFn && I.zone.cancelTask(I) : w.apply(t, P);
1010
+ ne(R) ? (I = g[R], delete g[R]) : (I = R == null ? void 0 : R[St], I ? R[St] = null : I = R), I != null && I.type ? I.cancelFn && I.zone.cancelTask(I) : w.apply(t, D);
1011
1011
  });
1012
1012
  }
1013
1013
  function Ce(t, n) {
@@ -1031,7 +1031,7 @@ function je(t, n) {
1031
1031
  return;
1032
1032
  const { eventNames: a, zoneSymbolEventNames: e, TRUE_STR: s, FALSE_STR: l, ZONE_SYMBOL_PREFIX: g } = n.getGlobalObjects();
1033
1033
  for (let k = 0; k < a.length; k++) {
1034
- const w = a[k], m = w + l, P = w + s, R = g + m, I = g + P;
1034
+ const w = a[k], m = w + l, D = w + s, R = g + m, I = g + D;
1035
1035
  e[w] = {}, e[w][l] = R, e[w][s] = I;
1036
1036
  }
1037
1037
  const p = t.EventTarget;
@@ -1133,10 +1133,10 @@ function Ie(t) {
1133
1133
  w(n);
1134
1134
  const e = M("xhrTask"), s = M("xhrSync"), l = M("xhrListener"), g = M("xhrScheduled"), p = M("xhrURL"), k = M("xhrErrorBeforeScheduled");
1135
1135
  function w(m) {
1136
- const P = m.XMLHttpRequest;
1137
- if (!P)
1136
+ const D = m.XMLHttpRequest;
1137
+ if (!D)
1138
1138
  return;
1139
- const R = P.prototype;
1139
+ const R = D.prototype;
1140
1140
  function I(S) {
1141
1141
  return S[e];
1142
1142
  }
@@ -1148,12 +1148,12 @@ function Ie(t) {
1148
1148
  W = C[Rt], $ = C[Lt];
1149
1149
  }
1150
1150
  }
1151
- const Y = "readystatechange", K = "scheduled";
1151
+ const J = "readystatechange", K = "scheduled";
1152
1152
  function v(S) {
1153
1153
  const C = S.data, E = C.target;
1154
1154
  E[g] = !1, E[k] = !1;
1155
- const J = E[l];
1156
- W || (W = E[Rt], $ = E[Lt]), J && $.call(E, Y, J);
1155
+ const Y = E[l];
1156
+ W || (W = E[Rt], $ = E[Lt]), Y && $.call(E, J, Y);
1157
1157
  const Q = E[l] = () => {
1158
1158
  if (E.readyState === E.DONE)
1159
1159
  if (!C.aborted && E[g] && S.state === K) {
@@ -1170,13 +1170,13 @@ function Ie(t) {
1170
1170
  S.invoke();
1171
1171
  } else !C.aborted && E[g] === !1 && (E[k] = !0);
1172
1172
  };
1173
- return W.call(E, Y, Q), E[e] || (E[e] = S), B.apply(E, C.args), E[g] = !0, S;
1173
+ return W.call(E, J, Q), E[e] || (E[e] = S), B.apply(E, C.args), E[g] = !0, S;
1174
1174
  }
1175
1175
  function _() {
1176
1176
  }
1177
1177
  function x(S) {
1178
1178
  const C = S.data;
1179
- return C.aborted = !0, D.apply(C.target, C.args);
1179
+ return C.aborted = !0, P.apply(C.target, C.args);
1180
1180
  }
1181
1181
  const N = pt(R, "open", () => function(S, C) {
1182
1182
  return S[s] = C[2] == !1, S[p] = C[1], N.apply(S, C);
@@ -1190,17 +1190,17 @@ function Ie(t) {
1190
1190
  isPeriodic: !1,
1191
1191
  args: C,
1192
1192
  aborted: !1
1193
- }, J = Gt(V, _, E, v, x);
1194
- S && S[k] === !0 && !E.aborted && J.state === K && J.invoke();
1193
+ }, Y = Gt(V, _, E, v, x);
1194
+ S && S[k] === !0 && !E.aborted && Y.state === K && Y.invoke();
1195
1195
  }
1196
- }), D = pt(R, "abort", () => function(S, C) {
1196
+ }), P = pt(R, "abort", () => function(S, C) {
1197
1197
  const E = I(S);
1198
1198
  if (E && typeof E.type == "string") {
1199
1199
  if (E.cancelFn == null || E.data && E.data.aborted)
1200
1200
  return;
1201
1201
  E.zone.cancelTask(E);
1202
1202
  } else if (a.current[U] === !0)
1203
- return D.apply(S, C);
1203
+ return P.apply(S, C);
1204
1204
  });
1205
1205
  }
1206
1206
  }), t.__load_patch("geolocation", (n) => {
@@ -1231,7 +1231,7 @@ function Ne(t) {
1231
1231
  function g(h) {
1232
1232
  return h && h.toString === Object.prototype.toString ? (h.constructor && h.constructor.name || "") + ": " + JSON.stringify(h) : h ? h.toString() : Object.prototype.toString.call(h);
1233
1233
  }
1234
- const p = e.symbol, k = [], w = n[p("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")] !== !1, m = p("Promise"), P = p("then"), R = "__creationTrace__";
1234
+ const p = e.symbol, k = [], w = n[p("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")] !== !1, m = p("Promise"), D = p("then"), R = "__creationTrace__";
1235
1235
  e.onUnhandledError = (h) => {
1236
1236
  if (e.showUncaughtError()) {
1237
1237
  const u = h && h.rejection;
@@ -1261,13 +1261,13 @@ function Ne(t) {
1261
1261
  function $(h) {
1262
1262
  return h && h.then;
1263
1263
  }
1264
- function Y(h) {
1264
+ function J(h) {
1265
1265
  return h;
1266
1266
  }
1267
1267
  function K(h) {
1268
1268
  return L.reject(h);
1269
1269
  }
1270
- const v = p("state"), _ = p("value"), x = p("finally"), N = p("parentPromiseValue"), V = p("parentPromiseState"), U = "Promise.then", T = null, B = !0, D = !1, S = 0;
1270
+ const v = p("state"), _ = p("value"), x = p("finally"), N = p("parentPromiseValue"), V = p("parentPromiseState"), U = "Promise.then", T = null, B = !0, P = !1, S = 0;
1271
1271
  function C(h, u) {
1272
1272
  return (r) => {
1273
1273
  try {
@@ -1284,11 +1284,11 @@ function Ne(t) {
1284
1284
  h || (h = !0, u.apply(null, arguments));
1285
1285
  };
1286
1286
  };
1287
- }, J = "Promise resolved with itself", Q = p("currentTaskTrace");
1287
+ }, Y = "Promise resolved with itself", Q = p("currentTaskTrace");
1288
1288
  function A(h, u, r) {
1289
1289
  const f = E();
1290
1290
  if (h === r)
1291
- throw new TypeError(J);
1291
+ throw new TypeError(Y);
1292
1292
  if (h[v] === T) {
1293
1293
  let y = null;
1294
1294
  try {
@@ -1298,9 +1298,9 @@ function Ne(t) {
1298
1298
  A(h, !1, Z);
1299
1299
  })(), h;
1300
1300
  }
1301
- if (u !== D && r instanceof L && r.hasOwnProperty(v) && r.hasOwnProperty(_) && r[v] !== T)
1301
+ if (u !== P && r instanceof L && r.hasOwnProperty(v) && r.hasOwnProperty(_) && r[v] !== T)
1302
1302
  i(r), A(h, r[v], r[_]);
1303
- else if (u !== D && typeof y == "function")
1303
+ else if (u !== P && typeof y == "function")
1304
1304
  try {
1305
1305
  y.call(r, f(C(h, u)), f(C(h, !1)));
1306
1306
  } catch (Z) {
@@ -1311,7 +1311,7 @@ function Ne(t) {
1311
1311
  else {
1312
1312
  h[v] = u;
1313
1313
  const Z = h[_];
1314
- if (h[_] = r, h[x] === x && u === B && (h[v] = h[V], h[_] = h[N]), u === D && r instanceof Error) {
1314
+ if (h[_] = r, h[x] === x && u === B && (h[v] = h[V], h[_] = h[N]), u === P && r instanceof Error) {
1315
1315
  const d = a.currentTask && a.currentTask.data && a.currentTask.data[R];
1316
1316
  d && l(r, Q, {
1317
1317
  configurable: !0,
@@ -1322,7 +1322,7 @@ function Ne(t) {
1322
1322
  }
1323
1323
  for (let d = 0; d < Z.length; )
1324
1324
  o(h, Z[d++], Z[d++], Z[d++], Z[d++]);
1325
- if (Z.length == 0 && u == D) {
1325
+ if (Z.length == 0 && u == P) {
1326
1326
  h[v] = S;
1327
1327
  let d = r;
1328
1328
  try {
@@ -1345,19 +1345,19 @@ function Ne(t) {
1345
1345
  u && typeof u == "function" && u.call(this, { rejection: h[_], promise: h });
1346
1346
  } catch {
1347
1347
  }
1348
- h[v] = D;
1348
+ h[v] = P;
1349
1349
  for (let u = 0; u < k.length; u++)
1350
1350
  h === k[u].promise && k.splice(u, 1);
1351
1351
  }
1352
1352
  }
1353
1353
  function o(h, u, r, f, y) {
1354
1354
  i(h);
1355
- const Z = h[v], d = Z ? typeof f == "function" ? f : Y : typeof y == "function" ? y : K;
1355
+ const Z = h[v], d = Z ? typeof f == "function" ? f : J : typeof y == "function" ? y : K;
1356
1356
  u.scheduleMicroTask(U, () => {
1357
1357
  try {
1358
1358
  const O = h[_], j = !!r && x === r[x];
1359
1359
  j && (r[N] = O, r[V] = Z);
1360
- const z = u.run(d, void 0, j && d !== K && d !== Y ? [] : [O]);
1360
+ const z = u.run(d, void 0, j && d !== K && d !== J ? [] : [O]);
1361
1361
  A(r, !0, z);
1362
1362
  } catch (O) {
1363
1363
  A(r, !1, O);
@@ -1374,7 +1374,7 @@ function Ne(t) {
1374
1374
  return u instanceof L ? u : A(new this(null), B, u);
1375
1375
  }
1376
1376
  static reject(u) {
1377
- return A(new this(null), D, u);
1377
+ return A(new this(null), P, u);
1378
1378
  }
1379
1379
  static withResolvers() {
1380
1380
  const u = {};
@@ -1457,7 +1457,7 @@ function Ne(t) {
1457
1457
  r[v] = T, r[_] = [];
1458
1458
  try {
1459
1459
  const f = E();
1460
- u && u(f(C(r, B)), f(C(r, D)));
1460
+ u && u(f(C(r, B)), f(C(r, P)));
1461
1461
  } catch (f) {
1462
1462
  A(r, !1, f);
1463
1463
  }
@@ -1497,7 +1497,7 @@ function Ne(t) {
1497
1497
  if (r && (r.writable === !1 || !r.configurable))
1498
1498
  return;
1499
1499
  const f = u.then;
1500
- u[P] = f, h.prototype.then = function(y, Z) {
1500
+ u[D] = f, h.prototype.then = function(y, Z) {
1501
1501
  return new L((d, O) => {
1502
1502
  f.call(this, d, O);
1503
1503
  }).then(y, Z);
@@ -1550,12 +1550,12 @@ function Me(t, n, a, e, s) {
1550
1550
  const g = n[l] = n[e];
1551
1551
  n[e] = function(p, k, w) {
1552
1552
  return k && k.prototype && s.forEach(function(m) {
1553
- const P = `${a}.${e}::` + m, R = k.prototype;
1553
+ const D = `${a}.${e}::` + m, R = k.prototype;
1554
1554
  try {
1555
1555
  if (R.hasOwnProperty(m)) {
1556
1556
  const I = t.ObjectGetOwnPropertyDescriptor(R, m);
1557
- I && I.value ? (I.value = t.wrapWithCurrentZone(I.value, P), t._redefineProperty(k.prototype, m, I)) : R[m] && (R[m] = t.wrapWithCurrentZone(R[m], P));
1558
- } else R[m] && (R[m] = t.wrapWithCurrentZone(R[m], P));
1557
+ I && I.value ? (I.value = t.wrapWithCurrentZone(I.value, D), t._redefineProperty(k.prototype, m, I)) : R[m] && (R[m] = t.wrapWithCurrentZone(R[m], D));
1558
+ } else R[m] && (R[m] = t.wrapWithCurrentZone(R[m], D));
1559
1559
  } catch {
1560
1560
  }
1561
1561
  }), g.call(n, p, k, w);
@@ -1566,7 +1566,7 @@ function xe(t) {
1566
1566
  const s = At(n);
1567
1567
  e.patchOnProperties = ae, e.patchMethod = pt, e.bindArguments = Ut, e.patchMacroTask = we;
1568
1568
  const l = a.__symbol__("BLACK_LISTED_EVENTS"), g = a.__symbol__("UNPATCHED_EVENTS");
1569
- n[g] && (n[l] = n[g]), n[l] && (a[l] = a[g] = n[l]), e.patchEventPrototype = Oe, e.patchEventTarget = Pe, e.isIEOrEdge = Se, e.ObjectDefineProperty = Mt, e.ObjectGetOwnPropertyDescriptor = Et, e.ObjectCreate = ye, e.ArraySlice = ve, e.patchClass = bt, e.wrapWithCurrentZone = qt, e.filterProperties = pe, e.attachOriginToPatched = _t, e._redefineProperty = Object.defineProperty, e.patchCallbacks = Me, e.getGlobalObjects = () => ({
1569
+ n[g] && (n[l] = n[g]), n[l] && (a[l] = a[g] = n[l]), e.patchEventPrototype = Oe, e.patchEventTarget = De, e.isIEOrEdge = Se, e.ObjectDefineProperty = Mt, e.ObjectGetOwnPropertyDescriptor = Et, e.ObjectCreate = ye, e.ArraySlice = ve, e.patchClass = bt, e.wrapWithCurrentZone = qt, e.filterProperties = pe, e.attachOriginToPatched = _t, e._redefineProperty = Object.defineProperty, e.patchCallbacks = Me, e.getGlobalObjects = () => ({
1570
1570
  globalSources: ce,
1571
1571
  zoneSymbolEventNames: et,
1572
1572
  eventNames: s,
@@ -1590,4 +1590,4 @@ Ie(_e);
1590
1590
  export {
1591
1591
  qe as ZoneContextManager
1592
1592
  };
1593
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtZjdnWkN4R0stIX57MDBifX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEQgYXMgRG8gfSBmcm9tICcuL2luZGV4LSF+ezAwNH1+LmpzJztcblxuZnVuY3Rpb24gRXQoZSkge1xuICByZXR1cm4gZSA9PT0gdm9pZCAwICYmIChlID0ge30pLCB0eXBlb2YgZS5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgZS5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIjtcbn1cbnZhciAkZSA9IFwiT1RfWk9ORV9DT05URVhUXCIsIFZ0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLl9lbmFibGVkID0gITEsIHRoaXMuX3pvbmVDb3VudGVyID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLl9hY3RpdmVDb250ZXh0RnJvbVpvbmUgPSBmdW5jdGlvbihuKSB7XG4gICAgICByZXR1cm4gbiAmJiBuLmdldCgkZSkgfHwgRG87XG4gICAgfSwgZS5wcm90b3R5cGUuX2JpbmRGdW5jdGlvbiA9IGZ1bmN0aW9uKG4sIHMpIHtcbiAgICAgIHZhciB0ID0gdGhpcywgaSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKHZhciBsID0gdGhpcywgXyA9IFtdLCBFID0gMDsgRSA8IGFyZ3VtZW50cy5sZW5ndGg7IEUrKylcbiAgICAgICAgICBfW0VdID0gYXJndW1lbnRzW0VdO1xuICAgICAgICByZXR1cm4gdC53aXRoKG4sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBzLmFwcGx5KGwsIF8pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgIHdyaXRhYmxlOiAhMSxcbiAgICAgICAgdmFsdWU6IHMubGVuZ3RoXG4gICAgICB9KSwgaTtcbiAgICB9LCBlLnByb3RvdHlwZS5fYmluZExpc3RlbmVyID0gZnVuY3Rpb24obiwgcykge1xuICAgICAgdmFyIHQgPSBzO1xuICAgICAgcmV0dXJuIHQuX19vdF9saXN0ZW5lcnMgIT09IHZvaWQgMCB8fCAodC5fX290X2xpc3RlbmVycyA9IHt9LCB0eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiAodC5hZGRFdmVudExpc3RlbmVyID0gdGhpcy5fcGF0Y2hBZGRFdmVudExpc3RlbmVyKHQsIHQuYWRkRXZlbnRMaXN0ZW5lciwgbikpLCB0eXBlb2YgdC5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiAodC5yZW1vdmVFdmVudExpc3RlbmVyID0gdGhpcy5fcGF0Y2hSZW1vdmVFdmVudExpc3RlbmVyKHQsIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcikpKSwgcztcbiAgICB9LCBlLnByb3RvdHlwZS5fY3JlYXRlWm9uZU5hbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX3pvbmVDb3VudGVyKys7XG4gICAgICB2YXIgbiA9IE1hdGgucmFuZG9tKCk7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZUNvdW50ZXIgKyBcIi1cIiArIG47XG4gICAgfSwgZS5wcm90b3R5cGUuX2NyZWF0ZVpvbmUgPSBmdW5jdGlvbihuLCBzKSB7XG4gICAgICB2YXIgdDtcbiAgICAgIHJldHVybiBab25lLmN1cnJlbnQuZm9yayh7XG4gICAgICAgIG5hbWU6IG4sXG4gICAgICAgIHByb3BlcnRpZXM6ICh0ID0ge30sIHRbJGVdID0gcywgdClcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRBY3RpdmVab25lID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gWm9uZS5jdXJyZW50O1xuICAgIH0sIGUucHJvdG90eXBlLl9wYXRjaEFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihuLCBzLCB0KSB7XG4gICAgICB2YXIgaSA9IHRoaXM7XG4gICAgICByZXR1cm4gZnVuY3Rpb24obCwgXywgRSkge1xuICAgICAgICBuLl9fb3RfbGlzdGVuZXJzID09PSB2b2lkIDAgJiYgKG4uX19vdF9saXN0ZW5lcnMgPSB7fSk7XG4gICAgICAgIHZhciBUID0gbi5fX290X2xpc3RlbmVyc1tsXTtcbiAgICAgICAgVCA9PT0gdm9pZCAwICYmIChUID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCksIG4uX19vdF9saXN0ZW5lcnNbbF0gPSBUKTtcbiAgICAgICAgdmFyIHcgPSBpLmJpbmQodCwgXyk7XG4gICAgICAgIHJldHVybiBULnNldChfLCB3KSwgcy5jYWxsKHRoaXMsIGwsIHcsIEUpO1xuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS5fcGF0Y2hSZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24obiwgcykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIGkpIHtcbiAgICAgICAgaWYgKG4uX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCB8fCBuLl9fb3RfbGlzdGVuZXJzW3RdID09PSB2b2lkIDApXG4gICAgICAgICAgcmV0dXJuIHMuY2FsbCh0aGlzLCB0LCBpKTtcbiAgICAgICAgdmFyIGwgPSBuLl9fb3RfbGlzdGVuZXJzW3RdLCBfID0gbC5nZXQoaSk7XG4gICAgICAgIHJldHVybiBsLmRlbGV0ZShpKSwgcy5jYWxsKHRoaXMsIHQsIF8gfHwgaSk7XG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKVxuICAgICAgICByZXR1cm4gRG87XG4gICAgICB2YXIgbiA9IHRoaXMuX2dldEFjdGl2ZVpvbmUoKSwgcyA9IHRoaXMuX2FjdGl2ZUNvbnRleHRGcm9tWm9uZShuKTtcbiAgICAgIHJldHVybiBzIHx8IERvO1xuICAgIH0sIGUucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihuLCBzKSB7XG4gICAgICByZXR1cm4gbiA9PT0gdm9pZCAwICYmIChuID0gdGhpcy5hY3RpdmUoKSksIHR5cGVvZiBzID09IFwiZnVuY3Rpb25cIiA/IHRoaXMuX2JpbmRGdW5jdGlvbihuLCBzKSA6IChFdChzKSAmJiB0aGlzLl9iaW5kTGlzdGVuZXIobiwgcyksIHMpO1xuICAgIH0sIGUucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkID0gITEsIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA9ICEwLCB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbihuLCBzLCB0KSB7XG4gICAgICBmb3IgKHZhciBpID0gW10sIGwgPSAzOyBsIDwgYXJndW1lbnRzLmxlbmd0aDsgbCsrKVxuICAgICAgICBpW2wgLSAzXSA9IGFyZ3VtZW50c1tsXTtcbiAgICAgIHZhciBfID0gdGhpcy5fY3JlYXRlWm9uZU5hbWUoKSwgRSA9IHRoaXMuX2NyZWF0ZVpvbmUoXywgbik7XG4gICAgICByZXR1cm4gRS5ydW4ocywgdCwgaSk7XG4gICAgfSwgZTtcbiAgfSgpXG4pO1xuLyoqXG4gKiBAbGljZW5zZSBBbmd1bGFyIHY8dW5rbm93bj5cbiAqIChjKSAyMDEwLTIwMjQgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvL1xuICogTGljZW5zZTogTUlUXG4gKi9cbmNvbnN0IGFlID0gZ2xvYmFsVGhpcztcbmZ1bmN0aW9uIHRlKGUpIHtcbiAgcmV0dXJuIChhZS5fX1pvbmVfc3ltYm9sX3ByZWZpeCB8fCBcIl9fem9uZV9zeW1ib2xfX1wiKSArIGU7XG59XG5mdW5jdGlvbiBUdCgpIHtcbiAgY29uc3QgZSA9IGFlLnBlcmZvcm1hbmNlO1xuICBmdW5jdGlvbiBuKEgpIHtcbiAgICBlICYmIGUubWFyayAmJiBlLm1hcmsoSCk7XG4gIH1cbiAgZnVuY3Rpb24gcyhILCBhKSB7XG4gICAgZSAmJiBlLm1lYXN1cmUgJiYgZS5tZWFzdXJlKEgsIGEpO1xuICB9XG4gIG4oXCJab25lXCIpO1xuICBjb25zdCBZID0gY2xhc3MgWSB7XG4gICAgc3RhdGljIGFzc2VydFpvbmVQYXRjaGVkKCkge1xuICAgICAgaWYgKGFlLlByb21pc2UgIT09IFMuWm9uZUF3YXJlUHJvbWlzZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWm9uZS5qcyBoYXMgZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCkuUHJvbWlzZWAgaGFzIGJlZW4gb3ZlcndyaXR0ZW4uXFxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKVwiKTtcbiAgICB9XG4gICAgc3RhdGljIGdldCByb290KCkge1xuICAgICAgbGV0IGEgPSBZLmN1cnJlbnQ7XG4gICAgICBmb3IgKDsgYS5wYXJlbnQ7IClcbiAgICAgICAgYSA9IGEucGFyZW50O1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgY3VycmVudCgpIHtcbiAgICAgIHJldHVybiBiLnpvbmU7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgY3VycmVudFRhc2soKSB7XG4gICAgICByZXR1cm4gTztcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnJlcXVpcmUtaW50ZXJuYWwtd2l0aC11bmRlcnNjb3JlXG4gICAgc3RhdGljIF9fbG9hZF9wYXRjaChhLCBjLCBvID0gITEpIHtcbiAgICAgIGlmIChTLmhhc093blByb3BlcnR5KGEpKSB7XG4gICAgICAgIGNvbnN0IG0gPSBhZVt0ZShcImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrXCIpXSA9PT0gITA7XG4gICAgICAgIGlmICghbyAmJiBtKVxuICAgICAgICAgIHRocm93IEVycm9yKFwiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6IFwiICsgYSk7XG4gICAgICB9IGVsc2UgaWYgKCFhZVtcIl9fWm9uZV9kaXNhYmxlX1wiICsgYV0pIHtcbiAgICAgICAgY29uc3QgbSA9IFwiWm9uZTpcIiArIGE7XG4gICAgICAgIG4obSksIFNbYV0gPSBjKGFlLCBZLCBDKSwgcyhtLCBtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHBhcmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICAgfVxuICAgIGdldCBuYW1lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGEsIGMpIHtcbiAgICAgIHRoaXMuX3BhcmVudCA9IGEsIHRoaXMuX25hbWUgPSBjID8gYy5uYW1lIHx8IFwidW5uYW1lZFwiIDogXCI8cm9vdD5cIiwgdGhpcy5fcHJvcGVydGllcyA9IGMgJiYgYy5wcm9wZXJ0aWVzIHx8IHt9LCB0aGlzLl96b25lRGVsZWdhdGUgPSBuZXcgbCh0aGlzLCB0aGlzLl9wYXJlbnQgJiYgdGhpcy5fcGFyZW50Ll96b25lRGVsZWdhdGUsIGMpO1xuICAgIH1cbiAgICBnZXQoYSkge1xuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Wm9uZVdpdGgoYSk7XG4gICAgICBpZiAoYylcbiAgICAgICAgcmV0dXJuIGMuX3Byb3BlcnRpZXNbYV07XG4gICAgfVxuICAgIGdldFpvbmVXaXRoKGEpIHtcbiAgICAgIGxldCBjID0gdGhpcztcbiAgICAgIGZvciAoOyBjOyApIHtcbiAgICAgICAgaWYgKGMuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoYSkpXG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIGMgPSBjLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZm9yayhhKSB7XG4gICAgICBpZiAoIWEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmVTcGVjIHJlcXVpcmVkIVwiKTtcbiAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLCBhKTtcbiAgICB9XG4gICAgd3JhcChhLCBjKSB7XG4gICAgICBpZiAodHlwZW9mIGEgIT0gXCJmdW5jdGlvblwiKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiBcIiArIGEpO1xuICAgICAgY29uc3QgbyA9IHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcywgYSwgYyksIG0gPSB0aGlzO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbS5ydW5HdWFyZGVkKG8sIHRoaXMsIGFyZ3VtZW50cywgYyk7XG4gICAgICB9O1xuICAgIH1cbiAgICBydW4oYSwgYywgbywgbSkge1xuICAgICAgYiA9IHsgcGFyZW50OiBiLCB6b25lOiB0aGlzIH07XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLCBhLCBjLCBvLCBtKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgcnVuR3VhcmRlZChhLCBjID0gbnVsbCwgbywgbSkge1xuICAgICAgYiA9IHsgcGFyZW50OiBiLCB6b25lOiB0aGlzIH07XG4gICAgICB0cnkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsIGEsIGMsIG8sIG0pO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCB4KSlcbiAgICAgICAgICAgIHRocm93IHg7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgcnVuVGFzayhhLCBjLCBvKSB7XG4gICAgICBpZiAoYS56b25lICE9IHRoaXMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAoYS56b25lIHx8IEspLm5hbWUgKyBcIjsgRXhlY3V0aW9uOiBcIiArIHRoaXMubmFtZSArIFwiKVwiKTtcbiAgICAgIGNvbnN0IG0gPSBhLCB7IHR5cGU6IHgsIGRhdGE6IHsgaXNQZXJpb2RpYzogTSA9ICExLCBpc1JlZnJlc2hhYmxlOiBpZSA9ICExIH0gPSB7fSB9ID0gYTtcbiAgICAgIGlmIChhLnN0YXRlID09PSBYICYmICh4ID09PSBVIHx8IHggPT09IHkpKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBsZSA9IGEuc3RhdGUgIT0gQTtcbiAgICAgIGxlICYmIG0uX3RyYW5zaXRpb25UbyhBLCBkKTtcbiAgICAgIGNvbnN0IHVlID0gTztcbiAgICAgIE8gPSBtLCBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHggPT0geSAmJiBhLmRhdGEgJiYgIU0gJiYgIWllICYmIChhLmNhbmNlbEZuID0gdm9pZCAwKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcywgbSwgYywgbyk7XG4gICAgICAgIH0gY2F0Y2ggKHJlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCByZSkpXG4gICAgICAgICAgICB0aHJvdyByZTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3QgcmUgPSBhLnN0YXRlO1xuICAgICAgICBpZiAocmUgIT09IFggJiYgcmUgIT09IHEpXG4gICAgICAgICAgaWYgKHggPT0gVSB8fCBNIHx8IGllICYmIHJlID09PSBrKVxuICAgICAgICAgICAgbGUgJiYgbS5fdHJhbnNpdGlvblRvKGQsIEEsIGspO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaCA9IG0uX3pvbmVEZWxlZ2F0ZXM7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUYXNrQ291bnQobSwgLTEpLCBsZSAmJiBtLl90cmFuc2l0aW9uVG8oWCwgQSwgWCksIGllICYmIChtLl96b25lRGVsZWdhdGVzID0gaCk7XG4gICAgICAgICAgfVxuICAgICAgICBiID0gYi5wYXJlbnQsIE8gPSB1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2NoZWR1bGVUYXNrKGEpIHtcbiAgICAgIGlmIChhLnpvbmUgJiYgYS56b25lICE9PSB0aGlzKSB7XG4gICAgICAgIGxldCBvID0gdGhpcztcbiAgICAgICAgZm9yICg7IG87ICkge1xuICAgICAgICAgIGlmIChvID09PSBhLnpvbmUpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gJHt0aGlzLm5hbWV9IHdoaWNoIGlzIGRlc2NlbmRhbnRzIG9mIHRoZSBvcmlnaW5hbCB6b25lICR7YS56b25lLm5hbWV9YCk7XG4gICAgICAgICAgbyA9IG8ucGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhLl90cmFuc2l0aW9uVG8oaywgWCk7XG4gICAgICBjb25zdCBjID0gW107XG4gICAgICBhLl96b25lRGVsZWdhdGVzID0gYywgYS5fem9uZSA9IHRoaXM7XG4gICAgICB0cnkge1xuICAgICAgICBhID0gdGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLCBhKTtcbiAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgdGhyb3cgYS5fdHJhbnNpdGlvblRvKHEsIGssIFgpLCB0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgbyksIG87XG4gICAgICB9XG4gICAgICByZXR1cm4gYS5fem9uZURlbGVnYXRlcyA9PT0gYyAmJiB0aGlzLl91cGRhdGVUYXNrQ291bnQoYSwgMSksIGEuc3RhdGUgPT0gayAmJiBhLl90cmFuc2l0aW9uVG8oZCwgayksIGE7XG4gICAgfVxuICAgIHNjaGVkdWxlTWljcm9UYXNrKGEsIGMsIG8sIG0pIHtcbiAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgXyhWLCBhLCBjLCBvLCBtLCB2b2lkIDApKTtcbiAgICB9XG4gICAgc2NoZWR1bGVNYWNyb1Rhc2soYSwgYywgbywgbSwgeCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBfKHksIGEsIGMsIG8sIG0sIHgpKTtcbiAgICB9XG4gICAgc2NoZWR1bGVFdmVudFRhc2soYSwgYywgbywgbSwgeCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBfKFUsIGEsIGMsIG8sIG0sIHgpKTtcbiAgICB9XG4gICAgY2FuY2VsVGFzayhhKSB7XG4gICAgICBpZiAoYS56b25lICE9IHRoaXMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAoYS56b25lIHx8IEspLm5hbWUgKyBcIjsgRXhlY3V0aW9uOiBcIiArIHRoaXMubmFtZSArIFwiKVwiKTtcbiAgICAgIGlmICghKGEuc3RhdGUgIT09IGQgJiYgYS5zdGF0ZSAhPT0gQSkpIHtcbiAgICAgICAgYS5fdHJhbnNpdGlvblRvKEYsIGQsIEEpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsIGEpO1xuICAgICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgICAgdGhyb3cgYS5fdHJhbnNpdGlvblRvKHEsIEYpLCB0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgYyksIGM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChhLCAtMSksIGEuX3RyYW5zaXRpb25UbyhYLCBGKSwgYS5ydW5Db3VudCA9IC0xLCBhO1xuICAgICAgfVxuICAgIH1cbiAgICBfdXBkYXRlVGFza0NvdW50KGEsIGMpIHtcbiAgICAgIGNvbnN0IG8gPSBhLl96b25lRGVsZWdhdGVzO1xuICAgICAgYyA9PSAtMSAmJiAoYS5fem9uZURlbGVnYXRlcyA9IG51bGwpO1xuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBvLmxlbmd0aDsgbSsrKVxuICAgICAgICBvW21dLl91cGRhdGVUYXNrQ291bnQoYS50eXBlLCBjKTtcbiAgICB9XG4gIH07XG4gIFkuX19zeW1ib2xfXyA9IHRlO1xuICBsZXQgdCA9IFk7XG4gIGNvbnN0IGkgPSB7XG4gICAgbmFtZTogXCJcIixcbiAgICBvbkhhc1Rhc2s6IChILCBhLCBjLCBvKSA9PiBILmhhc1Rhc2soYywgbyksXG4gICAgb25TY2hlZHVsZVRhc2s6IChILCBhLCBjLCBvKSA9PiBILnNjaGVkdWxlVGFzayhjLCBvKSxcbiAgICBvbkludm9rZVRhc2s6IChILCBhLCBjLCBvLCBtLCB4KSA9PiBILmludm9rZVRhc2soYywgbywgbSwgeCksXG4gICAgb25DYW5jZWxUYXNrOiAoSCwgYSwgYywgbykgPT4gSC5jYW5jZWxUYXNrKGMsIG8pXG4gIH07XG4gIGNsYXNzIGwge1xuICAgIGdldCB6b25lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGEsIGMsIG8pIHtcbiAgICAgIHRoaXMuX3Rhc2tDb3VudHMgPSB7XG4gICAgICAgIG1pY3JvVGFzazogMCxcbiAgICAgICAgbWFjcm9UYXNrOiAwLFxuICAgICAgICBldmVudFRhc2s6IDBcbiAgICAgIH0sIHRoaXMuX3pvbmUgPSBhLCB0aGlzLl9wYXJlbnREZWxlZ2F0ZSA9IGMsIHRoaXMuX2ZvcmtaUyA9IG8gJiYgKG8gJiYgby5vbkZvcmsgPyBvIDogYy5fZm9ya1pTKSwgdGhpcy5fZm9ya0RsZ3QgPSBvICYmIChvLm9uRm9yayA/IGMgOiBjLl9mb3JrRGxndCksIHRoaXMuX2ZvcmtDdXJyWm9uZSA9IG8gJiYgKG8ub25Gb3JrID8gdGhpcy5fem9uZSA6IGMuX2ZvcmtDdXJyWm9uZSksIHRoaXMuX2ludGVyY2VwdFpTID0gbyAmJiAoby5vbkludGVyY2VwdCA/IG8gOiBjLl9pbnRlcmNlcHRaUyksIHRoaXMuX2ludGVyY2VwdERsZ3QgPSBvICYmIChvLm9uSW50ZXJjZXB0ID8gYyA6IGMuX2ludGVyY2VwdERsZ3QpLCB0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSA9IG8gJiYgKG8ub25JbnRlcmNlcHQgPyB0aGlzLl96b25lIDogYy5faW50ZXJjZXB0Q3VyclpvbmUpLCB0aGlzLl9pbnZva2VaUyA9IG8gJiYgKG8ub25JbnZva2UgPyBvIDogYy5faW52b2tlWlMpLCB0aGlzLl9pbnZva2VEbGd0ID0gbyAmJiAoby5vbkludm9rZSA/IGMgOiBjLl9pbnZva2VEbGd0KSwgdGhpcy5faW52b2tlQ3VyclpvbmUgPSBvICYmIChvLm9uSW52b2tlID8gdGhpcy5fem9uZSA6IGMuX2ludm9rZUN1cnJab25lKSwgdGhpcy5faGFuZGxlRXJyb3JaUyA9IG8gJiYgKG8ub25IYW5kbGVFcnJvciA/IG8gOiBjLl9oYW5kbGVFcnJvclpTKSwgdGhpcy5faGFuZGxlRXJyb3JEbGd0ID0gbyAmJiAoby5vbkhhbmRsZUVycm9yID8gYyA6IGMuX2hhbmRsZUVycm9yRGxndCksIHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUgPSBvICYmIChvLm9uSGFuZGxlRXJyb3IgPyB0aGlzLl96b25lIDogYy5faGFuZGxlRXJyb3JDdXJyWm9uZSksIHRoaXMuX3NjaGVkdWxlVGFza1pTID0gbyAmJiAoby5vblNjaGVkdWxlVGFzayA/IG8gOiBjLl9zY2hlZHVsZVRhc2taUyksIHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QgPSBvICYmIChvLm9uU2NoZWR1bGVUYXNrID8gYyA6IGMuX3NjaGVkdWxlVGFza0RsZ3QpLCB0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSA9IG8gJiYgKG8ub25TY2hlZHVsZVRhc2sgPyB0aGlzLl96b25lIDogYy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUpLCB0aGlzLl9pbnZva2VUYXNrWlMgPSBvICYmIChvLm9uSW52b2tlVGFzayA/IG8gOiBjLl9pbnZva2VUYXNrWlMpLCB0aGlzLl9pbnZva2VUYXNrRGxndCA9IG8gJiYgKG8ub25JbnZva2VUYXNrID8gYyA6IGMuX2ludm9rZVRhc2tEbGd0KSwgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gbyAmJiAoby5vbkludm9rZVRhc2sgPyB0aGlzLl96b25lIDogYy5faW52b2tlVGFza0N1cnJab25lKSwgdGhpcy5fY2FuY2VsVGFza1pTID0gbyAmJiAoby5vbkNhbmNlbFRhc2sgPyBvIDogYy5fY2FuY2VsVGFza1pTKSwgdGhpcy5fY2FuY2VsVGFza0RsZ3QgPSBvICYmIChvLm9uQ2FuY2VsVGFzayA/IGMgOiBjLl9jYW5jZWxUYXNrRGxndCksIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IG8gJiYgKG8ub25DYW5jZWxUYXNrID8gdGhpcy5fem9uZSA6IGMuX2NhbmNlbFRhc2tDdXJyWm9uZSksIHRoaXMuX2hhc1Rhc2taUyA9IG51bGwsIHRoaXMuX2hhc1Rhc2tEbGd0ID0gbnVsbCwgdGhpcy5faGFzVGFza0RsZ3RPd25lciA9IG51bGwsIHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSA9IG51bGw7XG4gICAgICBjb25zdCBtID0gbyAmJiBvLm9uSGFzVGFzaywgeCA9IGMgJiYgYy5faGFzVGFza1pTO1xuICAgICAgKG0gfHwgeCkgJiYgKHRoaXMuX2hhc1Rhc2taUyA9IG0gPyBvIDogaSwgdGhpcy5faGFzVGFza0RsZ3QgPSBjLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gdGhpcywgdGhpcy5faGFzVGFza0N1cnJab25lID0gdGhpcy5fem9uZSwgby5vblNjaGVkdWxlVGFzayB8fCAodGhpcy5fc2NoZWR1bGVUYXNrWlMgPSBpLCB0aGlzLl9zY2hlZHVsZVRhc2tEbGd0ID0gYywgdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUgPSB0aGlzLl96b25lKSwgby5vbkludm9rZVRhc2sgfHwgKHRoaXMuX2ludm9rZVRhc2taUyA9IGksIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gYywgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gdGhpcy5fem9uZSksIG8ub25DYW5jZWxUYXNrIHx8ICh0aGlzLl9jYW5jZWxUYXNrWlMgPSBpLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IGMsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUpKTtcbiAgICB9XG4gICAgZm9yayhhLCBjKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ya1pTID8gdGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCwgdGhpcy56b25lLCBhLCBjKSA6IG5ldyB0KGEsIGMpO1xuICAgIH1cbiAgICBpbnRlcmNlcHQoYSwgYywgbykge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTID8gdGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCwgdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsIGEsIGMsIG8pIDogYztcbiAgICB9XG4gICAgaW52b2tlKGEsIGMsIG8sIG0sIHgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnZva2VaUyA/IHRoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsIHRoaXMuX2ludm9rZUN1cnJab25lLCBhLCBjLCBvLCBtLCB4KSA6IGMuYXBwbHkobywgbSk7XG4gICAgfVxuICAgIGhhbmRsZUVycm9yKGEsIGMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVFcnJvclpTID8gdGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSwgYSwgYykgOiAhMDtcbiAgICB9XG4gICAgc2NoZWR1bGVUYXNrKGEsIGMpIHtcbiAgICAgIGxldCBvID0gYztcbiAgICAgIGlmICh0aGlzLl9zY2hlZHVsZVRhc2taUylcbiAgICAgICAgdGhpcy5faGFzVGFza1pTICYmIG8uX3pvbmVEZWxlZ2F0ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwgbyA9IHRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLCBhLCBjKSwgbyB8fCAobyA9IGMpO1xuICAgICAgZWxzZSBpZiAoYy5zY2hlZHVsZUZuKVxuICAgICAgICBjLnNjaGVkdWxlRm4oYyk7XG4gICAgICBlbHNlIGlmIChjLnR5cGUgPT0gVilcbiAgICAgICAgQihjKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uXCIpO1xuICAgICAgcmV0dXJuIG87XG4gICAgfVxuICAgIGludm9rZVRhc2soYSwgYywgbywgbSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUyA/IHRoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsIHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSwgYSwgYywgbywgbSkgOiBjLmNhbGxiYWNrLmFwcGx5KG8sIG0pO1xuICAgIH1cbiAgICBjYW5jZWxUYXNrKGEsIGMpIHtcbiAgICAgIGxldCBvO1xuICAgICAgaWYgKHRoaXMuX2NhbmNlbFRhc2taUylcbiAgICAgICAgbyA9IHRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSwgYSwgYyk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFjLmNhbmNlbEZuKVxuICAgICAgICAgIHRocm93IEVycm9yKFwiVGFzayBpcyBub3QgY2FuY2VsYWJsZVwiKTtcbiAgICAgICAgbyA9IGMuY2FuY2VsRm4oYyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbztcbiAgICB9XG4gICAgaGFzVGFzayhhLCBjKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9oYXNUYXNrWlMgJiYgdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCwgdGhpcy5faGFzVGFza0N1cnJab25lLCBhLCBjKTtcbiAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihhLCBvKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnJlcXVpcmUtaW50ZXJuYWwtd2l0aC11bmRlcnNjb3JlXG4gICAgX3VwZGF0ZVRhc2tDb3VudChhLCBjKSB7XG4gICAgICBjb25zdCBvID0gdGhpcy5fdGFza0NvdW50cywgbSA9IG9bYV0sIHggPSBvW2FdID0gbSArIGM7XG4gICAgICBpZiAoeCA8IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC5cIik7XG4gICAgICBpZiAobSA9PSAwIHx8IHggPT0gMCkge1xuICAgICAgICBjb25zdCBNID0ge1xuICAgICAgICAgIG1pY3JvVGFzazogby5taWNyb1Rhc2sgPiAwLFxuICAgICAgICAgIG1hY3JvVGFzazogby5tYWNyb1Rhc2sgPiAwLFxuICAgICAgICAgIGV2ZW50VGFzazogby5ldmVudFRhc2sgPiAwLFxuICAgICAgICAgIGNoYW5nZTogYVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmhhc1Rhc2sodGhpcy5fem9uZSwgTSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNsYXNzIF8ge1xuICAgIGNvbnN0cnVjdG9yKGEsIGMsIG8sIG0sIHgsIE0pIHtcbiAgICAgIGlmICh0aGlzLl96b25lID0gbnVsbCwgdGhpcy5ydW5Db3VudCA9IDAsIHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsLCB0aGlzLl9zdGF0ZSA9IFwibm90U2NoZWR1bGVkXCIsIHRoaXMudHlwZSA9IGEsIHRoaXMuc291cmNlID0gYywgdGhpcy5kYXRhID0gbSwgdGhpcy5zY2hlZHVsZUZuID0geCwgdGhpcy5jYW5jZWxGbiA9IE0sICFvKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjYWxsYmFjayBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBvO1xuICAgICAgY29uc3QgaWUgPSB0aGlzO1xuICAgICAgYSA9PT0gVSAmJiBtICYmIG0udXNlRyA/IHRoaXMuaW52b2tlID0gXy5pbnZva2VUYXNrIDogdGhpcy5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF8uaW52b2tlVGFzay5jYWxsKGFlLCBpZSwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHN0YXRpYyBpbnZva2VUYXNrKGEsIGMsIG8pIHtcbiAgICAgIGEgfHwgKGEgPSB0aGlzKSwgUSsrO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGEucnVuQ291bnQrKywgYS56b25lLnJ1blRhc2soYSwgYywgbyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBRID09IDEgJiYgSigpLCBRLS07XG4gICAgICB9XG4gICAgfVxuICAgIGdldCB6b25lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmU7XG4gICAgfVxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG4gICAgY2FuY2VsU2NoZWR1bGVSZXF1ZXN0KCkge1xuICAgICAgdGhpcy5fdHJhbnNpdGlvblRvKFgsIGspO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cmVxdWlyZS1pbnRlcm5hbC13aXRoLXVuZGVyc2NvcmVcbiAgICBfdHJhbnNpdGlvblRvKGEsIGMsIG8pIHtcbiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gYyB8fCB0aGlzLl9zdGF0ZSA9PT0gbylcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBhLCBhID09IFggJiYgKHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMudHlwZX0gJyR7dGhpcy5zb3VyY2V9JzogY2FuIG5vdCB0cmFuc2l0aW9uIHRvICcke2F9JywgZXhwZWN0aW5nIHN0YXRlICcke2N9JyR7byA/IFwiIG9yICdcIiArIG8gKyBcIidcIiA6IFwiXCJ9LCB3YXMgJyR7dGhpcy5fc3RhdGV9Jy5gKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhICYmIHR5cGVvZiB0aGlzLmRhdGEuaGFuZGxlSWQgPCBcInVcIiA/IHRoaXMuZGF0YS5oYW5kbGVJZC50b1N0cmluZygpIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICAvLyBhZGQgdG9KU09OIG1ldGhvZCB0byBwcmV2ZW50IGN5Y2xpYyBlcnJvciB3aGVuXG4gICAgLy8gY2FsbCBKU09OLnN0cmluZ2lmeSh6b25lVGFzaylcbiAgICB0b0pTT04oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICB6b25lOiB0aGlzLnpvbmUubmFtZSxcbiAgICAgICAgcnVuQ291bnQ6IHRoaXMucnVuQ291bnRcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGNvbnN0IEUgPSB0ZShcInNldFRpbWVvdXRcIiksIFQgPSB0ZShcIlByb21pc2VcIiksIHcgPSB0ZShcInRoZW5cIik7XG4gIGxldCBwID0gW10sIFIgPSAhMSwgRDtcbiAgZnVuY3Rpb24gSShIKSB7XG4gICAgaWYgKEQgfHwgYWVbVF0gJiYgKEQgPSBhZVtUXS5yZXNvbHZlKDApKSwgRCkge1xuICAgICAgbGV0IGEgPSBEW3ddO1xuICAgICAgYSB8fCAoYSA9IEQudGhlbiksIGEuY2FsbChELCBIKTtcbiAgICB9IGVsc2VcbiAgICAgIGFlW0VdKEgsIDApO1xuICB9XG4gIGZ1bmN0aW9uIEIoSCkge1xuICAgIFEgPT09IDAgJiYgcC5sZW5ndGggPT09IDAgJiYgSShKKSwgSCAmJiBwLnB1c2goSCk7XG4gIH1cbiAgZnVuY3Rpb24gSigpIHtcbiAgICBpZiAoIVIpIHtcbiAgICAgIGZvciAoUiA9ICEwOyBwLmxlbmd0aDsgKSB7XG4gICAgICAgIGNvbnN0IEggPSBwO1xuICAgICAgICBwID0gW107XG4gICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgSC5sZW5ndGg7IGErKykge1xuICAgICAgICAgIGNvbnN0IGMgPSBIW2FdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjLnpvbmUucnVuVGFzayhjLCBudWxsLCBudWxsKTtcbiAgICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgICBDLm9uVW5oYW5kbGVkRXJyb3Iobyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBDLm1pY3JvdGFza0RyYWluRG9uZSgpLCBSID0gITE7XG4gICAgfVxuICB9XG4gIGNvbnN0IEsgPSB7IG5hbWU6IFwiTk8gWk9ORVwiIH0sIFggPSBcIm5vdFNjaGVkdWxlZFwiLCBrID0gXCJzY2hlZHVsaW5nXCIsIGQgPSBcInNjaGVkdWxlZFwiLCBBID0gXCJydW5uaW5nXCIsIEYgPSBcImNhbmNlbGluZ1wiLCBxID0gXCJ1bmtub3duXCIsIFYgPSBcIm1pY3JvVGFza1wiLCB5ID0gXCJtYWNyb1Rhc2tcIiwgVSA9IFwiZXZlbnRUYXNrXCIsIFMgPSB7fSwgQyA9IHtcbiAgICBzeW1ib2w6IHRlLFxuICAgIGN1cnJlbnRab25lRnJhbWU6ICgpID0+IGIsXG4gICAgb25VbmhhbmRsZWRFcnJvcjogVyxcbiAgICBtaWNyb3Rhc2tEcmFpbkRvbmU6IFcsXG4gICAgc2NoZWR1bGVNaWNyb1Rhc2s6IEIsXG4gICAgc2hvd1VuY2F1Z2h0RXJyb3I6ICgpID0+ICF0W3RlKFwiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvclwiKV0sXG4gICAgcGF0Y2hFdmVudFRhcmdldDogKCkgPT4gW10sXG4gICAgcGF0Y2hPblByb3BlcnRpZXM6IFcsXG4gICAgcGF0Y2hNZXRob2Q6ICgpID0+IFcsXG4gICAgYmluZEFyZ3VtZW50czogKCkgPT4gW10sXG4gICAgcGF0Y2hUaGVuOiAoKSA9PiBXLFxuICAgIHBhdGNoTWFjcm9UYXNrOiAoKSA9PiBXLFxuICAgIHBhdGNoRXZlbnRQcm90b3R5cGU6ICgpID0+IFcsXG4gICAgaXNJRU9yRWRnZTogKCkgPT4gITEsXG4gICAgZ2V0R2xvYmFsT2JqZWN0czogKCkgPT4ge1xuICAgIH0sXG4gICAgT2JqZWN0RGVmaW5lUHJvcGVydHk6ICgpID0+IFcsXG4gICAgT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAoKSA9PiB7XG4gICAgfSxcbiAgICBPYmplY3RDcmVhdGU6ICgpID0+IHtcbiAgICB9LFxuICAgIEFycmF5U2xpY2U6ICgpID0+IFtdLFxuICAgIHBhdGNoQ2xhc3M6ICgpID0+IFcsXG4gICAgd3JhcFdpdGhDdXJyZW50Wm9uZTogKCkgPT4gVyxcbiAgICBmaWx0ZXJQcm9wZXJ0aWVzOiAoKSA9PiBbXSxcbiAgICBhdHRhY2hPcmlnaW5Ub1BhdGNoZWQ6ICgpID0+IFcsXG4gICAgX3JlZGVmaW5lUHJvcGVydHk6ICgpID0+IFcsXG4gICAgcGF0Y2hDYWxsYmFja3M6ICgpID0+IFcsXG4gICAgbmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2s6IElcbiAgfTtcbiAgbGV0IGIgPSB7IHBhcmVudDogbnVsbCwgem9uZTogbmV3IHQobnVsbCwgbnVsbCkgfSwgTyA9IG51bGwsIFEgPSAwO1xuICBmdW5jdGlvbiBXKCkge1xuICB9XG4gIHJldHVybiBzKFwiWm9uZVwiLCBcIlpvbmVcIiksIHQ7XG59XG5mdW5jdGlvbiBwdCgpIHtcbiAgY29uc3QgZSA9IGdsb2JhbFRoaXMsIG4gPSBlW3RlKFwiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2tcIildID09PSAhMDtcbiAgaWYgKGUuWm9uZSAmJiAobiB8fCB0eXBlb2YgZS5ab25lLl9fc3ltYm9sX18gIT0gXCJmdW5jdGlvblwiKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lIGFscmVhZHkgbG9hZGVkLlwiKTtcbiAgcmV0dXJuIGUuWm9uZSA/PyAoZS5ab25lID0gVHQoKSksIGUuWm9uZTtcbn1cbmNvbnN0IGJlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgamUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIEhlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBndCA9IE9iamVjdC5jcmVhdGUsIHl0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLCB4ZSA9IFwiYWRkRXZlbnRMaXN0ZW5lclwiLCBGZSA9IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLCBaZSA9IHRlKHhlKSwgTWUgPSB0ZShGZSksIGZlID0gXCJ0cnVlXCIsIGhlID0gXCJmYWxzZVwiLCBQZSA9IHRlKFwiXCIpO1xuZnVuY3Rpb24gVmUoZSwgbikge1xuICByZXR1cm4gWm9uZS5jdXJyZW50LndyYXAoZSwgbik7XG59XG5mdW5jdGlvbiBHZShlLCBuLCBzLCB0LCBpKSB7XG4gIHJldHVybiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2soZSwgbiwgcywgdCwgaSk7XG59XG5jb25zdCBqID0gdGUsIE9lID0gdHlwZW9mIHdpbmRvdyA8IFwidVwiLCBtZSA9IE9lID8gd2luZG93IDogdm9pZCAwLCAkID0gT2UgJiYgbWUgfHwgZ2xvYmFsVGhpcywgbXQgPSBcInJlbW92ZUF0dHJpYnV0ZVwiO1xuZnVuY3Rpb24gemUoZSwgbikge1xuICBmb3IgKGxldCBzID0gZS5sZW5ndGggLSAxOyBzID49IDA7IHMtLSlcbiAgICB0eXBlb2YgZVtzXSA9PSBcImZ1bmN0aW9uXCIgJiYgKGVbc10gPSBWZShlW3NdLCBuICsgXCJfXCIgKyBzKSk7XG4gIHJldHVybiBlO1xufVxuZnVuY3Rpb24ga3QoZSwgbikge1xuICBjb25zdCBzID0gZS5jb25zdHJ1Y3Rvci5uYW1lO1xuICBmb3IgKGxldCB0ID0gMDsgdCA8IG4ubGVuZ3RoOyB0KyspIHtcbiAgICBjb25zdCBpID0gblt0XSwgbCA9IGVbaV07XG4gICAgaWYgKGwpIHtcbiAgICAgIGNvbnN0IF8gPSBiZShlLCBpKTtcbiAgICAgIGlmICghcnQoXykpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgZVtpXSA9ICgoRSkgPT4ge1xuICAgICAgICBjb25zdCBUID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIEUuYXBwbHkodGhpcywgemUoYXJndW1lbnRzLCBzICsgXCIuXCIgKyBpKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfZShULCBFKSwgVDtcbiAgICAgIH0pKGwpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcnQoZSkge1xuICByZXR1cm4gZSA/IGUud3JpdGFibGUgPT09ICExID8gITEgOiAhKHR5cGVvZiBlLmdldCA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGUuc2V0ID4gXCJ1XCIpIDogITA7XG59XG5jb25zdCBvdCA9IHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSA8IFwidVwiICYmIHNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSwgRGUgPSAhKFwibndcIiBpbiAkKSAmJiB0eXBlb2YgJC5wcm9jZXNzIDwgXCJ1XCIgJiYgJC5wcm9jZXNzLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiLCBCZSA9ICFEZSAmJiAhb3QgJiYgISEoT2UgJiYgbWUuSFRNTEVsZW1lbnQpLCBzdCA9IHR5cGVvZiAkLnByb2Nlc3MgPCBcInVcIiAmJiAkLnByb2Nlc3MudG9TdHJpbmcoKSA9PT0gXCJbb2JqZWN0IHByb2Nlc3NdXCIgJiYgIW90ICYmICEhKE9lICYmIG1lLkhUTUxFbGVtZW50KSwgQ2UgPSB7fSwgdnQgPSBqKFwiZW5hYmxlX2JlZm9yZXVubG9hZFwiKSwgSmUgPSBmdW5jdGlvbihlKSB7XG4gIGlmIChlID0gZSB8fCAkLmV2ZW50LCAhZSlcbiAgICByZXR1cm47XG4gIGxldCBuID0gQ2VbZS50eXBlXTtcbiAgbiB8fCAobiA9IENlW2UudHlwZV0gPSBqKFwiT05fUFJPUEVSVFlcIiArIGUudHlwZSkpO1xuICBjb25zdCBzID0gdGhpcyB8fCBlLnRhcmdldCB8fCAkLCB0ID0gc1tuXTtcbiAgbGV0IGk7XG4gIGlmIChCZSAmJiBzID09PSBtZSAmJiBlLnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgIGNvbnN0IGwgPSBlO1xuICAgIGkgPSB0ICYmIHQuY2FsbCh0aGlzLCBsLm1lc3NhZ2UsIGwuZmlsZW5hbWUsIGwubGluZW5vLCBsLmNvbG5vLCBsLmVycm9yKSwgaSA9PT0gITAgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9IGVsc2VcbiAgICBpID0gdCAmJiB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzQ3NTc5XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtaHRtbDUtMjAxMTA1MjUvaGlzdG9yeS5odG1sI2JlZm9yZXVubG9hZGV2ZW50XG4gICAgLy8gVGhpcyBpcyB0aGUgb25seSBzcGVjaWZpYyBjYXNlIHdlIHNob3VsZCBjaGVjayBmb3IuIFRoZSBzcGVjIGRlZmluZXMgdGhhdCB0aGVcbiAgICAvLyBgcmV0dXJuVmFsdWVgIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSBtZXNzYWdlIHRvIHNob3cgdGhlIHVzZXIuIFdoZW4gdGhlIGV2ZW50XG4gICAgLy8gaXMgY3JlYXRlZCwgdGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICBlLnR5cGUgPT09IFwiYmVmb3JldW5sb2FkXCIgJiYgLy8gVG8gcHJldmVudCBhbnkgYnJlYWtpbmcgY2hhbmdlcyByZXN1bHRpbmcgZnJvbSB0aGlzIGNoYW5nZSwgZ2l2ZW4gdGhhdFxuICAgIC8vIGl0IHdhcyBhbHJlYWR5IGNhdXNpbmcgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgZmFpbHVyZXMgaW4gRzMsIHdlIGhhdmUgaGlkZGVuXG4gICAgLy8gdGhhdCBiZWhhdmlvciBiZWhpbmQgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBmbGFnLiBDb25zdW1lcnMgY2FuIGVuYWJsZSB0aGlzXG4gICAgLy8gZmxhZyBleHBsaWNpdGx5IGlmIHRoZXkgd2FudCB0aGUgYGJlZm9yZXVubG9hZGAgZXZlbnQgdG8gYmUgaGFuZGxlZCBhcyBkZWZpbmVkXG4gICAgLy8gaW4gdGhlIHNwZWNpZmljYXRpb24uXG4gICAgJFt2dF0gJiYgLy8gVGhlIElETCBldmVudCBkZWZpbml0aW9uIGlzIGBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJldHVyblZhbHVlYCwgc28gd2UgY2hlY2sgd2hldGhlclxuICAgIC8vIGB0eXBlb2YgcmVzdWx0YCBpcyBhIHN0cmluZy5cbiAgICB0eXBlb2YgaSA9PSBcInN0cmluZ1wiID8gZS5yZXR1cm5WYWx1ZSA9IGkgOiBpICE9IG51bGwgJiYgIWkgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBLZShlLCBuLCBzKSB7XG4gIGxldCB0ID0gYmUoZSwgbik7XG4gIGlmICghdCAmJiBzICYmIGJlKHMsIG4pICYmICh0ID0geyBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCB9KSwgIXQgfHwgIXQuY29uZmlndXJhYmxlKVxuICAgIHJldHVybjtcbiAgY29uc3QgaSA9IGooXCJvblwiICsgbiArIFwicGF0Y2hlZFwiKTtcbiAgaWYgKGUuaGFzT3duUHJvcGVydHkoaSkgJiYgZVtpXSlcbiAgICByZXR1cm47XG4gIGRlbGV0ZSB0LndyaXRhYmxlLCBkZWxldGUgdC52YWx1ZTtcbiAgY29uc3QgbCA9IHQuZ2V0LCBfID0gdC5zZXQsIEUgPSBuLnNsaWNlKDIpO1xuICBsZXQgVCA9IENlW0VdO1xuICBUIHx8IChUID0gQ2VbRV0gPSBqKFwiT05fUFJPUEVSVFlcIiArIEUpKSwgdC5zZXQgPSBmdW5jdGlvbih3KSB7XG4gICAgbGV0IHAgPSB0aGlzO1xuICAgIGlmICghcCAmJiBlID09PSAkICYmIChwID0gJCksICFwKVxuICAgICAgcmV0dXJuO1xuICAgIHR5cGVvZiBwW1RdID09IFwiZnVuY3Rpb25cIiAmJiBwLnJlbW92ZUV2ZW50TGlzdGVuZXIoRSwgSmUpLCBfICYmIF8uY2FsbChwLCBudWxsKSwgcFtUXSA9IHcsIHR5cGVvZiB3ID09IFwiZnVuY3Rpb25cIiAmJiBwLmFkZEV2ZW50TGlzdGVuZXIoRSwgSmUsICExKTtcbiAgfSwgdC5nZXQgPSBmdW5jdGlvbigpIHtcbiAgICBsZXQgdyA9IHRoaXM7XG4gICAgaWYgKCF3ICYmIGUgPT09ICQgJiYgKHcgPSAkKSwgIXcpXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwID0gd1tUXTtcbiAgICBpZiAocClcbiAgICAgIHJldHVybiBwO1xuICAgIGlmIChsKSB7XG4gICAgICBsZXQgUiA9IGwuY2FsbCh0aGlzKTtcbiAgICAgIGlmIChSKVxuICAgICAgICByZXR1cm4gdC5zZXQuY2FsbCh0aGlzLCBSKSwgdHlwZW9mIHdbbXRdID09IFwiZnVuY3Rpb25cIiAmJiB3LnJlbW92ZUF0dHJpYnV0ZShuKSwgUjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIGplKGUsIG4sIHQpLCBlW2ldID0gITA7XG59XG5mdW5jdGlvbiBpdChlLCBuLCBzKSB7XG4gIGlmIChuKVxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgbi5sZW5ndGg7IHQrKylcbiAgICAgIEtlKGUsIFwib25cIiArIG5bdF0sIHMpO1xuICBlbHNlIHtcbiAgICBjb25zdCB0ID0gW107XG4gICAgZm9yIChjb25zdCBpIGluIGUpXG4gICAgICBpLnNsaWNlKDAsIDIpID09IFwib25cIiAmJiB0LnB1c2goaSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKVxuICAgICAgS2UoZSwgdFtpXSwgcyk7XG4gIH1cbn1cbmNvbnN0IHNlID0gaihcIm9yaWdpbmFsSW5zdGFuY2VcIik7XG5mdW5jdGlvbiB2ZShlKSB7XG4gIGNvbnN0IG4gPSAkW2VdO1xuICBpZiAoIW4pXG4gICAgcmV0dXJuO1xuICAkW2ooZSldID0gbiwgJFtlXSA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGkgPSB6ZShhcmd1bWVudHMsIGUpO1xuICAgIHN3aXRjaCAoaS5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpc1tzZV0gPSBuZXcgbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdGhpc1tzZV0gPSBuZXcgbihpWzBdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHRoaXNbc2VdID0gbmV3IG4oaVswXSwgaVsxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzW3NlXSA9IG5ldyBuKGlbMF0sIGlbMV0sIGlbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgdGhpc1tzZV0gPSBuZXcgbihpWzBdLCBpWzFdLCBpWzJdLCBpWzNdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmcgbGlzdCB0b28gbG9uZy5cIik7XG4gICAgfVxuICB9LCBfZSgkW2VdLCBuKTtcbiAgY29uc3QgcyA9IG5ldyBuKGZ1bmN0aW9uKCkge1xuICB9KTtcbiAgbGV0IHQ7XG4gIGZvciAodCBpbiBzKVxuICAgIGUgPT09IFwiWE1MSHR0cFJlcXVlc3RcIiAmJiB0ID09PSBcInJlc3BvbnNlQmxvYlwiIHx8IGZ1bmN0aW9uKGkpIHtcbiAgICAgIHR5cGVvZiBzW2ldID09IFwiZnVuY3Rpb25cIiA/ICRbZV0ucHJvdG90eXBlW2ldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3NlXVtpXS5hcHBseSh0aGlzW3NlXSwgYXJndW1lbnRzKTtcbiAgICAgIH0gOiBqZSgkW2VdLnByb3RvdHlwZSwgaSwge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uKGwpIHtcbiAgICAgICAgICB0eXBlb2YgbCA9PSBcImZ1bmN0aW9uXCIgPyAodGhpc1tzZV1baV0gPSBWZShsLCBlICsgXCIuXCIgKyBpKSwgX2UodGhpc1tzZV1baV0sIGwpKSA6IHRoaXNbc2VdW2ldID0gbDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tzZV1baV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0odCk7XG4gIGZvciAodCBpbiBuKVxuICAgIHQgIT09IFwicHJvdG90eXBlXCIgJiYgbi5oYXNPd25Qcm9wZXJ0eSh0KSAmJiAoJFtlXVt0XSA9IG5bdF0pO1xufVxuZnVuY3Rpb24gZGUoZSwgbiwgcykge1xuICBsZXQgdCA9IGU7XG4gIGZvciAoOyB0ICYmICF0Lmhhc093blByb3BlcnR5KG4pOyApXG4gICAgdCA9IEhlKHQpO1xuICAhdCAmJiBlW25dICYmICh0ID0gZSk7XG4gIGNvbnN0IGkgPSBqKG4pO1xuICBsZXQgbCA9IG51bGw7XG4gIGlmICh0ICYmICghKGwgPSB0W2ldKSB8fCAhdC5oYXNPd25Qcm9wZXJ0eShpKSkpIHtcbiAgICBsID0gdFtpXSA9IHRbbl07XG4gICAgY29uc3QgXyA9IHQgJiYgYmUodCwgbik7XG4gICAgaWYgKHJ0KF8pKSB7XG4gICAgICBjb25zdCBFID0gcyhsLCBpLCBuKTtcbiAgICAgIHRbbl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEUodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0sIF9lKHRbbl0sIGwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbDtcbn1cbmZ1bmN0aW9uIGJ0KGUsIG4sIHMpIHtcbiAgbGV0IHQgPSBudWxsO1xuICBmdW5jdGlvbiBpKGwpIHtcbiAgICBjb25zdCBfID0gbC5kYXRhO1xuICAgIHJldHVybiBfLmFyZ3NbXy5jYklkeF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGwuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfSwgdC5hcHBseShfLnRhcmdldCwgXy5hcmdzKSwgbDtcbiAgfVxuICB0ID0gZGUoZSwgbiwgKGwpID0+IGZ1bmN0aW9uKF8sIEUpIHtcbiAgICBjb25zdCBUID0gcyhfLCBFKTtcbiAgICByZXR1cm4gVC5jYklkeCA+PSAwICYmIHR5cGVvZiBFW1QuY2JJZHhdID09IFwiZnVuY3Rpb25cIiA/IEdlKFQubmFtZSwgRVtULmNiSWR4XSwgVCwgaSkgOiBsLmFwcGx5KF8sIEUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIF9lKGUsIG4pIHtcbiAgZVtqKFwiT3JpZ2luYWxEZWxlZ2F0ZVwiKV0gPSBuO1xufVxubGV0IFFlID0gITEsIEllID0gITE7XG5mdW5jdGlvbiBQdCgpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlID0gbWUubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBpZiAoZS5pbmRleE9mKFwiTVNJRSBcIikgIT09IC0xIHx8IGUuaW5kZXhPZihcIlRyaWRlbnQvXCIpICE9PSAtMSlcbiAgICAgIHJldHVybiAhMDtcbiAgfSBjYXRjaCB7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gd3QoKSB7XG4gIGlmIChRZSlcbiAgICByZXR1cm4gSWU7XG4gIFFlID0gITA7XG4gIHRyeSB7XG4gICAgY29uc3QgZSA9IG1lLm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgKGUuaW5kZXhPZihcIk1TSUUgXCIpICE9PSAtMSB8fCBlLmluZGV4T2YoXCJUcmlkZW50L1wiKSAhPT0gLTEgfHwgZS5pbmRleE9mKFwiRWRnZS9cIikgIT09IC0xKSAmJiAoSWUgPSAhMCk7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHJldHVybiBJZTtcbn1cbmZ1bmN0aW9uIGV0KGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIHR0KGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwibnVtYmVyXCI7XG59XG5sZXQgeWUgPSAhMTtcbmlmICh0eXBlb2Ygd2luZG93IDwgXCJ1XCIpXG4gIHRyeSB7XG4gICAgY29uc3QgZSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgXCJwYXNzaXZlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHllID0gITA7XG4gICAgICB9XG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsIGUsIGUpLCB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIiwgZSwgZSk7XG4gIH0gY2F0Y2gge1xuICAgIHllID0gITE7XG4gIH1cbmNvbnN0IFJ0ID0ge1xuICB1c2VHOiAhMFxufSwgbmUgPSB7fSwgY3QgPSB7fSwgYXQgPSBuZXcgUmVnRXhwKFwiXlwiICsgUGUgKyBcIihcXFxcdyspKHRydWV8ZmFsc2UpJFwiKSwgbHQgPSBqKFwicHJvcGFnYXRpb25TdG9wcGVkXCIpO1xuZnVuY3Rpb24gdXQoZSwgbikge1xuICBjb25zdCBzID0gKG4gPyBuKGUpIDogZSkgKyBoZSwgdCA9IChuID8gbihlKSA6IGUpICsgZmUsIGkgPSBQZSArIHMsIGwgPSBQZSArIHQ7XG4gIG5lW2VdID0ge30sIG5lW2VdW2hlXSA9IGksIG5lW2VdW2ZlXSA9IGw7XG59XG5mdW5jdGlvbiBDdChlLCBuLCBzLCB0KSB7XG4gIGNvbnN0IGkgPSB0ICYmIHQuYWRkIHx8IHhlLCBsID0gdCAmJiB0LnJtIHx8IEZlLCBfID0gdCAmJiB0Lmxpc3RlbmVycyB8fCBcImV2ZW50TGlzdGVuZXJzXCIsIEUgPSB0ICYmIHQucm1BbGwgfHwgXCJyZW1vdmVBbGxMaXN0ZW5lcnNcIiwgVCA9IGooaSksIHcgPSBcIi5cIiArIGkgKyBcIjpcIiwgcCA9IFwicHJlcGVuZExpc3RlbmVyXCIsIFIgPSBcIi5cIiArIHAgKyBcIjpcIiwgRCA9IGZ1bmN0aW9uKGssIGQsIEEpIHtcbiAgICBpZiAoay5pc1JlbW92ZWQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgRiA9IGsuY2FsbGJhY2s7XG4gICAgdHlwZW9mIEYgPT0gXCJvYmplY3RcIiAmJiBGLmhhbmRsZUV2ZW50ICYmIChrLmNhbGxiYWNrID0gKHkpID0+IEYuaGFuZGxlRXZlbnQoeSksIGsub3JpZ2luYWxEZWxlZ2F0ZSA9IEYpO1xuICAgIGxldCBxO1xuICAgIHRyeSB7XG4gICAgICBrLmludm9rZShrLCBkLCBbQV0pO1xuICAgIH0gY2F0Y2ggKHkpIHtcbiAgICAgIHEgPSB5O1xuICAgIH1cbiAgICBjb25zdCBWID0gay5vcHRpb25zO1xuICAgIGlmIChWICYmIHR5cGVvZiBWID09IFwib2JqZWN0XCIgJiYgVi5vbmNlKSB7XG4gICAgICBjb25zdCB5ID0gay5vcmlnaW5hbERlbGVnYXRlID8gay5vcmlnaW5hbERlbGVnYXRlIDogay5jYWxsYmFjaztcbiAgICAgIGRbbF0uY2FsbChkLCBBLnR5cGUsIHksIFYpO1xuICAgIH1cbiAgICByZXR1cm4gcTtcbiAgfTtcbiAgZnVuY3Rpb24gSShrLCBkLCBBKSB7XG4gICAgaWYgKGQgPSBkIHx8IGUuZXZlbnQsICFkKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IEYgPSBrIHx8IGQudGFyZ2V0IHx8IGUsIHEgPSBGW25lW2QudHlwZV1bQSA/IGZlIDogaGVdXTtcbiAgICBpZiAocSkge1xuICAgICAgY29uc3QgViA9IFtdO1xuICAgICAgaWYgKHEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IHkgPSBEKHFbMF0sIEYsIGQpO1xuICAgICAgICB5ICYmIFYucHVzaCh5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHkgPSBxLnNsaWNlKCk7XG4gICAgICAgIGZvciAobGV0IFUgPSAwOyBVIDwgeS5sZW5ndGggJiYgIShkICYmIGRbbHRdID09PSAhMCk7IFUrKykge1xuICAgICAgICAgIGNvbnN0IFMgPSBEKHlbVV0sIEYsIGQpO1xuICAgICAgICAgIFMgJiYgVi5wdXNoKFMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoVi5sZW5ndGggPT09IDEpXG4gICAgICAgIHRocm93IFZbMF07XG4gICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IFYubGVuZ3RoOyB5KyspIHtcbiAgICAgICAgY29uc3QgVSA9IFZbeV07XG4gICAgICAgIG4ubmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IFU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBCID0gZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBJKHRoaXMsIGssICExKTtcbiAgfSwgSiA9IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gSSh0aGlzLCBrLCAhMCk7XG4gIH07XG4gIGZ1bmN0aW9uIEsoaywgZCkge1xuICAgIGlmICghaylcbiAgICAgIHJldHVybiAhMTtcbiAgICBsZXQgQSA9ICEwO1xuICAgIGQgJiYgZC51c2VHICE9PSB2b2lkIDAgJiYgKEEgPSBkLnVzZUcpO1xuICAgIGNvbnN0IEYgPSBkICYmIGQudmg7XG4gICAgbGV0IHEgPSAhMDtcbiAgICBkICYmIGQuY2hrRHVwICE9PSB2b2lkIDAgJiYgKHEgPSBkLmNoa0R1cCk7XG4gICAgbGV0IFYgPSAhMTtcbiAgICBkICYmIGQucnQgIT09IHZvaWQgMCAmJiAoViA9IGQucnQpO1xuICAgIGxldCB5ID0gaztcbiAgICBmb3IgKDsgeSAmJiAheS5oYXNPd25Qcm9wZXJ0eShpKTsgKVxuICAgICAgeSA9IEhlKHkpO1xuICAgIGlmICgheSAmJiBrW2ldICYmICh5ID0gayksICF5IHx8IHlbVF0pXG4gICAgICByZXR1cm4gITE7XG4gICAgY29uc3QgVSA9IGQgJiYgZC5ldmVudE5hbWVUb1N0cmluZywgUyA9IHt9LCBDID0geVtUXSA9IHlbaV0sIGIgPSB5W2oobCldID0geVtsXSwgTyA9IHlbaihfKV0gPSB5W19dLCBRID0geVtqKEUpXSA9IHlbRV07XG4gICAgbGV0IFc7XG4gICAgZCAmJiBkLnByZXBlbmQgJiYgKFcgPSB5W2ooZC5wcmVwZW5kKV0gPSB5W2QucHJlcGVuZF0pO1xuICAgIGZ1bmN0aW9uIFkociwgZikge1xuICAgICAgcmV0dXJuICF5ZSAmJiB0eXBlb2YgciA9PSBcIm9iamVjdFwiICYmIHIgPyAhIXIuY2FwdHVyZSA6ICF5ZSB8fCAhZiA/IHIgOiB0eXBlb2YgciA9PSBcImJvb2xlYW5cIiA/IHsgY2FwdHVyZTogciwgcGFzc2l2ZTogITAgfSA6IHIgPyB0eXBlb2YgciA9PSBcIm9iamVjdFwiICYmIHIucGFzc2l2ZSAhPT0gITEgPyB7IC4uLnIsIHBhc3NpdmU6ICEwIH0gOiByIDogeyBwYXNzaXZlOiAhMCB9O1xuICAgIH1cbiAgICBjb25zdCBIID0gZnVuY3Rpb24ocikge1xuICAgICAgaWYgKCFTLmlzRXhpc3RpbmcpXG4gICAgICAgIHJldHVybiBDLmNhbGwoUy50YXJnZXQsIFMuZXZlbnROYW1lLCBTLmNhcHR1cmUgPyBKIDogQiwgUy5vcHRpb25zKTtcbiAgICB9LCBhID0gZnVuY3Rpb24ocikge1xuICAgICAgaWYgKCFyLmlzUmVtb3ZlZCkge1xuICAgICAgICBjb25zdCBmID0gbmVbci5ldmVudE5hbWVdO1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZiAmJiAodiA9IGZbci5jYXB0dXJlID8gZmUgOiBoZV0pO1xuICAgICAgICBjb25zdCBQID0gdiAmJiByLnRhcmdldFt2XTtcbiAgICAgICAgaWYgKFApIHtcbiAgICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IFAubGVuZ3RoOyBnKyspXG4gICAgICAgICAgICBpZiAoUFtnXSA9PT0gcikge1xuICAgICAgICAgICAgICBQLnNwbGljZShnLCAxKSwgci5pc1JlbW92ZWQgPSAhMCwgci5yZW1vdmVBYm9ydExpc3RlbmVyICYmIChyLnJlbW92ZUFib3J0TGlzdGVuZXIoKSwgci5yZW1vdmVBYm9ydExpc3RlbmVyID0gbnVsbCksIFAubGVuZ3RoID09PSAwICYmIChyLmFsbFJlbW92ZWQgPSAhMCwgci50YXJnZXRbdl0gPSBudWxsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyLmFsbFJlbW92ZWQpXG4gICAgICAgIHJldHVybiBiLmNhbGwoci50YXJnZXQsIHIuZXZlbnROYW1lLCByLmNhcHR1cmUgPyBKIDogQiwgci5vcHRpb25zKTtcbiAgICB9LCBjID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIEMuY2FsbChTLnRhcmdldCwgUy5ldmVudE5hbWUsIHIuaW52b2tlLCBTLm9wdGlvbnMpO1xuICAgIH0sIG8gPSBmdW5jdGlvbihyKSB7XG4gICAgICByZXR1cm4gVy5jYWxsKFMudGFyZ2V0LCBTLmV2ZW50TmFtZSwgci5pbnZva2UsIFMub3B0aW9ucyk7XG4gICAgfSwgbSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiBiLmNhbGwoci50YXJnZXQsIHIuZXZlbnROYW1lLCByLmludm9rZSwgci5vcHRpb25zKTtcbiAgICB9LCB4ID0gQSA/IEggOiBjLCBNID0gQSA/IGEgOiBtLCBpZSA9IGZ1bmN0aW9uKHIsIGYpIHtcbiAgICAgIGNvbnN0IHYgPSB0eXBlb2YgZjtcbiAgICAgIHJldHVybiB2ID09PSBcImZ1bmN0aW9uXCIgJiYgci5jYWxsYmFjayA9PT0gZiB8fCB2ID09PSBcIm9iamVjdFwiICYmIHIub3JpZ2luYWxEZWxlZ2F0ZSA9PT0gZjtcbiAgICB9LCBsZSA9IGQgJiYgZC5kaWZmID8gZC5kaWZmIDogaWUsIHVlID0gWm9uZVtqKFwiVU5QQVRDSEVEX0VWRU5UU1wiKV0sIHJlID0gZVtqKFwiUEFTU0lWRV9FVkVOVFNcIildO1xuICAgIGZ1bmN0aW9uIGgocikge1xuICAgICAgaWYgKHR5cGVvZiByID09IFwib2JqZWN0XCIgJiYgciAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmID0geyAuLi5yIH07XG4gICAgICAgIHJldHVybiByLnNpZ25hbCAmJiAoZi5zaWduYWwgPSByLnNpZ25hbCksIGY7XG4gICAgICB9XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gICAgY29uc3QgdSA9IGZ1bmN0aW9uKHIsIGYsIHYsIFAsIGcgPSAhMSwgTiA9ICExKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IEwgPSB0aGlzIHx8IGU7XG4gICAgICAgIGxldCBaID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKFogPSBkLnRyYW5zZmVyRXZlbnROYW1lKFopKTtcbiAgICAgICAgbGV0IEcgPSBhcmd1bWVudHNbMV07XG4gICAgICAgIGlmICghRylcbiAgICAgICAgICByZXR1cm4gci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICBpZiAoRGUgJiYgWiA9PT0gXCJ1bmNhdWdodEV4Y2VwdGlvblwiKVxuICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIGxldCB6ID0gITE7XG4gICAgICAgIGlmICh0eXBlb2YgRyAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBpZiAoIUcuaGFuZGxlRXZlbnQpXG4gICAgICAgICAgICByZXR1cm4gci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIHogPSAhMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRiAmJiAhRihyLCBHLCBMLCBhcmd1bWVudHMpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgRWUgPSB5ZSAmJiAhIXJlICYmIHJlLmluZGV4T2YoWikgIT09IC0xLCBlZSA9IGgoWShhcmd1bWVudHNbMl0sIEVlKSksIFRlID0gZWUgPT0gbnVsbCA/IHZvaWQgMCA6IGVlLnNpZ25hbDtcbiAgICAgICAgaWYgKFRlICE9IG51bGwgJiYgVGUuYWJvcnRlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh1ZSkge1xuICAgICAgICAgIGZvciAobGV0IGNlID0gMDsgY2UgPCB1ZS5sZW5ndGg7IGNlKyspXG4gICAgICAgICAgICBpZiAoWiA9PT0gdWVbY2VdKVxuICAgICAgICAgICAgICByZXR1cm4gRWUgPyByLmNhbGwoTCwgWiwgRywgZWUpIDogci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFNlID0gZWUgPyB0eXBlb2YgZWUgPT0gXCJib29sZWFuXCIgPyAhMCA6IGVlLmNhcHR1cmUgOiAhMSwgVWUgPSBlZSAmJiB0eXBlb2YgZWUgPT0gXCJvYmplY3RcIiA/IGVlLm9uY2UgOiAhMSwgX3QgPSBab25lLmN1cnJlbnQ7XG4gICAgICAgIGxldCBOZSA9IG5lW1pdO1xuICAgICAgICBOZSB8fCAodXQoWiwgVSksIE5lID0gbmVbWl0pO1xuICAgICAgICBjb25zdCBXZSA9IE5lW1NlID8gZmUgOiBoZV07XG4gICAgICAgIGxldCBwZSA9IExbV2VdLCBYZSA9ICExO1xuICAgICAgICBpZiAocGUpIHtcbiAgICAgICAgICBpZiAoWGUgPSAhMCwgcSkge1xuICAgICAgICAgICAgZm9yIChsZXQgY2UgPSAwOyBjZSA8IHBlLmxlbmd0aDsgY2UrKylcbiAgICAgICAgICAgICAgaWYgKGxlKHBlW2NlXSwgRykpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgcGUgPSBMW1dlXSA9IFtdO1xuICAgICAgICBsZXQgd2U7XG4gICAgICAgIGNvbnN0IHFlID0gTC5jb25zdHJ1Y3Rvci5uYW1lLCBZZSA9IGN0W3FlXTtcbiAgICAgICAgWWUgJiYgKHdlID0gWWVbWl0pLCB3ZSB8fCAod2UgPSBxZSArIGYgKyAoVSA/IFUoWikgOiBaKSksIFMub3B0aW9ucyA9IGVlLCBVZSAmJiAoUy5vcHRpb25zLm9uY2UgPSAhMSksIFMudGFyZ2V0ID0gTCwgUy5jYXB0dXJlID0gU2UsIFMuZXZlbnROYW1lID0gWiwgUy5pc0V4aXN0aW5nID0gWGU7XG4gICAgICAgIGNvbnN0IGtlID0gQSA/IFJ0IDogdm9pZCAwO1xuICAgICAgICBrZSAmJiAoa2UudGFza0RhdGEgPSBTKSwgVGUgJiYgKFMub3B0aW9ucy5zaWduYWwgPSB2b2lkIDApO1xuICAgICAgICBjb25zdCBvZSA9IF90LnNjaGVkdWxlRXZlbnRUYXNrKHdlLCBHLCBrZSwgdiwgUCk7XG4gICAgICAgIGlmIChUZSkge1xuICAgICAgICAgIFMub3B0aW9ucy5zaWduYWwgPSBUZTtcbiAgICAgICAgICBjb25zdCBjZSA9ICgpID0+IG9lLnpvbmUuY2FuY2VsVGFzayhvZSk7XG4gICAgICAgICAgci5jYWxsKFRlLCBcImFib3J0XCIsIGNlLCB7IG9uY2U6ICEwIH0pLCBvZS5yZW1vdmVBYm9ydExpc3RlbmVyID0gKCkgPT4gVGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUy50YXJnZXQgPSBudWxsLCBrZSAmJiAoa2UudGFza0RhdGEgPSBudWxsKSwgVWUgJiYgKFMub3B0aW9ucy5vbmNlID0gITApLCAheWUgJiYgdHlwZW9mIG9lLm9wdGlvbnMgPT0gXCJib29sZWFuXCIgfHwgKG9lLm9wdGlvbnMgPSBlZSksIG9lLnRhcmdldCA9IEwsIG9lLmNhcHR1cmUgPSBTZSwgb2UuZXZlbnROYW1lID0gWiwgeiAmJiAob2Uub3JpZ2luYWxEZWxlZ2F0ZSA9IEcpLCBOID8gcGUudW5zaGlmdChvZSkgOiBwZS5wdXNoKG9lKSwgZylcbiAgICAgICAgICByZXR1cm4gTDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4geVtpXSA9IHUoQywgdywgeCwgTSwgViksIFcgJiYgKHlbcF0gPSB1KFcsIFIsIG8sIE0sIFYsICEwKSksIHlbbF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzIHx8IGU7XG4gICAgICBsZXQgZiA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAoZiA9IGQudHJhbnNmZXJFdmVudE5hbWUoZikpO1xuICAgICAgY29uc3QgdiA9IGFyZ3VtZW50c1syXSwgUCA9IHYgPyB0eXBlb2YgdiA9PSBcImJvb2xlYW5cIiA/ICEwIDogdi5jYXB0dXJlIDogITEsIGcgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoIWcpXG4gICAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoRiAmJiAhRihiLCBnLCByLCBhcmd1bWVudHMpKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBOID0gbmVbZl07XG4gICAgICBsZXQgTDtcbiAgICAgIE4gJiYgKEwgPSBOW1AgPyBmZSA6IGhlXSk7XG4gICAgICBjb25zdCBaID0gTCAmJiByW0xdO1xuICAgICAgaWYgKFopXG4gICAgICAgIGZvciAobGV0IEcgPSAwOyBHIDwgWi5sZW5ndGg7IEcrKykge1xuICAgICAgICAgIGNvbnN0IHogPSBaW0ddO1xuICAgICAgICAgIGlmIChsZSh6LCBnKSkge1xuICAgICAgICAgICAgaWYgKFouc3BsaWNlKEcsIDEpLCB6LmlzUmVtb3ZlZCA9ICEwLCBaLmxlbmd0aCA9PT0gMCAmJiAoei5hbGxSZW1vdmVkID0gITAsIHJbTF0gPSBudWxsLCAhUCAmJiB0eXBlb2YgZiA9PSBcInN0cmluZ1wiKSkge1xuICAgICAgICAgICAgICBjb25zdCBFZSA9IFBlICsgXCJPTl9QUk9QRVJUWVwiICsgZjtcbiAgICAgICAgICAgICAgcltFZV0gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHouem9uZS5jYW5jZWxUYXNrKHopLCBWID8gciA6IHZvaWQgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfSwgeVtfXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgciA9IHRoaXMgfHwgZTtcbiAgICAgIGxldCBmID0gYXJndW1lbnRzWzBdO1xuICAgICAgZCAmJiBkLnRyYW5zZmVyRXZlbnROYW1lICYmIChmID0gZC50cmFuc2ZlckV2ZW50TmFtZShmKSk7XG4gICAgICBjb25zdCB2ID0gW10sIFAgPSBmdChyLCBVID8gVShmKSA6IGYpO1xuICAgICAgZm9yIChsZXQgZyA9IDA7IGcgPCBQLmxlbmd0aDsgZysrKSB7XG4gICAgICAgIGNvbnN0IE4gPSBQW2ddO1xuICAgICAgICBsZXQgTCA9IE4ub3JpZ2luYWxEZWxlZ2F0ZSA/IE4ub3JpZ2luYWxEZWxlZ2F0ZSA6IE4uY2FsbGJhY2s7XG4gICAgICAgIHYucHVzaChMKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0sIHlbRV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzIHx8IGU7XG4gICAgICBsZXQgZiA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAoZiA9IGQudHJhbnNmZXJFdmVudE5hbWUoZikpO1xuICAgICAgICBjb25zdCB2ID0gbmVbZl07XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgY29uc3QgUCA9IHZbaGVdLCBnID0gdltmZV0sIE4gPSByW1BdLCBMID0gcltnXTtcbiAgICAgICAgICBpZiAoTikge1xuICAgICAgICAgICAgY29uc3QgWiA9IE4uc2xpY2UoKTtcbiAgICAgICAgICAgIGZvciAobGV0IEcgPSAwOyBHIDwgWi5sZW5ndGg7IEcrKykge1xuICAgICAgICAgICAgICBjb25zdCB6ID0gWltHXTtcbiAgICAgICAgICAgICAgbGV0IEVlID0gei5vcmlnaW5hbERlbGVnYXRlID8gei5vcmlnaW5hbERlbGVnYXRlIDogei5jYWxsYmFjaztcbiAgICAgICAgICAgICAgdGhpc1tsXS5jYWxsKHRoaXMsIGYsIEVlLCB6Lm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoTCkge1xuICAgICAgICAgICAgY29uc3QgWiA9IEwuc2xpY2UoKTtcbiAgICAgICAgICAgIGZvciAobGV0IEcgPSAwOyBHIDwgWi5sZW5ndGg7IEcrKykge1xuICAgICAgICAgICAgICBjb25zdCB6ID0gWltHXTtcbiAgICAgICAgICAgICAgbGV0IEVlID0gei5vcmlnaW5hbERlbGVnYXRlID8gei5vcmlnaW5hbERlbGVnYXRlIDogei5jYWxsYmFjaztcbiAgICAgICAgICAgICAgdGhpc1tsXS5jYWxsKHRoaXMsIGYsIEVlLCB6Lm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdiA9IE9iamVjdC5rZXlzKHIpO1xuICAgICAgICBmb3IgKGxldCBQID0gMDsgUCA8IHYubGVuZ3RoOyBQKyspIHtcbiAgICAgICAgICBjb25zdCBnID0gdltQXSwgTiA9IGF0LmV4ZWMoZyk7XG4gICAgICAgICAgbGV0IEwgPSBOICYmIE5bMV07XG4gICAgICAgICAgTCAmJiBMICE9PSBcInJlbW92ZUxpc3RlbmVyXCIgJiYgdGhpc1tFXS5jYWxsKHRoaXMsIEwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXNbRV0uY2FsbCh0aGlzLCBcInJlbW92ZUxpc3RlbmVyXCIpO1xuICAgICAgfVxuICAgICAgaWYgKFYpXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9lKHlbaV0sIEMpLCBfZSh5W2xdLCBiKSwgUSAmJiBfZSh5W0VdLCBRKSwgTyAmJiBfZSh5W19dLCBPKSwgITA7XG4gIH1cbiAgbGV0IFggPSBbXTtcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBzLmxlbmd0aDsgaysrKVxuICAgIFhba10gPSBLKHNba10sIHQpO1xuICByZXR1cm4gWDtcbn1cbmZ1bmN0aW9uIGZ0KGUsIG4pIHtcbiAgaWYgKCFuKSB7XG4gICAgY29uc3QgbCA9IFtdO1xuICAgIGZvciAobGV0IF8gaW4gZSkge1xuICAgICAgY29uc3QgRSA9IGF0LmV4ZWMoXyk7XG4gICAgICBsZXQgVCA9IEUgJiYgRVsxXTtcbiAgICAgIGlmIChUICYmICghbiB8fCBUID09PSBuKSkge1xuICAgICAgICBjb25zdCB3ID0gZVtfXTtcbiAgICAgICAgaWYgKHcpXG4gICAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB3Lmxlbmd0aDsgcCsrKVxuICAgICAgICAgICAgbC5wdXNoKHdbcF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbDtcbiAgfVxuICBsZXQgcyA9IG5lW25dO1xuICBzIHx8ICh1dChuKSwgcyA9IG5lW25dKTtcbiAgY29uc3QgdCA9IGVbc1toZV1dLCBpID0gZVtzW2ZlXV07XG4gIHJldHVybiB0ID8gaSA/IHQuY29uY2F0KGkpIDogdC5zbGljZSgpIDogaSA/IGkuc2xpY2UoKSA6IFtdO1xufVxuZnVuY3Rpb24gT3QoZSwgbikge1xuICBjb25zdCBzID0gZS5FdmVudDtcbiAgcyAmJiBzLnByb3RvdHlwZSAmJiBuLnBhdGNoTWV0aG9kKHMucHJvdG90eXBlLCBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiLCAodCkgPT4gZnVuY3Rpb24oaSwgbCkge1xuICAgIGlbbHRdID0gITAsIHQgJiYgdC5hcHBseShpLCBsKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBEdChlLCBuKSB7XG4gIG4ucGF0Y2hNZXRob2QoZSwgXCJxdWV1ZU1pY3JvdGFza1wiLCAocykgPT4gZnVuY3Rpb24odCwgaSkge1xuICAgIFpvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzayhcInF1ZXVlTWljcm90YXNrXCIsIGlbMF0pO1xuICB9KTtcbn1cbmNvbnN0IFJlID0gaihcInpvbmVUYXNrXCIpO1xuZnVuY3Rpb24gZ2UoZSwgbiwgcywgdCkge1xuICBsZXQgaSA9IG51bGwsIGwgPSBudWxsO1xuICBuICs9IHQsIHMgKz0gdDtcbiAgY29uc3QgXyA9IHt9O1xuICBmdW5jdGlvbiBFKHcpIHtcbiAgICBjb25zdCBwID0gdy5kYXRhO1xuICAgIHAuYXJnc1swXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHcuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgICBjb25zdCBSID0gaS5hcHBseShlLCBwLmFyZ3MpO1xuICAgIHJldHVybiB0dChSKSA/IHAuaGFuZGxlSWQgPSBSIDogKHAuaGFuZGxlID0gUiwgcC5pc1JlZnJlc2hhYmxlID0gZXQoUi5yZWZyZXNoKSksIHc7XG4gIH1cbiAgZnVuY3Rpb24gVCh3KSB7XG4gICAgY29uc3QgeyBoYW5kbGU6IHAsIGhhbmRsZUlkOiBSIH0gPSB3LmRhdGE7XG4gICAgcmV0dXJuIGwuY2FsbChlLCBwID8/IFIpO1xuICB9XG4gIGkgPSBkZShlLCBuLCAodykgPT4gZnVuY3Rpb24ocCwgUikge1xuICAgIGlmIChldChSWzBdKSkge1xuICAgICAgY29uc3QgRCA9IHtcbiAgICAgICAgaXNSZWZyZXNoYWJsZTogITEsXG4gICAgICAgIGlzUGVyaW9kaWM6IHQgPT09IFwiSW50ZXJ2YWxcIixcbiAgICAgICAgZGVsYXk6IHQgPT09IFwiVGltZW91dFwiIHx8IHQgPT09IFwiSW50ZXJ2YWxcIiA/IFJbMV0gfHwgMCA6IHZvaWQgMCxcbiAgICAgICAgYXJnczogUlxuICAgICAgfSwgSSA9IFJbMF07XG4gICAgICBSWzBdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEkuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBjb25zdCB7IGhhbmRsZTogQSwgaGFuZGxlSWQ6IEYsIGlzUGVyaW9kaWM6IHEsIGlzUmVmcmVzaGFibGU6IFYgfSA9IEQ7XG4gICAgICAgICAgIXEgJiYgIVYgJiYgKEYgPyBkZWxldGUgX1tGXSA6IEEgJiYgKEFbUmVdID0gbnVsbCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgQiA9IEdlKG4sIFJbMF0sIEQsIEUsIFQpO1xuICAgICAgaWYgKCFCKVxuICAgICAgICByZXR1cm4gQjtcbiAgICAgIGNvbnN0IHsgaGFuZGxlSWQ6IEosIGhhbmRsZTogSywgaXNSZWZyZXNoYWJsZTogWCwgaXNQZXJpb2RpYzogayB9ID0gQi5kYXRhO1xuICAgICAgaWYgKEopXG4gICAgICAgIF9bSl0gPSBCO1xuICAgICAgZWxzZSBpZiAoSyAmJiAoS1tSZV0gPSBCLCBYICYmICFrKSkge1xuICAgICAgICBjb25zdCBkID0gSy5yZWZyZXNoO1xuICAgICAgICBLLnJlZnJlc2ggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb25zdCB7IHpvbmU6IEEsIHN0YXRlOiBGIH0gPSBCO1xuICAgICAgICAgIHJldHVybiBGID09PSBcIm5vdFNjaGVkdWxlZFwiID8gKEIuX3N0YXRlID0gXCJzY2hlZHVsZWRcIiwgQS5fdXBkYXRlVGFza0NvdW50KEIsIDEpKSA6IEYgPT09IFwicnVubmluZ1wiICYmIChCLl9zdGF0ZSA9IFwic2NoZWR1bGluZ1wiKSwgZC5jYWxsKHRoaXMpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIEsgPz8gSiA/PyBCO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIHcuYXBwbHkoZSwgUik7XG4gIH0pLCBsID0gZGUoZSwgcywgKHcpID0+IGZ1bmN0aW9uKHAsIFIpIHtcbiAgICBjb25zdCBEID0gUlswXTtcbiAgICBsZXQgSTtcbiAgICB0dChEKSA/IChJID0gX1tEXSwgZGVsZXRlIF9bRF0pIDogKEkgPSBEID09IG51bGwgPyB2b2lkIDAgOiBEW1JlXSwgSSA/IERbUmVdID0gbnVsbCA6IEkgPSBEKSwgSSAhPSBudWxsICYmIEkudHlwZSA/IEkuY2FuY2VsRm4gJiYgSS56b25lLmNhbmNlbFRhc2soSSkgOiB3LmFwcGx5KGUsIFIpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFN0KGUsIG4pIHtcbiAgY29uc3QgeyBpc0Jyb3dzZXI6IHMsIGlzTWl4OiB0IH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgaWYgKCFzICYmICF0IHx8ICFlLmN1c3RvbUVsZW1lbnRzIHx8ICEoXCJjdXN0b21FbGVtZW50c1wiIGluIGUpKVxuICAgIHJldHVybjtcbiAgY29uc3QgaSA9IFtcbiAgICBcImNvbm5lY3RlZENhbGxiYWNrXCIsXG4gICAgXCJkaXNjb25uZWN0ZWRDYWxsYmFja1wiLFxuICAgIFwiYWRvcHRlZENhbGxiYWNrXCIsXG4gICAgXCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tcIixcbiAgICBcImZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2tcIixcbiAgICBcImZvcm1EaXNhYmxlZENhbGxiYWNrXCIsXG4gICAgXCJmb3JtUmVzZXRDYWxsYmFja1wiLFxuICAgIFwiZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrXCJcbiAgXTtcbiAgbi5wYXRjaENhbGxiYWNrcyhuLCBlLmN1c3RvbUVsZW1lbnRzLCBcImN1c3RvbUVsZW1lbnRzXCIsIFwiZGVmaW5lXCIsIGkpO1xufVxuZnVuY3Rpb24gTnQoZSwgbikge1xuICBpZiAoWm9uZVtuLnN5bWJvbChcInBhdGNoRXZlbnRUYXJnZXRcIildKVxuICAgIHJldHVybjtcbiAgY29uc3QgeyBldmVudE5hbWVzOiBzLCB6b25lU3ltYm9sRXZlbnROYW1lczogdCwgVFJVRV9TVFI6IGksIEZBTFNFX1NUUjogbCwgWk9ORV9TWU1CT0xfUFJFRklYOiBfIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgZm9yIChsZXQgVCA9IDA7IFQgPCBzLmxlbmd0aDsgVCsrKSB7XG4gICAgY29uc3QgdyA9IHNbVF0sIHAgPSB3ICsgbCwgUiA9IHcgKyBpLCBEID0gXyArIHAsIEkgPSBfICsgUjtcbiAgICB0W3ddID0ge30sIHRbd11bbF0gPSBELCB0W3ddW2ldID0gSTtcbiAgfVxuICBjb25zdCBFID0gZS5FdmVudFRhcmdldDtcbiAgaWYgKCEoIUUgfHwgIUUucHJvdG90eXBlKSlcbiAgICByZXR1cm4gbi5wYXRjaEV2ZW50VGFyZ2V0KGUsIG4sIFtFICYmIEUucHJvdG90eXBlXSksICEwO1xufVxuZnVuY3Rpb24gTHQoZSwgbikge1xuICBuLnBhdGNoRXZlbnRQcm90b3R5cGUoZSwgbik7XG59XG5mdW5jdGlvbiBodChlLCBuLCBzKSB7XG4gIGlmICghcyB8fCBzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbjtcbiAgY29uc3QgdCA9IHMuZmlsdGVyKChsKSA9PiBsLnRhcmdldCA9PT0gZSk7XG4gIGlmICghdCB8fCB0Lmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbjtcbiAgY29uc3QgaSA9IHRbMF0uaWdub3JlUHJvcGVydGllcztcbiAgcmV0dXJuIG4uZmlsdGVyKChsKSA9PiBpLmluZGV4T2YobCkgPT09IC0xKTtcbn1cbmZ1bmN0aW9uIG50KGUsIG4sIHMsIHQpIHtcbiAgaWYgKCFlKVxuICAgIHJldHVybjtcbiAgY29uc3QgaSA9IGh0KGUsIG4sIHMpO1xuICBpdChlLCBpLCB0KTtcbn1cbmZ1bmN0aW9uIEFlKGUpIHtcbiAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKFwib25cIikgJiYgbi5sZW5ndGggPiAyKS5tYXAoKG4pID0+IG4uc3Vic3RyaW5nKDIpKTtcbn1cbmZ1bmN0aW9uIFp0KGUsIG4pIHtcbiAgaWYgKERlICYmICFzdCB8fCBab25lW2Uuc3ltYm9sKFwicGF0Y2hFdmVudHNcIildKVxuICAgIHJldHVybjtcbiAgY29uc3QgcyA9IG4uX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO1xuICBsZXQgdCA9IFtdO1xuICBpZiAoQmUpIHtcbiAgICBjb25zdCBpID0gd2luZG93O1xuICAgIHQgPSB0LmNvbmNhdChbXG4gICAgICBcIkRvY3VtZW50XCIsXG4gICAgICBcIlNWR0VsZW1lbnRcIixcbiAgICAgIFwiRWxlbWVudFwiLFxuICAgICAgXCJIVE1MRWxlbWVudFwiLFxuICAgICAgXCJIVE1MQm9keUVsZW1lbnRcIixcbiAgICAgIFwiSFRNTE1lZGlhRWxlbWVudFwiLFxuICAgICAgXCJIVE1MRnJhbWVTZXRFbGVtZW50XCIsXG4gICAgICBcIkhUTUxGcmFtZUVsZW1lbnRcIixcbiAgICAgIFwiSFRNTElGcmFtZUVsZW1lbnRcIixcbiAgICAgIFwiSFRNTE1hcnF1ZWVFbGVtZW50XCIsXG4gICAgICBcIldvcmtlclwiXG4gICAgXSk7XG4gICAgY29uc3QgbCA9IFB0KCkgPyBbeyB0YXJnZXQ6IGksIGlnbm9yZVByb3BlcnRpZXM6IFtcImVycm9yXCJdIH1dIDogW107XG4gICAgbnQoaSwgQWUoaSksIHMgJiYgcy5jb25jYXQobCksIEhlKGkpKTtcbiAgfVxuICB0ID0gdC5jb25jYXQoW1xuICAgIFwiWE1MSHR0cFJlcXVlc3RcIixcbiAgICBcIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXRcIixcbiAgICBcIklEQkluZGV4XCIsXG4gICAgXCJJREJSZXF1ZXN0XCIsXG4gICAgXCJJREJPcGVuREJSZXF1ZXN0XCIsXG4gICAgXCJJREJEYXRhYmFzZVwiLFxuICAgIFwiSURCVHJhbnNhY3Rpb25cIixcbiAgICBcIklEQkN1cnNvclwiLFxuICAgIFwiV2ViU29ja2V0XCJcbiAgXSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGwgPSBuW3RbaV1dO1xuICAgIGwgJiYgbC5wcm90b3R5cGUgJiYgbnQobC5wcm90b3R5cGUsIEFlKGwucHJvdG90eXBlKSwgcyk7XG4gIH1cbn1cbmZ1bmN0aW9uIE10KGUpIHtcbiAgZS5fX2xvYWRfcGF0Y2goXCJsZWdhY3lcIiwgKG4pID0+IHtcbiAgICBjb25zdCBzID0gbltlLl9fc3ltYm9sX18oXCJsZWdhY3lQYXRjaFwiKV07XG4gICAgcyAmJiBzKCk7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcInRpbWVyc1wiLCAobikgPT4ge1xuICAgIGNvbnN0IHMgPSBcInNldFwiLCB0ID0gXCJjbGVhclwiO1xuICAgIGdlKG4sIHMsIHQsIFwiVGltZW91dFwiKSwgZ2UobiwgcywgdCwgXCJJbnRlcnZhbFwiKSwgZ2UobiwgcywgdCwgXCJJbW1lZGlhdGVcIik7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLCAobikgPT4ge1xuICAgIGdlKG4sIFwicmVxdWVzdFwiLCBcImNhbmNlbFwiLCBcIkFuaW1hdGlvbkZyYW1lXCIpLCBnZShuLCBcIm1velJlcXVlc3RcIiwgXCJtb3pDYW5jZWxcIiwgXCJBbmltYXRpb25GcmFtZVwiKSwgZ2UobiwgXCJ3ZWJraXRSZXF1ZXN0XCIsIFwid2Via2l0Q2FuY2VsXCIsIFwiQW5pbWF0aW9uRnJhbWVcIik7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcImJsb2NraW5nXCIsIChuLCBzKSA9PiB7XG4gICAgY29uc3QgdCA9IFtcImFsZXJ0XCIsIFwicHJvbXB0XCIsIFwiY29uZmlybVwiXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGwgPSB0W2ldO1xuICAgICAgZGUobiwgbCwgKF8sIEUsIFQpID0+IGZ1bmN0aW9uKHcsIHApIHtcbiAgICAgICAgcmV0dXJuIHMuY3VycmVudC5ydW4oXywgbiwgcCwgVCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcIkV2ZW50VGFyZ2V0XCIsIChuLCBzLCB0KSA9PiB7XG4gICAgTHQobiwgdCksIE50KG4sIHQpO1xuICAgIGNvbnN0IGkgPSBuLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgaSAmJiBpLnByb3RvdHlwZSAmJiB0LnBhdGNoRXZlbnRUYXJnZXQobiwgdCwgW2kucHJvdG90eXBlXSk7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcIk11dGF0aW9uT2JzZXJ2ZXJcIiwgKG4sIHMsIHQpID0+IHtcbiAgICB2ZShcIk11dGF0aW9uT2JzZXJ2ZXJcIiksIHZlKFwiV2ViS2l0TXV0YXRpb25PYnNlcnZlclwiKTtcbiAgfSksIGUuX19sb2FkX3BhdGNoKFwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcIiwgKG4sIHMsIHQpID0+IHtcbiAgICB2ZShcIkludGVyc2VjdGlvbk9ic2VydmVyXCIpO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJGaWxlUmVhZGVyXCIsIChuLCBzLCB0KSA9PiB7XG4gICAgdmUoXCJGaWxlUmVhZGVyXCIpO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJvbl9wcm9wZXJ0eVwiLCAobiwgcywgdCkgPT4ge1xuICAgIFp0KHQsIG4pO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJjdXN0b21FbGVtZW50c1wiLCAobiwgcywgdCkgPT4ge1xuICAgIFN0KG4sIHQpO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJYSFJcIiwgKG4sIHMpID0+IHtcbiAgICB3KG4pO1xuICAgIGNvbnN0IHQgPSBqKFwieGhyVGFza1wiKSwgaSA9IGooXCJ4aHJTeW5jXCIpLCBsID0gaihcInhockxpc3RlbmVyXCIpLCBfID0gaihcInhoclNjaGVkdWxlZFwiKSwgRSA9IGooXCJ4aHJVUkxcIiksIFQgPSBqKFwieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWRcIik7XG4gICAgZnVuY3Rpb24gdyhwKSB7XG4gICAgICBjb25zdCBSID0gcC5YTUxIdHRwUmVxdWVzdDtcbiAgICAgIGlmICghUilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgRCA9IFIucHJvdG90eXBlO1xuICAgICAgZnVuY3Rpb24gSShDKSB7XG4gICAgICAgIHJldHVybiBDW3RdO1xuICAgICAgfVxuICAgICAgbGV0IEIgPSBEW1plXSwgSiA9IERbTWVdO1xuICAgICAgaWYgKCFCKSB7XG4gICAgICAgIGNvbnN0IEMgPSBwLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICAgIGlmIChDKSB7XG4gICAgICAgICAgY29uc3QgYiA9IEMucHJvdG90eXBlO1xuICAgICAgICAgIEIgPSBiW1plXSwgSiA9IGJbTWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBLID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIsIFggPSBcInNjaGVkdWxlZFwiO1xuICAgICAgZnVuY3Rpb24gayhDKSB7XG4gICAgICAgIGNvbnN0IGIgPSBDLmRhdGEsIE8gPSBiLnRhcmdldDtcbiAgICAgICAgT1tfXSA9ICExLCBPW1RdID0gITE7XG4gICAgICAgIGNvbnN0IFEgPSBPW2xdO1xuICAgICAgICBCIHx8IChCID0gT1taZV0sIEogPSBPW01lXSksIFEgJiYgSi5jYWxsKE8sIEssIFEpO1xuICAgICAgICBjb25zdCBXID0gT1tsXSA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoTy5yZWFkeVN0YXRlID09PSBPLkRPTkUpXG4gICAgICAgICAgICBpZiAoIWIuYWJvcnRlZCAmJiBPW19dICYmIEMuc3RhdGUgPT09IFgpIHtcbiAgICAgICAgICAgICAgY29uc3QgSCA9IE9bcy5fX3N5bWJvbF9fKFwibG9hZGZhbHNlXCIpXTtcbiAgICAgICAgICAgICAgaWYgKE8uc3RhdHVzICE9PSAwICYmIEggJiYgSC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IEMuaW52b2tlO1xuICAgICAgICAgICAgICAgIEMuaW52b2tlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjID0gT1tzLl9fc3ltYm9sX18oXCJsb2FkZmFsc2VcIildO1xuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbyA9IDA7IG8gPCBjLmxlbmd0aDsgbysrKVxuICAgICAgICAgICAgICAgICAgICBjW29dID09PSBDICYmIGMuc3BsaWNlKG8sIDEpO1xuICAgICAgICAgICAgICAgICAgIWIuYWJvcnRlZCAmJiBDLnN0YXRlID09PSBYICYmIGEuY2FsbChDKTtcbiAgICAgICAgICAgICAgICB9LCBILnB1c2goQyk7XG4gICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIEMuaW52b2tlKCk7XG4gICAgICAgICAgICB9IGVsc2UgIWIuYWJvcnRlZCAmJiBPW19dID09PSAhMSAmJiAoT1tUXSA9ICEwKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIEIuY2FsbChPLCBLLCBXKSwgT1t0XSB8fCAoT1t0XSA9IEMpLCBVLmFwcGx5KE8sIGIuYXJncyksIE9bX10gPSAhMCwgQztcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGQoKSB7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBBKEMpIHtcbiAgICAgICAgY29uc3QgYiA9IEMuZGF0YTtcbiAgICAgICAgcmV0dXJuIGIuYWJvcnRlZCA9ICEwLCBTLmFwcGx5KGIudGFyZ2V0LCBiLmFyZ3MpO1xuICAgICAgfVxuICAgICAgY29uc3QgRiA9IGRlKEQsIFwib3BlblwiLCAoKSA9PiBmdW5jdGlvbihDLCBiKSB7XG4gICAgICAgIHJldHVybiBDW2ldID0gYlsyXSA9PSAhMSwgQ1tFXSA9IGJbMV0sIEYuYXBwbHkoQywgYik7XG4gICAgICB9KSwgcSA9IFwiWE1MSHR0cFJlcXVlc3Quc2VuZFwiLCBWID0gaihcImZldGNoVGFza0Fib3J0aW5nXCIpLCB5ID0gaihcImZldGNoVGFza1NjaGVkdWxpbmdcIiksIFUgPSBkZShELCBcInNlbmRcIiwgKCkgPT4gZnVuY3Rpb24oQywgYikge1xuICAgICAgICBpZiAocy5jdXJyZW50W3ldID09PSAhMCB8fCBDW2ldKVxuICAgICAgICAgIHJldHVybiBVLmFwcGx5KEMsIGIpO1xuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgTyA9IHtcbiAgICAgICAgICAgIHRhcmdldDogQyxcbiAgICAgICAgICAgIHVybDogQ1tFXSxcbiAgICAgICAgICAgIGlzUGVyaW9kaWM6ICExLFxuICAgICAgICAgICAgYXJnczogYixcbiAgICAgICAgICAgIGFib3J0ZWQ6ICExXG4gICAgICAgICAgfSwgUSA9IEdlKHEsIGQsIE8sIGssIEEpO1xuICAgICAgICAgIEMgJiYgQ1tUXSA9PT0gITAgJiYgIU8uYWJvcnRlZCAmJiBRLnN0YXRlID09PSBYICYmIFEuaW52b2tlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBTID0gZGUoRCwgXCJhYm9ydFwiLCAoKSA9PiBmdW5jdGlvbihDLCBiKSB7XG4gICAgICAgIGNvbnN0IE8gPSBJKEMpO1xuICAgICAgICBpZiAoTyAmJiB0eXBlb2YgTy50eXBlID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBpZiAoTy5jYW5jZWxGbiA9PSBudWxsIHx8IE8uZGF0YSAmJiBPLmRhdGEuYWJvcnRlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBPLnpvbmUuY2FuY2VsVGFzayhPKTtcbiAgICAgICAgfSBlbHNlIGlmIChzLmN1cnJlbnRbVl0gPT09ICEwKVxuICAgICAgICAgIHJldHVybiBTLmFwcGx5KEMsIGIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJnZW9sb2NhdGlvblwiLCAobikgPT4ge1xuICAgIG4ubmF2aWdhdG9yICYmIG4ubmF2aWdhdG9yLmdlb2xvY2F0aW9uICYmIGt0KG4ubmF2aWdhdG9yLmdlb2xvY2F0aW9uLCBbXCJnZXRDdXJyZW50UG9zaXRpb25cIiwgXCJ3YXRjaFBvc2l0aW9uXCJdKTtcbiAgfSksIGUuX19sb2FkX3BhdGNoKFwiUHJvbWlzZVJlamVjdGlvbkV2ZW50XCIsIChuLCBzKSA9PiB7XG4gICAgZnVuY3Rpb24gdChpKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24obCkge1xuICAgICAgICBmdChuLCBpKS5mb3JFYWNoKChFKSA9PiB7XG4gICAgICAgICAgY29uc3QgVCA9IG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50O1xuICAgICAgICAgIGlmIChUKSB7XG4gICAgICAgICAgICBjb25zdCB3ID0gbmV3IFQoaSwge1xuICAgICAgICAgICAgICBwcm9taXNlOiBsLnByb21pc2UsXG4gICAgICAgICAgICAgIHJlYXNvbjogbC5yZWplY3Rpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgRS5pbnZva2Uodyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICAgIG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50ICYmIChzW2ooXCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlclwiKV0gPSB0KFwidW5oYW5kbGVkcmVqZWN0aW9uXCIpLCBzW2ooXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKV0gPSB0KFwicmVqZWN0aW9uaGFuZGxlZFwiKSk7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcInF1ZXVlTWljcm90YXNrXCIsIChuLCBzLCB0KSA9PiB7XG4gICAgRHQobiwgdCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gSXQoZSkge1xuICBlLl9fbG9hZF9wYXRjaChcIlpvbmVBd2FyZVByb21pc2VcIiwgKG4sIHMsIHQpID0+IHtcbiAgICBjb25zdCBpID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgbCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbiAgICBmdW5jdGlvbiBfKGgpIHtcbiAgICAgIGlmIChoICYmIGgudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdSA9IGguY29uc3RydWN0b3IgJiYgaC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgICByZXR1cm4gKHUgfHwgXCJcIikgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoID8gaC50b1N0cmluZygpIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGgpO1xuICAgIH1cbiAgICBjb25zdCBFID0gdC5zeW1ib2wsIFQgPSBbXSwgdyA9IG5bRShcIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT05cIildICE9PSAhMSwgcCA9IEUoXCJQcm9taXNlXCIpLCBSID0gRShcInRoZW5cIiksIEQgPSBcIl9fY3JlYXRpb25UcmFjZV9fXCI7XG4gICAgdC5vblVuaGFuZGxlZEVycm9yID0gKGgpID0+IHtcbiAgICAgIGlmICh0LnNob3dVbmNhdWdodEVycm9yKCkpIHtcbiAgICAgICAgY29uc3QgdSA9IGggJiYgaC5yZWplY3Rpb247XG4gICAgICAgIHUgPyBjb25zb2xlLmVycm9yKFwiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOlwiLCB1IGluc3RhbmNlb2YgRXJyb3IgPyB1Lm1lc3NhZ2UgOiB1LCBcIjsgWm9uZTpcIiwgaC56b25lLm5hbWUsIFwiOyBUYXNrOlwiLCBoLnRhc2sgJiYgaC50YXNrLnNvdXJjZSwgXCI7IFZhbHVlOlwiLCB1LCB1IGluc3RhbmNlb2YgRXJyb3IgPyB1LnN0YWNrIDogdm9pZCAwKSA6IGNvbnNvbGUuZXJyb3IoaCk7XG4gICAgICB9XG4gICAgfSwgdC5taWNyb3Rhc2tEcmFpbkRvbmUgPSAoKSA9PiB7XG4gICAgICBmb3IgKDsgVC5sZW5ndGg7ICkge1xuICAgICAgICBjb25zdCBoID0gVC5zaGlmdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGguem9uZS5ydW5HdWFyZGVkKCgpID0+IHtcbiAgICAgICAgICAgIHRocm93IGgudGhyb3dPcmlnaW5hbCA/IGgucmVqZWN0aW9uIDogaDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICAgIEIodSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IEkgPSBFKFwidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXJcIik7XG4gICAgZnVuY3Rpb24gQihoKSB7XG4gICAgICB0Lm9uVW5oYW5kbGVkRXJyb3IoaCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1ID0gc1tJXTtcbiAgICAgICAgdHlwZW9mIHUgPT0gXCJmdW5jdGlvblwiICYmIHUuY2FsbCh0aGlzLCBoKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBKKGgpIHtcbiAgICAgIHJldHVybiBoICYmIGgudGhlbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gSyhoKSB7XG4gICAgICByZXR1cm4gaDtcbiAgICB9XG4gICAgZnVuY3Rpb24gWChoKSB7XG4gICAgICByZXR1cm4gTS5yZWplY3QoaCk7XG4gICAgfVxuICAgIGNvbnN0IGsgPSBFKFwic3RhdGVcIiksIGQgPSBFKFwidmFsdWVcIiksIEEgPSBFKFwiZmluYWxseVwiKSwgRiA9IEUoXCJwYXJlbnRQcm9taXNlVmFsdWVcIiksIHEgPSBFKFwicGFyZW50UHJvbWlzZVN0YXRlXCIpLCBWID0gXCJQcm9taXNlLnRoZW5cIiwgeSA9IG51bGwsIFUgPSAhMCwgUyA9ICExLCBDID0gMDtcbiAgICBmdW5jdGlvbiBiKGgsIHUpIHtcbiAgICAgIHJldHVybiAocikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFkoaCwgdSwgcik7XG4gICAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgICBZKGgsICExLCBmKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgTyA9IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGggPSAhMTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBoIHx8IChoID0gITAsIHIuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH0sIFEgPSBcIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGZcIiwgVyA9IEUoXCJjdXJyZW50VGFza1RyYWNlXCIpO1xuICAgIGZ1bmN0aW9uIFkoaCwgdSwgcikge1xuICAgICAgY29uc3QgZiA9IE8oKTtcbiAgICAgIGlmIChoID09PSByKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFEpO1xuICAgICAgaWYgKGhba10gPT09IHkpIHtcbiAgICAgICAgbGV0IHYgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh0eXBlb2YgciA9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiByID09IFwiZnVuY3Rpb25cIikgJiYgKHYgPSByICYmIHIudGhlbik7XG4gICAgICAgIH0gY2F0Y2ggKFApIHtcbiAgICAgICAgICByZXR1cm4gZigoKSA9PiB7XG4gICAgICAgICAgICBZKGgsICExLCBQKTtcbiAgICAgICAgICB9KSgpLCBoO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1ICE9PSBTICYmIHIgaW5zdGFuY2VvZiBNICYmIHIuaGFzT3duUHJvcGVydHkoaykgJiYgci5oYXNPd25Qcm9wZXJ0eShkKSAmJiByW2tdICE9PSB5KVxuICAgICAgICAgIGEociksIFkoaCwgcltrXSwgcltkXSk7XG4gICAgICAgIGVsc2UgaWYgKHUgIT09IFMgJiYgdHlwZW9mIHYgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2LmNhbGwociwgZihiKGgsIHUpKSwgZihiKGgsICExKSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKFApIHtcbiAgICAgICAgICAgIGYoKCkgPT4ge1xuICAgICAgICAgICAgICBZKGgsICExLCBQKTtcbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBoW2tdID0gdTtcbiAgICAgICAgICBjb25zdCBQID0gaFtkXTtcbiAgICAgICAgICBpZiAoaFtkXSA9IHIsIGhbQV0gPT09IEEgJiYgdSA9PT0gVSAmJiAoaFtrXSA9IGhbcV0sIGhbZF0gPSBoW0ZdKSwgdSA9PT0gUyAmJiByIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGcgPSBzLmN1cnJlbnRUYXNrICYmIHMuY3VycmVudFRhc2suZGF0YSAmJiBzLmN1cnJlbnRUYXNrLmRhdGFbRF07XG4gICAgICAgICAgICBnICYmIGwociwgVywge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICB2YWx1ZTogZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGcgPSAwOyBnIDwgUC5sZW5ndGg7IClcbiAgICAgICAgICAgIGMoaCwgUFtnKytdLCBQW2crK10sIFBbZysrXSwgUFtnKytdKTtcbiAgICAgICAgICBpZiAoUC5sZW5ndGggPT0gMCAmJiB1ID09IFMpIHtcbiAgICAgICAgICAgIGhba10gPSBDO1xuICAgICAgICAgICAgbGV0IGcgPSByO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5jYXVnaHQgKGluIHByb21pc2UpOiBcIiArIF8ocikgKyAociAmJiByLnN0YWNrID8gYFxuYCArIHIuc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChOKSB7XG4gICAgICAgICAgICAgIGcgPSBOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdyAmJiAoZy50aHJvd09yaWdpbmFsID0gITApLCBnLnJlamVjdGlvbiA9IHIsIGcucHJvbWlzZSA9IGgsIGcuem9uZSA9IHMuY3VycmVudCwgZy50YXNrID0gcy5jdXJyZW50VGFzaywgVC5wdXNoKGcpLCB0LnNjaGVkdWxlTWljcm9UYXNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaDtcbiAgICB9XG4gICAgY29uc3QgSCA9IEUoXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKTtcbiAgICBmdW5jdGlvbiBhKGgpIHtcbiAgICAgIGlmIChoW2tdID09PSBDKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdSA9IHNbSF07XG4gICAgICAgICAgdSAmJiB0eXBlb2YgdSA9PSBcImZ1bmN0aW9uXCIgJiYgdS5jYWxsKHRoaXMsIHsgcmVqZWN0aW9uOiBoW2RdLCBwcm9taXNlOiBoIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgfVxuICAgICAgICBoW2tdID0gUztcbiAgICAgICAgZm9yIChsZXQgdSA9IDA7IHUgPCBULmxlbmd0aDsgdSsrKVxuICAgICAgICAgIGggPT09IFRbdV0ucHJvbWlzZSAmJiBULnNwbGljZSh1LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gYyhoLCB1LCByLCBmLCB2KSB7XG4gICAgICBhKGgpO1xuICAgICAgY29uc3QgUCA9IGhba10sIGcgPSBQID8gdHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiID8gZiA6IEsgOiB0eXBlb2YgdiA9PSBcImZ1bmN0aW9uXCIgPyB2IDogWDtcbiAgICAgIHUuc2NoZWR1bGVNaWNyb1Rhc2soViwgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IE4gPSBoW2RdLCBMID0gISFyICYmIEEgPT09IHJbQV07XG4gICAgICAgICAgTCAmJiAocltGXSA9IE4sIHJbcV0gPSBQKTtcbiAgICAgICAgICBjb25zdCBaID0gdS5ydW4oZywgdm9pZCAwLCBMICYmIGcgIT09IFggJiYgZyAhPT0gSyA/IFtdIDogW05dKTtcbiAgICAgICAgICBZKHIsICEwLCBaKTtcbiAgICAgICAgfSBjYXRjaCAoTikge1xuICAgICAgICAgIFkociwgITEsIE4pO1xuICAgICAgICB9XG4gICAgICB9LCByKTtcbiAgICB9XG4gICAgY29uc3QgbyA9IFwiZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9XCIsIG0gPSBmdW5jdGlvbigpIHtcbiAgICB9LCB4ID0gbi5BZ2dyZWdhdGVFcnJvcjtcbiAgICBjbGFzcyBNIHtcbiAgICAgIHN0YXRpYyB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgICB9XG4gICAgICBzdGF0aWMgcmVzb2x2ZSh1KSB7XG4gICAgICAgIHJldHVybiB1IGluc3RhbmNlb2YgTSA/IHUgOiBZKG5ldyB0aGlzKG51bGwpLCBVLCB1KTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyByZWplY3QodSkge1xuICAgICAgICByZXR1cm4gWShuZXcgdGhpcyhudWxsKSwgUywgdSk7XG4gICAgICB9XG4gICAgICBzdGF0aWMgd2l0aFJlc29sdmVycygpIHtcbiAgICAgICAgY29uc3QgdSA9IHt9O1xuICAgICAgICByZXR1cm4gdS5wcm9taXNlID0gbmV3IE0oKHIsIGYpID0+IHtcbiAgICAgICAgICB1LnJlc29sdmUgPSByLCB1LnJlamVjdCA9IGY7XG4gICAgICAgIH0pLCB1O1xuICAgICAgfVxuICAgICAgc3RhdGljIGFueSh1KSB7XG4gICAgICAgIGlmICghdSB8fCB0eXBlb2YgdVtTeW1ib2wuaXRlcmF0b3JdICE9IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHgoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICBjb25zdCByID0gW107XG4gICAgICAgIGxldCBmID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKGxldCBnIG9mIHUpXG4gICAgICAgICAgICBmKyssIHIucHVzaChNLnJlc29sdmUoZykpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHgoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmID09PSAwKVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgeChbXSwgXCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZFwiKSk7XG4gICAgICAgIGxldCB2ID0gITE7XG4gICAgICAgIGNvbnN0IFAgPSBbXTtcbiAgICAgICAgcmV0dXJuIG5ldyBNKChnLCBOKSA9PiB7XG4gICAgICAgICAgZm9yIChsZXQgTCA9IDA7IEwgPCByLmxlbmd0aDsgTCsrKVxuICAgICAgICAgICAgcltMXS50aGVuKChaKSA9PiB7XG4gICAgICAgICAgICAgIHYgfHwgKHYgPSAhMCwgZyhaKSk7XG4gICAgICAgICAgICB9LCAoWikgPT4ge1xuICAgICAgICAgICAgICBQLnB1c2goWiksIGYtLSwgZiA9PT0gMCAmJiAodiA9ICEwLCBOKG5ldyB4KFAsIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyByYWNlKHUpIHtcbiAgICAgICAgbGV0IHIsIGYsIHYgPSBuZXcgdGhpcygoTiwgTCkgPT4ge1xuICAgICAgICAgIHIgPSBOLCBmID0gTDtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIFAoTikge1xuICAgICAgICAgIHIoTik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZyhOKSB7XG4gICAgICAgICAgZihOKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBOIG9mIHUpXG4gICAgICAgICAgSihOKSB8fCAoTiA9IHRoaXMucmVzb2x2ZShOKSksIE4udGhlbihQLCBnKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9XG4gICAgICBzdGF0aWMgYWxsKHUpIHtcbiAgICAgICAgcmV0dXJuIE0uYWxsV2l0aENhbGxiYWNrKHUpO1xuICAgICAgfVxuICAgICAgc3RhdGljIGFsbFNldHRsZWQodSkge1xuICAgICAgICByZXR1cm4gKHRoaXMgJiYgdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBNID8gdGhpcyA6IE0pLmFsbFdpdGhDYWxsYmFjayh1LCB7XG4gICAgICAgICAgdGhlbkNhbGxiYWNrOiAoZikgPT4gKHsgc3RhdHVzOiBcImZ1bGZpbGxlZFwiLCB2YWx1ZTogZiB9KSxcbiAgICAgICAgICBlcnJvckNhbGxiYWNrOiAoZikgPT4gKHsgc3RhdHVzOiBcInJlamVjdGVkXCIsIHJlYXNvbjogZiB9KVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBhbGxXaXRoQ2FsbGJhY2sodSwgcikge1xuICAgICAgICBsZXQgZiwgdiwgUCA9IG5ldyB0aGlzKChaLCBHKSA9PiB7XG4gICAgICAgICAgZiA9IFosIHYgPSBHO1xuICAgICAgICB9KSwgZyA9IDIsIE4gPSAwO1xuICAgICAgICBjb25zdCBMID0gW107XG4gICAgICAgIGZvciAobGV0IFogb2YgdSkge1xuICAgICAgICAgIEooWikgfHwgKFogPSB0aGlzLnJlc29sdmUoWikpO1xuICAgICAgICAgIGNvbnN0IEcgPSBOO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBaLnRoZW4oKHopID0+IHtcbiAgICAgICAgICAgICAgTFtHXSA9IHIgPyByLnRoZW5DYWxsYmFjayh6KSA6IHosIGctLSwgZyA9PT0gMCAmJiBmKEwpO1xuICAgICAgICAgICAgfSwgKHopID0+IHtcbiAgICAgICAgICAgICAgciA/IChMW0ddID0gci5lcnJvckNhbGxiYWNrKHopLCBnLS0sIGcgPT09IDAgJiYgZihMKSkgOiB2KHopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoeikge1xuICAgICAgICAgICAgdih6KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZysrLCBOKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGcgLT0gMiwgZyA9PT0gMCAmJiBmKEwpLCBQO1xuICAgICAgfVxuICAgICAgY29uc3RydWN0b3IodSkge1xuICAgICAgICBjb25zdCByID0gdGhpcztcbiAgICAgICAgaWYgKCEociBpbnN0YW5jZW9mIE0pKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLlwiKTtcbiAgICAgICAgcltrXSA9IHksIHJbZF0gPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmID0gTygpO1xuICAgICAgICAgIHUgJiYgdShmKGIociwgVSkpLCBmKGIociwgUykpKTtcbiAgICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICAgIFkociwgITEsIGYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgICAgIHJldHVybiBcIlByb21pc2VcIjtcbiAgICAgIH1cbiAgICAgIGdldCBbU3ltYm9sLnNwZWNpZXNdKCkge1xuICAgICAgICByZXR1cm4gTTtcbiAgICAgIH1cbiAgICAgIHRoZW4odSwgcikge1xuICAgICAgICB2YXIgZztcbiAgICAgICAgbGV0IGYgPSAoZyA9IHRoaXMuY29uc3RydWN0b3IpID09IG51bGwgPyB2b2lkIDAgOiBnW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgKCFmIHx8IHR5cGVvZiBmICE9IFwiZnVuY3Rpb25cIikgJiYgKGYgPSB0aGlzLmNvbnN0cnVjdG9yIHx8IE0pO1xuICAgICAgICBjb25zdCB2ID0gbmV3IGYobSksIFAgPSBzLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiB0aGlzW2tdID09IHkgPyB0aGlzW2RdLnB1c2goUCwgdiwgdSwgcikgOiBjKHRoaXMsIFAsIHYsIHUsIHIpLCB2O1xuICAgICAgfVxuICAgICAgY2F0Y2godSkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIHUpO1xuICAgICAgfVxuICAgICAgZmluYWxseSh1KSB7XG4gICAgICAgIHZhciBQO1xuICAgICAgICBsZXQgciA9IChQID0gdGhpcy5jb25zdHJ1Y3RvcikgPT0gbnVsbCA/IHZvaWQgMCA6IFBbU3ltYm9sLnNwZWNpZXNdO1xuICAgICAgICAoIXIgfHwgdHlwZW9mIHIgIT0gXCJmdW5jdGlvblwiKSAmJiAociA9IE0pO1xuICAgICAgICBjb25zdCBmID0gbmV3IHIobSk7XG4gICAgICAgIGZbQV0gPSBBO1xuICAgICAgICBjb25zdCB2ID0gcy5jdXJyZW50O1xuICAgICAgICByZXR1cm4gdGhpc1trXSA9PSB5ID8gdGhpc1tkXS5wdXNoKHYsIGYsIHUsIHUpIDogYyh0aGlzLCB2LCBmLCB1LCB1KSwgZjtcbiAgICAgIH1cbiAgICB9XG4gICAgTS5yZXNvbHZlID0gTS5yZXNvbHZlLCBNLnJlamVjdCA9IE0ucmVqZWN0LCBNLnJhY2UgPSBNLnJhY2UsIE0uYWxsID0gTS5hbGw7XG4gICAgY29uc3QgaWUgPSBuW3BdID0gbi5Qcm9taXNlO1xuICAgIG4uUHJvbWlzZSA9IE07XG4gICAgY29uc3QgbGUgPSBFKFwidGhlblBhdGNoZWRcIik7XG4gICAgZnVuY3Rpb24gdWUoaCkge1xuICAgICAgY29uc3QgdSA9IGgucHJvdG90eXBlLCByID0gaSh1LCBcInRoZW5cIik7XG4gICAgICBpZiAociAmJiAoci53cml0YWJsZSA9PT0gITEgfHwgIXIuY29uZmlndXJhYmxlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgZiA9IHUudGhlbjtcbiAgICAgIHVbUl0gPSBmLCBoLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24odiwgUCkge1xuICAgICAgICByZXR1cm4gbmV3IE0oKE4sIEwpID0+IHtcbiAgICAgICAgICBmLmNhbGwodGhpcywgTiwgTCk7XG4gICAgICAgIH0pLnRoZW4odiwgUCk7XG4gICAgICB9LCBoW2xlXSA9ICEwO1xuICAgIH1cbiAgICB0LnBhdGNoVGhlbiA9IHVlO1xuICAgIGZ1bmN0aW9uIHJlKGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih1LCByKSB7XG4gICAgICAgIGxldCBmID0gaC5hcHBseSh1LCByKTtcbiAgICAgICAgaWYgKGYgaW5zdGFuY2VvZiBNKVxuICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICBsZXQgdiA9IGYuY29uc3RydWN0b3I7XG4gICAgICAgIHJldHVybiB2W2xlXSB8fCB1ZSh2KSwgZjtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBpZSAmJiAodWUoaWUpLCBkZShuLCBcImZldGNoXCIsIChoKSA9PiByZShoKSkpLCBQcm9taXNlW3MuX19zeW1ib2xfXyhcInVuY2F1Z2h0UHJvbWlzZUVycm9yc1wiKV0gPSBULCBNO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEF0KGUpIHtcbiAgZS5fX2xvYWRfcGF0Y2goXCJ0b1N0cmluZ1wiLCAobikgPT4ge1xuICAgIGNvbnN0IHMgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsIHQgPSBqKFwiT3JpZ2luYWxEZWxlZ2F0ZVwiKSwgaSA9IGooXCJQcm9taXNlXCIpLCBsID0gaihcIkVycm9yXCIpLCBfID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnN0IHAgPSB0aGlzW3RdO1xuICAgICAgICBpZiAocClcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHAgPT0gXCJmdW5jdGlvblwiID8gcy5jYWxsKHApIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHApO1xuICAgICAgICBpZiAodGhpcyA9PT0gUHJvbWlzZSkge1xuICAgICAgICAgIGNvbnN0IFIgPSBuW2ldO1xuICAgICAgICAgIGlmIChSKVxuICAgICAgICAgICAgcmV0dXJuIHMuY2FsbChSKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyA9PT0gRXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBSID0gbltsXTtcbiAgICAgICAgICBpZiAoUilcbiAgICAgICAgICAgIHJldHVybiBzLmNhbGwoUik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICBfW3RdID0gcywgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gXztcbiAgICBjb25zdCBFID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywgVCA9IFwiW29iamVjdCBQcm9taXNlXVwiO1xuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgUHJvbWlzZSA9PSBcImZ1bmN0aW9uXCIgJiYgdGhpcyBpbnN0YW5jZW9mIFByb21pc2UgPyBUIDogRS5jYWxsKHRoaXMpO1xuICAgIH07XG4gIH0pO1xufVxuZnVuY3Rpb24ganQoZSwgbiwgcywgdCwgaSkge1xuICBjb25zdCBsID0gWm9uZS5fX3N5bWJvbF9fKHQpO1xuICBpZiAobltsXSlcbiAgICByZXR1cm47XG4gIGNvbnN0IF8gPSBuW2xdID0gblt0XTtcbiAgblt0XSA9IGZ1bmN0aW9uKEUsIFQsIHcpIHtcbiAgICByZXR1cm4gVCAmJiBULnByb3RvdHlwZSAmJiBpLmZvckVhY2goZnVuY3Rpb24ocCkge1xuICAgICAgY29uc3QgUiA9IGAke3N9LiR7dH06OmAgKyBwLCBEID0gVC5wcm90b3R5cGU7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoRC5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICAgIGNvbnN0IEkgPSBlLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihELCBwKTtcbiAgICAgICAgICBJICYmIEkudmFsdWUgPyAoSS52YWx1ZSA9IGUud3JhcFdpdGhDdXJyZW50Wm9uZShJLnZhbHVlLCBSKSwgZS5fcmVkZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgcCwgSSkpIDogRFtwXSAmJiAoRFtwXSA9IGUud3JhcFdpdGhDdXJyZW50Wm9uZShEW3BdLCBSKSk7XG4gICAgICAgIH0gZWxzZSBEW3BdICYmIChEW3BdID0gZS53cmFwV2l0aEN1cnJlbnRab25lKERbcF0sIFIpKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgfVxuICAgIH0pLCBfLmNhbGwobiwgRSwgVCwgdyk7XG4gIH0sIGUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKG5bdF0sIF8pO1xufVxuZnVuY3Rpb24gSHQoZSkge1xuICBlLl9fbG9hZF9wYXRjaChcInV0aWxcIiwgKG4sIHMsIHQpID0+IHtcbiAgICBjb25zdCBpID0gQWUobik7XG4gICAgdC5wYXRjaE9uUHJvcGVydGllcyA9IGl0LCB0LnBhdGNoTWV0aG9kID0gZGUsIHQuYmluZEFyZ3VtZW50cyA9IHplLCB0LnBhdGNoTWFjcm9UYXNrID0gYnQ7XG4gICAgY29uc3QgbCA9IHMuX19zeW1ib2xfXyhcIkJMQUNLX0xJU1RFRF9FVkVOVFNcIiksIF8gPSBzLl9fc3ltYm9sX18oXCJVTlBBVENIRURfRVZFTlRTXCIpO1xuICAgIG5bX10gJiYgKG5bbF0gPSBuW19dKSwgbltsXSAmJiAoc1tsXSA9IHNbX10gPSBuW2xdKSwgdC5wYXRjaEV2ZW50UHJvdG90eXBlID0gT3QsIHQucGF0Y2hFdmVudFRhcmdldCA9IEN0LCB0LmlzSUVPckVkZ2UgPSB3dCwgdC5PYmplY3REZWZpbmVQcm9wZXJ0eSA9IGplLCB0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGJlLCB0Lk9iamVjdENyZWF0ZSA9IGd0LCB0LkFycmF5U2xpY2UgPSB5dCwgdC5wYXRjaENsYXNzID0gdmUsIHQud3JhcFdpdGhDdXJyZW50Wm9uZSA9IFZlLCB0LmZpbHRlclByb3BlcnRpZXMgPSBodCwgdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQgPSBfZSwgdC5fcmVkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgdC5wYXRjaENhbGxiYWNrcyA9IGp0LCB0LmdldEdsb2JhbE9iamVjdHMgPSAoKSA9PiAoe1xuICAgICAgZ2xvYmFsU291cmNlczogY3QsXG4gICAgICB6b25lU3ltYm9sRXZlbnROYW1lczogbmUsXG4gICAgICBldmVudE5hbWVzOiBpLFxuICAgICAgaXNCcm93c2VyOiBCZSxcbiAgICAgIGlzTWl4OiBzdCxcbiAgICAgIGlzTm9kZTogRGUsXG4gICAgICBUUlVFX1NUUjogZmUsXG4gICAgICBGQUxTRV9TVFI6IGhlLFxuICAgICAgWk9ORV9TWU1CT0xfUFJFRklYOiBQZSxcbiAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9TVFI6IHhlLFxuICAgICAgUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUjogRmVcbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiB4dChlKSB7XG4gIEl0KGUpLCBBdChlKSwgSHQoZSk7XG59XG5jb25zdCBkdCA9IHB0KCk7XG54dChkdCk7XG5NdChkdCk7XG5cbmV4cG9ydCB7IFZ0IGFzIFpvbmVDb250ZXh0TWFuYWdlciB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsVUFBVTtBQUV4QixTQUFTQyxHQUFHQyxHQUFHO0FBQ2IsU0FB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QVcrRDtBQUFBLE1BQ1gsT0FBT0M7QUFBQSxNQUNQLFFBQVFGO0FBQUEsTUFDUixVQUFVZjtBQUFBLE1BQ1YsV0FBV0M7QUFBQSxNQUNYLG9CQUFvQkM7QUFBQSxNQUNwQix3QkFBd0JOO0FBQUEsTUFDeEIsMkJBQTJCQztBQUFBLElBQzdCO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFDQSxTQUFTNkYsR0FBRzlJLEdBQUc7QUFDYixFQUFBd0ksR0FBR3hJLENBQUMsR0FBRzJJLEdBQUczSSxDQUFDLEdBQUc2SSxHQUFHN0ksQ0FBQztBQUNwQjtBQUNBLE1BQU0rSSxLQUFLckcsR0FBRztBQUNkb0csR0FBR0MsRUFBRTtBQUNMVCxHQUFHUyxFQUFFOyIsCiAgIm5hbWVzIjogWyJEbyIsICJFdCIsICJlIiwgIiRlIiwgIlZ0IiwgInMiLCAidCIsICJpIiwgIl8iLCAiRSIsICJUIiwgImFlIiwgInRlIiwgIlR0IiwgImEiLCAiWSIsICJiIiwgIk8iLCAiYyIsICJvIiwgIm0iLCAibCIsICJ4IiwgIk0iLCAiaWUiLCAiWCIsICJVIiwgInkiLCAibGUiLCAiQSIsICJkIiwgInVlIiwgInJlIiwgInEiLCAiayIsICJWIiwgIkYiLCAiQiIsICJKIiwgInciLCAicCIsICJEIiwgIkkiLCAiVyIsICJwdCIsICJiZSIsICJqZSIsICJIZSIsICJndCIsICJ5dCIsICJ4ZSIsICJGZSIsICJaZSIsICJNZSIsICJmZSIsICJoZSIsICJQZSIsICJWZSIsICJHZSIsICJqIiwgIk9lIiwgIm1lIiwgIiQiLCAibXQiLCAiemUiLCAia3QiLCAicnQiLCAiX2UiLCAib3QiLCAiRGUiLCAiQmUiLCAic3QiLCAiQ2UiLCAidnQiLCAiSmUiLCAiS2UiLCAiUiIsICJpdCIsICJzZSIsICJ2ZSIsICJkZSIsICJidCIsICJRZSIsICJJZSIsICJQdCIsICJ3dCIsICJldCIsICJ0dCIsICJ5ZSIsICJSdCIsICJuZSIsICJjdCIsICJhdCIsICJsdCIsICJ1dCIsICJDdCIsICJTIiwgIksiLCAiQyIsICJRIiwgInYiLCAiUCIsICJnIiwgIk4iLCAiTCIsICJaIiwgIkciLCAieiIsICJFZSIsICJlZSIsICJUZSIsICJjZSIsICJTZSIsICJVZSIsICJfdCIsICJOZSIsICJXZSIsICJwZSIsICJYZSIsICJ3ZSIsICJxZSIsICJZZSIsICJrZSIsICJvZSIsICJmdCIsICJPdCIsICJEdCIsICJSZSIsICJnZSIsICJTdCIsICJOdCIsICJMdCIsICJodCIsICJudCIsICJBZSIsICJadCIsICJNdCIsICJIIiwgIkl0IiwgInIiLCAiZiIsICJBdCIsICJqdCIsICJIdCIsICJ4dCIsICJkdCJdCn0K
1593
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQnVmWUlHMHEtIX57MDBifX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEogYXMgSm8gfSBmcm9tICcuL2luZGV4LSF+ezAwNH1+LmpzJztcblxuZnVuY3Rpb24gRXQoZSkge1xuICByZXR1cm4gZSA9PT0gdm9pZCAwICYmIChlID0ge30pLCB0eXBlb2YgZS5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgZS5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIjtcbn1cbnZhciAkZSA9IFwiT1RfWk9ORV9DT05URVhUXCIsIFZ0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLl9lbmFibGVkID0gITEsIHRoaXMuX3pvbmVDb3VudGVyID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLl9hY3RpdmVDb250ZXh0RnJvbVpvbmUgPSBmdW5jdGlvbihuKSB7XG4gICAgICByZXR1cm4gbiAmJiBuLmdldCgkZSkgfHwgSm87XG4gICAgfSwgZS5wcm90b3R5cGUuX2JpbmRGdW5jdGlvbiA9IGZ1bmN0aW9uKG4sIHMpIHtcbiAgICAgIHZhciB0ID0gdGhpcywgaSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKHZhciBsID0gdGhpcywgXyA9IFtdLCBFID0gMDsgRSA8IGFyZ3VtZW50cy5sZW5ndGg7IEUrKylcbiAgICAgICAgICBfW0VdID0gYXJndW1lbnRzW0VdO1xuICAgICAgICByZXR1cm4gdC53aXRoKG4sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBzLmFwcGx5KGwsIF8pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgIHdyaXRhYmxlOiAhMSxcbiAgICAgICAgdmFsdWU6IHMubGVuZ3RoXG4gICAgICB9KSwgaTtcbiAgICB9LCBlLnByb3RvdHlwZS5fYmluZExpc3RlbmVyID0gZnVuY3Rpb24obiwgcykge1xuICAgICAgdmFyIHQgPSBzO1xuICAgICAgcmV0dXJuIHQuX19vdF9saXN0ZW5lcnMgIT09IHZvaWQgMCB8fCAodC5fX290X2xpc3RlbmVycyA9IHt9LCB0eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiAodC5hZGRFdmVudExpc3RlbmVyID0gdGhpcy5fcGF0Y2hBZGRFdmVudExpc3RlbmVyKHQsIHQuYWRkRXZlbnRMaXN0ZW5lciwgbikpLCB0eXBlb2YgdC5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiAodC5yZW1vdmVFdmVudExpc3RlbmVyID0gdGhpcy5fcGF0Y2hSZW1vdmVFdmVudExpc3RlbmVyKHQsIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcikpKSwgcztcbiAgICB9LCBlLnByb3RvdHlwZS5fY3JlYXRlWm9uZU5hbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX3pvbmVDb3VudGVyKys7XG4gICAgICB2YXIgbiA9IE1hdGgucmFuZG9tKCk7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZUNvdW50ZXIgKyBcIi1cIiArIG47XG4gICAgfSwgZS5wcm90b3R5cGUuX2NyZWF0ZVpvbmUgPSBmdW5jdGlvbihuLCBzKSB7XG4gICAgICB2YXIgdDtcbiAgICAgIHJldHVybiBab25lLmN1cnJlbnQuZm9yayh7XG4gICAgICAgIG5hbWU6IG4sXG4gICAgICAgIHByb3BlcnRpZXM6ICh0ID0ge30sIHRbJGVdID0gcywgdClcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRBY3RpdmVab25lID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gWm9uZS5jdXJyZW50O1xuICAgIH0sIGUucHJvdG90eXBlLl9wYXRjaEFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihuLCBzLCB0KSB7XG4gICAgICB2YXIgaSA9IHRoaXM7XG4gICAgICByZXR1cm4gZnVuY3Rpb24obCwgXywgRSkge1xuICAgICAgICBuLl9fb3RfbGlzdGVuZXJzID09PSB2b2lkIDAgJiYgKG4uX19vdF9saXN0ZW5lcnMgPSB7fSk7XG4gICAgICAgIHZhciBUID0gbi5fX290X2xpc3RlbmVyc1tsXTtcbiAgICAgICAgVCA9PT0gdm9pZCAwICYmIChUID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCksIG4uX19vdF9saXN0ZW5lcnNbbF0gPSBUKTtcbiAgICAgICAgdmFyIHcgPSBpLmJpbmQodCwgXyk7XG4gICAgICAgIHJldHVybiBULnNldChfLCB3KSwgcy5jYWxsKHRoaXMsIGwsIHcsIEUpO1xuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS5fcGF0Y2hSZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24obiwgcykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIGkpIHtcbiAgICAgICAgaWYgKG4uX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCB8fCBuLl9fb3RfbGlzdGVuZXJzW3RdID09PSB2b2lkIDApXG4gICAgICAgICAgcmV0dXJuIHMuY2FsbCh0aGlzLCB0LCBpKTtcbiAgICAgICAgdmFyIGwgPSBuLl9fb3RfbGlzdGVuZXJzW3RdLCBfID0gbC5nZXQoaSk7XG4gICAgICAgIHJldHVybiBsLmRlbGV0ZShpKSwgcy5jYWxsKHRoaXMsIHQsIF8gfHwgaSk7XG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKVxuICAgICAgICByZXR1cm4gSm87XG4gICAgICB2YXIgbiA9IHRoaXMuX2dldEFjdGl2ZVpvbmUoKSwgcyA9IHRoaXMuX2FjdGl2ZUNvbnRleHRGcm9tWm9uZShuKTtcbiAgICAgIHJldHVybiBzIHx8IEpvO1xuICAgIH0sIGUucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihuLCBzKSB7XG4gICAgICByZXR1cm4gbiA9PT0gdm9pZCAwICYmIChuID0gdGhpcy5hY3RpdmUoKSksIHR5cGVvZiBzID09IFwiZnVuY3Rpb25cIiA/IHRoaXMuX2JpbmRGdW5jdGlvbihuLCBzKSA6IChFdChzKSAmJiB0aGlzLl9iaW5kTGlzdGVuZXIobiwgcyksIHMpO1xuICAgIH0sIGUucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkID0gITEsIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA9ICEwLCB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbihuLCBzLCB0KSB7XG4gICAgICBmb3IgKHZhciBpID0gW10sIGwgPSAzOyBsIDwgYXJndW1lbnRzLmxlbmd0aDsgbCsrKVxuICAgICAgICBpW2wgLSAzXSA9IGFyZ3VtZW50c1tsXTtcbiAgICAgIHZhciBfID0gdGhpcy5fY3JlYXRlWm9uZU5hbWUoKSwgRSA9IHRoaXMuX2NyZWF0ZVpvbmUoXywgbik7XG4gICAgICByZXR1cm4gRS5ydW4ocywgdCwgaSk7XG4gICAgfSwgZTtcbiAgfSgpXG4pO1xuLyoqXG4gKiBAbGljZW5zZSBBbmd1bGFyIHY8dW5rbm93bj5cbiAqIChjKSAyMDEwLTIwMjQgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvL1xuICogTGljZW5zZTogTUlUXG4gKi9cbmNvbnN0IGFlID0gZ2xvYmFsVGhpcztcbmZ1bmN0aW9uIHRlKGUpIHtcbiAgcmV0dXJuIChhZS5fX1pvbmVfc3ltYm9sX3ByZWZpeCB8fCBcIl9fem9uZV9zeW1ib2xfX1wiKSArIGU7XG59XG5mdW5jdGlvbiBUdCgpIHtcbiAgY29uc3QgZSA9IGFlLnBlcmZvcm1hbmNlO1xuICBmdW5jdGlvbiBuKEgpIHtcbiAgICBlICYmIGUubWFyayAmJiBlLm1hcmsoSCk7XG4gIH1cbiAgZnVuY3Rpb24gcyhILCBhKSB7XG4gICAgZSAmJiBlLm1lYXN1cmUgJiYgZS5tZWFzdXJlKEgsIGEpO1xuICB9XG4gIG4oXCJab25lXCIpO1xuICBjb25zdCBZID0gY2xhc3MgWSB7XG4gICAgc3RhdGljIGFzc2VydFpvbmVQYXRjaGVkKCkge1xuICAgICAgaWYgKGFlLlByb21pc2UgIT09IFMuWm9uZUF3YXJlUHJvbWlzZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWm9uZS5qcyBoYXMgZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCkuUHJvbWlzZWAgaGFzIGJlZW4gb3ZlcndyaXR0ZW4uXFxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKVwiKTtcbiAgICB9XG4gICAgc3RhdGljIGdldCByb290KCkge1xuICAgICAgbGV0IGEgPSBZLmN1cnJlbnQ7XG4gICAgICBmb3IgKDsgYS5wYXJlbnQ7IClcbiAgICAgICAgYSA9IGEucGFyZW50O1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgY3VycmVudCgpIHtcbiAgICAgIHJldHVybiBiLnpvbmU7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgY3VycmVudFRhc2soKSB7XG4gICAgICByZXR1cm4gTztcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnJlcXVpcmUtaW50ZXJuYWwtd2l0aC11bmRlcnNjb3JlXG4gICAgc3RhdGljIF9fbG9hZF9wYXRjaChhLCBjLCBvID0gITEpIHtcbiAgICAgIGlmIChTLmhhc093blByb3BlcnR5KGEpKSB7XG4gICAgICAgIGNvbnN0IG0gPSBhZVt0ZShcImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrXCIpXSA9PT0gITA7XG4gICAgICAgIGlmICghbyAmJiBtKVxuICAgICAgICAgIHRocm93IEVycm9yKFwiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6IFwiICsgYSk7XG4gICAgICB9IGVsc2UgaWYgKCFhZVtcIl9fWm9uZV9kaXNhYmxlX1wiICsgYV0pIHtcbiAgICAgICAgY29uc3QgbSA9IFwiWm9uZTpcIiArIGE7XG4gICAgICAgIG4obSksIFNbYV0gPSBjKGFlLCBZLCBDKSwgcyhtLCBtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHBhcmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICAgfVxuICAgIGdldCBuYW1lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGEsIGMpIHtcbiAgICAgIHRoaXMuX3BhcmVudCA9IGEsIHRoaXMuX25hbWUgPSBjID8gYy5uYW1lIHx8IFwidW5uYW1lZFwiIDogXCI8cm9vdD5cIiwgdGhpcy5fcHJvcGVydGllcyA9IGMgJiYgYy5wcm9wZXJ0aWVzIHx8IHt9LCB0aGlzLl96b25lRGVsZWdhdGUgPSBuZXcgbCh0aGlzLCB0aGlzLl9wYXJlbnQgJiYgdGhpcy5fcGFyZW50Ll96b25lRGVsZWdhdGUsIGMpO1xuICAgIH1cbiAgICBnZXQoYSkge1xuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Wm9uZVdpdGgoYSk7XG4gICAgICBpZiAoYylcbiAgICAgICAgcmV0dXJuIGMuX3Byb3BlcnRpZXNbYV07XG4gICAgfVxuICAgIGdldFpvbmVXaXRoKGEpIHtcbiAgICAgIGxldCBjID0gdGhpcztcbiAgICAgIGZvciAoOyBjOyApIHtcbiAgICAgICAgaWYgKGMuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoYSkpXG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIGMgPSBjLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZm9yayhhKSB7XG4gICAgICBpZiAoIWEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmVTcGVjIHJlcXVpcmVkIVwiKTtcbiAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLCBhKTtcbiAgICB9XG4gICAgd3JhcChhLCBjKSB7XG4gICAgICBpZiAodHlwZW9mIGEgIT0gXCJmdW5jdGlvblwiKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiBcIiArIGEpO1xuICAgICAgY29uc3QgbyA9IHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcywgYSwgYyksIG0gPSB0aGlzO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbS5ydW5HdWFyZGVkKG8sIHRoaXMsIGFyZ3VtZW50cywgYyk7XG4gICAgICB9O1xuICAgIH1cbiAgICBydW4oYSwgYywgbywgbSkge1xuICAgICAgYiA9IHsgcGFyZW50OiBiLCB6b25lOiB0aGlzIH07XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLCBhLCBjLCBvLCBtKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgcnVuR3VhcmRlZChhLCBjID0gbnVsbCwgbywgbSkge1xuICAgICAgYiA9IHsgcGFyZW50OiBiLCB6b25lOiB0aGlzIH07XG4gICAgICB0cnkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsIGEsIGMsIG8sIG0pO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCB4KSlcbiAgICAgICAgICAgIHRocm93IHg7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgcnVuVGFzayhhLCBjLCBvKSB7XG4gICAgICBpZiAoYS56b25lICE9IHRoaXMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAoYS56b25lIHx8IEspLm5hbWUgKyBcIjsgRXhlY3V0aW9uOiBcIiArIHRoaXMubmFtZSArIFwiKVwiKTtcbiAgICAgIGNvbnN0IG0gPSBhLCB7IHR5cGU6IHgsIGRhdGE6IHsgaXNQZXJpb2RpYzogTSA9ICExLCBpc1JlZnJlc2hhYmxlOiBpZSA9ICExIH0gPSB7fSB9ID0gYTtcbiAgICAgIGlmIChhLnN0YXRlID09PSBYICYmICh4ID09PSBVIHx8IHggPT09IHkpKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBsZSA9IGEuc3RhdGUgIT0gQTtcbiAgICAgIGxlICYmIG0uX3RyYW5zaXRpb25UbyhBLCBkKTtcbiAgICAgIGNvbnN0IHVlID0gTztcbiAgICAgIE8gPSBtLCBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHggPT0geSAmJiBhLmRhdGEgJiYgIU0gJiYgIWllICYmIChhLmNhbmNlbEZuID0gdm9pZCAwKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcywgbSwgYywgbyk7XG4gICAgICAgIH0gY2F0Y2ggKHJlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCByZSkpXG4gICAgICAgICAgICB0aHJvdyByZTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3QgcmUgPSBhLnN0YXRlO1xuICAgICAgICBpZiAocmUgIT09IFggJiYgcmUgIT09IHEpXG4gICAgICAgICAgaWYgKHggPT0gVSB8fCBNIHx8IGllICYmIHJlID09PSBrKVxuICAgICAgICAgICAgbGUgJiYgbS5fdHJhbnNpdGlvblRvKGQsIEEsIGspO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaCA9IG0uX3pvbmVEZWxlZ2F0ZXM7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUYXNrQ291bnQobSwgLTEpLCBsZSAmJiBtLl90cmFuc2l0aW9uVG8oWCwgQSwgWCksIGllICYmIChtLl96b25lRGVsZWdhdGVzID0gaCk7XG4gICAgICAgICAgfVxuICAgICAgICBiID0gYi5wYXJlbnQsIE8gPSB1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2NoZWR1bGVUYXNrKGEpIHtcbiAgICAgIGlmIChhLnpvbmUgJiYgYS56b25lICE9PSB0aGlzKSB7XG4gICAgICAgIGxldCBvID0gdGhpcztcbiAgICAgICAgZm9yICg7IG87ICkge1xuICAgICAgICAgIGlmIChvID09PSBhLnpvbmUpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gJHt0aGlzLm5hbWV9IHdoaWNoIGlzIGRlc2NlbmRhbnRzIG9mIHRoZSBvcmlnaW5hbCB6b25lICR7YS56b25lLm5hbWV9YCk7XG4gICAgICAgICAgbyA9IG8ucGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhLl90cmFuc2l0aW9uVG8oaywgWCk7XG4gICAgICBjb25zdCBjID0gW107XG4gICAgICBhLl96b25lRGVsZWdhdGVzID0gYywgYS5fem9uZSA9IHRoaXM7XG4gICAgICB0cnkge1xuICAgICAgICBhID0gdGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLCBhKTtcbiAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgdGhyb3cgYS5fdHJhbnNpdGlvblRvKHEsIGssIFgpLCB0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgbyksIG87XG4gICAgICB9XG4gICAgICByZXR1cm4gYS5fem9uZURlbGVnYXRlcyA9PT0gYyAmJiB0aGlzLl91cGRhdGVUYXNrQ291bnQoYSwgMSksIGEuc3RhdGUgPT0gayAmJiBhLl90cmFuc2l0aW9uVG8oZCwgayksIGE7XG4gICAgfVxuICAgIHNjaGVkdWxlTWljcm9UYXNrKGEsIGMsIG8sIG0pIHtcbiAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgXyhWLCBhLCBjLCBvLCBtLCB2b2lkIDApKTtcbiAgICB9XG4gICAgc2NoZWR1bGVNYWNyb1Rhc2soYSwgYywgbywgbSwgeCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBfKHksIGEsIGMsIG8sIG0sIHgpKTtcbiAgICB9XG4gICAgc2NoZWR1bGVFdmVudFRhc2soYSwgYywgbywgbSwgeCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBfKFUsIGEsIGMsIG8sIG0sIHgpKTtcbiAgICB9XG4gICAgY2FuY2VsVGFzayhhKSB7XG4gICAgICBpZiAoYS56b25lICE9IHRoaXMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAoYS56b25lIHx8IEspLm5hbWUgKyBcIjsgRXhlY3V0aW9uOiBcIiArIHRoaXMubmFtZSArIFwiKVwiKTtcbiAgICAgIGlmICghKGEuc3RhdGUgIT09IGQgJiYgYS5zdGF0ZSAhPT0gQSkpIHtcbiAgICAgICAgYS5fdHJhbnNpdGlvblRvKEYsIGQsIEEpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsIGEpO1xuICAgICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgICAgdGhyb3cgYS5fdHJhbnNpdGlvblRvKHEsIEYpLCB0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgYyksIGM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChhLCAtMSksIGEuX3RyYW5zaXRpb25UbyhYLCBGKSwgYS5ydW5Db3VudCA9IC0xLCBhO1xuICAgICAgfVxuICAgIH1cbiAgICBfdXBkYXRlVGFza0NvdW50KGEsIGMpIHtcbiAgICAgIGNvbnN0IG8gPSBhLl96b25lRGVsZWdhdGVzO1xuICAgICAgYyA9PSAtMSAmJiAoYS5fem9uZURlbGVnYXRlcyA9IG51bGwpO1xuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBvLmxlbmd0aDsgbSsrKVxuICAgICAgICBvW21dLl91cGRhdGVUYXNrQ291bnQoYS50eXBlLCBjKTtcbiAgICB9XG4gIH07XG4gIFkuX19zeW1ib2xfXyA9IHRlO1xuICBsZXQgdCA9IFk7XG4gIGNvbnN0IGkgPSB7XG4gICAgbmFtZTogXCJcIixcbiAgICBvbkhhc1Rhc2s6IChILCBhLCBjLCBvKSA9PiBILmhhc1Rhc2soYywgbyksXG4gICAgb25TY2hlZHVsZVRhc2s6IChILCBhLCBjLCBvKSA9PiBILnNjaGVkdWxlVGFzayhjLCBvKSxcbiAgICBvbkludm9rZVRhc2s6IChILCBhLCBjLCBvLCBtLCB4KSA9PiBILmludm9rZVRhc2soYywgbywgbSwgeCksXG4gICAgb25DYW5jZWxUYXNrOiAoSCwgYSwgYywgbykgPT4gSC5jYW5jZWxUYXNrKGMsIG8pXG4gIH07XG4gIGNsYXNzIGwge1xuICAgIGdldCB6b25lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGEsIGMsIG8pIHtcbiAgICAgIHRoaXMuX3Rhc2tDb3VudHMgPSB7XG4gICAgICAgIG1pY3JvVGFzazogMCxcbiAgICAgICAgbWFjcm9UYXNrOiAwLFxuICAgICAgICBldmVudFRhc2s6IDBcbiAgICAgIH0sIHRoaXMuX3pvbmUgPSBhLCB0aGlzLl9wYXJlbnREZWxlZ2F0ZSA9IGMsIHRoaXMuX2ZvcmtaUyA9IG8gJiYgKG8gJiYgby5vbkZvcmsgPyBvIDogYy5fZm9ya1pTKSwgdGhpcy5fZm9ya0RsZ3QgPSBvICYmIChvLm9uRm9yayA/IGMgOiBjLl9mb3JrRGxndCksIHRoaXMuX2ZvcmtDdXJyWm9uZSA9IG8gJiYgKG8ub25Gb3JrID8gdGhpcy5fem9uZSA6IGMuX2ZvcmtDdXJyWm9uZSksIHRoaXMuX2ludGVyY2VwdFpTID0gbyAmJiAoby5vbkludGVyY2VwdCA/IG8gOiBjLl9pbnRlcmNlcHRaUyksIHRoaXMuX2ludGVyY2VwdERsZ3QgPSBvICYmIChvLm9uSW50ZXJjZXB0ID8gYyA6IGMuX2ludGVyY2VwdERsZ3QpLCB0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSA9IG8gJiYgKG8ub25JbnRlcmNlcHQgPyB0aGlzLl96b25lIDogYy5faW50ZXJjZXB0Q3VyclpvbmUpLCB0aGlzLl9pbnZva2VaUyA9IG8gJiYgKG8ub25JbnZva2UgPyBvIDogYy5faW52b2tlWlMpLCB0aGlzLl9pbnZva2VEbGd0ID0gbyAmJiAoby5vbkludm9rZSA/IGMgOiBjLl9pbnZva2VEbGd0KSwgdGhpcy5faW52b2tlQ3VyclpvbmUgPSBvICYmIChvLm9uSW52b2tlID8gdGhpcy5fem9uZSA6IGMuX2ludm9rZUN1cnJab25lKSwgdGhpcy5faGFuZGxlRXJyb3JaUyA9IG8gJiYgKG8ub25IYW5kbGVFcnJvciA/IG8gOiBjLl9oYW5kbGVFcnJvclpTKSwgdGhpcy5faGFuZGxlRXJyb3JEbGd0ID0gbyAmJiAoby5vbkhhbmRsZUVycm9yID8gYyA6IGMuX2hhbmRsZUVycm9yRGxndCksIHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUgPSBvICYmIChvLm9uSGFuZGxlRXJyb3IgPyB0aGlzLl96b25lIDogYy5faGFuZGxlRXJyb3JDdXJyWm9uZSksIHRoaXMuX3NjaGVkdWxlVGFza1pTID0gbyAmJiAoby5vblNjaGVkdWxlVGFzayA/IG8gOiBjLl9zY2hlZHVsZVRhc2taUyksIHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QgPSBvICYmIChvLm9uU2NoZWR1bGVUYXNrID8gYyA6IGMuX3NjaGVkdWxlVGFza0RsZ3QpLCB0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSA9IG8gJiYgKG8ub25TY2hlZHVsZVRhc2sgPyB0aGlzLl96b25lIDogYy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUpLCB0aGlzLl9pbnZva2VUYXNrWlMgPSBvICYmIChvLm9uSW52b2tlVGFzayA/IG8gOiBjLl9pbnZva2VUYXNrWlMpLCB0aGlzLl9pbnZva2VUYXNrRGxndCA9IG8gJiYgKG8ub25JbnZva2VUYXNrID8gYyA6IGMuX2ludm9rZVRhc2tEbGd0KSwgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gbyAmJiAoby5vbkludm9rZVRhc2sgPyB0aGlzLl96b25lIDogYy5faW52b2tlVGFza0N1cnJab25lKSwgdGhpcy5fY2FuY2VsVGFza1pTID0gbyAmJiAoby5vbkNhbmNlbFRhc2sgPyBvIDogYy5fY2FuY2VsVGFza1pTKSwgdGhpcy5fY2FuY2VsVGFza0RsZ3QgPSBvICYmIChvLm9uQ2FuY2VsVGFzayA/IGMgOiBjLl9jYW5jZWxUYXNrRGxndCksIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IG8gJiYgKG8ub25DYW5jZWxUYXNrID8gdGhpcy5fem9uZSA6IGMuX2NhbmNlbFRhc2tDdXJyWm9uZSksIHRoaXMuX2hhc1Rhc2taUyA9IG51bGwsIHRoaXMuX2hhc1Rhc2tEbGd0ID0gbnVsbCwgdGhpcy5faGFzVGFza0RsZ3RPd25lciA9IG51bGwsIHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSA9IG51bGw7XG4gICAgICBjb25zdCBtID0gbyAmJiBvLm9uSGFzVGFzaywgeCA9IGMgJiYgYy5faGFzVGFza1pTO1xuICAgICAgKG0gfHwgeCkgJiYgKHRoaXMuX2hhc1Rhc2taUyA9IG0gPyBvIDogaSwgdGhpcy5faGFzVGFza0RsZ3QgPSBjLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gdGhpcywgdGhpcy5faGFzVGFza0N1cnJab25lID0gdGhpcy5fem9uZSwgby5vblNjaGVkdWxlVGFzayB8fCAodGhpcy5fc2NoZWR1bGVUYXNrWlMgPSBpLCB0aGlzLl9zY2hlZHVsZVRhc2tEbGd0ID0gYywgdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUgPSB0aGlzLl96b25lKSwgby5vbkludm9rZVRhc2sgfHwgKHRoaXMuX2ludm9rZVRhc2taUyA9IGksIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gYywgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gdGhpcy5fem9uZSksIG8ub25DYW5jZWxUYXNrIHx8ICh0aGlzLl9jYW5jZWxUYXNrWlMgPSBpLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IGMsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUpKTtcbiAgICB9XG4gICAgZm9yayhhLCBjKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ya1pTID8gdGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCwgdGhpcy56b25lLCBhLCBjKSA6IG5ldyB0KGEsIGMpO1xuICAgIH1cbiAgICBpbnRlcmNlcHQoYSwgYywgbykge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTID8gdGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCwgdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsIGEsIGMsIG8pIDogYztcbiAgICB9XG4gICAgaW52b2tlKGEsIGMsIG8sIG0sIHgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnZva2VaUyA/IHRoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsIHRoaXMuX2ludm9rZUN1cnJab25lLCBhLCBjLCBvLCBtLCB4KSA6IGMuYXBwbHkobywgbSk7XG4gICAgfVxuICAgIGhhbmRsZUVycm9yKGEsIGMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVFcnJvclpTID8gdGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSwgYSwgYykgOiAhMDtcbiAgICB9XG4gICAgc2NoZWR1bGVUYXNrKGEsIGMpIHtcbiAgICAgIGxldCBvID0gYztcbiAgICAgIGlmICh0aGlzLl9zY2hlZHVsZVRhc2taUylcbiAgICAgICAgdGhpcy5faGFzVGFza1pTICYmIG8uX3pvbmVEZWxlZ2F0ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwgbyA9IHRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLCBhLCBjKSwgbyB8fCAobyA9IGMpO1xuICAgICAgZWxzZSBpZiAoYy5zY2hlZHVsZUZuKVxuICAgICAgICBjLnNjaGVkdWxlRm4oYyk7XG4gICAgICBlbHNlIGlmIChjLnR5cGUgPT0gVilcbiAgICAgICAgQihjKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uXCIpO1xuICAgICAgcmV0dXJuIG87XG4gICAgfVxuICAgIGludm9rZVRhc2soYSwgYywgbywgbSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUyA/IHRoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsIHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSwgYSwgYywgbywgbSkgOiBjLmNhbGxiYWNrLmFwcGx5KG8sIG0pO1xuICAgIH1cbiAgICBjYW5jZWxUYXNrKGEsIGMpIHtcbiAgICAgIGxldCBvO1xuICAgICAgaWYgKHRoaXMuX2NhbmNlbFRhc2taUylcbiAgICAgICAgbyA9IHRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSwgYSwgYyk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFjLmNhbmNlbEZuKVxuICAgICAgICAgIHRocm93IEVycm9yKFwiVGFzayBpcyBub3QgY2FuY2VsYWJsZVwiKTtcbiAgICAgICAgbyA9IGMuY2FuY2VsRm4oYyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbztcbiAgICB9XG4gICAgaGFzVGFzayhhLCBjKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9oYXNUYXNrWlMgJiYgdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCwgdGhpcy5faGFzVGFza0N1cnJab25lLCBhLCBjKTtcbiAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihhLCBvKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnJlcXVpcmUtaW50ZXJuYWwtd2l0aC11bmRlcnNjb3JlXG4gICAgX3VwZGF0ZVRhc2tDb3VudChhLCBjKSB7XG4gICAgICBjb25zdCBvID0gdGhpcy5fdGFza0NvdW50cywgbSA9IG9bYV0sIHggPSBvW2FdID0gbSArIGM7XG4gICAgICBpZiAoeCA8IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC5cIik7XG4gICAgICBpZiAobSA9PSAwIHx8IHggPT0gMCkge1xuICAgICAgICBjb25zdCBNID0ge1xuICAgICAgICAgIG1pY3JvVGFzazogby5taWNyb1Rhc2sgPiAwLFxuICAgICAgICAgIG1hY3JvVGFzazogby5tYWNyb1Rhc2sgPiAwLFxuICAgICAgICAgIGV2ZW50VGFzazogby5ldmVudFRhc2sgPiAwLFxuICAgICAgICAgIGNoYW5nZTogYVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmhhc1Rhc2sodGhpcy5fem9uZSwgTSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNsYXNzIF8ge1xuICAgIGNvbnN0cnVjdG9yKGEsIGMsIG8sIG0sIHgsIE0pIHtcbiAgICAgIGlmICh0aGlzLl96b25lID0gbnVsbCwgdGhpcy5ydW5Db3VudCA9IDAsIHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsLCB0aGlzLl9zdGF0ZSA9IFwibm90U2NoZWR1bGVkXCIsIHRoaXMudHlwZSA9IGEsIHRoaXMuc291cmNlID0gYywgdGhpcy5kYXRhID0gbSwgdGhpcy5zY2hlZHVsZUZuID0geCwgdGhpcy5jYW5jZWxGbiA9IE0sICFvKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjYWxsYmFjayBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBvO1xuICAgICAgY29uc3QgaWUgPSB0aGlzO1xuICAgICAgYSA9PT0gVSAmJiBtICYmIG0udXNlRyA/IHRoaXMuaW52b2tlID0gXy5pbnZva2VUYXNrIDogdGhpcy5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF8uaW52b2tlVGFzay5jYWxsKGFlLCBpZSwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHN0YXRpYyBpbnZva2VUYXNrKGEsIGMsIG8pIHtcbiAgICAgIGEgfHwgKGEgPSB0aGlzKSwgUSsrO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGEucnVuQ291bnQrKywgYS56b25lLnJ1blRhc2soYSwgYywgbyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBRID09IDEgJiYgSigpLCBRLS07XG4gICAgICB9XG4gICAgfVxuICAgIGdldCB6b25lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmU7XG4gICAgfVxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG4gICAgY2FuY2VsU2NoZWR1bGVSZXF1ZXN0KCkge1xuICAgICAgdGhpcy5fdHJhbnNpdGlvblRvKFgsIGspO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cmVxdWlyZS1pbnRlcm5hbC13aXRoLXVuZGVyc2NvcmVcbiAgICBfdHJhbnNpdGlvblRvKGEsIGMsIG8pIHtcbiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gYyB8fCB0aGlzLl9zdGF0ZSA9PT0gbylcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBhLCBhID09IFggJiYgKHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMudHlwZX0gJyR7dGhpcy5zb3VyY2V9JzogY2FuIG5vdCB0cmFuc2l0aW9uIHRvICcke2F9JywgZXhwZWN0aW5nIHN0YXRlICcke2N9JyR7byA/IFwiIG9yICdcIiArIG8gKyBcIidcIiA6IFwiXCJ9LCB3YXMgJyR7dGhpcy5fc3RhdGV9Jy5gKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhICYmIHR5cGVvZiB0aGlzLmRhdGEuaGFuZGxlSWQgPCBcInVcIiA/IHRoaXMuZGF0YS5oYW5kbGVJZC50b1N0cmluZygpIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICAvLyBhZGQgdG9KU09OIG1ldGhvZCB0byBwcmV2ZW50IGN5Y2xpYyBlcnJvciB3aGVuXG4gICAgLy8gY2FsbCBKU09OLnN0cmluZ2lmeSh6b25lVGFzaylcbiAgICB0b0pTT04oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICB6b25lOiB0aGlzLnpvbmUubmFtZSxcbiAgICAgICAgcnVuQ291bnQ6IHRoaXMucnVuQ291bnRcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGNvbnN0IEUgPSB0ZShcInNldFRpbWVvdXRcIiksIFQgPSB0ZShcIlByb21pc2VcIiksIHcgPSB0ZShcInRoZW5cIik7XG4gIGxldCBwID0gW10sIFIgPSAhMSwgRDtcbiAgZnVuY3Rpb24gSShIKSB7XG4gICAgaWYgKEQgfHwgYWVbVF0gJiYgKEQgPSBhZVtUXS5yZXNvbHZlKDApKSwgRCkge1xuICAgICAgbGV0IGEgPSBEW3ddO1xuICAgICAgYSB8fCAoYSA9IEQudGhlbiksIGEuY2FsbChELCBIKTtcbiAgICB9IGVsc2VcbiAgICAgIGFlW0VdKEgsIDApO1xuICB9XG4gIGZ1bmN0aW9uIEIoSCkge1xuICAgIFEgPT09IDAgJiYgcC5sZW5ndGggPT09IDAgJiYgSShKKSwgSCAmJiBwLnB1c2goSCk7XG4gIH1cbiAgZnVuY3Rpb24gSigpIHtcbiAgICBpZiAoIVIpIHtcbiAgICAgIGZvciAoUiA9ICEwOyBwLmxlbmd0aDsgKSB7XG4gICAgICAgIGNvbnN0IEggPSBwO1xuICAgICAgICBwID0gW107XG4gICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgSC5sZW5ndGg7IGErKykge1xuICAgICAgICAgIGNvbnN0IGMgPSBIW2FdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjLnpvbmUucnVuVGFzayhjLCBudWxsLCBudWxsKTtcbiAgICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgICBDLm9uVW5oYW5kbGVkRXJyb3Iobyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBDLm1pY3JvdGFza0RyYWluRG9uZSgpLCBSID0gITE7XG4gICAgfVxuICB9XG4gIGNvbnN0IEsgPSB7IG5hbWU6IFwiTk8gWk9ORVwiIH0sIFggPSBcIm5vdFNjaGVkdWxlZFwiLCBrID0gXCJzY2hlZHVsaW5nXCIsIGQgPSBcInNjaGVkdWxlZFwiLCBBID0gXCJydW5uaW5nXCIsIEYgPSBcImNhbmNlbGluZ1wiLCBxID0gXCJ1bmtub3duXCIsIFYgPSBcIm1pY3JvVGFza1wiLCB5ID0gXCJtYWNyb1Rhc2tcIiwgVSA9IFwiZXZlbnRUYXNrXCIsIFMgPSB7fSwgQyA9IHtcbiAgICBzeW1ib2w6IHRlLFxuICAgIGN1cnJlbnRab25lRnJhbWU6ICgpID0+IGIsXG4gICAgb25VbmhhbmRsZWRFcnJvcjogVyxcbiAgICBtaWNyb3Rhc2tEcmFpbkRvbmU6IFcsXG4gICAgc2NoZWR1bGVNaWNyb1Rhc2s6IEIsXG4gICAgc2hvd1VuY2F1Z2h0RXJyb3I6ICgpID0+ICF0W3RlKFwiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvclwiKV0sXG4gICAgcGF0Y2hFdmVudFRhcmdldDogKCkgPT4gW10sXG4gICAgcGF0Y2hPblByb3BlcnRpZXM6IFcsXG4gICAgcGF0Y2hNZXRob2Q6ICgpID0+IFcsXG4gICAgYmluZEFyZ3VtZW50czogKCkgPT4gW10sXG4gICAgcGF0Y2hUaGVuOiAoKSA9PiBXLFxuICAgIHBhdGNoTWFjcm9UYXNrOiAoKSA9PiBXLFxuICAgIHBhdGNoRXZlbnRQcm90b3R5cGU6ICgpID0+IFcsXG4gICAgaXNJRU9yRWRnZTogKCkgPT4gITEsXG4gICAgZ2V0R2xvYmFsT2JqZWN0czogKCkgPT4ge1xuICAgIH0sXG4gICAgT2JqZWN0RGVmaW5lUHJvcGVydHk6ICgpID0+IFcsXG4gICAgT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAoKSA9PiB7XG4gICAgfSxcbiAgICBPYmplY3RDcmVhdGU6ICgpID0+IHtcbiAgICB9LFxuICAgIEFycmF5U2xpY2U6ICgpID0+IFtdLFxuICAgIHBhdGNoQ2xhc3M6ICgpID0+IFcsXG4gICAgd3JhcFdpdGhDdXJyZW50Wm9uZTogKCkgPT4gVyxcbiAgICBmaWx0ZXJQcm9wZXJ0aWVzOiAoKSA9PiBbXSxcbiAgICBhdHRhY2hPcmlnaW5Ub1BhdGNoZWQ6ICgpID0+IFcsXG4gICAgX3JlZGVmaW5lUHJvcGVydHk6ICgpID0+IFcsXG4gICAgcGF0Y2hDYWxsYmFja3M6ICgpID0+IFcsXG4gICAgbmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2s6IElcbiAgfTtcbiAgbGV0IGIgPSB7IHBhcmVudDogbnVsbCwgem9uZTogbmV3IHQobnVsbCwgbnVsbCkgfSwgTyA9IG51bGwsIFEgPSAwO1xuICBmdW5jdGlvbiBXKCkge1xuICB9XG4gIHJldHVybiBzKFwiWm9uZVwiLCBcIlpvbmVcIiksIHQ7XG59XG5mdW5jdGlvbiBwdCgpIHtcbiAgY29uc3QgZSA9IGdsb2JhbFRoaXMsIG4gPSBlW3RlKFwiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2tcIildID09PSAhMDtcbiAgaWYgKGUuWm9uZSAmJiAobiB8fCB0eXBlb2YgZS5ab25lLl9fc3ltYm9sX18gIT0gXCJmdW5jdGlvblwiKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lIGFscmVhZHkgbG9hZGVkLlwiKTtcbiAgcmV0dXJuIGUuWm9uZSA/PyAoZS5ab25lID0gVHQoKSksIGUuWm9uZTtcbn1cbmNvbnN0IGJlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgamUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIEhlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBndCA9IE9iamVjdC5jcmVhdGUsIHl0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLCB4ZSA9IFwiYWRkRXZlbnRMaXN0ZW5lclwiLCBGZSA9IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLCBaZSA9IHRlKHhlKSwgTWUgPSB0ZShGZSksIGZlID0gXCJ0cnVlXCIsIGhlID0gXCJmYWxzZVwiLCBQZSA9IHRlKFwiXCIpO1xuZnVuY3Rpb24gVmUoZSwgbikge1xuICByZXR1cm4gWm9uZS5jdXJyZW50LndyYXAoZSwgbik7XG59XG5mdW5jdGlvbiBHZShlLCBuLCBzLCB0LCBpKSB7XG4gIHJldHVybiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2soZSwgbiwgcywgdCwgaSk7XG59XG5jb25zdCBqID0gdGUsIE9lID0gdHlwZW9mIHdpbmRvdyA8IFwidVwiLCBtZSA9IE9lID8gd2luZG93IDogdm9pZCAwLCAkID0gT2UgJiYgbWUgfHwgZ2xvYmFsVGhpcywgbXQgPSBcInJlbW92ZUF0dHJpYnV0ZVwiO1xuZnVuY3Rpb24gemUoZSwgbikge1xuICBmb3IgKGxldCBzID0gZS5sZW5ndGggLSAxOyBzID49IDA7IHMtLSlcbiAgICB0eXBlb2YgZVtzXSA9PSBcImZ1bmN0aW9uXCIgJiYgKGVbc10gPSBWZShlW3NdLCBuICsgXCJfXCIgKyBzKSk7XG4gIHJldHVybiBlO1xufVxuZnVuY3Rpb24ga3QoZSwgbikge1xuICBjb25zdCBzID0gZS5jb25zdHJ1Y3Rvci5uYW1lO1xuICBmb3IgKGxldCB0ID0gMDsgdCA8IG4ubGVuZ3RoOyB0KyspIHtcbiAgICBjb25zdCBpID0gblt0XSwgbCA9IGVbaV07XG4gICAgaWYgKGwpIHtcbiAgICAgIGNvbnN0IF8gPSBiZShlLCBpKTtcbiAgICAgIGlmICghcnQoXykpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgZVtpXSA9ICgoRSkgPT4ge1xuICAgICAgICBjb25zdCBUID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIEUuYXBwbHkodGhpcywgemUoYXJndW1lbnRzLCBzICsgXCIuXCIgKyBpKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfZShULCBFKSwgVDtcbiAgICAgIH0pKGwpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcnQoZSkge1xuICByZXR1cm4gZSA/IGUud3JpdGFibGUgPT09ICExID8gITEgOiAhKHR5cGVvZiBlLmdldCA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGUuc2V0ID4gXCJ1XCIpIDogITA7XG59XG5jb25zdCBvdCA9IHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSA8IFwidVwiICYmIHNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSwgRGUgPSAhKFwibndcIiBpbiAkKSAmJiB0eXBlb2YgJC5wcm9jZXNzIDwgXCJ1XCIgJiYgJC5wcm9jZXNzLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiLCBCZSA9ICFEZSAmJiAhb3QgJiYgISEoT2UgJiYgbWUuSFRNTEVsZW1lbnQpLCBzdCA9IHR5cGVvZiAkLnByb2Nlc3MgPCBcInVcIiAmJiAkLnByb2Nlc3MudG9TdHJpbmcoKSA9PT0gXCJbb2JqZWN0IHByb2Nlc3NdXCIgJiYgIW90ICYmICEhKE9lICYmIG1lLkhUTUxFbGVtZW50KSwgQ2UgPSB7fSwgdnQgPSBqKFwiZW5hYmxlX2JlZm9yZXVubG9hZFwiKSwgSmUgPSBmdW5jdGlvbihlKSB7XG4gIGlmIChlID0gZSB8fCAkLmV2ZW50LCAhZSlcbiAgICByZXR1cm47XG4gIGxldCBuID0gQ2VbZS50eXBlXTtcbiAgbiB8fCAobiA9IENlW2UudHlwZV0gPSBqKFwiT05fUFJPUEVSVFlcIiArIGUudHlwZSkpO1xuICBjb25zdCBzID0gdGhpcyB8fCBlLnRhcmdldCB8fCAkLCB0ID0gc1tuXTtcbiAgbGV0IGk7XG4gIGlmIChCZSAmJiBzID09PSBtZSAmJiBlLnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgIGNvbnN0IGwgPSBlO1xuICAgIGkgPSB0ICYmIHQuY2FsbCh0aGlzLCBsLm1lc3NhZ2UsIGwuZmlsZW5hbWUsIGwubGluZW5vLCBsLmNvbG5vLCBsLmVycm9yKSwgaSA9PT0gITAgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9IGVsc2VcbiAgICBpID0gdCAmJiB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzQ3NTc5XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtaHRtbDUtMjAxMTA1MjUvaGlzdG9yeS5odG1sI2JlZm9yZXVubG9hZGV2ZW50XG4gICAgLy8gVGhpcyBpcyB0aGUgb25seSBzcGVjaWZpYyBjYXNlIHdlIHNob3VsZCBjaGVjayBmb3IuIFRoZSBzcGVjIGRlZmluZXMgdGhhdCB0aGVcbiAgICAvLyBgcmV0dXJuVmFsdWVgIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSBtZXNzYWdlIHRvIHNob3cgdGhlIHVzZXIuIFdoZW4gdGhlIGV2ZW50XG4gICAgLy8gaXMgY3JlYXRlZCwgdGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICBlLnR5cGUgPT09IFwiYmVmb3JldW5sb2FkXCIgJiYgLy8gVG8gcHJldmVudCBhbnkgYnJlYWtpbmcgY2hhbmdlcyByZXN1bHRpbmcgZnJvbSB0aGlzIGNoYW5nZSwgZ2l2ZW4gdGhhdFxuICAgIC8vIGl0IHdhcyBhbHJlYWR5IGNhdXNpbmcgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgZmFpbHVyZXMgaW4gRzMsIHdlIGhhdmUgaGlkZGVuXG4gICAgLy8gdGhhdCBiZWhhdmlvciBiZWhpbmQgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBmbGFnLiBDb25zdW1lcnMgY2FuIGVuYWJsZSB0aGlzXG4gICAgLy8gZmxhZyBleHBsaWNpdGx5IGlmIHRoZXkgd2FudCB0aGUgYGJlZm9yZXVubG9hZGAgZXZlbnQgdG8gYmUgaGFuZGxlZCBhcyBkZWZpbmVkXG4gICAgLy8gaW4gdGhlIHNwZWNpZmljYXRpb24uXG4gICAgJFt2dF0gJiYgLy8gVGhlIElETCBldmVudCBkZWZpbml0aW9uIGlzIGBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJldHVyblZhbHVlYCwgc28gd2UgY2hlY2sgd2hldGhlclxuICAgIC8vIGB0eXBlb2YgcmVzdWx0YCBpcyBhIHN0cmluZy5cbiAgICB0eXBlb2YgaSA9PSBcInN0cmluZ1wiID8gZS5yZXR1cm5WYWx1ZSA9IGkgOiBpICE9IG51bGwgJiYgIWkgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBLZShlLCBuLCBzKSB7XG4gIGxldCB0ID0gYmUoZSwgbik7XG4gIGlmICghdCAmJiBzICYmIGJlKHMsIG4pICYmICh0ID0geyBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCB9KSwgIXQgfHwgIXQuY29uZmlndXJhYmxlKVxuICAgIHJldHVybjtcbiAgY29uc3QgaSA9IGooXCJvblwiICsgbiArIFwicGF0Y2hlZFwiKTtcbiAgaWYgKGUuaGFzT3duUHJvcGVydHkoaSkgJiYgZVtpXSlcbiAgICByZXR1cm47XG4gIGRlbGV0ZSB0LndyaXRhYmxlLCBkZWxldGUgdC52YWx1ZTtcbiAgY29uc3QgbCA9IHQuZ2V0LCBfID0gdC5zZXQsIEUgPSBuLnNsaWNlKDIpO1xuICBsZXQgVCA9IENlW0VdO1xuICBUIHx8IChUID0gQ2VbRV0gPSBqKFwiT05fUFJPUEVSVFlcIiArIEUpKSwgdC5zZXQgPSBmdW5jdGlvbih3KSB7XG4gICAgbGV0IHAgPSB0aGlzO1xuICAgIGlmICghcCAmJiBlID09PSAkICYmIChwID0gJCksICFwKVxuICAgICAgcmV0dXJuO1xuICAgIHR5cGVvZiBwW1RdID09IFwiZnVuY3Rpb25cIiAmJiBwLnJlbW92ZUV2ZW50TGlzdGVuZXIoRSwgSmUpLCBfICYmIF8uY2FsbChwLCBudWxsKSwgcFtUXSA9IHcsIHR5cGVvZiB3ID09IFwiZnVuY3Rpb25cIiAmJiBwLmFkZEV2ZW50TGlzdGVuZXIoRSwgSmUsICExKTtcbiAgfSwgdC5nZXQgPSBmdW5jdGlvbigpIHtcbiAgICBsZXQgdyA9IHRoaXM7XG4gICAgaWYgKCF3ICYmIGUgPT09ICQgJiYgKHcgPSAkKSwgIXcpXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwID0gd1tUXTtcbiAgICBpZiAocClcbiAgICAgIHJldHVybiBwO1xuICAgIGlmIChsKSB7XG4gICAgICBsZXQgUiA9IGwuY2FsbCh0aGlzKTtcbiAgICAgIGlmIChSKVxuICAgICAgICByZXR1cm4gdC5zZXQuY2FsbCh0aGlzLCBSKSwgdHlwZW9mIHdbbXRdID09IFwiZnVuY3Rpb25cIiAmJiB3LnJlbW92ZUF0dHJpYnV0ZShuKSwgUjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIGplKGUsIG4sIHQpLCBlW2ldID0gITA7XG59XG5mdW5jdGlvbiBpdChlLCBuLCBzKSB7XG4gIGlmIChuKVxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgbi5sZW5ndGg7IHQrKylcbiAgICAgIEtlKGUsIFwib25cIiArIG5bdF0sIHMpO1xuICBlbHNlIHtcbiAgICBjb25zdCB0ID0gW107XG4gICAgZm9yIChjb25zdCBpIGluIGUpXG4gICAgICBpLnNsaWNlKDAsIDIpID09IFwib25cIiAmJiB0LnB1c2goaSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKVxuICAgICAgS2UoZSwgdFtpXSwgcyk7XG4gIH1cbn1cbmNvbnN0IHNlID0gaihcIm9yaWdpbmFsSW5zdGFuY2VcIik7XG5mdW5jdGlvbiB2ZShlKSB7XG4gIGNvbnN0IG4gPSAkW2VdO1xuICBpZiAoIW4pXG4gICAgcmV0dXJuO1xuICAkW2ooZSldID0gbiwgJFtlXSA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGkgPSB6ZShhcmd1bWVudHMsIGUpO1xuICAgIHN3aXRjaCAoaS5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpc1tzZV0gPSBuZXcgbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdGhpc1tzZV0gPSBuZXcgbihpWzBdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHRoaXNbc2VdID0gbmV3IG4oaVswXSwgaVsxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzW3NlXSA9IG5ldyBuKGlbMF0sIGlbMV0sIGlbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgdGhpc1tzZV0gPSBuZXcgbihpWzBdLCBpWzFdLCBpWzJdLCBpWzNdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmcgbGlzdCB0b28gbG9uZy5cIik7XG4gICAgfVxuICB9LCBfZSgkW2VdLCBuKTtcbiAgY29uc3QgcyA9IG5ldyBuKGZ1bmN0aW9uKCkge1xuICB9KTtcbiAgbGV0IHQ7XG4gIGZvciAodCBpbiBzKVxuICAgIGUgPT09IFwiWE1MSHR0cFJlcXVlc3RcIiAmJiB0ID09PSBcInJlc3BvbnNlQmxvYlwiIHx8IGZ1bmN0aW9uKGkpIHtcbiAgICAgIHR5cGVvZiBzW2ldID09IFwiZnVuY3Rpb25cIiA/ICRbZV0ucHJvdG90eXBlW2ldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3NlXVtpXS5hcHBseSh0aGlzW3NlXSwgYXJndW1lbnRzKTtcbiAgICAgIH0gOiBqZSgkW2VdLnByb3RvdHlwZSwgaSwge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uKGwpIHtcbiAgICAgICAgICB0eXBlb2YgbCA9PSBcImZ1bmN0aW9uXCIgPyAodGhpc1tzZV1baV0gPSBWZShsLCBlICsgXCIuXCIgKyBpKSwgX2UodGhpc1tzZV1baV0sIGwpKSA6IHRoaXNbc2VdW2ldID0gbDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tzZV1baV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0odCk7XG4gIGZvciAodCBpbiBuKVxuICAgIHQgIT09IFwicHJvdG90eXBlXCIgJiYgbi5oYXNPd25Qcm9wZXJ0eSh0KSAmJiAoJFtlXVt0XSA9IG5bdF0pO1xufVxuZnVuY3Rpb24gZGUoZSwgbiwgcykge1xuICBsZXQgdCA9IGU7XG4gIGZvciAoOyB0ICYmICF0Lmhhc093blByb3BlcnR5KG4pOyApXG4gICAgdCA9IEhlKHQpO1xuICAhdCAmJiBlW25dICYmICh0ID0gZSk7XG4gIGNvbnN0IGkgPSBqKG4pO1xuICBsZXQgbCA9IG51bGw7XG4gIGlmICh0ICYmICghKGwgPSB0W2ldKSB8fCAhdC5oYXNPd25Qcm9wZXJ0eShpKSkpIHtcbiAgICBsID0gdFtpXSA9IHRbbl07XG4gICAgY29uc3QgXyA9IHQgJiYgYmUodCwgbik7XG4gICAgaWYgKHJ0KF8pKSB7XG4gICAgICBjb25zdCBFID0gcyhsLCBpLCBuKTtcbiAgICAgIHRbbl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEUodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0sIF9lKHRbbl0sIGwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbDtcbn1cbmZ1bmN0aW9uIGJ0KGUsIG4sIHMpIHtcbiAgbGV0IHQgPSBudWxsO1xuICBmdW5jdGlvbiBpKGwpIHtcbiAgICBjb25zdCBfID0gbC5kYXRhO1xuICAgIHJldHVybiBfLmFyZ3NbXy5jYklkeF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGwuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfSwgdC5hcHBseShfLnRhcmdldCwgXy5hcmdzKSwgbDtcbiAgfVxuICB0ID0gZGUoZSwgbiwgKGwpID0+IGZ1bmN0aW9uKF8sIEUpIHtcbiAgICBjb25zdCBUID0gcyhfLCBFKTtcbiAgICByZXR1cm4gVC5jYklkeCA+PSAwICYmIHR5cGVvZiBFW1QuY2JJZHhdID09IFwiZnVuY3Rpb25cIiA/IEdlKFQubmFtZSwgRVtULmNiSWR4XSwgVCwgaSkgOiBsLmFwcGx5KF8sIEUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIF9lKGUsIG4pIHtcbiAgZVtqKFwiT3JpZ2luYWxEZWxlZ2F0ZVwiKV0gPSBuO1xufVxubGV0IFFlID0gITEsIEllID0gITE7XG5mdW5jdGlvbiBQdCgpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlID0gbWUubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBpZiAoZS5pbmRleE9mKFwiTVNJRSBcIikgIT09IC0xIHx8IGUuaW5kZXhPZihcIlRyaWRlbnQvXCIpICE9PSAtMSlcbiAgICAgIHJldHVybiAhMDtcbiAgfSBjYXRjaCB7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gd3QoKSB7XG4gIGlmIChRZSlcbiAgICByZXR1cm4gSWU7XG4gIFFlID0gITA7XG4gIHRyeSB7XG4gICAgY29uc3QgZSA9IG1lLm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgKGUuaW5kZXhPZihcIk1TSUUgXCIpICE9PSAtMSB8fCBlLmluZGV4T2YoXCJUcmlkZW50L1wiKSAhPT0gLTEgfHwgZS5pbmRleE9mKFwiRWRnZS9cIikgIT09IC0xKSAmJiAoSWUgPSAhMCk7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHJldHVybiBJZTtcbn1cbmZ1bmN0aW9uIGV0KGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIHR0KGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwibnVtYmVyXCI7XG59XG5sZXQgeWUgPSAhMTtcbmlmICh0eXBlb2Ygd2luZG93IDwgXCJ1XCIpXG4gIHRyeSB7XG4gICAgY29uc3QgZSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgXCJwYXNzaXZlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHllID0gITA7XG4gICAgICB9XG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsIGUsIGUpLCB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIiwgZSwgZSk7XG4gIH0gY2F0Y2gge1xuICAgIHllID0gITE7XG4gIH1cbmNvbnN0IFJ0ID0ge1xuICB1c2VHOiAhMFxufSwgbmUgPSB7fSwgY3QgPSB7fSwgYXQgPSBuZXcgUmVnRXhwKFwiXlwiICsgUGUgKyBcIihcXFxcdyspKHRydWV8ZmFsc2UpJFwiKSwgbHQgPSBqKFwicHJvcGFnYXRpb25TdG9wcGVkXCIpO1xuZnVuY3Rpb24gdXQoZSwgbikge1xuICBjb25zdCBzID0gKG4gPyBuKGUpIDogZSkgKyBoZSwgdCA9IChuID8gbihlKSA6IGUpICsgZmUsIGkgPSBQZSArIHMsIGwgPSBQZSArIHQ7XG4gIG5lW2VdID0ge30sIG5lW2VdW2hlXSA9IGksIG5lW2VdW2ZlXSA9IGw7XG59XG5mdW5jdGlvbiBDdChlLCBuLCBzLCB0KSB7XG4gIGNvbnN0IGkgPSB0ICYmIHQuYWRkIHx8IHhlLCBsID0gdCAmJiB0LnJtIHx8IEZlLCBfID0gdCAmJiB0Lmxpc3RlbmVycyB8fCBcImV2ZW50TGlzdGVuZXJzXCIsIEUgPSB0ICYmIHQucm1BbGwgfHwgXCJyZW1vdmVBbGxMaXN0ZW5lcnNcIiwgVCA9IGooaSksIHcgPSBcIi5cIiArIGkgKyBcIjpcIiwgcCA9IFwicHJlcGVuZExpc3RlbmVyXCIsIFIgPSBcIi5cIiArIHAgKyBcIjpcIiwgRCA9IGZ1bmN0aW9uKGssIGQsIEEpIHtcbiAgICBpZiAoay5pc1JlbW92ZWQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgRiA9IGsuY2FsbGJhY2s7XG4gICAgdHlwZW9mIEYgPT0gXCJvYmplY3RcIiAmJiBGLmhhbmRsZUV2ZW50ICYmIChrLmNhbGxiYWNrID0gKHkpID0+IEYuaGFuZGxlRXZlbnQoeSksIGsub3JpZ2luYWxEZWxlZ2F0ZSA9IEYpO1xuICAgIGxldCBxO1xuICAgIHRyeSB7XG4gICAgICBrLmludm9rZShrLCBkLCBbQV0pO1xuICAgIH0gY2F0Y2ggKHkpIHtcbiAgICAgIHEgPSB5O1xuICAgIH1cbiAgICBjb25zdCBWID0gay5vcHRpb25zO1xuICAgIGlmIChWICYmIHR5cGVvZiBWID09IFwib2JqZWN0XCIgJiYgVi5vbmNlKSB7XG4gICAgICBjb25zdCB5ID0gay5vcmlnaW5hbERlbGVnYXRlID8gay5vcmlnaW5hbERlbGVnYXRlIDogay5jYWxsYmFjaztcbiAgICAgIGRbbF0uY2FsbChkLCBBLnR5cGUsIHksIFYpO1xuICAgIH1cbiAgICByZXR1cm4gcTtcbiAgfTtcbiAgZnVuY3Rpb24gSShrLCBkLCBBKSB7XG4gICAgaWYgKGQgPSBkIHx8IGUuZXZlbnQsICFkKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IEYgPSBrIHx8IGQudGFyZ2V0IHx8IGUsIHEgPSBGW25lW2QudHlwZV1bQSA/IGZlIDogaGVdXTtcbiAgICBpZiAocSkge1xuICAgICAgY29uc3QgViA9IFtdO1xuICAgICAgaWYgKHEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IHkgPSBEKHFbMF0sIEYsIGQpO1xuICAgICAgICB5ICYmIFYucHVzaCh5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHkgPSBxLnNsaWNlKCk7XG4gICAgICAgIGZvciAobGV0IFUgPSAwOyBVIDwgeS5sZW5ndGggJiYgIShkICYmIGRbbHRdID09PSAhMCk7IFUrKykge1xuICAgICAgICAgIGNvbnN0IFMgPSBEKHlbVV0sIEYsIGQpO1xuICAgICAgICAgIFMgJiYgVi5wdXNoKFMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoVi5sZW5ndGggPT09IDEpXG4gICAgICAgIHRocm93IFZbMF07XG4gICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IFYubGVuZ3RoOyB5KyspIHtcbiAgICAgICAgY29uc3QgVSA9IFZbeV07XG4gICAgICAgIG4ubmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IFU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBCID0gZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBJKHRoaXMsIGssICExKTtcbiAgfSwgSiA9IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gSSh0aGlzLCBrLCAhMCk7XG4gIH07XG4gIGZ1bmN0aW9uIEsoaywgZCkge1xuICAgIGlmICghaylcbiAgICAgIHJldHVybiAhMTtcbiAgICBsZXQgQSA9ICEwO1xuICAgIGQgJiYgZC51c2VHICE9PSB2b2lkIDAgJiYgKEEgPSBkLnVzZUcpO1xuICAgIGNvbnN0IEYgPSBkICYmIGQudmg7XG4gICAgbGV0IHEgPSAhMDtcbiAgICBkICYmIGQuY2hrRHVwICE9PSB2b2lkIDAgJiYgKHEgPSBkLmNoa0R1cCk7XG4gICAgbGV0IFYgPSAhMTtcbiAgICBkICYmIGQucnQgIT09IHZvaWQgMCAmJiAoViA9IGQucnQpO1xuICAgIGxldCB5ID0gaztcbiAgICBmb3IgKDsgeSAmJiAheS5oYXNPd25Qcm9wZXJ0eShpKTsgKVxuICAgICAgeSA9IEhlKHkpO1xuICAgIGlmICgheSAmJiBrW2ldICYmICh5ID0gayksICF5IHx8IHlbVF0pXG4gICAgICByZXR1cm4gITE7XG4gICAgY29uc3QgVSA9IGQgJiYgZC5ldmVudE5hbWVUb1N0cmluZywgUyA9IHt9LCBDID0geVtUXSA9IHlbaV0sIGIgPSB5W2oobCldID0geVtsXSwgTyA9IHlbaihfKV0gPSB5W19dLCBRID0geVtqKEUpXSA9IHlbRV07XG4gICAgbGV0IFc7XG4gICAgZCAmJiBkLnByZXBlbmQgJiYgKFcgPSB5W2ooZC5wcmVwZW5kKV0gPSB5W2QucHJlcGVuZF0pO1xuICAgIGZ1bmN0aW9uIFkociwgZikge1xuICAgICAgcmV0dXJuICF5ZSAmJiB0eXBlb2YgciA9PSBcIm9iamVjdFwiICYmIHIgPyAhIXIuY2FwdHVyZSA6ICF5ZSB8fCAhZiA/IHIgOiB0eXBlb2YgciA9PSBcImJvb2xlYW5cIiA/IHsgY2FwdHVyZTogciwgcGFzc2l2ZTogITAgfSA6IHIgPyB0eXBlb2YgciA9PSBcIm9iamVjdFwiICYmIHIucGFzc2l2ZSAhPT0gITEgPyB7IC4uLnIsIHBhc3NpdmU6ICEwIH0gOiByIDogeyBwYXNzaXZlOiAhMCB9O1xuICAgIH1cbiAgICBjb25zdCBIID0gZnVuY3Rpb24ocikge1xuICAgICAgaWYgKCFTLmlzRXhpc3RpbmcpXG4gICAgICAgIHJldHVybiBDLmNhbGwoUy50YXJnZXQsIFMuZXZlbnROYW1lLCBTLmNhcHR1cmUgPyBKIDogQiwgUy5vcHRpb25zKTtcbiAgICB9LCBhID0gZnVuY3Rpb24ocikge1xuICAgICAgaWYgKCFyLmlzUmVtb3ZlZCkge1xuICAgICAgICBjb25zdCBmID0gbmVbci5ldmVudE5hbWVdO1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZiAmJiAodiA9IGZbci5jYXB0dXJlID8gZmUgOiBoZV0pO1xuICAgICAgICBjb25zdCBQID0gdiAmJiByLnRhcmdldFt2XTtcbiAgICAgICAgaWYgKFApIHtcbiAgICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IFAubGVuZ3RoOyBnKyspXG4gICAgICAgICAgICBpZiAoUFtnXSA9PT0gcikge1xuICAgICAgICAgICAgICBQLnNwbGljZShnLCAxKSwgci5pc1JlbW92ZWQgPSAhMCwgci5yZW1vdmVBYm9ydExpc3RlbmVyICYmIChyLnJlbW92ZUFib3J0TGlzdGVuZXIoKSwgci5yZW1vdmVBYm9ydExpc3RlbmVyID0gbnVsbCksIFAubGVuZ3RoID09PSAwICYmIChyLmFsbFJlbW92ZWQgPSAhMCwgci50YXJnZXRbdl0gPSBudWxsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyLmFsbFJlbW92ZWQpXG4gICAgICAgIHJldHVybiBiLmNhbGwoci50YXJnZXQsIHIuZXZlbnROYW1lLCByLmNhcHR1cmUgPyBKIDogQiwgci5vcHRpb25zKTtcbiAgICB9LCBjID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIEMuY2FsbChTLnRhcmdldCwgUy5ldmVudE5hbWUsIHIuaW52b2tlLCBTLm9wdGlvbnMpO1xuICAgIH0sIG8gPSBmdW5jdGlvbihyKSB7XG4gICAgICByZXR1cm4gVy5jYWxsKFMudGFyZ2V0LCBTLmV2ZW50TmFtZSwgci5pbnZva2UsIFMub3B0aW9ucyk7XG4gICAgfSwgbSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiBiLmNhbGwoci50YXJnZXQsIHIuZXZlbnROYW1lLCByLmludm9rZSwgci5vcHRpb25zKTtcbiAgICB9LCB4ID0gQSA/IEggOiBjLCBNID0gQSA/IGEgOiBtLCBpZSA9IGZ1bmN0aW9uKHIsIGYpIHtcbiAgICAgIGNvbnN0IHYgPSB0eXBlb2YgZjtcbiAgICAgIHJldHVybiB2ID09PSBcImZ1bmN0aW9uXCIgJiYgci5jYWxsYmFjayA9PT0gZiB8fCB2ID09PSBcIm9iamVjdFwiICYmIHIub3JpZ2luYWxEZWxlZ2F0ZSA9PT0gZjtcbiAgICB9LCBsZSA9IGQgJiYgZC5kaWZmID8gZC5kaWZmIDogaWUsIHVlID0gWm9uZVtqKFwiVU5QQVRDSEVEX0VWRU5UU1wiKV0sIHJlID0gZVtqKFwiUEFTU0lWRV9FVkVOVFNcIildO1xuICAgIGZ1bmN0aW9uIGgocikge1xuICAgICAgaWYgKHR5cGVvZiByID09IFwib2JqZWN0XCIgJiYgciAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmID0geyAuLi5yIH07XG4gICAgICAgIHJldHVybiByLnNpZ25hbCAmJiAoZi5zaWduYWwgPSByLnNpZ25hbCksIGY7XG4gICAgICB9XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gICAgY29uc3QgdSA9IGZ1bmN0aW9uKHIsIGYsIHYsIFAsIGcgPSAhMSwgTiA9ICExKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IEwgPSB0aGlzIHx8IGU7XG4gICAgICAgIGxldCBaID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKFogPSBkLnRyYW5zZmVyRXZlbnROYW1lKFopKTtcbiAgICAgICAgbGV0IEcgPSBhcmd1bWVudHNbMV07XG4gICAgICAgIGlmICghRylcbiAgICAgICAgICByZXR1cm4gci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICBpZiAoRGUgJiYgWiA9PT0gXCJ1bmNhdWdodEV4Y2VwdGlvblwiKVxuICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIGxldCB6ID0gITE7XG4gICAgICAgIGlmICh0eXBlb2YgRyAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBpZiAoIUcuaGFuZGxlRXZlbnQpXG4gICAgICAgICAgICByZXR1cm4gci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIHogPSAhMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRiAmJiAhRihyLCBHLCBMLCBhcmd1bWVudHMpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgRWUgPSB5ZSAmJiAhIXJlICYmIHJlLmluZGV4T2YoWikgIT09IC0xLCBlZSA9IGgoWShhcmd1bWVudHNbMl0sIEVlKSksIFRlID0gZWUgPT0gbnVsbCA/IHZvaWQgMCA6IGVlLnNpZ25hbDtcbiAgICAgICAgaWYgKFRlICE9IG51bGwgJiYgVGUuYWJvcnRlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh1ZSkge1xuICAgICAgICAgIGZvciAobGV0IGNlID0gMDsgY2UgPCB1ZS5sZW5ndGg7IGNlKyspXG4gICAgICAgICAgICBpZiAoWiA9PT0gdWVbY2VdKVxuICAgICAgICAgICAgICByZXR1cm4gRWUgPyByLmNhbGwoTCwgWiwgRywgZWUpIDogci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFNlID0gZWUgPyB0eXBlb2YgZWUgPT0gXCJib29sZWFuXCIgPyAhMCA6IGVlLmNhcHR1cmUgOiAhMSwgVWUgPSBlZSAmJiB0eXBlb2YgZWUgPT0gXCJvYmplY3RcIiA/IGVlLm9uY2UgOiAhMSwgX3QgPSBab25lLmN1cnJlbnQ7XG4gICAgICAgIGxldCBOZSA9IG5lW1pdO1xuICAgICAgICBOZSB8fCAodXQoWiwgVSksIE5lID0gbmVbWl0pO1xuICAgICAgICBjb25zdCBXZSA9IE5lW1NlID8gZmUgOiBoZV07XG4gICAgICAgIGxldCBwZSA9IExbV2VdLCBYZSA9ICExO1xuICAgICAgICBpZiAocGUpIHtcbiAgICAgICAgICBpZiAoWGUgPSAhMCwgcSkge1xuICAgICAgICAgICAgZm9yIChsZXQgY2UgPSAwOyBjZSA8IHBlLmxlbmd0aDsgY2UrKylcbiAgICAgICAgICAgICAgaWYgKGxlKHBlW2NlXSwgRykpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgcGUgPSBMW1dlXSA9IFtdO1xuICAgICAgICBsZXQgd2U7XG4gICAgICAgIGNvbnN0IHFlID0gTC5jb25zdHJ1Y3Rvci5uYW1lLCBZZSA9IGN0W3FlXTtcbiAgICAgICAgWWUgJiYgKHdlID0gWWVbWl0pLCB3ZSB8fCAod2UgPSBxZSArIGYgKyAoVSA/IFUoWikgOiBaKSksIFMub3B0aW9ucyA9IGVlLCBVZSAmJiAoUy5vcHRpb25zLm9uY2UgPSAhMSksIFMudGFyZ2V0ID0gTCwgUy5jYXB0dXJlID0gU2UsIFMuZXZlbnROYW1lID0gWiwgUy5pc0V4aXN0aW5nID0gWGU7XG4gICAgICAgIGNvbnN0IGtlID0gQSA/IFJ0IDogdm9pZCAwO1xuICAgICAgICBrZSAmJiAoa2UudGFza0RhdGEgPSBTKSwgVGUgJiYgKFMub3B0aW9ucy5zaWduYWwgPSB2b2lkIDApO1xuICAgICAgICBjb25zdCBvZSA9IF90LnNjaGVkdWxlRXZlbnRUYXNrKHdlLCBHLCBrZSwgdiwgUCk7XG4gICAgICAgIGlmIChUZSkge1xuICAgICAgICAgIFMub3B0aW9ucy5zaWduYWwgPSBUZTtcbiAgICAgICAgICBjb25zdCBjZSA9ICgpID0+IG9lLnpvbmUuY2FuY2VsVGFzayhvZSk7XG4gICAgICAgICAgci5jYWxsKFRlLCBcImFib3J0XCIsIGNlLCB7IG9uY2U6ICEwIH0pLCBvZS5yZW1vdmVBYm9ydExpc3RlbmVyID0gKCkgPT4gVGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUy50YXJnZXQgPSBudWxsLCBrZSAmJiAoa2UudGFza0RhdGEgPSBudWxsKSwgVWUgJiYgKFMub3B0aW9ucy5vbmNlID0gITApLCAheWUgJiYgdHlwZW9mIG9lLm9wdGlvbnMgPT0gXCJib29sZWFuXCIgfHwgKG9lLm9wdGlvbnMgPSBlZSksIG9lLnRhcmdldCA9IEwsIG9lLmNhcHR1cmUgPSBTZSwgb2UuZXZlbnROYW1lID0gWiwgeiAmJiAob2Uub3JpZ2luYWxEZWxlZ2F0ZSA9IEcpLCBOID8gcGUudW5zaGlmdChvZSkgOiBwZS5wdXNoKG9lKSwgZylcbiAgICAgICAgICByZXR1cm4gTDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4geVtpXSA9IHUoQywgdywgeCwgTSwgViksIFcgJiYgKHlbcF0gPSB1KFcsIFIsIG8sIE0sIFYsICEwKSksIHlbbF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzIHx8IGU7XG4gICAgICBsZXQgZiA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAoZiA9IGQudHJhbnNmZXJFdmVudE5hbWUoZikpO1xuICAgICAgY29uc3QgdiA9IGFyZ3VtZW50c1syXSwgUCA9IHYgPyB0eXBlb2YgdiA9PSBcImJvb2xlYW5cIiA/ICEwIDogdi5jYXB0dXJlIDogITEsIGcgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoIWcpXG4gICAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoRiAmJiAhRihiLCBnLCByLCBhcmd1bWVudHMpKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBOID0gbmVbZl07XG4gICAgICBsZXQgTDtcbiAgICAgIE4gJiYgKEwgPSBOW1AgPyBmZSA6IGhlXSk7XG4gICAgICBjb25zdCBaID0gTCAmJiByW0xdO1xuICAgICAgaWYgKFopXG4gICAgICAgIGZvciAobGV0IEcgPSAwOyBHIDwgWi5sZW5ndGg7IEcrKykge1xuICAgICAgICAgIGNvbnN0IHogPSBaW0ddO1xuICAgICAgICAgIGlmIChsZSh6LCBnKSkge1xuICAgICAgICAgICAgaWYgKFouc3BsaWNlKEcsIDEpLCB6LmlzUmVtb3ZlZCA9ICEwLCBaLmxlbmd0aCA9PT0gMCAmJiAoei5hbGxSZW1vdmVkID0gITAsIHJbTF0gPSBudWxsLCAhUCAmJiB0eXBlb2YgZiA9PSBcInN0cmluZ1wiKSkge1xuICAgICAgICAgICAgICBjb25zdCBFZSA9IFBlICsgXCJPTl9QUk9QRVJUWVwiICsgZjtcbiAgICAgICAgICAgICAgcltFZV0gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHouem9uZS5jYW5jZWxUYXNrKHopLCBWID8gciA6IHZvaWQgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfSwgeVtfXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgciA9IHRoaXMgfHwgZTtcbiAgICAgIGxldCBmID0gYXJndW1lbnRzWzBdO1xuICAgICAgZCAmJiBkLnRyYW5zZmVyRXZlbnROYW1lICYmIChmID0gZC50cmFuc2ZlckV2ZW50TmFtZShmKSk7XG4gICAgICBjb25zdCB2ID0gW10sIFAgPSBmdChyLCBVID8gVShmKSA6IGYpO1xuICAgICAgZm9yIChsZXQgZyA9IDA7IGcgPCBQLmxlbmd0aDsgZysrKSB7XG4gICAgICAgIGNvbnN0IE4gPSBQW2ddO1xuICAgICAgICBsZXQgTCA9IE4ub3JpZ2luYWxEZWxlZ2F0ZSA/IE4ub3JpZ2luYWxEZWxlZ2F0ZSA6IE4uY2FsbGJhY2s7XG4gICAgICAgIHYucHVzaChMKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0sIHlbRV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzIHx8IGU7XG4gICAgICBsZXQgZiA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAoZiA9IGQudHJhbnNmZXJFdmVudE5hbWUoZikpO1xuICAgICAgICBjb25zdCB2ID0gbmVbZl07XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgY29uc3QgUCA9IHZbaGVdLCBnID0gdltmZV0sIE4gPSByW1BdLCBMID0gcltnXTtcbiAgICAgICAgICBpZiAoTikge1xuICAgICAgICAgICAgY29uc3QgWiA9IE4uc2xpY2UoKTtcbiAgICAgICAgICAgIGZvciAobGV0IEcgPSAwOyBHIDwgWi5sZW5ndGg7IEcrKykge1xuICAgICAgICAgICAgICBjb25zdCB6ID0gWltHXTtcbiAgICAgICAgICAgICAgbGV0IEVlID0gei5vcmlnaW5hbERlbGVnYXRlID8gei5vcmlnaW5hbERlbGVnYXRlIDogei5jYWxsYmFjaztcbiAgICAgICAgICAgICAgdGhpc1tsXS5jYWxsKHRoaXMsIGYsIEVlLCB6Lm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoTCkge1xuICAgICAgICAgICAgY29uc3QgWiA9IEwuc2xpY2UoKTtcbiAgICAgICAgICAgIGZvciAobGV0IEcgPSAwOyBHIDwgWi5sZW5ndGg7IEcrKykge1xuICAgICAgICAgICAgICBjb25zdCB6ID0gWltHXTtcbiAgICAgICAgICAgICAgbGV0IEVlID0gei5vcmlnaW5hbERlbGVnYXRlID8gei5vcmlnaW5hbERlbGVnYXRlIDogei5jYWxsYmFjaztcbiAgICAgICAgICAgICAgdGhpc1tsXS5jYWxsKHRoaXMsIGYsIEVlLCB6Lm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdiA9IE9iamVjdC5rZXlzKHIpO1xuICAgICAgICBmb3IgKGxldCBQID0gMDsgUCA8IHYubGVuZ3RoOyBQKyspIHtcbiAgICAgICAgICBjb25zdCBnID0gdltQXSwgTiA9IGF0LmV4ZWMoZyk7XG4gICAgICAgICAgbGV0IEwgPSBOICYmIE5bMV07XG4gICAgICAgICAgTCAmJiBMICE9PSBcInJlbW92ZUxpc3RlbmVyXCIgJiYgdGhpc1tFXS5jYWxsKHRoaXMsIEwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXNbRV0uY2FsbCh0aGlzLCBcInJlbW92ZUxpc3RlbmVyXCIpO1xuICAgICAgfVxuICAgICAgaWYgKFYpXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9lKHlbaV0sIEMpLCBfZSh5W2xdLCBiKSwgUSAmJiBfZSh5W0VdLCBRKSwgTyAmJiBfZSh5W19dLCBPKSwgITA7XG4gIH1cbiAgbGV0IFggPSBbXTtcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBzLmxlbmd0aDsgaysrKVxuICAgIFhba10gPSBLKHNba10sIHQpO1xuICByZXR1cm4gWDtcbn1cbmZ1bmN0aW9uIGZ0KGUsIG4pIHtcbiAgaWYgKCFuKSB7XG4gICAgY29uc3QgbCA9IFtdO1xuICAgIGZvciAobGV0IF8gaW4gZSkge1xuICAgICAgY29uc3QgRSA9IGF0LmV4ZWMoXyk7XG4gICAgICBsZXQgVCA9IEUgJiYgRVsxXTtcbiAgICAgIGlmIChUICYmICghbiB8fCBUID09PSBuKSkge1xuICAgICAgICBjb25zdCB3ID0gZVtfXTtcbiAgICAgICAgaWYgKHcpXG4gICAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB3Lmxlbmd0aDsgcCsrKVxuICAgICAgICAgICAgbC5wdXNoKHdbcF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbDtcbiAgfVxuICBsZXQgcyA9IG5lW25dO1xuICBzIHx8ICh1dChuKSwgcyA9IG5lW25dKTtcbiAgY29uc3QgdCA9IGVbc1toZV1dLCBpID0gZVtzW2ZlXV07XG4gIHJldHVybiB0ID8gaSA/IHQuY29uY2F0KGkpIDogdC5zbGljZSgpIDogaSA/IGkuc2xpY2UoKSA6IFtdO1xufVxuZnVuY3Rpb24gT3QoZSwgbikge1xuICBjb25zdCBzID0gZS5FdmVudDtcbiAgcyAmJiBzLnByb3RvdHlwZSAmJiBuLnBhdGNoTWV0aG9kKHMucHJvdG90eXBlLCBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiLCAodCkgPT4gZnVuY3Rpb24oaSwgbCkge1xuICAgIGlbbHRdID0gITAsIHQgJiYgdC5hcHBseShpLCBsKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBEdChlLCBuKSB7XG4gIG4ucGF0Y2hNZXRob2QoZSwgXCJxdWV1ZU1pY3JvdGFza1wiLCAocykgPT4gZnVuY3Rpb24odCwgaSkge1xuICAgIFpvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzayhcInF1ZXVlTWljcm90YXNrXCIsIGlbMF0pO1xuICB9KTtcbn1cbmNvbnN0IFJlID0gaihcInpvbmVUYXNrXCIpO1xuZnVuY3Rpb24gZ2UoZSwgbiwgcywgdCkge1xuICBsZXQgaSA9IG51bGwsIGwgPSBudWxsO1xuICBuICs9IHQsIHMgKz0gdDtcbiAgY29uc3QgXyA9IHt9O1xuICBmdW5jdGlvbiBFKHcpIHtcbiAgICBjb25zdCBwID0gdy5kYXRhO1xuICAgIHAuYXJnc1swXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHcuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgICBjb25zdCBSID0gaS5hcHBseShlLCBwLmFyZ3MpO1xuICAgIHJldHVybiB0dChSKSA/IHAuaGFuZGxlSWQgPSBSIDogKHAuaGFuZGxlID0gUiwgcC5pc1JlZnJlc2hhYmxlID0gZXQoUi5yZWZyZXNoKSksIHc7XG4gIH1cbiAgZnVuY3Rpb24gVCh3KSB7XG4gICAgY29uc3QgeyBoYW5kbGU6IHAsIGhhbmRsZUlkOiBSIH0gPSB3LmRhdGE7XG4gICAgcmV0dXJuIGwuY2FsbChlLCBwID8/IFIpO1xuICB9XG4gIGkgPSBkZShlLCBuLCAodykgPT4gZnVuY3Rpb24ocCwgUikge1xuICAgIGlmIChldChSWzBdKSkge1xuICAgICAgY29uc3QgRCA9IHtcbiAgICAgICAgaXNSZWZyZXNoYWJsZTogITEsXG4gICAgICAgIGlzUGVyaW9kaWM6IHQgPT09IFwiSW50ZXJ2YWxcIixcbiAgICAgICAgZGVsYXk6IHQgPT09IFwiVGltZW91dFwiIHx8IHQgPT09IFwiSW50ZXJ2YWxcIiA/IFJbMV0gfHwgMCA6IHZvaWQgMCxcbiAgICAgICAgYXJnczogUlxuICAgICAgfSwgSSA9IFJbMF07XG4gICAgICBSWzBdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEkuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBjb25zdCB7IGhhbmRsZTogQSwgaGFuZGxlSWQ6IEYsIGlzUGVyaW9kaWM6IHEsIGlzUmVmcmVzaGFibGU6IFYgfSA9IEQ7XG4gICAgICAgICAgIXEgJiYgIVYgJiYgKEYgPyBkZWxldGUgX1tGXSA6IEEgJiYgKEFbUmVdID0gbnVsbCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgQiA9IEdlKG4sIFJbMF0sIEQsIEUsIFQpO1xuICAgICAgaWYgKCFCKVxuICAgICAgICByZXR1cm4gQjtcbiAgICAgIGNvbnN0IHsgaGFuZGxlSWQ6IEosIGhhbmRsZTogSywgaXNSZWZyZXNoYWJsZTogWCwgaXNQZXJpb2RpYzogayB9ID0gQi5kYXRhO1xuICAgICAgaWYgKEopXG4gICAgICAgIF9bSl0gPSBCO1xuICAgICAgZWxzZSBpZiAoSyAmJiAoS1tSZV0gPSBCLCBYICYmICFrKSkge1xuICAgICAgICBjb25zdCBkID0gSy5yZWZyZXNoO1xuICAgICAgICBLLnJlZnJlc2ggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb25zdCB7IHpvbmU6IEEsIHN0YXRlOiBGIH0gPSBCO1xuICAgICAgICAgIHJldHVybiBGID09PSBcIm5vdFNjaGVkdWxlZFwiID8gKEIuX3N0YXRlID0gXCJzY2hlZHVsZWRcIiwgQS5fdXBkYXRlVGFza0NvdW50KEIsIDEpKSA6IEYgPT09IFwicnVubmluZ1wiICYmIChCLl9zdGF0ZSA9IFwic2NoZWR1bGluZ1wiKSwgZC5jYWxsKHRoaXMpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIEsgPz8gSiA/PyBCO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIHcuYXBwbHkoZSwgUik7XG4gIH0pLCBsID0gZGUoZSwgcywgKHcpID0+IGZ1bmN0aW9uKHAsIFIpIHtcbiAgICBjb25zdCBEID0gUlswXTtcbiAgICBsZXQgSTtcbiAgICB0dChEKSA/IChJID0gX1tEXSwgZGVsZXRlIF9bRF0pIDogKEkgPSBEID09IG51bGwgPyB2b2lkIDAgOiBEW1JlXSwgSSA/IERbUmVdID0gbnVsbCA6IEkgPSBEKSwgSSAhPSBudWxsICYmIEkudHlwZSA/IEkuY2FuY2VsRm4gJiYgSS56b25lLmNhbmNlbFRhc2soSSkgOiB3LmFwcGx5KGUsIFIpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFN0KGUsIG4pIHtcbiAgY29uc3QgeyBpc0Jyb3dzZXI6IHMsIGlzTWl4OiB0IH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgaWYgKCFzICYmICF0IHx8ICFlLmN1c3RvbUVsZW1lbnRzIHx8ICEoXCJjdXN0b21FbGVtZW50c1wiIGluIGUpKVxuICAgIHJldHVybjtcbiAgY29uc3QgaSA9IFtcbiAgICBcImNvbm5lY3RlZENhbGxiYWNrXCIsXG4gICAgXCJkaXNjb25uZWN0ZWRDYWxsYmFja1wiLFxuICAgIFwiYWRvcHRlZENhbGxiYWNrXCIsXG4gICAgXCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tcIixcbiAgICBcImZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2tcIixcbiAgICBcImZvcm1EaXNhYmxlZENhbGxiYWNrXCIsXG4gICAgXCJmb3JtUmVzZXRDYWxsYmFja1wiLFxuICAgIFwiZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrXCJcbiAgXTtcbiAgbi5wYXRjaENhbGxiYWNrcyhuLCBlLmN1c3RvbUVsZW1lbnRzLCBcImN1c3RvbUVsZW1lbnRzXCIsIFwiZGVmaW5lXCIsIGkpO1xufVxuZnVuY3Rpb24gTnQoZSwgbikge1xuICBpZiAoWm9uZVtuLnN5bWJvbChcInBhdGNoRXZlbnRUYXJnZXRcIildKVxuICAgIHJldHVybjtcbiAgY29uc3QgeyBldmVudE5hbWVzOiBzLCB6b25lU3ltYm9sRXZlbnROYW1lczogdCwgVFJVRV9TVFI6IGksIEZBTFNFX1NUUjogbCwgWk9ORV9TWU1CT0xfUFJFRklYOiBfIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgZm9yIChsZXQgVCA9IDA7IFQgPCBzLmxlbmd0aDsgVCsrKSB7XG4gICAgY29uc3QgdyA9IHNbVF0sIHAgPSB3ICsgbCwgUiA9IHcgKyBpLCBEID0gXyArIHAsIEkgPSBfICsgUjtcbiAgICB0W3ddID0ge30sIHRbd11bbF0gPSBELCB0W3ddW2ldID0gSTtcbiAgfVxuICBjb25zdCBFID0gZS5FdmVudFRhcmdldDtcbiAgaWYgKCEoIUUgfHwgIUUucHJvdG90eXBlKSlcbiAgICByZXR1cm4gbi5wYXRjaEV2ZW50VGFyZ2V0KGUsIG4sIFtFICYmIEUucHJvdG90eXBlXSksICEwO1xufVxuZnVuY3Rpb24gTHQoZSwgbikge1xuICBuLnBhdGNoRXZlbnRQcm90b3R5cGUoZSwgbik7XG59XG5mdW5jdGlvbiBodChlLCBuLCBzKSB7XG4gIGlmICghcyB8fCBzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbjtcbiAgY29uc3QgdCA9IHMuZmlsdGVyKChsKSA9PiBsLnRhcmdldCA9PT0gZSk7XG4gIGlmICghdCB8fCB0Lmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbjtcbiAgY29uc3QgaSA9IHRbMF0uaWdub3JlUHJvcGVydGllcztcbiAgcmV0dXJuIG4uZmlsdGVyKChsKSA9PiBpLmluZGV4T2YobCkgPT09IC0xKTtcbn1cbmZ1bmN0aW9uIG50KGUsIG4sIHMsIHQpIHtcbiAgaWYgKCFlKVxuICAgIHJldHVybjtcbiAgY29uc3QgaSA9IGh0KGUsIG4sIHMpO1xuICBpdChlLCBpLCB0KTtcbn1cbmZ1bmN0aW9uIEFlKGUpIHtcbiAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKFwib25cIikgJiYgbi5sZW5ndGggPiAyKS5tYXAoKG4pID0+IG4uc3Vic3RyaW5nKDIpKTtcbn1cbmZ1bmN0aW9uIFp0KGUsIG4pIHtcbiAgaWYgKERlICYmICFzdCB8fCBab25lW2Uuc3ltYm9sKFwicGF0Y2hFdmVudHNcIildKVxuICAgIHJldHVybjtcbiAgY29uc3QgcyA9IG4uX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO1xuICBsZXQgdCA9IFtdO1xuICBpZiAoQmUpIHtcbiAgICBjb25zdCBpID0gd2luZG93O1xuICAgIHQgPSB0LmNvbmNhdChbXG4gICAgICBcIkRvY3VtZW50XCIsXG4gICAgICBcIlNWR0VsZW1lbnRcIixcbiAgICAgIFwiRWxlbWVudFwiLFxuICAgICAgXCJIVE1MRWxlbWVudFwiLFxuICAgICAgXCJIVE1MQm9keUVsZW1lbnRcIixcbiAgICAgIFwiSFRNTE1lZGlhRWxlbWVudFwiLFxuICAgICAgXCJIVE1MRnJhbWVTZXRFbGVtZW50XCIsXG4gICAgICBcIkhUTUxGcmFtZUVsZW1lbnRcIixcbiAgICAgIFwiSFRNTElGcmFtZUVsZW1lbnRcIixcbiAgICAgIFwiSFRNTE1hcnF1ZWVFbGVtZW50XCIsXG4gICAgICBcIldvcmtlclwiXG4gICAgXSk7XG4gICAgY29uc3QgbCA9IFB0KCkgPyBbeyB0YXJnZXQ6IGksIGlnbm9yZVByb3BlcnRpZXM6IFtcImVycm9yXCJdIH1dIDogW107XG4gICAgbnQoaSwgQWUoaSksIHMgJiYgcy5jb25jYXQobCksIEhlKGkpKTtcbiAgfVxuICB0ID0gdC5jb25jYXQoW1xuICAgIFwiWE1MSHR0cFJlcXVlc3RcIixcbiAgICBcIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXRcIixcbiAgICBcIklEQkluZGV4XCIsXG4gICAgXCJJREJSZXF1ZXN0XCIsXG4gICAgXCJJREJPcGVuREJSZXF1ZXN0XCIsXG4gICAgXCJJREJEYXRhYmFzZVwiLFxuICAgIFwiSURCVHJhbnNhY3Rpb25cIixcbiAgICBcIklEQkN1cnNvclwiLFxuICAgIFwiV2ViU29ja2V0XCJcbiAgXSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGwgPSBuW3RbaV1dO1xuICAgIGwgJiYgbC5wcm90b3R5cGUgJiYgbnQobC5wcm90b3R5cGUsIEFlKGwucHJvdG90eXBlKSwgcyk7XG4gIH1cbn1cbmZ1bmN0aW9uIE10KGUpIHtcbiAgZS5fX2xvYWRfcGF0Y2goXCJsZWdhY3lcIiwgKG4pID0+IHtcbiAgICBjb25zdCBzID0gbltlLl9fc3ltYm9sX18oXCJsZWdhY3lQYXRjaFwiKV07XG4gICAgcyAmJiBzKCk7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcInRpbWVyc1wiLCAobikgPT4ge1xuICAgIGNvbnN0IHMgPSBcInNldFwiLCB0ID0gXCJjbGVhclwiO1xuICAgIGdlKG4sIHMsIHQsIFwiVGltZW91dFwiKSwgZ2UobiwgcywgdCwgXCJJbnRlcnZhbFwiKSwgZ2UobiwgcywgdCwgXCJJbW1lZGlhdGVcIik7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLCAobikgPT4ge1xuICAgIGdlKG4sIFwicmVxdWVzdFwiLCBcImNhbmNlbFwiLCBcIkFuaW1hdGlvbkZyYW1lXCIpLCBnZShuLCBcIm1velJlcXVlc3RcIiwgXCJtb3pDYW5jZWxcIiwgXCJBbmltYXRpb25GcmFtZVwiKSwgZ2UobiwgXCJ3ZWJraXRSZXF1ZXN0XCIsIFwid2Via2l0Q2FuY2VsXCIsIFwiQW5pbWF0aW9uRnJhbWVcIik7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcImJsb2NraW5nXCIsIChuLCBzKSA9PiB7XG4gICAgY29uc3QgdCA9IFtcImFsZXJ0XCIsIFwicHJvbXB0XCIsIFwiY29uZmlybVwiXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGwgPSB0W2ldO1xuICAgICAgZGUobiwgbCwgKF8sIEUsIFQpID0+IGZ1bmN0aW9uKHcsIHApIHtcbiAgICAgICAgcmV0dXJuIHMuY3VycmVudC5ydW4oXywgbiwgcCwgVCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcIkV2ZW50VGFyZ2V0XCIsIChuLCBzLCB0KSA9PiB7XG4gICAgTHQobiwgdCksIE50KG4sIHQpO1xuICAgIGNvbnN0IGkgPSBuLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgaSAmJiBpLnByb3RvdHlwZSAmJiB0LnBhdGNoRXZlbnRUYXJnZXQobiwgdCwgW2kucHJvdG90eXBlXSk7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcIk11dGF0aW9uT2JzZXJ2ZXJcIiwgKG4sIHMsIHQpID0+IHtcbiAgICB2ZShcIk11dGF0aW9uT2JzZXJ2ZXJcIiksIHZlKFwiV2ViS2l0TXV0YXRpb25PYnNlcnZlclwiKTtcbiAgfSksIGUuX19sb2FkX3BhdGNoKFwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcIiwgKG4sIHMsIHQpID0+IHtcbiAgICB2ZShcIkludGVyc2VjdGlvbk9ic2VydmVyXCIpO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJGaWxlUmVhZGVyXCIsIChuLCBzLCB0KSA9PiB7XG4gICAgdmUoXCJGaWxlUmVhZGVyXCIpO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJvbl9wcm9wZXJ0eVwiLCAobiwgcywgdCkgPT4ge1xuICAgIFp0KHQsIG4pO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJjdXN0b21FbGVtZW50c1wiLCAobiwgcywgdCkgPT4ge1xuICAgIFN0KG4sIHQpO1xuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJYSFJcIiwgKG4sIHMpID0+IHtcbiAgICB3KG4pO1xuICAgIGNvbnN0IHQgPSBqKFwieGhyVGFza1wiKSwgaSA9IGooXCJ4aHJTeW5jXCIpLCBsID0gaihcInhockxpc3RlbmVyXCIpLCBfID0gaihcInhoclNjaGVkdWxlZFwiKSwgRSA9IGooXCJ4aHJVUkxcIiksIFQgPSBqKFwieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWRcIik7XG4gICAgZnVuY3Rpb24gdyhwKSB7XG4gICAgICBjb25zdCBSID0gcC5YTUxIdHRwUmVxdWVzdDtcbiAgICAgIGlmICghUilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgRCA9IFIucHJvdG90eXBlO1xuICAgICAgZnVuY3Rpb24gSShDKSB7XG4gICAgICAgIHJldHVybiBDW3RdO1xuICAgICAgfVxuICAgICAgbGV0IEIgPSBEW1plXSwgSiA9IERbTWVdO1xuICAgICAgaWYgKCFCKSB7XG4gICAgICAgIGNvbnN0IEMgPSBwLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICAgIGlmIChDKSB7XG4gICAgICAgICAgY29uc3QgYiA9IEMucHJvdG90eXBlO1xuICAgICAgICAgIEIgPSBiW1plXSwgSiA9IGJbTWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBLID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIsIFggPSBcInNjaGVkdWxlZFwiO1xuICAgICAgZnVuY3Rpb24gayhDKSB7XG4gICAgICAgIGNvbnN0IGIgPSBDLmRhdGEsIE8gPSBiLnRhcmdldDtcbiAgICAgICAgT1tfXSA9ICExLCBPW1RdID0gITE7XG4gICAgICAgIGNvbnN0IFEgPSBPW2xdO1xuICAgICAgICBCIHx8IChCID0gT1taZV0sIEogPSBPW01lXSksIFEgJiYgSi5jYWxsKE8sIEssIFEpO1xuICAgICAgICBjb25zdCBXID0gT1tsXSA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoTy5yZWFkeVN0YXRlID09PSBPLkRPTkUpXG4gICAgICAgICAgICBpZiAoIWIuYWJvcnRlZCAmJiBPW19dICYmIEMuc3RhdGUgPT09IFgpIHtcbiAgICAgICAgICAgICAgY29uc3QgSCA9IE9bcy5fX3N5bWJvbF9fKFwibG9hZGZhbHNlXCIpXTtcbiAgICAgICAgICAgICAgaWYgKE8uc3RhdHVzICE9PSAwICYmIEggJiYgSC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IEMuaW52b2tlO1xuICAgICAgICAgICAgICAgIEMuaW52b2tlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjID0gT1tzLl9fc3ltYm9sX18oXCJsb2FkZmFsc2VcIildO1xuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbyA9IDA7IG8gPCBjLmxlbmd0aDsgbysrKVxuICAgICAgICAgICAgICAgICAgICBjW29dID09PSBDICYmIGMuc3BsaWNlKG8sIDEpO1xuICAgICAgICAgICAgICAgICAgIWIuYWJvcnRlZCAmJiBDLnN0YXRlID09PSBYICYmIGEuY2FsbChDKTtcbiAgICAgICAgICAgICAgICB9LCBILnB1c2goQyk7XG4gICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIEMuaW52b2tlKCk7XG4gICAgICAgICAgICB9IGVsc2UgIWIuYWJvcnRlZCAmJiBPW19dID09PSAhMSAmJiAoT1tUXSA9ICEwKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIEIuY2FsbChPLCBLLCBXKSwgT1t0XSB8fCAoT1t0XSA9IEMpLCBVLmFwcGx5KE8sIGIuYXJncyksIE9bX10gPSAhMCwgQztcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGQoKSB7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBBKEMpIHtcbiAgICAgICAgY29uc3QgYiA9IEMuZGF0YTtcbiAgICAgICAgcmV0dXJuIGIuYWJvcnRlZCA9ICEwLCBTLmFwcGx5KGIudGFyZ2V0LCBiLmFyZ3MpO1xuICAgICAgfVxuICAgICAgY29uc3QgRiA9IGRlKEQsIFwib3BlblwiLCAoKSA9PiBmdW5jdGlvbihDLCBiKSB7XG4gICAgICAgIHJldHVybiBDW2ldID0gYlsyXSA9PSAhMSwgQ1tFXSA9IGJbMV0sIEYuYXBwbHkoQywgYik7XG4gICAgICB9KSwgcSA9IFwiWE1MSHR0cFJlcXVlc3Quc2VuZFwiLCBWID0gaihcImZldGNoVGFza0Fib3J0aW5nXCIpLCB5ID0gaihcImZldGNoVGFza1NjaGVkdWxpbmdcIiksIFUgPSBkZShELCBcInNlbmRcIiwgKCkgPT4gZnVuY3Rpb24oQywgYikge1xuICAgICAgICBpZiAocy5jdXJyZW50W3ldID09PSAhMCB8fCBDW2ldKVxuICAgICAgICAgIHJldHVybiBVLmFwcGx5KEMsIGIpO1xuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgTyA9IHtcbiAgICAgICAgICAgIHRhcmdldDogQyxcbiAgICAgICAgICAgIHVybDogQ1tFXSxcbiAgICAgICAgICAgIGlzUGVyaW9kaWM6ICExLFxuICAgICAgICAgICAgYXJnczogYixcbiAgICAgICAgICAgIGFib3J0ZWQ6ICExXG4gICAgICAgICAgfSwgUSA9IEdlKHEsIGQsIE8sIGssIEEpO1xuICAgICAgICAgIEMgJiYgQ1tUXSA9PT0gITAgJiYgIU8uYWJvcnRlZCAmJiBRLnN0YXRlID09PSBYICYmIFEuaW52b2tlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBTID0gZGUoRCwgXCJhYm9ydFwiLCAoKSA9PiBmdW5jdGlvbihDLCBiKSB7XG4gICAgICAgIGNvbnN0IE8gPSBJKEMpO1xuICAgICAgICBpZiAoTyAmJiB0eXBlb2YgTy50eXBlID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBpZiAoTy5jYW5jZWxGbiA9PSBudWxsIHx8IE8uZGF0YSAmJiBPLmRhdGEuYWJvcnRlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBPLnpvbmUuY2FuY2VsVGFzayhPKTtcbiAgICAgICAgfSBlbHNlIGlmIChzLmN1cnJlbnRbVl0gPT09ICEwKVxuICAgICAgICAgIHJldHVybiBTLmFwcGx5KEMsIGIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KSwgZS5fX2xvYWRfcGF0Y2goXCJnZW9sb2NhdGlvblwiLCAobikgPT4ge1xuICAgIG4ubmF2aWdhdG9yICYmIG4ubmF2aWdhdG9yLmdlb2xvY2F0aW9uICYmIGt0KG4ubmF2aWdhdG9yLmdlb2xvY2F0aW9uLCBbXCJnZXRDdXJyZW50UG9zaXRpb25cIiwgXCJ3YXRjaFBvc2l0aW9uXCJdKTtcbiAgfSksIGUuX19sb2FkX3BhdGNoKFwiUHJvbWlzZVJlamVjdGlvbkV2ZW50XCIsIChuLCBzKSA9PiB7XG4gICAgZnVuY3Rpb24gdChpKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24obCkge1xuICAgICAgICBmdChuLCBpKS5mb3JFYWNoKChFKSA9PiB7XG4gICAgICAgICAgY29uc3QgVCA9IG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50O1xuICAgICAgICAgIGlmIChUKSB7XG4gICAgICAgICAgICBjb25zdCB3ID0gbmV3IFQoaSwge1xuICAgICAgICAgICAgICBwcm9taXNlOiBsLnByb21pc2UsXG4gICAgICAgICAgICAgIHJlYXNvbjogbC5yZWplY3Rpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgRS5pbnZva2Uodyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICAgIG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50ICYmIChzW2ooXCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlclwiKV0gPSB0KFwidW5oYW5kbGVkcmVqZWN0aW9uXCIpLCBzW2ooXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKV0gPSB0KFwicmVqZWN0aW9uaGFuZGxlZFwiKSk7XG4gIH0pLCBlLl9fbG9hZF9wYXRjaChcInF1ZXVlTWljcm90YXNrXCIsIChuLCBzLCB0KSA9PiB7XG4gICAgRHQobiwgdCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gSXQoZSkge1xuICBlLl9fbG9hZF9wYXRjaChcIlpvbmVBd2FyZVByb21pc2VcIiwgKG4sIHMsIHQpID0+IHtcbiAgICBjb25zdCBpID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgbCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbiAgICBmdW5jdGlvbiBfKGgpIHtcbiAgICAgIGlmIChoICYmIGgudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdSA9IGguY29uc3RydWN0b3IgJiYgaC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgICByZXR1cm4gKHUgfHwgXCJcIikgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoID8gaC50b1N0cmluZygpIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGgpO1xuICAgIH1cbiAgICBjb25zdCBFID0gdC5zeW1ib2wsIFQgPSBbXSwgdyA9IG5bRShcIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT05cIildICE9PSAhMSwgcCA9IEUoXCJQcm9taXNlXCIpLCBSID0gRShcInRoZW5cIiksIEQgPSBcIl9fY3JlYXRpb25UcmFjZV9fXCI7XG4gICAgdC5vblVuaGFuZGxlZEVycm9yID0gKGgpID0+IHtcbiAgICAgIGlmICh0LnNob3dVbmNhdWdodEVycm9yKCkpIHtcbiAgICAgICAgY29uc3QgdSA9IGggJiYgaC5yZWplY3Rpb247XG4gICAgICAgIHUgPyBjb25zb2xlLmVycm9yKFwiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOlwiLCB1IGluc3RhbmNlb2YgRXJyb3IgPyB1Lm1lc3NhZ2UgOiB1LCBcIjsgWm9uZTpcIiwgaC56b25lLm5hbWUsIFwiOyBUYXNrOlwiLCBoLnRhc2sgJiYgaC50YXNrLnNvdXJjZSwgXCI7IFZhbHVlOlwiLCB1LCB1IGluc3RhbmNlb2YgRXJyb3IgPyB1LnN0YWNrIDogdm9pZCAwKSA6IGNvbnNvbGUuZXJyb3IoaCk7XG4gICAgICB9XG4gICAgfSwgdC5taWNyb3Rhc2tEcmFpbkRvbmUgPSAoKSA9PiB7XG4gICAgICBmb3IgKDsgVC5sZW5ndGg7ICkge1xuICAgICAgICBjb25zdCBoID0gVC5zaGlmdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGguem9uZS5ydW5HdWFyZGVkKCgpID0+IHtcbiAgICAgICAgICAgIHRocm93IGgudGhyb3dPcmlnaW5hbCA/IGgucmVqZWN0aW9uIDogaDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICAgIEIodSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IEkgPSBFKFwidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXJcIik7XG4gICAgZnVuY3Rpb24gQihoKSB7XG4gICAgICB0Lm9uVW5oYW5kbGVkRXJyb3IoaCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1ID0gc1tJXTtcbiAgICAgICAgdHlwZW9mIHUgPT0gXCJmdW5jdGlvblwiICYmIHUuY2FsbCh0aGlzLCBoKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBKKGgpIHtcbiAgICAgIHJldHVybiBoICYmIGgudGhlbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gSyhoKSB7XG4gICAgICByZXR1cm4gaDtcbiAgICB9XG4gICAgZnVuY3Rpb24gWChoKSB7XG4gICAgICByZXR1cm4gTS5yZWplY3QoaCk7XG4gICAgfVxuICAgIGNvbnN0IGsgPSBFKFwic3RhdGVcIiksIGQgPSBFKFwidmFsdWVcIiksIEEgPSBFKFwiZmluYWxseVwiKSwgRiA9IEUoXCJwYXJlbnRQcm9taXNlVmFsdWVcIiksIHEgPSBFKFwicGFyZW50UHJvbWlzZVN0YXRlXCIpLCBWID0gXCJQcm9taXNlLnRoZW5cIiwgeSA9IG51bGwsIFUgPSAhMCwgUyA9ICExLCBDID0gMDtcbiAgICBmdW5jdGlvbiBiKGgsIHUpIHtcbiAgICAgIHJldHVybiAocikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFkoaCwgdSwgcik7XG4gICAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgICBZKGgsICExLCBmKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgTyA9IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGggPSAhMTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBoIHx8IChoID0gITAsIHIuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH0sIFEgPSBcIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGZcIiwgVyA9IEUoXCJjdXJyZW50VGFza1RyYWNlXCIpO1xuICAgIGZ1bmN0aW9uIFkoaCwgdSwgcikge1xuICAgICAgY29uc3QgZiA9IE8oKTtcbiAgICAgIGlmIChoID09PSByKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFEpO1xuICAgICAgaWYgKGhba10gPT09IHkpIHtcbiAgICAgICAgbGV0IHYgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh0eXBlb2YgciA9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiByID09IFwiZnVuY3Rpb25cIikgJiYgKHYgPSByICYmIHIudGhlbik7XG4gICAgICAgIH0gY2F0Y2ggKFApIHtcbiAgICAgICAgICByZXR1cm4gZigoKSA9PiB7XG4gICAgICAgICAgICBZKGgsICExLCBQKTtcbiAgICAgICAgICB9KSgpLCBoO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1ICE9PSBTICYmIHIgaW5zdGFuY2VvZiBNICYmIHIuaGFzT3duUHJvcGVydHkoaykgJiYgci5oYXNPd25Qcm9wZXJ0eShkKSAmJiByW2tdICE9PSB5KVxuICAgICAgICAgIGEociksIFkoaCwgcltrXSwgcltkXSk7XG4gICAgICAgIGVsc2UgaWYgKHUgIT09IFMgJiYgdHlwZW9mIHYgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2LmNhbGwociwgZihiKGgsIHUpKSwgZihiKGgsICExKSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKFApIHtcbiAgICAgICAgICAgIGYoKCkgPT4ge1xuICAgICAgICAgICAgICBZKGgsICExLCBQKTtcbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBoW2tdID0gdTtcbiAgICAgICAgICBjb25zdCBQID0gaFtkXTtcbiAgICAgICAgICBpZiAoaFtkXSA9IHIsIGhbQV0gPT09IEEgJiYgdSA9PT0gVSAmJiAoaFtrXSA9IGhbcV0sIGhbZF0gPSBoW0ZdKSwgdSA9PT0gUyAmJiByIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGcgPSBzLmN1cnJlbnRUYXNrICYmIHMuY3VycmVudFRhc2suZGF0YSAmJiBzLmN1cnJlbnRUYXNrLmRhdGFbRF07XG4gICAgICAgICAgICBnICYmIGwociwgVywge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICB2YWx1ZTogZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGcgPSAwOyBnIDwgUC5sZW5ndGg7IClcbiAgICAgICAgICAgIGMoaCwgUFtnKytdLCBQW2crK10sIFBbZysrXSwgUFtnKytdKTtcbiAgICAgICAgICBpZiAoUC5sZW5ndGggPT0gMCAmJiB1ID09IFMpIHtcbiAgICAgICAgICAgIGhba10gPSBDO1xuICAgICAgICAgICAgbGV0IGcgPSByO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5jYXVnaHQgKGluIHByb21pc2UpOiBcIiArIF8ocikgKyAociAmJiByLnN0YWNrID8gYFxuYCArIHIuc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChOKSB7XG4gICAgICAgICAgICAgIGcgPSBOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdyAmJiAoZy50aHJvd09yaWdpbmFsID0gITApLCBnLnJlamVjdGlvbiA9IHIsIGcucHJvbWlzZSA9IGgsIGcuem9uZSA9IHMuY3VycmVudCwgZy50YXNrID0gcy5jdXJyZW50VGFzaywgVC5wdXNoKGcpLCB0LnNjaGVkdWxlTWljcm9UYXNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaDtcbiAgICB9XG4gICAgY29uc3QgSCA9IEUoXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKTtcbiAgICBmdW5jdGlvbiBhKGgpIHtcbiAgICAgIGlmIChoW2tdID09PSBDKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdSA9IHNbSF07XG4gICAgICAgICAgdSAmJiB0eXBlb2YgdSA9PSBcImZ1bmN0aW9uXCIgJiYgdS5jYWxsKHRoaXMsIHsgcmVqZWN0aW9uOiBoW2RdLCBwcm9taXNlOiBoIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgfVxuICAgICAgICBoW2tdID0gUztcbiAgICAgICAgZm9yIChsZXQgdSA9IDA7IHUgPCBULmxlbmd0aDsgdSsrKVxuICAgICAgICAgIGggPT09IFRbdV0ucHJvbWlzZSAmJiBULnNwbGljZSh1LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gYyhoLCB1LCByLCBmLCB2KSB7XG4gICAgICBhKGgpO1xuICAgICAgY29uc3QgUCA9IGhba10sIGcgPSBQID8gdHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiID8gZiA6IEsgOiB0eXBlb2YgdiA9PSBcImZ1bmN0aW9uXCIgPyB2IDogWDtcbiAgICAgIHUuc2NoZWR1bGVNaWNyb1Rhc2soViwgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IE4gPSBoW2RdLCBMID0gISFyICYmIEEgPT09IHJbQV07XG4gICAgICAgICAgTCAmJiAocltGXSA9IE4sIHJbcV0gPSBQKTtcbiAgICAgICAgICBjb25zdCBaID0gdS5ydW4oZywgdm9pZCAwLCBMICYmIGcgIT09IFggJiYgZyAhPT0gSyA/IFtdIDogW05dKTtcbiAgICAgICAgICBZKHIsICEwLCBaKTtcbiAgICAgICAgfSBjYXRjaCAoTikge1xuICAgICAgICAgIFkociwgITEsIE4pO1xuICAgICAgICB9XG4gICAgICB9LCByKTtcbiAgICB9XG4gICAgY29uc3QgbyA9IFwiZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9XCIsIG0gPSBmdW5jdGlvbigpIHtcbiAgICB9LCB4ID0gbi5BZ2dyZWdhdGVFcnJvcjtcbiAgICBjbGFzcyBNIHtcbiAgICAgIHN0YXRpYyB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgICB9XG4gICAgICBzdGF0aWMgcmVzb2x2ZSh1KSB7XG4gICAgICAgIHJldHVybiB1IGluc3RhbmNlb2YgTSA/IHUgOiBZKG5ldyB0aGlzKG51bGwpLCBVLCB1KTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyByZWplY3QodSkge1xuICAgICAgICByZXR1cm4gWShuZXcgdGhpcyhudWxsKSwgUywgdSk7XG4gICAgICB9XG4gICAgICBzdGF0aWMgd2l0aFJlc29sdmVycygpIHtcbiAgICAgICAgY29uc3QgdSA9IHt9O1xuICAgICAgICByZXR1cm4gdS5wcm9taXNlID0gbmV3IE0oKHIsIGYpID0+IHtcbiAgICAgICAgICB1LnJlc29sdmUgPSByLCB1LnJlamVjdCA9IGY7XG4gICAgICAgIH0pLCB1O1xuICAgICAgfVxuICAgICAgc3RhdGljIGFueSh1KSB7XG4gICAgICAgIGlmICghdSB8fCB0eXBlb2YgdVtTeW1ib2wuaXRlcmF0b3JdICE9IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHgoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICBjb25zdCByID0gW107XG4gICAgICAgIGxldCBmID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKGxldCBnIG9mIHUpXG4gICAgICAgICAgICBmKyssIHIucHVzaChNLnJlc29sdmUoZykpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHgoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmID09PSAwKVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgeChbXSwgXCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZFwiKSk7XG4gICAgICAgIGxldCB2ID0gITE7XG4gICAgICAgIGNvbnN0IFAgPSBbXTtcbiAgICAgICAgcmV0dXJuIG5ldyBNKChnLCBOKSA9PiB7XG4gICAgICAgICAgZm9yIChsZXQgTCA9IDA7IEwgPCByLmxlbmd0aDsgTCsrKVxuICAgICAgICAgICAgcltMXS50aGVuKChaKSA9PiB7XG4gICAgICAgICAgICAgIHYgfHwgKHYgPSAhMCwgZyhaKSk7XG4gICAgICAgICAgICB9LCAoWikgPT4ge1xuICAgICAgICAgICAgICBQLnB1c2goWiksIGYtLSwgZiA9PT0gMCAmJiAodiA9ICEwLCBOKG5ldyB4KFAsIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyByYWNlKHUpIHtcbiAgICAgICAgbGV0IHIsIGYsIHYgPSBuZXcgdGhpcygoTiwgTCkgPT4ge1xuICAgICAgICAgIHIgPSBOLCBmID0gTDtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIFAoTikge1xuICAgICAgICAgIHIoTik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZyhOKSB7XG4gICAgICAgICAgZihOKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBOIG9mIHUpXG4gICAgICAgICAgSihOKSB8fCAoTiA9IHRoaXMucmVzb2x2ZShOKSksIE4udGhlbihQLCBnKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9XG4gICAgICBzdGF0aWMgYWxsKHUpIHtcbiAgICAgICAgcmV0dXJuIE0uYWxsV2l0aENhbGxiYWNrKHUpO1xuICAgICAgfVxuICAgICAgc3RhdGljIGFsbFNldHRsZWQodSkge1xuICAgICAgICByZXR1cm4gKHRoaXMgJiYgdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBNID8gdGhpcyA6IE0pLmFsbFdpdGhDYWxsYmFjayh1LCB7XG4gICAgICAgICAgdGhlbkNhbGxiYWNrOiAoZikgPT4gKHsgc3RhdHVzOiBcImZ1bGZpbGxlZFwiLCB2YWx1ZTogZiB9KSxcbiAgICAgICAgICBlcnJvckNhbGxiYWNrOiAoZikgPT4gKHsgc3RhdHVzOiBcInJlamVjdGVkXCIsIHJlYXNvbjogZiB9KVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBhbGxXaXRoQ2FsbGJhY2sodSwgcikge1xuICAgICAgICBsZXQgZiwgdiwgUCA9IG5ldyB0aGlzKChaLCBHKSA9PiB7XG4gICAgICAgICAgZiA9IFosIHYgPSBHO1xuICAgICAgICB9KSwgZyA9IDIsIE4gPSAwO1xuICAgICAgICBjb25zdCBMID0gW107XG4gICAgICAgIGZvciAobGV0IFogb2YgdSkge1xuICAgICAgICAgIEooWikgfHwgKFogPSB0aGlzLnJlc29sdmUoWikpO1xuICAgICAgICAgIGNvbnN0IEcgPSBOO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBaLnRoZW4oKHopID0+IHtcbiAgICAgICAgICAgICAgTFtHXSA9IHIgPyByLnRoZW5DYWxsYmFjayh6KSA6IHosIGctLSwgZyA9PT0gMCAmJiBmKEwpO1xuICAgICAgICAgICAgfSwgKHopID0+IHtcbiAgICAgICAgICAgICAgciA/IChMW0ddID0gci5lcnJvckNhbGxiYWNrKHopLCBnLS0sIGcgPT09IDAgJiYgZihMKSkgOiB2KHopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoeikge1xuICAgICAgICAgICAgdih6KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZysrLCBOKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGcgLT0gMiwgZyA9PT0gMCAmJiBmKEwpLCBQO1xuICAgICAgfVxuICAgICAgY29uc3RydWN0b3IodSkge1xuICAgICAgICBjb25zdCByID0gdGhpcztcbiAgICAgICAgaWYgKCEociBpbnN0YW5jZW9mIE0pKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLlwiKTtcbiAgICAgICAgcltrXSA9IHksIHJbZF0gPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmID0gTygpO1xuICAgICAgICAgIHUgJiYgdShmKGIociwgVSkpLCBmKGIociwgUykpKTtcbiAgICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICAgIFkociwgITEsIGYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgICAgIHJldHVybiBcIlByb21pc2VcIjtcbiAgICAgIH1cbiAgICAgIGdldCBbU3ltYm9sLnNwZWNpZXNdKCkge1xuICAgICAgICByZXR1cm4gTTtcbiAgICAgIH1cbiAgICAgIHRoZW4odSwgcikge1xuICAgICAgICB2YXIgZztcbiAgICAgICAgbGV0IGYgPSAoZyA9IHRoaXMuY29uc3RydWN0b3IpID09IG51bGwgPyB2b2lkIDAgOiBnW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgKCFmIHx8IHR5cGVvZiBmICE9IFwiZnVuY3Rpb25cIikgJiYgKGYgPSB0aGlzLmNvbnN0cnVjdG9yIHx8IE0pO1xuICAgICAgICBjb25zdCB2ID0gbmV3IGYobSksIFAgPSBzLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiB0aGlzW2tdID09IHkgPyB0aGlzW2RdLnB1c2goUCwgdiwgdSwgcikgOiBjKHRoaXMsIFAsIHYsIHUsIHIpLCB2O1xuICAgICAgfVxuICAgICAgY2F0Y2godSkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIHUpO1xuICAgICAgfVxuICAgICAgZmluYWxseSh1KSB7XG4gICAgICAgIHZhciBQO1xuICAgICAgICBsZXQgciA9IChQID0gdGhpcy5jb25zdHJ1Y3RvcikgPT0gbnVsbCA/IHZvaWQgMCA6IFBbU3ltYm9sLnNwZWNpZXNdO1xuICAgICAgICAoIXIgfHwgdHlwZW9mIHIgIT0gXCJmdW5jdGlvblwiKSAmJiAociA9IE0pO1xuICAgICAgICBjb25zdCBmID0gbmV3IHIobSk7XG4gICAgICAgIGZbQV0gPSBBO1xuICAgICAgICBjb25zdCB2ID0gcy5jdXJyZW50O1xuICAgICAgICByZXR1cm4gdGhpc1trXSA9PSB5ID8gdGhpc1tkXS5wdXNoKHYsIGYsIHUsIHUpIDogYyh0aGlzLCB2LCBmLCB1LCB1KSwgZjtcbiAgICAgIH1cbiAgICB9XG4gICAgTS5yZXNvbHZlID0gTS5yZXNvbHZlLCBNLnJlamVjdCA9IE0ucmVqZWN0LCBNLnJhY2UgPSBNLnJhY2UsIE0uYWxsID0gTS5hbGw7XG4gICAgY29uc3QgaWUgPSBuW3BdID0gbi5Qcm9taXNlO1xuICAgIG4uUHJvbWlzZSA9IE07XG4gICAgY29uc3QgbGUgPSBFKFwidGhlblBhdGNoZWRcIik7XG4gICAgZnVuY3Rpb24gdWUoaCkge1xuICAgICAgY29uc3QgdSA9IGgucHJvdG90eXBlLCByID0gaSh1LCBcInRoZW5cIik7XG4gICAgICBpZiAociAmJiAoci53cml0YWJsZSA9PT0gITEgfHwgIXIuY29uZmlndXJhYmxlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgZiA9IHUudGhlbjtcbiAgICAgIHVbUl0gPSBmLCBoLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24odiwgUCkge1xuICAgICAgICByZXR1cm4gbmV3IE0oKE4sIEwpID0+IHtcbiAgICAgICAgICBmLmNhbGwodGhpcywgTiwgTCk7XG4gICAgICAgIH0pLnRoZW4odiwgUCk7XG4gICAgICB9LCBoW2xlXSA9ICEwO1xuICAgIH1cbiAgICB0LnBhdGNoVGhlbiA9IHVlO1xuICAgIGZ1bmN0aW9uIHJlKGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih1LCByKSB7XG4gICAgICAgIGxldCBmID0gaC5hcHBseSh1LCByKTtcbiAgICAgICAgaWYgKGYgaW5zdGFuY2VvZiBNKVxuICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICBsZXQgdiA9IGYuY29uc3RydWN0b3I7XG4gICAgICAgIHJldHVybiB2W2xlXSB8fCB1ZSh2KSwgZjtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBpZSAmJiAodWUoaWUpLCBkZShuLCBcImZldGNoXCIsIChoKSA9PiByZShoKSkpLCBQcm9taXNlW3MuX19zeW1ib2xfXyhcInVuY2F1Z2h0UHJvbWlzZUVycm9yc1wiKV0gPSBULCBNO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEF0KGUpIHtcbiAgZS5fX2xvYWRfcGF0Y2goXCJ0b1N0cmluZ1wiLCAobikgPT4ge1xuICAgIGNvbnN0IHMgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsIHQgPSBqKFwiT3JpZ2luYWxEZWxlZ2F0ZVwiKSwgaSA9IGooXCJQcm9taXNlXCIpLCBsID0gaihcIkVycm9yXCIpLCBfID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnN0IHAgPSB0aGlzW3RdO1xuICAgICAgICBpZiAocClcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHAgPT0gXCJmdW5jdGlvblwiID8gcy5jYWxsKHApIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHApO1xuICAgICAgICBpZiAodGhpcyA9PT0gUHJvbWlzZSkge1xuICAgICAgICAgIGNvbnN0IFIgPSBuW2ldO1xuICAgICAgICAgIGlmIChSKVxuICAgICAgICAgICAgcmV0dXJuIHMuY2FsbChSKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyA9PT0gRXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBSID0gbltsXTtcbiAgICAgICAgICBpZiAoUilcbiAgICAgICAgICAgIHJldHVybiBzLmNhbGwoUik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICBfW3RdID0gcywgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gXztcbiAgICBjb25zdCBFID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywgVCA9IFwiW29iamVjdCBQcm9taXNlXVwiO1xuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgUHJvbWlzZSA9PSBcImZ1bmN0aW9uXCIgJiYgdGhpcyBpbnN0YW5jZW9mIFByb21pc2UgPyBUIDogRS5jYWxsKHRoaXMpO1xuICAgIH07XG4gIH0pO1xufVxuZnVuY3Rpb24ganQoZSwgbiwgcywgdCwgaSkge1xuICBjb25zdCBsID0gWm9uZS5fX3N5bWJvbF9fKHQpO1xuICBpZiAobltsXSlcbiAgICByZXR1cm47XG4gIGNvbnN0IF8gPSBuW2xdID0gblt0XTtcbiAgblt0XSA9IGZ1bmN0aW9uKEUsIFQsIHcpIHtcbiAgICByZXR1cm4gVCAmJiBULnByb3RvdHlwZSAmJiBpLmZvckVhY2goZnVuY3Rpb24ocCkge1xuICAgICAgY29uc3QgUiA9IGAke3N9LiR7dH06OmAgKyBwLCBEID0gVC5wcm90b3R5cGU7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoRC5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICAgIGNvbnN0IEkgPSBlLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihELCBwKTtcbiAgICAgICAgICBJICYmIEkudmFsdWUgPyAoSS52YWx1ZSA9IGUud3JhcFdpdGhDdXJyZW50Wm9uZShJLnZhbHVlLCBSKSwgZS5fcmVkZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgcCwgSSkpIDogRFtwXSAmJiAoRFtwXSA9IGUud3JhcFdpdGhDdXJyZW50Wm9uZShEW3BdLCBSKSk7XG4gICAgICAgIH0gZWxzZSBEW3BdICYmIChEW3BdID0gZS53cmFwV2l0aEN1cnJlbnRab25lKERbcF0sIFIpKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgfVxuICAgIH0pLCBfLmNhbGwobiwgRSwgVCwgdyk7XG4gIH0sIGUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKG5bdF0sIF8pO1xufVxuZnVuY3Rpb24gSHQoZSkge1xuICBlLl9fbG9hZF9wYXRjaChcInV0aWxcIiwgKG4sIHMsIHQpID0+IHtcbiAgICBjb25zdCBpID0gQWUobik7XG4gICAgdC5wYXRjaE9uUHJvcGVydGllcyA9IGl0LCB0LnBhdGNoTWV0aG9kID0gZGUsIHQuYmluZEFyZ3VtZW50cyA9IHplLCB0LnBhdGNoTWFjcm9UYXNrID0gYnQ7XG4gICAgY29uc3QgbCA9IHMuX19zeW1ib2xfXyhcIkJMQUNLX0xJU1RFRF9FVkVOVFNcIiksIF8gPSBzLl9fc3ltYm9sX18oXCJVTlBBVENIRURfRVZFTlRTXCIpO1xuICAgIG5bX10gJiYgKG5bbF0gPSBuW19dKSwgbltsXSAmJiAoc1tsXSA9IHNbX10gPSBuW2xdKSwgdC5wYXRjaEV2ZW50UHJvdG90eXBlID0gT3QsIHQucGF0Y2hFdmVudFRhcmdldCA9IEN0LCB0LmlzSUVPckVkZ2UgPSB3dCwgdC5PYmplY3REZWZpbmVQcm9wZXJ0eSA9IGplLCB0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGJlLCB0Lk9iamVjdENyZWF0ZSA9IGd0LCB0LkFycmF5U2xpY2UgPSB5dCwgdC5wYXRjaENsYXNzID0gdmUsIHQud3JhcFdpdGhDdXJyZW50Wm9uZSA9IFZlLCB0LmZpbHRlclByb3BlcnRpZXMgPSBodCwgdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQgPSBfZSwgdC5fcmVkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgdC5wYXRjaENhbGxiYWNrcyA9IGp0LCB0LmdldEdsb2JhbE9iamVjdHMgPSAoKSA9PiAoe1xuICAgICAgZ2xvYmFsU291cmNlczogY3QsXG4gICAgICB6b25lU3ltYm9sRXZlbnROYW1lczogbmUsXG4gICAgICBldmVudE5hbWVzOiBpLFxuICAgICAgaXNCcm93c2VyOiBCZSxcbiAgICAgIGlzTWl4OiBzdCxcbiAgICAgIGlzTm9kZTogRGUsXG4gICAgICBUUlVFX1NUUjogZmUsXG4gICAgICBGQUxTRV9TVFI6IGhlLFxuICAgICAgWk9ORV9TWU1CT0xfUFJFRklYOiBQZSxcbiAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9TVFI6IHhlLFxuICAgICAgUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUjogRmVcbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiB4dChlKSB7XG4gIEl0KGUpLCBBdChlKSwgSHQoZSk7XG59XG5jb25zdCBkdCA9IHB0KCk7XG54dChkdCk7XG5NdChkdCk7XG5cbmV4cG9ydCB7IFZ0IGFzIFpvbmVDb250ZXh0TWFuYWdlciB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsVUFBVTtBQUV4QixTQUFTQyxHQUFHQyxHQUFHO0FBQ2IsU0FB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OEQ7QUFBQSxNQUNYLE9BQU9DO0FBQUEsTUFDUCxRQUFRRjtBQUFBLE1BQ1IsVUFBVWY7QUFBQSxNQUNWLFdBQVdDO0FBQUEsTUFDWCxvQkFBb0JDO0FBQUEsTUFDcEIsd0JBQXdCTjtBQUFBLE1BQ3hCLDJCQUEyQkM7QUFBQSxJQUM3QjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBQ0EsU0FBUzhGLEdBQUc5SSxHQUFHO0FBQ2IsRUFBQXdJLEdBQUd4SSxDQUFDLEdBQUcySSxHQUFHM0ksQ0FBQyxHQUFHNkksR0FBRzdJLENBQUM7QUFDcEI7QUFDQSxNQUFNK0ksS0FBS3RHLEdBQUc7QUFDZHFHLEdBQUdDLEVBQUU7QUFDTFQsR0FBR1MsRUFBRTsiLAogICJuYW1lcyI6IFsiSm8iLCAiRXQiLCAiZSIsICIkZSIsICJWdCIsICJzIiwgInQiLCAiaSIsICJfIiwgIkUiLCAiVCIsICJhZSIsICJ0ZSIsICJUdCIsICJhIiwgIlkiLCAiYiIsICJPIiwgImMiLCAibyIsICJtIiwgImwiLCAieCIsICJNIiwgImllIiwgIlgiLCAiVSIsICJ5IiwgImxlIiwgIkEiLCAiZCIsICJ1ZSIsICJyZSIsICJxIiwgImsiLCAiViIsICJGIiwgIkIiLCAidyIsICJwIiwgIkQiLCAiSSIsICJXIiwgInB0IiwgImJlIiwgImplIiwgIkhlIiwgImd0IiwgInl0IiwgInhlIiwgIkZlIiwgIlplIiwgIk1lIiwgImZlIiwgImhlIiwgIlBlIiwgIlZlIiwgIkdlIiwgImoiLCAiT2UiLCAibWUiLCAiJCIsICJtdCIsICJ6ZSIsICJrdCIsICJydCIsICJfZSIsICJvdCIsICJEZSIsICJCZSIsICJzdCIsICJDZSIsICJ2dCIsICJKZSIsICJLZSIsICJSIiwgIml0IiwgInNlIiwgInZlIiwgImRlIiwgImJ0IiwgIlFlIiwgIkllIiwgIlB0IiwgInd0IiwgImV0IiwgInR0IiwgInllIiwgIlJ0IiwgIm5lIiwgImN0IiwgImF0IiwgImx0IiwgInV0IiwgIkN0IiwgIlMiLCAiSiIsICJLIiwgIkMiLCAiUSIsICJ2IiwgIlAiLCAiZyIsICJOIiwgIkwiLCAiWiIsICJHIiwgInoiLCAiRWUiLCAiZWUiLCAiVGUiLCAiY2UiLCAiU2UiLCAiVWUiLCAiX3QiLCAiTmUiLCAiV2UiLCAicGUiLCAiWGUiLCAid2UiLCAicWUiLCAiWWUiLCAia2UiLCAib2UiLCAiZnQiLCAiT3QiLCAiRHQiLCAiUmUiLCAiZ2UiLCAiU3QiLCAiTnQiLCAiTHQiLCAiaHQiLCAibnQiLCAiQWUiLCAiWnQiLCAiTXQiLCAiSCIsICJJdCIsICJyIiwgImYiLCAiQXQiLCAianQiLCAiSHQiLCAieHQiLCAiZHQiXQp9Cg==