@jjrawlins/cdk-diff-pr-github-action 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.jsii +4 -4
  2. package/lib/CdkDiffIamTemplate.js +2 -2
  3. package/lib/CdkDiffIamTemplateStackSet.js +2 -2
  4. package/lib/CdkDiffStackWorkflow.js +1 -1
  5. package/lib/CdkDriftDetectionWorkflow.js +1 -1
  6. package/lib/CdkDriftIamTemplate.js +2 -2
  7. package/lib/bin/cdk-changeset-script.js +4 -2
  8. package/node_modules/@aws-sdk/client-cloudformation/package.json +12 -12
  9. package/node_modules/@aws-sdk/client-sso/package.json +11 -11
  10. package/node_modules/@aws-sdk/core/dist-cjs/index.js +15 -6
  11. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +15 -6
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js +1 -0
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js +14 -6
  14. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts +4 -0
  15. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts +1 -1
  16. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts +1 -0
  17. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts +6 -1
  18. package/node_modules/@aws-sdk/core/package.json +4 -4
  19. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  20. package/node_modules/@aws-sdk/credential-provider-http/package.json +3 -3
  21. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  22. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  23. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  24. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  25. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  26. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  27. package/node_modules/@aws-sdk/middleware-user-agent/package.json +4 -4
  28. package/node_modules/@aws-sdk/nested-clients/package.json +11 -11
  29. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  30. package/node_modules/@aws-sdk/util-endpoints/package.json +1 -1
  31. package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
  32. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  33. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +3 -0
  34. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +3 -1
  35. package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +3 -0
  36. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +3 -1
  37. package/node_modules/@smithy/core/package.json +1 -1
  38. package/node_modules/@smithy/middleware-endpoint/package.json +2 -2
  39. package/node_modules/@smithy/middleware-retry/package.json +2 -2
  40. package/node_modules/@smithy/smithy-client/package.json +3 -3
  41. package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
  42. package/node_modules/@smithy/util-defaults-mode-node/package.json +2 -2
  43. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/CHANGELOG.md +13 -0
  44. package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -0
  45. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.d.cts +83 -14
  46. package/node_modules/fast-xml-parser/lib/fxp.min.js +2 -0
  47. package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -0
  48. package/node_modules/fast-xml-parser/lib/fxparser.min.js +2 -0
  49. package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -0
  50. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/package.json +4 -4
  51. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.d.ts +74 -12
  52. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/EntitiesParser.js +7 -5
  53. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/DocTypeReader.js +65 -53
  54. package/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +86 -0
  55. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OrderedObjParser.js +255 -187
  56. package/package.json +2 -2
  57. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +0 -1
  58. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +0 -2
  59. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
  60. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +0 -2
  61. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
  62. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +0 -46
  63. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/LICENSE +0 -0
  64. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/README.md +0 -0
  65. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxbuilder.min.js +0 -0
  66. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxbuilder.min.js.map +0 -0
  67. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js +0 -0
  68. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js.map +0 -0
  69. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/cli.js +0 -0
  70. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/man.js +0 -0
  71. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/read.js +0 -0
  72. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.js +0 -0
  73. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/ignoreAttributes.js +0 -0
  74. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/util.js +0 -0
  75. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/CharsSymbol.js +0 -0
  76. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OptionsBuilder.js +0 -0
  77. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -0
  78. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsArrBuilder.js +0 -0
  79. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -0
  80. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsObjBuilder.js +0 -0
  81. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -0
  82. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Report.js +0 -0
  83. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPath.js +0 -0
  84. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPathMatcher.js +0 -0
  85. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XMLParser.js +0 -0
  86. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Xml2JsParser.js +0 -0
  87. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlPartReader.js +0 -0
  88. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlSpecialTagsReader.js +0 -0
  89. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/BufferSource.js +0 -0
  90. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/StringSource.js +0 -0
  91. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/EntitiesParser.js +0 -0
  92. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParser.js +0 -0
  93. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParserExt.js +0 -0
  94. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/currency.js +0 -0
  95. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/join.js +0 -0
  96. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/number.js +0 -0
  97. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/trim.js +0 -0
  98. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/validator.js +0 -0
  99. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlbuilder/json2xml.js +0 -0
  100. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlbuilder/orderedJs2Xml.js +0 -0
  101. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlbuilder/prettifyJs2Xml.js +0 -0
  102. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/XMLParser.js +0 -0
  103. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/node2json.js +0 -0
  104. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/xmlNode.js +0 -0
package/.jsii CHANGED
@@ -7,7 +7,7 @@
7
7
  ]
8
8
  },
9
9
  "bundled": {
10
- "@aws-sdk/client-cloudformation": "^3.988.0",
10
+ "@aws-sdk/client-cloudformation": "^3.993.0",
11
11
  "@types/crypto-js": "^4.2.2",
12
12
  "@types/js-yaml": "^4.0.9",
13
13
  "crypto-js": "^4.2.0",
@@ -3529,7 +3529,7 @@
3529
3529
  "stability": "experimental"
3530
3530
  },
3531
3531
  "homepage": "https://jjrawlins@github.com/JaysonRawlins/cdk-diff-pr-github-action.git",
3532
- "jsiiVersion": "5.9.26 (build f85d3df)",
3532
+ "jsiiVersion": "5.9.27 (build 260e132)",
3533
3533
  "keywords": [
3534
3534
  "action",
3535
3535
  "aws",
@@ -5393,6 +5393,6 @@
5393
5393
  "symbolId": "src/CdkDiffIamTemplateStackSet:StackSetRoleSelection"
5394
5394
  }
5395
5395
  },
5396
- "version": "1.4.3",
5397
- "fingerprint": "zhxRJIOjcu77TXThwMX/OI6PTeh8PBgSoQdS8dqVyuI="
5396
+ "version": "1.5.0",
5397
+ "fingerprint": "yrHF2YBH3UW050n8iKDQUYj825qhFsErXuDKXMtecY8="
5398
5398
  }
@@ -397,7 +397,7 @@ class CdkDiffIamTemplateGenerator {
397
397
  }
398
398
  exports.CdkDiffIamTemplateGenerator = CdkDiffIamTemplateGenerator;
399
399
  _a = JSII_RTTI_SYMBOL_1;
400
- CdkDiffIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateGenerator", version: "1.4.3" };
400
+ CdkDiffIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateGenerator", version: "1.5.0" };
401
401
  /**
402
402
  * Projen construct that emits a CloudFormation template with minimal IAM permissions
403
403
  * for the CDK Diff Stack Workflow.
@@ -420,5 +420,5 @@ class CdkDiffIamTemplate {
420
420
  }
421
421
  exports.CdkDiffIamTemplate = CdkDiffIamTemplate;
422
422
  _b = JSII_RTTI_SYMBOL_1;
423
- CdkDiffIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplate", version: "1.4.3" };
423
+ CdkDiffIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplate", version: "1.5.0" };
424
424
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Nka0RpZmZJYW1UZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQW1EbEM7OztHQUdHO0FBQ0gsTUFBYSwyQkFBMkI7SUFDdEM7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBdUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUM7UUFFckQsaUJBQWlCO1FBQ2pCLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1lBQ3RGLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsZUFBdUIscUNBQXFDO1FBQ3ZGLE9BQU8sNkNBQTZDLFlBQVksOEVBQThFLENBQUM7SUFDakosQ0FBQztJQUVEOztPQUVHO0lBQ0ss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QUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUkscUNBQXFDLENBQUM7UUFFN0Usd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUU7WUFDbkQsV0FBVyxFQUNULDRIQUE0SDtZQUM5SCxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsMkJBQTJCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3BFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsZ0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0SHViT2lkY0NvbmZpZyB9IGZyb20gJy4vQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQnO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEaWZmIElBTSB0ZW1wbGF0ZXMgKG5vIFByb2plbiBkZXBlbmRlbmN5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIE5hbWUgZm9yIHRoZSBjaGFuZ2VzZXQgSUFNIHJvbGUgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGNoYW5nZXNldCByb2xlLlxuICAgKiBSZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIGZhbHNlIG9yIHVuZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gZm9yIHRoZSBPSURDIHRydXN0IGNvbmRpdGlvbi5cbiAgICogT25seSB1c2VkIHdoZW4gb2lkY1JvbGVBcm4gaXMgcHJvdmlkZWQgKGV4dGVybmFsIE9JREMgcm9sZSkuXG4gICAqL1xuICByZWFkb25seSBvaWRjUmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBHaXRIdWIgT0lEQyByb2xlIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGluc3RlYWQgb2YgdXNpbmcgYW4gZXhpc3Rpbmcgb25lLlxuICAgKiBXaGVuIHRydWUsIGdpdGh1Yk9pZGMgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBhbmQgb2lkY1JvbGVBcm4gaXMgaWdub3JlZC5cbiAgICogRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU9pZGNSb2xlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSB0byBjcmVhdGUuXG4gICAqIE9ubHkgdXNlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqIERlZmF1bHQ6ICdHaXRIdWJPSURDUm9sZSdcbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIE9JREMgY29uZmlndXJhdGlvbiBmb3IgcmVwby9icmFuY2ggcmVzdHJpY3Rpb25zLlxuICAgKiBSZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJPaWRjPzogR2l0SHViT2lkY0NvbmZpZztcblxuICAvKipcbiAgICogU2tpcCBjcmVhdGluZyB0aGUgT0lEQyBwcm92aWRlciAodXNlIGV4aXN0aW5nIG9uZSkuXG4gICAqIFNldCB0byB0cnVlIGlmIHRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgR2l0SHViIE9JREMgcHJvdmlkZXIuXG4gICAqIE9ubHkgdXNlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIHRydWUuXG4gICAqIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRGlmZiBJQU0gdGVtcGxhdGVzLlxuICogTm8gUHJvamVuIGRlcGVuZGVuY3kgLSBjYW4gYmUgdXNlZCBpbiBhbnkgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvciB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQ2xvdWRGb3JtYXRpb24gSUFNIHRlbXBsYXRlIGFzIGEgWUFNTCBzdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVUZW1wbGF0ZShwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNyZWF0ZU9pZGNSb2xlID0gcHJvcHMuY3JlYXRlT2lkY1JvbGUgPz8gZmFsc2U7XG5cbiAgICAvLyBWYWxpZGF0ZSBwcm9wc1xuICAgIGlmIChjcmVhdGVPaWRjUm9sZSkge1xuICAgICAgaWYgKCFwcm9wcy5naXRodWJPaWRjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZ2l0aHViT2lkYyBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRlT2lkY1JvbGUgaXMgdHJ1ZScpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXByb3BzLm9pZGNSb2xlQXJuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb2lkY1JvbGVBcm4gaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGVPaWRjUm9sZSBpcyBmYWxzZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9wcy5vaWRjUmVnaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb2lkY1JlZ2lvbiBpcyByZXF1aXJlZCB3aGVuIGNyZWF0ZU9pZGNSb2xlIGlzIGZhbHNlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9pZGNSb2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVRlbXBsYXRlV2l0aE9pZGNSb2xlKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVUZW1wbGF0ZVdpdGhFeHRlcm5hbE9pZGNSb2xlKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIEFXUyBDTEkgZGVwbG95IGNvbW1hbmQgZm9yIHRoZSBJQU0gdGVtcGxhdGUuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVEZXBsb3lDb21tYW5kKHRlbXBsYXRlUGF0aDogc3RyaW5nID0gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kaWZmLXdvcmtmbG93LWlhbS1yb2xlIC0tY2FwYWJpbGl0aWVzIENBUEFCSUxJVFlfTkFNRURfSUFNYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0ZW1wbGF0ZSB0aGF0IGNyZWF0ZXMgT0lEQyBwcm92aWRlciBhbmQgcm9sZSAoc2VsZi1jb250YWluZWQpXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlV2l0aE9pZGNSb2xlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3JQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb2lkY1JvbGVOYW1lID0gcHJvcHMub2lkY1JvbGVOYW1lID8/ICdHaXRIdWJPSURDUm9sZSc7XG4gICAgY29uc3Qgc2tpcE9pZGNQcm92aWRlciA9IHByb3BzLnNraXBPaWRjUHJvdmlkZXJDcmVhdGlvbiA/PyBmYWxzZTtcbiAgICBjb25zdCBnaXRodWJPaWRjID0gcHJvcHMuZ2l0aHViT2lkYyE7XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICBcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIsXG4gICAgICBcIkRlc2NyaXB0aW9uOiAnR2l0SHViIE9JREMgYW5kIElBTSByb2xlcyBmb3IgQ0RLIERpZmYgU3RhY2sgV29ya2Zsb3cgY29uc3RydWN0J1wiLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgXTtcblxuICAgIC8vIE9JREMgUHJvdmlkZXIgKG9ubHkgaWYgbm90IHNraXBwaW5nKVxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1Byb3ZpZGVyTGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gT0lEQyBSb2xlIChuZWVkcyBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgY2hhbmdlc2V0IHJvbGUpXG4gICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1JvbGVMaW5lcyhvaWRjUm9sZU5hbWUsIGdpdGh1Yk9pZGMsIHNraXBPaWRjUHJvdmlkZXIsIHByb3BzLnJvbGVOYW1lKSk7XG5cbiAgICAvLyBDaGFuZ2VzZXQgUm9sZSAodHJ1c3RzIHRoZSBjcmVhdGVkIE9JREMgcm9sZSlcbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVDaGFuZ2VzZXRSb2xlV2l0aE9pZGNSZWYocHJvcHMucm9sZU5hbWUpKTtcblxuICAgIC8vIE91dHB1dHNcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdPdXRwdXRzOicpO1xuXG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUHJvdmlkZXJPdXRwdXRMaW5lcygpKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCkpO1xuICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCkpO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRlbXBsYXRlIHRoYXQgdXNlcyBhbiBleHRlcm5hbCBPSURDIHJvbGUgKG9yaWdpbmFsIGJlaGF2aW9yKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVUZW1wbGF0ZVdpdGhFeHRlcm5hbE9pZGNSb2xlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3JQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIsXG4gICAgICBcIkRlc2NyaXB0aW9uOiAnSUFNIHJvbGUgZm9yIENESyBEaWZmIFN0YWNrIFdvcmtmbG93IGNvbnN0cnVjdCdcIixcbiAgICAgICcnLFxuICAgICAgJ1BhcmFtZXRlcnM6JyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlQXJuOicsXG4gICAgICAnICAgIFR5cGU6IFN0cmluZycsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ0FSTiBvZiB0aGUgZXhpc3RpbmcgR2l0SHViIE9JREMgcm9sZSB0aGF0IGNhbiBhc3N1bWUgdGhpcyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgIGAgICAgRGVmYXVsdDogJyR7cHJvcHMub2lkY1JvbGVBcm59J2AsXG4gICAgICAnJyxcbiAgICAgICdSZXNvdXJjZXM6JyxcbiAgICAgICcgICMgQ2xvdWRGb3JtYXRpb24gQ2hhbmdlU2V0IFJvbGUgLSBtaW5pbWFsIHBlcm1pc3Npb25zIGZvciBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICBDZGtDaGFuZ2VzZXRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uQ2hhbmdlU2V0QWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIGNoYW5nZXNldCBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpMaXN0Q2hhbmdlU2V0cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGUnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MgKGZvciBjaGFuZ2VzZXQgY3JlYXRpb24pJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0T2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpEZWxldGVPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcsXG4gICAgICAnICAgICAgICAgICAgICAgIFJlc291cmNlOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufS0qJ1wiLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKi8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHBhcmFtZXRlciBhY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOnNzbToke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfTpwYXJhbWV0ZXIvY2RrLWJvb3RzdHJhcC8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBJQU0gUGFzc1JvbGUgZm9yIENESyBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gaWFtOlBhc3NSb2xlJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICAgQ29uZGl0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgICAgJ2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcnLFxuICAgICAgJ091dHB1dHM6JyxcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgY2hhbmdlc2V0IHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0NoYW5nZXNldFJvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrQ2hhbmdlc2V0Um9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtDaGFuZ2VzZXRSb2xlTmFtZSdcIixcbiAgICBdO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUHJvdmlkZXJMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgICMgR2l0SHViIE9JREMgUHJvdmlkZXInLFxuICAgICAgJyAgR2l0SHViT0lEQ1Byb3ZpZGVyOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpPSURDUHJvdmlkZXInLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICAnICAgICAgVXJsOiBodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJyxcbiAgICAgICcgICAgICBDbGllbnRJZExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgJyAgICAgIFRodW1icHJpbnRMaXN0OicsXG4gICAgICAnICAgICAgICAtIDY5MzhmZDRkOThiYWIwM2ZhYWRiOTdiMzQzOTY4MzFlMzc4MGFlYTEnLFxuICAgICAgJyAgICAgICAgLSAxYzU4YTNhODUxOGU4NzU5YmYwNzViNzZiNzUwZDRmMmRmMjY0ZmNkJyxcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlTGluZXMoXG4gICAgcm9sZU5hbWU6IHN0cmluZyxcbiAgICBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnLFxuICAgIHNraXBPaWRjUHJvdmlkZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBjaGFuZ2VzZXRSb2xlTmFtZT86IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN1YmplY3RDbGFpbXMgPSB0aGlzLmJ1aWxkU3ViamVjdENsYWltcyhnaXRodWJPaWRjKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgJyAgIyBHaXRIdWIgT0lEQyBSb2xlIC0gYXV0aGVudGljYXRlcyBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd3MnLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGU6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06OlJvbGUnLFxuICAgIF07XG5cbiAgICAvLyBPbmx5IGFkZCBEZXBlbmRzT24gaWYgd2UncmUgY3JlYXRpbmcgdGhlIHByb3ZpZGVyXG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgRGVwZW5kc09uOiBHaXRIdWJPSURDUHJvdmlkZXInKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICBcIiAgICAgICAgICAgICAgRmVkZXJhdGVkOiAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06b2lkYy1wcm92aWRlci90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbSdcIixcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlV2l0aFdlYklkZW50aXR5JyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOmF1ZCc6ICdzdHMuYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0xpa2U6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTpzdWInOlwiLFxuICAgICk7XG5cbiAgICAvLyBBZGQgc3ViamVjdCBjbGFpbXNcbiAgICBmb3IgKGNvbnN0IGNsYWltIG9mIHN1YmplY3RDbGFpbXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICAgIC0gJyR7Y2xhaW19J2ApO1xuICAgIH1cblxuICAgIC8vIEFkZCBwb2xpY2llcyBmb3IgYXNzdW1pbmcgY2hhbmdlc2V0IHJvbGUgYW5kIENESyBib290c3RyYXAgcm9sZXMsIHBsdXMgQ0RLIGRpZmYgcGVybWlzc2lvbnNcbiAgICBsaW5lcy5wdXNoKCcgICAgICBQb2xpY2llczonKTtcblxuICAgIC8vIFBvbGljeSAxOiBBc3N1bWVDaGFuZ2VzZXRSb2xlIC0gYWxsb3dzIGFzc3VtaW5nIGNoYW5nZXNldCByb2xlIGFuZCBDREsgYm9vdHN0cmFwIHJvbGVzXG4gICAgbGluZXMucHVzaCgnICAgICAgICAtIFBvbGljeU5hbWU6IEFzc3VtZUNoYW5nZXNldFJvbGUnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6Jyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICBTdGF0ZW1lbnQ6Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgQWN0aW9uOiBzdHM6QXNzdW1lUm9sZScpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonKTtcbiAgICBpZiAoY2hhbmdlc2V0Um9sZU5hbWUpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czppYW06OlxcJHtBV1M6OkFjY291bnRJZH06cm9sZS8ke2NoYW5nZXNldFJvbGVOYW1lfSdgKTtcbiAgICB9XG4gICAgLy8gQ0RLIGJvb3RzdHJhcCByb2xlc1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCByb2xlcycpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtZGVwbG95LXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nXCIpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtZmlsZS1wdWJsaXNoaW5nLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nXCIpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay1obmI2NTlmZHMtaW1hZ2UtcHVibGlzaGluZy1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcblxuICAgIC8vIFBvbGljeSAyOiBDZGtEaWZmUGVybWlzc2lvbnMgLSBkaXJlY3QgcGVybWlzc2lvbnMgZm9yIENESyBkaWZmIG9wZXJhdGlvbnNcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgIC0gUG9saWN5TmFtZTogQ2RrRGlmZlBlcm1pc3Npb25zJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgIFBvbGljeURvY3VtZW50OicpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgU3RhdGVtZW50OicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHBhcmFtZXRlciBhY2Nlc3MgKG5lZWRlZCBmb3IgY2RrIGRlcGxveS9kaWZmKScpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgIEFjdGlvbjonKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXInKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzJyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogIVN1YiAnYXJuOmF3czpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKidcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAjIENsb3VkRm9ybWF0aW9uIG9wZXJhdGlvbnMgZm9yIGNoYW5nZXNldCBjcmVhdGlvbicpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgIEFjdGlvbjonKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXQnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlJyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBzMzpHZXRPYmplY3QnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0QnVja2V0TG9jYXRpb24nKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgUmVzb3VyY2U6Jyk7XG4gICAgbGluZXMucHVzaChcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay1obmI2NTlmZHMtYXNzZXRzLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259J1wiKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLWhuYjY1OWZkcy1hc3NldHMtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0vKidcIik7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAjIElBTSBQYXNzUm9sZSBmb3IgQ0RLIG9wZXJhdGlvbnMnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgLSBpYW06UGFzc1JvbGUnKTtcbiAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstaG5iNjU5ZmRzLSonXCIpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBDb25kaXRpb246Jyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicpO1xuICAgIGxpbmVzLnB1c2goXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIpO1xuXG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhaW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGJyYW5jaGVzID0gZ2l0aHViT2lkYy5icmFuY2hlcyA/PyBbJyonXTtcblxuICAgIGZvciAoY29uc3QgcmVwbyBvZiBnaXRodWJPaWRjLnJlcG9zaXRvcmllcykge1xuICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAvLyBXaWxkY2FyZCByZXBvIC0gYWxsb3cgYWxsIHJlcG9zIHdpdGggYnJhbmNoIHJlc3RyaWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vKjpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNwZWNpZmljIHJlcG9cbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICBpZiAoYnJhbmNoID09PSAnKicpIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToqYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfTpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgY2xhaW1zXG4gICAgaWYgKGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgZm9yIChjb25zdCBjbGFpbSBvZiBnaXRodWJPaWRjLmFkZGl0aW9uYWxDbGFpbXMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOiR7Y2xhaW19YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToke2NsYWltfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldFJvbGVXaXRoT2lkY1JlZihyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIENoYW5nZVNldCBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgY2hhbmdlc2V0IG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkNoYW5nZVNldEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBidWNrZXQgYWNjZXNzIChmb3IgY2hhbmdlc2V0IGNyZWF0aW9uKScsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkdldE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpQdXRPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6RGVsZXRlT2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkxpc3RCdWNrZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKidcIixcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259LSovKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBwYXJhbWV0ZXIgYWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVycycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyc0J5UGF0aCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogIVN1YiAnYXJuOmF3czpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgSUFNIFBhc3NSb2xlIGZvciBDREsgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGlhbTpQYXNzUm9sZScsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAgIENvbmRpdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUHJvdmlkZXJPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIEdpdEh1Yk9JRENQcm92aWRlckFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIEdpdEh1YiBPSURDIHByb3ZpZGVyJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBHaXRIdWJPSURDUHJvdmlkZXIuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENQcm92aWRlckFybidcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlT3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBHaXRIdWJPSURDUm9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIEdpdEh1YiBPSURDIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IEdpdEh1Yk9JRENSb2xlLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUm9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIEdpdEh1YiBPSURDIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhUmVmIEdpdEh1Yk9JRENSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENSb2xlTmFtZSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgQ2RrQ2hhbmdlc2V0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrQ2hhbmdlc2V0Um9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgQ0RLIGNoYW5nZXNldCByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBDZGtDaGFuZ2VzZXRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVOYW1lJ1wiLFxuICAgIF07XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIENESyBEaWZmIElBTSB0ZW1wbGF0ZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEaWZmSWFtVGVtcGxhdGVQcm9wcyBleHRlbmRzIENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJykgKi9cbiAgcmVhZG9ubHkgb3V0cHV0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9qZW4gY29uc3RydWN0IHRoYXQgZW1pdHMgYSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSB3aXRoIG1pbmltYWwgSUFNIHBlcm1pc3Npb25zXG4gKiBmb3IgdGhlIENESyBEaWZmIFN0YWNrIFdvcmtmbG93LlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RpZmZJYW1UZW1wbGF0ZUdlbmVyYXRvcmAgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEaWZmSWFtVGVtcGxhdGUge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlUHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXRlbXBsYXRlLnlhbWwnO1xuXG4gICAgLy8gR2VuZXJhdGUgdGVtcGxhdGUgdXNpbmcgdGhlIGdlbmVyYXRvclxuICAgIGNvbnN0IHRlbXBsYXRlID0gQ2RrRGlmZklhbVRlbXBsYXRlR2VuZXJhdG9yLmdlbmVyYXRlVGVtcGxhdGUocHJvcHMpO1xuICAgIG5ldyBUZXh0RmlsZShwcm9wcy5wcm9qZWN0LCBvdXRwdXRQYXRoLCB7IGxpbmVzOiB0ZW1wbGF0ZS5zcGxpdCgnXFxuJykgfSk7XG5cbiAgICAvLyBBZGQgZGVwbG95IHRhc2tcbiAgICBwcm9wcy5wcm9qZWN0LmFkZFRhc2soJ2RlcGxveS1jZGtkaWZmLWlhbS10ZW1wbGF0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGVwbG95IHRoZSBDREsgRGlmZiBJQU0gdGVtcGxhdGUgdmlhIENsb3VkRm9ybWF0aW9uIChhY2NlcHRzIGV4dHJhIEFXUyBDTEkgYXJncywgZS5nLiwgLS1wYXJhbWV0ZXItb3ZlcnJpZGVzIEtleT1WYWx1ZS4uLiknLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICBleGVjOiBDZGtEaWZmSWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVEZXBsb3lDb21tYW5kKG91dHB1dFBhdGgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -344,7 +344,7 @@ class CdkDiffIamTemplateStackSetGenerator {
344
344
  }
345
345
  exports.CdkDiffIamTemplateStackSetGenerator = CdkDiffIamTemplateStackSetGenerator;
346
346
  _a = JSII_RTTI_SYMBOL_1;
347
- CdkDiffIamTemplateStackSetGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSetGenerator", version: "1.4.3" };
347
+ CdkDiffIamTemplateStackSetGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSetGenerator", version: "1.5.0" };
348
348
  /**
349
349
  * Projen construct that creates a CloudFormation StackSet template for org-wide deployment of
350
350
  * GitHub OIDC provider, OIDC role, and CDK Diff/Drift IAM roles.
@@ -389,5 +389,5 @@ class CdkDiffIamTemplateStackSet {
389
389
  }
390
390
  exports.CdkDiffIamTemplateStackSet = CdkDiffIamTemplateStackSet;
391
391
  _b = JSII_RTTI_SYMBOL_1;
392
- CdkDiffIamTemplateStackSet[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSet", version: "1.4.3" };
392
+ CdkDiffIamTemplateStackSet[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSet", version: "1.5.0" };
393
393
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFFbEM7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0IseURBQXlEO0lBQ3pELDBEQUFpQyxDQUFBO0lBQ2pDLGlEQUFpRDtJQUNqRCxrREFBeUIsQ0FBQTtJQUN6QixtQ0FBbUM7SUFDbkMsc0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU9oQztBQWtHRDs7O0dBR0c7QUFDSCxNQUFhLG1DQUFtQztJQUM5Qzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUErQztRQUNyRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGdCQUFnQixDQUFDO1FBQzVELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEtBQUssQ0FBQztRQUVqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQ3RDLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGFBQWEsRUFDYixLQUFLLENBQUMsV0FBVyxFQUNqQixnQkFBZ0IsQ0FDakIsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7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QUN6RSxpQkFBaUIsRUFBRSw4QkFBOEI7WUFDakQsMkJBQTJCLEVBQ3pCLHlIQUF5SDtZQUMzSCwyQkFBMkIsRUFBRSxvREFBb0Q7WUFDakYsaUJBQWlCLEVBQUUsa0VBQWtFO1lBQ3JGLG1CQUFtQixFQUFFLGdEQUFnRDtZQUNyRSx5QkFBeUIsRUFBRSw2Q0FBNkM7U0FDekUsQ0FBQztRQUVGLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUM5QixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2dCQUN2QyxXQUFXLEVBQUUsUUFBUSxLQUFLLGlCQUFpQjtnQkFDM0MsSUFBSSxFQUFFLE9BQU87YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFyQ0gsZ0VBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFdoaWNoIHJvbGVzIHRvIGluY2x1ZGUgaW4gdGhlIFN0YWNrU2V0XG4gKi9cbmV4cG9ydCBlbnVtIFN0YWNrU2V0Um9sZVNlbGVjdGlvbiB7XG4gIC8qKiBJbmNsdWRlIG9ubHkgdGhlIGNoYW5nZXNldCByb2xlIChDZGtDaGFuZ2VzZXRSb2xlKSAqL1xuICBDSEFOR0VTRVRfT05MWSA9ICdDSEFOR0VTRVRfT05MWScsXG4gIC8qKiBJbmNsdWRlIG9ubHkgdGhlIGRyaWZ0IHJvbGUgKENka0RyaWZ0Um9sZSkgKi9cbiAgRFJJRlRfT05MWSA9ICdEUklGVF9PTkxZJyxcbiAgLyoqIEluY2x1ZGUgYm90aCByb2xlcyAoZGVmYXVsdCkgKi9cbiAgQk9USCA9ICdCT1RIJyxcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBTdGFja1NldCBhdXRvLWRlcGxveW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFja1NldEF1dG9EZXBsb3ltZW50IHtcbiAgLyoqIEVuYWJsZSBhdXRvLWRlcGxveW1lbnQgdG8gbmV3IGFjY291bnRzIGluIHRhcmdldCBPVXMgKGRlZmF1bHQ6IHRydWUpICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogUmV0YWluIHN0YWNrcyB3aGVuIGFjY291bnQgbGVhdmVzIE9VIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcmVhZG9ubHkgcmV0YWluU3RhY2tzT25BY2NvdW50UmVtb3ZhbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogR2l0SHViIHJlcG9zaXRvcnkgcmVzdHJpY3Rpb25zIGZvciBPSURDIGF1dGhlbnRpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0SHViT2lkY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBHaXRIdWIgb3JnYW5pemF0aW9uIG9yIHVzZXJuYW1lIChlLmcuLCAnbXktb3JnJyBvciAnbXktdXNlcm5hbWUnKVxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBuYW1lcyBhbGxvd2VkIHRvIGFzc3VtZSB0aGUgcm9sZSAoZS5nLiwgWydyZXBvMScsICdyZXBvMiddKVxuICAgKiBVc2UgWycqJ10gdG8gYWxsb3cgYWxsIHJlcG9zIGluIHRoZSBvcmdhbml6YXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcmllczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJyYW5jaCBwYXR0ZXJucyBhbGxvd2VkIChlLmcuLCBbJ21haW4nLCAncmVsZWFzZS8qJ10pXG4gICAqIERlZmF1bHQ6IFsnKiddIChhbGwgYnJhbmNoZXMpXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHN1YmplY3QgY2xhaW1zIGZvciBmaW5lLWdyYWluZWQgYWNjZXNzXG4gICAqIGUuZy4sIFsncHVsbF9yZXF1ZXN0JywgJ2Vudmlyb25tZW50OnByb2R1Y3Rpb24nXVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbENsYWltcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIFN0YWNrU2V0IHRlbXBsYXRlcyAobm8gUHJvamVuIGRlcGVuZGVuY3kpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3JQcm9wcyB7XG4gIC8qKiBHaXRIdWIgT0lEQyBjb25maWd1cmF0aW9uIGZvciByZXBvL2JyYW5jaCByZXN0cmljdGlvbnMgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT2lkYzogR2l0SHViT2lkY0NvbmZpZztcblxuICAvKiogTmFtZSBvZiB0aGUgR2l0SHViIE9JREMgcm9sZSAoZGVmYXVsdDogJ0dpdEh1Yk9JRENSb2xlJykgKi9cbiAgcmVhZG9ubHkgb2lkY1JvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBDZGtDaGFuZ2VzZXRSb2xlIChkZWZhdWx0OiAnQ2RrQ2hhbmdlc2V0Um9sZScpICovXG4gIHJlYWRvbmx5IGNoYW5nZXNldFJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBDZGtEcmlmdFJvbGUgKGRlZmF1bHQ6ICdDZGtEcmlmdFJvbGUnKSAqL1xuICByZWFkb25seSBkcmlmdFJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBXaGljaCByb2xlcyB0byBpbmNsdWRlIChkZWZhdWx0OiBCT1RIKSAqL1xuICByZWFkb25seSByb2xlU2VsZWN0aW9uPzogU3RhY2tTZXRSb2xlU2VsZWN0aW9uO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiBmb3IgdGhlIFN0YWNrU2V0ICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTa2lwIGNyZWF0aW5nIHRoZSBPSURDIHByb3ZpZGVyICh1c2UgZXhpc3Rpbmcgb25lKS5cbiAgICogU2V0IHRvIHRydWUgaWYgYWNjb3VudHMgYWxyZWFkeSBoYXZlIGEgR2l0SHViIE9JREMgcHJvdmlkZXIuXG4gICAqIFRoZSB0ZW1wbGF0ZSB3aWxsIHJlZmVyZW5jZSB0aGUgZXhpc3RpbmcgcHJvdmlkZXIgYnkgQVJOLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcE9pZGNQcm92aWRlckNyZWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgZ2VuZXJhdGluZyBTdGFja1NldCBDTEkgY29tbWFuZHMgKG5vIFByb2plbiBkZXBlbmRlbmN5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0Q29tbWFuZHNQcm9wcyB7XG4gIC8qKiBOYW1lIG9mIHRoZSBTdGFja1NldCAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCcpICovXG4gIHJlYWRvbmx5IHN0YWNrU2V0TmFtZT86IHN0cmluZztcblxuICAvKiogUGF0aCB0byB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LXN0YWNrc2V0LXRlbXBsYXRlLnlhbWwnKSAqL1xuICByZWFkb25seSB0ZW1wbGF0ZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIFRhcmdldCBPVXMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsnb3UteHh4eC14eHh4eHh4eCcsICdyLXh4eHgnXSkgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzPzogc3RyaW5nW107XG5cbiAgLyoqIFRhcmdldCByZWdpb25zIGZvciBkZXBsb3ltZW50IChlLmcuLCBbJ3VzLWVhc3QtMScsICdldS13ZXN0LTEnXSkgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKiBBdXRvLWRlcGxveW1lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBhdXRvRGVwbG95bWVudD86IFN0YWNrU2V0QXV0b0RlcGxveW1lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGRlbGVnYXRlZCBhZG1pbiBtb2RlIGZvciBTdGFja1NldCBvcGVyYXRpb25zLlxuICAgKiBJZiB0cnVlLCBhZGRzIC0tY2FsbC1hcyBERUxFR0FURURfQURNSU4gdG8gY29tbWFuZHMuXG4gICAqIERlZmF1bHQ6IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGVnYXRlZEFkbWluPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQdXJlIGdlbmVyYXRvciBjbGFzcyBmb3IgU3RhY2tTZXQgdGVtcGxhdGVzIGFuZCBjb21tYW5kcy5cbiAqIE5vIFByb2plbiBkZXBlbmRlbmN5IC0gY2FuIGJlIHVzZWQgaW4gYW55IHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvciB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQ2xvdWRGb3JtYXRpb24gU3RhY2tTZXQgdGVtcGxhdGUgYXMgYSBZQU1MIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvclByb3BzKTogc3RyaW5nIHtcbiAgICBjb25zdCBvaWRjUm9sZU5hbWUgPSBwcm9wcy5vaWRjUm9sZU5hbWUgPz8gJ0dpdEh1Yk9JRENSb2xlJztcbiAgICBjb25zdCBjaGFuZ2VzZXRSb2xlTmFtZSA9IHByb3BzLmNoYW5nZXNldFJvbGVOYW1lID8/ICdDZGtDaGFuZ2VzZXRSb2xlJztcbiAgICBjb25zdCBkcmlmdFJvbGVOYW1lID0gcHJvcHMuZHJpZnRSb2xlTmFtZSA/PyAnQ2RrRHJpZnRSb2xlJztcbiAgICBjb25zdCByb2xlU2VsZWN0aW9uID0gcHJvcHMucm9sZVNlbGVjdGlvbiA/PyBTdGFja1NldFJvbGVTZWxlY3Rpb24uQk9USDtcbiAgICBjb25zdCBza2lwT2lkY1Byb3ZpZGVyID0gcHJvcHMuc2tpcE9pZGNQcm92aWRlckNyZWF0aW9uID8/IGZhbHNlO1xuXG4gICAgY29uc3QgbGluZXMgPSB0aGlzLmdlbmVyYXRlVGVtcGxhdGVMaW5lcyhcbiAgICAgIHByb3BzLmdpdGh1Yk9pZGMsXG4gICAgICBvaWRjUm9sZU5hbWUsXG4gICAgICBjaGFuZ2VzZXRSb2xlTmFtZSxcbiAgICAgIGRyaWZ0Um9sZU5hbWUsXG4gICAgICByb2xlU2VsZWN0aW9uLFxuICAgICAgcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBza2lwT2lkY1Byb3ZpZGVyLFxuICAgICk7XG5cbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgQVdTIENMSSBjb21tYW5kcyBmb3IgU3RhY2tTZXQgb3BlcmF0aW9ucy5cbiAgICogUmV0dXJucyBhIG1hcCBvZiBjb21tYW5kIG5hbWVzIHRvIHNoZWxsIGNvbW1hbmRzLlxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlQ29tbWFuZHMocHJvcHM6IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0Q29tbWFuZHNQcm9wcyA9IHt9KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc3RhY2tTZXROYW1lID0gcHJvcHMuc3RhY2tTZXROYW1lID8/ICdjZGstZGlmZi13b3JrZmxvdy1pYW0tc3RhY2tzZXQnO1xuICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHByb3BzLnRlbXBsYXRlUGF0aCA/PyAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCc7XG4gICAgY29uc3QgcmVnaW9ucyA9IHByb3BzLnJlZ2lvbnMgPz8gWyd1cy1lYXN0LTEnXTtcbiAgICBjb25zdCB0YXJnZXRPVXMgPSBwcm9wcy50YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHMgPz8gW107XG4gICAgY29uc3QgYXV0b0RlcGxveUVuYWJsZWQgPSBwcm9wcy5hdXRvRGVwbG95bWVudD8uZW5hYmxlZCA/PyB0cnVlO1xuICAgIGNvbnN0IHJldGFpblN0YWNrcyA9IHByb3BzLmF1dG9EZXBsb3ltZW50Py5yZXRhaW5TdGFja3NPbkFjY291bnRSZW1vdmFsID8/IGZhbHNlO1xuICAgIGNvbnN0IGRlbGVnYXRlZEFkbWluID0gcHJvcHMuZGVsZWdhdGVkQWRtaW4gPz8gdHJ1ZTtcbiAgICBjb25zdCBjYWxsQXMgPSBkZWxlZ2F0ZWRBZG1pbiA/ICcgLS1jYWxsLWFzIERFTEVHQVRFRF9BRE1JTicgOiAnJztcblxuICAgIGNvbnN0IG91TGlzdCA9IHRhcmdldE9Vcy5sZW5ndGggPiAwID8gdGFyZ2V0T1VzLmpvaW4oJywnKSA6ICc8T1VfSURTPic7XG4gICAgY29uc3QgcmVnaW9uTGlzdCA9IHJlZ2lvbnMuam9pbignICcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdzdGFja3NldC1jcmVhdGUnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0gLS10ZW1wbGF0ZS1ib2R5IGZpbGU6Ly8ke3RlbXBsYXRlUGF0aH0gLS1jYXBhYmlsaXRpZXMgQ0FQQUJJTElUWV9OQU1FRF9JQU0gLS1wZXJtaXNzaW9uLW1vZGVsIFNFUlZJQ0VfTUFOQUdFRCAtLWF1dG8tZGVwbG95bWVudCBFbmFibGVkPSR7YXV0b0RlcGxveUVuYWJsZWR9LFJldGFpblN0YWNrc09uQWNjb3VudFJlbW92YWw9JHtyZXRhaW5TdGFja3N9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC11cGRhdGUnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIHVwZGF0ZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0gLS10ZW1wbGF0ZS1ib2R5IGZpbGU6Ly8ke3RlbXBsYXRlUGF0aH0gLS1jYXBhYmlsaXRpZXMgQ0FQQUJJTElUWV9OQU1FRF9JQU0ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LWRlcGxveS1pbnN0YW5jZXMnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFjay1pbnN0YW5jZXMgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0gLS1kZXBsb3ltZW50LXRhcmdldHMgT3JnYW5pemF0aW9uYWxVbml0SWRzPSR7b3VMaXN0fSAtLXJlZ2lvbnMgJHtyZWdpb25MaXN0fSR7Y2FsbEFzfWAsXG4gICAgICAnc3RhY2tzZXQtZGVsZXRlLWluc3RhbmNlcyc6IGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrLWluc3RhbmNlcyAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLWRlcGxveW1lbnQtdGFyZ2V0cyBPcmdhbml6YXRpb25hbFVuaXRJZHM9JHtvdUxpc3R9IC0tcmVnaW9ucyAke3JlZ2lvbkxpc3R9IC0tbm8tcmV0YWluLXN0YWNrcyR7Y2FsbEFzfWAsXG4gICAgICAnc3RhY2tzZXQtZGVsZXRlJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2stc2V0IC0tc3RhY2stc2V0LW5hbWUgJHtzdGFja1NldE5hbWV9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1kZXNjcmliZSc6IGBhd3MgY2xvdWRmb3JtYXRpb24gZGVzY3JpYmUtc3RhY2stc2V0IC0tc3RhY2stc2V0LW5hbWUgJHtzdGFja1NldE5hbWV9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1saXN0LWluc3RhbmNlcyc6IGBhd3MgY2xvdWRmb3JtYXRpb24gbGlzdC1zdGFjay1pbnN0YW5jZXMgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0ke2NhbGxBc31gLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlTGluZXMoXG4gICAgZ2l0aHViT2lkYzogR2l0SHViT2lkY0NvbmZpZyxcbiAgICBvaWRjUm9sZU5hbWU6IHN0cmluZyxcbiAgICBjaGFuZ2VzZXRSb2xlTmFtZTogc3RyaW5nLFxuICAgIGRyaWZ0Um9sZU5hbWU6IHN0cmluZyxcbiAgICByb2xlU2VsZWN0aW9uOiBTdGFja1NldFJvbGVTZWxlY3Rpb24sXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgc2tpcE9pZGNQcm92aWRlcjogYm9vbGVhbiA9IGZhbHNlLFxuICApOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZGVzYyA9IGRlc2NyaXB0aW9uID8/ICdHaXRIdWIgT0lEQyBhbmQgSUFNIHJvbGVzIGZvciBDREsgRGlmZi9EcmlmdCB3b3JrZmxvd3MgKFN0YWNrU2V0IGRlcGxveW1lbnQpJztcblxuICAgIGNvbnN0IGluY2x1ZGVDaGFuZ2VzZXQgPVxuICAgICAgcm9sZVNlbGVjdGlvbiA9PT0gU3RhY2tTZXRSb2xlU2VsZWN0aW9uLkJPVEggfHwgcm9sZVNlbGVjdGlvbiA9PT0gU3RhY2tTZXRSb2xlU2VsZWN0aW9uLkNIQU5HRVNFVF9PTkxZO1xuICAgIGNvbnN0IGluY2x1ZGVEcmlmdCA9XG4gICAgICByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uQk9USCB8fCByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uRFJJRlRfT05MWTtcblxuICAgIC8vIEhlYWRlclxuICAgIGxpbmVzLnB1c2goXCJBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246ICcyMDEwLTA5LTA5J1wiKTtcbiAgICBsaW5lcy5wdXNoKGBEZXNjcmlwdGlvbjogJyR7ZGVzY30nYCk7XG4gICAgbGluZXMucHVzaCgnJyk7XG5cbiAgICAvLyBSZXNvdXJjZXNcbiAgICBsaW5lcy5wdXNoKCdSZXNvdXJjZXM6Jyk7XG5cbiAgICAvLyBPSURDIFByb3ZpZGVyIChvbmx5IGlmIG5vdCBza2lwcGluZylcbiAgICBpZiAoIXNraXBPaWRjUHJvdmlkZXIpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZU9pZGNQcm92aWRlckxpbmVzKCkpO1xuICAgIH1cblxuICAgIC8vIE9JREMgUm9sZSAobmVlZHMgcGVybWlzc2lvbnMgdG8gYXNzdW1lIGNoYW5nZXNldC9kcmlmdCByb2xlcylcbiAgICBjb25zdCB0YXJnZXRSb2xlTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGluY2x1ZGVDaGFuZ2VzZXQpIHRhcmdldFJvbGVOYW1lcy5wdXNoKGNoYW5nZXNldFJvbGVOYW1lKTtcbiAgICBpZiAoaW5jbHVkZURyaWZ0KSB0YXJnZXRSb2xlTmFtZXMucHVzaChkcmlmdFJvbGVOYW1lKTtcbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZUxpbmVzKG9pZGNSb2xlTmFtZSwgZ2l0aHViT2lkYywgc2tpcE9pZGNQcm92aWRlciwgdGFyZ2V0Um9sZU5hbWVzKSk7XG5cbiAgICAvLyBDaGFuZ2VzZXQvRHJpZnQgcm9sZXNcbiAgICBpZiAoaW5jbHVkZUNoYW5nZXNldCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlQ2hhbmdlc2V0Um9sZUxpbmVzKGNoYW5nZXNldFJvbGVOYW1lKSk7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVEcmlmdCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlRHJpZnRSb2xlTGluZXMoZHJpZnRSb2xlTmFtZSkpO1xuICAgIH1cblxuICAgIC8vIE91dHB1dHNcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdPdXRwdXRzOicpO1xuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY091dHB1dExpbmVzKCkpO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBvdXRwdXQgdGhlIE9JREMgcm9sZSBBUk5cbiAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCkpO1xuXG4gICAgaWYgKGluY2x1ZGVDaGFuZ2VzZXQpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCkpO1xuICAgIH1cblxuICAgIGlmIChpbmNsdWRlRHJpZnQpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZURyaWZ0T3V0cHV0TGluZXMoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUHJvdmlkZXJMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgICMgR2l0SHViIE9JREMgUHJvdmlkZXInLFxuICAgICAgJyAgR2l0SHViT0lEQ1Byb3ZpZGVyOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpPSURDUHJvdmlkZXInLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICAnICAgICAgVXJsOiBodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJyxcbiAgICAgICcgICAgICBDbGllbnRJZExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgJyAgICAgIFRodW1icHJpbnRMaXN0OicsXG4gICAgICAnICAgICAgICAtIDY5MzhmZDRkOThiYWIwM2ZhYWRiOTdiMzQzOTY4MzFlMzc4MGFlYTEnLFxuICAgICAgJyAgICAgICAgLSAxYzU4YTNhODUxOGU4NzU5YmYwNzViNzZiNzUwZDRmMmRmMjY0ZmNkJyxcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlTGluZXMoXG4gICAgcm9sZU5hbWU6IHN0cmluZyxcbiAgICBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnLFxuICAgIHNraXBPaWRjUHJvdmlkZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICB0YXJnZXRSb2xlTmFtZXM6IHN0cmluZ1tdID0gW10sXG4gICk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdWJqZWN0Q2xhaW1zID0gdGhpcy5idWlsZFN1YmplY3RDbGFpbXMoZ2l0aHViT2lkYyk7XG5cbiAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgICcgICMgR2l0SHViIE9JREMgUm9sZSAtIGF1dGhlbnRpY2F0ZXMgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dzJyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICBdO1xuXG4gICAgLy8gT25seSBhZGQgRGVwZW5kc09uIGlmIHdlJ3JlIGNyZWF0aW5nIHRoZSBwcm92aWRlclxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCgnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1Byb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaChcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgXCIgICAgICAgICAgICAgIEZlZGVyYXRlZDogIVN1YiAnYXJuOmF3czppYW06OiR7QVdTOjpBY2NvdW50SWR9Om9pZGMtcHJvdmlkZXIvdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20nXCIsXG4gICAgICAnICAgICAgICAgICAgQWN0aW9uOiBzdHM6QXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eScsXG4gICAgICAnICAgICAgICAgICAgQ29uZGl0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgICd0b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTphdWQnOiAnc3RzLmFtYXpvbmF3cy5jb20nXCIsXG4gICAgICAnICAgICAgICAgICAgICBTdHJpbmdMaWtlOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAndG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206c3ViJzpcIixcbiAgICApO1xuXG4gICAgLy8gQWRkIHN1YmplY3QgY2xhaW1zXG4gICAgZm9yIChjb25zdCBjbGFpbSBvZiBzdWJqZWN0Q2xhaW1zKSB7XG4gICAgICBsaW5lcy5wdXNoKGAgICAgICAgICAgICAgICAgICAtICcke2NsYWltfSdgKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgcG9saWN5IHRvIGFsbG93IGFzc3VtaW5nIHRoZSB0YXJnZXQgcm9sZXMgKGNoYW5nZXNldC9kcmlmdClcbiAgICBpZiAodGFyZ2V0Um9sZU5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgIFBvbGljaWVzOicpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAtIFBvbGljeU5hbWU6IEFzc3VtZVRhcmdldFJvbGVzJyk7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6Jyk7XG4gICAgICBsaW5lcy5wdXNoKFwiICAgICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAgICAgU3RhdGVtZW50OicpO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnKTtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyk7XG4gICAgICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgUmVzb3VyY2U6Jyk7XG4gICAgICBmb3IgKGNvbnN0IHRhcmdldFJvbGVOYW1lIG9mIHRhcmdldFJvbGVOYW1lcykge1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6aWFtOjpcXCR7QVdTOjpBY2NvdW50SWR9OnJvbGUvJHt0YXJnZXRSb2xlTmFtZX0nYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhaW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGJyYW5jaGVzID0gZ2l0aHViT2lkYy5icmFuY2hlcyA/PyBbJyonXTtcblxuICAgIGZvciAoY29uc3QgcmVwbyBvZiBnaXRodWJPaWRjLnJlcG9zaXRvcmllcykge1xuICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAvLyBXaWxkY2FyZCByZXBvIC0gYWxsb3cgYWxsIHJlcG9zIHdpdGggYnJhbmNoIHJlc3RyaWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vKjpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNwZWNpZmljIHJlcG9cbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICBpZiAoYnJhbmNoID09PSAnKicpIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToqYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfTpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgY2xhaW1zXG4gICAgaWYgKGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgZm9yIChjb25zdCBjbGFpbSBvZiBnaXRodWJPaWRjLmFkZGl0aW9uYWxDbGFpbXMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOiR7Y2xhaW19YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToke2NsYWltfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldFJvbGVMaW5lcyhyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIENoYW5nZVNldCBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgY2hhbmdlc2V0IG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkNoYW5nZVNldEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBidWNrZXQgYWNjZXNzIChmb3IgY2hhbmdlc2V0IGNyZWF0aW9uKScsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkdldE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpQdXRPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6RGVsZXRlT2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOkxpc3RCdWNrZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICBSZXNvdXJjZTonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKidcIixcbiAgICAgIFwiICAgICAgICAgICAgICAgICAgLSAhU3ViICdhcm46YXdzOnMzOjo6Y2RrLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259LSovKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgQ0RLIGJvb3RzdHJhcCBwYXJhbWV0ZXIgYWNjZXNzJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gc3NtOkdldFBhcmFtZXRlcicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVycycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyc0J5UGF0aCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogIVN1YiAnYXJuOmF3czpzc206JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKidcIixcbiAgICAgICcgICAgICAgICAgICAgICMgSUFNIFBhc3NSb2xlIGZvciBDREsgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGlhbTpQYXNzUm9sZScsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnICAgICAgICAgICAgICAgIENvbmRpdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAgICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVEcmlmdFJvbGVMaW5lcyhyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIERyaWZ0IERldGVjdGlvbiBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgRGVwZW5kc09uOiBHaXRIdWJPSURDUm9sZScsXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgIFwiICAgICAgUm9sZU5hbWU6ICdcIiArIHJvbGVOYW1lICsgXCInXCIsXG4gICAgICAnICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICBQcmluY2lwYWw6JyxcbiAgICAgICcgICAgICAgICAgICAgIEFXUzogIUdldEF0dCBHaXRIdWJPSURDUm9sZS5Bcm4nLFxuICAgICAgJyAgICAgICAgICAgIEFjdGlvbjogc3RzOkFzc3VtZVJvbGUnLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uRHJpZnRBY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja0RyaWZ0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tEcmlmdERldGVjdGlvblN0YXR1cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdFN0YWNrUmVzb3VyY2VzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrUmVzb3VyY2VEcmlmdCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjT3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBHaXRIdWJPSURDUHJvdmlkZXJBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBHaXRIdWIgT0lEQyBwcm92aWRlcidcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgR2l0SHViT0lEQ1Byb3ZpZGVyLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUHJvdmlkZXJBcm4nXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVPaWRjUm9sZU91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBHaXRIdWIgT0lEQyByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBHaXRIdWJPSURDUm9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tR2l0SHViT0lEQ1JvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIEdpdEh1Yk9JRENSb2xlTmFtZTonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBHaXRIdWIgT0lEQyByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBHaXRIdWJPSURDUm9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUm9sZU5hbWUnXCIsXG4gICAgICAnJyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVDaGFuZ2VzZXRPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgY2hhbmdlc2V0IHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0NoYW5nZXNldFJvbGUuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIENka0NoYW5nZXNldFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrQ2hhbmdlc2V0Um9sZScsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtDaGFuZ2VzZXRSb2xlTmFtZSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZURyaWZ0T3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBDZGtEcmlmdFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0RyaWZ0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtEcmlmdFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrRHJpZnRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZU5hbWUnXCIsXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgUHJvamVuLWludGVncmF0ZWQgU3RhY2tTZXQgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRQcm9wcyBleHRlbmRzIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yUHJvcHMge1xuICAvKiogUHJvamVuIHByb2plY3QgaW5zdGFuY2UgKi9cbiAgcmVhZG9ubHkgcHJvamVjdDogYW55O1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBTdGFja1NldCAoZGVmYXVsdDogJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCcpICovXG4gIHJlYWRvbmx5IHN0YWNrU2V0TmFtZT86IHN0cmluZztcblxuICAvKiogT3V0cHV0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBmaWxlIChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIFRhcmdldCBPVXMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsnb3UteHh4eC14eHh4eHh4eCcsICdyLXh4eHgnXSkgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzPzogc3RyaW5nW107XG5cbiAgLyoqIFRhcmdldCByZWdpb25zIGZvciBkZXBsb3ltZW50IChlLmcuLCBbJ3VzLWVhc3QtMScsICdldS13ZXN0LTEnXSkgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKiBBdXRvLWRlcGxveW1lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBhdXRvRGVwbG95bWVudD86IFN0YWNrU2V0QXV0b0RlcGxveW1lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGRlbGVnYXRlZCBhZG1pbiBtb2RlIGZvciBTdGFja1NldCBvcGVyYXRpb25zLlxuICAgKiBJZiB0cnVlLCBhZGRzIC0tY2FsbC1hcyBERUxFR0FURURfQURNSU4gdG8gY29tbWFuZHMuXG4gICAqIElmIGZhbHNlLCBhc3N1bWVzIHJ1bm5pbmcgZnJvbSB0aGUgbWFuYWdlbWVudCBhY2NvdW50LlxuICAgKiBEZWZhdWx0OiB0cnVlXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0ZWRBZG1pbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvamVuIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBDbG91ZEZvcm1hdGlvbiBTdGFja1NldCB0ZW1wbGF0ZSBmb3Igb3JnLXdpZGUgZGVwbG95bWVudCBvZlxuICogR2l0SHViIE9JREMgcHJvdmlkZXIsIE9JREMgcm9sZSwgYW5kIENESyBEaWZmL0RyaWZ0IElBTSByb2xlcy5cbiAqXG4gKiBUaGlzIHByb3ZpZGVzIGEgc2VsZi1jb250YWluZWQgcGVyLWFjY291bnQgZGVwbG95bWVudCB3aXRoIG5vIHJvbGUgY2hhaW5pbmcgcmVxdWlyZWQuXG4gKlxuICogRm9yIG5vbi1Qcm9qZW4gcHJvamVjdHMsIHVzZSBgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3JgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRQcm9wcykge1xuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwcm9wcy5vdXRwdXRQYXRoID8/ICdjZGstZGlmZi13b3JrZmxvdy1zdGFja3NldC10ZW1wbGF0ZS55YW1sJztcbiAgICBjb25zdCBzdGFja1NldE5hbWUgPSBwcm9wcy5zdGFja1NldE5hbWUgPz8gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCc7XG5cbiAgICAvLyBHZW5lcmF0ZSB0ZW1wbGF0ZSB1c2luZyB0aGUgZ2VuZXJhdG9yXG4gICAgY29uc3QgdGVtcGxhdGUgPSBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvci5nZW5lcmF0ZVRlbXBsYXRlKHByb3BzKTtcbiAgICBuZXcgVGV4dEZpbGUocHJvcHMucHJvamVjdCwgb3V0cHV0UGF0aCwgeyBsaW5lczogdGVtcGxhdGUuc3BsaXQoJ1xcbicpIH0pO1xuXG4gICAgLy8gR2VuZXJhdGUgY29tbWFuZHMgYW5kIGFkZCBhcyBQcm9qZW4gdGFza3NcbiAgICBjb25zdCBjb21tYW5kcyA9IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yLmdlbmVyYXRlQ29tbWFuZHMoe1xuICAgICAgc3RhY2tTZXROYW1lLFxuICAgICAgdGVtcGxhdGVQYXRoOiBvdXRwdXRQYXRoLFxuICAgICAgdGFyZ2V0T3JnYW5pemF0aW9uYWxVbml0SWRzOiBwcm9wcy50YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHMsXG4gICAgICByZWdpb25zOiBwcm9wcy5yZWdpb25zLFxuICAgICAgYXV0b0RlcGxveW1lbnQ6IHByb3BzLmF1dG9EZXBsb3ltZW50LFxuICAgICAgZGVsZWdhdGVkQWRtaW46IHByb3BzLmRlbGVnYXRlZEFkbWluLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGFza0Rlc2NyaXB0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdzdGFja3NldC1jcmVhdGUnOiAnQ3JlYXRlIHRoZSBTdGFja1NldCBmb3Igb3JnLXdpZGUgSUFNIHJvbGUgZGVwbG95bWVudCcsXG4gICAgICAnc3RhY2tzZXQtdXBkYXRlJzogJ1VwZGF0ZSB0aGUgU3RhY2tTZXQgdGVtcGxhdGUnLFxuICAgICAgJ3N0YWNrc2V0LWRlcGxveS1pbnN0YW5jZXMnOlxuICAgICAgICAnRGVwbG95IHN0YWNrIGluc3RhbmNlcyB0byB0YXJnZXQgT1VzIGFuZCByZWdpb25zIChwYXNzIC0tZGVwbG95bWVudC10YXJnZXRzIE9yZ2FuaXphdGlvbmFsVW5pdElkcz08b3UtaWRzPiB0byBvdmVycmlkZSknLFxuICAgICAgJ3N0YWNrc2V0LWRlbGV0ZS1pbnN0YW5jZXMnOiAnRGVsZXRlIHN0YWNrIGluc3RhbmNlcyBmcm9tIHRhcmdldCBPVXMgYW5kIHJlZ2lvbnMnLFxuICAgICAgJ3N0YWNrc2V0LWRlbGV0ZSc6ICdEZWxldGUgdGhlIFN0YWNrU2V0IChyZXF1aXJlcyBhbGwgaW5zdGFuY2VzIHRvIGJlIGRlbGV0ZWQgZmlyc3QpJyxcbiAgICAgICdzdGFja3NldC1kZXNjcmliZSc6ICdEZXNjcmliZSB0aGUgU3RhY2tTZXQgc3RhdHVzIGFuZCBjb25maWd1cmF0aW9uJyxcbiAgICAgICdzdGFja3NldC1saXN0LWluc3RhbmNlcyc6ICdMaXN0IGFsbCBzdGFjayBpbnN0YW5jZXMgYW5kIHRoZWlyIHN0YXR1c2VzJyxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbdGFza05hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbW1hbmRzKSkge1xuICAgICAgcHJvcHMucHJvamVjdC5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb25zW3Rhc2tOYW1lXSxcbiAgICAgICAgcmVjZWl2ZUFyZ3M6IHRhc2tOYW1lICE9PSAnc3RhY2tzZXQtZGVsZXRlJyxcbiAgICAgICAgZXhlYzogY29tbWFuZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -177,7 +177,7 @@ class CdkDiffStackWorkflow {
177
177
  }
178
178
  exports.CdkDiffStackWorkflow = CdkDiffStackWorkflow;
179
179
  _a = JSII_RTTI_SYMBOL_1;
180
- CdkDiffStackWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow", version: "1.4.3" };
180
+ CdkDiffStackWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow", version: "1.5.0" };
181
181
  CdkDiffStackWorkflow.scriptCreated = false;
182
182
  function sanitizeForFileName(name) {
183
183
  return name.replace(/[^a-zA-Z0-9]+/g, '-').replace(/^-+|-+$/g, '').toLowerCase();
@@ -193,7 +193,7 @@ class CdkDriftDetectionWorkflow {
193
193
  }
194
194
  exports.CdkDriftDetectionWorkflow = CdkDriftDetectionWorkflow;
195
195
  _a = JSII_RTTI_SYMBOL_1;
196
- CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.4.3" };
196
+ CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.5.0" };
197
197
  CdkDriftDetectionWorkflow.scriptCreated = false;
198
198
  function issueScript(stack, region, resultsFile) {
199
199
  // Construct a plain JS script string (no template string nesting mishaps)
@@ -79,7 +79,7 @@ class CdkDriftIamTemplateGenerator {
79
79
  }
80
80
  exports.CdkDriftIamTemplateGenerator = CdkDriftIamTemplateGenerator;
81
81
  _a = JSII_RTTI_SYMBOL_1;
82
- CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.4.3" };
82
+ CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.5.0" };
83
83
  /**
84
84
  * Projen construct that emits a CloudFormation template with minimal IAM permissions
85
85
  * for the CDK Drift Detection Workflow.
@@ -102,5 +102,5 @@ class CdkDriftIamTemplate {
102
102
  }
103
103
  exports.CdkDriftIamTemplate = CdkDriftIamTemplate;
104
104
  _b = JSII_RTTI_SYMBOL_1;
105
- CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.4.3" };
105
+ CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.5.0" };
106
106
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnRJYW1UZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdElhbVRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBY2xDOzs7R0FHRztBQUNILE1BQWEsNEJBQTRCO0lBQ3ZDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdDO1FBQzlELE1BQU0sS0FBSyxHQUFHO1lBQ1osd0NBQXdDO1lBQ3hDLDBEQUEwRDtZQUMxRCxFQUFFO1lBQ0YsYUFBYTtZQUNiLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIseUZBQXlGO1lBQ3pGLGlCQUFpQixLQUFLLENBQUMsV0FBVyxHQUFHO1lBQ3JDLEVBQUU7WUFDRixZQUFZO1lBQ1osOEZBQThGO1lBQzlGLGlCQUFpQjtZQUNqQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRztZQUMxQyxpQ0FBaUM7WUFDakMsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0Isd0JBQXdCO1lBQ3hCLDJDQUEyQztZQUMzQyxvQ0FBb0M7WUFDcEMsd0JBQXdCO1lBQ3hCLDZCQUE2QjtZQUM3Qix3Q0FBd0MsR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUc7WUFDakUsaUJBQWlCO1lBQ2pCLGlEQUFpRDtZQUNqRCwyQkFBMkI7WUFDM0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4QiwyREFBMkQ7WUFDM0QsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixxREFBcUQ7WUFDckQsc0VBQXNFO1lBQ3RFLGdFQUFnRTtZQUNoRSxtREFBbUQ7WUFDbkQsdURBQXVEO1lBQ3ZELDZEQUE2RDtZQUM3RCwrQkFBK0I7WUFDL0IsRUFBRTtZQUNGLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsd0RBQXdEO1lBQ3hELHFDQUFxQztZQUNyQyxhQUFhO1lBQ2Isc0RBQXNEO1lBQ3RELEVBQUU7WUFDRixxQkFBcUI7WUFDckIseURBQXlEO1lBQ3pELDhCQUE4QjtZQUM5QixhQUFhO1lBQ2IsdURBQXVEO1NBQ3hELENBQUM7UUFFRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGVBQXVCLHNDQUFzQztRQUN4RixPQUFPLDZDQUE2QyxZQUFZLCtFQUErRSxDQUFDO0lBQ2xKLENBQUM7O0FBckVILG9FQXNFQzs7O0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLG1CQUFtQjtJQUM5QixZQUFZLEtBQStCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksc0NBQXNDLENBQUM7UUFFOUUsd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUU7WUFDcEQsV0FBVyxFQUNULHVJQUF1STtZQUN6SSxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsNEJBQTRCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsa0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEcmlmdCBJQU0gdGVtcGxhdGVzIChubyBQcm9qZW4gZGVwZW5kZW5jeSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMge1xuICAvKiogTmFtZSBmb3IgdGhlIElBTSByb2xlICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIC8qKiBBUk4gb2YgdGhlIGV4aXN0aW5nIEdpdEh1YiBPSURDIHJvbGUgdGhhdCBjYW4gYXNzdW1lIHRoaXMgZHJpZnQgcm9sZSAqL1xuICByZWFkb25seSBvaWRjUm9sZUFybjogc3RyaW5nO1xuICAvKiogUmVnaW9uIGZvciB0aGUgT0lEQyB0cnVzdCBjb25kaXRpb24gKi9cbiAgcmVhZG9ubHkgb2lkY1JlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRHJpZnQgSUFNIHRlbXBsYXRlcy5cbiAqIE5vIFByb2plbiBkZXBlbmRlbmN5IC0gY2FuIGJlIHVzZWQgaW4gYW55IHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBDbG91ZEZvcm1hdGlvbiBJQU0gdGVtcGxhdGUgYXMgYSBZQU1MIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgXCJBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246ICcyMDEwLTA5LTA5J1wiLFxuICAgICAgXCJEZXNjcmlwdGlvbjogJ0lBTSByb2xlIGZvciBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93J1wiLFxuICAgICAgJycsXG4gICAgICAnUGFyYW1ldGVyczonLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVBcm46JyxcbiAgICAgICcgICAgVHlwZTogU3RyaW5nJyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGRyaWZ0IHJvbGUnXCIsXG4gICAgICBgICAgIERlZmF1bHQ6ICcke3Byb3BzLm9pZGNSb2xlQXJufSdgLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIERyaWZ0IERldGVjdGlvbiBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uRHJpZnRBY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja0RyaWZ0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tEcmlmdERldGVjdGlvblN0YXR1cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdFN0YWNrUmVzb3VyY2VzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrUmVzb3VyY2VEcmlmdCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnJyxcbiAgICAgICdPdXRwdXRzOicsXG4gICAgICAnICBDZGtEcmlmdFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0RyaWZ0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtEcmlmdFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrRHJpZnRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZU5hbWUnXCIsXG4gICAgXTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQVdTIENMSSBkZXBsb3kgY29tbWFuZCBmb3IgdGhlIElBTSB0ZW1wbGF0ZS5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZURlcGxveUNvbW1hbmQodGVtcGxhdGVQYXRoOiBzdHJpbmcgPSAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kcmlmdC13b3JrZmxvdy1pYW0tcm9sZSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTWA7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIENESyBEcmlmdCBJQU0gdGVtcGxhdGUgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRHJpZnRJYW1UZW1wbGF0ZVByb3BzIGV4dGVuZHMgQ2RrRHJpZnRJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kcmlmdC13b3JrZmxvdy1pYW0tdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvamVuIGNvbnN0cnVjdCB0aGF0IGVtaXRzIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgd2l0aCBtaW5pbWFsIElBTSBwZXJtaXNzaW9uc1xuICogZm9yIHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93LlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3JgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRHJpZnRJYW1UZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlUHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJztcblxuICAgIC8vIEdlbmVyYXRlIHRlbXBsYXRlIHVzaW5nIHRoZSBnZW5lcmF0b3JcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVUZW1wbGF0ZShwcm9wcyk7XG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHsgbGluZXM6IHRlbXBsYXRlLnNwbGl0KCdcXG4nKSB9KTtcblxuICAgIC8vIEFkZCBkZXBsb3kgdGFza1xuICAgIHByb3BzLnByb2plY3QuYWRkVGFzaygnZGVwbG95LWNka2RyaWZ0LWlhbS10ZW1wbGF0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGVwbG95IHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIElBTSB0ZW1wbGF0ZSB2aWEgQ2xvdWRGb3JtYXRpb24gKGFjY2VwdHMgZXh0cmEgQVdTIENMSSBhcmdzLCBlLmcuLCAtLXBhcmFtZXRlci1vdmVycmlkZXMgS2V5PVZhbHVlLi4uKScsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgIGV4ZWM6IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVEZXBsb3lDb21tYW5kKG91dHB1dFBhdGgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -104,7 +104,9 @@ class CdkChangesetScript {
104
104
  ' * Generate the HTML body similar to pretty_format.py',
105
105
  ' */',
106
106
  'function buildHtml(stackName: string, changes: any[]): string {',
107
- ' let body = `<h1>Change set</h1><h2>Stack Name: ${stackName}</h2><br>`;',
107
+ ' const now = new Date();',
108
+ " const timestamp = now.toISOString().slice(0, 16).replace('T', ' ') + ' UTC';",
109
+ ' let body = `<h1>Change set <sub>${timestamp}</sub></h1><h2>Stack Name: ${stackName}</h2><br>`;',
108
110
  ' if ((changes?.length ?? 0) > 0) {',
109
111
  " body += '<table><tr><th>Action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>ID</th><th>Type</th><th>Replacement</th><th>Details</th></tr>';",
110
112
  ' for (const c of changes) {',
@@ -423,4 +425,4 @@ class CdkChangesetScript {
423
425
  }
424
426
  }
425
427
  exports.CdkChangesetScript = CdkChangesetScript;
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNoYW5nZXNldC1zY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2Nkay1jaGFuZ2VzZXQtc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQVFsQyxNQUFhLGtCQUFrQjtJQUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksb0NBQW9DLENBQUM7UUFFNUUsSUFBSSxpQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQ3RDLEtBQUssRUFBRTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLDZKQUE2SjtnQkFDN0osRUFBRTtnQkFDRixLQUFLO2dCQUNMLHdCQUF3QjtnQkFDeEIsS0FBSztnQkFDTCwwRUFBMEU7Z0JBQzFFLEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCw2Q0FBNkM7Z0JBQzdDLGlFQUFpRTtnQkFDakUsS0FBSztnQkFDTCxnREFBZ0Q7Z0JBQ2hELDJEQUEyRDtnQkFDM0QsOENBQThDO2dCQUM5QyxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQixNQUFNO2dCQUNOLDBEQUEwRDtnQkFDMUQsc0NBQXNDO2dCQUN0QyxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCxvQ0FBb0M7Z0JBQ3BDLEtBQUs7Z0JBQ0wsNENBQTRDO2dCQUM1QyxrRkFBa0Y7Z0JBQ2xGLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixLQUFLO2dCQUNMLGtDQUFrQztnQkFDbEMsS0FBSztnQkFDTCxzSUFBc0k7Z0JBQ3RJLDRGQUE0RjtnQkFDNUYsSUFBSTtnQkFDSixvRUFBb0U7Z0JBQ3BFLDBDQUEwQztnQkFDMUMsd0NBQXdDO2dCQUN4QyxvREFBb0Q7Z0JBQ3BELElBQUk7Z0JBQ0osMEJBQTBCO2dCQUMxQixvQkFBb0I7Z0JBQ3BCLG9PQUFvTztnQkFDcE8sT0FBTztnQkFDUCwySUFBMkk7Z0JB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Z0JBQ3BFLDZDQUE2QztnQkFDN0MsV0FBVztnQkFDWCxzRkFBc0Y7Z0JBQ3RGLHFEQUFxRDtnQkFDckQsd0JBQXdCO2dCQUN4Qiw4RUFBOEU7Z0JBQzlFLGdFQUFnRTtnQkFDaEUsT0FBTztnQkFDUCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0YsNEdBQTRHO2dCQUM1Ryw4Q0FBOEM7Z0JBQzlDLDBFQUEwRTtnQkFDMUUsS0FBSztnQkFDTCxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YseUJBQXlCO2dCQUN6Qix1QkFBdUI7Z0JBQ3ZCLHlCQUF5QjtnQkFDekIsS0FBSzthQUNOO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcGFELGdEQW9hQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5cbmludGVyZmFjZSBDZGtDaGFuZ2VzZXRTY3JpcHRQcm9wcyB7XG4gIHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHA7XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDZGtDaGFuZ2VzZXRTY3JpcHQge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrQ2hhbmdlc2V0U2NyaXB0UHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAncHJvamVucmMvZGVzY3JpYmUtY2ZuLWNoYW5nZXNldC50cyc7XG5cbiAgICBuZXcgVGV4dEZpbGUocHJvcHMucHJvamVjdCwgb3V0cHV0UGF0aCwge1xuICAgICAgbGluZXM6IFtcbiAgICAgICAgXCJpbXBvcnQgeyBhcHBlbmRGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnO1wiLFxuICAgICAgICBcImltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQsIERlc2NyaWJlU3RhY2tzQ29tbWFuZCwgRGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XCIsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIFNtYWxsIHNsZWVwIGhlbHBlci4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2NvbnN0IHNsZWVwID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyZXMpID0+IHNldFRpbWVvdXQocmVzLCBtcykpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEJ1aWxkIHRoZSBIVE1MIGNvbG9yIGNoaXAgZm9yIGFuIGFjdGlvbi4nLFxuICAgICAgICAnICogTW9kaWZ5PWJsdWUsIEFkZD1ncmVlbiwgUmVtb3ZlPXJlZCAobWF0Y2ggcHJldHR5X2Zvcm1hdC5weSkuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBhY3Rpb25DaGlwKGFjdGlvbj86IHN0cmluZyk6IHN0cmluZyB7JyxcbiAgICAgICAgJyAgLy8gVXNlIGVtb2ppIGluc3RlYWQgb2YgZXh0ZXJuYWwgaW1hZ2VzIGZvciByZWxpYWJpbGl0eScsXG4gICAgICAgICcgIGNvbnN0IGVtb2ppTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geycsXG4gICAgICAgIFwiICAgIE1vZGlmeTogJ/CflLUnLFwiLFxuICAgICAgICBcIiAgICBBZGQ6ICfwn5+iJyxcIixcbiAgICAgICAgXCIgICAgUmVtb3ZlOiAn8J+UtCcsXCIsXG4gICAgICAgICcgIH07JyxcbiAgICAgICAgXCIgIGNvbnN0IG1hcmsgPSBhY3Rpb24gPyAoZW1vamlNYXBbYWN0aW9uXSA/PyAn4pqqJykgOiAn4pqqJztcIixcbiAgICAgICAgXCIgIHJldHVybiBgJHttYXJrfSAke2FjdGlvbiA/PyAnLSd9YDtcIixcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBFc2NhcGUgSFRNTCBzcGVjaWFsIGNoYXJhY3RlcnMuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBlc2NhcGVIdG1sKHN0cjogc3RyaW5nKTogc3RyaW5nIHsnLFxuICAgICAgICBcIiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogRm9ybWF0IGEgYmVmb3Jl4oaSYWZ0ZXIgY2hhbmdlLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gZm9ybWF0Q2hhbmdlKG5hbWU6IHN0cmluZywgY2hhbmdlVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBiZWZvcmU6IHN0cmluZyB8IHVuZGVmaW5lZCwgYWZ0ZXI6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7JyxcbiAgICAgICAgXCIgIGNvbnN0IGNoYW5nZUVtb2ppID0gY2hhbmdlVHlwZSA9PT0gJ0FkZCcgPyAn8J+foicgOiBjaGFuZ2VUeXBlID09PSAnUmVtb3ZlJyA/ICfwn5S0JyA6ICfwn5S1JztcIixcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgLy8gSWYgYm90aCB2YWx1ZXMgZXhpc3QgYW5kIGFyZSBsYXJnZSwgdXNlIGEgbW9yZSBjb21wYWN0IGZvcm1hdCcsXG4gICAgICAgICcgIGNvbnN0IGJlZm9yZUxlbiA9IGJlZm9yZT8ubGVuZ3RoID8/IDA7JyxcbiAgICAgICAgJyAgY29uc3QgYWZ0ZXJMZW4gPSBhZnRlcj8ubGVuZ3RoID8/IDA7JyxcbiAgICAgICAgJyAgY29uc3QgaXNMYXJnZSA9IGJlZm9yZUxlbiA+IDgwIHx8IGFmdGVyTGVuID4gODA7JyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgaWYgKGJlZm9yZSAmJiBhZnRlcikgeycsXG4gICAgICAgICcgICAgaWYgKGlzTGFyZ2UpIHsnLFxuICAgICAgICAnICAgICAgcmV0dXJuIGA8ZGV0YWlscz48c3VtbWFyeT4ke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz4gKG1vZGlmaWVkKTwvc3VtbWFyeT48c3Ryb25nPkJlZm9yZTo8L3N0cm9uZz48cHJlPiR7ZXNjYXBlSHRtbChiZWZvcmUpfTwvcHJlPjxzdHJvbmc+QWZ0ZXI6PC9zdHJvbmc+PHByZT4ke2VzY2FwZUh0bWwoYWZ0ZXIpfTwvcHJlPjwvZGV0YWlscz5gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICAgcmV0dXJuIGAke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz46IDxjb2RlPiR7ZXNjYXBlSHRtbChiZWZvcmUpfTwvY29kZT4g4oaSIDxjb2RlPiR7ZXNjYXBlSHRtbChhZnRlcil9PC9jb2RlPmA7JyxcbiAgICAgICAgJyAgfSBlbHNlIGlmIChhZnRlcikgeycsXG4gICAgICAgICcgICAgaWYgKGlzTGFyZ2UpIHsnLFxuICAgICAgICAnICAgICAgcmV0dXJuIGA8ZGV0YWlscz48c3VtbWFyeT4ke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz4gKGFkZGVkKTwvc3VtbWFyeT48cHJlPiR7ZXNjYXBlSHRtbChhZnRlcil9PC9wcmU+PC9kZXRhaWxzPmA7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgICByZXR1cm4gYCR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPjogPGNvZGU+JHtlc2NhcGVIdG1sKGFmdGVyKX08L2NvZGU+YDsnLFxuICAgICAgICAnICB9IGVsc2UgaWYgKGJlZm9yZSkgeycsXG4gICAgICAgICcgICAgaWYgKGlzTGFyZ2UpIHsnLFxuICAgICAgICAnICAgICAgcmV0dXJuIGA8ZGV0YWlscz48c3VtbWFyeT4ke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz4gKHJlbW92ZWQpPC9zdW1tYXJ5PjxwcmU+JHtlc2NhcGVIdG1sKGJlZm9yZSl9PC9wcmU+PC9kZXRhaWxzPmA7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgICByZXR1cm4gYCR7Y2hhbmdlRW1vaml9IDxzdHJvbmc+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Ryb25nPjogPHM+PGNvZGU+JHtlc2NhcGVIdG1sKGJlZm9yZSl9PC9jb2RlPjwvcz5gOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICAvLyBGYWxsYmFjazogbm8gdmFsdWVzIGF2YWlsYWJsZSAoQVBJIGRpZCBub3QgcmV0dXJuIHRoZW0pJyxcbiAgICAgICAgJyAgcmV0dXJuIGAke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz5gOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogRXh0cmFjdCBjaGFuZ2VkIHByb3BlcnRpZXMvdGFncy9hdHRyaWJ1dGVzIHdpdGggYmVmb3JlL2FmdGVyIHZhbHVlcy4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGNoYW5nZWRQcm9wZXJ0aWVzSFRNTChjaGFuZ2U6IGFueSk6IHN0cmluZyB7JyxcbiAgICAgICAgJyAgY29uc3QgZGV0YWlscyA9IGNoYW5nZT8uUmVzb3VyY2VDaGFuZ2U/LkRldGFpbHMgPz8gW107JyxcbiAgICAgICAgJyAgY29uc3QgcHJvcHM6IHN0cmluZ1tdID0gW107JyxcbiAgICAgICAgJyAgZm9yIChjb25zdCBkIG9mIGRldGFpbHMpIHsnLFxuICAgICAgICAnICAgIGNvbnN0IGF0dHIgPSBkPy5UYXJnZXQ/LkF0dHJpYnV0ZTsnLFxuICAgICAgICAnICAgIC8vIFVzZSBwcm9wZXJ0eSBuYW1lIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHVzZSBhdHRyaWJ1dGUgdHlwZScsXG4gICAgICAgIFwiICAgIGNvbnN0IG5hbWUgPSBkPy5UYXJnZXQ/Lk5hbWUgPz8gYXR0ciA/PyAndW5rbm93bic7XCIsXG4gICAgICAgICcgICAgY29uc3QgY2hhbmdlVHlwZSA9IGQ/LlRhcmdldD8uQXR0cmlidXRlQ2hhbmdlVHlwZTsnLFxuICAgICAgICAnICAgIGNvbnN0IGJlZm9yZSA9IGQ/LlRhcmdldD8uQmVmb3JlVmFsdWU7JyxcbiAgICAgICAgJyAgICBjb25zdCBhZnRlciA9IGQ/LlRhcmdldD8uQWZ0ZXJWYWx1ZTsnLFxuICAgICAgICAnICAgIHByb3BzLnB1c2goZm9ybWF0Q2hhbmdlKG5hbWUsIGNoYW5nZVR5cGUsIGJlZm9yZSwgYWZ0ZXIpKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgXCIgIHJldHVybiBwcm9wcy5qb2luKCc8YnI+Jyk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogRGV0ZXJtaW5lIGlmIGEgY2hhbmdlIHNob3VsZCBiZSBpZ25vcmVkIGJhc2VkIG9uIGxvZ2ljYWwgSURzIGFuZC9vciByZXNvdXJjZSB0eXBlcy4nLFxuICAgICAgICBcIiAqIC0gSUdOT1JFX0xPR0lDQUxfSURTOiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsb2dpY2FsIElEcyB0byBpZ25vcmUgKGRlZmF1bHQgaW5jbHVkZXMgJ0NES01ldGFkYXRhJylcIixcbiAgICAgICAgXCIgKiAtIElHTk9SRV9SRVNPVVJDRV9UWVBFUzogY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcmVzb3VyY2UgdHlwZXMgdG8gaWdub3JlIChlLmcuLCAnQVdTOjpDREs6Ok1ldGFkYXRhJylcIixcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBzaG91bGRJZ25vcmVDaGFuZ2UoY2hhbmdlOiBhbnksIGlnbm9yZUlkczogU2V0PHN0cmluZz4sIGlnbm9yZVR5cGVzOiBTZXQ8c3RyaW5nPik6IGJvb2xlYW4geycsXG4gICAgICAgICcgIGNvbnN0IHJjID0gY2hhbmdlPy5SZXNvdXJjZUNoYW5nZSA/PyB7fTsnLFxuICAgICAgICAnICBjb25zdCBsb2dpY2FsSWQgPSByYz8uTG9naWNhbFJlc291cmNlSWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkOycsXG4gICAgICAgICcgIGNvbnN0IHJlc291cmNlVHlwZSA9IHJjPy5SZXNvdXJjZVR5cGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkOycsXG4gICAgICAgICcgIGlmIChsb2dpY2FsSWQgJiYgaWdub3JlSWRzLmhhcyhsb2dpY2FsSWQpKSByZXR1cm4gdHJ1ZTsnLFxuICAgICAgICAnICBpZiAocmVzb3VyY2VUeXBlICYmIGlnbm9yZVR5cGVzLmhhcyhyZXNvdXJjZVR5cGUpKSByZXR1cm4gdHJ1ZTsnLFxuICAgICAgICAnICByZXR1cm4gZmFsc2U7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBHZW5lcmF0ZSB0aGUgSFRNTCBib2R5IHNpbWlsYXIgdG8gcHJldHR5X2Zvcm1hdC5weScsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gYnVpbGRIdG1sKHN0YWNrTmFtZTogc3RyaW5nLCBjaGFuZ2VzOiBhbnlbXSk6IHN0cmluZyB7JyxcbiAgICAgICAgJyAgbGV0IGJvZHkgPSBgPGgxPkNoYW5nZSBzZXQ8L2gxPjxoMj5TdGFjayBOYW1lOiAke3N0YWNrTmFtZX08L2gyPjxicj5gOycsXG4gICAgICAgICcgIGlmICgoY2hhbmdlcz8ubGVuZ3RoID8/IDApID4gMCkgeycsXG4gICAgICAgIFwiICAgIGJvZHkgKz0gJzx0YWJsZT48dHI+PHRoPkFjdGlvbiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvdGg+PHRoPklEPC90aD48dGg+VHlwZTwvdGg+PHRoPlJlcGxhY2VtZW50PC90aD48dGg+RGV0YWlsczwvdGg+PC90cj4nO1wiLFxuICAgICAgICAnICAgIGZvciAoY29uc3QgYyBvZiBjaGFuZ2VzKSB7JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IHJjID0gYz8uUmVzb3VyY2VDaGFuZ2UgPz8ge307JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGFjdGlvbiA9IGFjdGlvbkNoaXAocmM/LkFjdGlvbik7JyxcbiAgICAgICAgXCIgICAgICBjb25zdCBsb2dpY2FsSWQgPSByYz8uTG9naWNhbFJlc291cmNlSWQgPz8gJy0nO1wiLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHR5cGUgPSByYz8uUmVzb3VyY2VUeXBlID8/ICctJztcIixcbiAgICAgICAgXCIgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHJjPy5SZXBsYWNlbWVudCA/PyAnLSc7XCIsXG4gICAgICAgICcgICAgICBjb25zdCBkZXRhaWxzID0gY2hhbmdlZFByb3BlcnRpZXNIVE1MKGMpOycsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICAgIGJvZHkgKz0gJzx0cj4nO1wiLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7YWN0aW9ufTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7bG9naWNhbElkfTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7dHlwZX08L3RkPmA7JyxcbiAgICAgICAgJyAgICAgIGJvZHkgKz0gYDx0ZD4ke3JlcGxhY2VtZW50fTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7ZGV0YWlsc308L3RkPmA7JyxcbiAgICAgICAgXCIgICAgICBib2R5ICs9ICc8L3RyPic7XCIsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgIFwiICAgIGJvZHkgKz0gJzwvdGFibGU+JztcIixcbiAgICAgICAgJyAgfSBlbHNlIHsnLFxuICAgICAgICBcIiAgICBib2R5ICs9ICdubyBjaGFuZ2UuJztcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIHJldHVybiBib2R5OycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUG9sbCBEZXNjcmliZUNoYW5nZVNldCB1bnRpbCBhIHRlcm1pbmFsIHN0YXR1cywgdGhlbiBwYWdpbmF0ZSB0byByZXRyaWV2ZSBhbGwgQ2hhbmdlcy4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGdldFRlcm1pbmFsQ2hhbmdlU2V0KCcsXG4gICAgICAgICcgIGNsaWVudDogQ2xvdWRGb3JtYXRpb25DbGllbnQsJyxcbiAgICAgICAgJyAgc3RhY2tOYW1lOiBzdHJpbmcsJyxcbiAgICAgICAgJyAgY2hhbmdlU2V0TmFtZTogc3RyaW5nLCcsXG4gICAgICAgICcgIG1heEF0dGVtcHRzID0gNjAsJyxcbiAgICAgICAgJyAgZGVsYXlNcyA9IDMwMDAsJyxcbiAgICAgICAgJyk6IFByb21pc2U8eyBzdGF0dXM/OiBzdHJpbmc7IHN0YXR1c1JlYXNvbj86IHN0cmluZzsgY2hhbmdlczogYW55W10gfT4geycsXG4gICAgICAgICcgIGZvciAobGV0IGF0dGVtcHQgPSAxOyBhdHRlbXB0IDw9IG1heEF0dGVtcHRzOyBhdHRlbXB0KyspIHsnLFxuICAgICAgICAnICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kKHsnLFxuICAgICAgICAnICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsJyxcbiAgICAgICAgJyAgICAgIENoYW5nZVNldE5hbWU6IGNoYW5nZVNldE5hbWUsJyxcbiAgICAgICAgJyAgICAgIEluY2x1ZGVQcm9wZXJ0eVZhbHVlczogdHJ1ZSwnLFxuICAgICAgICAnICAgIH0pKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICBjb25zdCBzdGF0dXMgPSByZXNwLlN0YXR1czsnLFxuICAgICAgICAnICAgIGNvbnN0IHN0YXR1c1JlYXNvbiA9IHJlc3AuU3RhdHVzUmVhc29uOycsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICBpZiAoc3RhdHVzID09PSAnQ1JFQVRFX0NPTVBMRVRFJyB8fCBzdGF0dXMgPT09ICdGQUlMRUQnKSB7XCIsXG4gICAgICAgICcgICAgICAvLyBHYXRoZXIgYWxsIHBhZ2VzJyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGNoYW5nZXM6IGFueVtdID0gW107JyxcbiAgICAgICAgJyAgICAgIGlmIChyZXNwLkNoYW5nZXMpIGNoYW5nZXMucHVzaCguLi5yZXNwLkNoYW5nZXMpOycsXG4gICAgICAgICcgICAgICBsZXQgbmV4dCA9IHJlc3AuTmV4dFRva2VuOycsXG4gICAgICAgICcgICAgICB3aGlsZSAobmV4dCkgeycsXG4gICAgICAgICcgICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kKHsnLFxuICAgICAgICAnICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLCcsXG4gICAgICAgICcgICAgICAgICAgQ2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0TmFtZSwnLFxuICAgICAgICAnICAgICAgICAgIEluY2x1ZGVQcm9wZXJ0eVZhbHVlczogdHJ1ZSwnLFxuICAgICAgICAnICAgICAgICAgIE5leHRUb2tlbjogbmV4dCwnLFxuICAgICAgICAnICAgICAgICB9KSk7JyxcbiAgICAgICAgJyAgICAgICAgaWYgKHBhZ2UuQ2hhbmdlcykgY2hhbmdlcy5wdXNoKC4uLnBhZ2UuQ2hhbmdlcyk7JyxcbiAgICAgICAgJyAgICAgICAgbmV4dCA9IHBhZ2UuTmV4dFRva2VuOycsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJyAgICAgIHJldHVybiB7IHN0YXR1cywgc3RhdHVzUmVhc29uLCBjaGFuZ2VzIH07JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgLy8gTm90IHRlcm1pbmFsIHlldDsgd2FpdCBhbmQgcmV0cnknLFxuICAgICAgICAnICAgIGF3YWl0IHNsZWVwKGRlbGF5TXMpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIHRocm93IG5ldyBFcnJvcignVGltZWQgb3V0IHdhaXRpbmcgZm9yIGNoYW5nZSBzZXQgdG8gcmVhY2ggYSB0ZXJtaW5hbCBzdGF0dXMuJyk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUGFyc2UgdGhlIExpbmsgaGVhZGVyIGZyb20gR2l0SHViIEFQSSByZXNwb25zZXMgZm9yIHBhZ2luYXRpb24uJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBwYXJzZUxpbmtIZWFkZXIoaGVhZGVyOiBzdHJpbmcgfCBudWxsKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7JyxcbiAgICAgICAgJyAgY29uc3QgbGlua3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTsnLFxuICAgICAgICAnICBpZiAoIWhlYWRlcikgcmV0dXJuIGxpbmtzOycsXG4gICAgICAgIFwiICBmb3IgKGNvbnN0IHBhcnQgb2YgaGVhZGVyLnNwbGl0KCcsJykpIHtcIixcbiAgICAgICAgJyAgICBjb25zdCBtYXRjaCA9IHBhcnQubWF0Y2goLzwoW14+XSspPjtcXFxccypyZWw9XCIoW15cIl0rKVwiLyk7JyxcbiAgICAgICAgJyAgICBpZiAobWF0Y2gpIGxpbmtzW21hdGNoWzJdXSA9IG1hdGNoWzFdOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICByZXR1cm4gbGlua3M7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBTZWFyY2ggZXhpc3RpbmcgUFIgY29tbWVudHMgZm9yIG9uZSBjb250YWluaW5nIHRoZSBnaXZlbiBtYXJrZXIuJyxcbiAgICAgICAgJyAqIFJldHVybnMgdGhlIGNvbW1lbnQgSUQgaWYgZm91bmQsIG51bGwgb3RoZXJ3aXNlLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gZmluZEV4aXN0aW5nQ29tbWVudChjb21tZW50c1VybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtYXJrZXI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4geycsXG4gICAgICAgICcgIGxldCB1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGAke2NvbW1lbnRzVXJsfT9wZXJfcGFnZT0xMDBgOycsXG4gICAgICAgICcgIHdoaWxlICh1cmwpIHsnLFxuICAgICAgICAnICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgeycsXG4gICAgICAgICcgICAgICBoZWFkZXJzOiB7JyxcbiAgICAgICAgXCIgICAgICAgICdBdXRob3JpemF0aW9uJzogYHRva2VuICR7dG9rZW59YCxcIixcbiAgICAgICAgXCIgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcIixcbiAgICAgICAgJyAgICAgIH0sJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICAgIGlmICghcmVzLm9rKSByZXR1cm4gbnVsbDsnLFxuICAgICAgICAnICAgIGNvbnN0IGNvbW1lbnRzOiBhbnlbXSA9IGF3YWl0IHJlcy5qc29uKCkgYXMgYW55W107JyxcbiAgICAgICAgJyAgICBmb3IgKGNvbnN0IGMgb2YgY29tbWVudHMpIHsnLFxuICAgICAgICBcIiAgICAgIGlmICh0eXBlb2YgYy5ib2R5ID09PSAnc3RyaW5nJyAmJiBjLmJvZHkuaW5jbHVkZXMobWFya2VyKSkge1wiLFxuICAgICAgICAnICAgICAgICByZXR1cm4gYy5pZDsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgIFwiICAgIGNvbnN0IGxpbmtzID0gcGFyc2VMaW5rSGVhZGVyKHJlcy5oZWFkZXJzLmdldCgnbGluaycpKTtcIixcbiAgICAgICAgJyAgICB1cmwgPSBsaW5rcy5uZXh0OycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICByZXR1cm4gbnVsbDsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIENyZWF0ZSBvciB1cGRhdGUgYSBQUiBjb21tZW50LiBVc2VzIGFuIEhUTUwgbWFya2VyIHRvIGZpbmQgZXhpc3RpbmcgY29tbWVudHMuJyxcbiAgICAgICAgJyAqIElmIGZvdW5kLCBQQVRDSGVzIHRoZSBleGlzdGluZyBjb21tZW50OyBvdGhlcndpc2UgUE9TVHMgYSBuZXcgb25lLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gdXBzZXJ0R2l0aHViQ29tbWVudChjb21tZW50c1VybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBib2R5OiBzdHJpbmcsIG1hcmtlcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7JyxcbiAgICAgICAgJyAgY29uc3QgbWFya2VkQm9keSA9IGAke21hcmtlcn1cXFxcbiR7Ym9keX1gOycsXG4gICAgICAgICcgIGNvbnN0IGV4aXN0aW5nSWQgPSBhd2FpdCBmaW5kRXhpc3RpbmdDb21tZW50KGNvbW1lbnRzVXJsLCB0b2tlbiwgbWFya2VyKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgbGV0IHJlczogUmVzcG9uc2U7JyxcbiAgICAgICAgJyAgaWYgKGV4aXN0aW5nSWQpIHsnLFxuICAgICAgICBcIiAgICBjb25zdCBiYXNlVXJsID0gY29tbWVudHNVcmwuc3Vic3RyaW5nKDAsIGNvbW1lbnRzVXJsLmluZGV4T2YoJy9pc3N1ZXMvJykpO1wiLFxuICAgICAgICAnICAgIGNvbnN0IHBhdGNoVXJsID0gYCR7YmFzZVVybH0vaXNzdWVzL2NvbW1lbnRzLyR7ZXhpc3RpbmdJZH1gOycsXG4gICAgICAgICcgICAgcmVzID0gYXdhaXQgZmV0Y2gocGF0Y2hVcmwsIHsnLFxuICAgICAgICBcIiAgICAgIG1ldGhvZDogJ1BBVENIJyxcIixcbiAgICAgICAgJyAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICBcIiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgdG9rZW4gJHt0b2tlbn1gLFwiLFxuICAgICAgICBcIiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcIixcbiAgICAgICAgXCIgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcIixcbiAgICAgICAgJyAgICAgIH0sJyxcbiAgICAgICAgJyAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYm9keTogbWFya2VkQm9keSB9KSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0gZWxzZSB7JyxcbiAgICAgICAgJyAgICByZXMgPSBhd2FpdCBmZXRjaChjb21tZW50c1VybCwgeycsXG4gICAgICAgIFwiICAgICAgbWV0aG9kOiAnUE9TVCcsXCIsXG4gICAgICAgICcgICAgICBoZWFkZXJzOiB7JyxcbiAgICAgICAgXCIgICAgICAgICdBdXRob3JpemF0aW9uJzogYHRva2VuICR7dG9rZW59YCxcIixcbiAgICAgICAgXCIgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXCIsXG4gICAgICAgIFwiICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvbicsXCIsXG4gICAgICAgICcgICAgICB9LCcsXG4gICAgICAgICcgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGJvZHk6IG1hcmtlZEJvZHkgfSksJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGlmICghcmVzLm9rKSB7JyxcbiAgICAgICAgXCIgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCkuY2F0Y2goKCkgPT4gJycpO1wiLFxuICAgICAgICBcIiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byAke2V4aXN0aW5nSWQgPyAndXBkYXRlJyA6ICdwb3N0J30gR2l0SHViIGNvbW1lbnQ6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH0gJHt0ZXh0fWApO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGFwcGVuZFN0ZXBTdW1tYXJ5KHN1bW1hcnlQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4geycsXG4gICAgICAgIFwiICBhd2FpdCBhcHBlbmRGaWxlKHN1bW1hcnlQYXRoLCBgJHtjb250ZW50fVxcXFxuYCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIENoZWNrIGNhY2hlZCBkcmlmdCBzdGF0dXMgZm9yIHRoZSBzdGFjayBhbmQgcmV0dXJuIGFuIEhUTUwgYmFubmVyLicsXG4gICAgICAgICcgKiBOb24tZmF0YWw6IHJldHVybnMgZW1wdHkgc3RyaW5nIG9uIGFueSBlcnJvci4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGdldERyaWZ0QmFubmVySHRtbChjbGllbnQ6IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBzdGFja05hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7JyxcbiAgICAgICAgJyAgY29uc3Qgc3RhY2tSZXNwID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogc3RhY2tOYW1lIH0pKTsnLFxuICAgICAgICAnICBjb25zdCBzdGFjayA9IHN0YWNrUmVzcC5TdGFja3M/LlswXTsnLFxuICAgICAgICBcIiAgaWYgKCFzdGFjaykgcmV0dXJuICcnO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgZHJpZnRJbmZvID0gc3RhY2suRHJpZnRJbmZvcm1hdGlvbjsnLFxuICAgICAgICAnICBjb25zdCBkcmlmdFN0YXR1cyA9IGRyaWZ0SW5mbz8uU3RhY2tEcmlmdFN0YXR1czsnLFxuICAgICAgICAnICBjb25zdCBsYXN0Q2hlY2tlZCA9IGRyaWZ0SW5mbz8uTGFzdENoZWNrVGltZXN0YW1wOycsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgaWYgKGRyaWZ0U3RhdHVzID09PSAnSU5fU1lOQycpIHJldHVybiAnJztcIixcbiAgICAgICAgJycsXG4gICAgICAgIFwiICBpZiAoZHJpZnRTdGF0dXMgPT09ICdOT1RfQ0hFQ0tFRCcpIHtcIixcbiAgICAgICAgXCIgICAgcmV0dXJuICc8YmxvY2txdW90ZT48cD7ihLnvuI8gRHJpZnQgZGV0ZWN0aW9uIGhhcyBub3QgYmVlbiBydW4gZm9yIHRoaXMgc3RhY2suPC9wPjwvYmxvY2txdW90ZT4nO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICBpZiAoZHJpZnRTdGF0dXMgPT09ICdEUklGVEVEJykge1wiLFxuICAgICAgICBcIiAgICBsZXQgYmFubmVyID0gJzxibG9ja3F1b3RlPic7XCIsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRyeSB7JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGRyaWZ0c1Jlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzQ29tbWFuZCh7JyxcbiAgICAgICAgJyAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsJyxcbiAgICAgICAgXCIgICAgICAgIFN0YWNrUmVzb3VyY2VEcmlmdFN0YXR1c0ZpbHRlcnM6IFsnTU9ESUZJRUQnLCAnREVMRVRFRCddLFwiLFxuICAgICAgICAnICAgICAgfSkpOycsXG4gICAgICAgICcgICAgICBjb25zdCBkcmlmdHMgPSBkcmlmdHNSZXNwLlN0YWNrUmVzb3VyY2VEcmlmdHMgPz8gW107JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGNvdW50ID0gZHJpZnRzLmxlbmd0aDsnLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHRzID0gbGFzdENoZWNrZWQgPyBsYXN0Q2hlY2tlZC50b0lTT1N0cmluZygpIDogJ3Vua25vd24nO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgICAgICBiYW5uZXIgKz0gYDxoMz7imqDvuI8gU3RhY2sgaGFzIGRyaWZ0ZWQgKCR7Y291bnR9IHJlc291cmNlJHtjb3VudCAhPT0gMSA/ICdzJyA6ICcnfSBvdXQgb2Ygc3luYyk8L2gzPmA7XCIsXG4gICAgICAgICcgICAgICBiYW5uZXIgKz0gYDxwPkxhc3QgZHJpZnQgY2hlY2s6IDxlbT4ke3RzfTwvZW0+PC9wPmA7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgICBpZiAoY291bnQgPiAwKSB7JyxcbiAgICAgICAgXCIgICAgICAgIGJhbm5lciArPSAnPGRldGFpbHM+PHN1bW1hcnk+VmlldyBkcmlmdGVkIHJlc291cmNlczwvc3VtbWFyeT4nO1wiLFxuICAgICAgICBcIiAgICAgICAgYmFubmVyICs9ICc8dGFibGU+PHRyPjx0aD5SZXNvdXJjZTwvdGg+PHRoPlR5cGU8L3RoPjx0aD5EcmlmdCBTdGF0dXM8L3RoPjwvdHI+JztcIixcbiAgICAgICAgJyAgICAgICAgZm9yIChjb25zdCBkIG9mIGRyaWZ0cykgeycsXG4gICAgICAgIFwiICAgICAgICAgIGNvbnN0IGxvZ2ljYWxJZCA9IGQuTG9naWNhbFJlc291cmNlSWQgPz8gJy0nO1wiLFxuICAgICAgICBcIiAgICAgICAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBkLlJlc291cmNlVHlwZSA/PyAnLSc7XCIsXG4gICAgICAgIFwiICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGQuU3RhY2tSZXNvdXJjZURyaWZ0U3RhdHVzID8/ICctJztcIixcbiAgICAgICAgJyAgICAgICAgICBiYW5uZXIgKz0gYDx0cj48dGQ+JHtsb2dpY2FsSWR9PC90ZD48dGQ+JHtyZXNvdXJjZVR5cGV9PC90ZD48dGQ+JHtzdGF0dXN9PC90ZD48L3RyPmA7JyxcbiAgICAgICAgJyAgICAgICAgfScsXG4gICAgICAgIFwiICAgICAgICBiYW5uZXIgKz0gJzwvdGFibGU+PC9kZXRhaWxzPic7XCIsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJyAgICB9IGNhdGNoIChlOiBhbnkpIHsnLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHRzID0gbGFzdENoZWNrZWQgPyBsYXN0Q2hlY2tlZC50b0lTT1N0cmluZygpIDogJ3Vua25vd24nO1wiLFxuICAgICAgICBcIiAgICAgIGJhbm5lciArPSAnPGgzPuKaoO+4jyBTdGFjayBoYXMgZHJpZnRlZDwvaDM+JztcIixcbiAgICAgICAgJyAgICAgIGJhbm5lciArPSBgPHA+TGFzdCBkcmlmdCBjaGVjazogPGVtPiR7dHN9PC9lbT48L3A+YDsnLFxuICAgICAgICBcIiAgICAgIGJhbm5lciArPSBgPHA+PGVtPkNvdWxkIG5vdCByZXRyaWV2ZSBkcmlmdCBkZXRhaWxzOiAke2U/Lm1lc3NhZ2UgPz8gJ3Vua25vd24gZXJyb3InfTwvZW0+PC9wPmA7XCIsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICBiYW5uZXIgKz0gJzwvYmxvY2txdW90ZT4nO1wiLFxuICAgICAgICAnICAgIHJldHVybiBiYW5uZXI7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgcmV0dXJuICcnO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gbWFpbigpIHsnLFxuICAgICAgICAnICBjb25zdCB7JyxcbiAgICAgICAgJyAgICBTVEFDS19OQU1FLCcsXG4gICAgICAgICcgICAgQ0hBTkdFX1NFVF9OQU1FLCcsXG4gICAgICAgICcgICAgQVdTX1JFR0lPTiwnLFxuICAgICAgICAnICAgIEdJVEhVQl9UT0tFTiwnLFxuICAgICAgICAnICAgIEdJVEhVQl9DT01NRU5UX1VSTCwnLFxuICAgICAgICAnICAgIEdJVEhVQl9TVEVQX1NVTU1BUlksJyxcbiAgICAgICAgJyAgICBJR05PUkVfTE9HSUNBTF9JRFMsJyxcbiAgICAgICAgJyAgICBJR05PUkVfUkVTT1VSQ0VfVFlQRVMsJyxcbiAgICAgICAgJyAgfSA9IHByb2Nlc3MuZW52OycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBpZiAoIVNUQUNLX05BTUUpIHsnLFxuICAgICAgICBcIiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NUQUNLX05BTUUgaXMgcmVxdWlyZWQnKTtcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGNvbnN0IHJlZ2lvbiA9IEFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQVdTX0RFRkFVTFRfUkVHSU9OOycsXG4gICAgICAgICcgIGlmICghcmVnaW9uKSB7JyxcbiAgICAgICAgXCIgICAgdGhyb3cgbmV3IEVycm9yKCdBV1NfUkVHSU9OIGlzIHJlcXVpcmVkJyk7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgY2hhbmdlU2V0TmFtZSA9IENIQU5HRV9TRVRfTkFNRSB8fCBTVEFDS19OQU1FOycsXG4gICAgICAgICcgIGNvbnN0IG1hcmtlciA9IGA8IS0tIGNkay1kaWZmOnN0YWNrOiR7U1RBQ0tfTkFNRX0gLS0+YDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgY2xpZW50ID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHsgcmVnaW9uIH0pOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBsZXQgc3RhdHVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgbGV0IHN0YXR1c1JlYXNvbjogc3RyaW5nIHwgdW5kZWZpbmVkOycsXG4gICAgICAgICcgIGxldCBjaGFuZ2VzOiBhbnlbXSA9IFtdOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICB0cnkgeycsXG4gICAgICAgICcgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0VGVybWluYWxDaGFuZ2VTZXQoY2xpZW50LCBTVEFDS19OQU1FLCBjaGFuZ2VTZXROYW1lKTsnLFxuICAgICAgICAnICAgIHN0YXR1cyA9IHJlc3VsdC5zdGF0dXM7JyxcbiAgICAgICAgJyAgICBzdGF0dXNSZWFzb24gPSByZXN1bHQuc3RhdHVzUmVhc29uOycsXG4gICAgICAgICcgICAgY2hhbmdlcyA9IHJlc3VsdC5jaGFuZ2VzID8/IFtdOycsXG4gICAgICAgICcgIH0gY2F0Y2ggKGVycjogYW55KSB7JyxcbiAgICAgICAgJyAgICAvLyBJZiBEZXNjcmliZUNoYW5nZVNldCBmYWlscyBlbnRpcmVseSwgc3VyZmFjZSB0aGUgZXJyb3InLFxuICAgICAgICBcIiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZXNjcmliaW5nIGNoYW5nZSBzZXQ6JywgZXJyPy5tZXNzYWdlIHx8IGVycik7XCIsXG4gICAgICAgICcgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7JyxcbiAgICAgICAgJyAgICByZXR1cm47JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgLy8gQXBwbHkgaWdub3JlcyBmcm9tIGVudiB2YXJzIChJRHMgYW5kIHR5cGVzKS4gRGVmYXVsdCBpZ25vcmUgSURzIGluY2x1ZGUgJ0NES01ldGFkYXRhJy5cIixcbiAgICAgICAgJyAgY29uc3QgaWdub3JlSWRTZXQgPSBuZXcgU2V0KCcsXG4gICAgICAgIFwiICAgIChJR05PUkVfTE9HSUNBTF9JRFMgPz8gJ0NES01ldGFkYXRhJylcIixcbiAgICAgICAgXCIgICAgICAuc3BsaXQoJywnKVwiLFxuICAgICAgICAnICAgICAgLm1hcChzID0+IHMudHJpbSgpKScsXG4gICAgICAgICcgICAgICAuZmlsdGVyKEJvb2xlYW4pLCcsXG4gICAgICAgICcgICk7JyxcbiAgICAgICAgJyAgY29uc3QgaWdub3JlVHlwZVNldCA9IG5ldyBTZXQoJyxcbiAgICAgICAgXCIgICAgKElHTk9SRV9SRVNPVVJDRV9UWVBFUyA/PyAnJylcIixcbiAgICAgICAgXCIgICAgICAuc3BsaXQoJywnKVwiLFxuICAgICAgICAnICAgICAgLm1hcChzID0+IHMudHJpbSgpKScsXG4gICAgICAgICcgICAgICAuZmlsdGVyKEJvb2xlYW4pLCcsXG4gICAgICAgICcgICk7JyxcbiAgICAgICAgJyAgY29uc3QgZmlsdGVyZWRDaGFuZ2VzID0gY2hhbmdlcy5maWx0ZXIoYyA9PiAhc2hvdWxkSWdub3JlQ2hhbmdlKGMsIGlnbm9yZUlkU2V0LCBpZ25vcmVUeXBlU2V0KSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIEJ1aWxkIEhUTUwgZXhhY3RseSBsaWtlIHByZXR0eV9mb3JtYXQucHkgbG9naWMgKHRhYmxlIHdoZW4gdGhlcmUgYXJlIGNoYW5nZXM7IFwibm8gY2hhbmdlLlwiIG90aGVyd2lzZSkuJyxcbiAgICAgICAgJyAgY29uc3QgaHRtbCA9IGJ1aWxkSHRtbChTVEFDS19OQU1FLCBmaWx0ZXJlZENoYW5nZXMpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvLyBDaGVjayBjYWNoZWQgZHJpZnQgc3RhdHVzIChub24tZmF0YWwpJyxcbiAgICAgICAgXCIgIGxldCBkcmlmdEJhbm5lciA9ICcnO1wiLFxuICAgICAgICAnICB0cnkgeycsXG4gICAgICAgICcgICAgZHJpZnRCYW5uZXIgPSBhd2FpdCBnZXREcmlmdEJhbm5lckh0bWwoY2xpZW50LCBTVEFDS19OQU1FKTsnLFxuICAgICAgICAnICB9IGNhdGNoIChlOiBhbnkpIHsnLFxuICAgICAgICBcIiAgICBjb25zb2xlLmVycm9yKCdEcmlmdCBjaGVjayBmYWlsZWQ6JywgZT8ubWVzc2FnZSB8fCBlKTtcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGNvbnN0IGZ1bGxIdG1sID0gZHJpZnRCYW5uZXIgKyBodG1sOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvLyBQcmludCB0byBzdGRvdXQnLFxuICAgICAgICAnICBjb25zb2xlLmxvZyhmdWxsSHRtbCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIE9wdGlvbmFsbHkgYXBwZW5kIHRvIEdpdEh1YiBTdGVwIFN1bW1hcnknLFxuICAgICAgICAnICBpZiAoR0lUSFVCX1NURVBfU1VNTUFSWSkgeycsXG4gICAgICAgICcgICAgdHJ5IHsnLFxuICAgICAgICAnICAgICAgYXdhaXQgYXBwZW5kU3RlcFN1bW1hcnkoR0lUSFVCX1NURVBfU1VNTUFSWSwgZnVsbEh0bWwpOycsXG4gICAgICAgICcgICAgICBjb25zb2xlLmVycm9yKGBBcHBlbmRlZCBIVE1MIHRvIEdJVEhVQl9TVEVQX1NVTU1BUlk6ICR7R0lUSFVCX1NURVBfU1VNTUFSWX1gKTsnLFxuICAgICAgICAnICAgIH0gY2F0Y2ggKGU6IGFueSkgeycsXG4gICAgICAgIFwiICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGFwcGVuZCB0byBHSVRIVUJfU1RFUF9TVU1NQVJZOicsIGU/Lm1lc3NhZ2UgfHwgZSk7XCIsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gVXBzZXJ0IFBSIGNvbW1lbnQgKGZpbmQgZXhpc3RpbmcgYnkgbWFya2VyLCB1cGRhdGUgb3IgY3JlYXRlKScsXG4gICAgICAgICcgIGlmIChHSVRIVUJfVE9LRU4gJiYgR0lUSFVCX0NPTU1FTlRfVVJMKSB7JyxcbiAgICAgICAgJyAgICB0cnkgeycsXG4gICAgICAgICcgICAgICBhd2FpdCB1cHNlcnRHaXRodWJDb21tZW50KEdJVEhVQl9DT01NRU5UX1VSTCwgR0lUSFVCX1RPS0VOLCBmdWxsSHRtbCwgbWFya2VyKTsnLFxuICAgICAgICBcIiAgICAgIGNvbnNvbGUuZXJyb3IoJ1Vwc2VydGVkIEdpdEh1YiBQUiBjb21tZW50LicpO1wiLFxuICAgICAgICAnICAgIH0gY2F0Y2ggKGU6IGFueSkgeycsXG4gICAgICAgIFwiICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHVwc2VydCBHaXRIdWIgUFIgY29tbWVudDonLCBlPy5tZXNzYWdlIHx8IGUpO1wiLFxuICAgICAgICAnICAgICAgLy8gRG8gbm90IGZhaWwgdGhlIHdob2xlIHNjcmlwdCBqdXN0IGZvciBjb21tZW50IHBvc3RpbmcnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAvLyBOb3RlOiBXaGVuIHN0YXR1cyBpcyBGQUlMRUQgZHVlIHRvIFxcXCJkaWRuJ3QgY29udGFpbiBjaGFuZ2VzXFxcIiwgdGhlIEhUTUwgbmF0dXJhbGx5IHNheXMgXFxcIm5vIGNoYW5nZS5cXFwiXCIsXG4gICAgICAgIFwiICBpZiAoc3RhdHVzID09PSAnRkFJTEVEJyAmJiBzdGF0dXNSZWFzb24pIHtcIixcbiAgICAgICAgJyAgICBjb25zb2xlLmVycm9yKGBDaGFuZ2Ugc2V0IHN0YXR1czogRkFJTEVELiBSZWFzb246ICR7c3RhdHVzUmVhc29ufWApOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnbWFpbigpLmNhdGNoKChlcnIpID0+IHsnLFxuICAgICAgICAnICBjb25zb2xlLmVycm9yKGVycik7JyxcbiAgICAgICAgJyAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7JyxcbiAgICAgICAgJ30pOycsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNoYW5nZXNldC1zY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2Nkay1jaGFuZ2VzZXQtc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQVFsQyxNQUFhLGtCQUFrQjtJQUM3QixZQUFZLEtBQThCO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksb0NBQW9DLENBQUM7UUFFNUUsSUFBSSxpQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQ3RDLEtBQUssRUFBRTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLDZKQUE2SjtnQkFDN0osRUFBRTtnQkFDRixLQUFLO2dCQUNMLHdCQUF3QjtnQkFDeEIsS0FBSztnQkFDTCwwRUFBMEU7Z0JBQzFFLEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCw2Q0FBNkM7Z0JBQzdDLGlFQUFpRTtnQkFDakUsS0FBSztnQkFDTCxnREFBZ0Q7Z0JBQ2hELDJEQUEyRDtnQkFDM0QsOENBQThDO2dCQUM5QyxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQixNQUFNO2dCQUNOLDBEQUEwRDtnQkFDMUQsc0NBQXNDO2dCQUN0QyxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsS0FBSztnQkFDTCxvQ0FBb0M7Z0JBQ3BDLEtBQUs7Z0JBQ0wsNENBQTRDO2dCQUM1QyxrRkFBa0Y7Z0JBQ2xGLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixLQUFLO2dCQUNMLGtDQUFrQztnQkFDbEMsS0FBSztnQkFDTCxzSUFBc0k7Z0JBQ3RJLDRGQUE0RjtnQkFDNUYsSUFBSTtnQkFDSixvRUFBb0U7Z0JBQ3BFLDBDQUEwQztnQkFDMUMsd0NBQXdDO2dCQUN4QyxvREFBb0Q7Z0JBQ3BELElBQUk7Z0JBQ0osMEJBQTBCO2dCQUMxQixvQkFBb0I7Z0JBQ3BCLG9PQUFvTztnQkFDcE8sT0FBTztnQkFDUCwySUFBMkk7Z0JB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QUFLO2dCQUNMLEVBQUU7Z0JBQ0Ysb0VBQW9FO2dCQUNwRSw2Q0FBNkM7Z0JBQzdDLFdBQVc7Z0JBQ1gsc0ZBQXNGO2dCQUN0RixxREFBcUQ7Z0JBQ3JELHdCQUF3QjtnQkFDeEIsOEVBQThFO2dCQUM5RSxnRUFBZ0U7Z0JBQ2hFLE9BQU87Z0JBQ1AsS0FBSztnQkFDTCxFQUFFO2dCQUNGLDRHQUE0RztnQkFDNUcsOENBQThDO2dCQUM5QywwRUFBMEU7Z0JBQzFFLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxFQUFFO2dCQUNGLHlCQUF5QjtnQkFDekIsdUJBQXVCO2dCQUN2Qix5QkFBeUI7Z0JBQ3pCLEtBQUs7YUFDTjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRhRCxnREFzYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuXG5pbnRlcmZhY2UgQ2RrQ2hhbmdlc2V0U2NyaXB0UHJvcHMge1xuICBwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwO1xuICBvdXRwdXRQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2RrQ2hhbmdlc2V0U2NyaXB0IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IENka0NoYW5nZXNldFNjcmlwdFByb3BzKSB7XG4gICAgY29uc3Qgb3V0cHV0UGF0aCA9IHByb3BzLm91dHB1dFBhdGggPz8gJ3Byb2plbnJjL2Rlc2NyaWJlLWNmbi1jaGFuZ2VzZXQudHMnO1xuXG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHtcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgIFwiaW1wb3J0IHsgYXBwZW5kRmlsZSB9IGZyb20gJ2ZzL3Byb21pc2VzJztcIixcbiAgICAgICAgXCJpbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kLCBEZXNjcmliZVN0YWNrc0NvbW1hbmQsIERlc2NyaWJlU3RhY2tSZXNvdXJjZURyaWZ0c0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBTbWFsbCBzbGVlcCBoZWxwZXIuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdjb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocmVzKSA9PiBzZXRUaW1lb3V0KHJlcywgbXMpKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBCdWlsZCB0aGUgSFRNTCBjb2xvciBjaGlwIGZvciBhbiBhY3Rpb24uJyxcbiAgICAgICAgJyAqIE1vZGlmeT1ibHVlLCBBZGQ9Z3JlZW4sIFJlbW92ZT1yZWQgKG1hdGNoIHByZXR0eV9mb3JtYXQucHkpLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gYWN0aW9uQ2hpcChhY3Rpb24/OiBzdHJpbmcpOiBzdHJpbmcgeycsXG4gICAgICAgICcgIC8vIFVzZSBlbW9qaSBpbnN0ZWFkIG9mIGV4dGVybmFsIGltYWdlcyBmb3IgcmVsaWFiaWxpdHknLFxuICAgICAgICAnICBjb25zdCBlbW9qaU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsnLFxuICAgICAgICBcIiAgICBNb2RpZnk6ICfwn5S1JyxcIixcbiAgICAgICAgXCIgICAgQWRkOiAn8J+foicsXCIsXG4gICAgICAgIFwiICAgIFJlbW92ZTogJ/CflLQnLFwiLFxuICAgICAgICAnICB9OycsXG4gICAgICAgIFwiICBjb25zdCBtYXJrID0gYWN0aW9uID8gKGVtb2ppTWFwW2FjdGlvbl0gPz8gJ+KaqicpIDogJ+Kaqic7XCIsXG4gICAgICAgIFwiICByZXR1cm4gYCR7bWFya30gJHthY3Rpb24gPz8gJy0nfWA7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogRXNjYXBlIEhUTUwgc3BlY2lhbCBjaGFyYWN0ZXJzLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gZXNjYXBlSHRtbChzdHI6IHN0cmluZyk6IHN0cmluZyB7JyxcbiAgICAgICAgXCIgIHJldHVybiBzdHIucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEZvcm1hdCBhIGJlZm9yZeKGkmFmdGVyIGNoYW5nZS4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGZvcm1hdENoYW5nZShuYW1lOiBzdHJpbmcsIGNoYW5nZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgYmVmb3JlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGFmdGVyOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgeycsXG4gICAgICAgIFwiICBjb25zdCBjaGFuZ2VFbW9qaSA9IGNoYW5nZVR5cGUgPT09ICdBZGQnID8gJ/Cfn6InIDogY2hhbmdlVHlwZSA9PT0gJ1JlbW92ZScgPyAn8J+UtCcgOiAn8J+UtSc7XCIsXG4gICAgICAgICcgICcsXG4gICAgICAgICcgIC8vIElmIGJvdGggdmFsdWVzIGV4aXN0IGFuZCBhcmUgbGFyZ2UsIHVzZSBhIG1vcmUgY29tcGFjdCBmb3JtYXQnLFxuICAgICAgICAnICBjb25zdCBiZWZvcmVMZW4gPSBiZWZvcmU/Lmxlbmd0aCA/PyAwOycsXG4gICAgICAgICcgIGNvbnN0IGFmdGVyTGVuID0gYWZ0ZXI/Lmxlbmd0aCA/PyAwOycsXG4gICAgICAgICcgIGNvbnN0IGlzTGFyZ2UgPSBiZWZvcmVMZW4gPiA4MCB8fCBhZnRlckxlbiA+IDgwOycsXG4gICAgICAgICcgICcsXG4gICAgICAgICcgIGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHsnLFxuICAgICAgICAnICAgIGlmIChpc0xhcmdlKSB7JyxcbiAgICAgICAgJyAgICAgIHJldHVybiBgPGRldGFpbHM+PHN1bW1hcnk+JHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+IChtb2RpZmllZCk8L3N1bW1hcnk+PHN0cm9uZz5CZWZvcmU6PC9zdHJvbmc+PHByZT4ke2VzY2FwZUh0bWwoYmVmb3JlKX08L3ByZT48c3Ryb25nPkFmdGVyOjwvc3Ryb25nPjxwcmU+JHtlc2NhcGVIdG1sKGFmdGVyKX08L3ByZT48L2RldGFpbHM+YDsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICAgIHJldHVybiBgJHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+OiA8Y29kZT4ke2VzY2FwZUh0bWwoYmVmb3JlKX08L2NvZGU+IOKGkiA8Y29kZT4ke2VzY2FwZUh0bWwoYWZ0ZXIpfTwvY29kZT5gOycsXG4gICAgICAgICcgIH0gZWxzZSBpZiAoYWZ0ZXIpIHsnLFxuICAgICAgICAnICAgIGlmIChpc0xhcmdlKSB7JyxcbiAgICAgICAgJyAgICAgIHJldHVybiBgPGRldGFpbHM+PHN1bW1hcnk+JHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+IChhZGRlZCk8L3N1bW1hcnk+PHByZT4ke2VzY2FwZUh0bWwoYWZ0ZXIpfTwvcHJlPjwvZGV0YWlscz5gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICAgcmV0dXJuIGAke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz46IDxjb2RlPiR7ZXNjYXBlSHRtbChhZnRlcil9PC9jb2RlPmA7JyxcbiAgICAgICAgJyAgfSBlbHNlIGlmIChiZWZvcmUpIHsnLFxuICAgICAgICAnICAgIGlmIChpc0xhcmdlKSB7JyxcbiAgICAgICAgJyAgICAgIHJldHVybiBgPGRldGFpbHM+PHN1bW1hcnk+JHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+IChyZW1vdmVkKTwvc3VtbWFyeT48cHJlPiR7ZXNjYXBlSHRtbChiZWZvcmUpfTwvcHJlPjwvZGV0YWlscz5gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICAgcmV0dXJuIGAke2NoYW5nZUVtb2ppfSA8c3Ryb25nPiR7ZXNjYXBlSHRtbChuYW1lKX08L3N0cm9uZz46IDxzPjxjb2RlPiR7ZXNjYXBlSHRtbChiZWZvcmUpfTwvY29kZT48L3M+YDsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgLy8gRmFsbGJhY2s6IG5vIHZhbHVlcyBhdmFpbGFibGUgKEFQSSBkaWQgbm90IHJldHVybiB0aGVtKScsXG4gICAgICAgICcgIHJldHVybiBgJHtjaGFuZ2VFbW9qaX0gPHN0cm9uZz4ke2VzY2FwZUh0bWwobmFtZSl9PC9zdHJvbmc+YDsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIEV4dHJhY3QgY2hhbmdlZCBwcm9wZXJ0aWVzL3RhZ3MvYXR0cmlidXRlcyB3aXRoIGJlZm9yZS9hZnRlciB2YWx1ZXMuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBjaGFuZ2VkUHJvcGVydGllc0hUTUwoY2hhbmdlOiBhbnkpOiBzdHJpbmcgeycsXG4gICAgICAgICcgIGNvbnN0IGRldGFpbHMgPSBjaGFuZ2U/LlJlc291cmNlQ2hhbmdlPy5EZXRhaWxzID8/IFtdOycsXG4gICAgICAgICcgIGNvbnN0IHByb3BzOiBzdHJpbmdbXSA9IFtdOycsXG4gICAgICAgICcgIGZvciAoY29uc3QgZCBvZiBkZXRhaWxzKSB7JyxcbiAgICAgICAgJyAgICBjb25zdCBhdHRyID0gZD8uVGFyZ2V0Py5BdHRyaWJ1dGU7JyxcbiAgICAgICAgJyAgICAvLyBVc2UgcHJvcGVydHkgbmFtZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgYXR0cmlidXRlIHR5cGUnLFxuICAgICAgICBcIiAgICBjb25zdCBuYW1lID0gZD8uVGFyZ2V0Py5OYW1lID8/IGF0dHIgPz8gJ3Vua25vd24nO1wiLFxuICAgICAgICAnICAgIGNvbnN0IGNoYW5nZVR5cGUgPSBkPy5UYXJnZXQ/LkF0dHJpYnV0ZUNoYW5nZVR5cGU7JyxcbiAgICAgICAgJyAgICBjb25zdCBiZWZvcmUgPSBkPy5UYXJnZXQ/LkJlZm9yZVZhbHVlOycsXG4gICAgICAgICcgICAgY29uc3QgYWZ0ZXIgPSBkPy5UYXJnZXQ/LkFmdGVyVmFsdWU7JyxcbiAgICAgICAgJyAgICBwcm9wcy5wdXNoKGZvcm1hdENoYW5nZShuYW1lLCBjaGFuZ2VUeXBlLCBiZWZvcmUsIGFmdGVyKSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgIFwiICByZXR1cm4gcHJvcHMuam9pbignPGJyPicpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIERldGVybWluZSBpZiBhIGNoYW5nZSBzaG91bGQgYmUgaWdub3JlZCBiYXNlZCBvbiBsb2dpY2FsIElEcyBhbmQvb3IgcmVzb3VyY2UgdHlwZXMuJyxcbiAgICAgICAgXCIgKiAtIElHTk9SRV9MT0dJQ0FMX0lEUzogY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbG9naWNhbCBJRHMgdG8gaWdub3JlIChkZWZhdWx0IGluY2x1ZGVzICdDREtNZXRhZGF0YScpXCIsXG4gICAgICAgIFwiICogLSBJR05PUkVfUkVTT1VSQ0VfVFlQRVM6IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHJlc291cmNlIHR5cGVzIHRvIGlnbm9yZSAoZS5nLiwgJ0FXUzo6Q0RLOjpNZXRhZGF0YScpXCIsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnZnVuY3Rpb24gc2hvdWxkSWdub3JlQ2hhbmdlKGNoYW5nZTogYW55LCBpZ25vcmVJZHM6IFNldDxzdHJpbmc+LCBpZ25vcmVUeXBlczogU2V0PHN0cmluZz4pOiBib29sZWFuIHsnLFxuICAgICAgICAnICBjb25zdCByYyA9IGNoYW5nZT8uUmVzb3VyY2VDaGFuZ2UgPz8ge307JyxcbiAgICAgICAgJyAgY29uc3QgbG9naWNhbElkID0gcmM/LkxvZ2ljYWxSZXNvdXJjZUlkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDsnLFxuICAgICAgICAnICBjb25zdCByZXNvdXJjZVR5cGUgPSByYz8uUmVzb3VyY2VUeXBlIGFzIHN0cmluZyB8IHVuZGVmaW5lZDsnLFxuICAgICAgICAnICBpZiAobG9naWNhbElkICYmIGlnbm9yZUlkcy5oYXMobG9naWNhbElkKSkgcmV0dXJuIHRydWU7JyxcbiAgICAgICAgJyAgaWYgKHJlc291cmNlVHlwZSAmJiBpZ25vcmVUeXBlcy5oYXMocmVzb3VyY2VUeXBlKSkgcmV0dXJuIHRydWU7JyxcbiAgICAgICAgJyAgcmV0dXJuIGZhbHNlOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogR2VuZXJhdGUgdGhlIEhUTUwgYm9keSBzaW1pbGFyIHRvIHByZXR0eV9mb3JtYXQucHknLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2Z1bmN0aW9uIGJ1aWxkSHRtbChzdGFja05hbWU6IHN0cmluZywgY2hhbmdlczogYW55W10pOiBzdHJpbmcgeycsXG4gICAgICAgICcgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7JyxcbiAgICAgICAgXCIgIGNvbnN0IHRpbWVzdGFtcCA9IG5vdy50b0lTT1N0cmluZygpLnNsaWNlKDAsIDE2KS5yZXBsYWNlKCdUJywgJyAnKSArICcgVVRDJztcIixcbiAgICAgICAgJyAgbGV0IGJvZHkgPSBgPGgxPkNoYW5nZSBzZXQgPHN1Yj4ke3RpbWVzdGFtcH08L3N1Yj48L2gxPjxoMj5TdGFjayBOYW1lOiAke3N0YWNrTmFtZX08L2gyPjxicj5gOycsXG4gICAgICAgICcgIGlmICgoY2hhbmdlcz8ubGVuZ3RoID8/IDApID4gMCkgeycsXG4gICAgICAgIFwiICAgIGJvZHkgKz0gJzx0YWJsZT48dHI+PHRoPkFjdGlvbiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvdGg+PHRoPklEPC90aD48dGg+VHlwZTwvdGg+PHRoPlJlcGxhY2VtZW50PC90aD48dGg+RGV0YWlsczwvdGg+PC90cj4nO1wiLFxuICAgICAgICAnICAgIGZvciAoY29uc3QgYyBvZiBjaGFuZ2VzKSB7JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IHJjID0gYz8uUmVzb3VyY2VDaGFuZ2UgPz8ge307JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGFjdGlvbiA9IGFjdGlvbkNoaXAocmM/LkFjdGlvbik7JyxcbiAgICAgICAgXCIgICAgICBjb25zdCBsb2dpY2FsSWQgPSByYz8uTG9naWNhbFJlc291cmNlSWQgPz8gJy0nO1wiLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHR5cGUgPSByYz8uUmVzb3VyY2VUeXBlID8/ICctJztcIixcbiAgICAgICAgXCIgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHJjPy5SZXBsYWNlbWVudCA/PyAnLSc7XCIsXG4gICAgICAgICcgICAgICBjb25zdCBkZXRhaWxzID0gY2hhbmdlZFByb3BlcnRpZXNIVE1MKGMpOycsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICAgIGJvZHkgKz0gJzx0cj4nO1wiLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7YWN0aW9ufTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7bG9naWNhbElkfTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7dHlwZX08L3RkPmA7JyxcbiAgICAgICAgJyAgICAgIGJvZHkgKz0gYDx0ZD4ke3JlcGxhY2VtZW50fTwvdGQ+YDsnLFxuICAgICAgICAnICAgICAgYm9keSArPSBgPHRkPiR7ZGV0YWlsc308L3RkPmA7JyxcbiAgICAgICAgXCIgICAgICBib2R5ICs9ICc8L3RyPic7XCIsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgIFwiICAgIGJvZHkgKz0gJzwvdGFibGU+JztcIixcbiAgICAgICAgJyAgfSBlbHNlIHsnLFxuICAgICAgICBcIiAgICBib2R5ICs9ICdubyBjaGFuZ2UuJztcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIHJldHVybiBib2R5OycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUG9sbCBEZXNjcmliZUNoYW5nZVNldCB1bnRpbCBhIHRlcm1pbmFsIHN0YXR1cywgdGhlbiBwYWdpbmF0ZSB0byByZXRyaWV2ZSBhbGwgQ2hhbmdlcy4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGdldFRlcm1pbmFsQ2hhbmdlU2V0KCcsXG4gICAgICAgICcgIGNsaWVudDogQ2xvdWRGb3JtYXRpb25DbGllbnQsJyxcbiAgICAgICAgJyAgc3RhY2tOYW1lOiBzdHJpbmcsJyxcbiAgICAgICAgJyAgY2hhbmdlU2V0TmFtZTogc3RyaW5nLCcsXG4gICAgICAgICcgIG1heEF0dGVtcHRzID0gNjAsJyxcbiAgICAgICAgJyAgZGVsYXlNcyA9IDMwMDAsJyxcbiAgICAgICAgJyk6IFByb21pc2U8eyBzdGF0dXM/OiBzdHJpbmc7IHN0YXR1c1JlYXNvbj86IHN0cmluZzsgY2hhbmdlczogYW55W10gfT4geycsXG4gICAgICAgICcgIGZvciAobGV0IGF0dGVtcHQgPSAxOyBhdHRlbXB0IDw9IG1heEF0dGVtcHRzOyBhdHRlbXB0KyspIHsnLFxuICAgICAgICAnICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kKHsnLFxuICAgICAgICAnICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsJyxcbiAgICAgICAgJyAgICAgIENoYW5nZVNldE5hbWU6IGNoYW5nZVNldE5hbWUsJyxcbiAgICAgICAgJyAgICAgIEluY2x1ZGVQcm9wZXJ0eVZhbHVlczogdHJ1ZSwnLFxuICAgICAgICAnICAgIH0pKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICBjb25zdCBzdGF0dXMgPSByZXNwLlN0YXR1czsnLFxuICAgICAgICAnICAgIGNvbnN0IHN0YXR1c1JlYXNvbiA9IHJlc3AuU3RhdHVzUmVhc29uOycsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICBpZiAoc3RhdHVzID09PSAnQ1JFQVRFX0NPTVBMRVRFJyB8fCBzdGF0dXMgPT09ICdGQUlMRUQnKSB7XCIsXG4gICAgICAgICcgICAgICAvLyBHYXRoZXIgYWxsIHBhZ2VzJyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGNoYW5nZXM6IGFueVtdID0gW107JyxcbiAgICAgICAgJyAgICAgIGlmIChyZXNwLkNoYW5nZXMpIGNoYW5nZXMucHVzaCguLi5yZXNwLkNoYW5nZXMpOycsXG4gICAgICAgICcgICAgICBsZXQgbmV4dCA9IHJlc3AuTmV4dFRva2VuOycsXG4gICAgICAgICcgICAgICB3aGlsZSAobmV4dCkgeycsXG4gICAgICAgICcgICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kKHsnLFxuICAgICAgICAnICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLCcsXG4gICAgICAgICcgICAgICAgICAgQ2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0TmFtZSwnLFxuICAgICAgICAnICAgICAgICAgIEluY2x1ZGVQcm9wZXJ0eVZhbHVlczogdHJ1ZSwnLFxuICAgICAgICAnICAgICAgICAgIE5leHRUb2tlbjogbmV4dCwnLFxuICAgICAgICAnICAgICAgICB9KSk7JyxcbiAgICAgICAgJyAgICAgICAgaWYgKHBhZ2UuQ2hhbmdlcykgY2hhbmdlcy5wdXNoKC4uLnBhZ2UuQ2hhbmdlcyk7JyxcbiAgICAgICAgJyAgICAgICAgbmV4dCA9IHBhZ2UuTmV4dFRva2VuOycsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJyAgICAgIHJldHVybiB7IHN0YXR1cywgc3RhdHVzUmVhc29uLCBjaGFuZ2VzIH07JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgLy8gTm90IHRlcm1pbmFsIHlldDsgd2FpdCBhbmQgcmV0cnknLFxuICAgICAgICAnICAgIGF3YWl0IHNsZWVwKGRlbGF5TXMpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgIHRocm93IG5ldyBFcnJvcignVGltZWQgb3V0IHdhaXRpbmcgZm9yIGNoYW5nZSBzZXQgdG8gcmVhY2ggYSB0ZXJtaW5hbCBzdGF0dXMuJyk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUGFyc2UgdGhlIExpbmsgaGVhZGVyIGZyb20gR2l0SHViIEFQSSByZXNwb25zZXMgZm9yIHBhZ2luYXRpb24uJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgICdmdW5jdGlvbiBwYXJzZUxpbmtIZWFkZXIoaGVhZGVyOiBzdHJpbmcgfCBudWxsKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7JyxcbiAgICAgICAgJyAgY29uc3QgbGlua3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTsnLFxuICAgICAgICAnICBpZiAoIWhlYWRlcikgcmV0dXJuIGxpbmtzOycsXG4gICAgICAgIFwiICBmb3IgKGNvbnN0IHBhcnQgb2YgaGVhZGVyLnNwbGl0KCcsJykpIHtcIixcbiAgICAgICAgJyAgICBjb25zdCBtYXRjaCA9IHBhcnQubWF0Y2goLzwoW14+XSspPjtcXFxccypyZWw9XCIoW15cIl0rKVwiLyk7JyxcbiAgICAgICAgJyAgICBpZiAobWF0Y2gpIGxpbmtzW21hdGNoWzJdXSA9IG1hdGNoWzFdOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICByZXR1cm4gbGlua3M7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJy8qKicsXG4gICAgICAgICcgKiBTZWFyY2ggZXhpc3RpbmcgUFIgY29tbWVudHMgZm9yIG9uZSBjb250YWluaW5nIHRoZSBnaXZlbiBtYXJrZXIuJyxcbiAgICAgICAgJyAqIFJldHVybnMgdGhlIGNvbW1lbnQgSUQgaWYgZm91bmQsIG51bGwgb3RoZXJ3aXNlLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gZmluZEV4aXN0aW5nQ29tbWVudChjb21tZW50c1VybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtYXJrZXI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4geycsXG4gICAgICAgICcgIGxldCB1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGAke2NvbW1lbnRzVXJsfT9wZXJfcGFnZT0xMDBgOycsXG4gICAgICAgICcgIHdoaWxlICh1cmwpIHsnLFxuICAgICAgICAnICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgeycsXG4gICAgICAgICcgICAgICBoZWFkZXJzOiB7JyxcbiAgICAgICAgXCIgICAgICAgICdBdXRob3JpemF0aW9uJzogYHRva2VuICR7dG9rZW59YCxcIixcbiAgICAgICAgXCIgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcIixcbiAgICAgICAgJyAgICAgIH0sJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICAgIGlmICghcmVzLm9rKSByZXR1cm4gbnVsbDsnLFxuICAgICAgICAnICAgIGNvbnN0IGNvbW1lbnRzOiBhbnlbXSA9IGF3YWl0IHJlcy5qc29uKCkgYXMgYW55W107JyxcbiAgICAgICAgJyAgICBmb3IgKGNvbnN0IGMgb2YgY29tbWVudHMpIHsnLFxuICAgICAgICBcIiAgICAgIGlmICh0eXBlb2YgYy5ib2R5ID09PSAnc3RyaW5nJyAmJiBjLmJvZHkuaW5jbHVkZXMobWFya2VyKSkge1wiLFxuICAgICAgICAnICAgICAgICByZXR1cm4gYy5pZDsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgIFwiICAgIGNvbnN0IGxpbmtzID0gcGFyc2VMaW5rSGVhZGVyKHJlcy5oZWFkZXJzLmdldCgnbGluaycpKTtcIixcbiAgICAgICAgJyAgICB1cmwgPSBsaW5rcy5uZXh0OycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICByZXR1cm4gbnVsbDsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIENyZWF0ZSBvciB1cGRhdGUgYSBQUiBjb21tZW50LiBVc2VzIGFuIEhUTUwgbWFya2VyIHRvIGZpbmQgZXhpc3RpbmcgY29tbWVudHMuJyxcbiAgICAgICAgJyAqIElmIGZvdW5kLCBQQVRDSGVzIHRoZSBleGlzdGluZyBjb21tZW50OyBvdGhlcndpc2UgUE9TVHMgYSBuZXcgb25lLicsXG4gICAgICAgICcgKi8nLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gdXBzZXJ0R2l0aHViQ29tbWVudChjb21tZW50c1VybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBib2R5OiBzdHJpbmcsIG1hcmtlcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7JyxcbiAgICAgICAgJyAgY29uc3QgbWFya2VkQm9keSA9IGAke21hcmtlcn1cXFxcbiR7Ym9keX1gOycsXG4gICAgICAgICcgIGNvbnN0IGV4aXN0aW5nSWQgPSBhd2FpdCBmaW5kRXhpc3RpbmdDb21tZW50KGNvbW1lbnRzVXJsLCB0b2tlbiwgbWFya2VyKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgbGV0IHJlczogUmVzcG9uc2U7JyxcbiAgICAgICAgJyAgaWYgKGV4aXN0aW5nSWQpIHsnLFxuICAgICAgICBcIiAgICBjb25zdCBiYXNlVXJsID0gY29tbWVudHNVcmwuc3Vic3RyaW5nKDAsIGNvbW1lbnRzVXJsLmluZGV4T2YoJy9pc3N1ZXMvJykpO1wiLFxuICAgICAgICAnICAgIGNvbnN0IHBhdGNoVXJsID0gYCR7YmFzZVVybH0vaXNzdWVzL2NvbW1lbnRzLyR7ZXhpc3RpbmdJZH1gOycsXG4gICAgICAgICcgICAgcmVzID0gYXdhaXQgZmV0Y2gocGF0Y2hVcmwsIHsnLFxuICAgICAgICBcIiAgICAgIG1ldGhvZDogJ1BBVENIJyxcIixcbiAgICAgICAgJyAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICBcIiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgdG9rZW4gJHt0b2tlbn1gLFwiLFxuICAgICAgICBcIiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcIixcbiAgICAgICAgXCIgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vdm5kLmdpdGh1Yitqc29uJyxcIixcbiAgICAgICAgJyAgICAgIH0sJyxcbiAgICAgICAgJyAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYm9keTogbWFya2VkQm9keSB9KSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0gZWxzZSB7JyxcbiAgICAgICAgJyAgICByZXMgPSBhd2FpdCBmZXRjaChjb21tZW50c1VybCwgeycsXG4gICAgICAgIFwiICAgICAgbWV0aG9kOiAnUE9TVCcsXCIsXG4gICAgICAgICcgICAgICBoZWFkZXJzOiB7JyxcbiAgICAgICAgXCIgICAgICAgICdBdXRob3JpemF0aW9uJzogYHRva2VuICR7dG9rZW59YCxcIixcbiAgICAgICAgXCIgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXCIsXG4gICAgICAgIFwiICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvbicsXCIsXG4gICAgICAgICcgICAgICB9LCcsXG4gICAgICAgICcgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGJvZHk6IG1hcmtlZEJvZHkgfSksJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGlmICghcmVzLm9rKSB7JyxcbiAgICAgICAgXCIgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCkuY2F0Y2goKCkgPT4gJycpO1wiLFxuICAgICAgICBcIiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byAke2V4aXN0aW5nSWQgPyAndXBkYXRlJyA6ICdwb3N0J30gR2l0SHViIGNvbW1lbnQ6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH0gJHt0ZXh0fWApO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGFwcGVuZFN0ZXBTdW1tYXJ5KHN1bW1hcnlQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4geycsXG4gICAgICAgIFwiICBhd2FpdCBhcHBlbmRGaWxlKHN1bW1hcnlQYXRoLCBgJHtjb250ZW50fVxcXFxuYCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnLyoqJyxcbiAgICAgICAgJyAqIENoZWNrIGNhY2hlZCBkcmlmdCBzdGF0dXMgZm9yIHRoZSBzdGFjayBhbmQgcmV0dXJuIGFuIEhUTUwgYmFubmVyLicsXG4gICAgICAgICcgKiBOb24tZmF0YWw6IHJldHVybnMgZW1wdHkgc3RyaW5nIG9uIGFueSBlcnJvci4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgJ2FzeW5jIGZ1bmN0aW9uIGdldERyaWZ0QmFubmVySHRtbChjbGllbnQ6IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBzdGFja05hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7JyxcbiAgICAgICAgJyAgY29uc3Qgc3RhY2tSZXNwID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogc3RhY2tOYW1lIH0pKTsnLFxuICAgICAgICAnICBjb25zdCBzdGFjayA9IHN0YWNrUmVzcC5TdGFja3M/LlswXTsnLFxuICAgICAgICBcIiAgaWYgKCFzdGFjaykgcmV0dXJuICcnO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgZHJpZnRJbmZvID0gc3RhY2suRHJpZnRJbmZvcm1hdGlvbjsnLFxuICAgICAgICAnICBjb25zdCBkcmlmdFN0YXR1cyA9IGRyaWZ0SW5mbz8uU3RhY2tEcmlmdFN0YXR1czsnLFxuICAgICAgICAnICBjb25zdCBsYXN0Q2hlY2tlZCA9IGRyaWZ0SW5mbz8uTGFzdENoZWNrVGltZXN0YW1wOycsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgaWYgKGRyaWZ0U3RhdHVzID09PSAnSU5fU1lOQycpIHJldHVybiAnJztcIixcbiAgICAgICAgJycsXG4gICAgICAgIFwiICBpZiAoZHJpZnRTdGF0dXMgPT09ICdOT1RfQ0hFQ0tFRCcpIHtcIixcbiAgICAgICAgXCIgICAgcmV0dXJuICc8YmxvY2txdW90ZT48cD7ihLnvuI8gRHJpZnQgZGV0ZWN0aW9uIGhhcyBub3QgYmVlbiBydW4gZm9yIHRoaXMgc3RhY2suPC9wPjwvYmxvY2txdW90ZT4nO1wiLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICBpZiAoZHJpZnRTdGF0dXMgPT09ICdEUklGVEVEJykge1wiLFxuICAgICAgICBcIiAgICBsZXQgYmFubmVyID0gJzxibG9ja3F1b3RlPic7XCIsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRyeSB7JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGRyaWZ0c1Jlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja1Jlc291cmNlRHJpZnRzQ29tbWFuZCh7JyxcbiAgICAgICAgJyAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsJyxcbiAgICAgICAgXCIgICAgICAgIFN0YWNrUmVzb3VyY2VEcmlmdFN0YXR1c0ZpbHRlcnM6IFsnTU9ESUZJRUQnLCAnREVMRVRFRCddLFwiLFxuICAgICAgICAnICAgICAgfSkpOycsXG4gICAgICAgICcgICAgICBjb25zdCBkcmlmdHMgPSBkcmlmdHNSZXNwLlN0YWNrUmVzb3VyY2VEcmlmdHMgPz8gW107JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IGNvdW50ID0gZHJpZnRzLmxlbmd0aDsnLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHRzID0gbGFzdENoZWNrZWQgPyBsYXN0Q2hlY2tlZC50b0lTT1N0cmluZygpIDogJ3Vua25vd24nO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgXCIgICAgICBiYW5uZXIgKz0gYDxoMz7imqDvuI8gU3RhY2sgaGFzIGRyaWZ0ZWQgKCR7Y291bnR9IHJlc291cmNlJHtjb3VudCAhPT0gMSA/ICdzJyA6ICcnfSBvdXQgb2Ygc3luYyk8L2gzPmA7XCIsXG4gICAgICAgICcgICAgICBiYW5uZXIgKz0gYDxwPkxhc3QgZHJpZnQgY2hlY2s6IDxlbT4ke3RzfTwvZW0+PC9wPmA7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgICBpZiAoY291bnQgPiAwKSB7JyxcbiAgICAgICAgXCIgICAgICAgIGJhbm5lciArPSAnPGRldGFpbHM+PHN1bW1hcnk+VmlldyBkcmlmdGVkIHJlc291cmNlczwvc3VtbWFyeT4nO1wiLFxuICAgICAgICBcIiAgICAgICAgYmFubmVyICs9ICc8dGFibGU+PHRyPjx0aD5SZXNvdXJjZTwvdGg+PHRoPlR5cGU8L3RoPjx0aD5EcmlmdCBTdGF0dXM8L3RoPjwvdHI+JztcIixcbiAgICAgICAgJyAgICAgICAgZm9yIChjb25zdCBkIG9mIGRyaWZ0cykgeycsXG4gICAgICAgIFwiICAgICAgICAgIGNvbnN0IGxvZ2ljYWxJZCA9IGQuTG9naWNhbFJlc291cmNlSWQgPz8gJy0nO1wiLFxuICAgICAgICBcIiAgICAgICAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBkLlJlc291cmNlVHlwZSA/PyAnLSc7XCIsXG4gICAgICAgIFwiICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGQuU3RhY2tSZXNvdXJjZURyaWZ0U3RhdHVzID8/ICctJztcIixcbiAgICAgICAgJyAgICAgICAgICBiYW5uZXIgKz0gYDx0cj48dGQ+JHtsb2dpY2FsSWR9PC90ZD48dGQ+JHtyZXNvdXJjZVR5cGV9PC90ZD48dGQ+JHtzdGF0dXN9PC90ZD48L3RyPmA7JyxcbiAgICAgICAgJyAgICAgICAgfScsXG4gICAgICAgIFwiICAgICAgICBiYW5uZXIgKz0gJzwvdGFibGU+PC9kZXRhaWxzPic7XCIsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJyAgICB9IGNhdGNoIChlOiBhbnkpIHsnLFxuICAgICAgICBcIiAgICAgIGNvbnN0IHRzID0gbGFzdENoZWNrZWQgPyBsYXN0Q2hlY2tlZC50b0lTT1N0cmluZygpIDogJ3Vua25vd24nO1wiLFxuICAgICAgICBcIiAgICAgIGJhbm5lciArPSAnPGgzPuKaoO+4jyBTdGFjayBoYXMgZHJpZnRlZDwvaDM+JztcIixcbiAgICAgICAgJyAgICAgIGJhbm5lciArPSBgPHA+TGFzdCBkcmlmdCBjaGVjazogPGVtPiR7dHN9PC9lbT48L3A+YDsnLFxuICAgICAgICBcIiAgICAgIGJhbm5lciArPSBgPHA+PGVtPkNvdWxkIG5vdCByZXRyaWV2ZSBkcmlmdCBkZXRhaWxzOiAke2U/Lm1lc3NhZ2UgPz8gJ3Vua25vd24gZXJyb3InfTwvZW0+PC9wPmA7XCIsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgICBiYW5uZXIgKz0gJzwvYmxvY2txdW90ZT4nO1wiLFxuICAgICAgICAnICAgIHJldHVybiBiYW5uZXI7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgcmV0dXJuICcnO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnYXN5bmMgZnVuY3Rpb24gbWFpbigpIHsnLFxuICAgICAgICAnICBjb25zdCB7JyxcbiAgICAgICAgJyAgICBTVEFDS19OQU1FLCcsXG4gICAgICAgICcgICAgQ0hBTkdFX1NFVF9OQU1FLCcsXG4gICAgICAgICcgICAgQVdTX1JFR0lPTiwnLFxuICAgICAgICAnICAgIEdJVEhVQl9UT0tFTiwnLFxuICAgICAgICAnICAgIEdJVEhVQl9DT01NRU5UX1VSTCwnLFxuICAgICAgICAnICAgIEdJVEhVQl9TVEVQX1NVTU1BUlksJyxcbiAgICAgICAgJyAgICBJR05PUkVfTE9HSUNBTF9JRFMsJyxcbiAgICAgICAgJyAgICBJR05PUkVfUkVTT1VSQ0VfVFlQRVMsJyxcbiAgICAgICAgJyAgfSA9IHByb2Nlc3MuZW52OycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBpZiAoIVNUQUNLX05BTUUpIHsnLFxuICAgICAgICBcIiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NUQUNLX05BTUUgaXMgcmVxdWlyZWQnKTtcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGNvbnN0IHJlZ2lvbiA9IEFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQVdTX0RFRkFVTFRfUkVHSU9OOycsXG4gICAgICAgICcgIGlmICghcmVnaW9uKSB7JyxcbiAgICAgICAgXCIgICAgdGhyb3cgbmV3IEVycm9yKCdBV1NfUkVHSU9OIGlzIHJlcXVpcmVkJyk7XCIsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgY2hhbmdlU2V0TmFtZSA9IENIQU5HRV9TRVRfTkFNRSB8fCBTVEFDS19OQU1FOycsXG4gICAgICAgICcgIGNvbnN0IG1hcmtlciA9IGA8IS0tIGNkay1kaWZmOnN0YWNrOiR7U1RBQ0tfTkFNRX0gLS0+YDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3QgY2xpZW50ID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHsgcmVnaW9uIH0pOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBsZXQgc3RhdHVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgbGV0IHN0YXR1c1JlYXNvbjogc3RyaW5nIHwgdW5kZWZpbmVkOycsXG4gICAgICAgICcgIGxldCBjaGFuZ2VzOiBhbnlbXSA9IFtdOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICB0cnkgeycsXG4gICAgICAgICcgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0VGVybWluYWxDaGFuZ2VTZXQoY2xpZW50LCBTVEFDS19OQU1FLCBjaGFuZ2VTZXROYW1lKTsnLFxuICAgICAgICAnICAgIHN0YXR1cyA9IHJlc3VsdC5zdGF0dXM7JyxcbiAgICAgICAgJyAgICBzdGF0dXNSZWFzb24gPSByZXN1bHQuc3RhdHVzUmVhc29uOycsXG4gICAgICAgICcgICAgY2hhbmdlcyA9IHJlc3VsdC5jaGFuZ2VzID8/IFtdOycsXG4gICAgICAgICcgIH0gY2F0Y2ggKGVycjogYW55KSB7JyxcbiAgICAgICAgJyAgICAvLyBJZiBEZXNjcmliZUNoYW5nZVNldCBmYWlscyBlbnRpcmVseSwgc3VyZmFjZSB0aGUgZXJyb3InLFxuICAgICAgICBcIiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZXNjcmliaW5nIGNoYW5nZSBzZXQ6JywgZXJyPy5tZXNzYWdlIHx8IGVycik7XCIsXG4gICAgICAgICcgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7JyxcbiAgICAgICAgJyAgICByZXR1cm47JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICBcIiAgLy8gQXBwbHkgaWdub3JlcyBmcm9tIGVudiB2YXJzIChJRHMgYW5kIHR5cGVzKS4gRGVmYXVsdCBpZ25vcmUgSURzIGluY2x1ZGUgJ0NES01ldGFkYXRhJy5cIixcbiAgICAgICAgJyAgY29uc3QgaWdub3JlSWRTZXQgPSBuZXcgU2V0KCcsXG4gICAgICAgIFwiICAgIChJR05PUkVfTE9HSUNBTF9JRFMgPz8gJ0NES01ldGFkYXRhJylcIixcbiAgICAgICAgXCIgICAgICAuc3BsaXQoJywnKVwiLFxuICAgICAgICAnICAgICAgLm1hcChzID0+IHMudHJpbSgpKScsXG4gICAgICAgICcgICAgICAuZmlsdGVyKEJvb2xlYW4pLCcsXG4gICAgICAgICcgICk7JyxcbiAgICAgICAgJyAgY29uc3QgaWdub3JlVHlwZVNldCA9IG5ldyBTZXQoJyxcbiAgICAgICAgXCIgICAgKElHTk9SRV9SRVNPVVJDRV9UWVBFUyA/PyAnJylcIixcbiAgICAgICAgXCIgICAgICAuc3BsaXQoJywnKVwiLFxuICAgICAgICAnICAgICAgLm1hcChzID0+IHMudHJpbSgpKScsXG4gICAgICAgICcgICAgICAuZmlsdGVyKEJvb2xlYW4pLCcsXG4gICAgICAgICcgICk7JyxcbiAgICAgICAgJyAgY29uc3QgZmlsdGVyZWRDaGFuZ2VzID0gY2hhbmdlcy5maWx0ZXIoYyA9PiAhc2hvdWxkSWdub3JlQ2hhbmdlKGMsIGlnbm9yZUlkU2V0LCBpZ25vcmVUeXBlU2V0KSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIEJ1aWxkIEhUTUwgZXhhY3RseSBsaWtlIHByZXR0eV9mb3JtYXQucHkgbG9naWMgKHRhYmxlIHdoZW4gdGhlcmUgYXJlIGNoYW5nZXM7IFwibm8gY2hhbmdlLlwiIG90aGVyd2lzZSkuJyxcbiAgICAgICAgJyAgY29uc3QgaHRtbCA9IGJ1aWxkSHRtbChTVEFDS19OQU1FLCBmaWx0ZXJlZENoYW5nZXMpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvLyBDaGVjayBjYWNoZWQgZHJpZnQgc3RhdHVzIChub24tZmF0YWwpJyxcbiAgICAgICAgXCIgIGxldCBkcmlmdEJhbm5lciA9ICcnO1wiLFxuICAgICAgICAnICB0cnkgeycsXG4gICAgICAgICcgICAgZHJpZnRCYW5uZXIgPSBhd2FpdCBnZXREcmlmdEJhbm5lckh0bWwoY2xpZW50LCBTVEFDS19OQU1FKTsnLFxuICAgICAgICAnICB9IGNhdGNoIChlOiBhbnkpIHsnLFxuICAgICAgICBcIiAgICBjb25zb2xlLmVycm9yKCdEcmlmdCBjaGVjayBmYWlsZWQ6JywgZT8ubWVzc2FnZSB8fCBlKTtcIixcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGNvbnN0IGZ1bGxIdG1sID0gZHJpZnRCYW5uZXIgKyBodG1sOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvLyBQcmludCB0byBzdGRvdXQnLFxuICAgICAgICAnICBjb25zb2xlLmxvZyhmdWxsSHRtbCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8vIE9wdGlvbmFsbHkgYXBwZW5kIHRvIEdpdEh1YiBTdGVwIFN1bW1hcnknLFxuICAgICAgICAnICBpZiAoR0lUSFVCX1NURVBfU1VNTUFSWSkgeycsXG4gICAgICAgICcgICAgdHJ5IHsnLFxuICAgICAgICAnICAgICAgYXdhaXQgYXBwZW5kU3RlcFN1bW1hcnkoR0lUSFVCX1NURVBfU1VNTUFSWSwgZnVsbEh0bWwpOycsXG4gICAgICAgICcgICAgICBjb25zb2xlLmVycm9yKGBBcHBlbmRlZCBIVE1MIHRvIEdJVEhVQl9TVEVQX1NVTU1BUlk6ICR7R0lUSFVCX1NURVBfU1VNTUFSWX1gKTsnLFxuICAgICAgICAnICAgIH0gY2F0Y2ggKGU6IGFueSkgeycsXG4gICAgICAgIFwiICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGFwcGVuZCB0byBHSVRIVUJfU1RFUF9TVU1NQVJZOicsIGU/Lm1lc3NhZ2UgfHwgZSk7XCIsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gVXBzZXJ0IFBSIGNvbW1lbnQgKGZpbmQgZXhpc3RpbmcgYnkgbWFya2VyLCB1cGRhdGUgb3IgY3JlYXRlKScsXG4gICAgICAgICcgIGlmIChHSVRIVUJfVE9LRU4gJiYgR0lUSFVCX0NPTU1FTlRfVVJMKSB7JyxcbiAgICAgICAgJyAgICB0cnkgeycsXG4gICAgICAgICcgICAgICBhd2FpdCB1cHNlcnRHaXRodWJDb21tZW50KEdJVEhVQl9DT01NRU5UX1VSTCwgR0lUSFVCX1RPS0VOLCBmdWxsSHRtbCwgbWFya2VyKTsnLFxuICAgICAgICBcIiAgICAgIGNvbnNvbGUuZXJyb3IoJ1Vwc2VydGVkIEdpdEh1YiBQUiBjb21tZW50LicpO1wiLFxuICAgICAgICAnICAgIH0gY2F0Y2ggKGU6IGFueSkgeycsXG4gICAgICAgIFwiICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHVwc2VydCBHaXRIdWIgUFIgY29tbWVudDonLCBlPy5tZXNzYWdlIHx8IGUpO1wiLFxuICAgICAgICAnICAgICAgLy8gRG8gbm90IGZhaWwgdGhlIHdob2xlIHNjcmlwdCBqdXN0IGZvciBjb21tZW50IHBvc3RpbmcnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiICAvLyBOb3RlOiBXaGVuIHN0YXR1cyBpcyBGQUlMRUQgZHVlIHRvIFxcXCJkaWRuJ3QgY29udGFpbiBjaGFuZ2VzXFxcIiwgdGhlIEhUTUwgbmF0dXJhbGx5IHNheXMgXFxcIm5vIGNoYW5nZS5cXFwiXCIsXG4gICAgICAgIFwiICBpZiAoc3RhdHVzID09PSAnRkFJTEVEJyAmJiBzdGF0dXNSZWFzb24pIHtcIixcbiAgICAgICAgJyAgICBjb25zb2xlLmVycm9yKGBDaGFuZ2Ugc2V0IHN0YXR1czogRkFJTEVELiBSZWFzb246ICR7c3RhdHVzUmVhc29ufWApOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnbWFpbigpLmNhdGNoKChlcnIpID0+IHsnLFxuICAgICAgICAnICBjb25zb2xlLmVycm9yKGVycik7JyxcbiAgICAgICAgJyAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7JyxcbiAgICAgICAgJ30pOycsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-cloudformation",
3
3
  "description": "AWS SDK for JavaScript Cloudformation Client for Node.js, Browser and React Native",
4
- "version": "3.988.0",
4
+ "version": "3.993.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-cloudformation",
@@ -23,38 +23,38 @@
23
23
  "dependencies": {
24
24
  "@aws-crypto/sha256-browser": "5.2.0",
25
25
  "@aws-crypto/sha256-js": "5.2.0",
26
- "@aws-sdk/core": "^3.973.8",
27
- "@aws-sdk/credential-provider-node": "^3.972.7",
26
+ "@aws-sdk/core": "^3.973.11",
27
+ "@aws-sdk/credential-provider-node": "^3.972.10",
28
28
  "@aws-sdk/middleware-host-header": "^3.972.3",
29
29
  "@aws-sdk/middleware-logger": "^3.972.3",
30
30
  "@aws-sdk/middleware-recursion-detection": "^3.972.3",
31
- "@aws-sdk/middleware-user-agent": "^3.972.8",
31
+ "@aws-sdk/middleware-user-agent": "^3.972.11",
32
32
  "@aws-sdk/region-config-resolver": "^3.972.3",
33
33
  "@aws-sdk/types": "^3.973.1",
34
- "@aws-sdk/util-endpoints": "3.988.0",
34
+ "@aws-sdk/util-endpoints": "3.993.0",
35
35
  "@aws-sdk/util-user-agent-browser": "^3.972.3",
36
- "@aws-sdk/util-user-agent-node": "^3.972.6",
36
+ "@aws-sdk/util-user-agent-node": "^3.972.9",
37
37
  "@smithy/config-resolver": "^4.4.6",
38
- "@smithy/core": "^3.23.0",
38
+ "@smithy/core": "^3.23.2",
39
39
  "@smithy/fetch-http-handler": "^5.3.9",
40
40
  "@smithy/hash-node": "^4.2.8",
41
41
  "@smithy/invalid-dependency": "^4.2.8",
42
42
  "@smithy/middleware-content-length": "^4.2.8",
43
- "@smithy/middleware-endpoint": "^4.4.14",
44
- "@smithy/middleware-retry": "^4.4.31",
43
+ "@smithy/middleware-endpoint": "^4.4.16",
44
+ "@smithy/middleware-retry": "^4.4.33",
45
45
  "@smithy/middleware-serde": "^4.2.9",
46
46
  "@smithy/middleware-stack": "^4.2.8",
47
47
  "@smithy/node-config-provider": "^4.3.8",
48
48
  "@smithy/node-http-handler": "^4.4.10",
49
49
  "@smithy/protocol-http": "^5.3.8",
50
- "@smithy/smithy-client": "^4.11.3",
50
+ "@smithy/smithy-client": "^4.11.5",
51
51
  "@smithy/types": "^4.12.0",
52
52
  "@smithy/url-parser": "^4.2.8",
53
53
  "@smithy/util-base64": "^4.3.0",
54
54
  "@smithy/util-body-length-browser": "^4.2.0",
55
55
  "@smithy/util-body-length-node": "^4.2.1",
56
- "@smithy/util-defaults-mode-browser": "^4.3.30",
57
- "@smithy/util-defaults-mode-node": "^4.2.33",
56
+ "@smithy/util-defaults-mode-browser": "^4.3.32",
57
+ "@smithy/util-defaults-mode-node": "^4.2.35",
58
58
  "@smithy/util-endpoints": "^3.2.8",
59
59
  "@smithy/util-middleware": "^4.2.8",
60
60
  "@smithy/util-retry": "^4.2.8",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-sso",
3
3
  "description": "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native",
4
- "version": "3.988.0",
4
+ "version": "3.993.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-sso",
@@ -21,37 +21,37 @@
21
21
  "dependencies": {
22
22
  "@aws-crypto/sha256-browser": "5.2.0",
23
23
  "@aws-crypto/sha256-js": "5.2.0",
24
- "@aws-sdk/core": "^3.973.8",
24
+ "@aws-sdk/core": "^3.973.11",
25
25
  "@aws-sdk/middleware-host-header": "^3.972.3",
26
26
  "@aws-sdk/middleware-logger": "^3.972.3",
27
27
  "@aws-sdk/middleware-recursion-detection": "^3.972.3",
28
- "@aws-sdk/middleware-user-agent": "^3.972.8",
28
+ "@aws-sdk/middleware-user-agent": "^3.972.11",
29
29
  "@aws-sdk/region-config-resolver": "^3.972.3",
30
30
  "@aws-sdk/types": "^3.973.1",
31
- "@aws-sdk/util-endpoints": "3.988.0",
31
+ "@aws-sdk/util-endpoints": "3.993.0",
32
32
  "@aws-sdk/util-user-agent-browser": "^3.972.3",
33
- "@aws-sdk/util-user-agent-node": "^3.972.6",
33
+ "@aws-sdk/util-user-agent-node": "^3.972.9",
34
34
  "@smithy/config-resolver": "^4.4.6",
35
- "@smithy/core": "^3.23.0",
35
+ "@smithy/core": "^3.23.2",
36
36
  "@smithy/fetch-http-handler": "^5.3.9",
37
37
  "@smithy/hash-node": "^4.2.8",
38
38
  "@smithy/invalid-dependency": "^4.2.8",
39
39
  "@smithy/middleware-content-length": "^4.2.8",
40
- "@smithy/middleware-endpoint": "^4.4.14",
41
- "@smithy/middleware-retry": "^4.4.31",
40
+ "@smithy/middleware-endpoint": "^4.4.16",
41
+ "@smithy/middleware-retry": "^4.4.33",
42
42
  "@smithy/middleware-serde": "^4.2.9",
43
43
  "@smithy/middleware-stack": "^4.2.8",
44
44
  "@smithy/node-config-provider": "^4.3.8",
45
45
  "@smithy/node-http-handler": "^4.4.10",
46
46
  "@smithy/protocol-http": "^5.3.8",
47
- "@smithy/smithy-client": "^4.11.3",
47
+ "@smithy/smithy-client": "^4.11.5",
48
48
  "@smithy/types": "^4.12.0",
49
49
  "@smithy/url-parser": "^4.2.8",
50
50
  "@smithy/util-base64": "^4.3.0",
51
51
  "@smithy/util-body-length-browser": "^4.2.0",
52
52
  "@smithy/util-body-length-node": "^4.2.1",
53
- "@smithy/util-defaults-mode-browser": "^4.3.30",
54
- "@smithy/util-defaults-mode-node": "^4.2.33",
53
+ "@smithy/util-defaults-mode-browser": "^4.3.32",
54
+ "@smithy/util-defaults-mode-node": "^4.2.35",
55
55
  "@smithy/util-endpoints": "^3.2.8",
56
56
  "@smithy/util-middleware": "^4.2.8",
57
57
  "@smithy/util-retry": "^4.2.8",