@nlabs/lex 1.51.7 → 1.52.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/lib/Button.stories.js +1 -1
- package/lib/LexConfig.d.ts +1 -1
- package/lib/LexConfig.js +36 -14
- package/lib/commands/build/build.js +111 -21
- package/lib/commands/clean/clean.js +1 -1
- package/lib/commands/compile/compile.js +95 -28
- package/lib/commands/config/config.js +1 -1
- package/lib/commands/copy/copy.js +1 -1
- package/lib/commands/create/create.js +1 -1
- package/lib/commands/dev/dev.js +5 -6
- package/lib/commands/init/init.js +1 -1
- package/lib/commands/link/link.js +1 -1
- package/lib/commands/lint/lint.js +1 -1
- package/lib/commands/serverless/serverless.js +1 -1
- package/lib/commands/storybook/storybook.js +1 -1
- package/lib/commands/versions/versions.js +1 -1
- package/lib/utils/aiService.js +1 -1
- package/lib/utils/app.d.ts +1 -1
- package/lib/utils/app.js +22 -17
- package/lib/utils/postcss/postcss-for.d.ts +1 -1
- package/lib/utils/postcss/postcss-for.js +6 -8
- package/lib/utils/postcss/postcss-percentage.d.ts +1 -1
- package/lib/utils/postcss/postcss-percentage.js +14 -13
- package/package.json +10 -3
- package/webpack.config.js +3 -1
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import { execa } from 'execa';
|
|
6
6
|
import { existsSync, lstatSync, readdirSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
7
7
|
import { sync as globSync } from 'glob';
|
|
8
|
-
import { extname as pathExtname, join as pathJoin, resolve as pathResolve, dirname } from 'path';
|
|
9
|
-
import { LexConfig
|
|
8
|
+
import { extname as pathExtname, join as pathJoin, relative as pathRelative, resolve as pathResolve, dirname } from 'path';
|
|
9
|
+
import { LexConfig } from '../../LexConfig.js';
|
|
10
10
|
import { checkLinkedModules, copyConfiguredFiles, copyFiles, createSpinner, getFilesByExt, removeFiles } from '../../utils/app.js';
|
|
11
11
|
import { getDirName, resolveBinaryPath } from '../../utils/file.js';
|
|
12
12
|
import { log } from '../../utils/log.js';
|
|
@@ -34,13 +34,11 @@ export const compile = async (cmd, callback = ()=>({}))=>{
|
|
|
34
34
|
const outputDir = outputPath || outputFullPath;
|
|
35
35
|
const sourceDir = sourcePath ? pathResolve(process.cwd(), `./${sourcePath}`) : sourceFullPath || '';
|
|
36
36
|
const dirName = getDirName();
|
|
37
|
-
const dirPath = pathResolve(dirName, '../..');
|
|
38
37
|
checkLinkedModules();
|
|
39
38
|
if (remove) {
|
|
40
39
|
await removeFiles(outputDir);
|
|
41
40
|
}
|
|
42
41
|
if (useTypescript) {
|
|
43
|
-
LexConfig.checkCompileTypescriptConfig();
|
|
44
42
|
const typescriptPath = resolveBinaryPath('tsc', 'typescript');
|
|
45
43
|
if (!typescriptPath) {
|
|
46
44
|
log(`\n${cliName} Error: TypeScript binary not found in Lex's node_modules or monorepo root`, 'error', quiet);
|
|
@@ -49,32 +47,83 @@ export const compile = async (cmd, callback = ()=>({}))=>{
|
|
|
49
47
|
}
|
|
50
48
|
const typescriptOptions = config ? [
|
|
51
49
|
'-p',
|
|
52
|
-
config
|
|
53
|
-
|
|
54
|
-
'
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
config,
|
|
51
|
+
'--emitDeclarationOnly',
|
|
52
|
+
'--skipLibCheck'
|
|
53
|
+
] // User provided custom config, but still only emit declarations
|
|
54
|
+
: (()=>{
|
|
55
|
+
const globOptions = {
|
|
56
|
+
absolute: true,
|
|
57
|
+
cwd: sourceDir,
|
|
58
|
+
dot: false,
|
|
59
|
+
nodir: true
|
|
60
|
+
};
|
|
61
|
+
const tsFiles = globSync('**/!(*.spec|*.test|*.integration).ts', globOptions);
|
|
62
|
+
const tsxFiles = globSync('**/!(*.spec|*.test|*.integration).tsx', globOptions);
|
|
63
|
+
const allSourceFiles = [
|
|
64
|
+
...tsFiles,
|
|
65
|
+
...tsxFiles
|
|
66
|
+
];
|
|
67
|
+
return [
|
|
68
|
+
...LexConfig.getTypeScriptDeclarationFlags(),
|
|
69
|
+
...allSourceFiles
|
|
70
|
+
];
|
|
71
|
+
})();
|
|
72
|
+
spinner.start('Generating TypeScript declarations...');
|
|
58
73
|
try {
|
|
59
|
-
await execa(typescriptPath, typescriptOptions, {
|
|
60
|
-
|
|
74
|
+
const result = await execa(typescriptPath, typescriptOptions, {
|
|
75
|
+
all: true,
|
|
76
|
+
cwd: process.cwd(),
|
|
77
|
+
encoding: 'utf8',
|
|
78
|
+
reject: false
|
|
61
79
|
});
|
|
62
|
-
|
|
80
|
+
if (result.exitCode !== 0) {
|
|
81
|
+
const hasDeclarations = result.all?.includes('Writing') || result.all?.includes('Declaration') || false;
|
|
82
|
+
const errorOutput = result.stderr || result.stdout || result.all || 'Unknown error';
|
|
83
|
+
if (!hasDeclarations) {
|
|
84
|
+
log(`\n${cliName} Error: TypeScript declaration generation failed`, 'error', quiet);
|
|
85
|
+
log(`\nExit Code: ${result.exitCode}`, 'error', quiet);
|
|
86
|
+
log(`\nTypeScript Command: ${typescriptPath} ${typescriptOptions.join(' ')}`, 'error', quiet);
|
|
87
|
+
log(`\nError Output:\n${errorOutput}`, 'error', quiet);
|
|
88
|
+
const errorLines = errorOutput.split('\n').filter((line)=>line.includes('error TS') || line.includes('Error:') || line.trim().startsWith('src/') || line.trim().startsWith('TS'));
|
|
89
|
+
if (errorLines.length > 0) {
|
|
90
|
+
log('\nKey Errors:', 'error', quiet);
|
|
91
|
+
errorLines.slice(0, 10).forEach((line)=>{
|
|
92
|
+
log(` ${line}`, 'error', quiet);
|
|
93
|
+
});
|
|
94
|
+
if (errorLines.length > 10) {
|
|
95
|
+
log(` ... and ${errorLines.length - 10} more errors`, 'error', quiet);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
spinner.fail('TypeScript declaration generation failed.');
|
|
99
|
+
} else {
|
|
100
|
+
log(`\n${cliName} Warning: TypeScript declaration generation completed with errors`, 'warn', quiet);
|
|
101
|
+
if (!quiet && errorOutput) {
|
|
102
|
+
log(`\nWarnings:\n${errorOutput}`, 'warn', quiet);
|
|
103
|
+
}
|
|
104
|
+
spinner.succeed('TypeScript declarations generated (with warnings).');
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
spinner.succeed('Successfully generated TypeScript declarations!');
|
|
108
|
+
}
|
|
63
109
|
} catch (error) {
|
|
64
|
-
log(`\n${cliName} Error:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
110
|
+
log(`\n${cliName} Error: TypeScript declaration generation exception`, 'error', quiet);
|
|
111
|
+
log(`\nError: ${error.message}`, 'error', quiet);
|
|
112
|
+
if (error instanceof Error && error.stack) {
|
|
113
|
+
log(`\nStack:\n${error.stack}`, 'error', quiet);
|
|
114
|
+
}
|
|
115
|
+
spinner.fail('TypeScript declaration generation had issues, continuing...');
|
|
68
116
|
}
|
|
69
117
|
}
|
|
70
118
|
const globOptions = {
|
|
119
|
+
absolute: true,
|
|
71
120
|
cwd: sourceDir,
|
|
72
121
|
dot: false,
|
|
73
122
|
nodir: true,
|
|
74
123
|
nosort: true
|
|
75
124
|
};
|
|
76
|
-
const tsFiles = globSync(
|
|
77
|
-
const jsFiles = globSync(
|
|
125
|
+
const tsFiles = globSync('**/!(*.spec|*.test|*.integration).ts*', globOptions);
|
|
126
|
+
const jsFiles = globSync('**/!(*.spec|*.test|*.integration).js', globOptions);
|
|
78
127
|
const sourceFiles = [
|
|
79
128
|
...tsFiles,
|
|
80
129
|
...jsFiles
|
|
@@ -159,13 +208,19 @@ export const compile = async (cmd, callback = ()=>({}))=>{
|
|
|
159
208
|
return 1;
|
|
160
209
|
}
|
|
161
210
|
}
|
|
211
|
+
if (sourceFiles.length === 0) {
|
|
212
|
+
log(`\n${cliName} Warning: No source files found to compile in ${sourceDir}`, 'warn', quiet);
|
|
213
|
+
spinner.succeed('No files to compile.');
|
|
214
|
+
callback(0);
|
|
215
|
+
return 0;
|
|
216
|
+
}
|
|
162
217
|
spinner.start(watch ? 'Watching for changes...' : 'Compiling with SWC...');
|
|
163
218
|
try {
|
|
164
|
-
// Compile each file with SWC
|
|
165
219
|
for (const file of sourceFiles){
|
|
166
|
-
const
|
|
167
|
-
const
|
|
168
|
-
|
|
220
|
+
const fileRelativeToSource = pathRelative(sourceDir, pathResolve(sourceDir, file));
|
|
221
|
+
const sourcePath = pathResolve(sourceDir, fileRelativeToSource);
|
|
222
|
+
const outputFile = fileRelativeToSource.replace(/\.(ts|tsx)$/, '.js');
|
|
223
|
+
const outputPath = pathResolve(outputDir, outputFile);
|
|
169
224
|
const outputDirPath = dirname(outputPath);
|
|
170
225
|
if (!existsSync(outputDirPath)) {
|
|
171
226
|
mkdirSync(outputDirPath, {
|
|
@@ -174,18 +229,19 @@ export const compile = async (cmd, callback = ()=>({}))=>{
|
|
|
174
229
|
}
|
|
175
230
|
const sourceCode = readFileSync(sourcePath, 'utf8');
|
|
176
231
|
const isTSX = file.endsWith('.tsx');
|
|
177
|
-
// Merge SWC config with command-specific overrides
|
|
178
232
|
const swcOptions = {
|
|
179
233
|
filename: file,
|
|
180
234
|
...swcConfig,
|
|
181
235
|
jsc: {
|
|
182
236
|
...swcConfig?.jsc,
|
|
183
237
|
parser: {
|
|
238
|
+
comments: false,
|
|
184
239
|
decorators: swcConfig?.jsc?.parser?.decorators ?? true,
|
|
185
240
|
dynamicImport: swcConfig?.jsc?.parser?.dynamicImport ?? true,
|
|
186
241
|
syntax: 'typescript',
|
|
187
242
|
tsx: isTSX
|
|
188
243
|
},
|
|
244
|
+
preserveAllComments: false,
|
|
189
245
|
target: swcConfig?.jsc?.target ?? 'es2020',
|
|
190
246
|
transform: isTSX ? {
|
|
191
247
|
...swcConfig?.jsc?.transform,
|
|
@@ -195,19 +251,30 @@ export const compile = async (cmd, callback = ()=>({}))=>{
|
|
|
195
251
|
}
|
|
196
252
|
} : swcConfig?.jsc?.transform
|
|
197
253
|
},
|
|
254
|
+
minify: false,
|
|
198
255
|
module: {
|
|
199
256
|
...swcConfig?.module,
|
|
200
257
|
type: format === 'cjs' ? 'commonjs' : swcConfig?.module?.type || 'es6'
|
|
201
|
-
}
|
|
258
|
+
},
|
|
259
|
+
sourceMaps: swcConfig?.sourceMaps || 'inline'
|
|
202
260
|
};
|
|
203
261
|
const result = await transform(sourceCode, swcOptions);
|
|
204
262
|
writeFileSync(outputPath, result.code);
|
|
205
263
|
}
|
|
206
264
|
spinner.succeed('Compile completed successfully!');
|
|
207
265
|
} catch (error) {
|
|
208
|
-
log(`\n${cliName} Error:
|
|
266
|
+
log(`\n${cliName} Error: SWC compilation failed`, 'error', quiet);
|
|
267
|
+
log(`\nError: ${error.message}`, 'error', quiet);
|
|
268
|
+
if (error instanceof Error) {
|
|
269
|
+
if (error.stack) {
|
|
270
|
+
log(`\nStack Trace:\n${error.stack}`, 'error', quiet);
|
|
271
|
+
}
|
|
272
|
+
if ('filename' in error || 'file' in error) {
|
|
273
|
+
log(`\nFile: ${error.filename || error.file}`, 'error', quiet);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
209
276
|
if (!quiet) {
|
|
210
|
-
console.error(error);
|
|
277
|
+
console.error('\nFull Error Details:', error);
|
|
211
278
|
}
|
|
212
279
|
spinner.fail('Code compiling failed.');
|
|
213
280
|
callback(1);
|
|
@@ -225,4 +292,4 @@ export const compile = async (cmd, callback = ()=>({}))=>{
|
|
|
225
292
|
return 0;
|
|
226
293
|
};
|
|
227
294
|
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb21waWxlL2NvbXBpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dHJhbnNmb3JtfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMsIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZSwgZGlybmFtZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnLCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aH0gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzLCBjb3B5Q29uZmlndXJlZEZpbGVzLCBjb3B5RmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGdldEZpbGVzQnlFeHQsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGhhc0ZpbGVUeXBlID0gKHN0YXJ0UGF0aDogc3RyaW5nLCBleHQ6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGlmKCFleGlzdHNTeW5jKHN0YXJ0UGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSByZWFkZGlyU3luYyhzdGFydFBhdGgpO1xuXG4gIHJldHVybiBmaWxlcy5zb21lKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZTogc3RyaW5nID0gcGF0aEpvaW4oc3RhcnRQYXRoLCBmaWxlKTtcbiAgICBjb25zdCBmaWxlRXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShmaWxlbmFtZSk7XG4gICAgY29uc3Qgc3RhdCA9IGxzdGF0U3luYyhmaWxlbmFtZSk7XG5cbiAgICBpZihzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiBoYXNGaWxlVHlwZShmaWxlbmFtZSwgZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0LmluY2x1ZGVzKGZpbGVFeHQpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21waWxlID0gYXN5bmMgKGNtZDogYW55LCBjYWxsYmFjazogYW55ID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgY29uZmlnLFxuICAgIGZvcm1hdCA9ICdlc20nLFxuICAgIG91dHB1dFBhdGgsXG4gICAgcXVpZXQsXG4gICAgcmVtb3ZlLFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHN3Yzogc3djQ29uZmlnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aCB8fCBvdXRwdXRGdWxsUGF0aDtcbiAgY29uc3Qgc291cmNlRGlyOiBzdHJpbmcgPSBzb3VyY2VQYXRoID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgYC4vJHtzb3VyY2VQYXRofWApIDogc291cmNlRnVsbFBhdGggfHwgJyc7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLicpO1xuXG4gIGNoZWNrTGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrQ29tcGlsZVR5cGVzY3JpcHRDb25maWcoKTtcblxuICAgIGNvbnN0IHR5cGVzY3JpcHRQYXRoOiBzdHJpbmcgPSByZXNvbHZlQmluYXJ5UGF0aCgndHNjJywgJ3R5cGVzY3JpcHQnKTtcblxuICAgIGlmKCF0eXBlc2NyaXB0UGF0aCkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBUeXBlU2NyaXB0IGJpbmFyeSBub3QgZm91bmQgaW4gTGV4J3Mgbm9kZV9tb2R1bGVzIG9yIG1vbm9yZXBvIHJvb3RgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coJ1BsZWFzZSByZWluc3RhbGwgTGV4IG9yIGNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXNjcmlwdE9wdGlvbnM6IHN0cmluZ1tdID0gY29uZmlnID9cbiAgICAgIFsnLXAnLCBjb25maWddIDpcbiAgICAgIFsnLXAnLCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcuYnVpbGQuanNvbicpXTtcblxuICAgIHNwaW5uZXIuc3RhcnQoJ1N0YXRpYyB0eXBlIGNoZWNraW5nIHdpdGggVHlwZXNjcmlwdC4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHR5cGVzY3JpcHRQYXRoLCB0eXBlc2NyaXB0T3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY29tcGxldGVkIHR5cGUgY2hlY2tpbmchJyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ1R5cGUgY2hlY2tpbmcgZmFpbGVkLicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZURpcn0vKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLmpzYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBzb3VyY2VGaWxlczogc3RyaW5nW10gPSBbLi4udHNGaWxlcywgLi4uanNGaWxlc107XG5cbiAgY29uc3QgY3NzRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmNzcycsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKGNzc0ZpbGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IHBvc3Rjc3NQYXRoOiBzdHJpbmcgPSByZXNvbHZlQmluYXJ5UGF0aCgncG9zdGNzcycsICdwb3N0Y3NzLWNsaScpO1xuXG4gICAgaWYoIXBvc3Rjc3NQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFBvc3RDU1MgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3N0Y3NzT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgICBgJHtzb3VyY2VEaXJ9LyoqLyoqLmNzc2AsXG4gICAgICAnLS1iYXNlJyxcbiAgICAgIHNvdXJjZURpcixcbiAgICAgICctLWRpcicsXG4gICAgICBvdXRwdXREaXIsXG4gICAgICAnLS1jb25maWcnLFxuICAgICAgcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uL3Bvc3Rjc3MuY29uZmlnLmpzJylcbiAgICBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHBvc3Rjc3NQYXRoLCBwb3N0Y3NzT3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGZvcm1hdHRlZCAke2Nzc0ZpbGVzLmxlbmd0aH0gY3NzIGZpbGVzIWApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgZm9ybWF0dGluZyBjc3MuJyk7XG5cbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2lmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmdpZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBqcGdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuanBnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHBuZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5wbmcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgc3ZnRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnN2ZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBpbWFnZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi5naWZGaWxlcywgLi4uanBnRmlsZXMsIC4uLnBuZ0ZpbGVzLCAuLi5zdmdGaWxlc107XG5cbiAgaWYoaW1hZ2VGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGltYWdlRmlsZXMsICdpbWFnZScsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBpbWFnZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0dGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcudHRmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IG90ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5vdGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmYyRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYyJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGZvbnRGaWxlczogc3RyaW5nW10gPSBbLi4udHRmRmlsZXMsIC4uLm90ZkZpbGVzLCAuLi53b2ZmRmlsZXMsIC4uLndvZmYyRmlsZXNdO1xuXG4gIGlmKGZvbnRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGZvbnRGaWxlcywgJ2ZvbnQnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZm9udHMgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZEZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5tZCcsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKG1kRmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhtZEZpbGVzLCAnZG9jdW1lbnRzJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGRvY3MgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBTV0MuLi4nKTtcblxuICB0cnkge1xuICAgIC8vIENvbXBpbGUgZWFjaCBmaWxlIHdpdGggU1dDXG4gICAgZm9yKGNvbnN0IGZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBwYXRoUmVzb2x2ZShzb3VyY2VEaXIsIGZpbGUpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGhSZXNvbHZlKG91dHB1dERpciwgZmlsZS5yZXBsYWNlKC9cXC4odHN8dHN4KSQvLCAnLmpzJykpO1xuXG4gICAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcbiAgICAgIGNvbnN0IG91dHB1dERpclBhdGggPSBkaXJuYW1lKG91dHB1dFBhdGgpO1xuICAgICAgaWYoIWV4aXN0c1N5bmMob3V0cHV0RGlyUGF0aCkpIHtcbiAgICAgICAgbWtkaXJTeW5jKG91dHB1dERpclBhdGgsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IHJlYWRGaWxlU3luYyhzb3VyY2VQYXRoLCAndXRmOCcpO1xuXG4gICAgICBjb25zdCBpc1RTWCA9IGZpbGUuZW5kc1dpdGgoJy50c3gnKTtcblxuICAgICAgLy8gTWVyZ2UgU1dDIGNvbmZpZyB3aXRoIGNvbW1hbmQtc3BlY2lmaWMgb3ZlcnJpZGVzXG4gICAgICBjb25zdCBzd2NPcHRpb25zID0ge1xuICAgICAgICBmaWxlbmFtZTogZmlsZSxcbiAgICAgICAgLi4uc3djQ29uZmlnLFxuICAgICAgICBqc2M6IHtcbiAgICAgICAgICAuLi5zd2NDb25maWc/LmpzYyxcbiAgICAgICAgICBwYXJzZXI6IHtcbiAgICAgICAgICAgIGRlY29yYXRvcnM6IHN3Y0NvbmZpZz8uanNjPy5wYXJzZXI/LmRlY29yYXRvcnMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGR5bmFtaWNJbXBvcnQ6IHN3Y0NvbmZpZz8uanNjPy5wYXJzZXI/LmR5bmFtaWNJbXBvcnQgPz8gdHJ1ZSxcbiAgICAgICAgICAgIHN5bnRheDogJ3R5cGVzY3JpcHQnIGFzIGNvbnN0LFxuICAgICAgICAgICAgdHN4OiBpc1RTWFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGFyZ2V0OiBzd2NDb25maWc/LmpzYz8udGFyZ2V0ID8/ICdlczIwMjAnLFxuICAgICAgICAgIHRyYW5zZm9ybTogaXNUU1ggPyB7XG4gICAgICAgICAgICAuLi5zd2NDb25maWc/LmpzYz8udHJhbnNmb3JtLFxuICAgICAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICAgICAgcnVudGltZTogJ2F1dG9tYXRpYycgYXMgY29uc3QsXG4gICAgICAgICAgICAgIC4uLnN3Y0NvbmZpZz8uanNjPy50cmFuc2Zvcm0/LnJlYWN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSA6IHN3Y0NvbmZpZz8uanNjPy50cmFuc2Zvcm1cbiAgICAgICAgfSxcbiAgICAgICAgbW9kdWxlOiB7XG4gICAgICAgICAgLi4uc3djQ29uZmlnPy5tb2R1bGUsXG4gICAgICAgICAgdHlwZTogZm9ybWF0ID09PSAnY2pzJyA/ICdjb21tb25qcycgYXMgY29uc3QgOiAoc3djQ29uZmlnPy5tb2R1bGU/LnR5cGUgYXMgJ2VzNicgfHwgJ2VzNicpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybShzb3VyY2VDb2RlLCBzd2NPcHRpb25zKTtcblxuICAgICAgd3JpdGVGaWxlU3luYyhvdXRwdXRQYXRoLCByZXN1bHQuY29kZSk7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICB9IGNhdGNoKGNvcHlFcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlczogJHtjb3B5RXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbInRyYW5zZm9ybSIsImV4ZWNhIiwiZXhpc3RzU3luYyIsImxzdGF0U3luYyIsInJlYWRkaXJTeW5jIiwicmVhZEZpbGVTeW5jIiwid3JpdGVGaWxlU3luYyIsIm1rZGlyU3luYyIsInN5bmMiLCJnbG9iU3luYyIsImV4dG5hbWUiLCJwYXRoRXh0bmFtZSIsImpvaW4iLCJwYXRoSm9pbiIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsImRpcm5hbWUiLCJMZXhDb25maWciLCJnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCIsImNoZWNrTGlua2VkTW9kdWxlcyIsImNvcHlDb25maWd1cmVkRmlsZXMiLCJjb3B5RmlsZXMiLCJjcmVhdGVTcGlubmVyIiwiZ2V0RmlsZXNCeUV4dCIsInJlbW92ZUZpbGVzIiwiZ2V0RGlyTmFtZSIsInJlc29sdmVCaW5hcnlQYXRoIiwibG9nIiwiaGFzRmlsZVR5cGUiLCJzdGFydFBhdGgiLCJleHQiLCJmaWxlcyIsInNvbWUiLCJmaWxlIiwiZmlsZW5hbWUiLCJmaWxlRXh0Iiwic3RhdCIsImlzRGlyZWN0b3J5IiwiaW5jbHVkZXMiLCJjb21waWxlIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3V0cHV0UGF0aCIsInF1aWV0IiwicmVtb3ZlIiwic291cmNlUGF0aCIsIndhdGNoIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJzb3VyY2VGdWxsUGF0aCIsInN3YyIsInN3Y0NvbmZpZyIsInVzZVR5cGVzY3JpcHQiLCJvdXRwdXREaXIiLCJzb3VyY2VEaXIiLCJwcm9jZXNzIiwiY3dkIiwiZGlyTmFtZSIsImRpclBhdGgiLCJjaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnIiwidHlwZXNjcmlwdFBhdGgiLCJ0eXBlc2NyaXB0T3B0aW9ucyIsInN0YXJ0IiwiZW5jb2RpbmciLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiZmFpbCIsImdsb2JPcHRpb25zIiwiZG90Iiwibm9kaXIiLCJub3NvcnQiLCJ0c0ZpbGVzIiwianNGaWxlcyIsInNvdXJjZUZpbGVzIiwiY3NzRmlsZXMiLCJsZW5ndGgiLCJwb3N0Y3NzUGF0aCIsInBvc3Rjc3NPcHRpb25zIiwiZ2lmRmlsZXMiLCJqcGdGaWxlcyIsInBuZ0ZpbGVzIiwic3ZnRmlsZXMiLCJpbWFnZUZpbGVzIiwidHRmRmlsZXMiLCJvdGZGaWxlcyIsIndvZmZGaWxlcyIsIndvZmYyRmlsZXMiLCJmb250RmlsZXMiLCJtZEZpbGVzIiwicmVwbGFjZSIsIm91dHB1dERpclBhdGgiLCJyZWN1cnNpdmUiLCJzb3VyY2VDb2RlIiwiaXNUU1giLCJlbmRzV2l0aCIsInN3Y09wdGlvbnMiLCJqc2MiLCJwYXJzZXIiLCJkZWNvcmF0b3JzIiwiZHluYW1pY0ltcG9ydCIsInN5bnRheCIsInRzeCIsInRhcmdldCIsInJlYWN0IiwicnVudGltZSIsIm1vZHVsZSIsInR5cGUiLCJyZXN1bHQiLCJjb2RlIiwiY29u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
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb21waWxlL2NvbXBpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dHJhbnNmb3JtfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMsIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlLCBkaXJuYW1lfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NoZWNrTGlua2VkTW9kdWxlcywgY29weUNvbmZpZ3VyZWRGaWxlcywgY29weUZpbGVzLCBjcmVhdGVTcGlubmVyLCBnZXRGaWxlc0J5RXh0LCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7Z2V0RGlyTmFtZSwgcmVzb2x2ZUJpbmFyeVBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBoYXNGaWxlVHlwZSA9IChzdGFydFBhdGg6IHN0cmluZywgZXh0OiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICBpZighZXhpc3RzU3luYyhzdGFydFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gcmVhZGRpclN5bmMoc3RhcnRQYXRoKTtcblxuICByZXR1cm4gZmlsZXMuc29tZSgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHBhdGhKb2luKHN0YXJ0UGF0aCwgZmlsZSk7XG4gICAgY29uc3QgZmlsZUV4dDogc3RyaW5nID0gcGF0aEV4dG5hbWUoZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0YXQgPSBsc3RhdFN5bmMoZmlsZW5hbWUpO1xuXG4gICAgaWYoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gaGFzRmlsZVR5cGUoZmlsZW5hbWUsIGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dC5pbmNsdWRlcyhmaWxlRXh0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcGlsZSA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBmb3JtYXQgPSAnZXNtJyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHJlbW92ZSxcbiAgICBzb3VyY2VQYXRoLFxuICAgIHdhdGNoXG4gIH0gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBjb21waWxpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHNvdXJjZUZ1bGxQYXRoLCBzd2M6IHN3Y0NvbmZpZywgdXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBvdXRwdXREaXI6IHN0cmluZyA9IG91dHB1dFBhdGggfHwgb3V0cHV0RnVsbFBhdGg7XG4gIGNvbnN0IHNvdXJjZURpcjogc3RyaW5nID0gc291cmNlUGF0aCA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGAuLyR7c291cmNlUGF0aH1gKSA6IHNvdXJjZUZ1bGxQYXRoIHx8ICcnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIGNoZWNrTGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdHlwZXNjcmlwdFBhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCd0c2MnLCAndHlwZXNjcmlwdCcpO1xuXG4gICAgaWYoIXR5cGVzY3JpcHRQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWdcbiAgICAgID8gWyctcCcsIGNvbmZpZywgJy0tZW1pdERlY2xhcmF0aW9uT25seScsICctLXNraXBMaWJDaGVjayddIC8vIFVzZXIgcHJvdmlkZWQgY3VzdG9tIGNvbmZpZywgYnV0IHN0aWxsIG9ubHkgZW1pdCBkZWNsYXJhdGlvbnNcbiAgICAgIDogKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYk9wdGlvbnMgPSB7XG4gICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgY3dkOiBzb3VyY2VEaXIsXG4gICAgICAgICAgZG90OiBmYWxzZSxcbiAgICAgICAgICBub2RpcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0c0ZpbGVzID0gZ2xvYlN5bmMoJyoqLyEoKi5zcGVjfCoudGVzdHwqLmludGVncmF0aW9uKS50cycsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgdHN4RmlsZXMgPSBnbG9iU3luYygnKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLnRzeCcsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgYWxsU291cmNlRmlsZXMgPSBbLi4udHNGaWxlcywgLi4udHN4RmlsZXNdO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uTGV4Q29uZmlnLmdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzKCksXG4gICAgICAgICAgLi4uYWxsU291cmNlRmlsZXNcbiAgICAgICAgXTtcbiAgICAgIH0pKCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVjbGFyYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7XG4gICAgICAgIGFsbDogdHJ1ZSxcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICByZWplY3Q6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgaWYocmVzdWx0LmV4aXRDb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGhhc0RlY2xhcmF0aW9ucyA9IHJlc3VsdC5hbGw/LmluY2x1ZGVzKCdXcml0aW5nJykgfHwgcmVzdWx0LmFsbD8uaW5jbHVkZXMoJ0RlY2xhcmF0aW9uJykgfHwgZmFsc2U7XG4gICAgICAgIGNvbnN0IGVycm9yT3V0cHV0ID0gcmVzdWx0LnN0ZGVyciB8fCByZXN1bHQuc3Rkb3V0IHx8IHJlc3VsdC5hbGwgfHwgJ1Vua25vd24gZXJyb3InO1xuXG4gICAgICAgIGlmKCFoYXNEZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgbG9nKGBcXG5FeGl0IENvZGU6ICR7cmVzdWx0LmV4aXRDb2RlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBsb2coYFxcblR5cGVTY3JpcHQgQ29tbWFuZDogJHt0eXBlc2NyaXB0UGF0aH0gJHt0eXBlc2NyaXB0T3B0aW9ucy5qb2luKCcgJyl9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGxvZyhgXFxuRXJyb3IgT3V0cHV0OlxcbiR7ZXJyb3JPdXRwdXR9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAgICAgY29uc3QgZXJyb3JMaW5lcyA9IGVycm9yT3V0cHV0LnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdlcnJvciBUUycpIHx8XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdFcnJvcjonKSB8fFxuICAgICAgICAgICAgbGluZS50cmltKCkuc3RhcnRzV2l0aCgnc3JjLycpIHx8XG4gICAgICAgICAgICBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCdUUycpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmKGVycm9yTGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbG9nKCdcXG5LZXkgRXJyb3JzOicsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgICAgICAgZXJyb3JMaW5lcy5zbGljZSgwLCAxMCkuZm9yRWFjaCgobGluZSkgPT4ge1xuICAgICAgICAgICAgICBsb2coYCAgJHtsaW5lfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZihlcnJvckxpbmVzLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgICAgIGxvZyhgICAuLi4gYW5kICR7ZXJyb3JMaW5lcy5sZW5ndGggLSAxMH0gbW9yZSBlcnJvcnNgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3Bpbm5lci5mYWlsKCdUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gY29tcGxldGVkIHdpdGggZXJyb3JzYCwgJ3dhcm4nLCBxdWlldCk7XG5cbiAgICAgICAgICBpZighcXVpZXQgJiYgZXJyb3JPdXRwdXQpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuV2FybmluZ3M6XFxuJHtlcnJvck91dHB1dH1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ1R5cGVTY3JpcHQgZGVjbGFyYXRpb25zIGdlbmVyYXRlZCAod2l0aCB3YXJuaW5ncykuJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9ucyEnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBleGNlcHRpb25gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coYFxcbkVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBpZihlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2s6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBnZW5lcmF0aW9uIGhhZCBpc3N1ZXMsIGNvbnRpbnVpbmcuLi4nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnbG9iT3B0aW9ucyA9IHtcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICBjd2Q6IHNvdXJjZURpcixcbiAgICBkb3Q6IGZhbHNlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIG5vc29ydDogdHJ1ZVxuICB9O1xuICBjb25zdCB0c0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqJywgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikuanMnLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBjc3NGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuY3NzJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYoY3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgcG9zdGNzc1BhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCdwb3N0Y3NzJywgJ3Bvc3Rjc3MtY2xpJyk7XG5cbiAgICBpZighcG9zdGNzc1BhdGgpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogUG9zdENTUyBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIGluc3RhbGxhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZURpcn0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRGlyLFxuICAgICAgJy0tZGlyJyxcbiAgICAgIG91dHB1dERpcixcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vcG9zdGNzcy5jb25maWcuanMnKVxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EocG9zdGNzc1BhdGgsIHBvc3Rjc3NPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgZm9ybWF0dGVkICR7Y3NzRmlsZXMubGVuZ3RofSBjc3MgZmlsZXMhYCk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnaWZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuZ2lmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGpwZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5qcGcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgcG5nRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnBuZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBzdmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuc3ZnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGltYWdlRmlsZXM6IHN0cmluZ1tdID0gWy4uLmdpZkZpbGVzLCAuLi5qcGdGaWxlcywgLi4ucG5nRmlsZXMsIC4uLnN2Z0ZpbGVzXTtcblxuICBpZihpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoaW1hZ2VGaWxlcywgJ2ltYWdlJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGltYWdlcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHR0ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy50dGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgb3RmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm90ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZjJGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZjInLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgZm9udEZpbGVzOiBzdHJpbmdbXSA9IFsuLi50dGZGaWxlcywgLi4ub3RmRmlsZXMsIC4uLndvZmZGaWxlcywgLi4ud29mZjJGaWxlc107XG5cbiAgaWYoZm9udEZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoZm9udEZpbGVzLCAnZm9udCcsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1kRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm1kJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYobWRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKG1kRmlsZXMsICdkb2N1bWVudHMnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZG9jcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGlmKHNvdXJjZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBObyBzb3VyY2UgZmlsZXMgZm91bmQgdG8gY29tcGlsZSBpbiAke3NvdXJjZURpcn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ05vIGZpbGVzIHRvIGNvbXBpbGUuJyk7XG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBTV0MuLi4nKTtcblxuICB0cnkge1xuICAgIGZvcihjb25zdCBmaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgICBjb25zdCBmaWxlUmVsYXRpdmVUb1NvdXJjZSA9IHBhdGhSZWxhdGl2ZShzb3VyY2VEaXIsIHBhdGhSZXNvbHZlKHNvdXJjZURpciwgZmlsZSkpO1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IHBhdGhSZXNvbHZlKHNvdXJjZURpciwgZmlsZVJlbGF0aXZlVG9Tb3VyY2UpO1xuICAgICAgY29uc3Qgb3V0cHV0RmlsZSA9IGZpbGVSZWxhdGl2ZVRvU291cmNlLnJlcGxhY2UoL1xcLih0c3x0c3gpJC8sICcuanMnKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoUmVzb2x2ZShvdXRwdXREaXIsIG91dHB1dEZpbGUpO1xuICAgICAgY29uc3Qgb3V0cHV0RGlyUGF0aCA9IGRpcm5hbWUob3V0cHV0UGF0aCk7XG5cbiAgICAgIGlmKCFleGlzdHNTeW5jKG91dHB1dERpclBhdGgpKSB7XG4gICAgICAgIG1rZGlyU3luYyhvdXRwdXREaXJQYXRoLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSByZWFkRmlsZVN5bmMoc291cmNlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IGlzVFNYID0gZmlsZS5lbmRzV2l0aCgnLnRzeCcpO1xuICAgICAgY29uc3Qgc3djT3B0aW9ucyA9IHtcbiAgICAgICAgZmlsZW5hbWU6IGZpbGUsXG4gICAgICAgIC4uLnN3Y0NvbmZpZyxcbiAgICAgICAganNjOiB7XG4gICAgICAgICAgLi4uc3djQ29uZmlnPy5qc2MsXG4gICAgICAgICAgcGFyc2VyOiB7XG4gICAgICAgICAgICBjb21tZW50czogZmFsc2UsXG4gICAgICAgICAgICBkZWNvcmF0b3JzOiBzd2NDb25maWc/LmpzYz8ucGFyc2VyPy5kZWNvcmF0b3JzID8/IHRydWUsXG4gICAgICAgICAgICBkeW5hbWljSW1wb3J0OiBzd2NDb25maWc/LmpzYz8ucGFyc2VyPy5keW5hbWljSW1wb3J0ID8/IHRydWUsXG4gICAgICAgICAgICBzeW50YXg6ICd0eXBlc2NyaXB0JyBhcyBjb25zdCxcbiAgICAgICAgICAgIHRzeDogaXNUU1hcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByZXNlcnZlQWxsQ29tbWVudHM6IGZhbHNlLFxuICAgICAgICAgIHRhcmdldDogc3djQ29uZmlnPy5qc2M/LnRhcmdldCA/PyAnZXMyMDIwJyxcbiAgICAgICAgICB0cmFuc2Zvcm06IGlzVFNYID8ge1xuICAgICAgICAgICAgLi4uc3djQ29uZmlnPy5qc2M/LnRyYW5zZm9ybSxcbiAgICAgICAgICAgIHJlYWN0OiB7XG4gICAgICAgICAgICAgIHJ1bnRpbWU6ICdhdXRvbWF0aWMnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAuLi5zd2NDb25maWc/LmpzYz8udHJhbnNmb3JtPy5yZWFjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gOiBzd2NDb25maWc/LmpzYz8udHJhbnNmb3JtXG4gICAgICAgIH0sXG4gICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgIC4uLnN3Y0NvbmZpZz8ubW9kdWxlLFxuICAgICAgICAgIHR5cGU6IGZvcm1hdCA9PT0gJ2NqcycgPyAnY29tbW9uanMnIGFzIGNvbnN0IDogKHN3Y0NvbmZpZz8ubW9kdWxlPy50eXBlIGFzICdlczYnIHx8ICdlczYnKVxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VNYXBzOiBzd2NDb25maWc/LnNvdXJjZU1hcHMgfHwgJ2lubGluZSdcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybShzb3VyY2VDb2RlLCBzd2NPcHRpb25zKTtcblxuICAgICAgd3JpdGVGaWxlU3luYyhvdXRwdXRQYXRoLCByZXN1bHQuY29kZSk7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFNXQyBjb21waWxhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgbG9nKGBcXG5FcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGlmKGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2sgVHJhY2U6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGlmKCdmaWxlbmFtZScgaW4gZXJyb3IgfHwgJ2ZpbGUnIGluIGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuRmlsZTogJHsoZXJyb3IgYXMgYW55KS5maWxlbmFtZSB8fCAoZXJyb3IgYXMgYW55KS5maWxlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1xcbkZ1bGwgRXJyb3IgRGV0YWlsczonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5mYWlsKCdDb2RlIGNvbXBpbGluZyBmYWlsZWQuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY29weUNvbmZpZ3VyZWRGaWxlcyhzcGlubmVyLCBMZXhDb25maWcuY29uZmlnLCBxdWlldCk7XG4gIH0gY2F0Y2goY29weUVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gY29weSBjb25maWd1cmVkIGZpbGVzOiAke2NvcHlFcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlcy4nKTtcblxuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTsiXSwibmFtZXMiOlsidHJhbnNmb3JtIiwiZXhlY2EiLCJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwicmVhZGRpclN5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwic3luYyIsImdsb2JTeW5jIiwiZXh0bmFtZSIsInBhdGhFeHRuYW1lIiwiam9pbiIsInBhdGhKb2luIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJkaXJuYW1lIiwiTGV4Q29uZmlnIiwiY2hlY2tMaW5rZWRNb2R1bGVzIiwiY29weUNvbmZpZ3VyZWRGaWxlcyIsImNvcHlGaWxlcyIsImNyZWF0ZVNwaW5uZXIiLCJnZXRGaWxlc0J5RXh0IiwicmVtb3ZlRmlsZXMiLCJnZXREaXJOYW1lIiwicmVzb2x2ZUJpbmFyeVBhdGgiLCJsb2ciLCJoYXNGaWxlVHlwZSIsInN0YXJ0UGF0aCIsImV4dCIsImZpbGVzIiwic29tZSIsImZpbGUiLCJmaWxlbmFtZSIsImZpbGVFeHQiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJpbmNsdWRlcyIsImNvbXBpbGUiLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJjb25maWciLCJmb3JtYXQiLCJvdXRwdXRQYXRoIiwicXVpZXQiLCJyZW1vdmUiLCJzb3VyY2VQYXRoIiwid2F0Y2giLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJvdXRwdXRGdWxsUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwic3djIiwic3djQ29uZmlnIiwidXNlVHlwZXNjcmlwdCIsIm91dHB1dERpciIsInNvdXJjZURpciIsInByb2Nlc3MiLCJjd2QiLCJkaXJOYW1lIiwidHlwZXNjcmlwdFBhdGgiLCJ0eXBlc2NyaXB0T3B0aW9ucyIsImdsb2JPcHRpb25zIiwiYWJzb2x1dGUiLCJkb3QiLCJub2RpciIsInRzRmlsZXMiLCJ0c3hGaWxlcyIsImFsbFNvdXJjZUZpbGVzIiwiZ2V0VHlwZVNjcmlwdERlY2xhcmF0aW9uRmxhZ3MiLCJzdGFydCIsInJlc3VsdCIsImFsbCIsImVuY29kaW5nIiwicmVqZWN0IiwiZXhpdENvZGUiLCJoYXNEZWNsYXJhdGlvbnMiLCJlcnJvck91dHB1dCIsInN0ZGVyciIsInN0ZG91dCIsImVycm9yTGluZXMiLCJzcGxpdCIsImZpbHRlciIsImxpbmUiLCJ0cmltIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsInNsaWNlIiwiZm9yRWFjaCIsImZhaWwiLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiRXJyb3IiLCJzdGFjayIsIm5vc29ydCIsImpzRmlsZXMiLCJzb3VyY2VGaWxlcyIsImNzc0ZpbGVzIiwicG9zdGNzc1BhdGgiLCJwb3N0Y3NzT3B0aW9ucyIsImdpZkZpbGVzIiwianBnRmlsZXMiLCJwbmdGaWxlcyIsInN2Z0ZpbGVzIiwiaW1hZ2VGaWxlcyIsInR0ZkZpbGVzIiwib3RmRmlsZXMiLCJ3b2ZmRmlsZXMiLCJ3b2ZmMkZpbGVzIiwiZm9udEZpbGVzIiwibWRGaWxlcyIsImZpbGVSZWxhdGl2ZVRvU291cmNlIiwib3V0cHV0RmlsZSIsInJlcGxhY2UiLCJvdXRwdXREaXJQYXRoIiwicmVjdXJzaXZlIiwic291cmNlQ29kZSIsImlzVFNYIiwiZW5kc1dpdGgiLCJzd2NPcHRpb25zIiwianNjIiwicGFyc2VyIiwiY29tbWVudHMiLCJkZWNvcmF0b3JzIiwiZHluYW1pY0ltcG9ydCIsInN5bnRheCIsInRzeCIsInByZXNlcnZlQWxsQ29tbWVudHMiLCJ0YXJnZXQiLCJyZWFjdCIsInJ1bnRpbWUiLCJtaW5pZnkiLCJtb2R1bGUiLCJ0eXBlIiwic291cmNlTWFwcyIsImNvZGUiLCJjb25zb2xlIiwiY29weUVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxTQUFTLFFBQU8sWUFBWTtBQUNwQyxTQUFRQyxLQUFLLFFBQU8sUUFBUTtBQUM1QixTQUFRQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsU0FBUyxRQUFPLEtBQUs7QUFDOUYsU0FBUUMsUUFBUUMsUUFBUSxRQUFPLE9BQU87QUFDdEMsU0FBUUMsV0FBV0MsV0FBVyxFQUFFQyxRQUFRQyxRQUFRLEVBQUVDLFlBQVlDLFlBQVksRUFBRUMsV0FBV0MsV0FBVyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUV6SCxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLGtCQUFrQixFQUFFQyxtQkFBbUIsRUFBRUMsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxRQUFPLHFCQUFxQjtBQUNqSSxTQUFRQyxVQUFVLEVBQUVDLGlCQUFpQixRQUFPLHNCQUFzQjtBQUNsRSxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBRXZDLE9BQU8sTUFBTUMsY0FBYyxDQUFDQyxXQUFtQkM7SUFDN0MsSUFBRyxDQUFDN0IsV0FBVzRCLFlBQVk7UUFDekIsT0FBTztJQUNUO0lBRUEsTUFBTUUsUUFBa0I1QixZQUFZMEI7SUFFcEMsT0FBT0UsTUFBTUMsSUFBSSxDQUFDLENBQUNDO1FBQ2pCLE1BQU1DLFdBQW1CdEIsU0FBU2lCLFdBQVdJO1FBQzdDLE1BQU1FLFVBQWtCekIsWUFBWXdCO1FBQ3BDLE1BQU1FLE9BQU9sQyxVQUFVZ0M7UUFFdkIsSUFBR0UsS0FBS0MsV0FBVyxJQUFJO1lBQ3JCLE9BQU9ULFlBQVlNLFVBQVVKO1FBQy9CO1FBRUEsT0FBT0EsSUFBSVEsUUFBUSxDQUFDSDtJQUN0QjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1JLFVBQVUsT0FBT0MsS0FBVUMsV0FBZ0IsSUFBTyxDQUFBLENBQUMsQ0FBQSxDQUFFO0lBQ2hFLE1BQU0sRUFDSkMsVUFBVSxLQUFLLEVBQ2ZDLE1BQU0sRUFDTkMsU0FBUyxLQUFLLEVBQ2RDLFVBQVUsRUFDVkMsS0FBSyxFQUNMQyxNQUFNLEVBQ05DLFVBQVUsRUFDVkMsS0FBSyxFQUNOLEdBQUdUO0lBRUosTUFBTVUsVUFBVTVCLGNBQWN3QjtJQUU5Qm5CLElBQUksR0FBR2UsUUFBUSxhQUFhLENBQUMsRUFBRSxRQUFRSTtJQUV2QyxNQUFNNUIsVUFBVWlDLFdBQVcsQ0FBQ1g7SUFFNUIsTUFBTSxFQUFDWSxjQUFjLEVBQUVDLGNBQWMsRUFBRUMsS0FBS0MsU0FBUyxFQUFFQyxhQUFhLEVBQUMsR0FBR3RDLFVBQVV5QixNQUFNO0lBQ3hGLE1BQU1jLFlBQW9CWixjQUFjTztJQUN4QyxNQUFNTSxZQUFvQlYsYUFBYWhDLFlBQVkyQyxRQUFRQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUVaLFlBQVksSUFBSUssa0JBQWtCO0lBQ3pHLE1BQU1RLFVBQVVwQztJQUVoQk47SUFFQSxJQUFHNEIsUUFBUTtRQUNULE1BQU12QixZQUFZaUM7SUFDcEI7SUFFQSxJQUFHRCxlQUFlO1FBQ2hCLE1BQU1NLGlCQUF5QnBDLGtCQUFrQixPQUFPO1FBRXhELElBQUcsQ0FBQ29DLGdCQUFnQjtZQUNsQm5DLElBQUksQ0FBQyxFQUFFLEVBQUVlLFFBQVEsMEVBQTBFLENBQUMsRUFBRSxTQUFTSTtZQUN2R25CLElBQUksb0RBQW9ELFFBQVFtQjtZQUNoRSxPQUFPO1FBQ1Q7UUFFQSxNQUFNaUIsb0JBQThCcEIsU0FDaEM7WUFBQztZQUFNQTtZQUFRO1lBQXlCO1NBQWlCLENBQUMsZ0VBQWdFO1dBQzFILEFBQUMsQ0FBQTtZQUNELE1BQU1xQixjQUFjO2dCQUNsQkMsVUFBVTtnQkFDVkwsS0FBS0Y7Z0JBQ0xRLEtBQUs7Z0JBQ0xDLE9BQU87WUFDVDtZQUNBLE1BQU1DLFVBQVU1RCxTQUFTLHdDQUF3Q3dEO1lBQ2pFLE1BQU1LLFdBQVc3RCxTQUFTLHlDQUF5Q3dEO1lBQ25FLE1BQU1NLGlCQUFpQjttQkFBSUY7bUJBQVlDO2FBQVM7WUFFaEQsT0FBTzttQkFDRm5ELFVBQVVxRCw2QkFBNkI7bUJBQ3ZDRDthQUNKO1FBQ0gsQ0FBQTtRQUVGcEIsUUFBUXNCLEtBQUssQ0FBQztRQUVkLElBQUk7WUFDRixNQUFNQyxTQUFTLE1BQU16RSxNQUFNOEQsZ0JBQWdCQyxtQkFBbUI7Z0JBQzVEVyxLQUFLO2dCQUNMZCxLQUFLRCxRQUFRQyxHQUFHO2dCQUNoQmUsVUFBVTtnQkFDVkMsUUFBUTtZQUNWO1lBRUEsSUFBR0gsT0FBT0ksUUFBUSxLQUFLLEdBQUc7Z0JBQ3hCLE1BQU1DLGtCQUFrQkwsT0FBT0MsR0FBRyxFQUFFcEMsU0FBUyxjQUFjbUMsT0FBT0MsR0FBRyxFQUFFcEMsU0FBUyxrQkFBa0I7Z0JBQ2xHLE1BQU15QyxjQUFjTixPQUFPTyxNQUFNLElBQUlQLE9BQU9RLE1BQU0sSUFBSVIsT0FBT0MsR0FBRyxJQUFJO2dCQUVwRSxJQUFHLENBQUNJLGlCQUFpQjtvQkFDbkJuRCxJQUFJLENBQUMsRUFBRSxFQUFFZSxRQUFRLGdEQUFnRCxDQUFDLEVBQUUsU0FBU0k7b0JBQzdFbkIsSUFBSSxDQUFDLGFBQWEsRUFBRThDLE9BQU9JLFFBQVEsRUFBRSxFQUFFLFNBQVMvQjtvQkFDaERuQixJQUFJLENBQUMsc0JBQXNCLEVBQUVtQyxlQUFlLENBQUMsRUFBRUMsa0JBQWtCcEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTbUM7b0JBQ3ZGbkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFb0QsYUFBYSxFQUFFLFNBQVNqQztvQkFFaEQsTUFBTW9DLGFBQWFILFlBQVlJLEtBQUssQ0FBQyxNQUFNQyxNQUFNLENBQUMsQ0FBQ0MsT0FDakRBLEtBQUsvQyxRQUFRLENBQUMsZUFDZCtDLEtBQUsvQyxRQUFRLENBQUMsYUFDZCtDLEtBQUtDLElBQUksR0FBR0MsVUFBVSxDQUFDLFdBQ3ZCRixLQUFLQyxJQUFJLEdBQUdDLFVBQVUsQ0FBQztvQkFHekIsSUFBR0wsV0FBV00sTUFBTSxHQUFHLEdBQUc7d0JBQ3hCN0QsSUFBSSxpQkFBaUIsU0FBU21CO3dCQUU5Qm9DLFdBQVdPLEtBQUssQ0FBQyxHQUFHLElBQUlDLE9BQU8sQ0FBQyxDQUFDTDs0QkFDL0IxRCxJQUFJLENBQUMsRUFBRSxFQUFFMEQsTUFBTSxFQUFFLFNBQVN2Qzt3QkFDNUI7d0JBRUEsSUFBR29DLFdBQVdNLE1BQU0sR0FBRyxJQUFJOzRCQUN6QjdELElBQUksQ0FBQyxVQUFVLEVBQUV1RCxXQUFXTSxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsRUFBRSxTQUFTMUM7d0JBQ2xFO29CQUNGO29CQUVBSSxRQUFReUMsSUFBSSxDQUFDO2dCQUNmLE9BQU87b0JBQ0xoRSxJQUFJLENBQUMsRUFBRSxFQUFFZSxRQUFRLGlFQUFpRSxDQUFDLEVBQUUsUUFBUUk7b0JBRTdGLElBQUcsQ0FBQ0EsU0FBU2lDLGFBQWE7d0JBQ3hCcEQsSUFBSSxDQUFDLGFBQWEsRUFBRW9ELGFBQWEsRUFBRSxRQUFRakM7b0JBQzdDO29CQUVBSSxRQUFRMEMsT0FBTyxDQUFDO2dCQUNsQjtZQUNGLE9BQU87Z0JBQ0wxQyxRQUFRMEMsT0FBTyxDQUFDO1lBQ2xCO1FBQ0YsRUFBRSxPQUFNQyxPQUFPO1lBQ2JsRSxJQUFJLENBQUMsRUFBRSxFQUFFZSxRQUFRLG1EQUFtRCxDQUFDLEVBQUUsU0FBU0k7WUFDaEZuQixJQUFJLENBQUMsU0FBUyxFQUFFa0UsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU2hEO1lBRTFDLElBQUcrQyxpQkFBaUJFLFNBQVNGLE1BQU1HLEtBQUssRUFBRTtnQkFDeENyRSxJQUFJLENBQUMsVUFBVSxFQUFFa0UsTUFBTUcsS0FBSyxFQUFFLEVBQUUsU0FBU2xEO1lBQzNDO1lBRUFJLFFBQVF5QyxJQUFJLENBQUM7UUFDZjtJQUNGO0lBRUEsTUFBTTNCLGNBQWM7UUFDbEJDLFVBQVU7UUFDVkwsS0FBS0Y7UUFDTFEsS0FBSztRQUNMQyxPQUFPO1FBQ1A4QixRQUFRO0lBQ1Y7SUFDQSxNQUFNN0IsVUFBb0I1RCxTQUFTLHlDQUF5Q3dEO0lBQzVFLE1BQU1rQyxVQUFvQjFGLFNBQVMsd0NBQXdDd0Q7SUFDM0UsTUFBTW1DLGNBQXdCO1dBQUkvQjtXQUFZOEI7S0FBUTtJQUV0RCxNQUFNRSxXQUFxQjdFLGNBQWMsUUFBUUwsVUFBVXlCLE1BQU07SUFFakUsSUFBR3lELFNBQVNaLE1BQU0sRUFBRTtRQUNsQixNQUFNYSxjQUFzQjNFLGtCQUFrQixXQUFXO1FBRXpELElBQUcsQ0FBQzJFLGFBQWE7WUFDZjFFLElBQUksQ0FBQyxFQUFFLEVBQUVlLFFBQVEsdUVBQXVFLENBQUMsRUFBRSxTQUFTSTtZQUNwR25CLElBQUksb0RBQW9ELFFBQVFtQjtZQUNoRSxPQUFPO1FBQ1Q7UUFFQSxNQUFNd0QsaUJBQTJCO1lBQy9CLEdBQUc1QyxVQUFVLFVBQVUsQ0FBQztZQUN4QjtZQUNBQTtZQUNBO1lBQ0FEO1lBQ0E7WUFDQXpDLFlBQVk2QyxTQUFTO1NBQ3RCO1FBRUQsSUFBSTtZQUNGLE1BQU03RCxNQUFNcUcsYUFBYUMsZ0JBQWdCO2dCQUFDM0IsVUFBVTtZQUFNO1lBQzFEekIsUUFBUTBDLE9BQU8sQ0FBQyxDQUFDLHVCQUF1QixFQUFFUSxTQUFTWixNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3hFLEVBQUUsT0FBTUssT0FBTztZQUNibEUsSUFBSSxDQUFDLEVBQUUsRUFBRWUsUUFBUSxRQUFRLEVBQUVtRCxNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTaEQ7WUFFckRJLFFBQVF5QyxJQUFJLENBQUM7WUFFYmxELFNBQVM7WUFDVCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE1BQU04RCxXQUFxQmhGLGNBQWMsUUFBUUwsVUFBVXlCLE1BQU07SUFDakUsTUFBTTZELFdBQXFCakYsY0FBYyxRQUFRTCxVQUFVeUIsTUFBTTtJQUNqRSxNQUFNOEQsV0FBcUJsRixjQUFjLFFBQVFMLFVBQVV5QixNQUFNO0lBQ2pFLE1BQU0rRCxXQUFxQm5GLGNBQWMsUUFBUUwsVUFBVXlCLE1BQU07SUFDakUsTUFBTWdFLGFBQXVCO1dBQUlKO1dBQWFDO1dBQWFDO1dBQWFDO0tBQVM7SUFFakYsSUFBR0MsV0FBV25CLE1BQU0sRUFBRTtRQUNwQixJQUFJO1lBQ0YsTUFBTW5FLFVBQVVzRixZQUFZLFNBQVN6RCxTQUFTaEMsVUFBVXlCLE1BQU07UUFDaEUsRUFBRSxPQUFNa0QsT0FBTztZQUNibEUsSUFBSSxDQUFDLEVBQUUsRUFBRWUsUUFBUSxRQUFRLEVBQUVtRCxNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTaEQ7WUFFckRJLFFBQVF5QyxJQUFJLENBQUM7WUFFYmxELFNBQVM7WUFDVCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE1BQU1tRSxXQUFxQnJGLGNBQWMsUUFBUUwsVUFBVXlCLE1BQU07SUFDakUsTUFBTWtFLFdBQXFCdEYsY0FBYyxRQUFRTCxVQUFVeUIsTUFBTTtJQUNqRSxNQUFNbUUsWUFBc0J2RixjQUFjLFNBQVNMLFVBQVV5QixNQUFNO0lBQ25FLE1BQU1vRSxhQUF1QnhGLGNBQWMsVUFBVUwsVUFBVXlCLE1BQU07SUFDckUsTUFBTXFFLFlBQXNCO1dBQUlKO1dBQWFDO1dBQWFDO1dBQWNDO0tBQVc7SUFFbkYsSUFBR0MsVUFBVXhCLE1BQU0sRUFBRTtRQUNuQixJQUFJO1lBQ0YsTUFBTW5FLFVBQVUyRixXQUFXLFFBQVE5RCxTQUFTaEMsVUFBVXlCLE1BQU07UUFDOUQsRUFBRSxPQUFNa0QsT0FBTztZQUNibEUsSUFBSSxDQUFDLEVBQUUsRUFBRWUsUUFBUSxRQUFRLEVBQUVtRCxNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTaEQ7WUFFckRJLFFBQVF5QyxJQUFJLENBQUM7WUFFYmxELFNBQVM7WUFDVCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE1BQU13RSxVQUFvQjFGLGNBQWMsT0FBT0wsVUFBVXlCLE1BQU07SUFFL0QsSUFBR3NFLFFBQVF6QixNQUFNLEVBQUU7UUFDakIsSUFBSTtZQUNGLE1BQU1uRSxVQUFVNEYsU0FBUyxhQUFhL0QsU0FBU2hDLFVBQVV5QixNQUFNO1FBQ2pFLEVBQUUsT0FBTWtELE9BQU87WUFDYmxFLElBQUksQ0FBQyxFQUFFLEVBQUVlLFFBQVEsUUFBUSxFQUFFbUQsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU2hEO1lBRXJESSxRQUFReUMsSUFBSSxDQUFDO1lBRWJsRCxTQUFTO1lBQ1QsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFHMEQsWUFBWVgsTUFBTSxLQUFLLEdBQUc7UUFDM0I3RCxJQUFJLENBQUMsRUFBRSxFQUFFZSxRQUFRLDhDQUE4QyxFQUFFZ0IsV0FBVyxFQUFFLFFBQVFaO1FBQ3RGSSxRQUFRMEMsT0FBTyxDQUFDO1FBQ2hCbkQsU0FBUztRQUNULE9BQU87SUFDVDtJQUVBUyxRQUFRc0IsS0FBSyxDQUFDdkIsUUFBUSw0QkFBNEI7SUFFbEQsSUFBSTtRQUNGLEtBQUksTUFBTWhCLFFBQVFrRSxZQUFhO1lBQzdCLE1BQU1lLHVCQUF1QnBHLGFBQWE0QyxXQUFXMUMsWUFBWTBDLFdBQVd6QjtZQUM1RSxNQUFNZSxhQUFhaEMsWUFBWTBDLFdBQVd3RDtZQUMxQyxNQUFNQyxhQUFhRCxxQkFBcUJFLE9BQU8sQ0FBQyxlQUFlO1lBQy9ELE1BQU12RSxhQUFhN0IsWUFBWXlDLFdBQVcwRDtZQUMxQyxNQUFNRSxnQkFBZ0JwRyxRQUFRNEI7WUFFOUIsSUFBRyxDQUFDNUMsV0FBV29ILGdCQUFnQjtnQkFDN0IvRyxVQUFVK0csZUFBZTtvQkFBQ0MsV0FBVztnQkFBSTtZQUMzQztZQUVBLE1BQU1DLGFBQWFuSCxhQUFhNEMsWUFBWTtZQUM1QyxNQUFNd0UsUUFBUXZGLEtBQUt3RixRQUFRLENBQUM7WUFDNUIsTUFBTUMsYUFBYTtnQkFDakJ4RixVQUFVRDtnQkFDVixHQUFHc0IsU0FBUztnQkFDWm9FLEtBQUs7b0JBQ0gsR0FBR3BFLFdBQVdvRSxHQUFHO29CQUNqQkMsUUFBUTt3QkFDTkMsVUFBVTt3QkFDVkMsWUFBWXZFLFdBQVdvRSxLQUFLQyxRQUFRRSxjQUFjO3dCQUNsREMsZUFBZXhFLFdBQVdvRSxLQUFLQyxRQUFRRyxpQkFBaUI7d0JBQ3hEQyxRQUFRO3dCQUNSQyxLQUFLVDtvQkFDUDtvQkFDQVUscUJBQXFCO29CQUNyQkMsUUFBUTVFLFdBQVdvRSxLQUFLUSxVQUFVO29CQUNsQ3BJLFdBQVd5SCxRQUFRO3dCQUNqQixHQUFHakUsV0FBV29FLEtBQUs1SCxTQUFTO3dCQUM1QnFJLE9BQU87NEJBQ0xDLFNBQVM7NEJBQ1QsR0FBRzlFLFdBQVdvRSxLQUFLNUgsV0FBV3FJLEtBQUs7d0JBQ3JDO29CQUNGLElBQUk3RSxXQUFXb0UsS0FBSzVIO2dCQUN0QjtnQkFDQXVJLFFBQVE7Z0JBQ1JDLFFBQVE7b0JBQ04sR0FBR2hGLFdBQVdnRixNQUFNO29CQUNwQkMsTUFBTTVGLFdBQVcsUUFBUSxhQUF1QlcsV0FBV2dGLFFBQVFDLFFBQWlCO2dCQUN0RjtnQkFDQUMsWUFBWWxGLFdBQVdrRixjQUFjO1lBQ3ZDO1lBRUEsTUFBTWhFLFNBQVMsTUFBTTFFLFVBQVV3SCxZQUFZRztZQUUzQ3JILGNBQWN3QyxZQUFZNEIsT0FBT2lFLElBQUk7UUFDdkM7UUFFQXhGLFFBQVEwQyxPQUFPLENBQUM7SUFDbEIsRUFBRSxPQUFNQyxPQUFPO1FBQ2JsRSxJQUFJLENBQUMsRUFBRSxFQUFFZSxRQUFRLDhCQUE4QixDQUFDLEVBQUUsU0FBU0k7UUFDM0RuQixJQUFJLENBQUMsU0FBUyxFQUFFa0UsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU2hEO1FBRTFDLElBQUcrQyxpQkFBaUJFLE9BQU87WUFDekIsSUFBR0YsTUFBTUcsS0FBSyxFQUFFO2dCQUNkckUsSUFBSSxDQUFDLGdCQUFnQixFQUFFa0UsTUFBTUcsS0FBSyxFQUFFLEVBQUUsU0FBU2xEO1lBQ2pEO1lBRUEsSUFBRyxjQUFjK0MsU0FBUyxVQUFVQSxPQUFPO2dCQUN6Q2xFLElBQUksQ0FBQyxRQUFRLEVBQUUsQUFBQ2tFLE1BQWMzRCxRQUFRLElBQUksQUFBQzJELE1BQWM1RCxJQUFJLEVBQUUsRUFBRSxTQUFTYTtZQUM1RTtRQUNGO1FBRUEsSUFBRyxDQUFDQSxPQUFPO1lBQ1Q2RixRQUFROUMsS0FBSyxDQUFDLHlCQUF5QkE7UUFDekM7UUFFQTNDLFFBQVF5QyxJQUFJLENBQUM7UUFFYmxELFNBQVM7UUFDVCxPQUFPO0lBQ1Q7SUFFQSxJQUFJO1FBQ0YsTUFBTXJCLG9CQUFvQjhCLFNBQVNoQyxVQUFVeUIsTUFBTSxFQUFFRztJQUN2RCxFQUFFLE9BQU04RixXQUFXO1FBQ2pCakgsSUFBSSxDQUFDLEVBQUUsRUFBRWUsUUFBUSx5Q0FBeUMsRUFBRWtHLFVBQVU5QyxPQUFPLEVBQUUsRUFBRSxTQUFTaEQ7UUFFMUZJLFFBQVF5QyxJQUFJLENBQUM7UUFFYmxELFNBQVM7UUFDVCxPQUFPO0lBQ1Q7SUFFQUEsU0FBUztJQUNULE9BQU87QUFDVCxFQUFFIn0=
|
|
@@ -44,4 +44,4 @@ export const config = async (type, cmd, callback = ()=>({}))=>{
|
|
|
44
44
|
return Promise.resolve(0);
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jIChcbiAgdHlwZTogc3RyaW5nLFxuICBjbWQ6IENvbmZpZ09wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICdqZXN0JywgJ3dlYnBhY2snXTtcblxuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogT3B0aW9uIGZvciAke3R5cGV9IG5vdCBmb3VuZC4gQ29uZmlndXJhdGlvbnMgb25seSBhdmFpbGFibGUgZm9yIGFwcCwgamVzdCwgYW5kIHdlYnBhY2suYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICBsb2coYCR7Y2xpTmFtZX0gZ2VuZXJhdGluZyBjb25maWd1cmF0aW9uIGZvciAke3N0YXJ0Q2FzZSh0eXBlKX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBsZXQgY29uZmlnT3B0aW9ucztcblxuICBzd2l0Y2godHlwZSkge1xuICAgIGNhc2UgJ2FwcCc6XG4gICAgICBjb25maWdPcHRpb25zID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2plc3QnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IGltcG9ydCgnLi4vLi4vLi4vamVzdC5jb25maWcubWpzJyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd3ZWJwYWNrJzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uLy4uL3dlYnBhY2suY29uZmlnLmpzJyk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IGpzb25PdXRwdXQ6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ09wdGlvbnMsIG51bGwsIDIpO1xuXG4gIGlmKGpzb24pIHtcbiAgICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdDcmVhdGluZyBKU09OIG91dHB1dC4uLicpO1xuXG4gICAgd3JpdGVGaWxlU3luYyhqc29uLCBqc29uT3V0cHV0KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IHNhdmVkIEpTT04gb3V0cHV0IHRvICR7cGF0aFJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpzb24pfWApO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59OyJdLCJuYW1lcyI6WyJ3cml0ZUZpbGVTeW5jIiwic3RhcnRDYXNlIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwibG9nIiwiY29uZmlnIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsImpzb24iLCJxdWlldCIsInZhbGlkVHlwZXMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicGFyc2VDb25maWciLCJjb25maWdPcHRpb25zIiwianNvbk91dHB1dCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGlubmVyIiwic3RhcnQiLCJzdWNjZWVkIiwicHJvY2VzcyIsImN3ZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsYUFBYSxRQUFPLEtBQUs7QUFDakMsT0FBT0MsZUFBZSxzQkFBc0I7QUFDNUMsU0FBUUMsWUFBWUMsWUFBWSxRQUFPLE9BQU87QUFFOUMsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLFFBQU8scUJBQXFCO0FBQ2pELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFVdkMsT0FBTyxNQUFNQyxTQUFTLE9BQ3BCQyxNQUNBQyxLQUNBQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFFckMsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUMsR0FBR0o7SUFDdkMsTUFBTUssYUFBdUI7UUFBQztRQUFPO1FBQVE7S0FBVTtJQUV2RCxJQUFHLENBQUNBLFdBQVdDLFFBQVEsQ0FBQ1AsT0FBTztRQUM3QkYsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSxtQkFBbUIsRUFBRUgsS0FBSyxxRUFBcUUsQ0FBQyxFQUFFLFNBQVNLO1FBQzVISCxTQUFTO1FBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0lBQ3pCO0lBRUFYLElBQUksR0FBR0ssUUFBUSw4QkFBOEIsRUFBRVYsVUFBVU8sTUFBTSxHQUFHLENBQUMsRUFBRSxRQUFRSztJQUU3RSxNQUFNVCxVQUFVYyxXQUFXLENBQUNUO0lBRTVCLElBQUlVO0lBRUosT0FBT1g7UUFDTCxLQUFLO1lBQ0hXLGdCQUFnQmYsVUFBVUcsTUFBTTtZQUNoQztRQUNGLEtBQUs7WUFDSFksZ0JBQWdCLE1BQU0sQ0FBQztZQUN2QjtRQUNGLEtBQUs7WUFDSEEsZ0JBQWdCLE1BQU0sQ0FBQztZQUN2QjtJQUNKO0lBRUEsTUFBTUMsYUFBcUJDLEtBQUtDLFNBQVMsQ0FBQ0gsZUFBZSxNQUFNO0lBRS9ELElBQUdQLE1BQU07UUFDUCxNQUFNVyxVQUFVbEIsY0FBY1E7UUFFOUJVLFFBQVFDLEtBQUssQ0FBQztRQUVkeEIsY0FBY1ksTUFBTVE7UUFFcEJHLFFBQVFFLE9BQU8sQ0FBQyxDQUFDLGtDQUFrQyxFQUFFdEIsYUFBYXVCLFFBQVFDLEdBQUcsSUFBSWYsT0FBTztJQUMxRjtJQUVBRixTQUFTO0lBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0FBQ3pCLEVBQUUifQ==
|
|
@@ -36,4 +36,4 @@ export const copy = (from, to, cmd, callback = ()=>({}))=>{
|
|
|
36
36
|
return Promise.resolve(0);
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb3B5L2NvcHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jfSBmcm9tICdmcyc7XG5cbmltcG9ydCB7Y29weUZpbGVTeW5jLCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luY30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb3B5L2NvcHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jfSBmcm9tICdmcyc7XG5cbmltcG9ydCB7Y29weUZpbGVTeW5jLCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luY30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb3B5Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvcHkgPSAoXG4gIGZyb206IHN0cmluZyxcbiAgdG86IHN0cmluZyxcbiAgY21kOiBDb3B5T3B0aW9ucyxcbiAgY2FsbGJhY2s6IENvcHlDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIHF1aWV0fSA9IGNtZDtcblxuICAvLyBEaXNwbGF5IG1lc3NhZ2VcbiAgbG9nKGAke2NsaU5hbWV9IGNvcHlpbmcgXCIke3RvfVwiLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgaWYoIWV4aXN0c1N5bmMoZnJvbSkpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFBhdGggbm90IGZvdW5kLCBcIiR7ZnJvbX1cIi4uLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgaWYobHN0YXRTeW5jKGZyb20pLmlzRGlyZWN0b3J5KCkpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ29weSBkaXJlY3RvcnlcbiAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiLiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ29weSBmaWxlXG4gICAgICBjb3B5RmlsZVN5bmMoZnJvbSwgdG8pO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNvcHkgXCIke2Zyb219XCIgJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbn07Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJsc3RhdFN5bmMiLCJjb3B5RmlsZVN5bmMiLCJjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyIsImxvZyIsImNvcHkiLCJmcm9tIiwidG8iLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJxdWlldCIsIlByb21pc2UiLCJyZXNvbHZlIiwiaXNEaXJlY3RvcnkiLCJlcnJvciIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsU0FBUyxRQUFPLEtBQUs7QUFFekMsU0FBUUMsWUFBWSxFQUFFQyx1QkFBdUIsUUFBTyxxQkFBcUI7QUFDekUsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVN2QyxPQUFPLE1BQU1DLE9BQU8sQ0FDbEJDLE1BQ0FDLElBQ0FDLEtBQ0FDLFdBQXlCLElBQU8sQ0FBQSxDQUFDLENBQUEsQ0FBRTtJQUVuQyxNQUFNLEVBQUNDLFVBQVUsS0FBSyxFQUFFQyxLQUFLLEVBQUMsR0FBR0g7SUFFakMsa0JBQWtCO0lBQ2xCSixJQUFJLEdBQUdNLFFBQVEsVUFBVSxFQUFFSCxHQUFHLElBQUksQ0FBQyxFQUFFLFFBQVFJO0lBRTdDLElBQUcsQ0FBQ1gsV0FBV00sT0FBTztRQUNwQkYsSUFBSSxDQUFDLEVBQUUsRUFBRU0sUUFBUSx5QkFBeUIsRUFBRUosS0FBSyxJQUFJLENBQUMsRUFBRSxTQUFTSztRQUNqRUYsU0FBUztRQUNULE9BQU9HLFFBQVFDLE9BQU8sQ0FBQztJQUN6QjtJQUVBLElBQUdaLFVBQVVLLE1BQU1RLFdBQVcsSUFBSTtRQUNoQyxJQUFJO1lBQ0YsaUJBQWlCO1lBQ2pCWCx3QkFBd0JHLE1BQU1DO1FBQ2hDLEVBQUUsT0FBTVEsT0FBTztZQUNiWCxJQUFJLENBQUMsRUFBRSxFQUFFTSxRQUFRLHFCQUFxQixFQUFFSixLQUFLLEdBQUcsRUFBRVMsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU0w7WUFDNUVGLFNBQVM7WUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7UUFDekI7SUFDRixPQUFPO1FBQ0wsSUFBSTtZQUNGLFlBQVk7WUFDWlgsYUFBYUksTUFBTUM7UUFDckIsRUFBRSxPQUFNUSxPQUFPO1lBQ2JYLElBQUksQ0FBQyxFQUFFLEVBQUVNLFFBQVEscUJBQXFCLEVBQUVKLEtBQUssRUFBRSxFQUFFUyxNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTTDtZQUMzRUYsU0FBUztZQUNULE9BQU9HLFFBQVFDLE9BQU8sQ0FBQztRQUN6QjtJQUNGO0lBRUFKLFNBQVM7SUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7QUFDekIsRUFBRSJ9
|
|
@@ -200,4 +200,4 @@ export const create = async (type, cmd, callback = ()=>({}))=>{
|
|
|
200
200
|
return 0;
|
|
201
201
|
};
|
|
202
202
|
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENyZWF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlID0gJycsIG91dHB1dE5hbWUgPSAnJywgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGggPSAnJywgc291cmNlUGF0aCA9ICcnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGNvbnN0IHtjb25maWd9ID0gTGV4Q29uZmlnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHN0b3JlIGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd0c2NvbmZpZyc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZmlsZVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJ3RzY29uZmlnLmpzb24nLCB0cnVlKTtcblxuICAgICAgLy8gR2V0IHRzY29uZmlnIHRlbXBsYXRlXG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy50ZW1wbGF0ZS5qc29uJyk7XG4gICAgICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgJ3V0ZjgnKTtcblxuICAgICAgLy8gVXBkYXRlIExleCB0c2NvbmZpZyB0ZW1wbGF0ZSB3aXRoIHNvdXJjZSBhbmQgb3V0cHV0IGRpcmVjdG9yaWVzXG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvc3JjL2csIHNvdXJjZVBhdGgpO1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL2xpYi9nLCBvdXRwdXRQYXRoKTtcblxuICAgICAgLy8gU2F2ZSBuZXcgdHNjb25maWcgdG8gYXBwXG4gICAgICBjb25zdCBkZXN0UGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi90c2NvbmZpZy5qc29uJyk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGRlc3RQYXRoLCBkYXRhLCAndXRmOCcpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZpZXcnOiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICBjbGlOYW1lLFxuICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICBxdWlldCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgfSk7XG5cbiAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVQYXRoLCB0ZW1wbGF0ZVJlYWN0fSA9IHJlc3VsdDtcbiAgICAgIGNvbnN0IHZpZXdQYXRoOiBzdHJpbmcgPSBgJHtjd2R9LyR7bmFtZUNhcHN9Vmlld2A7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmKCFleGlzdHNTeW5jKHZpZXdQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHZpZXcgZmlsZXNcbiAgICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsICcuLy5TYW1wbGVWaWV3JyksIGN3ZCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgZGlyZWN0b3J5XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtjd2R9Ly5TYW1wbGVWaWV3YCwgdmlld1BhdGgpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIENTU1xuICAgICAgICAgIGNvbnN0IHZpZXdTdHlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke291dHB1dE5hbWV9Vmlldy5jc3NgO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L3NhbXBsZVZpZXcuY3NzYCwgdmlld1N0eWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdTdHlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgdmlld1Rlc3RQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdUZXN0UGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdUZXN0UGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHNvdXJjZSBmaWxlXG4gICAgICAgICAgY29uc3Qgdmlld0ZpbGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldyR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld0ZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld0ZpbGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7dmlld1BhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2c2NvZGUnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy52c2NvZGUnLCB0cnVlKTtcblxuICAgICAgLy8gQ29weSB2c2NvZGUgY29uZmlndXJhdGlvblxuICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uLy52c2NvZGUnKSwgY3dkKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdkYXRhbGF5ZXInOiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICAgIGNsaU5hbWUsXG4gICAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYoIXJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZUV4dCwgdGVtcGxhdGVQYXRofSA9IHJlc3VsdDtcbiAgICAgICAgY29uc3QgZGF0YUxheWVyUGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfURhdGFMYXllcmA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoZGF0YUxheWVyUGF0aCkpIHtcbiAgICAgICAgICAvLyBDcmVhdGUgZGF0YSBsYXllciBkaXJlY3RvcnlcbiAgICAgICAgICBjb25zdCBmcyA9IGF3YWl0IGltcG9ydCgnZnMnKTtcbiAgICAgICAgICBmcy5ta2RpclN5bmMoZGF0YUxheWVyUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgICAgLy8gQ29weSBhbmQgcmVuYW1lIG1haW4gZGF0YSBsYXllciBmaWxlXG4gICAgICAgICAgY29uc3Qgc291cmNlRmlsZSA9IHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgYC4vRGF0YUxheWVyJHt0ZW1wbGF0ZUV4dH0udHh0YCk7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0RmlsZSA9IGAke2RhdGFMYXllclBhdGh9LyR7bmFtZUNhcHN9RGF0YUxheWVyJHt0ZW1wbGF0ZUV4dH1gO1xuXG4gICAgICAgICAgaWYoZXhpc3RzU3luYyhzb3VyY2VGaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhzb3VyY2VGaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL0RhdGFMYXllci9nLCBuYW1lQ2Fwcyk7XG4gICAgICAgICAgICB3cml0ZUZpbGVTeW5jKHRhcmdldEZpbGUsIHVwZGF0ZWRDb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb3B5IGFuZCByZW5hbWUgdGVzdCBmaWxlXG4gICAgICAgICAgY29uc3Qgc291cmNlVGVzdEZpbGUgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsIGAuL0RhdGFMYXllci50ZXN0JHt0ZW1wbGF0ZUV4dH0udHh0YCk7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0VGVzdEZpbGUgPSBgJHtkYXRhTGF5ZXJQYXRofS8ke25hbWVDYXBzfURhdGFMYXllci50ZXN0JHt0ZW1wbGF0ZUV4dH1gO1xuXG4gICAgICAgICAgaWYoZXhpc3RzU3luYyhzb3VyY2VUZXN0RmlsZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RDb250ZW50ID0gcmVhZEZpbGVTeW5jKHNvdXJjZVRlc3RGaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RDb250ZW50ID0gdGVzdENvbnRlbnQucmVwbGFjZSgvRGF0YUxheWVyL2csIG5hbWVDYXBzKTtcbiAgICAgICAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0VGVzdEZpbGUsIHVwZGF0ZWRUZXN0Q29udGVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IFN1Y2Nlc3M6IENyZWF0ZWQgJHtuYW1lQ2Fwc31EYXRhTGF5ZXIgd2l0aCB0ZXN0IGZpbGVzLmAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke2RhdGFMYXllclBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJyZW5hbWVTeW5jIiwid3JpdGVGaWxlU3luYyIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsImNyZWF0ZUNoYW5nZWxvZyIsIkxleENvbmZpZyIsImNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jIiwiZ2V0RmlsZW5hbWVzIiwicmVtb3ZlRmlsZXMiLCJ1cGRhdGVUZW1wbGF0ZU5hbWUiLCJnZXREaXJOYW1lIiwibG9nIiwiY3JlYXRlIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsIm91dHB1dEZpbGUiLCJvdXRwdXROYW1lIiwicXVpZXQiLCJjd2QiLCJwcm9jZXNzIiwicGFyc2VDb25maWciLCJvdXRwdXRQYXRoIiwic291cmNlUGF0aCIsInVzZVR5cGVzY3JpcHQiLCJjb25maWciLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJkaXJOYW1lIiwic3RhdHVzQ2hhbmdlbG9nIiwicmVzdWx0IiwibmFtZSIsIm5hbWVDYXBzIiwidGVtcGxhdGVFeHQiLCJ0ZW1wbGF0ZVBhdGgiLCJzdG9yZVBhdGgiLCJzdG9yZVRlc3RQYXRoIiwic3RvcmVGaWxlUGF0aCIsImVycm9yIiwibWVzc2FnZSIsImRhdGEiLCJyZXBsYWNlIiwiZGVzdFBhdGgiLCJ0ZW1wbGF0ZVJlYWN0Iiwidmlld1BhdGgiLCJ2aWV3U3R5bGVQYXRoIiwidmlld1Rlc3RQYXRoIiwidmlld0ZpbGVQYXRoIiwiZGF0YUxheWVyUGF0aCIsImZzIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwic291cmNlRmlsZSIsInRhcmdldEZpbGUiLCJjb250ZW50IiwidXBkYXRlZENvbnRlbnQiLCJzb3VyY2VUZXN0RmlsZSIsInRhcmdldFRlc3RGaWxlIiwidGVzdENvbnRlbnQiLCJ1cGRhdGVkVGVzdENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLGFBQWEsUUFBTyxLQUFLO0FBQ3ZFLFNBQVFDLFdBQVdDLFdBQVcsUUFBTyxPQUFPO0FBRTVDLFNBQVFDLGVBQWUsUUFBTyw0QkFBNEI7QUFDMUQsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyx1QkFBdUIsRUFBRUMsWUFBWSxFQUFFQyxXQUFXLEVBQUVDLGtCQUFrQixRQUFPLHFCQUFxQjtBQUMxRyxTQUFRQyxVQUFVLFFBQU8sc0JBQXNCO0FBQy9DLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFXdkMsT0FBTyxNQUFNQyxTQUFTLE9BQU9DLE1BQWNDLEtBQW9CQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFDbEcsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsYUFBYSxFQUFFLEVBQUVDLGFBQWEsRUFBRSxFQUFFQyxLQUFLLEVBQUMsR0FBR0w7SUFDbkUsTUFBTU0sTUFBY0MsUUFBUUQsR0FBRztJQUMvQlQsSUFBSSxHQUFHSyxRQUFRLFVBQVUsRUFBRUgsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRTTtJQUU5QywyQkFBMkI7SUFDM0IsTUFBTWQsVUFBVWlCLFdBQVcsQ0FBQ1IsS0FBSztJQUNqQyxNQUFNLEVBQUNTLGFBQWEsRUFBRSxFQUFFQyxhQUFhLEVBQUUsRUFBRUMsYUFBYSxFQUFDLEdBQUdwQixVQUFVcUIsTUFBTTtJQUUxRSxJQUFHRCxlQUFlO1FBQ2hCLGlDQUFpQztRQUNqQ3BCLFVBQVVzQixxQkFBcUI7SUFDakM7SUFFQSxNQUFNLEVBQUNELE1BQU0sRUFBQyxHQUFHckI7SUFDakIs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
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZSA9IGFzeW5jIChcbiAgdHlwZTogc3RyaW5nLFxuICBjbWQ6IENyZWF0ZU9wdGlvbnMsXG4gIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIG91dHB1dEZpbGUgPSAnJywgb3V0cHV0TmFtZSA9ICcnLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcbiAgbG9nKGAke2NsaU5hbWV9IGNyZWF0aW5nICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCwgZmFsc2UpO1xuICBjb25zdCB7b3V0cHV0UGF0aCA9ICcnLCBzb3VyY2VQYXRoID0gJycsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgY29uc3Qge2NvbmZpZ30gPSBMZXhDb25maWc7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdjaGFuZ2Vsb2cnOiB7XG4gICAgICBjb25zdCBzdGF0dXNDaGFuZ2Vsb2c6IG51bWJlciA9IGF3YWl0IGNyZWF0ZUNoYW5nZWxvZyh7Y2xpTmFtZSwgY29uZmlnLCBvdXRwdXRGaWxlLCBxdWlldH0pO1xuICAgICAgY2FsbGJhY2soc3RhdHVzQ2hhbmdlbG9nKTtcbiAgICAgIHJldHVybiBzdGF0dXNDaGFuZ2Vsb2c7XG4gICAgfVxuICAgIGNhc2UgJ3N0b3JlJzoge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0RmlsZW5hbWVzKHtcbiAgICAgICAgICBjbGlOYW1lLFxuICAgICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVFeHQsIHRlbXBsYXRlUGF0aH0gPSByZXN1bHQ7XG4gICAgICAgIGNvbnN0IHN0b3JlUGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfVN0b3JlYDtcblxuICAgICAgICBpZighZXhpc3RzU3luYyhzdG9yZVBhdGgpKSB7XG4gICAgICAgIC8vIENvcHkgc3RvcmUgZmlsZXNcbiAgICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsICcuLy5TYW1wbGVTdG9yZScpLCBjd2QpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIGRpcmVjdG9yeVxuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7Y3dkfS8uU2FtcGxlU3RvcmVgLCBzdG9yZVBhdGgpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHRlc3RcbiAgICAgICAgICBjb25zdCBzdG9yZVRlc3RQYXRoOiBzdHJpbmcgPSBgJHtzdG9yZVBhdGh9LyR7bmFtZUNhcHN9U3RvcmUudGVzdCR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUudGVzdCR7dGVtcGxhdGVFeHR9LnR4dGAsIHN0b3JlVGVzdFBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHN0b3JlIG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUoc3RvcmVUZXN0UGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHNvdXJjZSBmaWxlXG4gICAgICAgICAgY29uc3Qgc3RvcmVGaWxlUGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlJHt0ZW1wbGF0ZUV4dH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7c3RvcmVQYXRofS9TYW1wbGVTdG9yZSR7dGVtcGxhdGVFeHR9LnR4dGAsIHN0b3JlRmlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHN0b3JlIG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUoc3RvcmVGaWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke3N0b3JlUGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3RzY29uZmlnJzoge1xuICAgIC8vIFJlbW92ZSBleGlzdGluZyBmaWxlXG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygndHNjb25maWcuanNvbicsIHRydWUpO1xuXG4gICAgICAvLyBHZXQgdHNjb25maWcgdGVtcGxhdGVcbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL3RzY29uZmlnLnRlbXBsYXRlLmpzb24nKTtcbiAgICAgIGxldCBkYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoLCAndXRmOCcpO1xuXG4gICAgICAvLyBVcGRhdGUgTGV4IHRzY29uZmlnIHRlbXBsYXRlIHdpdGggc291cmNlIGFuZCBvdXRwdXQgZGlyZWN0b3JpZXNcbiAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoLy5cXC9zcmMvZywgc291cmNlUGF0aCk7XG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvbGliL2csIG91dHB1dFBhdGgpO1xuXG4gICAgICAvLyBTYXZlIG5ldyB0c2NvbmZpZyB0byBhcHBcbiAgICAgIGNvbnN0IGRlc3RQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoZGVzdFBhdGgsIGRhdGEsICd1dGY4Jyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndmlldyc6IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgIGNsaU5hbWUsXG4gICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgIHF1aWV0LFxuICAgICAgICB0eXBlLFxuICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICB9KTtcblxuICAgICAgaWYoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZVBhdGgsIHRlbXBsYXRlUmVhY3R9ID0gcmVzdWx0O1xuICAgICAgY29uc3Qgdmlld1BhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31WaWV3YDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYoIWV4aXN0c1N5bmModmlld1BhdGgpKSB7XG4gICAgICAgIC8vIENvcHkgdmlldyBmaWxlc1xuICAgICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgJy4vLlNhbXBsZVZpZXcnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVZpZXdgLCB2aWV3UGF0aCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgQ1NTXG4gICAgICAgICAgY29uc3Qgdmlld1N0eWxlUGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7b3V0cHV0TmFtZX1WaWV3LmNzc2A7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vc2FtcGxlVmlldy5jc3NgLCB2aWV3U3R5bGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld1N0eWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHRlc3RcbiAgICAgICAgICBjb25zdCB2aWV3VGVzdFBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke25hbWVDYXBzfVZpZXcudGVzdCR7dGVtcGxhdGVSZWFjdH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L1NhbXBsZVZpZXcudGVzdCR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld1Rlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld1Rlc3RQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgc291cmNlIGZpbGVcbiAgICAgICAgICBjb25zdCB2aWV3RmlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke25hbWVDYXBzfVZpZXcke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3JHt0ZW1wbGF0ZVJlYWN0fS50eHRgLCB2aWV3RmlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3RmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHt2aWV3UGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZzY29kZSc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygnLnZzY29kZScsIHRydWUpO1xuXG4gICAgICAvLyBDb3B5IHZzY29kZSBjb25maWd1cmF0aW9uXG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vLnZzY29kZScpLCBjd2QpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ2RhdGFsYXllcic6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBkYXRhTGF5ZXJQYXRoOiBzdHJpbmcgPSBgJHtjd2R9LyR7bmFtZUNhcHN9RGF0YUxheWVyYDtcblxuICAgICAgICBpZighZXhpc3RzU3luYyhkYXRhTGF5ZXJQYXRoKSkge1xuICAgICAgICAgIC8vIENyZWF0ZSBkYXRhIGxheWVyIGRpcmVjdG9yeVxuICAgICAgICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KCdmcycpO1xuICAgICAgICAgIGZzLm1rZGlyU3luYyhkYXRhTGF5ZXJQYXRoLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG5cbiAgICAgICAgICAvLyBDb3B5IGFuZCByZW5hbWUgbWFpbiBkYXRhIGxheWVyIGZpbGVcbiAgICAgICAgICBjb25zdCBzb3VyY2VGaWxlID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCBgLi9EYXRhTGF5ZXIke3RlbXBsYXRlRXh0fS50eHRgKTtcbiAgICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gYCR7ZGF0YUxheWVyUGF0aH0vJHtuYW1lQ2Fwc31EYXRhTGF5ZXIke3RlbXBsYXRlRXh0fWA7XG5cbiAgICAgICAgICBpZihleGlzdHNTeW5jKHNvdXJjZUZpbGUpKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKHNvdXJjZUZpbGUsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvRGF0YUxheWVyL2csIG5hbWVDYXBzKTtcbiAgICAgICAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0RmlsZSwgdXBkYXRlZENvbnRlbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvcHkgYW5kIHJlbmFtZSB0ZXN0IGZpbGVcbiAgICAgICAgICBjb25zdCBzb3VyY2VUZXN0RmlsZSA9IHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgYC4vRGF0YUxheWVyLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgKTtcbiAgICAgICAgICBjb25zdCB0YXJnZXRUZXN0RmlsZSA9IGAke2RhdGFMYXllclBhdGh9LyR7bmFtZUNhcHN9RGF0YUxheWVyLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG5cbiAgICAgICAgICBpZihleGlzdHNTeW5jKHNvdXJjZVRlc3RGaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgdGVzdENvbnRlbnQgPSByZWFkRmlsZVN5bmMoc291cmNlVGVzdEZpbGUsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdENvbnRlbnQgPSB0ZXN0Q29udGVudC5yZXBsYWNlKC9EYXRhTGF5ZXIvZywgbmFtZUNhcHMpO1xuICAgICAgICAgICAgd3JpdGVGaWxlU3luYyh0YXJnZXRUZXN0RmlsZSwgdXBkYXRlZFRlc3RDb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gU3VjY2VzczogQ3JlYXRlZCAke25hbWVDYXBzfURhdGFMYXllciB3aXRoIHRlc3QgZmlsZXMuYCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7ZGF0YUxheWVyUGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTsiXSwibmFtZXMiOlsiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsInJlbmFtZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiY3JlYXRlQ2hhbmdlbG9nIiwiTGV4Q29uZmlnIiwiY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMiLCJnZXRGaWxlbmFtZXMiLCJyZW1vdmVGaWxlcyIsInVwZGF0ZVRlbXBsYXRlTmFtZSIsImdldERpck5hbWUiLCJsb2ciLCJjcmVhdGUiLCJ0eXBlIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwib3V0cHV0RmlsZSIsIm91dHB1dE5hbWUiLCJxdWlldCIsImN3ZCIsInByb2Nlc3MiLCJwYXJzZUNvbmZpZyIsIm91dHB1dFBhdGgiLCJzb3VyY2VQYXRoIiwidXNlVHlwZXNjcmlwdCIsImNvbmZpZyIsImNoZWNrVHlwZXNjcmlwdENvbmZpZyIsImRpck5hbWUiLCJzdGF0dXNDaGFuZ2Vsb2ciLCJyZXN1bHQiLCJuYW1lIiwibmFtZUNhcHMiLCJ0ZW1wbGF0ZUV4dCIsInRlbXBsYXRlUGF0aCIsInN0b3JlUGF0aCIsInN0b3JlVGVzdFBhdGgiLCJzdG9yZUZpbGVQYXRoIiwiZXJyb3IiLCJtZXNzYWdlIiwiZGF0YSIsInJlcGxhY2UiLCJkZXN0UGF0aCIsInRlbXBsYXRlUmVhY3QiLCJ2aWV3UGF0aCIsInZpZXdTdHlsZVBhdGgiLCJ2aWV3VGVzdFBhdGgiLCJ2aWV3RmlsZVBhdGgiLCJkYXRhTGF5ZXJQYXRoIiwiZnMiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJzb3VyY2VGaWxlIiwidGFyZ2V0RmlsZSIsImNvbnRlbnQiLCJ1cGRhdGVkQ29udGVudCIsInNvdXJjZVRlc3RGaWxlIiwidGFyZ2V0VGVzdEZpbGUiLCJ0ZXN0Q29udGVudCIsInVwZGF0ZWRUZXN0Q29udGVudCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxFQUFFQyxZQUFZLEVBQUVDLFVBQVUsRUFBRUMsYUFBYSxRQUFPLEtBQUs7QUFDdkUsU0FBUUMsV0FBV0MsV0FBVyxRQUFPLE9BQU87QUFFNUMsU0FBUUMsZUFBZSxRQUFPLDRCQUE0QjtBQUMxRCxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLHVCQUF1QixFQUFFQyxZQUFZLEVBQUVDLFdBQVcsRUFBRUMsa0JBQWtCLFFBQU8scUJBQXFCO0FBQzFHLFNBQVFDLFVBQVUsUUFBTyxzQkFBc0I7QUFDL0MsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVd2QyxPQUFPLE1BQU1DLFNBQVMsT0FDcEJDLE1BQ0FDLEtBQ0FDLFdBQTJCLElBQU8sQ0FBQSxDQUFDLENBQUEsQ0FBRTtJQUVyQyxNQUFNLEVBQUNDLFVBQVUsS0FBSyxFQUFFQyxhQUFhLEVBQUUsRUFBRUMsYUFBYSxFQUFFLEVBQUVDLEtBQUssRUFBQyxHQUFHTDtJQUNuRSxNQUFNTSxNQUFjQyxRQUFRRCxHQUFHO0lBQy9CVCxJQUFJLEdBQUdLLFFBQVEsVUFBVSxFQUFFSCxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVFNO0lBRTlDLDJCQUEyQjtJQUMzQixNQUFNZCxVQUFVaUIsV0FBVyxDQUFDUixLQUFLO0lBQ2pDLE1BQU0sRUFBQ1MsYUFBYSxFQUFFLEVBQUVDLGFBQWEsRUFBRSxFQUFFQyxhQUFhLEVBQUMsR0FBR3BCLFVBQVVxQixNQUFNO0lBRTFFLElBQUdELGVBQWU7UUFDaEIsaUNBQWlDO1FBQ2pDcEIsVUFBVXNCLHFCQUFxQjtJQUNqQztJQUVBLE1BQU0sRUFBQ0QsTUFBTSxFQUFDLEdB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
|
package/lib/commands/dev/dev.js
CHANGED
|
@@ -199,9 +199,6 @@ export const dev = async (cmd, callback = ()=>({}))=>{
|
|
|
199
199
|
if (bundleAnalyzer) {
|
|
200
200
|
webpackOptions.push('--bundleAnalyzer');
|
|
201
201
|
}
|
|
202
|
-
if (port !== 3000) {
|
|
203
|
-
webpackOptions.push('--port', port.toString());
|
|
204
|
-
}
|
|
205
202
|
try {
|
|
206
203
|
let executablePath = webpackPath;
|
|
207
204
|
let finalWebpackOptions;
|
|
@@ -223,8 +220,10 @@ export const dev = async (cmd, callback = ()=>({}))=>{
|
|
|
223
220
|
const childProcess = execa(executablePath, finalWebpackOptions, {
|
|
224
221
|
encoding: 'utf8',
|
|
225
222
|
env: {
|
|
223
|
+
...process.env,
|
|
226
224
|
LEX_QUIET: quiet,
|
|
227
|
-
WEBPACK_DEV_OPEN: open
|
|
225
|
+
WEBPACK_DEV_OPEN: open,
|
|
226
|
+
WEBPACK_DEV_PORT: port.toString()
|
|
228
227
|
},
|
|
229
228
|
stdio: 'pipe'
|
|
230
229
|
});
|
|
@@ -243,7 +242,7 @@ export const dev = async (cmd, callback = ()=>({}))=>{
|
|
|
243
242
|
displayServerStatus(portToShow, quiet);
|
|
244
243
|
}
|
|
245
244
|
};
|
|
246
|
-
let detectedPort =
|
|
245
|
+
let detectedPort = port;
|
|
247
246
|
childProcess.stdout?.on('data', (data)=>{
|
|
248
247
|
const output = data.toString();
|
|
249
248
|
handleWebpackProgress(output, spinner, quiet, '🚀', 'Webpack Building');
|
|
@@ -291,4 +290,4 @@ export const dev = async (cmd, callback = ()=>({}))=>{
|
|
|
291
290
|
}
|
|
292
291
|
};
|
|
293
292
|
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBQdWJsaWNJcENhY2hlIHtcbiAgaXA6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmNvbnN0IGdldENhY2hlRGlyID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihob21lZGlyKCksICcubGV4LWNhY2hlJyk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlRGlyKSkge1xuICAgIG1rZGlyU3luYyhjYWNoZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9XG4gIHJldHVybiBjYWNoZURpcjtcbn07XG5cbmNvbnN0IGdldENhY2hlUGF0aCA9ICgpOiBzdHJpbmcgPT4gam9pbihnZXRDYWNoZURpcigpLCAncHVibGljLWlwLmpzb24nKTtcblxuY29uc3QgcmVhZFB1YmxpY0lwQ2FjaGUgPSAoKTogUHVibGljSXBDYWNoZSB8IG51bGwgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSByZWFkRmlsZVN5bmMoY2FjaGVQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0gSlNPTi5wYXJzZShjYWNoZURhdGEpO1xuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgaWYoRGF0ZS5ub3coKSAtIGNhY2hlLnRpbWVzdGFtcCA+IG9uZVdlZWtNcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCB3cml0ZVB1YmxpY0lwQ2FjaGUgPSAoaXA6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSB7XG4gICAgaXAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gIH07XG4gIHdyaXRlRmlsZVN5bmMoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShjYWNoZSwgbnVsbCwgMikpO1xufTtcblxuY29uc3QgZmV0Y2hQdWJsaWNJcCA9IChmb3JjZVJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSAzMDAwLCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCfwn5qAIERldmVsb3BtZW50IFNlcnZlciBSdW5uaW5nJyl9XFxuXFxuJHt1cmxMaW5lc31cXG5gICtcbiAgICBgJHtjaGFsay55ZWxsb3coJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSBzZXJ2ZXInKX1gLFxuICAgIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnLFxuICAgICAgYm9yZGVyQ29sb3I6ICdjeWFuJyxcbiAgICAgIGJvcmRlclN0eWxlOiAncm91bmQnLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgcGFkZGluZzogMVxuICAgIH1cbiAgKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgXFxuJHtzdGF0dXNCb3h9XFxuYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV2ID0gYXN5bmMgKGNtZDogRGV2T3B0aW9ucywgY2FsbGJhY2s6IERldkNhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW5kbGVBbmFseXplciwgY2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIGZvcm1hdCA9ICdlc20nLCBvcGVuID0gZmFsc2UsIHBvcnQgPSAzMDAwLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRW52aXJvbm1lbnQgdmFyaWFibGVzIG9wdGlvbiBpcyBub3QgYSB2YWxpZCBKU09OIG9iamVjdC5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBpZihyZW1vdmUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdDbGVhbmluZyBvdXRwdXQgZGlyZWN0b3J5Li4uJyk7XG5cbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCB8fCAnJyk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjbGVhbmVkIG91dHB1dCBkaXJlY3RvcnkhJyk7XG4gIH1cblxuICBpZih0cmFuc2xhdGlvbnMpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdQcm9jZXNzaW5nIHRyYW5zbGF0aW9ucy4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBMZXhDb25maWcuY29uZmlnLnNvdXJjZUZ1bGxQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICBjb25zdCBvdXRwdXRQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5vdXRwdXRGdWxsUGF0aCB8fCAnbGliJztcblxuICAgICAgYXdhaXQgcHJvY2Vzc1RyYW5zbGF0aW9ucyhzb3VyY2VQYXRoLCBvdXRwdXRQYXRoLCBxdWlldCk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1RyYW5zbGF0aW9ucyBwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIH0gY2F0Y2godHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnM6ICR7dHJhbnNsYXRpb25FcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBsZXQgd2VicGFja0NvbmZpZzogc3RyaW5nO1xuXG4gIGlmKGNvbmZpZykge1xuICAgIGNvbnN0IGlzUmVsYXRpdmVDb25maWc6IGJvb2xlYW4gPSBjb25maWcuc3Vic3RyKDAsIDIpID09PSAnLi8nO1xuICAgIHdlYnBhY2tDb25maWcgPSBpc1JlbGF0aXZlQ29uZmlnID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY29uZmlnKSA6IGNvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7d2VicGFja0NvbmZpZzogcmVzb2x2ZWRDb25maWd9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG4gICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICB9XG5cbiAgY29uc3Qge3dlYnBhY2tQYXRofSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuXG4gIGNvbnN0IHdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAnLS1jb2xvcicsXG4gICAgJy0td2F0Y2gnLFxuICAgICctLWNvbmZpZycsIHdlYnBhY2tDb25maWdcbiAgXTtcblxuICBpZihidW5kbGVBbmFseXplcikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tYnVuZGxlQW5hbHl6ZXInKTtcbiAgfVxuXG4gIGlmKHBvcnQgIT09IDMwMDApIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXBvcnQnLCBwb3J0LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsZXQgZXhlY3V0YWJsZVBhdGggPSB3ZWJwYWNrUGF0aDtcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG5cbiAgICBpZih3ZWJwYWNrUGF0aCA9PT0gJ25weCcpIHtcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSBbJ3dlYnBhY2snLCAuLi53ZWJwYWNrT3B0aW9uc107XG4gICAgfSBlbHNlIGlmKHdlYnBhY2tQYXRoLmVuZHNXaXRoKCcuanMnKSkge1xuICAgICAgZXhlY3V0YWJsZVBhdGggPSAnbm9kZSc7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gW3dlYnBhY2tQYXRoLCAuLi53ZWJwYWNrT3B0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSB3ZWJwYWNrT3B0aW9ucztcbiAgICB9XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKGV4ZWN1dGFibGVQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW5cbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgc3RhdHVzU2hvd24gPSBmYWxzZTtcbiAgICBjb25zdCBzaG93U3RhdHVzT25jZSA9IChwb3J0VG9TaG93OiBudW1iZXIpID0+IHtcbiAgICAgIGlmKHN0YXR1c1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXR1c1Nob3duID0gdHJ1ZTtcbiAgICAgIGlmKHVzZVB1YmxpY0lwKSB7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhwb3J0VG9TaG93LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGRldGVjdGVkUG9ydCA9IDMwMDA7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07Il0sIm5hbWVzIjpbImJveGVuIiwiY2hhbGsiLCJleGVjYSIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwiaHR0cHMiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImhvbWVkaXIiLCJkaXJuYW1lIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiam9pbiIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MiLCJyZW1vdmVGaWxlcyIsInJlc29sdmVXZWJwYWNrUGF0aHMiLCJsb2ciLCJwcm9jZXNzVHJhbnNsYXRpb25zIiwiY3VycmVudEZpbGVuYW1lIiwiY3VycmVudERpcm5hbWUiLCJldmFsIiwicHJvY2VzcyIsImN3ZCIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJ1bmRlZmluZWQiLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsInJlbW92ZSIsInRyYW5zbGF0aW9ucyIsInVzZVB1YmxpY0lwIiwidmFyaWFibGVzIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJ1c2VUeXBlc2NyaXB0IiwidmFyaWFibGVzT2JqIiwiTk9ERV9FTlYiLCJfZXJyb3IiLCJlbnYiLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJzdGFydCIsInN1Y2NlZWQiLCJzb3VyY2VQYXRoIiwic291cmNlRnVsbFBhdGgiLCJvdXRwdXRQYXRoIiwidHJhbnNsYXRpb25FcnJvciIsIm1lc3NhZ2UiLCJmYWlsIiwid2VicGFja0NvbmZpZyIsImlzUmVsYXRpdmVDb25maWciLCJzdWJzdHIiLCJyZXNvbHZlZENvbmZpZyIsIndlYnBhY2tQYXRoIiwid2VicGFja09wdGlvbnMiLCJwdXNoIiwidG9TdHJpbmciLCJleGVjdXRhYmxlUGF0aCIsImZpbmFsV2VicGFja09wdGlvbnMiLCJlbmRzV2l0aCIsImNoaWxkUHJvY2VzcyIsImVuY29kaW5nIiwiTEVYX1FVSUVUIiwiV0VCUEFDS19ERVZfT1BFTiIsInN0ZGlvIiwic2VydmVyU3RhcnRlZCIsInN0YXR1c1Nob3duIiwic2hvd1N0YXR1c09uY2UiLCJwb3J0VG9TaG93IiwidGhlbiIsImRldGVjdGVkUG9ydCIsInN0ZG91dCIsIm91dHB1dCIsImluY2x1ZGVzIiwicG9ydE1hdGNoIiwibWF0Y2giLCJwYXJzZUludCIsInN0ZGVyciIsInNldFRpbWVvdXQiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxLQUFLLFFBQU8sUUFBUTtBQUM1QixTQUFRQyxVQUFVLEVBQUVDLFlBQVksRUFBRUMsYUFBYSxFQUFFQyxTQUFTLFFBQU8sS0FBSztBQUN0RSxPQUFPQyxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsaUJBQWlCLEVBQUVDLE9BQU8sUUFBTyxLQUFLO0FBQzlDLFNBQVFDLE9BQU8sRUFBRUMsV0FBV0MsV0FBVyxFQUFFQyxJQUFJLFFBQU8sT0FBTztBQUUzRCxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLGFBQWEsRUFBRUMscUJBQXFCLEVBQUVDLFdBQVcsUUFBTyxxQkFBcUI7QUFDckYsU0FBUUMsbUJBQW1CLFFBQU8sc0JBQXNCO0FBQ3hELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFDdkMsU0FBUUMsbUJBQW1CLFFBQU8sOEJBQThCO0FBRWhFLElBQUlDO0FBQ0osSUFBSUM7QUFFSixJQUFJO0lBQ0YsbUNBQW1DO0lBQ25DRCxrQkFBa0JFLEtBQUs7SUFDdkJELGlCQUFpQlosUUFBUVc7QUFDM0IsRUFBRSxPQUFLO0lBQ0xBLGtCQUFrQkcs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
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuaW50ZXJmYWNlIFB1YmxpY0lwQ2FjaGUge1xuICBpcDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuY29uc3QgZ2V0Q2FjaGVEaXIgPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2FjaGVEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5sZXgtY2FjaGUnKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVEaXIpKSB7XG4gICAgbWtkaXJTeW5jKGNhY2hlRGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIH1cbiAgcmV0dXJuIGNhY2hlRGlyO1xufTtcblxuY29uc3QgZ2V0Q2FjaGVQYXRoID0gKCk6IHN0cmluZyA9PiBqb2luKGdldENhY2hlRGlyKCksICdwdWJsaWMtaXAuanNvbicpO1xuXG5jb25zdCByZWFkUHVibGljSXBDYWNoZSA9ICgpOiBQdWJsaWNJcENhY2hlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBpZighZXhpc3RzU3luYyhjYWNoZVBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHJlYWRGaWxlU3luYyhjYWNoZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSBKU09OLnBhcnNlKGNhY2hlRGF0YSk7XG4gICAgY29uc3Qgb25lV2Vla01zID0gNyAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgICBpZihEYXRlLm5vdygpIC0gY2FjaGUudGltZXN0YW1wID4gb25lV2Vla01zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGU7XG4gIH0gY2F0Y2h7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IHdyaXRlUHVibGljSXBDYWNoZSA9IChpcDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IHtcbiAgICBpcCxcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgfTtcbiAgd3JpdGVGaWxlU3luYyhjYWNoZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNhY2hlLCBudWxsLCAyKSk7XG59O1xuXG5jb25zdCBmZXRjaFB1YmxpY0lwID0gKGZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gIGlmKCFmb3JjZVJlZnJlc2gpIHtcbiAgICBjb25zdCBjYWNoZWQgPSByZWFkUHVibGljSXBDYWNoZSgpO1xuICAgIGlmKGNhY2hlZCkge1xuICAgICAgcmVzb2x2ZShjYWNoZWQuaXApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGh0dHBzLmdldCgnaHR0cHM6Ly9hcGkuaXBpZnkub3JnJywgKHJlcykgPT4ge1xuICAgIGxldCBkYXRhID0gJyc7XG4gICAgcmVzLm9uKCdkYXRhJywgKGNodW5rKSA9PiAoZGF0YSArPSBjaHVuaykpO1xuICAgIHJlcy5vbignZW5kJywgKCkgPT4ge1xuICAgICAgY29uc3QgaXAgPSBkYXRhLnRyaW0oKTtcbiAgICAgIGlmKGlwKSB7XG4gICAgICAgIHdyaXRlUHVibGljSXBDYWNoZShpcCk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKGlwKTtcbiAgICB9KTtcbiAgfSkub24oJ2Vycm9yJywgKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpKTtcbn0pO1xuXG5jb25zdCBnZXROZXR3b3JrQWRkcmVzc2VzID0gKCkgPT4ge1xuICBjb25zdCBpbnRlcmZhY2VzID0gbmV0d29ya0ludGVyZmFjZXMoKTtcbiAgY29uc3QgYWRkcmVzc2VzID0ge1xuICAgIGxvY2FsOiAnbG9jYWxob3N0JyxcbiAgICBwcml2YXRlOiBudWxsLFxuICAgIHB1YmxpYzogbnVsbFxuICB9O1xuXG4gIGZvcihjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGludGVyZmFjZXMpKSB7XG4gICAgY29uc3QgbmV0d29ya0ludGVyZmFjZSA9IGludGVyZmFjZXNbbmFtZV07XG4gICAgaWYoIW5ldHdvcmtJbnRlcmZhY2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvcihjb25zdCBpZmFjZSBvZiBuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBpZihpZmFjZS5mYW1pbHkgPT09ICdJUHY0JyAmJiAhaWZhY2UuaW50ZXJuYWwpIHtcbiAgICAgICAgY29uc3QgaXAgPSBpZmFjZS5hZGRyZXNzO1xuXG4gICAgICAgIGlmKGlwLnN0YXJ0c1dpdGgoJzEwLicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE5Mi4xNjguJykgfHwgaXAuc3RhcnRzV2l0aCgnMTcyLicpKSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wcml2YXRlKSB7XG4gICAgICAgICAgICBhZGRyZXNzZXMucHJpdmF0ZSA9IGlwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZighYWRkcmVzc2VzLnB1YmxpYykge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnB1YmxpYyA9IGlwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZGRyZXNzZXM7XG59O1xuXG5jb25zdCBkaXNwbGF5U2VydmVyU3RhdHVzID0gKHBvcnQ6IG51bWJlciA9IDMwMDAsIHF1aWV0OiBib29sZWFuLCBwdWJsaWNJcD86IHN0cmluZykgPT4ge1xuICBpZihxdWlldCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkZHJlc3NlcyA9IGdldE5ldHdvcmtBZGRyZXNzZXMoKTtcbiAgY29uc3QgbG9jYWxVcmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9YDtcbiAgY29uc3QgcHJpdmF0ZVVybCA9IGFkZHJlc3Nlcy5wcml2YXRlID8gYGh0dHA6Ly8ke2FkZHJlc3Nlcy5wcml2YXRlfToke3BvcnR9YCA6IG51bGw7XG4gIGxldCBwdWJsaWNVcmwgPSBudWxsO1xuICBpZihwdWJsaWNJcCkge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHtwdWJsaWNJcH06JHtwb3J0fWA7XG4gIH0gZWxzZSBpZihhZGRyZXNzZXMucHVibGljKSB7XG4gICAgcHVibGljVXJsID0gYGh0dHA6Ly8ke2FkZHJlc3Nlcy5wdWJsaWN9OiR7cG9ydH1gO1xuICB9XG5cbiAgbGV0IHVybExpbmVzID0gYCR7Y2hhbGsuZ3JlZW4oJ0xvY2FsOicpfSAgICAgJHtjaGFsay51bmRlcmxpbmUobG9jYWxVcmwpfVxcbmA7XG5cbiAgaWYocHJpdmF0ZVVybCkge1xuICAgIHVybExpbmVzICs9IGAke2NoYWxrLmdyZWVuKCdQcml2YXRlOicpfSAgICR7Y2hhbGsudW5kZXJsaW5lKHByaXZhdGVVcmwpfVxcbmA7XG4gIH1cblxuICBpZihwdWJsaWNVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHVibGljOicpfSAgICAke2NoYWxrLnVuZGVybGluZShwdWJsaWNVcmwpfVxcbmA7XG4gIH1cblxuICBjb25zdCBzdGF0dXNCb3ggPSBib3hlbihcbiAgICBgJHtjaGFsay5jeWFuLmJvbGQoJ/CfmoAgRGV2ZWxvcG1lbnQgU2VydmVyIFJ1bm5pbmcnKX1cXG5cXG4ke3VybExpbmVzfVxcbmAgK1xuICAgIGAke2NoYWxrLnllbGxvdygnUHJlc3MgQ3RybCtDIHRvIHN0b3AgdGhlIHNlcnZlcicpfWAsXG4gICAge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzFhMWExYScsXG4gICAgICBib3JkZXJDb2xvcjogJ2N5YW4nLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBtYXJnaW46IDEsXG4gICAgICBwYWRkaW5nOiAxXG4gICAgfVxuICApO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKGBcXG4ke3N0YXR1c0JveH1cXG5gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXYgPSBhc3luYyAoY21kOiBEZXZPcHRpb25zLCBjYWxsYmFjazogRGV2Q2FsbGJhY2sgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bmRsZUFuYWx5emVyLCBjbGlOYW1lID0gJ0xleCcsIGNvbmZpZywgZm9ybWF0ID0gJ2VzbScsIG9wZW4gPSBmYWxzZSwgcG9ydCA9IDMwMDAsIHF1aWV0LCByZW1vdmUsIHRyYW5zbGF0aW9ucyA9IGZhbHNlLCB1c2VQdWJsaWNJcCwgdmFyaWFibGVzfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IHN0YXJ0IGRldmVsb3BtZW50IHNlcnZlci4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgdXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gIGxldCB2YXJpYWJsZXNPYmo6IG9iamVjdCA9IHtOT0RFX0VOVjogJ2RldmVsb3BtZW50J307XG5cbiAgaWYodmFyaWFibGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlc09iaiA9IEpTT04ucGFyc2UodmFyaWFibGVzKTtcbiAgICB9IGNhdGNoKF9lcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgb3B0aW9uIGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0LmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgcHJvY2Vzcy5lbnYgPSB7Li4ucHJvY2Vzcy5lbnYsIC4uLnZhcmlhYmxlc09ian07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGlmKHJlbW92ZSkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0NsZWFuaW5nIG91dHB1dCBkaXJlY3RvcnkuLi4nKTtcblxuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dEZ1bGxQYXRoIHx8ICcnKTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGNsZWFuZWQgb3V0cHV0IGRpcmVjdG9yeSEnKTtcbiAgfVxuXG4gIGlmKHRyYW5zbGF0aW9ucykge1xuICAgIHNwaW5uZXIuc3RhcnQoJ1Byb2Nlc3NpbmcgdHJhbnNsYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IExleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInO1xuXG4gICAgICBhd2FpdCBwcm9jZXNzVHJhbnNsYXRpb25zKHNvdXJjZVBhdGgsIG91dHB1dFBhdGgsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnVHJhbnNsYXRpb25zIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGxldCB3ZWJwYWNrQ29uZmlnOiBzdHJpbmc7XG5cbiAgaWYoY29uZmlnKSB7XG4gICAgY29uc3QgaXNSZWxhdGl2ZUNvbmZpZzogYm9vbGVhbiA9IGNvbmZpZy5zdWJzdHIoMCwgMikgPT09ICcuLyc7XG4gICAgd2VicGFja0NvbmZpZyA9IGlzUmVsYXRpdmVDb25maWcgPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjb25maWcpIDogY29uZmlnO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHt3ZWJwYWNrQ29uZmlnOiByZXNvbHZlZENvbmZpZ30gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcbiAgICB3ZWJwYWNrQ29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gIH1cblxuICBjb25zdCB7d2VicGFja1BhdGh9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG5cbiAgY29uc3Qgd2VicGFja09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICctLWNvbG9yJyxcbiAgICAnLS13YXRjaCcsXG4gICAgJy0tY29uZmlnJywgd2VicGFja0NvbmZpZ1xuICBdO1xuXG4gIGlmKGJ1bmRsZUFuYWx5emVyKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1idW5kbGVBbmFseXplcicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsZXQgZXhlY3V0YWJsZVBhdGggPSB3ZWJwYWNrUGF0aDtcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG5cbiAgICBpZih3ZWJwYWNrUGF0aCA9PT0gJ25weCcpIHtcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSBbJ3dlYnBhY2snLCAuLi53ZWJwYWNrT3B0aW9uc107XG4gICAgfSBlbHNlIGlmKHdlYnBhY2tQYXRoLmVuZHNXaXRoKCcuanMnKSkge1xuICAgICAgZXhlY3V0YWJsZVBhdGggPSAnbm9kZSc7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gW3dlYnBhY2tQYXRoLCAuLi53ZWJwYWNrT3B0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSB3ZWJwYWNrT3B0aW9ucztcbiAgICB9XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKGV4ZWN1dGFibGVQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBMRVhfUVVJRVQ6IHF1aWV0LFxuICAgICAgICBXRUJQQUNLX0RFVl9PUEVOOiBvcGVuLFxuICAgICAgICBXRUJQQUNLX0RFVl9QT1JUOiBwb3J0LnRvU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgc3RhdHVzU2hvd24gPSBmYWxzZTtcbiAgICBjb25zdCBzaG93U3RhdHVzT25jZSA9IChwb3J0VG9TaG93OiBudW1iZXIpID0+IHtcbiAgICAgIGlmKHN0YXR1c1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXR1c1Nob3duID0gdHJ1ZTtcbiAgICAgIGlmKHVzZVB1YmxpY0lwKSB7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhwb3J0VG9TaG93LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGRldGVjdGVkUG9ydCA9IHBvcnQ7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07Il0sIm5hbWVzIjpbImJveGVuIiwiY2hhbGsiLCJleGVjYSIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwiaHR0cHMiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImhvbWVkaXIiLCJkaXJuYW1lIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiam9pbiIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MiLCJyZW1vdmVGaWxlcyIsInJlc29sdmVXZWJwYWNrUGF0aHMiLCJsb2ciLCJwcm9jZXNzVHJhbnNsYXRpb25zIiwiY3VycmVudEZpbGVuYW1lIiwiY3VycmVudERpcm5hbWUiLCJldmFsIiwicHJvY2VzcyIsImN3ZCIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJ1bmRlZmluZWQiLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsInJlbW92ZSIsInRyYW5zbGF0aW9ucyIsInVzZVB1YmxpY0lwIiwidmFyaWFibGVzIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJ1c2VUeXBlc2NyaXB0IiwidmFyaWFibGVzT2JqIiwiTk9ERV9FTlYiLCJfZXJyb3IiLCJlbnYiLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJzdGFydCIsInN1Y2NlZWQiLCJzb3VyY2VQYXRoIiwic291cmNlRnVsbFBhdGgiLCJvdXRwdXRQYXRoIiwidHJhbnNsYXRpb25FcnJvciIsIm1lc3NhZ2UiLCJmYWlsIiwid2VicGFja0NvbmZpZyIsImlzUmVsYXRpdmVDb25maWciLCJzdWJzdHIiLCJyZXNvbHZlZENvbmZpZyIsIndlYnBhY2tQYXRoIiwid2VicGFja09wdGlvbnMiLCJwdXNoIiwiZXhlY3V0YWJsZVBhdGgiLCJmaW5hbFdlYnBhY2tPcHRpb25zIiwiZW5kc1dpdGgiLCJjaGlsZFByb2Nlc3MiLCJlbmNvZGluZyIsIkxFWF9RVUlFVCIsIldFQlBBQ0tfREVWX09QRU4iLCJXRUJQQUNLX0RFVl9QT1JUIiwidG9TdHJpbmciLCJzdGRpbyIsInNlcnZlclN0YXJ0ZWQiLCJzdGF0dXNTaG93biIsInNob3dTdGF0dXNPbmNlIiwicG9ydFRvU2hvdyIsInRoZW4iLCJkZXRlY3RlZFBvcnQiLCJzdGRvdXQiLCJvdXRwdXQiLCJpbmNsdWRlcyIsInBvcnRNYXRjaCIsIm1hdGNoIiwicGFyc2VJbnQiLCJzdGRlcnIiLCJzZXRUaW1lb3V0IiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELE9BQU9BLFdBQVcsUUFBUTtBQUMxQixPQUFPQyxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsS0FBSyxRQUFPLFFBQVE7QUFDNUIsU0FBUUMsVUFBVSxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsU0FBUyxRQUFPLEtBQUs7QUFDdEUsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLGlCQUFpQixFQUFFQyxPQUFPLFFBQU8sS0FBSztBQUM5QyxTQUFRQyxPQUFPLEVBQUVDLFdBQVdDLFdBQVcsRUFBRUMsSUFBSSxRQUFPLE9BQU87QUFFM0QsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLEVBQUVDLHFCQUFxQixFQUFFQyxXQUFXLFFBQU8scUJBQXFCO0FBQ3JGLFNBQVFDLG1CQUFtQixRQUFPLHNCQUFzQjtBQUN4RCxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBQ3ZDLFNBQVFDLG1CQUFtQixRQUFPLDhCQUE4QjtBQUVoRSxJQUFJQztBQUNKLElBQUlDO0FBRUosSUFBSTtJQUNGLG1DQUFtQztJQUNuQ0Qsa0JBQWtCRSxLQUFLO0lBQ3ZCRCxpQkFBaUJaLFFBQVFXO0FBQzNCLEVBQUUsT0FBSztJQUNMQSxrQkFB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
|