@witnet/sdk 1.2.7 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env_witnet +18 -18
- package/LICENSE +21 -21
- package/README.md +116 -116
- package/dist/package.json +14 -3
- package/dist/src/bin/helpers.d.ts +1 -0
- package/dist/src/bin/helpers.d.ts.map +1 -1
- package/dist/src/bin/helpers.js +31 -54
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +3 -9
- package/dist/src/lib/crypto/coinbase.d.ts.map +1 -1
- package/dist/src/lib/crypto/coinbase.js +2 -2
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +4 -6
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +20 -71
- package/dist/src/lib/crypto/payloads/StakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +4 -9
- package/dist/src/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +4 -7
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +4 -9
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +6 -13
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +2 -2
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +2 -2
- package/dist/src/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +2 -2
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +2 -2
- package/dist/src/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +2 -2
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +22 -31
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +6 -13
- package/dist/src/lib/crypto/utils.d.ts.map +1 -1
- package/dist/src/lib/crypto/utils.js +5 -9
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +9 -23
- package/dist/src/lib/radon/ccdr/eth.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +12 -32
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +3 -6
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +18 -41
- package/dist/src/lib/radon/reducers.js +2 -2
- package/dist/src/lib/radon/types.d.ts.map +1 -1
- package/dist/src/lib/radon/types.js +6 -32
- package/dist/src/lib/radon/utils.d.ts +1 -1
- package/dist/src/lib/radon/utils.d.ts.map +1 -1
- package/dist/src/lib/radon/utils.js +8 -9
- package/dist/src/lib/rest/kermit.d.ts.map +1 -1
- package/dist/src/lib/rest/kermit.js +1 -1
- package/dist/src/lib/rpc/nodes.d.ts.map +1 -1
- package/dist/src/lib/rpc/nodes.js +8 -28
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +16 -38
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +1 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +2 -5
- package/dist/witnet/assets/index.cjs +1 -1
- package/dist/witnet/assets/modals/index.cjs +1 -1
- package/dist/witnet/assets/modals/web3/eth.cjs +2 -2
- package/dist/witnet/assets/modals/web3/ipfs.cjs +2 -2
- package/dist/witnet/assets/modals/web3/wit.cjs +4 -11
- package/dist/witnet/assets/requests.cjs +3 -11
- package/package.json +7 -3
- package/src/bin/bots/watcher.cjs +27 -93
- package/src/bin/cli/inspect.js +30 -119
- package/src/bin/cli/network.js +46 -202
- package/src/bin/cli/nodes.js +12 -58
- package/src/bin/cli/radon.js +161 -396
- package/src/bin/cli/wallet.js +69 -241
- package/src/bin/helpers.js +66 -162
- package/src/bin/index.js +23 -52
- package/witnet/assets/_index.cjs +5 -5
- package/witnet/assets/_requests.cjs +25 -25
- package/witnet/assets/_sources.cjs +36 -36
- package/witnet/assets/_templates.cjs +36 -36
- package/witnet/assets/index.cjs +4 -4
- package/witnet/assets/modals/index.cjs +7 -7
- package/witnet/assets/modals/web3/eth.cjs +22 -27
- package/witnet/assets/modals/web3/ipfs.cjs +17 -22
- package/witnet/assets/modals/web3/wit.cjs +16 -28
- package/witnet/assets/requests.cjs +41 -49
package/dist/src/bin/helpers.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { exec } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
2
3
|
import { createRequire } from "node:module";
|
|
3
4
|
import * as net from "node:net";
|
|
4
5
|
import * as os from "node:os";
|
|
6
|
+
import path from "node:path";
|
|
5
7
|
import * as readline from "node:readline";
|
|
6
8
|
import moment from "moment";
|
|
7
9
|
const require = createRequire(import.meta.url);
|
|
@@ -34,14 +36,8 @@ export const whole_wits = (number, digits) => {
|
|
|
34
36
|
];
|
|
35
37
|
// const regexp = /\.0+$|(?<=\.[0-9])0+$/
|
|
36
38
|
const item = lookup.findLast((item) => number >= item.value);
|
|
37
|
-
const quotient = item
|
|
38
|
-
|
|
39
|
-
: number.toString();
|
|
40
|
-
const decimals = item
|
|
41
|
-
? (item.value + BigInt(number) - BigInt(quotient) * item.value)
|
|
42
|
-
.toString()
|
|
43
|
-
.slice(1)
|
|
44
|
-
: "";
|
|
39
|
+
const quotient = item ? Number(BigInt(number) / item.value) : number.toString();
|
|
40
|
+
const decimals = item ? (item.value + BigInt(number) - BigInt(quotient) * item.value).toString().slice(1) : "";
|
|
45
41
|
return item
|
|
46
42
|
? `${commas(quotient)}${decimals !== "" ? `.${decimals.slice(0, digits)}` : ""} ${item.symbol}`
|
|
47
43
|
: "(no coins)";
|
|
@@ -212,15 +208,12 @@ export function ipIsPrivateOrLocalhost(ip) {
|
|
|
212
208
|
return false;
|
|
213
209
|
}
|
|
214
210
|
export function isHexStringOfLength(str, length) {
|
|
215
|
-
return ((isHexString(str) &&
|
|
216
|
-
((str.startsWith("0x") && str.slice(2).length === length * 2) ||
|
|
217
|
-
str.length === length * 2)) ||
|
|
211
|
+
return ((isHexString(str) && ((str.startsWith("0x") && str.slice(2).length === length * 2) || str.length === length * 2)) ||
|
|
218
212
|
isWildcard(str));
|
|
219
213
|
}
|
|
220
214
|
export function isHexString(str) {
|
|
221
215
|
return ((typeof str === "string" &&
|
|
222
|
-
((str.startsWith("0x") && /^[a-fA-F0-9]+$/i.test(str.slice(2))) ||
|
|
223
|
-
/^[a-fA-F0-9]+$/i.test(str))) ||
|
|
216
|
+
((str.startsWith("0x") && /^[a-fA-F0-9]+$/i.test(str.slice(2))) || /^[a-fA-F0-9]+$/i.test(str))) ||
|
|
224
217
|
isWildcard(str));
|
|
225
218
|
}
|
|
226
219
|
export function toHexString(buffer, prefix0x = false) {
|
|
@@ -236,12 +229,7 @@ export function toHexString(buffer, prefix0x = false) {
|
|
|
236
229
|
export function parseURL(url) {
|
|
237
230
|
try {
|
|
238
231
|
const parsedUrl = new URL(url);
|
|
239
|
-
return [
|
|
240
|
-
`${parsedUrl.protocol}//`,
|
|
241
|
-
parsedUrl.host,
|
|
242
|
-
parsedUrl.pathname.slice(1),
|
|
243
|
-
parsedUrl.search.slice(1),
|
|
244
|
-
];
|
|
232
|
+
return [`${parsedUrl.protocol}//`, parsedUrl.host, parsedUrl.pathname.slice(1), parsedUrl.search.slice(1)];
|
|
245
233
|
}
|
|
246
234
|
catch {
|
|
247
235
|
throw new TypeError(`Invalid URL was provided: ${url}`);
|
|
@@ -309,7 +297,7 @@ export function showUsageFlags(flags) {
|
|
|
309
297
|
console.info("\nFLAGS:");
|
|
310
298
|
const maxLength = Math.max(...flags
|
|
311
299
|
.filter(([, { hint }]) => hint)
|
|
312
|
-
.map(([key, { param }]) => param ? key.length + param.length + 3 : key.length));
|
|
300
|
+
.map(([key, { param }]) => (param ? key.length + param.length + 3 : key.length)));
|
|
313
301
|
flags.forEach((flag) => {
|
|
314
302
|
const str = `${flag[0]}${flag[1].param ? gray(` <${flag[1].param}>`) : ""}`;
|
|
315
303
|
if (flag[1].hint) {
|
|
@@ -325,11 +313,7 @@ export function showUsageHeadline(cmd, subcmd, module) {
|
|
|
325
313
|
let params = module.router[subcmd]?.params;
|
|
326
314
|
// const options = module.router[subcmd]?.options
|
|
327
315
|
if (params) {
|
|
328
|
-
const optionalize = (str) => str.endsWith(" ...]")
|
|
329
|
-
? `[<${str.slice(1, -5)}> ...]`
|
|
330
|
-
: str[0] === "["
|
|
331
|
-
? `[<${str.slice(1, -1)}>]`
|
|
332
|
-
: `<${str}>`;
|
|
316
|
+
const optionalize = (str) => str.endsWith(" ...]") ? `[<${str.slice(1, -5)}> ...]` : str[0] === "[" ? `[<${str.slice(1, -1)}>]` : `<${str}>`;
|
|
333
317
|
if (Array.isArray(params)) {
|
|
334
318
|
params = `${params.map((param) => optionalize(param)).join(" ")} `;
|
|
335
319
|
}
|
|
@@ -361,9 +345,7 @@ export function showUsageOptions(options) {
|
|
|
361
345
|
if (options.length > 0) {
|
|
362
346
|
console.info("\nOPTIONS:");
|
|
363
347
|
const maxLength = options
|
|
364
|
-
.map((option) => option[1].param
|
|
365
|
-
? option[1].param.length + option[0].length + 3
|
|
366
|
-
: option[0].length)
|
|
348
|
+
.map((option) => (option[1].param ? option[1].param.length + option[0].length + 3 : option[0].length))
|
|
367
349
|
.reduce((prev, curr) => (curr > prev ? curr : prev));
|
|
368
350
|
options.forEach((option) => {
|
|
369
351
|
if (option[1].hint) {
|
|
@@ -399,13 +381,17 @@ export function checkRpcWildcards(wildcards) {
|
|
|
399
381
|
if (typeof wildcards === "object") {
|
|
400
382
|
Object.values(wildcards).forEach((wildcard) => {
|
|
401
383
|
if (Array.isArray(wildcard))
|
|
402
|
-
wildcard.forEach((item) =>
|
|
384
|
+
wildcard.forEach((item) => {
|
|
385
|
+
checkRpcWildcards(item);
|
|
386
|
+
});
|
|
403
387
|
else
|
|
404
388
|
checkRpcWildcards(wildcard);
|
|
405
389
|
});
|
|
406
390
|
}
|
|
407
391
|
else if (Array.isArray(wildcards)) {
|
|
408
|
-
wildcards.forEach((wildcard) =>
|
|
392
|
+
wildcards.forEach((wildcard) => {
|
|
393
|
+
checkRpcWildcards(wildcard);
|
|
394
|
+
});
|
|
409
395
|
}
|
|
410
396
|
else if (typeof wildcards === "string") {
|
|
411
397
|
if (isWildcard(wildcards)) {
|
|
@@ -429,9 +415,7 @@ export function replaceWildcards(obj, args) {
|
|
|
429
415
|
}
|
|
430
416
|
}
|
|
431
417
|
else if (obj && Array.isArray(obj)) {
|
|
432
|
-
obj = obj.map((value) => typeof value === "string" || Array.isArray(value)
|
|
433
|
-
? replaceWildcards(value, args)
|
|
434
|
-
: value);
|
|
418
|
+
obj = obj.map((value) => typeof value === "string" || Array.isArray(value) ? replaceWildcards(value, args) : value);
|
|
435
419
|
}
|
|
436
420
|
else if (obj && typeof obj === "object") {
|
|
437
421
|
obj = replaceObjectWildcards(obj, args);
|
|
@@ -457,9 +441,7 @@ export function spliceWildcard(obj, argIndex, argValue, argsCount) {
|
|
|
457
441
|
}
|
|
458
442
|
}
|
|
459
443
|
else if (obj && Array.isArray(obj)) {
|
|
460
|
-
obj = obj.map((value) => typeof value === "string" || Array.isArray(value)
|
|
461
|
-
? spliceWildcard(value, argIndex, argValue, argsCount)
|
|
462
|
-
: value);
|
|
444
|
+
obj = obj.map((value) => typeof value === "string" || Array.isArray(value) ? spliceWildcard(value, argIndex, argValue, argsCount) : value);
|
|
463
445
|
}
|
|
464
446
|
return obj;
|
|
465
447
|
}
|
|
@@ -478,9 +460,7 @@ export async function toolkitRun(settings, args) {
|
|
|
478
460
|
});
|
|
479
461
|
}
|
|
480
462
|
export function toUpperCamelCase(str) {
|
|
481
|
-
return str
|
|
482
|
-
.replace(/\b(\w)/g, (_match, capture) => capture.toUpperCase())
|
|
483
|
-
.replace(/\s+/g, "");
|
|
463
|
+
return str.replace(/\b(\w)/g, (_match, capture) => capture.toUpperCase()).replace(/\s+/g, "");
|
|
484
464
|
}
|
|
485
465
|
export function toUtf16Bytes(str) {
|
|
486
466
|
const bytes = new Uint8Array(str.length * 2);
|
|
@@ -509,8 +489,7 @@ export function toUtf8Array(str) {
|
|
|
509
489
|
// UTF-16 encodes 0x10000-0x10FFFF by
|
|
510
490
|
// subtracting 0x10000 and splitting the
|
|
511
491
|
// 20 bits of 0x0-0xFFFFF into two halves
|
|
512
|
-
charcode =
|
|
513
|
-
0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));
|
|
492
|
+
charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));
|
|
514
493
|
utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));
|
|
515
494
|
}
|
|
516
495
|
}
|
|
@@ -580,22 +559,22 @@ export function prompter(promise) {
|
|
|
580
559
|
return result;
|
|
581
560
|
});
|
|
582
561
|
}
|
|
562
|
+
export function searchWorkspace() {
|
|
563
|
+
let workspace = path.normalize(process.cwd());
|
|
564
|
+
while (!fs.existsSync(`${workspace}/witnet/assets`) && path.dirname(workspace) !== workspace) {
|
|
565
|
+
workspace = path.dirname(workspace);
|
|
566
|
+
}
|
|
567
|
+
return workspace;
|
|
568
|
+
}
|
|
583
569
|
export function traceChecklists(checklists) {
|
|
584
570
|
if (checklists && Object.keys(checklists).length > 0) {
|
|
585
|
-
const headlines = [
|
|
586
|
-
"NODES",
|
|
587
|
-
...Object.keys(checklists).map((key) => `:${key}`),
|
|
588
|
-
];
|
|
571
|
+
const headlines = ["NODES", ...Object.keys(checklists).map((key) => `:${key}`)];
|
|
589
572
|
checklists = Object.values(checklists);
|
|
590
573
|
const urls = Object.keys(checklists[0]);
|
|
591
574
|
const records = urls.map((url) => {
|
|
592
575
|
const errors = checklists.filter((checklist) => checklist[url] instanceof Error).length;
|
|
593
576
|
return [
|
|
594
|
-
errors === checklists.length
|
|
595
|
-
? colors.red(url)
|
|
596
|
-
: errors > 0
|
|
597
|
-
? colors.myellow(url)
|
|
598
|
-
: colors.mcyan(url),
|
|
577
|
+
errors === checklists.length ? colors.red(url) : errors > 0 ? colors.myellow(url) : colors.mcyan(url),
|
|
599
578
|
...checklists.map((checklist) => checklist[url] instanceof Error
|
|
600
579
|
? colors.red(checklist[url])
|
|
601
580
|
: checklist[url] === true
|
|
@@ -615,9 +594,7 @@ export function traceHeader(headline, color = normal, indent = "") {
|
|
|
615
594
|
console.info(`${indent}└─${"─".repeat(headline.length)}─┘`);
|
|
616
595
|
}
|
|
617
596
|
export function traceTable(records, options) {
|
|
618
|
-
const stringify = (data, humanizers, index) => humanizers?.[index]
|
|
619
|
-
? humanizers[index](data).toString()
|
|
620
|
-
: (data?.toString() ?? "");
|
|
597
|
+
const stringify = (data, humanizers, index) => humanizers?.[index] ? humanizers[index](data).toString() : (data?.toString() ?? "");
|
|
621
598
|
const max = (a, b) => (a > b ? a : b);
|
|
622
599
|
const reduceMax = (numbers) => numbers.reduce((curr, prev) => (prev > curr ? prev : curr), 0);
|
|
623
600
|
if (!options)
|
|
@@ -851,4 +828,4 @@ export function unescapeSlashes(str) {
|
|
|
851
828
|
}
|
|
852
829
|
return parsedStr;
|
|
853
830
|
}
|
|
854
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDakMsR0FBRyxDQUFDLE9BQU8sQ0FDViw2RUFBNkUsRUFDN0UsRUFBRSxDQUNGLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUNYLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3JELENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEUsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFD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QUFjLEdBQUcsV0FBVyxDQUFDO0FBQ3JELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBQ25ELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRXRELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2pELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2pELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2xELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3BELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQy9DLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQy9DLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQ2hELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3BELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQzlDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBRWpELE1BQU0sSUFBSSxHQUFHLENB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QUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBRztJQUNsQywyREFBMkQ7SUFDM0Qsd0RBQXdEO0lBQ3hELElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFM0QsdURBQXVEO0lBQ3ZELHFDQUFxQztJQUNyQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRSxJQUFJLENBQUM7UUFDSixTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCAqIGFzIG5ldCBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tIFwibm9kZTpyZWFkbGluZVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnN0cmlwID0gKHN0cikgPT5cblx0c3RyLnJlcGxhY2UoXG5cdFx0L1tcXHUwMDFiXFx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZyxcblx0XHRcIlwiLFxuXHQpO1xuXG5leHBvcnQgY29uc3QgY29tbWFzID0gKG51bWJlcikgPT4ge1xuXHRjb25zdCBwYXJ0cyA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcblx0Y29uc3QgcmVzdWx0ID1cblx0XHRwYXJ0cy5sZW5ndGggPD0gMVxuXHRcdFx0PyBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9YFxuXHRcdFx0OiBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9LiR7cGFydHNbMV19YDtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpeGVkVHJ1bmMoeCwgbikge1xuXHRjb25zdCB2ID0gKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiID8geCA6IHgudG9TdHJpbmcoKSkuc3BsaXQoXCIuXCIpO1xuXHRpZiAobiA8PSAwKSByZXR1cm4gdlswXTtcblx0bGV0IGYgPSB2WzFdIHx8IFwiXCI7XG5cdGlmIChmLmxlbmd0aCA+IG4pIHJldHVybiBgJHt2WzBdfS4ke2Yuc3Vic3RyKDAsIG4pfWA7XG5cdHdoaWxlIChmLmxlbmd0aCA8IG4pIGYgKz0gXCIwXCI7XG5cdHJldHVybiBgJHt2WzBdfS4ke2Z9YDtcbn1cblxuZXhwb3J0IGNvbnN0IHdob2xlX3dpdHMgPSAobnVtYmVyLCBkaWdpdHMpID0+IHtcblx0Y29uc3QgbG9va3VwID0gW1xuXHRcdHsgdmFsdWU6IDFuLCBzeW1ib2w6IFwicGVkcm9zXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogNm4sIHN5bWJvbDogXCJtV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDluLCBzeW1ib2w6IFwiIFdpdHNcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiAxMm4sIHN5bWJvbDogXCJLV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDE1biwgc3ltYm9sOiBcIk1XaXRzXCIgfSxcblx0XTtcblx0Ly8gY29uc3QgcmVnZXhwID0gL1xcLjArJHwoPzw9XFwuWzAtOV0pMCskL1xuXHRjb25zdCBpdGVtID0gbG9va3VwLmZpbmRMYXN0KChpdGVtKSA9PiBudW1iZXIgPj0gaXRlbS52YWx1ZSk7XG5cdGNvbnN0IHF1b3RpZW50ID0gaXRlbVxuXHRcdD8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSlcblx0XHQ6IG51bWJlci50b1N0cmluZygpO1xuXHRjb25zdCBkZWNpbWFscyA9IGl0ZW1cblx0XHQ/IChpdGVtLnZhbHVlICsgQmlnSW50KG51bWJlcikgLSBCaWdJbnQocXVvdGllbnQpICogaXRlbS52YWx1ZSlcblx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0LnNsaWNlKDEpXG5cdFx0OiBcIlwiO1xuXHRyZXR1cm4gaXRlbVxuXHRcdD8gYCR7Y29tbWFzKHF1b3RpZW50KX0ke2RlY2ltYWxzICE9PSBcIlwiID8gYC4ke2RlY2ltYWxzLnNsaWNlKDAsIGRpZ2l0cyl9YCA6IFwiXCJ9ICR7aXRlbS5zeW1ib2x9YFxuXHRcdDogXCIobm8gY29pbnMpXCI7XG59O1xuXG5jb25zdCBiYmx1ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4OzQ0bSR7c3RyfVxceDFiWzA7MDswbWA7XG5jb25zdCBiY3lhbiA9IChzdHIpID0+IGBcXHgxYlszODs0Nm0ke3N0cn1cXHgxYlswOzBtYDtcbmNvbnN0IGJncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMDs0Mm0ke3N0cn1cXHgxYlswOzBtYDtcbmNvbnN0IGJyZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDFtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBidmlvbGV0ID0gKHN0cikgPT4gYFxceDFiWzMwOzQ1bSR7c3RyfVxceDFiWzA7MG1gO1xuXG5jb25zdCBsY3lhbiA9IChzdHIpID0+IGBcXHgxYlsxOzk2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxncmF5ID0gKHN0cikgPT4gYFxceDFiWzE7OTBtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzE7OTJtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMTs5NW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBseWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzE7OTNtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbOTRtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbOTZtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWdyZWVuID0gKHN0cikgPT4gYFxceDFiWzkybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1tYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7OTVtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbXJlZCA9IChzdHIpID0+IGBcXHgxYls5MW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBteWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzkzbSR7c3RyfVxceDFiWzBtYDtcblxuY29uc3QgYmx1ZSA9IChzdHIpID0+IGBcXHgxYlszNG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBjeWFuID0gKHN0cikgPT4gYFxceDFiWzM2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbOTBtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzJtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzM1bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG5vcm1hbCA9IChzdHIpID0+IGBcXHgxYls5OG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCByZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzFtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3Qgd2hpdGUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5OG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCB5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMzNtJHtzdHJ9XFx4MWJbMG1gO1xuXG5leHBvcnQgY29uc3QgY29sb3JzID0ge1xuXHRiYmx1ZSxcblx0YmN5YW4sXG5cdGJncmVlbixcblx0YnJlZCxcblx0YnZpb2xldCxcblx0bGN5YW4sXG5cdGxncmF5LFxuXHRsZ3JlZW4sXG5cdGxtYWdlbnRhLFxuXHRseWVsbG93LFxuXHRtYmx1ZSxcblx0bWN5YW4sXG5cdG1ncmVlbixcblx0bW1hZ2VudGEsXG5cdG1yZWQsXG5cdG15ZWxsb3csXG5cdGJsdWUsXG5cdGN5YW4sXG5cdGdyYXksXG5cdGdyZWVuLFxuXHRtYWdlbnRhLFxuXHRub3JtYWwsXG5cdHJlZCxcblx0d2hpdGUsXG5cdHllbGxvdyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudExlYXZlcyh0LCBvYmopIHtcblx0aWYgKCFvYmogfHwgdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIDA7XG5cdGlmIChvYmogaW5zdGFuY2VvZiB0KSByZXR1cm4gMTtcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSlcblx0XHRyZXR1cm4gb2JqLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMCk7XG5cdGVsc2Vcblx0XHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZShcblx0XHRcdChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLFxuXHRcdFx0MCxcblx0XHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlRXh0cmFGbGFncyhhcmdzKSB7XG5cdHJldHVybiBhcmdzLmZpbHRlcigoYXJnKSA9PiAhYXJnLnN0YXJ0c1dpdGgoXCItLVwiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbWQoLi4uY29tbWFuZCkge1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdGV4ZWMoXG5cdFx0XHRjb21tYW5kLmpvaW4oXCIgXCIpLFxuXHRcdFx0eyBtYXhCdWZmZXI6IDEwMjQgKiAxMDI0ICogMTAgfSxcblx0XHRcdChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcblx0XHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc3RkZXJyKSB7XG5cdFx0XHRcdFx0cmVqZWN0KHN0ZGVycik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzb2x2ZShzdGRvdXQpO1xuXHRcdFx0fSxcblx0XHQpO1xuXHR9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWNSYWRvbkJ5dGVjb2RlKGJ5dGVjb2RlLCAuLi5mbGFncykge1xuXHRpZiAoIWlzSGV4U3RyaW5nKGJ5dGVjb2RlKSkge1xuXHRcdHRocm93IEV2YWxFcnJvcihcImludmFsaWQgaGV4IHN0cmluZ1wiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBucHggPSBvcy50eXBlKCkgPT09IFwiV2luZG93c19OVFwiID8gXCJucHguY21kXCIgOiBcIm5weFwiO1xuXHRcdHJldHVybiBjbWQobnB4LCBcIndpdHNka1wiLCBcInJhZG9uXCIsIFwiZHJ5LXJ1blwiLCBieXRlY29kZSwgLi4uZmxhZ3MpO1xuXHRcdC8vIC5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0Ly8gICAgIGxldCBlcnJvck1lc3NhZ2UgPSBlcnIubWVzc2FnZS5zcGxpdCgnXFxuJykuc2xpY2UoMSkuam9pbignXFxuJykudHJpbSgpXG5cdFx0Ly8gICAgIGNvbnN0IGVycm9yUmVnZXggPSAvLipeZXJyb3I6ICg/PG1lc3NhZ2U+LiopJC4qL2dtXG5cdFx0Ly8gICAgIGNvbnN0IG1hdGNoZWQgPSBlcnJvclJlZ2V4LmV4ZWMoZXJyLm1lc3NhZ2UpXG5cdFx0Ly8gICAgIGlmIChtYXRjaGVkKSB7XG5cdFx0Ly8gICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXRjaGVkLmdyb3Vwcy5tZXNzYWdlXG5cdFx0Ly8gICAgIH1cblx0XHQvLyAgICAgY29uc29sZS5sb2coZXJyb3JNZXNzYWdlIHx8IGVycilcblx0XHQvLyAgICAgY29uc29sZS5lcnJvcihlcnJvck1lc3NhZ2UgfHwgZXJyKVxuXHRcdC8vIH0pXG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RGcm9tQXJncyhhcmdzLCBmbGFncykge1xuXHRjb25zdCBjdXJhdGVkID0ge307XG5cdGlmIChhcmdzICYmIGZsYWdzKSB7XG5cdFx0T2JqZWN0LmtleXMoZmxhZ3MpLmZvckVhY2goKGZsYWcpID0+IHtcblx0XHRcdGNvbnN0IGZsYWdJbmRleCA9IGFyZ3MuaW5kZXhPZihgLS0ke2ZsYWd9YCk7XG5cdFx0XHRpZiAoZmxhZ0luZGV4ID49IDApIHtcblx0XHRcdFx0aWYgKGZsYWdzW2ZsYWddLnBhcmFtKSB7XG5cdFx0XHRcdFx0Y3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4XTtcblx0XHRcdFx0XHRpZiAoIWFyZ3NbZmxhZ0luZGV4ICsgMV0gfHwgYXJnc1tmbGFnSW5kZXggKyAxXS5zdGFydHNXaXRoKFwiLS1cIikpIHtcblx0XHRcdFx0XHRcdHRocm93IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgLS0ke2ZsYWd9YCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGN1cmF0ZWRbZmxhZ10gPSBhcmdzW2ZsYWdJbmRleCArIDFdO1xuXHRcdFx0XHRcdFx0YXJncy5zcGxpY2UoZmxhZ0luZGV4LCAyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VyYXRlZFtmbGFnXSA9IHRydWU7XG5cdFx0XHRcdFx0YXJncy5zcGxpY2UoZmxhZ0luZGV4LCAxKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBbYXJncywgY3VyYXRlZF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tSGV4U3RyaW5nKGhleFN0cmluZykge1xuXHRpZiAoaGV4U3RyaW5nLnN0YXJ0c1dpdGgoXCIweFwiKSkgaGV4U3RyaW5nID0gaGV4U3RyaW5nLnNsaWNlKDIpO1xuXHRyZXR1cm4gVWludDhBcnJheS5mcm9tKFxuXHRcdGhleFN0cmluZy5tYXRjaCgvLnsxLDJ9L2cpLm1hcCgoYnl0ZSkgPT4gcGFyc2VJbnQoYnl0ZSwgMTYpKSxcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QoaXApIHtcblx0aWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHtcblx0XHRpcCA9IGlwLnN1YnN0cmluZyg3KTtcblx0fVxuXG5cdGlmIChuZXQuaXNJUHY0KGlwKSkge1xuXHRcdC8vIGNoZWNrIGxvY2FsaG9zdFxuXHRcdGlmIChpcCA9PT0gXCIxMjcuMC4wLjFcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gICAgICAgICAxMC4wLjAuMCAtIDEwLjI1NS4yNTUuMjU1ICAgICAgICB8fCAgIDE3Mi4xNi4wLjAgLSAxNzIuMzEuMjU1LjI1NSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgMTkyLjE2OC4wLjAgLSAxOTIuMTY4LjI1NS4yNTVcblx0XHRyZXR1cm4gKFxuXHRcdFx0L14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHxcblx0XHRcdC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fFxuXHRcdFx0L14oMTkyKVxcLigxNjgpXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKVxuXHRcdCk7XG5cdH1cblxuXHQvLyBlbHNlOiBpcCBpcyBJUHY2XG5cdGNvbnN0IGZpcnN0V29yZCA9IGlwLnNwbGl0KFwiOlwiKS5maW5kKChlbCkgPT4gISFlbCk7IC8vIGdldCBmaXJzdCBub3QgZW1wdHkgd29yZFxuXG5cdC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcblx0aWYgKGlwID09PSBcIjo6MVwiKSByZXR1cm4gdHJ1ZTtcblx0Ly8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxuXHRlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIFRoZXNlIGRheXMgVW5pcXVlIExvY2FsIEFkZHJlc3NlcyAoVUxBKSBhcmUgdXNlZCBpbiBwbGFjZSBvZiBTaXRlIExvY2FsLlxuXHQvLyBSYW5nZTogZmMwMCAtIGZjZmZcblx0ZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZTtcblx0Ly8gUmFuZ2U6IGZkMDAgLSBmY2ZmXG5cdGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcblx0ZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcImZlODBcIikgcmV0dXJuIHRydWU7XG5cdC8vIERpc2NhcmQgUHJlZml4XG5cdGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWU7XG5cblx0Ly8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGgoc3RyLCBsZW5ndGgpIHtcblx0cmV0dXJuIChcblx0XHQoaXNIZXhTdHJpbmcoc3RyKSAmJlxuXHRcdFx0KChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIHN0ci5zbGljZSgyKS5sZW5ndGggPT09IGxlbmd0aCAqIDIpIHx8XG5cdFx0XHRcdHN0ci5sZW5ndGggPT09IGxlbmd0aCAqIDIpKSB8fFxuXHRcdGlzV2lsZGNhcmQoc3RyKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIZXhTdHJpbmcoc3RyKSB7XG5cdHJldHVybiAoXG5cdFx0KHR5cGVvZiBzdHIgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdCgoc3RyLnN0YXJ0c1dpdGgoXCIweFwiKSAmJiAvXlthLWZBLUYwLTldKyQvaS50ZXN0KHN0ci5zbGljZSgyKSkpIHx8XG5cdFx0XHRcdC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyKSkpIHx8XG5cdFx0aXNXaWxkY2FyZChzdHIpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0hleFN0cmluZyhidWZmZXIsIHByZWZpeDB4ID0gZmFsc2UpIHtcblx0aWYgKGJ1ZmZlciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcik7XG5cdHJldHVybiAoXG5cdFx0KHByZWZpeDB4ID8gXCIweFwiIDogXCJcIikgK1xuXHRcdEFycmF5LnByb3RvdHlwZS5tYXBcblx0XHRcdC5jYWxsKGJ1ZmZlciwgKHgpID0+IGAwMCR7eC50b1N0cmluZygxNil9YC5zbGljZSgtMikpXG5cdFx0XHQuam9pbihcIlwiKVxuXHRcdFx0Lm1hdGNoKC9bYS1mQS1GMC05XXsyfS9nKVxuXHRcdFx0LmpvaW4oXCJcIilcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVVJMKHVybCkge1xuXHR0cnkge1xuXHRcdGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwodXJsKTtcblx0XHRyZXR1cm4gW1xuXHRcdFx0YCR7cGFyc2VkVXJsLnByb3RvY29sfS8vYCxcblx0XHRcdHBhcnNlZFVybC5ob3N0LFxuXHRcdFx0cGFyc2VkVXJsLnBhdGhuYW1lLnNsaWNlKDEpLFxuXHRcdFx0cGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKSxcblx0XHRdO1xuXHR9IGNhdGNoIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFVSTCB3YXMgcHJvdmlkZWQ6ICR7dXJsfWApO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2UoY21kLCBtb2R1bGUpIHtcblx0c2hvd1VzYWdlSGVhZGxpbmUoY21kKTtcblx0c2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MgfSk7XG5cdHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncyB9KTtcblx0c2hvd1VzYWdlUm91dGVyKHsgLi4ubW9kdWxlPy5yb3V0ZXIgfSk7XG5cdHNob3dVc2FnZUVudmFycyh7IC4uLm1vZHVsZT8uZW52YXJzIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlUm91dGVyKHJvdXRlcikge1xuXHRjb25zdCBjbWRzID0gT2JqZWN0LmVudHJpZXMocm91dGVyKTtcblx0aWYgKGNtZHMubGVuZ3RoID4gMCkge1xuXHRcdGNvbnNvbGUuaW5mbyhcIlxcblNVQkNPTU1BTkRTOlwiKTtcblx0XHRjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heCguLi5jbWRzLm1hcCgoW2NtZF0pID0+IGNtZC5sZW5ndGgpKTtcblx0XHRjbWRzLmZvckVhY2goKGNtZCkgPT4ge1xuXHRcdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdGAke2NtZFswXX0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjbWRbMF0ubGVuZ3RoKX1gLFxuXHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdGNtZFsxXS5oaW50LFxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlRXJyb3IoY21kLCBzdWJjbWQsIG1vZHVsZSwgZXJyb3IsIGZsYWdzKSB7XG5cdHNob3dVc2FnZVN1YmNvbW1hbmQoY21kLCBzdWJjbWQsIG1vZHVsZSwgZXJyb3IpO1xuXHRpZiAoZXJyb3IpIHtcblx0XHRjb25zb2xlLmluZm8oXCJcXG5FUlJPUjpcIik7XG5cdFx0aWYgKGZsYWdzPy5kZWJ1Zykge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoY29sb3JzLnJlZChlcnJvcj8uc3RhY2s/LnNwbGl0KFwiXFxuXCIpWzBdIHx8IGVycm9yKSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VFbnZhcnMoZW52YXJzKSB7XG5cdGlmIChlbnZhcnMpIHtcblx0XHRlbnZhcnMgPSBPYmplY3QuZW50cmllcyhlbnZhcnMpO1xuXHRcdGlmIChlbnZhcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKFwiXFxuRU5WQVJTOlwiKTtcblx0XHRcdGNvbnN0IG1heFdpZHRoID0gTWF0aC5tYXgoLi4uZW52YXJzLm1hcCgoW2VudmFyXSkgPT4gZW52YXIubGVuZ3RoKSk7XG5cdFx0XHRlbnZhcnMuZm9yRWFjaCgoW2VudmFyLCBoaW50XSkgPT4ge1xuXHRcdFx0XHRpZiAoZW52YXIudG9VcHBlckNhc2UoKS5pbmRleE9mKFwiS0VZXCIpIDwgMCAmJiBwcm9jZXNzLmVudltlbnZhcl0pIHtcblx0XHRcdFx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdFx0XHRgJHt5ZWxsb3coZW52YXIudG9VcHBlckNhc2UoKSl9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBlbnZhci5sZW5ndGgpfWAsXG5cdFx0XHRcdFx0XHRgID0+IFNldHRsZWQgdG8gXCIke215ZWxsb3cocHJvY2Vzcy5lbnZbZW52YXJdKX1cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdFx0XHRgJHt5ZWxsb3coZW52YXIudG9VcHBlckNhc2UoKSl9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBlbnZhci5sZW5ndGgpfWAsXG5cdFx0XHRcdFx0XHRgICR7aGludH1gLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlRmxhZ3MoZmxhZ3MpIHtcblx0aWYgKGZsYWdzKSB7XG5cdFx0ZmxhZ3MgPSBPYmplY3QuZW50cmllcyhmbGFncylcblx0XHRcdC5maWx0ZXIoKFssIGZsYWddKSA9PiAhZmxhZz8ucGFyYW0pXG5cdFx0XHQuc29ydCgoW2FdLCBbYl0pID0+IHtcblx0XHRcdFx0aWYgKGEgPCBiKSByZXR1cm4gLTE7XG5cdFx0XHRcdGVsc2UgaWYgKGEgPiBiKSByZXR1cm4gMTtcblx0XHRcdFx0ZWxzZSByZXR1cm4gMDtcblx0XHRcdH0pO1xuXHRcdGlmIChmbGFncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zb2xlLmluZm8oXCJcXG5GTEFHUzpcIik7XG5cdFx0XHRjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heChcblx0XHRcdFx0Li4uZmxhZ3Ncblx0XHRcdFx0XHQuZmlsdGVyKChbLCB7IGhpbnQgfV0pID0+IGhpbnQpXG5cdFx0XHRcdFx0Lm1hcCgoW2tleSwgeyBwYXJhbSB9XSkgPT5cblx0XHRcdFx0XHRcdHBhcmFtID8ga2V5Lmxlbmd0aCArIHBhcmFtLmxlbmd0aCArIDMgOiBrZXkubGVuZ3RoLFxuXHRcdFx0XHRcdCksXG5cdFx0XHQpO1xuXHRcdFx0ZmxhZ3MuZm9yRWFjaCgoZmxhZykgPT4ge1xuXHRcdFx0XHRjb25zdCBzdHIgPSBgJHtmbGFnWzBdfSR7ZmxhZ1sxXS5wYXJhbSA/IGdyYXkoYCA8JHtmbGFnWzFdLnBhcmFtfT5gKSA6IFwiXCJ9YDtcblx0XHRcdFx0aWYgKGZsYWdbMV0uaGludCkge1xuXHRcdFx0XHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdFx0XHRcdFwiICBcIixcblx0XHRcdFx0XHRcdGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsXG5cdFx0XHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdFx0XHRmbGFnWzFdLmhpbnQsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VIZWFkbGluZShjbWQsIHN1YmNtZCwgbW9kdWxlKSB7XG5cdGNvbnNvbGUuaW5mbyhcIlVTQUdFOlwiKTtcblx0aWYgKHN1YmNtZCkge1xuXHRcdGxldCBwYXJhbXMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/LnBhcmFtcztcblx0XHQvLyBjb25zdCBvcHRpb25zID0gbW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zXG5cdFx0aWYgKHBhcmFtcykge1xuXHRcdFx0Y29uc3Qgb3B0aW9uYWxpemUgPSAoc3RyKSA9PlxuXHRcdFx0XHRzdHIuZW5kc1dpdGgoXCIgLi4uXVwiKVxuXHRcdFx0XHRcdD8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWBcblx0XHRcdFx0XHQ6IHN0clswXSA9PT0gXCJbXCJcblx0XHRcdFx0XHRcdD8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYFxuXHRcdFx0XHRcdFx0OiBgPCR7c3RyfT5gO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuXHRcdFx0XHRwYXJhbXMgPSBgJHtwYXJhbXMubWFwKChwYXJhbSkgPT4gb3B0aW9uYWxpemUocGFyYW0pKS5qb2luKFwiIFwiKX0gYDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhcmFtcyA9IG9wdGlvbmFsaXplKHBhcmFtcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdGAgICAke2NvbG9ycy53aGl0ZShgbnB4IHdpdHNkayAke2NtZH1gKX0gJHtjb2xvcnMud2hpdGUoc3ViY21kKX0gJHtwYXJhbXMgPyBgJHtjb2xvcnMuZ3JlZW4ocGFyYW1zKX0gYCA6IFwiXCJ9W09QVElPTlNdIFtGTEFHU11gLFxuXHRcdCk7XG5cdFx0aWYgKG1vZHVsZT8ucm91dGVyW3N1YmNtZF0/LmhpbnQpIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkRFU0NSSVBUSU9OOlwiKTtcblx0XHRcdGNvbnNvbGUuaW5mbyhgICAgJHttb2R1bGUucm91dGVyW3N1YmNtZF0uaGludH1gKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYCxcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VPcHRpb25zKG9wdGlvbnMpIHtcblx0b3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpXG5cdFx0LmZpbHRlcigoWywgb3B0aW9uXSkgPT4gb3B0aW9uPy5wYXJhbSlcblx0XHQuc29ydCgoW2FdLCBbYl0pID0+IHtcblx0XHRcdGlmIChhIDwgYikgcmV0dXJuIC0xO1xuXHRcdFx0ZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxO1xuXHRcdFx0ZWxzZSByZXR1cm4gMDtcblx0XHR9KTtcblx0aWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdGNvbnNvbGUuaW5mbyhcIlxcbk9QVElPTlM6XCIpO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IG9wdGlvbnNcblx0XHRcdC5tYXAoKG9wdGlvbikgPT5cblx0XHRcdFx0b3B0aW9uWzFdLnBhcmFtXG5cdFx0XHRcdFx0PyBvcHRpb25bMV0ucGFyYW0ubGVuZ3RoICsgb3B0aW9uWzBdLmxlbmd0aCArIDNcblx0XHRcdFx0XHQ6IG9wdGlvblswXS5sZW5ndGgsXG5cdFx0XHQpXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldikpO1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG5cdFx0XHRpZiAob3B0aW9uWzFdLmhpbnQpIHtcblx0XHRcdFx0Y29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWA7XG5cdFx0XHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdFx0YC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCxcblx0XHRcdFx0XHRcIiAgXCIsXG5cdFx0XHRcdFx0b3B0aW9uWzFdLmhpbnQsXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZVN1YmNvbW1hbmQoY21kLCBzdWJjbWQsIG1vZHVsZSkge1xuXHRzaG93VXNhZ2VIZWFkbGluZShjbWQsIHN1YmNtZCwgbW9kdWxlKTtcblx0c2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MsIC4uLm1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ub3B0aW9ucyB9KTtcblx0c2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSk7XG5cdHNob3dVc2FnZUVudmFycyhtb2R1bGUucm91dGVyW3N1YmNtZF0/LmVudmFycyB8fCBtb2R1bGU/LmVudmFycyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VmVyc2lvbigpIHtcblx0Y29uc29sZS5pbmZvKFxuXHRcdGAke2NvbG9ycy5tY3lhbihgV2l0bmV0IFNESyB2JHtyZXF1aXJlKFwiLi4vLi4vcGFja2FnZS5qc29uXCIpLnZlcnNpb259YCl9YCxcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyhzdHIpIHtcblx0bGV0IG1heEFyZ3NJbmRleCA9IDA7XG5cdGlmIChzdHIgJiYgdHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIikge1xuXHRcdGxldCBtYXRjaDtcblx0XHRjb25zdCByZWdleHAgPSAvXFxcXFxcZFxcXFwvZztcblx0XHR3aGlsZSAoKG1hdGNoID0gcmVnZXhwLmV4ZWMoc3RyKSkgIT09IG51bGwpIHtcblx0XHRcdGNvbnN0IGFyZ3NJbmRleCA9IHBhcnNlSW50KG1hdGNoWzBdWzFdLCAxMCkgKyAxO1xuXHRcdFx0aWYgKGFyZ3NJbmRleCA+IG1heEFyZ3NJbmRleCkgbWF4QXJnc0luZGV4ID0gYXJnc0luZGV4O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWF4QXJnc0luZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmRzKSB7XG5cdGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0T2JqZWN0LnZhbHVlcyh3aWxkY2FyZHMpLmZvckVhY2goKHdpbGRjYXJkKSA9PiB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh3aWxkY2FyZCkpXG5cdFx0XHRcdHdpbGRjYXJkLmZvckVhY2goKGl0ZW0pID0+IGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pKTtcblx0XHRcdGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xuXHRcdHdpbGRjYXJkcy5mb3JFYWNoKCh3aWxkY2FyZCkgPT4gY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpKTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0aWYgKGlzV2lsZGNhcmQod2lsZGNhcmRzKSkge1xuXHRcdFx0Y29uc3QgY2hhciA9IHdpbGRjYXJkcy5jaGFyQXQoMSk7XG5cdFx0XHRpZiAoY2hhciA8IFwiMFwiIHx8IGNoYXIgPiBcIjlcIikge1xuXHRcdFx0XHR0aHJvdyBFcnJvcihcIlJQQzogd2lsZGNhcmRzIG5vdCBpbiByYW5nZSBbMCAuLiA5XVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2lsZGNhcmQoc3RyKSB7XG5cdHJldHVybiBzdHIubGVuZ3RoID09PSAzICYmIC9cXFxcXFxkXFxcXC9nLnRlc3Qoc3RyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VXaWxkY2FyZHMob2JqLCBhcmdzKSB7XG5cdGlmIChhcmdzLmxlbmd0aCA+IDEwKSBhcmdzID0gYXJncy5zbGljZSgwLCAxMCk7XG5cdGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuXHRcdGZvciAobGV0IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBhcmdzLmxlbmd0aDsgYXJnSW5kZXgrKykge1xuXHRcdFx0Y29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGA7XG5cdFx0XHRvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnc1thcmdJbmRleF0pO1xuXHRcdH1cblx0fSBlbHNlIGlmIChvYmogJiYgQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdFx0b2JqID0gb2JqLm1hcCgodmFsdWUpID0+XG5cdFx0XHR0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcblx0XHRcdFx0PyByZXBsYWNlV2lsZGNhcmRzKHZhbHVlLCBhcmdzKVxuXHRcdFx0XHQ6IHZhbHVlLFxuXHRcdCk7XG5cdH0gZWxzZSBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIpIHtcblx0XHRvYmogPSByZXBsYWNlT2JqZWN0V2lsZGNhcmRzKG9iaiwgYXJncyk7XG5cdH1cblx0cmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VPYmplY3RXaWxkY2FyZHMob2JqLCBhcmdzKSB7XG5cdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0T2JqZWN0LmVudHJpZXMob2JqKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuXHRcdFx0Zm9yIChsZXQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3MubGVuZ3RoOyBhcmdJbmRleCsrKSB7XG5cdFx0XHRcdGNvbnN0IHdpbGRjYXJkID0gYFxcXFwke2FyZ0luZGV4fVxcXFxgO1xuXHRcdFx0XHRrZXkgPSBrZXkucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnc1thcmdJbmRleF0pO1xuXHRcdFx0XHR2YWx1ZSA9IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFtrZXksIHZhbHVlXTtcblx0XHR9KSxcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZVdpbGRjYXJkKG9iaiwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpIHtcblx0aWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG5cdFx0Y29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGA7XG5cdFx0b2JqID0gb2JqLnJlcGxhY2VBbGwod2lsZGNhcmQsIGFyZ1ZhbHVlKTtcblx0XHRmb3IgKGxldCBqID0gYXJnSW5kZXggKyAxOyBqIDwgYXJnc0NvdW50OyBqKyspIHtcblx0XHRcdG9iaiA9IG9iai5yZXBsYWNlQWxsKGBcXFxcJHtqfVxcXFxgLCBgXFxcXCR7aiAtIDF9XFxcXGApO1xuXHRcdH1cblx0fSBlbHNlIGlmIChvYmogJiYgQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdFx0b2JqID0gb2JqLm1hcCgodmFsdWUpID0+XG5cdFx0XHR0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcblx0XHRcdFx0PyBzcGxpY2VXaWxkY2FyZCh2YWx1ZSwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpXG5cdFx0XHRcdDogdmFsdWUsXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9vbGtpdFJ1bihzZXR0aW5ncywgYXJncykge1xuXHRjb25zdCBjbWQgPSBgJHtzZXR0aW5ncy5wYXRocy50b29sa2l0QmluUGF0aH0gJHthcmdzLmpvaW4oXCIgXCIpfWA7XG5cdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0ZXhlYyhjbWQsIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcblx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRyZWplY3QoZXJyb3IpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0ZGVycikge1xuXHRcdFx0XHRyZWplY3Qoc3RkZXJyKTtcblx0XHRcdH1cblx0XHRcdHJlc29sdmUoc3Rkb3V0KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1VwcGVyQ2FtZWxDYXNlKHN0cikge1xuXHRyZXR1cm4gc3RyXG5cdFx0LnJlcGxhY2UoL1xcYihcXHcpL2csIChfbWF0Y2gsIGNhcHR1cmUpID0+IGNhcHR1cmUudG9VcHBlckNhc2UoKSlcblx0XHQucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXRmMTZCeXRlcyhzdHIpIHtcblx0Y29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMik7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdGJ5dGVzW2kgKiAyXSA9IGNvZGUgPj4gODtcblx0XHRieXRlc1tpICogMiArIDFdID0gY29kZSAmIDB4ZmY7XG5cdH1cblx0cmV0dXJuIGJ5dGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9VdGY4QXJyYXkoc3RyKSB7XG5cdGNvbnN0IHV0ZjggPSBbXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcblx0XHRsZXQgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpO1xuXHRcdGVsc2UgaWYgKGNoYXJjb2RlIDwgMHg4MDApIHtcblx0XHRcdHV0ZjgucHVzaCgweGMwIHwgKGNoYXJjb2RlID4+IDYpLCAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuXHRcdH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweGQ4MDAgfHwgY2hhcmNvZGUgPj0gMHhlMDAwKSB7XG5cdFx0XHR1dGY4LnB1c2goXG5cdFx0XHRcdDB4ZTAgfCAoY2hhcmNvZGUgPj4gMTIpLFxuXHRcdFx0XHQweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxuXHRcdFx0XHQweDgwIHwgKGNoYXJjb2RlICYgMHgzZiksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBzdXJyb2dhdGUgcGFpclxuXHRcdFx0aSsrO1xuXHRcdFx0Ly8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxuXHRcdFx0Ly8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZVxuXHRcdFx0Ly8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcblx0XHRcdGNoYXJjb2RlID1cblx0XHRcdFx0MHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSk7XG5cdFx0XHR1dGY4LnB1c2goXG5cdFx0XHRcdDB4ZjAgfCAoY2hhcmNvZGUgPj4gMTgpLFxuXHRcdFx0XHQweDgwIHwgKChjaGFyY29kZSA+PiAxMikgJiAweDNmKSxcblx0XHRcdFx0MHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSxcblx0XHRcdFx0MHg4MCB8IChjaGFyY29kZSAmIDB4M2YpLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHV0Zjg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1dGY4QXJyYXlUb1N0cihhcnJheSkge1xuXHRjb25zdCBsZW4gPSBhcnJheS5sZW5ndGg7XG5cdGxldCBvdXQgPSBcIlwiO1xuXHRsZXQgaSA9IDA7XG5cdGxldCBjO1xuXHRsZXQgY2hhcjIsIGNoYXIzO1xuXHR3aGlsZSAoaSA8IGxlbikge1xuXHRcdGMgPSBhcnJheVtpKytdO1xuXHRcdHN3aXRjaCAoYyA+PiA0KSB7XG5cdFx0XHRjYXNlIDA6XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRjYXNlIDM6XG5cdFx0XHRjYXNlIDQ6XG5cdFx0XHRjYXNlIDU6XG5cdFx0XHRjYXNlIDY6XG5cdFx0XHRjYXNlIDc6XG5cdFx0XHRcdC8vIDB4eHh4eHh4XG5cdFx0XHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTI6XG5cdFx0XHRjYXNlIDEzOlxuXHRcdFx0XHQvLyAxMTB4IHh4eHggICAxMHh4IHh4eHhcblx0XHRcdFx0Y2hhcjIgPSBhcnJheVtpKytdO1xuXHRcdFx0XHRvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDFmKSA8PCA2KSB8IChjaGFyMiAmIDB4M2YpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDE0OlxuXHRcdFx0XHQvLyAxMTEwIHh4eHggIDEweHggeHh4eCAgMTB4eCB4eHh4XG5cdFx0XHRcdGNoYXIyID0gYXJyYXlbaSsrXTtcblx0XHRcdFx0Y2hhcjMgPSBhcnJheVtpKytdO1xuXHRcdFx0XHRvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShcblx0XHRcdFx0XHQoKGMgJiAweDBmKSA8PCAxMikgfCAoKGNoYXIyICYgMHgzZikgPDwgNikgfCAoKGNoYXIzICYgMHgzZikgPDwgMCksXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uKSB7XG5cdGNvbnN0IHJlYWRsaW5lSW50ZXJmYWNlID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcblx0XHRpbnB1dDogcHJvY2Vzcy5zdGRpbixcblx0XHRvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuXHR9KTtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG5cdFx0cmVhZGxpbmVJbnRlcmZhY2UucXVlc3Rpb24oYCR7cXVlc3Rpb259IGAsIChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmVhZGxpbmVJbnRlcmZhY2UuY2xvc2UoKTtcblx0XHRcdHJlc29sdmUocmVzcG9uc2UudHJpbSgpKTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tcHRlcihwcm9taXNlKSB7XG5cdGNvbnN0IGxvYWRpbmcgPSAoKCkgPT4ge1xuXHRcdGNvbnN0IGggPSBbXCJ8XCIsIFwiL1wiLCBcIi1cIiwgXCJcXFxcXCJdO1xuXHRcdGxldCBpID0gMDtcblx0XHRyZXR1cm4gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aSA9IGkgPiAzID8gMCA6IGk7XG5cdFx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxiXFxiJHtoW2ldfSBgKTtcblx0XHRcdGkrKztcblx0XHR9LCA1MCk7XG5cdH0pKCk7XG5cdHJldHVybiBwcm9taXNlLnRoZW4oKHJlc3VsdCkgPT4ge1xuXHRcdGNsZWFySW50ZXJ2YWwobG9hZGluZyk7XG5cdFx0cHJvY2Vzcy5zdGRvdXQud3JpdGUoXCJcXGJcXGJcIik7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZUNoZWNrbGlzdHMoY2hlY2tsaXN0cykge1xuXHRpZiAoY2hlY2tsaXN0cyAmJiBPYmplY3Qua2V5cyhjaGVja2xpc3RzKS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgaGVhZGxpbmVzID0gW1xuXHRcdFx0XCJOT0RFU1wiLFxuXHRcdFx0Li4uT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubWFwKChrZXkpID0+IGA6JHtrZXl9YCksXG5cdFx0XTtcblx0XHRjaGVja2xpc3RzID0gT2JqZWN0LnZhbHVlcyhjaGVja2xpc3RzKTtcblx0XHRjb25zdCB1cmxzID0gT2JqZWN0LmtleXMoY2hlY2tsaXN0c1swXSk7XG5cdFx0Y29uc3QgcmVjb3JkcyA9IHVybHMubWFwKCh1cmwpID0+IHtcblx0XHRcdGNvbnN0IGVycm9ycyA9IGNoZWNrbGlzdHMuZmlsdGVyKFxuXHRcdFx0XHQoY2hlY2tsaXN0KSA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yLFxuXHRcdFx0KS5sZW5ndGg7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRlcnJvcnMgPT09IGNoZWNrbGlzdHMubGVuZ3RoXG5cdFx0XHRcdFx0PyBjb2xvcnMucmVkKHVybClcblx0XHRcdFx0XHQ6IGVycm9ycyA+IDBcblx0XHRcdFx0XHRcdD8gY29sb3JzLm15ZWxsb3codXJsKVxuXHRcdFx0XHRcdFx0OiBjb2xvcnMubWN5YW4odXJsKSxcblx0XHRcdFx0Li4uY2hlY2tsaXN0cy5tYXAoKGNoZWNrbGlzdCkgPT5cblx0XHRcdFx0XHRjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yXG5cdFx0XHRcdFx0XHQ/IGNvbG9ycy5yZWQoY2hlY2tsaXN0W3VybF0pXG5cdFx0XHRcdFx0XHQ6IGNoZWNrbGlzdFt1cmxdID09PSB0cnVlXG5cdFx0XHRcdFx0XHRcdD8gY29sb3JzLmxjeWFuKFwiQXllXCIpXG5cdFx0XHRcdFx0XHRcdDogY29sb3JzLmN5YW4oXCJOYXlcIiksXG5cdFx0XHRcdCksXG5cdFx0XHRdO1xuXHRcdH0pO1xuXHRcdHRyYWNlVGFibGUocmVjb3Jkcywge1xuXHRcdFx0aGVhZGxpbmVzLFxuXHRcdFx0bWF4Q29sdW1uV2lkdGg6IDMxLFxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZUhlYWRlcihoZWFkbGluZSwgY29sb3IgPSBub3JtYWwsIGluZGVudCA9IFwiXCIpIHtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke1wi4pSAXCIucmVwZWF0KGhlYWRsaW5lLmxlbmd0aCl94pSA4pSQYCk7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7Y29sb3IoaGVhZGxpbmUpfSDilIJgKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke1wi4pSAXCIucmVwZWF0KGhlYWRsaW5lLmxlbmd0aCl94pSA4pSYYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRhYmxlKHJlY29yZHMsIG9wdGlvbnMpIHtcblx0Y29uc3Qgc3RyaW5naWZ5ID0gKGRhdGEsIGh1bWFuaXplcnMsIGluZGV4KSA9PlxuXHRcdGh1bWFuaXplcnM/LltpbmRleF1cblx0XHRcdD8gaHVtYW5pemVyc1tpbmRleF0oZGF0YSkudG9TdHJpbmcoKVxuXHRcdFx0OiAoZGF0YT8udG9TdHJpbmcoKSA/PyBcIlwiKTtcblx0Y29uc3QgbWF4ID0gKGEsIGIpID0+IChhID4gYiA/IGEgOiBiKTtcblx0Y29uc3QgcmVkdWNlTWF4ID0gKG51bWJlcnMpID0+XG5cdFx0bnVtYmVycy5yZWR1Y2UoKGN1cnIsIHByZXYpID0+IChwcmV2ID4gY3VyciA/IHByZXYgOiBjdXJyKSwgMCk7XG5cdGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXHRjb25zdCBpbmRlbnQgPSBvcHRpb25zPy5pbmRlbnQgfHwgXCJcIjtcblx0Y29uc3QgbnVtQ29sdW1ucyA9IHJlZHVjZU1heChyZWNvcmRzLm1hcCgocmVjb3JkKSA9PiByZWNvcmQ/Lmxlbmd0aCB8fCAxKSk7XG5cdGNvbnN0IG1heENvbHVtbldpZHRoID0gb3B0aW9ucz8ubWF4Q29sdW1uV2lkdGggfHwgODA7XG5cdGNvbnN0IHRhYmxlID0gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpO1xuXHRvcHRpb25zLndpZHRocyA9XG5cdFx0b3B0aW9ucz8ud2lkdGhzIHx8XG5cdFx0dGFibGUubWFwKChjb2x1bW4sIGluZGV4KSA9PiB7XG5cdFx0XHRsZXQgbWF4V2lkdGggPSByZWR1Y2VNYXgoXG5cdFx0XHRcdGNvbHVtbi5tYXAoXG5cdFx0XHRcdFx0KGZpZWxkKSA9PlxuXHRcdFx0XHRcdFx0Y29sb3JzdHJpcChzdHJpbmdpZnkoZmllbGQsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGluZGV4KSkubGVuZ3RoLFxuXHRcdFx0XHQpLFxuXHRcdFx0KTtcblx0XHRcdGlmIChvcHRpb25zPy5oZWFkbGluZXM/LltpbmRleF0pIHtcblx0XHRcdFx0bWF4V2lkdGggPSBtYXgoXG5cdFx0XHRcdFx0bWF4V2lkdGgsXG5cdFx0XHRcdFx0Y29sb3JzdHJpcChvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIikpLmxlbmd0aCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBNYXRoLm1pbihtYXhXaWR0aCwgbWF4Q29sdW1uV2lkdGgpO1xuXHRcdH0pO1xuXHRsZXQgaGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoKSA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUrOKUgFwiKX3ilIDilJBgKTtcblx0aWYgKG9wdGlvbnM/LmhlYWRsaW5lcykge1xuXHRcdGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCwgaW5kZXgpID0+IHtcblx0XHRcdGNvbnN0IGNhcHRpb24gPSBvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIik7XG5cdFx0XHRjb25zdCBjYXB0aW9uTGVuZ3RoID0gY29sb3JzdHJpcChjYXB0aW9uKS5sZW5ndGg7XG5cdFx0XHRyZXR1cm4gYCR7d2hpdGUoY2FwdGlvbil9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBjYXB0aW9uTGVuZ3RoKX1gO1xuXHRcdH0pO1xuXHRcdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7aGVhZGxpbmUuam9pbihcIiDilIIgXCIpfSDilIJgKTtcblx0XHRoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgpID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSk7XG5cdFx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilJzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLzilIBcIil94pSA4pSkYCk7XG5cdH1cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0bGV0IGxpbmUgPSBcIlwiO1xuXHRcdGZvciAobGV0IGogPSAwOyBqIDwgbnVtQ29sdW1uczsgaisrKSB7XG5cdFx0XHRsZXQgZGF0YSA9IHRhYmxlW2pdW2ldO1xuXHRcdFx0bGV0IGNvbG9yO1xuXHRcdFx0aWYgKG9wdGlvbnM/LmNvbG9ycz8uW2pdKSB7XG5cdFx0XHRcdGNvbG9yID0gb3B0aW9ucy5jb2xvcnNbal07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb2xvciA9XG5cdFx0XHRcdFx0dHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCJcblx0XHRcdFx0XHRcdD8gZ3JlZW5cblx0XHRcdFx0XHRcdDogTnVtYmVyKGRhdGEpID09PSBkYXRhICYmIGRhdGEgJSAxICE9PSAwIC8vIGlzIGZsb2F0IG51bWJlcj9cblx0XHRcdFx0XHRcdFx0PyB5ZWxsb3dcblx0XHRcdFx0XHRcdFx0OiAoeCkgPT4geDtcblx0XHRcdH1cblx0XHRcdGRhdGEgPSBzdHJpbmdpZnkoZGF0YSwgb3B0aW9ucz8uaHVtYW5pemVycywgaik7XG5cdFx0XHRpZiAoY29sb3JzdHJpcChkYXRhKS5sZW5ndGggPiBtYXhDb2x1bW5XaWR0aCkge1xuXHRcdFx0XHR3aGlsZSAoY29sb3JzdHJpcChkYXRhKS5sZW5ndGggPiBtYXhDb2x1bW5XaWR0aCAtIDMpIHtcblx0XHRcdFx0XHRkYXRhID0gZGF0YS5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YSArPSBcIi4uLlwiO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGF0YUxlbmd0aCA9IGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoO1xuXHRcdFx0aWYgKG9wdGlvbnM/LmhlYWRsaW5lcyAmJiBvcHRpb25zLmhlYWRsaW5lc1tqXVswXSA9PT0gXCI6XCIpIHtcblx0XHRcdFx0ZGF0YSA9IGAke2NvbG9yKGRhdGEpfSR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGEgPSBgJHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX0ke2NvbG9yKGRhdGEpfWA7XG5cdFx0XHR9XG5cdFx0XHRsaW5lICs9IGDilIIgJHtkYXRhfSBgO1xuXHRcdH1cblx0XHRjb25zb2xlLmluZm8oYCR7aW5kZW50fSR7bGluZX3ilIJgKTtcblx0fVxuXHRoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgpID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSk7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS04pSAXCIpfeKUgOKUmGApO1xufVxuXG5mdW5jdGlvbiB0cmFuc3Bvc2UocmVjb3JkcywgbnVtQ29sdW1ucykge1xuXHRjb25zdCBjb2x1bW5zID0gW107XG5cdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBudW1Db2x1bW5zOyBpbmRleCsrKSB7XG5cdFx0Y29sdW1ucy5wdXNoKHJlY29yZHMubWFwKChyb3cpID0+IHJvd1tpbmRleF0pKTtcblx0fVxuXHRyZXR1cm4gY29sdW1ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR4SnNvblJlcGxhY2VyKGtleSwgdmFsdWUpIHtcblx0c3dpdGNoIChrZXkpIHtcblx0XHRjYXNlIFwiYnl0ZXNcIjpcblx0XHRjYXNlIFwiZGVyXCI6XG5cdFx0XHRyZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpO1xuXHRcdGNhc2UgXCJ0eFwiOlxuXHRcdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcik7XG5cdFx0Y2FzZSBcImNoYW5nZVwiOlxuXHRcdGNhc2UgXCJmZWVzXCI6XG5cdFx0Y2FzZSBcInZhbHVlXCI6XG5cdFx0XHRyZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKSAvIDEwICoqIDk7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHhSZWNlaXB0SnNvblJlcGxhY2VyKGtleSwgdmFsdWUpIHtcblx0c3dpdGNoIChrZXkpIHtcblx0XHRjYXNlIFwiYnl0ZXNcIjpcblx0XHRjYXNlIFwiZGVyXCI6XG5cdFx0XHRyZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpO1xuXHRcdGNhc2UgXCJ0eFwiOlxuXHRcdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcik7XG5cdFx0Y2FzZSBcImNoYW5nZVwiOlxuXHRcdGNhc2UgXCJmZWVzXCI6XG5cdFx0Y2FzZSBcInZhbHVlXCI6XG5cdFx0XHRyZXR1cm4gcGFyc2VJbnQodmFsdWU/LnBlZHJvcywgMTApIC8gMTAgKiogOTtcblx0XHRjYXNlIFwidGltZXN0YW1wXCI6XG5cdFx0XHRyZXR1cm4gbW9tZW50LnVuaXgodmFsdWUpLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQocmVjZWlwdCkge1xuXHRpZiAocmVjZWlwdD8uY29uZmlybWF0aW9ucykge1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQ2hlY2twb2ludCAjJHtjb21tYXMocmVjZWlwdC5jb25maXJtYXRpb25zKX0uLi5gKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlKHJlY2VpcHQpIHtcblx0Y29uc3QgY2FwdGlvbnMgPSB7XG5cdFx0cGVuZGluZzogXCJBd2FpdGluZyByZWxheS4uLlwiLFxuXHRcdC8vIGNvbmZpcm1lZDogXCJUcmFuc2FjdGlvbiBjb25maXJtZWQ6XCIsXG5cdFx0Ly8gZmluYWxpemVkOiBcIlRyYW5zYWN0aW9uIGZpbmFsaXplZDpcIixcblx0XHRyZWxheWVkOiBcIkF3YWl0aW5nIGluY2x1c2lvbi4uLlwiLFxuXHRcdG1pbmVkOiBcIkF3YWl0aW5nIGNvbmZpcm1hdGlvbnMuLi5cIixcblx0fTtcblx0Y29uc3QgY2FwdGlvbiA9IGNhcHRpb25zW3JlY2VpcHQuc3RhdHVzXTtcblx0aWYgKGNhcHRpb24pIGNvbnNvbGUuaW5mbyhgID4gJHtjYXB0aW9uc1tyZWNlaXB0LnN0YXR1c119YCk7XG5cdGlmIChbXCJmaW5hbGl6ZWRcIiwgXCJjb25maXJtZWRcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpKSB7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBCbG9jayBoYXNoOiAgICR7Y29sb3JzLmdyYXkocmVjZWlwdD8uYmxvY2tIYXNoKX1gKTtcblx0XHRjb25zb2xlLmluZm8oYCA+IEJsb2NrIG1pbmVyOiAgJHtjb2xvcnMuY3lhbihyZWNlaXB0Py5ibG9ja01pbmVyKX1gKTtcblx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRgID4gQmxvY2sgZXBvY2g6ICAke2NvbG9ycy53aGl0ZShjb21tYXMocmVjZWlwdD8uYmxvY2tFcG9jaCkpfWAsXG5cdFx0KTtcblx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRgID4gSW5jbHVkZWQgYXQ6ICAke2NvbG9ycy5ncmVlbihtb21lbnQudW5peChyZWNlaXB0Py5ibG9ja1RpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWAsXG5cdFx0KTtcblx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRgID4gJHtyZWNlaXB0LnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICsgcmVjZWlwdC5zdGF0dXMuc2xpY2UoMSl9IGF0OiAke2NvbG9ycy5tZ3JlZW4obW9tZW50LnVuaXgocmVjZWlwdC50aW1lc3RhbXApLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpKX1gLFxuXHRcdCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpIHtcblx0Y29uc3QgY2FwdGlvbnMgPSB7XG5cdFx0RGF0YVJlcXVlc3Q6IFwiID4gRFJUIGhhc2g6ICAgICBcIixcblx0XHRWYWx1ZVRyYW5zZmVyOiBcIiA+IFZUVCBoYXNoOiAgICAgXCIsXG5cdH07XG5cdGNvbnNvbGUuaW5mbyhcblx0XHRgJHtjYXB0aW9uc1tyZWNlaXB0LnR5cGVdIHx8IFwiID4gVFggaGFzaDogICAgICBcIn0ke2NvbG9ycy53aGl0ZShyZWNlaXB0Lmhhc2gpfWAsXG5cdCk7XG5cdGlmIChyZWNlaXB0Py5kcm9IYXNoKVxuXHRcdGNvbnNvbGUuaW5mbyhgID4gRFJPIGhhc2g6ICAgICAke2NvbG9ycy5ncmVlbihyZWNlaXB0LmRyb0hhc2gpfWApO1xuXHRpZiAocmVjZWlwdD8ucmFkSGFzaClcblx0XHRjb25zb2xlLmluZm8oYCA+IFJBRCBoYXNoOiAgICAgJHtjb2xvcnMubWdyZWVuKHJlY2VpcHQucmFkSGFzaCl9YCk7XG5cdGlmIChyZWNlaXB0Py5kcm9TTEEpXG5cdFx0Y29uc29sZS5pbmZvKGAgPiBTTEEgcGFyYW1zOiAgICR7SlNPTi5zdHJpbmdpZnkocmVjZWlwdC5kcm9TTEEpfWApO1xuXHRpZiAocmVjZWlwdD8ud2l0aGRyYXdlcikge1xuXHRcdGlmIChyZWNlaXB0Py52YWxpZGF0b3IpIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhgID4gVmFsaWRhdG9yOiAgICAke2NvbG9ycy5tY3lhbihyZWNlaXB0LnZhbGlkYXRvcil9YCk7XG5cdFx0fVxuXHRcdGNvbnNvbGUuaW5mbyhgID4gV2l0aGRyYXdlcjogICAke2NvbG9ycy5tbWFnZW50YShyZWNlaXB0LndpdGhkcmF3ZXIpfWApO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHNpZ25lcnMgPSBBcnJheS5pc0FycmF5KHJlY2VpcHQuZnJvbSkgPyByZWNlaXB0LmZyb20gOiBbcmVjZWlwdC5mcm9tXTtcblx0XHRjb25zb2xlLmluZm8oYCA+IFNpZ25lci9zOiAgICAgJHtjb2xvcnMubW1hZ2VudGEoc2lnbmVyc1swXSl9YCk7XG5cdFx0c2lnbmVycy5zbGljZSgxKS5mb3JFYWNoKChzaWduZXIpID0+IHtcblx0XHRcdGNvbnNvbGUuaW5mbyhgICAgICAgICAgICAgICAgICAke2NvbG9ycy5tbWFnZW50YShzaWduZXIpfWApO1xuXHRcdH0pO1xuXHR9XG5cdGlmIChyZWNlaXB0Py5yZWNpcGllbnRzKSB7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+IFJlY2lwaWVudC9zOiAgJHtjb2xvcnMubWJsdWUoXG5cdFx0XHRcdHJlY2VpcHQucmVjaXBpZW50cy5maWx0ZXIoXG5cdFx0XHRcdFx0KHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpLFxuXHRcdFx0XHQpLFxuXHRcdFx0KX1gLFxuXHRcdCk7XG5cdH1cblx0aWYgKHJlY2VpcHQ/LmZlZXMpXG5cdFx0Y29uc29sZS5pbmZvKGAgPiBOZXR3b3JrIGZlZTogICR7Y29sb3JzLnllbGxvdyhyZWNlaXB0LmZlZXMudG9TdHJpbmcoMikpfWApO1xuXHRpZiAocmVjZWlwdD8udmFsdWUpXG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+IFZhbHVlOiAgICAgICAgJHtjb2xvcnMubXllbGxvdyhyZWNlaXB0LnZhbHVlLnRvU3RyaW5nKDIpKX1gLFxuXHRcdCk7XG5cdGlmIChyZWNlaXB0Py53ZWlnaHQpXG5cdFx0Y29uc29sZS5pbmZvKGAgPiBXZWlnaHQ6ICAgICAgICR7Y29sb3JzLm1ncmVlbihjb21tYXMocmVjZWlwdC53ZWlnaHQpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LndpdG5lc3Nlcykge1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gV2l0bmVzc2VzOiAgICAke3JlY2VpcHQud2l0bmVzc2VzfWApO1xuXHR9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uKHRyYW5zbWl0dGVyLCBvcHRpb25zKSB7XG5cdGNvbnN0IGNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgKCh4KSA9PiBgXFx4MWJbMzA7NDVtJHt4fVxceDFiWzBtYCk7XG5cdGxldCByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2lnblRyYW5zYWN0aW9uKG9wdGlvbnMsIG9wdGlvbnM/LnJlbG9hZCk7XG5cdGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG5cdFx0Y29uc29sZS5pbmZvKGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkocmVjZWlwdC50eCwgdHhKc29uUmVwbGFjZXIpKX1gKTtcblx0fVxuXHRpZiAob3B0aW9ucz8uaGVhZGxpbmUpIHtcblx0XHRjb25zb2xlLmluZm8oYFxcbiAke2NvbG9yKGAgICR7b3B0aW9ucy5oZWFkbGluZX0gIGApfVxcbmApO1xuXHR9XG5cdHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpO1xuXHRpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XG5cdFx0Ly8gcHJvbXB0IHVzZXIgY29uZmlybWF0aW9uXG5cdFx0Y29uc29sZS5pbmZvKCk7XG5cdFx0Y29uc3QgYW5zd2VyID0gYXdhaXQgcmVxdWlyZShcImlucXVpcmVyXCIpLmNyZWF0ZVByb21wdE1vZHVsZSgpKFtcblx0XHRcdHtcblx0XHRcdFx0bWVzc2FnZTogXCJTZW5kIHRyYW5zYWN0aW9uP1wiLFxuXHRcdFx0XHR0eXBlOiBcImNvbmZpcm1cIixcblx0XHRcdFx0bmFtZTogXCJjb250aW51ZVwiLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHRcdH0sXG5cdFx0XSk7XG5cdFx0aWYgKCFhbnN3ZXIuY29udGludWUpIHtcblx0XHRcdHJldHVybiByZWNlaXB0O1xuXHRcdH1cblx0fVxuXHR0cnkge1xuXHRcdGNvbnNvbGUuaW5mbygpO1xuXHRcdHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zZW5kVHJhbnNhY3Rpb24oKTtcblx0XHRpZiAob3B0aW9ucz8uYXdhaXQgfHwgb3B0aW9ucz8uY29uZmlybWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuY29uZmlybVRyYW5zYWN0aW9uKHJlY2VpcHQuaGFzaCwge1xuXHRcdFx0XHRjb25maXJtYXRpb25zOiBvcHRpb25zPy5jb25maXJtYXRpb25zIHx8IDAsXG5cdFx0XHRcdG9uQ2hlY2twb2ludDogdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcblx0XHRcdFx0b25TdGF0dXNDaGFuZ2U6IHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBkYXRhID0ge1xuXHRcdFx0XHRzdGF0dXM6IHJlY2VpcHQ/LnN0YXR1cyxcblx0XHRcdFx0dGltZXN0YW1wOiByZWNlaXB0Py50aW1lc3RhbXAgfHwgTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG5cdFx0XHR9O1xuXHRcdFx0Y29uc29sZS5pbmZvKGRhdGEpO1xuXHRcdH1cblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVycj8uaW5GbGlnaHQgJiYgZXJyLmluRmxpZ2h0KSB7XG5cdFx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRcdGBcXG4ke2NvbG9ycy5ncmF5KEpTT04uc3RyaW5naWZ5KGVyci5pbkZsaWd0Py5tZXNzYWdlLCB0eFJlY2VpcHRKc29uUmVwbGFjZXIpKX1gLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG5cdHJldHVybiByZWNlaXB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVTbGFzaGVzKHN0cikge1xuXHQvLyBhZGQgYW5vdGhlciBlc2NhcGVkIHNsYXNoIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFuIG9kZFxuXHQvLyBudW1iZXIgb2YgZXNjYXBlZCBzbGFzaGVzIHdoaWNoIHdpbGwgY3Jhc2ggSlNPTi5wYXJzZVxuXHRsZXQgcGFyc2VkU3RyID0gc3RyLnJlcGxhY2UoLyhefFteXFxcXF0pKFxcXFxcXFxcKSpcXFxcJC8sIFwiJCZcXFxcXCIpO1xuXG5cdC8vIGVzY2FwZSB1bmVzY2FwZWQgZG91YmxlIHF1b3RlcyB0byBwcmV2ZW50IGVycm9yIHdpdGhcblx0Ly8gYWRkZWQgZG91YmxlIHF1b3RlcyBpbiBqc29uIHN0cmluZ1xuXHRwYXJzZWRTdHIgPSBwYXJzZWRTdHIucmVwbGFjZSgvKF58W15cXFxcXSkoKFxcXFxcXFxcKSpcIikvZywgXCIkMVxcXFwkMlwiKTtcblxuXHR0cnkge1xuXHRcdHBhcnNlZFN0ciA9IEpTT04ucGFyc2UoYFwiJHtwYXJzZWRTdHJ9XCJgKTtcblx0fSBjYXRjaCAoX2UpIHtcblx0XHRyZXR1cm4gc3RyO1xuXHR9XG5cdHJldHVybiBwYXJzZWRTdHI7XG59XG4iXX0=
|
|
831
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLDZFQUE2RSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQ1gsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsSUFB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RyxXQUFXLENBQUM7QUFDcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDckQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFH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SyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTztJQUMxQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDN0MsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUYsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJ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SyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7YUFDOUQsQ0FBQztZQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNGLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQUc7SUFDbEMsMkRBQTJEO0lBQzNELHdEQUF3RDtJQUN4RCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNELHVEQUF1RDtJQUN2RCxxQ0FBcUM7SUFDckMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFaEUsSUFBSSxDQUFDO1FBQ0osU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCAqIGFzIG5ldCBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tIFwibm9kZTpyZWFkbGluZVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnN0cmlwID0gKHN0cikgPT5cblx0c3RyLnJlcGxhY2UoL1tcXHUwMDFiXFx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywgXCJcIik7XG5cbmV4cG9ydCBjb25zdCBjb21tYXMgPSAobnVtYmVyKSA9PiB7XG5cdGNvbnN0IHBhcnRzID0gbnVtYmVyLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuXHRjb25zdCByZXN1bHQgPVxuXHRcdHBhcnRzLmxlbmd0aCA8PSAxXG5cdFx0XHQ/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXG5cdFx0XHQ6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gO1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRml4ZWRUcnVuYyh4LCBuKSB7XG5cdGNvbnN0IHYgPSAodHlwZW9mIHggPT09IFwic3RyaW5nXCIgPyB4IDogeC50b1N0cmluZygpKS5zcGxpdChcIi5cIik7XG5cdGlmIChuIDw9IDApIHJldHVybiB2WzBdO1xuXHRsZXQgZiA9IHZbMV0gfHwgXCJcIjtcblx0aWYgKGYubGVuZ3RoID4gbikgcmV0dXJuIGAke3ZbMF19LiR7Zi5zdWJzdHIoMCwgbil9YDtcblx0d2hpbGUgKGYubGVuZ3RoIDwgbikgZiArPSBcIjBcIjtcblx0cmV0dXJuIGAke3ZbMF19LiR7Zn1gO1xufVxuXG5leHBvcnQgY29uc3Qgd2hvbGVfd2l0cyA9IChudW1iZXIsIGRpZ2l0cykgPT4ge1xuXHRjb25zdCBsb29rdXAgPSBbXG5cdFx0eyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiA2biwgc3ltYm9sOiBcIm1XaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogOW4sIHN5bWJvbDogXCIgV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogMTVuLCBzeW1ib2w6IFwiTVdpdHNcIiB9LFxuXHRdO1xuXHQvLyBjb25zdCByZWdleHAgPSAvXFwuMCskfCg/PD1cXC5bMC05XSkwKyQvXG5cdGNvbnN0IGl0ZW0gPSBsb29rdXAuZmluZExhc3QoKGl0ZW0pID0+IG51bWJlciA+PSBpdGVtLnZhbHVlKTtcblx0Y29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKTtcblx0Y29uc3QgZGVjaW1hbHMgPSBpdGVtID8gKGl0ZW0udmFsdWUgKyBCaWdJbnQobnVtYmVyKSAtIEJpZ0ludChxdW90aWVudCkgKiBpdGVtLnZhbHVlKS50b1N0cmluZygpLnNsaWNlKDEpIDogXCJcIjtcblx0cmV0dXJuIGl0ZW1cblx0XHQ/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWBcblx0XHQ6IFwiKG5vIGNvaW5zKVwiO1xufTtcblxuY29uc3QgYmJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5ODs0NG0ke3N0cn1cXHgxYlswOzA7MG1gO1xuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBiZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDJtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBicmVkID0gKHN0cikgPT4gYFxceDFiWzMwOzQxbSR7c3RyfVxceDFiWzA7MG1gO1xuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYDtcblxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBsZ3JheSA9IChzdHIpID0+IGBcXHgxYlsxOzkwbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxncmVlbiA9IChzdHIpID0+IGBcXHgxYlsxOzkybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbHllbGxvdyA9IChzdHIpID0+IGBcXHgxYlsxOzkzbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1ibHVlID0gKHN0cikgPT4gYFxceDFiWzk0bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1ncmVlbiA9IChzdHIpID0+IGBcXHgxYls5Mm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzk1bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbXllbGxvdyA9IChzdHIpID0+IGBcXHgxYls5M20ke3N0cn1cXHgxYlswbWA7XG5cbmNvbnN0IGJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMzRtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgY3lhbiA9IChzdHIpID0+IGBcXHgxYlszNm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMDszNW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgcmVkID0gKHN0cikgPT4gYFxceDFiWzMxbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IHdoaXRlID0gKHN0cikgPT4gYFxceDFiWzE7OThtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYDtcblxuZXhwb3J0IGNvbnN0IGNvbG9ycyA9IHtcblx0YmJsdWUsXG5cdGJjeWFuLFxuXHRiZ3JlZW4sXG5cdGJyZWQsXG5cdGJ2aW9sZXQsXG5cdGxjeWFuLFxuXHRsZ3JheSxcblx0bGdyZWVuLFxuXHRsbWFnZW50YSxcblx0bHllbGxvdyxcblx0bWJsdWUsXG5cdG1jeWFuLFxuXHRtZ3JlZW4sXG5cdG1tYWdlbnRhLFxuXHRtcmVkLFxuXHRteWVsbG93LFxuXHRibHVlLFxuXHRjeWFuLFxuXHRncmF5LFxuXHRncmVlbixcblx0bWFnZW50YSxcblx0bm9ybWFsLFxuXHRyZWQsXG5cdHdoaXRlLFxuXHR5ZWxsb3csXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY291bnRMZWF2ZXModCwgb2JqKSB7XG5cdGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwO1xuXHRpZiAob2JqIGluc3RhbmNlb2YgdCkgcmV0dXJuIDE7XG5cdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLCAwKTtcblx0ZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVFeHRyYUZsYWdzKGFyZ3MpIHtcblx0cmV0dXJuIGFyZ3MuZmlsdGVyKChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi0tXCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNtZCguLi5jb21tYW5kKSB7XG5cdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0ZXhlYyhjb21tYW5kLmpvaW4oXCIgXCIpLCB7IG1heEJ1ZmZlcjogMTAyNCAqIDEwMjQgKiAxMCB9LCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG5cdFx0XHRpZiAoZXJyb3IpIHtcblx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdH1cblx0XHRcdGlmIChzdGRlcnIpIHtcblx0XHRcdFx0cmVqZWN0KHN0ZGVycik7XG5cdFx0XHR9XG5cdFx0XHRyZXNvbHZlKHN0ZG91dCk7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY1JhZG9uQnl0ZWNvZGUoYnl0ZWNvZGUsIC4uLmZsYWdzKSB7XG5cdGlmICghaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XG5cdFx0dGhyb3cgRXZhbEVycm9yKFwiaW52YWxpZCBoZXggc3RyaW5nXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IG5weCA9IG9zLnR5cGUoKSA9PT0gXCJXaW5kb3dzX05UXCIgPyBcIm5weC5jbWRcIiA6IFwibnB4XCI7XG5cdFx0cmV0dXJuIGNtZChucHgsIFwid2l0c2RrXCIsIFwicmFkb25cIiwgXCJkcnktcnVuXCIsIGJ5dGVjb2RlLCAuLi5mbGFncyk7XG5cdFx0Ly8gLmNhdGNoKChlcnIpID0+IHtcblx0XHQvLyAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGVyci5tZXNzYWdlLnNwbGl0KCdcXG4nKS5zbGljZSgxKS5qb2luKCdcXG4nKS50cmltKClcblx0XHQvLyAgICAgY29uc3QgZXJyb3JSZWdleCA9IC8uKl5lcnJvcjogKD88bWVzc2FnZT4uKikkLiovZ21cblx0XHQvLyAgICAgY29uc3QgbWF0Y2hlZCA9IGVycm9yUmVnZXguZXhlYyhlcnIubWVzc2FnZSlcblx0XHQvLyAgICAgaWYgKG1hdGNoZWQpIHtcblx0XHQvLyAgICAgICAgIGVycm9yTWVzc2FnZSA9IG1hdGNoZWQuZ3JvdXBzLm1lc3NhZ2Vcblx0XHQvLyAgICAgfVxuXHRcdC8vICAgICBjb25zb2xlLmxvZyhlcnJvck1lc3NhZ2UgfHwgZXJyKVxuXHRcdC8vICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSB8fCBlcnIpXG5cdFx0Ly8gfSlcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEZyb21BcmdzKGFyZ3MsIGZsYWdzKSB7XG5cdGNvbnN0IGN1cmF0ZWQgPSB7fTtcblx0aWYgKGFyZ3MgJiYgZmxhZ3MpIHtcblx0XHRPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaCgoZmxhZykgPT4ge1xuXHRcdFx0Y29uc3QgZmxhZ0luZGV4ID0gYXJncy5pbmRleE9mKGAtLSR7ZmxhZ31gKTtcblx0XHRcdGlmIChmbGFnSW5kZXggPj0gMCkge1xuXHRcdFx0XHRpZiAoZmxhZ3NbZmxhZ10ucGFyYW0pIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdO1xuXHRcdFx0XHRcdGlmICghYXJnc1tmbGFnSW5kZXggKyAxXSB8fCBhcmdzW2ZsYWdJbmRleCArIDFdLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV07XG5cdFx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gdHJ1ZTtcblx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIFthcmdzLCBjdXJhdGVkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21IZXhTdHJpbmcoaGV4U3RyaW5nKSB7XG5cdGlmIChoZXhTdHJpbmcuc3RhcnRzV2l0aChcIjB4XCIpKSBoZXhTdHJpbmcgPSBoZXhTdHJpbmcuc2xpY2UoMik7XG5cdHJldHVybiBVaW50OEFycmF5LmZyb20oaGV4U3RyaW5nLm1hdGNoKC8uezEsMn0vZykubWFwKChieXRlKSA9PiBwYXJzZUludChieXRlLCAxNikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QoaXApIHtcblx0aWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHtcblx0XHRpcCA9IGlwLnN1YnN0cmluZyg3KTtcblx0fVxuXG5cdGlmIChuZXQuaXNJUHY0KGlwKSkge1xuXHRcdC8vIGNoZWNrIGxvY2FsaG9zdFxuXHRcdGlmIChpcCA9PT0gXCIxMjcuMC4wLjFcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gICAgICAgICAxMC4wLjAuMCAtIDEwLjI1NS4yNTUuMjU1ICAgICAgICB8fCAgIDE3Mi4xNi4wLjAgLSAxNzIuMzEuMjU1LjI1NSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgMTkyLjE2OC4wLjAgLSAxOTIuMTY4LjI1NS4yNTVcblx0XHRyZXR1cm4gKFxuXHRcdFx0L14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHxcblx0XHRcdC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fFxuXHRcdFx0L14oMTkyKVxcLigxNjgpXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKVxuXHRcdCk7XG5cdH1cblxuXHQvLyBlbHNlOiBpcCBpcyBJUHY2XG5cdGNvbnN0IGZpcnN0V29yZCA9IGlwLnNwbGl0KFwiOlwiKS5maW5kKChlbCkgPT4gISFlbCk7IC8vIGdldCBmaXJzdCBub3QgZW1wdHkgd29yZFxuXG5cdC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcblx0aWYgKGlwID09PSBcIjo6MVwiKSByZXR1cm4gdHJ1ZTtcblx0Ly8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxuXHRlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIFRoZXNlIGRheXMgVW5pcXVlIExvY2FsIEFkZHJlc3NlcyAoVUxBKSBhcmUgdXNlZCBpbiBwbGFjZSBvZiBTaXRlIExvY2FsLlxuXHQvLyBSYW5nZTogZmMwMCAtIGZjZmZcblx0ZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZTtcblx0Ly8gUmFuZ2U6IGZkMDAgLSBmY2ZmXG5cdGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcblx0ZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcImZlODBcIikgcmV0dXJuIHRydWU7XG5cdC8vIERpc2NhcmQgUHJlZml4XG5cdGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWU7XG5cblx0Ly8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGgoc3RyLCBsZW5ndGgpIHtcblx0cmV0dXJuIChcblx0XHQoaXNIZXhTdHJpbmcoc3RyKSAmJiAoKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHwgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMikpIHx8XG5cdFx0aXNXaWxkY2FyZChzdHIpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleFN0cmluZyhzdHIpIHtcblx0cmV0dXJuIChcblx0XHQodHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0KChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyLnNsaWNlKDIpKSkgfHwgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIpKSkgfHxcblx0XHRpc1dpbGRjYXJkKHN0cilcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSGV4U3RyaW5nKGJ1ZmZlciwgcHJlZml4MHggPSBmYWxzZSkge1xuXHRpZiAoYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTtcblx0cmV0dXJuIChcblx0XHQocHJlZml4MHggPyBcIjB4XCIgOiBcIlwiKSArXG5cdFx0QXJyYXkucHJvdG90eXBlLm1hcFxuXHRcdFx0LmNhbGwoYnVmZmVyLCAoeCkgPT4gYDAwJHt4LnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQubWF0Y2goL1thLWZBLUYwLTldezJ9L2cpXG5cdFx0XHQuam9pbihcIlwiKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVUkwodXJsKSB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuXHRcdHJldHVybiBbYCR7cGFyc2VkVXJsLnByb3RvY29sfS8vYCwgcGFyc2VkVXJsLmhvc3QsIHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKSwgcGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKV07XG5cdH0gY2F0Y2gge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVVJMIHdhcyBwcm92aWRlZDogJHt1cmx9YCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIG1vZHVsZSkge1xuXHRzaG93VXNhZ2VIZWFkbGluZShjbWQpO1xuXHRzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncyB9KTtcblx0c2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pO1xuXHRzaG93VXNhZ2VSb3V0ZXIoeyAuLi5tb2R1bGU/LnJvdXRlciB9KTtcblx0c2hvd1VzYWdlRW52YXJzKHsgLi4ubW9kdWxlPy5lbnZhcnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIocm91dGVyKSB7XG5cdGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpO1xuXHRpZiAoY21kcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmNtZHMubWFwKChbY21kXSkgPT4gY21kLmxlbmd0aCkpO1xuXHRcdGNtZHMuZm9yRWFjaCgoY21kKSA9PiB7XG5cdFx0XHRjb25zb2xlLmluZm8oXCIgIFwiLCBgJHtjbWRbMF19JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY21kWzBdLmxlbmd0aCl9YCwgXCIgIFwiLCBjbWRbMV0uaGludCk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUVycm9yKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yLCBmbGFncykge1xuXHRzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKTtcblx0aWYgKGVycm9yKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpO1xuXHRcdGlmIChmbGFncz8uZGVidWcpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGNvbG9ycy5yZWQoZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvcikpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlRW52YXJzKGVudmFycykge1xuXHRpZiAoZW52YXJzKSB7XG5cdFx0ZW52YXJzID0gT2JqZWN0LmVudHJpZXMoZW52YXJzKTtcblx0XHRpZiAoZW52YXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkVOVkFSUzpcIik7XG5cdFx0XHRjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KC4uLmVudmFycy5tYXAoKFtlbnZhcl0pID0+IGVudmFyLmxlbmd0aCkpO1xuXHRcdFx0ZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcblx0XHRcdFx0aWYgKGVudmFyLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihcIktFWVwiKSA8IDAgJiYgcHJvY2Vzcy5lbnZbZW52YXJdKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0XHRcdFx0XCIgIFwiLFxuXHRcdFx0XHRcdFx0YCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLFxuXHRcdFx0XHRcdFx0YCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgICR7aGludH1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VGbGFncyhmbGFncykge1xuXHRpZiAoZmxhZ3MpIHtcblx0XHRmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKVxuXHRcdFx0LmZpbHRlcigoWywgZmxhZ10pID0+ICFmbGFnPy5wYXJhbSlcblx0XHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0XHRpZiAoYSA8IGIpIHJldHVybiAtMTtcblx0XHRcdFx0ZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxO1xuXHRcdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdFx0fSk7XG5cdFx0aWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkZMQUdTOlwiKTtcblx0XHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KFxuXHRcdFx0XHQuLi5mbGFnc1xuXHRcdFx0XHRcdC5maWx0ZXIoKFssIHsgaGludCB9XSkgPT4gaGludClcblx0XHRcdFx0XHQubWFwKChba2V5LCB7IHBhcmFtIH1dKSA9PiAocGFyYW0gPyBrZXkubGVuZ3RoICsgcGFyYW0ubGVuZ3RoICsgMyA6IGtleS5sZW5ndGgpKSxcblx0XHRcdCk7XG5cdFx0XHRmbGFncy5mb3JFYWNoKChmbGFnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0ciA9IGAke2ZsYWdbMF19JHtmbGFnWzFdLnBhcmFtID8gZ3JheShgIDwke2ZsYWdbMV0ucGFyYW19PmApIDogXCJcIn1gO1xuXHRcdFx0XHRpZiAoZmxhZ1sxXS5oaW50KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBmbGFnWzFdLmhpbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0Y29uc29sZS5pbmZvKFwiVVNBR0U6XCIpO1xuXHRpZiAoc3ViY21kKSB7XG5cdFx0bGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zO1xuXHRcdC8vIGNvbnN0IG9wdGlvbnMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnNcblx0XHRpZiAocGFyYW1zKSB7XG5cdFx0XHRjb25zdCBvcHRpb25hbGl6ZSA9IChzdHIpID0+XG5cdFx0XHRcdHN0ci5lbmRzV2l0aChcIiAuLi5dXCIpID8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWAgOiBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmA7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG5cdFx0XHRcdHBhcmFtcyA9IGAke3BhcmFtcy5tYXAoKHBhcmFtKSA9PiBvcHRpb25hbGl6ZShwYXJhbSkpLmpvaW4oXCIgXCIpfSBgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFyYW1zID0gb3B0aW9uYWxpemUocGFyYW1zKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSAke2NvbG9ycy53aGl0ZShzdWJjbWQpfSAke3BhcmFtcyA/IGAke2NvbG9ycy5ncmVlbihwYXJhbXMpfSBgIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWAsXG5cdFx0KTtcblx0XHRpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKFwiXFxuREVTQ1JJUFRJT046XCIpO1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmluZm8oYCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZU9wdGlvbnMob3B0aW9ucykge1xuXHRvcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucylcblx0XHQuZmlsdGVyKChbLCBvcHRpb25dKSA9PiBvcHRpb24/LnBhcmFtKVxuXHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0aWYgKGEgPCBiKSByZXR1cm4gLTE7XG5cdFx0XHRlbHNlIGlmIChhID4gYikgcmV0dXJuIDE7XG5cdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdH0pO1xuXHRpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuT1BUSU9OUzpcIik7XG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gb3B0aW9uc1xuXHRcdFx0Lm1hcCgob3B0aW9uKSA9PiAob3B0aW9uWzFdLnBhcmFtID8gb3B0aW9uWzFdLnBhcmFtLmxlbmd0aCArIG9wdGlvblswXS5sZW5ndGggKyAzIDogb3B0aW9uWzBdLmxlbmd0aCkpXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldikpO1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG5cdFx0XHRpZiAob3B0aW9uWzFdLmhpbnQpIHtcblx0XHRcdFx0Y29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWA7XG5cdFx0XHRcdGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgb3B0aW9uWzFdLmhpbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0c2hvd1VzYWdlSGVhZGxpbmUoY21kLCBzdWJjbWQsIG1vZHVsZSk7XG5cdHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSk7XG5cdHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pO1xuXHRzaG93VXNhZ2VFbnZhcnMobW9kdWxlLnJvdXRlcltzdWJjbWRdPy5lbnZhcnMgfHwgbW9kdWxlPy5lbnZhcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1ZlcnNpb24oKSB7XG5cdGNvbnNvbGUuaW5mbyhgJHtjb2xvcnMubWN5YW4oYFdpdG5ldCBTREsgdiR7cmVxdWlyZShcIi4uLy4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9ufWApfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHN0cikge1xuXHRsZXQgbWF4QXJnc0luZGV4ID0gMDtcblx0aWYgKHN0ciAmJiB0eXBlb2Ygc3RyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0bGV0IG1hdGNoO1xuXHRcdGNvbnN0IHJlZ2V4cCA9IC9cXFxcXFxkXFxcXC9nO1xuXHRcdHdoaWxlICgobWF0Y2ggPSByZWdleHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuXHRcdFx0Y29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQobWF0Y2hbMF1bMV0sIDEwKSArIDE7XG5cdFx0XHRpZiAoYXJnc0luZGV4ID4gbWF4QXJnc0luZGV4KSBtYXhBcmdzSW5kZXggPSBhcmdzSW5kZXg7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXhBcmdzSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZHMpIHtcblx0aWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHRPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCgod2lsZGNhcmQpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSlcblx0XHRcdFx0d2lsZGNhcmQuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xuXHRcdHdpbGRjYXJkcy5mb3JFYWNoKCh3aWxkY2FyZCkgPT4ge1xuXHRcdFx0Y2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoaXNXaWxkY2FyZCh3aWxkY2FyZHMpKSB7XG5cdFx0XHRjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKTtcblx0XHRcdGlmIChjaGFyIDwgXCIwXCIgfHwgY2hhciA+IFwiOVwiKSB7XG5cdFx0XHRcdHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFswIC4uIDldXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaWxkY2FyZChzdHIpIHtcblx0cmV0dXJuIHN0ci5sZW5ndGggPT09IDMgJiYgL1xcXFxcXGRcXFxcL2cudGVzdChzdHIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0aWYgKGFyZ3MubGVuZ3RoID4gMTApIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIDEwKTtcblx0aWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG5cdFx0Zm9yIChsZXQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3MubGVuZ3RoOyBhcmdJbmRleCsrKSB7XG5cdFx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRcdG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpIDogdmFsdWUsXG5cdFx0KTtcblx0fSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIikge1xuXHRcdG9iaiA9IHJlcGxhY2VPYmplY3RXaWxkY2FyZHMob2JqLCBhcmdzKTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU9iamVjdFdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRPYmplY3QuZW50cmllcyhvYmopLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcblx0XHRcdFx0Y29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGA7XG5cdFx0XHRcdGtleSA9IGtleS5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0XHRcdHZhbHVlID0gcmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgYXJncyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW2tleSwgdmFsdWVdO1xuXHRcdH0pLFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQob2JqLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkge1xuXHRpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcblx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpO1xuXHRcdGZvciAobGV0IGogPSBhcmdJbmRleCArIDE7IGogPCBhcmdzQ291bnQ7IGorKykge1xuXHRcdFx0b2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYCk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHNwbGljZVdpbGRjYXJkKHZhbHVlLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkgOiB2YWx1ZSxcblx0XHQpO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b29sa2l0UnVuKHNldHRpbmdzLCBhcmdzKSB7XG5cdGNvbnN0IGNtZCA9IGAke3NldHRpbmdzLnBhdGhzLnRvb2xraXRCaW5QYXRofSAke2FyZ3Muam9pbihcIiBcIil9YDtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRleGVjKGNtZCwgeyBtYXhCdWZmZXI6IDEwMjQgKiAxMDI0ICogMTAgfSwgKGVycm9yLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuXHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc3RkZXJyKSB7XG5cdFx0XHRcdHJlamVjdChzdGRlcnIpO1xuXHRcdFx0fVxuXHRcdFx0cmVzb2x2ZShzdGRvdXQpO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXBwZXJDYW1lbENhc2Uoc3RyKSB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXFxiKFxcdykvZywgKF9tYXRjaCwgY2FwdHVyZSkgPT4gY2FwdHVyZS50b1VwcGVyQ2FzZSgpKS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9VdGYxNkJ5dGVzKHN0cikge1xuXHRjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGggKiAyKTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0Ynl0ZXNbaSAqIDJdID0gY29kZSA+PiA4O1xuXHRcdGJ5dGVzW2kgKiAyICsgMV0gPSBjb2RlICYgMHhmZjtcblx0fVxuXHRyZXR1cm4gYnl0ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1V0ZjhBcnJheShzdHIpIHtcblx0Y29uc3QgdXRmOCA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuXHRcdGxldCBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdGlmIChjaGFyY29kZSA8IDB4ODApIHV0ZjgucHVzaChjaGFyY29kZSk7XG5cdFx0ZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xuXHRcdFx0dXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7XG5cdFx0fSBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcblx0XHRcdHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSwgMHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSwgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gc3Vycm9nYXRlIHBhaXJcblx0XHRcdGkrKztcblx0XHRcdC8vIFVURi0xNiBlbmNvZGVzIDB4MTAwMDAtMHgxMEZGRkYgYnlcblx0XHRcdC8vIHN1YnRyYWN0aW5nIDB4MTAwMDAgYW5kIHNwbGl0dGluZyB0aGVcblx0XHRcdC8vIDIwIGJpdHMgb2YgMHgwLTB4RkZGRkYgaW50byB0d28gaGFsdmVzXG5cdFx0XHRjaGFyY29kZSA9IDB4MTAwMDAgKyAoKChjaGFyY29kZSAmIDB4M2ZmKSA8PCAxMCkgfCAoc3RyLmNoYXJDb2RlQXQoaSkgJiAweDNmZikpO1xuXHRcdFx0dXRmOC5wdXNoKFxuXHRcdFx0XHQweGYwIHwgKGNoYXJjb2RlID4+IDE4KSxcblx0XHRcdFx0MHg4MCB8ICgoY2hhcmNvZGUgPj4gMTIpICYgMHgzZiksXG5cdFx0XHRcdDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksXG5cdFx0XHRcdDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1dGY4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXRmOEFycmF5VG9TdHIoYXJyYXkpIHtcblx0Y29uc3QgbGVuID0gYXJyYXkubGVuZ3RoO1xuXHRsZXQgb3V0ID0gXCJcIjtcblx0bGV0IGkgPSAwO1xuXHRsZXQgYztcblx0bGV0IGNoYXIyLCBjaGFyMztcblx0d2hpbGUgKGkgPCBsZW4pIHtcblx0XHRjID0gYXJyYXlbaSsrXTtcblx0XHRzd2l0Y2ggKGMgPj4gNCkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0Y2FzZSAxOlxuXHRcdFx0Y2FzZSAyOlxuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0Y2FzZSA0OlxuXHRcdFx0Y2FzZSA1OlxuXHRcdFx0Y2FzZSA2OlxuXHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHQvLyAweHh4eHh4eFxuXHRcdFx0XHRvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEyOlxuXHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0Ly8gMTEweCB4eHh4ICAgMTB4eCB4eHh4XG5cdFx0XHRcdGNoYXIyID0gYXJyYXlbaSsrXTtcblx0XHRcdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgxZikgPDwgNikgfCAoY2hhcjIgJiAweDNmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxNDpcblx0XHRcdFx0Ly8gMTExMCB4eHh4ICAxMHh4IHh4eHggIDEweHggeHh4eFxuXHRcdFx0XHRjaGFyMiA9IGFycmF5W2krK107XG5cdFx0XHRcdGNoYXIzID0gYXJyYXlbaSsrXTtcblx0XHRcdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgwZikgPDwgMTIpIHwgKChjaGFyMiAmIDB4M2YpIDw8IDYpIHwgKChjaGFyMyAmIDB4M2YpIDw8IDApKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9tcHQocXVlc3Rpb24pIHtcblx0Y29uc3QgcmVhZGxpbmVJbnRlcmZhY2UgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuXHRcdGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuXHRcdG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG5cdH0pO1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF9yZWplY3QpID0+IHtcblx0XHRyZWFkbGluZUludGVyZmFjZS5xdWVzdGlvbihgJHtxdWVzdGlvbn0gYCwgKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZWFkbGluZUludGVyZmFjZS5jbG9zZSgpO1xuXHRcdFx0cmVzb2x2ZShyZXNwb25zZS50cmltKCkpO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21wdGVyKHByb21pc2UpIHtcblx0Y29uc3QgbG9hZGluZyA9ICgoKSA9PiB7XG5cdFx0Y29uc3QgaCA9IFtcInxcIiwgXCIvXCIsIFwiLVwiLCBcIlxcXFxcIl07XG5cdFx0bGV0IGkgPSAwO1xuXHRcdHJldHVybiBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRpID0gaSA+IDMgPyAwIDogaTtcblx0XHRcdHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXGJcXGIke2hbaV19IGApO1xuXHRcdFx0aSsrO1xuXHRcdH0sIDUwKTtcblx0fSkoKTtcblx0cmV0dXJuIHByb21pc2UudGhlbigocmVzdWx0KSA9PiB7XG5cdFx0Y2xlYXJJbnRlcnZhbChsb2FkaW5nKTtcblx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcYlxcYlwiKTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaFdvcmtzcGFjZSgpIHtcblx0bGV0IHdvcmtzcGFjZSA9IHBhdGgubm9ybWFsaXplKHByb2Nlc3MuY3dkKCkpO1xuXHR3aGlsZSAoIWZzLmV4aXN0c1N5bmMoYCR7d29ya3NwYWNlfS93aXRuZXQvYXNzZXRzYCkgJiYgcGF0aC5kaXJuYW1lKHdvcmtzcGFjZSkgIT09IHdvcmtzcGFjZSkge1xuXHRcdHdvcmtzcGFjZSA9IHBhdGguZGlybmFtZSh3b3Jrc3BhY2UpO1xuXHR9XG5cdHJldHVybiB3b3Jrc3BhY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZUNoZWNrbGlzdHMoY2hlY2tsaXN0cykge1xuXHRpZiAoY2hlY2tsaXN0cyAmJiBPYmplY3Qua2V5cyhjaGVja2xpc3RzKS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgaGVhZGxpbmVzID0gW1wiTk9ERVNcIiwgLi4uT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubWFwKChrZXkpID0+IGA6JHtrZXl9YCldO1xuXHRcdGNoZWNrbGlzdHMgPSBPYmplY3QudmFsdWVzKGNoZWNrbGlzdHMpO1xuXHRcdGNvbnN0IHVybHMgPSBPYmplY3Qua2V5cyhjaGVja2xpc3RzWzBdKTtcblx0XHRjb25zdCByZWNvcmRzID0gdXJscy5tYXAoKHVybCkgPT4ge1xuXHRcdFx0Y29uc3QgZXJyb3JzID0gY2hlY2tsaXN0cy5maWx0ZXIoKGNoZWNrbGlzdCkgPT4gY2hlY2tsaXN0W3VybF0gaW5zdGFuY2VvZiBFcnJvcikubGVuZ3RoO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0ZXJyb3JzID09PSBjaGVja2xpc3RzLmxlbmd0aCA/IGNvbG9ycy5yZWQodXJsKSA6IGVycm9ycyA+IDAgPyBjb2xvcnMubXllbGxvdyh1cmwpIDogY29sb3JzLm1jeWFuKHVybCksXG5cdFx0XHRcdC4uLmNoZWNrbGlzdHMubWFwKChjaGVja2xpc3QpID0+XG5cdFx0XHRcdFx0Y2hlY2tsaXN0W3VybF0gaW5zdGFuY2VvZiBFcnJvclxuXHRcdFx0XHRcdFx0PyBjb2xvcnMucmVkKGNoZWNrbGlzdFt1cmxdKVxuXHRcdFx0XHRcdFx0OiBjaGVja2xpc3RbdXJsXSA9PT0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHQ/IGNvbG9ycy5sY3lhbihcIkF5ZVwiKVxuXHRcdFx0XHRcdFx0XHQ6IGNvbG9ycy5jeWFuKFwiTmF5XCIpLFxuXHRcdFx0XHQpLFxuXHRcdFx0XTtcblx0XHR9KTtcblx0XHR0cmFjZVRhYmxlKHJlY29yZHMsIHtcblx0XHRcdGhlYWRsaW5lcyxcblx0XHRcdG1heENvbHVtbldpZHRoOiAzMSxcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VIZWFkZXIoaGVhZGxpbmUsIGNvbG9yID0gbm9ybWFsLCBpbmRlbnQgPSBcIlwiKSB7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUkGApO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2NvbG9yKGhlYWRsaW5lKX0g4pSCYCk7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUmGApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUYWJsZShyZWNvcmRzLCBvcHRpb25zKSB7XG5cdGNvbnN0IHN0cmluZ2lmeSA9IChkYXRhLCBodW1hbml6ZXJzLCBpbmRleCkgPT5cblx0XHRodW1hbml6ZXJzPy5baW5kZXhdID8gaHVtYW5pemVyc1tpbmRleF0oZGF0YSkudG9TdHJpbmcoKSA6IChkYXRhPy50b1N0cmluZygpID8/IFwiXCIpO1xuXHRjb25zdCBtYXggPSAoYSwgYikgPT4gKGEgPiBiID8gYSA6IGIpO1xuXHRjb25zdCByZWR1Y2VNYXggPSAobnVtYmVycykgPT4gbnVtYmVycy5yZWR1Y2UoKGN1cnIsIHByZXYpID0+IChwcmV2ID4gY3VyciA/IHByZXYgOiBjdXJyKSwgMCk7XG5cdGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXHRjb25zdCBpbmRlbnQgPSBvcHRpb25zPy5pbmRlbnQgfHwgXCJcIjtcblx0Y29uc3QgbnVtQ29sdW1ucyA9IHJlZHVjZU1heChyZWNvcmRzLm1hcCgocmVjb3JkKSA9PiByZWNvcmQ/Lmxlbmd0aCB8fCAxKSk7XG5cdGNvbnN0IG1heENvbHVtbldpZHRoID0gb3B0aW9ucz8ubWF4Q29sdW1uV2lkdGggfHwgODA7XG5cdGNvbnN0IHRhYmxlID0gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpO1xuXHRvcHRpb25zLndpZHRocyA9XG5cdFx0b3B0aW9ucz8ud2lkdGhzIHx8XG5cdFx0dGFibGUubWFwKChjb2x1bW4sIGluZGV4KSA9PiB7XG5cdFx0XHRsZXQgbWF4V2lkdGggPSByZWR1Y2VNYXgoY29sdW1uLm1hcCgoZmllbGQpID0+IGNvbG9yc3RyaXAoc3RyaW5naWZ5KGZpZWxkLCBvcHRpb25zPy5odW1hbml6ZXJzLCBpbmRleCkpLmxlbmd0aCkpO1xuXHRcdFx0aWYgKG9wdGlvbnM/LmhlYWRsaW5lcz8uW2luZGV4XSkge1xuXHRcdFx0XHRtYXhXaWR0aCA9IG1heChtYXhXaWR0aCwgY29sb3JzdHJpcChvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIikpLmxlbmd0aCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gTWF0aC5taW4obWF4V2lkdGgsIG1heENvbHVtbldpZHRoKTtcblx0XHR9KTtcblx0bGV0IGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCkgPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilKzilIBcIil94pSA4pSQYCk7XG5cdGlmIChvcHRpb25zPy5oZWFkbGluZXMpIHtcblx0XHRoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgsIGluZGV4KSA9PiB7XG5cdFx0XHRjb25zdCBjYXB0aW9uID0gb3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpO1xuXHRcdFx0Y29uc3QgY2FwdGlvbkxlbmd0aCA9IGNvbG9yc3RyaXAoY2FwdGlvbikubGVuZ3RoO1xuXHRcdFx0cmV0dXJuIGAke3doaXRlKGNhcHRpb24pfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gY2FwdGlvbkxlbmd0aCl9YDtcblx0XHR9KTtcblx0XHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2hlYWRsaW5lLmpvaW4oXCIg4pSCIFwiKX0g4pSCYCk7XG5cdFx0aGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoKSA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpO1xuXHRcdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSc4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS84pSAXCIpfeKUgOKUpGApO1xuXHR9XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7IGkrKykge1xuXHRcdGxldCBsaW5lID0gXCJcIjtcblx0XHRmb3IgKGxldCBqID0gMDsgaiA8IG51bUNvbHVtbnM7IGorKykge1xuXHRcdFx0bGV0IGRhdGEgPSB0YWJsZVtqXVtpXTtcblx0XHRcdGxldCBjb2xvcjtcblx0XHRcdGlmIChvcHRpb25zPy5jb2xvcnM/LltqXSkge1xuXHRcdFx0XHRjb2xvciA9IG9wdGlvbnMuY29sb3JzW2pdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29sb3IgPVxuXHRcdFx0XHRcdHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiXG5cdFx0XHRcdFx0XHQ/IGdyZWVuXG5cdFx0XHRcdFx0XHQ6IE51bWJlcihkYXRhKSA9PT0gZGF0YSAmJiBkYXRhICUgMSAhPT0gMCAvLyBpcyBmbG9hdCBudW1iZXI/XG5cdFx0XHRcdFx0XHRcdD8geWVsbG93XG5cdFx0XHRcdFx0XHRcdDogKHgpID0+IHg7XG5cdFx0XHR9XG5cdFx0XHRkYXRhID0gc3RyaW5naWZ5KGRhdGEsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGopO1xuXHRcdFx0aWYgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGgpIHtcblx0XHRcdFx0d2hpbGUgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGggLSAzKSB7XG5cdFx0XHRcdFx0ZGF0YSA9IGRhdGEuc2xpY2UoMCwgLTEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGEgKz0gXCIuLi5cIjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGRhdGFMZW5ndGggPSBjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aDtcblx0XHRcdGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbal1bMF0gPT09IFwiOlwiKSB7XG5cdFx0XHRcdGRhdGEgPSBgJHtjb2xvcihkYXRhKX0ke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhID0gYCR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9JHtjb2xvcihkYXRhKX1gO1xuXHRcdFx0fVxuXHRcdFx0bGluZSArPSBg4pSCICR7ZGF0YX0gYDtcblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKGAke2luZGVudH0ke2xpbmV94pSCYCk7XG5cdH1cblx0aGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoKSA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUtOKUgFwiKX3ilIDilJhgKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpIHtcblx0Y29uc3QgY29sdW1ucyA9IFtdO1xuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbnVtQ29sdW1uczsgaW5kZXgrKykge1xuXHRcdGNvbHVtbnMucHVzaChyZWNvcmRzLm1hcCgocm93KSA9PiByb3dbaW5kZXhdKSk7XG5cdH1cblx0cmV0dXJuIGNvbHVtbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eEpzb25SZXBsYWNlcihrZXksIHZhbHVlKSB7XG5cdHN3aXRjaCAoa2V5KSB7XG5cdFx0Y2FzZSBcImJ5dGVzXCI6XG5cdFx0Y2FzZSBcImRlclwiOlxuXHRcdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHZhbHVlLCB0cnVlKTtcblx0XHRjYXNlIFwidHhcIjpcblx0XHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgdHhKc29uUmVwbGFjZXIpO1xuXHRcdGNhc2UgXCJjaGFuZ2VcIjpcblx0XHRjYXNlIFwiZmVlc1wiOlxuXHRcdGNhc2UgXCJ2YWx1ZVwiOlxuXHRcdFx0cmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCkgLyAxMCAqKiA5O1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR4UmVjZWlwdEpzb25SZXBsYWNlcihrZXksIHZhbHVlKSB7XG5cdHN3aXRjaCAoa2V5KSB7XG5cdFx0Y2FzZSBcImJ5dGVzXCI6XG5cdFx0Y2FzZSBcImRlclwiOlxuXHRcdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHZhbHVlLCB0cnVlKTtcblx0XHRjYXNlIFwidHhcIjpcblx0XHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgdHhKc29uUmVwbGFjZXIpO1xuXHRcdGNhc2UgXCJjaGFuZ2VcIjpcblx0XHRjYXNlIFwiZmVlc1wiOlxuXHRcdGNhc2UgXCJ2YWx1ZVwiOlxuXHRcdFx0cmV0dXJuIHBhcnNlSW50KHZhbHVlPy5wZWRyb3MsIDEwKSAvIDEwICoqIDk7XG5cdFx0Y2FzZSBcInRpbWVzdGFtcFwiOlxuXHRcdFx0cmV0dXJuIG1vbWVudC51bml4KHZhbHVlKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25DaGVja3BvaW50KHJlY2VpcHQpIHtcblx0aWYgKHJlY2VpcHQ/LmNvbmZpcm1hdGlvbnMpIHtcblx0XHRjb25zb2xlLmluZm8oYCA+IENoZWNrcG9pbnQgIyR7Y29tbWFzKHJlY2VpcHQuY29uZmlybWF0aW9ucyl9Li4uYCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZShyZWNlaXB0KSB7XG5cdGNvbnN0IGNhcHRpb25zID0ge1xuXHRcdHBlbmRpbmc6IFwiQXdhaXRpbmcgcmVsYXkuLi5cIixcblx0XHQvLyBjb25maXJtZWQ6IFwiVHJhbnNhY3Rpb24gY29uZmlybWVkOlwiLFxuXHRcdC8vIGZpbmFsaXplZDogXCJUcmFuc2FjdGlvbiBmaW5hbGl6ZWQ6XCIsXG5cdFx0cmVsYXllZDogXCJBd2FpdGluZyBpbmNsdXNpb24uLi5cIixcblx0XHRtaW5lZDogXCJBd2FpdGluZyBjb25maXJtYXRpb25zLi4uXCIsXG5cdH07XG5cdGNvbnN0IGNhcHRpb24gPSBjYXB0aW9uc1tyZWNlaXB0LnN0YXR1c107XG5cdGlmIChjYXB0aW9uKSBjb25zb2xlLmluZm8oYCA+ICR7Y2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdfWApO1xuXHRpZiAoW1wiZmluYWxpemVkXCIsIFwiY29uZmlybWVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSkge1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgaGFzaDogICAke2NvbG9ycy5ncmF5KHJlY2VpcHQ/LmJsb2NrSGFzaCl9YCk7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBCbG9jayBtaW5lcjogICR7Y29sb3JzLmN5YW4ocmVjZWlwdD8uYmxvY2tNaW5lcil9YCk7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBCbG9jayBlcG9jaDogICR7Y29sb3JzLndoaXRlKGNvbW1hcyhyZWNlaXB0Py5ibG9ja0Vwb2NoKSl9YCk7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+IEluY2x1ZGVkIGF0OiAgJHtjb2xvcnMuZ3JlZW4obW9tZW50LnVuaXgocmVjZWlwdD8uYmxvY2tUaW1lc3RhbXApLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpKX1gLFxuXHRcdCk7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+ICR7cmVjZWlwdC5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArIHJlY2VpcHQuc3RhdHVzLnNsaWNlKDEpfSBhdDogJHtjb2xvcnMubWdyZWVuKG1vbWVudC51bml4KHJlY2VpcHQudGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YCxcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KSB7XG5cdGNvbnN0IGNhcHRpb25zID0ge1xuXHRcdERhdGFSZXF1ZXN0OiBcIiA+IERSVCBoYXNoOiAgICAgXCIsXG5cdFx0VmFsdWVUcmFuc2ZlcjogXCIgPiBWVFQgaGFzaDogICAgIFwiLFxuXHR9O1xuXHRjb25zb2xlLmluZm8oYCR7Y2FwdGlvbnNbcmVjZWlwdC50eXBlXSB8fCBcIiA+IFRYIGhhc2g6ICAgICAgXCJ9JHtjb2xvcnMud2hpdGUocmVjZWlwdC5oYXNoKX1gKTtcblx0aWYgKHJlY2VpcHQ/LmRyb0hhc2gpIGNvbnNvbGUuaW5mbyhgID4gRFJPIGhhc2g6ICAgICAke2NvbG9ycy5ncmVlbihyZWNlaXB0LmRyb0hhc2gpfWApO1xuXHRpZiAocmVjZWlwdD8ucmFkSGFzaCkgY29uc29sZS5pbmZvKGAgPiBSQUQgaGFzaDogICAgICR7Y29sb3JzLm1ncmVlbihyZWNlaXB0LnJhZEhhc2gpfWApO1xuXHRpZiAocmVjZWlwdD8uZHJvU0xBKSBjb25zb2xlLmluZm8oYCA+IFNMQSBwYXJhbXM6ICAgJHtKU09OLnN0cmluZ2lmeShyZWNlaXB0LmRyb1NMQSl9YCk7XG5cdGlmIChyZWNlaXB0Py53aXRoZHJhd2VyKSB7XG5cdFx0aWYgKHJlY2VpcHQ/LnZhbGlkYXRvcikge1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgPiBWYWxpZGF0b3I6ICAgICR7Y29sb3JzLm1jeWFuKHJlY2VpcHQudmFsaWRhdG9yKX1gKTtcblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBXaXRoZHJhd2VyOiAgICR7Y29sb3JzLm1tYWdlbnRhKHJlY2VpcHQud2l0aGRyYXdlcil9YCk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3Qgc2lnbmVycyA9IEFycmF5LmlzQXJyYXkocmVjZWlwdC5mcm9tKSA/IHJlY2VpcHQuZnJvbSA6IFtyZWNlaXB0LmZyb21dO1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gU2lnbmVyL3M6ICAgICAke2NvbG9ycy5tbWFnZW50YShzaWduZXJzWzBdKX1gKTtcblx0XHRzaWduZXJzLnNsaWNlKDEpLmZvckVhY2goKHNpZ25lcikgPT4ge1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgICAgICAgICAgICAgICAgICR7Y29sb3JzLm1tYWdlbnRhKHNpZ25lcil9YCk7XG5cdFx0fSk7XG5cdH1cblx0aWYgKHJlY2VpcHQ/LnJlY2lwaWVudHMpIHtcblx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRgID4gUmVjaXBpZW50L3M6ICAke2NvbG9ycy5tYmx1ZShcblx0XHRcdFx0cmVjZWlwdC5yZWNpcGllbnRzLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpLFxuXHRcdFx0KX1gLFxuXHRcdCk7XG5cdH1cblx0aWYgKHJlY2VpcHQ/LmZlZXMpIGNvbnNvbGUuaW5mbyhgID4gTmV0d29yayBmZWU6ICAke2NvbG9ycy55ZWxsb3cocmVjZWlwdC5mZWVzLnRvU3RyaW5nKDIpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LnZhbHVlKSBjb25zb2xlLmluZm8oYCA+IFZhbHVlOiAgICAgICAgJHtjb2xvcnMubXllbGxvdyhyZWNlaXB0LnZhbHVlLnRvU3RyaW5nKDIpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LndlaWdodCkgY29uc29sZS5pbmZvKGAgPiBXZWlnaHQ6ICAgICAgICR7Y29sb3JzLm1ncmVlbihjb21tYXMocmVjZWlwdC53ZWlnaHQpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LndpdG5lc3Nlcykge1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gV2l0bmVzc2VzOiAgICAke3JlY2VpcHQud2l0bmVzc2VzfWApO1xuXHR9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uKHRyYW5zbWl0dGVyLCBvcHRpb25zKSB7XG5cdGNvbnN0IGNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgKCh4KSA9PiBgXFx4MWJbMzA7NDVtJHt4fVxceDFiWzBtYCk7XG5cdGxldCByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2lnblRyYW5zYWN0aW9uKG9wdGlvbnMsIG9wdGlvbnM/LnJlbG9hZCk7XG5cdGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG5cdFx0Y29uc29sZS5pbmZvKGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkocmVjZWlwdC50eCwgdHhKc29uUmVwbGFjZXIpKX1gKTtcblx0fVxuXHRpZiAob3B0aW9ucz8uaGVhZGxpbmUpIHtcblx0XHRjb25zb2xlLmluZm8oYFxcbiAke2NvbG9yKGAgICR7b3B0aW9ucy5oZWFkbGluZX0gIGApfVxcbmApO1xuXHR9XG5cdHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpO1xuXHRpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XG5cdFx0Ly8gcHJvbXB0IHVzZXIgY29uZmlybWF0aW9uXG5cdFx0Y29uc29sZS5pbmZvKCk7XG5cdFx0Y29uc3QgYW5zd2VyID0gYXdhaXQgcmVxdWlyZShcImlucXVpcmVyXCIpLmNyZWF0ZVByb21wdE1vZHVsZSgpKFtcblx0XHRcdHtcblx0XHRcdFx0bWVzc2FnZTogXCJTZW5kIHRyYW5zYWN0aW9uP1wiLFxuXHRcdFx0XHR0eXBlOiBcImNvbmZpcm1cIixcblx0XHRcdFx0bmFtZTogXCJjb250aW51ZVwiLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHRcdH0sXG5cdFx0XSk7XG5cdFx0aWYgKCFhbnN3ZXIuY29udGludWUpIHtcblx0XHRcdHJldHVybiByZWNlaXB0O1xuXHRcdH1cblx0fVxuXHR0cnkge1xuXHRcdGNvbnNvbGUuaW5mbygpO1xuXHRcdHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zZW5kVHJhbnNhY3Rpb24oKTtcblx0XHRpZiAob3B0aW9ucz8uYXdhaXQgfHwgb3B0aW9ucz8uY29uZmlybWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuY29uZmlybVRyYW5zYWN0aW9uKHJlY2VpcHQuaGFzaCwge1xuXHRcdFx0XHRjb25maXJtYXRpb25zOiBvcHRpb25zPy5jb25maXJtYXRpb25zIHx8IDAsXG5cdFx0XHRcdG9uQ2hlY2twb2ludDogdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcblx0XHRcdFx0b25TdGF0dXNDaGFuZ2U6IHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBkYXRhID0ge1xuXHRcdFx0XHRzdGF0dXM6IHJlY2VpcHQ/LnN0YXR1cyxcblx0XHRcdFx0dGltZXN0YW1wOiByZWNlaXB0Py50aW1lc3RhbXAgfHwgTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG5cdFx0XHR9O1xuXHRcdFx0Y29uc29sZS5pbmZvKGRhdGEpO1xuXHRcdH1cblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVycj8uaW5GbGlnaHQgJiYgZXJyLmluRmxpZ2h0KSB7XG5cdFx0XHRjb25zb2xlLmluZm8oYFxcbiR7Y29sb3JzLmdyYXkoSlNPTi5zdHJpbmdpZnkoZXJyLmluRmxpZ3Q/Lm1lc3NhZ2UsIHR4UmVjZWlwdEpzb25SZXBsYWNlcikpfWApO1xuXHRcdH1cblx0XHR0aHJvdyBlcnI7XG5cdH1cblx0cmV0dXJuIHJlY2VpcHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZVNsYXNoZXMoc3RyKSB7XG5cdC8vIGFkZCBhbm90aGVyIGVzY2FwZWQgc2xhc2ggaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYW4gb2RkXG5cdC8vIG51bWJlciBvZiBlc2NhcGVkIHNsYXNoZXMgd2hpY2ggd2lsbCBjcmFzaCBKU09OLnBhcnNlXG5cdGxldCBwYXJzZWRTdHIgPSBzdHIucmVwbGFjZSgvKF58W15cXFxcXSkoXFxcXFxcXFwpKlxcXFwkLywgXCIkJlxcXFxcIik7XG5cblx0Ly8gZXNjYXBlIHVuZXNjYXBlZCBkb3VibGUgcXVvdGVzIHRvIHByZXZlbnQgZXJyb3Igd2l0aFxuXHQvLyBhZGRlZCBkb3VibGUgcXVvdGVzIGluIGpzb24gc3RyaW5nXG5cdHBhcnNlZFN0ciA9IHBhcnNlZFN0ci5yZXBsYWNlKC8oXnxbXlxcXFxdKSgoXFxcXFxcXFwpKlwiKS9nLCBcIiQxXFxcXCQyXCIpO1xuXG5cdHRyeSB7XG5cdFx0cGFyc2VkU3RyID0gSlNPTi5wYXJzZShgXCIke3BhcnNlZFN0cn1cImApO1xuXHR9IGNhdGNoIChfZSkge1xuXHRcdHJldHVybiBzdHI7XG5cdH1cblx0cmV0dXJuIHBhcnNlZFN0cjtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EACN,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,qBAAqB,EACrB,MAAM,YAAY,CAAC;AAGpB,qBAAa,OAAQ,YAAW,QAAQ;IACvC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAElC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,EAAE,qBAAqB,CAAC;gBAE3B,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB;IAYrG,IAAW,SAAS,IAAI,aAAa,CAQpC;IAED,IAAW,SAAS,IAAI,mBAAmB,CAE1C;IAED,IAAW,GAAG,IAAI,mBAAmB,CAEpC;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED,IAAW,UAAU,IAAI,SAAS,CAEjC;IAED,IAAW,OAAO,IAAI,OAAO,GAAG,SAAS,CAExC;IAEM,mBAAmB,CAAC,UAAU,EAAE,SAAS,GAAG,GAAG;IAI/C,QAAQ,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG;QACvC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KACtB;IASM,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAI1C,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAU9B,aAAa,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAwB1F,SAAS,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,OAAO,GAAG,SAAS;IAOnD,QAAQ,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAI9C,WAAW,CAAC,KAAK,CAAC,EAAE;QAChC,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;KACjC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CASxB"}
|