projen 0.85.2 → 0.86.1

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 (143) hide show
  1. package/.jsii +272 -144
  2. package/lib/awscdk/auto-discover.js +5 -5
  3. package/lib/awscdk/awscdk-app-java.js +1 -1
  4. package/lib/awscdk/awscdk-app-py.js +1 -1
  5. package/lib/awscdk/awscdk-app-ts.js +1 -1
  6. package/lib/awscdk/awscdk-construct.js +2 -2
  7. package/lib/awscdk/awscdk-deps-java.js +1 -1
  8. package/lib/awscdk/awscdk-deps-js.js +1 -1
  9. package/lib/awscdk/awscdk-deps-py.js +1 -1
  10. package/lib/awscdk/awscdk-deps.js +1 -1
  11. package/lib/awscdk/cdk-config.js +1 -1
  12. package/lib/awscdk/cdk-tasks.js +1 -1
  13. package/lib/awscdk/integration-test.js +1 -1
  14. package/lib/awscdk/lambda-extension.js +1 -1
  15. package/lib/awscdk/lambda-function.js +2 -2
  16. package/lib/build/build-workflow.js +1 -1
  17. package/lib/cdk/auto-discover-base.js +2 -2
  18. package/lib/cdk/construct-lib.js +1 -1
  19. package/lib/cdk/integration-test-base.js +1 -1
  20. package/lib/cdk/jsii-docgen.js +1 -1
  21. package/lib/cdk/jsii-project.d.ts +15 -4
  22. package/lib/cdk/jsii-project.js +3 -2
  23. package/lib/cdk8s/auto-discover.js +2 -2
  24. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  25. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  26. package/lib/cdk8s/cdk8s-construct.js +1 -1
  27. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps.js +1 -1
  29. package/lib/cdk8s/integration-test.js +1 -1
  30. package/lib/cdktf/cdktf-construct.js +1 -1
  31. package/lib/circleci/circleci.js +1 -1
  32. package/lib/component.js +1 -1
  33. package/lib/dependencies.js +1 -1
  34. package/lib/dev-env.js +1 -1
  35. package/lib/docker-compose/docker-compose-service.js +1 -1
  36. package/lib/docker-compose/docker-compose.js +1 -1
  37. package/lib/file.js +1 -1
  38. package/lib/gitattributes.d.ts +40 -1
  39. package/lib/gitattributes.js +37 -4
  40. package/lib/github/actions-provider.js +1 -1
  41. package/lib/github/auto-approve.js +1 -1
  42. package/lib/github/auto-merge.js +1 -1
  43. package/lib/github/dependabot.js +1 -1
  44. package/lib/github/github-credentials.js +1 -1
  45. package/lib/github/github-project.js +1 -1
  46. package/lib/github/github.js +1 -1
  47. package/lib/github/mergify.js +1 -1
  48. package/lib/github/pr-template.js +1 -1
  49. package/lib/github/pull-request-backport.js +1 -1
  50. package/lib/github/pull-request-lint.js +1 -1
  51. package/lib/github/stale.js +1 -1
  52. package/lib/github/task-workflow-job.js +1 -1
  53. package/lib/github/task-workflow.js +1 -1
  54. package/lib/github/workflow-actions.js +1 -1
  55. package/lib/github/workflow-jobs.js +1 -1
  56. package/lib/github/workflow-steps.js +1 -1
  57. package/lib/github/workflows.js +1 -1
  58. package/lib/gitlab/configuration.js +1 -1
  59. package/lib/gitlab/gitlab-configuration.js +1 -1
  60. package/lib/gitlab/nested-configuration.js +1 -1
  61. package/lib/gitpod.js +1 -1
  62. package/lib/ignore-file.js +1 -1
  63. package/lib/ini.js +1 -1
  64. package/lib/java/java-project.js +1 -1
  65. package/lib/java/junit.js +1 -1
  66. package/lib/java/maven-compile.js +1 -1
  67. package/lib/java/maven-packaging.js +1 -1
  68. package/lib/java/maven-sample.js +1 -1
  69. package/lib/java/pom.js +2 -2
  70. package/lib/java/projenrc.js +1 -1
  71. package/lib/javascript/bundler.js +1 -1
  72. package/lib/javascript/eslint.js +1 -1
  73. package/lib/javascript/jest.js +4 -4
  74. package/lib/javascript/license-checker.js +1 -1
  75. package/lib/javascript/node-package.js +1 -1
  76. package/lib/javascript/node-project.js +1 -1
  77. package/lib/javascript/npm-config.js +1 -1
  78. package/lib/javascript/prettier.js +1 -1
  79. package/lib/javascript/projenrc.js +1 -1
  80. package/lib/javascript/typescript-config.js +2 -2
  81. package/lib/javascript/upgrade-dependencies.js +2 -2
  82. package/lib/javascript/yarnrc.js +1 -1
  83. package/lib/json-patch.js +1 -1
  84. package/lib/json.js +1 -1
  85. package/lib/license.js +1 -1
  86. package/lib/logger.js +1 -1
  87. package/lib/makefile.js +1 -1
  88. package/lib/object-file.js +1 -1
  89. package/lib/project-build.js +1 -1
  90. package/lib/project-tree.js +1 -1
  91. package/lib/project.d.ts +12 -1
  92. package/lib/project.js +5 -3
  93. package/lib/projects.js +1 -1
  94. package/lib/projenrc-json.js +2 -2
  95. package/lib/projenrc.js +1 -1
  96. package/lib/python/pip.js +1 -1
  97. package/lib/python/poetry.js +2 -2
  98. package/lib/python/projenrc.js +1 -1
  99. package/lib/python/pytest-sample.js +1 -1
  100. package/lib/python/pytest.js +1 -1
  101. package/lib/python/python-project.js +1 -1
  102. package/lib/python/python-sample.js +1 -1
  103. package/lib/python/requirements-file.js +1 -1
  104. package/lib/python/setuppy.js +1 -1
  105. package/lib/python/setuptools.js +1 -1
  106. package/lib/python/venv.js +1 -1
  107. package/lib/readme.js +1 -1
  108. package/lib/release/publisher.d.ts +0 -6
  109. package/lib/release/publisher.js +2 -3
  110. package/lib/release/release-trigger.js +1 -1
  111. package/lib/release/release.js +1 -1
  112. package/lib/renovatebot.js +1 -1
  113. package/lib/sample-file.d.ts +1 -1
  114. package/lib/sample-file.js +3 -3
  115. package/lib/semver.js +1 -1
  116. package/lib/source-code.js +1 -1
  117. package/lib/task-runtime.js +1 -1
  118. package/lib/task.js +1 -1
  119. package/lib/tasks.js +1 -1
  120. package/lib/testing.js +1 -1
  121. package/lib/textfile.js +1 -1
  122. package/lib/toml.js +1 -1
  123. package/lib/typescript/projenrc-ts.js +1 -1
  124. package/lib/typescript/projenrc.js +1 -1
  125. package/lib/typescript/typescript-typedoc.js +1 -1
  126. package/lib/typescript/typescript.js +6 -6
  127. package/lib/version.js +2 -2
  128. package/lib/vscode/devcontainer.js +1 -1
  129. package/lib/vscode/extensions.js +1 -1
  130. package/lib/vscode/launch-config.js +1 -1
  131. package/lib/vscode/settings.js +1 -1
  132. package/lib/vscode/vscode.js +1 -1
  133. package/lib/web/next.js +3 -3
  134. package/lib/web/postcss.js +1 -1
  135. package/lib/web/react.js +4 -4
  136. package/lib/web/tailwind.js +1 -1
  137. package/lib/xmlfile.js +1 -1
  138. package/lib/yaml.js +1 -1
  139. package/node_modules/is-core-module/CHANGELOG.md +10 -0
  140. package/node_modules/is-core-module/core.json +2 -2
  141. package/node_modules/is-core-module/package.json +4 -4
  142. package/node_modules/is-core-module/test/index.js +17 -1
  143. package/package.json +1 -1
@@ -668,5 +668,5 @@ class NodeProject extends github_1.GitHubProject {
668
668
  }
669
669
  exports.NodeProject = NodeProject;
670
670
  _a = JSII_RTTI_SYMBOL_1;
671
- NodeProject[_a] = { fqn: "projen.javascript.NodeProject", version: "0.85.2" };
671
+ NodeProject[_a] = { fqn: "projen.javascript.NodeProject", version: "0.86.1" };
672
672
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvbm9kZS1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQXVDO0FBQ3ZDLHVDQUFvRDtBQUNwRCxpQ0FBMkM7QUFDM0MsdURBQTBFO0FBQzFFLGlEQU13QjtBQUN4Qix5Q0FBdUQ7QUFDdkQsb0NBQXFFO0FBQ3JFLHNDQUF1QztBQUN2QyxrREFBaUQ7QUFDakQsc0NBT21CO0FBQ25CLG1EQUFrRTtBQUNsRSx5Q0FBZ0Q7QUFDaEQsK0RBTW1DO0FBQ25DLGdEQUErRDtBQUMvRCw4Q0FNdUI7QUFDdkIsd0NBQXFDO0FBQ3JDLG9EQUFnRDtBQUNoRCx3Q0FRb0I7QUFDcEIsc0RBQTBEO0FBRTFELGtDQUE0RDtBQUM1RCx1Q0FBK0Q7QUFDL0Qsd0NBQXFDO0FBRXJDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQTJTL0I7O0dBRUc7QUFDSCxJQUFZLFdBVVg7QUFWRCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCw2REFBWSxDQUFBO0lBRVo7O09BRUc7SUFDSCwrQ0FBSyxDQUFBO0FBQ1AsQ0FBQyxFQVZXLFdBQVcsMkJBQVgsV0FBVyxRQVV0QjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSxzQkFBYTtJQVc1Qzs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHNCQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBR0Q7O09BRUc7SUFDSCxJQUFXLHdCQUF3QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUM7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QUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7QUF0NEJILGtDQXU0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWxhdGl2ZSwgcG9zaXggfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQnVuZGxlciwgQnVuZGxlck9wdGlvbnMgfSBmcm9tIFwiLi9idW5kbGVyXCI7XG5pbXBvcnQgeyBKZXN0LCBKZXN0T3B0aW9ucyB9IGZyb20gXCIuL2plc3RcIjtcbmltcG9ydCB7IExpY2Vuc2VDaGVja2VyLCBMaWNlbnNlQ2hlY2tlck9wdGlvbnMgfSBmcm9tIFwiLi9saWNlbnNlLWNoZWNrZXJcIjtcbmltcG9ydCB7XG4gIENvZGVBcnRpZmFjdEF1dGhQcm92aWRlciBhcyBOb2RlUGFja2FnZUNvZGVBcnRpZmFjdEF1dGhQcm92aWRlcixcbiAgQ29kZUFydGlmYWN0T3B0aW9ucyxcbiAgTm9kZVBhY2thZ2UsXG4gIE5vZGVQYWNrYWdlTWFuYWdlcixcbiAgTm9kZVBhY2thZ2VPcHRpb25zLFxufSBmcm9tIFwiLi9ub2RlLXBhY2thZ2VcIjtcbmltcG9ydCB7IFByb2plbnJjLCBQcm9qZW5yY09wdGlvbnMgfSBmcm9tIFwiLi9wcm9qZW5yY1wiO1xuaW1wb3J0IHsgQnVpbGRXb3JrZmxvdywgQnVpbGRXb3JrZmxvd0NvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi4vYnVpbGRcIjtcbmltcG9ydCB7IFBST0pFTl9ESVIgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7XG4gIEF1dG9NZXJnZSxcbiAgRGVwZW5kYWJvdE9wdGlvbnMsXG4gIEdpdEh1YixcbiAgR2l0SHViUHJvamVjdCxcbiAgR2l0SHViUHJvamVjdE9wdGlvbnMsXG4gIEdpdElkZW50aXR5LFxufSBmcm9tIFwiLi4vZ2l0aHViXCI7XG5pbXBvcnQgeyBERUZBVUxUX0dJVEhVQl9BQ1RJT05TX1VTRVIgfSBmcm9tIFwiLi4vZ2l0aHViL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2VjcmV0VG9TdHJpbmcgfSBmcm9tIFwiLi4vZ2l0aHViL3V0aWxcIjtcbmltcG9ydCB7XG4gIEpvYlBlcm1pc3Npb24sXG4gIEpvYlBlcm1pc3Npb25zLFxuICBKb2JTdGVwLFxuICBKb2JTdGVwQ29uZmlndXJhdGlvbixcbiAgVHJpZ2dlcnMsXG59IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBJZ25vcmVGaWxlLCBJZ25vcmVGaWxlT3B0aW9ucyB9IGZyb20gXCIuLi9pZ25vcmUtZmlsZVwiO1xuaW1wb3J0IHtcbiAgTnBtQ29uZmlnLFxuICBQcmV0dGllcixcbiAgUHJldHRpZXJPcHRpb25zLFxuICBVcGdyYWRlRGVwZW5kZW5jaWVzLFxuICBVcGdyYWRlRGVwZW5kZW5jaWVzT3B0aW9ucyxcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IExpY2Vuc2UgfSBmcm9tIFwiLi4vbGljZW5zZVwiO1xuaW1wb3J0IHsgUHJvamVucmNKc29uIH0gZnJvbSBcIi4uL3Byb2plbnJjLWpzb25cIjtcbmltcG9ydCB7XG4gIENvZGVBcnRpZmFjdEF1dGhQcm92aWRlciBhcyBSZWxlYXNlQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLFxuICBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIsXG4gIGlzQXdzQ29kZUFydGlmYWN0UmVnaXN0cnksXG4gIE5wbVB1Ymxpc2hPcHRpb25zLFxuICBQdWJsaXNoZXIsXG4gIFJlbGVhc2UsXG4gIFJlbGVhc2VQcm9qZWN0T3B0aW9ucyxcbn0gZnJvbSBcIi4uL3JlbGVhc2VcIjtcbmltcG9ydCB7IGZpbHRlcmVkUnVuc09uT3B0aW9ucyB9IGZyb20gXCIuLi9ydW5uZXItb3B0aW9uc1wiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgZW5zdXJlUmVsYXRpdmVQYXRoU3RhcnRzV2l0aERvdCB9IGZyb20gXCIuLi91dGlsL3BhdGhcIjtcbmltcG9ydCB7IFZlcnNpb24gfSBmcm9tIFwiLi4vdmVyc2lvblwiO1xuXG5jb25zdCBQUk9KRU5fU0NSSVBUID0gXCJwcm9qZW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBOb2RlUHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBHaXRIdWJQcm9qZWN0T3B0aW9ucyxcbiAgICBOb2RlUGFja2FnZU9wdGlvbnMsXG4gICAgUmVsZWFzZVByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpY2Vuc2UgY29weXJpZ2h0IG93bmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBhdXRob3JOYW1lIG9yIFwiXCIgaWYgYGF1dGhvck5hbWVgIGlzIHVuZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvcHlyaWdodE93bmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29weXJpZ2h0IHllYXJzIHRvIHB1dCBpbiB0aGUgTElDRU5TRSBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgeWVhclxuICAgKi9cbiAgcmVhZG9ubHkgY29weXJpZ2h0UGVyaW9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHByb2plbiB0byBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBvZiBcInByb2plblwiIHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgYSBkZXZEZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgbm90IGEgc3VicHJvamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuRGV2RGVwZW5kZW5jeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmluZSBhIEdpdEh1YiB3b3JrZmxvdyBmb3IgYnVpbGRpbmcgUFJzLlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgbm90IGEgc3VicHJvamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBQUiBidWlsZCB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3dPcHRpb25zPzogQnVpbGRXb3JrZmxvd09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlIGZpbGVzIG1vZGlmaWVkIGR1cmluZyBidWlsZHMgdG8gcHVsbC1yZXF1ZXN0IGJyYW5jaGVzLiBUaGlzIG1lYW5zXG4gICAqIHRoYXQgYW55IGZpbGVzIHN5bnRoZXNpemVkIGJ5IHByb2plbiBvciBlLmcuIHRlc3Qgc25hcHNob3RzIHdpbGwgYWx3YXlzIGJlIHVwLXRvLWRhdGVcbiAgICogYmVmb3JlIGEgUFIgaXMgbWVyZ2VkLlxuICAgKlxuICAgKiBJbXBsaWVzIHRoYXQgUFIgYnVpbGRzIGRvIG5vdCBoYXZlIGFudGktdGFtcGVyIGNoZWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIFVzZSBgYnVpbGRXb3JrZmxvd09wdGlvbnMubXV0YWJsZUJ1aWxkYFxuICAgKi9cbiAgcmVhZG9ubHkgbXV0YWJsZUJ1aWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmaW5lIGEgR2l0SHViIHdvcmtmbG93IHN0ZXAgZm9yIHNlbmRpbmcgY29kZSBjb3ZlcmFnZSBtZXRyaWNzIHRvIGh0dHBzOi8vY29kZWNvdi5pby9cbiAgICogVXNlcyBjb2RlY292L2NvZGVjb3YtYWN0aW9uQHY0XG4gICAqIEEgc2VjcmV0IGlzIHJlcXVpcmVkIGZvciBwcml2YXRlIHJlcG9zLiBDb25maWd1cmVkIHdpdGggYEBjb2RlQ292VG9rZW5TZWNyZXRgXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBzZWNyZXQgbmFtZSBmb3IgYSBzcGVjaWZpZWQgaHR0cHM6Ly9jb2RlY292LmlvLyB0b2tlblxuICAgKiBBIHNlY3JldCBpcyByZXF1aXJlZCB0byBzZW5kIGNvdmVyYWdlIGZvciBwcml2YXRlIHJlcG9zaXRvcmllc1xuICAgKiBAZGVmYXVsdCAtIGlmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIG9ubHkgcHVibGljIHJlcG9zaXRvcmllcyBhcmUgc3VwcG9ydGVkXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292VG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURUQ6IHJlbmFtZWQgdG8gYHJlbGVhc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgbm90IGEgc3VicHJvamVjdFxuICAgKiBAZGVwcmVjYXRlZCBzZWUgYHJlbGVhc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHJlbGVhc2UgbWFuYWdlbWVudCB0byB0aGlzIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSAoZmFsc2UgZm9yIHN1YnByb2plY3RzKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtYWluIHJlbGVhc2UgYnJhbmNoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IHN0cmluZztcblxuICAvKipcbiAgICogV29ya2Zsb3cgc3RlcHMgdG8gdXNlIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGlzIHJlcG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwieWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlICYmIHlhcm4gcHJvamVuXCJcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBKb2JTdGVwW107XG5cbiAgLyoqXG4gICAqIFRoZSBnaXQgaWRlbnRpdHkgdG8gdXNlIGluIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBHaXRIdWIgQWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dHaXRJZGVudGl0eT86IEdpdElkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJlbGVhc2UgdG8gbnBtIHdoZW4gbmV3IHZlcnNpb25zIGFyZSBpbnRyb2R1Y2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRvTnBtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5vZGUgdmVyc2lvbiB0byB1c2UgaW4gR2l0SHViIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBtaW5Ob2RlVmVyc2lvbmBcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBOb2RlLmpzIHBhY2thZ2UgY2FjaGUgaW4gR2l0SHViIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UGFja2FnZUNhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIGRlcGVuZGFib3QgdG8gaGFuZGxlIGRlcGVuZGVuY3kgdXBncmFkZXMuXG4gICAqIENhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGRlcHNVcGdyYWRlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGFib3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBkZXBlbmRhYm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kYWJvdE9wdGlvbnM/OiBEZXBlbmRhYm90T3B0aW9ucztcblxuICAvKipcbiAgICogVXNlIHRhc2tzIGFuZCBnaXRodWIgd29ya2Zsb3dzIHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBDYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBkZXBlbmRhYm90YC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwc1VwZ3JhZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBgVXBncmFkZURlcGVuZGVuY2llc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBkZXBzVXBncmFkZU9wdGlvbnM/OiBVcGdyYWRlRGVwZW5kZW5jaWVzT3B0aW9ucztcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhcHByb3ZlIGRlcHMgdXBncmFkZSBQUnMsIGFsbG93aW5nIHRoZW0gdG8gYmVcbiAgICogbWVyZ2VkIGJ5IG1lcmdpZnkgKGlmIGNvbmZpZ3VlZCkuXG4gICAqXG4gICAqIFRocm93IGlmIHNldCB0byB0cnVlIGJ1dCBgYXV0b0FwcHJvdmVPcHRpb25zYCBhcmUgbm90IGRlZmluZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0FwcHJvdmVVcGdyYWRlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYW4gLm5wbWlnbm9yZSBmaWxlLiBOb3JtYWxseSB0aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaWJyYXJpZXMgdGhhdFxuICAgKiBhcmUgcGFja2FnZWQgYXMgdGFyYmFsbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5wbWlnbm9yZUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIC5ucG1pZ25vcmUgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtSWdub3JlT3B0aW9ucz86IElnbm9yZUZpbGVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudHJpZXMgdG8gLm5wbWlnbm9yZS5cbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgYHByb2plY3QuYWRkUGFja2FnZUlnbm9yZWBcbiAgICovXG4gIHJlYWRvbmx5IG5wbWlnbm9yZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIGEgR2l0SHViIHB1bGwgcmVxdWVzdCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUZW1wbGF0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyBvZiB0aGUgcHVsbCByZXF1ZXN0IHRlbXBsYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgY29udGVudFxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUZW1wbGF0ZUNvbnRlbnRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNldHVwIHByZXR0aWVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJldHRpZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmV0dGllciBvcHRpb25zXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW50cmllcyB0byAuZ2l0aWdub3JlXG4gICAqL1xuICByZWFkb25seSBnaXRpZ25vcmU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2V0dXAgamVzdCB1bml0IHRlc3RzXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGplc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBKZXN0IG9wdGlvbnNcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGplc3RPcHRpb25zPzogSmVzdE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIChvbmNlKSAucHJvamVucmMuanMgKGluIEphdmFTY3JpcHQpLiBTZXQgdG8gYGZhbHNlYCBpbiBvcmRlciB0byBkaXNhYmxlXG4gICAqIC5wcm9qZW5yYy5qcyBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgcHJvamVucmNKc29uIGlzIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgLnByb2plbnJjLmpzXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzT3B0aW9ucz86IFByb2plbnJjT3B0aW9ucztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgYEJ1bmRsZXJgLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVuZGxlck9wdGlvbnM/OiBCdW5kbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogQSBkaXJlY3Rvcnkgd2hpY2ggd2lsbCBjb250YWluIGJ1aWxkIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJkaXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyBhIGBwYWNrYWdlYCB0YXNrIHRoYXQgd2lsbCBwcm9kdWNlIGFuIG5wbSB0YXJiYWxsIHVuZGVyIHRoZVxuICAgKiBhcnRpZmFjdHMgZGlyZWN0b3J5IChlLmcuIGBkaXN0YCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCdWlsZCB3b3JrZmxvdyB0cmlnZ2Vyc1xuICAgKiBAZGVmYXVsdCBcInsgcHVsbFJlcXVlc3Q6IHt9LCB3b3JrZmxvd0Rpc3BhdGNoOiB7fSB9XCJcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgLSBVc2UgYGJ1aWxkV29ya2Zsb3dPcHRpb25zLndvcmtmbG93VHJpZ2dlcnNgXG4gICAqL1xuICByZWFkb25seSBidWlsZFdvcmtmbG93VHJpZ2dlcnM/OiBUcmlnZ2VycztcblxuICAvKipcbiAgICogQ29uZmlndXJlIHdoaWNoIGxpY2Vuc2VzIHNob3VsZCBiZSBkZWVtZWQgYWNjZXB0YWJsZSBmb3IgdXNlIGJ5IGRlcGVuZGVuY2llc1xuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgd2lsbCBjYXVzZSB0aGUgYnVpbGQgdG8gZmFpbCwgaWYgYW55IHByb2hpYml0ZWQgb3Igbm90IGFsbG93ZWQgbGljZW5zZXMgYXJlcyBlbmNvdW50ZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBsaWNlbnNlIGNoZWNrcyBhcmUgcnVuIGR1cmluZyB0aGUgYnVpbGQgYW5kIGFsbCBsaWNlbnNlcyB3aWxsIGJlIGFjY2VwdGVkXG4gICAqL1xuICByZWFkb25seSBjaGVja0xpY2Vuc2VzPzogTGljZW5zZUNoZWNrZXJPcHRpb25zO1xufVxuXG4vKipcbiAqIEJ1aWxkIHdvcmtmbG93IG9wdGlvbnMgZm9yIE5vZGVQcm9qZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRXb3JrZmxvd09wdGlvbnMgZXh0ZW5kcyBCdWlsZFdvcmtmbG93Q29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZSBmaWxlcyBtb2RpZmllZCBkdXJpbmcgYnVpbGRzIHRvIHB1bGwtcmVxdWVzdCBicmFuY2hlcy5cbiAgICogVGhpcyBtZWFucyB0aGF0IGFueSBmaWxlcyBzeW50aGVzaXplZCBieSBwcm9qZW4gb3IgZS5nLiB0ZXN0IHNuYXBzaG90cyB3aWxsXG4gICAqIGFsd2F5cyBiZSB1cC10by1kYXRlIGJlZm9yZSBhIFBSIGlzIG1lcmdlZC5cbiAgICpcbiAgICogSW1wbGllcyB0aGF0IFBSIGJ1aWxkcyBkbyBub3QgaGF2ZSBhbnRpLXRhbXBlciBjaGVja3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG11dGFibGVCdWlsZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQXV0b21hdGljIGJ1bXAgbW9kZXNcbiAqL1xuZXhwb3J0IGVudW0gQXV0b1JlbGVhc2Uge1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBidW1wICYgcmVsZWFzZSBhIG5ldyB2ZXJzaW9uIGZvciBldmVyeSBjb21taXQgdG8gXCJtYWluXCJcbiAgICovXG4gIEVWRVJZX0NPTU1JVCxcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBidW1wICYgcmVsZWFzZSBhIG5ldyB2ZXJzaW9uIG9uIGEgZGFpbHkgYmFzaXMuXG4gICAqL1xuICBEQUlMWSxcbn1cblxuLyoqXG4gKiBOb2RlLmpzIHByb2plY3QuXG4gKlxuICogQHBqaWQgbm9kZVxuICovXG5leHBvcnQgY2xhc3MgTm9kZVByb2plY3QgZXh0ZW5kcyBHaXRIdWJQcm9qZWN0IHtcbiAgLyoqXG4gICAqIEFQSSBmb3IgbWFuYWdpbmcgdGhlIG5vZGUgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwYWNrYWdlOiBOb2RlUGFja2FnZTtcblxuICAvKipcbiAgICogVGhlIC5ucG1pZ25vcmUgZmlsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBucG1pZ25vcmU/OiBJZ25vcmVGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgLm5wbXJjIGZpbGVcbiAgICovXG4gIHB1YmxpYyBnZXQgbnBtcmMoKTogTnBtQ29uZmlnIHtcbiAgICBpZiAoIXRoaXMuX25wbXJjKSB7XG4gICAgICB0aGlzLl9ucG1yYyA9IG5ldyBOcG1Db25maWcodGhpcywgeyBvbWl0RW1wdHk6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ucG1yYztcbiAgfVxuICBwcml2YXRlIF9ucG1yYz86IE5wbUNvbmZpZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBwYWNrYWdlLmFsbG93TGlicmFyeURlcGVuZGVuY2llc2BcbiAgICovXG4gIHB1YmxpYyBnZXQgYWxsb3dMaWJyYXJ5RGVwZW5kZW5jaWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UuYWxsb3dMaWJyYXJ5RGVwZW5kZW5jaWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgcGFja2FnZS5lbnRyeXBvaW50YFxuICAgKi9cbiAgcHVibGljIGdldCBlbnRyeXBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZS5lbnRyeXBvaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCB0aGF0IHNldHMgdXAgbWVyZ2lmeSBmb3IgbWVyZ2luZyBhcHByb3ZlZCBwdWxsIHJlcXVlc3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dG9NZXJnZT86IEF1dG9NZXJnZTtcblxuICAvKipcbiAgICogVGhlIFBSIGJ1aWxkIEdpdEh1YiB3b3JrZmxvdy4gYHVuZGVmaW5lZGAgaWYgYGJ1aWxkV29ya2Zsb3dgIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3c/OiBCdWlsZFdvcmtmbG93O1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlIHB1Ymxpc2hlci4gVGhpcyB3aWxsIGJlIGB1bmRlZmluZWRgIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGhhdmUgYVxuICAgKiByZWxlYXNlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHJlbGVhc2UucHVibGlzaGVyYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwdWJsaXNoZXI/OiBQdWJsaXNoZXI7XG5cbiAgLyoqXG4gICAqIFJlbGVhc2UgbWFuYWdlbWVudC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWxlYXNlPzogUmVsZWFzZTtcblxuICAvKipcbiAgICogTWluaW11bSBub2RlLmpzIHZlcnNpb24gcmVxdWlyZWQgYnkgdGhpcyBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGdldCBtaW5Ob2RlVmVyc2lvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UubWluTm9kZVZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogTWF4aW11bSBub2RlIHZlcnNpb24gcmVxdWlyZWQgYnkgdGhpcyBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGdldCBtYXhOb2RlVmVyc2lvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UubWF4Tm9kZVZlcnNpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHBhY2thZ2UucGFja2FnZU1hbmFnZXJgXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBhY2thZ2VNYW5hZ2VyKCk6IE5vZGVQYWNrYWdlTWFuYWdlciB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZS5wYWNrYWdlTWFuYWdlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byB1c2UgdG8gcnVuIHNjcmlwdHMgKGUuZy4gYHlhcm4gcnVuYCBvciBgbnBtIHJ1bmAgZGVwZW5kcyBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBydW5TY3JpcHRDb21tYW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBKZXN0IGNvbmZpZ3VyYXRpb24gKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgamVzdD86IEplc3Q7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgcGFja2FnZS5hZGRGaWVsZCh4LCB5KWBcbiAgICovXG4gIHB1YmxpYyBnZXQgbWFuaWZlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZS5tYW5pZmVzdDtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBidW5kbGVyOiBCdW5kbGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgb3V0cHV0IGRpcmVjdG9yeS4gQW4gbnBtIHRhcmJhbGwgd2lsbCBiZSBjcmVhdGVkIHVuZGVyIHRoZSBganNgXG4gICAqIHN1YmRpcmVjdG9yeS4gRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgc2V0IHRvIGBkaXN0YCAodGhlIGRlZmF1bHQpLCB0aGUgbnBtXG4gICAqIHRhcmJhbGwgd2lsbCBiZSBwbGFjZWQgdW5kZXIgYGRpc3QvanMvYm9vbS1ib29tLTEuMi4zLnRnYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcnRpZmFjdHNEaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBucG0gdGFyYmFsbCBhZnRlciBidWlsZCAoYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS9qc2ApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFydGlmYWN0c0phdmFzY3JpcHREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVwZ3JhZGUgd29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBncmFkZVdvcmtmbG93PzogVXBncmFkZURlcGVuZGVuY2llcztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd29ya2Zsb3dCb290c3RyYXBTdGVwczogSm9iU3RlcFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtmbG93R2l0SWRlbnRpdHk6IEdpdElkZW50aXR5O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd29ya2Zsb3dQYWNrYWdlQ2FjaGU6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBwcmV0dGllcj86IFByZXR0aWVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE5vZGVQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAvLyBOb2RlIHByb2plY3RzIGhhdmUgdGhlIHNwZWNpZmljIHByb2plbiB2ZXJzaW9uIGxvY2tlZCB2aWEgbG9ja2ZpbGUsIHNvIHdlIGNhbiBza2lwIHRoZSBAPFZFUlNJT04+IHBhcnQgb2YgdGhlIHRvcC1sZXZlbCBwcm9qZWN0XG4gICAgICBwcm9qZW5Db21tYW5kOiBvcHRpb25zLnByb2plbkNvbW1hbmQgPz8gXCJucHggcHJvamVuXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhY2thZ2UgPSBuZXcgTm9kZVBhY2thZ2UodGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy53b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzID0gb3B0aW9ucy53b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzID8/IFtdO1xuICAgIHRoaXMud29ya2Zsb3dHaXRJZGVudGl0eSA9XG4gICAgICBvcHRpb25zLndvcmtmbG93R2l0SWRlbnRpdHkgPz8gREVGQVVMVF9HSVRIVUJfQUNUSU9OU19VU0VSO1xuICAgIHRoaXMud29ya2Zsb3dQYWNrYWdlQ2FjaGUgPSBvcHRpb25zLndvcmtmbG93UGFja2FnZUNhY2hlID8/IGZhbHNlO1xuICAgIHRoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5ID0gb3B0aW9ucy5hcnRpZmFjdHNEaXJlY3RvcnkgPz8gXCJkaXN0XCI7XG4gICAgY29uc3Qgbm9ybWFsaXplZEFydGlmYWN0c0RpcmVjdG9yeSA9IG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgoXG4gICAgICB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeVxuICAgICk7XG4gICAgdGhpcy5hcnRpZmFjdHNKYXZhc2NyaXB0RGlyZWN0b3J5ID0gcG9zaXguam9pbihcbiAgICAgIG5vcm1hbGl6ZWRBcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICBcImpzXCJcbiAgICApO1xuXG4gICAgdGhpcy5ydW5TY3JpcHRDb21tYW5kID0gKCgpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5OUE06XG4gICAgICAgICAgcmV0dXJuIFwibnBtIHJ1blwiO1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOOlxuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOMjpcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9DTEFTU0lDOlxuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZOlxuICAgICAgICAgIHJldHVybiBcInlhcm4gcnVuXCI7XG4gICAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE06XG4gICAgICAgICAgcmV0dXJuIFwicG5wbSBydW5cIjtcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOOlxuICAgICAgICAgIHJldHVybiBcImJ1biBydW5cIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgcGFja2FnZSBtYW5hZ2VyICR7dGhpcy5wYWNrYWdlTWFuYWdlcn1gKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgY29uc3QgZW52Q29tbWFuZCA9ICgoKSA9PiB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGFja2FnZU1hbmFnZXIpIHtcbiAgICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTTpcbiAgICAgICAgICByZXR1cm4gJyQocG5wbSAtYyBleGVjIFwibm9kZSAtLXByaW50IHByb2Nlc3MuZW52LlBBVEhcIiknO1xuICAgICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5CVU46XG4gICAgICAgICAgcmV0dXJuICckKGJ1biAtLWV2YWwgXCJjb25zb2xlLmxvZyhwcm9jZXNzLmVudi5QQVRIKVwiKSc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICckKG5weCAtYyBcIm5vZGUgLS1wcmludCBwcm9jZXNzLmVudi5QQVRIXCIpJztcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgdGhpcy5ub2RlVmVyc2lvbiA9XG4gICAgICBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gdGhpcy5wYWNrYWdlLm1pbk5vZGVWZXJzaW9uO1xuXG4gICAgLy8gYWRkIFBBVEggZm9yIGFsbCB0YXNrcyB3aGljaCBpbmNsdWRlcyB0aGUgcHJvamVjdCdzIG5wbSAuYmluIGxpc3RcbiAgICB0aGlzLnRhc2tzLmFkZEVudmlyb25tZW50KFwiUEFUSFwiLCBlbnZDb21tYW5kKTtcblxuICAgIHRoaXMuYWRkTGljZW5zZShvcHRpb25zKTtcblxuICAgIGlmIChvcHRpb25zLm5wbWlnbm9yZUVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5ucG1pZ25vcmUgPSBuZXcgSWdub3JlRmlsZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCIubnBtaWdub3JlXCIsXG4gICAgICAgIG9wdGlvbnMubnBtSWdub3JlT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZERlZmF1bHRHaXRJZ25vcmUoKTtcblxuICAgIGlmIChvcHRpb25zLmdpdGlnbm9yZT8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGkgb2Ygb3B0aW9ucy5naXRpZ25vcmUpIHtcbiAgICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5ucG1pZ25vcmU/Lmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLm5wbWlnbm9yZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJy5ucG1pZ25vcmUgaXMgbm90IGRlZmluZWQgZm9yIGFuIEFQUCBwcm9qZWN0IHR5cGUuIEFkZCBcIm5wbUlnbm9yZTogdHJ1ZVwiIHRvIG92ZXJyaWRlIHRoaXMnXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgaSBvZiBvcHRpb25zLm5wbWlnbm9yZSkge1xuICAgICAgICB0aGlzLm5wbWlnbm9yZS5leGNsdWRlKGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5lamVjdGVkKSB7XG4gICAgICB0aGlzLnNldFNjcmlwdChQUk9KRU5fU0NSSVBULCB0aGlzLnBhY2thZ2UucHJvamVuQ29tbWFuZCk7XG4gICAgfVxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke1BST0pFTl9ESVJ9L2ApO1xuXG4gICAgY29uc3QgcHJvamVuID0gb3B0aW9ucy5wcm9qZW5EZXZEZXBlbmRlbmN5ID8/ICh0aGlzLnBhcmVudCA/IGZhbHNlIDogdHJ1ZSk7XG4gICAgaWYgKHByb2plbiAmJiAhdGhpcy5lamVjdGVkKSB7XG4gICAgICBjb25zdCBwb3N0Zml4ID0gb3B0aW9ucy5wcm9qZW5WZXJzaW9uID8gYEAke29wdGlvbnMucHJvamVuVmVyc2lvbn1gIDogXCJcIjtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyhgcHJvamVuJHtwb3N0Zml4fWApO1xuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmRlcHMuaXNEZXBlbmRlbmN5U2F0aXNmaWVkKFxuICAgICAgICAgIFwiY29uc3RydWN0c1wiLFxuICAgICAgICAgIERlcGVuZGVuY3lUeXBlLkJVSUxELFxuICAgICAgICAgIFwiXjEwLjAuMFwiXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmFkZERldkRlcHMoYGNvbnN0cnVjdHNAXjEwLjAuMGApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiIGlzIHRlbXBvcmFyaWx5IGEgcmVxdWlyZWQgb3B0aW9uIHdoaWxlIHdlIG1pZ3JhdGUgaXRzIGRlZmF1bHQgdmFsdWUgZnJvbSBcIm1hc3RlclwiIHRvIFwibWFpblwiJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZEVuYWJsZWQgPSBvcHRpb25zLmJ1aWxkV29ya2Zsb3cgPz8gKHRoaXMucGFyZW50ID8gZmFsc2UgOiB0cnVlKTtcblxuICAgIC8vIGNvbmZpZ3VyZSBqZXN0IGlmIGVuYWJsZWRcbiAgICAvLyBtdXN0IGJlIGJlZm9yZSB0aGUgYnVpbGQvcmVsZWFzZSB3b3JrZmxvd3NcbiAgICBpZiAob3B0aW9ucy5qZXN0ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuamVzdCA9IG5ldyBKZXN0KHRoaXMsIG9wdGlvbnMuamVzdE9wdGlvbnMpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzSWRUb2tlblBlcm1pc3Npb24gPVxuICAgICAgKG9wdGlvbnMuc2NvcGVkUGFja2FnZXNPcHRpb25zID8/IFtdKS5sZW5ndGggPiAwICYmXG4gICAgICBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnM/LmF1dGhQcm92aWRlciA9PT1cbiAgICAgICAgQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLkdJVEhVQl9PSURDO1xuXG4gICAgY29uc3Qgd29ya2Zsb3dQZXJtaXNzaW9uczogSm9iUGVybWlzc2lvbnMgPSB7XG4gICAgICBpZFRva2VuOiByZXF1aXJlc0lkVG9rZW5QZXJtaXNzaW9uID8gSm9iUGVybWlzc2lvbi5XUklURSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgY29uc3QgYnVpbGRXb3JrZmxvd09wdGlvbnM6IEJ1aWxkV29ya2Zsb3dPcHRpb25zID1cbiAgICAgIG9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnMgPz8ge307XG5cbiAgICBpZiAoYnVpbGRFbmFibGVkICYmICh0aGlzLmdpdGh1YiB8fCBHaXRIdWIub2YodGhpcy5yb290KSkpIHtcbiAgICAgIHRoaXMuYnVpbGRXb3JrZmxvdyA9IG5ldyBCdWlsZFdvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgYnVpbGRUYXNrOiB0aGlzLmJ1aWxkVGFzayxcbiAgICAgICAgYXJ0aWZhY3RzRGlyZWN0b3J5OiB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgY29udGFpbmVySW1hZ2U6IG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZSxcbiAgICAgICAgZ2l0SWRlbnRpdHk6IHRoaXMud29ya2Zsb3dHaXRJZGVudGl0eSxcbiAgICAgICAgbXV0YWJsZUJ1aWxkOiBvcHRpb25zLm11dGFibGVCdWlsZCxcbiAgICAgICAgd29ya2Zsb3dUcmlnZ2Vyczogb3B0aW9ucy5idWlsZFdvcmtmbG93VHJpZ2dlcnMsXG4gICAgICAgIHBlcm1pc3Npb25zOiB3b3JrZmxvd1Blcm1pc3Npb25zLFxuICAgICAgICAuLi5idWlsZFdvcmtmbG93T3B0aW9ucyxcbiAgICAgICAgcHJlQnVpbGRTdGVwczogdGhpcy5yZW5kZXJXb3JrZmxvd1NldHVwKHtcbiAgICAgICAgICBpbnN0YWxsU3RlcENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHRoaXMuZGV0ZXJtaW5lSW5zdGFsbFdvcmtpbmdEaXJlY3RvcnkoKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG11dGFibGU6XG4gICAgICAgICAgICBidWlsZFdvcmtmbG93T3B0aW9ucy5tdXRhYmxlQnVpbGQgPz8gb3B0aW9ucy5tdXRhYmxlQnVpbGQgPz8gdHJ1ZSxcbiAgICAgICAgfSkuY29uY2F0KGJ1aWxkV29ya2Zsb3dPcHRpb25zLnByZUJ1aWxkU3RlcHMgPz8gW10pLFxuICAgICAgICBwb3N0QnVpbGRTdGVwczogb3B0aW9ucy5wb3N0QnVpbGRTdGVwcyxcbiAgICAgICAgLi4uZmlsdGVyZWRSdW5zT25PcHRpb25zKFxuICAgICAgICAgIG9wdGlvbnMud29ya2Zsb3dSdW5zT24sXG4gICAgICAgICAgb3B0aW9ucy53b3JrZmxvd1J1bnNPbkdyb3VwXG4gICAgICAgICksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5idWlsZFdvcmtmbG93LmFkZFBvc3RCdWlsZFN0ZXBzKFxuICAgICAgICAuLi50aGlzLnJlbmRlclVwbG9hZENvdmVyYWdlSm9iU3RlcChvcHRpb25zKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlID1cbiAgICAgIG9wdGlvbnMucmVsZWFzZSA/P1xuICAgICAgb3B0aW9ucy5yZWxlYXNlV29ya2Zsb3cgPz9cbiAgICAgICh0aGlzLnBhcmVudCA/IGZhbHNlIDogdHJ1ZSk7XG4gICAgaWYgKHJlbGVhc2UpIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyhWZXJzaW9uLlNUQU5EQVJEX1ZFUlNJT04pO1xuICAgICAgdGhpcy5yZWxlYXNlID0gbmV3IFJlbGVhc2UodGhpcywge1xuICAgICAgICB2ZXJzaW9uRmlsZTogXCJwYWNrYWdlLmpzb25cIiwgLy8gdGhpcyBpcyB3aGVyZSBcInZlcnNpb25cIiBpcyBzZXQgYWZ0ZXIgYnVtcFxuICAgICAgICB0YXNrOiB0aGlzLmJ1aWxkVGFzayxcbiAgICAgICAgYnJhbmNoOiBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoID8/IFwibWFpblwiLFxuICAgICAgICAuLi5vcHRpb25zLFxuXG4gICAgICAgIGFydGlmYWN0c0RpcmVjdG9yeTogdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgIHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM6IFtcbiAgICAgICAgICAuLi50aGlzLnJlbmRlcldvcmtmbG93U2V0dXAoe1xuICAgICAgICAgICAgaW5zdGFsbFN0ZXBDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHRoaXMuZGV0ZXJtaW5lSW5zdGFsbFdvcmtpbmdEaXJlY3RvcnkoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtdXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4ob3B0aW9ucy5yZWxlYXNlV29ya2Zsb3dTZXR1cFN0ZXBzID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgICAgcG9zdEJ1aWxkU3RlcHM6IFtcbiAgICAgICAgICAuLi4ob3B0aW9ucy5wb3N0QnVpbGRTdGVwcyA/PyBbXSksXG4gICAgICAgICAgLi4udGhpcy5yZW5kZXJVcGxvYWRDb3ZlcmFnZUpvYlN0ZXAob3B0aW9ucyksXG4gICAgICAgIF0sXG5cbiAgICAgICAgd29ya2Zsb3dOb2RlVmVyc2lvbjogdGhpcy5ub2RlVmVyc2lvbixcbiAgICAgICAgd29ya2Zsb3dQZXJtaXNzaW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnB1Ymxpc2hlciA9IHRoaXMucmVsZWFzZS5wdWJsaXNoZXI7XG5cbiAgICAgIGNvbnN0IG5vZGVQYWNrYWdlVG9SZWxlYXNlQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyTWFwcGluZzogUmVjb3JkPFxuICAgICAgICBOb2RlUGFja2FnZUNvZGVBcnRpZmFjdEF1dGhQcm92aWRlcixcbiAgICAgICAgUmVsZWFzZUNvZGVBcnRpZmFjdEF1dGhQcm92aWRlclxuICAgICAgPiA9IHtcbiAgICAgICAgW05vZGVQYWNrYWdlQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLkFDQ0VTU19BTkRfU0VDUkVUX0tFWV9QQUlSXTpcbiAgICAgICAgICBSZWxlYXNlQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLkFDQ0VTU19BTkRfU0VDUkVUX0tFWV9QQUlSLFxuICAgICAgICBbTm9kZVBhY2thZ2VDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuR0lUSFVCX09JRENdOlxuICAgICAgICAgIFJlbGVhc2VDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuR0lUSFVCX09JREMsXG4gICAgICB9O1xuXG4gICAgICBpZiAob3B0aW9ucy5yZWxlYXNlVG9OcG0gPz8gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgY29kZUFydGlmYWN0T3B0aW9uczogTnBtUHVibGlzaE9wdGlvbnNbXCJjb2RlQXJ0aWZhY3RPcHRpb25zXCJdID1cbiAgICAgICAgICBpc0F3c0NvZGVBcnRpZmFjdFJlZ2lzdHJ5KHRoaXMucGFja2FnZS5ucG1SZWdpc3RyeSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGFjY2Vzc0tleUlkU2VjcmV0OlxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zPy5hY2Nlc3NLZXlJZFNlY3JldCxcbiAgICAgICAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXlTZWNyZXQ6XG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnM/LnNlY3JldEFjY2Vzc0tleVNlY3JldCxcbiAgICAgICAgICAgICAgICByb2xlVG9Bc3N1bWU6IG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8ucm9sZVRvQXNzdW1lLFxuICAgICAgICAgICAgICAgIGF1dGhQcm92aWRlcjogb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zPy5hdXRoUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgID8gbm9kZVBhY2thZ2VUb1JlbGVhc2VDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXJNYXBwaW5nW1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucy5hdXRoUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgOiBSZWxlYXNlQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLkFDQ0VTU19BTkRfU0VDUkVUX0tFWV9QQUlSLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9O1xuICAgICAgICB0aGlzLnJlbGVhc2UucHVibGlzaGVyLnB1Ymxpc2hUb05wbSh7XG4gICAgICAgICAgcmVnaXN0cnk6IHRoaXMucGFja2FnZS5ucG1SZWdpc3RyeSxcbiAgICAgICAgICBucG1Ub2tlblNlY3JldDogdGhpcy5wYWNrYWdlLm5wbVRva2VuU2VjcmV0LFxuICAgICAgICAgIG5wbVByb3ZlbmFuY2U6IHRoaXMucGFja2FnZS5ucG1Qcm92ZW5hbmNlLFxuICAgICAgICAgIGNvZGVBcnRpZmFjdE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyB2YWxpZGF0ZSB0aGF0IG5vIHJlbGVhc2Ugb3B0aW9ucyBhcmUgc2VsZWN0ZWQgaWYgdGhlIHJlbGVhc2Ugd29ya2Zsb3cgaXMgZGlzYWJsZWQuXG4gICAgICBpZiAob3B0aW9ucy5yZWxlYXNlVG9OcG0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdcInJlbGVhc2VUb05wbVwiIGlzIG5vdCBzdXBwb3J0ZWQgaWYgXCJyZWxlYXNlXCIgaXMgbm90IHNldCdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMucmVsZWFzZUV2ZXJ5Q29tbWl0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnXCJyZWxlYXNlRXZlcnlDb21taXRcIiBpcyBub3Qgc3VwcG9ydGVkIGlmIFwicmVsZWFzZVwiIGlzIG5vdCBzZXQnXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnJlbGVhc2VTY2hlZHVsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1wicmVsZWFzZVNjaGVkdWxlXCIgaXMgbm90IHN1cHBvcnRlZCBpZiBcInJlbGVhc2VcIiBpcyBub3Qgc2V0J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChvcHRpb25zLmF1dG9NZXJnZSA/PyB0cnVlKSAmJlxuICAgICAgdGhpcy5naXRodWI/Lm1lcmdpZnkgJiZcbiAgICAgIHRoaXMuYnVpbGRXb3JrZmxvdz8uYnVpbGRKb2JJZHNcbiAgICApIHtcbiAgICAgIHRoaXMuYXV0b01lcmdlID0gbmV3IEF1dG9NZXJnZSh0aGlzLmdpdGh1Yiwgb3B0aW9ucy5hdXRvTWVyZ2VPcHRpb25zKTtcbiAgICAgIHRoaXMuYXV0b01lcmdlLmFkZENvbmRpdGlvbnNMYXRlcih7XG4gICAgICAgIHJlbmRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLmJ1aWxkV29ya2Zsb3c/LmJ1aWxkSm9iSWRzLm1hcCgoaWQpID0+IGBzdGF0dXMtc3VjY2Vzcz0ke2lkfWApID8/XG4gICAgICAgICAgW10sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXBlbmRhYm90ID0gb3B0aW9ucy5kZXBlbmRhYm90ID8/IGZhbHNlO1xuICAgIGNvbnN0IGRlcHNVcGdyYWRlID0gb3B0aW9ucy5kZXBzVXBncmFkZSA/PyAhZGVwZW5kYWJvdDtcblxuICAgIGlmIChkZXBlbmRhYm90ICYmIGRlcHNVcGdyYWRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiJ2RlcGVuZGFib3QnIGNhbm5vdCBiZSBjb25maWd1cmVkIHRvZ2V0aGVyIHdpdGggJ2RlcHNVcGdyYWRlJ1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlcHNBdXRvQXBwcm92ZSA9IG9wdGlvbnMuYXV0b0FwcHJvdmVVcGdyYWRlcyA/PyBmYWxzZTtcblxuICAgIGlmIChkZXBzQXV0b0FwcHJvdmUgJiYgIXRoaXMuYXV0b0FwcHJvdmUgJiYgdGhpcy5naXRodWIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBdXRvbWF0aWMgYXBwcm92YWwgb2YgZGVwZW5kZW5jaWVzIHVwZ3JhZGVzIHJlcXVpcmVzIGNvbmZpZ3VyaW5nIGBhdXRvQXBwcm92ZU9wdGlvbnNgXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0b0FwcHJvdmVMYWJlbCA9IChjb25kaXRpb246IGJvb2xlYW4pID0+XG4gICAgICBjb25kaXRpb24gJiYgdGhpcy5hdXRvQXBwcm92ZT8ubGFiZWxcbiAgICAgICAgPyBbdGhpcy5hdXRvQXBwcm92ZS5sYWJlbF1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZGVwZW5kYWJvdCkge1xuICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICAgIGxhYmVsczogYXV0b0FwcHJvdmVMYWJlbChkZXBzQXV0b0FwcHJvdmUpLFxuICAgICAgfTtcbiAgICAgIHRoaXMuZ2l0aHViPy5hZGREZXBlbmRhYm90KFxuICAgICAgICBkZWVwTWVyZ2UoW2RlZmF1bHRPcHRpb25zLCBvcHRpb25zLmRlcGVuZGFib3RPcHRpb25zID8/IHt9XSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGRlcHNVcGdyYWRlKSB7XG4gICAgICBjb25zdCBkZWZhdWx0T3B0aW9uczogVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnMgPSB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIGNvbnRhaW5lcjogb3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbWFnZTogb3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBsYWJlbHM6IGF1dG9BcHByb3ZlTGFiZWwoZGVwc0F1dG9BcHByb3ZlKSxcbiAgICAgICAgICBnaXRJZGVudGl0eTogdGhpcy53b3JrZmxvd0dpdElkZW50aXR5LFxuICAgICAgICAgIHBlcm1pc3Npb25zOiB3b3JrZmxvd1Blcm1pc3Npb25zLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMudXBncmFkZVdvcmtmbG93ID0gbmV3IFVwZ3JhZGVEZXBlbmRlbmNpZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGRlZXBNZXJnZShbZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMuZGVwc1VwZ3JhZGVPcHRpb25zID8/IHt9XSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucHVsbFJlcXVlc3RUZW1wbGF0ZSA/PyB0cnVlKSB7XG4gICAgICB0aGlzLmdpdGh1Yj8uYWRkUHVsbFJlcXVlc3RUZW1wbGF0ZShcbiAgICAgICAgLi4uKG9wdGlvbnMucHVsbFJlcXVlc3RUZW1wbGF0ZUNvbnRlbnRzID8/IFtdKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9qZW5yY0pzID0gb3B0aW9ucy5wcm9qZW5yY0pzID8/ICFvcHRpb25zLnByb2plbnJjSnNvbjtcbiAgICBpZiAoIXRoaXMucGFyZW50ICYmIHByb2plbnJjSnMpIHtcbiAgICAgIGNvbnN0IHByb2plbnJjSnNGaWxlID0gbmV3IFByb2plbnJjKHRoaXMsIG9wdGlvbnMucHJvamVucmNKc09wdGlvbnMpO1xuXG4gICAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7cHJvamVucmNKc0ZpbGUuZmlsZVBhdGh9YCk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLnByb2plbnJjSnNvbikge1xuICAgICAgY29uc3QgcHJvamVucmNKc29uRmlsZSA9IFByb2plbnJjSnNvbi5vZih0aGlzKTtcbiAgICAgIGlmIChwcm9qZW5yY0pzb25GaWxlKSB7XG4gICAgICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKGAvJHtwcm9qZW5yY0pzb25GaWxlLmZpbGVQYXRofWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCBhIGJ1bmRsZXIgY29tcG9uZW50IC0gdGhpcyBlbmFibGVzIHRoaW5ncyBsaWtlIExhbWJkYSBidW5kbGluZyBhbmQgaW4gdGhlIGZ1dHVyZSB3ZWIgYnVuZGxpbmcuXG4gICAgdGhpcy5idW5kbGVyID0gbmV3IEJ1bmRsZXIodGhpcywgb3B0aW9ucy5idW5kbGVyT3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wYWNrYWdlID8/IHRydWUpIHtcbiAgICAgIHRoaXMucGFja2FnZVRhc2suZXhlYyhgbWtkaXIgLXAgJHt0aGlzLmFydGlmYWN0c0phdmFzY3JpcHREaXJlY3Rvcnl9YCk7XG5cbiAgICAgIGNvbnN0IHBrZ01nciA9XG4gICAgICAgIHRoaXMucGFja2FnZS5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE1cbiAgICAgICAgICA/IFwicG5wbVwiXG4gICAgICAgICAgOiBcIm5wbVwiO1xuICAgICAgdGhpcy5wYWNrYWdlVGFzay5leGVjKFxuICAgICAgICBgJHtwa2dNZ3J9IHBhY2sgLS1wYWNrLWRlc3RpbmF0aW9uICR7dGhpcy5hcnRpZmFjdHNKYXZhc2NyaXB0RGlyZWN0b3J5fWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucHJldHRpZXIgPz8gZmFsc2UpIHtcbiAgICAgIHRoaXMucHJldHRpZXIgPSBuZXcgUHJldHRpZXIodGhpcywgeyAuLi5vcHRpb25zLnByZXR0aWVyT3B0aW9ucyB9KTtcbiAgICB9XG5cbiAgICAvLyBGb3IgUE5QTSwgdGhlIGRlZmF1bHQgcmVzb2x1dGlvbiBtb2RlIGlzIFwibG93ZXN0XCIsIHdoaWNoIGxlYWRzIHRvIGFueSBub24tdmVyc2lvbmVkIChpZSAnKicpIGRlcGVuZGVuY2llcyBiZWluZ1xuICAgIC8vIHJlc29sdmVkIHRvIHRoZSBsb3dlc3QgYXZhaWxhYmxlIHZlcnNpb24sIHdoaWNoIGlzIHVubGlrZWx5IHRvIGJlIGV4cGVjdGVkIGJlaGF2aW91ciBmb3IgdXNlcnMuIFdlIHNldCByZXNvbHV0aW9uXG4gICAgLy8gbW9kZSB0byBcImhpZ2hlc3RcIiB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIHlhcm4gYW5kIG5wbS5cbiAgICBpZiAodGhpcy5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgICAgdGhpcy5ucG1yYy5hZGRDb25maWcoXCJyZXNvbHV0aW9uLW1vZGVcIiwgXCJoaWdoZXN0XCIpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNoZWNrTGljZW5zZXMpIHtcbiAgICAgIG5ldyBMaWNlbnNlQ2hlY2tlcih0aGlzLCBvcHRpb25zLmNoZWNrTGljZW5zZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lSW5zdGFsbFdvcmtpbmdEaXJlY3RvcnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiBlbnN1cmVSZWxhdGl2ZVBhdGhTdGFydHNXaXRoRG90KHJlbGF0aXZlKFwiLlwiLCB0aGlzLnJvb3Qub3V0ZGlyKSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVXBsb2FkQ292ZXJhZ2VKb2JTdGVwKG9wdGlvbnM6IE5vZGVQcm9qZWN0T3B0aW9ucyk6IEpvYlN0ZXBbXSB7XG4gICAgLy8gcnVuIGNvZGVjb3YgaWYgZW5hYmxlZCBvciBhIHNlY3JldCB0b2tlbiBuYW1lIGlzIHBhc3NlZCBpblxuICAgIC8vIEFORCBqZXN0IG11c3QgYmUgY29uZmlndXJlZFxuICAgIGlmICgob3B0aW9ucy5jb2RlQ292IHx8IG9wdGlvbnMuY29kZUNvdlRva2VuU2VjcmV0KSAmJiB0aGlzLmplc3Q/LmNvbmZpZykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiVXBsb2FkIGNvdmVyYWdlIHRvIENvZGVjb3ZcIixcbiAgICAgICAgICB1c2VzOiBcImNvZGVjb3YvY29kZWNvdi1hY3Rpb25AdjRcIixcbiAgICAgICAgICB3aXRoOiBvcHRpb25zLmNvZGVDb3ZUb2tlblNlY3JldFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgdG9rZW46IGBcXCR7eyBzZWNyZXRzLiR7b3B0aW9ucy5jb2RlQ292VG9rZW5TZWNyZXR9IH19YCxcbiAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6IHRoaXMuamVzdC5jb25maWcuY292ZXJhZ2VEaXJlY3RvcnksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogdGhpcy5qZXN0LmNvbmZpZy5jb3ZlcmFnZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkQmlucyhiaW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgdGhpcy5wYWNrYWdlLmFkZEJpbihiaW5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgY29udGVudHMgb2YgYW4gbnBtIHBhY2thZ2UuanNvbiBzY3JpcHQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBzY3JpcHQgbmFtZVxuICAgKiBAcGFyYW0gY29tbWFuZCBUaGUgY29tbWFuZCB0byBleGVjdXRlXG4gICAqL1xuICBwdWJsaWMgc2V0U2NyaXB0KG5hbWU6IHN0cmluZywgY29tbWFuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5wYWNrYWdlLnNldFNjcmlwdChuYW1lLCBjb21tYW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgY29udGVudHMgb2YgbXVsdGlwbGUgbnBtIHBhY2thZ2UuanNvbiBzY3JpcHRzLlxuICAgKiBAcGFyYW0gc2NyaXB0cyBUaGUgc2NyaXB0cyB0byBzZXRcbiAgICovXG4gIHB1YmxpYyBhZGRTY3JpcHRzKHNjcmlwdHM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMoc2NyaXB0cykpIHtcbiAgICAgIHRoaXMucGFja2FnZS5zZXRTY3JpcHQobmFtZSwgY29tbWFuZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIG5wbSBzY3JpcHQgKGFsd2F5cyBzdWNjZXNzZnVsKS5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHNjcmlwdC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVTY3JpcHQobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wYWNrYWdlLnJlbW92ZVNjcmlwdChuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBzY3JpcHQgYnkgdGhlIG5hbWUgbmFtZSBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgc2NyaXB0XG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcHJvamVjdC50YXNrcy50cnlGaW5kKG5hbWUpYFxuICAgKi9cbiAgcHVibGljIGhhc1NjcmlwdChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlLmhhc1NjcmlwdChuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBERVBSRUNBVEVEXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgcHJvamVjdC5jb21waWxlVGFzay5leGVjKClgXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcGlsZUNvbW1hbmQoLi4uY29tbWFuZHM6IHN0cmluZ1tdKSB7XG4gICAgZm9yIChjb25zdCBjIG9mIGNvbW1hbmRzKSB7XG4gICAgICB0aGlzLmNvbXBpbGVUYXNrLmV4ZWMoYyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURURcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBwcm9qZWN0LnRlc3RUYXNrLmV4ZWMoKWBcbiAgICovXG4gIHB1YmxpYyBhZGRUZXN0Q29tbWFuZCguLi5jb21tYW5kczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgY29tbWFuZHMpIHtcbiAgICAgIHRoaXMudGVzdFRhc2suZXhlYyhjKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlyZWN0bHkgc2V0IGZpZWxkcyBpbiBgcGFja2FnZS5qc29uYC5cbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIHNldFxuICAgKi9cbiAgcHVibGljIGFkZEZpZWxkcyhmaWVsZHM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkcykpIHtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZChuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMga2V5d29yZHMgdG8gcGFja2FnZS5qc29uIChkZWR1cGxpY2F0ZWQpXG4gICAqIEBwYXJhbSBrZXl3b3JkcyBUaGUga2V5d29yZHMgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkS2V5d29yZHMoLi4ua2V5d29yZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wYWNrYWdlLmFkZEtleXdvcmRzKC4uLmtleXdvcmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RlcHMgZm9yIHNjb3BlZCBwYWNrYWdlIGFjY2Vzc1xuICAgKlxuICAgKiBAcGFyYW0gY29kZUFydGlmYWN0T3B0aW9ucyBEZXRhaWxzIG9mIGxvZ2dpbmcgaW4gdG8gQVdTXG4gICAqIEByZXR1cm5zIGFycmF5IG9mIGpvYiBzdGVwcyByZXF1aXJlZCBmb3IgZWFjaCBwcml2YXRlIHNjb3BlZCBwYWNrYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRTY29wZWRQYWNrYWdlU3RlcHMoXG4gICAgY29kZUFydGlmYWN0T3B0aW9uczogQ29kZUFydGlmYWN0T3B0aW9ucyB8IHVuZGVmaW5lZFxuICApOiBKb2JTdGVwW10ge1xuICAgIGNvbnN0IHBhcnNlZENvZGVBcnRpZmFjdE9wdGlvbnMgPSB7XG4gICAgICBhY2Nlc3NLZXlJZFNlY3JldDpcbiAgICAgICAgY29kZUFydGlmYWN0T3B0aW9ucz8uYWNjZXNzS2V5SWRTZWNyZXQgPz8gXCJBV1NfQUNDRVNTX0tFWV9JRFwiLFxuICAgICAgc2VjcmV0QWNjZXNzS2V5U2VjcmV0OlxuICAgICAgICBjb2RlQXJ0aWZhY3RPcHRpb25zPy5zZWNyZXRBY2Nlc3NLZXlTZWNyZXQgPz8gXCJBV1NfU0VDUkVUX0FDQ0VTU19LRVlcIixcbiAgICAgIHJvbGVUb0Fzc3VtZTogY29kZUFydGlmYWN0T3B0aW9ucz8ucm9sZVRvQXNzdW1lLFxuICAgICAgYXV0aFByb3ZpZGVyOiBjb2RlQXJ0aWZhY3RPcHRpb25zPy5hdXRoUHJvdmlkZXIsXG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgIHBhcnNlZENvZGVBcnRpZmFjdE9wdGlvbnMuYXV0aFByb3ZpZGVyID09PVxuICAgICAgTm9kZVBhY2thZ2VDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuR0lUSFVCX09JRENcbiAgICApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcIkNvbmZpZ3VyZSBBV1MgQ3JlZGVudGlhbHNcIixcbiAgICAgICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjRcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBcImF3cy1yZWdpb25cIjogXCJ1cy1lYXN0LTJcIixcbiAgICAgICAgICAgIFwicm9sZS10by1hc3N1bWVcIjogcGFyc2VkQ29kZUFydGlmYWN0T3B0aW9ucy5yb2xlVG9Bc3N1bWUsXG4gICAgICAgICAgICBcInJvbGUtZHVyYXRpb24tc2Vjb25kc1wiOiA5MDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQVdTIENvZGVBcnRpZmFjdCBMb2dpblwiLFxuICAgICAgICAgIHJ1bjogYCR7dGhpcy5ydW5TY3JpcHRDb21tYW5kfSBjYTpsb2dpbmAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmIChwYXJzZWRDb2RlQXJ0aWZhY3RPcHRpb25zLnJvbGVUb0Fzc3VtZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQ29uZmlndXJlIEFXUyBDcmVkZW50aWFsc1wiLFxuICAgICAgICAgIHVzZXM6IFwiYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0B2NFwiLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIFwiYXdzLWFjY2Vzcy1rZXktaWRcIjogc2VjcmV0VG9TdHJpbmcoXG4gICAgICAgICAgICAgIHBhcnNlZENvZGVBcnRpZmFjdE9wdGlvbnMuYWNjZXNzS2V5SWRTZWNyZXRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcImF3cy1zZWNyZXQtYWNjZXNzLWtleVwiOiBzZWNyZXRUb1N0cmluZyhcbiAgICAgICAgICAgICAgcGFyc2VkQ29kZUFydGlmYWN0T3B0aW9ucy5zZWNyZXRBY2Nlc3NLZXlTZWNyZXRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcImF3cy1yZWdpb25cIjogXCJ1cy1lYXN0LTJcIixcbiAgICAgICAgICAgIFwicm9sZS10by1hc3N1bWVcIjogcGFyc2VkQ29kZUFydGlmYWN0T3B0aW9ucy5yb2xlVG9Bc3N1bWUsXG4gICAgICAgICAgICBcInJvbGUtZHVyYXRpb24tc2Vjb25kc1wiOiA5MDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQVdTIENvZGVBcnRpZmFjdCBMb2dpblwiLFxuICAgICAgICAgIHJ1bjogYCR7dGhpcy5ydW5TY3JpcHRDb21tYW5kfSBjYTpsb2dpbmAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiQVdTIENvZGVBcnRpZmFjdCBMb2dpblwiLFxuICAgICAgICBydW46IGAke3RoaXMucnVuU2NyaXB0Q29tbWFuZH0gY2E6bG9naW5gLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBBV1NfQUNDRVNTX0tFWV9JRDogc2VjcmV0VG9TdHJpbmcoXG4gICAgICAgICAgICBwYXJzZWRDb2RlQXJ0aWZhY3RPcHRpb25zLmFjY2Vzc0tleUlkU2VjcmV0XG4gICAgICAgICAgKSxcbiAgICAgICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IHNlY3JldFRvU3RyaW5nKFxuICAgICAgICAgICAgcGFyc2VkQ29kZUFydGlmYWN0T3B0aW9ucy5zZWNyZXRBY2Nlc3NLZXlTZWNyZXRcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiB3b3JrZmxvdyBzdGVwcyB3aGljaCBzaG91bGQgYmUgZXhlY3V0ZWQgdG8gYm9vdHN0cmFwIGFcbiAgICogd29ya2Zsb3cuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMuXG4gICAqIEByZXR1cm5zIEpvYiBzdGVwc1xuICAgKi9cbiAgcHVibGljIHJlbmRlcldvcmtmbG93U2V0dXAoXG4gICAgb3B0aW9uczogUmVuZGVyV29ya2Zsb3dTZXR1cE9wdGlvbnMgPSB7fVxuICApOiBKb2JTdGVwW10ge1xuICAgIGNvbnN0IGluc3RhbGwgPSBuZXcgQXJyYXk8Sm9iU3RlcD4oKTtcblxuICAgIC8vIGZpcnN0IHJ1biB0aGUgd29ya2Zsb3cgYm9vdHN0cmFwIHN0ZXBzXG4gICAgaW5zdGFsbC5wdXNoKC4uLnRoaXMud29ya2Zsb3dCb290c3RyYXBTdGVwcyk7XG5cbiAgICBpZiAodGhpcy5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgICAgaW5zdGFsbC5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJTZXR1cCBwbnBtXCIsXG4gICAgICAgIHVzZXM6IFwicG5wbS9hY3Rpb24tc2V0dXBAdjNcIixcbiAgICAgICAgd2l0aDogeyB2ZXJzaW9uOiB0aGlzLnBhY2thZ2UucG5wbVZlcnNpb24gfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOKSB7XG4gICAgICBpbnN0YWxsLnB1c2goe1xuICAgICAgICBuYW1lOiBcIlNldHVwIGJ1blwiLFxuICAgICAgICB1c2VzOiBcIm92ZW4tc2gvc2V0dXAtYnVuQHYxXCIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyICE9PSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOKSB7XG4gICAgICBpZiAodGhpcy5ub2RlVmVyc2lvbiB8fCB0aGlzLndvcmtmbG93UGFja2FnZUNhY2hlKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID1cbiAgICAgICAgICB0aGlzLnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOXG4gICAgICAgICAgICA/IFwieWFyblwiXG4gICAgICAgICAgICA6IHRoaXMucGFja2FnZS5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk4yXG4gICAgICAgICAgICA/IFwieWFyblwiXG4gICAgICAgICAgICA6IHRoaXMucGFja2FnZS5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQ0xBU1NJQ1xuICAgICAgICAgICAgPyBcInlhcm5cIlxuICAgICAgICAgICAgOiB0aGlzLnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZXG4gICAgICAgICAgICA/IFwieWFyblwiXG4gICAgICAgICAgICA6IHRoaXMucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5CVU5cbiAgICAgICAgICAgID8gXCJidW5cIlxuICAgICAgICAgICAgOiB0aGlzLnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNXG4gICAgICAgICAgICA/IFwicG5wbVwiXG4gICAgICAgICAgICA6IFwibnBtXCI7XG4gICAgICAgIGluc3RhbGwucHVzaCh7XG4gICAgICAgICAgbmFtZTogXCJTZXR1cCBOb2RlLmpzXCIsXG4gICAgICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLW5vZGVAdjRcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAuLi4odGhpcy5ub2RlVmVyc2lvbiAmJiB7XG4gICAgICAgICAgICAgIFwibm9kZS12ZXJzaW9uXCI6IHRoaXMubm9kZVZlcnNpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLndvcmtmbG93UGFja2FnZUNhY2hlICYmIHtcbiAgICAgICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtdXRhYmxlID0gb3B0aW9ucy5tdXRhYmxlID8/IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMucGFja2FnZS5zY29wZWRQYWNrYWdlc09wdGlvbnMpIHtcbiAgICAgIGluc3RhbGwucHVzaChcbiAgICAgICAgLi4udGhpcy5nZXRTY29wZWRQYWNrYWdlU3RlcHModGhpcy5wYWNrYWdlLmNvZGVBcnRpZmFjdE9wdGlvbnMpXG4gICAgICApO1xuICAgIH1cblxuICAgIGluc3RhbGwucHVzaCh7XG4gICAgICBuYW1lOiBcIkluc3RhbGwgZGVwZW5kZW5jaWVzXCIsXG4gICAgICBydW46IG11dGFibGVcbiAgICAgICAgPyB0aGlzLnBhY2thZ2UuaW5zdGFsbEFuZFVwZGF0ZUxvY2tmaWxlQ29tbWFuZFxuICAgICAgICA6IHRoaXMucGFja2FnZS5pbnN0YWxsQ29tbWFuZCxcbiAgICAgIC4uLihvcHRpb25zLmluc3RhbGxTdGVwQ29uZmlndXJhdGlvbiA/PyB7fSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW5zdGFsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG5vcm1hbCBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkZXBzIE5hbWVzIG1vZHVsZXMgdG8gaW5zdGFsbC4gQnkgZGVmYXVsdCwgdGhlIHRoZSBkZXBlbmRlbmN5IHdpbGxcbiAgICogYmUgaW5zdGFsbGVkIGluIHRoZSBuZXh0IGBucHggcHJvamVuYCBydW4gYW5kIHRoZSB2ZXJzaW9uIHdpbGwgYmUgcmVjb3JkZWRcbiAgICogaW4geW91ciBgcGFja2FnZS5qc29uYCBmaWxlLiBZb3UgY2FuIHVwZ3JhZGUgbWFudWFsbHkgb3IgdXNpbmcgYHlhcm5cbiAgICogYWRkL3VwZ3JhZGVgLiBJZiB5b3Ugd2lzaCB0byBzcGVjaWZ5IGEgdmVyc2lvbiByYW5nZSB1c2UgdGhpcyBzeW50YXg6XG4gICAqIGBtb2R1bGVAXjdgLlxuICAgKi9cbiAgcHVibGljIGFkZERlcHMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlLmFkZERlcHMoLi4uZGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBkZXZlbG9wbWVudC90ZXN0IGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHBhcmFtIGRlcHMgTmFtZXMgbW9kdWxlcyB0byBpbnN0YWxsLiBCeSBkZWZhdWx0LCB0aGUgdGhlIGRlcGVuZGVuY3kgd2lsbFxuICAgKiBiZSBpbnN0YWxsZWQgaW4gdGhlIG5leHQgYG5weCBwcm9qZW5gIHJ1biBhbmQgdGhlIHZlcnNpb24gd2lsbCBiZSByZWNvcmRlZFxuICAgKiBpbiB5b3VyIGBwYWNrYWdlLmpzb25gIGZpbGUuIFlvdSBjYW4gdXBncmFkZSBtYW51YWxseSBvciB1c2luZyBgeWFyblxuICAgKiBhZGQvdXBncmFkZWAuIElmIHlvdSB3aXNoIHRvIHNwZWNpZnkgYSB2ZXJzaW9uIHJhbmdlIHVzZSB0aGlzIHN5bnRheDpcbiAgICogYG1vZHVsZUBeN2AuXG4gICAqL1xuICBwdWJsaWMgYWRkRGV2RGVwcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UuYWRkRGV2RGVwcyguLi5kZXBzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHBlZXIgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBXaGVuIGFkZGluZyBwZWVyIGRlcGVuZGVuY2llcywgYSBkZXZEZXBlbmRlbmN5IHdpbGwgYWxzbyBiZSBhZGRlZCBvbiB0aGVcbiAgICogcGlubmVkIHZlcnNpb24gb2YgdGhlIGRlY2xhcmVkIHBlZXIuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3UgYXJlIHRlc3RpbmdcbiAgICogeW91ciBjb2RlIGFnYWluc3QgdGhlIG1pbmltdW0gdmVyc2lvbiByZXF1aXJlZCBmcm9tIHlvdXIgY29uc3VtZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gZGVwcyBOYW1lcyBtb2R1bGVzIHRvIGluc3RhbGwuIEJ5IGRlZmF1bHQsIHRoZSB0aGUgZGVwZW5kZW5jeSB3aWxsXG4gICAqIGJlIGluc3RhbGxlZCBpbiB0aGUgbmV4dCBgbnB4IHByb2plbmAgcnVuIGFuZCB0aGUgdmVyc2lvbiB3aWxsIGJlIHJlY29yZGVkXG4gICAqIGluIHlvdXIgYHBhY2thZ2UuanNvbmAgZmlsZS4gWW91IGNhbiB1cGdyYWRlIG1hbnVhbGx5IG9yIHVzaW5nIGB5YXJuXG4gICAqIGFkZC91cGdyYWRlYC4gSWYgeW91IHdpc2ggdG8gc3BlY2lmeSBhIHZlcnNpb24gcmFuZ2UgdXNlIHRoaXMgc3ludGF4OlxuICAgKiBgbW9kdWxlQF43YC5cbiAgICovXG4gIHB1YmxpYyBhZGRQZWVyRGVwcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UuYWRkUGVlckRlcHMoLi4uZGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBidW5kbGVkIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQnVuZGxlZCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBhZGRlZCBhcyBub3JtYWwgZGVwZW5kZW5jaWVzIGFzIHdlbGwgYXMgdG8gdGhlXG4gICAqIGBidW5kbGVkRGVwZW5kZW5jaWVzYCBzZWN0aW9uIG9mIHlvdXIgYHBhY2thZ2UuanNvbmAuXG4gICAqXG4gICAqIEBwYXJhbSBkZXBzIE5hbWVzIG1vZHVsZXMgdG8gaW5zdGFsbC4gQnkgZGVmYXVsdCwgdGhlIHRoZSBkZXBlbmRlbmN5IHdpbGxcbiAgICogYmUgaW5zdGFsbGVkIGluIHRoZSBuZXh0IGBucHggcHJvamVuYCBydW4gYW5kIHRoZSB2ZXJzaW9uIHdpbGwgYmUgcmVjb3JkZWRcbiAgICogaW4geW91ciBgcGFja2FnZS5qc29uYCBmaWxlLiBZb3UgY2FuIHVwZ3JhZGUgbWFudWFsbHkgb3IgdXNpbmcgYHlhcm5cbiAgICogYWRkL3VwZ3JhZGVgLiBJZiB5b3Ugd2lzaCB0byBzcGVjaWZ5IGEgdmVyc2lvbiByYW5nZSB1c2UgdGhpcyBzeW50YXg6XG4gICAqIGBtb2R1bGVAXjdgLlxuICAgKi9cbiAgcHVibGljIGFkZEJ1bmRsZWREZXBzKC4uLmRlcHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZS5hZGRCdW5kbGVkRGVwcyguLi5kZXBzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHBhdHRlcm5zIHRvIGJlIGlnbm9yZWQgYnkgbnBtLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBpZ25vcmUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHlvdSBhcmUgaGF2aW5nIHRyb3VibGUgZ2V0dGluZyBhbiBpZ25vcmUgdG8gcG9wdWxhdGUsIHRyeSB1c2luZyB5b3VyIGNvbnN0cnVjdCBvciBjb21wb25lbnQncyBwcmVTeW50aGVzaXplIG1ldGhvZCB0byBwcm9wZXJseSBkZWxheSBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFkZFBhY2thZ2VJZ25vcmUocGF0dGVybjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmFkZFBhdHRlcm5zKHBhdHRlcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMaWNlbnNlKG9wdGlvbnM6IE5vZGVQcm9qZWN0T3B0aW9ucykge1xuICAgIGlmICh0aGlzLnBhY2thZ2UubGljZW5zZSkge1xuICAgICAgbmV3IExpY2Vuc2UodGhpcywge1xuICAgICAgICBzcGR4OiB0aGlzLnBhY2thZ2UubGljZW5zZSxcbiAgICAgICAgY29weXJpZ2h0T3duZXI6IG9wdGlvbnMuY29weXJpZ2h0T3duZXIgPz8gb3B0aW9ucy5hdXRob3JOYW1lLFxuICAgICAgICBjb3B5cmlnaHRQZXJpb2Q6IG9wdGlvbnMuY29weXJpZ2h0UGVyaW9kLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0R2l0SWdub3JlKCkge1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXG4gICAgICBcIiMgTG9nc1wiLFxuICAgICAgXCJsb2dzXCIsXG4gICAgICBcIioubG9nXCIsXG4gICAgICBcIm5wbS1kZWJ1Zy5sb2cqXCIsXG4gICAgICBcInlhcm4tZGVidWcubG9nKlwiLFxuICAgICAgXCJ5YXJuLWVycm9yLmxvZypcIixcbiAgICAgIFwibGVybmEtZGVidWcubG9nKlwiLFxuXG4gICAgICBcIiMgRGlhZ25vc3RpYyByZXBvcnRzIChodHRwczovL25vZGVqcy5vcmcvYXBpL3JlcG9ydC5odG1sKVwiLFxuICAgICAgXCJyZXBvcnQuWzAtOV0qLlswLTldKi5bMC05XSouWzAtOV0qLmpzb25cIixcblxuICAgICAgXCIjIFJ1bnRpbWUgZGF0YVwiLFxuICAgICAgXCJwaWRzXCIsXG4gICAgICBcIioucGlkXCIsXG4gICAgICBcIiouc2VlZFwiLFxuICAgICAgXCIqLnBpZC5sb2NrXCIsXG5cbiAgICAgIFwiIyBEaXJlY3RvcnkgZm9yIGluc3RydW1lbnRlZCBsaWJzIGdlbmVyYXRlZCBieSBqc2NvdmVyYWdlL0pTQ292ZXJcIixcbiAgICAgIFwibGliLWNvdlwiLFxuXG4gICAgICBcIiMgQ292ZXJhZ2UgZGlyZWN0b3J5IHVzZWQgYnkgdG9vbHMgbGlrZSBpc3RhbmJ1bFwiLFxuICAgICAgXCJjb3ZlcmFnZVwiLFxuICAgICAgXCIqLmxjb3ZcIixcblxuICAgICAgXCIjIG55YyB0ZXN0IGNvdmVyYWdlXCIsXG4gICAgICBcIi5ueWNfb3V0cHV0XCIsXG5cbiAgICAgIFwiIyBDb21waWxlZCBiaW5hcnkgYWRkb25zIChodHRwczovL25vZGVqcy5vcmcvYXBpL2FkZG9ucy5odG1sKVwiLFxuICAgICAgXCJidWlsZC9SZWxlYXNlXCIsXG5cbiAgICAgIFwiIyBEZXBlbmRlbmN5IGRpcmVjdG9yaWVzXCIsXG4gICAgICBcIm5vZGVfbW9kdWxlcy9cIixcbiAgICAgIFwianNwbV9wYWNrYWdlcy9cIixcblxuICAgICAgXCIjIFR5cGVTY3JpcHQgY2FjaGVcIixcbiAgICAgIFwiKi50c2J1aWxkaW5mb1wiLFxuXG4gICAgICBcIiMgT3B0aW9uYWwgZXNsaW50IGNhY2hlXCIsXG4gICAgICBcIi5lc2xpbnRjYWNoZVwiLFxuXG4gICAgICBcIiMgT3V0cHV0IG9mICducG0gcGFjaydcIixcbiAgICAgIFwiKi50Z3pcIixcblxuICAgICAgXCIjIFlhcm4gSW50ZWdyaXR5IGZpbGVcIixcbiAgICAgIFwiLnlhcm4taW50ZWdyaXR5XCIsXG5cbiAgICAgIFwiIyBwYXJjZWwtYnVuZGxlciBjYWNoZSAoaHR0cHM6Ly9wYXJjZWxqcy5vcmcvKVwiLFxuICAgICAgXCIuY2FjaGVcIlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hlbGwgY29tbWFuZCB0byBleGVjdXRlIGluIG9yZGVyIHRvIHJ1biBhIHRhc2suIFRoaXMgd2lsbFxuICAgKiB0eXBpY2FsbHkgYmUgYG5weCBwcm9qZW4gVEFTS2AuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrIFRoZSB0YXNrIGZvciB3aGljaCB0aGUgY29tbWFuZCBpcyByZXF1aXJlZFxuICAgKi9cbiAgcHVibGljIHJ1blRhc2tDb21tYW5kKHRhc2s6IFRhc2spIHtcbiAgICByZXR1cm4gYCR7dGhpcy5wYWNrYWdlLnByb2plbkNvbW1hbmR9ICR7dGFzay5uYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGpvYiBJRCBvZiB0aGUgYnVpbGQgd29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJ1aWxkV29ya2Zsb3dKb2JJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZFdvcmtmbG93Py5idWlsZEpvYklkc1swXTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGByZW5kZXJXb3JrZmxvd1NldHVwKClgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcldvcmtmbG93U2V0dXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgaW5zdGFsbCBzdGVwIGluIHRoZSB3b3JrZmxvdyBzZXR1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgeyBuYW1lOiBcIkluc3RhbGwgZGVwZW5kZW5jaWVzXCIgfWBcbiAgICpcbiAgICogQGV4YW1wbGUgLSB7IHdvcmtpbmdEaXJlY3Rvcnk6IFwicm9vdHByb2plY3QtZGlyXCIgfSBmb3Igc3VicHJvamVjdHMgaW5zdGFsbGluZyBmcm9tIHJvb3QuXG4gICAqIEBleGFtcGxlIC0geyBlbnY6IHsgTlBNX1RPS0VOOiBcInRva2VuXCIgfX0gZm9yIGluc3RhbGxpbmcgZnJvbSBwcml2YXRlIG5wbSByZWdpc3RyeS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxTdGVwQ29uZmlndXJhdGlvbj86IEpvYlN0ZXBDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBwYWNrYWdlIGxvY2tmaWxlIGJlIHVwZGF0ZWQ/XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtdXRhYmxlPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -45,5 +45,5 @@ class NpmConfig extends component_1.Component {
45
45
  }
46
46
  exports.NpmConfig = NpmConfig;
47
47
  _a = JSII_RTTI_SYMBOL_1;
48
- NpmConfig[_a] = { fqn: "projen.javascript.NpmConfig", version: "0.85.2" };
48
+ NpmConfig[_a] = { fqn: "projen.javascript.NpmConfig", version: "0.86.1" };
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhc2NyaXB0L25wbS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7QUFDekMsZ0NBQWlDO0FBdUJqQzs7R0FFRztBQUNILE1BQWEsU0FBVSxTQUFRLHFCQUFTO0lBT3RDLFlBQVksT0FBb0IsRUFBRSxVQUE0QixFQUFFO1FBQzlELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVBqQjs7O1dBR0c7UUFDYyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBS2hDLElBQUksYUFBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztTQUM3QixDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFjO1FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7O0FBdENILDhCQXVDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEluaUZpbGUgfSBmcm9tIFwiLi4vaW5pXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5cbi8qKlxuICogT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGxvY2FsIE5QTSBjb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOcG1Db25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVSTCBvZiB0aGUgcmVnaXN0cnkgbWlycm9yIHRvIHVzZVxuICAgKlxuICAgKiBZb3UgY2FuIGNoYW5nZSB0aGlzIG9yIGFkZCBzY29wZWQgcmVnaXN0cmllcyB1c2luZyB0aGUgYWRkUmVnaXN0cnkgbWV0aG9kXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIG5wbWpzIGRlZmF1bHQgcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPbWl0cyBlbXB0eSBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBvbWl0RW1wdHk/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEZpbGUgcmVwcmVzZW50aW5nIHRoZSBsb2NhbCBOUE0gY29uZmlnIGluIC5ucG1yY1xuICovXG5leHBvcnQgY2xhc3MgTnBtQ29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWcgb2JqZWN0LiBUaGlzIG9iamVjdCBjYW4gYmUgbXV0YXRlZCB1bnRpbCB0aGUgcHJvamVjdCBpc1xuICAgKiBzeW50aGVzaXplZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogTnBtQ29uZmlnT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBuZXcgSW5pRmlsZShwcm9qZWN0LCBcIi5ucG1yY1wiLCB7XG4gICAgICBvYmo6IHRoaXMuY29uZmlnLFxuICAgICAgb21pdEVtcHR5OiBvcHRpb25zLm9taXRFbXB0eSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnJlZ2lzdHJ5KSB7XG4gICAgICB0aGlzLmFkZFJlZ2lzdHJ5KG9wdGlvbnMucmVnaXN0cnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjb25maWd1cmUgYSBzY29wZWQgcmVnaXN0cnlcbiAgICpcbiAgICogQHBhcmFtIHVybCB0aGUgVVJMIG9mIHRoZSByZWdpc3RyeSB0byB1c2VcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0aGUgcmVnaXN0cnkgaXMgdXNlZCBmb3I7IGxlYXZlIGVtcHR5IGZvciB0aGUgZGVmYXVsdCByZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGFkZFJlZ2lzdHJ5KHVybDogc3RyaW5nLCBzY29wZT86IHN0cmluZykge1xuICAgIHRoaXMuYWRkQ29uZmlnKHNjb3BlID8gYCR7c2NvcGV9OnJlZ2lzdHJ5YCA6IFwicmVnaXN0cnlcIiwgdXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb25maWd1cmUgYSBnZW5lcmljIHByb3BlcnR5XG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgcHVibGljIGFkZENvbmZpZyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZ1tuYW1lXSA9IHZhbHVlO1xuICB9XG59XG4iXX0=
@@ -177,5 +177,5 @@ class Prettier extends component_1.Component {
177
177
  }
178
178
  exports.Prettier = Prettier;
179
179
  _a = JSII_RTTI_SYMBOL_1;
180
- Prettier[_a] = { fqn: "projen.javascript.Prettier", version: "0.85.2" };
180
+ Prettier[_a] = { fqn: "projen.javascript.Prettier", version: "0.86.1" };
181
181
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC9wcmV0dGllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6QyxnREFBK0Q7QUFFL0Qsa0NBQW1DO0FBRW5DLGdEQUE0QztBQUM1QyxrQ0FBbUM7QUE4TW5DLElBQVksV0FVWDtBQVZELFdBQVksV0FBVztJQUNyQjs7T0FFRztJQUNILGdDQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsOEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcsV0FBVywyQkFBWCxXQUFXLFFBVXRCO0FBRUQsSUFBWSwwQkFVWDtBQVZELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gsMkNBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gseUNBQVcsQ0FBQTtBQUNiLENBQUMsRUFWVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQVVyQztBQUVELElBQVksU0FxQlg7QUFyQkQsV0FBWSxTQUFTO0lBQ25COzs7T0FHRztJQUNILDBCQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILHNCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILDBCQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILHNCQUFTLENBQUE7QUFDWCxDQUFDLEVBckJXLFNBQVMseUJBQVQsU0FBUyxRQXFCcEI7QUFFRCxJQUFZLHlCQWVYO0FBZkQsV0FBWSx5QkFBeUI7SUFDbkM7O09BRUc7SUFDSCx3Q0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCw4Q0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDhDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFmVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQWVwQztBQXdCRCxJQUFZLFNBZVg7QUFmRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDRCQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILGtDQUFxQixD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YUFBYTtRQUNsQiwwR0FBMEc7UUFDMUcsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFZLEVBQW1CLEVBQUUsQ0FDckQsQ0FBQyxZQUFZLHdCQUFVLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTNGSCw0QkE0RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ25vcmVGaWxlLCBJZ25vcmVGaWxlT3B0aW9ucyB9IGZyb20gXCIuLi9pZ25vcmUtZmlsZVwiO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi4vanNvblwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBTb3VyY2VDb2RlIH0gZnJvbSBcIi4uL3NvdXJjZS1jb2RlXCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuLi95YW1sXCI7XG4vKipcbiAqIE9wdGlvbnMgZm9yIFByZXR0aWVyXG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXR0aWVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGFuIC5wcmV0dGllcklnbm9yZSBmaWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIC5wcmV0dGllcmlnbm9yZSBmaWxlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVGaWxlT3B0aW9ucz86IElnbm9yZUZpbGVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQcmV0dGllciBzZXR0aW5ncy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IHNldHRpbmdzXG4gICAqL1xuICByZWFkb25seSBzZXR0aW5ncz86IFByZXR0aWVyU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBsaXN0IG9mIHBhdHRlcm5zIHRvIG92ZXJyaWRlIHByZXR0aWVyIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqIEBzZWUgaHR0cHM6Ly9wcmV0dGllci5pby9kb2NzL2VuL2NvbmZpZ3VyYXRpb24uaHRtbCNjb25maWd1cmF0aW9uLW92ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogUHJldHRpZXJPdmVycmlkZVtdO1xuXG4gIC8qKlxuICAgKiBXcml0ZSBwcmV0dGllciBjb25maWd1cmF0aW9uIGFzIFlBTUwgaW5zdGVhZCBvZiBKU09OXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB5YW1sPzogYm9vbGVhbjtcbn1cbi8qKlxuICogT3B0aW9ucyB0byBzZXQgaW4gUHJldHRpZXIgZGlyZWN0bHkgb3IgdGhyb3VnaCBvdmVycmlkZXNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vcHJldHRpZXIuaW8vZG9jcy9lbi9vcHRpb25zLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmV0dGllclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEluY2x1ZGUgcGFyZW50aGVzZXMgYXJvdW5kIGEgc29sZSBhcnJvdyBmdW5jdGlvbiBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFycm93UGFyZW5zLkFMV0FZU1xuICAgKi9cbiAgcmVhZG9ubHkgYXJyb3dQYXJlbnM/OiBBcnJvd1BhcmVucztcbiAgLyoqXG4gICAqIFB1dCA+IG9mIG9wZW5pbmcgdGFncyBvbiB0aGUgbGFzdCBsaW5lIGluc3RlYWQgb2Ygb24gYSBuZXcgbGluZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGJyYWNrZXRTYW1lTGluZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmludCBzcGFjZXMgYmV0d2VlbiBicmFja2V0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYnJhY2tldFNwYWNpbmc/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJpbnQgKHRvIHN0ZGVycikgd2hlcmUgYSBjdXJzb3IgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIHdvdWxkIG1vdmUgdG8gYWZ0ZXIgZm9ybWF0dGluZy5cbiAgICogVGhpcyBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCAtLXJhbmdlLXN0YXJ0IGFuZCAtLXJhbmdlLWVuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLTFcbiAgICovXG4gIHJlYWRvbmx5IGN1cnNvck9mZnNldD86IG51bWJlcjtcbiAgLyoqXG4gICAqIENvbnRyb2wgaG93IFByZXR0aWVyIGZvcm1hdHMgcXVvdGVkIGNvZGUgZW1iZWRkZWQgaW4gdGhlIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IEVtYmVkZGVkTGFuZ3VhZ2VGb3JtYXR0aW5nLkFVVE9cbiAgICovXG4gIHJlYWRvbmx5IGVtYmVkZGVkTGFuZ3VhZ2VGb3JtYXR0aW5nPzogRW1iZWRkZWRMYW5ndWFnZUZvcm1hdHRpbmc7XG4gIC8qKlxuICAgKiBXaGljaCBlbmQgb2YgbGluZSBjaGFyYWN0ZXJzIHRvIGFwcGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBFbmRPZkxpbmUuTEZcbiAgICovXG4gIHJlYWRvbmx5IGVuZE9mTGluZT86IEVuZE9mTGluZTtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGlucHV0IGZpbGVwYXRoLiBUaGlzIHdpbGwgYmUgdXNlZCB0byBkbyBwYXJzZXIgaW5mZXJlbmNlLlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICByZWFkb25seSBmaWxlcGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIEhvdyB0byBoYW5kbGUgd2hpdGVzcGFjZXMgaW4gSFRNTC5cbiAgICpcbiAgICogQGRlZmF1bHQgSFRNTFdoaXRlc3BhY2VTZW5zaXRpdml0eS5DU1NcbiAgICovXG4gIHJlYWRvbmx5IGh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHk/OiBIVE1MV2hpdGVzcGFjZVNlbnNpdGl2aXR5O1xuICAvKipcbiAgICogSW5zZXJ0IEBmb3JtYXQgcHJhZ21hIGludG8gZmlsZSdzIGZpcnN0IGRvY2Jsb2NrIGNvbW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbnNlcnRQcmFnbWE/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlIHNpbmdsZSBxdW90ZXMgaW4gSlNYLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkganN4U2luZ2xlUXVvdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hpY2ggcGFyc2VyIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBQcmV0dGllciBhdXRvbWF0aWNhbGx5IGluZmVycyB0aGUgcGFyc2VyIGZyb20gdGhlIGlucHV0IGZpbGUgcGF0aCwgc28geW91IHNob3VsZG7igJl0IGhhdmUgdG8gY2hhbmdlIHRoaXMgc2V0dGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHBhcnNlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZCBhIHBsdWdpbi4gTXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgcGFzc2VkIGFzIHNlcGFyYXRlIGAtLXBsdWdpbmBzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2lucz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ3VzdG9tIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHByZXR0aWVyIHBsdWdpbnMgaW4gbm9kZV9tb2R1bGVzIHN1YmRpcmVjdG9yeS5cbiAgICogT3ZlcnJpZGVzIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBwbHVnaW5zIGFyZSBzZWFyY2hlZCByZWxhdGl2ZWx5IHRvIHRoZSBsb2NhdGlvbiBvZlxuICAgKiBQcmV0dGllci5cbiAgICogTXVsdGlwbGUgdmFsdWVzIGFyZSBhY2NlcHRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNlYXJjaERpcnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsaW5lIGxlbmd0aCB3aGVyZSBQcmV0dGllciB3aWxsIHRyeSB3cmFwLlxuICAgKlxuICAgKiBAZGVmYXVsdCA4MFxuICAgKi9cbiAgcmVhZG9ubHkgcHJpbnRXaWR0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyB0byB3cmFwIHByb3NlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9zZVdyYXAuUFJFU0VSVkVcbiAgICovXG4gIHJlYWRvbmx5IHByb3NlV3JhcD86IFByb3NlV3JhcDtcbiAgLyoqXG4gICAqIENoYW5nZSB3aGVuIHByb3BlcnRpZXMgaW4gb2JqZWN0cyBhcmUgcXVvdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBRdW90ZVByb3BzLkFTTkVFREVEXG4gICAqL1xuICByZWFkb25seSBxdW90ZVByb3BzPzogUXVvdGVQcm9wcztcbiAgLyoqXG4gICAqIEZvcm1hdCBjb2RlIGVuZGluZyBhdCBhIGdpdmVuIGNoYXJhY3RlciBvZmZzZXQgKGV4Y2x1c2l2ZSkuXG4gICAqIFRoZSByYW5nZSB3aWxsIGV4dGVuZCBmb3J3YXJkcyB0byB0aGUgZW5kIG9mIHRoZSBzZWxlY3RlZCBzdGF0ZW1lbnQuXG4gICAqIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1jdXJzb3Itb2Zmc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICByZWFkb25seSByYW5nZUVuZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEZvcm1hdCBjb2RlIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gY2hhcmFjdGVyIG9mZnNldC5cbiAgICogVGhlIHJhbmdlIHdpbGwgZXh0ZW5kIGJhY2t3YXJkcyB0byB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IGxpbmUgY29udGFpbmluZyB0aGUgc2VsZWN0ZWRcbiAgICogc3RhdGVtZW50LlxuICAgKiBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tY3Vyc29yLW9mZnNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgcmFuZ2VTdGFydD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmUgZWl0aGVyICdAcHJldHRpZXInIG9yICdAZm9ybWF0JyB0byBiZSBwcmVzZW50IGluIHRoZSBmaWxlJ3MgZmlyc3QgZG9jYmxvY2tcbiAgICogY29tbWVudFxuICAgKiBpbiBvcmRlciBmb3IgaXQgdG8gYmUgZm9ybWF0dGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZVByYWdtYT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmludCBzZW1pY29sb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzZW1pPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSBzaW5nbGUgcXVvdGVzIGluc3RlYWQgb2YgZG91YmxlIHF1b3Rlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNpbmdsZVF1b3RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBzcGFjZXMgcGVyIGluZGVudGF0aW9uIGxldmVsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSB0YWJXaWR0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFByaW50IHRyYWlsaW5nIGNvbW1hcyB3aGVyZXZlciBwb3NzaWJsZSB3aGVuIG11bHRpLWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRyYWlsaW5nQ29tbWEuRVM1XG4gICAqL1xuICByZWFkb25seSB0cmFpbGluZ0NvbW1hPzogVHJhaWxpbmdDb21tYTtcbiAgLyoqXG4gICAqIEluZGVudCB3aXRoIHRhYnMgaW5zdGVhZCBvZiBzcGFjZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1c2VUYWJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGVudCBzY3JpcHQgYW5kIHN0eWxlIHRhZ3MgaW4gVnVlIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdnVlSW5kZW50U2NyaXB0QW5kU3R5bGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBBcnJvd1BhcmVucyB7XG4gIC8qKlxuICAgKiBBbHdheXMgaW5jbHVkZSBwYXJlbnMuIEV4YW1wbGU6IGAoeCkgPT4geGBcbiAgICovXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG5cbiAgLyoqXG4gICAqIE9taXQgcGFyZW5zIHdoZW4gcG9zc2libGUuIEV4YW1wbGU6IGB4ID0+IHhgXG4gICAqL1xuICBBVk9JRCA9IFwiYXZvaWRcIixcbn1cblxuZXhwb3J0IGVudW0gRW1iZWRkZWRMYW5ndWFnZUZvcm1hdHRpbmcge1xuICAvKipcbiAgICogRm9ybWF0IGVtYmVkZGVkIGNvZGUgaWYgUHJldHRpZXIgY2FuIGF1dG9tYXRpY2FsbHkgaWRlbnRpZnkgaXQuXG4gICAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG5cbiAgLyoqXG4gICAqIE5ldmVyIGF1dG9tYXRpY2FsbHkgZm9ybWF0IGVtYmVkZGVkIGNvZGUuXG4gICAqL1xuICBPRkYgPSBcIm9mZlwiLFxufVxuXG5leHBvcnQgZW51bSBFbmRPZkxpbmUge1xuICAvKipcbiAgICogTWFpbnRhaW4gZXhpc3RpbmcgKG1peGVkIHZhbHVlcyB3aXRoaW4gb25lIGZpbGUgYXJlIG5vcm1hbGlzZWQgYnkgbG9va2luZ1xuICAgKiBhdCB3aGF0J3MgdXNlZCBhZnRlciB0aGUgZmlyc3QgbGluZSlcbiAgICovXG4gIEFVVE8gPSBcImF1dG9cIixcblxuICAvKipcbiAgICogQ2FycmlhZ2UgUmV0dXJuIGNoYXJhY3RlciBvbmx5IChcXHIpLCB1c2VkIHZlcnkgcmFyZWx5XG4gICAqL1xuICBDUiA9IFwiY3JcIixcblxuICAvKipcbiAgICogQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkIGNoYXJhY3RlcnMgKFxcclxcbiksIGNvbW1vbiBvbiBXaW5kb3dzXG4gICAqL1xuICBDUkxGID0gXCJjcmxmXCIsXG5cbiAgLyoqXG4gICAqIExpbmUgRmVlZCBvbmx5IChcXG4pLCBjb21tb24gb24gTGludXggYW5kIG1hY09TIGFzIHdlbGwgYXMgaW5zaWRlIGdpdCByZXBvc1xuICAgKi9cbiAgTEYgPSBcImxmXCIsXG59XG5cbmV4cG9ydCBlbnVtIEhUTUxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHkge1xuICAvKipcbiAgICogUmVzcGVjdCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBDU1MgZGlzcGxheSBwcm9wZXJ0eS5cbiAgICovXG4gIENTUyA9IFwiY3NzXCIsXG5cbiAgLyoqXG4gICAqIFdoaXRlc3BhY2VzIGFyZSBjb25zaWRlcmVkIGluc2lnbmlmaWNhbnQuXG4gICAqL1xuICBJR05PUkUgPSBcImlnbm9yZVwiLFxuXG4gIC8qKlxuICAgKiBXaGl0ZXNwYWNlcyBhcmUgY29uc2lkZXJlZCBzaWduaWZpY2FudC5cbiAgICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldHRpZXJPdmVycmlkZSB7XG4gIC8qKlxuICAgKiBFeGNsdWRlIHRoZXNlIGZpbGVzIGZyb20gdGhpcyBvdmVycmlkZS5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVGaWxlcz86IEZpbGVzO1xuICAvKipcbiAgICogSW5jbHVkZSB0aGVzZSBmaWxlcyBpbiB0aGlzIG92ZXJyaWRlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXM6IEZpbGVzO1xuICAvKipcbiAgICogVGhlIG9wdGlvbnMgdG8gYXBwbHkgZm9yIHRoaXMgb3ZlcnJpZGUuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zOiBQcmV0dGllclNldHRpbmdzO1xufVxuXG4vKipcbiAqIEV4Y2x1ZGUgdGhlc2UgZmlsZXMgZnJvbSB0aGlzIG92ZXJyaWRlLlxuICpcbiAqIEluY2x1ZGUgdGhlc2UgZmlsZXMgaW4gdGhpcyBvdmVycmlkZS5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsZXMgPSBzdHJpbmdbXSB8IHN0cmluZztcblxuZXhwb3J0IGVudW0gUHJvc2VXcmFwIHtcbiAgLyoqXG4gICAqIFdyYXAgcHJvc2UgaWYgaXQgZXhjZWVkcyB0aGUgcHJpbnQgd2lkdGguXG4gICAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuXG4gIC8qKlxuICAgKiBEbyBub3Qgd3JhcCBwcm9zZS5cbiAgICovXG4gIE5FVkVSID0gXCJuZXZlclwiLFxuXG4gIC8qKlxuICAgKiBXcmFwIHByb3NlIGFzLWlzLlxuICAgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG59XG5cbmV4cG9ydCBlbnVtIFF1b3RlUHJvcHMge1xuICAvKipcbiAgICogT25seSBhZGQgcXVvdGVzIGFyb3VuZCBvYmplY3QgcHJvcGVydGllcyB3aGVyZSByZXF1aXJlZC5cbiAgICovXG4gIEFTTkVFREVEID0gXCJhcy1uZWVkZWRcIixcblxuICAvKipcbiAgICogSWYgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGluIGFuIG9iamVjdCByZXF1aXJlcyBxdW90ZXMsIHF1b3RlIGFsbCBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgQ09OU0lTVEVOVCA9IFwiY29uc2lzdGVudFwiLFxuXG4gIC8qKlxuICAgKiBSZXNwZWN0IHRoZSBpbnB1dCB1c2Ugb2YgcXVvdGVzIGluIG9iamVjdCBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG59XG5cbmV4cG9ydCBlbnVtIFRyYWlsaW5nQ29tbWEge1xuICAvKipcbiAgICogVHJhaWxpbmcgY29tbWFzIHdoZXJldmVyIHBvc3NpYmxlIChpbmNsdWRpbmcgZnVuY3Rpb24gYXJndW1lbnRzKS5cbiAgICovXG4gIEFMTCA9IFwiYWxsXCIsXG5cbiAgLyoqXG4gICAqIFRyYWlsaW5nIGNvbW1hcyB3aGVyZSB2YWxpZCBpbiBFUzUgKG9iamVjdHMsIGFycmF5cywgZXRjLilcbiAgICovXG4gIEVTNSA9IFwiZXM1XCIsXG5cbiAgLyoqXG4gICAqIE5vIHRyYWlsaW5nIGNvbW1hcy5cbiAgICovXG4gIE5PTkUgPSBcIm5vbmVcIixcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHByZXR0aWVyIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmV0dGllciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IFByZXR0aWVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc1ByZXR0aWVyID0gKGM6IENvbXBvbmVudCk6IGMgaXMgUHJldHRpZXIgPT4gYyBpbnN0YW5jZW9mIFByZXR0aWVyO1xuICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc1ByZXR0aWVyKTtcbiAgfVxuICAvKipcbiAgICogRGlyZWN0IGFjY2VzcyB0byB0aGUgcHJldHRpZXIgc2V0dGluZ3NcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXR0aW5nczogUHJldHRpZXJTZXR0aW5ncztcblxuICAvKipcbiAgICogVGhlIC5wcmV0dGllcklnbm9yZSBmaWxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlnbm9yZUZpbGU/OiBJZ25vcmVGaWxlO1xuXG4gIC8qKlxuICAgKiBEaXJlY3QgYWNjZXNzIHRvIHRoZSBwcmV0dGllciBvdmVycmlkZXNcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVycmlkZXM6IFByZXR0aWVyT3ZlcnJpZGVbXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogUHJldHRpZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLl9vdmVycmlkZXMgPSBvcHRpb25zLm92ZXJyaWRlcyA/PyBbXTtcblxuICAgIGlmIChvcHRpb25zLmlnbm9yZUZpbGUgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5pZ25vcmVGaWxlID0gbmV3IElnbm9yZUZpbGUoXG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIFwiLnByZXR0aWVyaWdub3JlXCIsXG4gICAgICAgIG9wdGlvbnMuaWdub3JlRmlsZU9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIHByb2plY3QuYWRkUGFja2FnZUlnbm9yZShcIi8ucHJldHRpZXJpZ25vcmVcIik7XG4gICAgfVxuXG4gICAgcHJvamVjdC5hZGREZXZEZXBzKFwicHJldHRpZXJcIik7XG5cbiAgICB0aGlzLnNldHRpbmdzID0ge1xuICAgICAgLi4ub3B0aW9ucy5zZXR0aW5ncyxcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMueWFtbCkge1xuICAgICAgbmV3IFlhbWxGaWxlKHByb2plY3QsIFwiLnByZXR0aWVycmMueW1sXCIsIHtcbiAgICAgICAgb2JqOiAoKSA9PiAoeyAuLi50aGlzLnNldHRpbmdzLCBvdmVycmlkZXM6IFsuLi50aGlzLl9vdmVycmlkZXNdIH0pLFxuICAgICAgICBtYXJrZXI6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHByb2plY3QuYWRkUGFja2FnZUlnbm9yZShcIi8ucHJldHRpZXJyYy55bWxcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ldyBKc29uRmlsZShwcm9qZWN0LCBcIi5wcmV0dGllcnJjLmpzb25cIiwge1xuICAgICAgICBvYmo6ICgpID0+ICh7IC4uLnRoaXMuc2V0dGluZ3MsIG92ZXJyaWRlczogWy4uLnRoaXMuX292ZXJyaWRlc10gfSksXG4gICAgICAgIG1hcmtlcjogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHByb2plY3QuYWRkUGFja2FnZUlnbm9yZShcIi8ucHJldHRpZXJyYy5qc29uXCIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwcmV0dGllciBvdmVycmlkZVxuICAgKiBAc2VlIGh0dHBzOi8vcHJldHRpZXIuaW8vZG9jcy9lbi9jb25maWd1cmF0aW9uLmh0bWwjY29uZmlndXJhdGlvbi1vdmVycmlkZXNcbiAgICogQHBhcmFtIHtQcmV0dGllck92ZXJyaWRlfSBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFkZE92ZXJyaWRlKG92ZXJyaWRlOiBQcmV0dGllck92ZXJyaWRlKSB7XG4gICAgdGhpcy5fb3ZlcnJpZGVzLnB1c2gob3ZlcnJpZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgUHJldHRpZXIgaWdub3JlIFBhdHRlcm5zXG4gICAqIHRoZXNlIHBhdHRlcm5zIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGZpbGUgLnByZXR0aWVyaWdub3JlXG4gICAqXG4gICAqIEBwYXJhbSBwYXR0ZXJuIGZpbGVwYXR0ZXJucyBzbyBleGNsdWRlIGZyb20gcHJldHRpZXIgZm9ybWF0dGluZ1xuICAgKi9cbiAgcHVibGljIGFkZElnbm9yZVBhdHRlcm4ocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5pZ25vcmVGaWxlPy5hZGRQYXR0ZXJucyhwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgUmV0dXJucyBhbGwgUHJldHRpZXIgb3ZlcnJpZGVzXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXJyaWRlcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX292ZXJyaWRlc107XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICAvLyBBZGQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgU291cmNlQ29kZSBmaWxlcyB0byAucHJldHRpZXJpZ25vcmUgYXMgdGhleSBtYXkgbm90IGJlIGZvcm1hdHRlZCBjb3JyZWN0bHkuXG4gICAgY29uc3QgaXNTb3VyY2VDb2RlID0gKGM6IENvbXBvbmVudCk6IGMgaXMgU291cmNlQ29kZSA9PlxuICAgICAgYyBpbnN0YW5jZW9mIFNvdXJjZUNvZGU7XG4gICAgdGhpcy5wcm9qZWN0LmNvbXBvbmVudHMuZmlsdGVyKGlzU291cmNlQ29kZSkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgdGhpcy5hZGRJZ25vcmVQYXR0ZXJuKGMuZmlsZVBhdGgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -68,5 +68,5 @@ class Projenrc extends projenrc_1.ProjenrcFile {
68
68
  }
69
69
  exports.Projenrc = Projenrc;
70
70
  _a = JSII_RTTI_SYMBOL_1;
71
- Projenrc[_a] = { fqn: "projen.javascript.Projenrc", version: "0.85.2" };
71
+ Projenrc[_a] = { fqn: "projen.javascript.Projenrc", version: "0.86.1" };
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUEwRDtBQUMxRCwrQkFBd0M7QUFDeEMscUNBQWtDO0FBQ2xDLHFEQUEyRDtBQUMzRCxzQ0FBMEQ7QUFFMUQsMENBQTJDO0FBVTNDOzs7OztHQUtHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsdUJBQVk7SUFHeEMsWUFBWSxPQUFnQixFQUFFLFVBQTJCLEVBQUU7UUFDekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLHNDQUE2QixDQUFDO1FBRWxFLHlEQUF5RDtRQUN6RCxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFZSxhQUFhO1FBQzNCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV0QixNQUFNLE1BQU0sR0FBRyxlQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEIsS0FBSyxFQUFFO2dCQUNMLHVDQUF1QyxFQUFFLEtBQUs7Z0JBQzlDLG1DQUFtQyxFQUFFLEtBQUs7YUFDM0M7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUEsY0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLElBQUEsZUFBVSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLGlCQUFpQjtRQUMzQixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSx3Q0FBdUIsRUFBQztZQUMzRCxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDNUIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3BCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtTQUNyQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVwQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixTQUFTLElBQUksZUFBZSxJQUFJLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFL0IsSUFBQSxjQUFTLEVBQUMsSUFBQSxjQUFPLEVBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFBLGtCQUFhLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RCLDBDQUEwQyxNQUFNLEVBQUUsQ0FDbkQsQ0FBQztJQUNKLENBQUM7O0FBakVILDRCQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgZGlybmFtZSwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBFc2xpbnQgfSBmcm9tIFwiLi9lc2xpbnRcIjtcbmltcG9ydCB7IHJlbmRlckphdmFTY3JpcHRPcHRpb25zIH0gZnJvbSBcIi4vcmVuZGVyLW9wdGlvbnNcIjtcbmltcG9ydCB7IERFRkFVTFRfUFJPSkVOX1JDX0pTX0ZJTEVOQU1FIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBQcm9qZW5yY0ZpbGUgfSBmcm9tIFwiLi4vcHJvamVucmNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZW5yY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plbnJjIGZpbGUuXG4gICAqIEBkZWZhdWx0IFwiLnByb2plbnJjLmpzXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVuYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcHJvamVucmMgZmlsZSB3cml0dGVuIGluIEphdmFTY3JpcHRcbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgaW5zdGFudGlhdGVkIGluIGFueSB0eXBlIG9mIHByb2plY3RcbiAqIGFuZCBoYXMgbm8gZXhwZWN0YXRpb25zIGFyb3VuZCB0aGUgcHJvamVjdCdzIG1haW4gbGFuZ3VhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZW5yYyBleHRlbmRzIFByb2plbnJjRmlsZSB7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmZpbGVQYXRoID0gb3B0aW9ucy5maWxlbmFtZSA/PyBERUZBVUxUX1BST0pFTl9SQ19KU19GSUxFTkFNRTtcblxuICAgIC8vIHRoaXMgaXMgdGhlIHRhc2sgcHJvamVuIGV4ZWN1dGVzIHdoZW4gcnVubmluZyBgcHJvamVuYFxuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWMoYG5vZGUgJHt0aGlzLmZpbGVQYXRofWApO1xuXG4gICAgdGhpcy5nZW5lcmF0ZVByb2plbnJjKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG5cbiAgICBjb25zdCBlc2xpbnQgPSBFc2xpbnQub2YodGhpcy5wcm9qZWN0KTtcbiAgICBlc2xpbnQ/LmFkZExpbnRQYXR0ZXJuKHRoaXMuZmlsZVBhdGgpO1xuICAgIGVzbGludD8uYWRkSWdub3JlUGF0dGVybihgISR7dGhpcy5maWxlUGF0aH1gKTtcbiAgICBlc2xpbnQ/LmFkZE92ZXJyaWRlKHtcbiAgICAgIGZpbGVzOiBbdGhpcy5maWxlUGF0aF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcIjogXCJvZmZcIixcbiAgICAgICAgXCJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvamVucmMoKSB7XG4gICAgY29uc3QgcmNmaWxlID0gcmVzb2x2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLmZpbGVQYXRoKTtcbiAgICBpZiAoZXhpc3RzU3luYyhyY2ZpbGUpKSB7XG4gICAgICByZXR1cm47IC8vIGFscmVhZHkgZXhpc3RzXG4gICAgfVxuXG4gICAgY29uc3QgYm9vdHN0cmFwID0gdGhpcy5wcm9qZWN0LmluaXRQcm9qZWN0O1xuICAgIGlmICghYm9vdHN0cmFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFydHMgPSBib290c3RyYXAuZnFuLnNwbGl0KFwiLlwiKTtcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gcGFydHNbMF07XG4gICAgY29uc3QgaW1wb3J0TmFtZSA9IHBhcnRzWzFdO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oXCIuXCIpO1xuXG4gICAgY29uc3QgeyByZW5kZXJlZE9wdGlvbnMsIGltcG9ydHMgfSA9IHJlbmRlckphdmFTY3JpcHRPcHRpb25zKHtcbiAgICAgIGNvbW1lbnRzOiBib290c3RyYXAuY29tbWVudHMsXG4gICAgICBhcmdzOiBib290c3RyYXAuYXJncyxcbiAgICAgIHR5cGU6IGJvb3RzdHJhcC50eXBlLFxuICAgIH0pO1xuXG4gICAgaW1wb3J0cy5hZGQobW9kdWxlTmFtZSwgaW1wb3J0TmFtZSk7XG5cbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgbGluZXMucHVzaCguLi5pbXBvcnRzLmFzQ2pzUmVxdWlyZSgpKTtcbiAgICBsaW5lcy5wdXNoKCk7XG4gICAgbGluZXMucHVzaChgY29uc3QgcHJvamVjdCA9IG5ldyAke2NsYXNzTmFtZX0oJHtyZW5kZXJlZE9wdGlvbnN9KTtgKTtcbiAgICBsaW5lcy5wdXNoKCk7XG4gICAgbGluZXMucHVzaChcInByb2plY3Quc3ludGgoKTtcIik7XG5cbiAgICBta2RpclN5bmMoZGlybmFtZShyY2ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKHJjZmlsZSwgbGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgYFByb2plY3QgZGVmaW5pdGlvbiBmaWxlIHdhcyBjcmVhdGVkIGF0ICR7cmNmaWxlfWBcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -161,7 +161,7 @@ class TypescriptConfigExtends {
161
161
  }
162
162
  exports.TypescriptConfigExtends = TypescriptConfigExtends;
163
163
  _a = JSII_RTTI_SYMBOL_1;
164
- TypescriptConfigExtends[_a] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.85.2" };
164
+ TypescriptConfigExtends[_a] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.86.1" };
165
165
  class TypescriptConfig extends component_1.Component {
166
166
  constructor(project, options) {
167
167
  super(project);
@@ -324,5 +324,5 @@ class TypescriptConfig extends component_1.Component {
324
324
  }
325
325
  exports.TypescriptConfig = TypescriptConfig;
326
326
  _b = JSII_RTTI_SYMBOL_1;
327
- TypescriptConfig[_b] = { fqn: "projen.javascript.TypescriptConfig", version: "0.85.2" };
327
+ TypescriptConfig[_b] = { fqn: "projen.javascript.TypescriptConfig", version: "0.86.1" };
328
328
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsd0JBQWdDO0FBQ2hDLDRDQUF5QztBQUN6QyxrQ0FBbUM7QUFFbkMsa0NBQWlEO0FBdUNqRDs7OztHQUlHO0FBQ0gsSUFBWSwwQkFtQ1g7QUFuQ0QsV0FBWSwwQkFBMEI7SUFDcEM7Ozs7T0FJRztJQUNILGlEQUFtQixDQUFBO0lBRW5COzs7O09BSUc7SUFDSCwyQ0FBYSxDQUFBO0lBRWI7Ozs7T0FJRztJQUNILCtDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCxvREFBc0IsQ0FBQTtJQUV0Qjs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7QUFDckIsQ0FBQyxFQW5DVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQW1DckM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSx5QkFxQlg7QUFyQkQsV0FBWSx5QkFBeUI7SUFDbkM7Ozs7T0FJRztJQUNILDBDQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsOENBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILDRDQUFlLENBQUE7QUFDakIsQ0FBQyxFQXJCVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQXFCcEM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxnQ0FnQlg7QUFoQkQsV0FBWSxnQ0FBZ0M7SUFDMUM7O09BRUc7SUFDSCxxREFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHlEQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILG1EQUFlLENBQUE7QUFDakIsQ0FBQyxFQWhCVyxnQ0FBZ0MsZ0RBQWhDLGdDQUFnQyxRQWdCM0M7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxpQkEyQlg7QUEzQkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCwwQ0FB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Ozs7Ozs7O09BT0c7SUFDSSxVQUFVLENBQUMsS0FBdUI7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLENBQUM7WUFDaEQsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVk7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksYUFBYSxDQUFDLE9BQWU7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGFBQWEsQ0FBQyxPQUFlO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhO1FBQ1gsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDOztBQXBNSCw0Q0FxTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi4vanNvblwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBub3JtYWxpemVQZXJzaXN0ZWRQYXRoIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcInRzY29uZmlnLmpzb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhc2UgYHRzY29uZmlnLmpzb25gIGNvbmZpZ3VyYXRpb24ocykgdG8gaW5oZXJpdCBmcm9tLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBNdXN0IHByb3ZpZGUgZWl0aGVyIGBleHRlbmRzYCBvciBgY29tcGlsZXJPcHRpb25zYCAob3IgYm90aCkuXG4gICAqL1xuICByZWFkb25seSBleHRlbmRzPzogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB0aGF0IG1hdGNoIFR5cGVTY3JpcHQgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW4gY29tcGlsYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIC50cyBmaWxlcyByZWN1cnNpdmVseVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHJlc3VsdHMgZnJvbSB0aGUgXCJpbmNsdWRlXCIgb3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vZGVfbW9kdWxlcyBpcyBleGNsdWRlZCBieSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbXBpbGVyIG9wdGlvbnMgdG8gdXNlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBNdXN0IHByb3ZpZGUgZWl0aGVyIGBleHRlbmRzYCBvciBgY29tcGlsZXJPcHRpb25zYCAob3IgYm90aCkuXG4gICAqL1xuICByZWFkb25seSBjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaG93IG1vZHVsZXMgZ2V0IHJlc29sdmVkLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlLXJlc29sdXRpb24uaHRtbFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0J3MgZm9ybWVyIGRlZmF1bHQgcmVzb2x1dGlvbiBzdHJhdGVneS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGUtcmVzb2x1dGlvbi5odG1sI2NsYXNzaWNcbiAgICovXG4gIENMQVNTSUMgPSBcImNsYXNzaWNcIixcblxuICAvKipcbiAgICogUmVzb2x1dGlvbiBzdHJhdGVneSB3aGljaCBhdHRlbXB0cyB0byBtaW1pYyB0aGUgTm9kZS5qcyBtb2R1bGUgcmVzb2x1dGlvbiBzdHJhdGVneSBhdCBydW50aW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZS1yZXNvbHV0aW9uLmh0bWwjbm9kZVxuICAgKi9cbiAgTk9ERSA9IFwibm9kZVwiLFxuXG4gIC8qKlxuICAgKiBOb2RlLmpz4oCZIEVDTUFTY3JpcHQgTW9kdWxlIFN1cHBvcnQgZnJvbSBUeXBlU2NyaXB0IDQuNyBvbndhcmRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIE5PREUxNiA9IFwibm9kZTE2XCIsXG5cbiAgLyoqXG4gICAqIE5vZGUuanPigJkgRUNNQVNjcmlwdCBNb2R1bGUgU3VwcG9ydCBmcm9tIFR5cGVTY3JpcHQgNC43IG9ud2FyZHNcbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjbW9kdWxlUmVzb2x1dGlvblxuICAgKi9cbiAgTk9ERV9ORVhUID0gXCJub2RlbmV4dFwiLFxuXG4gIC8qKlxuICAgKiBSZXNvbHV0aW9uIHN0cmF0ZWd5IHdoaWNoIGF0dGVtcHRzIHRvIG1pbWljIHJlc29sdXRpb24gcGF0dGVybnMgb2YgbW9kZXJuIGJ1bmRsZXJzOyBmcm9tIFR5cGVTY3JpcHQgNS4wIG9ud2FyZHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIEJVTkRMRVIgPSBcImJ1bmRsZXJcIixcbn1cblxuLyoqXG4gKiBUaGlzIHNldHRpbmcgY29udHJvbHMgaG93IFR5cGVTY3JpcHQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZmlsZSBpcyBhIHNjcmlwdCBvciBhIG1vZHVsZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZXMvdGhlb3J5Lmh0bWwjc2NyaXB0cy1hbmQtbW9kdWxlcy1pbi1qYXZhc2NyaXB0XG4gKi9cbmV4cG9ydCBlbnVtIFR5cGVTY3JpcHRNb2R1bGVEZXRlY3Rpb24ge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCB3aWxsIG5vdCBvbmx5IGxvb2sgZm9yIGltcG9ydCBhbmQgZXhwb3J0IHN0YXRlbWVudHMsIGJ1dCBpdCB3aWxsIGFsc28gY2hlY2sgd2hldGhlciB0aGUgXCJ0eXBlXCIgZmllbGQgaW4gYSBwYWNrYWdlLmpzb24gaXMgc2V0IHRvIFwibW9kdWxlXCIgd2hlbiBydW5uaW5nIHdpdGggbW9kdWxlOiBub2RlbmV4dCBvciBub2RlMTYsIGFuZCBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGZpbGUgaXMgYSBKU1ggZmlsZSB3aGVuIHJ1bm5pbmcgdW5kZXIganN4OiByZWFjdC1qc3guXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNtb2R1bGVEZXRlY3Rpb25cbiAgICovXG4gIEFVVE8gPSBcImF1dG9cIixcblxuICAvKipcbiAgICogVGhlIHNhbWUgYmVoYXZpb3IgYXMgNC42IGFuZCBwcmlvciwgdXNpbmdzIGltcG9ydCBhbmQgZXhwb3J0IHN0YXRlbWVudHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBmaWxlIGlzIGEgbW9kdWxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jbW9kdWxlRGV0ZWN0aW9uXG4gICAqL1xuICBMRUdBQ1kgPSBcImxlZ2FjeVwiLFxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgZXZlcnkgbm9uLWRlY2xhcmF0aW9uIGZpbGUgaXMgdHJlYXRlZCBhcyBhIG1vZHVsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI21vZHVsZURldGVjdGlvblxuICAgKi9cbiAgRk9SQ0UgPSBcImZvcmNlXCIsXG59XG5cbi8qKlxuICogVGhpcyBmbGFnIGNvbnRyb2xzIGhvdyBgaW1wb3J0YCB3b3JrcywgdGhlcmUgYXJlIDMgZGlmZmVyZW50IG9wdGlvbnMuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW1wb3J0c05vdFVzZWRBc1ZhbHVlc1xuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiBkcm9wcGluZyBgaW1wb3J0YCBzdGF0ZW1lbnRzIHdoaWNoIG9ubHkgcmVmZXJlbmNlIHR5cGVzLlxuICAgKi9cbiAgUkVNT1ZFID0gXCJyZW1vdmVcIixcblxuICAvKipcbiAgICogUHJlc2VydmVzIGFsbCBgaW1wb3J0YCBzdGF0ZW1lbnRzIHdob3NlIHZhbHVlcyBvciB0eXBlcyBhcmUgbmV2ZXIgdXNlZC4gVGhpcyBjYW4gY2F1c2UgaW1wb3J0cy9zaWRlLWVmZmVjdHMgdG8gYmUgcHJlc2VydmVkLlxuICAgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG5cbiAgLyoqXG4gICAqIFRoaXMgcHJlc2VydmVzIGFsbCBpbXBvcnRzICh0aGUgc2FtZSBhcyB0aGUgcHJlc2VydmUgb3B0aW9uKSwgYnV0IHdpbGwgZXJyb3Igd2hlbiBhIHZhbHVlIGltcG9ydCBpcyBvbmx5IHVzZWQgYXMgYSB0eXBlLlxuICAgKiBUaGlzIG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBlbnN1cmUgbm8gdmFsdWVzIGFyZSBiZWluZyBhY2NpZGVudGFsbHkgaW1wb3J0ZWQsIGJ1dCBzdGlsbCBtYWtlIHNpZGUtZWZmZWN0IGltcG9ydHMgZXhwbGljaXQuXG4gICAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBKU1ggc2hvdWxkIGdldCB0cmFuc2Zvcm1lZCBpbnRvIHZhbGlkIEphdmFTY3JpcHQuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9qc3guaHRtbFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0SnN4TW9kZSB7XG4gIC8qKlxuICAgKiBLZWVwcyB0aGUgSlNYIGFzIHBhcnQgb2YgdGhlIG91dHB1dCB0byBiZSBmdXJ0aGVyIGNvbnN1bWVkIGJ5IGFub3RoZXIgdHJhbnNmb3JtIHN0ZXAgKGUuZy4gQmFiZWwpLlxuICAgKi9cbiAgUFJFU0VSVkUgPSBcInByZXNlcnZlXCIsXG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIEpTWCBzeW50YXggaW50byBSZWFjdC5jcmVhdGVFbGVtZW50LCBkb2VzIG5vdCBuZWVkIHRvIGdvIHRocm91Z2ggYSBKU1ggdHJhbnNmb3JtYXRpb24gYmVmb3JlIHVzZSwgYW5kIHRoZSBvdXRwdXQgd2lsbCBoYXZlIGEgLmpzIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgUkVBQ1QgPSBcInJlYWN0XCIsXG5cbiAgLyoqXG4gICAqIEtlZXBzIGFsbCBKU1ggbGlrZSAncHJlc2VydmUnIG1vZGUsIGJ1dCBvdXRwdXQgd2lsbCBoYXZlIGEgLmpzIGV4dGVuc2lvbi5cbiAgICovXG4gIFJFQUNUX05BVElWRSA9IFwicmVhY3QtbmF0aXZlXCIsXG5cbiAgLyoqXG4gICAqIFBhc3NlcyBga2V5YCBzZXBhcmF0ZWx5IGZyb20gcHJvcHMgYW5kIGFsd2F5cyBwYXNzZXMgYGNoaWxkcmVuYCBhcyBwcm9wcyAoc2luY2UgUmVhY3QgMTcpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC00LTEuaHRtbCNyZWFjdC0xNy1qc3gtZmFjdG9yaWVzXG4gICAqL1xuICBSRUFDVF9KU1ggPSBcInJlYWN0LWpzeFwiLFxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIGBSRUFDVF9KU1hgIHdpdGggYWRkaXRpb25hbCBkZWJ1ZyBkYXRhLlxuICAgKi9cbiAgUkVBQ1RfSlNYREVWID0gXCJyZWFjdC1qc3hkZXZcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbG93IEphdmFTY3JpcHQgZmlsZXMgdG8gYmUgY29tcGlsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0pzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIFR5cGVTY3JpcHQgZmlsZXMgdG8gaW1wb3J0IGVhY2ggb3RoZXIgd2l0aCBUeXBlU2NyaXB0LXNwZWNpZmljIGV4dGVuc2lvbnMgKGAudHNgLCBgLm10c2AsIGAudHN4YCkuXG4gICAqIFJlcXVpcmVzIGBub0VtaXRgIG9yIGBlbWl0RGVjbGFyYXRpb25Pbmx5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFN1cHByZXNzIGFyYml0cmFyeSBleHRlbnNpb24gaW1wb3J0IGVycm9ycyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBidW5kbGVyIHdpbGwgYmUgaGFuZGxpbmcgaXQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uc1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhhdCB5b3VyIGZpbGVzIGFyZSBwYXJzZWQgaW4gdGhlIEVDTUFTY3JpcHQgc3RyaWN0IG1vZGUsIGFuZCBlbWl0IOKAnHVzZSBzdHJpY3TigJ1cbiAgICogZm9yIGVhY2ggc291cmNlIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFsd2F5c1N0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9mZmVycyBhIHdheSB0byBjb25maWd1cmUgdGhlIHJvb3QgZGlyZWN0b3J5IGZvciB3aGVyZSBkZWNsYXJhdGlvbiBmaWxlcyBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUbyBiZSBzcGVjaWZpZWQgYWxvbmcgd2l0aCB0aGUgYWJvdmVcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc291cmNlIG1hcCBmb3IgLmQudHMgZmlsZXMgd2hpY2ggbWFwIGJhY2sgdG8gdGhlIG9yaWdpbmFsIC50cyBzb3VyY2UgZmlsZS5cbiAgICogVGhpcyB3aWxsIGFsbG93IGVkaXRvcnMgc3VjaCBhcyBWUyBDb2RlIHRvIGdvIHRvIHRoZSBvcmlnaW5hbCAudHMgZmlsZSB3aGVuIHVzaW5nIGZlYXR1cmVzIGxpa2UgR28gdG8gRGVmaW5pdGlvbi5cbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2RlY2xhcmF0aW9uTWFwfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVjbGFyYXRpb25NYXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEb3dubGV2ZWxpbmcgaXMgVHlwZVNjcmlwdOKAmXMgdGVybSBmb3IgdHJhbnNwaWxpbmcgdG8gYW4gb2xkZXIgdmVyc2lvbiBvZiBKYXZhU2NyaXB0LlxuICAgKiBUaGlzIGZsYWcgaXMgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGEgbW9yZSBhY2N1cmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBob3cgbW9kZXJuIEphdmFTY3JpcHQgaXRlcmF0ZXMgdGhyb3VnaCBuZXcgY29uY2VwdHMgaW4gb2xkZXIgSmF2YVNjcmlwdCBydW50aW1lcy5cbiAgICpcbiAgICogRUNNQVNjcmlwdCA2IGFkZGVkIHNldmVyYWwgbmV3IGl0ZXJhdGlvbiBwcmltaXRpdmVzOiB0aGUgZm9yIC8gb2YgbG9vcCAoZm9yIChlbCBvZiBhcnIpKSwgQXJyYXkgc3ByZWFkIChbYSwgLi4uYl0pLCBhcmd1bWVudCBzcHJlYWQgKGZuKC4uLmFyZ3MpKSwgYW5kIFN5bWJvbC5pdGVyYXRvci5cbiAgICogZG93bmxldmVsSXRlcmF0aW9uIGFsbG93cyBmb3IgdGhlc2UgaXRlcmF0aW9uIHByaW1pdGl2ZXMgdG8gYmUgdXNlZCBtb3JlIGFjY3VyYXRlbHkgaW4gRVM1IGVudmlyb25tZW50cyBpZiBhIFN5bWJvbC5pdGVyYXRvciBpbXBsZW1lbnRhdGlvbiBpcyBwcmVzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZG93bmxldmVsSXRlcmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiBhZGRpdGlvbmFsIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgc3VjY2VlZCB3aGVuIFR5cGVTY3JpcHQgcmVzb2x2ZXMgZnJvbSBhbiBgZXhwb3J0c2Agb3IgYGltcG9ydHNgIGZpZWxkIG9mIGEgYHBhY2thZ2UuanNvbmAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2N1c3RvbUNvbmRpdGlvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25kaXRpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEVtaXQgX19pbXBvcnRTdGFyIGFuZCBfX2ltcG9ydERlZmF1bHQgaGVscGVycyBmb3IgcnVudGltZSBiYWJlbFxuICAgKiBlY29zeXN0ZW0gY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIC0tYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyBmb3JcbiAgICogdHlwZXN5c3RlbSBjb21wYXRpYmlsaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXNNb2R1bGVJbnRlcm9wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZGVjb3JhdG9ycywgd2hpY2ggaXMgaW4gc3RhZ2UgMiBvZiB0aGUgVEMzOSBzdGFuZGFyZGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsRGVjb3JhdG9ycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlY29yYXRvcnMsIHdoaWNoIGlzIGluIHN0YWdlIDIgb2YgdGhlIFRDMzkgc3RhbmRhcmRpemF0aW9uIHByb2Nlc3MuXG4gICAqIERlY29yYXRvcnMgYXJlIGEgbGFuZ3VhZ2UgZmVhdHVyZSB3aGljaCBoYXNu4oCZdCB5ZXQgYmVlbiBmdWxseSByYXRpZmllZCBpbnRvIHRoZSBKYXZhU2NyaXB0IHNwZWNpZmljYXRpb24uXG4gICAqIFRoaXMgbWVhbnMgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbiBpbiBUeXBlU2NyaXB0IG1heSBkaWZmZXIgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gaW4gSmF2YVNjcmlwdCB3aGVuIGl0IGl0IGRlY2lkZWQgYnkgVEMzOS5cbiAgICogWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IGRlY29yYXRvciBzdXBwb3J0IGluIFR5cGVTY3JpcHQgaW4gdGhlIGhhbmRib29rLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2RlY29yYXRvcnMuaHRtbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVtaXREZWNvcmF0b3JNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FsbG93IGluY29uc2lzdGVudGx5LWNhc2VkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2ltcGxpZmllcyBUeXBlU2NyaXB0J3MgaGFuZGxpbmcgb2YgaW1wb3J0L2V4cG9ydCBgdHlwZWAgbW9kaWZpZXJzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN2ZXJiYXRpbU1vZHVsZVN5bnRheFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJhdGltTW9kdWxlU3ludGF4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBmbGFnIHdvcmtzIGJlY2F1c2UgeW91IGNhbiB1c2UgYGltcG9ydCB0eXBlYCB0byBleHBsaWNpdGx5IGNyZWF0ZSBhbiBgaW1wb3J0YCBzdGF0ZW1lbnQgd2hpY2ggc2hvdWxkIG5ldmVyIGJlIGVtaXR0ZWQgaW50byBKYXZhU2NyaXB0LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgVHlwZVNjcmlwdCA1LjArIHVzZSBgdmVyYmF0aW1Nb2R1bGVTeW50YXhgIGluc3RlYWQuXG4gICAqIFBvc2VkIGZvciBkZXByZWNhdGlvbiB1cG9uIFR5cGVTY3JpcHQgNS41LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbXBvcnRzTm90VXNlZEFzVmFsdWVzXG4gICAqIEBkZWZhdWx0IFwicmVtb3ZlXCJcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydHNOb3RVc2VkQXNWYWx1ZXM/OiBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcztcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgYSAuanMubWFwIGZpbGUgdG8gcHJvdmlkZSBzb3VyY2UgbWFwcyxcbiAgICogVHlwZVNjcmlwdCB3aWxsIGVtYmVkIHRoZSBzb3VyY2UgbWFwIGNvbnRlbnQgaW4gdGhlIC5qcyBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQsIFR5cGVTY3JpcHQgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW5hbCBjb250ZW50IG9mIHRoZSAudHMgZmlsZSBhcyBhbiBlbWJlZGRlZFxuICAgKiBzdHJpbmcgaW4gdGhlIHNvdXJjZSBtYXAuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIGluIHRoZSBzYW1lIGNhc2VzIGFzIGlubGluZVNvdXJjZU1hcC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2Ygc291cmNlbWFwIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxvY2F0aW9uIHdoZXJlIGEgZGVidWdnZXIgc2hvdWxkIGxvY2F0ZSBUeXBlU2NyaXB0IGZpbGVzXG4gICAqIGluc3RlYWQgb2YgcmVsYXRpdmUgc291cmNlIGxvY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHNlcGFyYXRlIGNvbXBpbGF0aW9uIChzdWNoIGFzXG4gICAqIHdpdGggdHJhbnNwaWxlTW9kdWxlIG9yIEBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQpIHdvdWxkIGJlIHNhZmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZE1vZHVsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwb3J0IEpTWCBpbiAudHN4IGZpbGVzOiBcInJlYWN0XCIsIFwicHJlc2VydmVcIiwgXCJyZWFjdC1uYXRpdmVcIiBldGMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkganN4PzogVHlwZVNjcmlwdEpzeE1vZGU7XG5cbiAgLyoqXG4gICAqIERlY2xhcmVzIHRoZSBtb2R1bGUgc3BlY2lmaWVyIHRvIGJlIHVzZWQgZm9yIGltcG9ydGluZyB0aGUganN4IGFuZCBqc3hzIGZhY3RvcnkgZnVuY3Rpb25zIHdoZW4gdXNpbmcganN4LlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGpzeEltcG9ydFNvdXJjZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGZvciB0eXBlIGRlZmluaXRpb25zIC8gbGlicmFyaWVzIHRvIHVzZSAoZWcuIEVTMjAxNiwgRVM1LCBFUzIwMTgpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbIFwiZXMyMDE4XCIgXVxuICAgKi9cbiAgcmVhZG9ubHkgbGliPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgVHlwZVNjcmlwdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIGlzIGEgW3NjcmlwdCBvciBhIG1vZHVsZV0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy90aGVvcnkuaHRtbCNzY3JpcHRzLWFuZC1tb2R1bGVzLWluLWphdmFzY3JpcHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImF1dG9cIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlRGV0ZWN0aW9uPzogVHlwZVNjcmlwdE1vZHVsZURldGVjdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kdWxlIHN5c3RlbSBmb3IgdGhlIHByb2dyYW0uXG4gICAqIFNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzLmh0bWwjYW1iaWVudC1tb2R1bGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkNvbW1vbkpTXCJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC4gRWl0aGVyIFwiTm9kZVwiIGZvciBOb2RlLmpzL2lvLmpzIHN0eWxlIHJlc29sdXRpb24sIG9yIFwiQ2xhc3NpY1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm5vZGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlUmVzb2x1dGlvbj86IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBvdXRwdXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT25seSBlbWl0IC5kLnRzIGZpbGVzOyBkbyBub3QgZW1pdCAuanMgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjbGFyYXRpb25Pbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgY29tcGlsZXIgb3V0cHV0IGZpbGVzIGxpa2UgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSwgc291cmNlLW1hcHMgb3JcbiAgICogZGVjbGFyYXRpb25zIGlmIGFueSBlcnJvcnMgd2VyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgZm9yIGZhbGx0aHJvdWdoIGNhc2VzIGluIHN3aXRjaCBzdGF0ZW1lbnRzLiBFbnN1cmVzIHRoYXQgYW55IG5vbi1lbXB0eVxuICAgKiBjYXNlIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgaW5jbHVkZXMgZWl0aGVyIGJyZWFrIG9yIHJldHVybi4gVGhpcyBtZWFucyB5b3Ugd29u4oCZdFxuICAgKiBhY2NpZGVudGFsbHkgc2hpcCBhIGNhc2UgZmFsbHRocm91Z2ggYnVnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIHNvbWUgY2FzZXMgd2hlcmUgbm8gdHlwZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCwgVHlwZVNjcmlwdCB3aWxsIGZhbGwgYmFjayB0byBhXG4gICAqIHR5cGUgb2YgYW55IGZvciBhIHZhcmlhYmxlIHdoZW4gaXQgY2Fubm90IGluZmVyIHRoZSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0QW55PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNpbmcgYG5vSW1wbGljaXRPdmVycmlkZWAsIHlvdSBjYW4gZW5zdXJlIHRoYXQgc3ViLWNsYXNzZXMgbmV2ZXIgZ28gb3V0IG9mIHN5bmMgYXNcbiAgICogdGhleSBhcmUgcmVxdWlyZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoYXQgdGhleSBhcmUgb3ZlcnJpZGluZyBhIG1lbWJlciB1c2luZyB0aGVcbiAgICogYG92ZXJyaWRlYCBrZXl3b3JkLiBUaGlzIGFsc28gaW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgdGhlIHByb2dyYW1tZXIncyBpbnRlbnQuXG4gICAqXG4gICAqIEF2YWlsYWJsZSB3aXRoIFR5cGVTY3JpcHQgNC4zIGFuZCBuZXdlci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRPdmVycmlkZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgVHlwZVNjcmlwdCB3aWxsIGNoZWNrIGFsbCBjb2RlIHBhdGhzIGluIGEgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZXlcbiAgICogcmV0dXJuIGEgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRSZXR1cm5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIOKAmHRoaXPigJkgZXhwcmVzc2lvbnMgd2l0aCBhbiBpbXBsaWVkIOKAmGFueeKAmSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0VGhpcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIHVzZSBvZiB0aGUgZG90IHN5bnRheCB0byBhY2Nlc3MgZmllbGRzIHdoaWNoIGFyZSBub3QgZGVmaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm9wZXJ0eUFjY2Vzc0Zyb21JbmRleFNpZ25hdHVyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIHdoZW4gYWNjZXNzaW5nIGluZGV4ZXMgb24gb2JqZWN0cyB3aXRoIHVua25vd24ga2V5cyBkZWZpbmVkIGluIGluZGV4IHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vVW5jaGVja2VkSW5kZXhlZEFjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgb24gdW51c2VkIGxvY2FsIHZhcmlhYmxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRMb2NhbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIG9uIHVudXNlZCBwYXJhbWV0ZXJzIGluIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIGltcG9ydGluZyBtb2R1bGVzIHdpdGggYSDigJguanNvbuKAmSBleHRlbnNpb24sIHdoaWNoIGlzIGEgY29tbW9uIHByYWN0aWNlXG4gICAqIGluIG5vZGUgcHJvamVjdHMuIFRoaXMgaW5jbHVkZXMgZ2VuZXJhdGluZyBhIHR5cGUgZm9yIHRoZSBpbXBvcnQgYmFzZWQgb24gdGhlIHN0YXRpYyBKU09OIHNoYXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlSnNvbk1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNraXAgdHlwZSBjaGVja2luZyBvZiBhbGwgZGVjbGFyYXRpb24gZmlsZXMgKCouZC50cykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwTGliQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaWN0IGZsYWcgZW5hYmxlcyBhIHdpZGUgcmFuZ2Ugb2YgdHlwZSBjaGVja2luZyBiZWhhdmlvciB0aGF0IHJlc3VsdHMgaW4gc3Ryb25nZXIgZ3VhcmFudGVlc1xuICAgKiBvZiBwcm9ncmFtIGNvcnJlY3RuZXNzLiBUdXJuaW5nIHRoaXMgb24gaXMgZXF1aXZhbGVudCB0byBlbmFibGluZyBhbGwgb2YgdGhlIHN0cmljdCBtb2RlIGZhbWlseVxuICAgKiBvcHRpb25zLCB3aGljaCBhcmUgb3V0bGluZWQgYmVsb3cuIFlvdSBjYW4gdGhlbiB0dXJuIG9mZiBpbmRpdmlkdWFsIHN0cmljdCBtb2RlIGZhbWlseSBjaGVja3MgYXNcbiAgICogbmVlZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdE51bGxDaGVja3MgaXMgZmFsc2UsIG51bGwgYW5kIHVuZGVmaW5lZCBhcmUgZWZmZWN0aXZlbHkgaWdub3JlZCBieSB0aGUgbGFuZ3VhZ2UuXG4gICAqIFRoaXMgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBlcnJvcnMgYXQgcnVudGltZS5cbiAgICogV2hlbiBzdHJpY3ROdWxsQ2hlY2tzIGlzIHRydWUsIG51bGwgYW5kIHVuZGVmaW5lZCBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCB0eXBlcyBhbmQgeW914oCZbGxcbiAgICogZ2V0IGEgdHlwZSBlcnJvciBpZiB5b3UgdHJ5IHRvIHVzZSB0aGVtIHdoZXJlIGEgY29uY3JldGUgdmFsdWUgaXMgZXhwZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdE51bGxDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBUeXBlU2NyaXB0IHdpbGwgcmFpc2UgYW4gZXJyb3Igd2hlbiBhIGNsYXNzIHByb3BlcnR5IHdhcyBkZWNsYXJlZCBidXRcbiAgICogbm90IHNldCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBkZWNsYXJhdGlvbnMgZm9yIGNvZGUgdGhhdCBoYXMgYW4gYEBpbnRlcm5hbGAgYW5ub3RhdGlvbiBpbiBpdOKAmXMgSlNEb2MgY29tbWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaXBJbnRlcm5hbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBUeXBlU2NyaXB0IHRvIGNvbnN1bHQgdGhlIGBleHBvcnRzYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCBmaWxlcyBpZiBpdCBldmVyIHJlYWRzIGZyb20gYSBwYWNrYWdlIGluIGBub2RlX21vZHVsZXNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGFja2FnZUpzb25FeHBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9yY2VzIFR5cGVTY3JpcHQgdG8gY29uc3VsdCB0aGUgYGltcG9ydHNgIGZpZWxkIG9mIGBwYWNrYWdlLmpzb25gIHdoZW4gcGVyZm9ybWluZyBhIGxvb2t1cCB0aGF0IGJlZ2lucyB3aXRoIGAjYCBmcm9tIGEgZmlsZSB0aGF0IGhhcyBhIGBwYWNrYWdlLmpzb25gIGFzIGFuIGFuY2VzdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVQYWNrYWdlSnNvbkltcG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2Rlcm4gYnJvd3NlcnMgc3VwcG9ydCBhbGwgRVM2IGZlYXR1cmVzLCBzbyBFUzYgaXMgYSBnb29kIGNob2ljZS4gWW91IG1pZ2h0IGNob29zZSB0byBzZXRcbiAgICogYSBsb3dlciB0YXJnZXQgaWYgeW91ciBjb2RlIGlzIGRlcGxveWVkIHRvIG9sZGVyIGVudmlyb25tZW50cywgb3IgYSBoaWdoZXIgdGFyZ2V0IGlmIHlvdXJcbiAgICogY29kZSBpcyBndWFyYW50ZWVkIHRvIHJ1biBpbiBuZXdlciBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiRVMyMDE4XCJcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogT3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGNvbXBpbGVkIGZpbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0RGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGlucHV0IGZpbGVzLlxuICAgKlxuICAgKiBPbmx5IHVzZSB0byBjb250cm9sIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHN0cnVjdHVyZSB3aXRoIGBvdXREaXJgLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3cgZGVmYXVsdCBpbXBvcnRzIGZyb20gbW9kdWxlcyB3aXRoIG5vIGRlZmF1bHQgZXhwb3J0LiBUaGlzIGRvZXMgbm90IGFmZmVjdCBjb2RlIGVtaXQsIGp1c3QgdHlwZWNoZWNraW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGF0IG9wdGlvbmFsIHByb3BlcnR5IHR5cGVzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBleGFjdGx5IGFzIHdyaXR0ZW4sIG1lYW5pbmcgdGhhdCBgfCB1bmRlZmluZWRgIGlzIG5vdCBhZGRlZCB0byB0aGUgdHlwZVxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuNCBhbmQgbmV3ZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgaW4gYSBjYXRjaCBjbGF1c2UgZnJvbSBhbnkgdG8gdW5rbm93blxuICAgKiBBdmFpbGFibGUgd2l0aCBUeXBlU2NyaXB0IDQuNCBhbmQgbmV3ZXIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZVVua25vd25JbkNhdGNoVmFyaWFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGV0cyB5b3Ugc2V0IGEgYmFzZSBkaXJlY3RvcnkgdG8gcmVzb2x2ZSBub24tYWJzb2x1dGUgbW9kdWxlIG5hbWVzLlxuICAgKlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIHJvb3QgZm9sZGVyIHdoZXJlIHlvdSBjYW4gZG8gYWJzb2x1dGUgZmlsZSByZXNvbHV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzZXJpZXMgb2YgZW50cmllcyB3aGljaCByZS1tYXAgaW1wb3J0cyB0byBsb29rdXAgbG9jYXRpb25zIHJlbGF0aXZlIHRvIHRoZSBiYXNlVXJsLCB0aGVyZSBpcyBhIGxhcmdlciBjb3ZlcmFnZSBvZiBwYXRocyBpbiB0aGUgaGFuZGJvb2suXG4gICAqXG4gICAqIHBhdGhzIGxldHMgeW91IGRlY2xhcmUgaG93IFR5cGVTY3JpcHQgc2hvdWxkIHJlc29sdmUgYW4gaW1wb3J0IGluIHlvdXIgcmVxdWlyZS9pbXBvcnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIElmIHR5cGVSb290cyBpcyBzcGVjaWZpZWQsIG9ubHkgcGFja2FnZXMgdW5kZXIgdHlwZVJvb3RzIHdpbGwgYmUgaW5jbHVkZWRcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI3R5cGVSb290c1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZVJvb3RzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHR5cGVzIGlzIHNwZWNpZmllZCwgb25seSBwYWNrYWdlcyBsaXN0ZWQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI3R5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUZWxscyBUeXBlU2NyaXB0IHRvIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QgZ3JhcGggZnJvbSB0aGUgbGFzdCBjb21waWxhdGlvbiB0byBmaWxlcyBzdG9yZWQgb24gZGlzay5cbiAgICogVGhpcyBjcmVhdGVzIGEgc2VyaWVzIG9mIC50c2J1aWxkaW5mbyBmaWxlcyBpbiB0aGUgc2FtZSBmb2xkZXIgYXMgeW91ciBjb21waWxhdGlvbiBvdXRwdXQuXG4gICAqIFRoZXkgYXJlIG5vdCB1c2VkIGJ5IHlvdXIgSmF2YVNjcmlwdCBhdCBydW50aW1lIGFuZCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuXG4gICAqIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IHRoZSBmbGFnIGluIHRoZSAzLjQgcmVsZWFzZSBub3Rlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtMy00Lmh0bWwjZmFzdGVyLXN1YnNlcXVlbnQtYnVpbGRzLXdpdGgtdGhlLS0taW5jcmVtZW50YWwtZmxhZ1xuICAgKlxuICAgKiBUbyBjb250cm9sIHdoaWNoIGZvbGRlcnMgeW91IHdhbnQgdG8gdGhlIGZpbGVzIHRvIGJlIGJ1aWx0IHRvLCB1c2UgdGhlIGNvbmZpZyBvcHRpb24gdHNCdWlsZEluZm9GaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jcmVtZW50YWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgbGV0cyB5b3Ugc3BlY2lmeSBhIGZpbGUgZm9yIHN0b3JpbmcgaW5jcmVtZW50YWwgY29tcGlsYXRpb24gaW5mb3JtYXRpb24gYXMgYSBwYXJ0IG9mIGNvbXBvc2l0ZSBwcm9qZWN0cyB3aGljaCBlbmFibGVzIGZhc3RlciBidWlsZGluZyBvZiBsYXJnZXIgVHlwZVNjcmlwdCBjb2RlYmFzZXMuXG4gICAqIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNvbXBvc2l0ZSBwcm9qZWN0cyBpbiB0aGUgaGFuZGJvb2suXG4gICAqL1xuICByZWFkb25seSB0c0J1aWxkSW5mb0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IFVudXNlZCBMYWJlbHNcbiAgICpcbiAgICogV2hlbjpcbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgcHJvdmlkZSBzdWdnZXN0aW9ucyBhcyB3YXJuaW5ncyB0byBlZGl0b3JzXG4gICAqIC0gYHRydWVgIHVudXNlZCBsYWJlbHMgYXJlIGlnbm9yZWRcbiAgICogLSBgZmFsc2VgIHJhaXNlcyBjb21waWxlciBlcnJvcnMgYWJvdXQgdW51c2VkIGxhYmVsc1xuICAgKlxuICAgKiBMYWJlbHMgYXJlIHZlcnkgcmFyZSBpbiBKYXZhU2NyaXB0IGFuZCB0eXBpY2FsbHkgaW5kaWNhdGUgYW4gYXR0ZW1wdCB0byB3cml0ZSBhbiBvYmplY3QgbGl0ZXJhbDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogZnVuY3Rpb24gdmVyaWZ5QWdlKGFnZTogbnVtYmVyKSB7XG4gICAqICAgLy8gRm9yZ290ICdyZXR1cm4nIHN0YXRlbWVudFxuICAgKiAgIGlmIChhZ2UgPiAxOCkge1xuICAgKiAgICAgdmVyaWZpZWQ6IHRydWU7XG4gICAqIC8vICBeXl5eXl5eXiBVbnVzZWQgbGFiZWwuXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd1VudXNlZExhYmVsc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRMYWJlbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBVbnJlYWNoYWJsZSBDb2RlXG4gICAqXG4gICAqIFdoZW46XG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIHByb3ZpZGUgc3VnZ2VzdGlvbnMgYXMgd2FybmluZ3MgdG8gZWRpdG9yc1xuICAgKiAtIGB0cnVlYCB1bnJlYWNoYWJsZSBjb2RlIGlzIGlnbm9yZWRcbiAgICogLSBgZmFsc2VgIHJhaXNlcyBjb21waWxlciBlcnJvcnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZVxuICAgKlxuICAgKiBUaGVzZSB3YXJuaW5ncyBhcmUgb25seSBhYm91dCBjb2RlIHdoaWNoIGlzIHByb3ZhYmx5IHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgdXNlIG9mIEphdmFTY3JpcHQgc3ludGF4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd1VucmVhY2hhYmxlQ29kZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnJlYWNoYWJsZUNvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVjayBKU1xuICAgKlxuICAgKiBXb3JrcyBpbiB0YW5kZW0gd2l0aCBbYWxsb3dKc10oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93SnMpLiBXaGVuIGNoZWNrSnMgaXMgZW5hYmxlZCB0aGVuXG4gICAqIGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gSmF2YVNjcmlwdCBmaWxlcy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBpbmNsdWRpbmcgLy8gQHRzLWNoZWNrIGF0IHRoZSB0b3Agb2YgYWxsXG4gICAqIEphdmFTY3JpcHQgZmlsZXMgd2hpY2ggYXJlIGluY2x1ZGVkIGluIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjY2hlY2tKc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tKcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciBgVHlwZXNjcmlwdENvbmZpZ2AgYHRzY29uZmlnLmpzb25gIGJhc2UgY29uZmlndXJhdGlvbihzKS5cbiAqIEV4dGVuZGluZyBmcm9tIG1vcmUgdGhhbiBvbmUgYmFzZSBjb25maWcgZmlsZSByZXF1aXJlcyBUeXBlU2NyaXB0IDUuMCsuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB7XG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGlvbiBmcm9tIGFycmF5IG9mIGZpbGUgcGF0aHMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFR5cGVTY3JpcHQgNS4wKyBpcyByZXF1aXJlZCB0byBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgdmFsdWUgaW4gYHBhdGhzYC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhzIEFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhzIHRvIGJhc2UgYHRzY29uZmlnLmpzb25gIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUGF0aHMocGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyhwYXRocyk7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpb24gZnJvbSBhcnJheSBvZiBvdGhlciBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBtb3JlIHRoYW4gb24gdmFsdWUgaW4gYGNvbmZpZ3NgLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlncyBCYXNlIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UeXBlc2NyaXB0Q29uZmlncyhjb25maWdzOiBUeXBlc2NyaXB0Q29uZmlnW10pIHtcbiAgICBjb25zdCBwYXRocyA9IGNvbmZpZ3MubWFwKChjb25maWcpID0+IGNvbmZpZy5maWxlLmFic29sdXRlUGF0aCk7XG4gICAgcmV0dXJuIFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21QYXRocyhwYXRocyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VzOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGJhc2VzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYmFzZXMgPSBiYXNlcztcbiAgfVxuXG4gIHB1YmxpYyB0b0pTT04oKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmJhc2VzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0Q29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZXh0ZW5kczogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHM7XG4gIHB1YmxpYyByZWFkb25seSBjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGluY2x1ZGVTZXQ6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGVTZXQ6IFNldDxzdHJpbmc+O1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lID8/IFwidHNjb25maWcuanNvblwiO1xuXG4gICAgaWYgKCFvcHRpb25zLmV4dGVuZHMgJiYgIW9wdGlvbnMuY29tcGlsZXJPcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVHlwZXNjcmlwdENvbmZpZzogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX2V4dGVuZHMgPSBvcHRpb25zLmV4dGVuZHMgPz8gVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVBhdGhzKFtdKTtcbiAgICB0aGlzLmluY2x1ZGVTZXQgPSBvcHRpb25zLmluY2x1ZGVcbiAgICAgID8gbmV3IFNldChvcHRpb25zLmluY2x1ZGUpXG4gICAgICA6IG5ldyBTZXQoW1wiKiovKi50c1wiXSk7XG4gICAgdGhpcy5leGNsdWRlU2V0ID0gb3B0aW9ucy5leGNsdWRlXG4gICAgICA/IG5ldyBTZXQob3B0aW9ucy5leGNsdWRlKVxuICAgICAgOiBuZXcgU2V0KFtcIm5vZGVfbW9kdWxlc1wiXSk7XG4gICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuXG4gICAgdGhpcy5jb21waWxlck9wdGlvbnMgPSBvcHRpb25zLmNvbXBpbGVyT3B0aW9ucztcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZShwcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBleHRlbmRzOiAoKSA9PiB0aGlzLnJlbmRlckV4dGVuZHMoKSxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB0aGlzLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgaW5jbHVkZTogKCkgPT4gdGhpcy5pbmNsdWRlLFxuICAgICAgICBleGNsdWRlOiAoKSA9PiB0aGlzLmV4Y2x1ZGUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb2plY3QgaW5zdGFuY2VvZiBOb2RlUHJvamVjdCkge1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke2ZpbGVOYW1lfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5jbHVkZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmluY2x1ZGVTZXRdO1xuICB9XG5cbiAgcHVibGljIGdldCBleGNsdWRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZXhjbHVkZVNldF07XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBgZXh0ZW5kc2AgZmllbGQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckV4dGVuZHMoKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmV4dGVuZHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIC8vIHJlbmRlciBzdHJpbmcgdmFsdWUgd2hlbiBvbmx5IG9uZSBleHRlbnNpb24gKFRTPDUuMCk7XG4gICAgICAvLyBvbWl0IGlmIG5vIGV4dGVuc2lvbnMuXG4gICAgICByZXR1cm4gdGhpcy5leHRlbmRzWzBdO1xuICAgIH1cbiAgICAvLyByZW5kZXIgbWFueSBleHRlbnNpb25zIGFzIGFycmF5IChUUz49NS4wKVxuICAgIHJldHVybiB0aGlzLmV4dGVuZHM7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB2YWxpZCBUeXBlU2NyaXB0IGV4dGVuZHMgcGF0aHMgcmVsYXRpdmUgdG8gdGhpcyBjb25maWcuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBvbmx5IHJlc29sdmUgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGlzIGNvbmZpZyB0byBhbm90aGVyIGdpdmVuXG4gICAqIGFuIGFic29sdXRlIHBhdGggYXMgaW5wdXQuIEFueSBub24tYWJzb2x1dGUgcGF0aCBvciBvdGhlciBzdHJpbmcgd2lsbCBiZSByZXR1cm5lZCBhcyBpcy5cbiAgICogVGhpcyBpcyB0byBwcmVzZXJ2ZSBtYW51YWxseSBzcGVjaWZpZWQgcmVsYXRpdmUgcGF0aHMgYXMgd2VsbCBhcyBucG0gaW1wb3J0IHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnUGF0aCBQYXRoIHRvIHJlc29sdmUgYWdhaW5zdC5cbiAgICovXG4gIHB1YmxpYyByZXNvbHZlRXh0ZW5kc1BhdGgoY29uZmlnUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBpZiBub3QgYWJzb2x1dGUgYXNzdW1lIHVzZXItZGVmaW5lZCBwYXRoIChvciBucG0gcGFja2FnZSkuXG4gICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoY29uZmlnUGF0aCkpIHJldHVybiBjb25maWdQYXRoO1xuICAgIGNvbnN0IHJlbGF0aXZlQ29uZmlnID0gcGF0aC5yZWxhdGl2ZShcbiAgICAgIHBhdGguZGlybmFtZSh0aGlzLmZpbGUuYWJzb2x1dGVQYXRoKSxcbiAgICAgIGNvbmZpZ1BhdGhcbiAgICApO1xuICAgIC8vIGVuc3VyZSBpbW1lZGlhdGUgc2libGluZyBmaWxlcyBhcmUgcHJlZml4ZWQgd2l0aCAnLi8nXG4gICAgLy8gdHlwZXNjcmlwdCBmaWd1cmVzIHRoaXMgb3V0LCBidXQgc29tZSB0b29scyBzZWVtaW5nbHkgYnJlYWsgd2l0aG91dCBpdCAoaS5lLCBlc2xpbnQpLlxuICAgIGNvbnN0IHsgZGlyLCAuLi5wYXRoUGFydHMgfSA9IHBhdGgucGFyc2UocmVsYXRpdmVDb25maWcpO1xuICAgIGNvbnN0IGNvbmZpZ0RpciA9IGRpclxuICAgICAgPyBwYXRoLmZvcm1hdCh7IGRpcjogZGlyLnN0YXJ0c1dpdGgoXCIuLlwiKSA/IFwiXCIgOiBcIi5cIiwgYmFzZTogZGlyIH0pXG4gICAgICA6IFwiLlwiO1xuXG4gICAgY29uc3QgZXh0ZW5kc1BhdGggPSBwYXRoLmZvcm1hdCh7IC4uLnBhdGhQYXJ0cywgZGlyOiBjb25maWdEaXIgfSk7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplUGVyc2lzdGVkUGF0aChleHRlbmRzUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdXNhZ2Ugb2YgYGV4dGVuZHNgIGFnYWluc3QgY3VycmVudCBUeXBlU2NyaXB0IHZlcnNpb24uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRXh0ZW5kcygpIHtcbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5wcm9qZWN0O1xuICAgIGNvbnN0IGhhc09uZU9yTm9uZUV4dGVuZHMgPSB0aGlzLmV4dGVuZHMubGVuZ3RoIDw9IDE7XG4gICAgY29uc3QgaXNOb2RlUHJvamVjdCA9IHByb2plY3QgaW5zdGFuY2VvZiBOb2RlUHJvamVjdDtcbiAgICBpZiAoaGFzT25lT3JOb25lRXh0ZW5kcyB8fCAhaXNOb2RlUHJvamVjdCkge1xuICAgICAgLy8gYWx3YXlzIGFjY2VwdCBubyBleHRlbmRzIG9yIHNpbmd1bGFyIGV4dGVuZHMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRzVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UoXG4gICAgICBwcm9qZWN0LnBhY2thZ2UudHJ5UmVzb2x2ZURlcGVuZGVuY3lWZXJzaW9uKFwidHlwZXNjcmlwdFwiKSxcbiAgICAgIHsgbG9vc2U6IHRydWUgfVxuICAgICk7XG4gICAgaWYgKHRzVmVyc2lvbiAmJiB0c1ZlcnNpb24ubWFqb3IgPCA1KSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiVHlwZVNjcmlwdCA8IDUuMC4wIGNhbiBvbmx5IGV4dGVuZCBmcm9tIGEgc2luZ2xlIGJhc2UgY29uZmlnLlwiLFxuICAgICAgICBgVHlwZVNjcmlwdCBWZXJzaW9uOiAke3RzVmVyc2lvbi5mb3JtYXQoKX1gLFxuICAgICAgICBgRmlsZTogJHt0aGlzLmZpbGUuYWJzb2x1dGVQYXRofWAsXG4gICAgICAgIGBFeHRlbmRzOiAke3RoaXMuZXh0ZW5kc31gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBiYXNlIGB0c2NvbmZpZy5qc29uYCBwYXRocy5cbiAgICogQW55IGFic29sdXRlIHBhdGhzIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGlzIGluc3RhbmNlLFxuICAgKiB3aGlsZSBhbnkgcmVsYXRpdmUgcGF0aHMgYXJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGV4dGVuZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leHRlbmRzXG4gICAgICAudG9KU09OKClcbiAgICAgIC5tYXAoKHZhbHVlKSA9PiB0aGlzLnJlc29sdmVFeHRlbmRzUGF0aCh2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIGJhc2UgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gZXh0ZW5kIGZyb20gbW9yZSB0aGFuIG9uZSBiYXNlIGBUeXBlc2NyaXB0Q29uZmlnYC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIEJhc2UgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZEV4dGVuZHModmFsdWU6IFR5cGVzY3JpcHRDb25maWcpIHtcbiAgICB0aGlzLl9leHRlbmRzID0gVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVBhdGhzKFtcbiAgICAgIC4uLnRoaXMuX2V4dGVuZHMudG9KU09OKCksXG4gICAgICB2YWx1ZS5maWxlLmFic29sdXRlUGF0aCxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gaW5jbHVkZSBwYXR0ZXJuIHRvIHRoZSBgaW5jbHVkZWAgYXJyYXkgb2YgdGhlIFRTQ29uZmlnLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbmNsdWRlXG4gICAqXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRJbmNsdWRlKHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuaW5jbHVkZS5wdXNoKHBhdHRlcm4pO1xuICAgIHRoaXMuaW5jbHVkZVNldC5hZGQocGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV4Y2x1ZGUgcGF0dGVybiB0byB0aGUgYGV4Y2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjZXhjbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkRXhjbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4Y2x1ZGUucHVzaChwYXR0ZXJuKTtcbiAgICB0aGlzLmV4Y2x1ZGVTZXQuYWRkKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBpbmNsdWRlIHBhdHRlcm4gZnJvbSB0aGUgYGluY2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW5jbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluY2x1ZGVTZXQuZGVsZXRlKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBleGNsdWRlIHBhdHRlcm4gZnJvbSB0aGUgYGV4Y2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjZXhjbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRXhjbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4Y2x1ZGVTZXQuZGVsZXRlKHBhdHRlcm4pO1xuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgdGhpcy52YWxpZGF0ZUV4dGVuZHMoKTtcbiAgfVxufVxuIl19
@@ -308,7 +308,7 @@ class UpgradeDependencies extends component_1.Component {
308
308
  }
309
309
  exports.UpgradeDependencies = UpgradeDependencies;
310
310
  _a = JSII_RTTI_SYMBOL_1;
311
- UpgradeDependencies[_a] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.85.2" };
311
+ UpgradeDependencies[_a] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.86.1" };
312
312
  /**
313
313
  * How often to check for new versions and raise pull requests for version upgrades.
314
314
  */
@@ -325,7 +325,7 @@ class UpgradeDependenciesSchedule {
325
325
  }
326
326
  exports.UpgradeDependenciesSchedule = UpgradeDependenciesSchedule;
327
327
  _b = JSII_RTTI_SYMBOL_1;
328
- UpgradeDependenciesSchedule[_b] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.85.2" };
328
+ UpgradeDependenciesSchedule[_b] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.86.1" };
329
329
  /**
330
330
  * Disables automatic upgrades.
331
331
  */
@@ -153,5 +153,5 @@ class Yarnrc extends component_1.Component {
153
153
  }
154
154
  exports.Yarnrc = Yarnrc;
155
155
  _a = JSII_RTTI_SYMBOL_1;
156
- Yarnrc[_a] = { fqn: "projen.javascript.Yarnrc", version: "0.85.2" };
156
+ Yarnrc[_a] = { fqn: "projen.javascript.Yarnrc", version: "0.86.1" };
157
157
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFybnJjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQveWFybnJjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLDRDQUF5QztBQUV6QyxrQ0FBbUM7QUFFbkMsZ0VBQWdFO0FBQ2hFLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM5Qix1Q0FBZSxDQUFBO0lBQ2YseUNBQWlCLENBQUE7SUFDakIsdUNBQWUsQ0FBQTtJQUNmLHlDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQUVELHdFQUF3RTtBQUN4RSxJQUFZLDRCQUlYO0FBSkQsV0FBWSw0QkFBNEI7SUFDdEMsMkNBQVcsQ0FBQTtJQUNYLDJDQUFXLENBQUE7SUFDWCxpREFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsNEJBQTRCLDRDQUE1Qiw0QkFBNEIsUUFJdkM7QUFFRCxxRUFBcUU7QUFDckUsSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLG1DQUFhLENBQUE7SUFDYix5Q0FBbUIsQ0FBQTtJQUNuQixxQ0FBZSxDQUFBO0lBQ2YseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBSzdCO0FBc0JELGdFQUFnRTtBQUNoRSxJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0Isb0RBQTZCLENBQUE7SUFDN0Isb0NBQWEsQ0FBQTtJQUNiLGdEQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQUk5QjtBQUVELHNEQUFzRDtBQUN0RCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsaUNBQW1CLENBQUE7SUFDbkIsaURBQW1DLENBQUE7SUFDbkMsbURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVELDBEQUEw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QUNILENBQUM7SUFDSCxDQUFDOztBQXBGSCx3QkFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuLi95YW1sXCI7XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NoZWNrc3VtQmVoYXZpb3IgKi9cbmV4cG9ydCBlbnVtIFlhcm5DaGVja3N1bUJlaGF2aW9yIHtcbiAgVEhST1cgPSBcInRocm93XCIsXG4gIFVQREFURSA9IFwidXBkYXRlXCIsXG4gIFJFU0VUID0gXCJyZXNldFwiLFxuICBJR05PUkUgPSBcImlnbm9yZVwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNkZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXggKi9cbmV4cG9ydCBlbnVtIFlhcm5EZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXgge1xuICBDQVJFVCA9IFwiXlwiLFxuICBUSUxERSA9IFwiflwiLFxuICBFTVBUWV9TVFJJTkcgPSBcIlwiLFxufVxuXG4vKiogaHR0cHM6Ly92My55YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNsb2dGaWx0ZXJzLjAubGV2ZWwgKi9cbmV4cG9ydCBlbnVtIFlhcm5Mb2dGaWx0ZXJMZXZlbCB7XG4gIElORk8gPSBcImluZm9cIixcbiAgV0FSTklORyA9IFwid2FybmluZ1wiLFxuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgRElTQ0FSRCA9IFwiZGlzY2FyZFwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNsb2dGaWx0ZXJzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5Mb2dGaWx0ZXIge1xuICByZWFkb25seSBjb2RlPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXh0Pzogc3RyaW5nO1xuICByZWFkb25seSBsZXZlbD86IFlhcm5Mb2dGaWx0ZXJMZXZlbDtcbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbmV0d29ya1NldHRpbmdzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5OZXR3b3JrU2V0dGluZyB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSBodHRwc0NhRmlsZVBhdGggaW4gWWFybiB2NCBhbmQgbmV3ZXIgKi9cbiAgcmVhZG9ubHkgY2FGaWxlUGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgaHR0cHNDYUZpbGVQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBlbmFibGVOZXR3b3JrPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaHR0cFByb3h5Pzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc0tleUZpbGVQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBodHRwc0NlcnRGaWxlUGF0aD86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbm1Ib2lzdGluZ0xpbWl0cyAqL1xuZXhwb3J0IGVudW0gWWFybk5tSG9pc3RpbmdMaW1pdCB7XG4gIERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCIsXG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgV09SS1NQQUNFUyA9IFwid29ya3NwYWNlc1wiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubU1vZGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5ObU1vZGUge1xuICBDTEFTU0lDID0gXCJjbGFzc2ljXCIsXG4gIEhBUkRMSU5LU19MT0NBTCA9IFwiaGFyZGxpbmtzLWxvY2FsXCIsXG4gIEhBUkRMSU5LU19HTE9CQUwgPSBcImhhcmRsaW5rcy1nbG9iYWxcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbm9kZUxpbmtlciAqL1xuZXhwb3J0IGVudW0gWWFybk5vZGVMaW5rZXIge1xuICBQTlAgPSBcInBucFwiLFxuICBQTlBNID0gXCJwbnBtXCIsXG4gIE5PREVfTU9EVUxFUyA9IFwibm9kZS1tb2R1bGVzXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVB1Ymxpc2hBY2Nlc3MgKi9cbmV4cG9ydCBlbnVtIFlhcm5OcG1QdWJsaXNoQWNjZXNzIHtcbiAgUFVCTElDID0gXCJwdWJsaWNcIixcbiAgUkVTVFJJQ1RFRCA9IFwicmVzdHJpY3RlZFwiLFxufVxuXG4vKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1SZWdpc3RyaWVzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5OcG1SZWdpc3RyeSB7XG4gIHJlYWRvbmx5IG5wbUFsd2F5c0F1dGg/OiBib29sZWFuO1xuICByZWFkb25seSBucG1BdXRoSWRlbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5wbUF1dGhUb2tlbj86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbnBtU2NvcGVzICovXG5leHBvcnQgaW50ZXJmYWNlIFlhcm5OcG1TY29wZSB7XG4gIHJlYWRvbmx5IG5wbVB1Ymxpc2hSZWdpc3RyeT86IHN0cmluZztcbiAgcmVhZG9ubHkgbnBtUmVnaXN0cnlTZXJ2ZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5wbUFsd2F5c0F1dGg/OiBib29sZWFuO1xuICByZWFkb25seSBucG1BdXRoSWRlbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5wbUF1dGhUb2tlbj86IHN0cmluZztcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGFja2FnZUV4dGVuc2lvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFyblBlZXJEZXBlbmRlbmN5TWV0YSB7XG4gIHJlYWRvbmx5IG9wdGlvbmFsPzogYm9vbGVhbjtcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGFja2FnZUV4dGVuc2lvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFyblBhY2thZ2VFeHRlbnNpb24ge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY2llc01ldGE/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIFJlY29yZDxzdHJpbmcsIFlhcm5QZWVyRGVwZW5kZW5jeU1ldGE+XG4gID47XG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucEZhbGxiYWNrTW9kZSAqL1xuZXhwb3J0IGVudW0gWWFyblBucEZhbGxiYWNrTW9kZSB7XG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgREVQRU5ERU5DSUVTX09OTFkgPSBcImRlcGVuZGVuY2llcy1vbmx5XCIsXG4gIEFMTCA9IFwiYWxsXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucE1vZGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5QbnBNb2RlIHtcbiAgU1RSSUNUID0gXCJzdHJpY3RcIixcbiAgTE9PU0UgPSBcImxvb3NlXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3Byb2dyZXNzQmFyU3R5bGUgKi9cbmV4cG9ydCBlbnVtIFlhcm5Qcm9ncmVzc0JhclN0eWxlIHtcbiAgUEFUUklDSyA9IFwicGF0cmlja1wiLFxuICBTSU1CQSA9IFwic2ltYmFcIixcbiAgSkFDSyA9IFwiamFja1wiLFxuICBIT0dTRkFUSEVSID0gXCJob2dzZmF0aGVyXCIsXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbn1cblxuLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBZYXJuU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB7XG4gIHJlYWRvbmx5IG9zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGNwdT86IHN0cmluZ1tdO1xuICByZWFkb25seSBsaWJjPzogc3RyaW5nW107XG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NhY2hlTWlncmF0aW9uTW9kZSAqL1xuZXhwb3J0IGVudW0gWWFybkNhY2hlTWlncmF0aW9uTW9kZSB7XG4gIFJFUVVJUkVEX09OTFkgPSBcInJlcXVpZWQtb25seVwiLFxuICBNQVRDSF9TUEVDID0gXCJtYXRjaC1zcGVjXCIsXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG59XG5cbi8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3dpbkxpbmtUeXBlICovXG5leHBvcnQgZW51bSBZYXJuV2luTGlua1R5cGUge1xuICBKVU5DVElPTlMgPSBcImp1bmN0aW9uc1wiLFxuICBTWU1MSU5LUyA9IFwic3ltbGlua3NcIixcbn1cblxuZXhwb3J0IGVudW0gWWFybldvcmtlclBvb2xNb2RlIHtcbiAgQVNZTkMgPSBcImFzeW5jXCIsXG4gIFdPUktFUlMgPSBcIndvcmtlcnNcIixcbn1cblxuLyoqIENvbmZpZ3VyYXRpb24gZm9yIC55YXJucmMueW1sIGluIFlhcm4gQmVycnkgdjQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgWWFybnJjT3B0aW9ucyB7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2NhY2hlRm9sZGVyICovXG4gIHJlYWRvbmx5IGNhY2hlRm9sZGVyPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjYWNoZU1pZ3JhdGlvbk1vZGUgKi9cbiAgcmVhZG9ubHkgY2FjaGVNaWdyYXRpb25Nb2RlPzogWWFybkNhY2hlTWlncmF0aW9uTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cHNDYUZpbGVQYXRoICovXG4gIHJlYWRvbmx5IGh0dHBzQ2FGaWxlUGF0aD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hhbmdlc2V0QmFzZVJlZnMgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0QmFzZVJlZnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hhbmdlc2V0SWdub3JlUGF0dGVybnMgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0SWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY2hlY2tzdW1CZWhhdmlvciAqL1xuICByZWFkb25seSBjaGVja3N1bUJlaGF2aW9yPzogWWFybkNoZWNrc3VtQmVoYXZpb3I7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2Nsb25lQ29uY3VycmVuY3kgKi9cbiAgcmVhZG9ubHkgY2xvbmVDb25jdXJyZW5jeT86IG51bWJlcjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjY29tcHJlc3Npb25MZXZlbCAqL1xuICByZWFkb25seSBjb21wcmVzc2lvbkxldmVsPzogbnVtYmVyIHwgc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNjb25zdHJhaW50c1BhdGggKi9cbiAgcmVhZG9ubHkgY29uc3RyYWludHNQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNkZWZhdWx0TGFuZ3VhZ2VOYW1lICovXG4gIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmF1bHRQcm90b2NvbCAqL1xuICByZWFkb25seSBkZWZhdWx0UHJvdG9jb2w/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2RlZmF1bHRTZW12ZXJSYW5nZVByZWZpeCAqL1xuICByZWFkb25seSBkZWZhdWx0U2VtdmVyUmFuZ2VQcmVmaXg/OiBZYXJuRGVmYXVsdFNlbXZlclJhbmdlUHJlZml4O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNkZWZlcnJlZFZlcnNpb25Gb2xkZXIgKi9cbiAgcmVhZG9ubHkgZGVmZXJyZWRWZXJzaW9uRm9sZGVyPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVDb2xvcnMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ29sb3JzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlQ29uc3RyYWludHNDaGVjayAqL1xuICByZWFkb25seSBlbmFibGVDb25zdHJhaW50c0NoZWNrPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlR2xvYmFsQ2FjaGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsQ2FjaGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVIYXJkZW5lZE1vZGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSGFyZGVuZWRNb2RlPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlSHlwZXJsaW5rcyAqL1xuICByZWFkb25seSBlbmFibGVIeXBlcmxpbmtzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlSW1tdXRhYmxlQ2FjaGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSW1tdXRhYmxlQ2FjaGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVJbW11dGFibGVJbnN0YWxscyAqL1xuICByZWFkb25seSBlbmFibGVJbW11dGFibGVJbnN0YWxscz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZUlubGluZUJ1aWxkcyAqL1xuICByZWFkb25seSBlbmFibGVJbmxpbmVCdWlsZHM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVJbmxpbmVIdW5rcyAqL1xuICByZWFkb25seSBlbmFibGVJbmxpbmVIdW5rcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZU1lc3NhZ2VOYW1lcyAqL1xuICByZWFkb25seSBlbmFibGVNZXNzYWdlTmFtZXM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVNaXJyb3IgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTWlycm9yPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlTmV0d29yayAqL1xuICByZWFkb25seSBlbmFibGVOZXR3b3JrPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlT2ZmbGluZU1vZGUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlT2ZmbGluZU1vZGU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVQcm9ncmVzc0JhcnMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUHJvZ3Jlc3NCYXJzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlU2NyaXB0cyAqL1xuICByZWFkb25seSBlbmFibGVTY3JpcHRzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlU3RyaWN0U3NsICovXG4gIHJlYWRvbmx5IGVuYWJsZVN0cmljdFNzbD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2VuYWJsZVRlbGVtZXRyeSAqL1xuICByZWFkb25seSBlbmFibGVUZWxlbWV0cnk/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNlbmFibGVUaW1lcnMgKi9cbiAgcmVhZG9ubHkgZW5hYmxlVGltZXJzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjZW5hYmxlVHJhbnNwYXJlbnRXb3Jrc3BhY2VzICovXG4gIHJlYWRvbmx5IGVuYWJsZVRyYW5zcGFyZW50V29ya3NwYWNlcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2dsb2JhbEZvbGRlciAqL1xuICByZWFkb25seSBnbG9iYWxGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBQcm94eSAqL1xuICByZWFkb25seSBodHRwUHJveHk/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBSZXRyeSAqL1xuICByZWFkb25seSBodHRwUmV0cnk/OiBudW1iZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2h0dHBUaW1lb3V0ICovXG4gIHJlYWRvbmx5IGh0dHBUaW1lb3V0PzogbnVtYmVyO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNodHRwc0NlcnRGaWxlUGF0aCAqL1xuICByZWFkb25seSBodHRwc0NlcnRGaWxlUGF0aD86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjaHR0cHNLZXlGaWxlUGF0aCAqL1xuICByZWFkb25seSBodHRwc0tleUZpbGVQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNodHRwc1Byb3h5ICovXG4gIHJlYWRvbmx5IGh0dHBzUHJveHk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBodHRwczovL3YzLnlhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2lnbm9yZUN3ZFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHJlbW92ZWQgaW4gWWFybiB2NCBhbmQgbmV3ZXJcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUN3ZD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2lnbm9yZVBhdGggKi9cbiAgcmVhZG9ubHkgaWdub3JlUGF0aD86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2ltbXV0YWJsZVBhdHRlcm5zICovXG4gIHJlYWRvbmx5IGltbXV0YWJsZVBhdHRlcm5zPzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luaXRTY29wZSAqL1xuICByZWFkb25seSBpbml0U2NvcGU/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luaXRGaWVsZHMgKi9cbiAgcmVhZG9ubHkgaW5pdEZpZWxkcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2luamVjdEVudmlyb25tZW50RmlsZXMgKi9cbiAgcmVhZG9ubHkgaW5qZWN0RW52aXJvbm1lbnRGaWxlcz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNpbnN0YWxsU3RhdGVQYXRoICovXG4gIHJlYWRvbmx5IGluc3RhbGxTdGF0ZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI2xvZ0ZpbHRlcnMgKi9cbiAgcmVhZG9ubHkgbG9nRmlsdGVycz86IFlhcm5Mb2dGaWx0ZXJbXTtcbiAgLyoqXG4gICAqIGh0dHBzOi8vdjMueWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbG9ja2ZpbGVGaWxlbmFtZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHJlbW92ZWQgaW4gWWFybiB2NCBhbmQgbmV3ZXJcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlRmlsZW5hbWU/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25ldHdvcmtDb25jdXJyZW5jeSAqL1xuICByZWFkb25seSBuZXR3b3JrQ29uY3VycmVuY3k/OiBudW1iZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25ldHdvcmtTZXR0aW5ncyAqL1xuICByZWFkb25seSBuZXR3b3JrU2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBZYXJuTmV0d29ya1NldHRpbmc+O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubUhvaXN0aW5nTGltaXRzICovXG4gIHJlYWRvbmx5IG5tSG9pc3RpbmdMaW1pdHM/OiBZYXJuTm1Ib2lzdGluZ0xpbWl0O1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubVNlbGZSZWZlcmVuY2VzICovXG4gIHJlYWRvbmx5IG5tU2VsZlJlZmVyZW5jZXM/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNubU1vZGUgKi9cbiAgcmVhZG9ubHkgbm1Nb2RlPzogWWFybk5tTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjbm9kZUxpbmtlciAqL1xuICByZWFkb25seSBub2RlTGlua2VyPzogWWFybk5vZGVMaW5rZXI7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3dpbkxpbmtUeXBlICovXG4gIHJlYWRvbmx5IHdpbkxpbmtUeXBlPzogWWFybldpbkxpbmtUeXBlO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BbHdheXNBdXRoICovXG4gIHJlYWRvbmx5IG5wbUFsd2F5c0F1dGg/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BdWRpdFJlZ2lzdHJ5ICovXG4gIHJlYWRvbmx5IG5wbUF1ZGl0UmVnaXN0cnk/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1dGhJZGVudCAqL1xuICByZWFkb25seSBucG1BdXRoSWRlbnQ/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbUF1dGhUb2tlbiAqL1xuICByZWFkb25seSBucG1BdXRoVG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVB1Ymxpc2hBY2Nlc3MgKi9cbiAgcmVhZG9ubHkgbnBtUHVibGlzaEFjY2Vzcz86IFlhcm5OcG1QdWJsaXNoQWNjZXNzO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BdWRpdEV4Y2x1ZGVQYWNrYWdlcyAqL1xuICByZWFkb25seSBucG1BdWRpdEV4Y2x1ZGVQYWNrYWdlcz86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1BdWRpdElnbm9yZUFkdmlzb3JpZXMgKi9cbiAgcmVhZG9ubHkgbnBtQXVkaXRJZ25vcmVBZHZpc29yaWVzPzogc3RyaW5nW107XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVB1Ymxpc2hSZWdpc3RyeSAqL1xuICByZWFkb25seSBucG1QdWJsaXNoUmVnaXN0cnk/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVJlZ2lzdHJpZXMgKi9cbiAgcmVhZG9ubHkgbnBtUmVnaXN0cmllcz86IFJlY29yZDxzdHJpbmcsIFlhcm5OcG1SZWdpc3RyeT47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI25wbVJlZ2lzdHJ5U2VydmVyICovXG4gIHJlYWRvbmx5IG5wbVJlZ2lzdHJ5U2VydmVyPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNucG1TY29wZXMgKi9cbiAgcmVhZG9ubHkgbnBtU2NvcGVzPzogUmVjb3JkPHN0cmluZywgWWFybk5wbVNjb3BlPjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcGFja2FnZUV4dGVuc2lvbnMgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCBZYXJuUGFja2FnZUV4dGVuc2lvbj47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BhdGNoRm9sZGVyICovXG4gIHJlYWRvbmx5IHBhdGNoRm9sZGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogaHR0cHM6Ly92My55YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBEYXRhUGF0aFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHJlbW92ZWQgaW4gWWFybiB2NCBhbmQgbmV3ZXJcbiAgICovXG4gIHJlYWRvbmx5IHBucERhdGFQYXRoPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBFbmFibGVFc21Mb2FkZXIgKi9cbiAgcmVhZG9ubHkgcG5wRW5hYmxlRXNtTG9hZGVyPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wRW5hYmxlSW5saW5pbmcgKi9cbiAgcmVhZG9ubHkgcG5wRW5hYmxlSW5saW5pbmc/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwbnBGYWxsYmFja01vZGUgKi9cbiAgcmVhZG9ubHkgcG5wRmFsbGJhY2tNb2RlPzogWWFyblBucEZhbGxiYWNrTW9kZTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wSWdub3JlUGF0dGVybnMgKi9cbiAgcmVhZG9ubHkgcG5wSWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wTW9kZSAqL1xuICByZWFkb25seSBwbnBNb2RlPzogWWFyblBucE1vZGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3BucFNoZWJhbmcgKi9cbiAgcmVhZG9ubHkgcG5wU2hlYmFuZz86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcG5wVW5wbHVnZ2VkRm9sZGVyICovXG4gIHJlYWRvbmx5IHBucFVucGx1Z2dlZEZvbGRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIGh0dHBzOi8vdjMueWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIC0gcmVtb3ZlZCBpbiBZYXJuIHY0IGFuZCBuZXdlclxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVyRGVmZXJyZWRWZXJzaW9ucyAqL1xuICByZWFkb25seSBwcmVmZXJEZWZlcnJlZFZlcnNpb25zPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJlZmVySW50ZXJhY3RpdmUgKi9cbiAgcmVhZG9ubHkgcHJlZmVySW50ZXJhY3RpdmU/OiBib29sZWFuO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyNwcmVmZXJSZXVzZSAqL1xuICByZWFkb25seSBwcmVmZXJSZXVzZT86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3ByZWZlclRydW5jYXRlZExpbmVzICovXG4gIHJlYWRvbmx5IHByZWZlclRydW5jYXRlZExpbmVzPzogYm9vbGVhbjtcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjcHJvZ3Jlc3NCYXJTdHlsZSAqL1xuICByZWFkb25seSBwcm9ncmVzc0JhclN0eWxlPzogWWFyblByb2dyZXNzQmFyU3R5bGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3JjRmlsZW5hbWUgKi9cbiAgcmVhZG9ubHkgcmNGaWxlbmFtZT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyAqL1xuICByZWFkb25seSBzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzPzogWWFyblN1cHBvcnRlZEFyY2hpdGVjdHVyZXM7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3Rhc2tQb29sQ29uY3VycmVuY3kgKi9cbiAgcmVhZG9ubHkgdGFza1Bvb2xDb25jdXJyZW5jeT86IHN0cmluZztcbiAgLyoqIGh0dHBzOi8veWFybnBrZy5jb20vY29uZmlndXJhdGlvbi95YXJucmMjd29ya2VyUG9vbE1vZGUgKi9cbiAgcmVhZG9ubHkgd29ya2VyUG9vbE1vZGU/OiBZYXJuV29ya2VyUG9vbE1vZGU7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3RlbGVtZXRyeUludGVydmFsICovXG4gIHJlYWRvbmx5IHRlbGVtZXRyeUludGVydmFsPzogbnVtYmVyO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN0ZWxlbWV0cnlVc2VySWQgKi9cbiAgcmVhZG9ubHkgdGVsZW1ldHJ5VXNlcklkPzogc3RyaW5nO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN0c0VuYWJsZUF1dG9UeXBlcyAqL1xuICByZWFkb25seSB0c0VuYWJsZUF1dG9UeXBlcz86IGJvb2xlYW47XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3Vuc2FmZUh0dHBXaGl0ZWxpc3QgKi9cbiAgcmVhZG9ubHkgdW5zYWZlSHR0cFdoaXRlbGlzdD86IHN0cmluZ1tdO1xuICAvKiogaHR0cHM6Ly95YXJucGtnLmNvbS9jb25maWd1cmF0aW9uL3lhcm5yYyN2aXJ0dWFsRm9sZGVyICovXG4gIHJlYWRvbmx5IHZpcnR1YWxGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjI3lhcm5QYXRoICovXG4gIHJlYWRvbmx5IHlhcm5QYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgWWFybnJjIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgdmVyc2lvbjogc3RyaW5nLCBvcHRpb25zOiBZYXJucmNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMudmFsaWRhdGVPcHRpb25zRm9yVmVyc2lvbihzZW12ZXIubWFqb3IodmVyc2lvbiksIG9wdGlvbnMpO1xuICAgIHRoaXMudXBkYXRlR2l0QXR0cmlidXRlcygpO1xuXG4gICAgbmV3IFlhbWxGaWxlKHByb2plY3QsIFwiLnlhcm5yYy55bWxcIiwge1xuICAgICAgb2JqOiBvcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVHaXRBdHRyaWJ1dGVzKCkge1xuICAgIGNvbnN0IHsgcHJvamVjdCB9ID0gdGhpcztcblxuICAgIHByb2plY3QuZ2l0YXR0cmlidXRlcy5hZGRBdHRyaWJ1dGVzKFwiLy55YXJuLyoqXCIsIFwibGluZ3Vpc3QtdmVuZG9yZWRcIik7XG4gICAgcHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoXCIvLnlhcm4vcmVsZWFzZXMvKlwiLCBcImJpbmFyeVwiKTtcbiAgICBwcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhcIi8ueWFybi9wbHVnaW5zLyoqLypcIiwgXCJiaW5hcnlcIik7XG4gICAgcHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoXG4gICAgICBcIi8ucG5wLipcIixcbiAgICAgIFwiYmluYXJ5XCIsXG4gICAgICBcImxpbmd1aXN0LXZlbmRvcmVkXCJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnNGb3JWZXJzaW9uKFxuICAgIG1ham9yVmVyc2lvbjogbnVtYmVyLFxuICAgIG9wdGlvbnM6IFlhcm5yY09wdGlvbnNcbiAgKSB7XG4gICAgY29uc3QgcmVtb3ZlZEluVjQ6IEFycmF5PGtleW9mIFlhcm5yY09wdGlvbnM+ID0gW1xuICAgICAgXCJpZ25vcmVDd2RcIixcbiAgICAgIFwibG9ja2ZpbGVGaWxlbmFtZVwiLFxuICAgICAgXCJwbnBEYXRhUGF0aFwiLFxuICAgICAgXCJwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm9cIixcbiAgICBdO1xuICAgIGNvbnN0IG5ld0luVjQ6IEFycmF5PGtleW9mIFlhcm5yY09wdGlvbnM+ID0gW1xuICAgICAgXCJjYWNoZU1pZ3JhdGlvbk1vZGVcIixcbiAgICAgIFwiaHR0cHNDYUZpbGVQYXRoXCIsXG4gICAgICBcImVuYWJsZUNvbnN0cmFpbnRzQ2hlY2tcIixcbiAgICAgIFwiZW5hYmxlSGFyZGVuZWRNb2RlXCIsXG4gICAgICBcImVuYWJsZUlubGluZUh1bmtzXCIsXG4gICAgICBcImVuYWJsZU9mZmxpbmVNb2RlXCIsXG4gICAgICBcImluamVjdEVudmlyb25tZW50RmlsZXNcIixcbiAgICAgIFwid2luTGlua1R5cGVcIixcbiAgICAgIFwicHJlZmVyUmV1c2VcIixcbiAgICAgIFwidGFza1Bvb2xDb25jdXJyZW5jeVwiLFxuICAgICAgXCJ3b3JrZXJQb29sTW9kZVwiLFxuICAgICAgXCJ0c0VuYWJsZUF1dG9UeXBlc1wiLFxuICAgIF07XG5cbiAgICBpZiAobWFqb3JWZXJzaW9uID49IDQpIHtcbiAgICAgIGNvbnN0IGludmFsaWRPcHRpb25zID0gT2JqZWN0LmtleXMob3B0aW9ucykuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgIChyZW1vdmVkSW5WNCBhcyBzdHJpbmdbXSkuaW5jbHVkZXMob3B0aW9uKVxuICAgICAgKTtcblxuICAgICAgaWYgKGludmFsaWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUgaW4gWWFybiA+PSA0OiAke2ludmFsaWRPcHRpb25zLmpvaW4oXG4gICAgICAgICAgICBcIiwgXCJcbiAgICAgICAgICApfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW52YWxpZE9wdGlvbnMgPSBPYmplY3Qua2V5cyhvcHRpb25zKS5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgICAgKG5ld0luVjQgYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wdGlvbilcbiAgICAgICk7XG5cbiAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBZYXJuIHY0IGFuZCBuZXdlcjogJHtpbnZhbGlkT3B0aW9ucy5qb2luKFxuICAgICAgICAgICAgXCIsIFwiXG4gICAgICAgICAgKX1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy5jaGVja3N1bUJlaGF2aW9yICYmXG4gICAgICAgIG9wdGlvbnMuY2hlY2tzdW1CZWhhdmlvciA9PT0gWWFybkNoZWNrc3VtQmVoYXZpb3IuUkVTRVRcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJUaGUgWWFybkNoZWNrc3VtQmVoYXZpb3IuUkVTRVQgaXMgb25seSBhdmFpbGFibGUgaW4gWWFybiB2NCBhbmQgbmV3ZXIuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/lib/json-patch.js CHANGED
@@ -152,5 +152,5 @@ class JsonPatch {
152
152
  }
153
153
  exports.JsonPatch = JsonPatch;
154
154
  _a = JSII_RTTI_SYMBOL_1;
155
- JsonPatch[_a] = { fqn: "projen.JsonPatch", version: "0.85.2" };
155
+ JsonPatch[_a] = { fqn: "projen.JsonPatch", version: "0.86.1" };
156
156
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1wYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uLXBhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0ZBQWtGO0FBQ2xGLDJCQUEyQjtBQUMzQixxREFZeUI7QUFFekIsSUFBWSxtQkFTWDtBQVRELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsb0NBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsOENBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVRXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBUzlCO0FBRUQsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFdkU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLFNBQVM7SUFDcEI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWEsRUFBRSxHQUFHLEdBQWdCO1FBQ3BELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUEsNEJBQVUsRUFDdkIsUUFBUSxFQUNSLElBQUEsMkJBQVMsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzVCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFlBQVksZ0NBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLHVCQUF1QixFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUM7Z0JBQ3pCLElBQUksNEJBQTRCLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLGVBQWUsS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDakQsT0FBTyxRQUFRLENBQUM7b0JBQ2xCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUN4QyxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEVBQUUsRUFBRSxLQUFLO1lBQ1QsSUFBSTtZQUNKLEtBQUs7U0FDc0IsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQTRCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDNUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixFQUFFLEVBQUUsU0FBUztZQUNiLElBQUk7WUFDSixLQUFLO1NBQzBCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQTBCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDM0MsT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBMEIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLElBQVksRUFDWixLQUFVLEVBQ1Ysa0JBQXVDLG1CQUFtQixDQUFDLElBQUk7UUFFL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDMUIsRUFBRSxFQUFFLE1BQU07WUFDVixJQUFJO1lBQ0osS0FBSztTQUN1QixDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsNEJBQTRCLEVBQUU7WUFDekQsUUFBUSxFQUFFLEtBQUs7WUFDZixLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ25DLE9BQU8sSUFBQSxxQ0FBbUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBcUMsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFHLENBQUM7SUFFN0Q7Ozs7T0FJRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7QUE5SEgsOEJBK0hDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2NkazhzLXRlYW0vY2RrOHMtY29yZS9ibG9iLzIueC9zcmMvanNvbi1wYXRjaC50c1xuLy8gdW5kZXIgQXBhY2hlIDIuMCBsaWNlbnNlXG5pbXBvcnQge1xuICBhcHBseVBhdGNoLFxuICBkZWVwQ2xvbmUsXG4gIE9wZXJhdGlvbixcbiAgQWRkT3BlcmF0aW9uLFxuICBSZW1vdmVPcGVyYXRpb24sXG4gIFJlcGxhY2VPcGVyYXRpb24sXG4gIE1vdmVPcGVyYXRpb24sXG4gIENvcHlPcGVyYXRpb24sXG4gIFRlc3RPcGVyYXRpb24sXG4gIGVzY2FwZVBhdGhDb21wb25lbnQsXG4gIEpzb25QYXRjaEVycm9yLFxufSBmcm9tIFwiZmFzdC1qc29uLXBhdGNoXCI7XG5cbmV4cG9ydCBlbnVtIFRlc3RGYWlsdXJlQmVoYXZpb3Ige1xuICAvKipcbiAgICogU2tpcCB0aGUgY3VycmVudCBwYXRjaCBvcGVyYXRpb24gYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb3BlcmF0aW9uLlxuICAgKi9cbiAgU0tJUCA9IFwic2tpcFwiLFxuICAvKipcbiAgICogRmFpbCB0aGUgd2hvbGUgZmlsZSBzeW50aGVzaXMuXG4gICAqL1xuICBGQUlMX1NZTlRIRVNJUyA9IFwiZmFpbFwiLFxufVxuXG5jb25zdCBURVNUX0ZBSUxVUkVfQkVIQVZJT1JfU1lNQk9MID0gU3ltYm9sLmZvcihcInRlc3RGYWlsdXJlQmVoYXZpb3JcIik7XG5cbi8qKlxuICogVXRpbGl0eSBmb3IgYXBwbHlpbmcgUkZDLTY5MDIgSlNPTi1QYXRjaCB0byBhIGRvY3VtZW50LlxuICpcbiAqIFVzZSB0aGUgdGhlIGBKc29uUGF0Y2guYXBwbHkoZG9jLCAuLi5vcHMpYCBmdW5jdGlvbiB0byBhcHBseSBhIHNldCBvZlxuICogb3BlcmF0aW9ucyB0byBhIEpTT04gZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgcmVzdWx0LlxuICpcbiAqIE9wZXJhdGlvbnMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIGZhY3RvcnkgbWV0aG9kcyBgSnNvblBhdGNoLmFkZCgpYCxcbiAqIGBKc29uUGF0Y2gucmVtb3ZlKClgLCBldGMuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKmNvbnN0IG91dHB1dCA9IEpzb25QYXRjaC5hcHBseShpbnB1dCxcbiAqICBKc29uUGF0Y2gucmVwbGFjZSgnL3dvcmxkL2hpL3RoZXJlJywgJ2dvb2RieWUnKSxcbiAqICBKc29uUGF0Y2guYWRkKCcvd29ybGQvZm9vLycsICdib29tJyksXG4gKiAgSnNvblBhdGNoLnJlbW92ZSgnL2hlbGxvJykpO1xuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25QYXRjaCB7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgc2V0IG9mIEpTT04tUGF0Y2ggKFJGQy02OTAyKSBvcGVyYXRpb25zIHRvIGBkb2N1bWVudGAgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cbiAgICogQHBhcmFtIGRvY3VtZW50IFRoZSBkb2N1bWVudCB0byBwYXRjaFxuICAgKiBAcGFyYW0gb3BzIFRoZSBvcGVyYXRpb25zIHRvIGFwcGx5XG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXBwbHkoZG9jdW1lbnQ6IGFueSwgLi4ub3BzOiBKc29uUGF0Y2hbXSk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFwcGx5UGF0Y2goXG4gICAgICAgIGRvY3VtZW50LFxuICAgICAgICBkZWVwQ2xvbmUob3BzLm1hcCgobykgPT4gby5fdG9Kc29uKCkpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHQubmV3RG9jdW1lbnQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBKc29uUGF0Y2hFcnJvciAmJiBlLm5hbWUgPT09IFwiVEVTVF9PUEVSQVRJT05fRkFJTEVEXCIpIHtcbiAgICAgICAgY29uc3Qgb3AgPSBvcHNbZS5pbmRleCFdO1xuICAgICAgICBpZiAoVEVTVF9GQUlMVVJFX0JFSEFWSU9SX1NZTUJPTCBpbiBvcCkge1xuICAgICAgICAgIGNvbnN0IGZhaWx1cmVCZWhhdmlvciA9IG9wW1RFU1RfRkFJTFVSRV9CRUhBVklPUl9TWU1CT0xdO1xuICAgICAgICAgIGlmIChmYWlsdXJlQmVoYXZpb3IgPT09IFRlc3RGYWlsdXJlQmVoYXZpb3IuU0tJUCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHZhbHVlIHRvIGFuIG9iamVjdCBvciBpbnNlcnRzIGl0IGludG8gYW4gYXJyYXkuIEluIHRoZSBjYXNlIG9mIGFuXG4gICAqIGFycmF5LCB0aGUgdmFsdWUgaXMgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4gVGhlIC0gY2hhcmFjdGVyIGNhbiBiZVxuICAgKiB1c2VkIGluc3RlYWQgb2YgYW4gaW5kZXggdG8gaW5zZXJ0IGF0IHRoZSBlbmQgb2YgYW4gYXJyYXkuXG4gICAqXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5hZGQoJy9iaXNjdWl0cy8xJywgeyBcIm5hbWVcIjogXCJHaW5nZXIgTnV0XCIgfSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWRkKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGNoKHtcbiAgICAgIG9wOiBcImFkZFwiLFxuICAgICAgcGF0aCxcbiAgICAgIHZhbHVlLFxuICAgIH0gc2F0aXNmaWVzIEFkZE9wZXJhdGlvbjxhbnk+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgdmFsdWUgZnJvbSBhbiBvYmplY3Qgb3IgYXJyYXkuXG4gICAqXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5yZW1vdmUoJy9iaXNjdWl0cycpXG4gICAqIEBleGFtcGxlIEpzb25QYXRjaC5yZW1vdmUoJy9iaXNjdWl0cy8wJylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGNoKHsgb3A6IFwicmVtb3ZlXCIsIHBhdGggfSBzYXRpc2ZpZXMgUmVtb3ZlT3BlcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIHZhbHVlLiBFcXVpdmFsZW50IHRvIGEg4oCccmVtb3Zl4oCdIGZvbGxvd2VkIGJ5IGFuIOKAnGFkZOKAnS5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLnJlcGxhY2UoJy9iaXNjdWl0cy8wL25hbWUnLCAnQ2hvY29sYXRlIERpZ2VzdGl2ZScpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlcGxhY2UocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0Y2goe1xuICAgICAgb3A6IFwicmVwbGFjZVwiLFxuICAgICAgcGF0aCxcbiAgICAgIHZhbHVlLFxuICAgIH0gc2F0aXNmaWVzIFJlcGxhY2VPcGVyYXRpb248YW55Pik7XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIGEgdmFsdWUgZnJvbSBvbmUgbG9jYXRpb24gdG8gYW5vdGhlciB3aXRoaW4gdGhlIEpTT04gZG9jdW1lbnQuIEJvdGhcbiAgICogZnJvbSBhbmQgcGF0aCBhcmUgSlNPTiBQb2ludGVycy5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLmNvcHkoJy9iaXNjdWl0cy8wJywgJy9iZXN0X2Jpc2N1aXQnKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb3B5KGZyb206IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0Y2goeyBvcDogXCJjb3B5XCIsIGZyb20sIHBhdGggfSBzYXRpc2ZpZXMgQ29weU9wZXJhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgYSB2YWx1ZSBmcm9tIG9uZSBsb2NhdGlvbiB0byB0aGUgb3RoZXIuIEJvdGggZnJvbSBhbmQgcGF0aCBhcmUgSlNPTiBQb2ludGVycy5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLm1vdmUoJy9iaXNjdWl0cycsICcvY29va2llcycpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1vdmUoZnJvbTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRjaCh7IG9wOiBcIm1vdmVcIiwgZnJvbSwgcGF0aCB9IHNhdGlzZmllcyBNb3ZlT3BlcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyB0aGF0IHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgc2V0IGluIHRoZSBkb2N1bWVudC4gSWYgdGhlIHRlc3QgZmFpbHMsXG4gICAqIHRoZW4gdGhlIHBhdGNoIGFzIGEgd2hvbGUgc2hvdWxkIG5vdCBhcHBseS5cbiAgICpcbiAgICogQGV4YW1wbGUgSnNvblBhdGNoLnRlc3QoJy9iZXN0X2Jpc2N1aXQvbmFtZScsICdDaG9jbyBMZWlibml6JylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdGVzdChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBmYWlsdXJlQmVoYXZpb3I6IFRlc3RGYWlsdXJlQmVoYXZpb3IgPSBUZXN0RmFpbHVyZUJlaGF2aW9yLlNLSVBcbiAgKSB7XG4gICAgY29uc3QgcGF0Y2ggPSBuZXcgSnNvblBhdGNoKHtcbiAgICAgIG9wOiBcInRlc3RcIixcbiAgICAgIHBhdGgsXG4gICAgICB2YWx1ZSxcbiAgICB9IHNhdGlzZmllcyBUZXN0T3BlcmF0aW9uPGFueT4pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXRjaCwgVEVTVF9GQUlMVVJFX0JFSEFWSU9SX1NZTUJPTCwge1xuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IGZhaWx1cmVCZWhhdmlvcixcbiAgICB9KTtcbiAgICByZXR1cm4gcGF0Y2g7XG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlcyBhIGpzb24gcG9pbnRlciBwYXRoXG4gICAqIEBwYXJhbSBwYXRoIFRoZSByYXcgcG9pbnRlclxuICAgKiBAcmV0dXJuIHRoZSBFc2NhcGVkIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZXNjYXBlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBlc2NhcGVQYXRoQ29tcG9uZW50KHBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSlNPTiBwYXRjaCBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb247XG4gIH1cbn1cbiJdfQ==
package/lib/json.js CHANGED
@@ -40,5 +40,5 @@ class JsonFile extends object_file_1.ObjectFile {
40
40
  }
41
41
  exports.JsonFile = JsonFile;
42
42
  _a = JSII_RTTI_SYMBOL_1;
43
- JsonFile[_a] = { fqn: "projen.JsonFile", version: "0.85.2" };
43
+ JsonFile[_a] = { fqn: "projen.JsonFile", version: "0.86.1" };
44
44
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsK0NBQThEO0FBbUI5RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFVO0lBSXRDLFlBQVksS0FBaUIsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixPQUFPLENBQUMsYUFBYTtnQkFDckIsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztvQkFDdkMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O0FBeENILDRCQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJlc29sdmVyIH0gZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSwgT2JqZWN0RmlsZU9wdGlvbnMgfSBmcm9tIFwiLi9vYmplY3QtZmlsZVwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBKc29uRmlsZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkZpbGVPcHRpb25zIGV4dGVuZHMgT2JqZWN0RmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogQWRkcyBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbmV3bGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93IHRoZSB1c2Ugb2YgY29tbWVudHMgaW4gdGhpcyBmaWxlLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlIGZvciAuanNvbiBmaWxlcywgdHJ1ZSBmb3IgLmpzb241IGFuZCAuanNvbmMgZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93Q29tbWVudHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBKU09OIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uRmlsZSBleHRlbmRzIE9iamVjdEZpbGUge1xuICBwcml2YXRlIHJlYWRvbmx5IG5ld2xpbmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN1cHBvcnRzQ29tbWVudHM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IElDb25zdHJ1Y3QsIGZpbGVQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IEpzb25GaWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBmaWxlUGF0aCwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLm5ld2xpbmUgPSBvcHRpb25zLm5ld2xpbmUgPz8gdHJ1ZTtcbiAgICB0aGlzLnN1cHBvcnRzQ29tbWVudHMgPVxuICAgICAgb3B0aW9ucy5hbGxvd0NvbW1lbnRzID8/XG4gICAgICAoZmlsZVBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChcImpzb241XCIpIHx8XG4gICAgICAgIGZpbGVQYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoXCJqc29uY1wiKSk7XG5cbiAgICBpZiAoIW9wdGlvbnMub2JqKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wib2JqXCIgY2Fubm90IGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChyZXNvbHZlcjogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBqc29uID0gc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpO1xuICAgIGlmICghanNvbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBKU09OLnBhcnNlKGpzb24pO1xuXG4gICAgaWYgKHRoaXMubWFya2VyICYmICF0aGlzLnN1cHBvcnRzQ29tbWVudHMpIHtcbiAgICAgIHNhbml0aXplZFtcIi8vXCJdID0gdGhpcy5tYXJrZXI7XG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShzYW5pdGl6ZWQsIHVuZGVmaW5lZCwgMik7XG4gICAgaWYgKHRoaXMubWFya2VyICYmIHRoaXMuc3VwcG9ydHNDb21tZW50cykge1xuICAgICAgY29udGVudCA9IGAvLyAke3RoaXMubWFya2VyfVxcbiR7Y29udGVudH1gO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5ld2xpbmUpIHtcbiAgICAgIGNvbnRlbnQgKz0gXCJcXG5cIjtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxufVxuIl19
package/lib/license.js CHANGED
@@ -36,5 +36,5 @@ class License extends file_1.FileBase {
36
36
  }
37
37
  exports.License = License;
38
38
  _a = JSII_RTTI_SYMBOL_1;
39
- License[_a] = { fqn: "projen.License", version: "0.85.2" };
39
+ License[_a] = { fqn: "projen.License", version: "0.86.1" };
40
40
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWNlbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLGlDQUE2QztBQThCN0MsTUFBYSxPQUFRLFNBQVEsZUFBUTtJQUduQyxZQUFZLE9BQWdCLEVBQUUsT0FBdUI7UUFDbkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYix5REFBeUQ7WUFDekQsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUxQixNQUFNLFFBQVEsR0FBRyxHQUFHLFNBQVMsb0JBQW9CLElBQUksTUFBTSxDQUFDO1FBQzVELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQ1QsT0FBTyxDQUFDLGVBQWUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFFckMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFaEQsb0ZBQW9GO1FBQ3BGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2IsT0FBTyxJQUFJLG9EQUFvRCxDQUNoRSxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7QUF6Q0gsMEJBMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBGaWxlQmFzZSwgSVJlc29sdmVyIH0gZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMaWNlbnNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaWNlbnNlIHR5cGUgKFNQRFgpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL3RyZWUvbWFpbi9saWNlbnNlLXRleHQgZm9yIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpY2Vuc2VzXG4gICAqL1xuICByZWFkb25seSBzcGR4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvcHlyaWdodCBvd25lci5cbiAgICpcbiAgICogSWYgdGhlIGxpY2Vuc2UgdGV4dCBoYXMgJGNvcHlyaWdodF9vd25lciwgdGhpcyBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIHJlYWRvbmx5IGNvcHlyaWdodE93bmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJpb2Qgb2YgbGljZW5zZSAoZS5nLiBcIjE5OTgtMjAyM1wiKVxuICAgKlxuICAgKiBUaGUgc3RyaW5nIGAkY29weXJpZ2h0X3BlcmlvZGAgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoaXMgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgeWVhciAoZS5nLiBcIjIwMjBcIilcbiAgICovXG4gIHJlYWRvbmx5IGNvcHlyaWdodFBlcmlvZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExpY2Vuc2UgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExpY2Vuc2VPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgXCJMSUNFTlNFXCIsIHtcbiAgICAgIG1hcmtlcjogZmFsc2UsXG4gICAgICAvLyBBbGxvdyB0aGUgbGljZW5zZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlcG9zaXRvcmllcy5cbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNwZHggPSBvcHRpb25zLnNwZHg7XG5cbiAgICBjb25zdCB0ZXh0RmlsZSA9IGAke19fZGlybmFtZX0vLi4vbGljZW5zZS10ZXh0LyR7c3BkeH0udHh0YDtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGV4dEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGxpY2Vuc2UgJHtzcGR4fWApO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXJzID1cbiAgICAgIG9wdGlvbnMuY29weXJpZ2h0UGVyaW9kID8/IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuICAgIGNvbnN0IG93bmVyID0gb3B0aW9ucy5jb3B5cmlnaHRPd25lcjtcblxuICAgIGxldCB0ZXh0ID0gZnMucmVhZEZpbGVTeW5jKHRleHRGaWxlLCBcInV0Zi04XCIpO1xuXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZShcIiRjb3B5cmlnaHRfcGVyaW9kXCIsIHllYXJzKTtcblxuICAgIC8vIGlmIHRoZSBsaWNlbnNlIHRleHQgaW5jbHVkZXMgJGNvcHlyaWdodF9vd25lciwgdGhlbiBgY29weXJpZ2h0T3duZXJgIGlzIHJlcXVpcmVkLlxuICAgIGlmICh0ZXh0LmluZGV4T2YoXCIkY29weXJpZ2h0X293bmVyXCIpICE9PSAtMSkge1xuICAgICAgaWYgKCFvd25lcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSAke3NwZHh9IGxpY2Vuc2UgcmVxdWlyZXMgXCJjb3B5cmlnaHRPd25lclwiIHRvIGJlIHNwZWNpZmllZGBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShcIiRjb3B5cmlnaHRfb3duZXJcIiwgb3duZXIpO1xuICAgIH1cblxuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQoXzogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xuICB9XG59XG4iXX0=
package/lib/logger.js CHANGED
@@ -98,7 +98,7 @@ class Logger extends component_1.Component {
98
98
  }
99
99
  exports.Logger = Logger;
100
100
  _a = JSII_RTTI_SYMBOL_1;
101
- Logger[_a] = { fqn: "projen.Logger", version: "0.85.2" };
101
+ Logger[_a] = { fqn: "projen.Logger", version: "0.86.1" };
102
102
  /**
103
103
  * Logging verbosity.
104
104
  */
package/lib/makefile.js CHANGED
@@ -74,5 +74,5 @@ class Makefile extends file_1.FileBase {
74
74
  }
75
75
  exports.Makefile = Makefile;
76
76
  _a = JSII_RTTI_SYMBOL_1;
77
- Makefile[_a] = { fqn: "projen.Makefile", version: "0.85.2" };
77
+ Makefile[_a] = { fqn: "projen.Makefile", version: "0.86.1" };
78
78
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZWZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBOEQ7QUEyRDlEOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsZUFBUTtJQVFwQyxZQUNFLE9BQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFVBQTJCLEVBQUU7UUFFN0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLEdBQUcsR0FBRztZQUNULE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNoQixhQUFhLEVBQUUsR0FBRztZQUNsQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxHQUFHLE9BQWlCO1FBQ2pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxJQUFVO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRLENBQUMsR0FBRyxLQUFhO1FBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBVTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FDYiw2REFBNkQsQ0FDOUQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsTUFBTSxLQUFLLEdBQUc7WUFDWixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU0sYUFBYSxHQUFHLENBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDN0MsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUU5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUV2RCxPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixHQUFHLE9BQU8sS0FBSyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUU7b0JBQ3JDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztpQkFDckMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZixDQUFDLENBQUM7U0FDSCxDQUFDO1FBRUYsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNuQyxDQUFDOztBQTNGSCw0QkE0RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlQmFzZSwgRmlsZUJhc2VPcHRpb25zLCBJUmVzb2x2ZXIgfSBmcm9tIFwiLi9maWxlXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIEEgTWFrZSBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuICAvKipcbiAgICogRmlsZXMgdG8gYmUgY3JlYXRlZCBvciB1cGRhdGVkIGJ5IHRoaXMgcnVsZS5cbiAgICpcbiAgICogSWYgdGhlIHJ1bGUgaXMgcGhvbnkgdGhlbiBpbnN0ZWFkIHRoaXMgcmVwcmVzZW50cyB0aGUgY29tbWFuZCdzIG5hbWUocykuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsZXMgdGhhdCBhcmUgdXNlZCBhcyBpbnB1dHMgdG8gY3JlYXRlIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVxdWlzaXRlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb21tYW5kcyB0aGF0IGFyZSBydW4gKHVzaW5nIHByZXJlcXVpc2l0ZXMgYXMgaW5wdXRzKSB0byBjcmVhdGUgYSB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSByZWNpcGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTWFya3Mgd2hldGhlciB0aGUgdGFyZ2V0IGlzIHBob255LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcGhvbnk/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQWxsUnVsZSBleHRlbmRzIFJ1bGUge1xuICByZWFkb25seSBwcmVyZXF1aXNpdGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBNYWtlZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFrZWZpbGVPcHRpb25zIGV4dGVuZHMgRmlsZUJhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGFyZ2V0cyB0byBidWlsZCB3aGVuIE1ha2UgaXMgaW52b2tlZCB3aXRob3V0IHNwZWNpZnlpbmcgYW55IHRhcmdldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBhbGw/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUnVsZXMgdG8gaW5jbHVkZSBpbiB0aGUgTWFrZWZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBydWxlcz86IFJ1bGVbXTtcbn1cblxuLyoqXG4gKiBNaW5pbWFsIE1ha2VmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgTWFrZWZpbGUgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHJ1bGUgZGVmaW5pdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcnVsZXM6IFJ1bGVbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFsbDogQWxsUnVsZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogTWFrZWZpbGVPcHRpb25zID0ge31cbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCwgZmlsZVBhdGgsIG9wdGlvbnMpO1xuXG4gICAgY29uc3QgYWxsID0gb3B0aW9ucy5hbGwgPyBvcHRpb25zLmFsbCA6IFtdO1xuICAgIGNvbnN0IHJ1bGVzID0gb3B0aW9ucy5ydWxlcyA/IG9wdGlvbnMucnVsZXMgOiBbXTtcblxuICAgIHJ1bGVzLmZvckVhY2goKGUpID0+IHRoaXMudmFsaWRhdGVSdWxlKGUpKTtcblxuICAgIHRoaXMuYWxsID0ge1xuICAgICAgdGFyZ2V0czogW1wiYWxsXCJdLFxuICAgICAgcHJlcmVxdWlzaXRlczogYWxsLFxuICAgICAgcGhvbnk6IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLnJ1bGVzID0gW3RoaXMuYWxsLCAuLi5ydWxlc107XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFyZ2V0IHRvIGFsbFxuICAgKi9cbiAgcHVibGljIGFkZEFsbCh0YXJnZXQ6IHN0cmluZyk6IE1ha2VmaWxlIHtcbiAgICB0aGlzLmFsbC5wcmVyZXF1aXNpdGVzLnB1c2godGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbXVsdGlwbGUgdGFyZ2V0cyB0byBhbGxcbiAgICovXG4gIHB1YmxpYyBhZGRBbGxzKC4uLnRhcmdldHM6IHN0cmluZ1tdKTogTWFrZWZpbGUge1xuICAgIHRhcmdldHMuZm9yRWFjaCgoZSkgPT4gdGhpcy5hZGRBbGwoZSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJ1bGUgdG8gdGhlIE1ha2VmaWxlLlxuICAgKi9cbiAgcHVibGljIGFkZFJ1bGUocnVsZTogUnVsZSk6IE1ha2VmaWxlIHtcbiAgICB0aGlzLnZhbGlkYXRlUnVsZShydWxlKTtcbiAgICB0aGlzLnJ1bGVzLnB1c2gocnVsZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG11bHRpcGxlIHJ1bGVzIHRvIHRoZSBNYWtlZmlsZS5cbiAgICovXG4gIHB1YmxpYyBhZGRSdWxlcyguLi5ydWxlczogUnVsZVtdKTogTWFrZWZpbGUge1xuICAgIHJ1bGVzLmZvckVhY2goKGUpID0+IHRoaXMuYWRkUnVsZShlKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUnVsZShydWxlOiBSdWxlKSB7XG4gICAgaWYgKCFydWxlLnRhcmdldHMgfHwgIXJ1bGUudGFyZ2V0cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1widGFyZ2V0c1wiIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgZW1wdHkgZm9yIGl0ZW1zIGluIFwicnVsZXNcIidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KHJlc29sdmVyOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJ1bGVzID0gcmVzb2x2ZXIucmVzb2x2ZSh0aGlzLnJ1bGVzKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgLi4ucnVsZXMubWFwKChydWxlOiBSdWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSBydWxlLnRhcmdldHMuam9pbihcIiBcIik7XG4gICAgICAgIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSAoXG4gICAgICAgICAgcnVsZS5wcmVyZXF1aXNpdGVzID8gcnVsZS5wcmVyZXF1aXNpdGVzIDogW11cbiAgICAgICAgKS5qb2luKFwiIFwiKTtcbiAgICAgICAgY29uc3QgcmVjaXBlID0gcnVsZS5yZWNpcGUgPyBydWxlLnJlY2lwZSA6IFtdO1xuXG4gICAgICAgIGNvbnN0IHBob255ID0gcnVsZS5waG9ueSA/IFtgLlBIT05ZOiAke3RhcmdldHN9YF0gOiBbXTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnBob255LFxuICAgICAgICAgIGAke3RhcmdldHN9OiAke3ByZXJlcXVpc2l0ZXN9YC50cmltKCksXG4gICAgICAgICAgLi4ucmVjaXBlLm1hcCgoc3RlcCkgPT4gYFxcdCR7c3RlcH1gKSxcbiAgICAgICAgXS5qb2luKFwiXFxuXCIpO1xuICAgICAgfSksXG4gICAgXTtcblxuICAgIHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXFxuXCIpfVxcbmA7XG4gIH1cbn1cbiJdfQ==
@@ -190,7 +190,7 @@ class ObjectFile extends file_1.FileBase {
190
190
  }
191
191
  exports.ObjectFile = ObjectFile;
192
192
  _a = JSII_RTTI_SYMBOL_1;
193
- ObjectFile[_a] = { fqn: "projen.ObjectFile", version: "0.85.2" };
193
+ ObjectFile[_a] = { fqn: "projen.ObjectFile", version: "0.86.1" };
194
194
  /**
195
195
  * Split on periods while processing escape characters \
196
196
  */