@brainfish-ai/devdoc 0.1.31 → 0.1.33
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/ai-agents/.claude/skills/bootstrap-docs/SKILL.md +221 -64
- package/ai-agents/.claude/skills/check-docs/SKILL.md +21 -2
- package/ai-agents/.claude/skills/create-doc-page/SKILL.md +242 -25
- package/ai-agents/.claude/skills/docs-from-code/SKILL.md +9 -1
- package/ai-agents/.claude/skills/sync-docs/SKILL.md +36 -2
- package/ai-agents/.cursor/rules/devdoc-bootstrap.mdc +90 -36
- package/ai-agents/.cursor/rules/devdoc-sync.mdc +46 -11
- package/ai-agents/CLAUDE.md +9 -0
- package/dist/cli/commands/ai.d.ts +1 -0
- package/dist/cli/commands/ai.js +100 -35
- package/dist/cli/commands/domain.js +31 -10
- package/dist/cli/index.js +3 -2
- package/package.json +1 -1
- package/renderer/components/docs-viewer/sidebar/index.tsx +118 -87
|
@@ -77,13 +77,22 @@ async function domainAdd(customDomain, options) {
|
|
|
77
77
|
// Load config
|
|
78
78
|
const config = loadDevDocConfig(projectRoot);
|
|
79
79
|
if (!config) {
|
|
80
|
-
logger_1.logger.error('
|
|
80
|
+
logger_1.logger.error('Project not initialized.');
|
|
81
|
+
console.log('');
|
|
82
|
+
logger_1.logger.info('Run "devdoc init" to initialize, then "devdoc deploy" to deploy.');
|
|
81
83
|
process.exit(1);
|
|
82
84
|
}
|
|
83
|
-
// Get API key
|
|
85
|
+
// Get API key - required because custom domains need a deployed project
|
|
84
86
|
const apiKey = getApiKey(options, config);
|
|
85
87
|
if (!apiKey) {
|
|
86
|
-
logger_1.logger.error('
|
|
88
|
+
logger_1.logger.error('Project not deployed yet.');
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log(' Custom domains require a deployed project.');
|
|
91
|
+
console.log('');
|
|
92
|
+
console.log(' To set up a custom domain:');
|
|
93
|
+
console.log(' 1. Deploy your project first: devdoc deploy');
|
|
94
|
+
console.log(' 2. Then add your domain: devdoc domain add ' + customDomain);
|
|
95
|
+
console.log('');
|
|
87
96
|
process.exit(1);
|
|
88
97
|
}
|
|
89
98
|
// Normalize and validate domain
|
|
@@ -143,13 +152,17 @@ async function domainStatus(options) {
|
|
|
143
152
|
// Load config
|
|
144
153
|
const config = loadDevDocConfig(projectRoot);
|
|
145
154
|
if (!config) {
|
|
146
|
-
logger_1.logger.error('
|
|
155
|
+
logger_1.logger.error('Project not initialized.');
|
|
156
|
+
console.log('');
|
|
157
|
+
logger_1.logger.info('Run "devdoc init" to initialize, then "devdoc deploy" to deploy.');
|
|
147
158
|
process.exit(1);
|
|
148
159
|
}
|
|
149
160
|
// Get API key
|
|
150
161
|
const apiKey = getApiKey(options, config);
|
|
151
162
|
if (!apiKey) {
|
|
152
|
-
logger_1.logger.error('
|
|
163
|
+
logger_1.logger.error('Project not deployed yet.');
|
|
164
|
+
console.log('');
|
|
165
|
+
logger_1.logger.info('Deploy your project first with "devdoc deploy"');
|
|
153
166
|
process.exit(1);
|
|
154
167
|
}
|
|
155
168
|
try {
|
|
@@ -250,13 +263,17 @@ async function domainVerify(options) {
|
|
|
250
263
|
// Load config
|
|
251
264
|
const config = loadDevDocConfig(projectRoot);
|
|
252
265
|
if (!config) {
|
|
253
|
-
logger_1.logger.error('
|
|
266
|
+
logger_1.logger.error('Project not initialized.');
|
|
267
|
+
console.log('');
|
|
268
|
+
logger_1.logger.info('Run "devdoc init" to initialize, then "devdoc deploy" to deploy.');
|
|
254
269
|
process.exit(1);
|
|
255
270
|
}
|
|
256
271
|
// Get API key
|
|
257
272
|
const apiKey = getApiKey(options, config);
|
|
258
273
|
if (!apiKey) {
|
|
259
|
-
logger_1.logger.error('
|
|
274
|
+
logger_1.logger.error('Project not deployed yet.');
|
|
275
|
+
console.log('');
|
|
276
|
+
logger_1.logger.info('Deploy your project first with "devdoc deploy"');
|
|
260
277
|
process.exit(1);
|
|
261
278
|
}
|
|
262
279
|
try {
|
|
@@ -342,13 +359,17 @@ async function domainRemove(customDomain, options) {
|
|
|
342
359
|
// Load config
|
|
343
360
|
const config = loadDevDocConfig(projectRoot);
|
|
344
361
|
if (!config) {
|
|
345
|
-
logger_1.logger.error('
|
|
362
|
+
logger_1.logger.error('Project not initialized.');
|
|
363
|
+
console.log('');
|
|
364
|
+
logger_1.logger.info('Run "devdoc init" to initialize, then "devdoc deploy" to deploy.');
|
|
346
365
|
process.exit(1);
|
|
347
366
|
}
|
|
348
367
|
// Get API key
|
|
349
368
|
const apiKey = getApiKey(options, config);
|
|
350
369
|
if (!apiKey) {
|
|
351
|
-
logger_1.logger.error('
|
|
370
|
+
logger_1.logger.error('Project not deployed yet.');
|
|
371
|
+
console.log('');
|
|
372
|
+
logger_1.logger.info('Deploy your project first with "devdoc deploy"');
|
|
352
373
|
process.exit(1);
|
|
353
374
|
}
|
|
354
375
|
try {
|
|
@@ -383,4 +404,4 @@ async function domainRemove(customDomain, options) {
|
|
|
383
404
|
process.exit(1);
|
|
384
405
|
}
|
|
385
406
|
}
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9kb21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3SUEsOEJBcUVDO0FBU0Qsb0NBeUZDO0FBNkJELG9DQTRGQztBQVNELG9DQXVEQztBQXhlRCxnREFBdUI7QUFDdkIsd0RBQXlCO0FBQ3pCLCtDQUEyQztBQUMzQywrQ0FBaUQ7QUFrRWpEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxXQUFtQjtJQUMzQyxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUN6RCxJQUFJLENBQUMsa0JBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLGtCQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBaUIsQ0FBQTtJQUNwRCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsT0FBc0IsRUFBRSxNQUEyQjtJQUNwRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUE7QUFDL0UsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxNQUFjO0lBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ3RELENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxF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NUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsZUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLHlCQUF5QixDQUFDLENBQUE7WUFDdkQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqQixDQUFDO1FBRUQsZUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLE1BQU0sQ0FBQyxNQUFNLFVBQVUsQ0FBQyxDQUFBO1FBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUE7UUFDdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLGVBQU0sQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQTtRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7UUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVqQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0RSxlQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJ1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJ1xuaW1wb3J0IHsgREVGQVVMVF9BUElfVVJMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuXG5pbnRlcmZhY2UgRG9tYWluT3B0aW9ucyB7XG4gIHVybD86IHN0cmluZ1xuICBhcGlLZXk/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERldkRvY0NvbmZpZyB7XG4gIHByb2plY3RJZD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHNsdWc/OiBzdHJpbmdcbiAgc3ViZG9tYWluPzogc3RyaW5nXG4gIGFwaUtleT86IHN0cmluZ1xuICB1cmw/OiBzdHJpbmdcbiAgbGFzdERlcGxveWVkPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgRG9tYWluQWRkUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuXG4gIGRvbWFpbjogc3RyaW5nXG4gIHByb2plY3RTbHVnOiBzdHJpbmdcbiAgc3RhdHVzOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uOiB7XG4gICAgY25hbWU6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1cbiAgICB0eHQ6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1cbiAgfVxuICBpbnN0cnVjdGlvbnM6IHN0cmluZ1tdXG4gIGVycm9yPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBEb21haW5TdGF0dXNSZXNwb25zZSB7XG4gIGhhc0N1c3RvbURvbWFpbjogYm9vbGVhblxuICBkb21haW4/OiBzdHJpbmdcbiAgc3RhdHVzPzogc3RyaW5nXG4gIHByb2plY3RTbHVnOiBzdHJpbmdcbiAgcHJvamVjdFVybDogc3RyaW5nXG4gIGN1c3RvbVVybD86IHN0cmluZ1xuICBtZXNzYWdlPzogc3RyaW5nXG4gIGRuc1JlY29yZHM/OiB7XG4gICAgY25hbWU6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1cbiAgICB0eHQ6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1cbiAgfVxuICBuZXh0U3RlcD86IHN0cmluZ1xuICBlcnJvcj86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgRG9tYWluVmVyaWZ5UmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuXG4gIGRvbWFpbjogc3RyaW5nXG4gIHN0YXR1czogc3RyaW5nXG4gIG1lc3NhZ2U6IHN0cmluZ1xuICBjaGVja3M6IHtcbiAgICBjbmFtZTogeyBmb3VuZDogYm9vbGVhbjsgdmFsdWU6IHN0cmluZyB8IG51bGw7IHZhbGlkOiBib29sZWFuOyBleHBlY3RlZDogc3RyaW5nIH1cbiAgICB0eHQ6IHsgZm91bmQ6IGJvb2xlYW47IHZlcmlmaWVkOiBib29sZWFuOyBleHBlY3RlZDogc3RyaW5nIH1cbiAgfVxuICBlcnJvcj86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgRG9tYWluUmVtb3ZlUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuXG4gIG1lc3NhZ2U6IHN0cmluZ1xuICBkb21haW46IHN0cmluZ1xuICBlcnJvcj86IHN0cmluZ1xufVxuXG4vKipcbiAqIExvYWQgLmRldmRvYy5qc29uIGFuZCBnZXQgQVBJIGtleVxuICovXG5mdW5jdGlvbiBsb2FkRGV2RG9jQ29uZmlnKHByb2plY3RSb290OiBzdHJpbmcpOiBEZXZEb2NDb25maWcgfCBudWxsIHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IHBhdGguam9pbihwcm9qZWN0Um9vdCwgJy5kZXZkb2MuanNvbicpXG4gIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gZnMucmVhZEpzb25TeW5jKGNvbmZpZ1BhdGgpIGFzIERldkRvY0NvbmZpZ1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbi8qKlxuICogR2V0IEFQSSBrZXkgZnJvbSBvcHRpb25zLCBlbnYsIG9yIGNvbmZpZ1xuICovXG5mdW5jdGlvbiBnZXRBcGlLZXkob3B0aW9uczogRG9tYWluT3B0aW9ucywgY29uZmlnOiBEZXZEb2NDb25maWcgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gIHJldHVybiBvcHRpb25zLmFwaUtleSB8fCBwcm9jZXNzLmVudi5ERVZET0NfQVBJX0tFWSB8fCBjb25maWc/LmFwaUtleSB8fCBudWxsXG59XG5cbi8qKlxuICogVmFsaWRhdGUgZG9tYWluIGZvcm1hdFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkRG9tYWluRm9ybWF0KGRvbWFpbjogc3RyaW5nKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmcgfSB7XG4gIGlmICghZG9tYWluKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ0RvbWFpbiBpcyByZXF1aXJlZCcgfVxuICB9XG4gIFxuICBpZiAoZG9tYWluLmxlbmd0aCA8IDQpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnRG9tYWluIG11c3QgYmUgYXQgbGVhc3QgNCBjaGFyYWN0ZXJzJyB9XG4gIH1cbiAgXG4gIC8vIEJhc2ljIGRvbWFpbiBmb3JtYXQgY2hlY2tcbiAgY29uc3QgZG9tYWluUmVnZXggPSAvXig/IS0pW2EtekEtWjAtOS1dKyg/OlxcLlthLXpBLVowLTktXSspKlxcLlthLXpBLVpdezIsfSQvXG4gIGlmICghZG9tYWluUmVnZXgudGVzdChkb21haW4pKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ0ludmFsaWQgZG9tYWluIGZvcm1hdC4gRXhhbXBsZTogZG9jcy5leGFtcGxlLmNvbScgfVxuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgcmVzZXJ2ZWQgZG9tYWluc1xuICBjb25zdCByZXNlcnZlZCA9IFsnZGV2ZG9jLnNoJywgJ2RldmRvYy5pbycsICdkZXZkb2MuY29tJ11cbiAgaWYgKHJlc2VydmVkLnNvbWUociA9PiBkb21haW4gPT09IHIgfHwgZG9tYWluLmVuZHNXaXRoKGAuJHtyfWApKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdDYW5ub3QgdXNlIGEgcmVzZXJ2ZWQgRGV2RG9jIGRvbWFpbicgfVxuICB9XG4gIFxuICByZXR1cm4geyB2YWxpZDogdHJ1ZSB9XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGRvbWFpbiAobG93ZXJjYXNlLCByZW1vdmUgcHJvdG9jb2wvcGF0aClcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRG9tYWluKGRvbWFpbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IG5vcm1hbGl6ZWQgPSBkb21haW4udG9Mb3dlckNhc2UoKS50cmltKClcbiAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vLCAnJylcbiAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3BsaXQoJy8nKVswXVxuICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zcGxpdCgnOicpWzBdXG4gIHJldHVybiBub3JtYWxpemVkXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEb21haW4gQWRkIENvbW1hbmRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQWRkIGEgY3VzdG9tIGRvbWFpbiB0byB0aGUgcHJvamVjdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9tYWluQWRkKGN1c3RvbURvbWFpbjogc3RyaW5nLCBvcHRpb25zOiBEb21haW5PcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb2plY3RSb290ID0gcHJvY2Vzcy5jd2QoKVxuICBjb25zdCBhcGlVcmwgPSBvcHRpb25zLnVybCB8fCBwcm9jZXNzLmVudi5ERVZET0NfQVBJX1VSTCB8fCBERUZBVUxUX0FQSV9VUkxcbiAgXG4gIGxvZ2dlci5pbmZvKCdBZGRpbmcgY3VzdG9tIGRvbWFpbi4uLlxcbicpXG4gIFxuICAvLyBMb2FkIGNvbmZpZ1xuICBjb25zdCBjb25maWcgPSBsb2FkRGV2RG9jQ29uZmlnKHByb2plY3RSb290KVxuICBpZiAoIWNvbmZpZykge1xuICAgIGxvZ2dlci5lcnJvcignLmRldmRvYy5qc29uIG5vdCBmb3VuZC4gRGVwbG95IHlvdXIgcHJvamVjdCBmaXJzdCB3aXRoIFwiZGV2ZG9jIGRlcGxveVwiJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgLy8gR2V0IEFQSSBrZXlcbiAgY29uc3QgYXBpS2V5ID0gZ2V0QXBpS2V5KG9wdGlvbnMsIGNvbmZpZylcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0FQSSBrZXkgbm90IGZvdW5kLiBEZXBsb3kgeW91ciBwcm9qZWN0IGZpcnN0IG9yIHByb3ZpZGUgdmlhIC0tYXBpLWtleScpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgXG4gIC8vIE5vcm1hbGl6ZSBhbmQgdmFsaWRhdGUgZG9tYWluXG4gIGNvbnN0IGRvbWFpbiA9IG5vcm1hbGl6ZURvbWFpbihjdXN0b21Eb21haW4pXG4gIGNvbnN0IHZhbGlkYXRpb24gPSBpc1ZhbGlkRG9tYWluRm9ybWF0KGRvbWFpbilcbiAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgbG9nZ2VyLmVycm9yKHZhbGlkYXRpb24uZXJyb3IhKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICBsb2dnZXIuaW5mbyhgRG9tYWluOiAke2RvbWFpbn1gKVxuICBjb25zb2xlLmxvZygnJylcbiAgXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHthcGlVcmx9L2FwaS9kb21haW5zL2FkZGAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGN1c3RvbURvbWFpbjogZG9tYWluIH0pLFxuICAgIH0pXG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIERvbWFpbkFkZFJlc3BvbnNlXG4gICAgXG4gICAgaWYgKCFyZXNwb25zZS5vayB8fCAhcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBhZGQgZG9tYWluJylcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICBcbiAgICBsb2dnZXIuc3VjY2Vzcyhg4pyTIERvbWFpbiAke2RvbWFpbn0gYWRkZWQhYClcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZygnICBOZXh0LCBhZGQgdGhlc2UgRE5TIHJlY29yZHMgdG8geW91ciBkb21haW4gcHJvdmlkZXI6JylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZygnICAxLiBDTkFNRSBSZWNvcmQ6JylcbiAgICBjb25zb2xlLmxvZyhgICAgICBOYW1lOiAgJHtyZXN1bHQudmVyaWZpY2F0aW9uLmNuYW1lLm5hbWV9YClcbiAgICBjb25zb2xlLmxvZyhgICAgICBWYWx1ZTogJHtyZXN1bHQudmVyaWZpY2F0aW9uLmNuYW1lLnZhbHVlfWApXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coJyAgMi4gVFhUIFJlY29yZCAoZm9yIHZlcmlmaWNhdGlvbik6JylcbiAgICBjb25zb2xlLmxvZyhgICAgICBOYW1lOiAgJHtyZXN1bHQudmVyaWZpY2F0aW9uLnR4dC5uYW1lfWApXG4gICAgY29uc29sZS5sb2coYCAgICAgVmFsdWU6ICR7cmVzdWx0LnZlcmlmaWNhdGlvbi50eHQudmFsdWV9YClcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBsb2dnZXIuaW5mbygnQWZ0ZXIgYWRkaW5nIEROUyByZWNvcmRzLCBydW46JylcbiAgICBjb25zb2xlLmxvZygnICBkZXZkb2MgZG9tYWluIHZlcmlmeScpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKVxuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGFkZCBkb21haW46ICR7bWVzc2FnZX1gKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEb21haW4gU3RhdHVzIENvbW1hbmRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2hlY2sgc3RhdHVzIG9mIGN1c3RvbSBkb21haW5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvbWFpblN0YXR1cyhvcHRpb25zOiBEb21haW5PcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb2plY3RSb290ID0gcHJvY2Vzcy5jd2QoKVxuICBjb25zdCBhcGlVcmwgPSBvcHRpb25zLnVybCB8fCBwcm9jZXNzLmVudi5ERVZET0NfQVBJX1VSTCB8fCBERUZBVUxUX0FQSV9VUkxcbiAgXG4gIC8vIExvYWQgY29uZmlnXG4gIGNvbnN0IGNvbmZpZyA9IGxvYWREZXZEb2NDb25maWcocHJvamVjdFJvb3QpXG4gIGlmICghY29uZmlnKSB7XG4gICAgbG9nZ2VyLmVycm9yKCcuZGV2ZG9jLmpzb24gbm90IGZvdW5kLiBEZXBsb3kgeW91ciBwcm9qZWN0IGZpcnN0IHdpdGggXCJkZXZkb2MgZGVwbG95XCInKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICAvLyBHZXQgQVBJIGtleVxuICBjb25zdCBhcGlLZXkgPSBnZXRBcGlLZXkob3B0aW9ucywgY29uZmlnKVxuICBpZiAoIWFwaUtleSkge1xuICAgIGxvZ2dlci5lcnJvcignQVBJIGtleSBub3QgZm91bmQuIERlcGxveSB5b3VyIHByb2plY3QgZmlyc3Qgb3IgcHJvdmlkZSB2aWEgLS1hcGkta2V5JylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2FwaVVybH0vYXBpL2RvbWFpbnMvc3RhdHVzYCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICB9LFxuICAgIH0pXG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIERvbWFpblN0YXR1c1Jlc3BvbnNlXG4gICAgXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgbG9nZ2VyLmVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGdldCBkb21haW4gc3RhdHVzJylcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICBcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZygnICBDdXN0b20gRG9tYWluIFN0YXR1cycpXG4gICAgY29uc29sZS5sb2coJyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0nKVxuICAgIFxuICAgIGlmICghcmVzdWx0Lmhhc0N1c3RvbURvbWFpbikge1xuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBjb25zb2xlLmxvZygnICBObyBjdXN0b20gZG9tYWluIGNvbmZpZ3VyZWQuJylcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgY29uc29sZS5sb2coJyAgWW91ciBkb2NzIGFyZSBhdmFpbGFibGUgYXQ6JylcbiAgICAgIGNvbnNvbGUubG9nKGAgICR7bG9nZ2VyLmN5YW4ocmVzdWx0LnByb2plY3RVcmwpfWApXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGxvZ2dlci5pbmZvKCdUbyBhZGQgYSBjdXN0b20gZG9tYWluLCBydW46JylcbiAgICAgIGNvbnNvbGUubG9nKCcgIGRldmRvYyBkb21haW4gYWRkIGRvY3MueW91cmRvbWFpbi5jb20nKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coYCAgRG9tYWluOiAgJHtyZXN1bHQuZG9tYWlufWApXG4gICAgY29uc29sZS5sb2coYCAgU3RhdHVzOiAgJHtnZXRTdGF0dXNEaXNwbGF5KHJlc3VsdC5zdGF0dXMgfHwgJ3Vua25vd24nKX1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIFxuICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnYWN0aXZlJykge1xuICAgICAgY29uc29sZS5sb2coJyAgWW91ciBkb2NzIGFyZSBhdmFpbGFibGUgYXQ6JylcbiAgICAgIGNvbnNvbGUubG9nKGAgICR7bG9nZ2VyLmN5YW4ocmVzdWx0LmN1c3RvbVVybCB8fCBgaHR0cHM6Ly8ke3Jlc3VsdC5kb21haW59YCl9YClcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgY29uc29sZS5sb2coJyAgQWxzbyBhY2Nlc3NpYmxlIGF0OicpXG4gICAgICBjb25zb2xlLmxvZyhgICAke3Jlc3VsdC5wcm9qZWN0VXJsfWApXG4gICAgfSBlbHNlIGlmIChyZXN1bHQuc3RhdHVzID09PSAncGVuZGluZycgJiYgcmVzdWx0LmRuc1JlY29yZHMpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcgIEFkZCB0aGVzZSBETlMgcmVjb3JkcyB0byB5b3VyIGRvbWFpbjonKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBjb25zb2xlLmxvZygnICBDTkFNRSBSZWNvcmQ6JylcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgTmFtZTogICR7cmVzdWx0LmRuc1JlY29yZHMuY25hbWUubmFtZX1gKVxuICAgICAgY29uc29sZS5sb2coYCAgICBWYWx1ZTogJHtyZXN1bHQuZG5zUmVjb3Jkcy5jbmFtZS52YWx1ZX1gKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBjb25zb2xlLmxvZygnICBUWFQgUmVjb3JkOicpXG4gICAgICBjb25zb2xlLmxvZyhgICAgIE5hbWU6ICAke3Jlc3VsdC5kbnNSZWNvcmRzLnR4dC5uYW1lfWApXG4gICAgICBjb25zb2xlLmxvZyhgICAgIFZhbHVlOiAke3Jlc3VsdC5kbnNSZWNvcmRzLnR4dC52YWx1ZX1gKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBsb2dnZXIuaW5mbygnQWZ0ZXIgYWRkaW5nIEROUyByZWNvcmRzLCBydW46IGRldmRvYyBkb21haW4gdmVyaWZ5JylcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5tZXNzYWdlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAke3Jlc3VsdC5tZXNzYWdlfWApXG4gICAgfVxuICAgIFxuICAgIGlmIChyZXN1bHQubmV4dFN0ZXApIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgbG9nZ2VyLmluZm8oYE5leHQ6ICR7cmVzdWx0Lm5leHRTdGVwfWApXG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIFxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBnZXQgZG9tYWluIHN0YXR1czogJHttZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgZGlzcGxheSBzdHJpbmcgZm9yIHN0YXR1c1xuICovXG5mdW5jdGlvbiBnZXRTdGF0dXNEaXNwbGF5KHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlICdwZW5kaW5nJzpcbiAgICAgIHJldHVybiBsb2dnZXIueWVsbG93KCfij7MgUGVuZGluZyBETlMgY29uZmlndXJhdGlvbicpXG4gICAgY2FzZSAnZG5zX3ZlcmlmaWVkJzpcbiAgICAgIHJldHVybiBsb2dnZXIuY3lhbign4pyTIEROUyB2ZXJpZmllZCwgU1NMIHByb3Zpc2lvbmluZy4uLicpXG4gICAgY2FzZSAnc3NsX3Byb3Zpc2lvbmluZyc6XG4gICAgICByZXR1cm4gbG9nZ2VyLmN5YW4oJ/CflJIgU1NMIGNlcnRpZmljYXRlIHByb3Zpc2lvbmluZy4uLicpXG4gICAgY2FzZSAnYWN0aXZlJzpcbiAgICAgIHJldHVybiBsb2dnZXIuZ3JlZW4oJ+KckyBBY3RpdmUnKVxuICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgIHJldHVybiBsb2dnZXIucmVkKCfinJcgRXJyb3InKVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdHVzXG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERvbWFpbiBWZXJpZnkgQ29tbWFuZFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBWZXJpZnkgRE5TIGNvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbSBkb21haW5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvbWFpblZlcmlmeShvcHRpb25zOiBEb21haW5PcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb2plY3RSb290ID0gcHJvY2Vzcy5jd2QoKVxuICBjb25zdCBhcGlVcmwgPSBvcHRpb25zLnVybCB8fCBwcm9jZXNzLmVudi5ERVZET0NfQVBJX1VSTCB8fCBERUZBVUxUX0FQSV9VUkxcbiAgXG4gIGxvZ2dlci5pbmZvKCdWZXJpZnlpbmcgRE5TIGNvbmZpZ3VyYXRpb24uLi5cXG4nKVxuICBcbiAgLy8gTG9hZCBjb25maWdcbiAgY29uc3QgY29uZmlnID0gbG9hZERldkRvY0NvbmZpZyhwcm9qZWN0Um9vdClcbiAgaWYgKCFjb25maWcpIHtcbiAgICBsb2dnZXIuZXJyb3IoJy5kZXZkb2MuanNvbiBub3QgZm91bmQuIERlcGxveSB5b3VyIHByb2plY3QgZmlyc3Qgd2l0aCBcImRldmRvYyBkZXBsb3lcIicpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgXG4gIC8vIEdldCBBUEkga2V5XG4gIGNvbnN0IGFwaUtleSA9IGdldEFwaUtleShvcHRpb25zLCBjb25maWcpXG4gIGlmICghYXBpS2V5KSB7XG4gICAgbG9nZ2VyLmVycm9yKCdBUEkga2V5IG5vdCBmb3VuZC4gRGVwbG95IHlvdXIgcHJvamVjdCBmaXJzdCBvciBwcm92aWRlIHZpYSAtLWFwaS1rZXknKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YXBpVXJsfS9hcGkvZG9tYWlucy92ZXJpZnlgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe30pLFxuICAgIH0pXG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIERvbWFpblZlcmlmeVJlc3BvbnNlXG4gICAgXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgbG9nZ2VyLmVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIHZlcmlmeSBkb21haW4nKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKCcgIEROUyBWZXJpZmljYXRpb24gUmVzdWx0cycpXG4gICAgY29uc29sZS5sb2coJyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZyhgICBEb21haW46ICR7cmVzdWx0LmRvbWFpbn1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIFxuICAgIC8vIENOQU1FIGNoZWNrXG4gICAgY29uc29sZS5sb2coJyAgQ05BTUUgUmVjb3JkOicpXG4gICAgaWYgKHJlc3VsdC5jaGVja3MuY25hbWUudmFsaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtsb2dnZXIuZ3JlZW4oJ+KckycpfSBGb3VuZDogJHtyZXN1bHQuY2hlY2tzLmNuYW1lLnZhbHVlfWApXG4gICAgfSBlbHNlIGlmIChyZXN1bHQuY2hlY2tzLmNuYW1lLmZvdW5kKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgICR7bG9nZ2VyLnllbGxvdygnIScpfSBGb3VuZCBidXQgaW5jb3JyZWN0OiAke3Jlc3VsdC5jaGVja3MuY25hbWUudmFsdWV9YClcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgICBFeHBlY3RlZDogJHtyZXN1bHQuY2hlY2tzLmNuYW1lLmV4cGVjdGVkfWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtsb2dnZXIucmVkKCfinJcnKX0gTm90IGZvdW5kYClcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgICBFeHBlY3RlZDogJHtyZXN1bHQuY2hlY2tzLmNuYW1lLmV4cGVjdGVkfWApXG4gICAgfVxuICAgIFxuICAgIC8vIFRYVCBjaGVja1xuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKCcgIFRYVCBWZXJpZmljYXRpb24gUmVjb3JkOicpXG4gICAgaWYgKHJlc3VsdC5jaGVja3MudHh0LnZlcmlmaWVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgICR7bG9nZ2VyLmdyZWVuKCfinJMnKX0gVmVyaWZpZWRgKVxuICAgIH0gZWxzZSBpZiAocmVzdWx0LmNoZWNrcy50eHQuZm91bmQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtsb2dnZXIueWVsbG93KCchJyl9IEZvdW5kIGJ1dCB2YWx1ZSBkb2Vzbid0IG1hdGNoYClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYCAgICAke2xvZ2dlci5yZWQoJ+KclycpfSBOb3QgZm91bmRgKVxuICAgICAgY29uc29sZS5sb2coYCAgICAgIEV4cGVjdGVkOiAke3Jlc3VsdC5jaGVja3MudHh0LmV4cGVjdGVkfWApXG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIFxuICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0ROUyB2ZXJpZmllZCEnKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBjb25zb2xlLmxvZyhgICAke3Jlc3VsdC5tZXNzYWdlfWApXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGxvZ2dlci5pbmZvKCdSdW4gXCJkZXZkb2MgZG9tYWluIHN0YXR1c1wiIHRvIGNoZWNrIFNTTCBwcm92aXNpb25pbmcgcHJvZ3Jlc3MuJylcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oJ0ROUyB2ZXJpZmljYXRpb24gaW5jb21wbGV0ZScpXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGNvbnNvbGUubG9nKGAgICR7cmVzdWx0Lm1lc3NhZ2V9YClcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgbG9nZ2VyLmluZm8oJ0ROUyBjaGFuZ2VzIGNhbiB0YWtlIDEtMjQgaG91cnMgdG8gcHJvcGFnYXRlLicpXG4gICAgICBsb2dnZXIuaW5mbygnUnVuIFwiZGV2ZG9jIGRvbWFpbiB2ZXJpZnlcIiBhZ2FpbiBsYXRlci4nKVxuICAgIH1cbiAgICBcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gdmVyaWZ5IGRvbWFpbjogJHttZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERvbWFpbiBSZW1vdmUgQ29tbWFuZFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZW1vdmUgY3VzdG9tIGRvbWFpbiBmcm9tIHByb2plY3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvbWFpblJlbW92ZShjdXN0b21Eb21haW46IHN0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9uczogRG9tYWluT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuY3dkKClcbiAgY29uc3QgYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9VUkwgfHwgREVGQVVMVF9BUElfVVJMXG4gIFxuICBsb2dnZXIuaW5mbygnUmVtb3ZpbmcgY3VzdG9tIGRvbWFpbi4uLlxcbicpXG4gIFxuICAvLyBMb2FkIGNvbmZpZ1xuICBjb25zdCBjb25maWcgPSBsb2FkRGV2RG9jQ29uZmlnKHByb2plY3RSb290KVxuICBpZiAoIWNvbmZpZykge1xuICAgIGxvZ2dlci5lcnJvcignLmRldmRvYy5qc29uIG5vdCBmb3VuZC4gRGVwbG95IHlvdXIgcHJvamVjdCBmaXJzdCB3aXRoIFwiZGV2ZG9jIGRlcGxveVwiJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgLy8gR2V0IEFQSSBrZXlcbiAgY29uc3QgYXBpS2V5ID0gZ2V0QXBpS2V5KG9wdGlvbnMsIGNvbmZpZylcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0FQSSBrZXkgbm90IGZvdW5kLiBEZXBsb3kgeW91ciBwcm9qZWN0IGZpcnN0IG9yIHByb3ZpZGUgdmlhIC0tYXBpLWtleScpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgXG4gIHRyeSB7XG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gICAgaWYgKGN1c3RvbURvbWFpbikge1xuICAgICAgYm9keS5jdXN0b21Eb21haW4gPSBub3JtYWxpemVEb21haW4oY3VzdG9tRG9tYWluKVxuICAgIH1cbiAgICBcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2FwaVVybH0vYXBpL2RvbWFpbnMvcmVtb3ZlYCwge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgfSlcbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgRG9tYWluUmVtb3ZlUmVzcG9uc2VcbiAgICBcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8ICFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgbG9nZ2VyLmVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIHJlbW92ZSBkb21haW4nKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICAgIFxuICAgIGxvZ2dlci5zdWNjZXNzKGDinJMgRG9tYWluICR7cmVzdWx0LmRvbWFpbn0gcmVtb3ZlZGApXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coJyAgWW91ciBkb2NzIHJlbWFpbiBhY2Nlc3NpYmxlIGF0IHRoZSBkZWZhdWx0IHN1YmRvbWFpbi4nKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGxvZ2dlci5pbmZvKCdZb3UgY2FuIGFkZCBhIG5ldyBjdXN0b20gZG9tYWluIGFueXRpbWUgd2l0aDonKVxuICAgIGNvbnNvbGUubG9nKCcgIGRldmRvYyBkb21haW4gYWRkIGRvY3MueW91cmRvbWFpbi5jb20nKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIFxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byByZW1vdmUgZG9tYWluOiAke21lc3NhZ2V9YClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuIl19
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9kb21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3SUEsOEJBOEVDO0FBU0Qsb0NBNkZDO0FBNkJELG9DQWdHQztBQVNELG9DQTJEQztBQTdmRCxnREFBdUI7QUFDdkIsd0RBQXlCO0FBQ3pCLCtDQUEyQztBQUMzQywrQ0FBaUQ7QUFrRWpEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxXQUFtQjtJQUMzQyxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUN6RCxJQUFJLENBQUMsa0JBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLGtCQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBaUIsQ0FBQTtJQUNwRCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsT0FBc0IsRUFBRSxNQUEyQjtJQUNwRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUE7QUFDL0UsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxNQUFjO0lBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ3RELENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxF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QUFRLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLGVBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSx5QkFBeUIsQ0FBQyxDQUFBO1lBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakIsQ0FBQztRQUVELGVBQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxNQUFNLENBQUMsTUFBTSxVQUFVLENBQUMsQ0FBQTtRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5REFBeUQsQ0FBQyxDQUFBO1FBQ3RFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDZixlQUFNLENBQUMsSUFBSSxDQUFDLCtDQUErQyxDQUFDLENBQUE7UUFDNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFakIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEUsZUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSdcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlcidcbmltcG9ydCB7IERFRkFVTFRfQVBJX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcblxuaW50ZXJmYWNlIERvbWFpbk9wdGlvbnMge1xuICB1cmw/OiBzdHJpbmdcbiAgYXBpS2V5Pzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBEZXZEb2NDb25maWcge1xuICBwcm9qZWN0SWQ/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBzbHVnPzogc3RyaW5nXG4gIHN1YmRvbWFpbj86IHN0cmluZ1xuICBhcGlLZXk/OiBzdHJpbmdcbiAgdXJsPzogc3RyaW5nXG4gIGxhc3REZXBsb3llZD86IHN0cmluZ1xuICBjcmVhdGVkQXQ/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERvbWFpbkFkZFJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhblxuICBkb21haW46IHN0cmluZ1xuICBwcm9qZWN0U2x1Zzogc3RyaW5nXG4gIHN0YXR1czogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbjoge1xuICAgIGNuYW1lOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9XG4gICAgdHh0OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9XG4gIH1cbiAgaW5zdHJ1Y3Rpb25zOiBzdHJpbmdbXVxuICBlcnJvcj86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgRG9tYWluU3RhdHVzUmVzcG9uc2Uge1xuICBoYXNDdXN0b21Eb21haW46IGJvb2xlYW5cbiAgZG9tYWluPzogc3RyaW5nXG4gIHN0YXR1cz86IHN0cmluZ1xuICBwcm9qZWN0U2x1Zzogc3RyaW5nXG4gIHByb2plY3RVcmw6IHN0cmluZ1xuICBjdXN0b21Vcmw/OiBzdHJpbmdcbiAgbWVzc2FnZT86IHN0cmluZ1xuICBkbnNSZWNvcmRzPzoge1xuICAgIGNuYW1lOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9XG4gICAgdHh0OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9XG4gIH1cbiAgbmV4dFN0ZXA/OiBzdHJpbmdcbiAgZXJyb3I/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERvbWFpblZlcmlmeVJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhblxuICBkb21haW46IHN0cmluZ1xuICBzdGF0dXM6IHN0cmluZ1xuICBtZXNzYWdlOiBzdHJpbmdcbiAgY2hlY2tzOiB7XG4gICAgY25hbWU6IHsgZm91bmQ6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfCBudWxsOyB2YWxpZDogYm9vbGVhbjsgZXhwZWN0ZWQ6IHN0cmluZyB9XG4gICAgdHh0OiB7IGZvdW5kOiBib29sZWFuOyB2ZXJpZmllZDogYm9vbGVhbjsgZXhwZWN0ZWQ6IHN0cmluZyB9XG4gIH1cbiAgZXJyb3I/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERvbWFpblJlbW92ZVJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhblxuICBtZXNzYWdlOiBzdHJpbmdcbiAgZG9tYWluOiBzdHJpbmdcbiAgZXJyb3I/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBMb2FkIC5kZXZkb2MuanNvbiBhbmQgZ2V0IEFQSSBrZXlcbiAqL1xuZnVuY3Rpb24gbG9hZERldkRvY0NvbmZpZyhwcm9qZWN0Um9vdDogc3RyaW5nKTogRGV2RG9jQ29uZmlnIHwgbnVsbCB7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICcuZGV2ZG9jLmpzb24nKVxuICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnJlYWRKc29uU3luYyhjb25maWdQYXRoKSBhcyBEZXZEb2NDb25maWdcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG4vKipcbiAqIEdldCBBUEkga2V5IGZyb20gb3B0aW9ucywgZW52LCBvciBjb25maWdcbiAqL1xuZnVuY3Rpb24gZ2V0QXBpS2V5KG9wdGlvbnM6IERvbWFpbk9wdGlvbnMsIGNvbmZpZzogRGV2RG9jQ29uZmlnIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICByZXR1cm4gb3B0aW9ucy5hcGlLZXkgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9LRVkgfHwgY29uZmlnPy5hcGlLZXkgfHwgbnVsbFxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGRvbWFpbiBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZERvbWFpbkZvcm1hdChkb21haW46IHN0cmluZyk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICBpZiAoIWRvbWFpbikge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdEb21haW4gaXMgcmVxdWlyZWQnIH1cbiAgfVxuICBcbiAgaWYgKGRvbWFpbi5sZW5ndGggPCA0KSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ0RvbWFpbiBtdXN0IGJlIGF0IGxlYXN0IDQgY2hhcmFjdGVycycgfVxuICB9XG4gIFxuICAvLyBCYXNpYyBkb21haW4gZm9ybWF0IGNoZWNrXG4gIGNvbnN0IGRvbWFpblJlZ2V4ID0gL14oPyEtKVthLXpBLVowLTktXSsoPzpcXC5bYS16QS1aMC05LV0rKSpcXC5bYS16QS1aXXsyLH0kL1xuICBpZiAoIWRvbWFpblJlZ2V4LnRlc3QoZG9tYWluKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdJbnZhbGlkIGRvbWFpbiBmb3JtYXQuIEV4YW1wbGU6IGRvY3MuZXhhbXBsZS5jb20nIH1cbiAgfVxuICBcbiAgLy8gQ2hlY2sgZm9yIHJlc2VydmVkIGRvbWFpbnNcbiAgY29uc3QgcmVzZXJ2ZWQgPSBbJ2RldmRvYy5zaCcsICdkZXZkb2MuaW8nLCAnZGV2ZG9jLmNvbSddXG4gIGlmIChyZXNlcnZlZC5zb21lKHIgPT4gZG9tYWluID09PSByIHx8IGRvbWFpbi5lbmRzV2l0aChgLiR7cn1gKSkpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnQ2Fubm90IHVzZSBhIHJlc2VydmVkIERldkRvYyBkb21haW4nIH1cbiAgfVxuICBcbiAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBkb21haW4gKGxvd2VyY2FzZSwgcmVtb3ZlIHByb3RvY29sL3BhdGgpXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURvbWFpbihkb21haW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBub3JtYWxpemVkID0gZG9tYWluLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgJycpXG4gIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNwbGl0KCcvJylbMF1cbiAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3BsaXQoJzonKVswXVxuICByZXR1cm4gbm9ybWFsaXplZFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRG9tYWluIEFkZCBDb21tYW5kXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFkZCBhIGN1c3RvbSBkb21haW4gdG8gdGhlIHByb2plY3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvbWFpbkFkZChjdXN0b21Eb21haW46IHN0cmluZywgb3B0aW9uczogRG9tYWluT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuY3dkKClcbiAgY29uc3QgYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9VUkwgfHwgREVGQVVMVF9BUElfVVJMXG4gIFxuICBsb2dnZXIuaW5mbygnQWRkaW5nIGN1c3RvbSBkb21haW4uLi5cXG4nKVxuICBcbiAgLy8gTG9hZCBjb25maWdcbiAgY29uc3QgY29uZmlnID0gbG9hZERldkRvY0NvbmZpZyhwcm9qZWN0Um9vdClcbiAgaWYgKCFjb25maWcpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ1Byb2plY3Qgbm90IGluaXRpYWxpemVkLicpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgbG9nZ2VyLmluZm8oJ1J1biBcImRldmRvYyBpbml0XCIgdG8gaW5pdGlhbGl6ZSwgdGhlbiBcImRldmRvYyBkZXBsb3lcIiB0byBkZXBsb3kuJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgLy8gR2V0IEFQSSBrZXkgLSByZXF1aXJlZCBiZWNhdXNlIGN1c3RvbSBkb21haW5zIG5lZWQgYSBkZXBsb3llZCBwcm9qZWN0XG4gIGNvbnN0IGFwaUtleSA9IGdldEFwaUtleShvcHRpb25zLCBjb25maWcpXG4gIGlmICghYXBpS2V5KSB7XG4gICAgbG9nZ2VyLmVycm9yKCdQcm9qZWN0IG5vdCBkZXBsb3llZCB5ZXQuJylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZygnICBDdXN0b20gZG9tYWlucyByZXF1aXJlIGEgZGVwbG95ZWQgcHJvamVjdC4nKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKCcgIFRvIHNldCB1cCBhIGN1c3RvbSBkb21haW46JylcbiAgICBjb25zb2xlLmxvZygnICAgIDEuIERlcGxveSB5b3VyIHByb2plY3QgZmlyc3Q6ICBkZXZkb2MgZGVwbG95JylcbiAgICBjb25zb2xlLmxvZygnICAgIDIuIFRoZW4gYWRkIHlvdXIgZG9tYWluOiAgICAgICBkZXZkb2MgZG9tYWluIGFkZCAnICsgY3VzdG9tRG9tYWluKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICAvLyBOb3JtYWxpemUgYW5kIHZhbGlkYXRlIGRvbWFpblxuICBjb25zdCBkb21haW4gPSBub3JtYWxpemVEb21haW4oY3VzdG9tRG9tYWluKVxuICBjb25zdCB2YWxpZGF0aW9uID0gaXNWYWxpZERvbWFpbkZvcm1hdChkb21haW4pXG4gIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgIGxvZ2dlci5lcnJvcih2YWxpZGF0aW9uLmVycm9yISlcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgbG9nZ2VyLmluZm8oYERvbWFpbjogJHtkb21haW59YClcbiAgY29uc29sZS5sb2coJycpXG4gIFxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YXBpVXJsfS9hcGkvZG9tYWlucy9hZGRgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBjdXN0b21Eb21haW46IGRvbWFpbiB9KSxcbiAgICB9KVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBEb21haW5BZGRSZXNwb25zZVxuICAgIFxuICAgIGlmICghcmVzcG9uc2Uub2sgfHwgIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICBsb2dnZXIuZXJyb3IocmVzdWx0LmVycm9yIHx8ICdGYWlsZWQgdG8gYWRkIGRvbWFpbicpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gICAgXG4gICAgbG9nZ2VyLnN1Y2Nlc3MoYOKckyBEb21haW4gJHtkb21haW59IGFkZGVkIWApXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coJyAgTmV4dCwgYWRkIHRoZXNlIEROUyByZWNvcmRzIHRvIHlvdXIgZG9tYWluIHByb3ZpZGVyOicpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coJyAgMS4gQ05BTUUgUmVjb3JkOicpXG4gICAgY29uc29sZS5sb2coYCAgICAgTmFtZTogICR7cmVzdWx0LnZlcmlmaWNhdGlvbi5jbmFtZS5uYW1lfWApXG4gICAgY29uc29sZS5sb2coYCAgICAgVmFsdWU6ICR7cmVzdWx0LnZlcmlmaWNhdGlvbi5jbmFtZS52YWx1ZX1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKCcgIDIuIFRYVCBSZWNvcmQgKGZvciB2ZXJpZmljYXRpb24pOicpXG4gICAgY29uc29sZS5sb2coYCAgICAgTmFtZTogICR7cmVzdWx0LnZlcmlmaWNhdGlvbi50eHQubmFtZX1gKVxuICAgIGNvbnNvbGUubG9nKGAgICAgIFZhbHVlOiAke3Jlc3VsdC52ZXJpZmljYXRpb24udHh0LnZhbHVlfWApXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgbG9nZ2VyLmluZm8oJ0FmdGVyIGFkZGluZyBETlMgcmVjb3JkcywgcnVuOicpXG4gICAgY29uc29sZS5sb2coJyAgZGV2ZG9jIGRvbWFpbiB2ZXJpZnknKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIFxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBhZGQgZG9tYWluOiAke21lc3NhZ2V9YClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRG9tYWluIFN0YXR1cyBDb21tYW5kXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENoZWNrIHN0YXR1cyBvZiBjdXN0b20gZG9tYWluXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb21haW5TdGF0dXMob3B0aW9uczogRG9tYWluT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuY3dkKClcbiAgY29uc3QgYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9VUkwgfHwgREVGQVVMVF9BUElfVVJMXG4gIFxuICAvLyBMb2FkIGNvbmZpZ1xuICBjb25zdCBjb25maWcgPSBsb2FkRGV2RG9jQ29uZmlnKHByb2plY3RSb290KVxuICBpZiAoIWNvbmZpZykge1xuICAgIGxvZ2dlci5lcnJvcignUHJvamVjdCBub3QgaW5pdGlhbGl6ZWQuJylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBsb2dnZXIuaW5mbygnUnVuIFwiZGV2ZG9jIGluaXRcIiB0byBpbml0aWFsaXplLCB0aGVuIFwiZGV2ZG9jIGRlcGxveVwiIHRvIGRlcGxveS4nKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICAvLyBHZXQgQVBJIGtleVxuICBjb25zdCBhcGlLZXkgPSBnZXRBcGlLZXkob3B0aW9ucywgY29uZmlnKVxuICBpZiAoIWFwaUtleSkge1xuICAgIGxvZ2dlci5lcnJvcignUHJvamVjdCBub3QgZGVwbG95ZWQgeWV0LicpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgbG9nZ2VyLmluZm8oJ0RlcGxveSB5b3VyIHByb2plY3QgZmlyc3Qgd2l0aCBcImRldmRvYyBkZXBsb3lcIicpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHthcGlVcmx9L2FwaS9kb21haW5zL3N0YXR1c2AsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICB9KVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBEb21haW5TdGF0dXNSZXNwb25zZVxuICAgIFxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGxvZ2dlci5lcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBnZXQgZG9tYWluIHN0YXR1cycpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gICAgXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coJyAgQ3VzdG9tIERvbWFpbiBTdGF0dXMnKVxuICAgIGNvbnNvbGUubG9nKCcgIC0tLS0tLS0tLS0tLS0tLS0tLS0tJylcbiAgICBcbiAgICBpZiAoIXJlc3VsdC5oYXNDdXN0b21Eb21haW4pIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgY29uc29sZS5sb2coJyAgTm8gY3VzdG9tIGRvbWFpbiBjb25maWd1cmVkLicpXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGNvbnNvbGUubG9nKCcgIFlvdXIgZG9jcyBhcmUgYXZhaWxhYmxlIGF0OicpXG4gICAgICBjb25zb2xlLmxvZyhgICAke2xvZ2dlci5jeWFuKHJlc3VsdC5wcm9qZWN0VXJsKX1gKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBsb2dnZXIuaW5mbygnVG8gYWRkIGEgY3VzdG9tIGRvbWFpbiwgcnVuOicpXG4gICAgICBjb25zb2xlLmxvZygnICBkZXZkb2MgZG9tYWluIGFkZCBkb2NzLnlvdXJkb21haW4uY29tJylcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKGAgIERvbWFpbjogICR7cmVzdWx0LmRvbWFpbn1gKVxuICAgIGNvbnNvbGUubG9nKGAgIFN0YXR1czogICR7Z2V0U3RhdHVzRGlzcGxheShyZXN1bHQuc3RhdHVzIHx8ICd1bmtub3duJyl9YClcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcgIFlvdXIgZG9jcyBhcmUgYXZhaWxhYmxlIGF0OicpXG4gICAgICBjb25zb2xlLmxvZyhgICAke2xvZ2dlci5jeWFuKHJlc3VsdC5jdXN0b21VcmwgfHwgYGh0dHBzOi8vJHtyZXN1bHQuZG9tYWlufWApfWApXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGNvbnNvbGUubG9nKCcgIEFsc28gYWNjZXNzaWJsZSBhdDonKVxuICAgICAgY29uc29sZS5sb2coYCAgJHtyZXN1bHQucHJvamVjdFVybH1gKVxuICAgIH0gZWxzZSBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3BlbmRpbmcnICYmIHJlc3VsdC5kbnNSZWNvcmRzKSB7XG4gICAgICBjb25zb2xlLmxvZygnICBBZGQgdGhlc2UgRE5TIHJlY29yZHMgdG8geW91ciBkb21haW46JylcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgY29uc29sZS5sb2coJyAgQ05BTUUgUmVjb3JkOicpXG4gICAgICBjb25zb2xlLmxvZyhgICAgIE5hbWU6ICAke3Jlc3VsdC5kbnNSZWNvcmRzLmNuYW1lLm5hbWV9YClcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgVmFsdWU6ICR7cmVzdWx0LmRuc1JlY29yZHMuY25hbWUudmFsdWV9YClcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgY29uc29sZS5sb2coJyAgVFhUIFJlY29yZDonKVxuICAgICAgY29uc29sZS5sb2coYCAgICBOYW1lOiAgJHtyZXN1bHQuZG5zUmVjb3Jkcy50eHQubmFtZX1gKVxuICAgICAgY29uc29sZS5sb2coYCAgICBWYWx1ZTogJHtyZXN1bHQuZG5zUmVjb3Jkcy50eHQudmFsdWV9YClcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgbG9nZ2VyLmluZm8oJ0FmdGVyIGFkZGluZyBETlMgcmVjb3JkcywgcnVuOiBkZXZkb2MgZG9tYWluIHZlcmlmeScpXG4gICAgfSBlbHNlIGlmIChyZXN1bHQubWVzc2FnZSkge1xuICAgICAgY29uc29sZS5sb2coYCAgJHtyZXN1bHQubWVzc2FnZX1gKVxuICAgIH1cbiAgICBcbiAgICBpZiAocmVzdWx0Lm5leHRTdGVwKSB7XG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGxvZ2dlci5pbmZvKGBOZXh0OiAke3Jlc3VsdC5uZXh0U3RlcH1gKVxuICAgIH1cbiAgICBcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gZ2V0IGRvbWFpbiBzdGF0dXM6ICR7bWVzc2FnZX1gKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG59XG5cbi8qKlxuICogR2V0IGRpc3BsYXkgc3RyaW5nIGZvciBzdGF0dXNcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhdHVzRGlzcGxheShzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSAncGVuZGluZyc6XG4gICAgICByZXR1cm4gbG9nZ2VyLnllbGxvdygn4o+zIFBlbmRpbmcgRE5TIGNvbmZpZ3VyYXRpb24nKVxuICAgIGNhc2UgJ2Ruc192ZXJpZmllZCc6XG4gICAgICByZXR1cm4gbG9nZ2VyLmN5YW4oJ+KckyBETlMgdmVyaWZpZWQsIFNTTCBwcm92aXNpb25pbmcuLi4nKVxuICAgIGNhc2UgJ3NzbF9wcm92aXNpb25pbmcnOlxuICAgICAgcmV0dXJuIGxvZ2dlci5jeWFuKCfwn5SSIFNTTCBjZXJ0aWZpY2F0ZSBwcm92aXNpb25pbmcuLi4nKVxuICAgIGNhc2UgJ2FjdGl2ZSc6XG4gICAgICByZXR1cm4gbG9nZ2VyLmdyZWVuKCfinJMgQWN0aXZlJylcbiAgICBjYXNlICdlcnJvcic6XG4gICAgICByZXR1cm4gbG9nZ2VyLnJlZCgn4pyXIEVycm9yJylcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEb21haW4gVmVyaWZ5IENvbW1hbmRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyaWZ5IEROUyBjb25maWd1cmF0aW9uIGZvciBjdXN0b20gZG9tYWluXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb21haW5WZXJpZnkob3B0aW9uczogRG9tYWluT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuY3dkKClcbiAgY29uc3QgYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9VUkwgfHwgREVGQVVMVF9BUElfVVJMXG4gIFxuICBsb2dnZXIuaW5mbygnVmVyaWZ5aW5nIEROUyBjb25maWd1cmF0aW9uLi4uXFxuJylcbiAgXG4gIC8vIExvYWQgY29uZmlnXG4gIGNvbnN0IGNvbmZpZyA9IGxvYWREZXZEb2NDb25maWcocHJvamVjdFJvb3QpXG4gIGlmICghY29uZmlnKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdQcm9qZWN0IG5vdCBpbml0aWFsaXplZC4nKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGxvZ2dlci5pbmZvKCdSdW4gXCJkZXZkb2MgaW5pdFwiIHRvIGluaXRpYWxpemUsIHRoZW4gXCJkZXZkb2MgZGVwbG95XCIgdG8gZGVwbG95LicpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgXG4gIC8vIEdldCBBUEkga2V5XG4gIGNvbnN0IGFwaUtleSA9IGdldEFwaUtleShvcHRpb25zLCBjb25maWcpXG4gIGlmICghYXBpS2V5KSB7XG4gICAgbG9nZ2VyLmVycm9yKCdQcm9qZWN0IG5vdCBkZXBsb3llZCB5ZXQuJylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBsb2dnZXIuaW5mbygnRGVwbG95IHlvdXIgcHJvamVjdCBmaXJzdCB3aXRoIFwiZGV2ZG9jIGRlcGxveVwiJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2FwaVVybH0vYXBpL2RvbWFpbnMvdmVyaWZ5YCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHt9KSxcbiAgICB9KVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBEb21haW5WZXJpZnlSZXNwb25zZVxuICAgIFxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGxvZ2dlci5lcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byB2ZXJpZnkgZG9tYWluJylcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICBcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZygnICBETlMgVmVyaWZpY2F0aW9uIFJlc3VsdHMnKVxuICAgIGNvbnNvbGUubG9nKCcgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgY29uc29sZS5sb2coYCAgRG9tYWluOiAke3Jlc3VsdC5kb21haW59YClcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgICAvLyBDTkFNRSBjaGVja1xuICAgIGNvbnNvbGUubG9nKCcgIENOQU1FIFJlY29yZDonKVxuICAgIGlmIChyZXN1bHQuY2hlY2tzLmNuYW1lLnZhbGlkKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgICR7bG9nZ2VyLmdyZWVuKCfinJMnKX0gRm91bmQ6ICR7cmVzdWx0LmNoZWNrcy5jbmFtZS52YWx1ZX1gKVxuICAgIH0gZWxzZSBpZiAocmVzdWx0LmNoZWNrcy5jbmFtZS5mb3VuZCkge1xuICAgICAgY29uc29sZS5sb2coYCAgICAke2xvZ2dlci55ZWxsb3coJyEnKX0gRm91bmQgYnV0IGluY29ycmVjdDogJHtyZXN1bHQuY2hlY2tzLmNuYW1lLnZhbHVlfWApXG4gICAgICBjb25zb2xlLmxvZyhgICAgICAgRXhwZWN0ZWQ6ICR7cmVzdWx0LmNoZWNrcy5jbmFtZS5leHBlY3RlZH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgICR7bG9nZ2VyLnJlZCgn4pyXJyl9IE5vdCBmb3VuZGApXG4gICAgICBjb25zb2xlLmxvZyhgICAgICAgRXhwZWN0ZWQ6ICR7cmVzdWx0LmNoZWNrcy5jbmFtZS5leHBlY3RlZH1gKVxuICAgIH1cbiAgICBcbiAgICAvLyBUWFQgY2hlY2tcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZygnICBUWFQgVmVyaWZpY2F0aW9uIFJlY29yZDonKVxuICAgIGlmIChyZXN1bHQuY2hlY2tzLnR4dC52ZXJpZmllZCkge1xuICAgICAgY29uc29sZS5sb2coYCAgICAke2xvZ2dlci5ncmVlbign4pyTJyl9IFZlcmlmaWVkYClcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5jaGVja3MudHh0LmZvdW5kKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgICR7bG9nZ2VyLnllbGxvdygnIScpfSBGb3VuZCBidXQgdmFsdWUgZG9lc24ndCBtYXRjaGApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtsb2dnZXIucmVkKCfinJcnKX0gTm90IGZvdW5kYClcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgICBFeHBlY3RlZDogJHtyZXN1bHQuY2hlY2tzLnR4dC5leHBlY3RlZH1gKVxuICAgIH1cbiAgICBcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCdETlMgdmVyaWZpZWQhJylcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgY29uc29sZS5sb2coYCAgJHtyZXN1bHQubWVzc2FnZX1gKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBsb2dnZXIuaW5mbygnUnVuIFwiZGV2ZG9jIGRvbWFpbiBzdGF0dXNcIiB0byBjaGVjayBTU0wgcHJvdmlzaW9uaW5nIHByb2dyZXNzLicpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci53YXJuKCdETlMgdmVyaWZpY2F0aW9uIGluY29tcGxldGUnKVxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgICBjb25zb2xlLmxvZyhgICAke3Jlc3VsdC5tZXNzYWdlfWApXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGxvZ2dlci5pbmZvKCdETlMgY2hhbmdlcyBjYW4gdGFrZSAxLTI0IGhvdXJzIHRvIHByb3BhZ2F0ZS4nKVxuICAgICAgbG9nZ2VyLmluZm8oJ1J1biBcImRldmRvYyBkb21haW4gdmVyaWZ5XCIgYWdhaW4gbGF0ZXIuJylcbiAgICB9XG4gICAgXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKVxuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHZlcmlmeSBkb21haW46ICR7bWVzc2FnZX1gKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEb21haW4gUmVtb3ZlIENvbW1hbmRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVtb3ZlIGN1c3RvbSBkb21haW4gZnJvbSBwcm9qZWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb21haW5SZW1vdmUoY3VzdG9tRG9tYWluOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM6IERvbWFpbk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpXG4gIGNvbnN0IGFwaVVybCA9IG9wdGlvbnMudXJsIHx8IHByb2Nlc3MuZW52LkRFVkRPQ19BUElfVVJMIHx8IERFRkFVTFRfQVBJX1VSTFxuICBcbiAgbG9nZ2VyLmluZm8oJ1JlbW92aW5nIGN1c3RvbSBkb21haW4uLi5cXG4nKVxuICBcbiAgLy8gTG9hZCBjb25maWdcbiAgY29uc3QgY29uZmlnID0gbG9hZERldkRvY0NvbmZpZyhwcm9qZWN0Um9vdClcbiAgaWYgKCFjb25maWcpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ1Byb2plY3Qgbm90IGluaXRpYWxpemVkLicpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgbG9nZ2VyLmluZm8oJ1J1biBcImRldmRvYyBpbml0XCIgdG8gaW5pdGlhbGl6ZSwgdGhlbiBcImRldmRvYyBkZXBsb3lcIiB0byBkZXBsb3kuJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgLy8gR2V0IEFQSSBrZXlcbiAgY29uc3QgYXBpS2V5ID0gZ2V0QXBpS2V5KG9wdGlvbnMsIGNvbmZpZylcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ1Byb2plY3Qgbm90IGRlcGxveWVkIHlldC4nKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGxvZ2dlci5pbmZvKCdEZXBsb3kgeW91ciBwcm9qZWN0IGZpcnN0IHdpdGggXCJkZXZkb2MgZGVwbG95XCInKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICB0cnkge1xuICAgIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICAgIGlmIChjdXN0b21Eb21haW4pIHtcbiAgICAgIGJvZHkuY3VzdG9tRG9tYWluID0gbm9ybWFsaXplRG9tYWluKGN1c3RvbURvbWFpbilcbiAgICB9XG4gICAgXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHthcGlVcmx9L2FwaS9kb21haW5zL3JlbW92ZWAsIHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgIH0pXG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIERvbWFpblJlbW92ZVJlc3BvbnNlXG4gICAgXG4gICAgaWYgKCFyZXNwb25zZS5vayB8fCAhcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byByZW1vdmUgZG9tYWluJylcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICBcbiAgICBsb2dnZXIuc3VjY2Vzcyhg4pyTIERvbWFpbiAke3Jlc3VsdC5kb21haW59IHJlbW92ZWRgKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKCcgIFlvdXIgZG9jcyByZW1haW4gYWNjZXNzaWJsZSBhdCB0aGUgZGVmYXVsdCBzdWJkb21haW4uJylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBsb2dnZXIuaW5mbygnWW91IGNhbiBhZGQgYSBuZXcgY3VzdG9tIGRvbWFpbiBhbnl0aW1lIHdpdGg6JylcbiAgICBjb25zb2xlLmxvZygnICBkZXZkb2MgZG9tYWluIGFkZCBkb2NzLnlvdXJkb21haW4uY29tJylcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gcmVtb3ZlIGRvbWFpbjogJHttZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cbiJdfQ==
|
package/dist/cli/index.js
CHANGED
|
@@ -62,8 +62,9 @@ program
|
|
|
62
62
|
.action(check_1.check);
|
|
63
63
|
program
|
|
64
64
|
.command('ai')
|
|
65
|
-
.description('Set up AI agent configuration (Claude Code skills, Cursor rules)')
|
|
65
|
+
.description('Set up or update AI agent configuration (Claude Code skills, Cursor rules)')
|
|
66
66
|
.option('-t, --tool <tool>', 'AI tool to configure (claude, cursor, both)')
|
|
67
|
+
.option('--update', 'Update existing skills/rules to latest version')
|
|
67
68
|
.action(ai_1.ai);
|
|
68
69
|
program
|
|
69
70
|
.command('deploy')
|
|
@@ -142,4 +143,4 @@ domainCmd
|
|
|
142
143
|
.option('-k, --api-key <key>', 'API key for authentication')
|
|
143
144
|
.action(domain_1.domainRemove);
|
|
144
145
|
program.parse(process.argv);
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBQW9DO0FBQ3BDLDhDQUEyQztBQUMzQywwQ0FBdUM7QUFDdkMsd0NBQXFDO0FBQ3JDLDRDQUF5QztBQUN6Qyw0Q0FBeUM7QUFDekMsNENBQXlDO0FBQ3pDLDhDQUEyQztBQUMzQywwQ0FBMEQ7QUFDMUQsOENBQTJDO0FBQzNDLDhDQUF1RDtBQUN2RCxzQ0FBbUM7QUFDbkMsOENBQXdGO0FBRXhGLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxELE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixJQUFJLENBQUMsUUFBUSxDQUFDO0tBQ2QsV0FBVyxDQUFDLHdDQUF3QyxDQUFDO0tBQ3JELE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFaEMsT0FBTztLQUNKLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQztLQUNyQyxXQUFXLENBQUMsd0NBQXdDLENBQUM7S0FDckQsTUFBTSxDQUFDLHVCQUF1QixFQUFFLDJDQUEyQyxDQUFDO0tBQzVFLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxtREFBbUQsQ0FBQztLQUMxRixNQUFNLENBQUMsVUFBVSxFQUFFLHlCQUF5QixDQUFDO0tBQzdDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsOEJBQThCLENBQUM7S0FDdEQsTUFBTSxDQUFDLGFBQWEsRUFBRSxpRUFBaUUsQ0FBQztLQUN4RixNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7S0FDakUsTUFBTSxDQUFDLGVBQU0sQ0FBQyxDQUFDO0FBRWxCLE9BQU87S0FDSixPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2YsV0FBVyxDQUFDLDRDQUE0QyxDQUFDO0tBQ3pELE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENB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NEIsQ0FBQztLQUMzRCxNQUFNLENBQUMscUJBQVksQ0FBQyxDQUFDO0FBRXhCLFNBQVM7S0FDTixPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2pCLFdBQVcsQ0FBQyxpREFBaUQsQ0FBQztLQUM5RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0tBQ3BDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSw0QkFBNEIsQ0FBQztLQUMzRCxNQUFNLENBQUMscUJBQVksQ0FBQyxDQUFDO0FBRXhCLFNBQVM7S0FDTixPQUFPLENBQUMsd0JBQXdCLENBQUM7S0FDakMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDO0tBQ2hELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUM7S0FDcEMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLDRCQUE0QixDQUFDO0tBQzNELE1BQU0sQ0FBQyxxQkFBWSxDQUFDLENBQUM7QUFFeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGNyZWF0ZSB9IGZyb20gJy4vY29tbWFuZHMvY3JlYXRlJztcbmltcG9ydCB7IGluaXQgfSBmcm9tICcuL2NvbW1hbmRzL2luaXQnO1xuaW1wb3J0IHsgZGV2IH0gZnJvbSAnLi9jb21tYW5kcy9kZXYnO1xuaW1wb3J0IHsgYnVpbGQgfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkJztcbmltcG9ydCB7IHN0YXJ0IH0gZnJvbSAnLi9jb21tYW5kcy9zdGFydCc7XG5pbXBvcnQgeyBjaGVjayB9IGZyb20gJy4vY29tbWFuZHMvY2hlY2snO1xuaW1wb3J0IHsgZGVwbG95IH0gZnJvbSAnLi9jb21tYW5kcy9kZXBsb3knO1xuaW1wb3J0IHsgbGlzdEtleXMsIHJlZ2VuZXJhdGVLZXkgfSBmcm9tICcuL2NvbW1hbmRzL2tleXMnO1xuaW1wb3J0IHsgd2hvYW1pIH0gZnJvbSAnLi9jb21tYW5kcy93aG9hbWknO1xuaW1wb3J0IHsgdXBsb2FkLCBsaXN0QXNzZXRzIH0gZnJvbSAnLi9jb21tYW5kcy91cGxvYWQnO1xuaW1wb3J0IHsgYWkgfSBmcm9tICcuL2NvbW1hbmRzL2FpJztcbmltcG9ydCB7IGRvbWFpbkFkZCwgZG9tYWluU3RhdHVzLCBkb21haW5WZXJpZnksIGRvbWFpblJlbW92ZSB9IGZyb20gJy4vY29tbWFuZHMvZG9tYWluJztcblxuY29uc3QgcGFja2FnZUpzb24gPSByZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ2RldmRvYycpXG4gIC5kZXNjcmlwdGlvbignRG9jdW1lbnRhdGlvbiBmcmFtZXdvcmsgZm9yIGRldmVsb3BlcnMnKVxuICAudmVyc2lvbihwYWNrYWdlSnNvbi52ZXJzaW9uKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnY3JlYXRlIFtwcm9qZWN0LWRpcmVjdG9yeV0nKVxuICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIG5ldyBEZXZEb2MgZG9jdW1lbnRhdGlvbiBzaXRlJylcbiAgLm9wdGlvbignLXQsIC0tdGVtcGxhdGUgPHR5cGU+JywgJ1RlbXBsYXRlIHRvIHVzZSAoYmFzaWMsIG9wZW5hcGksIGdyYXBocWwpJylcbiAgLm9wdGlvbignLXMsIC0tc3ViZG9tYWluIDxzdWJkb21haW4+JywgJ1N1YmRvbWFpbiBmb3IgeW91ciBkb2NzIChlLmcuLCBteS1kb2NzLmRldmRvYy5zaCknKVxuICAub3B0aW9uKCctLW5vLWdpdCcsICdTa2lwIGdpdCBpbml0aWFsaXphdGlvbicpXG4gIC5vcHRpb24oJy0tbm8taW5zdGFsbCcsICdTa2lwIGluc3RhbGxpbmcgZGVwZW5kZW5jaWVzJylcbiAgLm9wdGlvbignLS1haSBbdG9vbF0nLCAnU2V0IHVwIEFJIGFnZW50cyAoY2xhdWRlLCBjdXJzb3IsIGJvdGgsIG9yIGp1c3QgLS1haSB0byBjaG9vc2UpJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwgKGRlZmF1bHQ6IGh0dHBzOi8vZGV2ZG9jLnNoKScpXG4gIC5hY3Rpb24oY3JlYXRlKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnaW5pdCcpXG4gIC5kZXNjcmlwdGlvbignSW5pdGlhbGl6ZS9yZWdpc3RlciBwcm9qZWN0IHdpdGggQnJhaW5maXNoJylcbiAgLm9wdGlvbignLXMsIC0tc2x1ZyA8c2x1Zz4nLCAnUHJvamVjdCBzbHVnJylcbiAgLm9wdGlvbignLS1zdWJkb21haW4gPHN1YmRvbWFpbj4nLCAnU3ViZG9tYWluIGZvciB5b3VyIGRvY3MgKGUuZy4sIG15LWRvY3MuZGV2ZG9jLnNoKScpXG4gIC5vcHRpb24oJy1mLCAtLWZvcmNlJywgJ092ZXJ3cml0ZSBleGlzdGluZyAuZGV2ZG9jLmpzb24nKVxuICAub3B0aW9uKCctLWFpIFt0b29sXScsICdTZXQgdXAgQUkgYWdlbnRzIChjbGF1ZGUsIGN1cnNvciwgYm90aCwgb3IganVzdCAtLWFpIHRvIGNob29zZSknKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCAoZGVmYXVsdDogaHR0cHM6Ly9kZXZkb2Muc2gpJylcbiAgLmFjdGlvbihpbml0KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnZGV2JylcbiAgLmRlc2NyaXB0aW9uKCdTdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIgd2l0aCBob3QgcmVsb2FkJylcbiAgLm9wdGlvbignLXAsIC0tcG9ydCA8cG9ydD4nLCAnUG9ydCB0byBydW4gdGhlIHNlcnZlciBvbicsICczMzMzJylcbiAgLm9wdGlvbignLUgsIC0taG9zdCA8aG9zdD4nLCAnSG9zdCB0byBiaW5kIHRoZSBzZXJ2ZXIgdG8nLCAnbG9jYWxob3N0JylcbiAgLm9wdGlvbignLW8sIC0tb3BlbicsICdPcGVuIGJyb3dzZXIgYXV0b21hdGljYWxseScsIHRydWUpXG4gIC5vcHRpb24oJy0tbm8tb3BlbicsICdEbyBub3Qgb3BlbiBicm93c2VyIGF1dG9tYXRpY2FsbHknKVxuICAuYWN0aW9uKGRldik7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoJ2J1aWxkJylcbiAgLmRlc2NyaXB0aW9uKCdCdWlsZCBkb2N1bWVudGF0aW9uIGZvciBwcm9kdWN0aW9uJylcbiAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxkaXI+JywgJ091dHB1dCBkaXJlY3RvcnknLCAnZGlzdCcpXG4gIC5hY3Rpb24oYnVpbGQpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdzdGFydCcpXG4gIC5kZXNjcmlwdGlvbignU3RhcnQgcHJvZHVjdGlvbiBzZXJ2ZXInKVxuICAub3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdQb3J0IHRvIHJ1biB0aGUgc2VydmVyIG9uJywgJzMwMDAnKVxuICAuYWN0aW9uKHN0YXJ0KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnY2hlY2snKVxuICAuZGVzY3JpcHRpb24oJ1ZhbGlkYXRlIGRvY3MuanNvbiBhbmQgTURYIGZpbGVzJylcbiAgLmFjdGlvbihjaGVjayk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoJ2FpJylcbiAgLmRlc2NyaXB0aW9uKCdTZXQgdXAgQUkgYWdlbnQgY29uZmlndXJhdGlvbiAoQ2xhdWRlIENvZGUgc2tpbGxzLCBDdXJzb3IgcnVsZXMpJylcbiAgLm9wdGlvbignLXQsIC0tdG9vbCA8dG9vbD4nLCAnQUkgdG9vbCB0byBjb25maWd1cmUgKGNsYXVkZSwgY3Vyc29yLCBib3RoKScpXG4gIC5hY3Rpb24oYWkpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdkZXBsb3knKVxuICAuZGVzY3JpcHRpb24oJ0RlcGxveSBkb2N1bWVudGF0aW9uIHRvIERldkRvYyBwbGF0Zm9ybScpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMIChkZWZhdWx0OiBodHRwczovL2RldmRvYy5zaCknKVxuICAub3B0aW9uKCctaywgLS1hcGkta2V5IDxrZXk+JywgJ0FQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJylcbiAgLmFjdGlvbihkZXBsb3kpO1xuXG4vLyBLZXlzIG1hbmFnZW1lbnRcbmNvbnN0IGtleXNDbWQgPSBwcm9ncmFtXG4gIC5jb21tYW5kKCdrZXlzJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2UgQVBJIGtleXMgZm9yIHlvdXIgcHJvamVjdCcpO1xuXG5rZXlzQ21kXG4gIC5jb21tYW5kKCdsaXN0JylcbiAgLmRlc2NyaXB0aW9uKCdTaG93IGN1cnJlbnQgQVBJIGtleSBpbmZvJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAuYWN0aW9uKGxpc3RLZXlzKTtcblxua2V5c0NtZFxuICAuY29tbWFuZCgncmVnZW5lcmF0ZScpXG4gIC5kZXNjcmlwdGlvbignR2VuZXJhdGUgYSBuZXcgQVBJIGtleSAoaW52YWxpZGF0ZXMgdGhlIG9sZCBvbmUpJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAuYWN0aW9uKHJlZ2VuZXJhdGVLZXkpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCd3aG9hbWknKVxuICAuZGVzY3JpcHRpb24oJ1Nob3cgY3VycmVudCBwcm9qZWN0IGluZm9ybWF0aW9uJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAuYWN0aW9uKHdob2FtaSk7XG5cbi8vIEFzc2V0cyBtYW5hZ2VtZW50XG5jb25zdCBhc3NldHNDbWQgPSBwcm9ncmFtXG4gIC5jb21tYW5kKCdhc3NldHMnKVxuICAuZGVzY3JpcHRpb24oJ01hbmFnZSBwcm9qZWN0IGFzc2V0cyAoaW1hZ2VzLCBmaWxlcyknKTtcblxuYXNzZXRzQ21kXG4gIC5jb21tYW5kKCd1cGxvYWQgPGZpbGVzLi4uPicpXG4gIC5kZXNjcmlwdGlvbignVXBsb2FkIGFzc2V0cyB0byBzdG9yYWdlIChtYXggMjVNQiBwZXIgZmlsZSknKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKHVwbG9hZCk7XG5cbmFzc2V0c0NtZFxuICAuY29tbWFuZCgnbGlzdCcpXG4gIC5kZXNjcmlwdGlvbignTGlzdCB1cGxvYWRlZCBhc3NldHMnKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKGxpc3RBc3NldHMpO1xuXG4vLyBTaG9ydGN1dCBmb3IgdXBsb2FkXG5wcm9ncmFtXG4gIC5jb21tYW5kKCd1cGxvYWQgPGZpbGVzLi4uPicpXG4gIC5kZXNjcmlwdGlvbignVXBsb2FkIGFzc2V0cyB0byBzdG9yYWdlIChzaG9ydGN1dCBmb3IgXCJkZXZkb2MgYXNzZXRzIHVwbG9hZFwiKScpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMJylcbiAgLm9wdGlvbignLWssIC0tYXBpLWtleSA8a2V5PicsICdBUEkga2V5IGZvciBhdXRoZW50aWNhdGlvbicpXG4gIC5hY3Rpb24odXBsb2FkKTtcblxuLy8gRG9tYWluIG1hbmFnZW1lbnQgLSBjdXN0b20gZG9tYWlucyAob25lIHBlciBwcm9qZWN0LCBmcmVlKVxuY29uc3QgZG9tYWluQ21kID0gcHJvZ3JhbVxuICAuY29tbWFuZCgnZG9tYWluJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2UgY3VzdG9tIGRvbWFpbiBmb3IgeW91ciBkb2N1bWVudGF0aW9uJyk7XG5cbmRvbWFpbkNtZFxuICAuY29tbWFuZCgnYWRkIDxjdXN0b20tZG9tYWluPicpXG4gIC5kZXNjcmlwdGlvbignQWRkIGEgY3VzdG9tIGRvbWFpbiAoZS5nLiwgZG9jcy5leGFtcGxlLmNvbSknKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKGRvbWFpbkFkZCk7XG5cbmRvbWFpbkNtZFxuICAuY29tbWFuZCgnc3RhdHVzJylcbiAgLmRlc2NyaXB0aW9uKCdDaGVjayBjdXN0b20gZG9tYWluIHN0YXR1cyBhbmQgRE5TIGNvbmZpZ3VyYXRpb24nKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKGRvbWFpblN0YXR1cyk7XG5cbmRvbWFpbkNtZFxuICAuY29tbWFuZCgndmVyaWZ5JylcbiAgLmRlc2NyaXB0aW9uKCdWZXJpZnkgRE5TIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgY3VzdG9tIGRvbWFpbicpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMJylcbiAgLm9wdGlvbignLWssIC0tYXBpLWtleSA8a2V5PicsICdBUEkga2V5IGZvciBhdXRoZW50aWNhdGlvbicpXG4gIC5hY3Rpb24oZG9tYWluVmVyaWZ5KTtcblxuZG9tYWluQ21kXG4gIC5jb21tYW5kKCdyZW1vdmUgW2N1c3RvbS1kb21haW5dJylcbiAgLmRlc2NyaXB0aW9uKCdSZW1vdmUgY3VzdG9tIGRvbWFpbiBmcm9tIHByb2plY3QnKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKGRvbWFpblJlbW92ZSk7XG5cbnByb2dyYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBQW9DO0FBQ3BDLDhDQUEyQztBQUMzQywwQ0FBdUM7QUFDdkMsd0NBQXFDO0FBQ3JDLDRDQUF5QztBQUN6Qyw0Q0FBeUM7QUFDekMsNENBQXlDO0FBQ3pDLDhDQUEyQztBQUMzQywwQ0FBMEQ7QUFDMUQsOENBQTJDO0FBQzNDLDhDQUF1RDtBQUN2RCxzQ0FBbUM7QUFDbkMsOENBQXdGO0FBRXhGLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxELE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixJQUFJLENBQUMsUUFBUSxDQUFDO0tBQ2QsV0FBVyxDQUFDLHdDQUF3QyxDQUFDO0tBQ3JELE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFaEMsT0FBTztLQUNKLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQztLQUNyQyxXQUFXLENBQUMsd0NBQXdDLENBQUM7S0FDckQsTUFBTSxDQUFDLHVCQUF1QixFQUFFLDJDQUEyQyxDQUFDO0tBQzVFLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxtREFBbUQsQ0FBQztLQUMxRixNQUFNLENBQUMsVUFBVSxFQUFFLHlCQUF5QixDQUFDO0tBQzdDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsOEJBQThCLENBQUM7S0FDdEQsTUFBTSxDQUFDLGFBQWEsRUFBRSxpRUFBaUUsQ0FBQztLQUN4RixNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7S0FDakUsTUFBTSxDQUFDLGVBQU0sQ0FBQyxDQUFDO0FBRWxCLE9BQU87S0FDSixPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2YsV0FBVyxDQUFDLDRDQUE0QyxDQUFDO0tBQ3pELE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENB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LENBQUM7S0FDcEMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLDRCQUE0QixDQUFDO0tBQzNELE1BQU0sQ0FBQyxxQkFBWSxDQUFDLENBQUM7QUFFeEIsU0FBUztLQUNOLE9BQU8sQ0FBQyxRQUFRLENBQUM7S0FDakIsV0FBVyxDQUFDLGlEQUFpRCxDQUFDO0tBQzlELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUM7S0FDcEMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLDRCQUE0QixDQUFDO0tBQzNELE1BQU0sQ0FBQyxxQkFBWSxDQUFDLENBQUM7QUFFeEIsU0FBUztLQUNOLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztLQUNqQyxXQUFXLENBQUMsbUNBQW1DLENBQUM7S0FDaEQsTUFBTSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQztLQUNwQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsNEJBQTRCLENBQUM7S0FDM0QsTUFBTSxDQUFDLHFCQUFZLENBQUMsQ0FBQztBQUV4QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUnO1xuaW1wb3J0IHsgaW5pdCB9IGZyb20gJy4vY29tbWFuZHMvaW5pdCc7XG5pbXBvcnQgeyBkZXYgfSBmcm9tICcuL2NvbW1hbmRzL2Rldic7XG5pbXBvcnQgeyBidWlsZCB9IGZyb20gJy4vY29tbWFuZHMvYnVpbGQnO1xuaW1wb3J0IHsgc3RhcnQgfSBmcm9tICcuL2NvbW1hbmRzL3N0YXJ0JztcbmltcG9ydCB7IGNoZWNrIH0gZnJvbSAnLi9jb21tYW5kcy9jaGVjayc7XG5pbXBvcnQgeyBkZXBsb3kgfSBmcm9tICcuL2NvbW1hbmRzL2RlcGxveSc7XG5pbXBvcnQgeyBsaXN0S2V5cywgcmVnZW5lcmF0ZUtleSB9IGZyb20gJy4vY29tbWFuZHMva2V5cyc7XG5pbXBvcnQgeyB3aG9hbWkgfSBmcm9tICcuL2NvbW1hbmRzL3dob2FtaSc7XG5pbXBvcnQgeyB1cGxvYWQsIGxpc3RBc3NldHMgfSBmcm9tICcuL2NvbW1hbmRzL3VwbG9hZCc7XG5pbXBvcnQgeyBhaSB9IGZyb20gJy4vY29tbWFuZHMvYWknO1xuaW1wb3J0IHsgZG9tYWluQWRkLCBkb21haW5TdGF0dXMsIGRvbWFpblZlcmlmeSwgZG9tYWluUmVtb3ZlIH0gZnJvbSAnLi9jb21tYW5kcy9kb21haW4nO1xuXG5jb25zdCBwYWNrYWdlSnNvbiA9IHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpO1xuXG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAubmFtZSgnZGV2ZG9jJylcbiAgLmRlc2NyaXB0aW9uKCdEb2N1bWVudGF0aW9uIGZyYW1ld29yayBmb3IgZGV2ZWxvcGVycycpXG4gIC52ZXJzaW9uKHBhY2thZ2VKc29uLnZlcnNpb24pO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdjcmVhdGUgW3Byb2plY3QtZGlyZWN0b3J5XScpXG4gIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmV3IERldkRvYyBkb2N1bWVudGF0aW9uIHNpdGUnKVxuICAub3B0aW9uKCctdCwgLS10ZW1wbGF0ZSA8dHlwZT4nLCAnVGVtcGxhdGUgdG8gdXNlIChiYXNpYywgb3BlbmFwaSwgZ3JhcGhxbCknKVxuICAub3B0aW9uKCctcywgLS1zdWJkb21haW4gPHN1YmRvbWFpbj4nLCAnU3ViZG9tYWluIGZvciB5b3VyIGRvY3MgKGUuZy4sIG15LWRvY3MuZGV2ZG9jLnNoKScpXG4gIC5vcHRpb24oJy0tbm8tZ2l0JywgJ1NraXAgZ2l0IGluaXRpYWxpemF0aW9uJylcbiAgLm9wdGlvbignLS1uby1pbnN0YWxsJywgJ1NraXAgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMnKVxuICAub3B0aW9uKCctLWFpIFt0b29sXScsICdTZXQgdXAgQUkgYWdlbnRzIChjbGF1ZGUsIGN1cnNvciwgYm90aCwgb3IganVzdCAtLWFpIHRvIGNob29zZSknKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCAoZGVmYXVsdDogaHR0cHM6Ly9kZXZkb2Muc2gpJylcbiAgLmFjdGlvbihjcmVhdGUpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdpbml0JylcbiAgLmRlc2NyaXB0aW9uKCdJbml0aWFsaXplL3JlZ2lzdGVyIHByb2plY3Qgd2l0aCBCcmFpbmZpc2gnKVxuICAub3B0aW9uKCctcywgLS1zbHVnIDxzbHVnPicsICdQcm9qZWN0IHNsdWcnKVxuICAub3B0aW9uKCctLXN1YmRvbWFpbiA8c3ViZG9tYWluPicsICdTdWJkb21haW4gZm9yIHlvdXIgZG9jcyAoZS5nLiwgbXktZG9jcy5kZXZkb2Muc2gpJylcbiAgLm9wdGlvbignLWYsIC0tZm9yY2UnLCAnT3ZlcndyaXRlIGV4aXN0aW5nIC5kZXZkb2MuanNvbicpXG4gIC5vcHRpb24oJy0tYWkgW3Rvb2xdJywgJ1NldCB1cCBBSSBhZ2VudHMgKGNsYXVkZSwgY3Vyc29yLCBib3RoLCBvciBqdXN0IC0tYWkgdG8gY2hvb3NlKScpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMIChkZWZhdWx0OiBodHRwczovL2RldmRvYy5zaCknKVxuICAuYWN0aW9uKGluaXQpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdkZXYnKVxuICAuZGVzY3JpcHRpb24oJ1N0YXJ0IGRldmVsb3BtZW50IHNlcnZlciB3aXRoIGhvdCByZWxvYWQnKVxuICAub3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdQb3J0IHRvIHJ1biB0aGUgc2VydmVyIG9uJywgJzMzMzMnKVxuICAub3B0aW9uKCctSCwgLS1ob3N0IDxob3N0PicsICdIb3N0IHRvIGJpbmQgdGhlIHNlcnZlciB0bycsICdsb2NhbGhvc3QnKVxuICAub3B0aW9uKCctbywgLS1vcGVuJywgJ09wZW4gYnJvd3NlciBhdXRvbWF0aWNhbGx5JywgdHJ1ZSlcbiAgLm9wdGlvbignLS1uby1vcGVuJywgJ0RvIG5vdCBvcGVuIGJyb3dzZXIgYXV0b21hdGljYWxseScpXG4gIC5hY3Rpb24oZGV2KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnYnVpbGQnKVxuICAuZGVzY3JpcHRpb24oJ0J1aWxkIGRvY3VtZW50YXRpb24gZm9yIHByb2R1Y3Rpb24nKVxuICAub3B0aW9uKCctbywgLS1vdXRwdXQgPGRpcj4nLCAnT3V0cHV0IGRpcmVjdG9yeScsICdkaXN0JylcbiAgLmFjdGlvbihidWlsZCk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoJ3N0YXJ0JylcbiAgLmRlc2NyaXB0aW9uKCdTdGFydCBwcm9kdWN0aW9uIHNlcnZlcicpXG4gIC5vcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1BvcnQgdG8gcnVuIHRoZSBzZXJ2ZXIgb24nLCAnMzAwMCcpXG4gIC5hY3Rpb24oc3RhcnQpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdjaGVjaycpXG4gIC5kZXNjcmlwdGlvbignVmFsaWRhdGUgZG9jcy5qc29uIGFuZCBNRFggZmlsZXMnKVxuICAuYWN0aW9uKGNoZWNrKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnYWknKVxuICAuZGVzY3JpcHRpb24oJ1NldCB1cCBvciB1cGRhdGUgQUkgYWdlbnQgY29uZmlndXJhdGlvbiAoQ2xhdWRlIENvZGUgc2tpbGxzLCBDdXJzb3IgcnVsZXMpJylcbiAgLm9wdGlvbignLXQsIC0tdG9vbCA8dG9vbD4nLCAnQUkgdG9vbCB0byBjb25maWd1cmUgKGNsYXVkZSwgY3Vyc29yLCBib3RoKScpXG4gIC5vcHRpb24oJy0tdXBkYXRlJywgJ1VwZGF0ZSBleGlzdGluZyBza2lsbHMvcnVsZXMgdG8gbGF0ZXN0IHZlcnNpb24nKVxuICAuYWN0aW9uKGFpKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnZGVwbG95JylcbiAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgZG9jdW1lbnRhdGlvbiB0byBEZXZEb2MgcGxhdGZvcm0nKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCAoZGVmYXVsdDogaHR0cHM6Ly9kZXZkb2Muc2gpJylcbiAgLm9wdGlvbignLWssIC0tYXBpLWtleSA8a2V5PicsICdBUEkga2V5IGZvciBhdXRoZW50aWNhdGlvbicpXG4gIC5hY3Rpb24oZGVwbG95KTtcblxuLy8gS2V5cyBtYW5hZ2VtZW50XG5jb25zdCBrZXlzQ21kID0gcHJvZ3JhbVxuICAuY29tbWFuZCgna2V5cycpXG4gIC5kZXNjcmlwdGlvbignTWFuYWdlIEFQSSBrZXlzIGZvciB5b3VyIHByb2plY3QnKTtcblxua2V5c0NtZFxuICAuY29tbWFuZCgnbGlzdCcpXG4gIC5kZXNjcmlwdGlvbignU2hvdyBjdXJyZW50IEFQSSBrZXkgaW5mbycpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMJylcbiAgLmFjdGlvbihsaXN0S2V5cyk7XG5cbmtleXNDbWRcbiAgLmNvbW1hbmQoJ3JlZ2VuZXJhdGUnKVxuICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIGEgbmV3IEFQSSBrZXkgKGludmFsaWRhdGVzIHRoZSBvbGQgb25lKScpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMJylcbiAgLmFjdGlvbihyZWdlbmVyYXRlS2V5KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnd2hvYW1pJylcbiAgLmRlc2NyaXB0aW9uKCdTaG93IGN1cnJlbnQgcHJvamVjdCBpbmZvcm1hdGlvbicpXG4gIC5vcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdBUEkgVVJMJylcbiAgLmFjdGlvbih3aG9hbWkpO1xuXG4vLyBBc3NldHMgbWFuYWdlbWVudFxuY29uc3QgYXNzZXRzQ21kID0gcHJvZ3JhbVxuICAuY29tbWFuZCgnYXNzZXRzJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2UgcHJvamVjdCBhc3NldHMgKGltYWdlcywgZmlsZXMpJyk7XG5cbmFzc2V0c0NtZFxuICAuY29tbWFuZCgndXBsb2FkIDxmaWxlcy4uLj4nKVxuICAuZGVzY3JpcHRpb24oJ1VwbG9hZCBhc3NldHMgdG8gc3RvcmFnZSAobWF4IDI1TUIgcGVyIGZpbGUpJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAub3B0aW9uKCctaywgLS1hcGkta2V5IDxrZXk+JywgJ0FQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJylcbiAgLmFjdGlvbih1cGxvYWQpO1xuXG5hc3NldHNDbWRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgdXBsb2FkZWQgYXNzZXRzJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAub3B0aW9uKCctaywgLS1hcGkta2V5IDxrZXk+JywgJ0FQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJylcbiAgLmFjdGlvbihsaXN0QXNzZXRzKTtcblxuLy8gU2hvcnRjdXQgZm9yIHVwbG9hZFxucHJvZ3JhbVxuICAuY29tbWFuZCgndXBsb2FkIDxmaWxlcy4uLj4nKVxuICAuZGVzY3JpcHRpb24oJ1VwbG9hZCBhc3NldHMgdG8gc3RvcmFnZSAoc2hvcnRjdXQgZm9yIFwiZGV2ZG9jIGFzc2V0cyB1cGxvYWRcIiknKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKHVwbG9hZCk7XG5cbi8vIERvbWFpbiBtYW5hZ2VtZW50IC0gY3VzdG9tIGRvbWFpbnMgKG9uZSBwZXIgcHJvamVjdCwgZnJlZSlcbmNvbnN0IGRvbWFpbkNtZCA9IHByb2dyYW1cbiAgLmNvbW1hbmQoJ2RvbWFpbicpXG4gIC5kZXNjcmlwdGlvbignTWFuYWdlIGN1c3RvbSBkb21haW4gZm9yIHlvdXIgZG9jdW1lbnRhdGlvbicpO1xuXG5kb21haW5DbWRcbiAgLmNvbW1hbmQoJ2FkZCA8Y3VzdG9tLWRvbWFpbj4nKVxuICAuZGVzY3JpcHRpb24oJ0FkZCBhIGN1c3RvbSBkb21haW4gKGUuZy4sIGRvY3MuZXhhbXBsZS5jb20pJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAub3B0aW9uKCctaywgLS1hcGkta2V5IDxrZXk+JywgJ0FQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJylcbiAgLmFjdGlvbihkb21haW5BZGQpO1xuXG5kb21haW5DbWRcbiAgLmNvbW1hbmQoJ3N0YXR1cycpXG4gIC5kZXNjcmlwdGlvbignQ2hlY2sgY3VzdG9tIGRvbWFpbiBzdGF0dXMgYW5kIEROUyBjb25maWd1cmF0aW9uJylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAub3B0aW9uKCctaywgLS1hcGkta2V5IDxrZXk+JywgJ0FQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJylcbiAgLmFjdGlvbihkb21haW5TdGF0dXMpO1xuXG5kb21haW5DbWRcbiAgLmNvbW1hbmQoJ3ZlcmlmeScpXG4gIC5kZXNjcmlwdGlvbignVmVyaWZ5IEROUyBjb25maWd1cmF0aW9uIGZvciB5b3VyIGN1c3RvbSBkb21haW4nKVxuICAub3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnQVBJIFVSTCcpXG4gIC5vcHRpb24oJy1rLCAtLWFwaS1rZXkgPGtleT4nLCAnQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nKVxuICAuYWN0aW9uKGRvbWFpblZlcmlmeSk7XG5cbmRvbWFpbkNtZFxuICAuY29tbWFuZCgncmVtb3ZlIFtjdXN0b20tZG9tYWluXScpXG4gIC5kZXNjcmlwdGlvbignUmVtb3ZlIGN1c3RvbSBkb21haW4gZnJvbSBwcm9qZWN0JylcbiAgLm9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ0FQSSBVUkwnKVxuICAub3B0aW9uKCctaywgLS1hcGkta2V5IDxrZXk+JywgJ0FQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJylcbiAgLmFjdGlvbihkb21haW5SZW1vdmUpO1xuXG5wcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { useMemo } from 'react'
|
|
3
|
+
import { useMemo, useEffect, useState } from 'react'
|
|
4
|
+
import { createPortal } from 'react-dom'
|
|
4
5
|
import { X, Spinner } from '@phosphor-icons/react'
|
|
5
6
|
import { Button } from '@/components/ui/button'
|
|
6
7
|
import {
|
|
@@ -54,6 +55,12 @@ export function DocsSidebar({
|
|
|
54
55
|
isVersionLoading,
|
|
55
56
|
}: ApiDocsSidebarProps) {
|
|
56
57
|
const { isMobile, isLeftSidebarOpen, closeLeftSidebar } = useMobile()
|
|
58
|
+
const [mounted, setMounted] = useState(false)
|
|
59
|
+
|
|
60
|
+
// Ensure we're mounted before using portal (for SSR)
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
setMounted(true)
|
|
63
|
+
}, [])
|
|
57
64
|
|
|
58
65
|
// Handle request selection with mobile close
|
|
59
66
|
const handleSelectRequest = (request: BrainfishRESTRequest) => {
|
|
@@ -145,12 +152,96 @@ export function DocsSidebar({
|
|
|
145
152
|
)
|
|
146
153
|
}
|
|
147
154
|
|
|
148
|
-
|
|
155
|
+
// Sidebar content component (shared between mobile and desktop)
|
|
156
|
+
const sidebarContent = (
|
|
157
|
+
<>
|
|
158
|
+
{/* Mobile close button */}
|
|
159
|
+
{isMobile && (
|
|
160
|
+
<div className="px-4 h-[41px] flex items-center justify-end border-b border-sidebar-border shrink-0">
|
|
161
|
+
<Button
|
|
162
|
+
variant="ghost"
|
|
163
|
+
size="icon"
|
|
164
|
+
onClick={closeLeftSidebar}
|
|
165
|
+
className="h-7 w-7 lg:hidden"
|
|
166
|
+
>
|
|
167
|
+
<X className="h-4 w-4" weight="bold" />
|
|
168
|
+
</Button>
|
|
169
|
+
</div>
|
|
170
|
+
)}
|
|
171
|
+
|
|
172
|
+
{/* API Version Selector - Only show when multiple versions exist and on API Reference tab */}
|
|
173
|
+
{activeTab === 'api-reference' && apiVersions && apiVersions.length > 1 && (
|
|
174
|
+
<div className="docs-sidebar-version-selector px-4 py-3 border-b border-sidebar-border shrink-0">
|
|
175
|
+
<div className="flex items-center justify-between mb-1.5">
|
|
176
|
+
<label className="docs-sidebar-version-label text-xs font-medium text-muted-foreground">
|
|
177
|
+
API Version
|
|
178
|
+
</label>
|
|
179
|
+
{isVersionLoading && (
|
|
180
|
+
<Spinner className="h-3 w-3 animate-spin text-muted-foreground" />
|
|
181
|
+
)}
|
|
182
|
+
</div>
|
|
183
|
+
<Select
|
|
184
|
+
value={selectedApiVersion || apiVersions.find(v => v.default)?.version || apiVersions[0]?.version}
|
|
185
|
+
onValueChange={(value) => onApiVersionChange?.(value)}
|
|
186
|
+
disabled={isVersionLoading}
|
|
187
|
+
>
|
|
188
|
+
<SelectTrigger className={cn("docs-sidebar-version-trigger w-full h-9 text-sm", isVersionLoading && "opacity-50")}>
|
|
189
|
+
<SelectValue placeholder="Select version" />
|
|
190
|
+
</SelectTrigger>
|
|
191
|
+
<SelectContent>
|
|
192
|
+
{apiVersions.map((v) => (
|
|
193
|
+
<SelectItem key={v.version} value={v.version}>
|
|
194
|
+
{v.version}
|
|
195
|
+
{v.default && <span className="ml-2 text-xs text-muted-foreground">(latest)</span>}
|
|
196
|
+
</SelectItem>
|
|
197
|
+
))}
|
|
198
|
+
</SelectContent>
|
|
199
|
+
</Select>
|
|
200
|
+
</div>
|
|
201
|
+
)}
|
|
202
|
+
|
|
203
|
+
{/* Scrollable content with sliding indicator */}
|
|
204
|
+
<SlidingIndicatorProvider className="docs-sidebar-content flex-1 overflow-y-auto overflow-x-hidden custom-scroll">
|
|
205
|
+
{/* Documentation Pages Section (from docs.json groups) */}
|
|
206
|
+
{docGroups.length > 0 && (
|
|
207
|
+
<>
|
|
208
|
+
{docGroups.map((group, index) => (
|
|
209
|
+
<SidebarSection
|
|
210
|
+
key={group.id}
|
|
211
|
+
title={group.title}
|
|
212
|
+
icon={group.icon}
|
|
213
|
+
className={index > 0 ? '' : ''}
|
|
214
|
+
>
|
|
215
|
+
{group.pages.map(renderDocPage)}
|
|
216
|
+
</SidebarSection>
|
|
217
|
+
))}
|
|
218
|
+
</>
|
|
219
|
+
)}
|
|
220
|
+
|
|
221
|
+
{/* Endpoints Section */}
|
|
222
|
+
{(collection.folders.length > 0 || collection.requests.length > 0) && (
|
|
223
|
+
<SidebarSection
|
|
224
|
+
title="Endpoints"
|
|
225
|
+
className={docGroups.length > 0 ? 'border-t border-sidebar-border' : ''}
|
|
226
|
+
>
|
|
227
|
+
<CollectionTree
|
|
228
|
+
collection={collection}
|
|
229
|
+
selectedRequest={selectedRequest}
|
|
230
|
+
onSelectRequest={handleSelectRequest}
|
|
231
|
+
/>
|
|
232
|
+
</SidebarSection>
|
|
233
|
+
)}
|
|
234
|
+
</SlidingIndicatorProvider>
|
|
235
|
+
</>
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
// Mobile sidebar rendered via portal to escape stacking context
|
|
239
|
+
const mobileSidebar = mounted && isMobile ? createPortal(
|
|
149
240
|
<>
|
|
150
241
|
{/* Mobile overlay backdrop */}
|
|
151
|
-
{
|
|
242
|
+
{isLeftSidebarOpen && (
|
|
152
243
|
<div
|
|
153
|
-
className="docs-sidebar-overlay fixed inset-0 bg-black/50 z-
|
|
244
|
+
className="docs-sidebar-overlay fixed inset-0 bg-black/50 z-[55] lg:hidden"
|
|
154
245
|
onClick={closeLeftSidebar}
|
|
155
246
|
/>
|
|
156
247
|
)}
|
|
@@ -158,94 +249,34 @@ export function DocsSidebar({
|
|
|
158
249
|
<aside
|
|
159
250
|
className={cn(
|
|
160
251
|
"docs-sidebar flex flex-col border-r border-sidebar-border overflow-hidden bg-muted dark:bg-background",
|
|
161
|
-
|
|
162
|
-
"lg:relative lg:w-72 lg:h-full",
|
|
163
|
-
// Mobile: drawer behavior
|
|
164
|
-
"fixed inset-y-0 left-0 z-50 w-[280px] h-full",
|
|
252
|
+
"fixed inset-y-0 left-0 z-[60] w-[280px] h-full",
|
|
165
253
|
"transform transition-transform duration-300 ease-in-out",
|
|
166
|
-
"
|
|
167
|
-
|
|
168
|
-
isMobile && isLeftSidebarOpen && "translate-x-0"
|
|
254
|
+
!isLeftSidebarOpen && "-translate-x-full",
|
|
255
|
+
isLeftSidebarOpen && "translate-x-0"
|
|
169
256
|
)}
|
|
170
257
|
>
|
|
171
|
-
{
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
size="icon"
|
|
177
|
-
onClick={closeLeftSidebar}
|
|
178
|
-
className="h-7 w-7 lg:hidden"
|
|
179
|
-
>
|
|
180
|
-
<X className="h-4 w-4" weight="bold" />
|
|
181
|
-
</Button>
|
|
182
|
-
</div>
|
|
183
|
-
)}
|
|
184
|
-
|
|
185
|
-
{/* API Version Selector - Only show when multiple versions exist and on API Reference tab */}
|
|
186
|
-
{activeTab === 'api-reference' && apiVersions && apiVersions.length > 1 && (
|
|
187
|
-
<div className="docs-sidebar-version-selector px-4 py-3 border-b border-sidebar-border shrink-0">
|
|
188
|
-
<div className="flex items-center justify-between mb-1.5">
|
|
189
|
-
<label className="docs-sidebar-version-label text-xs font-medium text-muted-foreground">
|
|
190
|
-
API Version
|
|
191
|
-
</label>
|
|
192
|
-
{isVersionLoading && (
|
|
193
|
-
<Spinner className="h-3 w-3 animate-spin text-muted-foreground" />
|
|
194
|
-
)}
|
|
195
|
-
</div>
|
|
196
|
-
<Select
|
|
197
|
-
value={selectedApiVersion || apiVersions.find(v => v.default)?.version || apiVersions[0]?.version}
|
|
198
|
-
onValueChange={(value) => onApiVersionChange?.(value)}
|
|
199
|
-
disabled={isVersionLoading}
|
|
200
|
-
>
|
|
201
|
-
<SelectTrigger className={cn("docs-sidebar-version-trigger w-full h-9 text-sm", isVersionLoading && "opacity-50")}>
|
|
202
|
-
<SelectValue placeholder="Select version" />
|
|
203
|
-
</SelectTrigger>
|
|
204
|
-
<SelectContent>
|
|
205
|
-
{apiVersions.map((v) => (
|
|
206
|
-
<SelectItem key={v.version} value={v.version}>
|
|
207
|
-
{v.version}
|
|
208
|
-
{v.default && <span className="ml-2 text-xs text-muted-foreground">(latest)</span>}
|
|
209
|
-
</SelectItem>
|
|
210
|
-
))}
|
|
211
|
-
</SelectContent>
|
|
212
|
-
</Select>
|
|
213
|
-
</div>
|
|
214
|
-
)}
|
|
258
|
+
{sidebarContent}
|
|
259
|
+
</aside>
|
|
260
|
+
</>,
|
|
261
|
+
document.body
|
|
262
|
+
) : null
|
|
215
263
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
>
|
|
228
|
-
{group.pages.map(renderDocPage)}
|
|
229
|
-
</SidebarSection>
|
|
230
|
-
))}
|
|
231
|
-
</>
|
|
232
|
-
)}
|
|
264
|
+
// Desktop sidebar rendered in place
|
|
265
|
+
const desktopSidebar = !isMobile ? (
|
|
266
|
+
<aside
|
|
267
|
+
className={cn(
|
|
268
|
+
"docs-sidebar flex flex-col border-r border-sidebar-border overflow-hidden bg-muted dark:bg-background",
|
|
269
|
+
"relative w-72 h-full"
|
|
270
|
+
)}
|
|
271
|
+
>
|
|
272
|
+
{sidebarContent}
|
|
273
|
+
</aside>
|
|
274
|
+
) : null
|
|
233
275
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
className={docGroups.length > 0 ? 'border-t border-sidebar-border' : ''}
|
|
239
|
-
>
|
|
240
|
-
<CollectionTree
|
|
241
|
-
collection={collection}
|
|
242
|
-
selectedRequest={selectedRequest}
|
|
243
|
-
onSelectRequest={handleSelectRequest}
|
|
244
|
-
/>
|
|
245
|
-
</SidebarSection>
|
|
246
|
-
)}
|
|
247
|
-
</SlidingIndicatorProvider>
|
|
248
|
-
</aside>
|
|
276
|
+
return (
|
|
277
|
+
<>
|
|
278
|
+
{mobileSidebar}
|
|
279
|
+
{desktopSidebar}
|
|
249
280
|
</>
|
|
250
281
|
)
|
|
251
282
|
}
|