@ruvector/ruvllm 2.5.7 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/benchmarks/embedding-benchmark.js +8 -8
- package/dist/cjs/benchmarks/index.js +5 -5
- package/dist/cjs/benchmarks/model-comparison.js +25 -15
- package/dist/cjs/benchmarks/routing-benchmark.js +5 -5
- package/dist/cjs/contrastive.js +9 -9
- package/dist/cjs/intelligence.js +18 -8
- package/dist/cjs/lora.d.ts +11 -0
- package/dist/cjs/lora.d.ts.map +1 -1
- package/dist/cjs/lora.js +16 -1
- package/dist/cjs/models.js +23 -13
- package/dist/cjs/native.js +4 -5
- package/dist/cjs/streaming.d.ts +0 -1
- package/dist/cjs/streaming.d.ts.map +1 -1
- package/dist/cjs/streaming.js +3 -3
- package/dist/cjs/training.d.ts +31 -1
- package/dist/cjs/training.d.ts.map +1 -1
- package/dist/cjs/training.js +86 -6
- package/dist/cjs/types.d.ts +7 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +1 -1
- package/dist/esm/lora.d.ts +11 -0
- package/dist/esm/lora.d.ts.map +1 -1
- package/dist/esm/lora.js +16 -1
- package/dist/esm/streaming.d.ts +0 -1
- package/dist/esm/streaming.d.ts.map +1 -1
- package/dist/esm/training.d.ts +31 -1
- package/dist/esm/training.d.ts.map +1 -1
- package/dist/esm/training.js +86 -6
- package/dist/esm/types.d.ts +7 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,13 @@
|
|
|
8
8
|
* - Semantic search accuracy
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
11
|
+
exports.CLUSTER_TEST_CASES = exports.SEARCH_TEST_CASES = exports.SIMILARITY_TEST_PAIRS = void 0;
|
|
12
|
+
exports.isCorrectSimilarity = isCorrectSimilarity;
|
|
13
|
+
exports.calculateMRR = calculateMRR;
|
|
14
|
+
exports.calculateNDCG = calculateNDCG;
|
|
15
|
+
exports.calculateSilhouette = calculateSilhouette;
|
|
16
|
+
exports.runEmbeddingBenchmark = runEmbeddingBenchmark;
|
|
17
|
+
exports.formatEmbeddingResults = formatEmbeddingResults;
|
|
12
18
|
/**
|
|
13
19
|
* Ground truth similarity pairs for testing
|
|
14
20
|
* Tests whether embeddings correctly capture semantic similarity
|
|
@@ -189,7 +195,6 @@ function isCorrectSimilarity(expected, computed) {
|
|
|
189
195
|
const threshold = SIMILARITY_THRESHOLDS[expected];
|
|
190
196
|
return computed >= threshold.min && computed <= threshold.max;
|
|
191
197
|
}
|
|
192
|
-
exports.isCorrectSimilarity = isCorrectSimilarity;
|
|
193
198
|
/**
|
|
194
199
|
* Calculate Mean Reciprocal Rank for search results
|
|
195
200
|
*/
|
|
@@ -203,7 +208,6 @@ function calculateMRR(rankings) {
|
|
|
203
208
|
}
|
|
204
209
|
return sumRR / rankings.length;
|
|
205
210
|
}
|
|
206
|
-
exports.calculateMRR = calculateMRR;
|
|
207
211
|
/**
|
|
208
212
|
* Calculate NDCG for search results
|
|
209
213
|
*/
|
|
@@ -216,7 +220,6 @@ function calculateNDCG(results, idealOrder) {
|
|
|
216
220
|
}, 0);
|
|
217
221
|
return idcg > 0 ? dcg / idcg : 0;
|
|
218
222
|
}
|
|
219
|
-
exports.calculateNDCG = calculateNDCG;
|
|
220
223
|
/**
|
|
221
224
|
* Calculate silhouette score for clustering
|
|
222
225
|
*/
|
|
@@ -261,7 +264,6 @@ function calculateSilhouette(embeddings, labels) {
|
|
|
261
264
|
}
|
|
262
265
|
return totalSilhouette / n;
|
|
263
266
|
}
|
|
264
|
-
exports.calculateSilhouette = calculateSilhouette;
|
|
265
267
|
function euclideanDistance(a, b) {
|
|
266
268
|
let sum = 0;
|
|
267
269
|
for (let i = 0; i < a.length; i++) {
|
|
@@ -362,7 +364,6 @@ function runEmbeddingBenchmark(embedder, similarityFn) {
|
|
|
362
364
|
totalPairs: similarityResults.length,
|
|
363
365
|
};
|
|
364
366
|
}
|
|
365
|
-
exports.runEmbeddingBenchmark = runEmbeddingBenchmark;
|
|
366
367
|
/**
|
|
367
368
|
* Format embedding benchmark results for display
|
|
368
369
|
*/
|
|
@@ -422,7 +423,6 @@ function formatEmbeddingResults(results) {
|
|
|
422
423
|
}
|
|
423
424
|
return lines.join('\n');
|
|
424
425
|
}
|
|
425
|
-
exports.formatEmbeddingResults = formatEmbeddingResults;
|
|
426
426
|
exports.default = {
|
|
427
427
|
SIMILARITY_TEST_PAIRS: exports.SIMILARITY_TEST_PAIRS,
|
|
428
428
|
SEARCH_TEST_CASES: exports.SEARCH_TEST_CASES,
|
|
@@ -433,4 +433,4 @@ exports.default = {
|
|
|
433
433
|
calculateMRR,
|
|
434
434
|
calculateNDCG,
|
|
435
435
|
};
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nLWJlbmNobWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL2VtYmVkZGluZy1iZW5jaG1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7OztBQTJDSDs7O0dBR0c7QUFDVSxRQUFBLHFCQUFxQixHQUFvQjtJQUNwRCw0REFBNEQ7SUFDNUQsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ3RJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUMvSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDakosRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO0lBQ3ZJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLDZCQUE2QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtJQUMzSCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVB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SyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBekRELHdEQXlEQztBQUVELGtCQUFlO0lBQ2IscUJBQXFCLEVBQXJCLDZCQUFxQjtJQUNyQixpQkFBaUIsRUFBakIseUJBQWlCO0lBQ2pCLGtCQUFrQixFQUFsQiwwQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLGFBQWE7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbWJlZGRpbmcgUXVhbGl0eSBCZW5jaG1hcmsgZm9yIFJ1dkxUUkEgTW9kZWxzXG4gKlxuICogVGVzdHMgZW1iZWRkaW5nIHF1YWxpdHkgZm9yIENsYXVkZSBDb2RlIHVzZSBjYXNlczpcbiAqIC0gQ29kZSBzaW1pbGFyaXR5IGRldGVjdGlvblxuICogLSBUYXNrIGNsdXN0ZXJpbmdcbiAqIC0gU2VtYW50aWMgc2VhcmNoIGFjY3VyYWN5XG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRpbmdQYWlyIHtcbiAgaWQ6IHN0cmluZztcbiAgdGV4dDE6IHN0cmluZztcbiAgdGV4dDI6IHN0cmluZztcbiAgc2ltaWxhcml0eTogJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JyB8ICdub25lJztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRpbmdSZXN1bHQge1xuICBwYWlySWQ6IHN0cmluZztcbiAgZXhwZWN0ZWRTaW1pbGFyaXR5OiBzdHJpbmc7XG4gIGNvbXB1dGVkU2NvcmU6IG51bWJlcjtcbiAgY29ycmVjdDogYm9vbGVhbjtcbiAgbGF0ZW5jeU1zOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlclRlc3RDYXNlIHtcbiAgaWQ6IHN0cmluZztcbiAgaXRlbXM6IHN0cmluZ1tdO1xuICBleHBlY3RlZENsdXN0ZXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzIHtcbiAgLy8gU2ltaWxhcml0eSBkZXRlY3Rpb25cbiAgc2ltaWxhcml0eUFjY3VyYWN5OiBudW1iZXI7XG4gIHNpbWlsYXJpdHlCeUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBhdmdTaW1pbGFyaXR5TGF0ZW5jeU1zOiBudW1iZXI7XG5cbiAgLy8gQ2x1c3RlcmluZyBxdWFsaXR5XG4gIGNsdXN0ZXJQdXJpdHk6IG51bWJlcjtcbiAgc2lsaG91ZXR0ZVNjb3JlOiBudW1iZXI7XG5cbiAgLy8gU2VhcmNoIHF1YWxpdHlcbiAgc2VhcmNoTVJSOiBudW1iZXI7IC8vIE1lYW4gUmVjaXByb2NhbCBSYW5rXG4gIHNlYXJjaE5EQ0c6IG51bWJlcjsgLy8gTm9ybWFsaXplZCBEaXNjb3VudGVkIEN1bXVsYXRpdmUgR2FpblxuXG4gIC8vIERldGFpbHNcbiAgc2ltaWxhcml0eVJlc3VsdHM6IEVtYmVkZGluZ1Jlc3VsdFtdO1xuICB0b3RhbFBhaXJzOiBudW1iZXI7XG59XG5cbi8qKlxuICogR3JvdW5kIHRydXRoIHNpbWlsYXJpdHkgcGFpcnMgZm9yIHRlc3RpbmdcbiAqIFRlc3RzIHdoZXRoZXIgZW1iZWRkaW5ncyBjb3JyZWN0bHkgY2FwdHVyZSBzZW1hbnRpYyBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBjb25zdCBTSU1JTEFSSVRZX1RFU1RfUEFJUlM6IEVtYmVkZGluZ1BhaXJbXSA9IFtcbiAgLy8gPT09IEhJR0ggU0lNSUxBUklUWSAoc2FtZSBjb25jZXB0LCBkaWZmZXJlbnQgd29yZGluZykgPT09XG4gIHsgaWQ6ICdIMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgdXNlciBhdXRoZW50aWNhdGlvbicsIHRleHQyOiAnY3JlYXRlIGxvZ2luIGZ1bmN0aW9uYWxpdHknLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnSDAwMicsIHRleHQxOiAnd3JpdGUgdW5pdCB0ZXN0cyBmb3IgdGhlIEFQSScsIHRleHQyOiAnY3JlYXRlIHRlc3QgY2FzZXMgZm9yIFJFU1QgZW5kcG9pbnRzJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0gwMDMnLCB0ZXh0MTogJ2ZpeCB0aGUgbnVsbCBwb2ludGVyIGV4Y2VwdGlvbicsIHRleHQyOiAncmVzb2x2ZSB0aGUgTnVsbFBvaW50ZXJFeGNlcHRpb24gYnVnJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycgfSxcbiAgeyBpZDogJ0gwMDQnLCB0ZXh0MTogJ29wdGltaXplIGRhdGFiYXNlIHF1ZXJpZXMnLCB0ZXh0MjogJ2ltcHJvdmUgU1FMIHF1ZXJ5IHBlcmZvcm1hbmNlJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJyB9LFxuICB7IGlkOiAnSDAwNScsIHRleHQxOiAnZGVwbG95IHRvIHByb2R1Y3Rpb24nLCB0ZXh0MjogJ3JlbGVhc2UgdG8gcHJvZCBlbnZpcm9ubWVudCcsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdkZXZvcHMnIH0sXG4gIHsgaWQ6ICdIMDA2JywgdGV4dDE6ICdyZWZhY3RvciB0aGUgbGVnYWN5IGNvZGUnLCB0ZXh0MjogJ3Jlc3RydWN0dXJlIG9sZCBjb2RlYmFzZScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdyZWZhY3RvcmluZycgfSxcbiAgeyBpZDogJ0gwMDcnLCB0ZXh0MTogJ2FkZCBlcnJvciBoYW5kbGluZycsIHRleHQyOiAnaW1wbGVtZW50IGV4Y2VwdGlvbiBoYW5kbGluZycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdIMDA4JywgdGV4dDE6ICdjcmVhdGUgUkVTVCBBUEkgZW5kcG9pbnQnLCB0ZXh0MjogJ2J1aWxkIEhUVFAgQVBJIHJvdXRlJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0gwMDknLCB0ZXh0MTogJ2NoZWNrIGZvciBTUUwgaW5qZWN0aW9uJywgdGV4dDI6ICdhdWRpdCBmb3IgU1FMaSB2dWxuZXJhYmlsaXRpZXMnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnc2VjdXJpdHknIH0sXG4gIHsgaWQ6ICdIMDEwJywgdGV4dDE6ICdkb2N1bWVudCB0aGUgQVBJJywgdGV4dDI6ICd3cml0ZSBBUEkgZG9jdW1lbnRhdGlvbicsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdkb2N1bWVudGF0aW9uJyB9LFxuXG4gIC8vIENvZGUgc25pcHBldHMgLSBzYW1lIGZ1bmN0aW9uYWxpdHlcbiAgeyBpZDogJ0gwMTEnLCB0ZXh0MTogJ2Z1bmN0aW9uIGFkZChhLCBiKSB7IHJldHVybiBhICsgYjsgfScsIHRleHQyOiAnY29uc3Qgc3VtID0gKHgsIHkpID0+IHggKyB5OycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdIMDEyJywgdGV4dDE6ICdmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKyknLCB0ZXh0MjogJ2Fyci5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge30pJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ0gwMTMnLCB0ZXh0MTogJ2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSgpIHsgYXdhaXQgZmV0Y2godXJsKTsgfScsIHRleHQyOiAnY29uc3QgZ2V0RGF0YSA9IGFzeW5jICgpID0+IHsgYXdhaXQgYXhpb3MuZ2V0KHVybCk7IH0nLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuXG4gIC8vID09PSBNRURJVU0gU0lNSUxBUklUWSAocmVsYXRlZCBidXQgZGlmZmVyZW50KSA9PT1cbiAgeyBpZDogJ00wMDEnLCB0ZXh0MTogJ2ltcGxlbWVudCB1c2VyIGF1dGhlbnRpY2F0aW9uJywgdGV4dDI6ICdjcmVhdGUgdXNlciByZWdpc3RyYXRpb24nLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdNMDAyJywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzJywgdGV4dDI6ICd3cml0ZSBpbnRlZ3JhdGlvbiB0ZXN0cycsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ3Rlc3RpbmcnIH0sXG4gIHsgaWQ6ICdNMDAzJywgdGV4dDE6ICdmaXggdGhlIGJ1ZyBpbiBjaGVja291dCcsIHRleHQyOiAnZGVidWcgdGhlIHBheW1lbnQgZmxvdycsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycgfSxcbiAgeyBpZDogJ00wMDQnLCB0ZXh0MTogJ29wdGltaXplIGZyb250ZW5kIHBlcmZvcm1hbmNlJywgdGV4dDI6ICdpbXByb3ZlIGJhY2tlbmQgcmVzcG9uc2UgdGltZScsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJyB9LFxuICB7IGlkOiAnTTAwNScsIHRleHQxOiAnZGVwbG95IHRvIHN0YWdpbmcnLCB0ZXh0MjogJ2RlcGxveSB0byBwcm9kdWN0aW9uJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnZGV2b3BzJyB9LFxuICB7IGlkOiAnTTAwNicsIHRleHQxOiAnUmVhY3QgY29tcG9uZW50JywgdGV4dDI6ICdWdWUgY29tcG9uZW50Jywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnTTAwNycsIHRleHQxOiAnUG9zdGdyZVNRTCBxdWVyeScsIHRleHQyOiAnTXlTUUwgcXVlcnknLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdNMDA4JywgdGV4dDE6ICdSRVNUIEFQSScsIHRleHQyOiAnR3JhcGhRTCBBUEknLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdNMDA5JywgdGV4dDE6ICdOb2RlLmpzIHNlcnZlcicsIHRleHQyOiAnUHl0aG9uIEZsYXNrIHNlcnZlcicsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ00wMTAnLCB0ZXh0MTogJ2FkZCBjYWNoaW5nIGxheWVyJywgdGV4dDI6ICdpbXBsZW1lbnQgcmF0ZSBsaW1pdGluZycsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJyB9LFxuXG4gIC8vID09PSBMT1cgU0lNSUxBUklUWSAoc2FtZSBkb21haW4sIGRpZmZlcmVudCB0YXNrKSA9PT1cbiAgeyBpZDogJ0wwMDEnLCB0ZXh0MTogJ2ltcGxlbWVudCBhdXRoZW50aWNhdGlvbicsIHRleHQyOiAnd3JpdGUgZG9jdW1lbnRhdGlvbicsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0wwMDInLCB0ZXh0MTogJ2ZpeCBidWcnLCB0ZXh0MjogJ2FkZCBuZXcgZmVhdHVyZScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0wwMDMnLCB0ZXh0MTogJ29wdGltaXplIHF1ZXJ5JywgdGV4dDI6ICdyZXZpZXcgcHVsbCByZXF1ZXN0Jywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXG4gIHsgaWQ6ICdMMDA0JywgdGV4dDE6ICdkZXBsb3kgYXBwbGljYXRpb24nLCB0ZXh0MjogJ2Rlc2lnbiBhcmNoaXRlY3R1cmUnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcbiAgeyBpZDogJ0wwMDUnLCB0ZXh0MTogJ2Zyb250ZW5kIFJlYWN0IGNvZGUnLCB0ZXh0MjogJ2JhY2tlbmQgZGF0YWJhc2UgbWlncmF0aW9uJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnTDAwNicsIHRleHQxOiAnc2VjdXJpdHkgYXVkaXQnLCB0ZXh0MjogJ3BlcmZvcm1hbmNlIGJlbmNobWFyaycsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ21peGVkJyB9LFxuICB7IGlkOiAnTDAwNycsIHRleHQxOiAnd3JpdGUgdW5pdCB0ZXN0cycsIHRleHQyOiAnY3JlYXRlIENJL0NEIHBpcGVsaW5lJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXG4gIHsgaWQ6ICdMMDA4JywgdGV4dDE6ICdDU1Mgc3R5bGluZycsIHRleHQyOiAnZGF0YWJhc2Ugc2NoZW1hJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuXG4gIC8vID09PSBOTyBTSU1JTEFSSVRZICh1bnJlbGF0ZWQpID09PVxuICB7IGlkOiAnTjAwMScsIHRleHQxOiAnaW1wbGVtZW50IHVzZXIgbG9naW4nLCB0ZXh0MjogJ3RoZSB3ZWF0aGVyIGlzIG5pY2UgdG9kYXknLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxuICB7IGlkOiAnTjAwMicsIHRleHQxOiAnZml4IEphdmFTY3JpcHQgYnVnJywgdGV4dDI6ICdyZWNpcGUgZm9yIGNob2NvbGF0ZSBjYWtlJywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcbiAgeyBpZDogJ04wMDMnLCB0ZXh0MTogJ2RlcGxveSBLdWJlcm5ldGVzIGNsdXN0ZXInLCB0ZXh0MjogJ2Jvb2sgYSBmbGlnaHQgdG8gUGFyaXMnLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxuICB7IGlkOiAnTjAwNCcsIHRleHQxOiAnb3B0aW1pemUgU1FMIHF1ZXJ5JywgdGV4dDI6ICdsZWFybiB0byBwbGF5IGd1aXRhcicsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG4gIHsgaWQ6ICdOMDA1JywgdGV4dDE6ICdjb25zdCB4ID0gNDI7JywgdGV4dDI6ICdyb3NlcyBhcmUgcmVkIHZpb2xldHMgYXJlIGJsdWUnLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxuXTtcblxuLyoqXG4gKiBTZWFyY2ggcmVsZXZhbmNlIHRlc3QgY2FzZXNcbiAqIFF1ZXJ5ICsgZG9jdW1lbnRzIHdpdGggcmVsZXZhbmNlIHNjb3Jlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFRlc3RDYXNlIHtcbiAgaWQ6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgZG9jdW1lbnRzOiB7IHRleHQ6IHN0cmluZzsgcmVsZXZhbmNlOiBudW1iZXIgfVtdOyAvLyByZWxldmFuY2U6IDAtMyAoMD1pcnJlbGV2YW50LCAzPWhpZ2hseSByZWxldmFudClcbn1cblxuZXhwb3J0IGNvbnN0IFNFQVJDSF9URVNUX0NBU0VTOiBTZWFyY2hUZXN0Q2FzZVtdID0gW1xuICB7XG4gICAgaWQ6ICdTMDAxJyxcbiAgICBxdWVyeTogJ2hvdyB0byBpbXBsZW1lbnQgdXNlciBhdXRoZW50aWNhdGlvbiBpbiBOb2RlLmpzJyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ0ltcGxlbWVudGluZyBKV1QgYXV0aGVudGljYXRpb24gaW4gRXhwcmVzcy5qcyB3aXRoIHBhc3Nwb3J0JywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdOb2RlLmpzIGxvZ2luIHN5c3RlbSB3aXRoIGJjcnlwdCBwYXNzd29yZCBoYXNoaW5nJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdCdWlsZGluZyBhIFJlYWN0IGxvZ2luIGZvcm0gY29tcG9uZW50JywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdQb3N0Z3JlU1FMIHVzZXIgdGFibGUgc2NoZW1hIGRlc2lnbicsIHJlbGV2YW5jZTogMSB9LFxuICAgICAgeyB0ZXh0OiAnSG93IHRvIGRlcGxveSBEb2NrZXIgY29udGFpbmVycycsIHJlbGV2YW5jZTogMCB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ1MwMDInLFxuICAgIHF1ZXJ5OiAnZml4IG1lbW9yeSBsZWFrIGluIEphdmFTY3JpcHQnLFxuICAgIGRvY3VtZW50czogW1xuICAgICAgeyB0ZXh0OiAnRGVidWdnaW5nIG1lbW9yeSBsZWFrcyB3aXRoIENocm9tZSBEZXZUb29scyBoZWFwIHNuYXBzaG90cycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnQ29tbW9uIGNhdXNlcyBvZiBtZW1vcnkgbGVha3MgaW4gTm9kZS5qcyBhcHBsaWNhdGlvbnMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ0phdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uIGV4cGxhaW5lZCcsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnT3B0aW1pemluZyBSZWFjdCBjb21wb25lbnQgcmUtcmVuZGVycycsIHJlbGV2YW5jZTogMSB9LFxuICAgICAgeyB0ZXh0OiAnQ1NTIGZsZXhib3ggbGF5b3V0IHR1dG9yaWFsJywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnUzAwMycsXG4gICAgcXVlcnk6ICdkYXRhYmFzZSBtaWdyYXRpb24gYmVzdCBwcmFjdGljZXMnLFxuICAgIGRvY3VtZW50czogW1xuICAgICAgeyB0ZXh0OiAnU2NoZW1hIG1pZ3JhdGlvbiBzdHJhdGVnaWVzIGZvciB6ZXJvLWRvd250aW1lIGRlcGxveW1lbnRzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdVc2luZyBQcmlzbWEgbWlncmF0ZSBmb3IgUG9zdGdyZVNRTCBzY2hlbWEgY2hhbmdlcycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnRGF0YWJhc2UgYmFja3VwIGFuZCByZWNvdmVyeSBwcm9jZWR1cmVzJywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdTUUwgcXVlcnkgb3B0aW1pemF0aW9uIHRlY2huaXF1ZXMnLCByZWxldmFuY2U6IDEgfSxcbiAgICAgIHsgdGV4dDogJ1JlYWN0IHN0YXRlIG1hbmFnZW1lbnQgd2l0aCBSZWR1eCcsIHJlbGV2YW5jZTogMCB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ1MwMDQnLFxuICAgIHF1ZXJ5OiAnd3JpdGUgdW5pdCB0ZXN0cyBmb3IgUmVhY3QgY29tcG9uZW50cycsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdUZXN0aW5nIFJlYWN0IGNvbXBvbmVudHMgd2l0aCBKZXN0IGFuZCBSZWFjdCBUZXN0aW5nIExpYnJhcnknLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ1NuYXBzaG90IHRlc3RpbmcgZm9yIFVJIGNvbXBvbmVudHMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ01vY2tpbmcgQVBJIGNhbGxzIGluIGZyb250ZW5kIHRlc3RzJywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdFbmQtdG8tZW5kIHRlc3Rpbmcgd2l0aCBDeXByZXNzJywgcmVsZXZhbmNlOiAxIH0sXG4gICAgICB7IHRleHQ6ICdLdWJlcm5ldGVzIHBvZCBjb25maWd1cmF0aW9uJywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnUzAwNScsXG4gICAgcXVlcnk6ICdvcHRpbWl6ZSBBUEkgcmVzcG9uc2UgdGltZScsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdJbXBsZW1lbnRpbmcgUmVkaXMgY2FjaGluZyBmb3IgQVBJIGVuZHBvaW50cycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnRGF0YWJhc2UgcXVlcnkgb3B0aW1pemF0aW9uIHdpdGggaW5kZXhlcycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnVXNpbmcgQ0ROIGZvciBzdGF0aWMgYXNzZXQgZGVsaXZlcnknLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ0xvYWQgYmFsYW5jaW5nIHN0cmF0ZWdpZXMgZm9yIG1pY3Jvc2VydmljZXMnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ1dyaXRpbmcgY2xlYW4gSmF2YVNjcmlwdCBjb2RlJywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbl07XG5cbi8qKlxuICogQ2x1c3RlciB0ZXN0IGNhc2VzIC0gaXRlbXMgdGhhdCBzaG91bGQgY2x1c3RlciB0b2dldGhlclxuICovXG5leHBvcnQgY29uc3QgQ0xVU1RFUl9URVNUX0NBU0VTOiBDbHVzdGVyVGVzdENhc2VbXSA9IFtcbiAge1xuICAgIGlkOiAnQ0wwMDEnLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2F1dGhlbnRpY2F0aW9uJyxcbiAgICBpdGVtczogW1xuICAgICAgJ2ltcGxlbWVudCB1c2VyIGxvZ2luJyxcbiAgICAgICdhZGQgSldUIHRva2VuIHZhbGlkYXRpb24nLFxuICAgICAgJ2NyZWF0ZSBwYXNzd29yZCByZXNldCBmbG93JyxcbiAgICAgICdpbXBsZW1lbnQgT0F1dGggaW50ZWdyYXRpb24nLFxuICAgICAgJ2FkZCB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdDTDAwMicsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAndGVzdGluZycsXG4gICAgaXRlbXM6IFtcbiAgICAgICd3cml0ZSB1bml0IHRlc3RzJyxcbiAgICAgICdhZGQgaW50ZWdyYXRpb24gdGVzdHMnLFxuICAgICAgJ2NyZWF0ZSBFMkUgdGVzdCBzdWl0ZScsXG4gICAgICAnaW1wcm92ZSB0ZXN0IGNvdmVyYWdlJyxcbiAgICAgICdhZGQgc25hcHNob3QgdGVzdHMnLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ0NMMDAzJyxcbiAgICBleHBlY3RlZENsdXN0ZXI6ICdkYXRhYmFzZScsXG4gICAgaXRlbXM6IFtcbiAgICAgICdvcHRpbWl6ZSBTUUwgcXVlcmllcycsXG4gICAgICAnYWRkIGRhdGFiYXNlIGluZGV4ZXMnLFxuICAgICAgJ2NyZWF0ZSBtaWdyYXRpb24gc2NyaXB0JyxcbiAgICAgICdpbXBsZW1lbnQgY29ubmVjdGlvbiBwb29saW5nJyxcbiAgICAgICdkZXNpZ24gc2NoZW1hIGZvciB1c2VycyB0YWJsZScsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnQ0wwMDQnLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2Zyb250ZW5kJyxcbiAgICBpdGVtczogW1xuICAgICAgJ2J1aWxkIFJlYWN0IGNvbXBvbmVudCcsXG4gICAgICAnYWRkIENTUyBzdHlsaW5nJyxcbiAgICAgICdpbXBsZW1lbnQgcmVzcG9uc2l2ZSBkZXNpZ24nLFxuICAgICAgJ2NyZWF0ZSBmb3JtIHZhbGlkYXRpb24nLFxuICAgICAgJ2FkZCBsb2FkaW5nIHNwaW5uZXInLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ0NMMDA1JyxcbiAgICBleHBlY3RlZENsdXN0ZXI6ICdkZXZvcHMnLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnc2V0IHVwIENJL0NEIHBpcGVsaW5lJyxcbiAgICAgICdjb25maWd1cmUgS3ViZXJuZXRlcyBkZXBsb3ltZW50JyxcbiAgICAgICdjcmVhdGUgRG9ja2VyIGNvbnRhaW5lcicsXG4gICAgICAnYWRkIG1vbml0b3JpbmcgYWxlcnRzJyxcbiAgICAgICdpbXBsZW1lbnQgYXV0by1zY2FsaW5nJyxcbiAgICBdLFxuICB9LFxuXTtcblxuLyoqXG4gKiBFeHBlY3RlZCBzaW1pbGFyaXR5IHNjb3JlIHJhbmdlc1xuICovXG5jb25zdCBTSU1JTEFSSVRZX1RIUkVTSE9MRFMgPSB7XG4gIGhpZ2g6IHsgbWluOiAwLjcsIG1heDogMS4wIH0sXG4gIG1lZGl1bTogeyBtaW46IDAuNCwgbWF4OiAwLjcgfSxcbiAgbG93OiB7IG1pbjogMC4yLCBtYXg6IDAuNCB9LFxuICBub25lOiB7IG1pbjogMC4wLCBtYXg6IDAuMiB9LFxufTtcblxuLyoqXG4gKiBDaGVjayBpZiBjb21wdXRlZCBzaW1pbGFyaXR5IG1hdGNoZXMgZXhwZWN0ZWQgY2F0ZWdvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29ycmVjdFNpbWlsYXJpdHkoXG4gIGV4cGVjdGVkOiAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnIHwgJ25vbmUnLFxuICBjb21wdXRlZDogbnVtYmVyXG4pOiBib29sZWFuIHtcbiAgY29uc3QgdGhyZXNob2xkID0gU0lNSUxBUklUWV9USFJFU0hPTERTW2V4cGVjdGVkXTtcbiAgcmV0dXJuIGNvbXB1dGVkID49IHRocmVzaG9sZC5taW4gJiYgY29tcHV0ZWQgPD0gdGhyZXNob2xkLm1heDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgTWVhbiBSZWNpcHJvY2FsIFJhbmsgZm9yIHNlYXJjaCByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVNUlIoXG4gIHJhbmtpbmdzOiB7IHJlbGV2YW50OiBib29sZWFuIH1bXVtdXG4pOiBudW1iZXIge1xuICBsZXQgc3VtUlIgPSAwO1xuICBmb3IgKGNvbnN0IHJhbmtpbmcgb2YgcmFua2luZ3MpIHtcbiAgICBjb25zdCBmaXJzdFJlbGV2YW50SWR4ID0gcmFua2luZy5maW5kSW5kZXgociA9PiByLnJlbGV2YW50KTtcbiAgICBpZiAoZmlyc3RSZWxldmFudElkeCA+PSAwKSB7XG4gICAgICBzdW1SUiArPSAxIC8gKGZpcnN0UmVsZXZhbnRJZHggKyAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bVJSIC8gcmFua2luZ3MubGVuZ3RoO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBORENHIGZvciBzZWFyY2ggcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTkRDRyhcbiAgcmVzdWx0czogeyByZWxldmFuY2U6IG51bWJlciB9W10sXG4gIGlkZWFsT3JkZXI6IHsgcmVsZXZhbmNlOiBudW1iZXIgfVtdXG4pOiBudW1iZXIge1xuICBjb25zdCBkY2cgPSByZXN1bHRzLnJlZHVjZSgoc3VtLCByLCBpKSA9PiB7XG4gICAgcmV0dXJuIHN1bSArIChNYXRoLnBvdygyLCByLnJlbGV2YW5jZSkgLSAxKSAvIE1hdGgubG9nMihpICsgMik7XG4gIH0sIDApO1xuXG4gIGNvbnN0IGlkY2cgPSBpZGVhbE9yZGVyLnJlZHVjZSgoc3VtLCByLCBpKSA9PiB7XG4gICAgcmV0dXJuIHN1bSArIChNYXRoLnBvdygyLCByLnJlbGV2YW5jZSkgLSAxKSAvIE1hdGgubG9nMihpICsgMik7XG4gIH0sIDApO1xuXG4gIHJldHVybiBpZGNnID4gMCA/IGRjZyAvIGlkY2cgOiAwO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBzaWxob3VldHRlIHNjb3JlIGZvciBjbHVzdGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVTaWxob3VldHRlKFxuICBlbWJlZGRpbmdzOiBudW1iZXJbXVtdLFxuICBsYWJlbHM6IG51bWJlcltdXG4pOiBudW1iZXIge1xuICAvLyBTaW1wbGlmaWVkIHNpbGhvdWV0dGUgY2FsY3VsYXRpb25cbiAgY29uc3QgbiA9IGVtYmVkZGluZ3MubGVuZ3RoO1xuICBpZiAobiA8IDIpIHJldHVybiAwO1xuXG4gIGxldCB0b3RhbFNpbGhvdWV0dGUgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgY29uc3QgY2x1c3RlciA9IGxhYmVsc1tpXTtcblxuICAgIC8vIENhbGN1bGF0ZSBtZWFuIGludHJhLWNsdXN0ZXIgZGlzdGFuY2UgKGEpXG4gICAgbGV0IGludHJhU3VtID0gMDtcbiAgICBsZXQgaW50cmFDb3VudCA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgIGlmIChpICE9PSBqICYmIGxhYmVsc1tqXSA9PT0gY2x1c3Rlcikge1xuICAgICAgICBpbnRyYVN1bSArPSBldWNsaWRlYW5EaXN0YW5jZShlbWJlZGRpbmdzW2ldLCBlbWJlZGRpbmdzW2pdKTtcbiAgICAgICAgaW50cmFDb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBhID0gaW50cmFDb3VudCA+IDAgPyBpbnRyYVN1bSAvIGludHJhQ291bnQgOiAwO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG1pbiBtZWFuIGludGVyLWNsdXN0ZXIgZGlzdGFuY2UgKGIpXG4gICAgY29uc3Qgb3RoZXJDbHVzdGVycyA9IFsuLi5uZXcgU2V0KGxhYmVscyldLmZpbHRlcihjID0+IGMgIT09IGNsdXN0ZXIpO1xuICAgIGxldCBtaW5JbnRlck1lYW4gPSBJbmZpbml0eTtcblxuICAgIGZvciAoY29uc3Qgb3RoZXJDbHVzdGVyIG9mIG90aGVyQ2x1c3RlcnMpIHtcbiAgICAgIGxldCBpbnRlclN1bSA9IDA7XG4gICAgICBsZXQgaW50ZXJDb3VudCA9IDA7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBpZiAobGFiZWxzW2pdID09PSBvdGhlckNsdXN0ZXIpIHtcbiAgICAgICAgICBpbnRlclN1bSArPSBldWNsaWRlYW5EaXN0YW5jZShlbWJlZGRpbmdzW2ldLCBlbWJlZGRpbmdzW2pdKTtcbiAgICAgICAgICBpbnRlckNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpbnRlckNvdW50ID4gMCkge1xuICAgICAgICBtaW5JbnRlck1lYW4gPSBNYXRoLm1pbihtaW5JbnRlck1lYW4sIGludGVyU3VtIC8gaW50ZXJDb3VudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGIgPSBtaW5JbnRlck1lYW4gPT09IEluZmluaXR5ID8gMCA6IG1pbkludGVyTWVhbjtcblxuICAgIC8vIFNpbGhvdWV0dGUgZm9yIHRoaXMgcG9pbnRcbiAgICBjb25zdCBzID0gTWF0aC5tYXgoYSwgYikgPiAwID8gKGIgLSBhKSAvIE1hdGgubWF4KGEsIGIpIDogMDtcbiAgICB0b3RhbFNpbGhvdWV0dGUgKz0gcztcbiAgfVxuXG4gIHJldHVybiB0b3RhbFNpbGhvdWV0dGUgLyBuO1xufVxuXG5mdW5jdGlvbiBldWNsaWRlYW5EaXN0YW5jZShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXIge1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgc3VtICs9IE1hdGgucG93KGFbaV0gLSBiW2ldLCAyKTtcbiAgfVxuICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG59XG5cbi8qKlxuICogUnVuIHRoZSBlbWJlZGRpbmcgYmVuY2htYXJrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5FbWJlZGRpbmdCZW5jaG1hcmsoXG4gIGVtYmVkZGVyOiAodGV4dDogc3RyaW5nKSA9PiBudW1iZXJbXSxcbiAgc2ltaWxhcml0eUZuOiAoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKSA9PiBudW1iZXJcbik6IEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMge1xuICBjb25zdCBzaW1pbGFyaXR5UmVzdWx0czogRW1iZWRkaW5nUmVzdWx0W10gPSBbXTtcbiAgY29uc3QgbGF0ZW5jaWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIC8vIFRlc3Qgc2ltaWxhcml0eSBwYWlyc1xuICBmb3IgKGNvbnN0IHBhaXIgb2YgU0lNSUxBUklUWV9URVNUX1BBSVJTKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBlbWIxID0gZW1iZWRkZXIocGFpci50ZXh0MSk7XG4gICAgY29uc3QgZW1iMiA9IGVtYmVkZGVyKHBhaXIudGV4dDIpO1xuICAgIGNvbnN0IHNjb3JlID0gc2ltaWxhcml0eUZuKGVtYjEsIGVtYjIpO1xuICAgIGNvbnN0IGxhdGVuY3lNcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQ7XG5cbiAgICBsYXRlbmNpZXMucHVzaChsYXRlbmN5TXMpO1xuXG4gICAgc2ltaWxhcml0eVJlc3VsdHMucHVzaCh7XG4gICAgICBwYWlySWQ6IHBhaXIuaWQsXG4gICAgICBleHBlY3RlZFNpbWlsYXJpdHk6IHBhaXIuc2ltaWxhcml0eSxcbiAgICAgIGNvbXB1dGVkU2NvcmU6IHNjb3JlLFxuICAgICAgY29ycmVjdDogaXNDb3JyZWN0U2ltaWxhcml0eShwYWlyLnNpbWlsYXJpdHksIHNjb3JlKSxcbiAgICAgIGxhdGVuY3lNcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGFjY3VyYWN5XG4gIGNvbnN0IGNvcnJlY3RTaW1pbGFyaXR5ID0gc2ltaWxhcml0eVJlc3VsdHMuZmlsdGVyKHIgPT4gci5jb3JyZWN0KS5sZW5ndGg7XG4gIGNvbnN0IHNpbWlsYXJpdHlBY2N1cmFjeSA9IGNvcnJlY3RTaW1pbGFyaXR5IC8gc2ltaWxhcml0eVJlc3VsdHMubGVuZ3RoO1xuXG4gIC8vIEFjY3VyYWN5IGJ5IGNhdGVnb3J5XG4gIGNvbnN0IGNhdGVnb3JpZXMgPSBbLi4ubmV3IFNldChTSU1JTEFSSVRZX1RFU1RfUEFJUlMubWFwKHAgPT4gcC5jYXRlZ29yeSkpXTtcbiAgY29uc3Qgc2ltaWxhcml0eUJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllcykge1xuICAgIGNvbnN0IGNhdFJlc3VsdHMgPSBzaW1pbGFyaXR5UmVzdWx0cy5maWx0ZXIoXG4gICAgICAociwgaSkgPT4gU0lNSUxBUklUWV9URVNUX1BBSVJTW2ldLmNhdGVnb3J5ID09PSBjYXRcbiAgICApO1xuICAgIHNpbWlsYXJpdHlCeUNhdGVnb3J5W2NhdF0gPSBjYXRSZXN1bHRzLmZpbHRlcihyID0+IHIuY29ycmVjdCkubGVuZ3RoIC8gY2F0UmVzdWx0cy5sZW5ndGg7XG4gIH1cblxuICAvLyBUZXN0IHNlYXJjaCBxdWFsaXR5IChNUlIgYW5kIE5EQ0cpXG4gIGNvbnN0IHNlYXJjaFJhbmtpbmdzOiB7IHJlbGV2YW50OiBib29sZWFuIH1bXVtdID0gW107XG4gIGxldCB0b3RhbE5EQ0cgPSAwO1xuXG4gIGZvciAoY29uc3QgdGVzdENhc2Ugb2YgU0VBUkNIX1RFU1RfQ0FTRVMpIHtcbiAgICBjb25zdCBxdWVyeUVtYiA9IGVtYmVkZGVyKHRlc3RDYXNlLnF1ZXJ5KTtcbiAgICBjb25zdCBkb2NTY29yZXMgPSB0ZXN0Q2FzZS5kb2N1bWVudHMubWFwKGRvYyA9PiAoe1xuICAgICAgLi4uZG9jLFxuICAgICAgc2NvcmU6IHNpbWlsYXJpdHlGbihxdWVyeUVtYiwgZW1iZWRkZXIoZG9jLnRleHQpKSxcbiAgICB9KSk7XG5cbiAgICAvLyBTb3J0IGJ5IGNvbXB1dGVkIHNjb3JlXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRvY1Njb3Jlc10uc29ydCgoYSwgYikgPT4gYi5zY29yZSAtIGEuc2NvcmUpO1xuXG4gICAgLy8gRm9yIE1SUlxuICAgIHNlYXJjaFJhbmtpbmdzLnB1c2goc29ydGVkLm1hcChkID0+ICh7IHJlbGV2YW50OiBkLnJlbGV2YW5jZSA+PSAyIH0pKSk7XG5cbiAgICAvLyBGb3IgTkRDR1xuICAgIGNvbnN0IGlkZWFsT3JkZXIgPSBbLi4udGVzdENhc2UuZG9jdW1lbnRzXS5zb3J0KChhLCBiKSA9PiBiLnJlbGV2YW5jZSAtIGEucmVsZXZhbmNlKTtcbiAgICB0b3RhbE5EQ0cgKz0gY2FsY3VsYXRlTkRDRyhzb3J0ZWQsIGlkZWFsT3JkZXIpO1xuICB9XG5cbiAgY29uc3Qgc2VhcmNoTVJSID0gY2FsY3VsYXRlTVJSKHNlYXJjaFJhbmtpbmdzKTtcbiAgY29uc3Qgc2VhcmNoTkRDRyA9IHRvdGFsTkRDRyAvIFNFQVJDSF9URVNUX0NBU0VTLmxlbmd0aDtcblxuICAvLyBUZXN0IGNsdXN0ZXJpbmdcbiAgY29uc3QgYWxsQ2x1c3Rlckl0ZW1zOiB7IHRleHQ6IHN0cmluZzsgY2x1c3RlcjogbnVtYmVyIH1bXSA9IFtdO1xuICBDTFVTVEVSX1RFU1RfQ0FTRVMuZm9yRWFjaCgodGMsIGNsdXN0ZXJJZHgpID0+IHtcbiAgICB0Yy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgYWxsQ2x1c3Rlckl0ZW1zLnB1c2goeyB0ZXh0OiBpdGVtLCBjbHVzdGVyOiBjbHVzdGVySWR4IH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBjbHVzdGVyRW1iZWRkaW5ncyA9IGFsbENsdXN0ZXJJdGVtcy5tYXAoaXRlbSA9PiBlbWJlZGRlcihpdGVtLnRleHQpKTtcbiAgY29uc3QgY2x1c3RlckxhYmVscyA9IGFsbENsdXN0ZXJJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmNsdXN0ZXIpO1xuICBjb25zdCBzaWxob3VldHRlU2NvcmUgPSBjYWxjdWxhdGVTaWxob3VldHRlKGNsdXN0ZXJFbWJlZGRpbmdzLCBjbHVzdGVyTGFiZWxzKTtcblxuICAvLyBDYWxjdWxhdGUgY2x1c3RlciBwdXJpdHkgKGhvdyB3ZWxsIGl0ZW1zIHN0YXkgaW4gdGhlaXIgZXhwZWN0ZWQgY2x1c3RlcilcbiAgLy8gVXNpbmcgc2ltcGxlIG5lYXJlc3QtbmVpZ2hib3IgY2xhc3NpZmljYXRpb25cbiAgbGV0IGNvcnJlY3RDbHVzdGVyID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbHVzdGVyRW1iZWRkaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBuZWFyZXN0SWR4ID0gLTE7XG4gICAgbGV0IG5lYXJlc3REaXN0ID0gSW5maW5pdHk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjbHVzdGVyRW1iZWRkaW5ncy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGkgIT09IGopIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IGV1Y2xpZGVhbkRpc3RhbmNlKGNsdXN0ZXJFbWJlZGRpbmdzW2ldLCBjbHVzdGVyRW1iZWRkaW5nc1tqXSk7XG4gICAgICAgIGlmIChkaXN0IDwgbmVhcmVzdERpc3QpIHtcbiAgICAgICAgICBuZWFyZXN0RGlzdCA9IGRpc3Q7XG4gICAgICAgICAgbmVhcmVzdElkeCA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5lYXJlc3RJZHggPj0gMCAmJiBjbHVzdGVyTGFiZWxzW25lYXJlc3RJZHhdID09PSBjbHVzdGVyTGFiZWxzW2ldKSB7XG4gICAgICBjb3JyZWN0Q2x1c3RlcisrO1xuICAgIH1cbiAgfVxuICBjb25zdCBjbHVzdGVyUHVyaXR5ID0gY29ycmVjdENsdXN0ZXIgLyBjbHVzdGVyRW1iZWRkaW5ncy5sZW5ndGg7XG5cbiAgcmV0dXJuIHtcbiAgICBzaW1pbGFyaXR5QWNjdXJhY3ksXG4gICAgc2ltaWxhcml0eUJ5Q2F0ZWdvcnksXG4gICAgYXZnU2ltaWxhcml0eUxhdGVuY3lNczogbGF0ZW5jaWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gbGF0ZW5jaWVzLmxlbmd0aCxcbiAgICBjbHVzdGVyUHVyaXR5LFxuICAgIHNpbGhvdWV0dGVTY29yZSxcbiAgICBzZWFyY2hNUlIsXG4gICAgc2VhcmNoTkRDRyxcbiAgICBzaW1pbGFyaXR5UmVzdWx0cyxcbiAgICB0b3RhbFBhaXJzOiBzaW1pbGFyaXR5UmVzdWx0cy5sZW5ndGgsXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0IGVtYmVkZGluZyBiZW5jaG1hcmsgcmVzdWx0cyBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RW1iZWRkaW5nUmVzdWx0cyhyZXN1bHRzOiBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgRU1CRURESU5HIEJFTkNITUFSSyBSRVNVTFRTICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBTaW1pbGFyaXR5IERldGVjdGlvbjogJHsocmVzdWx0cy5zaW1pbGFyaXR5QWNjdXJhY3kgKiAxMDApLnRvRml4ZWQoMSl9JWAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgQnkgQ2F0ZWdvcnk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG5cbiAgZm9yIChjb25zdCBbY2F0LCBhY2NdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3VsdHMuc2ltaWxhcml0eUJ5Q2F0ZWdvcnkpLnNvcnQoKGEsIGIpID0+IGJbMV0gLSBhWzFdKSkge1xuICAgIGNvbnN0IGJhciA9ICfilognLnJlcGVhdChNYXRoLmZsb29yKGFjYyAqIDIwKSkgKyAn4paRJy5yZXBlYXQoMjAgLSBNYXRoLmZsb29yKGFjYyAqIDIwKSk7XG4gICAgbGluZXMucHVzaChg4pWRICAgICR7Y2F0LnBhZEVuZCgxOCl9IFske2Jhcn1dICR7KGFjYyAqIDEwMCkudG9GaXhlZCgwKS5wYWRTdGFydCgzKX0lICDilZFgKTtcbiAgfVxuXG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKCfilZEgIENsdXN0ZXJpbmcgUXVhbGl0eTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKGDilZEgICAgQ2x1c3RlciBQdXJpdHk6ICAgICR7KHJlc3VsdHMuY2x1c3RlclB1cml0eSAqIDEwMCkudG9GaXhlZCgxKX0lYC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKGDilZEgICAgU2lsaG91ZXR0ZSBTY29yZTogICR7cmVzdWx0cy5zaWxob3VldHRlU2NvcmUudG9GaXhlZCgzKX1gLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKCfilZEgIFNlYXJjaCBRdWFsaXR5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKGDilZEgICAgTVJSIChNZWFuIFJlY2lwcm9jYWwgUmFuayk6ICAke3Jlc3VsdHMuc2VhcmNoTVJSLnRvRml4ZWQoMyl9YC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKGDilZEgICAgTkRDRzogICAgICAgICAgICAgICAgICAgICAgICAke3Jlc3VsdHMuc2VhcmNoTkRDRy50b0ZpeGVkKDMpfWAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgQXZnIExhdGVuY3k6ICR7cmVzdWx0cy5hdmdTaW1pbGFyaXR5TGF0ZW5jeU1zLnRvRml4ZWQoMil9bXMgcGVyIHBhaXJgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnScpO1xuXG4gIC8vIFF1YWxpdHkgYXNzZXNzbWVudFxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgnUXVhbGl0eSBBc3Nlc3NtZW50OicpO1xuXG4gIGlmIChyZXN1bHRzLnNpbWlsYXJpdHlBY2N1cmFjeSA+PSAwLjgpIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKckyBTaW1pbGFyaXR5IGRldGVjdGlvbjogRVhDRUxMRU5UICjiiaU4MCUpJyk7XG4gIH0gZWxzZSBpZiAocmVzdWx0cy5zaW1pbGFyaXR5QWNjdXJhY3kgPj0gMC42KSB7XG4gICAgbGluZXMucHVzaCgnICB+IFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBHT09EICg2MC04MCUpJyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZXMucHVzaCgnICDinJcgU2ltaWxhcml0eSBkZXRlY3Rpb246IE5FRURTIElNUFJPVkVNRU5UICg8NjAlKScpO1xuICB9XG5cbiAgaWYgKHJlc3VsdHMuc2VhcmNoTVJSID49IDAuOCkge1xuICAgIGxpbmVzLnB1c2goJyAg4pyTIFNlYXJjaCBxdWFsaXR5IChNUlIpOiBFWENFTExFTlQgKOKJpTAuOCknKTtcbiAgfSBlbHNlIGlmIChyZXN1bHRzLnNlYXJjaE1SUiA+PSAwLjUpIHtcbiAgICBsaW5lcy5wdXNoKCcgIH4gU2VhcmNoIHF1YWxpdHkgKE1SUik6IEFDQ0VQVEFCTEUgKDAuNS0wLjgpJyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZXMucHVzaCgnICDinJcgU2VhcmNoIHF1YWxpdHkgKE1SUik6IE5FRURTIElNUFJPVkVNRU5UICg8MC41KScpO1xuICB9XG5cbiAgaWYgKHJlc3VsdHMuY2x1c3RlclB1cml0eSA+PSAwLjgpIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKckyBDbHVzdGVyaW5nOiBFWENFTExFTlQgKOKJpTgwJSBwdXJpdHkpJyk7XG4gIH0gZWxzZSBpZiAocmVzdWx0cy5jbHVzdGVyUHVyaXR5ID49IDAuNikge1xuICAgIGxpbmVzLnB1c2goJyAgfiBDbHVzdGVyaW5nOiBBQ0NFUFRBQkxFICg2MC04MCUgcHVyaXR5KScpO1xuICB9IGVsc2Uge1xuICAgIGxpbmVzLnB1c2goJyAg4pyXIENsdXN0ZXJpbmc6IE5FRURTIElNUFJPVkVNRU5UICg8NjAlIHB1cml0eSknKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBTSU1JTEFSSVRZX1RFU1RfUEFJUlMsXG4gIFNFQVJDSF9URVNUX0NBU0VTLFxuICBDTFVTVEVSX1RFU1RfQ0FTRVMsXG4gIHJ1bkVtYmVkZGluZ0JlbmNobWFyayxcbiAgZm9ybWF0RW1iZWRkaW5nUmVzdWx0cyxcbiAgaXNDb3JyZWN0U2ltaWxhcml0eSxcbiAgY2FsY3VsYXRlTVJSLFxuICBjYWxjdWxhdGVORENHLFxufTtcbiJdfQ==
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nLWJlbmNobWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL2VtYmVkZGluZy1iZW5jaG1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7OztBQTZPSCxrREFNQztBQUtELG9DQVdDO0FBS0Qsc0NBYUM7QUFLRCxrREFpREM7QUFhRCxzREE2R0M7QUFLRCx3REF5REM7QUF4ZEQ7OztHQUdHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBb0I7SUFDcEQsNERBQTREO0lBQzVELEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDL0ksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ2pKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtJQUN2SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7SUFDM0gsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSww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RUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxrQkFBZTtJQUNiLHFCQUFxQixFQUFyQiw2QkFBcUI7SUFDckIsaUJBQWlCLEVBQWpCLHlCQUFpQjtJQUNqQixrQkFBa0IsRUFBbEIsMEJBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixhQUFhO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRW1iZWRkaW5nIFF1YWxpdHkgQmVuY2htYXJrIGZvciBSdXZMVFJBIE1vZGVsc1xuICpcbiAqIFRlc3RzIGVtYmVkZGluZyBxdWFsaXR5IGZvciBDbGF1ZGUgQ29kZSB1c2UgY2FzZXM6XG4gKiAtIENvZGUgc2ltaWxhcml0eSBkZXRlY3Rpb25cbiAqIC0gVGFzayBjbHVzdGVyaW5nXG4gKiAtIFNlbWFudGljIHNlYXJjaCBhY2N1cmFjeVxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkaW5nUGFpciB7XG4gIGlkOiBzdHJpbmc7XG4gIHRleHQxOiBzdHJpbmc7XG4gIHRleHQyOiBzdHJpbmc7XG4gIHNpbWlsYXJpdHk6ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdycgfCAnbm9uZSc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkaW5nUmVzdWx0IHtcbiAgcGFpcklkOiBzdHJpbmc7XG4gIGV4cGVjdGVkU2ltaWxhcml0eTogc3RyaW5nO1xuICBjb21wdXRlZFNjb3JlOiBudW1iZXI7XG4gIGNvcnJlY3Q6IGJvb2xlYW47XG4gIGxhdGVuY3lNczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJUZXN0Q2FzZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGl0ZW1zOiBzdHJpbmdbXTtcbiAgZXhwZWN0ZWRDbHVzdGVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyB7XG4gIC8vIFNpbWlsYXJpdHkgZGV0ZWN0aW9uXG4gIHNpbWlsYXJpdHlBY2N1cmFjeTogbnVtYmVyO1xuICBzaW1pbGFyaXR5QnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgYXZnU2ltaWxhcml0eUxhdGVuY3lNczogbnVtYmVyO1xuXG4gIC8vIENsdXN0ZXJpbmcgcXVhbGl0eVxuICBjbHVzdGVyUHVyaXR5OiBudW1iZXI7XG4gIHNpbGhvdWV0dGVTY29yZTogbnVtYmVyO1xuXG4gIC8vIFNlYXJjaCBxdWFsaXR5XG4gIHNlYXJjaE1SUjogbnVtYmVyOyAvLyBNZWFuIFJlY2lwcm9jYWwgUmFua1xuICBzZWFyY2hORENHOiBudW1iZXI7IC8vIE5vcm1hbGl6ZWQgRGlzY291bnRlZCBDdW11bGF0aXZlIEdhaW5cblxuICAvLyBEZXRhaWxzXG4gIHNpbWlsYXJpdHlSZXN1bHRzOiBFbWJlZGRpbmdSZXN1bHRbXTtcbiAgdG90YWxQYWlyczogbnVtYmVyO1xufVxuXG4vKipcbiAqIEdyb3VuZCB0cnV0aCBzaW1pbGFyaXR5IHBhaXJzIGZvciB0ZXN0aW5nXG4gKiBUZXN0cyB3aGV0aGVyIGVtYmVkZGluZ3MgY29ycmVjdGx5IGNhcHR1cmUgc2VtYW50aWMgc2ltaWxhcml0eVxuICovXG5leHBvcnQgY29uc3QgU0lNSUxBUklUWV9URVNUX1BBSVJTOiBFbWJlZGRpbmdQYWlyW10gPSBbXG4gIC8vID09PSBISUdIIFNJTUlMQVJJVFkgKHNhbWUgY29uY2VwdCwgZGlmZmVyZW50IHdvcmRpbmcpID09PVxuICB7IGlkOiAnSDAwMScsIHRleHQxOiAnaW1wbGVtZW50IHVzZXIgYXV0aGVudGljYXRpb24nLCB0ZXh0MjogJ2NyZWF0ZSBsb2dpbiBmdW5jdGlvbmFsaXR5Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0gwMDInLCB0ZXh0MTogJ3dyaXRlIHVuaXQgdGVzdHMgZm9yIHRoZSBBUEknLCB0ZXh0MjogJ2NyZWF0ZSB0ZXN0IGNhc2VzIGZvciBSRVNUIGVuZHBvaW50cycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdIMDAzJywgdGV4dDE6ICdmaXggdGhlIG51bGwgcG9pbnRlciBleGNlcHRpb24nLCB0ZXh0MjogJ3Jlc29sdmUgdGhlIE51bGxQb2ludGVyRXhjZXB0aW9uIGJ1ZycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnIH0sXG4gIHsgaWQ6ICdIMDA0JywgdGV4dDE6ICdvcHRpbWl6ZSBkYXRhYmFzZSBxdWVyaWVzJywgdGV4dDI6ICdpbXByb3ZlIFNRTCBxdWVyeSBwZXJmb3JtYW5jZScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScgfSxcbiAgeyBpZDogJ0gwMDUnLCB0ZXh0MTogJ2RlcGxveSB0byBwcm9kdWN0aW9uJywgdGV4dDI6ICdyZWxlYXNlIHRvIHByb2QgZW52aXJvbm1lbnQnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnZGV2b3BzJyB9LFxuICB7IGlkOiAnSDAwNicsIHRleHQxOiAncmVmYWN0b3IgdGhlIGxlZ2FjeSBjb2RlJywgdGV4dDI6ICdyZXN0cnVjdHVyZSBvbGQgY29kZWJhc2UnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnIH0sXG4gIHsgaWQ6ICdIMDA3JywgdGV4dDE6ICdhZGQgZXJyb3IgaGFuZGxpbmcnLCB0ZXh0MjogJ2ltcGxlbWVudCBleGNlcHRpb24gaGFuZGxpbmcnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnSDAwOCcsIHRleHQxOiAnY3JlYXRlIFJFU1QgQVBJIGVuZHBvaW50JywgdGV4dDI6ICdidWlsZCBIVFRQIEFQSSByb3V0ZScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdIMDA5JywgdGV4dDE6ICdjaGVjayBmb3IgU1FMIGluamVjdGlvbicsIHRleHQyOiAnYXVkaXQgZm9yIFNRTGkgdnVsbmVyYWJpbGl0aWVzJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ3NlY3VyaXR5JyB9LFxuICB7IGlkOiAnSDAxMCcsIHRleHQxOiAnZG9jdW1lbnQgdGhlIEFQSScsIHRleHQyOiAnd3JpdGUgQVBJIGRvY3VtZW50YXRpb24nLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnZG9jdW1lbnRhdGlvbicgfSxcblxuICAvLyBDb2RlIHNuaXBwZXRzIC0gc2FtZSBmdW5jdGlvbmFsaXR5XG4gIHsgaWQ6ICdIMDExJywgdGV4dDE6ICdmdW5jdGlvbiBhZGQoYSwgYikgeyByZXR1cm4gYSArIGI7IH0nLCB0ZXh0MjogJ2NvbnN0IHN1bSA9ICh4LCB5KSA9PiB4ICsgeTsnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnSDAxMicsIHRleHQxOiAnZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspJywgdGV4dDI6ICdhcnIuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHt9KScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdIMDEzJywgdGV4dDE6ICdhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7IGF3YWl0IGZldGNoKHVybCk7IH0nLCB0ZXh0MjogJ2NvbnN0IGdldERhdGEgPSBhc3luYyAoKSA9PiB7IGF3YWl0IGF4aW9zLmdldCh1cmwpOyB9Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcblxuICAvLyA9PT0gTUVESVVNIFNJTUlMQVJJVFkgKHJlbGF0ZWQgYnV0IGRpZmZlcmVudCkgPT09XG4gIHsgaWQ6ICdNMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgdXNlciBhdXRoZW50aWNhdGlvbicsIHRleHQyOiAnY3JlYXRlIHVzZXIgcmVnaXN0cmF0aW9uJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnTTAwMicsIHRleHQxOiAnd3JpdGUgdW5pdCB0ZXN0cycsIHRleHQyOiAnd3JpdGUgaW50ZWdyYXRpb24gdGVzdHMnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJyB9LFxuICB7IGlkOiAnTTAwMycsIHRleHQxOiAnZml4IHRoZSBidWcgaW4gY2hlY2tvdXQnLCB0ZXh0MjogJ2RlYnVnIHRoZSBwYXltZW50IGZsb3cnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnIH0sXG4gIHsgaWQ6ICdNMDA0JywgdGV4dDE6ICdvcHRpbWl6ZSBmcm9udGVuZCBwZXJmb3JtYW5jZScsIHRleHQyOiAnaW1wcm92ZSBiYWNrZW5kIHJlc3BvbnNlIHRpbWUnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScgfSxcbiAgeyBpZDogJ00wMDUnLCB0ZXh0MTogJ2RlcGxveSB0byBzdGFnaW5nJywgdGV4dDI6ICdkZXBsb3kgdG8gcHJvZHVjdGlvbicsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2Rldm9wcycgfSxcbiAgeyBpZDogJ00wMDYnLCB0ZXh0MTogJ1JlYWN0IGNvbXBvbmVudCcsIHRleHQyOiAnVnVlIGNvbXBvbmVudCcsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ00wMDcnLCB0ZXh0MTogJ1Bvc3RncmVTUUwgcXVlcnknLCB0ZXh0MjogJ015U1FMIHF1ZXJ5Jywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnTTAwOCcsIHRleHQxOiAnUkVTVCBBUEknLCB0ZXh0MjogJ0dyYXBoUUwgQVBJJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnTTAwOScsIHRleHQxOiAnTm9kZS5qcyBzZXJ2ZXInLCB0ZXh0MjogJ1B5dGhvbiBGbGFzayBzZXJ2ZXInLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdNMDEwJywgdGV4dDE6ICdhZGQgY2FjaGluZyBsYXllcicsIHRleHQyOiAnaW1wbGVtZW50IHJhdGUgbGltaXRpbmcnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScgfSxcblxuICAvLyA9PT0gTE9XIFNJTUlMQVJJVFkgKHNhbWUgZG9tYWluLCBkaWZmZXJlbnQgdGFzaykgPT09XG4gIHsgaWQ6ICdMMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgYXV0aGVudGljYXRpb24nLCB0ZXh0MjogJ3dyaXRlIGRvY3VtZW50YXRpb24nLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdMMDAyJywgdGV4dDE6ICdmaXggYnVnJywgdGV4dDI6ICdhZGQgbmV3IGZlYXR1cmUnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdMMDAzJywgdGV4dDE6ICdvcHRpbWl6ZSBxdWVyeScsIHRleHQyOiAncmV2aWV3IHB1bGwgcmVxdWVzdCcsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ21peGVkJyB9LFxuICB7IGlkOiAnTDAwNCcsIHRleHQxOiAnZGVwbG95IGFwcGxpY2F0aW9uJywgdGV4dDI6ICdkZXNpZ24gYXJjaGl0ZWN0dXJlJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXG4gIHsgaWQ6ICdMMDA1JywgdGV4dDE6ICdmcm9udGVuZCBSZWFjdCBjb2RlJywgdGV4dDI6ICdiYWNrZW5kIGRhdGFiYXNlIG1pZ3JhdGlvbicsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ0wwMDYnLCB0ZXh0MTogJ3NlY3VyaXR5IGF1ZGl0JywgdGV4dDI6ICdwZXJmb3JtYW5jZSBiZW5jaG1hcmsnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcbiAgeyBpZDogJ0wwMDcnLCB0ZXh0MTogJ3dyaXRlIHVuaXQgdGVzdHMnLCB0ZXh0MjogJ2NyZWF0ZSBDSS9DRCBwaXBlbGluZScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ21peGVkJyB9LFxuICB7IGlkOiAnTDAwOCcsIHRleHQxOiAnQ1NTIHN0eWxpbmcnLCB0ZXh0MjogJ2RhdGFiYXNlIHNjaGVtYScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcblxuICAvLyA9PT0gTk8gU0lNSUxBUklUWSAodW5yZWxhdGVkKSA9PT1cbiAgeyBpZDogJ04wMDEnLCB0ZXh0MTogJ2ltcGxlbWVudCB1c2VyIGxvZ2luJywgdGV4dDI6ICd0aGUgd2VhdGhlciBpcyBuaWNlIHRvZGF5Jywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcbiAgeyBpZDogJ04wMDInLCB0ZXh0MTogJ2ZpeCBKYXZhU2NyaXB0IGJ1ZycsIHRleHQyOiAncmVjaXBlIGZvciBjaG9jb2xhdGUgY2FrZScsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG4gIHsgaWQ6ICdOMDAzJywgdGV4dDE6ICdkZXBsb3kgS3ViZXJuZXRlcyBjbHVzdGVyJywgdGV4dDI6ICdib29rIGEgZmxpZ2h0IHRvIFBhcmlzJywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcbiAgeyBpZDogJ04wMDQnLCB0ZXh0MTogJ29wdGltaXplIFNRTCBxdWVyeScsIHRleHQyOiAnbGVhcm4gdG8gcGxheSBndWl0YXInLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxuICB7IGlkOiAnTjAwNScsIHRleHQxOiAnY29uc3QgeCA9IDQyOycsIHRleHQyOiAncm9zZXMgYXJlIHJlZCB2aW9sZXRzIGFyZSBibHVlJywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcbl07XG5cbi8qKlxuICogU2VhcmNoIHJlbGV2YW5jZSB0ZXN0IGNhc2VzXG4gKiBRdWVyeSArIGRvY3VtZW50cyB3aXRoIHJlbGV2YW5jZSBzY29yZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hUZXN0Q2FzZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGRvY3VtZW50czogeyB0ZXh0OiBzdHJpbmc7IHJlbGV2YW5jZTogbnVtYmVyIH1bXTsgLy8gcmVsZXZhbmNlOiAwLTMgKDA9aXJyZWxldmFudCwgMz1oaWdobHkgcmVsZXZhbnQpXG59XG5cbmV4cG9ydCBjb25zdCBTRUFSQ0hfVEVTVF9DQVNFUzogU2VhcmNoVGVzdENhc2VbXSA9IFtcbiAge1xuICAgIGlkOiAnUzAwMScsXG4gICAgcXVlcnk6ICdob3cgdG8gaW1wbGVtZW50IHVzZXIgYXV0aGVudGljYXRpb24gaW4gTm9kZS5qcycsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdJbXBsZW1lbnRpbmcgSldUIGF1dGhlbnRpY2F0aW9uIGluIEV4cHJlc3MuanMgd2l0aCBwYXNzcG9ydCcsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnTm9kZS5qcyBsb2dpbiBzeXN0ZW0gd2l0aCBiY3J5cHQgcGFzc3dvcmQgaGFzaGluZycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnQnVpbGRpbmcgYSBSZWFjdCBsb2dpbiBmb3JtIGNvbXBvbmVudCcsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnUG9zdGdyZVNRTCB1c2VyIHRhYmxlIHNjaGVtYSBkZXNpZ24nLCByZWxldmFuY2U6IDEgfSxcbiAgICAgIHsgdGV4dDogJ0hvdyB0byBkZXBsb3kgRG9ja2VyIGNvbnRhaW5lcnMnLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdTMDAyJyxcbiAgICBxdWVyeTogJ2ZpeCBtZW1vcnkgbGVhayBpbiBKYXZhU2NyaXB0JyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ0RlYnVnZ2luZyBtZW1vcnkgbGVha3Mgd2l0aCBDaHJvbWUgRGV2VG9vbHMgaGVhcCBzbmFwc2hvdHMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ0NvbW1vbiBjYXVzZXMgb2YgbWVtb3J5IGxlYWtzIGluIE5vZGUuanMgYXBwbGljYXRpb25zJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBleHBsYWluZWQnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ09wdGltaXppbmcgUmVhY3QgY29tcG9uZW50IHJlLXJlbmRlcnMnLCByZWxldmFuY2U6IDEgfSxcbiAgICAgIHsgdGV4dDogJ0NTUyBmbGV4Ym94IGxheW91dCB0dXRvcmlhbCcsIHJlbGV2YW5jZTogMCB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ1MwMDMnLFxuICAgIHF1ZXJ5OiAnZGF0YWJhc2UgbWlncmF0aW9uIGJlc3QgcHJhY3RpY2VzJyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ1NjaGVtYSBtaWdyYXRpb24gc3RyYXRlZ2llcyBmb3IgemVyby1kb3dudGltZSBkZXBsb3ltZW50cycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnVXNpbmcgUHJpc21hIG1pZ3JhdGUgZm9yIFBvc3RncmVTUUwgc2NoZW1hIGNoYW5nZXMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ0RhdGFiYXNlIGJhY2t1cCBhbmQgcmVjb3ZlcnkgcHJvY2VkdXJlcycsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnU1FMIHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNobmlxdWVzJywgcmVsZXZhbmNlOiAxIH0sXG4gICAgICB7IHRleHQ6ICdSZWFjdCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGggUmVkdXgnLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdTMDA0JyxcbiAgICBxdWVyeTogJ3dyaXRlIHVuaXQgdGVzdHMgZm9yIFJlYWN0IGNvbXBvbmVudHMnLFxuICAgIGRvY3VtZW50czogW1xuICAgICAgeyB0ZXh0OiAnVGVzdGluZyBSZWFjdCBjb21wb25lbnRzIHdpdGggSmVzdCBhbmQgUmVhY3QgVGVzdGluZyBMaWJyYXJ5JywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdTbmFwc2hvdCB0ZXN0aW5nIGZvciBVSSBjb21wb25lbnRzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdNb2NraW5nIEFQSSBjYWxscyBpbiBmcm9udGVuZCB0ZXN0cycsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnRW5kLXRvLWVuZCB0ZXN0aW5nIHdpdGggQ3lwcmVzcycsIHJlbGV2YW5jZTogMSB9LFxuICAgICAgeyB0ZXh0OiAnS3ViZXJuZXRlcyBwb2QgY29uZmlndXJhdGlvbicsIHJlbGV2YW5jZTogMCB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ1MwMDUnLFxuICAgIHF1ZXJ5OiAnb3B0aW1pemUgQVBJIHJlc3BvbnNlIHRpbWUnLFxuICAgIGRvY3VtZW50czogW1xuICAgICAgeyB0ZXh0OiAnSW1wbGVtZW50aW5nIFJlZGlzIGNhY2hpbmcgZm9yIEFQSSBlbmRwb2ludHMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ0RhdGFiYXNlIHF1ZXJ5IG9wdGltaXphdGlvbiB3aXRoIGluZGV4ZXMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ1VzaW5nIENETiBmb3Igc3RhdGljIGFzc2V0IGRlbGl2ZXJ5JywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdMb2FkIGJhbGFuY2luZyBzdHJhdGVnaWVzIGZvciBtaWNyb3NlcnZpY2VzJywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdXcml0aW5nIGNsZWFuIEphdmFTY3JpcHQgY29kZScsIHJlbGV2YW5jZTogMCB9LFxuICAgIF0sXG4gIH0sXG5dO1xuXG4vKipcbiAqIENsdXN0ZXIgdGVzdCBjYXNlcyAtIGl0ZW1zIHRoYXQgc2hvdWxkIGNsdXN0ZXIgdG9nZXRoZXJcbiAqL1xuZXhwb3J0IGNvbnN0IENMVVNURVJfVEVTVF9DQVNFUzogQ2x1c3RlclRlc3RDYXNlW10gPSBbXG4gIHtcbiAgICBpZDogJ0NMMDAxJyxcbiAgICBleHBlY3RlZENsdXN0ZXI6ICdhdXRoZW50aWNhdGlvbicsXG4gICAgaXRlbXM6IFtcbiAgICAgICdpbXBsZW1lbnQgdXNlciBsb2dpbicsXG4gICAgICAnYWRkIEpXVCB0b2tlbiB2YWxpZGF0aW9uJyxcbiAgICAgICdjcmVhdGUgcGFzc3dvcmQgcmVzZXQgZmxvdycsXG4gICAgICAnaW1wbGVtZW50IE9BdXRoIGludGVncmF0aW9uJyxcbiAgICAgICdhZGQgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbicsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnQ0wwMDInLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ3Rlc3RpbmcnLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnd3JpdGUgdW5pdCB0ZXN0cycsXG4gICAgICAnYWRkIGludGVncmF0aW9uIHRlc3RzJyxcbiAgICAgICdjcmVhdGUgRTJFIHRlc3Qgc3VpdGUnLFxuICAgICAgJ2ltcHJvdmUgdGVzdCBjb3ZlcmFnZScsXG4gICAgICAnYWRkIHNuYXBzaG90IHRlc3RzJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdDTDAwMycsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnZGF0YWJhc2UnLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnb3B0aW1pemUgU1FMIHF1ZXJpZXMnLFxuICAgICAgJ2FkZCBkYXRhYmFzZSBpbmRleGVzJyxcbiAgICAgICdjcmVhdGUgbWlncmF0aW9uIHNjcmlwdCcsXG4gICAgICAnaW1wbGVtZW50IGNvbm5lY3Rpb24gcG9vbGluZycsXG4gICAgICAnZGVzaWduIHNjaGVtYSBmb3IgdXNlcnMgdGFibGUnLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ0NMMDA0JyxcbiAgICBleHBlY3RlZENsdXN0ZXI6ICdmcm9udGVuZCcsXG4gICAgaXRlbXM6IFtcbiAgICAgICdidWlsZCBSZWFjdCBjb21wb25lbnQnLFxuICAgICAgJ2FkZCBDU1Mgc3R5bGluZycsXG4gICAgICAnaW1wbGVtZW50IHJlc3BvbnNpdmUgZGVzaWduJyxcbiAgICAgICdjcmVhdGUgZm9ybSB2YWxpZGF0aW9uJyxcbiAgICAgICdhZGQgbG9hZGluZyBzcGlubmVyJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdDTDAwNScsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnZGV2b3BzJyxcbiAgICBpdGVtczogW1xuICAgICAgJ3NldCB1cCBDSS9DRCBwaXBlbGluZScsXG4gICAgICAnY29uZmlndXJlIEt1YmVybmV0ZXMgZGVwbG95bWVudCcsXG4gICAgICAnY3JlYXRlIERvY2tlciBjb250YWluZXInLFxuICAgICAgJ2FkZCBtb25pdG9yaW5nIGFsZXJ0cycsXG4gICAgICAnaW1wbGVtZW50IGF1dG8tc2NhbGluZycsXG4gICAgXSxcbiAgfSxcbl07XG5cbi8qKlxuICogRXhwZWN0ZWQgc2ltaWxhcml0eSBzY29yZSByYW5nZXNcbiAqL1xuY29uc3QgU0lNSUxBUklUWV9USFJFU0hPTERTID0ge1xuICBoaWdoOiB7IG1pbjogMC43LCBtYXg6IDEuMCB9LFxuICBtZWRpdW06IHsgbWluOiAwLjQsIG1heDogMC43IH0sXG4gIGxvdzogeyBtaW46IDAuMiwgbWF4OiAwLjQgfSxcbiAgbm9uZTogeyBtaW46IDAuMCwgbWF4OiAwLjIgfSxcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgY29tcHV0ZWQgc2ltaWxhcml0eSBtYXRjaGVzIGV4cGVjdGVkIGNhdGVnb3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvcnJlY3RTaW1pbGFyaXR5KFxuICBleHBlY3RlZDogJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JyB8ICdub25lJyxcbiAgY29tcHV0ZWQ6IG51bWJlclxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRocmVzaG9sZCA9IFNJTUlMQVJJVFlfVEhSRVNIT0xEU1tleHBlY3RlZF07XG4gIHJldHVybiBjb21wdXRlZCA+PSB0aHJlc2hvbGQubWluICYmIGNvbXB1dGVkIDw9IHRocmVzaG9sZC5tYXg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIE1lYW4gUmVjaXByb2NhbCBSYW5rIGZvciBzZWFyY2ggcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTVJSKFxuICByYW5raW5nczogeyByZWxldmFudDogYm9vbGVhbiB9W11bXVxuKTogbnVtYmVyIHtcbiAgbGV0IHN1bVJSID0gMDtcbiAgZm9yIChjb25zdCByYW5raW5nIG9mIHJhbmtpbmdzKSB7XG4gICAgY29uc3QgZmlyc3RSZWxldmFudElkeCA9IHJhbmtpbmcuZmluZEluZGV4KHIgPT4gci5yZWxldmFudCk7XG4gICAgaWYgKGZpcnN0UmVsZXZhbnRJZHggPj0gMCkge1xuICAgICAgc3VtUlIgKz0gMSAvIChmaXJzdFJlbGV2YW50SWR4ICsgMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW1SUiAvIHJhbmtpbmdzLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgTkRDRyBmb3Igc2VhcmNoIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZU5EQ0coXG4gIHJlc3VsdHM6IHsgcmVsZXZhbmNlOiBudW1iZXIgfVtdLFxuICBpZGVhbE9yZGVyOiB7IHJlbGV2YW5jZTogbnVtYmVyIH1bXVxuKTogbnVtYmVyIHtcbiAgY29uc3QgZGNnID0gcmVzdWx0cy5yZWR1Y2UoKHN1bSwgciwgaSkgPT4ge1xuICAgIHJldHVybiBzdW0gKyAoTWF0aC5wb3coMiwgci5yZWxldmFuY2UpIC0gMSkgLyBNYXRoLmxvZzIoaSArIDIpO1xuICB9LCAwKTtcblxuICBjb25zdCBpZGNnID0gaWRlYWxPcmRlci5yZWR1Y2UoKHN1bSwgciwgaSkgPT4ge1xuICAgIHJldHVybiBzdW0gKyAoTWF0aC5wb3coMiwgci5yZWxldmFuY2UpIC0gMSkgLyBNYXRoLmxvZzIoaSArIDIpO1xuICB9LCAwKTtcblxuICByZXR1cm4gaWRjZyA+IDAgPyBkY2cgLyBpZGNnIDogMDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgc2lsaG91ZXR0ZSBzY29yZSBmb3IgY2x1c3RlcmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlU2lsaG91ZXR0ZShcbiAgZW1iZWRkaW5nczogbnVtYmVyW11bXSxcbiAgbGFiZWxzOiBudW1iZXJbXVxuKTogbnVtYmVyIHtcbiAgLy8gU2ltcGxpZmllZCBzaWxob3VldHRlIGNhbGN1bGF0aW9uXG4gIGNvbnN0IG4gPSBlbWJlZGRpbmdzLmxlbmd0aDtcbiAgaWYgKG4gPCAyKSByZXR1cm4gMDtcblxuICBsZXQgdG90YWxTaWxob3VldHRlID0gMDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGNsdXN0ZXIgPSBsYWJlbHNbaV07XG5cbiAgICAvLyBDYWxjdWxhdGUgbWVhbiBpbnRyYS1jbHVzdGVyIGRpc3RhbmNlIChhKVxuICAgIGxldCBpbnRyYVN1bSA9IDA7XG4gICAgbGV0IGludHJhQ291bnQgPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICBpZiAoaSAhPT0gaiAmJiBsYWJlbHNbal0gPT09IGNsdXN0ZXIpIHtcbiAgICAgICAgaW50cmFTdW0gKz0gZXVjbGlkZWFuRGlzdGFuY2UoZW1iZWRkaW5nc1tpXSwgZW1iZWRkaW5nc1tqXSk7XG4gICAgICAgIGludHJhQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYSA9IGludHJhQ291bnQgPiAwID8gaW50cmFTdW0gLyBpbnRyYUNvdW50IDogMDtcblxuICAgIC8vIENhbGN1bGF0ZSBtaW4gbWVhbiBpbnRlci1jbHVzdGVyIGRpc3RhbmNlIChiKVxuICAgIGNvbnN0IG90aGVyQ2x1c3RlcnMgPSBbLi4ubmV3IFNldChsYWJlbHMpXS5maWx0ZXIoYyA9PiBjICE9PSBjbHVzdGVyKTtcbiAgICBsZXQgbWluSW50ZXJNZWFuID0gSW5maW5pdHk7XG5cbiAgICBmb3IgKGNvbnN0IG90aGVyQ2x1c3RlciBvZiBvdGhlckNsdXN0ZXJzKSB7XG4gICAgICBsZXQgaW50ZXJTdW0gPSAwO1xuICAgICAgbGV0IGludGVyQ291bnQgPSAwO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgaWYgKGxhYmVsc1tqXSA9PT0gb3RoZXJDbHVzdGVyKSB7XG4gICAgICAgICAgaW50ZXJTdW0gKz0gZXVjbGlkZWFuRGlzdGFuY2UoZW1iZWRkaW5nc1tpXSwgZW1iZWRkaW5nc1tqXSk7XG4gICAgICAgICAgaW50ZXJDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaW50ZXJDb3VudCA+IDApIHtcbiAgICAgICAgbWluSW50ZXJNZWFuID0gTWF0aC5taW4obWluSW50ZXJNZWFuLCBpbnRlclN1bSAvIGludGVyQ291bnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBiID0gbWluSW50ZXJNZWFuID09PSBJbmZpbml0eSA/IDAgOiBtaW5JbnRlck1lYW47XG5cbiAgICAvLyBTaWxob3VldHRlIGZvciB0aGlzIHBvaW50XG4gICAgY29uc3QgcyA9IE1hdGgubWF4KGEsIGIpID4gMCA/IChiIC0gYSkgLyBNYXRoLm1heChhLCBiKSA6IDA7XG4gICAgdG90YWxTaWxob3VldHRlICs9IHM7XG4gIH1cblxuICByZXR1cm4gdG90YWxTaWxob3VldHRlIC8gbjtcbn1cblxuZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgbGV0IHN1bSA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHN1bSArPSBNYXRoLnBvdyhhW2ldIC0gYltpXSwgMik7XG4gIH1cbiAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xufVxuXG4vKipcbiAqIFJ1biB0aGUgZW1iZWRkaW5nIGJlbmNobWFya1xuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuRW1iZWRkaW5nQmVuY2htYXJrKFxuICBlbWJlZGRlcjogKHRleHQ6IHN0cmluZykgPT4gbnVtYmVyW10sXG4gIHNpbWlsYXJpdHlGbjogKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSkgPT4gbnVtYmVyXG4pOiBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzIHtcbiAgY29uc3Qgc2ltaWxhcml0eVJlc3VsdHM6IEVtYmVkZGluZ1Jlc3VsdFtdID0gW107XG4gIGNvbnN0IGxhdGVuY2llczogbnVtYmVyW10gPSBbXTtcblxuICAvLyBUZXN0IHNpbWlsYXJpdHkgcGFpcnNcbiAgZm9yIChjb25zdCBwYWlyIG9mIFNJTUlMQVJJVFlfVEVTVF9QQUlSUykge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgZW1iMSA9IGVtYmVkZGVyKHBhaXIudGV4dDEpO1xuICAgIGNvbnN0IGVtYjIgPSBlbWJlZGRlcihwYWlyLnRleHQyKTtcbiAgICBjb25zdCBzY29yZSA9IHNpbWlsYXJpdHlGbihlbWIxLCBlbWIyKTtcbiAgICBjb25zdCBsYXRlbmN5TXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0O1xuXG4gICAgbGF0ZW5jaWVzLnB1c2gobGF0ZW5jeU1zKTtcblxuICAgIHNpbWlsYXJpdHlSZXN1bHRzLnB1c2goe1xuICAgICAgcGFpcklkOiBwYWlyLmlkLFxuICAgICAgZXhwZWN0ZWRTaW1pbGFyaXR5OiBwYWlyLnNpbWlsYXJpdHksXG4gICAgICBjb21wdXRlZFNjb3JlOiBzY29yZSxcbiAgICAgIGNvcnJlY3Q6IGlzQ29ycmVjdFNpbWlsYXJpdHkocGFpci5zaW1pbGFyaXR5LCBzY29yZSksXG4gICAgICBsYXRlbmN5TXMsXG4gICAgfSk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgc2ltaWxhcml0eSBhY2N1cmFjeVxuICBjb25zdCBjb3JyZWN0U2ltaWxhcml0eSA9IHNpbWlsYXJpdHlSZXN1bHRzLmZpbHRlcihyID0+IHIuY29ycmVjdCkubGVuZ3RoO1xuICBjb25zdCBzaW1pbGFyaXR5QWNjdXJhY3kgPSBjb3JyZWN0U2ltaWxhcml0eSAvIHNpbWlsYXJpdHlSZXN1bHRzLmxlbmd0aDtcblxuICAvLyBBY2N1cmFjeSBieSBjYXRlZ29yeVxuICBjb25zdCBjYXRlZ29yaWVzID0gWy4uLm5ldyBTZXQoU0lNSUxBUklUWV9URVNUX1BBSVJTLm1hcChwID0+IHAuY2F0ZWdvcnkpKV07XG4gIGNvbnN0IHNpbWlsYXJpdHlCeUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gIGZvciAoY29uc3QgY2F0IG9mIGNhdGVnb3JpZXMpIHtcbiAgICBjb25zdCBjYXRSZXN1bHRzID0gc2ltaWxhcml0eVJlc3VsdHMuZmlsdGVyKFxuICAgICAgKHIsIGkpID0+IFNJTUlMQVJJVFlfVEVTVF9QQUlSU1tpXS5jYXRlZ29yeSA9PT0gY2F0XG4gICAgKTtcbiAgICBzaW1pbGFyaXR5QnlDYXRlZ29yeVtjYXRdID0gY2F0UmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aCAvIGNhdFJlc3VsdHMubGVuZ3RoO1xuICB9XG5cbiAgLy8gVGVzdCBzZWFyY2ggcXVhbGl0eSAoTVJSIGFuZCBORENHKVxuICBjb25zdCBzZWFyY2hSYW5raW5nczogeyByZWxldmFudDogYm9vbGVhbiB9W11bXSA9IFtdO1xuICBsZXQgdG90YWxORENHID0gMDtcblxuICBmb3IgKGNvbnN0IHRlc3RDYXNlIG9mIFNFQVJDSF9URVNUX0NBU0VTKSB7XG4gICAgY29uc3QgcXVlcnlFbWIgPSBlbWJlZGRlcih0ZXN0Q2FzZS5xdWVyeSk7XG4gICAgY29uc3QgZG9jU2NvcmVzID0gdGVzdENhc2UuZG9jdW1lbnRzLm1hcChkb2MgPT4gKHtcbiAgICAgIC4uLmRvYyxcbiAgICAgIHNjb3JlOiBzaW1pbGFyaXR5Rm4ocXVlcnlFbWIsIGVtYmVkZGVyKGRvYy50ZXh0KSksXG4gICAgfSkpO1xuXG4gICAgLy8gU29ydCBieSBjb21wdXRlZCBzY29yZVxuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kb2NTY29yZXNdLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKTtcblxuICAgIC8vIEZvciBNUlJcbiAgICBzZWFyY2hSYW5raW5ncy5wdXNoKHNvcnRlZC5tYXAoZCA9PiAoeyByZWxldmFudDogZC5yZWxldmFuY2UgPj0gMiB9KSkpO1xuXG4gICAgLy8gRm9yIE5EQ0dcbiAgICBjb25zdCBpZGVhbE9yZGVyID0gWy4uLnRlc3RDYXNlLmRvY3VtZW50c10uc29ydCgoYSwgYikgPT4gYi5yZWxldmFuY2UgLSBhLnJlbGV2YW5jZSk7XG4gICAgdG90YWxORENHICs9IGNhbGN1bGF0ZU5EQ0coc29ydGVkLCBpZGVhbE9yZGVyKTtcbiAgfVxuXG4gIGNvbnN0IHNlYXJjaE1SUiA9IGNhbGN1bGF0ZU1SUihzZWFyY2hSYW5raW5ncyk7XG4gIGNvbnN0IHNlYXJjaE5EQ0cgPSB0b3RhbE5EQ0cgLyBTRUFSQ0hfVEVTVF9DQVNFUy5sZW5ndGg7XG5cbiAgLy8gVGVzdCBjbHVzdGVyaW5nXG4gIGNvbnN0IGFsbENsdXN0ZXJJdGVtczogeyB0ZXh0OiBzdHJpbmc7IGNsdXN0ZXI6IG51bWJlciB9W10gPSBbXTtcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLmZvckVhY2goKHRjLCBjbHVzdGVySWR4KSA9PiB7XG4gICAgdGMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGFsbENsdXN0ZXJJdGVtcy5wdXNoKHsgdGV4dDogaXRlbSwgY2x1c3RlcjogY2x1c3RlcklkeCB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgY2x1c3RlckVtYmVkZGluZ3MgPSBhbGxDbHVzdGVySXRlbXMubWFwKGl0ZW0gPT4gZW1iZWRkZXIoaXRlbS50ZXh0KSk7XG4gIGNvbnN0IGNsdXN0ZXJMYWJlbHMgPSBhbGxDbHVzdGVySXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5jbHVzdGVyKTtcbiAgY29uc3Qgc2lsaG91ZXR0ZVNjb3JlID0gY2FsY3VsYXRlU2lsaG91ZXR0ZShjbHVzdGVyRW1iZWRkaW5ncywgY2x1c3RlckxhYmVscyk7XG5cbiAgLy8gQ2FsY3VsYXRlIGNsdXN0ZXIgcHVyaXR5IChob3cgd2VsbCBpdGVtcyBzdGF5IGluIHRoZWlyIGV4cGVjdGVkIGNsdXN0ZXIpXG4gIC8vIFVzaW5nIHNpbXBsZSBuZWFyZXN0LW5laWdoYm9yIGNsYXNzaWZpY2F0aW9uXG4gIGxldCBjb3JyZWN0Q2x1c3RlciA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2x1c3RlckVtYmVkZGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgbmVhcmVzdElkeCA9IC0xO1xuICAgIGxldCBuZWFyZXN0RGlzdCA9IEluZmluaXR5O1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2x1c3RlckVtYmVkZGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpICE9PSBqKSB7XG4gICAgICAgIGNvbnN0IGRpc3QgPSBldWNsaWRlYW5EaXN0YW5jZShjbHVzdGVyRW1iZWRkaW5nc1tpXSwgY2x1c3RlckVtYmVkZGluZ3Nbal0pO1xuICAgICAgICBpZiAoZGlzdCA8IG5lYXJlc3REaXN0KSB7XG4gICAgICAgICAgbmVhcmVzdERpc3QgPSBkaXN0O1xuICAgICAgICAgIG5lYXJlc3RJZHggPSBqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZWFyZXN0SWR4ID49IDAgJiYgY2x1c3RlckxhYmVsc1tuZWFyZXN0SWR4XSA9PT0gY2x1c3RlckxhYmVsc1tpXSkge1xuICAgICAgY29ycmVjdENsdXN0ZXIrKztcbiAgICB9XG4gIH1cbiAgY29uc3QgY2x1c3RlclB1cml0eSA9IGNvcnJlY3RDbHVzdGVyIC8gY2x1c3RlckVtYmVkZGluZ3MubGVuZ3RoO1xuXG4gIHJldHVybiB7XG4gICAgc2ltaWxhcml0eUFjY3VyYWN5LFxuICAgIHNpbWlsYXJpdHlCeUNhdGVnb3J5LFxuICAgIGF2Z1NpbWlsYXJpdHlMYXRlbmN5TXM6IGxhdGVuY2llcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIGxhdGVuY2llcy5sZW5ndGgsXG4gICAgY2x1c3RlclB1cml0eSxcbiAgICBzaWxob3VldHRlU2NvcmUsXG4gICAgc2VhcmNoTVJSLFxuICAgIHNlYXJjaE5EQ0csXG4gICAgc2ltaWxhcml0eVJlc3VsdHMsXG4gICAgdG90YWxQYWlyczogc2ltaWxhcml0eVJlc3VsdHMubGVuZ3RoLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdCBlbWJlZGRpbmcgYmVuY2htYXJrIHJlc3VsdHMgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVtYmVkZGluZ1Jlc3VsdHMocmVzdWx0czogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcbiAgbGluZXMucHVzaCgn4pWRICAgICAgICAgICAgIEVNQkVERElORyBCRU5DSE1BUksgUkVTVUxUUyAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgU2ltaWxhcml0eSBEZXRlY3Rpb246ICR7KHJlc3VsdHMuc2ltaWxhcml0eUFjY3VyYWN5ICogMTAwKS50b0ZpeGVkKDEpfSVgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKCfilZEgIEJ5IENhdGVnb3J5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuXG4gIGZvciAoY29uc3QgW2NhdCwgYWNjXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHRzLnNpbWlsYXJpdHlCeUNhdGVnb3J5KS5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSkpIHtcbiAgICBjb25zdCBiYXIgPSAn4paIJy5yZXBlYXQoTWF0aC5mbG9vcihhY2MgKiAyMCkpICsgJ+KWkScucmVwZWF0KDIwIC0gTWF0aC5mbG9vcihhY2MgKiAyMCkpO1xuICAgIGxpbmVzLnB1c2goYOKVkSAgICAke2NhdC5wYWRFbmQoMTgpfSBbJHtiYXJ9XSAkeyhhY2MgKiAxMDApLnRvRml4ZWQoMCkucGFkU3RhcnQoMyl9JSAg4pWRYCk7XG4gIH1cblxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaCgn4pWRICBDbHVzdGVyaW5nIFF1YWxpdHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIENsdXN0ZXIgUHVyaXR5OiAgICAkeyhyZXN1bHRzLmNsdXN0ZXJQdXJpdHkgKiAxMDApLnRvRml4ZWQoMSl9JWAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIFNpbGhvdWV0dGUgU2NvcmU6ICAke3Jlc3VsdHMuc2lsaG91ZXR0ZVNjb3JlLnRvRml4ZWQoMyl9YC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaCgn4pWRICBTZWFyY2ggUXVhbGl0eTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIE1SUiAoTWVhbiBSZWNpcHJvY2FsIFJhbmspOiAgJHtyZXN1bHRzLnNlYXJjaE1SUi50b0ZpeGVkKDMpfWAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIE5EQ0c6ICAgICAgICAgICAgICAgICAgICAgICAgJHtyZXN1bHRzLnNlYXJjaE5EQ0cudG9GaXhlZCgzKX1gLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKGDilZEgIEF2ZyBMYXRlbmN5OiAke3Jlc3VsdHMuYXZnU2ltaWxhcml0eUxhdGVuY3lNcy50b0ZpeGVkKDIpfW1zIHBlciBwYWlyYC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0nKTtcblxuICAvLyBRdWFsaXR5IGFzc2Vzc21lbnRcbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ1F1YWxpdHkgQXNzZXNzbWVudDonKTtcblxuICBpZiAocmVzdWx0cy5zaW1pbGFyaXR5QWNjdXJhY3kgPj0gMC44KSB7XG4gICAgbGluZXMucHVzaCgnICDinJMgU2ltaWxhcml0eSBkZXRlY3Rpb246IEVYQ0VMTEVOVCAo4omlODAlKScpO1xuICB9IGVsc2UgaWYgKHJlc3VsdHMuc2ltaWxhcml0eUFjY3VyYWN5ID49IDAuNikge1xuICAgIGxpbmVzLnB1c2goJyAgfiBTaW1pbGFyaXR5IGRldGVjdGlvbjogR09PRCAoNjAtODAlKScpO1xuICB9IGVsc2Uge1xuICAgIGxpbmVzLnB1c2goJyAg4pyXIFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBORUVEUyBJTVBST1ZFTUVOVCAoPDYwJSknKTtcbiAgfVxuXG4gIGlmIChyZXN1bHRzLnNlYXJjaE1SUiA+PSAwLjgpIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKckyBTZWFyY2ggcXVhbGl0eSAoTVJSKTogRVhDRUxMRU5UICjiiaUwLjgpJyk7XG4gIH0gZWxzZSBpZiAocmVzdWx0cy5zZWFyY2hNUlIgPj0gMC41KSB7XG4gICAgbGluZXMucHVzaCgnICB+IFNlYXJjaCBxdWFsaXR5IChNUlIpOiBBQ0NFUFRBQkxFICgwLjUtMC44KScpO1xuICB9IGVsc2Uge1xuICAgIGxpbmVzLnB1c2goJyAg4pyXIFNlYXJjaCBxdWFsaXR5IChNUlIpOiBORUVEUyBJTVBST1ZFTUVOVCAoPDAuNSknKTtcbiAgfVxuXG4gIGlmIChyZXN1bHRzLmNsdXN0ZXJQdXJpdHkgPj0gMC44KSB7XG4gICAgbGluZXMucHVzaCgnICDinJMgQ2x1c3RlcmluZzogRVhDRUxMRU5UICjiiaU4MCUgcHVyaXR5KScpO1xuICB9IGVsc2UgaWYgKHJlc3VsdHMuY2x1c3RlclB1cml0eSA+PSAwLjYpIHtcbiAgICBsaW5lcy5wdXNoKCcgIH4gQ2x1c3RlcmluZzogQUNDRVBUQUJMRSAoNjAtODAlIHB1cml0eSknKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBDbHVzdGVyaW5nOiBORUVEUyBJTVBST1ZFTUVOVCAoPDYwJSBwdXJpdHkpJyk7XG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0lNSUxBUklUWV9URVNUX1BBSVJTLFxuICBTRUFSQ0hfVEVTVF9DQVNFUyxcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLFxuICBydW5FbWJlZGRpbmdCZW5jaG1hcmssXG4gIGZvcm1hdEVtYmVkZGluZ1Jlc3VsdHMsXG4gIGlzQ29ycmVjdFNpbWlsYXJpdHksXG4gIGNhbGN1bGF0ZU1SUixcbiAgY2FsY3VsYXRlTkRDRyxcbn07XG4iXX0=
|
|
@@ -20,7 +20,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
20
20
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.CLUSTER_TEST_CASES = exports.SEARCH_TEST_CASES = exports.SIMILARITY_TEST_PAIRS = exports.ROUTING_TEST_CASES =
|
|
23
|
+
exports.CLUSTER_TEST_CASES = exports.SEARCH_TEST_CASES = exports.SIMILARITY_TEST_PAIRS = exports.ROUTING_TEST_CASES = void 0;
|
|
24
|
+
exports.runFullBenchmark = runFullBenchmark;
|
|
25
|
+
exports.formatFullResults = formatFullResults;
|
|
26
|
+
exports.compareModels = compareModels;
|
|
24
27
|
__exportStar(require("./routing-benchmark"), exports);
|
|
25
28
|
__exportStar(require("./embedding-benchmark"), exports);
|
|
26
29
|
__exportStar(require("./model-comparison"), exports);
|
|
@@ -43,7 +46,6 @@ function runFullBenchmark(router, embedder, similarityFn, modelName = 'unknown')
|
|
|
43
46
|
model: modelName,
|
|
44
47
|
};
|
|
45
48
|
}
|
|
46
|
-
exports.runFullBenchmark = runFullBenchmark;
|
|
47
49
|
/**
|
|
48
50
|
* Format full benchmark results
|
|
49
51
|
*/
|
|
@@ -91,7 +93,6 @@ function formatFullResults(results) {
|
|
|
91
93
|
lines.push('═══════════════════════════════════════════════════════════════');
|
|
92
94
|
return lines.join('\n');
|
|
93
95
|
}
|
|
94
|
-
exports.formatFullResults = formatFullResults;
|
|
95
96
|
/**
|
|
96
97
|
* Compare two models
|
|
97
98
|
*/
|
|
@@ -128,5 +129,4 @@ function compareModels(results1, results2) {
|
|
|
128
129
|
}
|
|
129
130
|
return lines.join('\n');
|
|
130
131
|
}
|
|
131
|
-
exports.compareModels = compareModels;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2htYXJrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsc0RBQW9DO0FBQ3BDLHdEQUFzQztBQUN0QyxxREFBbUM7QUFFbkMsMkRBTTZCO0FBK0kzQixtR0FqSkEsc0NBQWtCLE9BaUpBO0FBN0lwQiwrREFPK0I7QUF1STdCLHNHQTNJQSwyQ0FBcUIsT0EySUE7QUFDckIsa0dBM0lBLHVDQUFpQixPQTJJQTtBQUNqQixtR0EzSUEsd0NBQWtCLE9BMklBO0FBaElwQjs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixNQUErRCxFQUMvRCxRQUFvQyxFQUNwQyxZQUFrRCxFQUNsRCxZQUFvQixTQUFTO0lBRTdCLE1BQU0sT0FBTyxHQUFHLElBQUEsdUNBQW1CLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQ0FBcUIsRUFBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFaEUsT0FBTztRQUNMLE9BQU87UUFDUCxTQUFTO1FBQ1QsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1FBQ25DLEtBQUssRUFBRSxTQUFTO0tBQ2pCLENBQUM7QUFDSixDQUFDO0FBZkQsNENBZUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE9BQTZCO0lBQzdELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQzVGLEtBQUssQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztJQUM1RixLQUFLLENBQUMsSUFBSSxDQUFDLCtFQUErRSxDQUFDLENBQUM7SUFDNUYsS0FBSyxD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LE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDOUUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUU5RSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBMUNELHNDQTBDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnV2TFRSQSBCZW5jaG1hcmsgU3VpdGVcbiAqXG4gKiBDb21wcmVoZW5zaXZlIGJlbmNobWFya3MgZm9yIGV2YWx1YXRpbmcgUnV2TFRSQSBtb2RlbHNcbiAqIG9uIENsYXVkZSBDb2RlLXNwZWNpZmljIHVzZSBjYXNlcy5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3JvdXRpbmctYmVuY2htYXJrJztcbmV4cG9ydCAqIGZyb20gJy4vZW1iZWRkaW5nLWJlbmNobWFyayc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLWNvbXBhcmlzb24nO1xuXG5pbXBvcnQge1xuICBydW5Sb3V0aW5nQmVuY2htYXJrLFxuICBmb3JtYXRSb3V0aW5nUmVzdWx0cyxcbiAgYmFzZWxpbmVLZXl3b3JkUm91dGVyLFxuICBST1VUSU5HX1RFU1RfQ0FTRVMsXG4gIHR5cGUgUm91dGluZ0JlbmNobWFya1Jlc3VsdHMsXG59IGZyb20gJy4vcm91dGluZy1iZW5jaG1hcmsnO1xuXG5pbXBvcnQge1xuICBydW5FbWJlZGRpbmdCZW5jaG1hcmssXG4gIGZvcm1hdEVtYmVkZGluZ1Jlc3VsdHMsXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXG4gIENMVVNURVJfVEVTVF9DQVNFUyxcbiAgdHlwZSBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzLFxufSBmcm9tICcuL2VtYmVkZGluZy1iZW5jaG1hcmsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxCZW5jaG1hcmtSZXN1bHRzIHtcbiAgcm91dGluZzogUm91dGluZ0JlbmNobWFya1Jlc3VsdHM7XG4gIGVtYmVkZGluZzogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUnVuIGFsbCBiZW5jaG1hcmtzIHdpdGggYSBnaXZlbiBtb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuRnVsbEJlbmNobWFyayhcbiAgcm91dGVyOiAodGFzazogc3RyaW5nKSA9PiB7IGFnZW50OiBzdHJpbmc7IGNvbmZpZGVuY2U6IG51bWJlciB9LFxuICBlbWJlZGRlcjogKHRleHQ6IHN0cmluZykgPT4gbnVtYmVyW10sXG4gIHNpbWlsYXJpdHlGbjogKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSkgPT4gbnVtYmVyLFxuICBtb2RlbE5hbWU6IHN0cmluZyA9ICd1bmtub3duJ1xuKTogRnVsbEJlbmNobWFya1Jlc3VsdHMge1xuICBjb25zdCByb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhyb3V0ZXIpO1xuICBjb25zdCBlbWJlZGRpbmcgPSBydW5FbWJlZGRpbmdCZW5jaG1hcmsoZW1iZWRkZXIsIHNpbWlsYXJpdHlGbik7XG5cbiAgcmV0dXJuIHtcbiAgICByb3V0aW5nLFxuICAgIGVtYmVkZGluZyxcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBtb2RlbDogbW9kZWxOYW1lLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdCBmdWxsIGJlbmNobWFyayByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGdWxsUmVzdWx0cyhyZXN1bHRzOiBGdWxsQmVuY2htYXJrUmVzdWx0cyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcbiAgbGluZXMucHVzaCgn4pWRICAgICAgICAgICAgICAgICAgICBSVVZMVFJBIEJFTkNITUFSSyBTVUlURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgIENsYXVkZSBDb2RlIFVzZSBDYXNlIEV2YWx1YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBNb2RlbDogJHtyZXN1bHRzLm1vZGVsLnBhZEVuZCg2NCl94pWRYCk7XG4gIGxpbmVzLnB1c2goYOKVkSAgRGF0ZTogICR7cmVzdWx0cy50aW1lc3RhbXAucGFkRW5kKDY0KX3ilZFgKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG5cbiAgbGluZXMucHVzaChmb3JtYXRSb3V0aW5nUmVzdWx0cyhyZXN1bHRzLnJvdXRpbmcpKTtcbiAgbGluZXMucHVzaChmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHMuZW1iZWRkaW5nKSk7XG5cbiAgLy8gT3ZlcmFsbCBhc3Nlc3NtZW50XG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcbiAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgICAgIE9WRVJBTEwgQVNTRVNTTUVOVCcpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcblxuICBjb25zdCByb3V0aW5nU2NvcmUgPSByZXN1bHRzLnJvdXRpbmcuYWNjdXJhY3k7XG4gIGNvbnN0IGVtYmVkZGluZ1Njb3JlID0gKFxuICAgIHJlc3VsdHMuZW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSArXG4gICAgcmVzdWx0cy5lbWJlZGRpbmcuc2VhcmNoTVJSICtcbiAgICByZXN1bHRzLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5XG4gICkgLyAzO1xuXG4gIGNvbnN0IG92ZXJhbGxTY29yZSA9IChyb3V0aW5nU2NvcmUgKyBlbWJlZGRpbmdTY29yZSkgLyAyO1xuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKGAgIFJvdXRpbmcgU2NvcmU6ICAgJHsocm91dGluZ1Njb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcbiAgbGluZXMucHVzaChgICBFbWJlZGRpbmcgU2NvcmU6ICR7KGVtYmVkZGluZ1Njb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcbiAgbGluZXMucHVzaChgICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgbGluZXMucHVzaChgICBPdmVyYWxsIFNjb3JlOiAgICR7KG92ZXJhbGxTY29yZSAqIDEwMCkudG9GaXhlZCgxKX0lYCk7XG4gIGxpbmVzLnB1c2goJycpO1xuXG4gIGlmIChvdmVyYWxsU2NvcmUgPj0gMC44KSB7XG4gICAgbGluZXMucHVzaCgnICDinJMgRVhDRUxMRU5UIC0gSGlnaGx5IHN1aXRhYmxlIGZvciBDbGF1ZGUgQ29kZSB3b3JrZmxvd3MnKTtcbiAgfSBlbHNlIGlmIChvdmVyYWxsU2NvcmUgPj0gMC42KSB7XG4gICAgbGluZXMucHVzaCgnICB+IEdPT0QgLSBTdWl0YWJsZSBmb3IgbW9zdCBDbGF1ZGUgQ29kZSB1c2UgY2FzZXMnKTtcbiAgfSBlbHNlIGlmIChvdmVyYWxsU2NvcmUgPj0gMC40KSB7XG4gICAgbGluZXMucHVzaCgnICB+IEFDQ0VQVEFCTEUgLSBNYXkgd29yayBidXQgY29uc2lkZXIgYWx0ZXJuYXRpdmVzJyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZXMucHVzaCgnICDinJcgTkVFRFMgSU1QUk9WRU1FTlQgLSBDb25zaWRlciBkaWZmZXJlbnQgbW9kZWwgb3IgZmluZS10dW5pbmcnKTtcbiAgfVxuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcblxuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gbW9kZWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlTW9kZWxzKFxuICByZXN1bHRzMTogRnVsbEJlbmNobWFya1Jlc3VsdHMsXG4gIHJlc3VsdHMyOiBGdWxsQmVuY2htYXJrUmVzdWx0c1xuKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgICAgIE1PREVMIENPTVBBUklTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG4gIGxpbmVzLnB1c2goJycpO1xuXG4gIGNvbnN0IG1ldHJpY3MgPSBbXG4gICAgeyBuYW1lOiAnUm91dGluZyBBY2N1cmFjeScsIHYxOiByZXN1bHRzMS5yb3V0aW5nLmFjY3VyYWN5LCB2MjogcmVzdWx0czIucm91dGluZy5hY2N1cmFjeSB9LFxuICAgIHsgbmFtZTogJ1NpbWlsYXJpdHkgRGV0ZWN0aW9uJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3ksIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5IH0sXG4gICAgeyBuYW1lOiAnU2VhcmNoIE1SUicsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuc2VhcmNoTVJSLCB2MjogcmVzdWx0czIuZW1iZWRkaW5nLnNlYXJjaE1SUiB9LFxuICAgIHsgbmFtZTogJ1NlYXJjaCBORENHJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zZWFyY2hORENHLCB2MjogcmVzdWx0czIuZW1iZWRkaW5nLnNlYXJjaE5EQ0cgfSxcbiAgICB7IG5hbWU6ICdDbHVzdGVyIFB1cml0eScsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuY2x1c3RlclB1cml0eSwgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5IH0sXG4gICAgeyBuYW1lOiAnUm91dGluZyBMYXRlbmN5IChtcyknLCB2MTogcmVzdWx0czEucm91dGluZy5hdmdMYXRlbmN5TXMsIHYyOiByZXN1bHRzMi5yb3V0aW5nLmF2Z0xhdGVuY3lNcywgbG93ZXJCZXR0ZXI6IHRydWUgfSxcbiAgXTtcblxuICBsaW5lcy5wdXNoKGAkeydNZXRyaWMnLnBhZEVuZCgyNSl9ICR7cmVzdWx0czEubW9kZWwucGFkRW5kKDE1KX0gJHtyZXN1bHRzMi5tb2RlbC5wYWRFbmQoMTUpfSBXaW5uZXJgKTtcbiAgbGluZXMucHVzaCgn4pSAJy5yZXBlYXQoNzApKTtcblxuICBmb3IgKGNvbnN0IG0gb2YgbWV0cmljcykge1xuICAgIGNvbnN0IHZhbDEgPSBtLmxvd2VyQmV0dGVyID8gbS52MSA6IG0udjE7XG4gICAgY29uc3QgdmFsMiA9IG0ubG93ZXJCZXR0ZXIgPyBtLnYyIDogbS52MjtcblxuICAgIGxldCB3aW5uZXI6IHN0cmluZztcbiAgICBpZiAobS5sb3dlckJldHRlcikge1xuICAgICAgd2lubmVyID0gdmFsMSA8IHZhbDIgPyByZXN1bHRzMS5tb2RlbCA6IHZhbDIgPCB2YWwxID8gcmVzdWx0czIubW9kZWwgOiAndGllJztcbiAgICB9IGVsc2Uge1xuICAgICAgd2lubmVyID0gdmFsMSA+IHZhbDIgPyByZXN1bHRzMS5tb2RlbCA6IHZhbDIgPiB2YWwxID8gcmVzdWx0czIubW9kZWwgOiAndGllJztcbiAgICB9XG5cbiAgICBjb25zdCB2MVN0ciA9IG0ubG93ZXJCZXR0ZXIgPyB2YWwxLnRvRml4ZWQoMikgOiAodmFsMSAqIDEwMCkudG9GaXhlZCgxKSArICclJztcbiAgICBjb25zdCB2MlN0ciA9IG0ubG93ZXJCZXR0ZXIgPyB2YWwyLnRvRml4ZWQoMikgOiAodmFsMiAqIDEwMCkudG9GaXhlZCgxKSArICclJztcblxuICAgIGxpbmVzLnB1c2goYCR7bS5uYW1lLnBhZEVuZCgyNSl9ICR7djFTdHIucGFkRW5kKDE1KX0gJHt2MlN0ci5wYWRFbmQoMTUpfSAke3dpbm5lcn1gKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLy8gRXhwb3J0IGNvbnN0YW50cyBmb3IgZXh0ZXJuYWwgdXNlXG5leHBvcnQge1xuICBST1VUSU5HX1RFU1RfQ0FTRVMsXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXG4gIENMVVNURVJfVEVTVF9DQVNFUyxcbn07XG4iXX0=
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2htYXJrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUNILDRDQWVDO0FBS0QsOENBbURDO0FBS0Qsc0NBMENDO0FBckpELHNEQUFvQztBQUNwQyx3REFBc0M7QUFDdEMscURBQW1DO0FBRW5DLDJEQU02QjtBQStJM0IsbUdBakpBLHNDQUFrQixPQWlKQTtBQTdJcEIsK0RBTytCO0FBdUk3QixzR0EzSUEsMkNBQXFCLE9BMklBO0FBQ3JCLGtHQTNJQSx1Q0FBaUIsT0EySUE7QUFDakIsbUdBM0lBLHdDQUFrQixPQTJJQTtBQWhJcEI7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsTUFBK0QsRUFDL0QsUUFBb0MsRUFDcEMsWUFBa0QsRUFDbEQsWUFBb0IsU0FBUztJQUU3QixNQUFNLE9BQU8sR0FBRyxJQUFBLHVDQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLElBQUEsMkNBQXFCLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRWhFLE9BQU87UUFDTCxPQUFPO1FBQ1AsU0FBUztRQUNULFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQyxLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsT0FBNkI7SUFDN0QsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBRTNCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZixLQUFLLENBQUMsSUFBSSxDQUFDLCtFQUErRSxDQUFDLENBQUM7SUFDNUYsS0FBSyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQzVGLEtBQUssQ0FBQyxJQUFJLENBQUMsK0VB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Qy9FLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzlFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFFOUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnV2TFRSQSBCZW5jaG1hcmsgU3VpdGVcbiAqXG4gKiBDb21wcmVoZW5zaXZlIGJlbmNobWFya3MgZm9yIGV2YWx1YXRpbmcgUnV2TFRSQSBtb2RlbHNcbiAqIG9uIENsYXVkZSBDb2RlLXNwZWNpZmljIHVzZSBjYXNlcy5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3JvdXRpbmctYmVuY2htYXJrJztcbmV4cG9ydCAqIGZyb20gJy4vZW1iZWRkaW5nLWJlbmNobWFyayc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLWNvbXBhcmlzb24nO1xuXG5pbXBvcnQge1xuICBydW5Sb3V0aW5nQmVuY2htYXJrLFxuICBmb3JtYXRSb3V0aW5nUmVzdWx0cyxcbiAgYmFzZWxpbmVLZXl3b3JkUm91dGVyLFxuICBST1VUSU5HX1RFU1RfQ0FTRVMsXG4gIHR5cGUgUm91dGluZ0JlbmNobWFya1Jlc3VsdHMsXG59IGZyb20gJy4vcm91dGluZy1iZW5jaG1hcmsnO1xuXG5pbXBvcnQge1xuICBydW5FbWJlZGRpbmdCZW5jaG1hcmssXG4gIGZvcm1hdEVtYmVkZGluZ1Jlc3VsdHMsXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXG4gIENMVVNURVJfVEVTVF9DQVNFUyxcbiAgdHlwZSBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzLFxufSBmcm9tICcuL2VtYmVkZGluZy1iZW5jaG1hcmsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxCZW5jaG1hcmtSZXN1bHRzIHtcbiAgcm91dGluZzogUm91dGluZ0JlbmNobWFya1Jlc3VsdHM7XG4gIGVtYmVkZGluZzogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUnVuIGFsbCBiZW5jaG1hcmtzIHdpdGggYSBnaXZlbiBtb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuRnVsbEJlbmNobWFyayhcbiAgcm91dGVyOiAodGFzazogc3RyaW5nKSA9PiB7IGFnZW50OiBzdHJpbmc7IGNvbmZpZGVuY2U6IG51bWJlciB9LFxuICBlbWJlZGRlcjogKHRleHQ6IHN0cmluZykgPT4gbnVtYmVyW10sXG4gIHNpbWlsYXJpdHlGbjogKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSkgPT4gbnVtYmVyLFxuICBtb2RlbE5hbWU6IHN0cmluZyA9ICd1bmtub3duJ1xuKTogRnVsbEJlbmNobWFya1Jlc3VsdHMge1xuICBjb25zdCByb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhyb3V0ZXIpO1xuICBjb25zdCBlbWJlZGRpbmcgPSBydW5FbWJlZGRpbmdCZW5jaG1hcmsoZW1iZWRkZXIsIHNpbWlsYXJpdHlGbik7XG5cbiAgcmV0dXJuIHtcbiAgICByb3V0aW5nLFxuICAgIGVtYmVkZGluZyxcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBtb2RlbDogbW9kZWxOYW1lLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdCBmdWxsIGJlbmNobWFyayByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGdWxsUmVzdWx0cyhyZXN1bHRzOiBGdWxsQmVuY2htYXJrUmVzdWx0cyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcbiAgbGluZXMucHVzaCgn4pWRICAgICAgICAgICAgICAgICAgICBSVVZMVFJBIEJFTkNITUFSSyBTVUlURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgIENsYXVkZSBDb2RlIFVzZSBDYXNlIEV2YWx1YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBNb2RlbDogJHtyZXN1bHRzLm1vZGVsLnBhZEVuZCg2NCl94pWRYCk7XG4gIGxpbmVzLnB1c2goYOKVkSAgRGF0ZTogICR7cmVzdWx0cy50aW1lc3RhbXAucGFkRW5kKDY0KX3ilZFgKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG5cbiAgbGluZXMucHVzaChmb3JtYXRSb3V0aW5nUmVzdWx0cyhyZXN1bHRzLnJvdXRpbmcpKTtcbiAgbGluZXMucHVzaChmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHMuZW1iZWRkaW5nKSk7XG5cbiAgLy8gT3ZlcmFsbCBhc3Nlc3NtZW50XG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcbiAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgICAgIE9WRVJBTEwgQVNTRVNTTUVOVCcpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcblxuICBjb25zdCByb3V0aW5nU2NvcmUgPSByZXN1bHRzLnJvdXRpbmcuYWNjdXJhY3k7XG4gIGNvbnN0IGVtYmVkZGluZ1Njb3JlID0gKFxuICAgIHJlc3VsdHMuZW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSArXG4gICAgcmVzdWx0cy5lbWJlZGRpbmcuc2VhcmNoTVJSICtcbiAgICByZXN1bHRzLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5XG4gICkgLyAzO1xuXG4gIGNvbnN0IG92ZXJhbGxTY29yZSA9IChyb3V0aW5nU2NvcmUgKyBlbWJlZGRpbmdTY29yZSkgLyAyO1xuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKGAgIFJvdXRpbmcgU2NvcmU6ICAgJHsocm91dGluZ1Njb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcbiAgbGluZXMucHVzaChgICBFbWJlZGRpbmcgU2NvcmU6ICR7KGVtYmVkZGluZ1Njb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcbiAgbGluZXMucHVzaChgICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgbGluZXMucHVzaChgICBPdmVyYWxsIFNjb3JlOiAgICR7KG92ZXJhbGxTY29yZSAqIDEwMCkudG9GaXhlZCgxKX0lYCk7XG4gIGxpbmVzLnB1c2goJycpO1xuXG4gIGlmIChvdmVyYWxsU2NvcmUgPj0gMC44KSB7XG4gICAgbGluZXMucHVzaCgnICDinJMgRVhDRUxMRU5UIC0gSGlnaGx5IHN1aXRhYmxlIGZvciBDbGF1ZGUgQ29kZSB3b3JrZmxvd3MnKTtcbiAgfSBlbHNlIGlmIChvdmVyYWxsU2NvcmUgPj0gMC42KSB7XG4gICAgbGluZXMucHVzaCgnICB+IEdPT0QgLSBTdWl0YWJsZSBmb3IgbW9zdCBDbGF1ZGUgQ29kZSB1c2UgY2FzZXMnKTtcbiAgfSBlbHNlIGlmIChvdmVyYWxsU2NvcmUgPj0gMC40KSB7XG4gICAgbGluZXMucHVzaCgnICB+IEFDQ0VQVEFCTEUgLSBNYXkgd29yayBidXQgY29uc2lkZXIgYWx0ZXJuYXRpdmVzJyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZXMucHVzaCgnICDinJcgTkVFRFMgSU1QUk9WRU1FTlQgLSBDb25zaWRlciBkaWZmZXJlbnQgbW9kZWwgb3IgZmluZS10dW5pbmcnKTtcbiAgfVxuXG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcblxuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gbW9kZWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlTW9kZWxzKFxuICByZXN1bHRzMTogRnVsbEJlbmNobWFya1Jlc3VsdHMsXG4gIHJlc3VsdHMyOiBGdWxsQmVuY2htYXJrUmVzdWx0c1xuKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgICAgIE1PREVMIENPTVBBUklTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG4gIGxpbmVzLnB1c2goJycpO1xuXG4gIGNvbnN0IG1ldHJpY3MgPSBbXG4gICAgeyBuYW1lOiAnUm91dGluZyBBY2N1cmFjeScsIHYxOiByZXN1bHRzMS5yb3V0aW5nLmFjY3VyYWN5LCB2MjogcmVzdWx0czIucm91dGluZy5hY2N1cmFjeSB9LFxuICAgIHsgbmFtZTogJ1NpbWlsYXJpdHkgRGV0ZWN0aW9uJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3ksIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5IH0sXG4gICAgeyBuYW1lOiAnU2VhcmNoIE1SUicsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuc2VhcmNoTVJSLCB2MjogcmVzdWx0czIuZW1iZWRkaW5nLnNlYXJjaE1SUiB9LFxuICAgIHsgbmFtZTogJ1NlYXJjaCBORENHJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zZWFyY2hORENHLCB2MjogcmVzdWx0czIuZW1iZWRkaW5nLnNlYXJjaE5EQ0cgfSxcbiAgICB7IG5hbWU6ICdDbHVzdGVyIFB1cml0eScsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuY2x1c3RlclB1cml0eSwgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5IH0sXG4gICAgeyBuYW1lOiAnUm91dGluZyBMYXRlbmN5IChtcyknLCB2MTogcmVzdWx0czEucm91dGluZy5hdmdMYXRlbmN5TXMsIHYyOiByZXN1bHRzMi5yb3V0aW5nLmF2Z0xhdGVuY3lNcywgbG93ZXJCZXR0ZXI6IHRydWUgfSxcbiAgXTtcblxuICBsaW5lcy5wdXNoKGAkeydNZXRyaWMnLnBhZEVuZCgyNSl9ICR7cmVzdWx0czEubW9kZWwucGFkRW5kKDE1KX0gJHtyZXN1bHRzMi5tb2RlbC5wYWRFbmQoMTUpfSBXaW5uZXJgKTtcbiAgbGluZXMucHVzaCgn4pSAJy5yZXBlYXQoNzApKTtcblxuICBmb3IgKGNvbnN0IG0gb2YgbWV0cmljcykge1xuICAgIGNvbnN0IHZhbDEgPSBtLmxvd2VyQmV0dGVyID8gbS52MSA6IG0udjE7XG4gICAgY29uc3QgdmFsMiA9IG0ubG93ZXJCZXR0ZXIgPyBtLnYyIDogbS52MjtcblxuICAgIGxldCB3aW5uZXI6IHN0cmluZztcbiAgICBpZiAobS5sb3dlckJldHRlcikge1xuICAgICAgd2lubmVyID0gdmFsMSA8IHZhbDIgPyByZXN1bHRzMS5tb2RlbCA6IHZhbDIgPCB2YWwxID8gcmVzdWx0czIubW9kZWwgOiAndGllJztcbiAgICB9IGVsc2Uge1xuICAgICAgd2lubmVyID0gdmFsMSA+IHZhbDIgPyByZXN1bHRzMS5tb2RlbCA6IHZhbDIgPiB2YWwxID8gcmVzdWx0czIubW9kZWwgOiAndGllJztcbiAgICB9XG5cbiAgICBjb25zdCB2MVN0ciA9IG0ubG93ZXJCZXR0ZXIgPyB2YWwxLnRvRml4ZWQoMikgOiAodmFsMSAqIDEwMCkudG9GaXhlZCgxKSArICclJztcbiAgICBjb25zdCB2MlN0ciA9IG0ubG93ZXJCZXR0ZXIgPyB2YWwyLnRvRml4ZWQoMikgOiAodmFsMiAqIDEwMCkudG9GaXhlZCgxKSArICclJztcblxuICAgIGxpbmVzLnB1c2goYCR7bS5uYW1lLnBhZEVuZCgyNSl9ICR7djFTdHIucGFkRW5kKDE1KX0gJHt2MlN0ci5wYWRFbmQoMTUpfSAke3dpbm5lcn1gKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLy8gRXhwb3J0IGNvbnN0YW50cyBmb3IgZXh0ZXJuYWwgdXNlXG5leHBvcnQge1xuICBST1VUSU5HX1RFU1RfQ0FTRVMsXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXG4gIENMVVNURVJfVEVTVF9DQVNFUyxcbn07XG4iXX0=
|