@brainfish-ai/devdoc 0.1.39 → 0.1.41

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.
@@ -19,23 +19,78 @@
19
19
  "format": "date-time",
20
20
  "description": "ISO 8601 timestamp of last update"
21
21
  },
22
- "git": {
22
+ "strategy": {
23
23
  "type": "object",
24
- "description": "Git state when context was created/updated",
24
+ "description": "Documentation strategy - goals and audience",
25
25
  "properties": {
26
- "commitHash": {
26
+ "goal": {
27
27
  "type": "string",
28
- "description": "Full commit SHA when context was generated",
29
- "pattern": "^[a-f0-9]{40}$"
28
+ "description": "Primary goal of the documentation"
30
29
  },
31
- "commitShort": {
30
+ "audience": {
31
+ "type": "object",
32
+ "properties": {
33
+ "primary": {
34
+ "type": "string",
35
+ "description": "Primary audience type"
36
+ },
37
+ "needs": {
38
+ "type": "array",
39
+ "items": { "type": "string" },
40
+ "description": "Audience needs and pain points"
41
+ }
42
+ }
43
+ }
44
+ }
45
+ },
46
+ "preferences": {
47
+ "type": "object",
48
+ "description": "User preferences from bootstrap",
49
+ "properties": {
50
+ "docType": {
32
51
  "type": "string",
33
- "description": "Short commit hash (7 chars)",
34
- "pattern": "^[a-f0-9]{7}$"
52
+ "enum": ["api", "product", "internal"],
53
+ "description": "Documentation domain type"
35
54
  },
36
- "branch": {
55
+ "apiType": {
37
56
  "type": "string",
38
- "description": "Branch name when generated"
57
+ "enum": ["openapi", "graphql", "both", "manual"],
58
+ "description": "API specification type"
59
+ },
60
+ "codeLanguage": {
61
+ "type": "string",
62
+ "description": "Primary language for code examples"
63
+ }
64
+ }
65
+ },
66
+ "projectOverview": {
67
+ "type": "object",
68
+ "description": "Quick project summary from git scan",
69
+ "properties": {
70
+ "name": {
71
+ "type": "string",
72
+ "description": "Project name"
73
+ },
74
+ "type": {
75
+ "type": "string",
76
+ "description": "Project type (API/Library/CLI/Web App)"
77
+ },
78
+ "language": {
79
+ "type": "string",
80
+ "description": "Primary programming language"
81
+ },
82
+ "framework": {
83
+ "type": "string",
84
+ "description": "Main framework"
85
+ },
86
+ "summary": {
87
+ "type": "string",
88
+ "description": "One sentence project description"
89
+ },
90
+ "structure": {
91
+ "type": "array",
92
+ "items": { "type": "string" },
93
+ "description": "Key directories"
39
94
  }
40
95
  }
41
96
  },
@@ -240,6 +295,50 @@
240
295
  }
241
296
  }
242
297
  },
298
+ "contentPlan": {
299
+ "type": "object",
300
+ "description": "Approved documentation plan",
301
+ "properties": {
302
+ "approved": {
303
+ "type": "boolean",
304
+ "description": "Whether user approved the IA structure"
305
+ },
306
+ "approvedAt": {
307
+ "type": "string",
308
+ "format": "date-time",
309
+ "description": "When the plan was approved"
310
+ },
311
+ "pages": {
312
+ "type": "array",
313
+ "items": {
314
+ "type": "object",
315
+ "properties": {
316
+ "path": {
317
+ "type": "string",
318
+ "description": "File path relative to docs/"
319
+ },
320
+ "type": {
321
+ "type": "string",
322
+ "enum": ["tutorial", "how-to", "reference", "explanation"],
323
+ "description": "Diátaxis content type"
324
+ },
325
+ "priority": {
326
+ "type": "string",
327
+ "enum": ["high", "medium", "low"],
328
+ "description": "Documentation priority"
329
+ },
330
+ "status": {
331
+ "type": "string",
332
+ "enum": ["planned", "in_progress", "completed"],
333
+ "description": "Page status"
334
+ }
335
+ },
336
+ "required": ["path", "type"]
337
+ },
338
+ "description": "Planned documentation pages"
339
+ }
340
+ }
341
+ },
243
342
  "learned": {
244
343
  "type": "object",
245
344
  "description": "Information learned during documentation sessions",
@@ -673,26 +673,24 @@ async function create(projectDirectory, options) {
673
673
  console.log('Your docs will be available at:');
674
674
  console.log(` https://${subdomain}.devdoc.sh`);
675
675
  console.log();
676
- logger_1.logger.info('Note: The subdomain will be reserved when you run "devdoc deploy"');
677
- console.log();
678
- console.log('Inside that directory, you can run several commands:');
679
- console.log();
680
- console.log(' npm run dev');
681
- console.log(' Starts the development server.');
682
- console.log();
683
- console.log(' devdoc deploy');
684
- console.log(' Deploys and claims your subdomain.');
676
+ logger_1.logger.info('Note: The subdomain will be reserved when you run "npm run deploy"');
685
677
  console.log();
686
678
  }
687
679
  else {
688
680
  console.log('This is an internal documentation project for local development.');
689
681
  console.log();
690
- console.log('Inside that directory, you can run:');
691
- console.log();
692
- console.log(' npm run dev');
693
- console.log(' Starts the development server at http://localhost:3000');
694
- console.log();
695
682
  }
683
+ console.log('Available commands:');
684
+ console.log();
685
+ console.log(' npm run dev Start the development server');
686
+ console.log(' npm run build Build for production');
687
+ console.log(' npm run start Start production server');
688
+ console.log(' npm run check Validate docs.json and MDX files');
689
+ console.log(' npm run deploy Deploy to DevDoc platform');
690
+ console.log(' npm run ai Set up AI agent configuration');
691
+ console.log(' npm run whoami Show current project info');
692
+ console.log(' npm run upgrade Update devdoc to latest version');
693
+ console.log();
696
694
  console.log('We suggest that you begin by typing:');
697
695
  console.log();
698
696
  console.log(` cd ${projectName}`);
@@ -719,4 +717,4 @@ async function create(projectDirectory, options) {
719
717
  console.log('Happy documenting!');
720
718
  console.log();
721
719
  }
722
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzZEEsd0JBMFVDO0FBaHlCRCxpREFBeUM7QUFDekMsZ0RBQXdCO0FBQ3hCLHdEQUEwQjtBQUMxQixpQ0FBeUM7QUFDekMsK0NBQTRDO0FBQzVDLCtDQUFrRDtBQUVsRCx1REFBdUQ7QUFDdkQsTUFBTSxhQUFhLEdBQUcsOENBQThDLENBQUM7QUFFckUsdUZBQXVGO0FBQ3ZGLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLEtBQUssRUFBRTtRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGlEQUFpRDtRQUM5RCxLQUFLLEVBQUUsU0FBUztLQUNqQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxLQUFLLEVBQUUsU0FBUztLQUNqQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxLQUFLLEVBQUUsU0FBUztLQUNqQjtDQUNPLENBQUM7QUFJWCxzQkFBc0I7QUFDdEIsTUFBTSxTQUFTLEdBQUc7SUFDaEIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsdURBQXVEO0tBQ3JFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLFVBQVU7UUFDaEIsV0FBVyxFQUFFLDREQUE0RDtLQUMxRTtDQUNPLENBQUM7QUFtQlgsc0NBQXNDO0FBQ3RDLEtBQUssVUFBVSxNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBRyx3REFBYSxVQUFVLEdBQUMsQ0FBQztJQUMxQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxD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QUNsQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBkb3dubG9hZFRlbXBsYXRlIH0gZnJvbSAnZ2lnZXQnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJztcbmltcG9ydCB7IERFRkFVTFRfQVBJX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbi8vIFJlbW90ZSB0ZW1wbGF0ZSByZXBvc2l0b3J5IC0gc2luZ2xlIHN0YXJ0ZXIgdGVtcGxhdGVcbmNvbnN0IFRFTVBMQVRFX1JFUE8gPSAnZ2l0aHViOmJyYWluZmlzaC1haS9kZXZkb2MvdGVtcGxhdGVzL3N0YXJ0ZXInO1xuXG4vLyBBdmFpbGFibGUgdGVtcGxhdGUgdHlwZXMgKGFsbCB1c2UgdGhlIHNhbWUgc3RhcnRlciB0ZW1wbGF0ZSwganVzdCBkaWZmZXJlbnQgY29uZmlncylcbmNvbnN0IFRFTVBMQVRFUyA9IHtcbiAgYmFzaWM6IHtcbiAgICBuYW1lOiAnQmFzaWMnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2ltcGxlIGRvY3VtZW50YXRpb24gc2l0ZSB3aXRoIGd1aWRlcyBhbmQgcGFnZXMnLFxuICAgIGNvbG9yOiAnIzEwYjk4MScsXG4gIH0sXG4gIG9wZW5hcGk6IHtcbiAgICBuYW1lOiAnT3BlbkFQSScsXG4gICAgZGVzY3JpcHRpb246ICdEb2N1bWVudGF0aW9uIHdpdGggUkVTVCBBUEkgcmVmZXJlbmNlIChPcGVuQVBJL1N3YWdnZXIpJyxcbiAgICBjb2xvcjogJyMxMGI5ODEnLFxuICB9LFxuICBncmFwaHFsOiB7XG4gICAgbmFtZTogJ0dyYXBoUUwnLFxuICAgIGRlc2NyaXB0aW9uOiAnRG9jdW1lbnRhdGlvbiB3aXRoIEdyYXBoUUwgQVBJIHBsYXlncm91bmQnLFxuICAgIGNvbG9yOiAnI2U1MzVhYicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFRlbXBsYXRlVHlwZSA9IGtleW9mIHR5cGVvZiBURU1QTEFURVM7XG5cbi8vIERvY3VtZW50YXRpb24gdHlwZXNcbmNvbnN0IERPQ19UWVBFUyA9IHtcbiAgcHVibGljOiB7XG4gICAgbmFtZTogJ1B1YmxpYycsXG4gICAgZGVzY3JpcHRpb246ICdVc2VyLWZhY2luZyBkb2NzIHdpdGggY3VzdG9tIHN1YmRvbWFpbiBhbmQgZGVwbG95bWVudCcsXG4gIH0sXG4gIGludGVybmFsOiB7XG4gICAgbmFtZTogJ0ludGVybmFsJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RldmVsb3BlciBkb2NzIGZvciBsb2NhbC9wcml2YXRlIHVzZSAobm8gc3ViZG9tYWluIG5lZWRlZCknLFxuICB9LFxufSBhcyBjb25zdDtcblxudHlwZSBEb2NUeXBlID0ga2V5b2YgdHlwZW9mIERPQ19UWVBFUztcblxuaW50ZXJmYWNlIENyZWF0ZU9wdGlvbnMge1xuICB0ZW1wbGF0ZT86IFRlbXBsYXRlVHlwZTtcbiAgZG9jVHlwZT86IERvY1R5cGU7XG4gIGdpdD86IGJvb2xlYW47XG4gIGluc3RhbGw/OiBib29sZWFuO1xuICB1cmw/OiBzdHJpbmc7XG4gIHN1YmRvbWFpbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoZWNrU3ViZG9tYWluUmVzcG9uc2Uge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nO1xuICBzdWdnZXN0aW9uPzogc3RyaW5nO1xufVxuXG4vLyBTaW1wbGUgcHJvbXB0IGhlbHBlciB1c2luZyByZWFkbGluZVxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheVF1ZXN0aW9uID0gZGVmYXVsdFZhbHVlIFxuICAgICAgPyBgJHtxdWVzdGlvbn0gKCR7ZGVmYXVsdFZhbHVlfSk6IGBcbiAgICAgIDogYCR7cXVlc3Rpb259OiBgO1xuICAgIFxuICAgIHJsLnF1ZXN0aW9uKGRpc3BsYXlRdWVzdGlvbiwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRyaW0oKSB8fCBkZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0U2VsZWN0KHF1ZXN0aW9uOiBzdHJpbmcsIGNob2ljZXM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zb2xlLmxvZyhgXFxuJHtxdWVzdGlvbn1cXG5gKTtcbiAgY2hvaWNlcy5mb3JFYWNoKChjaG9pY2UsIGkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgICAke2kgKyAxfS4gJHtjaG9pY2UubGFiZWx9YCk7XG4gIH0pO1xuICBjb25zb2xlLmxvZygpO1xuICBcbiAgY29uc3QgcmVhZGxpbmUgPSBhd2FpdCBpbXBvcnQoJ3JlYWRsaW5lJyk7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbignRW50ZXIgbnVtYmVyOiAnLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChhbnN3ZXIudHJpbSgpLCAxMCkgLSAxO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBjaG9pY2VzLmxlbmd0aCkge1xuICAgICAgICByZXNvbHZlKGNob2ljZXNbaW5kZXhdLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlZmF1bHQgdG8gZmlyc3QgY2hvaWNlXG4gICAgICAgIHJlc29sdmUoY2hvaWNlc1swXS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9tcHRDb25maXJtKHF1ZXN0aW9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZSA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgaGludCA9IGRlZmF1bHRWYWx1ZSA/ICdbWS9uXScgOiAnW3kvTl0nO1xuICAgIHJsLnF1ZXN0aW9uKGAke3F1ZXN0aW9ufSAke2hpbnR9OiBgLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGFuc3dlci50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChub3JtYWxpemVkID09PSAnJykge1xuICAgICAgICByZXNvbHZlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG5vcm1hbGl6ZWQgPT09ICd5JyB8fCBub3JtYWxpemVkID09PSAneWVzJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb2plY3ROYW1lKG5hbWU6IHN0cmluZyk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnUHJvamVjdCBuYW1lIGlzIHJlcXVpcmVkJyB9O1xuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgdmFsaWQgbnBtIHBhY2thZ2UgbmFtZVxuICBpZiAoIS9eW2EtejAtOV1bYS16MC05LS5fXSokL2kudGVzdChuYW1lKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdJbnZhbGlkIHByb2plY3QgbmFtZS4gVXNlIGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgZGFzaGVzLicgfTtcbiAgfVxuICBcbiAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbn1cblxuLyoqXG4gKiBCYXNpYyBzdWJkb21haW4gZm9ybWF0IHZhbGlkYXRpb24gKHNlcnZlciBkb2VzIGZ1bGwgdmFsaWRhdGlvbiBpbmNsdWRpbmcgYmxhY2tsaXN0KVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbjogc3RyaW5nKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmcgfSB7XG4gIGlmICghc3ViZG9tYWluKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBpcyByZXF1aXJlZCcgfTtcbiAgfVxuICBcbiAgaWYgKHN1YmRvbWFpbi5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycycgfTtcbiAgfVxuICBcbiAgaWYgKHN1YmRvbWFpbi5sZW5ndGggPiA2Mykge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gbXVzdCBiZSA2MyBjaGFyYWN0ZXJzIG9yIGxlc3MnIH07XG4gIH1cbiAgXG4gIGlmICghL15bYS16MC05XShbYS16MC05LV0qW2EtejAtOV0pPyQvLnRlc3Qoc3ViZG9tYWluKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gbXVzdCBzdGFydCBhbmQgZW5kIHdpdGggYWxwaGFudW1lcmljLCBjYW4gY29udGFpbiBoeXBoZW5zJyB9O1xuICB9XG4gIFxuICBpZiAoLy0tLy50ZXN0KHN1YmRvbWFpbikpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIGNhbm5vdCBjb250YWluIGNvbnNlY3V0aXZlIGh5cGhlbnMnIH07XG4gIH1cbiAgXG4gIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG59XG5cbi8qKlxuICogQ2hlY2sgc3ViZG9tYWluIGF2YWlsYWJpbGl0eSB2aWEgQVBJIChhbHNvIHZhbGlkYXRlcyBhZ2FpbnN0IHNlcnZlciBibGFja2xpc3QpXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrU3ViZG9tYWluQXZhaWxhYmlsaXR5KFxuICBzdWJkb21haW46IHN0cmluZyxcbiAgYXBpVXJsOiBzdHJpbmdcbik6IFByb21pc2U8Q2hlY2tTdWJkb21haW5SZXNwb25zZT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YXBpVXJsfS9hcGkvc3ViZG9tYWlucy9jaGVja2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgc3ViZG9tYWluIH0pLFxuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBDaGVja1N1YmRvbWFpblJlc3BvbnNlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIEFQSSBpcyB1bmF2YWlsYWJsZSwgYWxsb3cgcHJvY2VlZGluZyAod2lsbCBmYWlsIGF0IHJlZ2lzdHJhdGlvbiBpZiBpbnZhbGlkKVxuICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFByb2plY3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lXG4gICAgLnJlcGxhY2UoLy0vZywgJyAnKVxuICAgIC5yZXBsYWNlKC9cXGJcXHcvZywgKGNoYXIpID0+IGNoYXIudG9VcHBlckNhc2UoKSk7XG59XG5cbmZ1bmN0aW9uIGdldFBhY2thZ2VNYW5hZ2VyKCk6IHN0cmluZyB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfdXNlcl9hZ2VudCB8fCAnJztcbiAgXG4gIGlmICh1c2VyQWdlbnQuc3RhcnRzV2l0aCgneWFybicpKSB7XG4gICAgcmV0dXJuICd5YXJuJztcbiAgfVxuICBcbiAgaWYgKHVzZXJBZ2VudC5zdGFydHNXaXRoKCdwbnBtJykpIHtcbiAgICByZXR1cm4gJ3BucG0nO1xuICB9XG4gIFxuICByZXR1cm4gJ25wbSc7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgZG9jcy5qc29uIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGVtcGxhdGUgdHlwZVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURvY3NDb25maWcocHJvamVjdE5hbWU6IHN0cmluZywgdGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUpOiBvYmplY3Qge1xuICBjb25zdCBmb3JtYXR0ZWROYW1lID0gZm9ybWF0UHJvamVjdE5hbWUocHJvamVjdE5hbWUpO1xuICBjb25zdCB0ZW1wbGF0ZSA9IFRFTVBMQVRFU1t0ZW1wbGF0ZVR5cGVdO1xuICBcbiAgLy8gQmFzZSBjb25maWd1cmF0aW9uIChzaGFyZWQgYWNyb3NzIGFsbCB0ZW1wbGF0ZXMpXG4gIGNvbnN0IGJhc2VDb25maWcgPSB7XG4gICAgJHNjaGVtYTogJ2h0dHBzOi8vZGV2ZG9jLnNoL2RvY3MuanNvbicsXG4gICAgbmFtZTogZm9ybWF0dGVkTmFtZSxcbiAgICBmYXZpY29uOiAnL2Zhdmljb24uc3ZnJyxcbiAgICBsb2dvOiB7XG4gICAgICBsaWdodDogJy9sb2dvLnN2ZycsXG4gICAgICBkYXJrOiAnL2xvZ28uc3ZnJyxcbiAgICB9LFxuICAgIGNvbG9yczoge1xuICAgICAgcHJpbWFyeTogdGVtcGxhdGUuY29sb3IsXG4gICAgfSxcbiAgICBuYXZpZ2F0aW9uOiB7XG4gICAgICB0YWJzOiBbXSBhcyBvYmplY3RbXSxcbiAgICAgIGdsb2JhbDoge1xuICAgICAgICBhbmNob3JzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYW5jaG9yOiAnR2l0SHViJyxcbiAgICAgICAgICAgIGhyZWY6ICdodHRwczovL2dpdGh1Yi5jb20veW91ci1vcmcveW91ci1yZXBvJyxcbiAgICAgICAgICAgIGljb246ICdnaXRodWItbG9nbycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICAvLyBEb2N1bWVudGF0aW9uIHRhYiAoYWx3YXlzIHByZXNlbnQpXG4gIGNvbnN0IGRvY3NUYWIgPSB7XG4gICAgdGFiOiAnRG9jdW1lbnRhdGlvbicsXG4gICAgdHlwZTogJ2RvY3MnLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBncm91cDogJ0dldHRpbmcgU3RhcnRlZCcsXG4gICAgICAgIGljb246ICdyb2NrZXQtbGF1bmNoJyxcbiAgICAgICAgcGFnZXM6IFsnaW5kZXgnLCAncXVpY2tzdGFydCddLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZ3JvdXA6ICdHdWlkZXMnLFxuICAgICAgICBpY29uOiAnYm9vay1vcGVuJyxcbiAgICAgICAgcGFnZXM6IFsnZ3VpZGVzL292ZXJ2aWV3JywgJ2d1aWRlcy9jb25maWd1cmF0aW9uJ10sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgYmFzZUNvbmZpZy5uYXZpZ2F0aW9uLnRhYnMucHVzaChkb2NzVGFiKTtcblxuICAvLyBBZGQgQVBJIHJlZmVyZW5jZSB0YWIgYmFzZWQgb24gdGVtcGxhdGUgdHlwZVxuICBpZiAodGVtcGxhdGVUeXBlID09PSAnb3BlbmFwaScpIHtcbiAgICBiYXNlQ29uZmlnLm5hdmlnYXRpb24udGFicy5wdXNoKHtcbiAgICAgIHRhYjogJ0FQSSBSZWZlcmVuY2UnLFxuICAgICAgdHlwZTogJ29wZW5hcGknLFxuICAgICAgcGF0aDogJy9hcGktcmVmZXJlbmNlJyxcbiAgICAgIHZlcnNpb25zOiBbXG4gICAgICAgIHsgdmVyc2lvbjogJ3YxJywgc3BlYzogJ2FwaS1yZWZlcmVuY2Uvb3BlbmFwaS5qc29uJywgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICAgIGdyb3VwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZ3JvdXA6ICdPdmVydmlldycsXG4gICAgICAgICAgaWNvbjogJ2Jvb2stb3BlbicsXG4gICAgICAgICAgcGFnZXM6IFtcbiAgICAgICAgICAgICdhcGktcmVmZXJlbmNlL2ludHJvZHVjdGlvbicsXG4gICAgICAgICAgICAnYXBpLXJlZmVyZW5jZS9hdXRoZW50aWNhdGlvbicsXG4gICAgICAgICAgICAnYXBpLXJlZmVyZW5jZS9lcnJvcnMnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIEFQSSBwbGF5Z3JvdW5kIGNvbmZpZ1xuICAgIChiYXNlQ29uZmlnIGFzIGFueSkuYXBpID0ge1xuICAgICAgYmFzZVVybDogJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tJyxcbiAgICAgIHBsYXlncm91bmQ6IHtcbiAgICAgICAgbW9kZTogJ3Nob3cnLFxuICAgICAgfSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHRlbXBsYXRlVHlwZSA9PT0gJ2dyYXBocWwnKSB7XG4gICAgYmFzZUNvbmZpZy5uYXZpZ2F0aW9uLnRhYnMucHVzaCh7XG4gICAgICB0YWI6ICdHcmFwaFFMIEFQSScsXG4gICAgICB0eXBlOiAnZ3JhcGhxbCcsXG4gICAgICBwYXRoOiAnL2dyYXBocWwtYXBpJyxcbiAgICAgIHNjaGVtYTogJ2FwaS1yZWZlcmVuY2Uvc2NoZW1hLmdyYXBocWwnLFxuICAgICAgZW5kcG9pbnQ6ICdodHRwczovL2FwaS5leGFtcGxlLmNvbS9ncmFwaHFsJyxcbiAgICAgIGdyb3VwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZ3JvdXA6ICdPdmVydmlldycsXG4gICAgICAgICAgaWNvbjogJ2Jvb2stb3BlbicsXG4gICAgICAgICAgcGFnZXM6IFtcbiAgICAgICAgICAgICdhcGktcmVmZXJlbmNlL2ludHJvZHVjdGlvbicsXG4gICAgICAgICAgICAnYXBpLXJlZmVyZW5jZS9hdXRoZW50aWNhdGlvbicsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYmFzZUNvbmZpZztcbn1cblxuLy8gQ2xhdWRlIENvZGUgc2tpbGxzIHRvIGNyZWF0ZVxuY29uc3QgQ0xBVURFX1NLSUxMUyA9IFtcbiAgJ2Jvb3RzdHJhcC1kb2NzJyxcbiAgJ3doaXNrLXRoZW1lJyxcbiAgJ21pZ3JhdGUtZG9jcycsXG4gICdpbXBvcnQtYXBpLXNwZWMnLFxuICAnY2hlY2stZG9jcycsXG4gICdibGFtZS1kb2MnLFxuICAnY3JlYXRlLWRvYycsXG4gICd1cGRhdGUtZG9jJyxcbiAgJ2RlbGV0ZS1kb2MnLFxuICAnY29tbWl0LWRvYycsXG5dO1xuXG4vLyBDdXJzb3IgcnVsZXMgdG8gY3JlYXRlXG5jb25zdCBDVVJTT1JfUlVMRVMgPSBbXG4gICdkZXZkb2MubWRjJyxcbiAgJ2RldmRvYy1ib290c3RyYXAubWRjJyxcbiAgJ2RldmRvYy13aGlzay10aGVtZS5tZGMnLFxuICAnZGV2ZG9jLW1pZ3JhdGUubWRjJyxcbiAgJ2RldmRvYy1ibGFtZS5tZGMnLFxuICAnZGV2ZG9jLWNyZWF0ZS5tZGMnLFxuICAnZGV2ZG9jLXVwZGF0ZS5tZGMnLFxuICAnZGV2ZG9jLWRlbGV0ZS5tZGMnLFxuICAnZGV2ZG9jLWNvbW1pdC5tZGMnLFxuXTtcblxuLyoqXG4gKiBHZXQgdGhlIEFJIGFnZW50cyB0ZW1wbGF0ZSBkaXJlY3RvcnkgcGF0aFxuICovXG5mdW5jdGlvbiBnZXRBSUFnZW50c0RpcigpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gVHJ5IHJlbGF0aXZlIHRvIGNvbXBpbGVkIGRpc3QgKHBhY2thZ2VzL2RldmRvYy9kaXN0L2NsaS9jb21tYW5kcyAtPiBwYWNrYWdlcy9kZXZkb2MvYWktYWdlbnRzKVxuICBsZXQgYWdlbnRzRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2FpLWFnZW50cycpO1xuICBcbiAgaWYgKGZzLmV4aXN0c1N5bmMoYWdlbnRzRGlyKSkge1xuICAgIHJldHVybiBhZ2VudHNEaXI7XG4gIH1cbiAgXG4gIC8vIFRyeSBkZXZkb2MvdGVtcGxhdGVzIGF0IHJlcG8gcm9vdCAoZGV2ZWxvcG1lbnQpXG4gIGFnZW50c0RpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICcuLicsICcuLicsICdkZXZkb2MnLCAndGVtcGxhdGVzJywgJ3N0YXJ0ZXInKTtcbiAgXG4gIGlmIChmcy5leGlzdHNTeW5jKGFnZW50c0RpcikpIHtcbiAgICByZXR1cm4gYWdlbnRzRGlyO1xuICB9XG4gIFxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBJbnN0YWxsIEFJIGFnZW50IGNvbmZpZ3VyYXRpb24gZmlsZXNcbiAqL1xuZnVuY3Rpb24gaW5zdGFsbEFJQWdlbnRzKFxuICBwcm9qZWN0UGF0aDogc3RyaW5nLCBcbiAgdG9vbDogJ2NsYXVkZScgfCAnY3Vyc29yJyB8ICdib3RoJ1xuKTogeyBjbGF1ZGVNZDogYm9vbGVhbjsgY2xhdWRlU2tpbGxzOiBzdHJpbmdbXTsgY3Vyc29yUnVsZXM6IHN0cmluZ1tdIH0ge1xuICBjb25zdCByZXN1bHRzID0ge1xuICAgIGNsYXVkZU1kOiBmYWxzZSxcbiAgICBjbGF1ZGVTa2lsbHM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGN1cnNvclJ1bGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgfTtcblxuICBjb25zdCBhZ2VudHNEaXIgPSBnZXRBSUFnZW50c0RpcigpO1xuICBpZiAoIWFnZW50c0Rpcikge1xuICAgIGxvZ2dlci53YXJuKCdBSSBhZ2VudCB0ZW1wbGF0ZXMgbm90IGZvdW5kJyk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvLyBJbnN0YWxsIENsYXVkZSBDb2RlIGZpbGVzXG4gIGlmICh0b29sID09PSAnY2xhdWRlJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICAvLyBDb3B5IENMQVVERS5tZFxuICAgIGNvbnN0IGNsYXVkZU1kU291cmNlID0gcGF0aC5qb2luKGFnZW50c0RpciwgJ0NMQVVERS5tZCcpO1xuICAgIGNvbnN0IGNsYXVkZU1kRGVzdCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJ0NMQVVERS5tZCcpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGNsYXVkZU1kU291cmNlKSkge1xuICAgICAgZnMuY29weVN5bmMoY2xhdWRlTWRTb3VyY2UsIGNsYXVkZU1kRGVzdCk7XG4gICAgICByZXN1bHRzLmNsYXVkZU1kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHNraWxsc1xuICAgIGNvbnN0IHNvdXJjZVNraWxsc0RpciA9IHBhdGguam9pbihhZ2VudHNEaXIsICcuY2xhdWRlJywgJ3NraWxscycpO1xuICAgIGNvbnN0IGRlc3RTa2lsbHNEaXIgPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsICcuY2xhdWRlJywgJ3NraWxscycpO1xuICAgIFxuICAgIGlmIChmcy5leGlzdHNTeW5jKHNvdXJjZVNraWxsc0RpcikpIHtcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGVzdFNraWxsc0Rpcik7XG4gICAgICBcbiAgICAgIGZvciAoY29uc3Qgc2tpbGwgb2YgQ0xBVURFX1NLSUxMUykge1xuICAgICAgICBjb25zdCBzb3VyY2VEaXIgPSBwYXRoLmpvaW4oc291cmNlU2tpbGxzRGlyLCBza2lsbCk7XG4gICAgICAgIGNvbnN0IGRlc3REaXIgPSBwYXRoLmpvaW4oZGVzdFNraWxsc0Rpciwgc2tpbGwpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc291cmNlRGlyKSkge1xuICAgICAgICAgIGZzLmNvcHlTeW5jKHNvdXJjZURpciwgZGVzdERpcik7XG4gICAgICAgICAgcmVzdWx0cy5jbGF1ZGVTa2lsbHMucHVzaChza2lsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJbnN0YWxsIEN1cnNvciBmaWxlc1xuICBpZiAodG9vbCA9PT0gJ2N1cnNvcicgfHwgdG9vbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc3Qgc291cmNlUnVsZXNEaXIgPSBwYXRoLmpvaW4oYWdlbnRzRGlyLCAnLmN1cnNvcicsICdydWxlcycpO1xuICAgIGNvbnN0IGRlc3RSdWxlc0RpciA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJy5jdXJzb3InLCAncnVsZXMnKTtcbiAgICBcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzb3VyY2VSdWxlc0RpcikpIHtcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGVzdFJ1bGVzRGlyKTtcbiAgICAgIFxuICAgICAgZm9yIChjb25zdCBydWxlIG9mIENVUlNPUl9SVUxFUykge1xuICAgICAgICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5qb2luKHNvdXJjZVJ1bGVzRGlyLCBydWxlKTtcbiAgICAgICAgY29uc3QgZGVzdFBhdGggPSBwYXRoLmpvaW4oZGVzdFJ1bGVzRGlyLCBydWxlKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHNvdXJjZVBhdGgpKSB7XG4gICAgICAgICAgZnMuY29weVN5bmMoc291cmNlUGF0aCwgZGVzdFBhdGgpO1xuICAgICAgICAgIHJlc3VsdHMuY3Vyc29yUnVsZXMucHVzaChydWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIENsZWFuIHVwIHVudXNlZCBBUEkgZmlsZXMgYmFzZWQgb24gdGVtcGxhdGUgdHlwZVxuICovXG5mdW5jdGlvbiBjbGVhbnVwVW51c2VkRmlsZXMocmVzb2x2ZWRQYXRoOiBzdHJpbmcsIHRlbXBsYXRlVHlwZTogVGVtcGxhdGVUeXBlKTogdm9pZCB7XG4gIGNvbnN0IGFwaVJlZlBhdGggPSBwYXRoLmpvaW4ocmVzb2x2ZWRQYXRoLCAnYXBpLXJlZmVyZW5jZScpO1xuICBcbiAgaWYgKHRlbXBsYXRlVHlwZSA9PT0gJ2Jhc2ljJykge1xuICAgIC8vIFJlbW92ZSBlbnRpcmUgYXBpLXJlZmVyZW5jZSBmb2xkZXIgZm9yIGJhc2ljIHRlbXBsYXRlXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoYXBpUmVmUGF0aCkpIHtcbiAgICAgIGZzLnJlbW92ZVN5bmMoYXBpUmVmUGF0aCk7XG4gICAgICBsb2dnZXIuZGVidWcoJ1JlbW92ZWQgYXBpLXJlZmVyZW5jZSBmb2xkZXIgKG5vdCBuZWVkZWQgZm9yIGJhc2ljIHRlbXBsYXRlKScpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0ZW1wbGF0ZVR5cGUgPT09ICdvcGVuYXBpJykge1xuICAgIC8vIFJlbW92ZSBHcmFwaFFMIHNjaGVtYSBmb3IgT3BlbkFQSSB0ZW1wbGF0ZVxuICAgIGNvbnN0IGdyYXBocWxTY2hlbWEgPSBwYXRoLmpvaW4oYXBpUmVmUGF0aCwgJ3NjaGVtYS5ncmFwaHFsJyk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZ3JhcGhxbFNjaGVtYSkpIHtcbiAgICAgIGZzLnJlbW92ZVN5bmMoZ3JhcGhxbFNjaGVtYSk7XG4gICAgICBsb2dnZXIuZGVidWcoJ1JlbW92ZWQgc2NoZW1hLmdyYXBocWwgKG5vdCBuZWVkZWQgZm9yIE9wZW5BUEkgdGVtcGxhdGUpJyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHRlbXBsYXRlVHlwZSA9PT0gJ2dyYXBocWwnKSB7XG4gICAgLy8gUmVtb3ZlIE9wZW5BUEkgc3BlYyBhbmQgZXJyb3JzLm1keCBmb3IgR3JhcGhRTCB0ZW1wbGF0ZVxuICAgIGNvbnN0IG9wZW5hcGlTcGVjID0gcGF0aC5qb2luKGFwaVJlZlBhdGgsICdvcGVuYXBpLmpzb24nKTtcbiAgICBjb25zdCBlcnJvcnNGaWxlID0gcGF0aC5qb2luKGFwaVJlZlBhdGgsICdlcnJvcnMubWR4Jyk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMob3BlbmFwaVNwZWMpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKG9wZW5hcGlTcGVjKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnUmVtb3ZlZCBvcGVuYXBpLmpzb24gKG5vdCBuZWVkZWQgZm9yIEdyYXBoUUwgdGVtcGxhdGUpJyk7XG4gICAgfVxuICAgIGlmIChmcy5leGlzdHNTeW5jKGVycm9yc0ZpbGUpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKGVycm9yc0ZpbGUpO1xuICAgICAgbG9nZ2VyLmRlYnVnKCdSZW1vdmVkIGVycm9ycy5tZHggKG5vdCBuZWVkZWQgZm9yIEdyYXBoUUwgdGVtcGxhdGUpJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGUocHJvamVjdERpcmVjdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcHRpb25zOiBDcmVhdGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGxvZ2dlci5pbmZvKCfwn5CfIENyZWF0ZSBEZXZEb2MgRG9jJyk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgY29uc3QgYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9VUkwgfHwgREVGQVVMVF9BUElfVVJMO1xuXG4gIC8vIEdldCBwcm9qZWN0IG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gIGxldCBwcm9qZWN0UGF0aCA9IHByb2plY3REaXJlY3Rvcnk7XG5cbiAgaWYgKCFwcm9qZWN0UGF0aCkge1xuICAgIHByb2plY3RQYXRoID0gYXdhaXQgcHJvbXB0KCdXaGF0IGlzIHlvdXIgcHJvamVjdCBuYW1lZD8nLCAnbXktZG9jcycpO1xuICAgIFxuICAgIGlmICghcHJvamVjdFBhdGgpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignUHJvamVjdCBuYW1lIGlzIHJlcXVpcmVkJyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmFsaWRhdGUgcHJvamVjdCBuYW1lXG4gIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb2plY3ROYW1lKHByb2plY3RQYXRoKTtcbiAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgbG9nZ2VyLmVycm9yKHZhbGlkYXRpb24uZXJyb3IgfHwgJ0ludmFsaWQgcHJvamVjdCBuYW1lJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgLy8gR2V0IGRvYyB0eXBlIHNlbGVjdGlvbiBpZiBub3QgcHJvdmlkZWRcbiAgbGV0IGRvY1R5cGU6IERvY1R5cGUgPSBvcHRpb25zLmRvY1R5cGUgfHwgJ3B1YmxpYyc7XG4gIFxuICBpZiAoIW9wdGlvbnMuZG9jVHlwZSkge1xuICAgIGNvbnN0IGRvY1R5cGVDaG9pY2VzID0gT2JqZWN0LmVudHJpZXMoRE9DX1RZUEVTKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICBsYWJlbDogYCR7dmFsdWUubmFtZX0gLSAke3ZhbHVlLmRlc2NyaXB0aW9ufWAsXG4gICAgfSkpO1xuXG4gICAgZG9jVHlwZSA9IGF3YWl0IHByb21wdFNlbGVjdCgnV2hhdCB0eXBlIG9mIGRvY3VtZW50YXRpb24gYXJlIHlvdSBjcmVhdGluZz8nLCBkb2NUeXBlQ2hvaWNlcykgYXMgRG9jVHlwZTtcbiAgfVxuXG4gIGNvbnN0IGlzSW50ZXJuYWxEb2NzID0gZG9jVHlwZSA9PT0gJ2ludGVybmFsJztcblxuICAvLyBHZXQgdGVtcGxhdGUgc2VsZWN0aW9uIGlmIG5vdCBwcm92aWRlZFxuICBsZXQgdGVtcGxhdGU6IFRlbXBsYXRlVHlwZSA9IG9wdGlvbnMudGVtcGxhdGUgfHwgJ2Jhc2ljJztcbiAgXG4gIGlmICghb3B0aW9ucy50ZW1wbGF0ZSkge1xuICAgIGNvbnN0IHRlbXBsYXRlQ2hvaWNlcyA9IE9iamVjdC5lbnRyaWVzKFRFTVBMQVRFUykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICB2YWx1ZToga2V5LFxuICAgICAgbGFiZWw6IGAke3ZhbHVlLm5hbWV9IC0gJHt2YWx1ZS5kZXNjcmlwdGlvbn1gLFxuICAgIH0pKTtcblxuICAgIHRlbXBsYXRlID0gYXdhaXQgcHJvbXB0U2VsZWN0KCdXaGljaCB0ZW1wbGF0ZSB3b3VsZCB5b3UgbGlrZSB0byB1c2U/JywgdGVtcGxhdGVDaG9pY2VzKSBhcyBUZW1wbGF0ZVR5cGU7XG4gIH1cblxuICAvLyBSZXNvbHZlIGZ1bGwgcGF0aFxuICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLnJlc29sdmUocHJvamVjdFBhdGgpO1xuICBjb25zdCBwcm9qZWN0TmFtZSA9IHBhdGguYmFzZW5hbWUocmVzb2x2ZWRQYXRoKTtcbiAgY29uc3Qgc2x1ZyA9IHByb2plY3ROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldKy9nLCAnLScpLnJlcGxhY2UoL14tfC0kL2csICcnKTtcblxuICAvLyBHZXQgc3ViZG9tYWluIC0gb25seSBmb3IgcHVibGljIGRvY3NcbiAgbGV0IHN1YmRvbWFpbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucy5zdWJkb21haW47XG4gIFxuICBpZiAoIWlzSW50ZXJuYWxEb2NzKSB7XG4gICAgaWYgKCFzdWJkb21haW4pIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBzdWJkb21haW4gPSBhd2FpdCBwcm9tcHQoYEVudGVyIHN1YmRvbWFpbiBmb3IgeW91ciBkb2NzICgke3NsdWd9LmRldmRvYy5zaClgLCBzbHVnKTtcbiAgICAgIHN1YmRvbWFpbiA9IHN1YmRvbWFpbi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05LV0vZywgJy0nKS5yZXBsYWNlKC9eLXwtJC9nLCAnJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgc3ViZG9tYWluIGZvcm1hdCBsb2NhbGx5XG4gICAgY29uc3QgZm9ybWF0Q2hlY2sgPSBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbik7XG4gICAgaWYgKCFmb3JtYXRDaGVjay52YWxpZCkge1xuICAgICAgbG9nZ2VyLmVycm9yKGZvcm1hdENoZWNrLmVycm9yISk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgc3ViZG9tYWluIGF2YWlsYWJpbGl0eSB2aWEgQVBJIChzZXJ2ZXIgdmFsaWRhdGVzIGJsYWNrbGlzdClcbiAgICAvLyBMb29wIHVudGlsIHdlIGZpbmQgYW4gYXZhaWxhYmxlIHN1YmRvbWFpblxuICAgIGxldCBzdWJkb21haW5BdmFpbGFibGUgPSBmYWxzZTtcbiAgICB3aGlsZSAoIXN1YmRvbWFpbkF2YWlsYWJsZSkge1xuICAgICAgbG9nZ2VyLmluZm8oYENoZWNraW5nIGlmICR7c3ViZG9tYWlufS5kZXZkb2Muc2ggaXMgYXZhaWxhYmxlLi4uYCk7XG4gICAgICBjb25zdCBhdmFpbGFiaWxpdHkgPSBhd2FpdCBjaGVja1N1YmRvbWFpbkF2YWlsYWJpbGl0eShzdWJkb21haW4sIGFwaVVybCk7XG4gICAgICBcbiAgICAgIGlmICghYXZhaWxhYmlsaXR5LmF2YWlsYWJsZSkge1xuICAgICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgICBsb2dnZXIud2FybihhdmFpbGFiaWxpdHkuZXJyb3IgfHwgYFN1YmRvbWFpbiBcIiR7c3ViZG9tYWlufVwiIGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSBhdmFpbGFiaWxpdHkuc3VnZ2VzdGlvbiB8fCBgJHtzdWJkb21haW59LWRvY3NgO1xuICAgICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgU3VnZ2VzdGlvbjogJHtzdWdnZXN0aW9ufS5kZXZkb2Muc2hgKTtcbiAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFByb21wdCBmb3IgbmV3IHN1YmRvbWFpblxuICAgICAgICBzdWJkb21haW4gPSBhd2FpdCBwcm9tcHQoJ0VudGVyIGEgZGlmZmVyZW50IHN1YmRvbWFpbicsIHN1Z2dlc3Rpb24pO1xuICAgICAgICBzdWJkb21haW4gPSBzdWJkb21haW4udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpO1xuICAgICAgICBcbiAgICAgICAgLy8gVmFsaWRhdGUgZm9ybWF0XG4gICAgICAgIGNvbnN0IGZvcm1hdENoZWNrID0gaXNWYWxpZFN1YmRvbWFpbkZvcm1hdChzdWJkb21haW4pO1xuICAgICAgICBpZiAoIWZvcm1hdENoZWNrLnZhbGlkKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGZvcm1hdENoZWNrLmVycm9yISk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJkb21haW5BdmFpbGFibGUgPSB0cnVlO1xuICAgICAgICBsb2dnZXIuc3VjY2Vzcyhg4pyTICR7c3ViZG9tYWlufS5kZXZkb2Muc2ggaXMgYXZhaWxhYmxlIWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIGRpcmVjdG9yeSBleGlzdHNcbiAgaWYgKGZzLmV4aXN0c1N5bmMocmVzb2x2ZWRQYXRoKSkge1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMocmVzb2x2ZWRQYXRoKTtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgb3ZlcndyaXRlID0gYXdhaXQgcHJvbXB0Q29uZmlybShgRGlyZWN0b3J5ICR7cHJvamVjdE5hbWV9IGlzIG5vdCBlbXB0eS4gQ29udGludWUgYW55d2F5P2AsIGZhbHNlKTtcbiAgICAgIFxuICAgICAgaWYgKCFvdmVyd3JpdGUpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdPcGVyYXRpb24gY2FuY2VsbGVkJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZFRlbXBsYXRlID0gVEVNUExBVEVTW3RlbXBsYXRlXTtcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLmluZm8oYENyZWF0aW5nIGEgbmV3ICR7c2VsZWN0ZWRUZW1wbGF0ZS5uYW1lfSBEZXZEb2MgZG9jdW1lbnRhdGlvbiBzaXRlIGluICR7cmVzb2x2ZWRQYXRofWApO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIENyZWF0ZSBwcm9qZWN0IGRpcmVjdG9yeVxuICBmcy5lbnN1cmVEaXJTeW5jKHJlc29sdmVkUGF0aCk7XG5cbiAgLy8gRG93bmxvYWQgdGVtcGxhdGUgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSAoYWx3YXlzIHVzZSBzdGFydGVyIHRlbXBsYXRlKVxuICBsb2dnZXIuaW5mbygnRG93bmxvYWRpbmcgdGVtcGxhdGUuLi4nKTtcbiAgXG4gIHRyeSB7XG4gICAgLy8gVHJ5IHRvIGRvd25sb2FkIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkgZmlyc3RcbiAgICBhd2FpdCBkb3dubG9hZFRlbXBsYXRlKFRFTVBMQVRFX1JFUE8sIHtcbiAgICAgIGRpcjogcmVzb2x2ZWRQYXRoLFxuICAgICAgZm9yY2U6IHRydWUsXG4gICAgfSk7XG4gICAgbG9nZ2VyLnN1Y2Nlc3MoJ0Rvd25sb2FkZWQgc3RhcnRlciB0ZW1wbGF0ZScpO1xuICB9IGNhdGNoIChkb3dubG9hZEVycm9yKSB7XG4gICAgLy8gRmFsbCBiYWNrIHRvIGxvY2FsIHRlbXBsYXRlcyAoZm9yIGRldmVsb3BtZW50IG9yIG9mZmxpbmUgdXNhZ2UpXG4gICAgbG9nZ2VyLmRlYnVnKGBSZW1vdGUgZG93bmxvYWQgZmFpbGVkOiAke2Rvd25sb2FkRXJyb3J9YCk7XG4gICAgbG9nZ2VyLmluZm8oJ0ZhbGxpbmcgYmFjayB0byBsb2NhbCB0ZW1wbGF0ZS4uLicpO1xuICAgIFxuICAgIGNvbnN0IHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ3RlbXBsYXRlcycsICdzdGFydGVyJyk7XG4gICAgXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRlbXBsYXRlRGlyKSkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdUZW1wbGF0ZSBcInN0YXJ0ZXJcIiBub3QgZm91bmQnKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgTG9va2VkIGZvciB0ZW1wbGF0ZSBhdDogJHt0ZW1wbGF0ZURpcn1gKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnUmVtb3RlIHNvdXJjZTogJyArIFRFTVBMQVRFX1JFUE8pO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGZzLmNvcHlTeW5jKHRlbXBsYXRlRGlyLCByZXNvbHZlZFBhdGgsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuICAgIGxvZ2dlci5zdWNjZXNzKCdDb3BpZWQgbG9jYWwgdGVtcGxhdGUnKTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCBwcm9qZWN0IG5hbWVcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihyZXNvbHZlZFBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMocGtnUGF0aCkpIHtcbiAgICBjb25zdCBwa2cgPSBmcy5yZWFkSnNvblN5bmMocGtnUGF0aCk7XG4gICAgcGtnLm5hbWUgPSBwcm9qZWN0TmFtZTtcbiAgICBmcy53cml0ZUpzb25TeW5jKHBrZ1BhdGgsIHBrZywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBkb2NzLmpzb24gYmFzZWQgb24gdGVtcGxhdGUgdHlwZVxuICBjb25zdCBkb2NzQ29uZmlnID0gZ2VuZXJhdGVEb2NzQ29uZmlnKHByb2plY3ROYW1lLCB0ZW1wbGF0ZSk7XG4gIGNvbnN0IGRvY3NQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJ2RvY3MuanNvbicpO1xuICBmcy53cml0ZUpzb25TeW5jKGRvY3NQYXRoLCBkb2NzQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgbG9nZ2VyLnN1Y2Nlc3MoYEdlbmVyYXRlZCBkb2NzLmpzb24gZm9yICR7c2VsZWN0ZWRUZW1wbGF0ZS5uYW1lfSB0ZW1wbGF0ZWApO1xuXG4gIC8vIFVwZGF0ZSB0aGVtZS5qc29uIHdpdGggdGVtcGxhdGUgY29sb3JcbiAgY29uc3QgdGhlbWVQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJ3RoZW1lLmpzb24nKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmModGhlbWVQYXRoKSkge1xuICAgIGNvbnN0IHRoZW1lID0gZnMucmVhZEpzb25TeW5jKHRoZW1lUGF0aCk7XG4gICAgdGhlbWUuY29sb3JzID0ge1xuICAgICAgcHJpbWFyeTogc2VsZWN0ZWRUZW1wbGF0ZS5jb2xvcixcbiAgICAgIHByaW1hcnlMaWdodDogc2VsZWN0ZWRUZW1wbGF0ZS5jb2xvcixcbiAgICAgIHByaW1hcnlEYXJrOiBzZWxlY3RlZFRlbXBsYXRlLmNvbG9yLFxuICAgIH07XG4gICAgZnMud3JpdGVKc29uU3luYyh0aGVtZVBhdGgsIHRoZW1lLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIC8vIENsZWFuIHVwIHVudXNlZCBmaWxlcyBiYXNlZCBvbiB0ZW1wbGF0ZSB0eXBlXG4gIGNsZWFudXBVbnVzZWRGaWxlcyhyZXNvbHZlZFBhdGgsIHRlbXBsYXRlKTtcblxuICAvLyBDcmVhdGUgLmRldmRvYy5qc29uIHdpdGggcHJvamVjdCBjb25maWdcbiAgLy8gRm9yIHB1YmxpYyBkb2NzOiBzdWJkb21haW4gd2lsbCBvbmx5IGJlIHJlc2VydmVkIHdoZW4gdGhlIHVzZXIgYWN0dWFsbHkgZGVwbG95c1xuICAvLyBGb3IgaW50ZXJuYWwgZG9jczogbm8gc3ViZG9tYWluIG5lZWRlZFxuICBjb25zdCBkZXZkb2NDb25maWdQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJy5kZXZkb2MuanNvbicpO1xuICBcbiAgY29uc3QgZGV2ZG9jQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBwcm9qZWN0SWQ6IGAke3NsdWd9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDgpfWAsXG4gICAgbmFtZTogZm9ybWF0UHJvamVjdE5hbWUocHJvamVjdE5hbWUpLFxuICAgIHNsdWc6IHNsdWcsXG4gICAgZG9jVHlwZTogZG9jVHlwZSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfTtcblxuICAvLyBPbmx5IGFkZCBzdWJkb21haW4gZm9yIHB1YmxpYyBkb2NzXG4gIGlmICghaXNJbnRlcm5hbERvY3MgJiYgc3ViZG9tYWluKSB7XG4gICAgZGV2ZG9jQ29uZmlnLnN1YmRvbWFpbiA9IHN1YmRvbWFpbjtcbiAgfVxuXG4gIGZzLndyaXRlSnNvblN5bmMoZGV2ZG9jQ29uZmlnUGF0aCwgZGV2ZG9jQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgLmRldmRvYy5qc29uJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIERvYyBUeXBlOicsIERPQ19UWVBFU1tkb2NUeXBlXS5uYW1lKTtcbiAgaWYgKCFpc0ludGVybmFsRG9jcyAmJiBzdWJkb21haW4pIHtcbiAgICBjb25zb2xlLmxvZygnICBTdWJkb21haW46JywgYCR7c3ViZG9tYWlufS5kZXZkb2Muc2hgKTtcbiAgICBjb25zb2xlLmxvZygnICBTdGF0dXM6JywgJ05vdCB5ZXQgZGVwbG95ZWQgKHN1YmRvbWFpbiB3aWxsIGJlIHJlc2VydmVkIG9uIGZpcnN0IGRlcGxveSknKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnICBTdGF0dXM6JywgJ0ludGVybmFsIGRvY3MgKGxvY2FsIGRldmVsb3BtZW50IG9ubHkpJyk7XG4gIH1cblxuICAvLyBJbml0aWFsaXplIGdpdFxuICBpZiAob3B0aW9ucy5naXQgIT09IGZhbHNlKSB7XG4gICAgbG9nZ2VyLmluZm8oJ0luaXRpYWxpemluZyBnaXQgcmVwb3NpdG9yeS4uLicpO1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGluaXQnLCB7IGN3ZDogcmVzb2x2ZWRQYXRoLCBzdGRpbzogJ2lnbm9yZScgfSk7XG4gICAgICBleGVjU3luYygnZ2l0IGFkZCAtQScsIHsgY3dkOiByZXNvbHZlZFBhdGgsIHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICAgIGV4ZWNTeW5jKCdnaXQgY29tbWl0IC1tIFwiSW5pdGlhbCBjb21taXQgZnJvbSBkZXZkb2MgY3JlYXRlXCInLCB7XG4gICAgICAgIGN3ZDogcmVzb2x2ZWRQYXRoLFxuICAgICAgICBzdGRpbzogJ2lnbm9yZScsXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCdHaXQgcmVwb3NpdG9yeSBpbml0aWFsaXplZCcpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgbG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCBpbml0aWFsaXplIGdpdCByZXBvc2l0b3J5Jyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW5zdGFsbCBkZXBlbmRlbmNpZXNcbiAgaWYgKG9wdGlvbnMuaW5zdGFsbCAhPT0gZmFsc2UpIHtcbiAgICBsb2dnZXIuaW5mbygnSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi4nKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSBnZXRQYWNrYWdlTWFuYWdlcigpO1xuICAgICAgZXhlY1N5bmMoYCR7cGFja2FnZU1hbmFnZXJ9IGluc3RhbGxgLCB7XG4gICAgICAgIGN3ZDogcmVzb2x2ZWRQYXRoLFxuICAgICAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgICAgfSk7XG4gICAgICBsb2dnZXIuc3VjY2VzcygnRGVwZW5kZW5jaWVzIGluc3RhbGxlZCcpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgbG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCBpbnN0YWxsIGRlcGVuZGVuY2llcycpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEluc3RhbGwgQUkgYWdlbnRzIC0gYWx3YXlzIHByb21wdCBhcyBwYXJ0IG9mIGNyZWF0ZSBmbG93XG4gIGxldCBhaVRvb2w6ICdjbGF1ZGUnIHwgJ2N1cnNvcicgfCAnYm90aCcgfCBudWxsID0gbnVsbDtcbiAgXG4gIGNvbnN0IGFpQ2hvaWNlcyA9IFtcbiAgICB7IHZhbHVlOiAnYm90aCcsIGxhYmVsOiAnQm90aCAtIENsYXVkZSBDb2RlIGFuZCBDdXJzb3IgKHJlY29tbWVuZGVkKScgfSxcbiAgICB7IHZhbHVlOiAnY3Vyc29yJywgbGFiZWw6ICdDdXJzb3IgLSBSdWxlcyBmb3IgQ3Vyc29yIElERScgfSxcbiAgICB7IHZhbHVlOiAnY2xhdWRlJywgbGFiZWw6ICdDbGF1ZGUgQ29kZSAtIFNraWxscyBhbmQgQ0xBVURFLm1kJyB9LFxuICBdO1xuICBjb25zdCBhaVNlbGVjdGlvbiA9IGF3YWl0IHByb21wdFNlbGVjdCgnV2hpY2ggQUkgY29kaW5nIGFzc2lzdGFudCBkbyB5b3UgdXNlPycsIGFpQ2hvaWNlcyk7XG4gIGFpVG9vbCA9IGFpU2VsZWN0aW9uIGFzICdjbGF1ZGUnIHwgJ2N1cnNvcicgfCAnYm90aCc7XG5cbiAgaWYgKGFpVG9vbCkge1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgbG9nZ2VyLmluZm8oJ1NldHRpbmcgdXAgQUkgYWdlbnQgY29uZmlndXJhdGlvbi4uLicpO1xuICAgIGNvbnN0IGFpUmVzdWx0cyA9IGluc3RhbGxBSUFnZW50cyhyZXNvbHZlZFBhdGgsIGFpVG9vbCk7XG4gICAgXG4gICAgaWYgKGFpUmVzdWx0cy5jbGF1ZGVNZCkge1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgQ0xBVURFLm1kJyk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc2tpbGwgb2YgYWlSZXN1bHRzLmNsYXVkZVNraWxscykge1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgLmNsYXVkZS9za2lsbHMvJHtza2lsbH0vU0tJTEwubWRgKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBydWxlIG9mIGFpUmVzdWx0cy5jdXJzb3JSdWxlcykge1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgLmN1cnNvci9ydWxlcy8ke3J1bGV9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3VjY2VzcyBtZXNzYWdlXG4gIGNvbnNvbGUubG9nKCk7XG4gIGxvZ2dlci5zdWNjZXNzKGBDcmVhdGVkICR7cHJvamVjdE5hbWV9IGF0ICR7cmVzb2x2ZWRQYXRofWApO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIGlmICghaXNJbnRlcm5hbERvY3MgJiYgc3ViZG9tYWluKSB7XG4gICAgY29uc29sZS5sb2coJ1lvdXIgZG9jcyB3aWxsIGJlIGF2YWlsYWJsZSBhdDonKTtcbiAgICBjb25zb2xlLmxvZyhgICBodHRwczovLyR7c3ViZG9tYWlufS5kZXZkb2Muc2hgKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGxvZ2dlci5pbmZvKCdOb3RlOiBUaGUgc3ViZG9tYWluIHdpbGwgYmUgcmVzZXJ2ZWQgd2hlbiB5b3UgcnVuIFwiZGV2ZG9jIGRlcGxveVwiJyk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZygnSW5zaWRlIHRoYXQgZGlyZWN0b3J5LCB5b3UgY2FuIHJ1biBzZXZlcmFsIGNvbW1hbmRzOicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coJyAgbnBtIHJ1biBkZXYnKTtcbiAgICBjb25zb2xlLmxvZygnICAgIFN0YXJ0cyB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyLicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coJyAgZGV2ZG9jIGRlcGxveScpO1xuICAgIGNvbnNvbGUubG9nKCcgICAgRGVwbG95cyBhbmQgY2xhaW1zIHlvdXIgc3ViZG9tYWluLicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ1RoaXMgaXMgYW4gaW50ZXJuYWwgZG9jdW1lbnRhdGlvbiBwcm9qZWN0IGZvciBsb2NhbCBkZXZlbG9wbWVudC4nKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKCdJbnNpZGUgdGhhdCBkaXJlY3RvcnksIHlvdSBjYW4gcnVuOicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coJyAgbnBtIHJ1biBkZXYnKTtcbiAgICBjb25zb2xlLmxvZygnICAgIFN0YXJ0cyB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnV2Ugc3VnZ2VzdCB0aGF0IHlvdSBiZWdpbiBieSB0eXBpbmc6Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGAgIGNkICR7cHJvamVjdE5hbWV9YCk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gZGV2Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgLy8gU2hvdyBBSSBhZ2VudCBxdWljayBzdGFydCB0aXBzXG4gIGNvbnNvbGUubG9nKCdBSSBBZ2VudCBRdWljayBTdGFydDonKTtcbiAgaWYgKGFpVG9vbCA9PT0gJ2NsYXVkZScgfHwgYWlUb29sID09PSAnYm90aCcpIHtcbiAgICBjb25zb2xlLmxvZygnICBDbGF1ZGUgQ29kZTogL2Jvb3RzdHJhcC1kb2NzJyk7XG4gIH1cbiAgaWYgKGFpVG9vbCA9PT0gJ2N1cnNvcicgfHwgYWlUb29sID09PSAnYm90aCcpIHtcbiAgICBjb25zb2xlLmxvZygnICBDdXJzb3I6IEFzayBcImdlbmVyYXRlIGluaXRpYWwgZG9jdW1lbnRhdGlvbiBmcm9tIHRoaXMgcmVwb1wiJyk7XG4gIH1cbiAgY29uc29sZS5sb2coKTtcblxuICAvLyBBU0NJSSBhcnQgYmFubmVyXG4gIGNvbnNvbGUubG9nKGBcbiAgX19fXyAgICAgICAgICAgICAgX19fXyAgICAgICAgICAgICBcbiB8ICBfIFxcXFwgIF9fX19fICAgX198ICBfIFxcXFwgIF9fXyAgIF9fXyBcbiB8IHwgfCB8LyBfIFxcXFwgXFxcXCAvIC98IHwgfCB8LyBfIFxcXFwgLyBfX3xcbiB8IHxffCB8ICBfXy9cXFxcIFYgLyB8IHxffCB8IChfKSB8IChfXyBcbiB8X19fXy8gXFxcXF9fX3wgXFxcXF8vICB8X19fXy8gXFxcXF9fXy8gXFxcXF9fX3xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGApO1xuICBjb25zb2xlLmxvZygnSGFwcHkgZG9jdW1lbnRpbmchJyk7XG4gIGNvbnNvbGUubG9nKCk7XG59XG4iXX0=
720
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzZEEsd0JBeVVDO0FBL3hCRCxpREFBeUM7QUFDekMsZ0RBQXdCO0FBQ3hCLHdEQUEwQjtBQUMxQixpQ0FBeUM7QUFDekMsK0NBQTRDO0FBQzVDLCtDQUFrRDtBQUVsRCx1REFBdUQ7QUFDdkQsTUFBTSxhQUFhLEdBQUcsOENBQThDLENBQUM7QUFFckUsdUZBQXVGO0FBQ3ZGLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLEtBQUssRUFBRTtRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGlEQUFpRDtRQUM5RCxLQUFLLEVBQUUsU0FBUztLQUNqQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxLQUFLLEVBQUUsU0FBUztLQUNqQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxLQUFLLEVBQUUsU0FBUztLQUNqQjtDQUNPLENBQUM7QUFJWCxzQkFBc0I7QUFDdEIsTUFBTSxTQUFTLEdBQUc7SUFDaEIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsdURBQXVEO0tBQ3JFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLFVBQVU7UUFDaEIsV0FBVyxFQUFFLDREQUE0RDtLQUMxRTtDQUNPLENBQUM7QUFtQlgsc0NBQXNDO0FBQ3RDLEtBQUssVUFBVSxNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBRyx3REFBYSxVQUFVLEdBQUMsQ0FBQztJQUMxQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxD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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IGRvd25sb2FkVGVtcGxhdGUgfSBmcm9tICdnaWdldCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgREVGQVVMVF9BUElfVVJMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxuLy8gUmVtb3RlIHRlbXBsYXRlIHJlcG9zaXRvcnkgLSBzaW5nbGUgc3RhcnRlciB0ZW1wbGF0ZVxuY29uc3QgVEVNUExBVEVfUkVQTyA9ICdnaXRodWI6YnJhaW5maXNoLWFpL2RldmRvYy90ZW1wbGF0ZXMvc3RhcnRlcic7XG5cbi8vIEF2YWlsYWJsZSB0ZW1wbGF0ZSB0eXBlcyAoYWxsIHVzZSB0aGUgc2FtZSBzdGFydGVyIHRlbXBsYXRlLCBqdXN0IGRpZmZlcmVudCBjb25maWdzKVxuY29uc3QgVEVNUExBVEVTID0ge1xuICBiYXNpYzoge1xuICAgIG5hbWU6ICdCYXNpYycsXG4gICAgZGVzY3JpcHRpb246ICdTaW1wbGUgZG9jdW1lbnRhdGlvbiBzaXRlIHdpdGggZ3VpZGVzIGFuZCBwYWdlcycsXG4gICAgY29sb3I6ICcjMTBiOTgxJyxcbiAgfSxcbiAgb3BlbmFwaToge1xuICAgIG5hbWU6ICdPcGVuQVBJJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RvY3VtZW50YXRpb24gd2l0aCBSRVNUIEFQSSByZWZlcmVuY2UgKE9wZW5BUEkvU3dhZ2dlciknLFxuICAgIGNvbG9yOiAnIzEwYjk4MScsXG4gIH0sXG4gIGdyYXBocWw6IHtcbiAgICBuYW1lOiAnR3JhcGhRTCcsXG4gICAgZGVzY3JpcHRpb246ICdEb2N1bWVudGF0aW9uIHdpdGggR3JhcGhRTCBBUEkgcGxheWdyb3VuZCcsXG4gICAgY29sb3I6ICcjZTUzNWFiJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgVGVtcGxhdGVUeXBlID0ga2V5b2YgdHlwZW9mIFRFTVBMQVRFUztcblxuLy8gRG9jdW1lbnRhdGlvbiB0eXBlc1xuY29uc3QgRE9DX1RZUEVTID0ge1xuICBwdWJsaWM6IHtcbiAgICBuYW1lOiAnUHVibGljJyxcbiAgICBkZXNjcmlwdGlvbjogJ1VzZXItZmFjaW5nIGRvY3Mgd2l0aCBjdXN0b20gc3ViZG9tYWluIGFuZCBkZXBsb3ltZW50JyxcbiAgfSxcbiAgaW50ZXJuYWw6IHtcbiAgICBuYW1lOiAnSW50ZXJuYWwnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGV2ZWxvcGVyIGRvY3MgZm9yIGxvY2FsL3ByaXZhdGUgdXNlIChubyBzdWJkb21haW4gbmVlZGVkKScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIERvY1R5cGUgPSBrZXlvZiB0eXBlb2YgRE9DX1RZUEVTO1xuXG5pbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVUeXBlO1xuICBkb2NUeXBlPzogRG9jVHlwZTtcbiAgZ2l0PzogYm9vbGVhbjtcbiAgaW5zdGFsbD86IGJvb2xlYW47XG4gIHVybD86IHN0cmluZztcbiAgc3ViZG9tYWluPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hlY2tTdWJkb21haW5SZXNwb25zZSB7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIHN1Z2dlc3Rpb24/OiBzdHJpbmc7XG59XG5cbi8vIFNpbXBsZSBwcm9tcHQgaGVscGVyIHVzaW5nIHJlYWRsaW5lXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQocXVlc3Rpb246IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVhZGxpbmUgPSBhd2FpdCBpbXBvcnQoJ3JlYWRsaW5lJyk7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBkaXNwbGF5UXVlc3Rpb24gPSBkZWZhdWx0VmFsdWUgXG4gICAgICA/IGAke3F1ZXN0aW9ufSAoJHtkZWZhdWx0VmFsdWV9KTogYFxuICAgICAgOiBgJHtxdWVzdGlvbn06IGA7XG4gICAgXG4gICAgcmwucXVlc3Rpb24oZGlzcGxheVF1ZXN0aW9uLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgcmVzb2x2ZShhbnN3ZXIudHJpbSgpIHx8IGRlZmF1bHRWYWx1ZSB8fCAnJyk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9tcHRTZWxlY3QocXVlc3Rpb246IHN0cmluZywgY2hvaWNlczogeyB2YWx1ZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnNvbGUubG9nKGBcXG4ke3F1ZXN0aW9ufVxcbmApO1xuICBjaG9pY2VzLmZvckVhY2goKGNob2ljZSwgaSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAgICR7aSArIDF9LiAke2Nob2ljZS5sYWJlbH1gKTtcbiAgfSk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIFxuICBjb25zdCByZWFkbGluZSA9IGF3YWl0IGltcG9ydCgncmVhZGxpbmUnKTtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHJsLnF1ZXN0aW9uKCdFbnRlciBudW1iZXI6ICcsIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICBjb25zdCBpbmRleCA9IHBhcnNlSW50KGFuc3dlci50cmltKCksIDEwKSAtIDE7XG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGNob2ljZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc29sdmUoY2hvaWNlc1tpbmRleF0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGVmYXVsdCB0byBmaXJzdCBjaG9pY2VcbiAgICAgICAgcmVzb2x2ZShjaG9pY2VzWzBdLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdENvbmZpcm0ocXVlc3Rpb246IHN0cmluZywgZGVmYXVsdFZhbHVlID0gZmFsc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcmVhZGxpbmUgPSBhd2FpdCBpbXBvcnQoJ3JlYWRsaW5lJyk7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBoaW50ID0gZGVmYXVsdFZhbHVlID8gJ1tZL25dJyA6ICdbeS9OXSc7XG4gICAgcmwucXVlc3Rpb24oYCR7cXVlc3Rpb259ICR7aGludH06IGAsIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYW5zd2VyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKG5vcm1hbGl6ZWQgPT09ICcnKSB7XG4gICAgICAgIHJlc29sdmUoZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobm9ybWFsaXplZCA9PT0gJ3knIHx8IG5vcm1hbGl6ZWQgPT09ICd5ZXMnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvamVjdE5hbWUobmFtZTogc3RyaW5nKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmcgfSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdQcm9qZWN0IG5hbWUgaXMgcmVxdWlyZWQnIH07XG4gIH1cbiAgXG4gIC8vIENoZWNrIGZvciB2YWxpZCBucG0gcGFja2FnZSBuYW1lXG4gIGlmICghL15bYS16MC05XVthLXowLTktLl9dKiQvaS50ZXN0KG5hbWUpKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ0ludmFsaWQgcHJvamVjdCBuYW1lLiBVc2UgbG93ZXJjYXNlIGxldHRlcnMsIG51bWJlcnMsIGFuZCBkYXNoZXMuJyB9O1xuICB9XG4gIFxuICByZXR1cm4geyB2YWxpZDogdHJ1ZSB9O1xufVxuXG4vKipcbiAqIEJhc2ljIHN1YmRvbWFpbiBmb3JtYXQgdmFsaWRhdGlvbiAoc2VydmVyIGRvZXMgZnVsbCB2YWxpZGF0aW9uIGluY2x1ZGluZyBibGFja2xpc3QpXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRTdWJkb21haW5Gb3JtYXQoc3ViZG9tYWluOiBzdHJpbmcpOiB7IHZhbGlkOiBib29sZWFuOyBlcnJvcj86IHN0cmluZyB9IHtcbiAgaWYgKCFzdWJkb21haW4pIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIGlzIHJlcXVpcmVkJyB9O1xuICB9XG4gIFxuICBpZiAoc3ViZG9tYWluLmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzJyB9O1xuICB9XG4gIFxuICBpZiAoc3ViZG9tYWluLmxlbmd0aCA+IDYzKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBtdXN0IGJlIDYzIGNoYXJhY3RlcnMgb3IgbGVzcycgfTtcbiAgfVxuICBcbiAgaWYgKCEvXlthLXowLTldKFthLXowLTktXSpbYS16MC05XSk/JC8udGVzdChzdWJkb21haW4pKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBtdXN0IHN0YXJ0IGFuZCBlbmQgd2l0aCBhbHBoYW51bWVyaWMsIGNhbiBjb250YWluIGh5cGhlbnMnIH07XG4gIH1cbiAgXG4gIGlmICgvLS0vLnRlc3Qoc3ViZG9tYWluKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gY2Fubm90IGNvbnRhaW4gY29uc2VjdXRpdmUgaHlwaGVucycgfTtcbiAgfVxuICBcbiAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBzdWJkb21haW4gYXZhaWxhYmlsaXR5IHZpYSBBUEkgKGFsc28gdmFsaWRhdGVzIGFnYWluc3Qgc2VydmVyIGJsYWNrbGlzdClcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tTdWJkb21haW5BdmFpbGFiaWxpdHkoXG4gIHN1YmRvbWFpbjogc3RyaW5nLFxuICBhcGlVcmw6IHN0cmluZ1xuKTogUHJvbWlzZTxDaGVja1N1YmRvbWFpblJlc3BvbnNlPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHthcGlVcmx9L2FwaS9zdWJkb21haW5zL2NoZWNrYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBzdWJkb21haW4gfSksXG4gICAgfSk7XG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIENoZWNrU3ViZG9tYWluUmVzcG9uc2U7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCB7XG4gICAgLy8gSWYgQVBJIGlzIHVuYXZhaWxhYmxlLCBhbGxvdyBwcm9jZWVkaW5nICh3aWxsIGZhaWwgYXQgcmVnaXN0cmF0aW9uIGlmIGludmFsaWQpXG4gICAgcmV0dXJuIHsgYXZhaWxhYmxlOiB0cnVlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0UHJvamVjdE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWVcbiAgICAucmVwbGFjZSgvLS9nLCAnICcpXG4gICAgLnJlcGxhY2UoL1xcYlxcdy9nLCAoY2hhcikgPT4gY2hhci50b1VwcGVyQ2FzZSgpKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFja2FnZU1hbmFnZXIoKTogc3RyaW5nIHtcbiAgY29uc3QgdXNlckFnZW50ID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ191c2VyX2FnZW50IHx8ICcnO1xuICBcbiAgaWYgKHVzZXJBZ2VudC5zdGFydHNXaXRoKCd5YXJuJykpIHtcbiAgICByZXR1cm4gJ3lhcm4nO1xuICB9XG4gIFxuICBpZiAodXNlckFnZW50LnN0YXJ0c1dpdGgoJ3BucG0nKSkge1xuICAgIHJldHVybiAncG5wbSc7XG4gIH1cbiAgXG4gIHJldHVybiAnbnBtJztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBkb2NzLmpzb24gY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0ZW1wbGF0ZSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlRG9jc0NvbmZpZyhwcm9qZWN0TmFtZTogc3RyaW5nLCB0ZW1wbGF0ZVR5cGU6IFRlbXBsYXRlVHlwZSk6IG9iamVjdCB7XG4gIGNvbnN0IGZvcm1hdHRlZE5hbWUgPSBmb3JtYXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSk7XG4gIGNvbnN0IHRlbXBsYXRlID0gVEVNUExBVEVTW3RlbXBsYXRlVHlwZV07XG4gIFxuICAvLyBCYXNlIGNvbmZpZ3VyYXRpb24gKHNoYXJlZCBhY3Jvc3MgYWxsIHRlbXBsYXRlcylcbiAgY29uc3QgYmFzZUNvbmZpZyA9IHtcbiAgICAkc2NoZW1hOiAnaHR0cHM6Ly9kZXZkb2Muc2gvZG9jcy5qc29uJyxcbiAgICBuYW1lOiBmb3JtYXR0ZWROYW1lLFxuICAgIGZhdmljb246ICcvZmF2aWNvbi5zdmcnLFxuICAgIGxvZ286IHtcbiAgICAgIGxpZ2h0OiAnL2xvZ28uc3ZnJyxcbiAgICAgIGRhcms6ICcvbG9nby5zdmcnLFxuICAgIH0sXG4gICAgY29sb3JzOiB7XG4gICAgICBwcmltYXJ5OiB0ZW1wbGF0ZS5jb2xvcixcbiAgICB9LFxuICAgIG5hdmlnYXRpb246IHtcbiAgICAgIHRhYnM6IFtdIGFzIG9iamVjdFtdLFxuICAgICAgZ2xvYmFsOiB7XG4gICAgICAgIGFuY2hvcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbmNob3I6ICdHaXRIdWInLFxuICAgICAgICAgICAgaHJlZjogJ2h0dHBzOi8vZ2l0aHViLmNvbS95b3VyLW9yZy95b3VyLXJlcG8nLFxuICAgICAgICAgICAgaWNvbjogJ2dpdGh1Yi1sb2dvJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIC8vIERvY3VtZW50YXRpb24gdGFiIChhbHdheXMgcHJlc2VudClcbiAgY29uc3QgZG9jc1RhYiA9IHtcbiAgICB0YWI6ICdEb2N1bWVudGF0aW9uJyxcbiAgICB0eXBlOiAnZG9jcycsXG4gICAgZ3JvdXBzOiBbXG4gICAgICB7XG4gICAgICAgIGdyb3VwOiAnR2V0dGluZyBTdGFydGVkJyxcbiAgICAgICAgaWNvbjogJ3JvY2tldC1sYXVuY2gnLFxuICAgICAgICBwYWdlczogWydpbmRleCcsICdxdWlja3N0YXJ0J10sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBncm91cDogJ0d1aWRlcycsXG4gICAgICAgIGljb246ICdib29rLW9wZW4nLFxuICAgICAgICBwYWdlczogWydndWlkZXMvb3ZlcnZpZXcnLCAnZ3VpZGVzL2NvbmZpZ3VyYXRpb24nXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICBiYXNlQ29uZmlnLm5hdmlnYXRpb24udGFicy5wdXNoKGRvY3NUYWIpO1xuXG4gIC8vIEFkZCBBUEkgcmVmZXJlbmNlIHRhYiBiYXNlZCBvbiB0ZW1wbGF0ZSB0eXBlXG4gIGlmICh0ZW1wbGF0ZVR5cGUgPT09ICdvcGVuYXBpJykge1xuICAgIGJhc2VDb25maWcubmF2aWdhdGlvbi50YWJzLnB1c2goe1xuICAgICAgdGFiOiAnQVBJIFJlZmVyZW5jZScsXG4gICAgICB0eXBlOiAnb3BlbmFwaScsXG4gICAgICBwYXRoOiAnL2FwaS1yZWZlcmVuY2UnLFxuICAgICAgdmVyc2lvbnM6IFtcbiAgICAgICAgeyB2ZXJzaW9uOiAndjEnLCBzcGVjOiAnYXBpLXJlZmVyZW5jZS9vcGVuYXBpLmpzb24nLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICBdLFxuICAgICAgZ3JvdXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBncm91cDogJ092ZXJ2aWV3JyxcbiAgICAgICAgICBpY29uOiAnYm9vay1vcGVuJyxcbiAgICAgICAgICBwYWdlczogW1xuICAgICAgICAgICAgJ2FwaS1yZWZlcmVuY2UvaW50cm9kdWN0aW9uJyxcbiAgICAgICAgICAgICdhcGktcmVmZXJlbmNlL2F1dGhlbnRpY2F0aW9uJyxcbiAgICAgICAgICAgICdhcGktcmVmZXJlbmNlL2Vycm9ycycsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgQVBJIHBsYXlncm91bmQgY29uZmlnXG4gICAgKGJhc2VDb25maWcgYXMgYW55KS5hcGkgPSB7XG4gICAgICBiYXNlVXJsOiAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nLFxuICAgICAgcGxheWdyb3VuZDoge1xuICAgICAgICBtb2RlOiAnc2hvdycsXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSBpZiAodGVtcGxhdGVUeXBlID09PSAnZ3JhcGhxbCcpIHtcbiAgICBiYXNlQ29uZmlnLm5hdmlnYXRpb24udGFicy5wdXNoKHtcbiAgICAgIHRhYjogJ0dyYXBoUUwgQVBJJyxcbiAgICAgIHR5cGU6ICdncmFwaHFsJyxcbiAgICAgIHBhdGg6ICcvZ3JhcGhxbC1hcGknLFxuICAgICAgc2NoZW1hOiAnYXBpLXJlZmVyZW5jZS9zY2hlbWEuZ3JhcGhxbCcsXG4gICAgICBlbmRwb2ludDogJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL2dyYXBocWwnLFxuICAgICAgZ3JvdXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBncm91cDogJ092ZXJ2aWV3JyxcbiAgICAgICAgICBpY29uOiAnYm9vay1vcGVuJyxcbiAgICAgICAgICBwYWdlczogW1xuICAgICAgICAgICAgJ2FwaS1yZWZlcmVuY2UvaW50cm9kdWN0aW9uJyxcbiAgICAgICAgICAgICdhcGktcmVmZXJlbmNlL2F1dGhlbnRpY2F0aW9uJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBiYXNlQ29uZmlnO1xufVxuXG4vLyBDbGF1ZGUgQ29kZSBza2lsbHMgdG8gY3JlYXRlXG5jb25zdCBDTEFVREVfU0tJTExTID0gW1xuICAnYm9vdHN0cmFwLWRvY3MnLFxuICAnd2hpc2stdGhlbWUnLFxuICAnbWlncmF0ZS1kb2NzJyxcbiAgJ2ltcG9ydC1hcGktc3BlYycsXG4gICdjaGVjay1kb2NzJyxcbiAgJ2JsYW1lLWRvYycsXG4gICdjcmVhdGUtZG9jJyxcbiAgJ3VwZGF0ZS1kb2MnLFxuICAnZGVsZXRlLWRvYycsXG4gICdjb21taXQtZG9jJyxcbl07XG5cbi8vIEN1cnNvciBydWxlcyB0byBjcmVhdGVcbmNvbnN0IENVUlNPUl9SVUxFUyA9IFtcbiAgJ2RldmRvYy5tZGMnLFxuICAnZGV2ZG9jLWJvb3RzdHJhcC5tZGMnLFxuICAnZGV2ZG9jLXdoaXNrLXRoZW1lLm1kYycsXG4gICdkZXZkb2MtbWlncmF0ZS5tZGMnLFxuICAnZGV2ZG9jLWJsYW1lLm1kYycsXG4gICdkZXZkb2MtY3JlYXRlLm1kYycsXG4gICdkZXZkb2MtdXBkYXRlLm1kYycsXG4gICdkZXZkb2MtZGVsZXRlLm1kYycsXG4gICdkZXZkb2MtY29tbWl0Lm1kYycsXG5dO1xuXG4vKipcbiAqIEdldCB0aGUgQUkgYWdlbnRzIHRlbXBsYXRlIGRpcmVjdG9yeSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGdldEFJQWdlbnRzRGlyKCk6IHN0cmluZyB8IG51bGwge1xuICAvLyBUcnkgcmVsYXRpdmUgdG8gY29tcGlsZWQgZGlzdCAocGFja2FnZXMvZGV2ZG9jL2Rpc3QvY2xpL2NvbW1hbmRzIC0+IHBhY2thZ2VzL2RldmRvYy9haS1hZ2VudHMpXG4gIGxldCBhZ2VudHNEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnYWktYWdlbnRzJyk7XG4gIFxuICBpZiAoZnMuZXhpc3RzU3luYyhhZ2VudHNEaXIpKSB7XG4gICAgcmV0dXJuIGFnZW50c0RpcjtcbiAgfVxuICBcbiAgLy8gVHJ5IGRldmRvYy90ZW1wbGF0ZXMgYXQgcmVwbyByb290IChkZXZlbG9wbWVudClcbiAgYWdlbnRzRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJy4uJywgJy4uJywgJ2RldmRvYycsICd0ZW1wbGF0ZXMnLCAnc3RhcnRlcicpO1xuICBcbiAgaWYgKGZzLmV4aXN0c1N5bmMoYWdlbnRzRGlyKSkge1xuICAgIHJldHVybiBhZ2VudHNEaXI7XG4gIH1cbiAgXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEluc3RhbGwgQUkgYWdlbnQgY29uZmlndXJhdGlvbiBmaWxlc1xuICovXG5mdW5jdGlvbiBpbnN0YWxsQUlBZ2VudHMoXG4gIHByb2plY3RQYXRoOiBzdHJpbmcsIFxuICB0b29sOiAnY2xhdWRlJyB8ICdjdXJzb3InIHwgJ2JvdGgnXG4pOiB7IGNsYXVkZU1kOiBib29sZWFuOyBjbGF1ZGVTa2lsbHM6IHN0cmluZ1tdOyBjdXJzb3JSdWxlczogc3RyaW5nW10gfSB7XG4gIGNvbnN0IHJlc3VsdHMgPSB7XG4gICAgY2xhdWRlTWQ6IGZhbHNlLFxuICAgIGNsYXVkZVNraWxsczogW10gYXMgc3RyaW5nW10sXG4gICAgY3Vyc29yUnVsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICB9O1xuXG4gIGNvbnN0IGFnZW50c0RpciA9IGdldEFJQWdlbnRzRGlyKCk7XG4gIGlmICghYWdlbnRzRGlyKSB7XG4gICAgbG9nZ2VyLndhcm4oJ0FJIGFnZW50IHRlbXBsYXRlcyBub3QgZm91bmQnKTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIEluc3RhbGwgQ2xhdWRlIENvZGUgZmlsZXNcbiAgaWYgKHRvb2wgPT09ICdjbGF1ZGUnIHx8IHRvb2wgPT09ICdib3RoJykge1xuICAgIC8vIENvcHkgQ0xBVURFLm1kXG4gICAgY29uc3QgY2xhdWRlTWRTb3VyY2UgPSBwYXRoLmpvaW4oYWdlbnRzRGlyLCAnQ0xBVURFLm1kJyk7XG4gICAgY29uc3QgY2xhdWRlTWREZXN0ID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnQ0xBVURFLm1kJyk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoY2xhdWRlTWRTb3VyY2UpKSB7XG4gICAgICBmcy5jb3B5U3luYyhjbGF1ZGVNZFNvdXJjZSwgY2xhdWRlTWREZXN0KTtcbiAgICAgIHJlc3VsdHMuY2xhdWRlTWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENvcHkgc2tpbGxzXG4gICAgY29uc3Qgc291cmNlU2tpbGxzRGlyID0gcGF0aC5qb2luKGFnZW50c0RpciwgJy5jbGF1ZGUnLCAnc2tpbGxzJyk7XG4gICAgY29uc3QgZGVzdFNraWxsc0RpciA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJy5jbGF1ZGUnLCAnc2tpbGxzJyk7XG4gICAgXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoc291cmNlU2tpbGxzRGlyKSkge1xuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkZXN0U2tpbGxzRGlyKTtcbiAgICAgIFxuICAgICAgZm9yIChjb25zdCBza2lsbCBvZiBDTEFVREVfU0tJTExTKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZURpciA9IHBhdGguam9pbihzb3VyY2VTa2lsbHNEaXIsIHNraWxsKTtcbiAgICAgICAgY29uc3QgZGVzdERpciA9IHBhdGguam9pbihkZXN0U2tpbGxzRGlyLCBza2lsbCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhzb3VyY2VEaXIpKSB7XG4gICAgICAgICAgZnMuY29weVN5bmMoc291cmNlRGlyLCBkZXN0RGlyKTtcbiAgICAgICAgICByZXN1bHRzLmNsYXVkZVNraWxscy5wdXNoKHNraWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEluc3RhbGwgQ3Vyc29yIGZpbGVzXG4gIGlmICh0b29sID09PSAnY3Vyc29yJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICBjb25zdCBzb3VyY2VSdWxlc0RpciA9IHBhdGguam9pbihhZ2VudHNEaXIsICcuY3Vyc29yJywgJ3J1bGVzJyk7XG4gICAgY29uc3QgZGVzdFJ1bGVzRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLmN1cnNvcicsICdydWxlcycpO1xuICAgIFxuICAgIGlmIChmcy5leGlzdHNTeW5jKHNvdXJjZVJ1bGVzRGlyKSkge1xuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkZXN0UnVsZXNEaXIpO1xuICAgICAgXG4gICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgQ1VSU09SX1JVTEVTKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBwYXRoLmpvaW4oc291cmNlUnVsZXNEaXIsIHJ1bGUpO1xuICAgICAgICBjb25zdCBkZXN0UGF0aCA9IHBhdGguam9pbihkZXN0UnVsZXNEaXIsIHJ1bGUpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc291cmNlUGF0aCkpIHtcbiAgICAgICAgICBmcy5jb3B5U3luYyhzb3VyY2VQYXRoLCBkZXN0UGF0aCk7XG4gICAgICAgICAgcmVzdWx0cy5jdXJzb3JSdWxlcy5wdXNoKHJ1bGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKlxuICogQ2xlYW4gdXAgdW51c2VkIEFQSSBmaWxlcyBiYXNlZCBvbiB0ZW1wbGF0ZSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNsZWFudXBVbnVzZWRGaWxlcyhyZXNvbHZlZFBhdGg6IHN0cmluZywgdGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUpOiB2b2lkIHtcbiAgY29uc3QgYXBpUmVmUGF0aCA9IHBhdGguam9pbihyZXNvbHZlZFBhdGgsICdhcGktcmVmZXJlbmNlJyk7XG4gIFxuICBpZiAodGVtcGxhdGVUeXBlID09PSAnYmFzaWMnKSB7XG4gICAgLy8gUmVtb3ZlIGVudGlyZSBhcGktcmVmZXJlbmNlIGZvbGRlciBmb3IgYmFzaWMgdGVtcGxhdGVcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhhcGlSZWZQYXRoKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhhcGlSZWZQYXRoKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnUmVtb3ZlZCBhcGktcmVmZXJlbmNlIGZvbGRlciAobm90IG5lZWRlZCBmb3IgYmFzaWMgdGVtcGxhdGUpJyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHRlbXBsYXRlVHlwZSA9PT0gJ29wZW5hcGknKSB7XG4gICAgLy8gUmVtb3ZlIEdyYXBoUUwgc2NoZW1hIGZvciBPcGVuQVBJIHRlbXBsYXRlXG4gICAgY29uc3QgZ3JhcGhxbFNjaGVtYSA9IHBhdGguam9pbihhcGlSZWZQYXRoLCAnc2NoZW1hLmdyYXBocWwnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhncmFwaHFsU2NoZW1hKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhncmFwaHFsU2NoZW1hKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnUmVtb3ZlZCBzY2hlbWEuZ3JhcGhxbCAobm90IG5lZWRlZCBmb3IgT3BlbkFQSSB0ZW1wbGF0ZSknKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodGVtcGxhdGVUeXBlID09PSAnZ3JhcGhxbCcpIHtcbiAgICAvLyBSZW1vdmUgT3BlbkFQSSBzcGVjIGFuZCBlcnJvcnMubWR4IGZvciBHcmFwaFFMIHRlbXBsYXRlXG4gICAgY29uc3Qgb3BlbmFwaVNwZWMgPSBwYXRoLmpvaW4oYXBpUmVmUGF0aCwgJ29wZW5hcGkuanNvbicpO1xuICAgIGNvbnN0IGVycm9yc0ZpbGUgPSBwYXRoLmpvaW4oYXBpUmVmUGF0aCwgJ2Vycm9ycy5tZHgnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhvcGVuYXBpU3BlYykpIHtcbiAgICAgIGZzLnJlbW92ZVN5bmMob3BlbmFwaVNwZWMpO1xuICAgICAgbG9nZ2VyLmRlYnVnKCdSZW1vdmVkIG9wZW5hcGkuanNvbiAobm90IG5lZWRlZCBmb3IgR3JhcGhRTCB0ZW1wbGF0ZSknKTtcbiAgICB9XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZXJyb3JzRmlsZSkpIHtcbiAgICAgIGZzLnJlbW92ZVN5bmMoZXJyb3JzRmlsZSk7XG4gICAgICBsb2dnZXIuZGVidWcoJ1JlbW92ZWQgZXJyb3JzLm1keCAobm90IG5lZWRlZCBmb3IgR3JhcGhRTCB0ZW1wbGF0ZSknKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZShwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM6IENyZWF0ZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLmluZm8oJ/CfkJ8gQ3JlYXRlIERldkRvYyBEb2MnKTtcbiAgY29uc29sZS5sb2coKTtcblxuICBjb25zdCBhcGlVcmwgPSBvcHRpb25zLnVybCB8fCBwcm9jZXNzLmVudi5ERVZET0NfQVBJX1VSTCB8fCBERUZBVUxUX0FQSV9VUkw7XG5cbiAgLy8gR2V0IHByb2plY3QgbmFtZSBpZiBub3QgcHJvdmlkZWRcbiAgbGV0IHByb2plY3RQYXRoID0gcHJvamVjdERpcmVjdG9yeTtcblxuICBpZiAoIXByb2plY3RQYXRoKSB7XG4gICAgcHJvamVjdFBhdGggPSBhd2FpdCBwcm9tcHQoJ1doYXQgaXMgeW91ciBwcm9qZWN0IG5hbWVkPycsICdteS1kb2NzJyk7XG4gICAgXG4gICAgaWYgKCFwcm9qZWN0UGF0aCkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdQcm9qZWN0IG5hbWUgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBwcm9qZWN0IG5hbWVcbiAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvamVjdE5hbWUocHJvamVjdFBhdGgpO1xuICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICBsb2dnZXIuZXJyb3IodmFsaWRhdGlvbi5lcnJvciB8fCAnSW52YWxpZCBwcm9qZWN0IG5hbWUnKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICAvLyBHZXQgZG9jIHR5cGUgc2VsZWN0aW9uIGlmIG5vdCBwcm92aWRlZFxuICBsZXQgZG9jVHlwZTogRG9jVHlwZSA9IG9wdGlvbnMuZG9jVHlwZSB8fCAncHVibGljJztcbiAgXG4gIGlmICghb3B0aW9ucy5kb2NUeXBlKSB7XG4gICAgY29uc3QgZG9jVHlwZUNob2ljZXMgPSBPYmplY3QuZW50cmllcyhET0NfVFlQRVMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgdmFsdWU6IGtleSxcbiAgICAgIGxhYmVsOiBgJHt2YWx1ZS5uYW1lfSAtICR7dmFsdWUuZGVzY3JpcHRpb259YCxcbiAgICB9KSk7XG5cbiAgICBkb2NUeXBlID0gYXdhaXQgcHJvbXB0U2VsZWN0KCdXaGF0IHR5cGUgb2YgZG9jdW1lbnRhdGlvbiBhcmUgeW91IGNyZWF0aW5nPycsIGRvY1R5cGVDaG9pY2VzKSBhcyBEb2NUeXBlO1xuICB9XG5cbiAgY29uc3QgaXNJbnRlcm5hbERvY3MgPSBkb2NUeXBlID09PSAnaW50ZXJuYWwnO1xuXG4gIC8vIEdldCB0ZW1wbGF0ZSBzZWxlY3Rpb24gaWYgbm90IHByb3ZpZGVkXG4gIGxldCB0ZW1wbGF0ZTogVGVtcGxhdGVUeXBlID0gb3B0aW9ucy50ZW1wbGF0ZSB8fCAnYmFzaWMnO1xuICBcbiAgaWYgKCFvcHRpb25zLnRlbXBsYXRlKSB7XG4gICAgY29uc3QgdGVtcGxhdGVDaG9pY2VzID0gT2JqZWN0LmVudHJpZXMoVEVNUExBVEVTKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICBsYWJlbDogYCR7dmFsdWUubmFtZX0gLSAke3ZhbHVlLmRlc2NyaXB0aW9ufWAsXG4gICAgfSkpO1xuXG4gICAgdGVtcGxhdGUgPSBhd2FpdCBwcm9tcHRTZWxlY3QoJ1doaWNoIHRlbXBsYXRlIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8nLCB0ZW1wbGF0ZUNob2ljZXMpIGFzIFRlbXBsYXRlVHlwZTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgZnVsbCBwYXRoXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9qZWN0UGF0aCk7XG4gIGNvbnN0IHByb2plY3ROYW1lID0gcGF0aC5iYXNlbmFtZShyZXNvbHZlZFBhdGgpO1xuICBjb25zdCBzbHVnID0gcHJvamVjdE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpO1xuXG4gIC8vIEdldCBzdWJkb21haW4gLSBvbmx5IGZvciBwdWJsaWMgZG9jc1xuICBsZXQgc3ViZG9tYWluOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zLnN1YmRvbWFpbjtcbiAgXG4gIGlmICghaXNJbnRlcm5hbERvY3MpIHtcbiAgICBpZiAoIXN1YmRvbWFpbikge1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIHN1YmRvbWFpbiA9IGF3YWl0IHByb21wdChgRW50ZXIgc3ViZG9tYWluIGZvciB5b3VyIGRvY3MgKCR7c2x1Z30uZGV2ZG9jLnNoKWAsIHNsdWcpO1xuICAgICAgc3ViZG9tYWluID0gc3ViZG9tYWluLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktXS9nLCAnLScpLnJlcGxhY2UoL14tfC0kL2csICcnKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBzdWJkb21haW4gZm9ybWF0IGxvY2FsbHlcbiAgICBjb25zdCBmb3JtYXRDaGVjayA9IGlzVmFsaWRTdWJkb21haW5Gb3JtYXQoc3ViZG9tYWluKTtcbiAgICBpZiAoIWZvcm1hdENoZWNrLnZhbGlkKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZm9ybWF0Q2hlY2suZXJyb3IhKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBzdWJkb21haW4gYXZhaWxhYmlsaXR5IHZpYSBBUEkgKHNlcnZlciB2YWxpZGF0ZXMgYmxhY2tsaXN0KVxuICAgIC8vIExvb3AgdW50aWwgd2UgZmluZCBhbiBhdmFpbGFibGUgc3ViZG9tYWluXG4gICAgbGV0IHN1YmRvbWFpbkF2YWlsYWJsZSA9IGZhbHNlO1xuICAgIHdoaWxlICghc3ViZG9tYWluQXZhaWxhYmxlKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgaWYgJHtzdWJkb21haW59LmRldmRvYy5zaCBpcyBhdmFpbGFibGUuLi5gKTtcbiAgICAgIGNvbnN0IGF2YWlsYWJpbGl0eSA9IGF3YWl0IGNoZWNrU3ViZG9tYWluQXZhaWxhYmlsaXR5KHN1YmRvbWFpbiwgYXBpVXJsKTtcbiAgICAgIFxuICAgICAgaWYgKCFhdmFpbGFiaWxpdHkuYXZhaWxhYmxlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgIGxvZ2dlci53YXJuKGF2YWlsYWJpbGl0eS5lcnJvciB8fCBgU3ViZG9tYWluIFwiJHtzdWJkb21haW59XCIgaXMgbm90IGF2YWlsYWJsZWApO1xuICAgICAgICBcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbiA9IGF2YWlsYWJpbGl0eS5zdWdnZXN0aW9uIHx8IGAke3N1YmRvbWFpbn0tZG9jc2A7XG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBTdWdnZXN0aW9uOiAke3N1Z2dlc3Rpb259LmRldmRvYy5zaGApO1xuICAgICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgICBcbiAgICAgICAgLy8gUHJvbXB0IGZvciBuZXcgc3ViZG9tYWluXG4gICAgICAgIHN1YmRvbWFpbiA9IGF3YWl0IHByb21wdCgnRW50ZXIgYSBkaWZmZXJlbnQgc3ViZG9tYWluJywgc3VnZ2VzdGlvbik7XG4gICAgICAgIHN1YmRvbWFpbiA9IHN1YmRvbWFpbi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05LV0vZywgJy0nKS5yZXBsYWNlKC9eLXwtJC9nLCAnJyk7XG4gICAgICAgIFxuICAgICAgICAvLyBWYWxpZGF0ZSBmb3JtYXRcbiAgICAgICAgY29uc3QgZm9ybWF0Q2hlY2sgPSBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbik7XG4gICAgICAgIGlmICghZm9ybWF0Q2hlY2sudmFsaWQpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoZm9ybWF0Q2hlY2suZXJyb3IhKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YmRvbWFpbkF2YWlsYWJsZSA9IHRydWU7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKGDinJMgJHtzdWJkb21haW59LmRldmRvYy5zaCBpcyBhdmFpbGFibGUhYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXN0c1xuICBpZiAoZnMuZXhpc3RzU3luYyhyZXNvbHZlZFBhdGgpKSB7XG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhyZXNvbHZlZFBhdGgpO1xuICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBvdmVyd3JpdGUgPSBhd2FpdCBwcm9tcHRDb25maXJtKGBEaXJlY3RvcnkgJHtwcm9qZWN0TmFtZX0gaXMgbm90IGVtcHR5LiBDb250aW51ZSBhbnl3YXk/YCwgZmFsc2UpO1xuICAgICAgXG4gICAgICBpZiAoIW92ZXJ3cml0ZSkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ09wZXJhdGlvbiBjYW5jZWxsZWQnKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkVGVtcGxhdGUgPSBURU1QTEFURVNbdGVtcGxhdGVdO1xuICBjb25zb2xlLmxvZygpO1xuICBsb2dnZXIuaW5mbyhgQ3JlYXRpbmcgYSBuZXcgJHtzZWxlY3RlZFRlbXBsYXRlLm5hbWV9IERldkRvYyBkb2N1bWVudGF0aW9uIHNpdGUgaW4gJHtyZXNvbHZlZFBhdGh9YCk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgLy8gQ3JlYXRlIHByb2plY3QgZGlyZWN0b3J5XG4gIGZzLmVuc3VyZURpclN5bmMocmVzb2x2ZWRQYXRoKTtcblxuICAvLyBEb3dubG9hZCB0ZW1wbGF0ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IChhbHdheXMgdXNlIHN0YXJ0ZXIgdGVtcGxhdGUpXG4gIGxvZ2dlci5pbmZvKCdEb3dubG9hZGluZyB0ZW1wbGF0ZS4uLicpO1xuICBcbiAgdHJ5IHtcbiAgICAvLyBUcnkgdG8gZG93bmxvYWQgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSBmaXJzdFxuICAgIGF3YWl0IGRvd25sb2FkVGVtcGxhdGUoVEVNUExBVEVfUkVQTywge1xuICAgICAgZGlyOiByZXNvbHZlZFBhdGgsXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBsb2dnZXIuc3VjY2VzcygnRG93bmxvYWRlZCBzdGFydGVyIHRlbXBsYXRlJyk7XG4gIH0gY2F0Y2ggKGRvd25sb2FkRXJyb3IpIHtcbiAgICAvLyBGYWxsIGJhY2sgdG8gbG9jYWwgdGVtcGxhdGVzIChmb3IgZGV2ZWxvcG1lbnQgb3Igb2ZmbGluZSB1c2FnZSlcbiAgICBsb2dnZXIuZGVidWcoYFJlbW90ZSBkb3dubG9hZCBmYWlsZWQ6ICR7ZG93bmxvYWRFcnJvcn1gKTtcbiAgICBsb2dnZXIuaW5mbygnRmFsbGluZyBiYWNrIHRvIGxvY2FsIHRlbXBsYXRlLi4uJyk7XG4gICAgXG4gICAgY29uc3QgdGVtcGxhdGVEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAndGVtcGxhdGVzJywgJ3N0YXJ0ZXInKTtcbiAgICBcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGVtcGxhdGVEaXIpKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ1RlbXBsYXRlIFwic3RhcnRlclwiIG5vdCBmb3VuZCcpO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBMb29rZWQgZm9yIHRlbXBsYXRlIGF0OiAke3RlbXBsYXRlRGlyfWApO1xuICAgICAgbG9nZ2VyLmRlYnVnKCdSZW1vdGUgc291cmNlOiAnICsgVEVNUExBVEVfUkVQTyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgZnMuY29weVN5bmModGVtcGxhdGVEaXIsIHJlc29sdmVkUGF0aCwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG4gICAgbG9nZ2VyLnN1Y2Nlc3MoJ0NvcGllZCBsb2NhbCB0ZW1wbGF0ZScpO1xuICB9XG5cbiAgLy8gVXBkYXRlIHBhY2thZ2UuanNvbiB3aXRoIHByb2plY3QgbmFtZVxuICBjb25zdCBwa2dQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhwa2dQYXRoKSkge1xuICAgIGNvbnN0IHBrZyA9IGZzLnJlYWRKc29uU3luYyhwa2dQYXRoKTtcbiAgICBwa2cubmFtZSA9IHByb2plY3ROYW1lO1xuICAgIGZzLndyaXRlSnNvblN5bmMocGtnUGF0aCwgcGtnLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIC8vIEdlbmVyYXRlIGRvY3MuanNvbiBiYXNlZCBvbiB0ZW1wbGF0ZSB0eXBlXG4gIGNvbnN0IGRvY3NDb25maWcgPSBnZW5lcmF0ZURvY3NDb25maWcocHJvamVjdE5hbWUsIHRlbXBsYXRlKTtcbiAgY29uc3QgZG9jc1BhdGggPSBwYXRoLmpvaW4ocmVzb2x2ZWRQYXRoLCAnZG9jcy5qc29uJyk7XG4gIGZzLndyaXRlSnNvblN5bmMoZG9jc1BhdGgsIGRvY3NDb25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICBsb2dnZXIuc3VjY2VzcyhgR2VuZXJhdGVkIGRvY3MuanNvbiBmb3IgJHtzZWxlY3RlZFRlbXBsYXRlLm5hbWV9IHRlbXBsYXRlYCk7XG5cbiAgLy8gVXBkYXRlIHRoZW1lLmpzb24gd2l0aCB0ZW1wbGF0ZSBjb2xvclxuICBjb25zdCB0aGVtZVBhdGggPSBwYXRoLmpvaW4ocmVzb2x2ZWRQYXRoLCAndGhlbWUuanNvbicpO1xuICBpZiAoZnMuZXhpc3RzU3luYyh0aGVtZVBhdGgpKSB7XG4gICAgY29uc3QgdGhlbWUgPSBmcy5yZWFkSnNvblN5bmModGhlbWVQYXRoKTtcbiAgICB0aGVtZS5jb2xvcnMgPSB7XG4gICAgICBwcmltYXJ5OiBzZWxlY3RlZFRlbXBsYXRlLmNvbG9yLFxuICAgICAgcHJpbWFyeUxpZ2h0OiBzZWxlY3RlZFRlbXBsYXRlLmNvbG9yLFxuICAgICAgcHJpbWFyeURhcms6IHNlbGVjdGVkVGVtcGxhdGUuY29sb3IsXG4gICAgfTtcbiAgICBmcy53cml0ZUpzb25TeW5jKHRoZW1lUGF0aCwgdGhlbWUsIHsgc3BhY2VzOiAyIH0pO1xuICB9XG5cbiAgLy8gQ2xlYW4gdXAgdW51c2VkIGZpbGVzIGJhc2VkIG9uIHRlbXBsYXRlIHR5cGVcbiAgY2xlYW51cFVudXNlZEZpbGVzKHJlc29sdmVkUGF0aCwgdGVtcGxhdGUpO1xuXG4gIC8vIENyZWF0ZSAuZGV2ZG9jLmpzb24gd2l0aCBwcm9qZWN0IGNvbmZpZ1xuICAvLyBGb3IgcHVibGljIGRvY3M6IHN1YmRvbWFpbiB3aWxsIG9ubHkgYmUgcmVzZXJ2ZWQgd2hlbiB0aGUgdXNlciBhY3R1YWxseSBkZXBsb3lzXG4gIC8vIEZvciBpbnRlcm5hbCBkb2NzOiBubyBzdWJkb21haW4gbmVlZGVkXG4gIGNvbnN0IGRldmRvY0NvbmZpZ1BhdGggPSBwYXRoLmpvaW4ocmVzb2x2ZWRQYXRoLCAnLmRldmRvYy5qc29uJyk7XG4gIFxuICBjb25zdCBkZXZkb2NDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHByb2plY3RJZDogYCR7c2x1Z30tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOCl9YCxcbiAgICBuYW1lOiBmb3JtYXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSksXG4gICAgc2x1Zzogc2x1ZyxcbiAgICBkb2NUeXBlOiBkb2NUeXBlLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9O1xuXG4gIC8vIE9ubHkgYWRkIHN1YmRvbWFpbiBmb3IgcHVibGljIGRvY3NcbiAgaWYgKCFpc0ludGVybmFsRG9jcyAmJiBzdWJkb21haW4pIHtcbiAgICBkZXZkb2NDb25maWcuc3ViZG9tYWluID0gc3ViZG9tYWluO1xuICB9XG5cbiAgZnMud3JpdGVKc29uU3luYyhkZXZkb2NDb25maWdQYXRoLCBkZXZkb2NDb25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICBsb2dnZXIuc3VjY2VzcygnQ3JlYXRlZCAuZGV2ZG9jLmpzb24nKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgRG9jIFR5cGU6JywgRE9DX1RZUEVTW2RvY1R5cGVdLm5hbWUpO1xuICBpZiAoIWlzSW50ZXJuYWxEb2NzICYmIHN1YmRvbWFpbikge1xuICAgIGNvbnNvbGUubG9nKCcgIFN1YmRvbWFpbjonLCBgJHtzdWJkb21haW59LmRldmRvYy5zaGApO1xuICAgIGNvbnNvbGUubG9nKCcgIFN0YXR1czonLCAnTm90IHlldCBkZXBsb3llZCAoc3ViZG9tYWluIHdpbGwgYmUgcmVzZXJ2ZWQgb24gZmlyc3QgZGVwbG95KScpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCcgIFN0YXR1czonLCAnSW50ZXJuYWwgZG9jcyAobG9jYWwgZGV2ZWxvcG1lbnQgb25seSknKTtcbiAgfVxuXG4gIC8vIEluaXRpYWxpemUgZ2l0XG4gIGlmIChvcHRpb25zLmdpdCAhPT0gZmFsc2UpIHtcbiAgICBsb2dnZXIuaW5mbygnSW5pdGlhbGl6aW5nIGdpdCByZXBvc2l0b3J5Li4uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWNTeW5jKCdnaXQgaW5pdCcsIHsgY3dkOiByZXNvbHZlZFBhdGgsIHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICAgIGV4ZWNTeW5jKCdnaXQgYWRkIC1BJywgeyBjd2Q6IHJlc29sdmVkUGF0aCwgc3RkaW86ICdpZ25vcmUnIH0pO1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJJbml0aWFsIGNvbW1pdCBmcm9tIGRldmRvYyBjcmVhdGVcIicsIHtcbiAgICAgICAgY3dkOiByZXNvbHZlZFBhdGgsXG4gICAgICAgIHN0ZGlvOiAnaWdub3JlJyxcbiAgICAgIH0pO1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0dpdCByZXBvc2l0b3J5IGluaXRpYWxpemVkJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBsb2dnZXIud2FybignQ291bGQgbm90IGluaXRpYWxpemUgZ2l0IHJlcG9zaXRvcnknKTtcbiAgICB9XG4gIH1cblxuICAvLyBJbnN0YWxsIGRlcGVuZGVuY2llc1xuICBpZiAob3B0aW9ucy5pbnN0YWxsICE9PSBmYWxzZSkge1xuICAgIGxvZ2dlci5pbmZvKCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLicpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYWNrYWdlTWFuYWdlciA9IGdldFBhY2thZ2VNYW5hZ2VyKCk7XG4gICAgICBleGVjU3luYyhgJHtwYWNrYWdlTWFuYWdlcn0gaW5zdGFsbGAsIHtcbiAgICAgICAgY3dkOiByZXNvbHZlZFBhdGgsXG4gICAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCdEZXBlbmRlbmNpZXMgaW5zdGFsbGVkJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBsb2dnZXIud2FybignQ291bGQgbm90IGluc3RhbGwgZGVwZW5kZW5jaWVzJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW5zdGFsbCBBSSBhZ2VudHMgLSBhbHdheXMgcHJvbXB0IGFzIHBhcnQgb2YgY3JlYXRlIGZsb3dcbiAgbGV0IGFpVG9vbDogJ2NsYXVkZScgfCAnY3Vyc29yJyB8ICdib3RoJyB8IG51bGwgPSBudWxsO1xuICBcbiAgY29uc3QgYWlDaG9pY2VzID0gW1xuICAgIHsgdmFsdWU6ICdib3RoJywgbGFiZWw6ICdCb3RoIC0gQ2xhdWRlIENvZGUgYW5kIEN1cnNvciAocmVjb21tZW5kZWQpJyB9LFxuICAgIHsgdmFsdWU6ICdjdXJzb3InLCBsYWJlbDogJ0N1cnNvciAtIFJ1bGVzIGZvciBDdXJzb3IgSURFJyB9LFxuICAgIHsgdmFsdWU6ICdjbGF1ZGUnLCBsYWJlbDogJ0NsYXVkZSBDb2RlIC0gU2tpbGxzIGFuZCBDTEFVREUubWQnIH0sXG4gIF07XG4gIGNvbnN0IGFpU2VsZWN0aW9uID0gYXdhaXQgcHJvbXB0U2VsZWN0KCdXaGljaCBBSSBjb2RpbmcgYXNzaXN0YW50IGRvIHlvdSB1c2U/JywgYWlDaG9pY2VzKTtcbiAgYWlUb29sID0gYWlTZWxlY3Rpb24gYXMgJ2NsYXVkZScgfCAnY3Vyc29yJyB8ICdib3RoJztcblxuICBpZiAoYWlUb29sKSB7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBsb2dnZXIuaW5mbygnU2V0dGluZyB1cCBBSSBhZ2VudCBjb25maWd1cmF0aW9uLi4uJyk7XG4gICAgY29uc3QgYWlSZXN1bHRzID0gaW5zdGFsbEFJQWdlbnRzKHJlc29sdmVkUGF0aCwgYWlUb29sKTtcbiAgICBcbiAgICBpZiAoYWlSZXN1bHRzLmNsYXVkZU1kKSB7XG4gICAgICBsb2dnZXIuc3VjY2VzcygnQ3JlYXRlZCBDTEFVREUubWQnKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBza2lsbCBvZiBhaVJlc3VsdHMuY2xhdWRlU2tpbGxzKSB7XG4gICAgICBsb2dnZXIuc3VjY2VzcyhgQ3JlYXRlZCAuY2xhdWRlL3NraWxscy8ke3NraWxsfS9TS0lMTC5tZGApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgYWlSZXN1bHRzLmN1cnNvclJ1bGVzKSB7XG4gICAgICBsb2dnZXIuc3VjY2VzcyhgQ3JlYXRlZCAuY3Vyc29yL3J1bGVzLyR7cnVsZX1gKTtcbiAgICB9XG4gIH1cblxuICAvLyBTdWNjZXNzIG1lc3NhZ2VcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgJHtwcm9qZWN0TmFtZX0gYXQgJHtyZXNvbHZlZFBhdGh9YCk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgaWYgKCFpc0ludGVybmFsRG9jcyAmJiBzdWJkb21haW4pIHtcbiAgICBjb25zb2xlLmxvZygnWW91ciBkb2NzIHdpbGwgYmUgYXZhaWxhYmxlIGF0OicpO1xuICAgIGNvbnNvbGUubG9nKGAgIGh0dHBzOi8vJHtzdWJkb21haW59LmRldmRvYy5zaGApO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgbG9nZ2VyLmluZm8oJ05vdGU6IFRoZSBzdWJkb21haW4gd2lsbCBiZSByZXNlcnZlZCB3aGVuIHlvdSBydW4gXCJucG0gcnVuIGRlcGxveVwiJyk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnVGhpcyBpcyBhbiBpbnRlcm5hbCBkb2N1bWVudGF0aW9uIHByb2plY3QgZm9yIGxvY2FsIGRldmVsb3BtZW50LicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnQXZhaWxhYmxlIGNvbW1hbmRzOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBucG0gcnVuIGRldiAgICAgICBTdGFydCB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyJyk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gYnVpbGQgICAgIEJ1aWxkIGZvciBwcm9kdWN0aW9uJyk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gc3RhcnQgICAgIFN0YXJ0IHByb2R1Y3Rpb24gc2VydmVyJyk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gY2hlY2sgICAgIFZhbGlkYXRlIGRvY3MuanNvbiBhbmQgTURYIGZpbGVzJyk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gZGVwbG95ICAgIERlcGxveSB0byBEZXZEb2MgcGxhdGZvcm0nKTtcbiAgY29uc29sZS5sb2coJyAgbnBtIHJ1biBhaSAgICAgICAgU2V0IHVwIEFJIGFnZW50IGNvbmZpZ3VyYXRpb24nKTtcbiAgY29uc29sZS5sb2coJyAgbnBtIHJ1biB3aG9hbWkgICAgU2hvdyBjdXJyZW50IHByb2plY3QgaW5mbycpO1xuICBjb25zb2xlLmxvZygnICBucG0gcnVuIHVwZ3JhZGUgICBVcGRhdGUgZGV2ZG9jIHRvIGxhdGVzdCB2ZXJzaW9uJyk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgY29uc29sZS5sb2coJ1dlIHN1Z2dlc3QgdGhhdCB5b3UgYmVnaW4gYnkgdHlwaW5nOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhgICBjZCAke3Byb2plY3ROYW1lfWApO1xuICBjb25zb2xlLmxvZygnICBucG0gcnVuIGRldicpO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIFNob3cgQUkgYWdlbnQgcXVpY2sgc3RhcnQgdGlwc1xuICBjb25zb2xlLmxvZygnQUkgQWdlbnQgUXVpY2sgU3RhcnQ6Jyk7XG4gIGlmIChhaVRvb2wgPT09ICdjbGF1ZGUnIHx8IGFpVG9vbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc29sZS5sb2coJyAgQ2xhdWRlIENvZGU6IC9ib290c3RyYXAtZG9jcycpO1xuICB9XG4gIGlmIChhaVRvb2wgPT09ICdjdXJzb3InIHx8IGFpVG9vbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc29sZS5sb2coJyAgQ3Vyc29yOiBBc2sgXCJnZW5lcmF0ZSBpbml0aWFsIGRvY3VtZW50YXRpb24gZnJvbSB0aGlzIHJlcG9cIicpO1xuICB9XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgLy8gQVNDSUkgYXJ0IGJhbm5lclxuICBjb25zb2xlLmxvZyhgXG4gIF9fX18gICAgICAgICAgICAgIF9fX18gICAgICAgICAgICAgXG4gfCAgXyBcXFxcICBfX19fXyAgIF9ffCAgXyBcXFxcICBfX18gICBfX18gXG4gfCB8IHwgfC8gXyBcXFxcIFxcXFwgLyAvfCB8IHwgfC8gXyBcXFxcIC8gX198XG4gfCB8X3wgfCAgX18vXFxcXCBWIC8gfCB8X3wgfCAoXykgfCAoX18gXG4gfF9fX18vIFxcXFxfX198IFxcXFxfLyAgfF9fX18vIFxcXFxfX18vIFxcXFxfX198XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBgKTtcbiAgY29uc29sZS5sb2coJ0hhcHB5IGRvY3VtZW50aW5nIScpO1xuICBjb25zb2xlLmxvZygpO1xufVxuIl19
@@ -37,16 +37,22 @@ async function whoami(options) {
37
37
  }
38
38
  // Check for .devdoc.json
39
39
  if (!fs_extra_1.default.existsSync(devdocConfigPath)) {
40
- console.log(` Status: ${logger_1.logger.yellow('Not deployed')}`);
40
+ console.log(` Status: ${logger_1.logger.yellow('Not initialized')}`);
41
41
  console.log('');
42
- logger_1.logger.info('Run "devdoc deploy" to deploy your documentation.');
42
+ logger_1.logger.info('Run "devdoc init" to initialize your project.');
43
43
  console.log('');
44
44
  process.exit(0);
45
45
  }
46
46
  try {
47
47
  const config = fs_extra_1.default.readJsonSync(devdocConfigPath);
48
48
  console.log(` Project Slug: ${config.slug || logger_1.logger.yellow('Unknown')}`);
49
- console.log(` Status: ${logger_1.logger.green('Deployed')}`);
49
+ // Only show "Deployed" if API key exists (project was actually deployed)
50
+ if (config.apiKey) {
51
+ console.log(` Status: ${logger_1.logger.green('Deployed')}`);
52
+ }
53
+ else {
54
+ console.log(` Status: ${logger_1.logger.yellow('Initialized (not deployed)')}`);
55
+ }
50
56
  if (config.url) {
51
57
  console.log(` URL: ${logger_1.logger.cyan(config.url)}`);
52
58
  }
@@ -61,6 +67,12 @@ async function whoami(options) {
61
67
  console.log('');
62
68
  console.log(` Platform: ${apiUrl}`);
63
69
  console.log('');
70
+ // Show helpful message if not deployed
71
+ if (!config.apiKey) {
72
+ logger_1.logger.info('Run "devdoc deploy" to deploy your documentation.');
73
+ console.log('');
74
+ return;
75
+ }
64
76
  // Optional: verify with server
65
77
  if (config.slug && config.apiKey) {
66
78
  try {
@@ -88,4 +100,4 @@ async function whoami(options) {
88
100
  process.exit(1);
89
101
  }
90
102
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hvYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy93aG9hbWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtQkEsd0JBb0ZDO0FBdkdELGdEQUF1QjtBQUN2Qix3REFBeUI7QUFDekIsK0NBQTJDO0FBQzNDLCtDQUFpRDtBQWFqRDs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsT0FBc0I7SUFDakQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksMkJBQWUsQ0FBQTtJQUMzRSxNQUFNLGdCQUFnQixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sY0FBYyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBRTFELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFZixzQkFBc0I7SUFDdEIsSUFBSSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLGtCQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLGVBQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDOUUsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLGVBQU0sQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDN0UsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLGVBQU0sQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUFJLENBQUMsa0JBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLGVBQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDZixlQUFNLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUE7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLGtCQUFFLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFpQixDQUFBO1FBRWhFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLE1BQU0sQ0FBQyxJQUFJLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsZUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFMUQsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0QsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDNUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFZiwrQkFBK0I7UUFDL0IsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxNQUFNLG9CQUFvQixNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3ZFLE1BQU0sRUFBRSxLQUFLO29CQUNiLE9BQU8sRUFBRTt3QkFDUCxlQUFlLEVBQUUsVUFBVSxNQUFNLENBQUMsTUFBTSxFQUFFO3FCQUMzQztpQkFDRixDQUFDLENBQUE7Z0JBRUYsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBMEIsQ0FBQTtvQkFDMUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2hCLGVBQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQTtvQkFDaEQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxnREFBZ0Q7WUFDbEQsQ0FBQztRQUNILENBQUM7SUFFSCxDQUFDO0lBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEUsZUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSdcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlcidcbmltcG9ydCB7IERFRkFVTFRfQVBJX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcblxuaW50ZXJmYWNlIFdob2FtaU9wdGlvbnMge1xuICB1cmw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERldkRvY0NvbmZpZyB7XG4gIHNsdWc/OiBzdHJpbmdcbiAgYXBpS2V5Pzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICBsYXN0RGVwbG95ZWQ/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBTaG93IGN1cnJlbnQgcHJvamVjdCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2hvYW1pKG9wdGlvbnM6IFdob2FtaU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpXG4gIGNvbnN0IGFwaVVybCA9IG9wdGlvbnMudXJsIHx8IHByb2Nlc3MuZW52LkRFVkRPQ19BUElfVVJMIHx8IERFRkFVTFRfQVBJX1VSTFxuICBjb25zdCBkZXZkb2NDb25maWdQYXRoID0gcGF0aC5qb2luKHByb2plY3RSb290LCAnLmRldmRvYy5qc29uJylcbiAgY29uc3QgZG9jc0NvbmZpZ1BhdGggPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICdkb2NzLmpzb24nKVxuICBcbiAgY29uc29sZS5sb2coJycpXG4gIGNvbnNvbGUubG9nKCdEZXZEb2MgUHJvamVjdCBJbmZvcm1hdGlvbicpXG4gIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09PT0nKVxuICBjb25zb2xlLmxvZygnJylcbiAgXG4gIC8vIENoZWNrIGZvciBkb2NzLmpzb25cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZG9jc0NvbmZpZ1BhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvY3NDb25maWcgPSBmcy5yZWFkSnNvblN5bmMoZG9jc0NvbmZpZ1BhdGgpXG4gICAgICBjb25zb2xlLmxvZyhgICBQcm9qZWN0IE5hbWU6ICR7bG9nZ2VyLmN5YW4oZG9jc0NvbmZpZy5uYW1lIHx8ICdVbnRpdGxlZCcpfWApXG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zb2xlLmxvZyhgICBQcm9qZWN0IE5hbWU6ICR7bG9nZ2VyLnllbGxvdygnVW5hYmxlIHRvIHJlYWQgZG9jcy5qc29uJyl9YClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coYCAgJHtsb2dnZXIueWVsbG93KCdObyBkb2NzLmpzb24gZm91bmQgaW4gY3VycmVudCBkaXJlY3RvcnknKX1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgLmRldmRvYy5qc29uXG4gIGlmICghZnMuZXhpc3RzU3luYyhkZXZkb2NDb25maWdQYXRoKSkge1xuICAgIGNvbnNvbGUubG9nKGAgIFN0YXR1czogICAgICAgJHtsb2dnZXIueWVsbG93KCdOb3QgZGVwbG95ZWQnKX1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGxvZ2dlci5pbmZvKCdSdW4gXCJkZXZkb2MgZGVwbG95XCIgdG8gZGVwbG95IHlvdXIgZG9jdW1lbnRhdGlvbi4nKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIFxuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGZzLnJlYWRKc29uU3luYyhkZXZkb2NDb25maWdQYXRoKSBhcyBEZXZEb2NDb25maWdcbiAgICBcbiAgICBjb25zb2xlLmxvZyhgICBQcm9qZWN0IFNsdWc6ICR7Y29uZmlnLnNsdWcgfHwgbG9nZ2VyLnllbGxvdygnVW5rbm93bicpfWApXG4gICAgY29uc29sZS5sb2coYCAgU3RhdHVzOiAgICAgICAke2xvZ2dlci5ncmVlbignRGVwbG95ZWQnKX1gKVxuICAgIFxuICAgIGlmIChjb25maWcudXJsKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICBVUkw6ICAgICAgICAgICR7bG9nZ2VyLmN5YW4oY29uZmlnLnVybCl9YClcbiAgICB9XG4gICAgXG4gICAgaWYgKGNvbmZpZy5hcGlLZXkpIHtcbiAgICAgIGNvbnN0IG1hc2tlZEtleSA9IGNvbmZpZy5hcGlLZXkuc3Vic3RyaW5nKDAsIDEyKSArICcuLi4nICsgY29uZmlnLmFwaUtleS5zdWJzdHJpbmcoY29uZmlnLmFwaUtleS5sZW5ndGggLSA0KVxuICAgICAgY29uc29sZS5sb2coYCAgQVBJIEtleTogICAgICAke21hc2tlZEtleX1gKVxuICAgIH1cbiAgICBcbiAgICBpZiAoY29uZmlnLmxhc3REZXBsb3llZCkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGNvbmZpZy5sYXN0RGVwbG95ZWQpXG4gICAgICBjb25zb2xlLmxvZyhgICBMYXN0IERlcGxveTogICR7ZGF0ZS50b0xvY2FsZVN0cmluZygpfWApXG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGNvbnNvbGUubG9nKGAgIFBsYXRmb3JtOiAgICAgJHthcGlVcmx9YClcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBcbiAgICAvLyBPcHRpb25hbDogdmVyaWZ5IHdpdGggc2VydmVyXG4gICAgaWYgKGNvbmZpZy5zbHVnICYmIGNvbmZpZy5hcGlLZXkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YXBpVXJsfS9hcGkvZGVwbG95P3NsdWc9JHtjb25maWcuc2x1Z31gLCB7XG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHtjb25maWcuYXBpS2V5fWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgeyBleGlzdHM/OiBib29sZWFuIH1cbiAgICAgICAgICBpZiAoZGF0YS5leGlzdHMpIHtcbiAgICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgUHJvamVjdCB2ZXJpZmllZCBvbiBzZXJ2ZXInKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFNpbGVudCBmYWlsIC0gc2VydmVyIHZlcmlmaWNhdGlvbiBpcyBvcHRpb25hbFxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gcmVhZCBwcm9qZWN0IGNvbmZpZzogJHttZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hvYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy93aG9hbWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtQkEsd0JBaUdDO0FBcEhELGdEQUF1QjtBQUN2Qix3REFBeUI7QUFDekIsK0NBQTJDO0FBQzNDLCtDQUFpRDtBQWFqRDs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsT0FBc0I7SUFDakQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksMkJBQWUsQ0FBQTtJQUMzRSxNQUFNLGdCQUFnQixHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sY0FBYyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBRTFELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFZixzQkFBc0I7SUFDdEIsSUFBSSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLGtCQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLGVBQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7UUFD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ZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSdcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlcidcbmltcG9ydCB7IERFRkFVTFRfQVBJX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcblxuaW50ZXJmYWNlIFdob2FtaU9wdGlvbnMge1xuICB1cmw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERldkRvY0NvbmZpZyB7XG4gIHNsdWc/OiBzdHJpbmdcbiAgYXBpS2V5Pzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICBsYXN0RGVwbG95ZWQ/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBTaG93IGN1cnJlbnQgcHJvamVjdCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2hvYW1pKG9wdGlvbnM6IFdob2FtaU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpXG4gIGNvbnN0IGFwaVVybCA9IG9wdGlvbnMudXJsIHx8IHByb2Nlc3MuZW52LkRFVkRPQ19BUElfVVJMIHx8IERFRkFVTFRfQVBJX1VSTFxuICBjb25zdCBkZXZkb2NDb25maWdQYXRoID0gcGF0aC5qb2luKHByb2plY3RSb290LCAnLmRldmRvYy5qc29uJylcbiAgY29uc3QgZG9jc0NvbmZpZ1BhdGggPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICdkb2NzLmpzb24nKVxuICBcbiAgY29uc29sZS5sb2coJycpXG4gIGNvbnNvbGUubG9nKCdEZXZEb2MgUHJvamVjdCBJbmZvcm1hdGlvbicpXG4gIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09PT0nKVxuICBjb25zb2xlLmxvZygnJylcbiAgXG4gIC8vIENoZWNrIGZvciBkb2NzLmpzb25cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZG9jc0NvbmZpZ1BhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvY3NDb25maWcgPSBmcy5yZWFkSnNvblN5bmMoZG9jc0NvbmZpZ1BhdGgpXG4gICAgICBjb25zb2xlLmxvZyhgICBQcm9qZWN0IE5hbWU6ICR7bG9nZ2VyLmN5YW4oZG9jc0NvbmZpZy5uYW1lIHx8ICdVbnRpdGxlZCcpfWApXG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zb2xlLmxvZyhgICBQcm9qZWN0IE5hbWU6ICR7bG9nZ2VyLnllbGxvdygnVW5hYmxlIHRvIHJlYWQgZG9jcy5qc29uJyl9YClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coYCAgJHtsb2dnZXIueWVsbG93KCdObyBkb2NzLmpzb24gZm91bmQgaW4gY3VycmVudCBkaXJlY3RvcnknKX1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgLmRldmRvYy5qc29uXG4gIGlmICghZnMuZXhpc3RzU3luYyhkZXZkb2NDb25maWdQYXRoKSkge1xuICAgIGNvbnNvbGUubG9nKGAgIFN0YXR1czogICAgICAgJHtsb2dnZXIueWVsbG93KCdOb3QgaW5pdGlhbGl6ZWQnKX1gKVxuICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIGxvZ2dlci5pbmZvKCdSdW4gXCJkZXZkb2MgaW5pdFwiIHRvIGluaXRpYWxpemUgeW91ciBwcm9qZWN0LicpXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH1cbiAgXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gZnMucmVhZEpzb25TeW5jKGRldmRvY0NvbmZpZ1BhdGgpIGFzIERldkRvY0NvbmZpZ1xuICAgIFxuICAgIGNvbnNvbGUubG9nKGAgIFByb2plY3QgU2x1ZzogJHtjb25maWcuc2x1ZyB8fCBsb2dnZXIueWVsbG93KCdVbmtub3duJyl9YClcbiAgICBcbiAgICAvLyBPbmx5IHNob3cgXCJEZXBsb3llZFwiIGlmIEFQSSBrZXkgZXhpc3RzIChwcm9qZWN0IHdhcyBhY3R1YWxseSBkZXBsb3llZClcbiAgICBpZiAoY29uZmlnLmFwaUtleSkge1xuICAgICAgY29uc29sZS5sb2coYCAgU3RhdHVzOiAgICAgICAke2xvZ2dlci5ncmVlbignRGVwbG95ZWQnKX1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgICBTdGF0dXM6ICAgICAgICR7bG9nZ2VyLnllbGxvdygnSW5pdGlhbGl6ZWQgKG5vdCBkZXBsb3llZCknKX1gKVxuICAgIH1cbiAgICBcbiAgICBpZiAoY29uZmlnLnVybCkge1xuICAgICAgY29uc29sZS5sb2coYCAgVVJMOiAgICAgICAgICAke2xvZ2dlci5jeWFuKGNvbmZpZy51cmwpfWApXG4gICAgfVxuICAgIFxuICAgIGlmIChjb25maWcuYXBpS2V5KSB7XG4gICAgICBjb25zdCBtYXNrZWRLZXkgPSBjb25maWcuYXBpS2V5LnN1YnN0cmluZygwLCAxMikgKyAnLi4uJyArIGNvbmZpZy5hcGlLZXkuc3Vic3RyaW5nKGNvbmZpZy5hcGlLZXkubGVuZ3RoIC0gNClcbiAgICAgIGNvbnNvbGUubG9nKGAgIEFQSSBLZXk6ICAgICAgJHttYXNrZWRLZXl9YClcbiAgICB9XG4gICAgXG4gICAgaWYgKGNvbmZpZy5sYXN0RGVwbG95ZWQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjb25maWcubGFzdERlcGxveWVkKVxuICAgICAgY29uc29sZS5sb2coYCAgTGFzdCBEZXBsb3k6ICAke2RhdGUudG9Mb2NhbGVTdHJpbmcoKX1gKVxuICAgIH1cbiAgICBcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBjb25zb2xlLmxvZyhgICBQbGF0Zm9ybTogICAgICR7YXBpVXJsfWApXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgXG4gICAgLy8gU2hvdyBoZWxwZnVsIG1lc3NhZ2UgaWYgbm90IGRlcGxveWVkXG4gICAgaWYgKCFjb25maWcuYXBpS2V5KSB7XG4gICAgICBsb2dnZXIuaW5mbygnUnVuIFwiZGV2ZG9jIGRlcGxveVwiIHRvIGRlcGxveSB5b3VyIGRvY3VtZW50YXRpb24uJylcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIFxuICAgIC8vIE9wdGlvbmFsOiB2ZXJpZnkgd2l0aCBzZXJ2ZXJcbiAgICBpZiAoY29uZmlnLnNsdWcgJiYgY29uZmlnLmFwaUtleSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHthcGlVcmx9L2FwaS9kZXBsb3k/c2x1Zz0ke2NvbmZpZy5zbHVnfWAsIHtcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2NvbmZpZy5hcGlLZXl9YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBcbiAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyB7IGV4aXN0cz86IGJvb2xlYW4gfVxuICAgICAgICAgIGlmIChkYXRhLmV4aXN0cykge1xuICAgICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ+KckyBQcm9qZWN0IHZlcmlmaWVkIG9uIHNlcnZlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gU2lsZW50IGZhaWwgLSBzZXJ2ZXIgdmVyaWZpY2F0aW9uIGlzIG9wdGlvbmFsXG4gICAgICB9XG4gICAgfVxuICAgIFxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byByZWFkIHByb2plY3QgY29uZmlnOiAke21lc3NhZ2V9YClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainfish-ai/devdoc",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "description": "Documentation framework for developers. Write docs in MDX, preview locally, deploy to Brainfish.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",