@cartanova/qgrid-cli 1.0.2 → 1.0.4

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 (114) hide show
  1. package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +9 -0
  2. package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +6 -0
  3. package/bundle/dist/dist/_virtual/_rolldown/runtime.js +15 -0
  4. package/bundle/dist/dist/application/qgrid/oauth.js +140 -0
  5. package/bundle/dist/dist/application/qgrid/pool.js +100 -0
  6. package/bundle/dist/dist/application/qgrid/qgrid.frame.js +280 -0
  7. package/bundle/dist/dist/application/qgrid/qgrid.types.js +79 -0
  8. package/bundle/dist/dist/application/qgrid/worker.js +183 -0
  9. package/bundle/dist/dist/application/queries.generated.js +31 -0
  10. package/bundle/dist/dist/application/request-log/request-log.model.js +113 -0
  11. package/bundle/dist/dist/application/request-log/request-log.types.js +13 -0
  12. package/bundle/dist/dist/application/sonamu.generated.js +99 -0
  13. package/bundle/dist/dist/application/sonamu.generated.sso.js +34 -0
  14. package/bundle/dist/dist/application/token/token.model.js +157 -0
  15. package/bundle/dist/dist/application/token/token.types.js +22 -0
  16. package/bundle/dist/dist/i18n/en.js +63 -0
  17. package/bundle/dist/dist/i18n/ko.js +62 -0
  18. package/bundle/dist/dist/i18n/sd.generated.js +272 -0
  19. package/bundle/dist/dist/index.js +11 -0
  20. package/bundle/dist/dist/migrations/20260410171405_create__request_logs.js +26 -0
  21. package/bundle/dist/dist/migrations/20260410171406_create__tokens.js +24 -0
  22. package/bundle/dist/dist/migrations/20260411120624_alter_tokens_alter2.js +16 -0
  23. package/bundle/dist/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +155 -0
  24. package/bundle/dist/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +1484 -0
  25. package/bundle/dist/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +887 -0
  26. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +2746 -0
  27. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +8 -0
  28. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +8 -0
  29. package/bundle/dist/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +662 -0
  30. package/bundle/dist/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +386 -0
  31. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +82 -0
  32. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +48 -0
  33. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +1307 -0
  34. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +558 -0
  35. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +33 -0
  36. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +226 -0
  37. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +27 -0
  38. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +77 -0
  39. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +374 -0
  40. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +37 -0
  41. package/bundle/dist/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +2886 -0
  42. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +10 -0
  43. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +109 -0
  44. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +10 -0
  45. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +10 -0
  46. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +10 -0
  47. package/bundle/dist/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +1127 -0
  48. package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +21 -0
  49. package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +432 -0
  50. package/bundle/dist/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +506 -0
  51. package/bundle/dist/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +86 -0
  52. package/bundle/dist/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +426 -0
  53. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -0
  54. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +41 -0
  55. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +19 -0
  56. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +202 -0
  57. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +16 -0
  58. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +59 -0
  59. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +2910 -0
  60. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +44 -0
  61. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/index.js +28 -0
  62. package/bundle/dist/dist/sonamu.config.js +196 -0
  63. package/bundle/dist/dist/testing/fixture.js +8 -0
  64. package/bundle/dist/dist/testing/global.js +9 -0
  65. package/bundle/dist/dist/testing/setup-mocks.js +17 -0
  66. package/bundle/dist/dist/utils/subset-loaders.js +12 -0
  67. package/bundle/src/src/application/qgrid/oauth.ts +181 -0
  68. package/bundle/src/src/application/qgrid/pool.ts +132 -0
  69. package/bundle/src/src/application/qgrid/qgrid.frame.ts +275 -0
  70. package/bundle/src/src/application/qgrid/qgrid.types.ts +117 -0
  71. package/bundle/src/src/application/qgrid/worker.ts +234 -0
  72. package/bundle/src/src/application/queries.generated.ts +59 -0
  73. package/bundle/src/src/application/request-log/request-log.entity.json +75 -0
  74. package/bundle/src/src/application/request-log/request-log.model.ts +155 -0
  75. package/bundle/src/src/application/request-log/request-log.types.ts +15 -0
  76. package/bundle/src/src/application/sonamu.generated.http +187 -0
  77. package/bundle/src/src/application/sonamu.generated.sso.ts +66 -0
  78. package/bundle/src/src/application/sonamu.generated.ts +135 -0
  79. package/bundle/src/src/application/token/token.entity.json +37 -0
  80. package/bundle/src/src/application/token/token.model.ts +160 -0
  81. package/bundle/src/src/application/token/token.types.ts +26 -0
  82. package/bundle/src/src/i18n/en.ts +59 -0
  83. package/bundle/src/src/i18n/ko.ts +59 -0
  84. package/bundle/src/src/i18n/sd.generated.ts +384 -0
  85. package/bundle/src/src/index.ts +6 -0
  86. package/bundle/src/src/migrations/20260410171405_create__request_logs.ts +23 -0
  87. package/bundle/src/src/migrations/20260410171406_create__tokens.ts +21 -0
  88. package/bundle/src/src/migrations/20260411120624_alter_tokens_alter2.ts +15 -0
  89. package/bundle/src/src/sonamu.config.ts +248 -0
  90. package/bundle/src/src/testing/fixture.ts +6 -0
  91. package/bundle/src/src/testing/global.ts +6 -0
  92. package/bundle/src/src/testing/setup-mocks.ts +44 -0
  93. package/bundle/src/src/typings/fastify.d.ts +8 -0
  94. package/bundle/src/src/typings/sonamu.d.ts +17 -0
  95. package/bundle/src/src/utils/subset-loaders.ts +11 -0
  96. package/bundle/web-dist/web-dist/client/assets/index-DlPchHBY.js +116 -0
  97. package/bundle/web-dist/web-dist/client/assets/index-vZsvyuFn.css +1 -0
  98. package/bundle/web-dist/web-dist/client/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  99. package/bundle/web-dist/web-dist/client/assets/routes-CagDz23B.js +1 -0
  100. package/bundle/web-dist/web-dist/client/assets/sd.generated-BrQoQXvv.js +47 -0
  101. package/bundle/web-dist/web-dist/client/assets/services.generated-BspO2L0j.js +1 -0
  102. package/bundle/web-dist/web-dist/client/assets/show-aXUGa0gm.js +29 -0
  103. package/bundle/web-dist/web-dist/client/assets/tokens-DRkXtZ3Q.js +1 -0
  104. package/bundle/web-dist/web-dist/client/assets/vendor-react-DH4kUfK2.js +9 -0
  105. package/bundle/web-dist/web-dist/client/assets/vendor-tanstack-CUxlo6YN.js +1 -0
  106. package/bundle/web-dist/web-dist/client/index.html +18 -0
  107. package/bundle/web-dist/web-dist/server/assets/react-dom-CGIzOSuj.js +335 -0
  108. package/bundle/web-dist/web-dist/server/assets/routes-ClzReRep.js +490 -0
  109. package/bundle/web-dist/web-dist/server/assets/sd.generated-BnonqqKr.js +21694 -0
  110. package/bundle/web-dist/web-dist/server/assets/services.generated-D5ABD5fr.js +836 -0
  111. package/bundle/web-dist/web-dist/server/assets/show-C9pcdSxc.js +23364 -0
  112. package/bundle/web-dist/web-dist/server/assets/tokens-JH6FsnWZ.js +860 -0
  113. package/bundle/web-dist/web-dist/server/entry-server.generated.js +44646 -0
  114. package/package.json +10 -9
@@ -0,0 +1,506 @@
1
+ import "../../../../../../_virtual/_rolldown/runtime.js";
2
+ //#region ../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js
3
+ var $ = Object.defineProperty;
4
+ var C = (s) => {
5
+ throw TypeError(s);
6
+ };
7
+ var D = (s, n, t) => n in s ? $(s, n, {
8
+ enumerable: !0,
9
+ configurable: !0,
10
+ writable: !0,
11
+ value: t
12
+ }) : s[n] = t;
13
+ var O = (s, n, t) => D(s, typeof n != "symbol" ? n + "" : n, t), q = (s, n, t) => n.has(s) || C("Cannot " + t);
14
+ var d = (s, n, t) => (q(s, n, "read from private field"), t ? t.call(s) : n.get(s)), k = (s, n, t) => n.has(s) ? C("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(s) : n.set(s, t), f = (s, n, t, e) => (q(s, n, "write to private field"), e ? e.call(s, t) : n.set(s, t), t);
15
+ var F = (s, n, t, e) => ({
16
+ set _(r) {
17
+ f(s, n, r, t);
18
+ },
19
+ get _() {
20
+ return d(s, n, e);
21
+ }
22
+ });
23
+ var M = class {
24
+ constructor(n) {
25
+ O(this, "value");
26
+ O(this, "next");
27
+ this.value = n;
28
+ }
29
+ }, m, w, E, g = class {
30
+ constructor() {
31
+ k(this, m);
32
+ k(this, w);
33
+ k(this, E);
34
+ this.clear();
35
+ }
36
+ enqueue(n) {
37
+ let t = new M(n);
38
+ d(this, m) ? (d(this, w).next = t, f(this, w, t)) : (f(this, m, t), f(this, w, t)), F(this, E)._++;
39
+ }
40
+ dequeue() {
41
+ let n = d(this, m);
42
+ if (n) return f(this, m, d(this, m).next), F(this, E)._--, n.value;
43
+ }
44
+ clear() {
45
+ f(this, m, void 0), f(this, w, void 0), f(this, E, 0);
46
+ }
47
+ get size() {
48
+ return d(this, E);
49
+ }
50
+ *[Symbol.iterator]() {
51
+ let n = d(this, m);
52
+ for (; n;) yield n.value, n = n.next;
53
+ }
54
+ };
55
+ m = /* @__PURE__ */ new WeakMap(), w = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap();
56
+ function y(s) {
57
+ if (!((Number.isInteger(s) || s === Number.POSITIVE_INFINITY) && s > 0)) throw new TypeError("Expected `concurrency` to be a number from 1 and up");
58
+ let n = new g(), t = 0, e = () => {
59
+ t--, n.size > 0 && n.dequeue()();
60
+ }, r = async (h, p, a) => {
61
+ t++;
62
+ let l = (async () => h(...a))();
63
+ p(l);
64
+ try {
65
+ await l;
66
+ } catch (T) {}
67
+ e();
68
+ }, i = (h, p, a) => {
69
+ n.enqueue(r.bind(void 0, h, p, a)), (async () => (await Promise.resolve(), t < s && n.size > 0 && n.dequeue()()))();
70
+ }, c = (h, ...p) => new Promise((a) => {
71
+ i(h, a, p);
72
+ });
73
+ return Object.defineProperties(c, {
74
+ activeCount: { get: () => t },
75
+ pendingCount: { get: () => n.size },
76
+ clearQueue: { value: () => {
77
+ n.clear();
78
+ } }
79
+ }), c;
80
+ }
81
+ function o(s, n = null) {
82
+ let t = new Event(s);
83
+ return n && Object.defineProperty(t, "task", {
84
+ value: n,
85
+ enumerable: !0,
86
+ writable: !1,
87
+ configurable: !1
88
+ }), t;
89
+ }
90
+ var N = {
91
+ 1: 12.71,
92
+ 2: 4.303,
93
+ 3: 3.182,
94
+ 4: 2.776,
95
+ 5: 2.571,
96
+ 6: 2.447,
97
+ 7: 2.365,
98
+ 8: 2.306,
99
+ 9: 2.262,
100
+ 10: 2.228,
101
+ 11: 2.201,
102
+ 12: 2.179,
103
+ 13: 2.16,
104
+ 14: 2.145,
105
+ 15: 2.131,
106
+ 16: 2.12,
107
+ 17: 2.11,
108
+ 18: 2.101,
109
+ 19: 2.093,
110
+ 20: 2.086,
111
+ 21: 2.08,
112
+ 22: 2.074,
113
+ 23: 2.069,
114
+ 24: 2.064,
115
+ 25: 2.06,
116
+ 26: 2.056,
117
+ 27: 2.052,
118
+ 28: 2.048,
119
+ 29: 2.045,
120
+ 30: 2.042,
121
+ 31: 2.0399,
122
+ 32: 2.0378,
123
+ 33: 2.0357,
124
+ 34: 2.0336,
125
+ 35: 2.0315,
126
+ 36: 2.0294,
127
+ 37: 2.0273,
128
+ 38: 2.0252,
129
+ 39: 2.0231,
130
+ 40: 2.021,
131
+ 41: 2.0198,
132
+ 42: 2.0186,
133
+ 43: 2.0174,
134
+ 44: 2.0162,
135
+ 45: 2.015,
136
+ 46: 2.0138,
137
+ 47: 2.0126,
138
+ 48: 2.0114,
139
+ 49: 2.0102,
140
+ 50: 2.009,
141
+ 51: 2.0081,
142
+ 52: 2.0072,
143
+ 53: 2.0063,
144
+ 54: 2.0054,
145
+ 55: 2.0045,
146
+ 56: 2.0036,
147
+ 57: 2.0027,
148
+ 58: 2.0018,
149
+ 59: 2.0009,
150
+ 60: 2,
151
+ 61: 1.9995,
152
+ 62: 1.999,
153
+ 63: 1.9985,
154
+ 64: 1.998,
155
+ 65: 1.9975,
156
+ 66: 1.997,
157
+ 67: 1.9965,
158
+ 68: 1.996,
159
+ 69: 1.9955,
160
+ 70: 1.995,
161
+ 71: 1.9945,
162
+ 72: 1.994,
163
+ 73: 1.9935,
164
+ 74: 1.993,
165
+ 75: 1.9925,
166
+ 76: 1.992,
167
+ 77: 1.9915,
168
+ 78: 1.991,
169
+ 79: 1.9905,
170
+ 80: 1.99,
171
+ 81: 1.9897,
172
+ 82: 1.9894,
173
+ 83: 1.9891,
174
+ 84: 1.9888,
175
+ 85: 1.9885,
176
+ 86: 1.9882,
177
+ 87: 1.9879,
178
+ 88: 1.9876,
179
+ 89: 1.9873,
180
+ 90: 1.987,
181
+ 91: 1.9867,
182
+ 92: 1.9864,
183
+ 93: 1.9861,
184
+ 94: 1.9858,
185
+ 95: 1.9855,
186
+ 96: 1.9852,
187
+ 97: 1.9849,
188
+ 98: 1.9846,
189
+ 99: 1.9843,
190
+ 100: 1.984,
191
+ 101: 1.9838,
192
+ 102: 1.9836,
193
+ 103: 1.9834,
194
+ 104: 1.9832,
195
+ 105: 1.983,
196
+ 106: 1.9828,
197
+ 107: 1.9826,
198
+ 108: 1.9824,
199
+ 109: 1.9822,
200
+ 110: 1.982,
201
+ 111: 1.9818,
202
+ 112: 1.9816,
203
+ 113: 1.9814,
204
+ 114: 1.9812,
205
+ 115: 1.9819,
206
+ 116: 1.9808,
207
+ 117: 1.9806,
208
+ 118: 1.9804,
209
+ 119: 1.9802,
210
+ 120: 1.98,
211
+ infinity: 1.96
212
+ };
213
+ var J = (s) => s / 1e6, U = () => J(Number(process.hrtime.bigint())), B = () => performance.now();
214
+ function W(s) {
215
+ return s !== null && typeof s == "object" && typeof s.then == "function";
216
+ }
217
+ var S = (s, n) => s.reduce((e, r) => e + (r - n) ** 2, 0) / (s.length - 1) || 0, X = (async () => {}).constructor, Z = (s) => s.constructor === X, z = async (s) => {
218
+ if (Z(s.fn)) return !0;
219
+ try {
220
+ if (s.opts.beforeEach != null) try {
221
+ await s.opts.beforeEach.call(s);
222
+ } catch (e) {}
223
+ let n = s.fn(), t = W(n);
224
+ if (t) try {
225
+ await n;
226
+ } catch (e) {}
227
+ if (s.opts.afterEach != null) try {
228
+ await s.opts.afterEach.call(s);
229
+ } catch (e) {}
230
+ return t;
231
+ } catch (n) {
232
+ return !1;
233
+ }
234
+ };
235
+ var b = class extends EventTarget {
236
+ constructor(t, e, r, i = {}) {
237
+ super();
238
+ this.runs = 0;
239
+ this.bench = t, this.name = e, this.fn = r, this.opts = i;
240
+ }
241
+ async loop(t, e) {
242
+ var T;
243
+ let r = this.bench.concurrency === "task", { threshold: i } = this.bench, c = 0, h = [];
244
+ if (this.opts.beforeAll != null) try {
245
+ await this.opts.beforeAll.call(this);
246
+ } catch (u) {
247
+ return { error: u };
248
+ }
249
+ let p = await z(this), a = async () => {
250
+ this.opts.beforeEach != null && await this.opts.beforeEach.call(this);
251
+ let u = 0;
252
+ if (p) {
253
+ let v = this.bench.now();
254
+ await this.fn.call(this), u = this.bench.now() - v;
255
+ } else {
256
+ let v = this.bench.now();
257
+ this.fn.call(this), u = this.bench.now() - v;
258
+ }
259
+ h.push(u), c += u, this.opts.afterEach != null && await this.opts.afterEach.call(this);
260
+ }, l = y(i);
261
+ try {
262
+ let u = [];
263
+ for (; (c < t || h.length + l.activeCount + l.pendingCount < e) && !((T = this.bench.signal) != null && T.aborted);) r ? u.push(l(a)) : await a();
264
+ u.length && await Promise.all(u);
265
+ } catch (u) {
266
+ return { error: u };
267
+ }
268
+ if (this.opts.afterAll != null) try {
269
+ await this.opts.afterAll.call(this);
270
+ } catch (u) {
271
+ return { error: u };
272
+ }
273
+ return { samples: h };
274
+ }
275
+ /**
276
+ * run the current task and write the results in `Task.result` object
277
+ */
278
+ async run() {
279
+ var r, i;
280
+ if ((r = this.result) != null && r.error) return this;
281
+ this.dispatchEvent(o("start", this)), await this.bench.setup(this, "run");
282
+ let { samples: t, error: e } = await this.loop(this.bench.time, this.bench.iterations);
283
+ if (this.bench.teardown(this, "run"), t) {
284
+ let c = t.reduce((L, A) => L + A, 0);
285
+ this.runs = t.length, t.sort((L, A) => L - A);
286
+ let h = c / this.runs, p = 1e3 / h, a = t.length, l = a - 1, T = t[0], u = t[l], v = c / t.length || 0, P = S(t, v), R = Math.sqrt(P), I = R / Math.sqrt(a), _ = N[String(Math.round(l) || 1)] || N.infinity, K = I * _, j = K / v * 100, H = t[Math.ceil(a * .75) - 1], V = t[Math.ceil(a * .99) - 1], Q = t[Math.ceil(a * .995) - 1], Y = t[Math.ceil(a * .999) - 1];
287
+ if ((i = this.bench.signal) != null && i.aborted) return this;
288
+ this.setResult({
289
+ totalTime: c,
290
+ min: T,
291
+ max: u,
292
+ hz: p,
293
+ period: h,
294
+ samples: t,
295
+ mean: v,
296
+ variance: P,
297
+ sd: R,
298
+ sem: I,
299
+ df: l,
300
+ critical: _,
301
+ moe: K,
302
+ rme: j,
303
+ p75: H,
304
+ p99: V,
305
+ p995: Q,
306
+ p999: Y
307
+ });
308
+ }
309
+ if (e) {
310
+ if (this.setResult({ error: e }), this.bench.throws) throw e;
311
+ this.dispatchEvent(o("error", this)), this.bench.dispatchEvent(o("error", this));
312
+ }
313
+ return this.dispatchEvent(o("cycle", this)), this.bench.dispatchEvent(o("cycle", this)), this.dispatchEvent(o("complete", this)), this;
314
+ }
315
+ /**
316
+ * warmup the current task
317
+ */
318
+ async warmup() {
319
+ var e;
320
+ if ((e = this.result) != null && e.error) return;
321
+ this.dispatchEvent(o("warmup", this)), await this.bench.setup(this, "warmup");
322
+ let { error: t } = await this.loop(this.bench.warmupTime, this.bench.warmupIterations);
323
+ if (this.bench.teardown(this, "warmup"), t && (this.setResult({ error: t }), this.bench.throws)) throw t;
324
+ }
325
+ addEventListener(t, e, r) {
326
+ super.addEventListener(t, e, r);
327
+ }
328
+ removeEventListener(t, e, r) {
329
+ super.removeEventListener(t, e, r);
330
+ }
331
+ /**
332
+ * change the result object values
333
+ */
334
+ setResult(t) {
335
+ this.result = {
336
+ ...this.result,
337
+ ...t
338
+ }, Object.freeze(this.result);
339
+ }
340
+ /**
341
+ * reset the task to make the `Task.runs` a zero-value and remove the `Task.result`
342
+ * object
343
+ */
344
+ reset() {
345
+ this.dispatchEvent(o("reset", this)), this.runs = 0, this.result = void 0;
346
+ }
347
+ };
348
+ var x = class extends EventTarget {
349
+ constructor(t = {}) {
350
+ var e, r, i, c, h, p, a, l;
351
+ super();
352
+ this._tasks = /* @__PURE__ */ new Map();
353
+ this._todos = /* @__PURE__ */ new Map();
354
+ /**
355
+ * Executes tasks concurrently based on the specified concurrency mode.
356
+ *
357
+ * - When `mode` is set to `null` (default), concurrency is disabled.
358
+ * - When `mode` is set to 'task', each task's iterations (calls of a task function) run concurrently.
359
+ * - When `mode` is set to 'bench', different tasks within the bench run concurrently.
360
+ */
361
+ this.concurrency = null;
362
+ /**
363
+ * The maximum number of concurrent tasks to run. Defaults to Infinity.
364
+ */
365
+ this.threshold = Infinity;
366
+ this.warmupTime = 100;
367
+ this.warmupIterations = 5;
368
+ this.time = 500;
369
+ this.iterations = 10;
370
+ this.now = B;
371
+ this.now = (e = t.now) != null ? e : this.now, this.warmupTime = (r = t.warmupTime) != null ? r : this.warmupTime, this.warmupIterations = (i = t.warmupIterations) != null ? i : this.warmupIterations, this.time = (c = t.time) != null ? c : this.time, this.iterations = (h = t.iterations) != null ? h : this.iterations, this.signal = t.signal, this.throws = (p = t.throws) != null ? p : !1, this.setup = (a = t.setup) != null ? a : () => {}, this.teardown = (l = t.teardown) != null ? l : () => {}, this.signal && this.signal.addEventListener("abort", () => {
372
+ this.dispatchEvent(o("abort"));
373
+ }, { once: !0 });
374
+ }
375
+ runTask(t) {
376
+ var e;
377
+ return (e = this.signal) != null && e.aborted ? t : t.run();
378
+ }
379
+ /**
380
+ * run the added tasks that were registered using the
381
+ * {@link add} method.
382
+ * Note: This method does not do any warmup. Call {@link warmup} for that.
383
+ */
384
+ async run() {
385
+ if (this.concurrency === "bench") return this.runConcurrently(this.threshold, this.concurrency);
386
+ this.dispatchEvent(o("start"));
387
+ let t = [];
388
+ for (let e of [...this._tasks.values()]) t.push(await this.runTask(e));
389
+ return this.dispatchEvent(o("complete")), t;
390
+ }
391
+ /**
392
+ * See Bench.{@link concurrency}
393
+ */
394
+ async runConcurrently(t = Infinity, e = "bench") {
395
+ if (this.threshold = t, this.concurrency = e, e === "task") return this.run();
396
+ this.dispatchEvent(o("start"));
397
+ let r = y(t), i = [];
398
+ for (let h of [...this._tasks.values()]) i.push(r(() => this.runTask(h)));
399
+ let c = await Promise.all(i);
400
+ return this.dispatchEvent(o("complete")), c;
401
+ }
402
+ /**
403
+ * warmup the benchmark tasks.
404
+ * This is not run by default by the {@link run} method.
405
+ */
406
+ async warmup() {
407
+ if (this.concurrency === "bench") {
408
+ await this.warmupConcurrently(this.threshold, this.concurrency);
409
+ return;
410
+ }
411
+ this.dispatchEvent(o("warmup"));
412
+ for (let [, t] of this._tasks) await t.warmup();
413
+ }
414
+ /**
415
+ * warmup the benchmark tasks concurrently.
416
+ * This is not run by default by the {@link runConcurrently} method.
417
+ */
418
+ async warmupConcurrently(t = Infinity, e = "bench") {
419
+ if (this.threshold = t, this.concurrency = e, e === "task") {
420
+ await this.warmup();
421
+ return;
422
+ }
423
+ this.dispatchEvent(o("warmup"));
424
+ let r = y(t), i = [];
425
+ for (let [, c] of this._tasks) i.push(r(() => c.warmup()));
426
+ await Promise.all(i);
427
+ }
428
+ /**
429
+ * reset each task and remove its result
430
+ */
431
+ reset() {
432
+ this.dispatchEvent(o("reset")), this._tasks.forEach((t) => {
433
+ t.reset();
434
+ });
435
+ }
436
+ /**
437
+ * add a benchmark task to the task map
438
+ */
439
+ add(t, e, r = {}) {
440
+ let i = new b(this, t, e, r);
441
+ return this._tasks.set(t, i), this.dispatchEvent(o("add", i)), this;
442
+ }
443
+ /**
444
+ * add a benchmark todo to the todo map
445
+ */
446
+ todo(t, e = () => {}, r = {}) {
447
+ let i = new b(this, t, e, r);
448
+ return this._todos.set(t, i), this.dispatchEvent(o("todo", i)), this;
449
+ }
450
+ /**
451
+ * remove a benchmark task from the task map
452
+ */
453
+ remove(t) {
454
+ let e = this.getTask(t);
455
+ return e && (this.dispatchEvent(o("remove", e)), this._tasks.delete(t)), this;
456
+ }
457
+ addEventListener(t, e, r) {
458
+ super.addEventListener(t, e, r);
459
+ }
460
+ removeEventListener(t, e, r) {
461
+ super.removeEventListener(t, e, r);
462
+ }
463
+ /**
464
+ * table of the tasks results
465
+ */
466
+ table(t) {
467
+ return this.tasks.map((e) => {
468
+ if (e.result) {
469
+ if (e.result.error) throw e.result.error;
470
+ return (t == null ? void 0 : t(e)) || {
471
+ "Task Name": e.name,
472
+ "ops/sec": e.result.error ? "NaN" : parseInt(e.result.hz.toString(), 10).toLocaleString(),
473
+ "Average Time (ns)": e.result.error ? "NaN" : e.result.mean * 1e3 * 1e3,
474
+ Margin: e.result.error ? "NaN" : `\xB1${e.result.rme.toFixed(2)}%`,
475
+ Samples: e.result.error ? "NaN" : e.result.samples.length
476
+ };
477
+ }
478
+ return null;
479
+ });
480
+ }
481
+ /**
482
+ * (getter) tasks results as an array
483
+ */
484
+ get results() {
485
+ return [...this._tasks.values()].map((t) => t.result);
486
+ }
487
+ /**
488
+ * (getter) tasks as an array
489
+ */
490
+ get tasks() {
491
+ return [...this._tasks.values()];
492
+ }
493
+ get todos() {
494
+ return [...this._todos.values()];
495
+ }
496
+ /**
497
+ * get a task based on the task name
498
+ */
499
+ getTask(t) {
500
+ return this._tasks.get(t);
501
+ }
502
+ };
503
+ //#endregion
504
+ export { x as Bench, b as Task, U as hrtimeNow, B as now };
505
+
506
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RpbnliZW5jaEAyLjkuMC9ub2RlX21vZHVsZXMvdGlueWJlbmNoL2Rpc3QvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICQgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgQyA9IChzKSA9PiB7XG4gIHRocm93IFR5cGVFcnJvcihzKTtcbn07XG52YXIgRCA9IChzLCBuLCB0KSA9PiBuIGluIHMgPyAkKHMsIG4sIHsgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMCwgdmFsdWU6IHQgfSkgOiBzW25dID0gdDtcbnZhciBPID0gKHMsIG4sIHQpID0+IEQocywgdHlwZW9mIG4gIT0gXCJzeW1ib2xcIiA/IG4gKyBcIlwiIDogbiwgdCksIHEgPSAocywgbiwgdCkgPT4gbi5oYXMocykgfHwgQyhcIkNhbm5vdCBcIiArIHQpO1xudmFyIGQgPSAocywgbiwgdCkgPT4gKHEocywgbiwgXCJyZWFkIGZyb20gcHJpdmF0ZSBmaWVsZFwiKSwgdCA/IHQuY2FsbChzKSA6IG4uZ2V0KHMpKSwgayA9IChzLCBuLCB0KSA9PiBuLmhhcyhzKSA/IEMoXCJDYW5ub3QgYWRkIHRoZSBzYW1lIHByaXZhdGUgbWVtYmVyIG1vcmUgdGhhbiBvbmNlXCIpIDogbiBpbnN0YW5jZW9mIFdlYWtTZXQgPyBuLmFkZChzKSA6IG4uc2V0KHMsIHQpLCBmID0gKHMsIG4sIHQsIGUpID0+IChxKHMsIG4sIFwid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZFwiKSwgZSA/IGUuY2FsbChzLCB0KSA6IG4uc2V0KHMsIHQpLCB0KTtcbnZhciBGID0gKHMsIG4sIHQsIGUpID0+ICh7XG4gIHNldCBfKHIpIHtcbiAgICBmKHMsIG4sIHIsIHQpO1xuICB9LFxuICBnZXQgXygpIHtcbiAgICByZXR1cm4gZChzLCBuLCBlKTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy8ucG5wbS95b2N0by1xdWV1ZUAxLjAuMC9ub2RlX21vZHVsZXMveW9jdG8tcXVldWUvaW5kZXguanNcbnZhciBNID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihuKSB7XG4gICAgTyh0aGlzLCBcInZhbHVlXCIpO1xuICAgIE8odGhpcywgXCJuZXh0XCIpO1xuICAgIHRoaXMudmFsdWUgPSBuO1xuICB9XG59LCBtLCB3LCBFLCBnID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBrKHRoaXMsIG0pO1xuICAgIGsodGhpcywgdyk7XG4gICAgayh0aGlzLCBFKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cbiAgZW5xdWV1ZShuKSB7XG4gICAgbGV0IHQgPSBuZXcgTShuKTtcbiAgICBkKHRoaXMsIG0pID8gKGQodGhpcywgdykubmV4dCA9IHQsIGYodGhpcywgdywgdCkpIDogKGYodGhpcywgbSwgdCksIGYodGhpcywgdywgdCkpLCBGKHRoaXMsIEUpLl8rKztcbiAgfVxuICBkZXF1ZXVlKCkge1xuICAgIGxldCBuID0gZCh0aGlzLCBtKTtcbiAgICBpZiAobilcbiAgICAgIHJldHVybiBmKHRoaXMsIG0sIGQodGhpcywgbSkubmV4dCksIEYodGhpcywgRSkuXy0tLCBuLnZhbHVlO1xuICB9XG4gIGNsZWFyKCkge1xuICAgIGYodGhpcywgbSwgdm9pZCAwKSwgZih0aGlzLCB3LCB2b2lkIDApLCBmKHRoaXMsIEUsIDApO1xuICB9XG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiBkKHRoaXMsIEUpO1xuICB9XG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICBsZXQgbiA9IGQodGhpcywgbSk7XG4gICAgZm9yICg7IG47IClcbiAgICAgIHlpZWxkIG4udmFsdWUsIG4gPSBuLm5leHQ7XG4gIH1cbn07XG5tID0gbmV3IFdlYWtNYXAoKSwgdyA9IG5ldyBXZWFrTWFwKCksIEUgPSBuZXcgV2Vha01hcCgpO1xuXG4vLyBub2RlX21vZHVsZXMvLnBucG0vcC1saW1pdEA0LjAuMC9ub2RlX21vZHVsZXMvcC1saW1pdC9pbmRleC5qc1xuZnVuY3Rpb24geShzKSB7XG4gIGlmICghKChOdW1iZXIuaXNJbnRlZ2VyKHMpIHx8IHMgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgJiYgcyA+IDApKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBgY29uY3VycmVuY3lgIHRvIGJlIGEgbnVtYmVyIGZyb20gMSBhbmQgdXBcIik7XG4gIGxldCBuID0gbmV3IGcoKSwgdCA9IDAsIGUgPSAoKSA9PiB7XG4gICAgdC0tLCBuLnNpemUgPiAwICYmIG4uZGVxdWV1ZSgpKCk7XG4gIH0sIHIgPSBhc3luYyAoaCwgcCwgYSkgPT4ge1xuICAgIHQrKztcbiAgICBsZXQgbCA9IChhc3luYyAoKSA9PiBoKC4uLmEpKSgpO1xuICAgIHAobCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGw7XG4gICAgfSBjYXRjaCAoVCkge1xuICAgIH1cbiAgICBlKCk7XG4gIH0sIGkgPSAoaCwgcCwgYSkgPT4ge1xuICAgIG4uZW5xdWV1ZShyLmJpbmQodm9pZCAwLCBoLCBwLCBhKSksIChhc3luYyAoKSA9PiAoYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCksIHQgPCBzICYmIG4uc2l6ZSA+IDAgJiYgbi5kZXF1ZXVlKCkoKSkpKCk7XG4gIH0sIGMgPSAoaCwgLi4ucCkgPT4gbmV3IFByb21pc2UoKGEpID0+IHtcbiAgICBpKGgsIGEsIHApO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGMsIHtcbiAgICBhY3RpdmVDb3VudDoge1xuICAgICAgZ2V0OiAoKSA9PiB0XG4gICAgfSxcbiAgICBwZW5kaW5nQ291bnQ6IHtcbiAgICAgIGdldDogKCkgPT4gbi5zaXplXG4gICAgfSxcbiAgICBjbGVhclF1ZXVlOiB7XG4gICAgICB2YWx1ZTogKCkgPT4ge1xuICAgICAgICBuLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgYztcbn1cblxuLy8gc3JjL2V2ZW50LnRzXG5mdW5jdGlvbiBvKHMsIG4gPSBudWxsKSB7XG4gIGxldCB0ID0gbmV3IEV2ZW50KHMpO1xuICByZXR1cm4gbiAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJ0YXNrXCIsIHtcbiAgICB2YWx1ZTogbixcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITEsXG4gICAgY29uZmlndXJhYmxlOiAhMVxuICB9KSwgdDtcbn1cblxuLy8gc3JjL2NvbnN0YW50cy50c1xudmFyIEcgPSB7XG4gIDE6IDEyLjcxLFxuICAyOiA0LjMwMyxcbiAgMzogMy4xODIsXG4gIDQ6IDIuNzc2LFxuICA1OiAyLjU3MSxcbiAgNjogMi40NDcsXG4gIDc6IDIuMzY1LFxuICA4OiAyLjMwNixcbiAgOTogMi4yNjIsXG4gIDEwOiAyLjIyOCxcbiAgMTE6IDIuMjAxLFxuICAxMjogMi4xNzksXG4gIDEzOiAyLjE2LFxuICAxNDogMi4xNDUsXG4gIDE1OiAyLjEzMSxcbiAgMTY6IDIuMTIsXG4gIDE3OiAyLjExLFxuICAxODogMi4xMDEsXG4gIDE5OiAyLjA5MyxcbiAgMjA6IDIuMDg2LFxuICAyMTogMi4wOCxcbiAgMjI6IDIuMDc0LFxuICAyMzogMi4wNjksXG4gIDI0OiAyLjA2NCxcbiAgMjU6IDIuMDYsXG4gIDI2OiAyLjA1NixcbiAgMjc6IDIuMDUyLFxuICAyODogMi4wNDgsXG4gIDI5OiAyLjA0NSxcbiAgMzA6IDIuMDQyLFxuICAzMTogMi4wMzk5LFxuICAzMjogMi4wMzc4LFxuICAzMzogMi4wMzU3LFxuICAzNDogMi4wMzM2LFxuICAzNTogMi4wMzE1LFxuICAzNjogMi4wMjk0LFxuICAzNzogMi4wMjczLFxuICAzODogMi4wMjUyLFxuICAzOTogMi4wMjMxLFxuICA0MDogMi4wMjEsXG4gIDQxOiAyLjAxOTgsXG4gIDQyOiAyLjAxODYsXG4gIDQzOiAyLjAxNzQsXG4gIDQ0OiAyLjAxNjIsXG4gIDQ1OiAyLjAxNSxcbiAgNDY6IDIuMDEzOCxcbiAgNDc6IDIuMDEyNixcbiAgNDg6IDIuMDExNCxcbiAgNDk6IDIuMDEwMixcbiAgNTA6IDIuMDA5LFxuICA1MTogMi4wMDgxLFxuICA1MjogMi4wMDcyLFxuICA1MzogMi4wMDYzLFxuICA1NDogMi4wMDU0LFxuICA1NTogMi4wMDQ1LFxuICA1NjogMi4wMDM2LFxuICA1NzogMi4wMDI3LFxuICA1ODogMi4wMDE4LFxuICA1OTogMi4wMDA5LFxuICA2MDogMixcbiAgNjE6IDEuOTk5NSxcbiAgNjI6IDEuOTk5LFxuICA2MzogMS45OTg1LFxuICA2NDogMS45OTgsXG4gIDY1OiAxLjk5NzUsXG4gIDY2OiAxLjk5NyxcbiAgNjc6IDEuOTk2NSxcbiAgNjg6IDEuOTk2LFxuICA2OTogMS45OTU1LFxuICA3MDogMS45OTUsXG4gIDcxOiAxLjk5NDUsXG4gIDcyOiAxLjk5NCxcbiAgNzM6IDEuOTkzNSxcbiAgNzQ6IDEuOTkzLFxuICA3NTogMS45OTI1LFxuICA3NjogMS45OTIsXG4gIDc3OiAxLjk5MTUsXG4gIDc4OiAxLjk5MSxcbiAgNzk6IDEuOTkwNSxcbiAgODA6IDEuOTksXG4gIDgxOiAxLjk4OTcsXG4gIDgyOiAxLjk4OTQsXG4gIDgzOiAxLjk4OTEsXG4gIDg0OiAxLjk4ODgsXG4gIDg1OiAxLjk4ODUsXG4gIDg2OiAxLjk4ODIsXG4gIDg3OiAxLjk4NzksXG4gIDg4OiAxLjk4NzYsXG4gIDg5OiAxLjk4NzMsXG4gIDkwOiAxLjk4NyxcbiAgOTE6IDEuOTg2NyxcbiAgOTI6IDEuOTg2NCxcbiAgOTM6IDEuOTg2MSxcbiAgOTQ6IDEuOTg1OCxcbiAgOTU6IDEuOTg1NSxcbiAgOTY6IDEuOTg1MixcbiAgOTc6IDEuOTg0OSxcbiAgOTg6IDEuOTg0NixcbiAgOTk6IDEuOTg0MyxcbiAgMTAwOiAxLjk4NCxcbiAgMTAxOiAxLjk4MzgsXG4gIDEwMjogMS45ODM2LFxuICAxMDM6IDEuOTgzNCxcbiAgMTA0OiAxLjk4MzIsXG4gIDEwNTogMS45ODMsXG4gIDEwNjogMS45ODI4LFxuICAxMDc6IDEuOTgyNixcbiAgMTA4OiAxLjk4MjQsXG4gIDEwOTogMS45ODIyLFxuICAxMTA6IDEuOTgyLFxuICAxMTE6IDEuOTgxOCxcbiAgMTEyOiAxLjk4MTYsXG4gIDExMzogMS45ODE0LFxuICAxMTQ6IDEuOTgxMixcbiAgMTE1OiAxLjk4MTksXG4gIDExNjogMS45ODA4LFxuICAxMTc6IDEuOTgwNixcbiAgMTE4OiAxLjk4MDQsXG4gIDExOTogMS45ODAyLFxuICAxMjA6IDEuOTgsXG4gIGluZmluaXR5OiAxLjk2XG59LCBOID0gRztcblxuLy8gc3JjL3V0aWxzLnRzXG52YXIgSiA9IChzKSA9PiBzIC8gMWU2LCBVID0gKCkgPT4gSihOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkpKSwgQiA9ICgpID0+IHBlcmZvcm1hbmNlLm5vdygpO1xuZnVuY3Rpb24gVyhzKSB7XG4gIHJldHVybiBzICE9PSBudWxsICYmIHR5cGVvZiBzID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHMudGhlbiA9PSBcImZ1bmN0aW9uXCI7XG59XG52YXIgUyA9IChzLCBuKSA9PiBzLnJlZHVjZSgoZSwgcikgPT4gZSArIChyIC0gbikgKiogMiwgMCkgLyAocy5sZW5ndGggLSAxKSB8fCAwLCBYID0gKGFzeW5jICgpID0+IHtcbn0pLmNvbnN0cnVjdG9yLCBaID0gKHMpID0+IHMuY29uc3RydWN0b3IgPT09IFgsIHogPSBhc3luYyAocykgPT4ge1xuICBpZiAoWihzLmZuKSlcbiAgICByZXR1cm4gITA7XG4gIHRyeSB7XG4gICAgaWYgKHMub3B0cy5iZWZvcmVFYWNoICE9IG51bGwpXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzLm9wdHMuYmVmb3JlRWFjaC5jYWxsKHMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIGxldCBuID0gcy5mbigpLCB0ID0gVyhuKTtcbiAgICBpZiAodClcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgaWYgKHMub3B0cy5hZnRlckVhY2ggIT0gbnVsbClcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHMub3B0cy5hZnRlckVhY2guY2FsbChzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICByZXR1cm4gdDtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiAhMTtcbiAgfVxufTtcblxuLy8gc3JjL3Rhc2sudHNcbnZhciBiID0gY2xhc3MgZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHQsIGUsIHIsIGkgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgLypcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0YXNrXG4gICAgICogZnVuY3Rpb24gaGFzIGJlZW4gZXhlY3V0ZWRcbiAgICAgKi9cbiAgICB0aGlzLnJ1bnMgPSAwO1xuICAgIHRoaXMuYmVuY2ggPSB0LCB0aGlzLm5hbWUgPSBlLCB0aGlzLmZuID0gciwgdGhpcy5vcHRzID0gaTtcbiAgfVxuICBhc3luYyBsb29wKHQsIGUpIHtcbiAgICB2YXIgVDtcbiAgICBsZXQgciA9IHRoaXMuYmVuY2guY29uY3VycmVuY3kgPT09IFwidGFza1wiLCB7IHRocmVzaG9sZDogaSB9ID0gdGhpcy5iZW5jaCwgYyA9IDAsIGggPSBbXTtcbiAgICBpZiAodGhpcy5vcHRzLmJlZm9yZUFsbCAhPSBudWxsKVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5vcHRzLmJlZm9yZUFsbC5jYWxsKHRoaXMpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICByZXR1cm4geyBlcnJvcjogdSB9O1xuICAgICAgfVxuICAgIGxldCBwID0gYXdhaXQgeih0aGlzKSwgYSA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMub3B0cy5iZWZvcmVFYWNoICE9IG51bGwgJiYgYXdhaXQgdGhpcy5vcHRzLmJlZm9yZUVhY2guY2FsbCh0aGlzKTtcbiAgICAgIGxldCB1ID0gMDtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIGxldCB2ID0gdGhpcy5iZW5jaC5ub3coKTtcbiAgICAgICAgYXdhaXQgdGhpcy5mbi5jYWxsKHRoaXMpLCB1ID0gdGhpcy5iZW5jaC5ub3coKSAtIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgdiA9IHRoaXMuYmVuY2gubm93KCk7XG4gICAgICAgIHRoaXMuZm4uY2FsbCh0aGlzKSwgdSA9IHRoaXMuYmVuY2gubm93KCkgLSB2O1xuICAgICAgfVxuICAgICAgaC5wdXNoKHUpLCBjICs9IHUsIHRoaXMub3B0cy5hZnRlckVhY2ggIT0gbnVsbCAmJiBhd2FpdCB0aGlzLm9wdHMuYWZ0ZXJFYWNoLmNhbGwodGhpcyk7XG4gICAgfSwgbCA9IHkoaSk7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB1ID0gW107XG4gICAgICBmb3IgKDsgKGMgPCB0IHx8IGgubGVuZ3RoICsgbC5hY3RpdmVDb3VudCArIGwucGVuZGluZ0NvdW50IDwgZSkgJiYgISgoVCA9IHRoaXMuYmVuY2guc2lnbmFsKSAhPSBudWxsICYmIFQuYWJvcnRlZCk7IClcbiAgICAgICAgciA/IHUucHVzaChsKGEpKSA6IGF3YWl0IGEoKTtcbiAgICAgIHUubGVuZ3RoICYmIGF3YWl0IFByb21pc2UuYWxsKHUpO1xuICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgIHJldHVybiB7IGVycm9yOiB1IH07XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMuYWZ0ZXJBbGwgIT0gbnVsbClcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0cy5hZnRlckFsbC5jYWxsKHRoaXMpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICByZXR1cm4geyBlcnJvcjogdSB9O1xuICAgICAgfVxuICAgIHJldHVybiB7IHNhbXBsZXM6IGggfTtcbiAgfVxuICAvKipcbiAgICogcnVuIHRoZSBjdXJyZW50IHRhc2sgYW5kIHdyaXRlIHRoZSByZXN1bHRzIGluIGBUYXNrLnJlc3VsdGAgb2JqZWN0XG4gICAqL1xuICBhc3luYyBydW4oKSB7XG4gICAgdmFyIHIsIGk7XG4gICAgaWYgKChyID0gdGhpcy5yZXN1bHQpICE9IG51bGwgJiYgci5lcnJvcilcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwic3RhcnRcIiwgdGhpcykpLCBhd2FpdCB0aGlzLmJlbmNoLnNldHVwKHRoaXMsIFwicnVuXCIpO1xuICAgIGxldCB7IHNhbXBsZXM6IHQsIGVycm9yOiBlIH0gPSBhd2FpdCB0aGlzLmxvb3AodGhpcy5iZW5jaC50aW1lLCB0aGlzLmJlbmNoLml0ZXJhdGlvbnMpO1xuICAgIGlmICh0aGlzLmJlbmNoLnRlYXJkb3duKHRoaXMsIFwicnVuXCIpLCB0KSB7XG4gICAgICBsZXQgYyA9IHQucmVkdWNlKChMLCBBKSA9PiBMICsgQSwgMCk7XG4gICAgICB0aGlzLnJ1bnMgPSB0Lmxlbmd0aCwgdC5zb3J0KChMLCBBKSA9PiBMIC0gQSk7XG4gICAgICBsZXQgaCA9IGMgLyB0aGlzLnJ1bnMsIHAgPSAxZTMgLyBoLCBhID0gdC5sZW5ndGgsIGwgPSBhIC0gMSwgVCA9IHRbMF0sIHUgPSB0W2xdLCB2ID0gYyAvIHQubGVuZ3RoIHx8IDAsIFAgPSBTKHQsIHYpLCBSID0gTWF0aC5zcXJ0KFApLCBJID0gUiAvIE1hdGguc3FydChhKSwgXyA9IE5bU3RyaW5nKE1hdGgucm91bmQobCkgfHwgMSldIHx8IE4uaW5maW5pdHksIEsgPSBJICogXywgaiA9IEsgLyB2ICogMTAwLCBIID0gdFtNYXRoLmNlaWwoYSAqIDAuNzUpIC0gMV0sIFYgPSB0W01hdGguY2VpbChhICogMC45OSkgLSAxXSwgUSA9IHRbTWF0aC5jZWlsKGEgKiAwLjk5NSkgLSAxXSwgWSA9IHRbTWF0aC5jZWlsKGEgKiAwLjk5OSkgLSAxXTtcbiAgICAgIGlmICgoaSA9IHRoaXMuYmVuY2guc2lnbmFsKSAhPSBudWxsICYmIGkuYWJvcnRlZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB0aGlzLnNldFJlc3VsdCh7XG4gICAgICAgIHRvdGFsVGltZTogYyxcbiAgICAgICAgbWluOiBULFxuICAgICAgICBtYXg6IHUsXG4gICAgICAgIGh6OiBwLFxuICAgICAgICBwZXJpb2Q6IGgsXG4gICAgICAgIHNhbXBsZXM6IHQsXG4gICAgICAgIG1lYW46IHYsXG4gICAgICAgIHZhcmlhbmNlOiBQLFxuICAgICAgICBzZDogUixcbiAgICAgICAgc2VtOiBJLFxuICAgICAgICBkZjogbCxcbiAgICAgICAgY3JpdGljYWw6IF8sXG4gICAgICAgIG1vZTogSyxcbiAgICAgICAgcm1lOiBqLFxuICAgICAgICBwNzU6IEgsXG4gICAgICAgIHA5OTogVixcbiAgICAgICAgcDk5NTogUSxcbiAgICAgICAgcDk5OTogWVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlKSB7XG4gICAgICBpZiAodGhpcy5zZXRSZXN1bHQoeyBlcnJvcjogZSB9KSwgdGhpcy5iZW5jaC50aHJvd3MpXG4gICAgICAgIHRocm93IGU7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImVycm9yXCIsIHRoaXMpKSwgdGhpcy5iZW5jaC5kaXNwYXRjaEV2ZW50KG8oXCJlcnJvclwiLCB0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImN5Y2xlXCIsIHRoaXMpKSwgdGhpcy5iZW5jaC5kaXNwYXRjaEV2ZW50KG8oXCJjeWNsZVwiLCB0aGlzKSksIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwiY29tcGxldGVcIiwgdGhpcykpLCB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiB3YXJtdXAgdGhlIGN1cnJlbnQgdGFza1xuICAgKi9cbiAgYXN5bmMgd2FybXVwKCkge1xuICAgIHZhciBlO1xuICAgIGlmICgoZSA9IHRoaXMucmVzdWx0KSAhPSBudWxsICYmIGUuZXJyb3IpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG8oXCJ3YXJtdXBcIiwgdGhpcykpLCBhd2FpdCB0aGlzLmJlbmNoLnNldHVwKHRoaXMsIFwid2FybXVwXCIpO1xuICAgIGxldCB7IGVycm9yOiB0IH0gPSBhd2FpdCB0aGlzLmxvb3AodGhpcy5iZW5jaC53YXJtdXBUaW1lLCB0aGlzLmJlbmNoLndhcm11cEl0ZXJhdGlvbnMpO1xuICAgIGlmICh0aGlzLmJlbmNoLnRlYXJkb3duKHRoaXMsIFwid2FybXVwXCIpLCB0ICYmICh0aGlzLnNldFJlc3VsdCh7IGVycm9yOiB0IH0pLCB0aGlzLmJlbmNoLnRocm93cykpXG4gICAgICB0aHJvdyB0O1xuICB9XG4gIGFkZEV2ZW50TGlzdGVuZXIodCwgZSwgcikge1xuICAgIHN1cGVyLmFkZEV2ZW50TGlzdGVuZXIodCwgZSwgcik7XG4gIH1cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlLCByKSB7XG4gICAgc3VwZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlLCByKTtcbiAgfVxuICAvKipcbiAgICogY2hhbmdlIHRoZSByZXN1bHQgb2JqZWN0IHZhbHVlc1xuICAgKi9cbiAgc2V0UmVzdWx0KHQpIHtcbiAgICB0aGlzLnJlc3VsdCA9IHsgLi4udGhpcy5yZXN1bHQsIC4uLnQgfSwgT2JqZWN0LmZyZWV6ZSh0aGlzLnJlc3VsdCk7XG4gIH1cbiAgLyoqXG4gICAqIHJlc2V0IHRoZSB0YXNrIHRvIG1ha2UgdGhlIGBUYXNrLnJ1bnNgIGEgemVyby12YWx1ZSBhbmQgcmVtb3ZlIHRoZSBgVGFzay5yZXN1bHRgXG4gICAqIG9iamVjdFxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG8oXCJyZXNldFwiLCB0aGlzKSksIHRoaXMucnVucyA9IDAsIHRoaXMucmVzdWx0ID0gdm9pZCAwO1xuICB9XG59O1xuXG4vLyBzcmMvYmVuY2gudHNcbnZhciB4ID0gY2xhc3MgZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHQgPSB7fSkge1xuICAgIHZhciBlLCByLCBpLCBjLCBoLCBwLCBhLCBsO1xuICAgIHN1cGVyKCk7XG4gICAgLypcbiAgICAgKiBAcHJpdmF0ZSB0aGUgdGFzayBtYXBcbiAgICAgKi9cbiAgICB0aGlzLl90YXNrcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdGhpcy5fdG9kb3MgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgIC8qKlxuICAgICogRXhlY3V0ZXMgdGFza3MgY29uY3VycmVudGx5IGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgY29uY3VycmVuY3kgbW9kZS5cbiAgICAqXG4gICAgKiAtIFdoZW4gYG1vZGVgIGlzIHNldCB0byBgbnVsbGAgKGRlZmF1bHQpLCBjb25jdXJyZW5jeSBpcyBkaXNhYmxlZC5cbiAgICAqIC0gV2hlbiBgbW9kZWAgaXMgc2V0IHRvICd0YXNrJywgZWFjaCB0YXNrJ3MgaXRlcmF0aW9ucyAoY2FsbHMgb2YgYSB0YXNrIGZ1bmN0aW9uKSBydW4gY29uY3VycmVudGx5LlxuICAgICogLSBXaGVuIGBtb2RlYCBpcyBzZXQgdG8gJ2JlbmNoJywgZGlmZmVyZW50IHRhc2tzIHdpdGhpbiB0aGUgYmVuY2ggcnVuIGNvbmN1cnJlbnRseS5cbiAgICAqL1xuICAgIHRoaXMuY29uY3VycmVuY3kgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHRhc2tzIHRvIHJ1bi4gRGVmYXVsdHMgdG8gSW5maW5pdHkuXG4gICAgICovXG4gICAgdGhpcy50aHJlc2hvbGQgPSAxIC8gMDtcbiAgICB0aGlzLndhcm11cFRpbWUgPSAxMDA7XG4gICAgdGhpcy53YXJtdXBJdGVyYXRpb25zID0gNTtcbiAgICB0aGlzLnRpbWUgPSA1MDA7XG4gICAgdGhpcy5pdGVyYXRpb25zID0gMTA7XG4gICAgdGhpcy5ub3cgPSBCO1xuICAgIHRoaXMubm93ID0gKGUgPSB0Lm5vdykgIT0gbnVsbCA/IGUgOiB0aGlzLm5vdywgdGhpcy53YXJtdXBUaW1lID0gKHIgPSB0Lndhcm11cFRpbWUpICE9IG51bGwgPyByIDogdGhpcy53YXJtdXBUaW1lLCB0aGlzLndhcm11cEl0ZXJhdGlvbnMgPSAoaSA9IHQud2FybXVwSXRlcmF0aW9ucykgIT0gbnVsbCA/IGkgOiB0aGlzLndhcm11cEl0ZXJhdGlvbnMsIHRoaXMudGltZSA9IChjID0gdC50aW1lKSAhPSBudWxsID8gYyA6IHRoaXMudGltZSwgdGhpcy5pdGVyYXRpb25zID0gKGggPSB0Lml0ZXJhdGlvbnMpICE9IG51bGwgPyBoIDogdGhpcy5pdGVyYXRpb25zLCB0aGlzLnNpZ25hbCA9IHQuc2lnbmFsLCB0aGlzLnRocm93cyA9IChwID0gdC50aHJvd3MpICE9IG51bGwgPyBwIDogITEsIHRoaXMuc2V0dXAgPSAoYSA9IHQuc2V0dXApICE9IG51bGwgPyBhIDogKCkgPT4ge1xuICAgIH0sIHRoaXMudGVhcmRvd24gPSAobCA9IHQudGVhcmRvd24pICE9IG51bGwgPyBsIDogKCkgPT4ge1xuICAgIH0sIHRoaXMuc2lnbmFsICYmIHRoaXMuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwiYWJvcnRcIikpO1xuICAgICAgfSxcbiAgICAgIHsgb25jZTogITAgfVxuICAgICk7XG4gIH1cbiAgcnVuVGFzayh0KSB7XG4gICAgdmFyIGU7XG4gICAgcmV0dXJuIChlID0gdGhpcy5zaWduYWwpICE9IG51bGwgJiYgZS5hYm9ydGVkID8gdCA6IHQucnVuKCk7XG4gIH1cbiAgLyoqXG4gICAqIHJ1biB0aGUgYWRkZWQgdGFza3MgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlXG4gICAqIHtAbGluayBhZGR9IG1ldGhvZC5cbiAgICogTm90ZTogVGhpcyBtZXRob2QgZG9lcyBub3QgZG8gYW55IHdhcm11cC4gQ2FsbCB7QGxpbmsgd2FybXVwfSBmb3IgdGhhdC5cbiAgICovXG4gIGFzeW5jIHJ1bigpIHtcbiAgICBpZiAodGhpcy5jb25jdXJyZW5jeSA9PT0gXCJiZW5jaFwiKVxuICAgICAgcmV0dXJuIHRoaXMucnVuQ29uY3VycmVudGx5KHRoaXMudGhyZXNob2xkLCB0aGlzLmNvbmN1cnJlbmN5KTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcInN0YXJ0XCIpKTtcbiAgICBsZXQgdCA9IFtdO1xuICAgIGZvciAobGV0IGUgb2YgWy4uLnRoaXMuX3Rhc2tzLnZhbHVlcygpXSlcbiAgICAgIHQucHVzaChhd2FpdCB0aGlzLnJ1blRhc2soZSkpO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImNvbXBsZXRlXCIpKSwgdDtcbiAgfVxuICAvKipcbiAgICogU2VlIEJlbmNoLntAbGluayBjb25jdXJyZW5jeX1cbiAgICovXG4gIGFzeW5jIHJ1bkNvbmN1cnJlbnRseSh0ID0gMSAvIDAsIGUgPSBcImJlbmNoXCIpIHtcbiAgICBpZiAodGhpcy50aHJlc2hvbGQgPSB0LCB0aGlzLmNvbmN1cnJlbmN5ID0gZSwgZSA9PT0gXCJ0YXNrXCIpXG4gICAgICByZXR1cm4gdGhpcy5ydW4oKTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcInN0YXJ0XCIpKTtcbiAgICBsZXQgciA9IHkodCksIGkgPSBbXTtcbiAgICBmb3IgKGxldCBoIG9mIFsuLi50aGlzLl90YXNrcy52YWx1ZXMoKV0pXG4gICAgICBpLnB1c2gocigoKSA9PiB0aGlzLnJ1blRhc2soaCkpKTtcbiAgICBsZXQgYyA9IGF3YWl0IFByb21pc2UuYWxsKGkpO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImNvbXBsZXRlXCIpKSwgYztcbiAgfVxuICAvKipcbiAgICogd2FybXVwIHRoZSBiZW5jaG1hcmsgdGFza3MuXG4gICAqIFRoaXMgaXMgbm90IHJ1biBieSBkZWZhdWx0IGJ5IHRoZSB7QGxpbmsgcnVufSBtZXRob2QuXG4gICAqL1xuICBhc3luYyB3YXJtdXAoKSB7XG4gICAgaWYgKHRoaXMuY29uY3VycmVuY3kgPT09IFwiYmVuY2hcIikge1xuICAgICAgYXdhaXQgdGhpcy53YXJtdXBDb25jdXJyZW50bHkodGhpcy50aHJlc2hvbGQsIHRoaXMuY29uY3VycmVuY3kpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcIndhcm11cFwiKSk7XG4gICAgZm9yIChsZXQgWywgdF0gb2YgdGhpcy5fdGFza3MpXG4gICAgICBhd2FpdCB0Lndhcm11cCgpO1xuICB9XG4gIC8qKlxuICAgKiB3YXJtdXAgdGhlIGJlbmNobWFyayB0YXNrcyBjb25jdXJyZW50bHkuXG4gICAqIFRoaXMgaXMgbm90IHJ1biBieSBkZWZhdWx0IGJ5IHRoZSB7QGxpbmsgcnVuQ29uY3VycmVudGx5fSBtZXRob2QuXG4gICAqL1xuICBhc3luYyB3YXJtdXBDb25jdXJyZW50bHkodCA9IDEgLyAwLCBlID0gXCJiZW5jaFwiKSB7XG4gICAgaWYgKHRoaXMudGhyZXNob2xkID0gdCwgdGhpcy5jb25jdXJyZW5jeSA9IGUsIGUgPT09IFwidGFza1wiKSB7XG4gICAgICBhd2FpdCB0aGlzLndhcm11cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcIndhcm11cFwiKSk7XG4gICAgbGV0IHIgPSB5KHQpLCBpID0gW107XG4gICAgZm9yIChsZXQgWywgY10gb2YgdGhpcy5fdGFza3MpXG4gICAgICBpLnB1c2gocigoKSA9PiBjLndhcm11cCgpKSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaSk7XG4gIH1cbiAgLyoqXG4gICAqIHJlc2V0IGVhY2ggdGFzayBhbmQgcmVtb3ZlIGl0cyByZXN1bHRcbiAgICovXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwicmVzZXRcIikpLCB0aGlzLl90YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICB0LnJlc2V0KCk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGFkZCBhIGJlbmNobWFyayB0YXNrIHRvIHRoZSB0YXNrIG1hcFxuICAgKi9cbiAgYWRkKHQsIGUsIHIgPSB7fSkge1xuICAgIGxldCBpID0gbmV3IGIodGhpcywgdCwgZSwgcik7XG4gICAgcmV0dXJuIHRoaXMuX3Rhc2tzLnNldCh0LCBpKSwgdGhpcy5kaXNwYXRjaEV2ZW50KG8oXCJhZGRcIiwgaSkpLCB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBhZGQgYSBiZW5jaG1hcmsgdG9kbyB0byB0aGUgdG9kbyBtYXBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgdG9kbyh0LCBlID0gKCkgPT4ge1xuICB9LCByID0ge30pIHtcbiAgICBsZXQgaSA9IG5ldyBiKHRoaXMsIHQsIGUsIHIpO1xuICAgIHJldHVybiB0aGlzLl90b2Rvcy5zZXQodCwgaSksIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwidG9kb1wiLCBpKSksIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIHJlbW92ZSBhIGJlbmNobWFyayB0YXNrIGZyb20gdGhlIHRhc2sgbWFwXG4gICAqL1xuICByZW1vdmUodCkge1xuICAgIGxldCBlID0gdGhpcy5nZXRUYXNrKHQpO1xuICAgIHJldHVybiBlICYmICh0aGlzLmRpc3BhdGNoRXZlbnQobyhcInJlbW92ZVwiLCBlKSksIHRoaXMuX3Rhc2tzLmRlbGV0ZSh0KSksIHRoaXM7XG4gIH1cbiAgYWRkRXZlbnRMaXN0ZW5lcih0LCBlLCByKSB7XG4gICAgc3VwZXIuYWRkRXZlbnRMaXN0ZW5lcih0LCBlLCByKTtcbiAgfVxuICByZW1vdmVFdmVudExpc3RlbmVyKHQsIGUsIHIpIHtcbiAgICBzdXBlci5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUsIHIpO1xuICB9XG4gIC8qKlxuICAgKiB0YWJsZSBvZiB0aGUgdGFza3MgcmVzdWx0c1xuICAgKi9cbiAgdGFibGUodCkge1xuICAgIHJldHVybiB0aGlzLnRhc2tzLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKGUucmVzdWx0KSB7XG4gICAgICAgIGlmIChlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgICB0aHJvdyBlLnJlc3VsdC5lcnJvcjtcbiAgICAgICAgcmV0dXJuICh0ID09IG51bGwgPyB2b2lkIDAgOiB0KGUpKSB8fCB7XG4gICAgICAgICAgXCJUYXNrIE5hbWVcIjogZS5uYW1lLFxuICAgICAgICAgIFwib3BzL3NlY1wiOiBlLnJlc3VsdC5lcnJvciA/IFwiTmFOXCIgOiBwYXJzZUludChlLnJlc3VsdC5oei50b1N0cmluZygpLCAxMCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICBcIkF2ZXJhZ2UgVGltZSAobnMpXCI6IGUucmVzdWx0LmVycm9yID8gXCJOYU5cIiA6IGUucmVzdWx0Lm1lYW4gKiAxZTMgKiAxZTMsXG4gICAgICAgICAgTWFyZ2luOiBlLnJlc3VsdC5lcnJvciA/IFwiTmFOXCIgOiBgXFx4QjEke2UucmVzdWx0LnJtZS50b0ZpeGVkKDIpfSVgLFxuICAgICAgICAgIFNhbXBsZXM6IGUucmVzdWx0LmVycm9yID8gXCJOYU5cIiA6IGUucmVzdWx0LnNhbXBsZXMubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogKGdldHRlcikgdGFza3MgcmVzdWx0cyBhcyBhbiBhcnJheVxuICAgKi9cbiAgZ2V0IHJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl90YXNrcy52YWx1ZXMoKV0ubWFwKCh0KSA9PiB0LnJlc3VsdCk7XG4gIH1cbiAgLyoqXG4gICAqIChnZXR0ZXIpIHRhc2tzIGFzIGFuIGFycmF5XG4gICAqL1xuICBnZXQgdGFza3MoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl90YXNrcy52YWx1ZXMoKV07XG4gIH1cbiAgZ2V0IHRvZG9zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fdG9kb3MudmFsdWVzKCldO1xuICB9XG4gIC8qKlxuICAgKiBnZXQgYSB0YXNrIGJhc2VkIG9uIHRoZSB0YXNrIG5hbWVcbiAgICovXG4gIGdldFRhc2sodCkge1xuICAgIHJldHVybiB0aGlzLl90YXNrcy5nZXQodCk7XG4gIH1cbn07XG5leHBvcnQge1xuICB4IGFzIEJlbmNoLFxuICBiIGFzIFRhc2ssXG4gIFUgYXMgaHJ0aW1lTm93LFxuICBCIGFzIG5vd1xufTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUksSUFBSSxPQUFPO0FBQ2YsSUFBSSxLQUFLLE1BQU07QUFDYixPQUFNLFVBQVUsRUFBRTs7QUFFcEIsSUFBSSxLQUFLLEdBQUcsR0FBRyxNQUFNLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRztDQUFFLFlBQVksQ0FBQztDQUFHLGNBQWMsQ0FBQztDQUFHLFVBQVUsQ0FBQztDQUFHLE9BQU87Q0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLO0FBQzdHLElBQUksS0FBSyxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsT0FBTyxLQUFLLFdBQVcsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtBQUM5RyxJQUFJLEtBQUssR0FBRyxHQUFHLE9BQU8sRUFBRSxHQUFHLEdBQUcsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxHQUFHLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsb0RBQW9ELEdBQUcsYUFBYSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsR0FBRyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDalQsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLE9BQU87Q0FDdkIsSUFBSSxFQUFFLEdBQUc7QUFDUCxJQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUU7O0NBRWYsSUFBSSxJQUFJO0FBQ04sU0FBTyxF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Q0gsR0FBRztDQUNILEdBQUc7Q0FDSCxHQUFHO0NBQ0gsR0FBRztDQUNILElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NB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
@@ -0,0 +1,86 @@
1
+ //#region ../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js
2
+ var b = {
3
+ reset: [0, 0],
4
+ bold: [
5
+ 1,
6
+ 22,
7
+ "\x1B[22m\x1B[1m"
8
+ ],
9
+ dim: [
10
+ 2,
11
+ 22,
12
+ "\x1B[22m\x1B[2m"
13
+ ],
14
+ italic: [3, 23],
15
+ underline: [4, 24],
16
+ inverse: [7, 27],
17
+ hidden: [8, 28],
18
+ strikethrough: [9, 29],
19
+ black: [30, 39],
20
+ red: [31, 39],
21
+ green: [32, 39],
22
+ yellow: [33, 39],
23
+ blue: [34, 39],
24
+ magenta: [35, 39],
25
+ cyan: [36, 39],
26
+ white: [37, 39],
27
+ gray: [90, 39],
28
+ bgBlack: [40, 49],
29
+ bgRed: [41, 49],
30
+ bgGreen: [42, 49],
31
+ bgYellow: [43, 49],
32
+ bgBlue: [44, 49],
33
+ bgMagenta: [45, 49],
34
+ bgCyan: [46, 49],
35
+ bgWhite: [47, 49],
36
+ blackBright: [90, 39],
37
+ redBright: [91, 39],
38
+ greenBright: [92, 39],
39
+ yellowBright: [93, 39],
40
+ blueBright: [94, 39],
41
+ magentaBright: [95, 39],
42
+ cyanBright: [96, 39],
43
+ whiteBright: [97, 39],
44
+ bgBlackBright: [100, 49],
45
+ bgRedBright: [101, 49],
46
+ bgGreenBright: [102, 49],
47
+ bgYellowBright: [103, 49],
48
+ bgBlueBright: [104, 49],
49
+ bgMagentaBright: [105, 49],
50
+ bgCyanBright: [106, 49],
51
+ bgWhiteBright: [107, 49]
52
+ };
53
+ function i(e) {
54
+ return String(e);
55
+ }
56
+ i.open = "";
57
+ i.close = "";
58
+ function B() {
59
+ let e = typeof process != "undefined" ? process : void 0, r = (e == null ? void 0 : e.env) || {}, a = r.FORCE_TTY !== "false", l = (e == null ? void 0 : e.argv) || [];
60
+ return !("NO_COLOR" in r || l.includes("--no-color")) && ("FORCE_COLOR" in r || l.includes("--color") || (e == null ? void 0 : e.platform) === "win32" || a && r.TERM !== "dumb" || "CI" in r) || typeof window != "undefined" && !!window.chrome;
61
+ }
62
+ function C({ force: e } = {}) {
63
+ let r = e || B(), a = (t, o, u, n) => {
64
+ let g = "", s = 0;
65
+ do
66
+ g += t.substring(s, n) + u, s = n + o.length, n = t.indexOf(o, s);
67
+ while (~n);
68
+ return g + t.substring(s);
69
+ }, l = (t, o, u = t) => {
70
+ let n = (g) => {
71
+ let s = String(g), h = s.indexOf(o, t.length);
72
+ return ~h ? t + a(s, o, u, h) + o : t + s + o;
73
+ };
74
+ return n.open = t, n.close = o, n;
75
+ }, c = { isColorSupported: r }, f = (t) => `\x1B[${t}m`;
76
+ for (let t in b) {
77
+ let o = b[t];
78
+ c[t] = r ? l(f(o[0]), f(o[1]), o[2]) : i;
79
+ }
80
+ return c;
81
+ }
82
+ var y = C();
83
+ //#endregion
84
+ export { y };
85
+
86
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RpbnlyYWluYm93QDMuMS4wL25vZGVfbW9kdWxlcy90aW55cmFpbmJvdy9kaXN0L2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9pbmRleC50c1xudmFyIGIgPSB7XG4gIHJlc2V0OiBbMCwgMF0sXG4gIGJvbGQ6IFsxLCAyMiwgXCJcXHgxQlsyMm1cXHgxQlsxbVwiXSxcbiAgZGltOiBbMiwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMm1cIl0sXG4gIGl0YWxpYzogWzMsIDIzXSxcbiAgdW5kZXJsaW5lOiBbNCwgMjRdLFxuICBpbnZlcnNlOiBbNywgMjddLFxuICBoaWRkZW46IFs4LCAyOF0sXG4gIHN0cmlrZXRocm91Z2g6IFs5LCAyOV0sXG4gIGJsYWNrOiBbMzAsIDM5XSxcbiAgcmVkOiBbMzEsIDM5XSxcbiAgZ3JlZW46IFszMiwgMzldLFxuICB5ZWxsb3c6IFszMywgMzldLFxuICBibHVlOiBbMzQsIDM5XSxcbiAgbWFnZW50YTogWzM1LCAzOV0sXG4gIGN5YW46IFszNiwgMzldLFxuICB3aGl0ZTogWzM3LCAzOV0sXG4gIGdyYXk6IFs5MCwgMzldLFxuICBiZ0JsYWNrOiBbNDAsIDQ5XSxcbiAgYmdSZWQ6IFs0MSwgNDldLFxuICBiZ0dyZWVuOiBbNDIsIDQ5XSxcbiAgYmdZZWxsb3c6IFs0MywgNDldLFxuICBiZ0JsdWU6IFs0NCwgNDldLFxuICBiZ01hZ2VudGE6IFs0NSwgNDldLFxuICBiZ0N5YW46IFs0NiwgNDldLFxuICBiZ1doaXRlOiBbNDcsIDQ5XSxcbiAgYmxhY2tCcmlnaHQ6IFs5MCwgMzldLFxuICByZWRCcmlnaHQ6IFs5MSwgMzldLFxuICBncmVlbkJyaWdodDogWzkyLCAzOV0sXG4gIHllbGxvd0JyaWdodDogWzkzLCAzOV0sXG4gIGJsdWVCcmlnaHQ6IFs5NCwgMzldLFxuICBtYWdlbnRhQnJpZ2h0OiBbOTUsIDM5XSxcbiAgY3lhbkJyaWdodDogWzk2LCAzOV0sXG4gIHdoaXRlQnJpZ2h0OiBbOTcsIDM5XSxcbiAgYmdCbGFja0JyaWdodDogWzEwMCwgNDldLFxuICBiZ1JlZEJyaWdodDogWzEwMSwgNDldLFxuICBiZ0dyZWVuQnJpZ2h0OiBbMTAyLCA0OV0sXG4gIGJnWWVsbG93QnJpZ2h0OiBbMTAzLCA0OV0sXG4gIGJnQmx1ZUJyaWdodDogWzEwNCwgNDldLFxuICBiZ01hZ2VudGFCcmlnaHQ6IFsxMDUsIDQ5XSxcbiAgYmdDeWFuQnJpZ2h0OiBbMTA2LCA0OV0sXG4gIGJnV2hpdGVCcmlnaHQ6IFsxMDcsIDQ5XVxufTtcbmZ1bmN0aW9uIGkoZSkge1xuICByZXR1cm4gU3RyaW5nKGUpO1xufVxuaS5vcGVuID0gXCJcIjtcbmkuY2xvc2UgPSBcIlwiO1xuZnVuY3Rpb24gcCgpIHtcbiAgbGV0IGUgPSB7XG4gICAgaXNDb2xvclN1cHBvcnRlZDogITEsXG4gICAgcmVzZXQ6IGlcbiAgfTtcbiAgZm9yIChsZXQgciBpbiBiKVxuICAgIGVbcl0gPSBpO1xuICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIEIoKSB7XG4gIGxldCBlID0gdHlwZW9mIHByb2Nlc3MgIT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3MgOiB2b2lkIDAsIHIgPSAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5lbnYpIHx8IHt9LCBhID0gci5GT1JDRV9UVFkgIT09IFwiZmFsc2VcIiwgbCA9IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmFyZ3YpIHx8IFtdO1xuICByZXR1cm4gIShcIk5PX0NPTE9SXCIgaW4gciB8fCBsLmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiYgKFwiRk9SQ0VfQ09MT1JcIiBpbiByIHx8IGwuaW5jbHVkZXMoXCItLWNvbG9yXCIpIHx8IChlID09IG51bGwgPyB2b2lkIDAgOiBlLnBsYXRmb3JtKSA9PT0gXCJ3aW4zMlwiIHx8IGEgJiYgci5URVJNICE9PSBcImR1bWJcIiB8fCBcIkNJXCIgaW4gcikgfHwgdHlwZW9mIHdpbmRvdyAhPSBcInVuZGVmaW5lZFwiICYmICEhd2luZG93LmNocm9tZTtcbn1cbmZ1bmN0aW9uIEMoeyBmb3JjZTogZSB9ID0ge30pIHtcbiAgbGV0IHIgPSBlIHx8IEIoKSwgYSA9ICh0LCBvLCB1LCBuKSA9PiB7XG4gICAgbGV0IGcgPSBcIlwiLCBzID0gMDtcbiAgICBkb1xuICAgICAgZyArPSB0LnN1YnN0cmluZyhzLCBuKSArIHUsIHMgPSBuICsgby5sZW5ndGgsIG4gPSB0LmluZGV4T2Yobywgcyk7XG4gICAgd2hpbGUgKH5uKTtcbiAgICByZXR1cm4gZyArIHQuc3Vic3RyaW5nKHMpO1xuICB9LCBsID0gKHQsIG8sIHUgPSB0KSA9PiB7XG4gICAgbGV0IG4gPSAoZykgPT4ge1xuICAgICAgbGV0IHMgPSBTdHJpbmcoZyksIGggPSBzLmluZGV4T2YobywgdC5sZW5ndGgpO1xuICAgICAgcmV0dXJuIH5oID8gdCArIGEocywgbywgdSwgaCkgKyBvIDogdCArIHMgKyBvO1xuICAgIH07XG4gICAgcmV0dXJuIG4ub3BlbiA9IHQsIG4uY2xvc2UgPSBvLCBuO1xuICB9LCBjID0ge1xuICAgIGlzQ29sb3JTdXBwb3J0ZWQ6IHJcbiAgfSwgZiA9ICh0KSA9PiBgXFx4MUJbJHt0fW1gO1xuICBmb3IgKGxldCB0IGluIGIpIHtcbiAgICBsZXQgbyA9IGJbdF07XG4gICAgY1t0XSA9IHIgPyBsKFxuICAgICAgZihvWzBdKSxcbiAgICAgIGYob1sxXSksXG4gICAgICBvWzJdXG4gICAgKSA6IGk7XG4gIH1cbiAgcmV0dXJuIGM7XG59XG52YXIgZCA9IEMoKTtcbmZ1bmN0aW9uIG0oKSB7XG4gIE9iamVjdC5hc3NpZ24oZCwgcCgpKTtcbn1cbmZ1bmN0aW9uIHcoKSB7XG4gIE9iamVjdC5hc3NpZ24oZCwgQyh7IGZvcmNlOiAhMCB9KSk7XG59XG52YXIgeSA9IGQ7XG5leHBvcnQge1xuICBDIGFzIGNyZWF0ZUNvbG9ycyxcbiAgeSBhcyBkZWZhdWx0LFxuICBtIGFzIGRpc2FibGVEZWZhdWx0Q29sb3JzLFxuICB3IGFzIGVuYWJsZWREZWZhdWx0Q29sb3JzLFxuICBwIGFzIGdldERlZmF1bHRDb2xvcnMsXG4gIEIgYXMgaXNTdXBwb3J0ZWRcbn07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUNBLElBQUksSUFBSTtDQUNOLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Q0FDYixNQUFNO0VBQUM7RUFBRztFQUFJO0VBQWtCO0NBQ2hDLEtBQUs7RUFBQztFQUFHO0VBQUk7RUFBa0I7Q0FDL0IsUUFBUSxDQUFDLEdBQUcsR0FBRztDQUNmLFdBQVcsQ0FBQyxHQUFHLEdBQUc7Q0FDbEIsU0FBUyxDQUFDLEdBQUcsR0FBRztDQUNoQixRQUFRLENBQUMsR0FBRyxHQUFHO0NBQ2YsZUFBZSxDQUFDLEdBQUcsR0FBRztDQUN0QixPQUFPLENBQUMsSUFBSSxHQUFHO0NBQ2YsS0FBSyxDQUFDLElBQUksR0FBRztDQUNiLE9BQU8sQ0FBQyxJQUFJLEdBQUc7Q0FDZixRQUFRLENBQUMsSUFBSSxHQUFHO0NBQ2hCLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Q0FDZCxTQUFTLENBQUMsSUFBSSxHQUFHO0NBQ2pCLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Q0FDZCxPQUFPLENBQUMsSUFBSSxHQUFHO0NBQ2YsTUFBTSxDQUFDLElBQUksR0FBRztDQUNkLFNBQVMsQ0FBQyxJQUFJLEdBQUc7Q0FDakIsT0FBTyxDQUFDLElBQUksR0FBRztDQUNmLFNBQVMsQ0FBQyxJQUFJLEdBQUc7Q0FDakIsVUFBVSxDQUFDLElBQUksR0FBRztDQUNsQixRQUFRLENBQUMsSUFBSSxHQUFHO0NBQ2hCLFdBQVcsQ0FBQyxJQUFJLEdBQUc7Q0FDbkIsUUFBUSxDQUFDLElBQUksR0FBRztDQUNoQixTQUFTLENBQUMsSUFBSSxHQUFHO0NBQ2pCLGFBQWEsQ0FBQyxJQUFJLEdBQUc7Q0FDckIsV0FBVyxDQUFDLElBQUksR0FBRztDQUNuQixhQUFhLENBQUMsSUFBSSxHQUFHO0NBQ3JCLGNBQWMsQ0FBQyxJQUFJLEdBQUc7Q0FDdEIsWUFBWSxDQUFDLElBQUksR0FBRztDQUNwQixlQUFlLENBQUMsSUFBSSxHQUFHO0NBQ3ZCLFlBQVksQ0FBQyxJQUFJLEdBQUc7Q0FDcEIsYUFBYSxDQUFDLElBQUksR0FBRztDQUNyQixlQUFlLENBQUMsS0FBSyxHQUFHO0NBQ3hCLGFBQWEsQ0FBQyxLQUFLLEdBQUc7Q0FDdEIsZUFBZSxDQUFDLEtBQUssR0FBRztDQUN4QixnQkFBZ0IsQ0FBQyxLQUFLLEdBQUc7Q0FDekIsY0FBYyxDQUFDLEtBQUssR0FBRztDQUN2QixpQkFBaUIsQ0FBQyxLQUFLLEdBQUc7Q0FDMUIsY0FBYyxDQUFDLEtBQUssR0FBRztDQUN2QixlQUFlLENBQUMsS0FBSyxHQUFHO0NBQ3pCO0FBQ0QsU0FBUyxFQUFFLEdBQUc7QUFDWixRQUFPLE9BQU8sRUFBRTs7QUFFbEIsRUFBRSxPQUFPO0FBQ1QsRUFBRSxRQUFRO0FBVVYsU0FBUyxJQUFJO0NBQ1gsSUFBSSxJQUFJLE9BQU8sV0FBVyxjQUFjLFVBQVUsS0FBSyxHQUFHLEtBQUssS0FBSyxPQUFPLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLFNBQVMsS0FBSyxLQUFLLE9BQU8sS0FBSyxJQUFJLEVBQUUsU0FBUyxFQUFFO0FBQ3RLLFFBQU8sRUFBRSxjQUFjLEtBQUssRUFBRSxTQUFTLGFBQWEsTUFBTSxpQkFBaUIsS0FBSyxFQUFFLFNBQVMsVUFBVSxLQUFLLEtBQUssT0FBTyxLQUFLLElBQUksRUFBRSxjQUFjLFdBQVcsS0FBSyxFQUFFLFNBQVMsVUFBVSxRQUFRLE1BQU0sT0FBTyxVQUFVLGVBQWUsQ0FBQyxDQUFDLE9BQU87O0FBRTdPLFNBQVMsRUFBRSxFQUFFLE9BQU8sTUFBTSxFQUFFLEVBQUU7Q0FDNUIsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTTtFQUNwQyxJQUFJLElBQUksSUFBSSxJQUFJO0FBQ2hCO0FBQ0UsUUFBSyxFQUFFLFVBQVUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxRQUFRLEdBQUcsRUFBRTtTQUM1RCxDQUFDO0FBQ1IsU0FBTyxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ3hCLEtBQUssR0FBRyxHQUFHLElBQUksTUFBTTtFQUN0QixJQUFJLEtBQUssTUFBTTtHQUNiLElBQUksSUFBSSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxHQUFHLEVBQUUsT0FBTztBQUM3QyxVQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJOztBQUU5QyxTQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsUUFBUSxHQUFHO0lBQy9CLElBQUksRUFDTCxrQkFBa0IsR0FDbkIsRUFBRSxLQUFLLE1BQU0sUUFBUSxFQUFFO0FBQ3hCLE1BQUssSUFBSSxLQUFLLEdBQUc7RUFDZixJQUFJLElBQUksRUFBRTtBQUNWLElBQUUsS0FBSyxJQUFJLEVBQ1QsRUFBRSxFQUFFLEdBQUcsRUFDUCxFQUFFLEVBQUUsR0FBRyxFQUNQLEVBQUUsR0FDSCxHQUFHOztBQUVOLFFBQU87O0FBU1QsSUFBSSxJQVBJLEdBQUcifQ==