@cloudbase/container 2.5.29-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,538 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ if (typeof global !== 'undefined') {
40
+ }
41
+ else if (typeof window !== 'undefined') {
42
+ window.global = window;
43
+ }
44
+ else if (typeof self !== 'undefined') {
45
+ self.global = self;
46
+ }
47
+ else {
48
+ throw new Error('cannot export Go (neither global, window nor self is defined)');
49
+ }
50
+ if (!global.require && typeof require !== 'undefined') {
51
+ }
52
+ var enosys = function () {
53
+ var err = new Error('not implemented');
54
+ err.code = 'ENOSYS';
55
+ return err;
56
+ };
57
+ if (!global.fs) {
58
+ var outputBuf_1 = '';
59
+ global.fs = {
60
+ constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 },
61
+ writeSync: function (fd, buf) {
62
+ outputBuf_1 += decoder.decode(buf);
63
+ var nl = outputBuf_1.lastIndexOf('\n');
64
+ if (nl != -1) {
65
+ console.log(outputBuf_1.substr(0, nl));
66
+ outputBuf_1 = outputBuf_1.substr(nl + 1);
67
+ }
68
+ return buf.length;
69
+ },
70
+ write: function (fd, buf, offset, length, position, callback) {
71
+ if (offset !== 0 || length !== buf.length || position !== null) {
72
+ callback(enosys());
73
+ return;
74
+ }
75
+ var n = this.writeSync(fd, buf);
76
+ callback(null, n);
77
+ },
78
+ chmod: function (path, mode, callback) {
79
+ callback(enosys());
80
+ },
81
+ chown: function (path, uid, gid, callback) {
82
+ callback(enosys());
83
+ },
84
+ close: function (fd, callback) {
85
+ callback(enosys());
86
+ },
87
+ fchmod: function (fd, mode, callback) {
88
+ callback(enosys());
89
+ },
90
+ fchown: function (fd, uid, gid, callback) {
91
+ callback(enosys());
92
+ },
93
+ fstat: function (fd, callback) {
94
+ callback(enosys());
95
+ },
96
+ fsync: function (fd, callback) {
97
+ callback(null);
98
+ },
99
+ ftruncate: function (fd, length, callback) {
100
+ callback(enosys());
101
+ },
102
+ lchown: function (path, uid, gid, callback) {
103
+ callback(enosys());
104
+ },
105
+ link: function (path, link, callback) {
106
+ callback(enosys());
107
+ },
108
+ lstat: function (path, callback) {
109
+ callback(enosys());
110
+ },
111
+ mkdir: function (path, perm, callback) {
112
+ callback(enosys());
113
+ },
114
+ open: function (path, flags, mode, callback) {
115
+ callback(enosys());
116
+ },
117
+ read: function (fd, buffer, offset, length, position, callback) {
118
+ callback(enosys());
119
+ },
120
+ readdir: function (path, callback) {
121
+ callback(enosys());
122
+ },
123
+ readlink: function (path, callback) {
124
+ callback(enosys());
125
+ },
126
+ rename: function (from, to, callback) {
127
+ callback(enosys());
128
+ },
129
+ rmdir: function (path, callback) {
130
+ callback(enosys());
131
+ },
132
+ stat: function (path, callback) {
133
+ callback(enosys());
134
+ },
135
+ symlink: function (path, link, callback) {
136
+ callback(enosys());
137
+ },
138
+ truncate: function (path, length, callback) {
139
+ callback(enosys());
140
+ },
141
+ unlink: function (path, callback) {
142
+ callback(enosys());
143
+ },
144
+ utimes: function (path, atime, mtime, callback) {
145
+ callback(enosys());
146
+ },
147
+ };
148
+ }
149
+ if (!global.process) {
150
+ global.process = {
151
+ getuid: function () {
152
+ return -1;
153
+ },
154
+ getgid: function () {
155
+ return -1;
156
+ },
157
+ geteuid: function () {
158
+ return -1;
159
+ },
160
+ getegid: function () {
161
+ return -1;
162
+ },
163
+ getgroups: function () {
164
+ throw enosys();
165
+ },
166
+ pid: -1,
167
+ ppid: -1,
168
+ umask: function () {
169
+ throw enosys();
170
+ },
171
+ cwd: function () {
172
+ throw enosys();
173
+ },
174
+ chdir: function () {
175
+ throw enosys();
176
+ },
177
+ };
178
+ }
179
+ if (!global.crypto) {
180
+ throw new Error('globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)');
181
+ }
182
+ if (!global.performance) {
183
+ throw new Error('globalThis.performance is not available, polyfill required (performance.now only)');
184
+ }
185
+ if (!global.TextEncoder) {
186
+ throw new Error('globalThis.TextEncoder is not available, polyfill required');
187
+ }
188
+ if (!global.TextDecoder) {
189
+ throw new Error('globalThis.TextDecoder is not available, polyfill required');
190
+ }
191
+ var encoder = new TextEncoder('utf-8');
192
+ var decoder = new TextDecoder('utf-8');
193
+ var logLine = [];
194
+ global.Go = (function () {
195
+ function class_1() {
196
+ var _this = this;
197
+ this._callbackTimeouts = new Map();
198
+ this._nextCallbackTimeoutID = 1;
199
+ var mem = function () {
200
+ return new DataView(_this._inst.exports.memory.buffer);
201
+ };
202
+ var setInt64 = function (addr, v) {
203
+ mem().setUint32(addr + 0, v, true);
204
+ mem().setUint32(addr + 4, Math.floor(v / 4294967296), true);
205
+ };
206
+ var getInt64 = function (addr) {
207
+ var low = mem().getUint32(addr + 0, true);
208
+ var high = mem().getInt32(addr + 4, true);
209
+ return low + high * 4294967296;
210
+ };
211
+ var loadValue = function (addr) {
212
+ var f = mem().getFloat64(addr, true);
213
+ if (f === 0) {
214
+ return undefined;
215
+ }
216
+ if (!isNaN(f)) {
217
+ return f;
218
+ }
219
+ var id = mem().getUint32(addr, true);
220
+ return _this._values[id];
221
+ };
222
+ var storeValue = function (addr, v) {
223
+ var nanHead = 0x7ff80000;
224
+ if (typeof v === 'number') {
225
+ if (isNaN(v)) {
226
+ mem().setUint32(addr + 4, nanHead, true);
227
+ mem().setUint32(addr, 0, true);
228
+ return;
229
+ }
230
+ if (v === 0) {
231
+ mem().setUint32(addr + 4, nanHead, true);
232
+ mem().setUint32(addr, 1, true);
233
+ return;
234
+ }
235
+ mem().setFloat64(addr, v, true);
236
+ return;
237
+ }
238
+ switch (v) {
239
+ case undefined:
240
+ mem().setFloat64(addr, 0, true);
241
+ return;
242
+ case null:
243
+ mem().setUint32(addr + 4, nanHead, true);
244
+ mem().setUint32(addr, 2, true);
245
+ return;
246
+ case true:
247
+ mem().setUint32(addr + 4, nanHead, true);
248
+ mem().setUint32(addr, 3, true);
249
+ return;
250
+ case false:
251
+ mem().setUint32(addr + 4, nanHead, true);
252
+ mem().setUint32(addr, 4, true);
253
+ return;
254
+ }
255
+ var id = _this._ids.get(v);
256
+ if (id === undefined) {
257
+ id = _this._idPool.pop();
258
+ if (id === undefined) {
259
+ id = _this._values.length;
260
+ }
261
+ _this._values[id] = v;
262
+ _this._goRefCounts[id] = 0;
263
+ _this._ids.set(v, id);
264
+ }
265
+ _this._goRefCounts[id]++;
266
+ var typeFlag = 1;
267
+ switch (typeof v) {
268
+ case 'string':
269
+ typeFlag = 2;
270
+ break;
271
+ case 'symbol':
272
+ typeFlag = 3;
273
+ break;
274
+ case 'function':
275
+ typeFlag = 4;
276
+ break;
277
+ }
278
+ mem().setUint32(addr + 4, nanHead | typeFlag, true);
279
+ mem().setUint32(addr, id, true);
280
+ };
281
+ var loadSlice = function (array, len, cap) {
282
+ return new Uint8Array(_this._inst.exports.memory.buffer, array, len);
283
+ };
284
+ var loadSliceOfValues = function (array, len, cap) {
285
+ var a = new Array(len);
286
+ for (var i = 0; i < len; i++) {
287
+ a[i] = loadValue(array + i * 8);
288
+ }
289
+ return a;
290
+ };
291
+ var loadString = function (ptr, len) {
292
+ return decoder.decode(new DataView(_this._inst.exports.memory.buffer, ptr, len));
293
+ };
294
+ var timeOrigin = Date.now() - performance.now();
295
+ this.importObject = {
296
+ wasi_snapshot_preview1: {
297
+ fd_write: function (fd, iovs_ptr, iovs_len, nwritten_ptr) {
298
+ var nwritten = 0;
299
+ if (fd == 1) {
300
+ for (var iovs_i = 0; iovs_i < iovs_len; iovs_i++) {
301
+ var iov_ptr = iovs_ptr + iovs_i * 8;
302
+ var ptr = mem().getUint32(iov_ptr + 0, true);
303
+ var len = mem().getUint32(iov_ptr + 4, true);
304
+ nwritten += len;
305
+ for (var i = 0; i < len; i++) {
306
+ var c = mem().getUint8(ptr + i);
307
+ if (c == 13) {
308
+ }
309
+ else if (c == 10) {
310
+ var line = decoder.decode(new Uint8Array(logLine));
311
+ logLine = [];
312
+ console.log(line);
313
+ }
314
+ else {
315
+ logLine.push(c);
316
+ }
317
+ }
318
+ }
319
+ }
320
+ else {
321
+ console.error('invalid file descriptor:', fd);
322
+ }
323
+ mem().setUint32(nwritten_ptr, nwritten, true);
324
+ return 0;
325
+ },
326
+ fd_close: function () { return 0; },
327
+ fd_fdstat_get: function () { return 0; },
328
+ fd_seek: function () { return 0; },
329
+ proc_exit: function (code) {
330
+ if (global.process) {
331
+ process.exit(code);
332
+ }
333
+ else {
334
+ throw 'trying to exit with code ' + code;
335
+ }
336
+ },
337
+ random_get: function (bufPtr, bufLen) {
338
+ crypto.getRandomValues(loadSlice(bufPtr, bufLen));
339
+ return 0;
340
+ },
341
+ },
342
+ env: {
343
+ 'runtime.ticks': function () {
344
+ return timeOrigin + performance.now();
345
+ },
346
+ 'runtime.sleepTicks': function (timeout) {
347
+ setTimeout(_this._inst.exports.go_scheduler, timeout);
348
+ },
349
+ 'syscall/js.finalizeRef': function (sp) {
350
+ var id = mem().getUint32(sp, true);
351
+ _this._goRefCounts[id]--;
352
+ if (_this._goRefCounts[id] === 0) {
353
+ var v = _this._values[id];
354
+ _this._values[id] = null;
355
+ _this._ids.delete(v);
356
+ _this._idPool.push(id);
357
+ }
358
+ },
359
+ 'syscall/js.stringVal': function (ret_ptr, value_ptr, value_len) {
360
+ var s = loadString(value_ptr, value_len);
361
+ storeValue(ret_ptr, s);
362
+ },
363
+ 'syscall/js.valueGet': function (retval, v_addr, p_ptr, p_len) {
364
+ var prop = loadString(p_ptr, p_len);
365
+ var value = loadValue(v_addr);
366
+ var result = Reflect.get(value, prop);
367
+ storeValue(retval, result);
368
+ },
369
+ 'syscall/js.valueSet': function (v_addr, p_ptr, p_len, x_addr) {
370
+ var v = loadValue(v_addr);
371
+ var p = loadString(p_ptr, p_len);
372
+ var x = loadValue(x_addr);
373
+ Reflect.set(v, p, x);
374
+ },
375
+ 'syscall/js.valueDelete': function (v_addr, p_ptr, p_len) {
376
+ var v = loadValue(v_addr);
377
+ var p = loadString(p_ptr, p_len);
378
+ Reflect.deleteProperty(v, p);
379
+ },
380
+ 'syscall/js.valueIndex': function (ret_addr, v_addr, i) {
381
+ storeValue(ret_addr, Reflect.get(loadValue(v_addr), i));
382
+ },
383
+ 'syscall/js.valueSetIndex': function (v_addr, i, x_addr) {
384
+ Reflect.set(loadValue(v_addr), i, loadValue(x_addr));
385
+ },
386
+ 'syscall/js.valueCall': function (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) {
387
+ var v = loadValue(v_addr);
388
+ var name = loadString(m_ptr, m_len);
389
+ var args = loadSliceOfValues(args_ptr, args_len, args_cap);
390
+ try {
391
+ var m = Reflect.get(v, name);
392
+ storeValue(ret_addr, Reflect.apply(m, v, args));
393
+ mem().setUint8(ret_addr + 8, 1);
394
+ }
395
+ catch (err) {
396
+ storeValue(ret_addr, err);
397
+ mem().setUint8(ret_addr + 8, 0);
398
+ }
399
+ },
400
+ 'syscall/js.valueInvoke': function (ret_addr, v_addr, args_ptr, args_len, args_cap) {
401
+ try {
402
+ var v = loadValue(v_addr);
403
+ var args = loadSliceOfValues(args_ptr, args_len, args_cap);
404
+ storeValue(ret_addr, Reflect.apply(v, undefined, args));
405
+ mem().setUint8(ret_addr + 8, 1);
406
+ }
407
+ catch (err) {
408
+ storeValue(ret_addr, err);
409
+ mem().setUint8(ret_addr + 8, 0);
410
+ }
411
+ },
412
+ 'syscall/js.valueNew': function (ret_addr, v_addr, args_ptr, args_len, args_cap) {
413
+ var v = loadValue(v_addr);
414
+ var args = loadSliceOfValues(args_ptr, args_len, args_cap);
415
+ try {
416
+ storeValue(ret_addr, Reflect.construct(v, args));
417
+ mem().setUint8(ret_addr + 8, 1);
418
+ }
419
+ catch (err) {
420
+ storeValue(ret_addr, err);
421
+ mem().setUint8(ret_addr + 8, 0);
422
+ }
423
+ },
424
+ 'syscall/js.valueLength': function (v_addr) {
425
+ return loadValue(v_addr).length;
426
+ },
427
+ 'syscall/js.valuePrepareString': function (ret_addr, v_addr) {
428
+ var s = String(loadValue(v_addr));
429
+ var str = encoder.encode(s);
430
+ storeValue(ret_addr, str);
431
+ setInt64(ret_addr + 8, str.length);
432
+ },
433
+ 'syscall/js.valueLoadString': function (v_addr, slice_ptr, slice_len, slice_cap) {
434
+ var str = loadValue(v_addr);
435
+ loadSlice(slice_ptr, slice_len, slice_cap).set(str);
436
+ },
437
+ 'syscall/js.valueInstanceOf': function (v_addr, t_addr) {
438
+ return loadValue(v_addr) instanceof loadValue(t_addr);
439
+ },
440
+ 'syscall/js.copyBytesToGo': function (ret_addr, dest_addr, dest_len, dest_cap, source_addr) {
441
+ var num_bytes_copied_addr = ret_addr;
442
+ var returned_status_addr = ret_addr + 4;
443
+ var dst = loadSlice(dest_addr, dest_len);
444
+ var src = loadValue(source_addr);
445
+ if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {
446
+ mem().setUint8(returned_status_addr, 0);
447
+ return;
448
+ }
449
+ var toCopy = src.subarray(0, dst.length);
450
+ dst.set(toCopy);
451
+ setInt64(num_bytes_copied_addr, toCopy.length);
452
+ mem().setUint8(returned_status_addr, 1);
453
+ },
454
+ 'syscall/js.copyBytesToJS': function (ret_addr, dest_addr, source_addr, source_len, source_cap) {
455
+ var num_bytes_copied_addr = ret_addr;
456
+ var returned_status_addr = ret_addr + 4;
457
+ var dst = loadValue(dest_addr);
458
+ var src = loadSlice(source_addr, source_len);
459
+ if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {
460
+ mem().setUint8(returned_status_addr, 0);
461
+ return;
462
+ }
463
+ var toCopy = src.subarray(0, dst.length);
464
+ dst.set(toCopy);
465
+ setInt64(num_bytes_copied_addr, toCopy.length);
466
+ mem().setUint8(returned_status_addr, 1);
467
+ },
468
+ },
469
+ };
470
+ }
471
+ class_1.prototype.run = function (instance) {
472
+ return __awaiter(this, void 0, void 0, function () {
473
+ var mem, callbackPromise;
474
+ var _this = this;
475
+ return __generator(this, function (_a) {
476
+ switch (_a.label) {
477
+ case 0:
478
+ this._inst = instance;
479
+ this._values = [
480
+ NaN,
481
+ 0,
482
+ null,
483
+ true,
484
+ false,
485
+ global,
486
+ this,
487
+ ];
488
+ this._goRefCounts = [];
489
+ this._ids = new Map();
490
+ this._idPool = [];
491
+ this.exited = false;
492
+ mem = new DataView(this._inst.exports.memory.buffer);
493
+ _a.label = 1;
494
+ case 1:
495
+ if (!true) return [3, 3];
496
+ callbackPromise = new Promise(function (resolve) {
497
+ _this._resolveCallbackPromise = function () {
498
+ if (_this.exited) {
499
+ throw new Error('bad callback: Go program has already exited');
500
+ }
501
+ setTimeout(resolve, 0);
502
+ };
503
+ });
504
+ this._inst.exports._start();
505
+ if (this.exited) {
506
+ return [3, 3];
507
+ }
508
+ return [4, callbackPromise];
509
+ case 2:
510
+ _a.sent();
511
+ return [3, 1];
512
+ case 3: return [2];
513
+ }
514
+ });
515
+ });
516
+ };
517
+ class_1.prototype._resume = function () {
518
+ if (this.exited) {
519
+ throw new Error('Go program has already exited');
520
+ }
521
+ this._inst.exports.resume();
522
+ if (this.exited) {
523
+ this._resolveExitPromise();
524
+ }
525
+ };
526
+ class_1.prototype._makeFuncWrapper = function (id) {
527
+ var go = this;
528
+ return function () {
529
+ var event = { id: id, this: this, args: arguments };
530
+ go._pendingEvent = event;
531
+ go._resume();
532
+ return event.result;
533
+ };
534
+ };
535
+ return class_1;
536
+ }());
537
+ exports.default = global.Go;
538
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29fd2Ftc19leGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dvX3dhbXNfZXhlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO0NBRWxDO0tBQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7SUFDeEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7Q0FDdkI7S0FBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTtJQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtDQUNuQjtLQUFNO0lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFBO0NBQ2pGO0FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0NBRXREO0FBTUQsSUFBTSxNQUFNLEdBQUc7SUFDYixJQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3hDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFBO0lBQ25CLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7SUFDZCxJQUFJLFdBQVMsR0FBRyxFQUFFLENBQUE7SUFDbEIsTUFBTSxDQUFDLEVBQUUsR0FBRztRQUNWLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQzNGLFNBQVMsWUFBQyxFQUFFLEVBQUUsR0FBRztZQUNmLFdBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2hDLElBQU0sRUFBRSxHQUFHLFdBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUNwQyxXQUFTLEdBQUcsV0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7YUFDckM7WUFDRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUE7UUFDbkIsQ0FBQztRQUNELEtBQUssWUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVE7WUFDL0MsSUFBSSxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQzlELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO2dCQUNsQixPQUFNO2FBQ1A7WUFDRCxJQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUNqQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ25CLENBQUM7UUFDRCxLQUFLLFlBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ3hCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxLQUFLLFlBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUTtZQUM1QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsS0FBSyxZQUFDLEVBQUUsRUFBRSxRQUFRO1lBQ2hCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxNQUFNLFlBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ3ZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxNQUFNLFlBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUTtZQUMzQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsS0FBSyxZQUFDLEVBQUUsRUFBRSxRQUFRO1lBQ2hCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxLQUFLLFlBQUMsRUFBRSxFQUFFLFFBQVE7WUFDaEIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hCLENBQUM7UUFDRCxTQUFTLFlBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRO1lBQzVCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxNQUFNLFlBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUTtZQUM3QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsSUFBSSxZQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUN2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsS0FBSyxZQUFDLElBQUksRUFBRSxRQUFRO1lBQ2xCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxLQUFLLFlBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ3hCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxJQUFJLFlBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUM5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsSUFBSSxZQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUTtZQUNqRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsT0FBTyxZQUFDLElBQUksRUFBRSxRQUFRO1lBQ3BCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxRQUFRLFlBQUMsSUFBSSxFQUFFLFFBQVE7WUFDckIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDcEIsQ0FBQztRQUNELE1BQU0sWUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVE7WUFDdkIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDcEIsQ0FBQztRQUNELEtBQUssWUFBQyxJQUFJLEVBQUUsUUFBUTtZQUNsQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsSUFBSSxZQUFDLElBQUksRUFBRSxRQUFRO1lBQ2pCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxPQUFPLFlBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRO1lBQzFCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxRQUFRLFlBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRO1lBQzdCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxNQUFNLFlBQUMsSUFBSSxFQUFFLFFBQVE7WUFDbkIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDcEIsQ0FBQztRQUNELE1BQU0sWUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2pDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BCLENBQUM7S0FDRixDQUFBO0NBQ0Y7QUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtJQUNuQixNQUFNLENBQUMsT0FBTyxHQUFHO1FBQ2YsTUFBTTtZQUNKLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDWCxDQUFDO1FBQ0QsTUFBTTtZQUNKLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDWCxDQUFDO1FBQ0QsT0FBTztZQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDWCxDQUFDO1FBQ0QsT0FBTztZQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDWCxDQUFDO1FBQ0QsU0FBUztZQUNQLE1BQU0sTUFBTSxFQUFFLENBQUE7UUFDaEIsQ0FBQztRQUNELEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ1IsS0FBSztZQUNILE1BQU0sTUFBTSxFQUFFLENBQUE7UUFDaEIsQ0FBQztRQUNELEdBQUc7WUFDRCxNQUFNLE1BQU0sRUFBRSxDQUFBO1FBQ2hCLENBQUM7UUFDRCxLQUFLO1lBQ0gsTUFBTSxNQUFNLEVBQUUsQ0FBQTtRQUNoQixDQUFDO0tBQ0YsQ0FBQTtDQUNGO0FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7SUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRkFBcUYsQ0FBQyxDQUFBO0NBT3ZHO0FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRkFBbUYsQ0FBQyxDQUFBO0NBT3JHO0FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFBO0NBRTlFO0FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFBO0NBRTlFO0FBSUQsSUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDeEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDeEMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFBO0FBRWhCLE1BQU0sQ0FBQyxFQUFFO0lBQ1A7UUFBQSxpQkEyVUM7UUExVUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQTtRQUUvQixJQUFNLEdBQUcsR0FBRztZQUVWLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZELENBQUMsQ0FBQTtRQUVELElBQU0sUUFBUSxHQUFHLFVBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2xDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzdELENBQUMsQ0FBQTtRQUVELElBQU0sUUFBUSxHQUFHLFVBQUMsSUFBSTtZQUNwQixJQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUMzQyxJQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUMzQyxPQUFPLEdBQUcsR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFBO1FBQ2hDLENBQUMsQ0FBQTtRQUVELElBQU0sU0FBUyxHQUFHLFVBQUMsSUFBSTtZQUNyQixJQUFNLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDWCxPQUFPLFNBQVMsQ0FBQTthQUNqQjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLENBQUE7YUFDVDtZQUVELElBQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDdEMsT0FBTyxLQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3pCLENBQUMsQ0FBQTtRQUVELElBQU0sVUFBVSxHQUFHLFVBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFBO1lBRTFCLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUN6QixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDWixHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3hDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUM5QixPQUFNO2lCQUNQO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDWCxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3hDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUM5QixPQUFNO2lCQUNQO2dCQUNELEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUMvQixPQUFNO2FBQ1A7WUFFRCxRQUFRLENBQUMsRUFBRTtnQkFDVCxLQUFLLFNBQVM7b0JBQ1osR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQy9CLE9BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDeEMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQzlCLE9BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDeEMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQzlCLE9BQU07Z0JBQ1IsS0FBSyxLQUFLO29CQUNSLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDeEMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQzlCLE9BQU07YUFDVDtZQUVELElBQUksRUFBRSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3pCLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtnQkFDcEIsRUFBRSxHQUFHLEtBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7Z0JBQ3ZCLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtvQkFDcEIsRUFBRSxHQUFHLEtBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO2lCQUN6QjtnQkFDRCxLQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDcEIsS0FBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3pCLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTthQUNyQjtZQUNELEtBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtZQUN2QixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUE7WUFDaEIsUUFBUSxPQUFPLENBQUMsRUFBRTtnQkFDaEIsS0FBSyxRQUFRO29CQUNYLFFBQVEsR0FBRyxDQUFDLENBQUE7b0JBQ1osTUFBSztnQkFDUCxLQUFLLFFBQVE7b0JBQ1gsUUFBUSxHQUFHLENBQUMsQ0FBQTtvQkFDWixNQUFLO2dCQUNQLEtBQUssVUFBVTtvQkFDYixRQUFRLEdBQUcsQ0FBQyxDQUFBO29CQUNaLE1BQUs7YUFDUjtZQUNELEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDbkQsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDakMsQ0FBQyxDQUFBO1FBRUQsSUFBTSxTQUFTLEdBQUcsVUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFDaEMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNyRSxDQUFDLENBQUE7UUFFRCxJQUFNLGlCQUFpQixHQUFHLFVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQ3hDLElBQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTthQUNoQztZQUNELE9BQU8sQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxDQUFBO1FBRUQsSUFBTSxVQUFVLEdBQUcsVUFBQyxHQUFHLEVBQUUsR0FBRztZQUMxQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNqRixDQUFDLENBQUE7UUFFRCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsc0JBQXNCLEVBQUU7Z0JBRXRCLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFlBQVk7b0JBQ3RELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtvQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO3dCQUNYLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7NEJBQ2hELElBQUksT0FBTyxHQUFHLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFBOzRCQUNuQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTs0QkFDNUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7NEJBQzVDLFFBQVEsSUFBSSxHQUFHLENBQUE7NEJBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQ0FDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQ0FDL0IsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO2lDQUdaO3FDQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQ0FHbEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO29DQUNsRCxPQUFPLEdBQUcsRUFBRSxDQUFBO29DQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7aUNBQ2xCO3FDQUFNO29DQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7aUNBQ2hCOzZCQUNGO3lCQUNGO3FCQUNGO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxDQUFDLENBQUE7cUJBQzlDO29CQUNELEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUM3QyxPQUFPLENBQUMsQ0FBQTtnQkFDVixDQUFDO2dCQUNELFFBQVEsRUFBRSxjQUFNLE9BQUEsQ0FBQyxFQUFELENBQUM7Z0JBQ2pCLGFBQWEsRUFBRSxjQUFNLE9BQUEsQ0FBQyxFQUFELENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxjQUFNLE9BQUEsQ0FBQyxFQUFELENBQUM7Z0JBQ2hCLFNBQVMsRUFBRSxVQUFDLElBQUk7b0JBQ2QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO3dCQUVsQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUNuQjt5QkFBTTt3QkFFTCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQTtxQkFDekM7Z0JBQ0gsQ0FBQztnQkFDRCxVQUFVLEVBQUUsVUFBQyxNQUFNLEVBQUUsTUFBTTtvQkFDekIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7b0JBQ2pELE9BQU8sQ0FBQyxDQUFBO2dCQUNWLENBQUM7YUFDRjtZQUNELEdBQUcsRUFBRTtnQkFFSCxlQUFlLEVBQUU7b0JBQ2YsT0FBTyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUN2QyxDQUFDO2dCQUdELG9CQUFvQixFQUFFLFVBQUMsT0FBTztvQkFFNUIsVUFBVSxDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDdEQsQ0FBQztnQkFHRCx3QkFBd0IsRUFBRSxVQUFDLEVBQUU7b0JBRzNCLElBQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3BDLEtBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtvQkFDdkIsSUFBSSxLQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDL0IsSUFBTSxDQUFDLEdBQUcsS0FBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDMUIsS0FBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUE7d0JBQ3ZCLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO3dCQUNuQixLQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtxQkFDdEI7Z0JBRUgsQ0FBQztnQkFHRCxzQkFBc0IsRUFBRSxVQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUztvQkFDcEQsSUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtvQkFDMUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDeEIsQ0FBQztnQkFHRCxxQkFBcUIsRUFBRSxVQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUs7b0JBQ2xELElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7b0JBQ25DLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDN0IsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3JDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQzVCLENBQUM7Z0JBR0QscUJBQXFCLEVBQUUsVUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNO29CQUNsRCxJQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQzNCLElBQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7b0JBQ2xDLElBQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUN0QixDQUFDO2dCQUdELHdCQUF3QixFQUFFLFVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUM3QyxJQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQzNCLElBQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7b0JBQ2xDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUM5QixDQUFDO2dCQUdELHVCQUF1QixFQUFFLFVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMzQyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3pELENBQUM7Z0JBR0QsMEJBQTBCLEVBQUUsVUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU07b0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtnQkFDdEQsQ0FBQztnQkFHRCxzQkFBc0IsRUFBRSxVQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVE7b0JBQ25GLElBQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDM0IsSUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtvQkFDckMsSUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtvQkFDNUQsSUFBSTt3QkFDRixJQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDOUIsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTt3QkFDL0MsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7cUJBQ2hDO29CQUFDLE9BQU8sR0FBRyxFQUFFO3dCQUNaLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUE7d0JBQ3pCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO3FCQUNoQztnQkFDSCxDQUFDO2dCQUdELHdCQUF3QixFQUFFLFVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVE7b0JBQ3ZFLElBQUk7d0JBQ0YsSUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO3dCQUMzQixJQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO3dCQUM1RCxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO3dCQUN2RCxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtxQkFDaEM7b0JBQUMsT0FBTyxHQUFHLEVBQUU7d0JBQ1osVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQTt3QkFDekIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7cUJBQ2hDO2dCQUNILENBQUM7Z0JBR0QscUJBQXFCLEVBQUUsVUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUTtvQkFDcEUsSUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUMzQixJQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO29CQUM1RCxJQUFJO3dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTt3QkFDaEQsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7cUJBQ2hDO29CQUFDLE9BQU8sR0FBRyxFQUFFO3dCQUNaLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUE7d0JBQ3pCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO3FCQUNoQztnQkFDSCxDQUFDO2dCQUdELHdCQUF3QixFQUFFLFVBQUMsTUFBTTtvQkFDL0IsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFBO2dCQUNqQyxDQUFDO2dCQUdELCtCQUErQixFQUFFLFVBQUMsUUFBUSxFQUFFLE1BQU07b0JBQ2hELElBQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtvQkFDbkMsSUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDN0IsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQTtvQkFDekIsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxDQUFDO2dCQUdELDRCQUE0QixFQUFFLFVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztvQkFDcEUsSUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUM3QixTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3JELENBQUM7Z0JBR0QsNEJBQTRCLEVBQUUsVUFBQyxNQUFNLEVBQUUsTUFBTTtvQkFDM0MsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN2RCxDQUFDO2dCQUdELDBCQUEwQixFQUFFLFVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVc7b0JBQy9FLElBQUkscUJBQXFCLEdBQUcsUUFBUSxDQUFBO29CQUNwQyxJQUFJLG9CQUFvQixHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUE7b0JBRXZDLElBQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7b0JBQzFDLElBQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtvQkFDbEMsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLFVBQVUsSUFBSSxHQUFHLFlBQVksaUJBQWlCLENBQUMsRUFBRTt3QkFDcEUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFBO3dCQUN2QyxPQUFNO3FCQUNQO29CQUNELElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDMUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDZixRQUFRLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUM5QyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ3pDLENBQUM7Z0JBS0QsMEJBQTBCLEVBQUUsVUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVTtvQkFDbkYsSUFBSSxxQkFBcUIsR0FBRyxRQUFRLENBQUE7b0JBQ3BDLElBQUksb0JBQW9CLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQTtvQkFFdkMsSUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO29CQUNoQyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFBO29CQUM5QyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksVUFBVSxJQUFJLEdBQUcsWUFBWSxpQkFBaUIsQ0FBQyxFQUFFO3dCQUNwRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUE7d0JBQ3ZDLE9BQU07cUJBQ1A7b0JBQ0QsSUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUMxQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUNmLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQzlDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDekMsQ0FBQzthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFSyxxQkFBRyxHQUFULFVBQVUsUUFBUTs7Ozs7Ozt3QkFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUE7d0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUc7NEJBRWIsR0FBRzs0QkFDSCxDQUFDOzRCQUNELElBQUk7NEJBQ0osSUFBSTs0QkFDSixLQUFLOzRCQUNMLE1BQU07NEJBQ04sSUFBSTt5QkFDTCxDQUFBO3dCQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFBO3dCQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7d0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO3dCQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTt3QkFFYixHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBOzs7NkJBRW5ELElBQUk7d0JBQ0gsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTzs0QkFDMUMsS0FBSSxDQUFDLHVCQUF1QixHQUFHO2dDQUM3QixJQUFJLEtBQUksQ0FBQyxNQUFNLEVBQUU7b0NBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFBO2lDQUMvRDtnQ0FDRCxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBOzRCQUN4QixDQUFDLENBQUE7d0JBQ0gsQ0FBQyxDQUFDLENBQUE7d0JBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7d0JBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTs0QkFDZixjQUFLO3lCQUNOO3dCQUNELFdBQU0sZUFBZSxFQUFBOzt3QkFBckIsU0FBcUIsQ0FBQTs7Ozs7O0tBRXhCO0lBRUQseUJBQU8sR0FBUDtRQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQTtTQUNqRDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1NBQzNCO0lBQ0gsQ0FBQztJQUVELGtDQUFnQixHQUFoQixVQUFpQixFQUFFO1FBQ2pCLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNmLE9BQU87WUFDTCxJQUFNLEtBQUssR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUE7WUFDckQsRUFBRSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7WUFDeEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ1osT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFBO1FBQ3JCLENBQUMsQ0FBQTtJQUNILENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQXJZVyxHQXFZWCxDQUFBO0FBRUQsa0JBQWUsTUFBTSxDQUFDLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1ub2NoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4vLyBUaGlzIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgZm9yIHVzZSBieSB0aGUgVGlueUdvIGNvbXBpbGVyLlxuXG4vLyBNYXAgbXVsdGlwbGUgSmF2YVNjcmlwdCBlbnZpcm9ubWVudHMgdG8gYSBzaW5nbGUgY29tbW9uIEFQSSxcbi8vIHByZWZlcnJpbmcgd2ViIHN0YW5kYXJkcyBvdmVyIE5vZGUuanMgQVBJLlxuLy9cbi8vIEVudmlyb25tZW50cyBjb25zaWRlcmVkOlxuLy8gLSBCcm93c2Vyc1xuLy8gLSBOb2RlLmpzXG4vLyAtIEVsZWN0cm9uXG4vLyAtIFBhcmNlbFxuXG5pZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZ2xvYmFsIGFscmVhZHkgZXhpc3RzXG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHdpbmRvdy5nbG9iYWwgPSB3aW5kb3dcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7XG4gIHNlbGYuZ2xvYmFsID0gc2VsZlxufSBlbHNlIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZXhwb3J0IEdvIChuZWl0aGVyIGdsb2JhbCwgd2luZG93IG5vciBzZWxmIGlzIGRlZmluZWQpJylcbn1cblxuaWYgKCFnbG9iYWwucmVxdWlyZSAmJiB0eXBlb2YgcmVxdWlyZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZ2xvYmFsLnJlcXVpcmUgPSByZXF1aXJlXG59XG5cbi8vIGlmICghZ2xvYmFsLmZzICYmIGdsb2JhbC5yZXF1aXJlKSB7XG4vLyAgIGdsb2JhbC5mcyA9IHJlcXVpcmUoJ2ZzJylcbi8vIH1cblxuY29uc3QgZW5vc3lzID0gKCkgPT4ge1xuICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpXG4gIGVyci5jb2RlID0gJ0VOT1NZUydcbiAgcmV0dXJuIGVyclxufVxuXG5pZiAoIWdsb2JhbC5mcykge1xuICBsZXQgb3V0cHV0QnVmID0gJydcbiAgZ2xvYmFsLmZzID0ge1xuICAgIGNvbnN0YW50czogeyBPX1dST05MWTogLTEsIE9fUkRXUjogLTEsIE9fQ1JFQVQ6IC0xLCBPX1RSVU5DOiAtMSwgT19BUFBFTkQ6IC0xLCBPX0VYQ0w6IC0xIH0sIC8vIHVudXNlZFxuICAgIHdyaXRlU3luYyhmZCwgYnVmKSB7XG4gICAgICBvdXRwdXRCdWYgKz0gZGVjb2Rlci5kZWNvZGUoYnVmKVxuICAgICAgY29uc3QgbmwgPSBvdXRwdXRCdWYubGFzdEluZGV4T2YoJ1xcbicpXG4gICAgICBpZiAobmwgIT0gLTEpIHtcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0QnVmLnN1YnN0cigwLCBubCkpXG4gICAgICAgIG91dHB1dEJ1ZiA9IG91dHB1dEJ1Zi5zdWJzdHIobmwgKyAxKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGJ1Zi5sZW5ndGhcbiAgICB9LFxuICAgIHdyaXRlKGZkLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgIGlmIChvZmZzZXQgIT09IDAgfHwgbGVuZ3RoICE9PSBidWYubGVuZ3RoIHx8IHBvc2l0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNhbGxiYWNrKGVub3N5cygpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IG4gPSB0aGlzLndyaXRlU3luYyhmZCwgYnVmKVxuICAgICAgY2FsbGJhY2sobnVsbCwgbilcbiAgICB9LFxuICAgIGNobW9kKHBhdGgsIG1vZGUsIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhlbm9zeXMoKSlcbiAgICB9LFxuICAgIGNob3duKHBhdGgsIHVpZCwgZ2lkLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICBjbG9zZShmZCwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKGVub3N5cygpKVxuICAgIH0sXG4gICAgZmNobW9kKGZkLCBtb2RlLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICBmY2hvd24oZmQsIHVpZCwgZ2lkLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICBmc3RhdChmZCwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKGVub3N5cygpKVxuICAgIH0sXG4gICAgZnN5bmMoZmQsIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhudWxsKVxuICAgIH0sXG4gICAgZnRydW5jYXRlKGZkLCBsZW5ndGgsIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhlbm9zeXMoKSlcbiAgICB9LFxuICAgIGxjaG93bihwYXRoLCB1aWQsIGdpZCwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKGVub3N5cygpKVxuICAgIH0sXG4gICAgbGluayhwYXRoLCBsaW5rLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICBsc3RhdChwYXRoLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICBta2RpcihwYXRoLCBwZXJtLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICBvcGVuKHBhdGgsIGZsYWdzLCBtb2RlLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICByZWFkKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKGVub3N5cygpKVxuICAgIH0sXG4gICAgcmVhZGRpcihwYXRoLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICByZWFkbGluayhwYXRoLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICByZW5hbWUoZnJvbSwgdG8sIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhlbm9zeXMoKSlcbiAgICB9LFxuICAgIHJtZGlyKHBhdGgsIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhlbm9zeXMoKSlcbiAgICB9LFxuICAgIHN0YXQocGF0aCwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKGVub3N5cygpKVxuICAgIH0sXG4gICAgc3ltbGluayhwYXRoLCBsaW5rLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICB0cnVuY2F0ZShwYXRoLCBsZW5ndGgsIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhlbm9zeXMoKSlcbiAgICB9LFxuICAgIHVubGluayhwYXRoLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgICB1dGltZXMocGF0aCwgYXRpbWUsIG10aW1lLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soZW5vc3lzKCkpXG4gICAgfSxcbiAgfVxufVxuXG5pZiAoIWdsb2JhbC5wcm9jZXNzKSB7XG4gIGdsb2JhbC5wcm9jZXNzID0ge1xuICAgIGdldHVpZCgpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH0sXG4gICAgZ2V0Z2lkKCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfSxcbiAgICBnZXRldWlkKCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfSxcbiAgICBnZXRlZ2lkKCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfSxcbiAgICBnZXRncm91cHMoKSB7XG4gICAgICB0aHJvdyBlbm9zeXMoKVxuICAgIH0sXG4gICAgcGlkOiAtMSxcbiAgICBwcGlkOiAtMSxcbiAgICB1bWFzaygpIHtcbiAgICAgIHRocm93IGVub3N5cygpXG4gICAgfSxcbiAgICBjd2QoKSB7XG4gICAgICB0aHJvdyBlbm9zeXMoKVxuICAgIH0sXG4gICAgY2hkaXIoKSB7XG4gICAgICB0aHJvdyBlbm9zeXMoKVxuICAgIH0sXG4gIH1cbn1cblxuaWYgKCFnbG9iYWwuY3J5cHRvKSB7XG4gIHRocm93IG5ldyBFcnJvcignZ2xvYmFsVGhpcy5jcnlwdG8gaXMgbm90IGF2YWlsYWJsZSwgcG9seWZpbGwgcmVxdWlyZWQgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgb25seSknKVxuICAvLyBjb25zdCBub2RlQ3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJylcbiAgLy8gZ2xvYmFsLmNyeXB0byA9IHtcbiAgLy8gICBnZXRSYW5kb21WYWx1ZXMoYikge1xuICAvLyAgICAgbm9kZUNyeXB0by5yYW5kb21GaWxsU3luYyhiKVxuICAvLyAgIH0sXG4gIC8vIH1cbn1cblxuaWYgKCFnbG9iYWwucGVyZm9ybWFuY2UpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdnbG9iYWxUaGlzLnBlcmZvcm1hbmNlIGlzIG5vdCBhdmFpbGFibGUsIHBvbHlmaWxsIHJlcXVpcmVkIChwZXJmb3JtYW5jZS5ub3cgb25seSknKVxuICAvLyBnbG9iYWwucGVyZm9ybWFuY2UgPSB7XG4gIC8vICAgbm93KCkge1xuICAvLyAgICAgY29uc3QgW3NlYywgbnNlY10gPSBwcm9jZXNzLmhydGltZSgpXG4gIC8vICAgICByZXR1cm4gc2VjICogMTAwMCArIG5zZWMgLyAxMDAwMDAwXG4gIC8vICAgfSxcbiAgLy8gfVxufVxuXG5pZiAoIWdsb2JhbC5UZXh0RW5jb2Rlcikge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2dsb2JhbFRoaXMuVGV4dEVuY29kZXIgaXMgbm90IGF2YWlsYWJsZSwgcG9seWZpbGwgcmVxdWlyZWQnKVxuICAvLyBnbG9iYWwuVGV4dEVuY29kZXIgPSByZXF1aXJlKCd1dGlsJykuVGV4dEVuY29kZXJcbn1cblxuaWYgKCFnbG9iYWwuVGV4dERlY29kZXIpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdnbG9iYWxUaGlzLlRleHREZWNvZGVyIGlzIG5vdCBhdmFpbGFibGUsIHBvbHlmaWxsIHJlcXVpcmVkJylcbiAgLy8gZ2xvYmFsLlRleHREZWNvZGVyID0gcmVxdWlyZSgndXRpbCcpLlRleHREZWNvZGVyXG59XG5cbi8vIEVuZCBvZiBwb2x5ZmlsbHMgZm9yIGNvbW1vbiBBUEkuXG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoJ3V0Zi04JylcbmNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04JylcbnZhciBsb2dMaW5lID0gW11cblxuZ2xvYmFsLkdvID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9jYWxsYmFja1RpbWVvdXRzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5fbmV4dENhbGxiYWNrVGltZW91dElEID0gMVxuXG4gICAgY29uc3QgbWVtID0gKCkgPT4ge1xuICAgICAgLy8gVGhlIGJ1ZmZlciBtYXkgY2hhbmdlIHdoZW4gcmVxdWVzdGluZyBtb3JlIG1lbW9yeS5cbiAgICAgIHJldHVybiBuZXcgRGF0YVZpZXcodGhpcy5faW5zdC5leHBvcnRzLm1lbW9yeS5idWZmZXIpXG4gICAgfVxuXG4gICAgY29uc3Qgc2V0SW50NjQgPSAoYWRkciwgdikgPT4ge1xuICAgICAgbWVtKCkuc2V0VWludDMyKGFkZHIgKyAwLCB2LCB0cnVlKVxuICAgICAgbWVtKCkuc2V0VWludDMyKGFkZHIgKyA0LCBNYXRoLmZsb29yKHYgLyA0Mjk0OTY3Mjk2KSwgdHJ1ZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRJbnQ2NCA9IChhZGRyKSA9PiB7XG4gICAgICBjb25zdCBsb3cgPSBtZW0oKS5nZXRVaW50MzIoYWRkciArIDAsIHRydWUpXG4gICAgICBjb25zdCBoaWdoID0gbWVtKCkuZ2V0SW50MzIoYWRkciArIDQsIHRydWUpXG4gICAgICByZXR1cm4gbG93ICsgaGlnaCAqIDQyOTQ5NjcyOTZcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkVmFsdWUgPSAoYWRkcikgPT4ge1xuICAgICAgY29uc3QgZiA9IG1lbSgpLmdldEZsb2F0NjQoYWRkciwgdHJ1ZSlcbiAgICAgIGlmIChmID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmICghaXNOYU4oZikpIHtcbiAgICAgICAgcmV0dXJuIGZcbiAgICAgIH1cblxuICAgICAgY29uc3QgaWQgPSBtZW0oKS5nZXRVaW50MzIoYWRkciwgdHJ1ZSlcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZXNbaWRdXG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVWYWx1ZSA9IChhZGRyLCB2KSA9PiB7XG4gICAgICBjb25zdCBuYW5IZWFkID0gMHg3ZmY4MDAwMFxuXG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmIChpc05hTih2KSkge1xuICAgICAgICAgIG1lbSgpLnNldFVpbnQzMihhZGRyICsgNCwgbmFuSGVhZCwgdHJ1ZSlcbiAgICAgICAgICBtZW0oKS5zZXRVaW50MzIoYWRkciwgMCwgdHJ1ZSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gMCkge1xuICAgICAgICAgIG1lbSgpLnNldFVpbnQzMihhZGRyICsgNCwgbmFuSGVhZCwgdHJ1ZSlcbiAgICAgICAgICBtZW0oKS5zZXRVaW50MzIoYWRkciwgMSwgdHJ1ZSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBtZW0oKS5zZXRGbG9hdDY0KGFkZHIsIHYsIHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHYpIHtcbiAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgbWVtKCkuc2V0RmxvYXQ2NChhZGRyLCAwLCB0cnVlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgbWVtKCkuc2V0VWludDMyKGFkZHIgKyA0LCBuYW5IZWFkLCB0cnVlKVxuICAgICAgICAgIG1lbSgpLnNldFVpbnQzMihhZGRyLCAyLCB0cnVlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICBjYXNlIHRydWU6XG4gICAgICAgICAgbWVtKCkuc2V0VWludDMyKGFkZHIgKyA0LCBuYW5IZWFkLCB0cnVlKVxuICAgICAgICAgIG1lbSgpLnNldFVpbnQzMihhZGRyLCAzLCB0cnVlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICBjYXNlIGZhbHNlOlxuICAgICAgICAgIG1lbSgpLnNldFVpbnQzMihhZGRyICsgNCwgbmFuSGVhZCwgdHJ1ZSlcbiAgICAgICAgICBtZW0oKS5zZXRVaW50MzIoYWRkciwgNCwgdHJ1ZSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IGlkID0gdGhpcy5faWRzLmdldCh2KVxuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWQgPSB0aGlzLl9pZFBvb2wucG9wKClcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZCA9IHRoaXMuX3ZhbHVlcy5sZW5ndGhcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl92YWx1ZXNbaWRdID0gdlxuICAgICAgICB0aGlzLl9nb1JlZkNvdW50c1tpZF0gPSAwXG4gICAgICAgIHRoaXMuX2lkcy5zZXQodiwgaWQpXG4gICAgICB9XG4gICAgICB0aGlzLl9nb1JlZkNvdW50c1tpZF0rK1xuICAgICAgbGV0IHR5cGVGbGFnID0gMVxuICAgICAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIHR5cGVGbGFnID0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICAgICAgdHlwZUZsYWcgPSAzXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIHR5cGVGbGFnID0gNFxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBtZW0oKS5zZXRVaW50MzIoYWRkciArIDQsIG5hbkhlYWQgfCB0eXBlRmxhZywgdHJ1ZSlcbiAgICAgIG1lbSgpLnNldFVpbnQzMihhZGRyLCBpZCwgdHJ1ZSlcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkU2xpY2UgPSAoYXJyYXksIGxlbiwgY2FwKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodGhpcy5faW5zdC5leHBvcnRzLm1lbW9yeS5idWZmZXIsIGFycmF5LCBsZW4pXG4gICAgfVxuXG4gICAgY29uc3QgbG9hZFNsaWNlT2ZWYWx1ZXMgPSAoYXJyYXksIGxlbiwgY2FwKSA9PiB7XG4gICAgICBjb25zdCBhID0gbmV3IEFycmF5KGxlbilcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgYVtpXSA9IGxvYWRWYWx1ZShhcnJheSArIGkgKiA4KVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkU3RyaW5nID0gKHB0ciwgbGVuKSA9PiB7XG4gICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobmV3IERhdGFWaWV3KHRoaXMuX2luc3QuZXhwb3J0cy5tZW1vcnkuYnVmZmVyLCBwdHIsIGxlbikpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZU9yaWdpbiA9IERhdGUubm93KCkgLSBwZXJmb3JtYW5jZS5ub3coKVxuICAgIHRoaXMuaW1wb3J0T2JqZWN0ID0ge1xuICAgICAgd2FzaV9zbmFwc2hvdF9wcmV2aWV3MToge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvV0FTSS9ibG9iL21haW4vcGhhc2VzL3NuYXBzaG90L2RvY3MubWQjZmRfd3JpdGVcbiAgICAgICAgZmRfd3JpdGU6IGZ1bmN0aW9uIChmZCwgaW92c19wdHIsIGlvdnNfbGVuLCBud3JpdHRlbl9wdHIpIHtcbiAgICAgICAgICBsZXQgbndyaXR0ZW4gPSAwXG4gICAgICAgICAgaWYgKGZkID09IDEpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGlvdnNfaSA9IDA7IGlvdnNfaSA8IGlvdnNfbGVuOyBpb3ZzX2krKykge1xuICAgICAgICAgICAgICBsZXQgaW92X3B0ciA9IGlvdnNfcHRyICsgaW92c19pICogOCAvLyBhc3N1bWluZyB3YXNtMzJcbiAgICAgICAgICAgICAgbGV0IHB0ciA9IG1lbSgpLmdldFVpbnQzMihpb3ZfcHRyICsgMCwgdHJ1ZSlcbiAgICAgICAgICAgICAgbGV0IGxlbiA9IG1lbSgpLmdldFVpbnQzMihpb3ZfcHRyICsgNCwgdHJ1ZSlcbiAgICAgICAgICAgICAgbndyaXR0ZW4gKz0gbGVuXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgYyA9IG1lbSgpLmdldFVpbnQ4KHB0ciArIGkpXG4gICAgICAgICAgICAgICAgaWYgKGMgPT0gMTMpIHtcbiAgICAgICAgICAgICAgICAgIC8vIENSXG4gICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gMTApIHtcbiAgICAgICAgICAgICAgICAgIC8vIExGXG4gICAgICAgICAgICAgICAgICAvLyB3cml0ZSBsaW5lXG4gICAgICAgICAgICAgICAgICBsZXQgbGluZSA9IGRlY29kZXIuZGVjb2RlKG5ldyBVaW50OEFycmF5KGxvZ0xpbmUpKVxuICAgICAgICAgICAgICAgICAgbG9nTGluZSA9IFtdXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhsaW5lKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBsb2dMaW5lLnB1c2goYylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCBmaWxlIGRlc2NyaXB0b3I6JywgZmQpXG4gICAgICAgICAgfVxuICAgICAgICAgIG1lbSgpLnNldFVpbnQzMihud3JpdHRlbl9wdHIsIG53cml0dGVuLCB0cnVlKVxuICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH0sXG4gICAgICAgIGZkX2Nsb3NlOiAoKSA9PiAwLCAvLyBkdW1teVxuICAgICAgICBmZF9mZHN0YXRfZ2V0OiAoKSA9PiAwLCAvLyBkdW1teVxuICAgICAgICBmZF9zZWVrOiAoKSA9PiAwLCAvLyBkdW1teVxuICAgICAgICBwcm9jX2V4aXQ6IChjb2RlKSA9PiB7XG4gICAgICAgICAgaWYgKGdsb2JhbC5wcm9jZXNzKSB7XG4gICAgICAgICAgICAvLyBOb2RlLmpzXG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoY29kZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FuJ3QgZXhpdCBpbiBhIGJyb3dzZXIuXG4gICAgICAgICAgICB0aHJvdyAndHJ5aW5nIHRvIGV4aXQgd2l0aCBjb2RlICcgKyBjb2RlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByYW5kb21fZ2V0OiAoYnVmUHRyLCBidWZMZW4pID0+IHtcbiAgICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGxvYWRTbGljZShidWZQdHIsIGJ1ZkxlbikpXG4gICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgLy8gZnVuYyB0aWNrcygpIGZsb2F0NjRcbiAgICAgICAgJ3J1bnRpbWUudGlja3MnOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZS5ub3coKVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIGZ1bmMgc2xlZXBUaWNrcyh0aW1lb3V0IGZsb2F0NjQpXG4gICAgICAgICdydW50aW1lLnNsZWVwVGlja3MnOiAodGltZW91dCkgPT4ge1xuICAgICAgICAgIC8vIERvIG5vdCBzbGVlcCwgb25seSByZWFjdGl2YXRlIHNjaGVkdWxlciBhZnRlciB0aGUgZ2l2ZW4gdGltZW91dC5cbiAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuX2luc3QuZXhwb3J0cy5nb19zY2hlZHVsZXIsIHRpbWVvdXQpXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuYyBmaW5hbGl6ZVJlZih2IHJlZilcbiAgICAgICAgJ3N5c2NhbGwvanMuZmluYWxpemVSZWYnOiAoc3ApID0+IHtcbiAgICAgICAgICAvLyBOb3RlOiBUaW55R28gZG9lcyBub3Qgc3VwcG9ydCBmaW5hbGl6ZXJzIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGJlXG4gICAgICAgICAgLy8gY2FsbGVkLlxuICAgICAgICAgIGNvbnN0IGlkID0gbWVtKCkuZ2V0VWludDMyKHNwLCB0cnVlKVxuICAgICAgICAgIHRoaXMuX2dvUmVmQ291bnRzW2lkXS0tXG4gICAgICAgICAgaWYgKHRoaXMuX2dvUmVmQ291bnRzW2lkXSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuX3ZhbHVlc1tpZF1cbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpZF0gPSBudWxsXG4gICAgICAgICAgICB0aGlzLl9pZHMuZGVsZXRlKHYpXG4gICAgICAgICAgICB0aGlzLl9pZFBvb2wucHVzaChpZClcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gY29uc29sZS5lcnJvcignc3lzY2FsbC9qcy5maW5hbGl6ZVJlZiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBmdW5jIHN0cmluZ1ZhbCh2YWx1ZSBzdHJpbmcpIHJlZlxuICAgICAgICAnc3lzY2FsbC9qcy5zdHJpbmdWYWwnOiAocmV0X3B0ciwgdmFsdWVfcHRyLCB2YWx1ZV9sZW4pID0+IHtcbiAgICAgICAgICBjb25zdCBzID0gbG9hZFN0cmluZyh2YWx1ZV9wdHIsIHZhbHVlX2xlbilcbiAgICAgICAgICBzdG9yZVZhbHVlKHJldF9wdHIsIHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuYyB2YWx1ZUdldCh2IHJlZiwgcCBzdHJpbmcpIHJlZlxuICAgICAgICAnc3lzY2FsbC9qcy52YWx1ZUdldCc6IChyZXR2YWwsIHZfYWRkciwgcF9wdHIsIHBfbGVuKSA9PiB7XG4gICAgICAgICAgbGV0IHByb3AgPSBsb2FkU3RyaW5nKHBfcHRyLCBwX2xlbilcbiAgICAgICAgICBsZXQgdmFsdWUgPSBsb2FkVmFsdWUodl9hZGRyKVxuICAgICAgICAgIGxldCByZXN1bHQgPSBSZWZsZWN0LmdldCh2YWx1ZSwgcHJvcClcbiAgICAgICAgICBzdG9yZVZhbHVlKHJldHZhbCwgcmVzdWx0KVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIGZ1bmMgdmFsdWVTZXQodiByZWYsIHAgc3RyaW5nLCB4IHJlZilcbiAgICAgICAgJ3N5c2NhbGwvanMudmFsdWVTZXQnOiAodl9hZGRyLCBwX3B0ciwgcF9sZW4sIHhfYWRkcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHYgPSBsb2FkVmFsdWUodl9hZGRyKVxuICAgICAgICAgIGNvbnN0IHAgPSBsb2FkU3RyaW5nKHBfcHRyLCBwX2xlbilcbiAgICAgICAgICBjb25zdCB4ID0gbG9hZFZhbHVlKHhfYWRkcilcbiAgICAgICAgICBSZWZsZWN0LnNldCh2LCBwLCB4KVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIGZ1bmMgdmFsdWVEZWxldGUodiByZWYsIHAgc3RyaW5nKVxuICAgICAgICAnc3lzY2FsbC9qcy52YWx1ZURlbGV0ZSc6ICh2X2FkZHIsIHBfcHRyLCBwX2xlbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHYgPSBsb2FkVmFsdWUodl9hZGRyKVxuICAgICAgICAgIGNvbnN0IHAgPSBsb2FkU3RyaW5nKHBfcHRyLCBwX2xlbilcbiAgICAgICAgICBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHYsIHApXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuYyB2YWx1ZUluZGV4KHYgcmVmLCBpIGludCkgcmVmXG4gICAgICAgICdzeXNjYWxsL2pzLnZhbHVlSW5kZXgnOiAocmV0X2FkZHIsIHZfYWRkciwgaSkgPT4ge1xuICAgICAgICAgIHN0b3JlVmFsdWUocmV0X2FkZHIsIFJlZmxlY3QuZ2V0KGxvYWRWYWx1ZSh2X2FkZHIpLCBpKSlcbiAgICAgICAgfSxcblxuICAgICAgICAvLyB2YWx1ZVNldEluZGV4KHYgcmVmLCBpIGludCwgeCByZWYpXG4gICAgICAgICdzeXNjYWxsL2pzLnZhbHVlU2V0SW5kZXgnOiAodl9hZGRyLCBpLCB4X2FkZHIpID0+IHtcbiAgICAgICAgICBSZWZsZWN0LnNldChsb2FkVmFsdWUodl9hZGRyKSwgaSwgbG9hZFZhbHVlKHhfYWRkcikpXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuYyB2YWx1ZUNhbGwodiByZWYsIG0gc3RyaW5nLCBhcmdzIFtdcmVmKSAocmVmLCBib29sKVxuICAgICAgICAnc3lzY2FsbC9qcy52YWx1ZUNhbGwnOiAocmV0X2FkZHIsIHZfYWRkciwgbV9wdHIsIG1fbGVuLCBhcmdzX3B0ciwgYXJnc19sZW4sIGFyZ3NfY2FwKSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IGxvYWRWYWx1ZSh2X2FkZHIpXG4gICAgICAgICAgY29uc3QgbmFtZSA9IGxvYWRTdHJpbmcobV9wdHIsIG1fbGVuKVxuICAgICAgICAgIGNvbnN0IGFyZ3MgPSBsb2FkU2xpY2VPZlZhbHVlcyhhcmdzX3B0ciwgYXJnc19sZW4sIGFyZ3NfY2FwKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBtID0gUmVmbGVjdC5nZXQodiwgbmFtZSlcbiAgICAgICAgICAgIHN0b3JlVmFsdWUocmV0X2FkZHIsIFJlZmxlY3QuYXBwbHkobSwgdiwgYXJncykpXG4gICAgICAgICAgICBtZW0oKS5zZXRVaW50OChyZXRfYWRkciArIDgsIDEpXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBzdG9yZVZhbHVlKHJldF9hZGRyLCBlcnIpXG4gICAgICAgICAgICBtZW0oKS5zZXRVaW50OChyZXRfYWRkciArIDgsIDApXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIGZ1bmMgdmFsdWVJbnZva2UodiByZWYsIGFyZ3MgW11yZWYpIChyZWYsIGJvb2wpXG4gICAgICAgICdzeXNjYWxsL2pzLnZhbHVlSW52b2tlJzogKHJldF9hZGRyLCB2X2FkZHIsIGFyZ3NfcHRyLCBhcmdzX2xlbiwgYXJnc19jYXApID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdiA9IGxvYWRWYWx1ZSh2X2FkZHIpXG4gICAgICAgICAgICBjb25zdCBhcmdzID0gbG9hZFNsaWNlT2ZWYWx1ZXMoYXJnc19wdHIsIGFyZ3NfbGVuLCBhcmdzX2NhcClcbiAgICAgICAgICAgIHN0b3JlVmFsdWUocmV0X2FkZHIsIFJlZmxlY3QuYXBwbHkodiwgdW5kZWZpbmVkLCBhcmdzKSlcbiAgICAgICAgICAgIG1lbSgpLnNldFVpbnQ4KHJldF9hZGRyICsgOCwgMSlcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHN0b3JlVmFsdWUocmV0X2FkZHIsIGVycilcbiAgICAgICAgICAgIG1lbSgpLnNldFVpbnQ4KHJldF9hZGRyICsgOCwgMClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuYyB2YWx1ZU5ldyh2IHJlZiwgYXJncyBbXXJlZikgKHJlZiwgYm9vbClcbiAgICAgICAgJ3N5c2NhbGwvanMudmFsdWVOZXcnOiAocmV0X2FkZHIsIHZfYWRkciwgYXJnc19wdHIsIGFyZ3NfbGVuLCBhcmdzX2NhcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHYgPSBsb2FkVmFsdWUodl9hZGRyKVxuICAgICAgICAgIGNvbnN0IGFyZ3MgPSBsb2FkU2xpY2VPZlZhbHVlcyhhcmdzX3B0ciwgYXJnc19sZW4sIGFyZ3NfY2FwKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdG9yZVZhbHVlKHJldF9hZGRyLCBSZWZsZWN0LmNvbnN0cnVjdCh2LCBhcmdzKSlcbiAgICAgICAgICAgIG1lbSgpLnNldFVpbnQ4KHJldF9hZGRyICsgOCwgMSlcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHN0b3JlVmFsdWUocmV0X2FkZHIsIGVycilcbiAgICAgICAgICAgIG1lbSgpLnNldFVpbnQ4KHJldF9hZGRyICsgOCwgMClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuYyB2YWx1ZUxlbmd0aCh2IHJlZikgaW50XG4gICAgICAgICdzeXNjYWxsL2pzLnZhbHVlTGVuZ3RoJzogKHZfYWRkcikgPT4ge1xuICAgICAgICAgIHJldHVybiBsb2FkVmFsdWUodl9hZGRyKS5sZW5ndGhcbiAgICAgICAgfSxcblxuICAgICAgICAvLyB2YWx1ZVByZXBhcmVTdHJpbmcodiByZWYpIChyZWYsIGludClcbiAgICAgICAgJ3N5c2NhbGwvanMudmFsdWVQcmVwYXJlU3RyaW5nJzogKHJldF9hZGRyLCB2X2FkZHIpID0+IHtcbiAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKGxvYWRWYWx1ZSh2X2FkZHIpKVxuICAgICAgICAgIGNvbnN0IHN0ciA9IGVuY29kZXIuZW5jb2RlKHMpXG4gICAgICAgICAgc3RvcmVWYWx1ZShyZXRfYWRkciwgc3RyKVxuICAgICAgICAgIHNldEludDY0KHJldF9hZGRyICsgOCwgc3RyLmxlbmd0aClcbiAgICAgICAgfSxcblxuICAgICAgICAvLyB2YWx1ZUxvYWRTdHJpbmcodiByZWYsIGIgW11ieXRlKVxuICAgICAgICAnc3lzY2FsbC9qcy52YWx1ZUxvYWRTdHJpbmcnOiAodl9hZGRyLCBzbGljZV9wdHIsIHNsaWNlX2xlbiwgc2xpY2VfY2FwKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RyID0gbG9hZFZhbHVlKHZfYWRkcilcbiAgICAgICAgICBsb2FkU2xpY2Uoc2xpY2VfcHRyLCBzbGljZV9sZW4sIHNsaWNlX2NhcCkuc2V0KHN0cilcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBmdW5jIHZhbHVlSW5zdGFuY2VPZih2IHJlZiwgdCByZWYpIGJvb2xcbiAgICAgICAgJ3N5c2NhbGwvanMudmFsdWVJbnN0YW5jZU9mJzogKHZfYWRkciwgdF9hZGRyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGxvYWRWYWx1ZSh2X2FkZHIpIGluc3RhbmNlb2YgbG9hZFZhbHVlKHRfYWRkcilcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBmdW5jIGNvcHlCeXRlc1RvR28oZHN0IFtdYnl0ZSwgc3JjIHJlZikgKGludCwgYm9vbClcbiAgICAgICAgJ3N5c2NhbGwvanMuY29weUJ5dGVzVG9Hbyc6IChyZXRfYWRkciwgZGVzdF9hZGRyLCBkZXN0X2xlbiwgZGVzdF9jYXAsIHNvdXJjZV9hZGRyKSA9PiB7XG4gICAgICAgICAgbGV0IG51bV9ieXRlc19jb3BpZWRfYWRkciA9IHJldF9hZGRyXG4gICAgICAgICAgbGV0IHJldHVybmVkX3N0YXR1c19hZGRyID0gcmV0X2FkZHIgKyA0IC8vIEFkZHJlc3Mgb2YgcmV0dXJuZWQgYm9vbGVhbiBzdGF0dXMgdmFyaWFibGVcblxuICAgICAgICAgIGNvbnN0IGRzdCA9IGxvYWRTbGljZShkZXN0X2FkZHIsIGRlc3RfbGVuKVxuICAgICAgICAgIGNvbnN0IHNyYyA9IGxvYWRWYWx1ZShzb3VyY2VfYWRkcilcbiAgICAgICAgICBpZiAoIShzcmMgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IHNyYyBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSkge1xuICAgICAgICAgICAgbWVtKCkuc2V0VWludDgocmV0dXJuZWRfc3RhdHVzX2FkZHIsIDApIC8vIFJldHVybiBcIm5vdCBva1wiIHN0YXR1c1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRvQ29weSA9IHNyYy5zdWJhcnJheSgwLCBkc3QubGVuZ3RoKVxuICAgICAgICAgIGRzdC5zZXQodG9Db3B5KVxuICAgICAgICAgIHNldEludDY0KG51bV9ieXRlc19jb3BpZWRfYWRkciwgdG9Db3B5Lmxlbmd0aClcbiAgICAgICAgICBtZW0oKS5zZXRVaW50OChyZXR1cm5lZF9zdGF0dXNfYWRkciwgMSkgLy8gUmV0dXJuIFwib2tcIiBzdGF0dXNcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBjb3B5Qnl0ZXNUb0pTKGRzdCByZWYsIHNyYyBbXWJ5dGUpIChpbnQsIGJvb2wpXG4gICAgICAgIC8vIE9yaWdpbmFsbHkgY29waWVkIGZyb20gdXBzdHJlYW0gR28gcHJvamVjdCwgdGhlbiBtb2RpZmllZDpcbiAgICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2dvL2Jsb2IvM2Y5OTVjM2YzYjQzMDMzMDEzMDEzZTZjN2NjYzkzYTliMTQxMWNhOS9taXNjL3dhc20vd2FzbV9leGVjLmpzI0w0MDQtTDQxNlxuICAgICAgICAnc3lzY2FsbC9qcy5jb3B5Qnl0ZXNUb0pTJzogKHJldF9hZGRyLCBkZXN0X2FkZHIsIHNvdXJjZV9hZGRyLCBzb3VyY2VfbGVuLCBzb3VyY2VfY2FwKSA9PiB7XG4gICAgICAgICAgbGV0IG51bV9ieXRlc19jb3BpZWRfYWRkciA9IHJldF9hZGRyXG4gICAgICAgICAgbGV0IHJldHVybmVkX3N0YXR1c19hZGRyID0gcmV0X2FkZHIgKyA0IC8vIEFkZHJlc3Mgb2YgcmV0dXJuZWQgYm9vbGVhbiBzdGF0dXMgdmFyaWFibGVcblxuICAgICAgICAgIGNvbnN0IGRzdCA9IGxvYWRWYWx1ZShkZXN0X2FkZHIpXG4gICAgICAgICAgY29uc3Qgc3JjID0gbG9hZFNsaWNlKHNvdXJjZV9hZGRyLCBzb3VyY2VfbGVuKVxuICAgICAgICAgIGlmICghKGRzdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgZHN0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpKSB7XG4gICAgICAgICAgICBtZW0oKS5zZXRVaW50OChyZXR1cm5lZF9zdGF0dXNfYWRkciwgMCkgLy8gUmV0dXJuIFwibm90IG9rXCIgc3RhdHVzXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdG9Db3B5ID0gc3JjLnN1YmFycmF5KDAsIGRzdC5sZW5ndGgpXG4gICAgICAgICAgZHN0LnNldCh0b0NvcHkpXG4gICAgICAgICAgc2V0SW50NjQobnVtX2J5dGVzX2NvcGllZF9hZGRyLCB0b0NvcHkubGVuZ3RoKVxuICAgICAgICAgIG1lbSgpLnNldFVpbnQ4KHJldHVybmVkX3N0YXR1c19hZGRyLCAxKSAvLyBSZXR1cm4gXCJva1wiIHN0YXR1c1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBhc3luYyBydW4oaW5zdGFuY2UpIHtcbiAgICB0aGlzLl9pbnN0ID0gaW5zdGFuY2VcbiAgICB0aGlzLl92YWx1ZXMgPSBbXG4gICAgICAvLyBKUyB2YWx1ZXMgdGhhdCBHbyBjdXJyZW50bHkgaGFzIHJlZmVyZW5jZXMgdG8sIGluZGV4ZWQgYnkgcmVmZXJlbmNlIGlkXG4gICAgICBOYU4sXG4gICAgICAwLFxuICAgICAgbnVsbCxcbiAgICAgIHRydWUsXG4gICAgICBmYWxzZSxcbiAgICAgIGdsb2JhbCxcbiAgICAgIHRoaXMsXG4gICAgXVxuICAgIHRoaXMuX2dvUmVmQ291bnRzID0gW10gLy8gbnVtYmVyIG9mIHJlZmVyZW5jZXMgdGhhdCBHbyBoYXMgdG8gYSBKUyB2YWx1ZSwgaW5kZXhlZCBieSByZWZlcmVuY2UgaWRcbiAgICB0aGlzLl9pZHMgPSBuZXcgTWFwKCkgLy8gbWFwcGluZyBmcm9tIEpTIHZhbHVlcyB0byByZWZlcmVuY2UgaWRzXG4gICAgdGhpcy5faWRQb29sID0gW10gLy8gdW51c2VkIGlkcyB0aGF0IGhhdmUgYmVlbiBnYXJiYWdlIGNvbGxlY3RlZFxuICAgIHRoaXMuZXhpdGVkID0gZmFsc2UgLy8gd2hldGhlciB0aGUgR28gcHJvZ3JhbSBoYXMgZXhpdGVkXG5cbiAgICBjb25zdCBtZW0gPSBuZXcgRGF0YVZpZXcodGhpcy5faW5zdC5leHBvcnRzLm1lbW9yeS5idWZmZXIpXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgY2FsbGJhY2tQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5fcmVzb2x2ZUNhbGxiYWNrUHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5leGl0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIGNhbGxiYWNrOiBHbyBwcm9ncmFtIGhhcyBhbHJlYWR5IGV4aXRlZCcpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgMCkgLy8gbWFrZSBzdXJlIGl0IGlzIGFzeW5jaHJvbm91c1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgdGhpcy5faW5zdC5leHBvcnRzLl9zdGFydCgpXG4gICAgICBpZiAodGhpcy5leGl0ZWQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGNhbGxiYWNrUHJvbWlzZVxuICAgIH1cbiAgfVxuXG4gIF9yZXN1bWUoKSB7XG4gICAgaWYgKHRoaXMuZXhpdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvIHByb2dyYW0gaGFzIGFscmVhZHkgZXhpdGVkJylcbiAgICB9XG4gICAgdGhpcy5faW5zdC5leHBvcnRzLnJlc3VtZSgpXG4gICAgaWYgKHRoaXMuZXhpdGVkKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlRXhpdFByb21pc2UoKVxuICAgIH1cbiAgfVxuXG4gIF9tYWtlRnVuY1dyYXBwZXIoaWQpIHtcbiAgICBjb25zdCBnbyA9IHRoaXNcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXZlbnQgPSB7IGlkOiBpZCwgdGhpczogdGhpcywgYXJnczogYXJndW1lbnRzIH1cbiAgICAgIGdvLl9wZW5kaW5nRXZlbnQgPSBldmVudFxuICAgICAgZ28uX3Jlc3VtZSgpXG4gICAgICByZXR1cm4gZXZlbnQucmVzdWx0XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdsb2JhbC5Hb1xuIl19
@@ -0,0 +1,2 @@
1
+ import { ICloudbase } from '@cloudbase/types';
2
+ export declare function registerContainers(app: Pick<ICloudbase, 'registerComponent'>): void;