@getopenpay/openpay-js 0.5.14 → 0.5.16

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 (47) hide show
  1. package/dist/{ExportResult-B-YLKMaU.js → ExportResult-BacsqwKA.js} +1 -1
  2. package/dist/{Resource-qJjZ52YV.js → Resource-CUhg8dEK.js} +6 -6
  3. package/dist/SimpleSpanProcessor-BtNzab2_.js +910 -0
  4. package/dist/_commonjsHelpers-CdLE1o9f.js +30 -0
  5. package/dist/detect-resources-6fNItMfQ.js +862 -0
  6. package/dist/{diag-api-CCLNzlUs.js → diag-api-BaoBTidT.js} +2 -2
  7. package/dist/index-2Dpi7rDE.js +127 -0
  8. package/dist/index-BkFKN09r.js +18 -0
  9. package/dist/index-BohOdvI5.js +6718 -0
  10. package/dist/index-Cb6WFqJj.js +1012 -0
  11. package/dist/index-CfhP31jP.js +147 -0
  12. package/dist/index-CmjNpx1j.js +1619 -0
  13. package/dist/index-CsjF5pDg.js +6 -0
  14. package/dist/index-Dcezwdcs.js +7000 -0
  15. package/dist/index-DhyFkarT.js +430 -0
  16. package/dist/index-t_WVTb5S.js +28 -0
  17. package/dist/index.d.ts +27 -2
  18. package/dist/index.es.js +2 -2
  19. package/dist/index.umd.js +40 -40
  20. package/dist/lifecycle-D1BdEbZs.js +119 -0
  21. package/dist/{metrics-api-DtBUlvdW.js → metrics-api-CsLzDvjo.js} +28 -28
  22. package/dist/sdk-info-ChuKu8zW.js +285 -0
  23. package/dist/suppress-tracing-Cu47NVB2.js +17 -0
  24. package/dist/url-CgnFZYDI.js +798 -0
  25. package/dist/utils-BJ1UAbM8.js +101 -0
  26. package/dist/utils-De78ey-v.js +12 -0
  27. package/dist/utils-Dius2V8g.js +270 -0
  28. package/package.json +4 -4
  29. package/dist/SimpleSpanProcessor-BwonVfHA.js +0 -957
  30. package/dist/_commonjsHelpers-f76XedMs.js +0 -25
  31. package/dist/detect-resources-Bi3A_QRE.js +0 -854
  32. package/dist/index-BIZrcIxl.js +0 -19
  33. package/dist/index-Bs_K1BID.js +0 -431
  34. package/dist/index-CRez6biP.js +0 -150
  35. package/dist/index-Cmp0890G.js +0 -1599
  36. package/dist/index-DCgcMBKE.js +0 -52
  37. package/dist/index-DDPV-DRN.js +0 -7040
  38. package/dist/index-SVnUIdm3.js +0 -130
  39. package/dist/index-UHBeywOG.js +0 -330
  40. package/dist/index-sp5MCjj0.js +0 -6685
  41. package/dist/index-wETKGbBW.js +0 -830
  42. package/dist/lifecycle-BjQ-7GLm.js +0 -119
  43. package/dist/sdk-info-Ved2vK62.js +0 -484
  44. package/dist/url-C-ZmHCbX.js +0 -797
  45. package/dist/utils-CX5YT7yI.js +0 -14
  46. package/dist/utils-DwFEBfnB.js +0 -142
  47. package/dist/utils-wV4fOQ_R.js +0 -381
@@ -0,0 +1,147 @@
1
+ import { c as M, t as p, i as P, T as o, b as D, d as b } from "./index-Dcezwdcs.js";
2
+ import { i as A } from "./suppress-tracing-Cu47NVB2.js";
3
+ var l = M("OpenTelemetry Context Key B3 Debug Flag"), f = "b3", v = "x-b3-traceid", g = "x-b3-spanid", c = "x-b3-sampled", B = "x-b3-parentspanid", S = "x-b3-flags", F = /* @__PURE__ */ new Set([!0, "true", "True", "1", 1]), N = /* @__PURE__ */ new Set([!1, "false", "False", "0", 0]);
4
+ function V(r) {
5
+ return r === o.SAMPLED || r === o.NONE;
6
+ }
7
+ function m(r) {
8
+ return Array.isArray(r) ? r[0] : r;
9
+ }
10
+ function d(r, t, a) {
11
+ var n = t.get(r, a);
12
+ return m(n);
13
+ }
14
+ function C(r, t) {
15
+ var a = d(r, t, v);
16
+ return typeof a == "string" ? a.padStart(32, "0") : "";
17
+ }
18
+ function x(r, t) {
19
+ var a = d(r, t, g);
20
+ return typeof a == "string" ? a : "";
21
+ }
22
+ function h(r, t) {
23
+ var a = d(r, t, S);
24
+ return a === "1" ? "1" : void 0;
25
+ }
26
+ function R(r, t) {
27
+ var a = d(r, t, c), n = h(r, t);
28
+ if (n === "1" || F.has(a))
29
+ return o.SAMPLED;
30
+ if (a === void 0 || N.has(a))
31
+ return o.NONE;
32
+ }
33
+ var U = (
34
+ /** @class */
35
+ (function() {
36
+ function r() {
37
+ }
38
+ return r.prototype.inject = function(t, a, n) {
39
+ var e = p.getSpanContext(t);
40
+ if (!(!e || !P(e) || A(t))) {
41
+ var i = t.getValue(l);
42
+ n.set(a, v, e.traceId), n.set(a, g, e.spanId), i === "1" ? n.set(a, S, i) : e.traceFlags !== void 0 && n.set(a, c, (o.SAMPLED & e.traceFlags) === o.SAMPLED ? "1" : "0");
43
+ }
44
+ }, r.prototype.extract = function(t, a, n) {
45
+ var e = C(a, n), i = x(a, n), u = R(a, n), s = h(a, n);
46
+ return D(e) && b(i) && V(u) ? (t = t.setValue(l, s), p.setSpanContext(t, {
47
+ traceId: e,
48
+ spanId: i,
49
+ isRemote: !0,
50
+ traceFlags: u
51
+ })) : t;
52
+ }, r.prototype.fields = function() {
53
+ return [
54
+ v,
55
+ g,
56
+ S,
57
+ c,
58
+ B
59
+ ];
60
+ }, r;
61
+ })()
62
+ ), G = function(r, t) {
63
+ var a = typeof Symbol == "function" && r[Symbol.iterator];
64
+ if (!a) return r;
65
+ var n = a.call(r), e, i = [], u;
66
+ try {
67
+ for (; (t === void 0 || t-- > 0) && !(e = n.next()).done; ) i.push(e.value);
68
+ } catch (s) {
69
+ u = { error: s };
70
+ } finally {
71
+ try {
72
+ e && !e.done && (a = n.return) && a.call(n);
73
+ } finally {
74
+ if (u) throw u.error;
75
+ }
76
+ }
77
+ return i;
78
+ }, H = /((?:[0-9a-f]{16}){1,2})-([0-9a-f]{16})(?:-([01d](?![0-9a-f])))?(?:-([0-9a-f]{16}))?/, X = "0".repeat(16), j = /* @__PURE__ */ new Set(["d", "1"]), w = "d";
79
+ function O(r) {
80
+ return r.length === 32 ? r : "" + X + r;
81
+ }
82
+ function K(r) {
83
+ return r && j.has(r) ? o.SAMPLED : o.NONE;
84
+ }
85
+ var Y = (
86
+ /** @class */
87
+ (function() {
88
+ function r() {
89
+ }
90
+ return r.prototype.inject = function(t, a, n) {
91
+ var e = p.getSpanContext(t);
92
+ if (!(!e || !P(e) || A(t))) {
93
+ var i = t.getValue(l) || e.traceFlags & 1, u = e.traceId + "-" + e.spanId + "-" + i;
94
+ n.set(a, f, u);
95
+ }
96
+ }, r.prototype.extract = function(t, a, n) {
97
+ var e = n.get(a, f), i = Array.isArray(e) ? e[0] : e;
98
+ if (typeof i != "string")
99
+ return t;
100
+ var u = i.match(H);
101
+ if (!u)
102
+ return t;
103
+ var s = G(u, 4), T = s[1], y = s[2], _ = s[3], I = O(T);
104
+ if (!D(I) || !b(y))
105
+ return t;
106
+ var L = K(_);
107
+ return _ === w && (t = t.setValue(l, _)), p.setSpanContext(t, {
108
+ traceId: I,
109
+ spanId: y,
110
+ isRemote: !0,
111
+ traceFlags: L
112
+ });
113
+ }, r.prototype.fields = function() {
114
+ return [f];
115
+ }, r;
116
+ })()
117
+ ), E;
118
+ (function(r) {
119
+ r[r.SINGLE_HEADER = 0] = "SINGLE_HEADER", r[r.MULTI_HEADER = 1] = "MULTI_HEADER";
120
+ })(E || (E = {}));
121
+ var z = (
122
+ /** @class */
123
+ (function() {
124
+ function r(t) {
125
+ t === void 0 && (t = {}), this._b3MultiPropagator = new U(), this._b3SinglePropagator = new Y(), t.injectEncoding === E.MULTI_HEADER ? (this._inject = this._b3MultiPropagator.inject, this._fields = this._b3MultiPropagator.fields()) : (this._inject = this._b3SinglePropagator.inject, this._fields = this._b3SinglePropagator.fields());
126
+ }
127
+ return r.prototype.inject = function(t, a, n) {
128
+ A(t) || this._inject(t, a, n);
129
+ }, r.prototype.extract = function(t, a, n) {
130
+ var e = n.get(a, f), i = Array.isArray(e) ? e[0] : e;
131
+ return i ? this._b3SinglePropagator.extract(t, a, n) : this._b3MultiPropagator.extract(t, a, n);
132
+ }, r.prototype.fields = function() {
133
+ return this._fields;
134
+ }, r;
135
+ })()
136
+ );
137
+ export {
138
+ E as B3InjectEncoding,
139
+ z as B3Propagator,
140
+ f as B3_CONTEXT_HEADER,
141
+ S as X_B3_FLAGS,
142
+ B as X_B3_PARENT_SPAN_ID,
143
+ c as X_B3_SAMPLED,
144
+ g as X_B3_SPAN_ID,
145
+ v as X_B3_TRACE_ID
146
+ };
147
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBsfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGMgYXMgY3JlYXRlQ29udGV4dEtleSwgdCBhcyB0cmFjZSwgaSBhcyBpc1NwYW5Db250ZXh0VmFsaWQsIFQgYXMgVHJhY2VGbGFncywgYiBhcyBpc1ZhbGlkVHJhY2VJZCwgZCBhcyBpc1ZhbGlkU3BhbklkIH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBpIGFzIGlzVHJhY2luZ1N1cHByZXNzZWQgfSBmcm9tICcuL3N1cHByZXNzLXRyYWNpbmctIX57MDBhfX4uanMnO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIHNoYXJlZCBjb250ZXh0IGZvciBzdG9yaW5nIGFuIGV4dHJhY3RlZCBiMyBkZWJ1ZyBmbGFnICovXG52YXIgQjNfREVCVUdfRkxBR19LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IENvbnRleHQgS2V5IEIzIERlYnVnIEZsYWcnKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBCMyBzaW5nbGUtaGVhZGVyIGtleSAqL1xudmFyIEIzX0NPTlRFWFRfSEVBREVSID0gJ2IzJztcbi8qIGIzIG11bHRpLWhlYWRlciBrZXlzICovXG52YXIgWF9CM19UUkFDRV9JRCA9ICd4LWIzLXRyYWNlaWQnO1xudmFyIFhfQjNfU1BBTl9JRCA9ICd4LWIzLXNwYW5pZCc7XG52YXIgWF9CM19TQU1QTEVEID0gJ3gtYjMtc2FtcGxlZCc7XG52YXIgWF9CM19QQVJFTlRfU1BBTl9JRCA9ICd4LWIzLXBhcmVudHNwYW5pZCc7XG52YXIgWF9CM19GTEFHUyA9ICd4LWIzLWZsYWdzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBWQUxJRF9TQU1QTEVEX1ZBTFVFUyA9IG5ldyBTZXQoW3RydWUsICd0cnVlJywgJ1RydWUnLCAnMScsIDFdKTtcbnZhciBWQUxJRF9VTlNBTVBMRURfVkFMVUVTID0gbmV3IFNldChbZmFsc2UsICdmYWxzZScsICdGYWxzZScsICcwJywgMF0pO1xuZnVuY3Rpb24gaXNWYWxpZFNhbXBsZWRWYWx1ZShzYW1wbGVkKSB7XG4gICAgcmV0dXJuIHNhbXBsZWQgPT09IFRyYWNlRmxhZ3MuU0FNUExFRCB8fCBzYW1wbGVkID09PSBUcmFjZUZsYWdzLk5PTkU7XG59XG5mdW5jdGlvbiBwYXJzZUhlYWRlcihoZWFkZXIpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xufVxuZnVuY3Rpb24gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBrZXkpIHtcbiAgICB2YXIgaGVhZGVyID0gZ2V0dGVyLmdldChjYXJyaWVyLCBrZXkpO1xuICAgIHJldHVybiBwYXJzZUhlYWRlcihoZWFkZXIpO1xufVxuZnVuY3Rpb24gZ2V0VHJhY2VJZChjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICB2YXIgdHJhY2VJZCA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19UUkFDRV9JRCk7XG4gICAgaWYgKHR5cGVvZiB0cmFjZUlkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdHJhY2VJZC5wYWRTdGFydCgzMiwgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gZ2V0U3BhbklkKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciBzcGFuSWQgPSBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIFhfQjNfU1BBTl9JRCk7XG4gICAgaWYgKHR5cGVvZiBzcGFuSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzcGFuSWQ7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmZ1bmN0aW9uIGdldERlYnVnKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciBkZWJ1ZyA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19GTEFHUyk7XG4gICAgcmV0dXJuIGRlYnVnID09PSAnMScgPyAnMScgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBnZXRUcmFjZUZsYWdzKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciB0cmFjZUZsYWdzID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX1NBTVBMRUQpO1xuICAgIHZhciBkZWJ1ZyA9IGdldERlYnVnKGNhcnJpZXIsIGdldHRlcik7XG4gICAgaWYgKGRlYnVnID09PSAnMScgfHwgVkFMSURfU0FNUExFRF9WQUxVRVMuaGFzKHRyYWNlRmxhZ3MpKSB7XG4gICAgICAgIHJldHVybiBUcmFjZUZsYWdzLlNBTVBMRUQ7XG4gICAgfVxuICAgIGlmICh0cmFjZUZsYWdzID09PSB1bmRlZmluZWQgfHwgVkFMSURfVU5TQU1QTEVEX1ZBTFVFUy5oYXModHJhY2VGbGFncykpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuTk9ORTtcbiAgICB9XG4gICAgLy8gVGhpcyBpbmRpY2F0ZXMgdG8gaXNWYWxpZFNhbXBsZWRWYWx1ZSB0aGF0IHRoaXMgaXMgbm90IHZhbGlkXG4gICAgcmV0dXJuO1xufVxuLyoqXG4gKiBQcm9wYWdhdG9yIGZvciB0aGUgQjMgbXVsdGlwbGUtaGVhZGVyIEhUVFAgZm9ybWF0LlxuICogQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuemlwa2luL2IzLXByb3BhZ2F0aW9uXG4gKi9cbnZhciBCM011bHRpUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCM011bHRpUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgQjNNdWx0aVByb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIHNwYW5Db250ZXh0ID0gdHJhY2UuZ2V0U3BhbkNvbnRleHQoY29udGV4dCk7XG4gICAgICAgIGlmICghc3BhbkNvbnRleHQgfHxcbiAgICAgICAgICAgICFpc1NwYW5Db250ZXh0VmFsaWQoc3BhbkNvbnRleHQpIHx8XG4gICAgICAgICAgICBpc1RyYWNpbmdTdXBwcmVzc2VkKGNvbnRleHQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgZGVidWcgPSBjb250ZXh0LmdldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZKTtcbiAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1RSQUNFX0lELCBzcGFuQ29udGV4dC50cmFjZUlkKTtcbiAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1NQQU5fSUQsIHNwYW5Db250ZXh0LnNwYW5JZCk7XG4gICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQjMgc3BlYywgaWYgdGhlIGRlYnVnIGZsYWcgaXMgc2V0LFxuICAgICAgICAvLyB0aGUgc2FtcGxlZCBmbGFnIHNob3VsZG4ndCBiZSBwcm9wYWdhdGVkIGFzIHdlbGwuXG4gICAgICAgIGlmIChkZWJ1ZyA9PT0gJzEnKSB7XG4gICAgICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfRkxBR1MsIGRlYnVnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzcGFuQ29udGV4dC50cmFjZUZsYWdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFdlIHNldCB0aGUgaGVhZGVyIG9ubHkgaWYgdGhlcmUgaXMgYW4gZXhpc3Rpbmcgc2FtcGxpbmcgZGVjaXNpb24uXG4gICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ugd2lsbCBvbWl0IGl0ID0+IEFic2VudC5cbiAgICAgICAgICAgIHNldHRlci5zZXQoY2FycmllciwgWF9CM19TQU1QTEVELCAoVHJhY2VGbGFncy5TQU1QTEVEICYgc3BhbkNvbnRleHQudHJhY2VGbGFncykgPT09IFRyYWNlRmxhZ3MuU0FNUExFRFxuICAgICAgICAgICAgICAgID8gJzEnXG4gICAgICAgICAgICAgICAgOiAnMCcpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBCM011bHRpUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIHRyYWNlSWQgPSBnZXRUcmFjZUlkKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHZhciBzcGFuSWQgPSBnZXRTcGFuSWQoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIHRyYWNlRmxhZ3MgPSBnZXRUcmFjZUZsYWdzKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHZhciBkZWJ1ZyA9IGdldERlYnVnKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIGlmIChpc1ZhbGlkVHJhY2VJZCh0cmFjZUlkKSAmJlxuICAgICAgICAgICAgaXNWYWxpZFNwYW5JZChzcGFuSWQpICYmXG4gICAgICAgICAgICBpc1ZhbGlkU2FtcGxlZFZhbHVlKHRyYWNlRmxhZ3MpKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5zZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSwgZGVidWcpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYWNlLnNldFNwYW5Db250ZXh0KGNvbnRleHQsIHtcbiAgICAgICAgICAgICAgICB0cmFjZUlkOiB0cmFjZUlkLFxuICAgICAgICAgICAgICAgIHNwYW5JZDogc3BhbklkLFxuICAgICAgICAgICAgICAgIGlzUmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRyYWNlRmxhZ3M6IHRyYWNlRmxhZ3MsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9O1xuICAgIEIzTXVsdGlQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBYX0IzX1RSQUNFX0lELFxuICAgICAgICAgICAgWF9CM19TUEFOX0lELFxuICAgICAgICAgICAgWF9CM19GTEFHUyxcbiAgICAgICAgICAgIFhfQjNfU0FNUExFRCxcbiAgICAgICAgICAgIFhfQjNfUEFSRU5UX1NQQU5fSUQsXG4gICAgICAgIF07XG4gICAgfTtcbiAgICByZXR1cm4gQjNNdWx0aVByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fcmVhZCA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBCM19DT05URVhUX1JFR0VYID0gLygoPzpbMC05YS1mXXsxNn0pezEsMn0pLShbMC05YS1mXXsxNn0pKD86LShbMDFkXSg/IVswLTlhLWZdKSkpPyg/Oi0oWzAtOWEtZl17MTZ9KSk/LztcbnZhciBQQURESU5HID0gJzAnLnJlcGVhdCgxNik7XG52YXIgU0FNUExFRF9WQUxVRVMgPSBuZXcgU2V0KFsnZCcsICcxJ10pO1xudmFyIERFQlVHX1NUQVRFID0gJ2QnO1xuZnVuY3Rpb24gY29udmVydFRvVHJhY2VJZDEyOCh0cmFjZUlkKSB7XG4gICAgcmV0dXJuIHRyYWNlSWQubGVuZ3RoID09PSAzMiA/IHRyYWNlSWQgOiBcIlwiICsgUEFERElORyArIHRyYWNlSWQ7XG59XG5mdW5jdGlvbiBjb252ZXJ0VG9UcmFjZUZsYWdzKHNhbXBsaW5nU3RhdGUpIHtcbiAgICBpZiAoc2FtcGxpbmdTdGF0ZSAmJiBTQU1QTEVEX1ZBTFVFUy5oYXMoc2FtcGxpbmdTdGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuU0FNUExFRDtcbiAgICB9XG4gICAgcmV0dXJuIFRyYWNlRmxhZ3MuTk9ORTtcbn1cbi8qKlxuICogUHJvcGFnYXRvciBmb3IgdGhlIEIzIHNpbmdsZS1oZWFkZXIgSFRUUCBmb3JtYXQuXG4gKiBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL29wZW56aXBraW4vYjMtcHJvcGFnYXRpb25cbiAqL1xudmFyIEIzU2luZ2xlUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCM1NpbmdsZVByb3BhZ2F0b3IoKSB7XG4gICAgfVxuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICB2YXIgc3BhbkNvbnRleHQgPSB0cmFjZS5nZXRTcGFuQ29udGV4dChjb250ZXh0KTtcbiAgICAgICAgaWYgKCFzcGFuQ29udGV4dCB8fFxuICAgICAgICAgICAgIWlzU3BhbkNvbnRleHRWYWxpZChzcGFuQ29udGV4dCkgfHxcbiAgICAgICAgICAgIGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBzYW1wbGluZ1N0YXRlID0gY29udGV4dC5nZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSkgfHwgc3BhbkNvbnRleHQudHJhY2VGbGFncyAmIDB4MTtcbiAgICAgICAgdmFyIHZhbHVlID0gc3BhbkNvbnRleHQudHJhY2VJZCArIFwiLVwiICsgc3BhbkNvbnRleHQuc3BhbklkICsgXCItXCIgKyBzYW1wbGluZ1N0YXRlO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIEIzX0NPTlRFWFRfSEVBREVSLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCM1NpbmdsZVByb3BhZ2F0b3IucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKSB7XG4gICAgICAgIHZhciBoZWFkZXIgPSBnZXR0ZXIuZ2V0KGNhcnJpZXIsIEIzX0NPTlRFWFRfSEVBREVSKTtcbiAgICAgICAgdmFyIGIzQ29udGV4dCA9IEFycmF5LmlzQXJyYXkoaGVhZGVyKSA/IGhlYWRlclswXSA6IGhlYWRlcjtcbiAgICAgICAgaWYgKHR5cGVvZiBiM0NvbnRleHQgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciBtYXRjaCA9IGIzQ29udGV4dC5tYXRjaChCM19DT05URVhUX1JFR0VYKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB2YXIgX2EgPSBfX3JlYWQobWF0Y2gsIDQpLCBleHRyYWN0ZWRUcmFjZUlkID0gX2FbMV0sIHNwYW5JZCA9IF9hWzJdLCBzYW1wbGluZ1N0YXRlID0gX2FbM107XG4gICAgICAgIHZhciB0cmFjZUlkID0gY29udmVydFRvVHJhY2VJZDEyOChleHRyYWN0ZWRUcmFjZUlkKTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkVHJhY2VJZCh0cmFjZUlkKSB8fCAhaXNWYWxpZFNwYW5JZChzcGFuSWQpKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciB0cmFjZUZsYWdzID0gY29udmVydFRvVHJhY2VGbGFncyhzYW1wbGluZ1N0YXRlKTtcbiAgICAgICAgaWYgKHNhbXBsaW5nU3RhdGUgPT09IERFQlVHX1NUQVRFKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5zZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSwgc2FtcGxpbmdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYWNlLnNldFNwYW5Db250ZXh0KGNvbnRleHQsIHtcbiAgICAgICAgICAgIHRyYWNlSWQ6IHRyYWNlSWQsXG4gICAgICAgICAgICBzcGFuSWQ6IHNwYW5JZCxcbiAgICAgICAgICAgIGlzUmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgdHJhY2VGbGFnczogdHJhY2VGbGFncyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBCM1NpbmdsZVByb3BhZ2F0b3IucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtCM19DT05URVhUX0hFQURFUl07XG4gICAgfTtcbiAgICByZXR1cm4gQjNTaW5nbGVQcm9wYWdhdG9yO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBFbnVtZXJhdGlvbiBvZiBCMyBpbmplY3QgZW5jb2RpbmdzICovXG52YXIgQjNJbmplY3RFbmNvZGluZztcbihmdW5jdGlvbiAoQjNJbmplY3RFbmNvZGluZykge1xuICAgIEIzSW5qZWN0RW5jb2RpbmdbQjNJbmplY3RFbmNvZGluZ1tcIlNJTkdMRV9IRUFERVJcIl0gPSAwXSA9IFwiU0lOR0xFX0hFQURFUlwiO1xuICAgIEIzSW5qZWN0RW5jb2RpbmdbQjNJbmplY3RFbmNvZGluZ1tcIk1VTFRJX0hFQURFUlwiXSA9IDFdID0gXCJNVUxUSV9IRUFERVJcIjtcbn0pKEIzSW5qZWN0RW5jb2RpbmcgfHwgKEIzSW5qZWN0RW5jb2RpbmcgPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBQcm9wYWdhdG9yIHRoYXQgZXh0cmFjdHMgQjMgY29udGV4dCBpbiBib3RoIHNpbmdsZSBhbmQgbXVsdGktaGVhZGVyIHZhcmlhbnRzLFxuICogd2l0aCBjb25maWd1cmFibGUgaW5qZWN0aW9uIGZvcm1hdCBkZWZhdWx0aW5nIHRvIEIzIHNpbmdsZS1oZWFkZXIuIER1ZSB0b1xuICogdGhlIGFzeW1tZXRyeSBpbiBpbmplY3Rpb24gYW5kIGV4dHJhY3Rpb24gZm9ybWF0cyB0aGlzIGlzIG5vdCBzdWl0YWJsZSB0b1xuICogYmUgaW1wbGVtZW50ZWQgYXMgYSBjb21wb3NpdGUgcHJvcGFnYXRvci5cbiAqIEJhc2VkIG9uOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnppcGtpbi9iMy1wcm9wYWdhdGlvblxuICovXG52YXIgQjNQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzUHJvcGFnYXRvcihjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yID0gbmV3IEIzTXVsdGlQcm9wYWdhdG9yKCk7XG4gICAgICAgIHRoaXMuX2IzU2luZ2xlUHJvcGFnYXRvciA9IG5ldyBCM1NpbmdsZVByb3BhZ2F0b3IoKTtcbiAgICAgICAgaWYgKGNvbmZpZy5pbmplY3RFbmNvZGluZyA9PT0gQjNJbmplY3RFbmNvZGluZy5NVUxUSV9IRUFERVIpIHtcbiAgICAgICAgICAgIHRoaXMuX2luamVjdCA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmluamVjdDtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5qZWN0ID0gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmluamVjdDtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzU2luZ2xlUHJvcGFnYXRvci5maWVsZHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCM1Byb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgaWYgKGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbmplY3QoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKTtcbiAgICB9O1xuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlciA9IGdldHRlci5nZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIpO1xuICAgICAgICB2YXIgYjNDb250ZXh0ID0gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xuICAgICAgICBpZiAoYjNDb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmV4dHJhY3QoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9iM011bHRpUHJvcGFnYXRvci5leHRyYWN0KGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH07XG4gICAgcmV0dXJuIEIzUHJvcGFnYXRvcjtcbn0oKSk7XG5cbmV4cG9ydCB7IEIzSW5qZWN0RW5jb2RpbmcsIEIzUHJvcGFnYXRvciwgQjNfQ09OVEVYVF9IRUFERVIsIFhfQjNfRkxBR1MsIFhfQjNfUEFSRU5UX1NQQU5fSUQsIFhfQjNfU0FNUExFRCwgWF9CM19TUEFOX0lELCBYX0IzX1RSQUNFX0lEIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxHQUFr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QUFVLFNBQVMsU0FBVTFCLEdBQVNaLEdBQVNhLEdBQVE7QUFDaEUsTUFBSTVCLEVBQW9CMkIsQ0FBTyxLQUcvQixLQUFLLFFBQVFBLEdBQVNaLEdBQVNhLENBQU07QUFBQSxJQUN6QyxHQUNBeUIsRUFBYSxVQUFVLFVBQVUsU0FBVTFCLEdBQVNaLEdBQVNDLEdBQVE7QUFDakUsVUFBSUgsSUFBU0csRUFBTyxJQUFJRCxHQUFTYixDQUFpQixHQUM5QzhDLElBQVksTUFBTSxRQUFRbkMsQ0FBTSxJQUFJQSxFQUFPLENBQUMsSUFBSUE7QUFDcEQsYUFBSW1DLElBQ08sS0FBSyxvQkFBb0IsUUFBUXJCLEdBQVNaLEdBQVNDLENBQU0sSUFHekQsS0FBSyxtQkFBbUIsUUFBUVcsR0FBU1osR0FBU0MsQ0FBTTtBQUFBLElBRXZFLEdBQ0FxQyxFQUFhLFVBQVUsU0FBUyxXQUFZO0FBQ3hDLGFBQU8sS0FBSztBQUFBLElBQ2hCLEdBQ09BO0FBQUEsRUFDWCxHQUFFO0FBQUE7IiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHRLZXkiLCAidHJhY2UiLCAiaXNTcGFuQ29udGV4dFZhbGlkIiwgIlRyYWNlRmxhZ3MiLCAiaXNWYWxpZFRyYWNlSWQiLCAiaXNWYWxpZFNwYW5JZCIsICJpc1RyYWNpbmdTdXBwcmVzc2VkIiwgIkIzX0RFQlVHX0ZMQUdfS0VZIiwgIkIzX0NPTlRFWFRfSEVBREVSIiwgIlhfQjNfVFJBQ0VfSUQiLCAiWF9CM19TUEFOX0lEIiwgIlhfQjNfU0FNUExFRCIsICJYX0IzX1BBUkVOVF9TUEFOX0lEIiwgIlhfQjNfRkxBR1MiLCAiVkFMSURfU0FNUExFRF9WQUxVRVMiLCAiVkFMSURfVU5TQU1QTEVEX1ZBTFVFUyIsICJpc1ZhbGlkU2FtcGxlZFZhbHVlIiwgInNhbXBsZWQiLCAicGFyc2VIZWFkZXIiLCAiaGVhZGVyIiwgImdldEhlYWRlclZhbHVlIiwgImNhcnJpZXIiLCAiZ2V0dGVyIiwgImtleSIsICJnZXRUcmFjZUlkIiwgInRyYWNlSWQiLCAiZ2V0U3BhbklkIiwgInNwYW5JZCIsICJnZXREZWJ1ZyIsICJkZWJ1ZyIsICJnZXRUcmFjZUZsYWdzIiwgInRyYWNlRmxhZ3MiLCAiQjNNdWx0aVByb3BhZ2F0b3IiLCAiY29udGV4dCIsICJzZXR0ZXIiLCAic3BhbkNvbnRleHQiLCAiX19yZWFkIiwgIm8iLCAibiIsICJtIiwgImkiLCAiciIsICJhciIsICJlIiwgImVycm9yIiwgIkIzX0NPTlRFWFRfUkVHRVgiLCAiUEFERElORyIsICJTQU1QTEVEX1ZBTFVFUyIsICJERUJVR19TVEFURSIsICJjb252ZXJ0VG9UcmFjZUlkMTI4IiwgImNvbnZlcnRUb1RyYWNlRmxhZ3MiLCAic2FtcGxpbmdTdGF0ZSIsICJCM1NpbmdsZVByb3BhZ2F0b3IiLCAidmFsdWUiLCAiYjNDb250ZXh0IiwgIm1hdGNoIiwgIl9hIiwgImV4dHJhY3RlZFRyYWNlSWQiLCAiQjNJbmplY3RFbmNvZGluZyIsICJCM1Byb3BhZ2F0b3IiLCAiY29uZmlnIl0KfQo=