projen 0.101.7 → 0.101.9

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 (163) hide show
  1. package/.jsii +439 -88
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-build.js +1 -1
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  27. package/lib/cdk8s/cdk8s-construct.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-deps.js +1 -1
  30. package/lib/cdk8s/integration-test.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/circleci/circleci.js +1 -1
  33. package/lib/cli/cmds/new.js +1 -8
  34. package/lib/component.d.ts +21 -1
  35. package/lib/component.js +27 -3
  36. package/lib/dependencies.js +1 -1
  37. package/lib/dev-env.js +1 -1
  38. package/lib/docker-compose/docker-compose-service.js +1 -1
  39. package/lib/docker-compose/docker-compose.js +1 -1
  40. package/lib/file.js +1 -1
  41. package/lib/gitattributes.js +1 -1
  42. package/lib/github/actions-provider.js +1 -1
  43. package/lib/github/auto-approve.js +1 -1
  44. package/lib/github/auto-merge.js +6 -7
  45. package/lib/github/auto-queue.js +1 -1
  46. package/lib/github/dependabot.js +1 -1
  47. package/lib/github/dependency-review.js +1 -1
  48. package/lib/github/github-credentials.js +1 -1
  49. package/lib/github/github-project.js +1 -1
  50. package/lib/github/github.js +1 -1
  51. package/lib/github/merge-queue.js +1 -1
  52. package/lib/github/mergify.d.ts +32 -1
  53. package/lib/github/mergify.js +5 -2
  54. package/lib/github/pr-template.js +1 -1
  55. package/lib/github/pull-request-backport.js +1 -1
  56. package/lib/github/pull-request-lint.js +1 -1
  57. package/lib/github/stale.js +1 -1
  58. package/lib/github/task-workflow-job.js +1 -1
  59. package/lib/github/task-workflow.js +1 -1
  60. package/lib/github/workflow-actions.js +1 -1
  61. package/lib/github/workflow-jobs.js +1 -1
  62. package/lib/github/workflow-steps.js +1 -1
  63. package/lib/github/workflows.js +1 -1
  64. package/lib/gitlab/configuration.js +1 -1
  65. package/lib/gitlab/gitlab-configuration.js +1 -1
  66. package/lib/gitlab/nested-configuration.js +1 -1
  67. package/lib/gitpod.js +1 -1
  68. package/lib/ignore-file.js +1 -1
  69. package/lib/ini.js +1 -1
  70. package/lib/java/java-project.js +1 -1
  71. package/lib/java/junit.js +1 -1
  72. package/lib/java/maven-compile.js +1 -1
  73. package/lib/java/maven-packaging.js +1 -1
  74. package/lib/java/maven-sample.js +1 -1
  75. package/lib/java/pom.js +2 -2
  76. package/lib/java/projenrc.d.ts +2 -1
  77. package/lib/java/projenrc.js +6 -9
  78. package/lib/javascript/biome/biome.d.ts +5 -1
  79. package/lib/javascript/biome/biome.js +8 -2
  80. package/lib/javascript/bundler.js +1 -1
  81. package/lib/javascript/eslint.d.ts +5 -1
  82. package/lib/javascript/eslint.js +8 -2
  83. package/lib/javascript/jest.js +4 -4
  84. package/lib/javascript/license-checker.js +1 -1
  85. package/lib/javascript/node-package.js +1 -1
  86. package/lib/javascript/node-project.js +1 -1
  87. package/lib/javascript/npm-config.js +1 -1
  88. package/lib/javascript/pnpm-workspace-config.js +2 -2
  89. package/lib/javascript/pnpm-workspace.js +1 -1
  90. package/lib/javascript/prettier.js +1 -1
  91. package/lib/javascript/projenrc.d.ts +2 -1
  92. package/lib/javascript/projenrc.js +6 -8
  93. package/lib/javascript/render-options.d.ts +15 -1
  94. package/lib/javascript/render-options.js +7 -3
  95. package/lib/javascript/typescript-config.js +2 -2
  96. package/lib/javascript/upgrade-dependencies.js +2 -2
  97. package/lib/javascript/yarnrc.js +1 -1
  98. package/lib/json-patch.js +1 -1
  99. package/lib/json.js +1 -1
  100. package/lib/license.js +1 -1
  101. package/lib/logger.js +1 -1
  102. package/lib/logging.js +3 -2
  103. package/lib/makefile.js +1 -1
  104. package/lib/object-file.js +1 -1
  105. package/lib/project-build.js +1 -1
  106. package/lib/project-tree.js +1 -1
  107. package/lib/project.d.ts +19 -5
  108. package/lib/project.js +34 -11
  109. package/lib/projects.js +7 -5
  110. package/lib/projenrc-json.d.ts +2 -1
  111. package/lib/projenrc-json.js +6 -8
  112. package/lib/projenrc.js +1 -1
  113. package/lib/python/pip.js +1 -1
  114. package/lib/python/poetry.js +2 -2
  115. package/lib/python/projenrc.d.ts +2 -1
  116. package/lib/python/projenrc.js +6 -9
  117. package/lib/python/pyproject-toml-file.js +1 -1
  118. package/lib/python/pytest-sample.js +1 -1
  119. package/lib/python/pytest.js +1 -1
  120. package/lib/python/python-project.js +1 -1
  121. package/lib/python/python-sample.js +1 -1
  122. package/lib/python/requirements-file.js +1 -1
  123. package/lib/python/setuppy.js +1 -1
  124. package/lib/python/setuptools.js +1 -1
  125. package/lib/python/uv.js +1 -1
  126. package/lib/python/venv.js +1 -1
  127. package/lib/readme.js +1 -1
  128. package/lib/release/publisher.js +1 -1
  129. package/lib/release/release-trigger.js +1 -1
  130. package/lib/release/release.js +1 -1
  131. package/lib/renovatebot.js +1 -1
  132. package/lib/run-task.cjs +245 -49
  133. package/lib/sample-file.js +2 -2
  134. package/lib/script-runner.js +1 -1
  135. package/lib/source-code.js +1 -1
  136. package/lib/task-shell.js +1 -1
  137. package/lib/task.js +1 -1
  138. package/lib/tasks.js +1 -1
  139. package/lib/testing.js +1 -1
  140. package/lib/textfile.js +1 -1
  141. package/lib/toml.js +1 -1
  142. package/lib/typescript/projenrc-ts.d.ts +2 -1
  143. package/lib/typescript/projenrc-ts.js +6 -8
  144. package/lib/typescript/projenrc.d.ts +3 -1
  145. package/lib/typescript/projenrc.js +7 -9
  146. package/lib/typescript/typescript-runner.js +1 -1
  147. package/lib/typescript/typescript-typedoc.js +1 -1
  148. package/lib/typescript/typescript.js +5 -5
  149. package/lib/util/exec.d.ts +7 -0
  150. package/lib/util/exec.js +36 -13
  151. package/lib/version.js +2 -2
  152. package/lib/vscode/devcontainer.js +1 -1
  153. package/lib/vscode/extensions.js +1 -1
  154. package/lib/vscode/launch-config.js +1 -1
  155. package/lib/vscode/settings.js +1 -1
  156. package/lib/vscode/vscode.js +1 -1
  157. package/lib/web/next.js +3 -3
  158. package/lib/web/postcss.js +1 -1
  159. package/lib/web/react.js +3 -3
  160. package/lib/web/tailwind.js +1 -1
  161. package/lib/xmlfile.js +1 -1
  162. package/lib/yaml.js +1 -1
  163. package/package.json +1 -1
@@ -16,7 +16,7 @@ const DEFAULT_FILENAME = ".projenrc.ts";
16
16
  * and has no expectations around the project's main language.
17
17
  */
18
18
  class ProjenrcTs extends projenrc_1.ProjenrcFile {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.ProjenrcTs", version: "0.101.7" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.ProjenrcTs", version: "0.101.9" };
20
20
  /**
21
21
  * TypeScript configuration file used to compile projen source files
22
22
  */
@@ -57,7 +57,9 @@ class ProjenrcTs extends projenrc_1.ProjenrcFile {
57
57
  else {
58
58
  project.defaultTask?.addSteps(...steps);
59
59
  }
60
- this.generateProjenrc();
60
+ }
61
+ projectCreation(initProject) {
62
+ this.generateProjenrc(initProject);
61
63
  }
62
64
  getRunner(options) {
63
65
  // use a provide runner as is
@@ -75,15 +77,11 @@ class ProjenrcTs extends projenrc_1.ProjenrcFile {
75
77
  this.tsconfig.addInclude(this.filePath);
76
78
  this.tsconfig.addInclude(`${this._projenCodeDir}/**/*.ts`);
77
79
  }
78
- generateProjenrc() {
80
+ generateProjenrc(bootstrap) {
79
81
  const rcfile = (0, path_1.resolve)(this.project.outdir, this.filePath);
80
82
  if ((0, fs_1.existsSync)(rcfile)) {
81
83
  return; // already exists
82
84
  }
83
- const bootstrap = this.project.initProject;
84
- if (!bootstrap) {
85
- return;
86
- }
87
85
  const parts = bootstrap.fqn.split(".");
88
86
  const moduleName = parts[0];
89
87
  const importName = parts[1];
@@ -105,4 +103,4 @@ class ProjenrcTs extends projenrc_1.ProjenrcFile {
105
103
  }
106
104
  }
107
105
  exports.ProjenrcTs = ProjenrcTs;
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMtdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC9wcm9qZW5yYy10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQStDO0FBQy9DLCtCQUErQjtBQUUvQiw4Q0FBaUQ7QUFDakQsMkRBQXVEO0FBQ3ZELGlFQUF1RTtBQUV2RSwwQ0FBMkM7QUFrQzNDLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBRXhDOzs7OztHQUtHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsdUJBQVk7O0lBQzFDOztPQUVHO0lBQ2EsUUFBUSxDQUFtQjtJQUMzQixRQUFRLENBQVM7SUFFaEIsY0FBYyxDQUFTO0lBQ3ZCLE9BQU8sQ0FBbUI7SUFFM0MsWUFBWSxPQUFnQixFQUFFLFVBQTZCLEVBQUU7UUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVLENBQUM7UUFFMUQsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFOUMsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw2QkFBZ0IsQ0FBQyxPQUFPLEVBQUU7WUFDNUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxzQkFBc0I7WUFDNUQsZUFBZSxFQUFFLEVBQUU7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUQsdUJBQXVCO1FBQ3ZCLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcs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QUMsQ0FBQztRQUVwQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixTQUFTLElBQUksZUFBZSxJQUFJLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFL0IsSUFBQSxrQkFBYSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QiwwQ0FBMEMsTUFBTSxFQUFFLENBQ25ELENBQUM7SUFDSixDQUFDOztBQTNHSCxnQ0E0R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgSW52ZW50b3J5UHJvamVjdFR5cGUgfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyBUeXBlc2NyaXB0Q29uZmlnIH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi90eXBlc2NyaXB0LXJ1bm5lclwiO1xuaW1wb3J0IHsgcmVuZGVySmF2YVNjcmlwdE9wdGlvbnMgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC9yZW5kZXItb3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFByb2plbnJjRmlsZSB9IGZyb20gXCIuLi9wcm9qZW5yY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plbnJjVHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZW5yYyBmaWxlLlxuICAgKiBAZGVmYXVsdCBcIi5wcm9qZW5yYy50c1wiXG4gICAqL1xuICByZWFkb25seSBmaWxlbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkaXJlY3RvcnkgdHJlZSB0aGF0IG1heSBjb250YWluICoudHMgZmlsZXMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBmcm9tXG4gICAqIHlvdXIgcHJvamVucmMgdHlwZXNjcmlwdCBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInByb2plbnJjXCJcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkNvZGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0c2NvbmZpZyBmaWxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBydW5uZXJcbiAgICogd2hlbiBjb21waWxpbmcgcHJvamVuIHNvdXJjZSBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5wcm9qZW4uanNvblwiXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcnVubmVyYCB0byBjb25maWd1cmUgdGhlIHRzY29uZmlnRmlsZU5hbWUgZGlyZWN0bHkuXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVubmVyIHRvIHVzZSBmb3IgZXhlY3V0aW5nIFR5cGVTY3JpcHQgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFR5cGVTY3JpcHRSdW5uZXIudHNOb2RlKClcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lcj86IFR5cGVTY3JpcHRSdW5uZXI7XG59XG5cbmNvbnN0IERFRkFVTFRfRklMRU5BTUUgPSBcIi5wcm9qZW5yYy50c1wiO1xuXG4vKipcbiAqIEEgcHJvamVucmMgZmlsZSB3cml0dGVuIGluIFR5cGVTY3JpcHRcbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgaW5zdGFudGlhdGVkIGluIGFueSB0eXBlIG9mIHByb2plY3RcbiAqIGFuZCBoYXMgbm8gZXhwZWN0YXRpb25zIGFyb3VuZCB0aGUgcHJvamVjdCdzIG1haW4gbGFuZ3VhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZW5yY1RzIGV4dGVuZHMgUHJvamVucmNGaWxlIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHVzZWQgdG8gY29tcGlsZSBwcm9qZW4gc291cmNlIGZpbGVzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHNjb25maWc6IFR5cGVzY3JpcHRDb25maWc7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plbkNvZGVEaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVubmVyOiBUeXBlU2NyaXB0UnVubmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFByb2plbnJjVHNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZVBhdGggPSBvcHRpb25zLmZpbGVuYW1lID8/IERFRkFVTFRfRklMRU5BTUU7XG4gICAgdGhpcy5fcHJvamVuQ29kZURpciA9IG9wdGlvbnMucHJvamVuQ29kZURpciA/PyBcInByb2plbnJjXCI7XG5cbiAgICBwcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuZmlsZVBhdGh9YCk7XG5cbiAgICAvLyBDcmVhdGUgYSBkZWRpY2F0ZWQgdHNjb25maWcgZm9yIHByb2plbiBzb3VyY2UgZmlsZXNcbiAgICB0aGlzLnRzY29uZmlnID0gbmV3IFR5cGVzY3JpcHRDb25maWcocHJvamVjdCwge1xuICAgICAgZmlsZU5hbWU6IG9wdGlvbnMudHNjb25maWdGaWxlTmFtZSA/PyBcInRzY29uZmlnLnByb2plbi5qc29uXCIsXG4gICAgICBjb21waWxlck9wdGlvbnM6IHt9LFxuICAgIH0pO1xuXG4gICAgLy8gQSBydW5uZXIgaXMgYSBmdXR1cmUgY29tcG9uZW50LCBtYWtlIHN1cmUgaXQgaXMgYXR0YWNoZWRcbiAgICB0aGlzLl9ydW5uZXIgPSB0aGlzLmdldFJ1bm5lcihvcHRpb25zKS50cnlBdHRhY2gocHJvamVjdCk7XG5cbiAgICAvLyBCdWlsZCB0aGUgcnVuIGNvbmZpZ1xuICAgIGNvbnN0IHsgZGVwZW5kZW5jaWVzLCBzdGVwcyB9ID0gdGhpcy5fcnVubmVyLmNvbmZpZ0Zvcih0aGlzLmZpbGVQYXRoKTtcblxuICAgIC8vIElmIHRoZSBydW5uZXIgaGFzIGRlcGVuZGVuY2llcywgcnVuIGVhY2ggc3RlcCB0aHJvdWdoIGFuIGBucHhgIHNoZWxsXG4gICAgLy8gKGBucHggLXkgLXAgPGRlcHM+IC1jIFwiPGNvbW1hbmQ+XCJgKSB0byBtYWtlIHRoZW0gYXZhaWxhYmxlIHdpdGhvdXQgaW5zdGFsbC5cbiAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gW1xuICAgICAgICBcIm5weFwiLFxuICAgICAgICBcIi15XCIsXG4gICAgICAgIC4uLmRlcGVuZGVuY2llcy5mbGF0TWFwKChkKSA9PiBbXG4gICAgICAgICAgXCItcFwiLFxuICAgICAgICAgIGQudmVyc2lvbiA/IGAke2QubmFtZX1AJHtkLnZlcnNpb259YCA6IGQubmFtZSxcbiAgICAgICAgXSksXG4gICAgICAgIFwiLWNcIixcbiAgICAgIF07XG4gICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgcHJvamVjdC5kZWZhdWx0VGFzaz8uYWRkU3RlcHMoeyAuLi5zdGVwLCBzaGVsbCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHJvamVjdC5kZWZhdWx0VGFzaz8uYWRkU3RlcHMoLi4uc3RlcHMpO1xuICAgIH1cblxuICAgIHRoaXMuZ2VuZXJhdGVQcm9qZW5yYygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSdW5uZXIob3B0aW9uczogUHJvamVucmNUc09wdGlvbnMpOiBUeXBlU2NyaXB0UnVubmVyIHtcbiAgICAvLyB1c2UgYSBwcm92aWRlIHJ1bm5lciBhcyBpc1xuICAgIGlmIChvcHRpb25zLnJ1bm5lcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucnVubmVyO1xuICAgIH1cblxuICAgIC8vIHVzZSBhIGRlZmF1bHQgcnVubmVyIHdpdGggdGhlIGNvcnJlY3QgdHNjb25maWcgYW5kIHR5cGUtY2hlY2tpbmcgZW5hYmxlZFxuICAgIHJldHVybiBUeXBlU2NyaXB0UnVubmVyLnRzTm9kZSh7XG4gICAgICB0c2NvbmZpZzogdGhpcy50c2NvbmZpZy5maWxlTmFtZSxcbiAgICAgIHR5cGVDaGVjazogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcblxuICAgIHRoaXMudHNjb25maWcuYWRkSW5jbHVkZSh0aGlzLmZpbGVQYXRoKTtcbiAgICB0aGlzLnRzY29uZmlnLmFkZEluY2x1ZGUoYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vKiovKi50c2ApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVByb2plbnJjKCkge1xuICAgIGNvbnN0IHJjZmlsZSA9IHJlc29sdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5maWxlUGF0aCk7XG4gICAgaWYgKGV4aXN0c1N5bmMocmNmaWxlKSkge1xuICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGV4aXN0c1xuICAgIH1cblxuICAgIGNvbnN0IGJvb3RzdHJhcCA9IHRoaXMucHJvamVjdC5pbml0UHJvamVjdDtcbiAgICBpZiAoIWJvb3RzdHJhcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gYm9vdHN0cmFwLmZxbi5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IGltcG9ydE5hbWUgPSBwYXJ0c1sxXTtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKFwiLlwiKTtcblxuICAgIGNvbnN0IHsgcmVuZGVyZWRPcHRpb25zLCBpbXBvcnRzIH0gPSByZW5kZXJKYXZhU2NyaXB0T3B0aW9ucyh7XG4gICAgICBhcmdzOiBib290c3RyYXAuYXJncyxcbiAgICAgIHR5cGU6IGJvb3RzdHJhcC50eXBlIGFzIEludmVudG9yeVByb2plY3RUeXBlLFxuICAgICAgY29tbWVudHM6IGJvb3RzdHJhcC5jb21tZW50cyxcbiAgICB9KTtcblxuICAgIGltcG9ydHMuYWRkKG1vZHVsZU5hbWUsIGltcG9ydE5hbWUpO1xuXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGxpbmVzLnB1c2goLi4uaW1wb3J0cy5hc0VzbUltcG9ydHMoKSk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goYGNvbnN0IHByb2plY3QgPSBuZXcgJHtjbGFzc05hbWV9KCR7cmVuZGVyZWRPcHRpb25zfSk7YCk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goXCJwcm9qZWN0LnN5bnRoKCk7XCIpO1xuXG4gICAgd3JpdGVGaWxlU3luYyhyY2ZpbGUsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgIGBQcm9qZWN0IGRlZmluaXRpb24gZmlsZSB3YXMgY3JlYXRlZCBhdCAke3JjZmlsZX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMtdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC9wcm9qZW5yYy10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQStDO0FBQy9DLCtCQUErQjtBQUUvQiw4Q0FBaUQ7QUFDakQsMkRBQXVEO0FBQ3ZELGlFQUF1RTtBQUV2RSwwQ0FBMkM7QUFrQzNDLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBRXhDOzs7OztHQUtHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsdUJBQVk7O0lBQzFDOztPQUVHO0lBQ2EsUUFBUSxDQUFtQjtJQUMzQixRQUFRLENBQVM7SUFFaEIsY0FBYyxDQUFTO0lBQ3ZCLE9BQU8sQ0FBbUI7SUFFM0MsWUFBWSxPQUFnQixFQUFFLFVBQTZCLEVBQUU7UUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVLENBQUM7UUFFMUQsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFOUMsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw2QkFBZ0IsQ0FBQyxPQUFPLEVBQUU7WUFDNUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxzQkFBc0I7WUFDNUQsZUFBZSxFQUFFLEVBQUU7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUQsdUJBQXVCO1FBQ3ZCLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRFLHVFQUF1RTtRQUN2RSw4RUFBOEU7UUFDOUUsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sS0FBSyxHQUFHO2dCQUNaLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM3QixJQUFJO29CQUNKLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUM5QyxDQUFDO2dCQUNGLElBQUk7YUFDTCxDQUFDO1lBQ0YsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsV0FBd0I7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTLENBQUMsT0FBMEI7UUFDMUMsNkJBQTZCO1FBQzdCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN4QixDQUFDO1FBRUQsMkVBQTJFO1FBQzNFLE9BQU8sb0NBQWdCLENBQUMsTUFBTSxDQUFDO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDaEMsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVlLGFBQWE7UUFDM0IsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLFVBQVUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFzQjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFBLGNBQU8sRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxJQUFBLGVBQVUsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxpQkFBaUI7UUFDM0IsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0MsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFBLHdDQUF1QixFQUFDO1lBQzNELElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtZQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQTRCO1lBQzVDLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtTQUM3QixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVwQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixTQUFTLElBQUksZUFBZSxJQUFJLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFL0IsSUFBQSxrQkFBYSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QiwwQ0FBMEMsTUFBTSxFQUFFLENBQ25ELENBQUM7SUFDSixDQUFDOztBQXhHSCxnQ0F5R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgSW52ZW50b3J5UHJvamVjdFR5cGUgfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyBUeXBlc2NyaXB0Q29uZmlnIH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi90eXBlc2NyaXB0LXJ1bm5lclwiO1xuaW1wb3J0IHsgcmVuZGVySmF2YVNjcmlwdE9wdGlvbnMgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC9yZW5kZXItb3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBJbml0UHJvamVjdCwgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBQcm9qZW5yY0ZpbGUgfSBmcm9tIFwiLi4vcHJvamVucmNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZW5yY1RzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVucmMgZmlsZS5cbiAgICogQGRlZmF1bHQgXCIucHJvamVucmMudHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZW5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGlyZWN0b3J5IHRyZWUgdGhhdCBtYXkgY29udGFpbiAqLnRzIGZpbGVzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgZnJvbVxuICAgKiB5b3VyIHByb2plbnJjIHR5cGVzY3JpcHQgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJwcm9qZW5yY1wiXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5Db2RlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdHNjb25maWcgZmlsZSB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgcnVubmVyXG4gICAqIHdoZW4gY29tcGlsaW5nIHByb2plbiBzb3VyY2UgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwidHNjb25maWcucHJvamVuLmpzb25cIlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHJ1bm5lcmAgdG8gY29uZmlndXJlIHRoZSB0c2NvbmZpZ0ZpbGVOYW1lIGRpcmVjdGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWdGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bm5lciB0byB1c2UgZm9yIGV4ZWN1dGluZyBUeXBlU2NyaXB0IGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUeXBlU2NyaXB0UnVubmVyLnRzTm9kZSgpXG4gICAqL1xuICByZWFkb25seSBydW5uZXI/OiBUeXBlU2NyaXB0UnVubmVyO1xufVxuXG5jb25zdCBERUZBVUxUX0ZJTEVOQU1FID0gXCIucHJvamVucmMudHNcIjtcblxuLyoqXG4gKiBBIHByb2plbnJjIGZpbGUgd3JpdHRlbiBpbiBUeXBlU2NyaXB0XG4gKlxuICogVGhpcyBjb21wb25lbnQgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiBhbnkgdHlwZSBvZiBwcm9qZWN0XG4gKiBhbmQgaGFzIG5vIGV4cGVjdGF0aW9ucyBhcm91bmQgdGhlIHByb2plY3QncyBtYWluIGxhbmd1YWdlLlxuICovXG5leHBvcnQgY2xhc3MgUHJvamVucmNUcyBleHRlbmRzIFByb2plbnJjRmlsZSB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB1c2VkIHRvIGNvbXBpbGUgcHJvamVuIHNvdXJjZSBmaWxlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnOiBUeXBlc2NyaXB0Q29uZmlnO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9qZW5Db2RlRGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bm5lcjogVHlwZVNjcmlwdFJ1bm5lcjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBQcm9qZW5yY1RzT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmZpbGVQYXRoID0gb3B0aW9ucy5maWxlbmFtZSA/PyBERUZBVUxUX0ZJTEVOQU1FO1xuICAgIHRoaXMuX3Byb2plbkNvZGVEaXIgPSBvcHRpb25zLnByb2plbkNvZGVEaXIgPz8gXCJwcm9qZW5yY1wiO1xuXG4gICAgcHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAvJHt0aGlzLmZpbGVQYXRofWApO1xuXG4gICAgLy8gQ3JlYXRlIGEgZGVkaWNhdGVkIHRzY29uZmlnIGZvciBwcm9qZW4gc291cmNlIGZpbGVzXG4gICAgdGhpcy50c2NvbmZpZyA9IG5ldyBUeXBlc2NyaXB0Q29uZmlnKHByb2plY3QsIHtcbiAgICAgIGZpbGVOYW1lOiBvcHRpb25zLnRzY29uZmlnRmlsZU5hbWUgPz8gXCJ0c2NvbmZpZy5wcm9qZW4uanNvblwiLFxuICAgICAgY29tcGlsZXJPcHRpb25zOiB7fSxcbiAgICB9KTtcblxuICAgIC8vIEEgcnVubmVyIGlzIGEgZnV0dXJlIGNvbXBvbmVudCwgbWFrZSBzdXJlIGl0IGlzIGF0dGFjaGVkXG4gICAgdGhpcy5fcnVubmVyID0gdGhpcy5nZXRSdW5uZXIob3B0aW9ucykudHJ5QXR0YWNoKHByb2plY3QpO1xuXG4gICAgLy8gQnVpbGQgdGhlIHJ1biBjb25maWdcbiAgICBjb25zdCB7IGRlcGVuZGVuY2llcywgc3RlcHMgfSA9IHRoaXMuX3J1bm5lci5jb25maWdGb3IodGhpcy5maWxlUGF0aCk7XG5cbiAgICAvLyBJZiB0aGUgcnVubmVyIGhhcyBkZXBlbmRlbmNpZXMsIHJ1biBlYWNoIHN0ZXAgdGhyb3VnaCBhbiBgbnB4YCBzaGVsbFxuICAgIC8vIChgbnB4IC15IC1wIDxkZXBzPiAtYyBcIjxjb21tYW5kPlwiYCkgdG8gbWFrZSB0aGVtIGF2YWlsYWJsZSB3aXRob3V0IGluc3RhbGwuXG4gICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IFtcbiAgICAgICAgXCJucHhcIixcbiAgICAgICAgXCIteVwiLFxuICAgICAgICAuLi5kZXBlbmRlbmNpZXMuZmxhdE1hcCgoZCkgPT4gW1xuICAgICAgICAgIFwiLXBcIixcbiAgICAgICAgICBkLnZlcnNpb24gPyBgJHtkLm5hbWV9QCR7ZC52ZXJzaW9ufWAgOiBkLm5hbWUsXG4gICAgICAgIF0pLFxuICAgICAgICBcIi1jXCIsXG4gICAgICBdO1xuICAgICAgZm9yIChjb25zdCBzdGVwIG9mIHN0ZXBzKSB7XG4gICAgICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmFkZFN0ZXBzKHsgLi4uc3RlcCwgc2hlbGwgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmFkZFN0ZXBzKC4uLnN0ZXBzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJvamVjdENyZWF0aW9uKGluaXRQcm9qZWN0OiBJbml0UHJvamVjdCkge1xuICAgIHRoaXMuZ2VuZXJhdGVQcm9qZW5yYyhpbml0UHJvamVjdCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJ1bm5lcihvcHRpb25zOiBQcm9qZW5yY1RzT3B0aW9ucyk6IFR5cGVTY3JpcHRSdW5uZXIge1xuICAgIC8vIHVzZSBhIHByb3ZpZGUgcnVubmVyIGFzIGlzXG4gICAgaWYgKG9wdGlvbnMucnVubmVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5ydW5uZXI7XG4gICAgfVxuXG4gICAgLy8gdXNlIGEgZGVmYXVsdCBydW5uZXIgd2l0aCB0aGUgY29ycmVjdCB0c2NvbmZpZyBhbmQgdHlwZS1jaGVja2luZyBlbmFibGVkXG4gICAgcmV0dXJuIFR5cGVTY3JpcHRSdW5uZXIudHNOb2RlKHtcbiAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnLmZpbGVOYW1lLFxuICAgICAgdHlwZUNoZWNrOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgdGhpcy50c2NvbmZpZy5hZGRJbmNsdWRlKHRoaXMuZmlsZVBhdGgpO1xuICAgIHRoaXMudHNjb25maWcuYWRkSW5jbHVkZShgJHt0aGlzLl9wcm9qZW5Db2RlRGlyfS8qKi8qLnRzYCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvamVucmMoYm9vdHN0cmFwOiBJbml0UHJvamVjdCkge1xuICAgIGNvbnN0IHJjZmlsZSA9IHJlc29sdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5maWxlUGF0aCk7XG4gICAgaWYgKGV4aXN0c1N5bmMocmNmaWxlKSkge1xuICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGV4aXN0c1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gYm9vdHN0cmFwLmZxbi5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IGltcG9ydE5hbWUgPSBwYXJ0c1sxXTtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKFwiLlwiKTtcblxuICAgIGNvbnN0IHsgcmVuZGVyZWRPcHRpb25zLCBpbXBvcnRzIH0gPSByZW5kZXJKYXZhU2NyaXB0T3B0aW9ucyh7XG4gICAgICBhcmdzOiBib290c3RyYXAuYXJncyxcbiAgICAgIHR5cGU6IGJvb3RzdHJhcC50eXBlIGFzIEludmVudG9yeVByb2plY3RUeXBlLFxuICAgICAgY29tbWVudHM6IGJvb3RzdHJhcC5jb21tZW50cyxcbiAgICB9KTtcblxuICAgIGltcG9ydHMuYWRkKG1vZHVsZU5hbWUsIGltcG9ydE5hbWUpO1xuXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGxpbmVzLnB1c2goLi4uaW1wb3J0cy5hc0VzbUltcG9ydHMoKSk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goYGNvbnN0IHByb2plY3QgPSBuZXcgJHtjbGFzc05hbWV9KCR7cmVuZGVyZWRPcHRpb25zfSk7YCk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goXCJwcm9qZWN0LnN5bnRoKCk7XCIpO1xuXG4gICAgd3JpdGVGaWxlU3luYyhyY2ZpbGUsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgIGBQcm9qZWN0IGRlZmluaXRpb24gZmlsZSB3YXMgY3JlYXRlZCBhdCAke3JjZmlsZX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,8 @@
1
1
  import { TypescriptConfig } from "../javascript";
2
2
  import type { TypeScriptProject } from "./typescript";
3
- import { ProjenrcFile } from "../projenrc";
4
3
  import { TypeScriptRunner } from "./typescript-runner";
4
+ import type { InitProject } from "../project";
5
+ import { ProjenrcFile } from "../projenrc";
5
6
  export interface ProjenrcOptions {
6
7
  /**
7
8
  * The name of the projenrc file.
@@ -41,6 +42,7 @@ export declare class Projenrc extends ProjenrcFile {
41
42
  private readonly _tsProject;
42
43
  private readonly _runner;
43
44
  constructor(project: TypeScriptProject, options?: ProjenrcOptions);
45
+ projectCreation(initProject: InitProject): void;
44
46
  private addDefaultTask;
45
47
  private getRunner;
46
48
  preSynthesize(): void;
@@ -5,9 +5,9 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const fs_1 = require("fs");
6
6
  const path_1 = require("path");
7
7
  const javascript_1 = require("../javascript");
8
+ const typescript_runner_1 = require("./typescript-runner");
8
9
  const render_options_1 = require("../javascript/render-options");
9
10
  const projenrc_1 = require("../projenrc");
10
- const typescript_runner_1 = require("./typescript-runner");
11
11
  const DEFAULT_FILENAME = ".projenrc.ts";
12
12
  /**
13
13
  * A projenrc file written in TypeScript
@@ -15,7 +15,7 @@ const DEFAULT_FILENAME = ".projenrc.ts";
15
15
  * This component is used within TypeScriptProject.
16
16
  */
17
17
  class Projenrc extends projenrc_1.ProjenrcFile {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.101.7" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.101.9" };
19
19
  filePath;
20
20
  tsconfig;
21
21
  _projenCodeDir;
@@ -44,7 +44,9 @@ class Projenrc extends projenrc_1.ProjenrcFile {
44
44
  // A runner is a future component, make sure it is attached
45
45
  this._runner = this.getRunner(options).tryAttach(this._tsProject);
46
46
  this.addDefaultTask();
47
- this.generateProjenrc();
47
+ }
48
+ projectCreation(initProject) {
49
+ this.generateProjenrc(initProject);
48
50
  }
49
51
  addDefaultTask() {
50
52
  // Render the run config for the entrypoint
@@ -105,15 +107,11 @@ class Projenrc extends projenrc_1.ProjenrcFile {
105
107
  : "ts?(x)",
106
108
  });
107
109
  }
108
- generateProjenrc() {
110
+ generateProjenrc(bootstrap) {
109
111
  const rcfile = (0, path_1.resolve)(this.project.outdir, this.filePath);
110
112
  if ((0, fs_1.existsSync)(rcfile)) {
111
113
  return; // already exists
112
114
  }
113
- const bootstrap = this.project.initProject;
114
- if (!bootstrap) {
115
- return;
116
- }
117
115
  const parts = bootstrap.fqn.split(".");
118
116
  const moduleName = parts[0];
119
117
  const importName = parts[1];
@@ -136,4 +134,4 @@ class Projenrc extends projenrc_1.ProjenrcFile {
136
134
  }
137
135
  }
138
136
  exports.Projenrc = Projenrc;
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQTBEO0FBQzFELCtCQUErQztBQUUvQyw4Q0FBMEU7QUFFMUUsaUVBQXVFO0FBQ3ZFLDBDQUEyQztBQUMzQywyREFBdUQ7QUFpQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSx1QkFBWTs7SUFDeEIsUUFBUSxDQUFTO0lBQ2pCLFFBQVEsQ0FBbUI7SUFFMUIsY0FBYyxDQUFTO0lBQ3ZCLFVBQVUsQ0FBb0I7SUFDOUIsT0FBTyxDQUFtQjtJQUUzQyxZQUFZLE9BQTBCLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQztRQUUxRCxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSxxRUFBcUU7UUFDckUsNkRBQTZEO1FBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWdCLENBQUMsT0FBTyxFQUFFO1lBQzVDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLGdCQUFnQjtZQUNoRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RSxPQUFP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QSxrQkFBYSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QiwwQ0FBMEMsTUFBTSxFQUFFLENBQ25ELENBQUM7SUFDSixDQUFDOztBQXRKSCw0QkF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIHBvc2l4LCByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgSW52ZW50b3J5UHJvamVjdFR5cGUgfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyBUeXBlc2NyaXB0Q29uZmlnLCBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcIi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgcmVuZGVySmF2YVNjcmlwdE9wdGlvbnMgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC9yZW5kZXItb3B0aW9uc1wiO1xuaW1wb3J0IHsgUHJvamVucmNGaWxlIH0gZnJvbSBcIi4uL3Byb2plbnJjXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UnVubmVyIH0gZnJvbSBcIi4vdHlwZXNjcmlwdC1ydW5uZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZW5yY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plbnJjIGZpbGUuXG4gICAqIEBkZWZhdWx0IFwiLnByb2plbnJjLnRzXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeSB0cmVlIHRoYXQgbWF5IGNvbnRhaW4gKi50cyBmaWxlcyB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGZyb21cbiAgICogeW91ciBwcm9qZW5yYyB0eXBlc2NyaXB0IGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwicHJvamVucmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuQ29kZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgYFNXQ2AgZm9yIHRzLW5vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcnVubmVyOiBUeXBlU2NyaXB0UnVubmVyLnRzTm9kZSh7IHN3YzogdHJ1ZSB9KWAgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHN3Yz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBydW5uZXIgdG8gdXNlIGZvciBleGVjdXRpbmcgVHlwZVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcHJvamVjdCdzIHJ1bm5lclxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmVyPzogVHlwZVNjcmlwdFJ1bm5lcjtcbn1cblxuY29uc3QgREVGQVVMVF9GSUxFTkFNRSA9IFwiLnByb2plbnJjLnRzXCI7XG5cbi8qKlxuICogQSBwcm9qZW5yYyBmaWxlIHdyaXR0ZW4gaW4gVHlwZVNjcmlwdFxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgd2l0aGluIFR5cGVTY3JpcHRQcm9qZWN0LlxuICovXG5leHBvcnQgY2xhc3MgUHJvamVucmMgZXh0ZW5kcyBQcm9qZW5yY0ZpbGUge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnOiBUeXBlc2NyaXB0Q29uZmlnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plbkNvZGVEaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdHNQcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVubmVyOiBUeXBlU2NyaXB0UnVubmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LCBvcHRpb25zOiBQcm9qZW5yY09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuX3RzUHJvamVjdCA9IHByb2plY3Q7XG5cbiAgICB0aGlzLmZpbGVQYXRoID0gb3B0aW9ucy5maWxlbmFtZSA/PyBERUZBVUxUX0ZJTEVOQU1FO1xuICAgIHRoaXMuX3Byb2plbkNvZGVEaXIgPSBvcHRpb25zLnByb2plbkNvZGVEaXIgPz8gXCJwcm9qZW5yY1wiO1xuXG4gICAgLy8gR2l2ZSB0aGUgcHJvamVucmMgc291cmNlIHRyZWUgaXRzIG93biBgdHNjb25maWcuanNvbmAgc28gdGhlIGVzbGludFxuICAgIC8vIHByb2plY3Qgc2VydmljZSAoYW5kIGVkaXRvcnMpIHJlc29sdmUgaXQgYXMgdGhlIG5lYXJlc3QgY29uZmlnIGZvciB0aG9zZVxuICAgIC8vIGZpbGVzLiBUaGlzIGF2b2lkcyBsaXN0aW5nIHRoZSB3aG9sZSB0cmVlIHVuZGVyIGBhbGxvd0RlZmF1bHRQcm9qZWN0YCxcbiAgICAvLyB3aGljaCBvbmx5IHBlcm1pdHMgYSBzbWFsbCBudW1iZXIgb2YgbG9vc2UgZmlsZXMgKGFuZCByZWplY3RzIGAqKmBcbiAgICAvLyBnbG9icykuIEl0IGV4dGVuZHMgdGhlIHJvb3QgY29uZmlnIGFuZCBpcyB0eXBlLWNoZWNrIG9ubHkuXG4gICAgY29uc3QgYmFzZVRzY29uZmlnID0gcHJvamVjdC50c2NvbmZpZyA/PyBwcm9qZWN0LnRzY29uZmlnRGV2O1xuICAgIHRoaXMudHNjb25maWcgPSBuZXcgVHlwZXNjcmlwdENvbmZpZyhwcm9qZWN0LCB7XG4gICAgICBmaWxlTmFtZTogYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vdHNjb25maWcuanNvbmAsXG4gICAgICBpbmNsdWRlOiBbXCIqKi8qLnRzXCIsIHBvc2l4LnJlbGF0aXZlKHRoaXMuX3Byb2plbkNvZGVEaXIsIHRoaXMuZmlsZVBhdGgpXSxcbiAgICAgIGV4dGVuZHM6IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21UeXBlc2NyaXB0Q29uZmlncyhbYmFzZVRzY29uZmlnXSksXG4gICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICByb290RGlyOiBwb3NpeC5yZWxhdGl2ZSh0aGlzLl9wcm9qZW5Db2RlRGlyLCBcIi5cIikgfHwgXCIuXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQSBydW5uZXIgaXMgYSBmdXR1cmUgY29tcG9uZW50LCBtYWtlIHN1cmUgaXQgaXMgYXR0YWNoZWRcbiAgICB0aGlzLl9ydW5uZXIgPSB0aGlzLmdldFJ1bm5lcihvcHRpb25zKS50cnlBdHRhY2godGhpcy5fdHNQcm9qZWN0KTtcblxuICAgIHRoaXMuYWRkRGVmYXVsdFRhc2soKTtcblxuICAgIHRoaXMuZ2VuZXJhdGVQcm9qZW5yYygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0VGFzaygpIHtcbiAgICAvLyBSZW5kZXIgdGhlIHJ1biBjb25maWcgZm9yIHRoZSBlbnRyeXBvaW50XG4gICAgY29uc3QgeyBkZXBlbmRlbmNpZXMsIHN0ZXBzIH0gPSB0aGlzLl9ydW5uZXIuY29uZmlnRm9yKHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgLy8gUmVxdWVzdCBydW5uZXIgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLl90c1Byb2plY3QuZGVwcy5yZXF1ZXN0RGVwZW5kZW5jeShkZXApO1xuICAgIH1cblxuICAgIC8vIEFkZCBydW5uZXIgc3RlcHNcbiAgICB0aGlzLl90c1Byb2plY3QuZGVmYXVsdFRhc2s/LmFkZFN0ZXBzKC4uLnN0ZXBzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UnVubmVyKG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyk6IFR5cGVTY3JpcHRSdW5uZXIge1xuICAgIC8vIHVzZSBhIHByb3ZpZGUgcnVubmVyIGFzIGlzXG4gICAgaWYgKG9wdGlvbnMucnVubmVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5ydW5uZXI7XG4gICAgfVxuXG4gICAgLy8gc3djIGltcGxpZXMgdHMtbm9kZSBydW5uZXIgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgaWYgKG9wdGlvbnMuc3djKSB7XG4gICAgICByZXR1cm4gVHlwZVNjcmlwdFJ1bm5lci50c05vZGUoe1xuICAgICAgICBzd2M6IHRydWUsXG4gICAgICAgIHR5cGVDaGVjazogdHJ1ZSxcbiAgICAgICAgdHNjb25maWc6IHRoaXMudHNjb25maWcuZmlsZU5hbWUsXG4gICAgICB9KS50cnlBdHRhY2godGhpcy5fdHNQcm9qZWN0KTtcbiAgICB9XG5cbiAgICAvLyB3ZSB1c2UgdGhlIHByb2plY3QncyBkZWZhdWx0IHJ1bm5lciB3aXRoIHRoZSBjb3JyZWN0IHRzY29uZmlnIGFuZCB0eXBlLWNoZWNraW5nIGVuYWJsZWRcbiAgICByZXR1cm4gdGhpcy5fdHNQcm9qZWN0LnJ1bm5lci5jb3B5KHtcbiAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnLmZpbGVOYW1lLFxuICAgICAgdHlwZUNoZWNrOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgdGhpcy5fdHNQcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuZmlsZVBhdGh9YCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuX3Byb2plbkNvZGVEaXJ9YCk7XG5cbiAgICAvLyBUaGUgcHJvamVucmMgZW50cnlwb2ludCBsaXZlcyBhdCB0aGUgcmVwb3NpdG9yeSByb290IGFuZCBpcyBub3QgY292ZXJlZFxuICAgIC8vIGJ5IGFueSBgdHNjb25maWcuanNvbmAuIFJlZ2lzdGVyIG9ubHkgdGhpcyBzaW5nbGUgZmlsZSB3aXRoIHRoZSBlc2xpbnRcbiAgICAvLyBwcm9qZWN0IHNlcnZpY2UncyBkZWZhdWx0IHByb2plY3QgKHRoZSBwcm9qZW5yYyBzb3VyY2UgdHJlZSBpcyBjb3ZlcmVkXG4gICAgLy8gYnkgaXRzIG93biB0c2NvbmZpZykuIGBhbGxvd0RlZmF1bHRQcm9qZWN0YCBkb2VzIG5vdCBwZXJtaXQgYCoqYCBnbG9icy5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hbGxvd0RlZmF1bHRQcm9qZWN0RmlsZXModGhpcy5maWxlUGF0aCk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRMaW50UGF0dGVybih0aGlzLl9wcm9qZW5Db2RlRGlyKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRMaW50UGF0dGVybih0aGlzLmZpbGVQYXRoKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hbGxvd0RldkRlcHModGhpcy5maWxlUGF0aCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWxsb3dEZXZEZXBzKGAke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqLyoudHNgKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRJZ25vcmVQYXR0ZXJuKGAhJHt0aGlzLmZpbGVQYXRofWApO1xuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFkZElnbm9yZVBhdHRlcm4oYCEke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqLyoudHNgKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFkZE92ZXJyaWRlKHtcbiAgICAgIGZpbGVzOiBbdGhpcy5maWxlUGF0aF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcIjogXCJvZmZcIixcbiAgICAgICAgXCJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuYmlvbWU/LmFkZEZpbGVQYXR0ZXJuKHRoaXMuZmlsZVBhdGgpO1xuICAgIHRoaXMuX3RzUHJvamVjdC5iaW9tZT8uYWRkRmlsZVBhdHRlcm4oYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vKipgKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5qZXN0Py5kaXNjb3ZlclRlc3RNYXRjaFBhdHRlcm5zRm9yRGlycyhcbiAgICAgIFt0aGlzLl9wcm9qZW5Db2RlRGlyXSxcbiAgICAgIHtcbiAgICAgICAgZmlsZUV4dGVuc2lvblBhdHRlcm46IHRoaXMuX3RzUHJvamVjdC50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zPy5hbGxvd0pzXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IFwidHM/KHgpXCIsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvamVucmMoKSB7XG4gICAgY29uc3QgcmNmaWxlID0gcmVzb2x2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLmZpbGVQYXRoKTtcbiAgICBpZiAoZXhpc3RzU3luYyhyY2ZpbGUpKSB7XG4gICAgICByZXR1cm47IC8vIGFscmVhZHkgZXhpc3RzXG4gICAgfVxuXG4gICAgY29uc3QgYm9vdHN0cmFwID0gdGhpcy5wcm9qZWN0LmluaXRQcm9qZWN0O1xuICAgIGlmICghYm9vdHN0cmFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFydHMgPSBib290c3RyYXAuZnFuLnNwbGl0KFwiLlwiKTtcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gcGFydHNbMF07XG4gICAgY29uc3QgaW1wb3J0TmFtZSA9IHBhcnRzWzFdO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oXCIuXCIpO1xuXG4gICAgY29uc3QgeyByZW5kZXJlZE9wdGlvbnMsIGltcG9ydHMgfSA9IHJlbmRlckphdmFTY3JpcHRPcHRpb25zKHtcbiAgICAgIGFyZ3M6IGJvb3RzdHJhcC5hcmdzLFxuICAgICAgdHlwZTogYm9vdHN0cmFwLnR5cGUgYXMgSW52ZW50b3J5UHJvamVjdFR5cGUsXG4gICAgICBjb21tZW50czogYm9vdHN0cmFwLmNvbW1lbnRzLFxuICAgIH0pO1xuXG4gICAgaW1wb3J0cy5hZGQobW9kdWxlTmFtZSwgaW1wb3J0TmFtZSk7XG5cbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgbGluZXMucHVzaCguLi5pbXBvcnRzLmFzRXNtSW1wb3J0cygpKTtcbiAgICBsaW5lcy5wdXNoKCk7XG4gICAgbGluZXMucHVzaChgY29uc3QgcHJvamVjdCA9IG5ldyAke2NsYXNzTmFtZX0oJHtyZW5kZXJlZE9wdGlvbnN9KTtgKTtcbiAgICBsaW5lcy5wdXNoKCk7XG4gICAgbGluZXMucHVzaChcInByb2plY3Quc3ludGgoKTtcIik7XG5cbiAgICBta2RpclN5bmMoZGlybmFtZShyY2ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKHJjZmlsZSwgbGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgYFByb2plY3QgZGVmaW5pdGlvbiBmaWxlIHdhcyBjcmVhdGVkIGF0ICR7cmNmaWxlfWAsXG4gICAgKTtcbiAgfVxufVxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQTBEO0FBQzFELCtCQUErQztBQUUvQyw4Q0FBMEU7QUFFMUUsMkRBQXVEO0FBQ3ZELGlFQUF1RTtBQUV2RSwwQ0FBMkM7QUFpQzNDLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSx1QkFBWTs7SUFDeEIsUUFBUSxDQUFTO0lBQ2pCLFFBQVEsQ0FBbUI7SUFFMUIsY0FBYyxDQUFTO0lBQ3ZCLFVBQVUsQ0FBb0I7SUFDOUIsT0FBTyxDQUFtQjtJQUUzQyxZQUFZLE9BQTBCLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQztRQUUxRCxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSxxRUFBcUU7UUFDckUsNkRBQTZEO1FBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWdCLENBQUMsT0FBTyxFQUFFO1lBQzVDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLGdCQUFnQjtZQUNoRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RSxPQUFPLEVBQUUsb0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RSxlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLElBQUk7Z0JBQ1osT0FBTyxFQUFFLFlBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHO2FBQ3pEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQXdCO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sY0FBYztRQUNwQiwyQ0FBMkM7UUFDM0MsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEUsOEJBQThCO1FBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQXdCO1FBQ3hDLDZCQUE2QjtRQUM3QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDeEIsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQixPQUFPLG9DQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDN0IsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTthQUNqQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsMEZBQTBGO1FBQzFGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDaEMsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVlLGFBQWE7UUFDM0IsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFNUQsMEVBQTBFO1FBQzFFLHlFQUF5RTtRQUN6RSx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxVQUFVLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsVUFBVSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEIsS0FBSyxFQUFFO2dCQUNMLHVDQUF1QyxFQUFFLEtBQUs7Z0JBQzlDLG1DQUFtQyxFQUFFLEtBQUs7YUFDM0M7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxDQUNwRCxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFDckI7WUFDRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsT0FBTztnQkFDdEUsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLFFBQVE7U0FDYixDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBc0I7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBQSxjQUFPLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBQSxlQUFVLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsaUJBQWlCO1FBQzNCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSx3Q0FBdUIsRUFBQztZQUMzRCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUE0QjtZQUM1QyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsU0FBUyxJQUFJLGVBQWUsSUFBSSxDQUFDLENBQUM7UUFDcEUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRS9CLElBQUEsY0FBUyxFQUFDLElBQUEsY0FBTyxFQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBQSxrQkFBYSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QiwwQ0FBMEMsTUFBTSxFQUFFLENBQ25ELENBQUM7SUFDSixDQUFDOztBQW5KSCw0QkFvSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIHBvc2l4LCByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgSW52ZW50b3J5UHJvamVjdFR5cGUgfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyBUeXBlc2NyaXB0Q29uZmlnLCBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcIi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFJ1bm5lciB9IGZyb20gXCIuL3R5cGVzY3JpcHQtcnVubmVyXCI7XG5pbXBvcnQgeyByZW5kZXJKYXZhU2NyaXB0T3B0aW9ucyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0L3JlbmRlci1vcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IEluaXRQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFByb2plbnJjRmlsZSB9IGZyb20gXCIuLi9wcm9qZW5yY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plbnJjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVucmMgZmlsZS5cbiAgICogQGRlZmF1bHQgXCIucHJvamVucmMudHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZW5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGlyZWN0b3J5IHRyZWUgdGhhdCBtYXkgY29udGFpbiAqLnRzIGZpbGVzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgZnJvbVxuICAgKiB5b3VyIHByb2plbnJjIHR5cGVzY3JpcHQgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJwcm9qZW5yY1wiXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5Db2RlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSBgU1dDYCBmb3IgdHMtbm9kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBydW5uZXI6IFR5cGVTY3JpcHRSdW5uZXIudHNOb2RlKHsgc3djOiB0cnVlIH0pYCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3djPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJ1bm5lciB0byB1c2UgZm9yIGV4ZWN1dGluZyBUeXBlU2NyaXB0IGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBwcm9qZWN0J3MgcnVubmVyXG4gICAqL1xuICByZWFkb25seSBydW5uZXI/OiBUeXBlU2NyaXB0UnVubmVyO1xufVxuXG5jb25zdCBERUZBVUxUX0ZJTEVOQU1FID0gXCIucHJvamVucmMudHNcIjtcblxuLyoqXG4gKiBBIHByb2plbnJjIGZpbGUgd3JpdHRlbiBpbiBUeXBlU2NyaXB0XG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB3aXRoaW4gVHlwZVNjcmlwdFByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZW5yYyBleHRlbmRzIFByb2plbnJjRmlsZSB7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdHNjb25maWc6IFR5cGVzY3JpcHRDb25maWc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvamVuQ29kZURpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90c1Byb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydW5uZXI6IFR5cGVTY3JpcHRSdW5uZXI7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdFByb2plY3QsIG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0ID0gcHJvamVjdDtcblxuICAgIHRoaXMuZmlsZVBhdGggPSBvcHRpb25zLmZpbGVuYW1lID8/IERFRkFVTFRfRklMRU5BTUU7XG4gICAgdGhpcy5fcHJvamVuQ29kZURpciA9IG9wdGlvbnMucHJvamVuQ29kZURpciA/PyBcInByb2plbnJjXCI7XG5cbiAgICAvLyBHaXZlIHRoZSBwcm9qZW5yYyBzb3VyY2UgdHJlZSBpdHMgb3duIGB0c2NvbmZpZy5qc29uYCBzbyB0aGUgZXNsaW50XG4gICAgLy8gcHJvamVjdCBzZXJ2aWNlIChhbmQgZWRpdG9ycykgcmVzb2x2ZSBpdCBhcyB0aGUgbmVhcmVzdCBjb25maWcgZm9yIHRob3NlXG4gICAgLy8gZmlsZXMuIFRoaXMgYXZvaWRzIGxpc3RpbmcgdGhlIHdob2xlIHRyZWUgdW5kZXIgYGFsbG93RGVmYXVsdFByb2plY3RgLFxuICAgIC8vIHdoaWNoIG9ubHkgcGVybWl0cyBhIHNtYWxsIG51bWJlciBvZiBsb29zZSBmaWxlcyAoYW5kIHJlamVjdHMgYCoqYFxuICAgIC8vIGdsb2JzKS4gSXQgZXh0ZW5kcyB0aGUgcm9vdCBjb25maWcgYW5kIGlzIHR5cGUtY2hlY2sgb25seS5cbiAgICBjb25zdCBiYXNlVHNjb25maWcgPSBwcm9qZWN0LnRzY29uZmlnID8/IHByb2plY3QudHNjb25maWdEZXY7XG4gICAgdGhpcy50c2NvbmZpZyA9IG5ldyBUeXBlc2NyaXB0Q29uZmlnKHByb2plY3QsIHtcbiAgICAgIGZpbGVOYW1lOiBgJHt0aGlzLl9wcm9qZW5Db2RlRGlyfS90c2NvbmZpZy5qc29uYCxcbiAgICAgIGluY2x1ZGU6IFtcIioqLyoudHNcIiwgcG9zaXgucmVsYXRpdmUodGhpcy5fcHJvamVuQ29kZURpciwgdGhpcy5maWxlUGF0aCldLFxuICAgICAgZXh0ZW5kczogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVR5cGVzY3JpcHRDb25maWdzKFtiYXNlVHNjb25maWddKSxcbiAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgIHJvb3REaXI6IHBvc2l4LnJlbGF0aXZlKHRoaXMuX3Byb2plbkNvZGVEaXIsIFwiLlwiKSB8fCBcIi5cIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBBIHJ1bm5lciBpcyBhIGZ1dHVyZSBjb21wb25lbnQsIG1ha2Ugc3VyZSBpdCBpcyBhdHRhY2hlZFxuICAgIHRoaXMuX3J1bm5lciA9IHRoaXMuZ2V0UnVubmVyKG9wdGlvbnMpLnRyeUF0dGFjaCh0aGlzLl90c1Byb2plY3QpO1xuXG4gICAgdGhpcy5hZGREZWZhdWx0VGFzaygpO1xuICB9XG5cbiAgcHVibGljIHByb2plY3RDcmVhdGlvbihpbml0UHJvamVjdDogSW5pdFByb2plY3QpIHtcbiAgICB0aGlzLmdlbmVyYXRlUHJvamVucmMoaW5pdFByb2plY3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0VGFzaygpIHtcbiAgICAvLyBSZW5kZXIgdGhlIHJ1biBjb25maWcgZm9yIHRoZSBlbnRyeXBvaW50XG4gICAgY29uc3QgeyBkZXBlbmRlbmNpZXMsIHN0ZXBzIH0gPSB0aGlzLl9ydW5uZXIuY29uZmlnRm9yKHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgLy8gUmVxdWVzdCBydW5uZXIgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLl90c1Byb2plY3QuZGVwcy5yZXF1ZXN0RGVwZW5kZW5jeShkZXApO1xuICAgIH1cblxuICAgIC8vIEFkZCBydW5uZXIgc3RlcHNcbiAgICB0aGlzLl90c1Byb2plY3QuZGVmYXVsdFRhc2s/LmFkZFN0ZXBzKC4uLnN0ZXBzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UnVubmVyKG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyk6IFR5cGVTY3JpcHRSdW5uZXIge1xuICAgIC8vIHVzZSBhIHByb3ZpZGUgcnVubmVyIGFzIGlzXG4gICAgaWYgKG9wdGlvbnMucnVubmVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5ydW5uZXI7XG4gICAgfVxuXG4gICAgLy8gc3djIGltcGxpZXMgdHMtbm9kZSBydW5uZXIgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgaWYgKG9wdGlvbnMuc3djKSB7XG4gICAgICByZXR1cm4gVHlwZVNjcmlwdFJ1bm5lci50c05vZGUoe1xuICAgICAgICBzd2M6IHRydWUsXG4gICAgICAgIHR5cGVDaGVjazogdHJ1ZSxcbiAgICAgICAgdHNjb25maWc6IHRoaXMudHNjb25maWcuZmlsZU5hbWUsXG4gICAgICB9KS50cnlBdHRhY2godGhpcy5fdHNQcm9qZWN0KTtcbiAgICB9XG5cbiAgICAvLyB3ZSB1c2UgdGhlIHByb2plY3QncyBkZWZhdWx0IHJ1bm5lciB3aXRoIHRoZSBjb3JyZWN0IHRzY29uZmlnIGFuZCB0eXBlLWNoZWNraW5nIGVuYWJsZWRcbiAgICByZXR1cm4gdGhpcy5fdHNQcm9qZWN0LnJ1bm5lci5jb3B5KHtcbiAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnLmZpbGVOYW1lLFxuICAgICAgdHlwZUNoZWNrOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgdGhpcy5fdHNQcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuZmlsZVBhdGh9YCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuX3Byb2plbkNvZGVEaXJ9YCk7XG5cbiAgICAvLyBUaGUgcHJvamVucmMgZW50cnlwb2ludCBsaXZlcyBhdCB0aGUgcmVwb3NpdG9yeSByb290IGFuZCBpcyBub3QgY292ZXJlZFxuICAgIC8vIGJ5IGFueSBgdHNjb25maWcuanNvbmAuIFJlZ2lzdGVyIG9ubHkgdGhpcyBzaW5nbGUgZmlsZSB3aXRoIHRoZSBlc2xpbnRcbiAgICAvLyBwcm9qZWN0IHNlcnZpY2UncyBkZWZhdWx0IHByb2plY3QgKHRoZSBwcm9qZW5yYyBzb3VyY2UgdHJlZSBpcyBjb3ZlcmVkXG4gICAgLy8gYnkgaXRzIG93biB0c2NvbmZpZykuIGBhbGxvd0RlZmF1bHRQcm9qZWN0YCBkb2VzIG5vdCBwZXJtaXQgYCoqYCBnbG9icy5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hbGxvd0RlZmF1bHRQcm9qZWN0RmlsZXModGhpcy5maWxlUGF0aCk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRMaW50UGF0dGVybih0aGlzLl9wcm9qZW5Db2RlRGlyKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRMaW50UGF0dGVybih0aGlzLmZpbGVQYXRoKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hbGxvd0RldkRlcHModGhpcy5maWxlUGF0aCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWxsb3dEZXZEZXBzKGAke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqLyoudHNgKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRJZ25vcmVQYXR0ZXJuKGAhJHt0aGlzLmZpbGVQYXRofWApO1xuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFkZElnbm9yZVBhdHRlcm4oYCEke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqLyoudHNgKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFkZE92ZXJyaWRlKHtcbiAgICAgIGZpbGVzOiBbdGhpcy5maWxlUGF0aF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcIjogXCJvZmZcIixcbiAgICAgICAgXCJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuYmlvbWU/LmFkZEZpbGVQYXR0ZXJuKHRoaXMuZmlsZVBhdGgpO1xuICAgIHRoaXMuX3RzUHJvamVjdC5iaW9tZT8uYWRkRmlsZVBhdHRlcm4oYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vKipgKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5qZXN0Py5kaXNjb3ZlclRlc3RNYXRjaFBhdHRlcm5zRm9yRGlycyhcbiAgICAgIFt0aGlzLl9wcm9qZW5Db2RlRGlyXSxcbiAgICAgIHtcbiAgICAgICAgZmlsZUV4dGVuc2lvblBhdHRlcm46IHRoaXMuX3RzUHJvamVjdC50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zPy5hbGxvd0pzXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IFwidHM/KHgpXCIsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvamVucmMoYm9vdHN0cmFwOiBJbml0UHJvamVjdCkge1xuICAgIGNvbnN0IHJjZmlsZSA9IHJlc29sdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5maWxlUGF0aCk7XG4gICAgaWYgKGV4aXN0c1N5bmMocmNmaWxlKSkge1xuICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGV4aXN0c1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gYm9vdHN0cmFwLmZxbi5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IGltcG9ydE5hbWUgPSBwYXJ0c1sxXTtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKFwiLlwiKTtcblxuICAgIGNvbnN0IHsgcmVuZGVyZWRPcHRpb25zLCBpbXBvcnRzIH0gPSByZW5kZXJKYXZhU2NyaXB0T3B0aW9ucyh7XG4gICAgICBhcmdzOiBib290c3RyYXAuYXJncyxcbiAgICAgIHR5cGU6IGJvb3RzdHJhcC50eXBlIGFzIEludmVudG9yeVByb2plY3RUeXBlLFxuICAgICAgY29tbWVudHM6IGJvb3RzdHJhcC5jb21tZW50cyxcbiAgICB9KTtcblxuICAgIGltcG9ydHMuYWRkKG1vZHVsZU5hbWUsIGltcG9ydE5hbWUpO1xuXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGxpbmVzLnB1c2goLi4uaW1wb3J0cy5hc0VzbUltcG9ydHMoKSk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goYGNvbnN0IHByb2plY3QgPSBuZXcgJHtjbGFzc05hbWV9KCR7cmVuZGVyZWRPcHRpb25zfSk7YCk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goXCJwcm9qZWN0LnN5bnRoKCk7XCIpO1xuXG4gICAgbWtkaXJTeW5jKGRpcm5hbWUocmNmaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlU3luYyhyY2ZpbGUsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgIGBQcm9qZWN0IGRlZmluaXRpb24gZmlsZSB3YXMgY3JlYXRlZCBhdCAke3JjZmlsZX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -13,7 +13,7 @@ const recreate_1 = require("../util/recreate");
13
13
  * adjusted options.
14
14
  */
15
15
  class TypeScriptRunner extends script_runner_1.ScriptRunner {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.101.7" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.101.9" };
17
17
  /**
18
18
  * Use ts-node to execute TypeScript files.
19
19
  */
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  Adds a simple Typescript documentation generator
7
7
  */
8
8
  class TypedocDocgen {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.101.7" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.101.9" };
10
10
  constructor(project) {
11
11
  project.addDevDeps("typedoc");
12
12
  const docgen = project.addTask("docgen", {
@@ -52,7 +52,7 @@ const util_2 = require("../util");
52
52
  */
53
53
  class TsJestBabelConfig {
54
54
  config;
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.101.7" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.101.9" };
56
56
  /**
57
57
  * Disables the use of Babel
58
58
  */
@@ -99,7 +99,7 @@ exports.TsJestBabelConfig = TsJestBabelConfig;
99
99
  */
100
100
  class TsJestDiagnostics {
101
101
  config;
102
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.101.7" };
102
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.101.9" };
103
103
  /**
104
104
  * Enable all diagnostics.
105
105
  */
@@ -137,7 +137,7 @@ exports.TsJestDiagnostics = TsJestDiagnostics;
137
137
  */
138
138
  class TsJestTsconfig {
139
139
  config;
140
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.101.7" };
140
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.101.9" };
141
141
  /**
142
142
  * Uses `tsconfig.json` if found, or the built-in default TypeScript compiler options.
143
143
  */
@@ -183,7 +183,7 @@ exports.TsJestTsconfig = TsJestTsconfig;
183
183
  * @pjid typescript
184
184
  */
185
185
  class TypeScriptProject extends javascript_1.NodeProject {
186
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptProject", version: "0.101.7" };
186
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptProject", version: "0.101.9" };
187
187
  static DEFAULT_TS_JEST_TRANFORM_PATTERN = "^.+\\.[t]sx?$";
188
188
  docgen;
189
189
  docsDirectory;
@@ -620,7 +620,7 @@ class SampleCode extends component_1.Component {
620
620
  * @pjid typescript-app
621
621
  */
622
622
  class TypeScriptAppProject extends TypeScriptProject {
623
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.101.7" };
623
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.101.9" };
624
624
  constructor(options) {
625
625
  // Releasing and packaging are coupled. If one is disabled, disable the other by default.
626
626
  const shouldRelease = options.release ?? false;
@@ -10,6 +10,13 @@ export interface ExecFileOptions {
10
10
  * Additional environment variables, merged on top of `process.env`.
11
11
  */
12
12
  readonly env?: Record<string, string | undefined>;
13
+ /**
14
+ * For `capture`/`tryCapture`: interleave STDERR into the captured output
15
+ * instead of only capturing STDOUT.
16
+ *
17
+ * @default false
18
+ */
19
+ readonly captureStderr?: boolean;
13
20
  }
14
21
  /**
15
22
  * Options for {@link Tool.run}.
package/lib/util/exec.js CHANGED
@@ -37,6 +37,9 @@ exports.rawShell = exports.npx = exports.npm = exports.node = exports.poetry = e
37
37
  exports.tool = tool;
38
38
  exports.systemShell = systemShell;
39
39
  const child_process = __importStar(require("child_process"));
40
+ const fs = __importStar(require("fs"));
41
+ const os = __importStar(require("os"));
42
+ const path = __importStar(require("path"));
40
43
  const dax_1 = require("dax");
41
44
  const logging = __importStar(require("../logging"));
42
45
  const MAX_BUFFER = 10 * 1024 * 1024;
@@ -64,11 +67,37 @@ function run(file, args, options) {
64
67
  });
65
68
  }
66
69
  /**
67
- * Runs a program and returns its trimmed STDOUT. Throws if the command exits
68
- * with a non-zero status.
70
+ * Runs a program and returns its trimmed STDOUT (or STDOUT+STDERR interleaved
71
+ * in their original write order, if `captureStderr` is set). Throws if the
72
+ * command exits with a non-zero status.
69
73
  */
70
74
  function capture(file, args, options) {
71
75
  logging.debug(`${file} ${args.join(" ")} (cwd: ${options.cwd})`);
76
+ if (options.captureStderr) {
77
+ // Same fd for both streams so they interleave in write order. A shared
78
+ // in-memory Writable won't work here - execFileSync only accepts stdio
79
+ // streams backed by a real fd (tty/file/socket/pipe).
80
+ const combinedFile = path.join(fs.mkdtempSync(path.join(os.tmpdir(), "projen-capture-")), "output");
81
+ const fd = fs.openSync(combinedFile, "w+");
82
+ try {
83
+ try {
84
+ child_process.execFileSync(file, args, {
85
+ ...spawnOpts(options),
86
+ stdio: ["inherit", fd, fd],
87
+ });
88
+ }
89
+ catch (e) {
90
+ // mirrors execFileSync's own behavior of attaching output to the error
91
+ e.stdout = fs.readFileSync(combinedFile);
92
+ throw e;
93
+ }
94
+ return fs.readFileSync(combinedFile, "utf-8").trim();
95
+ }
96
+ finally {
97
+ fs.closeSync(fd);
98
+ fs.rmSync(path.dirname(combinedFile), { recursive: true, force: true });
99
+ }
100
+ }
72
101
  return child_process
73
102
  .execFileSync(file, args, {
74
103
  ...spawnOpts(options),
@@ -78,19 +107,13 @@ function capture(file, args, options) {
78
107
  .trim();
79
108
  }
80
109
  /**
81
- * Runs a program and returns its trimmed STDOUT, or `undefined` if the command
82
- * failed or produced no output.
110
+ * Runs a program and returns its trimmed STDOUT (or STDOUT+STDERR interleaved
111
+ * in their original write order, if `captureStderr` is set), or `undefined`
112
+ * if the command failed or produced no output.
83
113
  */
84
114
  function tryCapture(file, args, options) {
85
- logging.debug(`${file} ${args.join(" ")} (cwd: ${options.cwd})`);
86
115
  try {
87
- const value = child_process
88
- .execFileSync(file, args, {
89
- ...spawnOpts(options),
90
- stdio: ["inherit", "pipe", "pipe"], // "pipe" for STDERR means it appears in exceptions
91
- })
92
- .toString("utf-8")
93
- .trim();
116
+ const value = capture(file, args, options);
94
117
  // an empty string is the same as undefined
95
118
  return value || undefined;
96
119
  }
@@ -241,4 +264,4 @@ function systemShell(command, options) {
241
264
  error: result.error,
242
265
  };
243
266
  }
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0pBLG9CQU1DO0FBaU1ELGtDQW1CQztBQXpYRCw2REFBK0M7QUFDL0MsNkJBQXdCO0FBQ3hCLG9EQUFzQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQWdEcEMsU0FBUyxTQUFTLENBQUMsT0FBd0I7SUFDekMsT0FBTztRQUNMLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsMERBQTBEO1FBQzFELEtBQUssRUFBRSxLQUFjO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWMsRUFBRSxPQUFtQjtJQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNyQixxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLDBFQUEwRTtRQUMxRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxD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QU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQ2pFLENBQUMsQ0FBQztJQUNILE9BQU87UUFDTCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSTtRQUM3QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJO1FBQzdCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztLQUNwQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiZGF4XCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuLi9sb2dnaW5nXCI7XG5cbmNvbnN0IE1BWF9CVUZGRVIgPSAxMCAqIDEwMjQgKiAxMDI0O1xuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTaGVsbC1mcmVlIGV4ZWN1dGlvbiAoZXhlY0ZpbGVTeW5jLCBzaGVsbDogZmFsc2UpLlxuLy9cbi8vIFRoZSBwcm9ncmFtIGFuZCBlYWNoIGFyZ3VtZW50IGFyZSBwYXNzZWQgdG8gdGhlIE9TIGRpcmVjdGx5IHdpdGhvdXQgZ29pbmdcbi8vIHRocm91Z2ggYSBzaGVsbCwgc28gdGhlcmUgaXMgbm8gcXVvdGluZyB0byBnZXQgcmlnaHQgYW5kIG5vIGRpZmZlcmVuY2VzXG4vLyBiZXR3ZWVuIHBsYXRmb3JtIHNoZWxscyB0byBhY2NvdW50IGZvciB3aGVuIGNvbW1hbmRzIGluY2x1ZGUgdmFsdWVzIGRlcml2ZWRcbi8vIGZyb20gZmlsZXMsIGdpdCBvdXRwdXQsIGNvbmZpZ3VyYXRpb24sIGV0Yy5cbi8vXG4vLyBPbmx5IHBlci10b29sIGhlbHBlcnMgYXJlIGV4cG9ydGVkIChlLmcuIGBnaXRgKTsgdGhlIGdlbmVyaWMgcHJpbWl0aXZlcyBhcmVcbi8vIGtlcHQgcHJpdmF0ZSBzbyBjYWxsIHNpdGVzIGFyZSBleHBsaWNpdCBhYm91dCB3aGljaCB0b29sIHRoZXkgaW52b2tlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHNoZWxsLWZyZWUgY29tbWFuZCBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0ZpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcywgbWVyZ2VkIG9uIHRvcCBvZiBgcHJvY2Vzcy5lbnZgLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgVG9vbC5ydW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMgZXh0ZW5kcyBFeGVjRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogU3RyZWFtIHRoZSBjaGlsZCdzIHN0ZG91dCBhbmQgc3RkZXJyIHN0cmFpZ2h0IHRvIHRoZSBwYXJlbnQncyBzdGRvdXQgYW5kXG4gICAqIHN0ZGVyciAoZnVsbCBpbmhlcml0YW5jZSksIGluc3RlYWQgb2YgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIHN0ZGVyciBhbmRcbiAgICogY2FwdHVyaW5nIHN0ZGVyciAodGhlIGRlZmF1bHQpLlxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIGxhdW5jaGluZyBhIGNoaWxkIHByb2Nlc3Mgd2hvc2Ugc3Rkb3V0IGlzIG1lYW5pbmdmdWwgYW5kXG4gICAqIHdob3NlIG91dHB1dCBzaG91bGQgc3RyZWFtIGxpdmUgdG8gdGhlIHVzZXIgKGUuZy4gdGhlIHByb2plbiBDTEkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5oZXJpdFN0ZGlvPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gc3Bhd25PcHRzKG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG1heEJ1ZmZlcjogTUFYX0JVRkZFUixcbiAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgIGVudjogb3B0aW9ucy5lbnYgPyB7IC4uLnByb2Nlc3MuZW52LCAuLi5vcHRpb25zLmVudiB9IDogdW5kZWZpbmVkLFxuICAgIC8vIHJ1biB0aGUgcHJvZ3JhbSBkaXJlY3RseSwgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgc2hlbGxcbiAgICBzaGVsbDogZmFsc2UgYXMgY29uc3QsXG4gIH07XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBpbmhlcml0aW5nIHN0ZG91dC4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBydW4oZmlsZTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAvLyBCeSBkZWZhdWx0IHRoZSBjaGlsZCdzIHN0ZG91dCBpcyByZWRpcmVjdGVkIHRvIFNUREVSUiAodG8ga2VlcCB0aGVcbiAgICAvLyBwYXJlbnQncyBTVERPVVQgY2xlYW4pIGFuZCBpdHMgU1RERVJSIGlzIHBpcGVkIHNvIGl0IHN1cmZhY2VzIGluXG4gICAgLy8gZXhjZXB0aW9ucy4gYGluaGVyaXRTdGRpb2AgaW5zdGVhZCBzdHJlYW1zIGJvdGggc3RyYWlnaHQgdG8gdGhlIHBhcmVudC5cbiAgICBzdGRpbzogb3B0aW9ucy5pbmhlcml0U3RkaW8gPyBcImluaGVyaXRcIiA6IFtcImluaGVyaXRcIiwgMiwgXCJwaXBlXCJdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGEgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQuIFRocm93cyBpZiB0aGUgY29tbWFuZCBleGl0c1xuICogd2l0aCBhIG5vbi16ZXJvIHN0YXR1cy5cbiAqL1xuZnVuY3Rpb24gY2FwdHVyZShcbiAgZmlsZTogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zLFxuKTogc3RyaW5nIHtcbiAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuXG4gIHJldHVybiBjaGlsZF9wcm9jZXNzXG4gICAgLmV4ZWNGaWxlU3luYyhmaWxlLCBhcmdzLCB7XG4gICAgICAuLi5zcGF3bk9wdHMob3B0aW9ucyksXG4gICAgICBzdGRpbzogW1wiaW5oZXJpdFwiLCBcInBpcGVcIiwgXCJwaXBlXCJdLCAvLyBcInBpcGVcIiBmb3IgU1RERVJSIG1lYW5zIGl0IGFwcGVhcnMgaW4gZXhjZXB0aW9uc1xuICAgIH0pXG4gICAgLnRvU3RyaW5nKFwidXRmLThcIilcbiAgICAudHJpbSgpO1xufVxuXG4vKipcbiAqIFJ1bnMgYSBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGNvbW1hbmRcbiAqIGZhaWxlZCBvciBwcm9kdWNlZCBubyBvdXRwdXQuXG4gKi9cbmZ1bmN0aW9uIHRyeUNhcHR1cmUoXG4gIGZpbGU6IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGxvZ2dpbmcuZGVidWcoYCR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfSAoY3dkOiAke29wdGlvbnMuY3dkfSlgKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlID0gY2hpbGRfcHJvY2Vzc1xuICAgICAgLmV4ZWNGaWxlU3luYyhmaWxlLCBhcmdzLCB7XG4gICAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgICAgc3RkaW86IFtcImluaGVyaXRcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSwgLy8gXCJwaXBlXCIgZm9yIFNUREVSUiBtZWFucyBpdCBhcHBlYXJzIGluIGV4Y2VwdGlvbnNcbiAgICAgIH0pXG4gICAgICAudG9TdHJpbmcoXCJ1dGYtOFwiKVxuICAgICAgLnRyaW0oKTtcblxuICAgIC8vIGFuIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyB1bmRlZmluZWRcbiAgICByZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQSBzaGVsbC1mcmVlIGhhbmRsZSBmb3IgaW52b2tpbmcgYSBzaW5nbGUgcHJvZ3JhbSBieSBuYW1lIG9yIHBhdGguXG4gKlxuICogRWFjaCBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0aW0gKG5vIHNoZWxsIHBhcnNpbmcpLCBzbyB0aGVyZVxuICogaXMgbm8gcXVvdGluZyB0byBnZXQgcmlnaHQgZm9yIHZhbHVlcyBzdWNoIGFzIHRhZ3MsIHZlcnNpb25zLCBicmFuY2ggbmFtZXNcbiAqIG9yIGZpbGUgcGF0aHMuXG4gKlxuICogTm90ZTogdGhlIHByb2dyYW0gaXMgZXhlY3V0ZWQgZGlyZWN0bHksIHdpdGhvdXQgYSBzaGVsbC4gT24gV2luZG93cyB0aGlzXG4gKiBtZWFucyBpdCBtdXN0IGJlIGEgcmVhbCBleGVjdXRhYmxlIC0gYC5jbWRgL2AuYmF0YCBzaGltcyAoc3VjaCBhc1xuICogbnBtLWluc3RhbGxlZCBDTElzIGxpa2UgbnBtL25weC95YXJuL3BucG0pIGNhbm5vdCBiZSBpbnZva2VkIHRoaXMgd2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2wge1xuICAvKipcbiAgICogUnVucyBgPHRvb2w+IDxhcmdzPmAsIGluaGVyaXRpbmcgc3Rkb3V0LiBUaHJvd3Mgb24gbm9uLXplcm8gZXhpdC5cbiAgICovXG4gIHJ1bihhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVC4gVGhyb3dzIG9uIG5vbi16ZXJvIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlXG4gICAqIGNvbW1hbmQgZmFpbGVkIG9yIHByb2R1Y2VkIG5vIG91dHB1dC5cbiAgICovXG4gIHRyeUNhcHR1cmUoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hlbGwtZnJlZSB7QGxpbmsgVG9vbH0gZm9yIHRoZSBnaXZlbiBwcm9ncmFtLlxuICpcbiAqIEBleGFtcGxlIGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7IGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgdGFnXSwgeyBjd2QgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b29sKGZpbGU6IHN0cmluZyk6IFRvb2wge1xuICByZXR1cm4ge1xuICAgIHJ1bjogKGFyZ3MsIG9wdGlvbnMpID0+IHJ1bihmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICBjYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICB0cnlDYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gdHJ5Q2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYGdpdGAuXG4gKlxuICogQGV4YW1wbGUgZ2l0LnJ1bihbXCJ0YWdcIiwgXCItLWRlbGV0ZVwiLCB0YWddLCB7IGN3ZCB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGB1dmAgKHNoaXBzIGFzIGEgbmF0aXZlIGJpbmFyeSBvbiBhbGxcbiAqIHBsYXRmb3JtcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1diA9IHRvb2woXCJ1dlwiKTtcblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYHBvZXRyeWAuXG4gKi9cbmV4cG9ydCBjb25zdCBwb2V0cnkgPSB0b29sKFwicG9ldHJ5XCIpO1xuXG4vKipcbiAqIFNoZWxsLWZyZWUgaGVscGVyIGZvciBpbnZva2luZyB0aGUgY3VycmVudCBOb2RlLmpzIGV4ZWN1dGFibGVcbiAqIChgcHJvY2Vzcy5leGVjUGF0aGApLlxuICovXG5leHBvcnQgY29uc3Qgbm9kZSA9IHRvb2wocHJvY2Vzcy5leGVjUGF0aCk7XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENyb3NzLXBsYXRmb3JtIGV4ZWN1dGlvbiB2aWEgZGF4IChmb3IgYmluYXJpZXMgdGhhdCBtYXkgYmUgYC5jbWRgIHNoaW1zKS5cbi8vXG4vLyBgdG9vbGAgYWJvdmUgdXNlcyBgZXhlY0ZpbGVTeW5jYCB3aXRoIGBzaGVsbDogZmFsc2VgLCB3aGljaCBjYW5ub3QgbGF1bmNoXG4vLyBXaW5kb3dzIGAuY21kYC9gLmJhdGAgc2hpbXMgc3VjaCBhcyBgbnB4YCBvciBgbnBtYC4gYHNoaW1Ub29sYCBydW5zIHRocm91Z2hcbi8vIGRheCwgd2hpY2ggcmVzb2x2ZXMgdGhvc2Ugc2hpbXMgY3Jvc3MtcGxhdGZvcm0uIEFyZ3VtZW50cyBhcmUgaW50ZXJwb2xhdGVkXG4vLyB0aHJvdWdoIGRheCdzIGVzY2FwaW5nIChOT1QgYCQucmF3YCksIHNvIGVhY2ggdmFsdWUgaXMgcGFzc2VkIGFzIGEgc2luZ2xlXG4vLyBsaXRlcmFsIGFyZ3VtZW50IHdpdGggbm8gcXVvdGluZyB0byBnZXQgcmlnaHQuIGRheCBpcyBhc3luY2hyb25vdXMsIHNvXG4vLyB0aGVzZSBoZWxwZXJzIGFyZSBvbmx5IHVzYWJsZSBmcm9tIGFzeW5jIGNhbGwgc2l0ZXMuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogQXN5bmMsIGRheC1iYWNrZWQgZXF1aXZhbGVudCBvZiB7QGxpbmsgVG9vbH0gZm9yIHByb2dyYW1zIHRoYXQgbWF5IGJlIGFcbiAqIFdpbmRvd3MgYC5jbWRgL2AuYmF0YCBzaGltIChlLmcuIGBucHhgLCBgbnBtYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNUb29sIHtcbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gLCBpbmhlcml0aW5nIHN0ZG91dC4gUmVqZWN0cyBvbiBub24temVybyBleGl0LlxuICAgKi9cbiAgcnVuKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmVzb2x2ZXMgaXRzIHRyaW1tZWQgU1RET1VULiBSZWplY3RzIG9uIG5vbi16ZXJvXG4gICAqIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQXN5bmNUb29sfSB0aGF0IGludm9rZXMgYGZpbGVgIHZpYSBkYXgsIHJlc29sdmluZyBXaW5kb3dzXG4gKiBgLmNtZGAvYC5iYXRgIHNoaW1zIGFuZCBlc2NhcGluZyBldmVyeSBhcmd1bWVudCAoc28gZWFjaCB2YWx1ZSBpcyBwYXNzZWQgYXNcbiAqIGEgc2luZ2xlIGxpdGVyYWwgYXJndW1lbnQpLlxuICpcbiAqIEBleGFtcGxlIGF3YWl0IG5weC5ydW4oW1wiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTJcIl0sIHsgY3dkIH0pO1xuICovXG5mdW5jdGlvbiBzaGltVG9vbChmaWxlOiBzdHJpbmcpOiBBc3luY1Rvb2wge1xuICBjb25zdCBidWlsZCA9IChhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY21kID0gJGAke2ZpbGV9ICR7YXJnc31gLmN3ZChvcHRpb25zLmN3ZCkuc3RkZXJyKFwicGlwZWRcIikubm9UaHJvdygpO1xuICAgIHJldHVybiBvcHRpb25zLmVudiA/IGNtZC5lbnYob3B0aW9ucy5lbnYpIDogY21kO1xuICB9O1xuICBjb25zdCBlbnN1cmVPayA9IChcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICByZXN1bHQ6IHsgY29kZTogbnVtYmVyOyBzdGRlcnI6IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBpZiAocmVzdWx0LmNvZGUgIT09IDApIHtcbiAgICAgIC8vIE1pbWljIHRoZSBgY2hpbGRfcHJvY2Vzc2AgZXJyb3Igc2hhcGUgKGBzdGF0dXNgLCBgc3RkZXJyYCkgc28gY2FsbGVyc1xuICAgICAgLy8gY2FuIGluc3BlY3Qgc3RkZXJyIChlLmcuIHRvIGRldGVjdCBFTk9FTlQvRTQwNCBmcm9tIG5wbSkuXG4gICAgICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBmYWlsZWQgKGV4aXQgY29kZSAke3Jlc3VsdC5jb2RlfSk6ICR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgICApO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gcmVzdWx0LmNvZGU7XG4gICAgICBlcnJvci5zdGRlcnIgPSBCdWZmZXIuZnJvbShyZXN1bHQuc3RkZXJyKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBydW46IGFzeW5jIChhcmdzLCBvcHRpb25zKSA9PiB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgICBlbnN1cmVPayhhcmdzLCBhd2FpdCBidWlsZChhcmdzLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjYXB0dXJlOiBhc3luYyAoYXJncywgb3B0aW9ucykgPT4ge1xuICAgICAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGQoYXJncywgb3B0aW9ucykuc3Rkb3V0KFwicGlwZWRcIik7XG4gICAgICBlbnN1cmVPayhhcmdzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQudHJpbSgpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIGZvciBgbnBtYCAoYSBXaW5kb3dzIGAuY21kYCBzaGltKS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5wbSA9IHNoaW1Ub29sKFwibnBtXCIpO1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3IgYG5weGAgKGEgV2luZG93cyBgLmNtZGAgc2hpbSkuXG4gKi9cbmV4cG9ydCBjb25zdCBucHggPSBzaGltVG9vbChcIm5weFwiKTtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gcmF3U2hlbGw6IGFyYml0cmFyeSBzaGVsbCBjb21tYW5kIHN0cmluZ3MgKHZpYSBkYXgsIGNyb3NzLXBsYXRmb3JtKS5cbi8vXG4vLyBUaGlzIHJ1bnMgYW4gb3BhcXVlIGNvbW1hbmQgKnN0cmluZyogdGhyb3VnaCBkYXgncyBjcm9zcy1wbGF0Zm9ybSBzaGVsbFxuLy8gKGluY2wuIFdpbmRvd3MpLiBUaGUgY29tbWFuZCBpcyBwYXJzZWQgYnkgYSBzaGVsbCBhcy1pcywgc28gaXQgaXMgbWVhbnQgZm9yXG4vLyBhcmJpdHJhcnkgY29tbWFuZCBsaW5lcyB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgYXMgYSBmaXhlZCBiaW5hcnkgcGx1cyBhXG4vLyBsaXN0IG9mIGFyZ3VtZW50cywgZS5nLiBhIHJlbGVhc2UncyBgbmV4dFZlcnNpb25Db21tYW5kYCBvclxuLy8gYFJlbGVhc2FibGVDb21taXRzLmV4ZWMoKWAgKGFuZCBwcm9qZW4ncyBvd24gZ2VuZXJhdGVkIGBSZWxlYXNhYmxlQ29tbWl0c2Bcbi8vIHF1ZXJpZXMpLiBGb3IgZXZlcnl0aGluZyBlbHNlIHByZWZlciB0aGUgc3RydWN0dXJlZCBgdG9vbGAvYGdpdGAgaGVscGVyc1xuLy8gKG9yIGBzaGltVG9vbGAgZm9yIGAuY21kYCBzaGltcyksIHdoaWNoIHRha2UgYW4gZXhwbGljaXQgbGlzdCBvZiBhcmd1bWVudHMuXG4vL1xuLy8gYCQucmF3YCBpcyByZXF1aXJlZCBoZXJlIChhbmQgb25seSBoZXJlKTogdGhlIGlucHV0IGlzIGFuIG9wYXF1ZSBjb21tYW5kXG4vLyBsaW5lLCBzbyBpdCBtdXN0IGJlIHBhcnNlZCBieSBhIHNoZWxsLiBkYXggcHJvdmlkZXMgdGhhdCBzaGVsbCBvbiBldmVyeVxuLy8gcGxhdGZvcm0sIGluY2x1ZGluZyBXaW5kb3dzLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuXG5leHBvcnQgY29uc3QgcmF3U2hlbGwgPSB7XG4gIC8qKlxuICAgKiBSdW5zIGEgdXNlci1zdXBwbGllZCBzaGVsbCBjb21tYW5kIGxpbmUgYW5kIHJlc29sdmVzIGl0cyB0cmltbWVkXG4gICAqIFNURE9VVC4gUmVqZWN0cyBpZiB0aGUgY29tbWFuZCBleGl0cyBub24temVyby5cbiAgICovXG4gIGNhcHR1cmU6IGFzeW5jIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBjd2Q6IHN0cmluZzsgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9LFxuICApOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGxvZ2dpbmcuZGVidWcoYCR7Y29tbWFuZH0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgY29uc3QgY21kID0gJC5yYXdgJHtjb21tYW5kfWAuY3dkKG9wdGlvbnMuY3dkKTtcbiAgICByZXR1cm4gKG9wdGlvbnMuZW52ID8gY21kLmVudihvcHRpb25zLmVudikgOiBjbWQpLnRleHQoKTtcbiAgfSxcblxuICAvKipcbiAgICogUnVucyBhIHVzZXItc3VwcGxpZWQgc2hlbGwgY29tbWFuZCBsaW5lIGFuZCByZXNvbHZlcyBpdHMgdHJpbW1lZFxuICAgKiBTVERPVVQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kIGZhaWxlZCBvciBwcm9kdWNlZCBubyBvdXRwdXQuXG4gICAqL1xuICB0cnlDYXB0dXJlOiBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY3dkOiBzdHJpbmc7IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSxcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBsb2dnaW5nLmRlYnVnKGAke2NvbW1hbmR9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgIGxldCBjbWQgPSAkLnJhd2Ake2NvbW1hbmR9YC5jd2Qob3B0aW9ucy5jd2QpLm5vVGhyb3coKS5zdGRvdXQoXCJwaXBlZFwiKTtcbiAgICBpZiAob3B0aW9ucy5lbnYpIHtcbiAgICAgIGNtZCA9IGNtZC5lbnYob3B0aW9ucy5lbnYpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbWQ7XG4gICAgaWYgKHJlc3VsdC5jb2RlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBvdXQgPSByZXN1bHQuc3Rkb3V0LnRyaW0oKTtcbiAgICByZXR1cm4gb3V0IHx8IHVuZGVmaW5lZDtcbiAgfSxcbn07XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHN5c3RlbVNoZWxsOiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIG5hdGl2ZSBzaGVsbC5cbi8vXG4vLyBSdW5zIGFuIG9wYXF1ZSBjb21tYW5kIHN0cmluZyB0aHJvdWdoIHRoZSBPUyBkZWZhdWx0IHNoZWxsIChgL2Jpbi9zaGAgb25cbi8vIFBPU0lYLCBgY21kLmV4ZWAgb24gV2luZG93cykgdmlhIGBjaGlsZF9wcm9jZXNzYCB3aXRoIGBzaGVsbDogdHJ1ZWAuIFRoaXNcbi8vIGJhY2tzIHRoZSBgXCJAc3lzdGVtXCJgIHRhc2sgc2hlbGwsIHdoaWNoIGxldHMgYSB0YXNrIG9wdCBvdXQgb2YgdGhlIGJ1aWx0LWluXG4vLyBjcm9zcy1wbGF0Zm9ybSBzaGVsbCBhbmQgdXNlIHRoZSBob3N0J3MgbmF0aXZlIHNoZWxsIGluc3RlYWQuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogTm9ybWFsaXplZCByZXN1bHQgb2YgcnVubmluZyBhIGNvbW1hbmQgdGhyb3VnaCB0aGUgc3lzdGVtIHNoZWxsIChhIHN1YnNldCBvZlxuICogbm9kZSdzIGBTcGF3blN5bmNSZXR1cm5zYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3lzdGVtU2hlbGxSZXN1bHQge1xuICAvKiogRXhpdCBjb2RlLCBvciBgbnVsbGAgaWYgdGVybWluYXRlZCBieSBhIHNpZ25hbCBvciBuZXZlciBzcGF3bmVkLiAqL1xuICByZWFkb25seSBzdGF0dXM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBDYXB0dXJlZCBzdGRvdXQsIG9yIGBudWxsYCB3aGVuIHN0ZG91dCB3YXMgaW5oZXJpdGVkLiAqL1xuICByZWFkb25seSBzdGRvdXQ6IEJ1ZmZlciB8IG51bGw7XG4gIC8qKiBDYXB0dXJlZCBzdGRlcnIsIG9yIGBudWxsYCB3aGVuIHN0ZGVyciB3YXMgaW5oZXJpdGVkLiAqL1xuICByZWFkb25seSBzdGRlcnI6IEJ1ZmZlciB8IG51bGw7XG4gIC8qKiBBbiBlcnJvciByYWlzZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBzcGF3biAobm90IGEgbm9uLXplcm8gZXhpdCkuICovXG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogUnVucyBhIGNvbW1hbmQgbGluZSB0aHJvdWdoIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZGVmYXVsdCBzaGVsbCAoYC9iaW4vc2hgXG4gKiBvbiBQT1NJWCwgYGNtZC5leGVgIG9uIFdpbmRvd3MpLiBOZXZlciB0aHJvd3MgZm9yIGEgbm9uLXplcm8gZXhpdCAodGhhdCBpc1xuICogcmVwb3J0ZWQgdmlhIGBzdGF0dXNgKTsgYSBzcGF3biBmYWlsdXJlIGlzIHJlcG9ydGVkIHZpYSBgZXJyb3JgLiBUaGUgY2FsbGVyXG4gKiBzdXBwbGllcyB0aGUgZnVsbCBgZW52YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbVNoZWxsKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgY3dkOiBzdHJpbmc7IGVudj86IE5vZGVKUy5Qcm9jZXNzRW52OyBjYXB0dXJlPzogYm9vbGVhbiB9LFxuKTogU3lzdGVtU2hlbGxSZXN1bHQge1xuICBsb2dnaW5nLmRlYnVnKGAke2NvbW1hbmR9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICBjb25zdCByZXN1bHQgPSBjaGlsZF9wcm9jZXNzLnNwYXduU3luYyhjb21tYW5kLCB7XG4gICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBtYXhCdWZmZXI6IE1BWF9CVUZGRVIsXG4gICAgZW52OiBvcHRpb25zLmVudixcbiAgICAvLyBcInBpcGVcIiBmb3IgU1RERVJSICh3aGVuIGNhcHR1cmluZykgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zLlxuICAgIHN0ZGlvOiBvcHRpb25zLmNhcHR1cmUgPyBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0gOiBcImluaGVyaXRcIixcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIHN0ZG91dDogcmVzdWx0LnN0ZG91dCA/PyBudWxsLFxuICAgIHN0ZGVycjogcmVzdWx0LnN0ZGVyciA/PyBudWxsLFxuICAgIGVycm9yOiByZXN1bHQuZXJyb3IsXG4gIH07XG59XG4iXX0=
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0xBLG9CQU1DO0FBaU1ELGtDQW1CQztBQXpaRCw2REFBK0M7QUFDL0MsdUNBQXlCO0FBQ3pCLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkJBQXdCO0FBQ3hCLG9EQUFzQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQXdEcEMsU0FBUyxTQUFTLENBQUMsT0FBd0I7SUFDekMsT0FBTztRQUNMLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsMERBQTBEO1FBQzFELEtBQUssRUFBRSxLQUFjO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWMsRUFBRSxPQUFtQjtJQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNyQixxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLDBFQUEwRTtRQUMxRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENB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S0FBSztLQUNwQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyAkIH0gZnJvbSBcImRheFwiO1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBNQVhfQlVGRkVSID0gMTAgKiAxMDI0ICogMTAyNDtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hlbGwtZnJlZSBleGVjdXRpb24gKGV4ZWNGaWxlU3luYywgc2hlbGw6IGZhbHNlKS5cbi8vXG4vLyBUaGUgcHJvZ3JhbSBhbmQgZWFjaCBhcmd1bWVudCBhcmUgcGFzc2VkIHRvIHRoZSBPUyBkaXJlY3RseSB3aXRob3V0IGdvaW5nXG4vLyB0aHJvdWdoIGEgc2hlbGwsIHNvIHRoZXJlIGlzIG5vIHF1b3RpbmcgdG8gZ2V0IHJpZ2h0IGFuZCBubyBkaWZmZXJlbmNlc1xuLy8gYmV0d2VlbiBwbGF0Zm9ybSBzaGVsbHMgdG8gYWNjb3VudCBmb3Igd2hlbiBjb21tYW5kcyBpbmNsdWRlIHZhbHVlcyBkZXJpdmVkXG4vLyBmcm9tIGZpbGVzLCBnaXQgb3V0cHV0LCBjb25maWd1cmF0aW9uLCBldGMuXG4vL1xuLy8gT25seSBwZXItdG9vbCBoZWxwZXJzIGFyZSBleHBvcnRlZCAoZS5nLiBgZ2l0YCk7IHRoZSBnZW5lcmljIHByaW1pdGl2ZXMgYXJlXG4vLyBrZXB0IHByaXZhdGUgc28gY2FsbCBzaXRlcyBhcmUgZXhwbGljaXQgYWJvdXQgd2hpY2ggdG9vbCB0aGV5IGludm9rZS5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzaGVsbC1mcmVlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXb3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG1lcmdlZCBvbiB0b3Agb2YgYHByb2Nlc3MuZW52YC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIEZvciBgY2FwdHVyZWAvYHRyeUNhcHR1cmVgOiBpbnRlcmxlYXZlIFNUREVSUiBpbnRvIHRoZSBjYXB0dXJlZCBvdXRwdXRcbiAgICogaW5zdGVhZCBvZiBvbmx5IGNhcHR1cmluZyBTVERPVVQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlU3RkZXJyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgVG9vbC5ydW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMgZXh0ZW5kcyBFeGVjRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogU3RyZWFtIHRoZSBjaGlsZCdzIHN0ZG91dCBhbmQgc3RkZXJyIHN0cmFpZ2h0IHRvIHRoZSBwYXJlbnQncyBzdGRvdXQgYW5kXG4gICAqIHN0ZGVyciAoZnVsbCBpbmhlcml0YW5jZSksIGluc3RlYWQgb2YgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIHN0ZGVyciBhbmRcbiAgICogY2FwdHVyaW5nIHN0ZGVyciAodGhlIGRlZmF1bHQpLlxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIGxhdW5jaGluZyBhIGNoaWxkIHByb2Nlc3Mgd2hvc2Ugc3Rkb3V0IGlzIG1lYW5pbmdmdWwgYW5kXG4gICAqIHdob3NlIG91dHB1dCBzaG91bGQgc3RyZWFtIGxpdmUgdG8gdGhlIHVzZXIgKGUuZy4gdGhlIHByb2plbiBDTEkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5oZXJpdFN0ZGlvPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gc3Bhd25PcHRzKG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG1heEJ1ZmZlcjogTUFYX0JVRkZFUixcbiAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgIGVudjogb3B0aW9ucy5lbnYgPyB7IC4uLnByb2Nlc3MuZW52LCAuLi5vcHRpb25zLmVudiB9IDogdW5kZWZpbmVkLFxuICAgIC8vIHJ1biB0aGUgcHJvZ3JhbSBkaXJlY3RseSwgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgc2hlbGxcbiAgICBzaGVsbDogZmFsc2UgYXMgY29uc3QsXG4gIH07XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBpbmhlcml0aW5nIHN0ZG91dC4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBydW4oZmlsZTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAvLyBCeSBkZWZhdWx0IHRoZSBjaGlsZCdzIHN0ZG91dCBpcyByZWRpcmVjdGVkIHRvIFNUREVSUiAodG8ga2VlcCB0aGVcbiAgICAvLyBwYXJlbnQncyBTVERPVVQgY2xlYW4pIGFuZCBpdHMgU1RERVJSIGlzIHBpcGVkIHNvIGl0IHN1cmZhY2VzIGluXG4gICAgLy8gZXhjZXB0aW9ucy4gYGluaGVyaXRTdGRpb2AgaW5zdGVhZCBzdHJlYW1zIGJvdGggc3RyYWlnaHQgdG8gdGhlIHBhcmVudC5cbiAgICBzdGRpbzogb3B0aW9ucy5pbmhlcml0U3RkaW8gPyBcImluaGVyaXRcIiA6IFtcImluaGVyaXRcIiwgMiwgXCJwaXBlXCJdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGEgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQgKG9yIFNURE9VVCtTVERFUlIgaW50ZXJsZWF2ZWRcbiAqIGluIHRoZWlyIG9yaWdpbmFsIHdyaXRlIG9yZGVyLCBpZiBgY2FwdHVyZVN0ZGVycmAgaXMgc2V0KS4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBjYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgaWYgKG9wdGlvbnMuY2FwdHVyZVN0ZGVycikge1xuICAgIC8vIFNhbWUgZmQgZm9yIGJvdGggc3RyZWFtcyBzbyB0aGV5IGludGVybGVhdmUgaW4gd3JpdGUgb3JkZXIuIEEgc2hhcmVkXG4gICAgLy8gaW4tbWVtb3J5IFdyaXRhYmxlIHdvbid0IHdvcmsgaGVyZSAtIGV4ZWNGaWxlU3luYyBvbmx5IGFjY2VwdHMgc3RkaW9cbiAgICAvLyBzdHJlYW1zIGJhY2tlZCBieSBhIHJlYWwgZmQgKHR0eS9maWxlL3NvY2tldC9waXBlKS5cbiAgICBjb25zdCBjb21iaW5lZEZpbGUgPSBwYXRoLmpvaW4oXG4gICAgICBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwicHJvamVuLWNhcHR1cmUtXCIpKSxcbiAgICAgIFwib3V0cHV0XCIsXG4gICAgKTtcbiAgICBjb25zdCBmZCA9IGZzLm9wZW5TeW5jKGNvbWJpbmVkRmlsZSwgXCJ3K1wiKTtcbiAgICB0cnkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgICAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgICAgICBzdGRpbzogW1wiaW5oZXJpdFwiLCBmZCwgZmRdLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAvLyBtaXJyb3JzIGV4ZWNGaWxlU3luYydzIG93biBiZWhhdmlvciBvZiBhdHRhY2hpbmcgb3V0cHV0IHRvIHRoZSBlcnJvclxuICAgICAgICBlLnN0ZG91dCA9IGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUsIFwidXRmLThcIikudHJpbSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmcy5jbG9zZVN5bmMoZmQpO1xuICAgICAgZnMucm1TeW5jKHBhdGguZGlybmFtZShjb21iaW5lZEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoaWxkX3Byb2Nlc3NcbiAgICAuZXhlY0ZpbGVTeW5jKGZpbGUsIGFyZ3MsIHtcbiAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgIHN0ZGlvOiBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0sIC8vIFwicGlwZVwiIGZvciBTVERFUlIgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zXG4gICAgfSlcbiAgICAudG9TdHJpbmcoXCJ1dGYtOFwiKVxuICAgIC50cmltKCk7XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gYW5kIHJldHVybnMgaXRzIHRyaW1tZWQgU1RET1VUIChvciBTVERPVVQrU1RERVJSIGludGVybGVhdmVkXG4gKiBpbiB0aGVpciBvcmlnaW5hbCB3cml0ZSBvcmRlciwgaWYgYGNhcHR1cmVTdGRlcnJgIGlzIHNldCksIG9yIGB1bmRlZmluZWRgXG4gKiBpZiB0aGUgY29tbWFuZCBmYWlsZWQgb3IgcHJvZHVjZWQgbm8gb3V0cHV0LlxuICovXG5mdW5jdGlvbiB0cnlDYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKTtcblxuICAgIC8vIGFuIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyB1bmRlZmluZWRcbiAgICByZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQSBzaGVsbC1mcmVlIGhhbmRsZSBmb3IgaW52b2tpbmcgYSBzaW5nbGUgcHJvZ3JhbSBieSBuYW1lIG9yIHBhdGguXG4gKlxuICogRWFjaCBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0aW0gKG5vIHNoZWxsIHBhcnNpbmcpLCBzbyB0aGVyZVxuICogaXMgbm8gcXVvdGluZyB0byBnZXQgcmlnaHQgZm9yIHZhbHVlcyBzdWNoIGFzIHRhZ3MsIHZlcnNpb25zLCBicmFuY2ggbmFtZXNcbiAqIG9yIGZpbGUgcGF0aHMuXG4gKlxuICogTm90ZTogdGhlIHByb2dyYW0gaXMgZXhlY3V0ZWQgZGlyZWN0bHksIHdpdGhvdXQgYSBzaGVsbC4gT24gV2luZG93cyB0aGlzXG4gKiBtZWFucyBpdCBtdXN0IGJlIGEgcmVhbCBleGVjdXRhYmxlIC0gYC5jbWRgL2AuYmF0YCBzaGltcyAoc3VjaCBhc1xuICogbnBtLWluc3RhbGxlZCBDTElzIGxpa2UgbnBtL25weC95YXJuL3BucG0pIGNhbm5vdCBiZSBpbnZva2VkIHRoaXMgd2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2wge1xuICAvKipcbiAgICogUnVucyBgPHRvb2w+IDxhcmdzPmAsIGluaGVyaXRpbmcgc3Rkb3V0LiBUaHJvd3Mgb24gbm9uLXplcm8gZXhpdC5cbiAgICovXG4gIHJ1bihhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVC4gVGhyb3dzIG9uIG5vbi16ZXJvIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlXG4gICAqIGNvbW1hbmQgZmFpbGVkIG9yIHByb2R1Y2VkIG5vIG91dHB1dC5cbiAgICovXG4gIHRyeUNhcHR1cmUoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hlbGwtZnJlZSB7QGxpbmsgVG9vbH0gZm9yIHRoZSBnaXZlbiBwcm9ncmFtLlxuICpcbiAqIEBleGFtcGxlIGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7IGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgdGFnXSwgeyBjd2QgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b29sKGZpbGU6IHN0cmluZyk6IFRvb2wge1xuICByZXR1cm4ge1xuICAgIHJ1bjogKGFyZ3MsIG9wdGlvbnMpID0+IHJ1bihmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICBjYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICB0cnlDYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gdHJ5Q2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYGdpdGAuXG4gKlxuICogQGV4YW1wbGUgZ2l0LnJ1bihbXCJ0YWdcIiwgXCItLWRlbGV0ZVwiLCB0YWddLCB7IGN3ZCB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGB1dmAgKHNoaXBzIGFzIGEgbmF0aXZlIGJpbmFyeSBvbiBhbGxcbiAqIHBsYXRmb3JtcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1diA9IHRvb2woXCJ1dlwiKTtcblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYHBvZXRyeWAuXG4gKi9cbmV4cG9ydCBjb25zdCBwb2V0cnkgPSB0b29sKFwicG9ldHJ5XCIpO1xuXG4vKipcbiAqIFNoZWxsLWZyZWUgaGVscGVyIGZvciBpbnZva2luZyB0aGUgY3VycmVudCBOb2RlLmpzIGV4ZWN1dGFibGVcbiAqIChgcHJvY2Vzcy5leGVjUGF0aGApLlxuICovXG5leHBvcnQgY29uc3Qgbm9kZSA9IHRvb2wocHJvY2Vzcy5leGVjUGF0aCk7XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENyb3NzLXBsYXRmb3JtIGV4ZWN1dGlvbiB2aWEgZGF4IChmb3IgYmluYXJpZXMgdGhhdCBtYXkgYmUgYC5jbWRgIHNoaW1zKS5cbi8vXG4vLyBgdG9vbGAgYWJvdmUgdXNlcyBgZXhlY0ZpbGVTeW5jYCB3aXRoIGBzaGVsbDogZmFsc2VgLCB3aGljaCBjYW5ub3QgbGF1bmNoXG4vLyBXaW5kb3dzIGAuY21kYC9gLmJhdGAgc2hpbXMgc3VjaCBhcyBgbnB4YCBvciBgbnBtYC4gYHNoaW1Ub29sYCBydW5zIHRocm91Z2hcbi8vIGRheCwgd2hpY2ggcmVzb2x2ZXMgdGhvc2Ugc2hpbXMgY3Jvc3MtcGxhdGZvcm0uIEFyZ3VtZW50cyBhcmUgaW50ZXJwb2xhdGVkXG4vLyB0aHJvdWdoIGRheCdzIGVzY2FwaW5nIChOT1QgYCQucmF3YCksIHNvIGVhY2ggdmFsdWUgaXMgcGFzc2VkIGFzIGEgc2luZ2xlXG4vLyBsaXRlcmFsIGFyZ3VtZW50IHdpdGggbm8gcXVvdGluZyB0byBnZXQgcmlnaHQuIGRheCBpcyBhc3luY2hyb25vdXMsIHNvXG4vLyB0aGVzZSBoZWxwZXJzIGFyZSBvbmx5IHVzYWJsZSBmcm9tIGFzeW5jIGNhbGwgc2l0ZXMuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogQXN5bmMsIGRheC1iYWNrZWQgZXF1aXZhbGVudCBvZiB7QGxpbmsgVG9vbH0gZm9yIHByb2dyYW1zIHRoYXQgbWF5IGJlIGFcbiAqIFdpbmRvd3MgYC5jbWRgL2AuYmF0YCBzaGltIChlLmcuIGBucHhgLCBgbnBtYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNUb29sIHtcbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gLCBpbmhlcml0aW5nIHN0ZG91dC4gUmVqZWN0cyBvbiBub24temVybyBleGl0LlxuICAgKi9cbiAgcnVuKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmVzb2x2ZXMgaXRzIHRyaW1tZWQgU1RET1VULiBSZWplY3RzIG9uIG5vbi16ZXJvXG4gICAqIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQXN5bmNUb29sfSB0aGF0IGludm9rZXMgYGZpbGVgIHZpYSBkYXgsIHJlc29sdmluZyBXaW5kb3dzXG4gKiBgLmNtZGAvYC5iYXRgIHNoaW1zIGFuZCBlc2NhcGluZyBldmVyeSBhcmd1bWVudCAoc28gZWFjaCB2YWx1ZSBpcyBwYXNzZWQgYXNcbiAqIGEgc2luZ2xlIGxpdGVyYWwgYXJndW1lbnQpLlxuICpcbiAqIEBleGFtcGxlIGF3YWl0IG5weC5ydW4oW1wiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTJcIl0sIHsgY3dkIH0pO1xuICovXG5mdW5jdGlvbiBzaGltVG9vbChmaWxlOiBzdHJpbmcpOiBBc3luY1Rvb2wge1xuICBjb25zdCBidWlsZCA9IChhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY21kID0gJGAke2ZpbGV9ICR7YXJnc31gLmN3ZChvcHRpb25zLmN3ZCkuc3RkZXJyKFwicGlwZWRcIikubm9UaHJvdygpO1xuICAgIHJldHVybiBvcHRpb25zLmVudiA/IGNtZC5lbnYob3B0aW9ucy5lbnYpIDogY21kO1xuICB9O1xuICBjb25zdCBlbnN1cmVPayA9IChcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICByZXN1bHQ6IHsgY29kZTogbnVtYmVyOyBzdGRlcnI6IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBpZiAocmVzdWx0LmNvZGUgIT09IDApIHtcbiAgICAgIC8vIE1pbWljIHRoZSBgY2hpbGRfcHJvY2Vzc2AgZXJyb3Igc2hhcGUgKGBzdGF0dXNgLCBgc3RkZXJyYCkgc28gY2FsbGVyc1xuICAgICAgLy8gY2FuIGluc3BlY3Qgc3RkZXJyIChlLmcuIHRvIGRldGVjdCBFTk9FTlQvRTQwNCBmcm9tIG5wbSkuXG4gICAgICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBmYWlsZWQgKGV4aXQgY29kZSAke3Jlc3VsdC5jb2RlfSk6ICR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgICApO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gcmVzdWx0LmNvZGU7XG4gICAgICBlcnJvci5zdGRlcnIgPSBCdWZmZXIuZnJvbShyZXN1bHQuc3RkZXJyKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBydW46IGFzeW5jIChhcmdzLCBvcHRpb25zKSA9PiB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgICBlbnN1cmVPayhhcmdzLCBhd2FpdCBidWlsZChhcmdzLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjYXB0dXJlOiBhc3luYyAoYXJncywgb3B0aW9ucykgPT4ge1xuICAgICAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGQoYXJncywgb3B0aW9ucykuc3Rkb3V0KFwicGlwZWRcIik7XG4gICAgICBlbnN1cmVPayhhcmdzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQudHJpbSgpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIGZvciBgbnBtYCAoYSBXaW5kb3dzIGAuY21kYCBzaGltKS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5wbSA9IHNoaW1Ub29sKFwibnBtXCIpO1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3IgYG5weGAgKGEgV2luZG93cyBgLmNtZGAgc2hpbSkuXG4gKi9cbmV4cG9ydCBjb25zdCBucHggPSBzaGltVG9vbChcIm5weFwiKTtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gcmF3U2hlbGw6IGFyYml0cmFyeSBzaGVsbCBjb21tYW5kIHN0cmluZ3MgKHZpYSBkYXgsIGNyb3NzLXBsYXRmb3JtKS5cbi8vXG4vLyBUaGlzIHJ1bnMgYW4gb3BhcXVlIGNvbW1hbmQgKnN0cmluZyogdGhyb3VnaCBkYXgncyBjcm9zcy1wbGF0Zm9ybSBzaGVsbFxuLy8gKGluY2wuIFdpbmRvd3MpLiBUaGUgY29tbWFuZCBpcyBwYXJzZWQgYnkgYSBzaGVsbCBhcy1pcywgc28gaXQgaXMgbWVhbnQgZm9yXG4vLyBhcmJpdHJhcnkgY29tbWFuZCBsaW5lcyB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgYXMgYSBmaXhlZCBiaW5hcnkgcGx1cyBhXG4vLyBsaXN0IG9mIGFyZ3VtZW50cywgZS5nLiBhIHJlbGVhc2UncyBgbmV4dFZlcnNpb25Db21tYW5kYCBvclxuLy8gYFJlbGVhc2FibGVDb21taXRzLmV4ZWMoKWAgKGFuZCBwcm9qZW4ncyBvd24gZ2VuZXJhdGVkIGBSZWxlYXNhYmxlQ29tbWl0c2Bcbi8vIHF1ZXJpZXMpLiBGb3IgZXZlcnl0aGluZyBlbHNlIHByZWZlciB0aGUgc3RydWN0dXJlZCBgdG9vbGAvYGdpdGAgaGVscGVyc1xuLy8gKG9yIGBzaGltVG9vbGAgZm9yIGAuY21kYCBzaGltcyksIHdoaWNoIHRha2UgYW4gZXhwbGljaXQgbGlzdCBvZiBhcmd1bWVudHMuXG4vL1xuLy8gYCQucmF3YCBpcyByZXF1aXJlZCBoZXJlIChhbmQgb25seSBoZXJlKTogdGhlIGlucHV0IGlzIGFuIG9wYXF1ZSBjb21tYW5kXG4vLyBsaW5lLCBzbyBpdCBtdXN0IGJlIHBhcnNlZCBieSBhIHNoZWxsLiBkYXggcHJvdmlkZXMgdGhhdCBzaGVsbCBvbiBldmVyeVxuLy8gcGxhdGZvcm0sIGluY2x1ZGluZyBXaW5kb3dzLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuXG5leHBvcnQgY29uc3QgcmF3U2hlbGwgPSB7XG4gIC8qKlxuICAgKiBSdW5zIGEgdXNlci1zdXBwbGllZCBzaGVsbCBjb21tYW5kIGxpbmUgYW5kIHJlc29sdmVzIGl0cyB0cmltbWVkXG4gICAqIFNURE9VVC4gUmVqZWN0cyBpZiB0aGUgY29tbWFuZCBleGl0cyBub24temVyby5cbiAgICovXG4gIGNhcHR1cmU6IGFzeW5jIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBjd2Q6IHN0cmluZzsgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9LFxuICApOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGxvZ2dpbmcuZGVidWcoYCR7Y29tbWFuZH0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgY29uc3QgY21kID0gJC5yYXdgJHtjb21tYW5kfWAuY3dkKG9wdGlvbnMuY3dkKTtcbiAgICByZXR1cm4gKG9wdGlvbnMuZW52ID8gY21kLmVudihvcHRpb25zLmVudikgOiBjbWQpLnRleHQoKTtcbiAgfSxcblxuICAvKipcbiAgICogUnVucyBhIHVzZXItc3VwcGxpZWQgc2hlbGwgY29tbWFuZCBsaW5lIGFuZCByZXNvbHZlcyBpdHMgdHJpbW1lZFxuICAgKiBTVERPVVQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kIGZhaWxlZCBvciBwcm9kdWNlZCBubyBvdXRwdXQuXG4gICAqL1xuICB0cnlDYXB0dXJlOiBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY3dkOiBzdHJpbmc7IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSxcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBsb2dnaW5nLmRlYnVnKGAke2NvbW1hbmR9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgIGxldCBjbWQgPSAkLnJhd2Ake2NvbW1hbmR9YC5jd2Qob3B0aW9ucy5jd2QpLm5vVGhyb3coKS5zdGRvdXQoXCJwaXBlZFwiKTtcbiAgICBpZiAob3B0aW9ucy5lbnYpIHtcbiAgICAgIGNtZCA9IGNtZC5lbnYob3B0aW9ucy5lbnYpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbWQ7XG4gICAgaWYgKHJlc3VsdC5jb2RlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBvdXQgPSByZXN1bHQuc3Rkb3V0LnRyaW0oKTtcbiAgICByZXR1cm4gb3V0IHx8IHVuZGVmaW5lZDtcbiAgfSxcbn07XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHN5c3RlbVNoZWxsOiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIG5hdGl2ZSBzaGVsbC5cbi8vXG4vLyBSdW5zIGFuIG9wYXF1ZSBjb21tYW5kIHN0cmluZyB0aHJvdWdoIHRoZSBPUyBkZWZhdWx0IHNoZWxsIChgL2Jpbi9zaGAgb25cbi8vIFBPU0lYLCBgY21kLmV4ZWAgb24gV2luZG93cykgdmlhIGBjaGlsZF9wcm9jZXNzYCB3aXRoIGBzaGVsbDogdHJ1ZWAuIFRoaXNcbi8vIGJhY2tzIHRoZSBgXCJAc3lzdGVtXCJgIHRhc2sgc2hlbGwsIHdoaWNoIGxldHMgYSB0YXNrIG9wdCBvdXQgb2YgdGhlIGJ1aWx0LWluXG4vLyBjcm9zcy1wbGF0Zm9ybSBzaGVsbCBhbmQgdXNlIHRoZSBob3N0J3MgbmF0aXZlIHNoZWxsIGluc3RlYWQuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogTm9ybWFsaXplZCByZXN1bHQgb2YgcnVubmluZyBhIGNvbW1hbmQgdGhyb3VnaCB0aGUgc3lzdGVtIHNoZWxsIChhIHN1YnNldCBvZlxuICogbm9kZSdzIGBTcGF3blN5bmNSZXR1cm5zYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3lzdGVtU2hlbGxSZXN1bHQge1xuICAvKiogRXhpdCBjb2RlLCBvciBgbnVsbGAgaWYgdGVybWluYXRlZCBieSBhIHNpZ25hbCBvciBuZXZlciBzcGF3bmVkLiAqL1xuICByZWFkb25seSBzdGF0dXM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBDYXB0dXJlZCBzdGRvdXQsIG9yIGBudWxsYCB3aGVuIHN0ZG91dCB3YXMgaW5oZXJpdGVkLiAqL1xuICByZWFkb25seSBzdGRvdXQ6IEJ1ZmZlciB8IG51bGw7XG4gIC8qKiBDYXB0dXJlZCBzdGRlcnIsIG9yIGBudWxsYCB3aGVuIHN0ZGVyciB3YXMgaW5oZXJpdGVkLiAqL1xuICByZWFkb25seSBzdGRlcnI6IEJ1ZmZlciB8IG51bGw7XG4gIC8qKiBBbiBlcnJvciByYWlzZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBzcGF3biAobm90IGEgbm9uLXplcm8gZXhpdCkuICovXG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogUnVucyBhIGNvbW1hbmQgbGluZSB0aHJvdWdoIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZGVmYXVsdCBzaGVsbCAoYC9iaW4vc2hgXG4gKiBvbiBQT1NJWCwgYGNtZC5leGVgIG9uIFdpbmRvd3MpLiBOZXZlciB0aHJvd3MgZm9yIGEgbm9uLXplcm8gZXhpdCAodGhhdCBpc1xuICogcmVwb3J0ZWQgdmlhIGBzdGF0dXNgKTsgYSBzcGF3biBmYWlsdXJlIGlzIHJlcG9ydGVkIHZpYSBgZXJyb3JgLiBUaGUgY2FsbGVyXG4gKiBzdXBwbGllcyB0aGUgZnVsbCBgZW52YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbVNoZWxsKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgY3dkOiBzdHJpbmc7IGVudj86IE5vZGVKUy5Qcm9jZXNzRW52OyBjYXB0dXJlPzogYm9vbGVhbiB9LFxuKTogU3lzdGVtU2hlbGxSZXN1bHQge1xuICBsb2dnaW5nLmRlYnVnKGAke2NvbW1hbmR9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICBjb25zdCByZXN1bHQgPSBjaGlsZF9wcm9jZXNzLnNwYXduU3luYyhjb21tYW5kLCB7XG4gICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBtYXhCdWZmZXI6IE1BWF9CVUZGRVIsXG4gICAgZW52OiBvcHRpb25zLmVudixcbiAgICAvLyBcInBpcGVcIiBmb3IgU1RERVJSICh3aGVuIGNhcHR1cmluZykgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zLlxuICAgIHN0ZGlvOiBvcHRpb25zLmNhcHR1cmUgPyBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0gOiBcImluaGVyaXRcIixcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIHN0ZG91dDogcmVzdWx0LnN0ZG91dCA/PyBudWxsLFxuICAgIHN0ZGVycjogcmVzdWx0LnN0ZGVyciA/PyBudWxsLFxuICAgIGVycm9yOiByZXN1bHQuZXJyb3IsXG4gIH07XG59XG4iXX0=
package/lib/version.js CHANGED
@@ -24,7 +24,7 @@ exports.CHANGES_SINCE_LAST_RELEASE = 'git log --oneline -1 | grep -qv "chore(rel
24
24
  */
25
25
  const COMMIT_AND_TAG_VERSION_DEFAULT = "commit-and-tag-version@^12";
26
26
  class Version extends component_1.Component {
27
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Version", version: "0.101.7" };
27
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Version", version: "0.101.9" };
28
28
  bumpTask;
29
29
  unbumpTask;
30
30
  /**
@@ -141,7 +141,7 @@ exports.Version = Version;
141
141
  */
142
142
  class ReleasableCommits {
143
143
  cmd;
144
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ReleasableCommits", version: "0.101.7" };
144
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ReleasableCommits", version: "0.101.9" };
145
145
  /**
146
146
  * Release every commit
147
147
  *
@@ -13,7 +13,7 @@ const DEVCONTAINER_FILE = ".devcontainer.json";
13
13
  * codespaces.
14
14
  */
15
15
  class DevContainer extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.DevContainer", version: "0.101.7" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.DevContainer", version: "0.101.9" };
17
17
  dockerImage;
18
18
  postCreateTasks;
19
19
  ports;
@@ -9,7 +9,7 @@ const json_1 = require("../json");
9
9
  * Source: https://code.visualstudio.com/docs/editor/extension-marketplace#_workspace-recommended-extensions
10
10
  */
11
11
  class VsCodeRecommendedExtensions extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.101.7" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.101.9" };
13
13
  /**
14
14
  * List of extensions which should be recommended for users of this workspace.
15
15
  * The identifier of an extension is always '${publisher}.${name}'. For example: 'ms-python.python'.
@@ -28,7 +28,7 @@ var InternalConsoleOptions;
28
28
  * VSCode launch configuration file (launch.json), useful for enabling in-editor debugger
29
29
  */
30
30
  class VsCodeLaunchConfig extends component_1.Component {
31
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.101.7" };
31
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.101.9" };
32
32
  static renderLaunchConfig(cfg) {
33
33
  if (!cfg.env) {
34
34
  return cfg;
@@ -9,7 +9,7 @@ const json_1 = require("../json");
9
9
  * Source: https://code.visualstudio.com/docs/getstarted/settings#_workspace-settings
10
10
  */
11
11
  class VsCodeSettings extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeSettings", version: "0.101.7" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeSettings", version: "0.101.9" };
13
13
  content;
14
14
  file;
15
15
  constructor(vscode) {
@@ -7,7 +7,7 @@ const launch_config_1 = require("./launch-config");
7
7
  const settings_1 = require("./settings");
8
8
  const component_1 = require("../component");
9
9
  class VsCode extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCode", version: "0.101.7" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCode", version: "0.101.9" };
11
11
  _launchConfig;
12
12
  _settings;
13
13
  _extensions;
package/lib/web/next.js CHANGED
@@ -15,7 +15,7 @@ const MINIMUM_NEXT_JS_NODE_VERSION = "16.14.0"; // https://nextjs.org/docs/pages
15
15
  * @pjid nextjs
16
16
  */
17
17
  class NextJsProject extends javascript_1.NodeProject {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsProject", version: "0.101.7" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsProject", version: "0.101.9" };
19
19
  /**
20
20
  * The directory in which source files reside.
21
21
  */
@@ -59,7 +59,7 @@ exports.NextJsProject = NextJsProject;
59
59
  * @pjid nextjs-ts
60
60
  */
61
61
  class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
62
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.101.7" };
62
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.101.9" };
63
63
  /**
64
64
  * The directory in which source files reside.
65
65
  */
@@ -150,7 +150,7 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
150
150
  }
151
151
  exports.NextJsTypeScriptProject = NextJsTypeScriptProject;
152
152
  class NextComponent extends component_1.Component {
153
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextComponent", version: "0.101.7" };
153
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextComponent", version: "0.101.9" };
154
154
  typescript;
155
155
  tailwind;
156
156
  constructor(project, options) {
@@ -8,7 +8,7 @@ const json_1 = require("../json");
8
8
  * Declares a PostCSS dependency with a default config file.
9
9
  */
10
10
  class PostCss {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.PostCss", version: "0.101.7" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.PostCss", version: "0.101.9" };
12
12
  fileName;
13
13
  file;
14
14
  tailwind;