projen 0.52.23 → 0.52.27

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 (238) hide show
  1. package/.jsii +116 -84
  2. package/changelog.md +1 -6
  3. package/docs/api/API.md +41 -38
  4. package/lib/awscdk/auto-discover.d.ts +14 -46
  5. package/lib/awscdk/auto-discover.js +8 -22
  6. package/lib/awscdk/awscdk-app-java.d.ts +10 -32
  7. package/lib/awscdk/awscdk-app-java.js +5 -9
  8. package/lib/awscdk/awscdk-app-ts.d.ts +15 -35
  9. package/lib/awscdk/awscdk-app-ts.js +6 -14
  10. package/lib/awscdk/awscdk-construct.d.ts +14 -28
  11. package/lib/awscdk/awscdk-construct.js +8 -16
  12. package/lib/awscdk/awscdk-deps-java.d.ts +1 -8
  13. package/lib/awscdk/awscdk-deps-java.js +3 -10
  14. package/lib/awscdk/awscdk-deps-js.d.ts +1 -8
  15. package/lib/awscdk/awscdk-deps-js.js +3 -10
  16. package/lib/awscdk/awscdk-deps.d.ts +28 -67
  17. package/lib/awscdk/awscdk-deps.js +5 -12
  18. package/lib/awscdk/cdk-config.d.ts +19 -51
  19. package/lib/awscdk/cdk-config.js +13 -11
  20. package/lib/awscdk/cdk-tasks.d.ts +7 -24
  21. package/lib/awscdk/cdk-tasks.js +3 -8
  22. package/lib/awscdk/integration-test.d.ts +7 -29
  23. package/lib/awscdk/integration-test.js +3 -8
  24. package/lib/awscdk/lambda-function.d.ts +22 -50
  25. package/lib/awscdk/lambda-function.js +11 -24
  26. package/lib/build/build-workflow.d.ts +33 -78
  27. package/lib/build/build-workflow.js +15 -25
  28. package/lib/cdk/auto-discover-base.d.ts +11 -34
  29. package/lib/cdk/auto-discover-base.js +5 -15
  30. package/lib/cdk/construct-lib.d.ts +8 -22
  31. package/lib/cdk/construct-lib.js +3 -8
  32. package/lib/cdk/integration-test-base.d.ts +12 -38
  33. package/lib/cdk/integration-test-base.js +2 -8
  34. package/lib/cdk/jsii-docgen.d.ts +6 -12
  35. package/lib/cdk/jsii-docgen.js +6 -8
  36. package/lib/cdk/jsii-project.d.ts +16 -95
  37. package/lib/cdk/jsii-project.js +3 -10
  38. package/lib/cdk8s/auto-discover.d.ts +6 -23
  39. package/lib/cdk8s/auto-discover.js +6 -15
  40. package/lib/cdk8s/cdk8s-app-ts.d.ts +21 -43
  41. package/lib/cdk8s/cdk8s-app-ts.js +4 -7
  42. package/lib/cdk8s/cdk8s-construct.d.ts +12 -27
  43. package/lib/cdk8s/cdk8s-construct.js +3 -7
  44. package/lib/cdk8s/integration-test.d.ts +2 -9
  45. package/lib/cdk8s/integration-test.js +3 -8
  46. package/lib/cdktf/cdktf-construct.d.ts +3 -12
  47. package/lib/cdktf/cdktf-construct.js +3 -7
  48. package/lib/component.d.ts +4 -17
  49. package/lib/component.js +6 -19
  50. package/lib/dependencies.d.ts +44 -77
  51. package/lib/dependencies.js +50 -38
  52. package/lib/dev-env.d.ts +26 -53
  53. package/lib/dev-env.js +9 -19
  54. package/lib/docker-compose.d.ts +83 -209
  55. package/lib/docker-compose.js +38 -61
  56. package/lib/file.d.ts +24 -71
  57. package/lib/file.js +4 -16
  58. package/lib/gitattributes.d.ts +3 -14
  59. package/lib/gitattributes.js +5 -16
  60. package/lib/github/auto-approve.d.ts +7 -23
  61. package/lib/github/auto-approve.js +3 -8
  62. package/lib/github/auto-merge.d.ts +7 -29
  63. package/lib/github/auto-merge.js +7 -16
  64. package/lib/github/dependabot.d.ts +54 -147
  65. package/lib/github/dependabot.js +81 -22
  66. package/lib/github/github-project.d.ts +26 -70
  67. package/lib/github/github-project.js +5 -10
  68. package/lib/github/github.d.ts +19 -58
  69. package/lib/github/github.js +9 -30
  70. package/lib/github/mergify.d.ts +9 -54
  71. package/lib/github/mergify.js +2 -14
  72. package/lib/github/pr-template.d.ts +3 -13
  73. package/lib/github/pr-template.js +3 -8
  74. package/lib/github/pull-request-lint.d.ts +8 -28
  75. package/lib/github/pull-request-lint.js +3 -9
  76. package/lib/github/stale.d.ts +17 -47
  77. package/lib/github/stale.js +6 -10
  78. package/lib/github/task-workflow.d.ts +21 -63
  79. package/lib/github/task-workflow.js +3 -8
  80. package/lib/github/workflows-model.d.ts +199 -582
  81. package/lib/github/workflows-model.js +5 -4
  82. package/lib/github/workflows.d.ts +14 -41
  83. package/lib/github/workflows.js +8 -16
  84. package/lib/gitlab/configuration-model.d.ts +145 -947
  85. package/lib/gitlab/configuration-model.js +11 -28
  86. package/lib/gitlab/configuration.d.ts +31 -121
  87. package/lib/gitlab/configuration.js +14 -49
  88. package/lib/gitlab/gitlab-configuration.d.ts +2 -13
  89. package/lib/gitlab/gitlab-configuration.js +4 -15
  90. package/lib/gitlab/nested-configuration.d.ts +1 -9
  91. package/lib/gitlab/nested-configuration.js +3 -8
  92. package/lib/gitpod.d.ts +71 -167
  93. package/lib/gitpod.js +75 -42
  94. package/lib/ignore-file.d.ts +4 -23
  95. package/lib/ignore-file.js +6 -25
  96. package/lib/ini.d.ts +2 -14
  97. package/lib/ini.js +3 -13
  98. package/lib/java/java-project.d.ts +29 -70
  99. package/lib/java/java-project.js +10 -17
  100. package/lib/java/junit.d.ts +5 -17
  101. package/lib/java/junit.js +3 -8
  102. package/lib/java/maven-compile.d.ts +4 -13
  103. package/lib/java/maven-compile.js +3 -8
  104. package/lib/java/maven-packaging.d.ts +6 -21
  105. package/lib/java/maven-packaging.js +3 -8
  106. package/lib/java/maven-sample.d.ts +2 -12
  107. package/lib/java/maven-sample.js +3 -8
  108. package/lib/java/pom.d.ts +38 -100
  109. package/lib/java/pom.js +13 -25
  110. package/lib/java/projenrc.d.ts +7 -22
  111. package/lib/java/projenrc.js +3 -8
  112. package/lib/javascript/bundler.d.ts +30 -72
  113. package/lib/javascript/bundler.js +13 -21
  114. package/lib/javascript/eslint.d.ts +27 -84
  115. package/lib/javascript/eslint.js +11 -30
  116. package/lib/javascript/jest.d.ts +91 -344
  117. package/lib/javascript/jest.js +6 -23
  118. package/lib/javascript/node-package.d.ts +111 -259
  119. package/lib/javascript/node-package.js +64 -81
  120. package/lib/javascript/node-project.d.ts +112 -220
  121. package/lib/javascript/node-project.js +54 -73
  122. package/lib/javascript/npm-config.d.ts +9 -19
  123. package/lib/javascript/npm-config.js +9 -16
  124. package/lib/javascript/prettier.d.ts +65 -196
  125. package/lib/javascript/prettier.js +70 -46
  126. package/lib/javascript/projenrc.d.ts +2 -12
  127. package/lib/javascript/projenrc.js +3 -8
  128. package/lib/javascript/typescript-config.d.ts +62 -158
  129. package/lib/javascript/typescript-config.js +31 -18
  130. package/lib/javascript/upgrade-dependencies.d.ts +34 -94
  131. package/lib/javascript/upgrade-dependencies.js +14 -44
  132. package/lib/json.d.ts +3 -17
  133. package/lib/json.js +3 -13
  134. package/lib/license.d.ts +3 -20
  135. package/lib/license.js +2 -13
  136. package/lib/logger.d.ts +18 -62
  137. package/lib/logger.js +17 -37
  138. package/lib/makefile.d.ts +14 -45
  139. package/lib/makefile.js +7 -25
  140. package/lib/object-file.d.ts +19 -39
  141. package/lib/object-file.js +17 -28
  142. package/lib/option-hints.d.ts +4 -13
  143. package/lib/option-hints.js +11 -5
  144. package/lib/project-build.d.ts +7 -26
  145. package/lib/project-build.js +3 -8
  146. package/lib/project.d.ts +64 -186
  147. package/lib/project.js +43 -91
  148. package/lib/projects.d.ts +11 -32
  149. package/lib/projects.js +4 -8
  150. package/lib/projenrc-json.d.ts +2 -12
  151. package/lib/projenrc-json.js +3 -8
  152. package/lib/python/pip.d.ts +7 -23
  153. package/lib/python/pip.js +8 -17
  154. package/lib/python/poetry.d.ts +36 -121
  155. package/lib/python/poetry.js +12 -26
  156. package/lib/python/projenrc.d.ts +4 -15
  157. package/lib/python/projenrc.js +3 -8
  158. package/lib/python/pytest.d.ts +3 -16
  159. package/lib/python/pytest.js +2 -8
  160. package/lib/python/python-deps.d.ts +7 -21
  161. package/lib/python/python-deps.js +1 -1
  162. package/lib/python/python-env.d.ts +1 -6
  163. package/lib/python/python-env.js +1 -1
  164. package/lib/python/python-packaging.d.ts +12 -34
  165. package/lib/python/python-packaging.js +1 -1
  166. package/lib/python/python-project.d.ts +34 -79
  167. package/lib/python/python-project.js +7 -20
  168. package/lib/python/python-sample.d.ts +2 -9
  169. package/lib/python/python-sample.js +3 -8
  170. package/lib/python/requirements-file.d.ts +4 -19
  171. package/lib/python/requirements-file.js +5 -15
  172. package/lib/python/setuppy.d.ts +11 -39
  173. package/lib/python/setuppy.js +3 -13
  174. package/lib/python/setuptools.d.ts +2 -14
  175. package/lib/python/setuptools.js +3 -8
  176. package/lib/python/venv.d.ts +4 -14
  177. package/lib/python/venv.js +4 -11
  178. package/lib/readme.d.ts +7 -16
  179. package/lib/readme.js +5 -7
  180. package/lib/release/publisher.d.ts +103 -206
  181. package/lib/release/publisher.js +47 -59
  182. package/lib/release/release-trigger.d.ts +16 -48
  183. package/lib/release/release-trigger.js +8 -18
  184. package/lib/release/release.d.ts +50 -110
  185. package/lib/release/release.js +9 -24
  186. package/lib/run-task.js +0 -1820
  187. package/lib/sample-file.d.ts +14 -47
  188. package/lib/sample-file.js +9 -30
  189. package/lib/semver.d.ts +4 -21
  190. package/lib/semver.js +6 -20
  191. package/lib/source-code.d.ts +7 -23
  192. package/lib/source-code.js +7 -19
  193. package/lib/task-model.d.ts +21 -61
  194. package/lib/task-model.js +1 -1
  195. package/lib/task-runtime.d.ts +7 -24
  196. package/lib/task-runtime.js +7 -20
  197. package/lib/task.d.ts +29 -73
  198. package/lib/task.js +28 -61
  199. package/lib/tasks.d.ts +12 -34
  200. package/lib/tasks.js +14 -36
  201. package/lib/testing.d.ts +6 -10
  202. package/lib/testing.js +8 -12
  203. package/lib/textfile.d.ts +9 -24
  204. package/lib/textfile.js +9 -19
  205. package/lib/toml.d.ts +2 -14
  206. package/lib/toml.js +3 -13
  207. package/lib/typescript/projenrc.d.ts +4 -14
  208. package/lib/typescript/projenrc.js +3 -8
  209. package/lib/typescript/typescript-typedoc.d.ts +1 -6
  210. package/lib/typescript/typescript-typedoc.js +3 -8
  211. package/lib/typescript/typescript.d.ts +24 -82
  212. package/lib/typescript/typescript.js +6 -15
  213. package/lib/version.d.ts +9 -38
  214. package/lib/version.js +2 -11
  215. package/lib/vscode/devcontainer.d.ts +10 -30
  216. package/lib/vscode/devcontainer.js +10 -26
  217. package/lib/vscode/launch-config.d.ts +18 -97
  218. package/lib/vscode/launch-config.js +9 -15
  219. package/lib/vscode/vscode.d.ts +0 -9
  220. package/lib/vscode/vscode.js +2 -11
  221. package/lib/web/next.d.ts +19 -60
  222. package/lib/web/next.js +6 -20
  223. package/lib/web/postcss.d.ts +3 -24
  224. package/lib/web/postcss.js +3 -8
  225. package/lib/web/react.d.ts +13 -60
  226. package/lib/web/react.js +7 -32
  227. package/lib/web/tailwind.d.ts +1 -15
  228. package/lib/web/tailwind.js +3 -7
  229. package/lib/xmlfile.d.ts +2 -14
  230. package/lib/xmlfile.js +3 -13
  231. package/lib/yaml.d.ts +4 -19
  232. package/lib/yaml.js +3 -13
  233. package/node_modules/xmlbuilder2/node_modules/@types/node/README.md +1 -1
  234. package/node_modules/xmlbuilder2/node_modules/@types/node/buffer.d.ts +90 -0
  235. package/node_modules/xmlbuilder2/node_modules/@types/node/package.json +2 -2
  236. package/package.json +4 -4
  237. package/releasetag.txt +1 -1
  238. package/version.txt +1 -1
@@ -1,14 +1,7 @@
1
1
  import { AwsCdkDeps, AwsCdkPackageNames } from "./awscdk-deps";
2
2
  /**
3
- * (experimental) Manages dependencies on the AWS CDK for Node.js projects.
4
- *
5
- * @experimental
3
+ * Manages dependencies on the AWS CDK for Node.js projects.
6
4
  */
7
5
  export declare class AwsCdkDepsJs extends AwsCdkDeps {
8
- /**
9
- * (experimental) Return a configuration object with information about package naming in various languages.
10
- *
11
- * @experimental
12
- */
13
6
  protected packageNames(): AwsCdkPackageNames;
14
7
  }
@@ -5,16 +5,9 @@ exports.AwsCdkDepsJs = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const awscdk_deps_1 = require("./awscdk-deps");
7
7
  /**
8
- * (experimental) Manages dependencies on the AWS CDK for Node.js projects.
9
- *
10
- * @experimental
8
+ * Manages dependencies on the AWS CDK for Node.js projects.
11
9
  */
12
10
  class AwsCdkDepsJs extends awscdk_deps_1.AwsCdkDeps {
13
- /**
14
- * (experimental) Return a configuration object with information about package naming in various languages.
15
- *
16
- * @experimental
17
- */
18
11
  packageNames() {
19
12
  return {
20
13
  coreV1: "@aws-cdk/core",
@@ -27,5 +20,5 @@ class AwsCdkDepsJs extends awscdk_deps_1.AwsCdkDeps {
27
20
  }
28
21
  exports.AwsCdkDepsJs = AwsCdkDepsJs;
29
22
  _a = JSII_RTTI_SYMBOL_1;
30
- AwsCdkDepsJs[_a] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.52.23" };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0NBQStEOzs7Ozs7QUFHL0QsTUFBYSxZQUFhLFNBQVEsd0JBQVU7Ozs7OztJQUNoQyxZQUFZO1FBQ3BCLE9BQU87WUFDTCxNQUFNLEVBQUUsZUFBZTtZQUN2QixNQUFNLEVBQUUsYUFBYTtZQUNyQixVQUFVLEVBQUUsWUFBWTtZQUN4QixNQUFNLEVBQUUsaUJBQWlCO1lBQ3pCLFVBQVUsRUFBRSxxQkFBcUI7U0FDbEMsQ0FBQztJQUNKLENBQUM7O0FBVEgsb0NBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtEZXBzLCBBd3NDZGtQYWNrYWdlTmFtZXMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEF3c0Nka0RlcHNKcyBleHRlbmRzIEF3c0Nka0RlcHMge1xuICBwcm90ZWN0ZWQgcGFja2FnZU5hbWVzKCk6IEF3c0Nka1BhY2thZ2VOYW1lcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvcmVWMTogXCJAYXdzLWNkay9jb3JlXCIsXG4gICAgICBjb3JlVjI6IFwiYXdzLWNkay1saWJcIixcbiAgICAgIGNvbnN0cnVjdHM6IFwiY29uc3RydWN0c1wiLFxuICAgICAgYXNzZXJ0OiBcIkBhd3MtY2RrL2Fzc2VydFwiLFxuICAgICAgYXNzZXJ0aW9uczogXCJAYXdzLWNkay9hc3NlcnRpb25zXCIsXG4gICAgfTtcbiAgfVxufVxuIl19
23
+ AwsCdkDepsJs[_a] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.52.27" };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0NBQStEO0FBRS9EOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsd0JBQVU7SUFDaEMsWUFBWTtRQUNwQixPQUFPO1lBQ0wsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFLGFBQWE7WUFDckIsVUFBVSxFQUFFLFlBQVk7WUFDeEIsTUFBTSxFQUFFLGlCQUFpQjtZQUN6QixVQUFVLEVBQUUscUJBQXFCO1NBQ2xDLENBQUM7SUFDSixDQUFDOztBQVRILG9DQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrRGVwcywgQXdzQ2RrUGFja2FnZU5hbWVzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcblxuLyoqXG4gKiBNYW5hZ2VzIGRlcGVuZGVuY2llcyBvbiB0aGUgQVdTIENESyBmb3IgTm9kZS5qcyBwcm9qZWN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Nka0RlcHNKcyBleHRlbmRzIEF3c0Nka0RlcHMge1xuICBwcm90ZWN0ZWQgcGFja2FnZU5hbWVzKCk6IEF3c0Nka1BhY2thZ2VOYW1lcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvcmVWMTogXCJAYXdzLWNkay9jb3JlXCIsXG4gICAgICBjb3JlVjI6IFwiYXdzLWNkay1saWJcIixcbiAgICAgIGNvbnN0cnVjdHM6IFwiY29uc3RydWN0c1wiLFxuICAgICAgYXNzZXJ0OiBcIkBhd3MtY2RrL2Fzc2VydFwiLFxuICAgICAgYXNzZXJ0aW9uczogXCJAYXdzLWNkay9hc3NlcnRpb25zXCIsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -2,43 +2,38 @@ import { Component } from "../component";
2
2
  import { DependencyType } from "../dependencies";
3
3
  import { Project } from "../project";
4
4
  /**
5
- * (experimental) Options for `AwsCdkDeps`.
6
- *
7
- * @experimental
5
+ * Options for `AwsCdkDeps`
8
6
  */
9
7
  export interface AwsCdkDepsCommonOptions {
10
8
  /**
11
- * (experimental) Minimum version of the AWS CDK to depend on.
9
+ * Minimum version of the AWS CDK to depend on.
12
10
  *
13
11
  * @default "2.1.0"
14
- * @experimental
15
12
  */
16
13
  readonly cdkVersion: string;
17
14
  /**
18
- * (experimental) Minimum version of the `constructs` library to depend on.
15
+ * Minimum version of the `constructs` library to depend on.
19
16
  *
20
17
  * @default - for CDK 1.x the default is "3.2.27", for CDK 2.x the default is
21
18
  * "10.0.5".
22
- * @experimental
23
19
  */
24
20
  readonly constructsVersion?: string;
25
21
  /**
26
- * (experimental) Use pinned version instead of caret version for CDK.
22
+ * Use pinned version instead of caret version for CDK.
27
23
  *
28
24
  * You can use this to prevent mixed versions for your CDK dependencies and to prevent auto-updates.
29
25
  * If you use experimental features this will let you define the moment you include breaking changes.
30
- *
31
- * @experimental
32
26
  */
33
27
  readonly cdkVersionPinning?: boolean;
34
28
  /**
35
- * (deprecated) Which AWS CDKv1 modules this project requires.
29
+ * Which AWS CDKv1 modules this project requires
36
30
  *
37
31
  * @deprecated For CDK 2.x use "deps" instead. (or "peerDeps" if you're building a library)
38
32
  */
39
33
  readonly cdkDependencies?: string[];
40
34
  /**
41
- * (deprecated) If this is enabled (default), all modules declared in `cdkDependencies` will be also added as normal `dependencies` (as well as `peerDependencies`).
35
+ * If this is enabled (default), all modules declared in `cdkDependencies` will be also added as
36
+ * normal `dependencies` (as well as `peerDependencies`).
42
37
  *
43
38
  * This is to ensure that downstream consumers actually have your CDK dependencies installed
44
39
  * when using npm < 7 or yarn, where peer dependencies are not automatically installed.
@@ -52,120 +47,90 @@ export interface AwsCdkDepsCommonOptions {
52
47
  */
53
48
  readonly cdkDependenciesAsDeps?: boolean;
54
49
  /**
55
- * (deprecated) Warning: NodeJS only.
56
- *
50
+ * Warning: NodeJS only.
57
51
  * Install the @aws-cdk/assert library?
58
52
  *
59
53
  * @default - will be included by default for AWS CDK >= 1.0.0 < 2.0.0
60
- * @deprecated The
61
- * @aws-cdk /assertions (in V1) and included in `aws-cdk-lib` for V2.
54
+ * @deprecated The @aws-cdk/assert library is deprecated in favor of
55
+ * @aws-cdk/assertions (in V1) and included in `aws-cdk-lib` for V2.
62
56
  */
63
57
  readonly cdkAssert?: boolean;
64
58
  /**
65
- * (experimental) Install the assertions library?
59
+ * Install the assertions library?
66
60
  *
67
61
  * Only needed for CDK 1.x. If using CDK 2.x then
68
62
  * assertions is already included in 'aws-cdk-lib'
69
63
  *
70
64
  * @default - will be included by default for AWS CDK >= 1.111.0 < 2.0.0
71
- * @experimental
72
65
  */
73
66
  readonly cdkAssertions?: boolean;
74
67
  /**
75
- * (deprecated) AWS CDK modules required for testing.
68
+ * AWS CDK modules required for testing.
76
69
  *
77
70
  * @deprecated For CDK 2.x use 'devDeps' (in node.js projects) or 'testDeps' (in java projects) instead
78
71
  */
79
72
  readonly cdkTestDependencies?: string[];
80
73
  }
81
- /**
82
- * @experimental
83
- */
84
74
  export interface AwsCdkDepsOptions extends AwsCdkDepsCommonOptions {
85
75
  /**
86
- * (experimental) The type of dependency to use for runtime AWS CDK and `constructs` modules.
76
+ * The type of dependency to use for runtime AWS CDK and `constructs` modules.
87
77
  *
88
78
  * For libraries, use peer dependencies and for apps use runtime dependencies.
89
- *
90
- * @experimental
91
79
  */
92
80
  readonly dependencyType: DependencyType;
93
81
  }
94
82
  /**
95
- * (experimental) Language-specific AWS CDK package names.
96
- *
97
- * @experimental
83
+ * Language-specific AWS CDK package names.
98
84
  */
99
85
  export interface AwsCdkPackageNames {
100
86
  /**
101
- * (experimental) Fully qualified name of the core framework package for CDKv1.
102
- *
103
- * @experimental
87
+ * Fully qualified name of the core framework package for CDKv1
104
88
  */
105
89
  readonly coreV1: string;
106
90
  /**
107
- * (experimental) Fully qualified name of the core framework package for CDKv2.
108
- *
109
- * @experimental
91
+ * Fully qualified name of the core framework package for CDKv2
110
92
  */
111
93
  readonly coreV2: string;
112
94
  /**
113
- * (experimental) Fully qualified name of the constructs library package.
114
- *
115
- * @experimental
95
+ * Fully qualified name of the constructs library package
116
96
  */
117
97
  readonly constructs: string;
118
98
  /**
119
- * (experimental) Fully qualified name of the assertions library package.
120
- *
121
- * @experimental
99
+ * Fully qualified name of the assertions library package
122
100
  */
123
101
  readonly assertions: string;
124
102
  /**
125
- * (experimental) Fully qualified name of the assert library package Can be empty as it's only really available for javascript projects.
126
- *
127
- * @experimental
103
+ * Fully qualified name of the assert library package
104
+ * Can be empty as it's only really available for javascript projects
128
105
  */
129
106
  readonly assert?: string;
130
107
  }
131
108
  /**
132
- * (experimental) Manages dependencies on the AWS CDK.
133
- *
134
- * @experimental
109
+ * Manages dependencies on the AWS CDK.
135
110
  */
136
111
  export declare abstract class AwsCdkDeps extends Component {
137
112
  /**
138
- * (experimental) The dependency requirement for AWS CDK (e.g. `^2.0.0`).
139
- *
140
- * @experimental
113
+ * The dependency requirement for AWS CDK (e.g. `^2.0.0`).
141
114
  */
142
115
  readonly cdkVersion: string;
143
116
  /**
144
- * (experimental) The minimum version of the AWS CDK (e.g. `2.0.0`).
145
- *
146
- * @experimental
117
+ * The minimum version of the AWS CDK (e.g. `2.0.0`).
147
118
  */
148
119
  readonly cdkMinimumVersion: string;
149
120
  /**
150
- * (deprecated) Whether CDK dependencies are added as normal dependencies (and peer dependencies).
151
- *
121
+ * Whether CDK dependencies are added as normal dependencies (and peer dependencies).
152
122
  * @deprecated Not used for CDK 2.x
153
123
  */
154
124
  readonly cdkDependenciesAsDeps: boolean;
155
125
  /**
156
- * (experimental) The major version of the AWS CDK (e.g. 1, 2, ...).
157
- *
158
- * @experimental
126
+ * The major version of the AWS CDK (e.g. 1, 2, ...)
159
127
  */
160
128
  readonly cdkMajorVersion: number;
161
129
  private readonly dependencyType;
162
130
  private readonly _packageNames;
163
- /**
164
- * @experimental
165
- */
166
131
  constructor(project: Project, options: AwsCdkDepsOptions);
167
132
  /**
168
- * (experimental) Adds dependencies to AWS CDK modules.
133
+ * Adds dependencies to AWS CDK modules.
169
134
  *
170
135
  * The type of dependency is determined by the `dependencyType` option.
171
136
  *
@@ -173,17 +138,15 @@ export declare abstract class AwsCdkDeps extends Component {
173
138
  * `project.addDeps()` as appropriate.
174
139
  *
175
140
  * @param deps names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
176
- * @experimental
177
141
  */
178
142
  addV1Dependencies(...deps: string[]): void;
179
143
  /**
180
- * (experimental) Adds AWS CDK modules as dev dependencies.
144
+ * Adds AWS CDK modules as dev dependencies.
181
145
  *
182
146
  * This method is not supported in CDK v2. Use `project.addPeerDeps()` or
183
147
  * `project.addDeps()` as appropriate.
184
148
  *
185
149
  * @param deps fully qualified names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
186
- * @experimental
187
150
  */
188
151
  addV1DevDependencies(...deps: string[]): void;
189
152
  private addConstructsDependency;
@@ -198,9 +161,7 @@ export declare abstract class AwsCdkDeps extends Component {
198
161
  */
199
162
  private addV1DependenciesByType;
200
163
  /**
201
- * (experimental) Return a configuration object with information about package naming in various languages.
202
- *
203
- * @experimental
164
+ * Return a configuration object with information about package naming in various languages
204
165
  */
205
166
  protected abstract packageNames(): AwsCdkPackageNames;
206
167
  }
@@ -7,14 +7,9 @@ const semver = require("semver");
7
7
  const component_1 = require("../component");
8
8
  const dependencies_1 = require("../dependencies");
9
9
  /**
10
- * (experimental) Manages dependencies on the AWS CDK.
11
- *
12
- * @experimental
10
+ * Manages dependencies on the AWS CDK.
13
11
  */
14
12
  class AwsCdkDeps extends component_1.Component {
15
- /**
16
- * @experimental
17
- */
18
13
  constructor(project, options) {
19
14
  var _b, _c, _d;
20
15
  super(project);
@@ -35,7 +30,7 @@ class AwsCdkDeps extends component_1.Component {
35
30
  this.addV1DevDependencies(...((_d = options.cdkTestDependencies) !== null && _d !== void 0 ? _d : []));
36
31
  }
37
32
  /**
38
- * (experimental) Adds dependencies to AWS CDK modules.
33
+ * Adds dependencies to AWS CDK modules.
39
34
  *
40
35
  * The type of dependency is determined by the `dependencyType` option.
41
36
  *
@@ -43,7 +38,6 @@ class AwsCdkDeps extends component_1.Component {
43
38
  * `project.addDeps()` as appropriate.
44
39
  *
45
40
  * @param deps names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
46
- * @experimental
47
41
  */
48
42
  addV1Dependencies(...deps) {
49
43
  if (deps.length > 0 && this.cdkMajorVersion !== 1) {
@@ -58,13 +52,12 @@ class AwsCdkDeps extends component_1.Component {
58
52
  }
59
53
  }
60
54
  /**
61
- * (experimental) Adds AWS CDK modules as dev dependencies.
55
+ * Adds AWS CDK modules as dev dependencies.
62
56
  *
63
57
  * This method is not supported in CDK v2. Use `project.addPeerDeps()` or
64
58
  * `project.addDeps()` as appropriate.
65
59
  *
66
60
  * @param deps fully qualified names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
67
- * @experimental
68
61
  */
69
62
  addV1DevDependencies(...deps) {
70
63
  if (deps.length > 0 && this.cdkMajorVersion !== 1) {
@@ -156,7 +149,7 @@ class AwsCdkDeps extends component_1.Component {
156
149
  }
157
150
  exports.AwsCdkDeps = AwsCdkDeps;
158
151
  _a = JSII_RTTI_SYMBOL_1;
159
- AwsCdkDeps[_a] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.52.23" };
152
+ AwsCdkDeps[_a] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.52.27" };
160
153
  function determineFrameworkVersion(options) {
161
154
  const ver = semver.parse(options.cdkVersion);
162
155
  if (!ver) {
@@ -170,4 +163,4 @@ function determineFrameworkVersion(options) {
170
163
  major: ver.major,
171
164
  };
172
165
  }
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLDRDQUF5QztBQUN6QyxrREFBaUQ7Ozs7OztBQWtEakQsTUFBc0IsVUFBVyxTQUFRLHFCQUFTOzs7O0lBaUJoRCxZQUFZLE9BQWdCLEVBQUUsT0FBMEI7O1FBQ3RELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxxQkFBcUIsU0FBRyxPQUFPLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQztRQUVuRSxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFekMsTUFBTSxTQUFTLEdBQUcseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUUzQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsNEJBQTRCO1FBQzVCLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhELCtFQUErRTtRQUMvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxPQUFDLE9BQU8sQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcs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aW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0c1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb25QaW5uaW5nPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0RlcGVuZGVuY2llc0FzRGVwcz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtBc3NlcnQ/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0Fzc2VydGlvbnM/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrVGVzdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0RlcHNPcHRpb25zIGV4dGVuZHMgQXdzQ2RrRGVwc0NvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXBlbmRlbmN5VHlwZTogRGVwZW5kZW5jeVR5cGU7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtQYWNrYWdlTmFtZXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29yZVYxOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb3JlVjI6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbnN0cnVjdHM6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFzc2VydGlvbnM6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXNzZXJ0Pzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF3c0Nka0RlcHMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka01pbmltdW1WZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBlbmRlbmNpZXNBc0RlcHM6IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrTWFqb3JWZXJzaW9uOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmN5VHlwZTogRGVwZW5kZW5jeVR5cGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGFja2FnZU5hbWVzOiBBd3NDZGtQYWNrYWdlTmFtZXM7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQXdzQ2RrRGVwc09wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzID0gb3B0aW9ucy5jZGtEZXBlbmRlbmNpZXNBc0RlcHMgPz8gdHJ1ZTtcblxuICAgIHRoaXMuZGVwZW5kZW5jeVR5cGUgPSBvcHRpb25zLmRlcGVuZGVuY3lUeXBlO1xuICAgIHRoaXMuX3BhY2thZ2VOYW1lcyA9IHRoaXMucGFja2FnZU5hbWVzKCk7XG5cbiAgICBjb25zdCBmcmFtZXdvcmsgPSBkZXRlcm1pbmVGcmFtZXdvcmtWZXJzaW9uKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5jZGtWZXJzaW9uID0gZnJhbWV3b3JrLnJhbmdlO1xuICAgIHRoaXMuY2RrTWFqb3JWZXJzaW9uID0gZnJhbWV3b3JrLm1ham9yO1xuICAgIHRoaXMuY2RrTWluaW11bVZlcnNpb24gPSBmcmFtZXdvcmsubWluaW11bTtcblxuICAgIHRoaXMuYWRkRnJhbWV3b3JrRGVwZW5kZW5jeShvcHRpb25zKTtcblxuICAgIC8vIGFzc2VydC9hc3NlcnRpb25zIGxpYnJhcnlcbiAgICB0aGlzLmFkZFYxQXNzZXJ0aW9uTGlicmFyeURlcGVuZGVuY3kob3B0aW9ucyk7XG5cbiAgICAvLyBjb25zdHJ1Y3RzIGxpYnJhcnlcbiAgICB0aGlzLmFkZENvbnN0cnVjdHNEZXBlbmRlbmN5KG9wdGlvbnMuY29uc3RydWN0c1ZlcnNpb24pO1xuXG4gICAgLy8gdXNlci1kZWZpbmVkIHYxIGRlcGVuZGVuY2llcyAod2lsbCBvbmx5IGZhaWwgaW4gQ0RLIHYyIGlmIHRoZXNlIGhhdmUgdmFsdWVzKVxuICAgIHRoaXMuYWRkVjFEZXBlbmRlbmNpZXMoLi4uKG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzID8/IFtdKSk7XG4gICAgdGhpcy5hZGRWMURldkRlcGVuZGVuY2llcyguLi4ob3B0aW9ucy5jZGtUZXN0RGVwZW5kZW5jaWVzID8/IFtdKSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkVjFEZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICBpZiAoZGVwcy5sZW5ndGggPiAwICYmIHRoaXMuY2RrTWFqb3JWZXJzaW9uICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYWRkVjFEZXBlbmRlbmNpZXMoKSBpcyBub3Qgc3VwcG9ydGVkIGZvciBDREsgMi54IGFuZCBhYm92ZSwgdXNlIGFkZERlcHMoKSBvciBhZGRQZWVyRGVwcygpIGluc3RlYWRcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIHdpbGwgYWRkIGRlcGVuZGVuY2llcyBiYXNlZCBvbiB0aGUgdHlwZSByZXF1ZXN0ZWQgYnkgdGhlIHVzZXJcbiAgICAvLyBmb3IgbGlicmFyaWVzLCB0aGlzIHdpbGwgYmUgXCJwZWVyXCIgYW5kIGZvciBhcHBzIGl0IHdpbGwgYmUgXCJydW50aW1lXCJcbiAgICB0aGlzLmFkZFYxRGVwZW5kZW5jaWVzQnlUeXBlKHRoaXMuZGVwZW5kZW5jeVR5cGUsIC4uLmRlcHMpO1xuXG4gICAgLy8gYWRkIGRlcHMgYXMgcnVudGltZSBkZXBzIGlmIGBjZGtEZXBzQXNEZXBzYCBpcyB0cnVlXG4gICAgaWYgKHRoaXMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzKSB7XG4gICAgICB0aGlzLmFkZFYxRGVwZW5kZW5jaWVzQnlUeXBlKERlcGVuZGVuY3lUeXBlLlJVTlRJTUUsIC4uLmRlcHMpO1xuICAgIH1cbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkVjFEZXZEZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICBpZiAoZGVwcy5sZW5ndGggPiAwICYmIHRoaXMuY2RrTWFqb3JWZXJzaW9uICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYWRkVjFEZXZEZXBlbmRlbmNpZXMoKSBpcyBub3Qgc3VwcG9ydGVkIGZvciBDREsgMi54IGFuZCBhYm92ZSwgdXNlIGFkZERldkRlcHMoKS9hZGRUZXN0RGVwcygpIGluc3RlYWRcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFYxRGVwZW5kZW5jaWVzQnlUeXBlKERlcGVuZGVuY3lUeXBlLkJVSUxELCAuLi5kZXBzKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ29uc3RydWN0c0RlcGVuZGVuY3kocmVxdWVzdGVkVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHJlcXVlc3RlZFZlcnNpb24gJiYgIXNlbXZlci5wYXJzZShyZXF1ZXN0ZWRWZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgXCJjb25zdHJ1Y3RzVmVyc2lvblwiIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBzZW12ZXIgdmVyc2lvbjogJHtyZXF1ZXN0ZWRWZXJzaW9ufWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFZlcnNpb24gPSB0aGlzLmNka01ham9yVmVyc2lvbiA9PT0gMSA/IFwiMy4yLjI3XCIgOiBcIjEwLjAuNVwiO1xuICAgIGNvbnN0IHZlcnNpb25SZXF1aXJlbWVudCA9IGBeJHtyZXF1ZXN0ZWRWZXJzaW9uID8/IGRlZmF1bHRWZXJzaW9ufWA7XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RzTWFqb3JWZXJzaW9uID0gc2VtdmVyLm1pblZlcnNpb24odmVyc2lvblJlcXVpcmVtZW50KT8ubWFqb3I7XG4gICAgaWYgKCFjb25zdHJ1Y3RzTWFqb3JWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgZGV0ZXJtaW5lIG1ham9yIHZlcnNpb24gb2YgY29uc3RydWN0cyB2ZXJzaW9uICcke3ZlcnNpb25SZXF1aXJlbWVudH0nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuY2RrTWFqb3JWZXJzaW9uKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGlmIChjb25zdHJ1Y3RzTWFqb3JWZXJzaW9uICE9PSAzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQVdTIENESyAxLnggcmVxdWlyZXMgY29uc3RydWN0cyAzLnhcIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaWYgKGNvbnN0cnVjdHNNYWpvclZlcnNpb24gIT09IDEwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQVdTIENESyAyLnggcmVxdWlyZXMgY29uc3RydWN0cyAxMC54XCIpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koXG4gICAgICBgJHt0aGlzLl9wYWNrYWdlTmFtZXMuY29uc3RydWN0c31AJHt2ZXJzaW9uUmVxdWlyZW1lbnR9YCxcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVR5cGVcbiAgICApO1xuXG4gICAgcmV0dXJuIHZlcnNpb25SZXF1aXJlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVwZW5kZW5jeSBvbiB0aGUgQVdTIENESyBmcmFtZXdvcmsgKGUuZy4gYEBhd3MtY2RrL2NvcmVgIGZvciBWMSBvciBgYXdzLWNkay1saWJgIGZvciBWMSkuXG4gICAqL1xuICBwcml2YXRlIGFkZEZyYW1ld29ya0RlcGVuZGVuY3kob3B0aW9uczogQXdzQ2RrRGVwc09wdGlvbnMpIHtcbiAgICBzd2l0Y2ggKHRoaXMuY2RrTWFqb3JWZXJzaW9uKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuYWRkVjFEZXBlbmRlbmNpZXModGhpcy5fcGFja2FnZU5hbWVzLmNvcmVWMSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIGlmIChvcHRpb25zLmNka0RlcGVuZGVuY2llcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ2Nka0RlcGVuZGVuY2llcyBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueC4gVXNlIFwicGVlckRlcHNcIiBvciBcImRlcHNcIiBpbnN0ZWFkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjZGtEZXBlbmRlbmNpZXNBc0RlcHMgaXMgbm90IHVzZWQgZm9yIENESyAyLnhcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2RrVGVzdERlcGVuZGVuY2llcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ2Nka1Rlc3REZXBlbmRlbmNpZXMgaXMgbm90IHVzZWQgZm9yIENESyAyLnguIFVzZSBcImRldkRlcHNcIiBvciBcInRlc3REZXBzXCIgaW5zdGVhZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcbiAgICAgICAgICBgJHt0aGlzLl9wYWNrYWdlTmFtZXMuY29yZVYyfUAke3RoaXMuY2RrVmVyc2lvbn1gLFxuICAgICAgICAgIHRoaXMuZGVwZW5kZW5jeVR5cGVcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgQVdTIENESyBtYWpvciB2ZXJzaW9uICR7dGhpcy5jZGtNYWpvclZlcnNpb259LnhgXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRWMUFzc2VydGlvbkxpYnJhcnlEZXBlbmRlbmN5KG9wdGlvbnM6IEF3c0Nka0RlcHNPcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuY2RrTWFqb3JWZXJzaW9uICE9PSAxKSB7XG4gICAgICBpZiAob3B0aW9ucy5jZGtBc3NlcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJjZGtBc3NlcnQgaXMgbm90IHVzZWQgZm9yIENESyAyLnguIFVzZSB0aGUgYXNzZXJ0aW9ucyBsaWJyYXJ5IHRoYXQgaXMgcHJvdmlkZWQgaW4gYXdzLWNkay1saWJcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuY2RrQXNzZXJ0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcImNka0Fzc2VydGlvbiBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueC4gVXNlIHRoZSBhc3NlcnRpb25zIGxpYnJhcnkgdGhhdCBpcyBwcm92aWRlZCBpbiBhd3MtY2RrLWxpYlwiXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXN0RGVwcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBpZiAoKG9wdGlvbnMuY2RrQXNzZXJ0ID8/IHRydWUpICYmIHRoaXMuX3BhY2thZ2VOYW1lcy5hc3NlcnQpIHtcbiAgICAgIHRlc3REZXBzLnB1c2godGhpcy5fcGFja2FnZU5hbWVzLmFzc2VydCk7XG4gICAgfVxuXG4gICAgLy8gQGF3cy1jZGsvYXNzZXJ0aW9ucyBpcyBvbmx5IGF2YWlsYWJsZSBzdGFydGluZyB2MS4xMTEuMFxuICAgIGlmIChcbiAgICAgIHNlbXZlci5ndGUodGhpcy5jZGtNaW5pbXVtVmVyc2lvbiwgXCIxLjExMS4wXCIpICYmXG4gICAgICAob3B0aW9ucy5jZGtBc3NlcnRpb25zID8/IHRydWUpXG4gICAgKSB7XG4gICAgICB0ZXN0RGVwcy5wdXNoKHRoaXMuX3BhY2thZ2VOYW1lcy5hc3NlcnRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFYxRGVwZW5kZW5jaWVzQnlUeXBlKERlcGVuZGVuY3lUeXBlLlRFU1QsIC4uLnRlc3REZXBzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc2V0IG9mIGRlcGVuZGVuY2llcyB3aXRoIHRoZSB1c2VyLXNwZWNpZmllZCBkZXBlbmRlbmN5IHR5cGUuXG4gICAqIEBwYXJhbSBkZXBzIFRoZSBzZXQgb2YgZGVwZW5kZW5jeSBzcGVjaWZpY2F0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRWMURlcGVuZGVuY2llc0J5VHlwZSh0eXBlOiBEZXBlbmRlbmN5VHlwZSwgLi4ubW9kdWxlczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XG4gICAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KGAke21vZHVsZX1AJHt0aGlzLmNka1ZlcnNpb259YCwgdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFja2FnZU5hbWVzKCk6IEF3c0Nka1BhY2thZ2VOYW1lcztcbn1cblxuZnVuY3Rpb24gZGV0ZXJtaW5lRnJhbWV3b3JrVmVyc2lvbihvcHRpb25zOiBBd3NDZGtEZXBzT3B0aW9ucykge1xuICBjb25zdCB2ZXIgPSBzZW12ZXIucGFyc2Uob3B0aW9ucy5jZGtWZXJzaW9uKTtcbiAgaWYgKCF2ZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgXCJjZGtWZXJzaW9uXCIgY2Fubm90IGJlIHBhcnNlZCBhcyBhIHNlbXZlciB2ZXJzaW9uOiAke29wdGlvbnMuY2RrVmVyc2lvbn1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWluaW11bTogdmVyLmZvcm1hdCgpLFxuICAgIHJhbmdlOiBvcHRpb25zLmNka1ZlcnNpb25QaW5uaW5nXG4gICAgICA/IG9wdGlvbnMuY2RrVmVyc2lvblxuICAgICAgOiBgXiR7b3B0aW9ucy5jZGtWZXJzaW9ufWAsXG4gICAgbWFqb3I6IHZlci5tYWpvcixcbiAgfTtcbn1cbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLDRDQUF5QztBQUN6QyxrREFBaUQ7QUFxSGpEOztHQUVHO0FBQ0gsTUFBc0IsVUFBVyxTQUFRLHFCQUFTO0lBMEJoRCxZQUFZLE9BQWdCLEVBQUUsT0FBMEI7O1FBQ3RELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxxQkFBcUIsU0FBRyxPQUFPLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQztRQUVuRSxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFekMsTUFBTSxTQUFTLEdBQUcseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUUzQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsNEJBQTRCO1FBQzVCLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhELCtFQUErRTtRQUMvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxPQUFDLE9BQU8sQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgQXdzQ2RrRGVwc2BcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtEZXBzQ29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIEFXUyBDREsgdG8gZGVwZW5kIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIjIuMS4wXCJcbiAgICovXG4gIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBgY29uc3RydWN0c2AgbGlicmFyeSB0byBkZXBlbmQgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZm9yIENESyAxLnggdGhlIGRlZmF1bHQgaXMgXCIzLjIuMjdcIiwgZm9yIENESyAyLnggdGhlIGRlZmF1bHQgaXNcbiAgICogXCIxMC4wLjVcIi5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgcGlubmVkIHZlcnNpb24gaW5zdGVhZCBvZiBjYXJldCB2ZXJzaW9uIGZvciBDREsuXG4gICAqXG4gICAqIFlvdSBjYW4gdXNlIHRoaXMgdG8gcHJldmVudCBtaXhlZCB2ZXJzaW9ucyBmb3IgeW91ciBDREsgZGVwZW5kZW5jaWVzIGFuZCB0byBwcmV2ZW50IGF1dG8tdXBkYXRlcy5cbiAgICogSWYgeW91IHVzZSBleHBlcmltZW50YWwgZmVhdHVyZXMgdGhpcyB3aWxsIGxldCB5b3UgZGVmaW5lIHRoZSBtb21lbnQgeW91IGluY2x1ZGUgYnJlYWtpbmcgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IGNka1ZlcnNpb25QaW5uaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hpY2ggQVdTIENES3YxIG1vZHVsZXMgdGhpcyBwcm9qZWN0IHJlcXVpcmVzXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIEZvciBDREsgMi54IHVzZSBcImRlcHNcIiBpbnN0ZWFkLiAob3IgXCJwZWVyRGVwc1wiIGlmIHlvdSdyZSBidWlsZGluZyBhIGxpYnJhcnkpXG4gICAqL1xuICByZWFkb25seSBjZGtEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkIChkZWZhdWx0KSwgYWxsIG1vZHVsZXMgZGVjbGFyZWQgaW4gYGNka0RlcGVuZGVuY2llc2Agd2lsbCBiZSBhbHNvIGFkZGVkIGFzXG4gICAqIG5vcm1hbCBgZGVwZW5kZW5jaWVzYCAoYXMgd2VsbCBhcyBgcGVlckRlcGVuZGVuY2llc2ApLlxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGRvd25zdHJlYW0gY29uc3VtZXJzIGFjdHVhbGx5IGhhdmUgeW91ciBDREsgZGVwZW5kZW5jaWVzIGluc3RhbGxlZFxuICAgKiB3aGVuIHVzaW5nIG5wbSA8IDcgb3IgeWFybiwgd2hlcmUgcGVlciBkZXBlbmRlbmNpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZC5cbiAgICogSWYgdGhpcyBpcyBkaXNhYmxlZCwgYGNka0RlcGVuZGVuY2llc2Agd2lsbCBiZSBhZGRlZCB0byBgZGV2RGVwZW5kZW5jaWVzYCB0byBlbnN1cmVcbiAgICogdGhleSBhcmUgcHJlc2VudCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgc2V0dGluZyBvbmx5IGFwcGxpZXMgdG8gY29uc3RydWN0IGxpYnJhcnkgcHJvamVjdHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAZGVwcmVjYXRlZCBOb3Qgc3VwcG9ydGVkIGluIENESyB2Mi5cbiAgICovXG4gIHJlYWRvbmx5IGNka0RlcGVuZGVuY2llc0FzRGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdhcm5pbmc6IE5vZGVKUyBvbmx5LlxuICAgKiBJbnN0YWxsIHRoZSBAYXdzLWNkay9hc3NlcnQgbGlicmFyeT9cbiAgICpcbiAgICogQGRlZmF1bHQgLSB3aWxsIGJlIGluY2x1ZGVkIGJ5IGRlZmF1bHQgZm9yIEFXUyBDREsgPj0gMS4wLjAgPCAyLjAuMFxuICAgKiBAZGVwcmVjYXRlZCBUaGUgQGF3cy1jZGsvYXNzZXJ0IGxpYnJhcnkgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZlxuICAgKiBAYXdzLWNkay9hc3NlcnRpb25zIChpbiBWMSkgYW5kIGluY2x1ZGVkIGluIGBhd3MtY2RrLWxpYmAgZm9yIFYyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQXNzZXJ0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5zdGFsbCB0aGUgYXNzZXJ0aW9ucyBsaWJyYXJ5P1xuICAgKlxuICAgKiBPbmx5IG5lZWRlZCBmb3IgQ0RLIDEueC4gSWYgdXNpbmcgQ0RLIDIueCB0aGVuXG4gICAqIGFzc2VydGlvbnMgaXMgYWxyZWFkeSBpbmNsdWRlZCBpbiAnYXdzLWNkay1saWInXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gd2lsbCBiZSBpbmNsdWRlZCBieSBkZWZhdWx0IGZvciBBV1MgQ0RLID49IDEuMTExLjAgPCAyLjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQXNzZXJ0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFXUyBDREsgbW9kdWxlcyByZXF1aXJlZCBmb3IgdGVzdGluZy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgRm9yIENESyAyLnggdXNlICdkZXZEZXBzJyAoaW4gbm9kZS5qcyBwcm9qZWN0cykgb3IgJ3Rlc3REZXBzJyAoaW4gamF2YSBwcm9qZWN0cykgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrVGVzdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0RlcHNPcHRpb25zIGV4dGVuZHMgQXdzQ2RrRGVwc0NvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgZGVwZW5kZW5jeSB0byB1c2UgZm9yIHJ1bnRpbWUgQVdTIENESyBhbmQgYGNvbnN0cnVjdHNgIG1vZHVsZXMuXG4gICAqXG4gICAqIEZvciBsaWJyYXJpZXMsIHVzZSBwZWVyIGRlcGVuZGVuY2llcyBhbmQgZm9yIGFwcHMgdXNlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jeVR5cGU6IERlcGVuZGVuY3lUeXBlO1xufVxuXG4vKipcbiAqIExhbmd1YWdlLXNwZWNpZmljIEFXUyBDREsgcGFja2FnZSBuYW1lcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtQYWNrYWdlTmFtZXMge1xuICAvKipcbiAgICogRnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGNvcmUgZnJhbWV3b3JrIHBhY2thZ2UgZm9yIENES3YxXG4gICAqL1xuICByZWFkb25seSBjb3JlVjE6IHN0cmluZztcbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBjb3JlIGZyYW1ld29yayBwYWNrYWdlIGZvciBDREt2MlxuICAgKi9cbiAgcmVhZG9ubHkgY29yZVYyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgY29uc3RydWN0cyBsaWJyYXJ5IHBhY2thZ2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdHM6IHN0cmluZztcbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBhc3NlcnRpb25zIGxpYnJhcnkgcGFja2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXJ0aW9uczogc3RyaW5nO1xuICAvKipcbiAgICogRnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGFzc2VydCBsaWJyYXJ5IHBhY2thZ2VcbiAgICogQ2FuIGJlIGVtcHR5IGFzIGl0J3Mgb25seSByZWFsbHkgYXZhaWxhYmxlIGZvciBqYXZhc2NyaXB0IHByb2plY3RzXG4gICAqL1xuICByZWFkb25seSBhc3NlcnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWFuYWdlcyBkZXBlbmRlbmNpZXMgb24gdGhlIEFXUyBDREsuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBd3NDZGtEZXBzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IHJlcXVpcmVtZW50IGZvciBBV1MgQ0RLIChlLmcuIGBeMi4wLjBgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHZlcnNpb24gb2YgdGhlIEFXUyBDREsgKGUuZy4gYDIuMC4wYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrTWluaW11bVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBDREsgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCBhcyBub3JtYWwgZGVwZW5kZW5jaWVzIChhbmQgcGVlciBkZXBlbmRlbmNpZXMpLlxuICAgKiBAZGVwcmVjYXRlZCBOb3QgdXNlZCBmb3IgQ0RLIDIueFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka0RlcGVuZGVuY2llc0FzRGVwczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1ham9yIHZlcnNpb24gb2YgdGhlIEFXUyBDREsgKGUuZy4gMSwgMiwgLi4uKVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka01ham9yVmVyc2lvbjogbnVtYmVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jeVR5cGU6IERlcGVuZGVuY3lUeXBlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhY2thZ2VOYW1lczogQXdzQ2RrUGFja2FnZU5hbWVzO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEF3c0Nka0RlcHNPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmNka0RlcGVuZGVuY2llc0FzRGVwcyA9IG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzID8/IHRydWU7XG5cbiAgICB0aGlzLmRlcGVuZGVuY3lUeXBlID0gb3B0aW9ucy5kZXBlbmRlbmN5VHlwZTtcbiAgICB0aGlzLl9wYWNrYWdlTmFtZXMgPSB0aGlzLnBhY2thZ2VOYW1lcygpO1xuXG4gICAgY29uc3QgZnJhbWV3b3JrID0gZGV0ZXJtaW5lRnJhbWV3b3JrVmVyc2lvbihvcHRpb25zKTtcblxuICAgIHRoaXMuY2RrVmVyc2lvbiA9IGZyYW1ld29yay5yYW5nZTtcbiAgICB0aGlzLmNka01ham9yVmVyc2lvbiA9IGZyYW1ld29yay5tYWpvcjtcbiAgICB0aGlzLmNka01pbmltdW1WZXJzaW9uID0gZnJhbWV3b3JrLm1pbmltdW07XG5cbiAgICB0aGlzLmFkZEZyYW1ld29ya0RlcGVuZGVuY3kob3B0aW9ucyk7XG5cbiAgICAvLyBhc3NlcnQvYXNzZXJ0aW9ucyBsaWJyYXJ5XG4gICAgdGhpcy5hZGRWMUFzc2VydGlvbkxpYnJhcnlEZXBlbmRlbmN5KG9wdGlvbnMpO1xuXG4gICAgLy8gY29uc3RydWN0cyBsaWJyYXJ5XG4gICAgdGhpcy5hZGRDb25zdHJ1Y3RzRGVwZW5kZW5jeShvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9uKTtcblxuICAgIC8vIHVzZXItZGVmaW5lZCB2MSBkZXBlbmRlbmNpZXMgKHdpbGwgb25seSBmYWlsIGluIENESyB2MiBpZiB0aGVzZSBoYXZlIHZhbHVlcylcbiAgICB0aGlzLmFkZFYxRGVwZW5kZW5jaWVzKC4uLihvcHRpb25zLmNka0RlcGVuZGVuY2llcyA/PyBbXSkpO1xuICAgIHRoaXMuYWRkVjFEZXZEZXBlbmRlbmNpZXMoLi4uKG9wdGlvbnMuY2RrVGVzdERlcGVuZGVuY2llcyA/PyBbXSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZGVwZW5kZW5jaWVzIHRvIEFXUyBDREsgbW9kdWxlcy5cbiAgICpcbiAgICogVGhlIHR5cGUgb2YgZGVwZW5kZW5jeSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBgZGVwZW5kZW5jeVR5cGVgIG9wdGlvbi5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBpbiBDREsgdjIuIFVzZSBgcHJvamVjdC5hZGRQZWVyRGVwcygpYCBvclxuICAgKiBgcHJvamVjdC5hZGREZXBzKClgIGFzIGFwcHJvcHJpYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gZGVwcyBuYW1lcyBvZiBjZGsgbW9kdWxlcyAoZS5nLiBgQGF3cy1jZGsvYXdzLWxhbWJkYWApLlxuICAgKi9cbiAgcHVibGljIGFkZFYxRGVwZW5kZW5jaWVzKC4uLmRlcHM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGRlcHMubGVuZ3RoID4gMCAmJiB0aGlzLmNka01ham9yVmVyc2lvbiAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImFkZFYxRGVwZW5kZW5jaWVzKCkgaXMgbm90IHN1cHBvcnRlZCBmb3IgQ0RLIDIueCBhbmQgYWJvdmUsIHVzZSBhZGREZXBzKCkgb3IgYWRkUGVlckRlcHMoKSBpbnN0ZWFkXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyB3aWxsIGFkZCBkZXBlbmRlbmNpZXMgYmFzZWQgb24gdGhlIHR5cGUgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyXG4gICAgLy8gZm9yIGxpYnJhcmllcywgdGhpcyB3aWxsIGJlIFwicGVlclwiIGFuZCBmb3IgYXBwcyBpdCB3aWxsIGJlIFwicnVudGltZVwiXG4gICAgdGhpcy5hZGRWMURlcGVuZGVuY2llc0J5VHlwZSh0aGlzLmRlcGVuZGVuY3lUeXBlLCAuLi5kZXBzKTtcblxuICAgIC8vIGFkZCBkZXBzIGFzIHJ1bnRpbWUgZGVwcyBpZiBgY2RrRGVwc0FzRGVwc2AgaXMgdHJ1ZVxuICAgIGlmICh0aGlzLmNka0RlcGVuZGVuY2llc0FzRGVwcykge1xuICAgICAgdGhpcy5hZGRWMURlcGVuZGVuY2llc0J5VHlwZShEZXBlbmRlbmN5VHlwZS5SVU5USU1FLCAuLi5kZXBzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBBV1MgQ0RLIG1vZHVsZXMgYXMgZGV2IGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBpbiBDREsgdjIuIFVzZSBgcHJvamVjdC5hZGRQZWVyRGVwcygpYCBvclxuICAgKiBgcHJvamVjdC5hZGREZXBzKClgIGFzIGFwcHJvcHJpYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gZGVwcyBmdWxseSBxdWFsaWZpZWQgbmFtZXMgb2YgY2RrIG1vZHVsZXMgKGUuZy4gYEBhd3MtY2RrL2F3cy1sYW1iZGFgKS5cbiAgICovXG4gIHB1YmxpYyBhZGRWMURldkRlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIGlmIChkZXBzLmxlbmd0aCA+IDAgJiYgdGhpcy5jZGtNYWpvclZlcnNpb24gIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJhZGRWMURldkRlcGVuZGVuY2llcygpIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIENESyAyLnggYW5kIGFib3ZlLCB1c2UgYWRkRGV2RGVwcygpL2FkZFRlc3REZXBzKCkgaW5zdGVhZFwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWRkVjFEZXBlbmRlbmNpZXNCeVR5cGUoRGVwZW5kZW5jeVR5cGUuQlVJTEQsIC4uLmRlcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDb25zdHJ1Y3RzRGVwZW5kZW5jeShyZXF1ZXN0ZWRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAocmVxdWVzdGVkVmVyc2lvbiAmJiAhc2VtdmVyLnBhcnNlKHJlcXVlc3RlZFZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBcImNvbnN0cnVjdHNWZXJzaW9uXCIgY2Fubm90IGJlIHBhcnNlZCBhcyBhIHNlbXZlciB2ZXJzaW9uOiAke3JlcXVlc3RlZFZlcnNpb259YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0VmVyc2lvbiA9IHRoaXMuY2RrTWFqb3JWZXJzaW9uID09PSAxID8gXCIzLjIuMjdcIiA6IFwiMTAuMC41XCI7XG4gICAgY29uc3QgdmVyc2lvblJlcXVpcmVtZW50ID0gYF4ke3JlcXVlc3RlZFZlcnNpb24gPz8gZGVmYXVsdFZlcnNpb259YDtcblxuICAgIGNvbnN0IGNvbnN0cnVjdHNNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbih2ZXJzaW9uUmVxdWlyZW1lbnQpPy5tYWpvcjtcbiAgICBpZiAoIWNvbnN0cnVjdHNNYWpvclZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCBkZXRlcm1pbmUgbWFqb3IgdmVyc2lvbiBvZiBjb25zdHJ1Y3RzIHZlcnNpb24gJyR7dmVyc2lvblJlcXVpcmVtZW50fSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5jZGtNYWpvclZlcnNpb24pIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKGNvbnN0cnVjdHNNYWpvclZlcnNpb24gIT09IDMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBV1MgQ0RLIDEueCByZXF1aXJlcyBjb25zdHJ1Y3RzIDMueFwiKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICBpZiAoY29uc3RydWN0c01ham9yVmVyc2lvbiAhPT0gMTApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBV1MgQ0RLIDIueCByZXF1aXJlcyBjb25zdHJ1Y3RzIDEwLnhcIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcbiAgICAgIGAke3RoaXMuX3BhY2thZ2VOYW1lcy5jb25zdHJ1Y3RzfUAke3ZlcnNpb25SZXF1aXJlbWVudH1gLFxuICAgICAgdGhpcy5kZXBlbmRlbmN5VHlwZVxuICAgICk7XG5cbiAgICByZXR1cm4gdmVyc2lvblJlcXVpcmVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXBlbmRlbmN5IG9uIHRoZSBBV1MgQ0RLIGZyYW1ld29yayAoZS5nLiBgQGF3cy1jZGsvY29yZWAgZm9yIFYxIG9yIGBhd3MtY2RrLWxpYmAgZm9yIFYxKS5cbiAgICovXG4gIHByaXZhdGUgYWRkRnJhbWV3b3JrRGVwZW5kZW5jeShvcHRpb25zOiBBd3NDZGtEZXBzT3B0aW9ucykge1xuICAgIHN3aXRjaCAodGhpcy5jZGtNYWpvclZlcnNpb24pIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdGhpcy5hZGRWMURlcGVuZGVuY2llcyh0aGlzLl9wYWNrYWdlTmFtZXMuY29yZVYxKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaWYgKG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnY2RrRGVwZW5kZW5jaWVzIGlzIG5vdCB1c2VkIGZvciBDREsgMi54LiBVc2UgXCJwZWVyRGVwc1wiIG9yIFwiZGVwc1wiIGluc3RlYWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5jZGtEZXBlbmRlbmNpZXNBc0RlcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNka0RlcGVuZGVuY2llc0FzRGVwcyBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5jZGtUZXN0RGVwZW5kZW5jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnY2RrVGVzdERlcGVuZGVuY2llcyBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueC4gVXNlIFwiZGV2RGVwc1wiIG9yIFwidGVzdERlcHNcIiBpbnN0ZWFkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFxuICAgICAgICAgIGAke3RoaXMuX3BhY2thZ2VOYW1lcy5jb3JlVjJ9QCR7dGhpcy5jZGtWZXJzaW9ufWAsXG4gICAgICAgICAgdGhpcy5kZXBlbmRlbmN5VHlwZVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBBV1MgQ0RLIG1ham9yIHZlcnNpb24gJHt0aGlzLmNka01ham9yVmVyc2lvbn0ueGBcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFYxQXNzZXJ0aW9uTGlicmFyeURlcGVuZGVuY3kob3B0aW9uczogQXdzQ2RrRGVwc09wdGlvbnMpIHtcbiAgICBpZiAodGhpcy5jZGtNYWpvclZlcnNpb24gIT09IDEpIHtcbiAgICAgIGlmIChvcHRpb25zLmNka0Fzc2VydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcImNka0Fzc2VydCBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueC4gVXNlIHRoZSBhc3NlcnRpb25zIGxpYnJhcnkgdGhhdCBpcyBwcm92aWRlZCBpbiBhd3MtY2RrLWxpYlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5jZGtBc3NlcnRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiY2RrQXNzZXJ0aW9uIGlzIG5vdCB1c2VkIGZvciBDREsgMi54LiBVc2UgdGhlIGFzc2VydGlvbnMgbGlicmFyeSB0aGF0IGlzIHByb3ZpZGVkIGluIGF3cy1jZGstbGliXCJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRlc3REZXBzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGlmICgob3B0aW9ucy5jZGtBc3NlcnQgPz8gdHJ1ZSkgJiYgdGhpcy5fcGFja2FnZU5hbWVzLmFzc2VydCkge1xuICAgICAgdGVzdERlcHMucHVzaCh0aGlzLl9wYWNrYWdlTmFtZXMuYXNzZXJ0KTtcbiAgICB9XG5cbiAgICAvLyBAYXdzLWNkay9hc3NlcnRpb25zIGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHYxLjExMS4wXG4gICAgaWYgKFxuICAgICAgc2VtdmVyLmd0ZSh0aGlzLmNka01pbmltdW1WZXJzaW9uLCBcIjEuMTExLjBcIikgJiZcbiAgICAgIChvcHRpb25zLmNka0Fzc2VydGlvbnMgPz8gdHJ1ZSlcbiAgICApIHtcbiAgICAgIHRlc3REZXBzLnB1c2godGhpcy5fcGFja2FnZU5hbWVzLmFzc2VydGlvbnMpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkVjFEZXBlbmRlbmNpZXNCeVR5cGUoRGVwZW5kZW5jeVR5cGUuVEVTVCwgLi4udGVzdERlcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzZXQgb2YgZGVwZW5kZW5jaWVzIHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIGRlcGVuZGVuY3kgdHlwZS5cbiAgICogQHBhcmFtIGRlcHMgVGhlIHNldCBvZiBkZXBlbmRlbmN5IHNwZWNpZmljYXRpb25zXG4gICAqL1xuICBwcml2YXRlIGFkZFYxRGVwZW5kZW5jaWVzQnlUeXBlKHR5cGU6IERlcGVuZGVuY3lUeXBlLCAuLi5tb2R1bGVzOiBzdHJpbmdbXSkge1xuICAgIGZvciAoY29uc3QgbW9kdWxlIG9mIG1vZHVsZXMpIHtcbiAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koYCR7bW9kdWxlfUAke3RoaXMuY2RrVmVyc2lvbn1gLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdlIG5hbWluZyBpbiB2YXJpb3VzIGxhbmd1YWdlc1xuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhY2thZ2VOYW1lcygpOiBBd3NDZGtQYWNrYWdlTmFtZXM7XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZUZyYW1ld29ya1ZlcnNpb24ob3B0aW9uczogQXdzQ2RrRGVwc09wdGlvbnMpIHtcbiAgY29uc3QgdmVyID0gc2VtdmVyLnBhcnNlKG9wdGlvbnMuY2RrVmVyc2lvbik7XG4gIGlmICghdmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFwiY2RrVmVyc2lvblwiIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBzZW12ZXIgdmVyc2lvbjogJHtvcHRpb25zLmNka1ZlcnNpb259YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1pbmltdW06IHZlci5mb3JtYXQoKSxcbiAgICByYW5nZTogb3B0aW9ucy5jZGtWZXJzaW9uUGlubmluZ1xuICAgICAgPyBvcHRpb25zLmNka1ZlcnNpb25cbiAgICAgIDogYF4ke29wdGlvbnMuY2RrVmVyc2lvbn1gLFxuICAgIG1ham9yOiB2ZXIubWFqb3IsXG4gIH07XG59XG4iXX0=
@@ -2,127 +2,95 @@ import { Component } from "../component";
2
2
  import { JsonFile } from "../json";
3
3
  import { Project } from "../project";
4
4
  /**
5
- * (experimental) Common options for `cdk.json`.
6
- *
7
- * @experimental
5
+ * Common options for `cdk.json`.
8
6
  */
9
7
  export interface CdkConfigCommonOptions {
10
8
  /**
11
- * (experimental) Additional context to include in `cdk.json`.
9
+ * Additional context to include in `cdk.json`.
12
10
  *
13
11
  * @default - no additional context
14
- * @experimental
15
12
  */
16
13
  readonly context?: {
17
14
  [key: string]: any;
18
15
  };
19
16
  /**
20
- * (experimental) Include all feature flags in cdk.json.
17
+ * Include all feature flags in cdk.json
21
18
  *
22
19
  * @default true
23
- * @experimental
24
20
  */
25
21
  readonly featureFlags?: boolean;
26
22
  /**
27
- * (experimental) To protect you against unintended changes that affect your security posture, the AWS CDK Toolkit prompts you to approve security-related changes before deploying them.
23
+ * To protect you against unintended changes that affect your security posture,
24
+ * the AWS CDK Toolkit prompts you to approve security-related changes before deploying them.
28
25
  *
29
26
  * @default ApprovalLevel.BROADENING
30
- * @experimental
31
27
  */
32
28
  readonly requireApproval?: ApprovalLevel;
33
29
  /**
34
- * (experimental) cdk.out directory.
30
+ * cdk.out directory.
35
31
  *
36
32
  * @default "cdk.out"
37
- * @experimental
38
33
  */
39
34
  readonly cdkout?: string;
40
35
  /**
41
- * (experimental) A command to execute before synthesis.
42
- *
43
- * This command will be called when
36
+ * A command to execute before synthesis. This command will be called when
44
37
  * running `cdk synth` or when `cdk watch` identifies a change in your source
45
38
  * code before redeployment.
46
39
  *
47
40
  * @default - no build command
48
- * @experimental
49
41
  */
50
42
  readonly buildCommand?: string;
51
43
  /**
52
- * (experimental) Glob patterns to include in `cdk watch`.
44
+ * Glob patterns to include in `cdk watch`.
53
45
  *
54
46
  * @default []
55
- * @experimental
56
47
  */
57
48
  readonly watchIncludes?: string[];
58
49
  /**
59
- * (experimental) Glob patterns to exclude from `cdk watch`.
50
+ * Glob patterns to exclude from `cdk watch`.
60
51
  *
61
52
  * @default []
62
- * @experimental
63
53
  */
64
54
  readonly watchExcludes?: string[];
65
55
  }
66
56
  /**
67
- * (experimental) Options for `CdkJson`.
68
- *
69
- * @experimental
57
+ * Options for `CdkJson`.
70
58
  */
71
59
  export interface CdkConfigOptions extends CdkConfigCommonOptions {
72
60
  /**
73
- * (experimental) The command line to execute in order to synthesize the CDK application (language specific).
74
- *
75
- * @experimental
61
+ * The command line to execute in order to synthesize the CDK application
62
+ * (language specific).
76
63
  */
77
64
  readonly app: string;
78
65
  }
79
66
  /**
80
- * (experimental) Represents cdk.json file.
81
- *
82
- * @experimental
67
+ * Represents cdk.json file.
83
68
  */
84
69
  export declare class CdkConfig extends Component {
85
70
  /**
86
- * (experimental) Represents the JSON file.
87
- *
88
- * @experimental
71
+ * Represents the JSON file.
89
72
  */
90
73
  readonly json: JsonFile;
91
74
  /**
92
- * (experimental) Name of the cdk.out directory.
93
- *
94
- * @experimental
75
+ * Name of the cdk.out directory.
95
76
  */
96
77
  readonly cdkout: string;
97
- /**
98
- * @experimental
99
- */
100
78
  constructor(project: Project, options: CdkConfigOptions);
101
79
  }
102
80
  /**
103
- * (experimental) Which approval is required when deploying CDK apps.
104
- *
105
- * @experimental
81
+ * Which approval is required when deploying CDK apps.
106
82
  */
107
83
  export declare enum ApprovalLevel {
108
84
  /**
109
- * (experimental) Approval is never required.
110
- *
111
- * @experimental
85
+ * Approval is never required
112
86
  */
113
87
  NEVER = "never",
114
88
  /**
115
- * (experimental) Requires approval on any IAM or security-group-related change.
116
- *
117
- * @experimental
89
+ * Requires approval on any IAM or security-group-related change
118
90
  */
119
91
  ANY_CHANGE = "any-change",
120
92
  /**
121
- * (experimental) Requires approval when IAM statements or traffic rules are added;
122
- *
123
- * removals don't require approval
124
- *
125
- * @experimental
93
+ * Requires approval when IAM statements or traffic rules are added; removals don't require approval
126
94
  */
127
95
  BROADENING = "broadening"
128
96
  }
@@ -7,14 +7,9 @@ const component_1 = require("../component");
7
7
  const json_1 = require("../json");
8
8
  const internal_1 = require("./internal");
9
9
  /**
10
- * (experimental) Represents cdk.json file.
11
- *
12
- * @experimental
10
+ * Represents cdk.json file.
13
11
  */
14
12
  class CdkConfig extends component_1.Component {
15
- /**
16
- * @experimental
17
- */
18
13
  constructor(project, options) {
19
14
  var _b, _c, _d, _e;
20
15
  super(project);
@@ -46,16 +41,23 @@ class CdkConfig extends component_1.Component {
46
41
  }
47
42
  exports.CdkConfig = CdkConfig;
48
43
  _a = JSII_RTTI_SYMBOL_1;
49
- CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.52.23" };
44
+ CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.52.27" };
50
45
  /**
51
- * (experimental) Which approval is required when deploying CDK apps.
52
- *
53
- * @experimental
46
+ * Which approval is required when deploying CDK apps.
54
47
  */
55
48
  var ApprovalLevel;
56
49
  (function (ApprovalLevel) {
50
+ /**
51
+ * Approval is never required
52
+ */
57
53
  ApprovalLevel["NEVER"] = "never";
54
+ /**
55
+ * Requires approval on any IAM or security-group-related change
56
+ */
58
57
  ApprovalLevel["ANY_CHANGE"] = "any-change";
58
+ /**
59
+ * Requires approval when IAM statements or traffic rules are added; removals don't require approval
60
+ */
59
61
  ApprovalLevel["BROADENING"] = "broadening";
60
62
  })(ApprovalLevel = exports.ApprovalLevel || (exports.ApprovalLevel = {}));
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvY2RrLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6QyxrQ0FBbUM7QUFFbkMseUNBQTJDOzs7Ozs7QUFpQzNDLE1BQWEsU0FBVSxTQUFRLHFCQUFTOzs7O0lBT3RDLFlBQVksT0FBZ0IsRUFBRSxPQUF5Qjs7UUFDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE1BQU0sU0FBRyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxTQUFTLENBQUM7UUFFMUMsTUFBTSxPQUFPLEdBQXdCLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUQsTUFBTSxNQUFNLFNBQUcsT0FBTyxDQUFDLFlBQVksbUNBQUksSUFBSSxDQUFDO1FBQzVDLElBQUksTUFBTSxFQUFFO1lBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSx3QkFBYSxFQUFFO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1NBQ0Y7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUU7WUFDNUMsU0FBUyxFQUFFLElBQUk7WUFDZixHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO2dCQUNoQixPQUFPLEVBQUUsT0FBTztnQkFDaEIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO2dCQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDM0IsS0FBSyxFQUFFO29CQUNMLE9BQU8sUUFBRSxPQUFPLENBQUMsYUFBYSxtQ0FBSSxFQUFFO29CQUNwQyxPQUFPLFFBQUUsT0FBTyxDQUFDLGFBQWEsbUNBQUksRUFBRTtpQkFDckM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7QUFyQ0gsOEJBc0NDOzs7Ozs7OztBQUdELElBQVksYUFPWDtBQVBELFdBQVksYUFBYTtJQUV2QixnQ0FBZSxDQUFBO0lBRWYsMENBQXlCLENBQUE7SUFFekIsMENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVBXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBT3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi4vanNvblwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBGRUFUVVJFX0ZMQUdTIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQ2RrQ29uZmlnQ29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb250ZXh0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGZlYXR1cmVGbGFncz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlcXVpcmVBcHByb3ZhbD86IEFwcHJvdmFsTGV2ZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2Rrb3V0Pzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYnVpbGRDb21tYW5kPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHdhdGNoSW5jbHVkZXM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHdhdGNoRXhjbHVkZXM/OiBzdHJpbmdbXTtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIENka0NvbmZpZ09wdGlvbnMgZXh0ZW5kcyBDZGtDb25maWdDb21tb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFwcDogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBDZGtDb25maWcgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBqc29uOiBKc29uRmlsZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka291dDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IENka0NvbmZpZ09wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuY2Rrb3V0ID0gb3B0aW9ucy5jZGtvdXQgPz8gXCJjZGsub3V0XCI7XG5cbiAgICBjb25zdCBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0geyAuLi5vcHRpb25zLmNvbnRleHQgfTtcbiAgICBjb25zdCBmZmxhZ3MgPSBvcHRpb25zLmZlYXR1cmVGbGFncyA/PyB0cnVlO1xuICAgIGlmIChmZmxhZ3MpIHtcbiAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBGRUFUVVJFX0ZMQUdTKSB7XG4gICAgICAgIGNvbnRleHRbZmxhZ10gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IG5ldyBKc29uRmlsZShwcm9qZWN0LCBcImNkay5qc29uXCIsIHtcbiAgICAgIG9taXRFbXB0eTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBhcHA6IG9wdGlvbnMuYXBwLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICByZXF1aXJlQXBwcm92YWw6IG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLFxuICAgICAgICBvdXRwdXQ6IHRoaXMuY2Rrb3V0LFxuICAgICAgICBidWlsZDogb3B0aW9ucy5idWlsZENvbW1hbmQsXG4gICAgICAgIHdhdGNoOiB7XG4gICAgICAgICAgaW5jbHVkZTogb3B0aW9ucy53YXRjaEluY2x1ZGVzID8/IFtdLFxuICAgICAgICAgIGV4Y2x1ZGU6IG9wdGlvbnMud2F0Y2hFeGNsdWRlcyA/PyBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKGAvJHt0aGlzLmNka291dH0vYCk7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcIi5jZGsuc3RhZ2luZy9cIik7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBlbnVtIEFwcHJvdmFsTGV2ZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBORVZFUiA9IFwibmV2ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBBTllfQ0hBTkdFID0gXCJhbnktY2hhbmdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgQlJPQURFTklORyA9IFwiYnJvYWRlbmluZ1wiLFxufVxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvY2RrLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6QyxrQ0FBbUM7QUFFbkMseUNBQTJDO0FBc0UzQzs7R0FFRztBQUNILE1BQWEsU0FBVSxTQUFRLHFCQUFTO0lBV3RDLFlBQVksT0FBZ0IsRUFBRSxPQUF5Qjs7UUFDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE1BQU0sU0FBRyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxTQUFTLENBQUM7UUFFMUMsTUFBTSxPQUFPLEdBQXdCLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUQsTUFBTSxNQUFNLFNBQUcsT0FBTyxDQUFDLFlBQVksbUNBQUksSUFBSSxDQUFDO1FBQzVDLElBQUksTUFBTSxFQUFFO1lBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSx3QkFBYSxFQUFFO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1NBQ0Y7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUU7WUFDNUMsU0FBUyxFQUFFLElBQUk7WUFDZixHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO2dCQUNoQixPQUFPLEVBQUUsT0FBTztnQkFDaEIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO2dCQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDM0IsS0FBSyxFQUFFO29CQUNMLE9BQU8sUUFBRSxPQUFPLENBQUMsYUFBYSxtQ0FBSSxFQUFFO29CQUNwQyxPQUFPLFFBQUUsT0FBTyxDQUFDLGFBQWEsbUNBQUksRUFBRTtpQkFDckM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7QUF6Q0gsOEJBMENDOzs7QUFFRDs7R0FFRztBQUNILElBQVksYUFhWDtBQWJELFdBQVksYUFBYTtJQUN2Qjs7T0FFRztJQUNILGdDQUFlLENBQUE7SUFDZjs7T0FFRztJQUNILDBDQUF5QixDQUFBO0lBQ3pCOztPQUVHO0lBQ0gsMENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQWJXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBYXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi4vanNvblwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBGRUFUVVJFX0ZMQUdTIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuLyoqXG4gKiBDb21tb24gb3B0aW9ucyBmb3IgYGNkay5qc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtDb25maWdDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dCB0byBpbmNsdWRlIGluIGBjZGsuanNvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogSW5jbHVkZSBhbGwgZmVhdHVyZSBmbGFncyBpbiBjZGsuanNvblxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlRmxhZ3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUbyBwcm90ZWN0IHlvdSBhZ2FpbnN0IHVuaW50ZW5kZWQgY2hhbmdlcyB0aGF0IGFmZmVjdCB5b3VyIHNlY3VyaXR5IHBvc3R1cmUsXG4gICAqIHRoZSBBV1MgQ0RLIFRvb2xraXQgcHJvbXB0cyB5b3UgdG8gYXBwcm92ZSBzZWN1cml0eS1yZWxhdGVkIGNoYW5nZXMgYmVmb3JlIGRlcGxveWluZyB0aGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBcHByb3ZhbExldmVsLkJST0FERU5JTkdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVBcHByb3ZhbD86IEFwcHJvdmFsTGV2ZWw7XG5cbiAgLyoqXG4gICAqIGNkay5vdXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImNkay5vdXRcIlxuICAgKi9cbiAgcmVhZG9ubHkgY2Rrb3V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hbmQgdG8gZXhlY3V0ZSBiZWZvcmUgc3ludGhlc2lzLiBUaGlzIGNvbW1hbmQgd2lsbCBiZSBjYWxsZWQgd2hlblxuICAgKiBydW5uaW5nIGBjZGsgc3ludGhgIG9yIHdoZW4gYGNkayB3YXRjaGAgaWRlbnRpZmllcyBhIGNoYW5nZSBpbiB5b3VyIHNvdXJjZVxuICAgKiBjb2RlIGJlZm9yZSByZWRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYnVpbGQgY29tbWFuZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRDb21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHbG9iIHBhdHRlcm5zIHRvIGluY2x1ZGUgaW4gYGNkayB3YXRjaGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSB3YXRjaEluY2x1ZGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdsb2IgcGF0dGVybnMgdG8gZXhjbHVkZSBmcm9tIGBjZGsgd2F0Y2hgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hFeGNsdWRlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBDZGtKc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtDb25maWdPcHRpb25zIGV4dGVuZHMgQ2RrQ29uZmlnQ29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gc3ludGhlc2l6ZSB0aGUgQ0RLIGFwcGxpY2F0aW9uXG4gICAqIChsYW5ndWFnZSBzcGVjaWZpYykuXG4gICAqL1xuICByZWFkb25seSBhcHA6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGNkay5qc29uIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtDb25maWcgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgSlNPTiBmaWxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGpzb246IEpzb25GaWxlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjZGsub3V0IGRpcmVjdG9yeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjZGtvdXQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBDZGtDb25maWdPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmNka291dCA9IG9wdGlvbnMuY2Rrb3V0ID8/IFwiY2RrLm91dFwiO1xuXG4gICAgY29uc3QgY29udGV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHsgLi4ub3B0aW9ucy5jb250ZXh0IH07XG4gICAgY29uc3QgZmZsYWdzID0gb3B0aW9ucy5mZWF0dXJlRmxhZ3MgPz8gdHJ1ZTtcbiAgICBpZiAoZmZsYWdzKSB7XG4gICAgICBmb3IgKGNvbnN0IGZsYWcgb2YgRkVBVFVSRV9GTEFHUykge1xuICAgICAgICBjb250ZXh0W2ZsYWddID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmpzb24gPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgXCJjZGsuanNvblwiLCB7XG4gICAgICBvbWl0RW1wdHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgYXBwOiBvcHRpb25zLmFwcCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgb3V0cHV0OiB0aGlzLmNka291dCxcbiAgICAgICAgYnVpbGQ6IG9wdGlvbnMuYnVpbGRDb21tYW5kLFxuICAgICAgICB3YXRjaDoge1xuICAgICAgICAgIGluY2x1ZGU6IG9wdGlvbnMud2F0Y2hJbmNsdWRlcyA/PyBbXSxcbiAgICAgICAgICBleGNsdWRlOiBvcHRpb25zLndhdGNoRXhjbHVkZXMgPz8gW10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShgLyR7dGhpcy5jZGtvdXR9L2ApO1xuICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIuY2RrLnN0YWdpbmcvXCIpO1xuICB9XG59XG5cbi8qKlxuICogV2hpY2ggYXBwcm92YWwgaXMgcmVxdWlyZWQgd2hlbiBkZXBsb3lpbmcgQ0RLIGFwcHMuXG4gKi9cbmV4cG9ydCBlbnVtIEFwcHJvdmFsTGV2ZWwge1xuICAvKipcbiAgICogQXBwcm92YWwgaXMgbmV2ZXIgcmVxdWlyZWRcbiAgICovXG4gIE5FVkVSID0gXCJuZXZlclwiLFxuICAvKipcbiAgICogUmVxdWlyZXMgYXBwcm92YWwgb24gYW55IElBTSBvciBzZWN1cml0eS1ncm91cC1yZWxhdGVkIGNoYW5nZVxuICAgKi9cbiAgQU5ZX0NIQU5HRSA9IFwiYW55LWNoYW5nZVwiLFxuICAvKipcbiAgICogUmVxdWlyZXMgYXBwcm92YWwgd2hlbiBJQU0gc3RhdGVtZW50cyBvciB0cmFmZmljIHJ1bGVzIGFyZSBhZGRlZDsgcmVtb3ZhbHMgZG9uJ3QgcmVxdWlyZSBhcHByb3ZhbFxuICAgKi9cbiAgQlJPQURFTklORyA9IFwiYnJvYWRlbmluZ1wiLFxufVxuIl19