projen 0.104.19 → 0.104.21

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 (169) hide show
  1. package/.jsii +76 -55
  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/awscdk/private/feature-flags-v2.const.d.ts +1 -1
  18. package/lib/awscdk/private/feature-flags-v2.const.js +2 -2
  19. package/lib/build/build-workflow.js +1 -1
  20. package/lib/cdk/auto-discover-base.js +2 -2
  21. package/lib/cdk/construct-lib.js +1 -1
  22. package/lib/cdk/integration-test-base.js +1 -1
  23. package/lib/cdk/jsii-build.d.ts +4 -0
  24. package/lib/cdk/jsii-build.js +5 -2
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.d.ts +17 -0
  27. package/lib/cdk/jsii-project.js +2 -2
  28. package/lib/cdk8s/auto-discover.js +2 -2
  29. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  30. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  31. package/lib/cdk8s/cdk8s-construct.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  33. package/lib/cdk8s/cdk8s-deps.js +1 -1
  34. package/lib/cdk8s/integration-test.js +1 -1
  35. package/lib/cdktf/cdktf-construct.js +1 -1
  36. package/lib/cdktn/cdktn-app-ts.js +1 -1
  37. package/lib/cdktn/cdktn-config.js +1 -1
  38. package/lib/cdktn/cdktn-construct.js +1 -1
  39. package/lib/cdktn/cdktn-deps.js +1 -1
  40. package/lib/cdktn/cdktn-tasks.js +1 -1
  41. package/lib/circleci/circleci.js +1 -1
  42. package/lib/component.js +2 -2
  43. package/lib/dependencies.js +1 -1
  44. package/lib/dev-env.js +1 -1
  45. package/lib/docker-compose/docker-compose-service.js +1 -1
  46. package/lib/docker-compose/docker-compose.js +1 -1
  47. package/lib/file.js +1 -1
  48. package/lib/gitattributes.js +1 -1
  49. package/lib/github/actions-provider.js +1 -1
  50. package/lib/github/actions.const.js +1 -1
  51. package/lib/github/auto-approve.js +1 -1
  52. package/lib/github/auto-merge.js +1 -1
  53. package/lib/github/auto-queue.js +1 -1
  54. package/lib/github/dependabot.js +1 -1
  55. package/lib/github/dependency-review.js +1 -1
  56. package/lib/github/github-credentials.js +1 -1
  57. package/lib/github/github-project.js +1 -1
  58. package/lib/github/github.js +1 -1
  59. package/lib/github/merge-queue.js +1 -1
  60. package/lib/github/mergify.js +1 -1
  61. package/lib/github/pr-template.js +1 -1
  62. package/lib/github/pull-request-backport.js +1 -1
  63. package/lib/github/pull-request-lint.js +1 -1
  64. package/lib/github/pull-request-source.js +1 -1
  65. package/lib/github/stale.js +1 -1
  66. package/lib/github/task-workflow-job.js +1 -1
  67. package/lib/github/task-workflow.js +1 -1
  68. package/lib/github/workflow-actions.js +1 -1
  69. package/lib/github/workflow-jobs.js +1 -1
  70. package/lib/github/workflow-steps.js +1 -1
  71. package/lib/github/workflows.js +1 -1
  72. package/lib/gitlab/configuration.js +1 -1
  73. package/lib/gitlab/gitlab-configuration.js +1 -1
  74. package/lib/gitlab/nested-configuration.js +1 -1
  75. package/lib/gitpod.js +1 -1
  76. package/lib/ignore-file.js +1 -1
  77. package/lib/ini.js +1 -1
  78. package/lib/java/java-project.js +1 -1
  79. package/lib/java/junit.js +1 -1
  80. package/lib/java/maven-compile.js +1 -1
  81. package/lib/java/maven-packaging.js +1 -1
  82. package/lib/java/maven-sample.js +1 -1
  83. package/lib/java/pom.js +2 -2
  84. package/lib/java/projenrc.js +1 -1
  85. package/lib/javascript/biome/biome.js +1 -1
  86. package/lib/javascript/bundler.js +1 -1
  87. package/lib/javascript/eslint.js +1 -1
  88. package/lib/javascript/jest.js +4 -4
  89. package/lib/javascript/license-checker.js +1 -1
  90. package/lib/javascript/node-config-file.js +1 -1
  91. package/lib/javascript/node-native-test-runner.js +2 -2
  92. package/lib/javascript/node-package.js +1 -1
  93. package/lib/javascript/node-project.js +1 -1
  94. package/lib/javascript/npm-config.js +1 -1
  95. package/lib/javascript/pnpm-workspace-config.js +2 -2
  96. package/lib/javascript/pnpm-workspace.js +1 -1
  97. package/lib/javascript/prettier.js +1 -1
  98. package/lib/javascript/projenrc.js +1 -1
  99. package/lib/javascript/typescript-config.js +2 -2
  100. package/lib/javascript/upgrade-dependencies.js +2 -2
  101. package/lib/javascript/yarnrc.js +1 -1
  102. package/lib/json-patch.js +1 -1
  103. package/lib/json.js +1 -1
  104. package/lib/license.js +1 -1
  105. package/lib/logger.js +1 -1
  106. package/lib/makefile.js +1 -1
  107. package/lib/object-file.js +1 -1
  108. package/lib/polaris/coverity-go.js +1 -1
  109. package/lib/polaris/coverity-java.js +1 -1
  110. package/lib/polaris/coverity-javascript.js +1 -1
  111. package/lib/polaris/coverity.js +1 -1
  112. package/lib/project-build.js +1 -1
  113. package/lib/project-tree.js +1 -1
  114. package/lib/project.js +1 -1
  115. package/lib/projects.js +1 -1
  116. package/lib/projenrc-json.js +1 -1
  117. package/lib/projenrc.js +1 -1
  118. package/lib/properties-file.js +1 -1
  119. package/lib/python/pip.js +1 -1
  120. package/lib/python/poetry.js +2 -2
  121. package/lib/python/projenrc.js +1 -1
  122. package/lib/python/pyproject-toml-file.js +1 -1
  123. package/lib/python/pytest-sample.js +1 -1
  124. package/lib/python/pytest.js +1 -1
  125. package/lib/python/python-project.js +1 -1
  126. package/lib/python/python-sample.js +1 -1
  127. package/lib/python/requirements-file.js +1 -1
  128. package/lib/python/setuppy.js +1 -1
  129. package/lib/python/setuptools.js +1 -1
  130. package/lib/python/uv-config.js +1 -1
  131. package/lib/python/uv.js +1 -1
  132. package/lib/python/venv.js +1 -1
  133. package/lib/readme.js +1 -1
  134. package/lib/release/publisher.js +1 -1
  135. package/lib/release/release-trigger.js +1 -1
  136. package/lib/release/release.js +1 -1
  137. package/lib/renovatebot.js +1 -1
  138. package/lib/run-task.cjs +2 -2
  139. package/lib/sample-file.js +2 -2
  140. package/lib/script-runner.js +1 -1
  141. package/lib/sonarqube/javascript.js +1 -1
  142. package/lib/sonarqube/rust.js +1 -1
  143. package/lib/sonarqube/sonarqube.js +1 -1
  144. package/lib/sonarqube/typescript.js +1 -1
  145. package/lib/source-code.js +1 -1
  146. package/lib/task-shell.js +1 -1
  147. package/lib/task.js +1 -1
  148. package/lib/tasks.js +1 -1
  149. package/lib/testing.js +1 -1
  150. package/lib/textfile.js +1 -1
  151. package/lib/toml.js +1 -1
  152. package/lib/typescript/projenrc-ts.js +1 -1
  153. package/lib/typescript/projenrc.js +1 -1
  154. package/lib/typescript/typescript-runner.js +1 -1
  155. package/lib/typescript/typescript-typedoc.js +1 -1
  156. package/lib/typescript/typescript.js +5 -5
  157. package/lib/version.js +2 -2
  158. package/lib/vscode/devcontainer.js +1 -1
  159. package/lib/vscode/extensions.js +1 -1
  160. package/lib/vscode/launch-config.js +1 -1
  161. package/lib/vscode/settings.js +1 -1
  162. package/lib/vscode/vscode.js +1 -1
  163. package/lib/web/next.js +3 -3
  164. package/lib/web/postcss.js +1 -1
  165. package/lib/web/react.js +19 -19
  166. package/lib/web/tailwind.js +1 -1
  167. package/lib/xmlfile.js +1 -1
  168. package/lib/yaml.js +1 -1
  169. package/package.json +2 -2
@@ -11,7 +11,7 @@ const internal_1 = require("./internal");
11
11
  * CDK V2 feature flags configuration.
12
12
  */
13
13
  class CdkFeatureFlagsV2 {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlagsV2", version: "0.104.19" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlagsV2", version: "0.104.21" };
15
15
  /**
16
16
  * Disable all feature flags.
17
17
  */
@@ -52,7 +52,7 @@ exports.CdkFeatureFlagsV2 = CdkFeatureFlagsV2;
52
52
  * CDK feature flags configuration.
53
53
  */
54
54
  class CdkFeatureFlags {
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlags", version: "0.104.19" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkFeatureFlags", version: "0.104.21" };
56
56
  /**
57
57
  * CDK V2 feature flags configuration.
58
58
  */
@@ -67,7 +67,7 @@ exports.CdkFeatureFlags = CdkFeatureFlags;
67
67
  * Represents cdk.json file.
68
68
  */
69
69
  class CdkConfig extends component_1.Component {
70
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkConfig", version: "0.104.19" };
70
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkConfig", version: "0.104.21" };
71
71
  /**
72
72
  * Represents the JSON file.
73
73
  */
@@ -7,7 +7,7 @@ const component_1 = require("../component");
7
7
  * Adds standard AWS CDK tasks to your project.
8
8
  */
9
9
  class CdkTasks extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkTasks", version: "0.104.19" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.CdkTasks", version: "0.104.21" };
11
11
  /**
12
12
  * Synthesizes your app.
13
13
  */
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * Cloud integration tests.
10
10
  */
11
11
  class IntegrationTest extends cdk_1.IntegrationTestBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.IntegrationTest", version: "0.104.19" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.IntegrationTest", version: "0.104.21" };
13
13
  /**
14
14
  * Destroy the integration test resources
15
15
  */
@@ -13,7 +13,7 @@ const source_code_1 = require("../source-code");
13
13
  * Create a Lambda Extension
14
14
  */
15
15
  class LambdaExtension extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaExtension", version: "0.104.19" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaExtension", version: "0.104.21" };
17
17
  constructor(project, options) {
18
18
  super(project);
19
19
  const basePath = (0, path_1.join)((0, path_1.dirname)(options.entrypoint), (0, path_1.basename)(options.entrypoint, internal_1.TYPESCRIPT_LAMBDA_EXTENSION_EXT));
@@ -63,7 +63,7 @@ const util_1 = require("../util");
63
63
  * });
64
64
  */
65
65
  class LambdaFunction extends component_1.Component {
66
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaFunction", version: "0.104.19" };
66
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaFunction", version: "0.104.21" };
67
67
  /**
68
68
  * Defines a pre-bundled AWS Lambda function construct from handler code.
69
69
  *
@@ -218,7 +218,7 @@ exports.LambdaFunction = LambdaFunction;
218
218
  class LambdaRuntime {
219
219
  functionRuntime;
220
220
  esbuildTarget;
221
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.104.19" };
221
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.104.21" };
222
222
  /**
223
223
  * Node.js 14.x
224
224
  * @deprecated Node.js 14 runtime has been deprecated on Dec 4, 2023
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Feature flags as of v2.274.0
2
+ * Feature flags as of v2.275.0
3
3
  */
4
4
  declare const _default: {
5
5
  "@aws-cdk/aws-signer:signingProfileNamePassedToCfn": boolean;
@@ -2,7 +2,7 @@
2
2
  // ~~ Generated by projen. To modify, edit .projenrc.ts and run "node ./projen.js".
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  /**
5
- * Feature flags as of v2.274.0
5
+ * Feature flags as of v2.275.0
6
6
  */
7
7
  exports.default = {
8
8
  "@aws-cdk/aws-signer:signingProfileNamePassedToCfn": true,
@@ -98,4 +98,4 @@ exports.default = {
98
98
  "@aws-cdk/aws-cloudfront:defaultViewerProtocolPolicyRedirectToHttps": true,
99
99
  "@aws-cdk/aws-apigateway:logGroupDestinationArnWithoutWildcard": true
100
100
  };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy12Mi5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3NjZGsvcHJpdmF0ZS9mZWF0dXJlLWZsYWdzLXYyLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtRkFBbUY7O0FBRW5GOztHQUVHO0FBQ0gsa0JBQWU7SUFDYixtREFBbUQsRUFBRSxJQUFJO0lBQ3pELGlFQUFpRSxFQUFFLElBQUk7SUFDdkUsMkNBQTJDLEVBQUUsSUFBSTtJQUNqRCxnQ0FBZ0MsRUFBRSxJQUFJO0lBQ3RDLGlDQUFpQyxFQUFFO1FBQ2pDLEtBQUs7UUFDTCxRQUFRO0tBQ1Q7SUFDRCxtRUFBbUUsRUFBRSxJQUFJO0lBQ3pFLDJDQUEyQyxFQUFFLElBQUk7SUFDakQsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCxtQ0FBbUMsRUFBRSxJQUFJO0lBQ3pDLDZDQUE2QyxFQUFFLElBQUk7SUFDbkQscUVBQXFFLEVBQUUsSUFBSTtJQUMzRSw0Q0FBNEMsRUFBRSxJQUFJO0lBQ2xELHVEQUF1RCxFQUFFLElBQUk7SUFDN0QsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCx1Q0FBdUMsRUFBRSxJQUFJO0lBQzdDLGtEQUFrRCxFQUFFLElBQUk7SUFDeEQsdUVBQXVFLEVBQUUsSUFBSTtJQUM3RSx5REFBeUQsRUFBRSxJQUFJO0lBQy9ELGlEQUFpRCxFQUFFLElBQUk7SUFDdkQsNkNBQTZDLEVBQUUsSUFBSTtJQUNuRCxxREFBcUQsRUFBRSxLQUFLO0lBQzVELGtEQUFrRCxFQUFFLElBQUk7SUFDeEQseURBQXlELEVBQUUsSUFBSTtJQUMvRCw2REFBNkQsRUFBRSxJQUFJO0lBQ25FLGdEQUFnRCxFQUFFLElBQUk7SUFDdEQsdUZBQXVGLEVBQUUsSUFBSTtJQUM3RixnQ0FBZ0MsRUFBRSxJQUFJO0lBQ3RDLDJEQUEyRCxFQUFFLElBQUk7SUFDakUsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCxrREFBa0QsRUFBRSxJQUFJO0lBQ3hELCtCQUErQixFQUFFLElBQUk7SUFDckMsMkRBQTJELEVBQUUsSUFBSTtJQUNqRSxzRUFBc0UsRUFBRSxJQUFJO0lBQzVFLG1EQUFtRCxFQUFFLElBQUk7SUFDekQsc0NBQXNDLEVBQUUsSUFBSTtJQUM1QyxtRUFBbUUsRUFBRSxJQUFJO0lBQ3pFLG9EQUFvRCxFQUFFLElBQUk7SUFDMUQsdURBQXVELEVBQUUsSUFBSTtJQUM3RCxxRkFBcUYsRUFBRSxJQUFJO0lBQzNGLDhEQUE4RCxFQUFFLElBQUk7SUFDcEUsd0RBQXdELEVBQUUsSUFBSTtJQUM5RCwwRUFBMEUsRUFBRSxJQUFJO0lBQ2hGLGdGQUFnRixFQUFFLElBQUk7SUFDdEYsK0RBQStELEVBQUUsSUFBSTtJQUNyRSxtREFBbUQsRUFBRSxJQUFJO0lBQ3pELHNEQUFzRCxFQUFFLElBQUk7SUFDNUQseUNBQXlDLEVBQUUsSUFBSTtJQUMvQyx3Q0FBd0MsRUFBRSxJQUFJO0lBQzlDLHNDQUFzQyxFQUFFLElBQUk7SUFDNUMsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCxpRUFBaUUsRUFBRSxLQUFLO0lBQ3hFLGtEQUFrRCxFQUFFLEtBQUs7SUFDekQsaUNBQWlDLEVBQUUsSUFBSTtJQUN2Qyx3REFBd0QsRUFBRSxJQUFJO0lBQzlELGdEQUFnRCxFQUFFLElBQUk7SUFDdEQsdUNBQXVDLEVBQUUsSUFBSTtJQUM3Qyw2REFBNkQsRUFBRSxJQUFJO0lBQ25FLGtGQUFrRixFQUFFLElBQUk7SUFDeEYsMkVBQTJFLEVBQUUsSUFBSTtJQUNqRix1REFBdUQsRUFBRSxJQUFJO0lBQzdELHNEQUFzRCxFQUFFLElBQUk7SUFDNUQseURBQXlELEVBQUUsSUFBSTtJQUMvRCw0RUFBNEUsRUFBRSxJQUFJO0lBQ2xGLDRGQUE0RixFQUFFLElBQUk7SUFDbEcsb0RBQW9ELEVBQUUsSUFBSTtJQUMxRCxrREFBa0QsRUFBRSxJQUFJO0lBQ3hELDBEQUEwRCxFQUFFLEtBQUs7SUFDakUsOENBQThDLEVBQUUsSUFBSTtJQUNwRCw4Q0FBOEMsRUFBRSxJQUFJO0lBQ3BELHdDQUF3QyxFQUFFLElBQUk7SUFDOUMsMENBQTBDLEVBQUUsSUFBSTtJQUNoRCw0REFBNEQsRUFBRSxJQUFJO0lBQ2xFLGtFQUFrRSxFQUFFLElBQUk7SUFDeEUsb0VBQW9FLEVBQUUsSUFBSTtJQUMxRSw4Q0FBOEMsRUFBRSxJQUFJO0lBQ3BELDJDQUEyQyxFQUFFLElBQUk7SUFDakQsbUZBQW1GLEVBQUUsSUFBSTtJQUN6RiwrQ0FBK0MsRUFBRSxJQUFJO0lBQ3JELCtDQUErQyxFQUFFLElBQUk7SUFDckQsb0RBQW9ELEVBQUUsSUFBSTtJQUMxRCw2REFBNkQsRUFBRSxJQUFJO0lBQ25FLG9DQUFvQyxFQUFFLElBQUk7SUFDMUMsa0NBQWtDLEVBQUUsSUFBSTtJQUN4Qyw2Q0FBNkMsRUFBRSxJQUFJO0lBQ25ELDJDQUEyQyxFQUFFLE1BQU07SUFDbkQsMkNBQTJDLEVBQUUsSUFBSTtJQUNqRCwyQ0FBMkMsRUFBRSxJQUFJO0lBQ2pELG9FQUFvRSxFQUFFLElBQUk7SUFDMUUsK0RBQStELEVBQUUsSUFBSTtDQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibm9kZSAuL3Byb2plbi5qc1wiLlxuXG4vKipcbiAqIEZlYXR1cmUgZmxhZ3MgYXMgb2YgdjIuMjc0LjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBcIkBhd3MtY2RrL2F3cy1zaWduZXI6c2lnbmluZ1Byb2ZpbGVOYW1lUGFzc2VkVG9DZm5cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzLXBhdHRlcm5zOnNlY0dyb3Vwc0Rpc2FibGVzSW1wbGljaXRPcGVuTGlzdGVuZXJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtbGFtYmRhOnJlY29nbml6ZUxheWVyVmVyc2lvblwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2NvcmU6Y2hlY2tTZWNyZXRVc2FnZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2NvcmU6dGFyZ2V0LXBhcnRpdGlvbnNcIjogW1xuICAgIFwiYXdzXCIsXG4gICAgXCJhd3MtY25cIlxuICBdLFxuICBcIkBhd3MtY2RrLWNvbnRhaW5lcnMvZWNzLXNlcnZpY2UtZXh0ZW5zaW9uczplbmFibGVEZWZhdWx0TG9nRHJpdmVyXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjp1bmlxdWVJbWRzdjJUZW1wbGF0ZU5hbWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzOmFybkZvcm1hdEluY2x1ZGVzQ2x1c3Rlck5hbWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtaWFtOm1pbmltaXplUG9saWNpZXNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOnZhbGlkYXRlU25hcHNob3RSZW1vdmFsUG9saWN5XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZTpjcm9zc0FjY291bnRLZXlBbGlhc1N0YWNrU2FmZVJlc291cmNlTmFtZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1zMzpjcmVhdGVEZWZhdWx0TG9nZ2luZ1BvbGljeVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1zbnMtc3Vic2NyaXB0aW9uczpyZXN0cmljdFNxc0Rlc2NyeXB0aW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6ZGlzYWJsZUNsb3VkV2F0Y2hSb2xlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvY29yZTplbmFibGVQYXJ0aXRpb25MaXRlcmFsc1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1ldmVudHM6ZXZlbnRzVGFyZ2V0UXVldWVTYW1lQWNjb3VudFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1lY3M6ZGlzYWJsZUV4cGxpY2l0RGVwbG95bWVudENvbnRyb2xsZXJGb3JDaXJjdWl0QnJlYWtlclwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1pYW06aW1wb3J0ZWRSb2xlU3RhY2tTYWZlRGVmYXVsdFBvbGljeU5hbWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtczM6c2VydmVyQWNjZXNzTG9nc1VzZUJ1Y2tldFBvbGljeVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1yb3V0ZTUzLXBhdHRlcnM6dXNlQ2VydGlmaWNhdGVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jdXN0b21yZXNvdXJjZXM6aW5zdGFsbExhdGVzdEF3c1Nka0RlZmF1bHRcIjogZmFsc2UsXG4gIFwiQGF3cy1jZGsvYXdzLXJkczpkYXRhYmFzZVByb3h5VW5pcXVlUmVzb3VyY2VOYW1lXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVkZXBsb3k6cmVtb3ZlQWxhcm1zRnJvbURlcGxveW1lbnRHcm91cFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1hcGlnYXRld2F5OmF1dGhvcml6ZXJDaGFuZ2VEZXBsb3ltZW50TG9naWNhbElkXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjpsYXVuY2hUZW1wbGF0ZURlZmF1bHRVc2VyRGF0YVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1zZWNyZXRzbWFuYWdlcjp1c2VBdHRhY2hlZFNlY3JldFJlc291cmNlUG9saWN5Rm9yU2VjcmV0VGFyZ2V0QXR0YWNobWVudHNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtcmVkc2hpZnQ6Y29sdW1uSWRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrczplbmFibGVFbXJTZXJ2aWNlUG9saWN5VjJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWMyOnJlc3RyaWN0RGVmYXVsdFNlY3VyaXR5R3JvdXBcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtYXBpZ2F0ZXdheTpyZXF1ZXN0VmFsaWRhdG9yVW5pcXVlSWRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mta21zOmFsaWFzTmFtZVJlZlwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1rbXM6YXBwbHlJbXBvcnRlZEFsaWFzUGVybWlzc2lvbnNUb1ByaW5jaXBhbFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1hdXRvc2NhbGluZzpnZW5lcmF0ZUxhdW5jaFRlbXBsYXRlSW5zdGVhZE9mTGF1bmNoQ29uZmlnXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvY29yZTppbmNsdWRlUHJlZml4SW5VbmlxdWVOYW1lR2VuZXJhdGlvblwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1lZnM6ZGVueUFub255bW91c0FjY2Vzc1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1vcGVuc2VhcmNoc2VydmljZTplbmFibGVPcGVuc2VhcmNoTXVsdGlBeldpdGhTdGFuZGJ5XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6dXNlTGF0ZXN0UnVudGltZVZlcnNpb25cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWZzOm1vdW50VGFyZ2V0T3JkZXJJbnNlbnNpdGl2ZUxvZ2ljYWxJZFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1yZHM6YXVyb3JhQ2x1c3RlckNoYW5nZVNjb3BlT2ZJbnN0YW5jZVBhcmFtZXRlckdyb3VwV2l0aEVhY2hQYXJhbWV0ZXJzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWFwcHN5bmM6dXNlQXJuRm9yU291cmNlQXBpQXNzb2NpYXRpb25JZGVudGlmaWVyXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXJkczpwcmV2ZW50UmVuZGVyaW5nRGVwcmVjYXRlZENyZWRlbnRpYWxzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zOnVzZU5ld0RlZmF1bHRCcmFuY2hGb3JDb2RlQ29tbWl0U291cmNlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uczpjaGFuZ2VMYW1iZGFQZXJtaXNzaW9uTG9naWNhbElkRm9yTGFtYmRhQWN0aW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZTpjcm9zc0FjY291bnRLZXlzRGVmYXVsdFZhbHVlVG9GYWxzZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1jb2RlcGlwZWxpbmU6ZGVmYXVsdFBpcGVsaW5lVHlwZVRvVjJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mta21zOnJlZHVjZUNyb3NzQWNjb3VudFJlZ2lvblBvbGljeVNjb3BlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVrczpub2RlZ3JvdXBOYW1lQXR0cmlidXRlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVrczp1c2VOYXRpdmVPaWRjUHJvdmlkZXJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWMyOmVic0RlZmF1bHRHcDNWb2x1bWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzOnJlbW92ZURlZmF1bHREZXBsb3ltZW50QWxhcm1cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jdXN0b20tcmVzb3VyY2VzOmxvZ0FwaVJlc3BvbnNlRGF0YVByb3BlcnR5VHJ1ZURlZmF1bHRcIjogZmFsc2UsXG4gIFwiQGF3cy1jZGsvYXdzLXMzOmtlZXBOb3RpZmljYXRpb25JbkltcG9ydGVkQnVja2V0XCI6IGZhbHNlLFxuICBcIkBhd3MtY2RrL2NvcmU6ZXhwbGljaXRTdGFja1RhZ3NcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzOnJlZHVjZUVjMkZhcmdhdGVDbG91ZFdhdGNoUGVybWlzc2lvbnNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZHluYW1vZGI6cmVzb3VyY2VQb2xpY3lQZXJSZXBsaWNhXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjplYzJTdW1USW1lb3V0RW5hYmxlZFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1hcHBzeW5jOmFwcFN5bmNHcmFwaFFMQVBJU2NvcGVMYW1iZGFQZXJtaXNzaW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXJkczpzZXRDb3JyZWN0VmFsdWVGb3JEYXRhYmFzZUluc3RhbmNlUmVhZFJlcGxpY2FJbnN0YW5jZVJlc291cmNlSWRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOmNmbkluY2x1ZGVSZWplY3RDb21wbGV4UmVzb3VyY2VVcGRhdGVDcmVhdGVQb2xpY3lJbnRyaW5zaWNzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6c2RrVjNFeGNsdWRlU21pdGh5UGFja2FnZXNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrczpmaXhSdW5FY3NUYXNrUG9saWN5XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjpiYXN0aW9uSG9zdFVzZUFtYXpvbkxpbnV4MjAyM0J5RGVmYXVsdFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1yb3V0ZTUzLXRhcmdldHM6dXNlclBvb2xEb21haW5OYW1lTWV0aG9kV2l0aG91dEN1c3RvbVJlc291cmNlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5nVjI6YWxiRHVhbHN0YWNrV2l0aG91dFB1YmxpY0lwdjRTZWN1cml0eUdyb3VwUnVsZXNEZWZhdWx0XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWlhbTpvaWRjUmVqZWN0VW5hdXRob3JpemVkQ29ubmVjdGlvbnNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOmVuYWJsZUFkZGl0aW9uYWxNZXRhZGF0YUNvbGxlY3Rpb25cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtbGFtYmRhOmNyZWF0ZU5ld1BvbGljaWVzV2l0aEFkZFRvUm9sZVBvbGljeVwiOiBmYWxzZSxcbiAgXCJAYXdzLWNkay9hd3MtczM6c2V0VW5pcXVlUmVwbGljYXRpb25Sb2xlTmFtZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1ldmVudHM6cmVxdWlyZUV2ZW50QnVzUG9saWN5U2lkXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvY29yZTphc3BlY3RQcmlvcml0aWVzTXV0YXRpbmdcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZHluYW1vZGI6cmV0YWluVGFibGVSZXBsaWNhXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXN0ZXBmdW5jdGlvbnM6dXNlRGlzdHJpYnV0ZWRNYXBSZXN1bHRXcml0ZXJWMlwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL3MzLW5vdGlmaWNhdGlvbnM6YWRkUzNUcnVzdEtleVBvbGljeUZvclNuc1N1YnNjcmlwdGlvbnNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWMyOnJlcXVpcmVQcml2YXRlU3VibmV0c0ZvckVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtczM6cHVibGljQWNjZXNzQmxvY2tlZEJ5RGVmYXVsdFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1sYW1iZGE6dXNlQ2RrTWFuYWdlZExvZ0dyb3VwXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjI6bmV0d29ya0xvYWRCYWxhbmNlcldpdGhTZWN1cml0eUdyb3VwQnlEZWZhdWx0XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjcy1wYXR0ZXJuczp1bmlxdWVUYXJnZXRHcm91cElkXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXJvdXRlNTMtcGF0dGVybnM6dXNlRGlzdHJpYnV0aW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQ6ZGVmYXVsdEZ1bmN0aW9uUnVudGltZVYyXzBcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mjp1c2VQb3N0UXVhbnR1bVRsc1BvbGljeVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1iYXRjaDpkZWZhdWx0VG9BTDIwMjNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWtzOmRlZmF1bHRUb0FMMjAyM1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2NvcmU6YW5ub3RhdGlvbnNJblZhbGlkYXRpb25SZXBvcnRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOmRlZmF1bHRDcm9zc1N0YWNrUmVmZXJlbmNlc1wiOiBcIndlYWtcIixcbiAgXCJAYXdzLWNkay9jb3JlOnZhbGlkYXRlQWdhaW5zdERlZmF1bHRSdWxlc1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1lY3M6cmVtb3ZlRW1wdHlMb2FkQmFsYW5jZXJzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQ6ZGVmYXVsdFZpZXdlclByb3RvY29sUG9saWN5UmVkaXJlY3RUb0h0dHBzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6bG9nR3JvdXBEZXN0aW5hdGlvbkFybldpdGhvdXRXaWxkY2FyZFwiOiB0cnVlXG59OyJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy12Mi5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3NjZGsvcHJpdmF0ZS9mZWF0dXJlLWZsYWdzLXYyLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtRkFBbUY7O0FBRW5GOztHQUVHO0FBQ0gsa0JBQWU7SUFDYixtREFBbUQsRUFBRSxJQUFJO0lBQ3pELGlFQUFpRSxFQUFFLElBQUk7SUFDdkUsMkNBQTJDLEVBQUUsSUFBSTtJQUNqRCxnQ0FBZ0MsRUFBRSxJQUFJO0lBQ3RDLGlDQUFpQyxFQUFFO1FBQ2pDLEtBQUs7UUFDTCxRQUFRO0tBQ1Q7SUFDRCxtRUFBbUUsRUFBRSxJQUFJO0lBQ3pFLDJDQUEyQyxFQUFFLElBQUk7SUFDakQsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCxtQ0FBbUMsRUFBRSxJQUFJO0lBQ3pDLDZDQUE2QyxFQUFFLElBQUk7SUFDbkQscUVBQXFFLEVBQUUsSUFBSTtJQUMzRSw0Q0FBNEMsRUFBRSxJQUFJO0lBQ2xELHVEQUF1RCxFQUFFLElBQUk7SUFDN0QsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCx1Q0FBdUMsRUFBRSxJQUFJO0lBQzdDLGtEQUFrRCxFQUFFLElBQUk7SUFDeEQsdUVBQXVFLEVBQUUsSUFBSTtJQUM3RSx5REFBeUQsRUFBRSxJQUFJO0lBQy9ELGlEQUFpRCxFQUFFLElBQUk7SUFDdkQsNkNBQTZDLEVBQUUsSUFBSTtJQUNuRCxxREFBcUQsRUFBRSxLQUFLO0lBQzVELGtEQUFrRCxFQUFFLElBQUk7SUFDeEQseURBQXlELEVBQUUsSUFBSTtJQUMvRCw2REFBNkQsRUFBRSxJQUFJO0lBQ25FLGdEQUFnRCxFQUFFLElBQUk7SUFDdEQsdUZBQXVGLEVBQUUsSUFBSTtJQUM3RixnQ0FBZ0MsRUFBRSxJQUFJO0lBQ3RDLDJEQUEyRCxFQUFFLElBQUk7SUFDakUsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCxrREFBa0QsRUFBRSxJQUFJO0lBQ3hELCtCQUErQixFQUFFLElBQUk7SUFDckMsMkRBQTJELEVBQUUsSUFBSTtJQUNqRSxzRUFBc0UsRUFBRSxJQUFJO0lBQzVFLG1EQUFtRCxFQUFFLElBQUk7SUFDekQsc0NBQXNDLEVBQUUsSUFBSTtJQUM1QyxtRUFBbUUsRUFBRSxJQUFJO0lBQ3pFLG9EQUFvRCxFQUFFLElBQUk7SUFDMUQsdURBQXVELEVBQUUsSUFBSTtJQUM3RCxxRkFBcUYsRUFBRSxJQUFJO0lBQzNGLDhEQUE4RCxFQUFFLElBQUk7SUFDcEUsd0RBQXdELEVBQUUsSUFBSTtJQUM5RCwwRUFBMEUsRUFBRSxJQUFJO0lBQ2hGLGdGQUFnRixFQUFFLElBQUk7SUFDdEYsK0RBQStELEVBQUUsSUFBSTtJQUNyRSxtREFBbUQsRUFBRSxJQUFJO0lBQ3pELHNEQUFzRCxFQUFFLElBQUk7SUFDNUQseUNBQXlDLEVBQUUsSUFBSTtJQUMvQyx3Q0FBd0MsRUFBRSxJQUFJO0lBQzlDLHNDQUFzQyxFQUFFLElBQUk7SUFDNUMsK0NBQStDLEVBQUUsSUFBSTtJQUNyRCxpRUFBaUUsRUFBRSxLQUFLO0lBQ3hFLGtEQUFrRCxFQUFFLEtBQUs7SUFDekQsaUNBQWlDLEVBQUUsSUFBSTtJQUN2Qyx3REFBd0QsRUFBRSxJQUFJO0lBQzlELGdEQUFnRCxFQUFFLElBQUk7SUFDdEQsdUNBQXVDLEVBQUUsSUFBSTtJQUM3Qyw2REFBNkQsRUFBRSxJQUFJO0lBQ25FLGtGQUFrRixFQUFFLElBQUk7SUFDeEYsMkVBQTJFLEVBQUUsSUFBSTtJQUNqRix1REFBdUQsRUFBRSxJQUFJO0lBQzdELHNEQUFzRCxFQUFFLElBQUk7SUFDNUQseURBQXlELEVBQUUsSUFBSTtJQUMvRCw0RUFBNEUsRUFBRSxJQUFJO0lBQ2xGLDRGQUE0RixFQUFFLElBQUk7SUFDbEcsb0RBQW9ELEVBQUUsSUFBSTtJQUMxRCxrREFBa0QsRUFBRSxJQUFJO0lBQ3hELDBEQUEwRCxFQUFFLEtBQUs7SUFDakUsOENBQThDLEVBQUUsSUFBSTtJQUNwRCw4Q0FBOEMsRUFBRSxJQUFJO0lBQ3BELHdDQUF3QyxFQUFFLElBQUk7SUFDOUMsMENBQTBDLEVBQUUsSUFBSTtJQUNoRCw0REFBNEQsRUFBRSxJQUFJO0lBQ2xFLGtFQUFrRSxFQUFFLElBQUk7SUFDeEUsb0VBQW9FLEVBQUUsSUFBSTtJQUMxRSw4Q0FBOEMsRUFBRSxJQUFJO0lBQ3BELDJDQUEyQyxFQUFFLElBQUk7SUFDakQsbUZBQW1GLEVBQUUsSUFBSTtJQUN6RiwrQ0FBK0MsRUFBRSxJQUFJO0lBQ3JELCtDQUErQyxFQUFFLElBQUk7SUFDckQsb0RBQW9ELEVBQUUsSUFBSTtJQUMxRCw2REFBNkQsRUFBRSxJQUFJO0lBQ25FLG9DQUFvQyxFQUFFLElBQUk7SUFDMUMsa0NBQWtDLEVBQUUsSUFBSTtJQUN4Qyw2Q0FBNkMsRUFBRSxJQUFJO0lBQ25ELDJDQUEyQyxFQUFFLE1BQU07SUFDbkQsMkNBQTJDLEVBQUUsSUFBSTtJQUNqRCwyQ0FBMkMsRUFBRSxJQUFJO0lBQ2pELG9FQUFvRSxFQUFFLElBQUk7SUFDMUUsK0RBQStELEVBQUUsSUFBSTtDQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibm9kZSAuL3Byb2plbi5qc1wiLlxuXG4vKipcbiAqIEZlYXR1cmUgZmxhZ3MgYXMgb2YgdjIuMjc1LjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBcIkBhd3MtY2RrL2F3cy1zaWduZXI6c2lnbmluZ1Byb2ZpbGVOYW1lUGFzc2VkVG9DZm5cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzLXBhdHRlcm5zOnNlY0dyb3Vwc0Rpc2FibGVzSW1wbGljaXRPcGVuTGlzdGVuZXJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtbGFtYmRhOnJlY29nbml6ZUxheWVyVmVyc2lvblwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2NvcmU6Y2hlY2tTZWNyZXRVc2FnZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2NvcmU6dGFyZ2V0LXBhcnRpdGlvbnNcIjogW1xuICAgIFwiYXdzXCIsXG4gICAgXCJhd3MtY25cIlxuICBdLFxuICBcIkBhd3MtY2RrLWNvbnRhaW5lcnMvZWNzLXNlcnZpY2UtZXh0ZW5zaW9uczplbmFibGVEZWZhdWx0TG9nRHJpdmVyXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjp1bmlxdWVJbWRzdjJUZW1wbGF0ZU5hbWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzOmFybkZvcm1hdEluY2x1ZGVzQ2x1c3Rlck5hbWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtaWFtOm1pbmltaXplUG9saWNpZXNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOnZhbGlkYXRlU25hcHNob3RSZW1vdmFsUG9saWN5XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZTpjcm9zc0FjY291bnRLZXlBbGlhc1N0YWNrU2FmZVJlc291cmNlTmFtZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1zMzpjcmVhdGVEZWZhdWx0TG9nZ2luZ1BvbGljeVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1zbnMtc3Vic2NyaXB0aW9uczpyZXN0cmljdFNxc0Rlc2NyeXB0aW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6ZGlzYWJsZUNsb3VkV2F0Y2hSb2xlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvY29yZTplbmFibGVQYXJ0aXRpb25MaXRlcmFsc1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1ldmVudHM6ZXZlbnRzVGFyZ2V0UXVldWVTYW1lQWNjb3VudFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1lY3M6ZGlzYWJsZUV4cGxpY2l0RGVwbG95bWVudENvbnRyb2xsZXJGb3JDaXJjdWl0QnJlYWtlclwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1pYW06aW1wb3J0ZWRSb2xlU3RhY2tTYWZlRGVmYXVsdFBvbGljeU5hbWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtczM6c2VydmVyQWNjZXNzTG9nc1VzZUJ1Y2tldFBvbGljeVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1yb3V0ZTUzLXBhdHRlcnM6dXNlQ2VydGlmaWNhdGVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jdXN0b21yZXNvdXJjZXM6aW5zdGFsbExhdGVzdEF3c1Nka0RlZmF1bHRcIjogZmFsc2UsXG4gIFwiQGF3cy1jZGsvYXdzLXJkczpkYXRhYmFzZVByb3h5VW5pcXVlUmVzb3VyY2VOYW1lXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVkZXBsb3k6cmVtb3ZlQWxhcm1zRnJvbURlcGxveW1lbnRHcm91cFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1hcGlnYXRld2F5OmF1dGhvcml6ZXJDaGFuZ2VEZXBsb3ltZW50TG9naWNhbElkXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjpsYXVuY2hUZW1wbGF0ZURlZmF1bHRVc2VyRGF0YVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1zZWNyZXRzbWFuYWdlcjp1c2VBdHRhY2hlZFNlY3JldFJlc291cmNlUG9saWN5Rm9yU2VjcmV0VGFyZ2V0QXR0YWNobWVudHNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtcmVkc2hpZnQ6Y29sdW1uSWRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrczplbmFibGVFbXJTZXJ2aWNlUG9saWN5VjJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWMyOnJlc3RyaWN0RGVmYXVsdFNlY3VyaXR5R3JvdXBcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtYXBpZ2F0ZXdheTpyZXF1ZXN0VmFsaWRhdG9yVW5pcXVlSWRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mta21zOmFsaWFzTmFtZVJlZlwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1rbXM6YXBwbHlJbXBvcnRlZEFsaWFzUGVybWlzc2lvbnNUb1ByaW5jaXBhbFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1hdXRvc2NhbGluZzpnZW5lcmF0ZUxhdW5jaFRlbXBsYXRlSW5zdGVhZE9mTGF1bmNoQ29uZmlnXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvY29yZTppbmNsdWRlUHJlZml4SW5VbmlxdWVOYW1lR2VuZXJhdGlvblwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1lZnM6ZGVueUFub255bW91c0FjY2Vzc1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1vcGVuc2VhcmNoc2VydmljZTplbmFibGVPcGVuc2VhcmNoTXVsdGlBeldpdGhTdGFuZGJ5XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6dXNlTGF0ZXN0UnVudGltZVZlcnNpb25cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWZzOm1vdW50VGFyZ2V0T3JkZXJJbnNlbnNpdGl2ZUxvZ2ljYWxJZFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1yZHM6YXVyb3JhQ2x1c3RlckNoYW5nZVNjb3BlT2ZJbnN0YW5jZVBhcmFtZXRlckdyb3VwV2l0aEVhY2hQYXJhbWV0ZXJzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWFwcHN5bmM6dXNlQXJuRm9yU291cmNlQXBpQXNzb2NpYXRpb25JZGVudGlmaWVyXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXJkczpwcmV2ZW50UmVuZGVyaW5nRGVwcmVjYXRlZENyZWRlbnRpYWxzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zOnVzZU5ld0RlZmF1bHRCcmFuY2hGb3JDb2RlQ29tbWl0U291cmNlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uczpjaGFuZ2VMYW1iZGFQZXJtaXNzaW9uTG9naWNhbElkRm9yTGFtYmRhQWN0aW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZTpjcm9zc0FjY291bnRLZXlzRGVmYXVsdFZhbHVlVG9GYWxzZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1jb2RlcGlwZWxpbmU6ZGVmYXVsdFBpcGVsaW5lVHlwZVRvVjJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mta21zOnJlZHVjZUNyb3NzQWNjb3VudFJlZ2lvblBvbGljeVNjb3BlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVrczpub2RlZ3JvdXBOYW1lQXR0cmlidXRlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVrczp1c2VOYXRpdmVPaWRjUHJvdmlkZXJcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWMyOmVic0RlZmF1bHRHcDNWb2x1bWVcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzOnJlbW92ZURlZmF1bHREZXBsb3ltZW50QWxhcm1cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jdXN0b20tcmVzb3VyY2VzOmxvZ0FwaVJlc3BvbnNlRGF0YVByb3BlcnR5VHJ1ZURlZmF1bHRcIjogZmFsc2UsXG4gIFwiQGF3cy1jZGsvYXdzLXMzOmtlZXBOb3RpZmljYXRpb25JbkltcG9ydGVkQnVja2V0XCI6IGZhbHNlLFxuICBcIkBhd3MtY2RrL2NvcmU6ZXhwbGljaXRTdGFja1RhZ3NcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWNzOnJlZHVjZUVjMkZhcmdhdGVDbG91ZFdhdGNoUGVybWlzc2lvbnNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZHluYW1vZGI6cmVzb3VyY2VQb2xpY3lQZXJSZXBsaWNhXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjplYzJTdW1USW1lb3V0RW5hYmxlZFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1hcHBzeW5jOmFwcFN5bmNHcmFwaFFMQVBJU2NvcGVMYW1iZGFQZXJtaXNzaW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXJkczpzZXRDb3JyZWN0VmFsdWVGb3JEYXRhYmFzZUluc3RhbmNlUmVhZFJlcGxpY2FJbnN0YW5jZVJlc291cmNlSWRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOmNmbkluY2x1ZGVSZWplY3RDb21wbGV4UmVzb3VyY2VVcGRhdGVDcmVhdGVQb2xpY3lJbnRyaW5zaWNzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6c2RrVjNFeGNsdWRlU21pdGh5UGFja2FnZXNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrczpmaXhSdW5FY3NUYXNrUG9saWN5XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjMjpiYXN0aW9uSG9zdFVzZUFtYXpvbkxpbnV4MjAyM0J5RGVmYXVsdFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1yb3V0ZTUzLXRhcmdldHM6dXNlclBvb2xEb21haW5OYW1lTWV0aG9kV2l0aG91dEN1c3RvbVJlc291cmNlXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5nVjI6YWxiRHVhbHN0YWNrV2l0aG91dFB1YmxpY0lwdjRTZWN1cml0eUdyb3VwUnVsZXNEZWZhdWx0XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWlhbTpvaWRjUmVqZWN0VW5hdXRob3JpemVkQ29ubmVjdGlvbnNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOmVuYWJsZUFkZGl0aW9uYWxNZXRhZGF0YUNvbGxlY3Rpb25cIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtbGFtYmRhOmNyZWF0ZU5ld1BvbGljaWVzV2l0aEFkZFRvUm9sZVBvbGljeVwiOiBmYWxzZSxcbiAgXCJAYXdzLWNkay9hd3MtczM6c2V0VW5pcXVlUmVwbGljYXRpb25Sb2xlTmFtZVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1ldmVudHM6cmVxdWlyZUV2ZW50QnVzUG9saWN5U2lkXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvY29yZTphc3BlY3RQcmlvcml0aWVzTXV0YXRpbmdcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZHluYW1vZGI6cmV0YWluVGFibGVSZXBsaWNhXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXN0ZXBmdW5jdGlvbnM6dXNlRGlzdHJpYnV0ZWRNYXBSZXN1bHRXcml0ZXJWMlwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL3MzLW5vdGlmaWNhdGlvbnM6YWRkUzNUcnVzdEtleVBvbGljeUZvclNuc1N1YnNjcmlwdGlvbnNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWMyOnJlcXVpcmVQcml2YXRlU3VibmV0c0ZvckVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtczM6cHVibGljQWNjZXNzQmxvY2tlZEJ5RGVmYXVsdFwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1sYW1iZGE6dXNlQ2RrTWFuYWdlZExvZ0dyb3VwXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjI6bmV0d29ya0xvYWRCYWxhbmNlcldpdGhTZWN1cml0eUdyb3VwQnlEZWZhdWx0XCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWVjcy1wYXR0ZXJuczp1bmlxdWVUYXJnZXRHcm91cElkXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLXJvdXRlNTMtcGF0dGVybnM6dXNlRGlzdHJpYnV0aW9uXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQ6ZGVmYXVsdEZ1bmN0aW9uUnVudGltZVYyXzBcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mjp1c2VQb3N0UXVhbnR1bVRsc1BvbGljeVwiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1iYXRjaDpkZWZhdWx0VG9BTDIwMjNcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9hd3MtZWtzOmRlZmF1bHRUb0FMMjAyM1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2NvcmU6YW5ub3RhdGlvbnNJblZhbGlkYXRpb25SZXBvcnRcIjogdHJ1ZSxcbiAgXCJAYXdzLWNkay9jb3JlOmRlZmF1bHRDcm9zc1N0YWNrUmVmZXJlbmNlc1wiOiBcIndlYWtcIixcbiAgXCJAYXdzLWNkay9jb3JlOnZhbGlkYXRlQWdhaW5zdERlZmF1bHRSdWxlc1wiOiB0cnVlLFxuICBcIkBhd3MtY2RrL2F3cy1lY3M6cmVtb3ZlRW1wdHlMb2FkQmFsYW5jZXJzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQ6ZGVmYXVsdFZpZXdlclByb3RvY29sUG9saWN5UmVkaXJlY3RUb0h0dHBzXCI6IHRydWUsXG4gIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6bG9nR3JvdXBEZXN0aW5hdGlvbkFybldpdGhvdXRXaWxkY2FyZFwiOiB0cnVlXG59OyJdfQ==
@@ -48,7 +48,7 @@ const consts_1 = require("./private/consts");
48
48
  const name_1 = require("../util/name");
49
49
  const path_1 = require("../util/path");
50
50
  class BuildWorkflow extends component_1.Component {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.build.BuildWorkflow", version: "0.104.19" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.build.BuildWorkflow", version: "0.104.21" };
52
52
  /**
53
53
  * Name of generated github workflow
54
54
  */
@@ -43,7 +43,7 @@ const component_1 = require("../component");
43
43
  * Base class for auto-discovering and creating project subcomponents.
44
44
  */
45
45
  class AutoDiscoverBase extends component_1.Component {
46
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.AutoDiscoverBase", version: "0.104.19" };
46
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.AutoDiscoverBase", version: "0.104.21" };
47
47
  /**
48
48
  * Auto-discovered entry points with paths relative to the project
49
49
  * directory.
@@ -62,7 +62,7 @@ exports.AutoDiscoverBase = AutoDiscoverBase;
62
62
  * Base class for locating integration tests in the project's test tree.
63
63
  */
64
64
  class IntegrationTestAutoDiscoverBase extends AutoDiscoverBase {
65
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestAutoDiscoverBase", version: "0.104.19" };
65
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestAutoDiscoverBase", version: "0.104.21" };
66
66
  constructor(project, options) {
67
67
  super(project, {
68
68
  extension: internal_1.TYPESCRIPT_INTEG_EXT,
@@ -7,7 +7,7 @@ const jsii_project_1 = require("./jsii-project");
7
7
  * A multi-language library for CDK constructs.
8
8
  */
9
9
  class ConstructLibrary extends jsii_project_1.JsiiProject {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.ConstructLibrary", version: "0.104.19" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.ConstructLibrary", version: "0.104.21" };
11
11
  constructor(options) {
12
12
  super(options);
13
13
  this.addKeywords("cdk"); // publish to the catalog
@@ -7,7 +7,7 @@ const posix_1 = require("path/posix");
7
7
  const internal_1 = require("./internal");
8
8
  const component_1 = require("../component");
9
9
  class IntegrationTestBase extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestBase", version: "0.104.19" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.IntegrationTestBase", version: "0.104.21" };
11
11
  /**
12
12
  * Deploy the integration test and update the snapshot upon success.
13
13
  */
@@ -41,6 +41,10 @@ export interface JsiiBuildOptions {
41
41
  readonly publishToPypi?: JsiiPythonTarget;
42
42
  /**
43
43
  * Publish Go bindings to a git repository.
44
+ *
45
+ * A separate repository is recommended. If `moduleName` refers to the source
46
+ * repository, set `publishToSourceRepository` to `true`.
47
+ *
44
48
  * @default - no publishing
45
49
  */
46
50
  readonly publishToGo?: JsiiGoTarget;
@@ -51,7 +51,7 @@ var ValidateTsconfig;
51
51
  * }));
52
52
  */
53
53
  class JsiiBuild {
54
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiBuild", version: "0.104.19" };
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiBuild", version: "0.104.21" };
55
55
  options;
56
56
  extraJobOptions;
57
57
  constructor(options = {}, extraJobOptions) {
@@ -210,6 +210,9 @@ class JsiiBuild {
210
210
  packageName: golang.packageName,
211
211
  versionSuffix: golang.versionSuffix,
212
212
  };
213
+ if (golang.publishToSourceRepository) {
214
+ project.root.gitignore.include("**/jsii/*.tgz");
215
+ }
213
216
  const task = this.addPackagingTask(project, packageAllTask, "go");
214
217
  this.addTargetToBuild(project, task, "go", extraJobOptions);
215
218
  this.addTargetToRelease(project, task, "go", golang);
@@ -376,4 +379,4 @@ const publishTo = {
376
379
  dotnet: "publishToNuget",
377
380
  go: "publishToGo",
378
381
  };
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvanNpaS1idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EscUNBQTBDO0FBQzFDLCtDQUEyQztBQU8zQyxvREFHaUM7QUFDakMsMkRBQXFEO0FBQ3JELDZEQUF5RDtBQUV6RCwrREFBMEQ7QUFDMUQsOENBQW1EO0FBRW5ELDZDQUFpRDtBQU1qRCxzREFBMEQ7QUFDMUQsOENBQWtEO0FBRWxELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBQ3BDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsSUFBWSxnQkFvQlg7QUFwQkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCxxQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDJDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsdUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCwrQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQXBCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQW9CM0I7QUFxTEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsU0FBUzs7SUFDSCxPQUFPLENBQW1CO0lBQzFCLGVBQWUsQ0FBZTtJQUUvQyxZQUNFLFVBQTRCLEVBQUUsRUFDOUIsZUFBeUM7UUFFekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQWlCLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sU0FBUyxZQUFZLDhCQUFpQixDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxPQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVC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R0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixJQUFJLHNCQUFzQixFQUFFO1NBQ2xFLEVBQ0Q7WUFDRSxJQUFJLEVBQUUsVUFBVSxNQUFNLFdBQVc7WUFDakMsR0FBRyxFQUFFLE1BQU0sT0FBTyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDNUQsRUFDRDtZQUNFLElBQUksRUFBRSxXQUFXLE1BQU0sV0FBVztZQUNsQyxHQUFHLEVBQUUsTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtTQUNqRixDQUNGLENBQUM7UUFFRixPQUFPO1lBQ0wsWUFBWSxFQUFFLHVCQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3BDLGNBQWM7WUFDZCxjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7O0FBeFpILDhCQXlaQztBQVlELE1BQU0sU0FBUyxHQUFvQjtJQUNqQyxFQUFFLEVBQUUsY0FBYztJQUNsQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEIsRUFBRSxFQUFFLGFBQWE7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCwgSU1peGluIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHR5cGUgeyBKc2lpUGFjbWFrVGFyZ2V0IH0gZnJvbSBcIi4vY29uc3RzXCI7XG5pbXBvcnQgeyBKU0lJX1RPT0xDSEFJTiB9IGZyb20gXCIuL2NvbnN0c1wiO1xuaW1wb3J0IHsgSnNpaURvY2dlbiB9IGZyb20gXCIuL2pzaWktZG9jZ2VuXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEpzaWlEb3ROZXRUYXJnZXQsXG4gIEpzaWlHb1RhcmdldCxcbiAgSnNpaUphdmFUYXJnZXQsXG4gIEpzaWlQeXRob25UYXJnZXQsXG59IGZyb20gXCIuL2pzaWktcHJvamVjdFwiO1xuaW1wb3J0IHtcbiAgUFVMTF9SRVFVRVNUX1JFUE9TSVRPUlksXG4gIFBVTExfUkVRVUVTVF9TSEEsXG59IGZyb20gXCIuLi9idWlsZC9wcml2YXRlL2NvbnN0c1wiO1xuaW1wb3J0IHsgQWN0aW9uUmVmcyB9IGZyb20gXCIuLi9naXRodWIvYWN0aW9ucy5jb25zdFwiO1xuaW1wb3J0IHsgV29ya2Zsb3dTdGVwcyB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3ctc3RlcHNcIjtcbmltcG9ydCB0eXBlIHsgSm9iLCBTdGVwLCBUb29scyB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVzY3JpcHRDb25maWcgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgaXNZYXJuQmVycnkgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC91dGlsXCI7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1vblB1Ymxpc2hPcHRpb25zLFxuICBOcG1QdWJsaXNoT3B0aW9ucyxcbiAgUHVibGlzaGVyLFxufSBmcm9tIFwiLi4vcmVsZWFzZVwiO1xuaW1wb3J0IHsgZmlsdGVyZWRSdW5zT25PcHRpb25zIH0gZnJvbSBcIi4uL3J1bm5lci1vcHRpb25zXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdCB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5cbmNvbnN0IFJFUE9fVEVNUF9ESVJFQ1RPUlkgPSBcIi5yZXBvXCI7XG5jb25zdCBCVUlMRF9BUlRJRkFDVF9PTERfRElSID0gXCJkaXN0Lm9sZFwiO1xuXG4vKipcbiAqIExldmVsIG9mIHRzY29uZmlnIHZhbGlkYXRpb24ganNpaSBzaG91bGQgcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gVmFsaWRhdGVUc2NvbmZpZyB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWdhaW5zdCBhIHN0cmljdCBydWxlIHNldCBkZXNpZ25lZCBmb3Igd2lkZXNwcmVhZCBzdXBwb3J0IGFuZCBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG5cbiAgLyoqXG4gICAqIEVuZm9yY2VzIGEgdHNjb25maWcgYXMgaWYgaXQgd2VyZSBnZW5lcmF0ZWQgYnkganNpaS5cbiAgICovXG4gIEdFTkVSQVRFRCA9IFwiZ2VuZXJhdGVkXCIsXG5cbiAgLyoqXG4gICAqIE9ubHkgcmVqZWN0IG9wdGlvbnMga25vd24gdG8gYmUgaW5jb21wYXRpYmxlIHdpdGgganNpaS5cbiAgICovXG4gIE1JTklNQUwgPSBcIm1pbmltYWxcIixcblxuICAvKipcbiAgICogRGlzYWJsZXMgYWxsIGNvbmZpZyB2YWxpZGF0aW9uLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIE9GRiA9IFwib2ZmXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEpzaWlCdWlsZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaUJ1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIG1hdmVuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvTWF2ZW4/OiBKc2lpSmF2YVRhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBweXBpXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvUHlwaT86IEpzaWlQeXRob25UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggR28gYmluZGluZ3MgdG8gYSBnaXQgcmVwb3NpdG9yeS5cbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9Hbz86IEpzaWlHb1RhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBOdUdldFxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb051Z2V0PzogSnNpaURvdE5ldFRhcmdldDtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBydW4gQVBJIGNvbXBhdGliaWxpdHkgdGVzdCBhZ2FpbnN0IHRoZSBsYXRlc3QgdmVyc2lvbiBwdWJsaXNoZWQgdG8gbnBtIGFmdGVyIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiAtIFlvdSBjYW4gbWFudWFsbHkgcnVuIGNvbXBhdGliaWxpdHkgdGVzdHMgdXNpbmcgYHlhcm4gY29tcGF0YCBpZiB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQuXG4gICAqIC0gWW91IGNhbiBpZ25vcmUgY29tcGF0aWJpbGl0eSBmYWlsdXJlcyBieSBhZGRpbmcgbGluZXMgdG8gYSBcIi5jb21wYXRpZ25vcmVcIiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaWdub3JlIGZpbGUgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5jb21wYXRpZ25vcmVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0SWdub3JlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLiBGaWxlcyBtYXRjaGluZyBhbnkgb2YgdGhvc2UgcGF0dGVybnMgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBqc2lpIHdpbGwgaW5jbHVkZSBhbGwgKi50cyBmaWxlcyAoZXhjZXB0IC5kLnRzIGZpbGVzKSBpbiB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBpbnB1dC5cbiAgICogVGhpcyBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGV4YW1wbGUgd2hlbiB0aGUgcGFja2FnZSdzIGJ1aWxkIG9yIHRlc3QgcHJvY2VkdXJlIGdlbmVyYXRlcyAudHMgZmlsZXNcbiAgICogdGhhdCBjYW5ub3QgYmUgY29tcGlsZWQgd2l0aCBqc2lpJ3MgY29tcGlsZXIgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlVHlwZXNjcmlwdD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWxlIHBhdGggZm9yIGdlbmVyYXRlZCBkb2NzLlxuICAgKiBAZGVmYXVsdCBcIkFQSS5tZFwiXG4gICAqL1xuICByZWFkb25seSBkb2NnZW5GaWxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1pdCBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgYXNzZW1ibHlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBqc2lpIGNvbXBpbGVyIHRvIHVzZS5cbiAgICpcbiAgICogU2V0IHRvIFwiKlwiIGlmIHlvdSB3YW50IHRvIG1hbnVhbGx5IG1hbmFnZSB0aGUgdmVyc2lvbiBvZiBqc2lpIGluIHlvdXJcbiAgICogcHJvamVjdCBieSBtYW5hZ2luZyB1cGRhdGVzIHRvIGBwYWNrYWdlLmpzb25gIG9uIHlvdXIgb3duLlxuICAgKlxuICAgKiBOT1RFOiBUaGUganNpaSBjb21waWxlciByZWxlYXNlcyBzaW5jZSA1LjAuMCBhcmUgbm90IHNlbWFudGljYWxseSB2ZXJzaW9uZWRcbiAgICogYW5kIHNob3VsZCByZW1haW4gb24gdGhlIHNhbWUgbWlub3IsIHNvIHdlIHJlY29tbWVuZCB1c2luZyBhIGB+YCBkZXBlbmRlbmN5XG4gICAqIChlLmcuIGB+NS4wLjBgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ+NS45LjBcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFiaWxpdHkgb2YgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwic3RhYmxlXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWJpbGl0eT86IHN0cmluZztcblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBNYXJrRG93biBmaWxlIGRlc2NyaWJpbmcgdGhlIGpzaWkgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkb2NnZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1Ymxpc2ggdG8gbnBtLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlVG9OcG0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIG5wbS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5wbVRydXN0ZWRQdWJsaXNoaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2FpdCB1bnRpbCB0aGUgcHVibGlzaGVkIHBhY2thZ2UgdmVyc2lvbiBpcyBhdmFpbGFibGUgZnJvbSB0aGUgbnBtIHJlZ2lzdHJ5IGJlZm9yZSB0aGUgcHVibGlzaCBqb2IgY29tcGxldGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVmVyaWZ5UHVibGlzaGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSG93IGxvbmcgdG8gd2FpdCwgaW4gc2Vjb25kcywgZm9yIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB2ZXJzaW9uIHRvIGJlIGF2YWlsYWJsZS5cbiAgICpcbiAgICogUmVxdWlyZXMgYG5wbVZlcmlmeVB1Ymxpc2hlZGAgdG8gYmUgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzYwMFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVmVyaWZ5UHVibGlzaGVkVGltZW91dFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHB1Ymxpc2hpbmcgbnBtIHBhY2thZ2UgdG8gQVdTIENvZGVBcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVBcnRpZmFjdE9wdGlvbnM/OiBOcG1QdWJsaXNoT3B0aW9uc1tcImNvZGVBcnRpZmFjdE9wdGlvbnNcIl07XG5cbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggb2YgdGhlIHBhY2thZ2Ugd2l0aGluIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgaW4gbW9ub3JlcG8gc2V0dXBzIHdoZXJlIHRoZSBwYWNrYWdlIGlzIG5vdCBhdCB0aGUgcm9vdC5cbiAgICogUGFja2FnaW5nIHN0ZXBzIHdpbGwgZXh0cmFjdCBidWlsZCBhcnRpZmFjdHMgaW50byB0aGlzIHN1YmRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCIuXCIgLSByb290IG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBub2RlIHZlcnNpb24gdG8gdXNlIGluIHBhY2thZ2luZyB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibHRzLypcIlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOb2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBzdGVwcyB0byBydW4gYmVmb3JlIHBhY2thZ2luZyBpbiB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzPzogQXJyYXk8U3RlcD47XG5cbiAgLyoqXG4gICAqIExldmVsIG9mIHRzY29uZmlnIHZhbGlkYXRpb24ganNpaSBzaG91bGQgcGVyZm9ybSBvbiB0aGUgdXNlci1wcm92aWRlZCB0c2NvbmZpZy5cbiAgICpcbiAgICogT25seSByZWxldmFudCB3aGVuIHRoZSBwcm9qZWN0IHN5bnRoZXNpemVzIGl0cyBvd24gdHNjb25maWdcbiAgICogKGkuZS4gYGRpc2FibGVUc2NvbmZpZ2AgaXMgbm90IHNldCBvbiB0aGUgVHlwZVNjcmlwdFByb2plY3QpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vYXdzLmdpdGh1Yi5pby9qc2lpL3VzZXItZ3VpZGVzL2xpYi1hdXRob3IvY29uZmlndXJhdGlvbi8jdmFsaWRhdGV0c2NvbmZpZ1xuICAgKiBAZGVmYXVsdCBWYWxpZGF0ZVRzY29uZmlnLlNUUklDVFxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVUc2NvbmZpZz86IFZhbGlkYXRlVHNjb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBUeXBlc2NyaXB0Q29uZmlnIHRoYXQganNpaSBjb21waWxlcyBhZ2FpbnN0LlxuICAgKlxuICAgKiBQcm92aWRlIGEgZGVkaWNhdGVkIGNvbmZpZyAoZS5nLiBvbmUgbmFtZWQgYHRzY29uZmlnLmpzaWkuanNvbmApIHRvIGtlZXBcbiAgICoganNpaSBjb21waWxhdGlvbiBzZXBhcmF0ZSBmcm9tIHRoZSBwcm9qZWN0J3MgZWRpdG9yLWZhY2luZyBgdHNjb25maWcuanNvbmAuXG4gICAqIGpzaWkgcmVxdWlyZXMgYSBjb21tZW50LWZyZWUsIHN0cmljdC12YWxpZCBjb25maWcsIHNvIGBKc2lpQnVpbGRgIGRpc2FibGVzXG4gICAqIGNvbW1lbnRzIG9uIHdoaWNoZXZlciBjb25maWcgaXQgaXMgZ2l2ZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHByb2plY3QncyB0c2NvbmZpZyAoaS5lLiBgcHJvamVjdC50c2NvbmZpZ2ApXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IFR5cGVzY3JpcHRDb25maWc7XG59XG5cbi8qKlxuICogQSBtaXhpbiB0aGF0IGFkZHMganNpaSBjb21waWxhdGlvbiwgbXVsdGktbGFuZ3VhZ2UgcGFja2FnaW5nLCBhbmQgcHVibGlzaGluZ1xuICogY2FwYWJpbGl0aWVzIHRvIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogVGhpcyBpbXBsZW1lbnRzIHRoZSBjb25zdHJ1Y3RzIGBJTWl4aW5gIGludGVyZmFjZSBhbmQgaXMgYXBwbGllZCB1c2luZyB0aGVcbiAqIGAud2l0aCgpYCBtZXRob2Qgb24gYW55IGNvbnN0cnVjdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcHJvamVjdCA9IG5ldyBUeXBlU2NyaXB0UHJvamVjdCh7IGRpc2FibGVUc2NvbmZpZzogdHJ1ZSwgLi4uIH0pO1xuICogcHJvamVjdC53aXRoKG5ldyBKc2lpQnVpbGQoe1xuICogICBqc2lpVmVyc2lvbjogJ341LjkuMCcsXG4gKiAgIHB1Ymxpc2hUb01hdmVuOiB7IC4uLiB9LFxuICogfSkpO1xuICovXG5leHBvcnQgY2xhc3MgSnNpaUJ1aWxkIGltcGxlbWVudHMgSU1peGluIHtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBKc2lpQnVpbGRPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM6IEpzaWlCdWlsZE9wdGlvbnMgPSB7fSxcbiAgICBleHRyYUpvYk9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmV4dHJhSm9iT3B0aW9ucyA9IChleHRyYUpvYk9wdGlvbnMgPz8ge30pIGFzIFBhcnRpYWw8Sm9iPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnN0cnVjdCBpcyBhIFR5cGVTY3JpcHRQcm9qZWN0LlxuICAgKi9cbiAgcHVibGljIHN1cHBvcnRzKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IGNvbnN0cnVjdCBpcyBUeXBlU2NyaXB0UHJvamVjdCB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdCBpbnN0YW5jZW9mIFR5cGVTY3JpcHRQcm9qZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMganNpaSBjb25maWd1cmF0aW9uIHRvIHRoZSB0YXJnZXQgVHlwZVNjcmlwdFByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgYXBwbHlUbyhwcm9qZWN0OiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN1cHBvcnRzKHByb2plY3QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zIH07XG4gICAgY29uc3Qgc3JjZGlyID0gcHJvamVjdC5zcmNkaXI7XG4gICAgY29uc3QgbGliZGlyID0gcHJvamVjdC5saWJkaXI7XG5cbiAgICAvLyBUeXBlU2NyaXB0UHJvamVjdCBzZWxlY3RzIGB0eXBlc2AgZnJvbSBgZW50cnlwb2ludFR5cGVzYCBvciBgZW50cnlwb2ludGAuXG4gICAgY29uc3QgY29tcHJlc3NBc3NlbWJseSA9IG9wdGlvbnMuY29tcHJlc3NBc3NlbWJseSA/PyBmYWxzZTtcblxuICAgIC8vIHRoaXMgaXMgYW4gdW5oZWxwZnVsIHdhcm5pbmdcbiAgICBjb25zdCBqc2lpRmxhZ3MgPSBbXCItLXNpbGVuY2Utd2FybmluZ3M9cmVzZXJ2ZWQtd29yZFwiXTtcbiAgICBpZiAoY29tcHJlc3NBc3NlbWJseSkge1xuICAgICAganNpaUZsYWdzLnB1c2goXCItLWNvbXByZXNzLWFzc2VtYmx5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBhdElnbm9yZSA9IG9wdGlvbnMuY29tcGF0SWdub3JlID8/IFwiLmNvbXBhdGlnbm9yZVwiO1xuXG4gICAgcHJvamVjdC5hZGRGaWVsZHMoe1xuICAgICAgc3RhYmlsaXR5OlxuICAgICAgICBvcHRpb25zLnN0YWJpbGl0eSA/PyBwcm9qZWN0LnBhY2thZ2UubWFuaWZlc3Quc3RhYmlsaXR5ID8/IFwic3RhYmxlXCIsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5zdGFiaWxpdHkgPT09IFwiZGVwcmVjYXRlZFwiKSB7XG4gICAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IGRlcHJlY2F0ZWQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcHJvamVjdC5jb21waWxlVGFzay5yZXNldChbXCJqc2lpXCIsIC4uLmpzaWlGbGFnc10uam9pbihcIiBcIikpO1xuICAgIHByb2plY3Qud2F0Y2hUYXNrLnJlc2V0KFtcImpzaWlcIiwgXCItd1wiLCAuLi5qc2lpRmxhZ3NdLmpvaW4oXCIgXCIpKTtcblxuICAgIGNvbnN0IGNvbXBhdFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soXCJjb21wYXRcIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBQZXJmb3JtIEFQSSBjb21wYXRpYmlsaXR5IGNoZWNrIGFnYWluc3QgbGF0ZXN0IHZlcnNpb25gLFxuICAgICAgZXhlY0FyZ3M6IFtcbiAgICAgICAgXCJqc2lpLWRpZmZcIixcbiAgICAgICAgYG5wbToke3Byb2plY3QucGFja2FnZS5wYWNrYWdlTmFtZX1gLFxuICAgICAgICBcIi1rXCIsXG4gICAgICAgIFwiLS1pZ25vcmUtZmlsZVwiLFxuICAgICAgICBjb21wYXRJZ25vcmUsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuY29tcGF0ID8/IGZhbHNlKSB7XG4gICAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLnNwYXduKGNvbXBhdFRhc2spO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIG5ldyBwYWNrYWdlOmFsbCB0YXNrLCBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGxhbmd1YWdlIHRhcmdldHMgbGF0ZXJcbiAgICBjb25zdCBwYWNrYWdlQWxsVGFzayA9IHByb2plY3QuYWRkVGFzayhcInBhY2thZ2UtYWxsXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlBhY2thZ2VzIGFydGlmYWN0cyBmb3IgYWxsIHRhcmdldCBsYW5ndWFnZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGluIGpzaWkgd2UgY29uc2lkZXIgdGhlIGVudGlyZSByZXBvIChwb3N0IGJ1aWxkKSBhcyB0aGUgYnVpbGQgYXJ0aWZhY3RcbiAgICAvLyB3aGljaCBpcyB0aGVuIHVzZWQgdG8gY3JlYXRlIHRoZSBsYW5ndWFnZSBiaW5kaW5ncyBpbiBzZXBhcmF0ZSBqb2JzLlxuICAgIGNvbnN0IHBhY2thZ2VKc1Rhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwianNcIik7XG5cbiAgICAvLyBXaGVuIHJ1bm5pbmcgaW5zaWRlIENJIHdlIGluaXRpYWxseSBvbmx5IHBhY2thZ2UganMuIE90aGVyIHRhcmdldHMgYXJlIHBhY2thZ2VkIGluIHNlcGFyYXRlIGpvYnMuXG4gICAgLy8gT3V0c2lkZSBvZiBDSSAoaS5lIGxvY2FsbHkpIHdlIHNpbXBseSBwYWNrYWdlIGFsbCB0YXJnZXRzLlxuICAgIHByb2plY3QucGFja2FnZVRhc2sucmVzZXQoKTtcbiAgICBwcm9qZWN0LnBhY2thZ2VUYXNrLnNwYXduKHBhY2thZ2VKc1Rhc2ssIHtcbiAgICAgIC8vIE9ubHkgcnVuIGluIENJXG4gICAgICBjb25kaXRpb246IGBub2RlIC1lIFwiaWYgKCFwcm9jZXNzLmVudi5DSSkgcHJvY2Vzcy5leGl0KDEpXCJgLFxuICAgIH0pO1xuICAgIHByb2plY3QucGFja2FnZVRhc2suc3Bhd24ocGFja2FnZUFsbFRhc2ssIHtcbiAgICAgIC8vIERvbid0IHJ1biBpbiBDSVxuICAgICAgY29uZGl0aW9uOiBgbm9kZSAtZSBcImlmIChwcm9jZXNzLmVudi5DSSkgcHJvY2Vzcy5leGl0KDEpXCJgLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGFyZ2V0czogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgY29uc3QganNpaTogYW55ID0ge1xuICAgICAgb3V0ZGlyOiBwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgIHRhcmdldHMsXG4gICAgfTtcblxuICAgIC8vIGpzaWkgY29tcGlsZXMgYWdhaW5zdCBhbiBleHBsaWNpdGx5IHByb3ZpZGVkIHRzY29uZmlnLCBmYWxsaW5nIGJhY2sgdG9cbiAgICAvLyB0aGUgcHJvamVjdCdzIG93biB0c2NvbmZpZyB3aGVuIG9uZSBpcyBub3QgaW5qZWN0ZWQuIFdoZW4gbmVpdGhlciBpc1xuICAgIC8vIGF2YWlsYWJsZSAoZS5nLiBgZGlzYWJsZVRzY29uZmlnYCksIGxldCBqc2lpIGdlbmVyYXRlIG9uZSBmcm9tIHRzYyBzZXR0aW5ncy5cbiAgICBjb25zdCB0c2NvbmZpZyA9IG9wdGlvbnMudHNjb25maWcgPz8gcHJvamVjdC50c2NvbmZpZztcbiAgICBpZiAodHNjb25maWcpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmUganNpaSB1c2VzIEpTT04ucGFyc2UoKSBhbmQgY2Fubm90IGhhbmRsZSBjb21tZW50c1xuICAgICAgdHNjb25maWcuZmlsZS5jb25maWd1cmVDb21tZW50cyhmYWxzZSk7XG4gICAgICBqc2lpLnRzY29uZmlnID0gdHNjb25maWcuZmlsZU5hbWU7XG4gICAgICBqc2lpLnZhbGlkYXRlVHNjb25maWcgPVxuICAgICAgICBvcHRpb25zLnZhbGlkYXRlVHNjb25maWcgPz8gVmFsaWRhdGVUc2NvbmZpZy5TVFJJQ1Q7XG5cbiAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0KSB7XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0KSB7XG4gICAgICAgICAgdHNjb25maWcuYWRkRXhjbHVkZShwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBqc2lpLnRzYyA9IHtcbiAgICAgICAgb3V0RGlyOiBsaWJkaXIsXG4gICAgICAgIHJvb3REaXI6IHNyY2RpcixcbiAgICAgIH07XG4gICAgICBpZiAob3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdCkge1xuICAgICAgICBqc2lpLmV4Y2x1ZGVUeXBlc2NyaXB0ID0gb3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IGpzaWkgfSk7XG5cbiAgICBjb25zdCBleHRyYUpvYk9wdGlvbnM6IFBhcnRpYWw8Sm9iPiA9IHRoaXMuZXh0cmFKb2JPcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnMucmVsZWFzZVRvTnBtICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgbnBtanM6IE5wbVB1Ymxpc2hPcHRpb25zID0ge1xuICAgICAgICByZWdpc3RyeTogcHJvamVjdC5wYWNrYWdlLm5wbVJlZ2lzdHJ5LFxuICAgICAgICBucG1Ub2tlblNlY3JldDogcHJvamVjdC5wYWNrYWdlLm5wbVRva2VuU2VjcmV0LFxuICAgICAgICBucG1Qcm92ZW5hbmNlOiBwcm9qZWN0LnBhY2thZ2UubnBtUHJvdmVuYW5jZSxcbiAgICAgICAgY29kZUFydGlmYWN0T3B0aW9uczogb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zLFxuICAgICAgICB0cnVzdGVkUHVibGlzaGluZzpcbiAgICAgICAgICBvcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nID8/XG4gICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgcHJvamVjdC5vcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nID8/XG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgIHZlcmlmeVB1Ymxpc2hlZDogb3B0aW9ucy5ucG1WZXJpZnlQdWJsaXNoZWQsXG4gICAgICAgIHZlcmlmeVB1Ymxpc2hlZFRpbWVvdXRTZWNvbmRzOiBvcHRpb25zLm5wbVZlcmlmeVB1Ymxpc2hlZFRpbWVvdXRTZWNvbmRzLFxuICAgICAgfTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9CdWlsZChwcm9qZWN0LCBwYWNrYWdlSnNUYXNrLCBcImpzXCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCBwYWNrYWdlSnNUYXNrLCBcImpzXCIsIG5wbWpzKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXZlbiA9IG9wdGlvbnMucHVibGlzaFRvTWF2ZW47XG4gICAgaWYgKG1hdmVuKSB7XG4gICAgICB0YXJnZXRzLmphdmEgPSB7XG4gICAgICAgIHBhY2thZ2U6IG1hdmVuLmphdmFQYWNrYWdlLFxuICAgICAgICBtYXZlbjoge1xuICAgICAgICAgIGdyb3VwSWQ6IG1hdmVuLm1hdmVuR3JvdXBJZCxcbiAgICAgICAgICBhcnRpZmFjdElkOiBtYXZlbi5tYXZlbkFydGlmYWN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcImphdmFcIik7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgdGFzaywgXCJqYXZhXCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCB0YXNrLCBcImphdmFcIiwgbWF2ZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IHB5cGkgPSBvcHRpb25zLnB1Ymxpc2hUb1B5cGk7XG4gICAgaWYgKHB5cGkpIHtcbiAgICAgIHRhcmdldHMucHl0aG9uID0ge1xuICAgICAgICBkaXN0TmFtZTogcHlwaS5kaXN0TmFtZSxcbiAgICAgICAgbW9kdWxlOiBweXBpLm1vZHVsZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwicHl0aG9uXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwicHl0aG9uXCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCB0YXNrLCBcInB5dGhvblwiLCBweXBpKTtcbiAgICB9XG5cbiAgICBjb25zdCBudWdldCA9IG9wdGlvbnMucHVibGlzaFRvTnVnZXQ7XG4gICAgaWYgKG51Z2V0KSB7XG4gICAgICB0YXJnZXRzLmRvdG5ldCA9IHtcbiAgICAgICAgbmFtZXNwYWNlOiBudWdldC5kb3ROZXROYW1lc3BhY2UsXG4gICAgICAgIHBhY2thZ2VJZDogbnVnZXQucGFja2FnZUlkLFxuICAgICAgICBpY29uVXJsOiBudWdldC5pY29uVXJsLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdGFzayA9IHRoaXMuYWRkUGFja2FnaW5nVGFzayhwcm9qZWN0LCBwYWNrYWdlQWxsVGFzaywgXCJkb3RuZXRcIik7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgdGFzaywgXCJkb3RuZXRcIiwgZXh0cmFKb2JPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9SZWxlYXNlKHByb2plY3QsIHRhc2ssIFwiZG90bmV0XCIsIG51Z2V0KTtcbiAgICB9XG5cbiAgICBjb25zdCBnb2xhbmcgPSBvcHRpb25zLnB1Ymxpc2hUb0dvO1xuICAgIGlmIChnb2xhbmcpIHtcbiAgICAgIHRhcmdldHMuZ28gPSB7XG4gICAgICAgIG1vZHVsZU5hbWU6IGdvbGFuZy5tb2R1bGVOYW1lLFxuICAgICAgICBwYWNrYWdlTmFtZTogZ29sYW5nLnBhY2thZ2VOYW1lLFxuICAgICAgICB2ZXJzaW9uU3VmZml4OiBnb2xhbmcudmVyc2lvblN1ZmZpeCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwiZ29cIik7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgdGFzaywgXCJnb1wiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgdGFzaywgXCJnb1wiLCBnb2xhbmcpO1xuICAgIH1cblxuICAgIC8vIElmIGpzaWlWZXJzaW9uIGlzIFwiKlwiLCBkb24ndCBzcGVjaWZ5IGFueXRoaW5nIHNvIHRoZSB1c2VyIGNhbiBtYW5hZ2UuXG4gICAgLy8gT3RoZXJ3aXNlLCB1c2UgYGpzaWlWZXJzaW9uYFxuICAgIGNvbnN0IGpzaWlWZXJzaW9uID0gb3B0aW9ucy5qc2lpVmVyc2lvbiA/PyBcIn41LjkuMFwiO1xuICAgIGNvbnN0IGpzaWlTdWZmaXggPSBqc2lpVmVyc2lvbiA9PT0gXCIqXCIgPyBcIlwiIDogYEAke2pzaWlWZXJzaW9ufWA7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKFxuICAgICAgYGpzaWkke2pzaWlTdWZmaXh9YCxcbiAgICAgIGBqc2lpLXJvc2V0dGEke2pzaWlTdWZmaXh9YCxcbiAgICAgIFwianNpaS1kaWZmXCIsXG4gICAgICBcImpzaWktcGFjbWFrXCIsXG4gICAgKTtcblxuICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIuanNpaVwiKTtcbiAgICBpZiAoIXRzY29uZmlnKSB7XG4gICAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwidHNjb25maWcuanNvblwiKTtcbiAgICB9XG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmluY2x1ZGUoXCIuanNpaVwiKTtcblxuICAgIGlmIChvcHRpb25zLmRvY2dlbiA/PyB0cnVlKSB7XG4gICAgICAvLyBJZiBqc2lpVmVyc2lvbiBpcyBcIipcIiwgZG9uJ3Qgc3BlY2lmeSBhbnl0aGluZyBzbyB0aGUgdXNlciBjYW4gbWFuYWdlLlxuICAgICAgLy8gT3RoZXJ3aXNlIHVzZSBhIHZlcnNpb24gdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggYWxsIHN1cHBvcnRlZCBqc2lpIHJlbGVhc2VzLlxuICAgICAgY29uc3QgZG9jZ2VuVmVyc2lvbiA9IG9wdGlvbnMuanNpaVZlcnNpb24gPT09IFwiKlwiID8gXCIqXCIgOiBcIl4xMC41LjBcIjtcbiAgICAgIG5ldyBKc2lpRG9jZ2VuKHByb2plY3QsIHtcbiAgICAgICAgdmVyc2lvbjogZG9jZ2VuVmVyc2lvbixcbiAgICAgICAgZmlsZVBhdGg6IG9wdGlvbnMuZG9jZ2VuRmlsZVBhdGgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBqc2lpIHVwZGF0ZXMgLm5wbWlnbm9yZSwgc28gd2UgbWFrZSBpdCB3cml0YWJsZVxuICAgIGlmIChwcm9qZWN0Lm5wbWlnbm9yZSkge1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmUucmVhZG9ubHkgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRhcmdldCBsYW5ndWFnZSB0byB0aGUgcmVsZWFzZSB3b3JrZmxvdy5cbiAgICovXG4gIHByaXZhdGUgYWRkVGFyZ2V0VG9SZWxlYXNlKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHBhY2tUYXNrOiBUYXNrLFxuICAgIGxhbmd1YWdlOiBKc2lpUGFjbWFrVGFyZ2V0LFxuICAgIHRhcmdldDpcbiAgICAgIHwgSnNpaVB5dGhvblRhcmdldFxuICAgICAgfCBKc2lpRG90TmV0VGFyZ2V0XG4gICAgICB8IEpzaWlHb1RhcmdldFxuICAgICAgfCBKc2lpSmF2YVRhcmdldFxuICAgICAgfCBOcG1QdWJsaXNoT3B0aW9ucyxcbiAgKSB7XG4gICAgaWYgKCFwcm9qZWN0LnJlbGVhc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNtYWsgPSB0aGlzLnBhY21ha0Zvckxhbmd1YWdlKHByb2plY3QsIGxhbmd1YWdlLCBwYWNrVGFzayk7XG4gICAgY29uc3QgcHJlUHVibGlzaFN0ZXBzID0gW1xuICAgICAgLi4ucGFjbWFrLmJvb3RzdHJhcFN0ZXBzLFxuICAgICAgV29ya2Zsb3dTdGVwcy5jaGVja291dCh7XG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICBwYXRoOiBSRVBPX1RFTVBfRElSRUNUT1JZLFxuICAgICAgICAgIC4uLihwcm9qZWN0LmdpdGh1Yj8uZG93bmxvYWRMZnMgPyB7IGxmczogdHJ1ZSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICAuLi5wYWNtYWsucGFja2FnaW5nU3RlcHMsXG4gICAgXTtcbiAgICBjb25zdCBjb21tb25QdWJsaXNoT3B0aW9uczogQ29tbW9uUHVibGlzaE9wdGlvbnMgPSB7XG4gICAgICBwdWJsaXNoVG9vbHM6IHBhY21hay5wdWJsaXNoVG9vbHMsXG4gICAgICBwcmVQdWJsaXNoU3RlcHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXI6IFB1Ymxpc2hUbyA9IHB1Ymxpc2hUb1tsYW5ndWFnZV07XG4gICAgcHJvamVjdC5yZWxlYXNlPy5wdWJsaXNoZXJbaGFuZGxlcl0oe1xuICAgICAgLi4uY29tbW9uUHVibGlzaE9wdGlvbnMsXG4gICAgICAuLi50YXJnZXQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRhcmdldCBsYW5ndWFnZSB0byB0aGUgYnVpbGQgd29ya2Zsb3cuXG4gICAqL1xuICBwcml2YXRlIGFkZFRhcmdldFRvQnVpbGQoXG4gICAgcHJvamVjdDogVHlwZVNjcmlwdFByb2plY3QsXG4gICAgcGFja1Rhc2s6IFRhc2ssXG4gICAgbGFuZ3VhZ2U6IEpzaWlQYWNtYWtUYXJnZXQsXG4gICAgZXh0cmFKb2JPcHRpb25zOiBQYXJ0aWFsPEpvYj4sXG4gICkge1xuICAgIGlmICghcHJvamVjdC5idWlsZFdvcmtmbG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhY21hayA9IHRoaXMucGFjbWFrRm9yTGFuZ3VhZ2UocHJvamVjdCwgbGFuZ3VhZ2UsIHBhY2tUYXNrKTtcblxuICAgIHByb2plY3QuYnVpbGRXb3JrZmxvdy5hZGRQb3N0QnVpbGRKb2IoYHBhY2thZ2UtJHtsYW5ndWFnZX1gLCB7XG4gICAgICAuLi5maWx0ZXJlZFJ1bnNPbk9wdGlvbnMoXG4gICAgICAgIGV4dHJhSm9iT3B0aW9ucy5ydW5zT24sXG4gICAgICAgIGV4dHJhSm9iT3B0aW9ucy5ydW5zT25Hcm91cCxcbiAgICAgICksXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgfSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOlxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz9cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHByb2plY3Qubm9kZVZlcnNpb24gPz9cbiAgICAgICAgICAgIFwibHRzLypcIixcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucGFjbWFrLnB1Ymxpc2hUb29scyxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICAuLi5wYWNtYWsuYm9vdHN0cmFwU3RlcHMsXG4gICAgICAgIFdvcmtmbG93U3RlcHMuY2hlY2tvdXQoe1xuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIHBhdGg6IFJFUE9fVEVNUF9ESVJFQ1RPUlksXG4gICAgICAgICAgICByZWY6IFBVTExfUkVRVUVTVF9TSEEsXG4gICAgICAgICAgICByZXBvc2l0b3J5OiBQVUxMX1JFUVVFU1RfUkVQT1NJVE9SWSxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0LmdpdGh1Yj8uZG93bmxvYWRMZnMgPyB7IGxmczogdHJ1ZSB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5wYWNtYWsucGFja2FnaW5nU3RlcHMsXG4gICAgICBdLFxuICAgICAgLi4uZXh0cmFKb2JPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQYWNrYWdpbmdUYXNrKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHBhY2thZ2VBbGxUYXNrOiBUYXNrLFxuICAgIGxhbmd1YWdlOiBKc2lpUGFjbWFrVGFyZ2V0LFxuICApOiBUYXNrIHtcbiAgICBjb25zdCBwYWNrYWdlVGFyZ2V0VGFzayA9IHByb2plY3QudGFza3MuYWRkVGFzayhgcGFja2FnZToke2xhbmd1YWdlfWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgQ3JlYXRlICR7bGFuZ3VhZ2V9IGxhbmd1YWdlIGJpbmRpbmdzYCxcbiAgICB9KTtcbiAgICBjb25zdCBjb21tYW5kUGFydHMgPSBbXCJqc2lpLXBhY21ha1wiLCBcIi12XCJdO1xuXG4gICAgaWYgKHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0pIHtcbiAgICAgIGNvbW1hbmRQYXJ0cy5wdXNoKFwiLS1wYWNrLWNvbW1hbmRcIiwgXCJwbnBtIHBhY2tcIik7XG4gICAgfVxuXG4gICAgY29tbWFuZFBhcnRzLnB1c2goXCItLXRhcmdldFwiLCBsYW5ndWFnZSk7XG5cbiAgICBwYWNrYWdlVGFyZ2V0VGFzay5leGVjQXJncyhjb21tYW5kUGFydHMpO1xuXG4gICAgcGFja2FnZUFsbFRhc2suc3Bhd24ocGFja2FnZVRhcmdldFRhc2spO1xuICAgIHJldHVybiBwYWNrYWdlVGFyZ2V0VGFzaztcbiAgfVxuXG4gIHByaXZhdGUgcGFjbWFrRm9yTGFuZ3VhZ2UoXG4gICAgcHJvamVjdDogVHlwZVNjcmlwdFByb2plY3QsXG4gICAgdGFyZ2V0OiBKc2lpUGFjbWFrVGFyZ2V0LFxuICAgIHBhY2tUYXNrOiBUYXNrLFxuICApOiB7XG4gICAgcHVibGlzaFRvb2xzOiBUb29scztcbiAgICBib290c3RyYXBTdGVwczogQXJyYXk8U3RlcD47XG4gICAgcGFja2FnaW5nU3RlcHM6IEFycmF5PFN0ZXA+O1xuICB9IHtcbiAgICBjb25zdCBib290c3RyYXBTdGVwczogQXJyYXk8U3RlcD4gPSBbXTtcbiAgICBjb25zdCBwYWNrYWdpbmdTdGVwczogQXJyYXk8U3RlcD4gPSBbXTtcblxuICAgIC8vIEdlbmVyaWMgYm9vdHN0cmFwcGluZyBmb3IgYWxsIHRhcmdldCBsYW5ndWFnZXNcbiAgICBib290c3RyYXBTdGVwcy5wdXNoKC4uLih0aGlzLm9wdGlvbnMud29ya2Zsb3dCb290c3RyYXBTdGVwcyA/PyBbXSkpO1xuICAgIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNKSB7XG4gICAgICBib290c3RyYXBTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJTZXR1cCBwbnBtXCIsXG4gICAgICAgIHVzZXM6IEFjdGlvblJlZnMuUE5QTV9BQ1RJT05fU0VUVVAsXG4gICAgICAgIHdpdGg6IHsgdmVyc2lvbjogcHJvamVjdC5wYWNrYWdlLnBucG1WZXJzaW9uIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLkJVTikge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiU2V0dXAgYnVuXCIsXG4gICAgICAgIHVzZXM6IEFjdGlvblJlZnMuT1ZFTl9TSF9TRVRVUF9CVU4sXG4gICAgICAgIHdpdGg6IHsgXCJidW4tdmVyc2lvblwiOiBwcm9qZWN0LnBhY2thZ2UuYnVuVmVyc2lvbiB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc1lhcm5CZXJyeShwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIpKSB7XG4gICAgICBib290c3RyYXBTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJFbmFibGUgY29yZXBhY2tcIixcbiAgICAgICAgcnVuOiBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya0RpciA9IHRoaXMub3B0aW9ucy53b3Jrc3BhY2VEaXJlY3RvcnlcbiAgICAgID8gYCR7UkVQT19URU1QX0RJUkVDVE9SWX0vJHt0aGlzLm9wdGlvbnMud29ya3NwYWNlRGlyZWN0b3J5fWBcbiAgICAgIDogUkVQT19URU1QX0RJUkVDVE9SWTtcblxuICAgIC8vIEluc3RhbGxhdGlvbiBzdGVwcyBiZWZvcmUgcGFja2FnaW5nLCBidXQgYWZ0ZXIgY2hlY2tvdXRcbiAgICBwYWNrYWdpbmdTdGVwcy5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkluc3RhbGwgRGVwZW5kZW5jaWVzXCIsXG4gICAgICAgIHJ1bjogYGNkICR7UkVQT19URU1QX0RJUkVDVE9SWX0gJiYgJHtwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbENvbW1hbmR9YCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiRXh0cmFjdCBidWlsZCBhcnRpZmFjdFwiLFxuICAgICAgICBydW46IGB0YXIgLS1zdHJpcC1jb21wb25lbnRzPTEgLXh6dmYgJHtwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX0vanMvKi50Z3ogLUMgJHt3b3JrRGlyfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBgTW92ZSBidWlsZCBhcnRpZmFjdCBvdXQgb2YgdGhlIHdheWAsXG4gICAgICAgIHJ1bjogYG12ICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9ICR7QlVJTERfQVJUSUZBQ1RfT0xEX0RJUn1gLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogYENyZWF0ZSAke3RhcmdldH0gYXJ0aWZhY3RgLFxuICAgICAgICBydW46IGBjZCAke3dvcmtEaXJ9ICYmICR7cHJvamVjdC5ydW5UYXNrQ29tbWFuZChwYWNrVGFzayl9YCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGBDb2xsZWN0ICR7dGFyZ2V0fSBhcnRpZmFjdGAsXG4gICAgICAgIHJ1bjogYG12ICR7d29ya0Rpcn0vJHtwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX0gJHtwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX1gLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Ymxpc2hUb29sczogSlNJSV9UT09MQ0hBSU5bdGFyZ2V0XSxcbiAgICAgIGJvb3RzdHJhcFN0ZXBzLFxuICAgICAgcGFja2FnaW5nU3RlcHMsXG4gICAgfTtcbiAgfVxufVxuXG50eXBlIFB1Ymxpc2hUbyA9IGtleW9mIFB1Ymxpc2hlciAmXG4gIChcbiAgICB8IFwicHVibGlzaFRvTnBtXCJcbiAgICB8IFwicHVibGlzaFRvTWF2ZW5cIlxuICAgIHwgXCJwdWJsaXNoVG9QeVBpXCJcbiAgICB8IFwicHVibGlzaFRvTnVnZXRcIlxuICAgIHwgXCJwdWJsaXNoVG9Hb1wiXG4gICk7XG5cbnR5cGUgUHVibGlzaFRvVGFyZ2V0ID0geyBbSyBpbiBKc2lpUGFjbWFrVGFyZ2V0XTogUHVibGlzaFRvIH07XG5jb25zdCBwdWJsaXNoVG86IFB1Ymxpc2hUb1RhcmdldCA9IHtcbiAganM6IFwicHVibGlzaFRvTnBtXCIsXG4gIGphdmE6IFwicHVibGlzaFRvTWF2ZW5cIixcbiAgcHl0aG9uOiBcInB1Ymxpc2hUb1B5UGlcIixcbiAgZG90bmV0OiBcInB1Ymxpc2hUb051Z2V0XCIsXG4gIGdvOiBcInB1Ymxpc2hUb0dvXCIsXG59O1xuIl19
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvanNpaS1idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EscUNBQTBDO0FBQzFDLCtDQUEyQztBQU8zQyxvREFHaUM7QUFDakMsMkRBQXFEO0FBQ3JELDZEQUF5RDtBQUV6RCwrREFBMEQ7QUFDMUQsOENBQW1EO0FBRW5ELDZDQUFpRDtBQU1qRCxzREFBMEQ7QUFDMUQsOENBQWtEO0FBRWxELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBQ3BDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsSUFBWSxnQkFvQlg7QUFwQkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCxxQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDJDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsdUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCwrQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQXBCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQW9CM0I7QUF5TEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsU0FBUzs7SUFDSCxPQUFPLENBQW1CO0lBQzFCLGVBQWUsQ0FBZTtJQUUvQyxZQUNFLFVBQTRCLEVBQUUsRUFDOUIsZUFBeUM7UUFFekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQWlCLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sU0FBUyxZQUFZLDhCQUFpQixDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxPQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVC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SSxFQUFFLHdCQUF3QjtZQUM5QixHQUFHLEVBQUUsa0NBQWtDLE9BQU8sQ0FBQyxrQkFBa0IsZ0JBQWdCLE9BQU8sRUFBRTtTQUMzRixFQUNEO1lBQ0UsSUFBSSxFQUFFLG9DQUFvQztZQUMxQyxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUMsa0JBQWtCLElBQUksc0JBQXNCLEVBQUU7U0FDbEUsRUFDRDtZQUNFLElBQUksRUFBRSxVQUFVLE1BQU0sV0FBVztZQUNqQyxHQUFHLEVBQUUsTUFBTSxPQUFPLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtTQUM1RCxFQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVcsTUFBTSxXQUFXO1lBQ2xDLEdBQUcsRUFBRSxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsa0JBQWtCLElBQUksT0FBTyxDQUFDLGtCQUFrQixFQUFFO1NBQ2pGLENBQ0YsQ0FBQztRQUVGLE9BQU87WUFDTCxZQUFZLEVBQUUsdUJBQWMsQ0FBQyxNQUFNLENBQUM7WUFDcEMsY0FBYztZQUNkLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQzs7QUE1WkgsOEJBNlpDO0FBWUQsTUFBTSxTQUFTLEdBQW9CO0lBQ2pDLEVBQUUsRUFBRSxjQUFjO0lBQ2xCLElBQUksRUFBRSxnQkFBZ0I7SUFDdEIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsTUFBTSxFQUFFLGdCQUFnQjtJQUN4QixFQUFFLEVBQUUsYUFBYTtDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0LCBJTWl4aW4gfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgdHlwZSB7IEpzaWlQYWNtYWtUYXJnZXQgfSBmcm9tIFwiLi9jb25zdHNcIjtcbmltcG9ydCB7IEpTSUlfVE9PTENIQUlOIH0gZnJvbSBcIi4vY29uc3RzXCI7XG5pbXBvcnQgeyBKc2lpRG9jZ2VuIH0gZnJvbSBcIi4vanNpaS1kb2NnZW5cIjtcbmltcG9ydCB0eXBlIHtcbiAgSnNpaURvdE5ldFRhcmdldCxcbiAgSnNpaUdvVGFyZ2V0LFxuICBKc2lpSmF2YVRhcmdldCxcbiAgSnNpaVB5dGhvblRhcmdldCxcbn0gZnJvbSBcIi4vanNpaS1wcm9qZWN0XCI7XG5pbXBvcnQge1xuICBQVUxMX1JFUVVFU1RfUkVQT1NJVE9SWSxcbiAgUFVMTF9SRVFVRVNUX1NIQSxcbn0gZnJvbSBcIi4uL2J1aWxkL3ByaXZhdGUvY29uc3RzXCI7XG5pbXBvcnQgeyBBY3Rpb25SZWZzIH0gZnJvbSBcIi4uL2dpdGh1Yi9hY3Rpb25zLmNvbnN0XCI7XG5pbXBvcnQgeyBXb3JrZmxvd1N0ZXBzIH0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvdy1zdGVwc1wiO1xuaW1wb3J0IHR5cGUgeyBKb2IsIFN0ZXAsIFRvb2xzIH0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tIFwiLi4vZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB0eXBlIHsgVHlwZXNjcmlwdENvbmZpZyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBpc1lhcm5CZXJyeSB9IGZyb20gXCIuLi9qYXZhc2NyaXB0L3V0aWxcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29tbW9uUHVibGlzaE9wdGlvbnMsXG4gIE5wbVB1Ymxpc2hPcHRpb25zLFxuICBQdWJsaXNoZXIsXG59IGZyb20gXCIuLi9yZWxlYXNlXCI7XG5pbXBvcnQgeyBmaWx0ZXJlZFJ1bnNPbk9wdGlvbnMgfSBmcm9tIFwiLi4vcnVubmVyLW9wdGlvbnNcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcblxuY29uc3QgUkVQT19URU1QX0RJUkVDVE9SWSA9IFwiLnJlcG9cIjtcbmNvbnN0IEJVSUxEX0FSVElGQUNUX09MRF9ESVIgPSBcImRpc3Qub2xkXCI7XG5cbi8qKlxuICogTGV2ZWwgb2YgdHNjb25maWcgdmFsaWRhdGlvbiBqc2lpIHNob3VsZCBwZXJmb3JtLlxuICovXG5leHBvcnQgZW51bSBWYWxpZGF0ZVRzY29uZmlnIHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhZ2FpbnN0IGEgc3RyaWN0IHJ1bGUgc2V0IGRlc2lnbmVkIGZvciB3aWRlc3ByZWFkIHN1cHBvcnQgYW5kIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgU1RSSUNUID0gXCJzdHJpY3RcIixcblxuICAvKipcbiAgICogRW5mb3JjZXMgYSB0c2NvbmZpZyBhcyBpZiBpdCB3ZXJlIGdlbmVyYXRlZCBieSBqc2lpLlxuICAgKi9cbiAgR0VORVJBVEVEID0gXCJnZW5lcmF0ZWRcIixcblxuICAvKipcbiAgICogT25seSByZWplY3Qgb3B0aW9ucyBrbm93biB0byBiZSBpbmNvbXBhdGlibGUgd2l0aCBqc2lpLlxuICAgKi9cbiAgTUlOSU1BTCA9IFwibWluaW1hbFwiLFxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBhbGwgY29uZmlnIHZhbGlkYXRpb24uIFVzZSBhdCB5b3VyIG93biByaXNrLlxuICAgKi9cbiAgT0ZGID0gXCJvZmZcIixcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgSnNpaUJ1aWxkYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpQnVpbGRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gbWF2ZW5cbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9NYXZlbj86IEpzaWlKYXZhVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIHB5cGlcbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9QeXBpPzogSnNpaVB5dGhvblRhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCBHbyBiaW5kaW5ncyB0byBhIGdpdCByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBBIHNlcGFyYXRlIHJlcG9zaXRvcnkgaXMgcmVjb21tZW5kZWQuIElmIGBtb2R1bGVOYW1lYCByZWZlcnMgdG8gdGhlIHNvdXJjZVxuICAgKiByZXBvc2l0b3J5LCBzZXQgYHB1Ymxpc2hUb1NvdXJjZVJlcG9zaXRvcnlgIHRvIGB0cnVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9Hbz86IEpzaWlHb1RhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBOdUdldFxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb051Z2V0PzogSnNpaURvdE5ldFRhcmdldDtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBydW4gQVBJIGNvbXBhdGliaWxpdHkgdGVzdCBhZ2FpbnN0IHRoZSBsYXRlc3QgdmVyc2lvbiBwdWJsaXNoZWQgdG8gbnBtIGFmdGVyIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiAtIFlvdSBjYW4gbWFudWFsbHkgcnVuIGNvbXBhdGliaWxpdHkgdGVzdHMgdXNpbmcgYHlhcm4gY29tcGF0YCBpZiB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQuXG4gICAqIC0gWW91IGNhbiBpZ25vcmUgY29tcGF0aWJpbGl0eSBmYWlsdXJlcyBieSBhZGRpbmcgbGluZXMgdG8gYSBcIi5jb21wYXRpZ25vcmVcIiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaWdub3JlIGZpbGUgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5jb21wYXRpZ25vcmVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0SWdub3JlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLiBGaWxlcyBtYXRjaGluZyBhbnkgb2YgdGhvc2UgcGF0dGVybnMgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBqc2lpIHdpbGwgaW5jbHVkZSBhbGwgKi50cyBmaWxlcyAoZXhjZXB0IC5kLnRzIGZpbGVzKSBpbiB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBpbnB1dC5cbiAgICogVGhpcyBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGV4YW1wbGUgd2hlbiB0aGUgcGFja2FnZSdzIGJ1aWxkIG9yIHRlc3QgcHJvY2VkdXJlIGdlbmVyYXRlcyAudHMgZmlsZXNcbiAgICogdGhhdCBjYW5ub3QgYmUgY29tcGlsZWQgd2l0aCBqc2lpJ3MgY29tcGlsZXIgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlVHlwZXNjcmlwdD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWxlIHBhdGggZm9yIGdlbmVyYXRlZCBkb2NzLlxuICAgKiBAZGVmYXVsdCBcIkFQSS5tZFwiXG4gICAqL1xuICByZWFkb25seSBkb2NnZW5GaWxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1pdCBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgYXNzZW1ibHlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBqc2lpIGNvbXBpbGVyIHRvIHVzZS5cbiAgICpcbiAgICogU2V0IHRvIFwiKlwiIGlmIHlvdSB3YW50IHRvIG1hbnVhbGx5IG1hbmFnZSB0aGUgdmVyc2lvbiBvZiBqc2lpIGluIHlvdXJcbiAgICogcHJvamVjdCBieSBtYW5hZ2luZyB1cGRhdGVzIHRvIGBwYWNrYWdlLmpzb25gIG9uIHlvdXIgb3duLlxuICAgKlxuICAgKiBOT1RFOiBUaGUganNpaSBjb21waWxlciByZWxlYXNlcyBzaW5jZSA1LjAuMCBhcmUgbm90IHNlbWFudGljYWxseSB2ZXJzaW9uZWRcbiAgICogYW5kIHNob3VsZCByZW1haW4gb24gdGhlIHNhbWUgbWlub3IsIHNvIHdlIHJlY29tbWVuZCB1c2luZyBhIGB+YCBkZXBlbmRlbmN5XG4gICAqIChlLmcuIGB+NS4wLjBgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ+NS45LjBcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFiaWxpdHkgb2YgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwic3RhYmxlXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWJpbGl0eT86IHN0cmluZztcblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBNYXJrRG93biBmaWxlIGRlc2NyaWJpbmcgdGhlIGpzaWkgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkb2NnZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1Ymxpc2ggdG8gbnBtLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlVG9OcG0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIG5wbS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5wbVRydXN0ZWRQdWJsaXNoaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2FpdCB1bnRpbCB0aGUgcHVibGlzaGVkIHBhY2thZ2UgdmVyc2lvbiBpcyBhdmFpbGFibGUgZnJvbSB0aGUgbnBtIHJlZ2lzdHJ5IGJlZm9yZSB0aGUgcHVibGlzaCBqb2IgY29tcGxldGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVmVyaWZ5UHVibGlzaGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSG93IGxvbmcgdG8gd2FpdCwgaW4gc2Vjb25kcywgZm9yIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB2ZXJzaW9uIHRvIGJlIGF2YWlsYWJsZS5cbiAgICpcbiAgICogUmVxdWlyZXMgYG5wbVZlcmlmeVB1Ymxpc2hlZGAgdG8gYmUgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzYwMFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVmVyaWZ5UHVibGlzaGVkVGltZW91dFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHB1Ymxpc2hpbmcgbnBtIHBhY2thZ2UgdG8gQVdTIENvZGVBcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVBcnRpZmFjdE9wdGlvbnM/OiBOcG1QdWJsaXNoT3B0aW9uc1tcImNvZGVBcnRpZmFjdE9wdGlvbnNcIl07XG5cbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggb2YgdGhlIHBhY2thZ2Ugd2l0aGluIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgaW4gbW9ub3JlcG8gc2V0dXBzIHdoZXJlIHRoZSBwYWNrYWdlIGlzIG5vdCBhdCB0aGUgcm9vdC5cbiAgICogUGFja2FnaW5nIHN0ZXBzIHdpbGwgZXh0cmFjdCBidWlsZCBhcnRpZmFjdHMgaW50byB0aGlzIHN1YmRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCIuXCIgLSByb290IG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBub2RlIHZlcnNpb24gdG8gdXNlIGluIHBhY2thZ2luZyB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibHRzLypcIlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOb2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBzdGVwcyB0byBydW4gYmVmb3JlIHBhY2thZ2luZyBpbiB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzPzogQXJyYXk8U3RlcD47XG5cbiAgLyoqXG4gICAqIExldmVsIG9mIHRzY29uZmlnIHZhbGlkYXRpb24ganNpaSBzaG91bGQgcGVyZm9ybSBvbiB0aGUgdXNlci1wcm92aWRlZCB0c2NvbmZpZy5cbiAgICpcbiAgICogT25seSByZWxldmFudCB3aGVuIHRoZSBwcm9qZWN0IHN5bnRoZXNpemVzIGl0cyBvd24gdHNjb25maWdcbiAgICogKGkuZS4gYGRpc2FibGVUc2NvbmZpZ2AgaXMgbm90IHNldCBvbiB0aGUgVHlwZVNjcmlwdFByb2plY3QpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vYXdzLmdpdGh1Yi5pby9qc2lpL3VzZXItZ3VpZGVzL2xpYi1hdXRob3IvY29uZmlndXJhdGlvbi8jdmFsaWRhdGV0c2NvbmZpZ1xuICAgKiBAZGVmYXVsdCBWYWxpZGF0ZVRzY29uZmlnLlNUUklDVFxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVUc2NvbmZpZz86IFZhbGlkYXRlVHNjb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBUeXBlc2NyaXB0Q29uZmlnIHRoYXQganNpaSBjb21waWxlcyBhZ2FpbnN0LlxuICAgKlxuICAgKiBQcm92aWRlIGEgZGVkaWNhdGVkIGNvbmZpZyAoZS5nLiBvbmUgbmFtZWQgYHRzY29uZmlnLmpzaWkuanNvbmApIHRvIGtlZXBcbiAgICoganNpaSBjb21waWxhdGlvbiBzZXBhcmF0ZSBmcm9tIHRoZSBwcm9qZWN0J3MgZWRpdG9yLWZhY2luZyBgdHNjb25maWcuanNvbmAuXG4gICAqIGpzaWkgcmVxdWlyZXMgYSBjb21tZW50LWZyZWUsIHN0cmljdC12YWxpZCBjb25maWcsIHNvIGBKc2lpQnVpbGRgIGRpc2FibGVzXG4gICAqIGNvbW1lbnRzIG9uIHdoaWNoZXZlciBjb25maWcgaXQgaXMgZ2l2ZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHByb2plY3QncyB0c2NvbmZpZyAoaS5lLiBgcHJvamVjdC50c2NvbmZpZ2ApXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IFR5cGVzY3JpcHRDb25maWc7XG59XG5cbi8qKlxuICogQSBtaXhpbiB0aGF0IGFkZHMganNpaSBjb21waWxhdGlvbiwgbXVsdGktbGFuZ3VhZ2UgcGFja2FnaW5nLCBhbmQgcHVibGlzaGluZ1xuICogY2FwYWJpbGl0aWVzIHRvIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogVGhpcyBpbXBsZW1lbnRzIHRoZSBjb25zdHJ1Y3RzIGBJTWl4aW5gIGludGVyZmFjZSBhbmQgaXMgYXBwbGllZCB1c2luZyB0aGVcbiAqIGAud2l0aCgpYCBtZXRob2Qgb24gYW55IGNvbnN0cnVjdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcHJvamVjdCA9IG5ldyBUeXBlU2NyaXB0UHJvamVjdCh7IGRpc2FibGVUc2NvbmZpZzogdHJ1ZSwgLi4uIH0pO1xuICogcHJvamVjdC53aXRoKG5ldyBKc2lpQnVpbGQoe1xuICogICBqc2lpVmVyc2lvbjogJ341LjkuMCcsXG4gKiAgIHB1Ymxpc2hUb01hdmVuOiB7IC4uLiB9LFxuICogfSkpO1xuICovXG5leHBvcnQgY2xhc3MgSnNpaUJ1aWxkIGltcGxlbWVudHMgSU1peGluIHtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBKc2lpQnVpbGRPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM6IEpzaWlCdWlsZE9wdGlvbnMgPSB7fSxcbiAgICBleHRyYUpvYk9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmV4dHJhSm9iT3B0aW9ucyA9IChleHRyYUpvYk9wdGlvbnMgPz8ge30pIGFzIFBhcnRpYWw8Sm9iPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnN0cnVjdCBpcyBhIFR5cGVTY3JpcHRQcm9qZWN0LlxuICAgKi9cbiAgcHVibGljIHN1cHBvcnRzKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IGNvbnN0cnVjdCBpcyBUeXBlU2NyaXB0UHJvamVjdCB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdCBpbnN0YW5jZW9mIFR5cGVTY3JpcHRQcm9qZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMganNpaSBjb25maWd1cmF0aW9uIHRvIHRoZSB0YXJnZXQgVHlwZVNjcmlwdFByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgYXBwbHlUbyhwcm9qZWN0OiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN1cHBvcnRzKHByb2plY3QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zIH07XG4gICAgY29uc3Qgc3JjZGlyID0gcHJvamVjdC5zcmNkaXI7XG4gICAgY29uc3QgbGliZGlyID0gcHJvamVjdC5saWJkaXI7XG5cbiAgICAvLyBUeXBlU2NyaXB0UHJvamVjdCBzZWxlY3RzIGB0eXBlc2AgZnJvbSBgZW50cnlwb2ludFR5cGVzYCBvciBgZW50cnlwb2ludGAuXG4gICAgY29uc3QgY29tcHJlc3NBc3NlbWJseSA9IG9wdGlvbnMuY29tcHJlc3NBc3NlbWJseSA/PyBmYWxzZTtcblxuICAgIC8vIHRoaXMgaXMgYW4gdW5oZWxwZnVsIHdhcm5pbmdcbiAgICBjb25zdCBqc2lpRmxhZ3MgPSBbXCItLXNpbGVuY2Utd2FybmluZ3M9cmVzZXJ2ZWQtd29yZFwiXTtcbiAgICBpZiAoY29tcHJlc3NBc3NlbWJseSkge1xuICAgICAganNpaUZsYWdzLnB1c2goXCItLWNvbXByZXNzLWFzc2VtYmx5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBhdElnbm9yZSA9IG9wdGlvbnMuY29tcGF0SWdub3JlID8/IFwiLmNvbXBhdGlnbm9yZVwiO1xuXG4gICAgcHJvamVjdC5hZGRGaWVsZHMoe1xuICAgICAgc3RhYmlsaXR5OlxuICAgICAgICBvcHRpb25zLnN0YWJpbGl0eSA/PyBwcm9qZWN0LnBhY2thZ2UubWFuaWZlc3Quc3RhYmlsaXR5ID8/IFwic3RhYmxlXCIsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5zdGFiaWxpdHkgPT09IFwiZGVwcmVjYXRlZFwiKSB7XG4gICAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IGRlcHJlY2F0ZWQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcHJvamVjdC5jb21waWxlVGFzay5yZXNldChbXCJqc2lpXCIsIC4uLmpzaWlGbGFnc10uam9pbihcIiBcIikpO1xuICAgIHByb2plY3Qud2F0Y2hUYXNrLnJlc2V0KFtcImpzaWlcIiwgXCItd1wiLCAuLi5qc2lpRmxhZ3NdLmpvaW4oXCIgXCIpKTtcblxuICAgIGNvbnN0IGNvbXBhdFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soXCJjb21wYXRcIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBQZXJmb3JtIEFQSSBjb21wYXRpYmlsaXR5IGNoZWNrIGFnYWluc3QgbGF0ZXN0IHZlcnNpb25gLFxuICAgICAgZXhlY0FyZ3M6IFtcbiAgICAgICAgXCJqc2lpLWRpZmZcIixcbiAgICAgICAgYG5wbToke3Byb2plY3QucGFja2FnZS5wYWNrYWdlTmFtZX1gLFxuICAgICAgICBcIi1rXCIsXG4gICAgICAgIFwiLS1pZ25vcmUtZmlsZVwiLFxuICAgICAgICBjb21wYXRJZ25vcmUsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuY29tcGF0ID8/IGZhbHNlKSB7XG4gICAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLnNwYXduKGNvbXBhdFRhc2spO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIG5ldyBwYWNrYWdlOmFsbCB0YXNrLCBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGxhbmd1YWdlIHRhcmdldHMgbGF0ZXJcbiAgICBjb25zdCBwYWNrYWdlQWxsVGFzayA9IHByb2plY3QuYWRkVGFzayhcInBhY2thZ2UtYWxsXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlBhY2thZ2VzIGFydGlmYWN0cyBmb3IgYWxsIHRhcmdldCBsYW5ndWFnZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGluIGpzaWkgd2UgY29uc2lkZXIgdGhlIGVudGlyZSByZXBvIChwb3N0IGJ1aWxkKSBhcyB0aGUgYnVpbGQgYXJ0aWZhY3RcbiAgICAvLyB3aGljaCBpcyB0aGVuIHVzZWQgdG8gY3JlYXRlIHRoZSBsYW5ndWFnZSBiaW5kaW5ncyBpbiBzZXBhcmF0ZSBqb2JzLlxuICAgIGNvbnN0IHBhY2thZ2VKc1Rhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwianNcIik7XG5cbiAgICAvLyBXaGVuIHJ1bm5pbmcgaW5zaWRlIENJIHdlIGluaXRpYWxseSBvbmx5IHBhY2thZ2UganMuIE90aGVyIHRhcmdldHMgYXJlIHBhY2thZ2VkIGluIHNlcGFyYXRlIGpvYnMuXG4gICAgLy8gT3V0c2lkZSBvZiBDSSAoaS5lIGxvY2FsbHkpIHdlIHNpbXBseSBwYWNrYWdlIGFsbCB0YXJnZXRzLlxuICAgIHByb2plY3QucGFja2FnZVRhc2sucmVzZXQoKTtcbiAgICBwcm9qZWN0LnBhY2thZ2VUYXNrLnNwYXduKHBhY2thZ2VKc1Rhc2ssIHtcbiAgICAgIC8vIE9ubHkgcnVuIGluIENJXG4gICAgICBjb25kaXRpb246IGBub2RlIC1lIFwiaWYgKCFwcm9jZXNzLmVudi5DSSkgcHJvY2Vzcy5leGl0KDEpXCJgLFxuICAgIH0pO1xuICAgIHByb2plY3QucGFja2FnZVRhc2suc3Bhd24ocGFja2FnZUFsbFRhc2ssIHtcbiAgICAgIC8vIERvbid0IHJ1biBpbiBDSVxuICAgICAgY29uZGl0aW9uOiBgbm9kZSAtZSBcImlmIChwcm9jZXNzLmVudi5DSSkgcHJvY2Vzcy5leGl0KDEpXCJgLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGFyZ2V0czogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgY29uc3QganNpaTogYW55ID0ge1xuICAgICAgb3V0ZGlyOiBwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgIHRhcmdldHMsXG4gICAgfTtcblxuICAgIC8vIGpzaWkgY29tcGlsZXMgYWdhaW5zdCBhbiBleHBsaWNpdGx5IHByb3ZpZGVkIHRzY29uZmlnLCBmYWxsaW5nIGJhY2sgdG9cbiAgICAvLyB0aGUgcHJvamVjdCdzIG93biB0c2NvbmZpZyB3aGVuIG9uZSBpcyBub3QgaW5qZWN0ZWQuIFdoZW4gbmVpdGhlciBpc1xuICAgIC8vIGF2YWlsYWJsZSAoZS5nLiBgZGlzYWJsZVRzY29uZmlnYCksIGxldCBqc2lpIGdlbmVyYXRlIG9uZSBmcm9tIHRzYyBzZXR0aW5ncy5cbiAgICBjb25zdCB0c2NvbmZpZyA9IG9wdGlvbnMudHNjb25maWcgPz8gcHJvamVjdC50c2NvbmZpZztcbiAgICBpZiAodHNjb25maWcpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmUganNpaSB1c2VzIEpTT04ucGFyc2UoKSBhbmQgY2Fubm90IGhhbmRsZSBjb21tZW50c1xuICAgICAgdHNjb25maWcuZmlsZS5jb25maWd1cmVDb21tZW50cyhmYWxzZSk7XG4gICAgICBqc2lpLnRzY29uZmlnID0gdHNjb25maWcuZmlsZU5hbWU7XG4gICAgICBqc2lpLnZhbGlkYXRlVHNjb25maWcgPVxuICAgICAgICBvcHRpb25zLnZhbGlkYXRlVHNjb25maWcgPz8gVmFsaWRhdGVUc2NvbmZpZy5TVFJJQ1Q7XG5cbiAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0KSB7XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0KSB7XG4gICAgICAgICAgdHNjb25maWcuYWRkRXhjbHVkZShwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBqc2lpLnRzYyA9IHtcbiAgICAgICAgb3V0RGlyOiBsaWJkaXIsXG4gICAgICAgIHJvb3REaXI6IHNyY2RpcixcbiAgICAgIH07XG4gICAgICBpZiAob3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdCkge1xuICAgICAgICBqc2lpLmV4Y2x1ZGVUeXBlc2NyaXB0ID0gb3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IGpzaWkgfSk7XG5cbiAgICBjb25zdCBleHRyYUpvYk9wdGlvbnM6IFBhcnRpYWw8Sm9iPiA9IHRoaXMuZXh0cmFKb2JPcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnMucmVsZWFzZVRvTnBtICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgbnBtanM6IE5wbVB1Ymxpc2hPcHRpb25zID0ge1xuICAgICAgICByZWdpc3RyeTogcHJvamVjdC5wYWNrYWdlLm5wbVJlZ2lzdHJ5LFxuICAgICAgICBucG1Ub2tlblNlY3JldDogcHJvamVjdC5wYWNrYWdlLm5wbVRva2VuU2VjcmV0LFxuICAgICAgICBucG1Qcm92ZW5hbmNlOiBwcm9qZWN0LnBhY2thZ2UubnBtUHJvdmVuYW5jZSxcbiAgICAgICAgY29kZUFydGlmYWN0T3B0aW9uczogb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zLFxuICAgICAgICB0cnVzdGVkUHVibGlzaGluZzpcbiAgICAgICAgICBvcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nID8/XG4gICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgcHJvamVjdC5vcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nID8/XG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgIHZlcmlmeVB1Ymxpc2hlZDogb3B0aW9ucy5ucG1WZXJpZnlQdWJsaXNoZWQsXG4gICAgICAgIHZlcmlmeVB1Ymxpc2hlZFRpbWVvdXRTZWNvbmRzOiBvcHRpb25zLm5wbVZlcmlmeVB1Ymxpc2hlZFRpbWVvdXRTZWNvbmRzLFxuICAgICAgfTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9CdWlsZChwcm9qZWN0LCBwYWNrYWdlSnNUYXNrLCBcImpzXCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCBwYWNrYWdlSnNUYXNrLCBcImpzXCIsIG5wbWpzKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXZlbiA9IG9wdGlvbnMucHVibGlzaFRvTWF2ZW47XG4gICAgaWYgKG1hdmVuKSB7XG4gICAgICB0YXJnZXRzLmphdmEgPSB7XG4gICAgICAgIHBhY2thZ2U6IG1hdmVuLmphdmFQYWNrYWdlLFxuICAgICAgICBtYXZlbjoge1xuICAgICAgICAgIGdyb3VwSWQ6IG1hdmVuLm1hdmVuR3JvdXBJZCxcbiAgICAgICAgICBhcnRpZmFjdElkOiBtYXZlbi5tYXZlbkFydGlmYWN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcImphdmFcIik7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgdGFzaywgXCJqYXZhXCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCB0YXNrLCBcImphdmFcIiwgbWF2ZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IHB5cGkgPSBvcHRpb25zLnB1Ymxpc2hUb1B5cGk7XG4gICAgaWYgKHB5cGkpIHtcbiAgICAgIHRhcmdldHMucHl0aG9uID0ge1xuICAgICAgICBkaXN0TmFtZTogcHlwaS5kaXN0TmFtZSxcbiAgICAgICAgbW9kdWxlOiBweXBpLm1vZHVsZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwicHl0aG9uXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwicHl0aG9uXCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCB0YXNrLCBcInB5dGhvblwiLCBweXBpKTtcbiAgICB9XG5cbiAgICBjb25zdCBudWdldCA9IG9wdGlvbnMucHVibGlzaFRvTnVnZXQ7XG4gICAgaWYgKG51Z2V0KSB7XG4gICAgICB0YXJnZXRzLmRvdG5ldCA9IHtcbiAgICAgICAgbmFtZXNwYWNlOiBudWdldC5kb3ROZXROYW1lc3BhY2UsXG4gICAgICAgIHBhY2thZ2VJZDogbnVnZXQucGFja2FnZUlkLFxuICAgICAgICBpY29uVXJsOiBudWdldC5pY29uVXJsLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdGFzayA9IHRoaXMuYWRkUGFja2FnaW5nVGFzayhwcm9qZWN0LCBwYWNrYWdlQWxsVGFzaywgXCJkb3RuZXRcIik7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgdGFzaywgXCJkb3RuZXRcIiwgZXh0cmFKb2JPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9SZWxlYXNlKHByb2plY3QsIHRhc2ssIFwiZG90bmV0XCIsIG51Z2V0KTtcbiAgICB9XG5cbiAgICBjb25zdCBnb2xhbmcgPSBvcHRpb25zLnB1Ymxpc2hUb0dvO1xuICAgIGlmIChnb2xhbmcpIHtcbiAgICAgIHRhcmdldHMuZ28gPSB7XG4gICAgICAgIG1vZHVsZU5hbWU6IGdvbGFuZy5tb2R1bGVOYW1lLFxuICAgICAgICBwYWNrYWdlTmFtZTogZ29sYW5nLnBhY2thZ2VOYW1lLFxuICAgICAgICB2ZXJzaW9uU3VmZml4OiBnb2xhbmcudmVyc2lvblN1ZmZpeCxcbiAgICAgIH07XG5cbiAgICAgIGlmIChnb2xhbmcucHVibGlzaFRvU291cmNlUmVwb3NpdG9yeSkge1xuICAgICAgICBwcm9qZWN0LnJvb3QuZ2l0aWdub3JlLmluY2x1ZGUoXCIqKi9qc2lpLyoudGd6XCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcImdvXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiZ29cIiwgZXh0cmFKb2JPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9SZWxlYXNlKHByb2plY3QsIHRhc2ssIFwiZ29cIiwgZ29sYW5nKTtcbiAgICB9XG5cbiAgICAvLyBJZiBqc2lpVmVyc2lvbiBpcyBcIipcIiwgZG9uJ3Qgc3BlY2lmeSBhbnl0aGluZyBzbyB0aGUgdXNlciBjYW4gbWFuYWdlLlxuICAgIC8vIE90aGVyd2lzZSwgdXNlIGBqc2lpVmVyc2lvbmBcbiAgICBjb25zdCBqc2lpVmVyc2lvbiA9IG9wdGlvbnMuanNpaVZlcnNpb24gPz8gXCJ+NS45LjBcIjtcbiAgICBjb25zdCBqc2lpU3VmZml4ID0ganNpaVZlcnNpb24gPT09IFwiKlwiID8gXCJcIiA6IGBAJHtqc2lpVmVyc2lvbn1gO1xuICAgIHByb2plY3QuYWRkRGV2RGVwcyhcbiAgICAgIGBqc2lpJHtqc2lpU3VmZml4fWAsXG4gICAgICBganNpaS1yb3NldHRhJHtqc2lpU3VmZml4fWAsXG4gICAgICBcImpzaWktZGlmZlwiLFxuICAgICAgXCJqc2lpLXBhY21ha1wiLFxuICAgICk7XG5cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLmpzaWlcIik7XG4gICAgaWYgKCF0c2NvbmZpZykge1xuICAgICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcInRzY29uZmlnLmpzb25cIik7XG4gICAgfVxuICAgIHByb2plY3QubnBtaWdub3JlPy5pbmNsdWRlKFwiLmpzaWlcIik7XG5cbiAgICBpZiAob3B0aW9ucy5kb2NnZW4gPz8gdHJ1ZSkge1xuICAgICAgLy8gSWYganNpaVZlcnNpb24gaXMgXCIqXCIsIGRvbid0IHNwZWNpZnkgYW55dGhpbmcgc28gdGhlIHVzZXIgY2FuIG1hbmFnZS5cbiAgICAgIC8vIE90aGVyd2lzZSB1c2UgYSB2ZXJzaW9uIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBzdXBwb3J0ZWQganNpaSByZWxlYXNlcy5cbiAgICAgIGNvbnN0IGRvY2dlblZlcnNpb24gPSBvcHRpb25zLmpzaWlWZXJzaW9uID09PSBcIipcIiA/IFwiKlwiIDogXCJeMTAuNS4wXCI7XG4gICAgICBuZXcgSnNpaURvY2dlbihwcm9qZWN0LCB7XG4gICAgICAgIHZlcnNpb246IGRvY2dlblZlcnNpb24sXG4gICAgICAgIGZpbGVQYXRoOiBvcHRpb25zLmRvY2dlbkZpbGVQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8ganNpaSB1cGRhdGVzIC5ucG1pZ25vcmUsIHNvIHdlIG1ha2UgaXQgd3JpdGFibGVcbiAgICBpZiAocHJvamVjdC5ucG1pZ25vcmUpIHtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqL1xuICBwcml2YXRlIGFkZFRhcmdldFRvUmVsZWFzZShcbiAgICBwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBwYWNrVGFzazogVGFzayxcbiAgICBsYW5ndWFnZTogSnNpaVBhY21ha1RhcmdldCxcbiAgICB0YXJnZXQ6XG4gICAgICB8IEpzaWlQeXRob25UYXJnZXRcbiAgICAgIHwgSnNpaURvdE5ldFRhcmdldFxuICAgICAgfCBKc2lpR29UYXJnZXRcbiAgICAgIHwgSnNpaUphdmFUYXJnZXRcbiAgICAgIHwgTnBtUHVibGlzaE9wdGlvbnMsXG4gICkge1xuICAgIGlmICghcHJvamVjdC5yZWxlYXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFjbWFrID0gdGhpcy5wYWNtYWtGb3JMYW5ndWFnZShwcm9qZWN0LCBsYW5ndWFnZSwgcGFja1Rhc2spO1xuICAgIGNvbnN0IHByZVB1Ymxpc2hTdGVwcyA9IFtcbiAgICAgIC4uLnBhY21hay5ib290c3RyYXBTdGVwcyxcbiAgICAgIFdvcmtmbG93U3RlcHMuY2hlY2tvdXQoe1xuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgcGF0aDogUkVQT19URU1QX0RJUkVDVE9SWSxcbiAgICAgICAgICAuLi4ocHJvamVjdC5naXRodWI/LmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4ucGFjbWFrLnBhY2thZ2luZ1N0ZXBzLFxuICAgIF07XG4gICAgY29uc3QgY29tbW9uUHVibGlzaE9wdGlvbnM6IENvbW1vblB1Ymxpc2hPcHRpb25zID0ge1xuICAgICAgcHVibGlzaFRvb2xzOiBwYWNtYWsucHVibGlzaFRvb2xzLFxuICAgICAgcHJlUHVibGlzaFN0ZXBzLFxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyOiBQdWJsaXNoVG8gPSBwdWJsaXNoVG9bbGFuZ3VhZ2VdO1xuICAgIHByb2plY3QucmVsZWFzZT8ucHVibGlzaGVyW2hhbmRsZXJdKHtcbiAgICAgIC4uLmNvbW1vblB1Ymxpc2hPcHRpb25zLFxuICAgICAgLi4udGFyZ2V0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIGJ1aWxkIHdvcmtmbG93LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRUYXJnZXRUb0J1aWxkKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHBhY2tUYXNrOiBUYXNrLFxuICAgIGxhbmd1YWdlOiBKc2lpUGFjbWFrVGFyZ2V0LFxuICAgIGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+LFxuICApIHtcbiAgICBpZiAoIXByb2plY3QuYnVpbGRXb3JrZmxvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYWNtYWsgPSB0aGlzLnBhY21ha0Zvckxhbmd1YWdlKHByb2plY3QsIGxhbmd1YWdlLCBwYWNrVGFzayk7XG5cbiAgICBwcm9qZWN0LmJ1aWxkV29ya2Zsb3cuYWRkUG9zdEJ1aWxkSm9iKGBwYWNrYWdlLSR7bGFuZ3VhZ2V9YCwge1xuICAgICAgLi4uZmlsdGVyZWRSdW5zT25PcHRpb25zKFxuICAgICAgICBleHRyYUpvYk9wdGlvbnMucnVuc09uLFxuICAgICAgICBleHRyYUpvYk9wdGlvbnMucnVuc09uR3JvdXAsXG4gICAgICApLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjpcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBwcm9qZWN0Lm5vZGVWZXJzaW9uID8/XG4gICAgICAgICAgICBcImx0cy8qXCIsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnBhY21hay5wdWJsaXNoVG9vbHMsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLi4ucGFjbWFrLmJvb3RzdHJhcFN0ZXBzLFxuICAgICAgICBXb3JrZmxvd1N0ZXBzLmNoZWNrb3V0KHtcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBwYXRoOiBSRVBPX1RFTVBfRElSRUNUT1JZLFxuICAgICAgICAgICAgcmVmOiBQVUxMX1JFUVVFU1RfU0hBLFxuICAgICAgICAgICAgcmVwb3NpdG9yeTogUFVMTF9SRVFVRVNUX1JFUE9TSVRPUlksXG4gICAgICAgICAgICAuLi4ocHJvamVjdC5naXRodWI/LmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4ucGFjbWFrLnBhY2thZ2luZ1N0ZXBzLFxuICAgICAgXSxcbiAgICAgIC4uLmV4dHJhSm9iT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUGFja2FnaW5nVGFzayhcbiAgICBwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBwYWNrYWdlQWxsVGFzazogVGFzayxcbiAgICBsYW5ndWFnZTogSnNpaVBhY21ha1RhcmdldCxcbiAgKTogVGFzayB7XG4gICAgY29uc3QgcGFja2FnZVRhcmdldFRhc2sgPSBwcm9qZWN0LnRhc2tzLmFkZFRhc2soYHBhY2thZ2U6JHtsYW5ndWFnZX1gLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYENyZWF0ZSAke2xhbmd1YWdlfSBsYW5ndWFnZSBiaW5kaW5nc2AsXG4gICAgfSk7XG4gICAgY29uc3QgY29tbWFuZFBhcnRzID0gW1wianNpaS1wYWNtYWtcIiwgXCItdlwiXTtcblxuICAgIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNKSB7XG4gICAgICBjb21tYW5kUGFydHMucHVzaChcIi0tcGFjay1jb21tYW5kXCIsIFwicG5wbSBwYWNrXCIpO1xuICAgIH1cblxuICAgIGNvbW1hbmRQYXJ0cy5wdXNoKFwiLS10YXJnZXRcIiwgbGFuZ3VhZ2UpO1xuXG4gICAgcGFja2FnZVRhcmdldFRhc2suZXhlY0FyZ3MoY29tbWFuZFBhcnRzKTtcblxuICAgIHBhY2thZ2VBbGxUYXNrLnNwYXduKHBhY2thZ2VUYXJnZXRUYXNrKTtcbiAgICByZXR1cm4gcGFja2FnZVRhcmdldFRhc2s7XG4gIH1cblxuICBwcml2YXRlIHBhY21ha0Zvckxhbmd1YWdlKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHRhcmdldDogSnNpaVBhY21ha1RhcmdldCxcbiAgICBwYWNrVGFzazogVGFzayxcbiAgKToge1xuICAgIHB1Ymxpc2hUb29sczogVG9vbHM7XG4gICAgYm9vdHN0cmFwU3RlcHM6IEFycmF5PFN0ZXA+O1xuICAgIHBhY2thZ2luZ1N0ZXBzOiBBcnJheTxTdGVwPjtcbiAgfSB7XG4gICAgY29uc3QgYm9vdHN0cmFwU3RlcHM6IEFycmF5PFN0ZXA+ID0gW107XG4gICAgY29uc3QgcGFja2FnaW5nU3RlcHM6IEFycmF5PFN0ZXA+ID0gW107XG5cbiAgICAvLyBHZW5lcmljIGJvb3RzdHJhcHBpbmcgZm9yIGFsbCB0YXJnZXQgbGFuZ3VhZ2VzXG4gICAgYm9vdHN0cmFwU3RlcHMucHVzaCguLi4odGhpcy5vcHRpb25zLndvcmtmbG93Qm9vdHN0cmFwU3RlcHMgPz8gW10pKTtcbiAgICBpZiAocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiU2V0dXAgcG5wbVwiLFxuICAgICAgICB1c2VzOiBBY3Rpb25SZWZzLlBOUE1fQUNUSU9OX1NFVFVQLFxuICAgICAgICB3aXRoOiB7IHZlcnNpb246IHByb2plY3QucGFja2FnZS5wbnBtVmVyc2lvbiB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5CVU4pIHtcbiAgICAgIGJvb3RzdHJhcFN0ZXBzLnB1c2goe1xuICAgICAgICBuYW1lOiBcIlNldHVwIGJ1blwiLFxuICAgICAgICB1c2VzOiBBY3Rpb25SZWZzLk9WRU5fU0hfU0VUVVBfQlVOLFxuICAgICAgICB3aXRoOiB7IFwiYnVuLXZlcnNpb25cIjogcHJvamVjdC5wYWNrYWdlLmJ1blZlcnNpb24gfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNZYXJuQmVycnkocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyKSkge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiRW5hYmxlIGNvcmVwYWNrXCIsXG4gICAgICAgIHJ1bjogXCJjb3JlcGFjayBlbmFibGVcIixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtEaXIgPSB0aGlzLm9wdGlvbnMud29ya3NwYWNlRGlyZWN0b3J5XG4gICAgICA/IGAke1JFUE9fVEVNUF9ESVJFQ1RPUll9LyR7dGhpcy5vcHRpb25zLndvcmtzcGFjZURpcmVjdG9yeX1gXG4gICAgICA6IFJFUE9fVEVNUF9ESVJFQ1RPUlk7XG5cbiAgICAvLyBJbnN0YWxsYXRpb24gc3RlcHMgYmVmb3JlIHBhY2thZ2luZywgYnV0IGFmdGVyIGNoZWNrb3V0XG4gICAgcGFja2FnaW5nU3RlcHMucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJJbnN0YWxsIERlcGVuZGVuY2llc1wiLFxuICAgICAgICBydW46IGBjZCAke1JFUE9fVEVNUF9ESVJFQ1RPUll9ICYmICR7cHJvamVjdC5wYWNrYWdlLmluc3RhbGxDb21tYW5kfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkV4dHJhY3QgYnVpbGQgYXJ0aWZhY3RcIixcbiAgICAgICAgcnVuOiBgdGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9L2pzLyoudGd6IC1DICR7d29ya0Rpcn1gLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogYE1vdmUgYnVpbGQgYXJ0aWZhY3Qgb3V0IG9mIHRoZSB3YXlgLFxuICAgICAgICBydW46IGBtdiAke3Byb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5fSAke0JVSUxEX0FSVElGQUNUX09MRF9ESVJ9YCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGBDcmVhdGUgJHt0YXJnZXR9IGFydGlmYWN0YCxcbiAgICAgICAgcnVuOiBgY2QgJHt3b3JrRGlyfSAmJiAke3Byb2plY3QucnVuVGFza0NvbW1hbmQocGFja1Rhc2spfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBgQ29sbGVjdCAke3RhcmdldH0gYXJ0aWZhY3RgLFxuICAgICAgICBydW46IGBtdiAke3dvcmtEaXJ9LyR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9ICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9YCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwdWJsaXNoVG9vbHM6IEpTSUlfVE9PTENIQUlOW3RhcmdldF0sXG4gICAgICBib290c3RyYXBTdGVwcyxcbiAgICAgIHBhY2thZ2luZ1N0ZXBzLFxuICAgIH07XG4gIH1cbn1cblxudHlwZSBQdWJsaXNoVG8gPSBrZXlvZiBQdWJsaXNoZXIgJlxuICAoXG4gICAgfCBcInB1Ymxpc2hUb05wbVwiXG4gICAgfCBcInB1Ymxpc2hUb01hdmVuXCJcbiAgICB8IFwicHVibGlzaFRvUHlQaVwiXG4gICAgfCBcInB1Ymxpc2hUb051Z2V0XCJcbiAgICB8IFwicHVibGlzaFRvR29cIlxuICApO1xuXG50eXBlIFB1Ymxpc2hUb1RhcmdldCA9IHsgW0sgaW4gSnNpaVBhY21ha1RhcmdldF06IFB1Ymxpc2hUbyB9O1xuY29uc3QgcHVibGlzaFRvOiBQdWJsaXNoVG9UYXJnZXQgPSB7XG4gIGpzOiBcInB1Ymxpc2hUb05wbVwiLFxuICBqYXZhOiBcInB1Ymxpc2hUb01hdmVuXCIsXG4gIHB5dGhvbjogXCJwdWJsaXNoVG9QeVBpXCIsXG4gIGRvdG5ldDogXCJwdWJsaXNoVG9OdWdldFwiLFxuICBnbzogXCJwdWJsaXNoVG9Hb1wiLFxufTtcbiJdfQ==
@@ -11,7 +11,7 @@ const dependencies_1 = require("../dependencies");
11
11
  * - Enforces that markdown file is checked in
12
12
  */
13
13
  class JsiiDocgen extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiDocgen", version: "0.104.19" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiDocgen", version: "0.104.21" };
15
15
  /**
16
16
  * Returns the JsiiDocgen component of a project or undefined if there is none.
17
17
  */
@@ -34,6 +34,10 @@ export interface JsiiProjectOptions extends TypeScriptProjectOptions {
34
34
  readonly publishToPypi?: JsiiPythonTarget;
35
35
  /**
36
36
  * Publish Go bindings to a git repository.
37
+ *
38
+ * A separate repository is recommended. If `moduleName` refers to the source
39
+ * repository, set `publishToSourceRepository` to `true`.
40
+ *
37
41
  * @default - no publishing
38
42
  */
39
43
  readonly publishToGo?: JsiiGoTarget;
@@ -126,12 +130,25 @@ export interface JsiiGoTarget extends GoPublishOptions {
126
130
  /**
127
131
  * The name of the target repository in which this module will be published (e.g. github.com/owner/repo).
128
132
  *
133
+ * A repository separate from the source repository is recommended. To publish
134
+ * to the source repository, set `publishToSourceRepository` to `true`.
135
+ *
129
136
  * The module itself will always be published under a subdirectory named according
130
137
  * to the `packageName` of the module (e.g. github.com/foo/bar/pkg).
131
138
  *
132
139
  * @example github.com/owner/repo
133
140
  */
134
141
  readonly moduleName: string;
142
+ /**
143
+ * Set when `moduleName` is the repository this project lives in.
144
+ *
145
+ * A separate target repository for Go is recommended. If the source repository
146
+ * is used instead, set this to `true` to adjust gitignore so Git can select the
147
+ * embedded jsii tarballs.
148
+ *
149
+ * @default false
150
+ */
151
+ readonly publishToSourceRepository?: boolean;
135
152
  /**
136
153
  * The name of the Go package name.
137
154
  *
@@ -21,7 +21,7 @@ var Stability;
21
21
  * @pjid jsii
22
22
  */
23
23
  class JsiiProject extends typescript_1.TypeScriptProject {
24
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.104.19" };
24
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.104.21" };
25
25
  constructor(options) {
26
26
  const { authorEmail, authorUrl } = parseAuthorAddress(options);
27
27
  const defaultOptions = {
@@ -123,4 +123,4 @@ function parseAuthorAddress(options) {
123
123
  }
124
124
  return { authorEmail, authorUrl };
125
125
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9qc2lpLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLCtCQUFnQztBQUVoQyw2Q0FBeUM7QUFDekMsc0NBQW1DO0FBUW5DLDhDQUFrRDtBQUNsRCxrQ0FBNEQ7QUFFNUQsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUM7QUFDeEMsTUFBTSxTQUFTLEdBQ2Isc0xBQXNMLENBQUM7QUFtSHpMLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQiwwQ0FBNkIsQ0FBQTtJQUM3Qiw4QkFBaUIsQ0FBQTtJQUNqQixzQ0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsU0FBUyx5QkFBVCxTQUFTLFFBSXBCO0FBbUREOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSw4QkFBaUI7O0lBQ2hELFlBQVksT0FBMkI7UUFDckMsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvRCxNQUFNLGNBQWMsR0FBc0M7WUFDeEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ2pDLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTTtZQUMxQixXQUFXO1lBQ1gsU0FBUztZQUNULFFBQVEsRUFBRTtnQkFDUixlQUFlLEVBQUU7b0JBQ2Ysc0NBQXNDO29CQUN0QyxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO29CQUNmLE1BQU0sRUFBRSxRQUFRO29CQUNoQixlQUFlLEVBQUUsSUFBSTtvQkFDckIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixhQUFhLEVBQUUsS0FBSztpQkFDckI7YUFDRjtZQUNELFdBQVcsRUFBRTtnQkFDWCxlQUFlLEVBQUU7b0JBQ2YsYUFBYSxFQUFFLElBQUk7b0JBQ25CLGVBQWUsRUFBRSxJ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Q0FDakYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRUFBK0UsQ0FDaEYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDNUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FDbkYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVRzY29uZmlnIH0gZnJvbSBcIi4vanNpaS1idWlsZFwiO1xuaW1wb3J0IHsgSnNpaUJ1aWxkIH0gZnJvbSBcIi4vanNpaS1idWlsZFwiO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSBcIi4uL2dpdGh1YlwiO1xuaW1wb3J0IHR5cGUge1xuICBHb1B1Ymxpc2hPcHRpb25zLFxuICBNYXZlblB1Ymxpc2hPcHRpb25zLFxuICBOdWdldFB1Ymxpc2hPcHRpb25zLFxuICBQeVBpUHVibGlzaE9wdGlvbnMsXG59IGZyb20gXCIuLi9yZWxlYXNlXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdCB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG5jb25zdCBFTUFJTF9SRUdFWCA9IC9eW15cXHNAXStAW15cXHNAXSskLztcbmNvbnN0IFVSTF9SRUdFWCA9XG4gIC8oKChbQS1aYS16XXszLDl9Oig/OlxcL1xcLyk/KSg/OltcXC07OiY9XFwrXFwkLFxcd10rQCk/W0EtWmEtejAtOVxcLlxcLV0rfCg/Ond3d1xcLnxbXFwtOzomPVxcK1xcJCxcXHddK0ApW0EtWmEtejAtOVxcLlxcLV0rKSgoPzpcXC9bXFwrfiVcXC9cXC5cXHdcXC1fXSopP1xcPz8oPzpbXFwtXFwrPSY7JUBcXC5cXHdfXSopIz8oPzpbXFwuXFwhXFwvXFxcXFxcd10qKSk/KS87XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVByb2plY3RPcHRpb25zIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSByb290ZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXQgcmVwb3NpdG9yeSBVUkwuXG4gICAqIEBkZWZhdWx0ICRHSVRfUkVNT1RFXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5VXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGF1dGhvci5cbiAgICogQGRlZmF1bHQgJEdJVF9VU0VSX05BTUVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCBvciBVUkwgb2YgdGhlIGxpYnJhcnkgYXV0aG9yLlxuICAgKiBAZGVmYXVsdCAkR0lUX1VTRVJfRU1BSUxcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvckFkZHJlc3M6IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGlzaCB0byBtYXZlblxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb01hdmVuPzogSnNpaUphdmFUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gcHlwaVxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb1B5cGk/OiBKc2lpUHl0aG9uVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIEdvIGJpbmRpbmdzIHRvIGEgZ2l0IHJlcG9zaXRvcnkuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvR28/OiBKc2lpR29UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gTnVHZXRcbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9OdWdldD86IEpzaWlEb3ROZXRUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgcnVuIEFQSSBjb21wYXRpYmlsaXR5IHRlc3QgYWdhaW5zdCB0aGUgbGF0ZXN0IHZlcnNpb24gcHVibGlzaGVkIHRvIG5wbSBhZnRlciBjb21waWxhdGlvbi5cbiAgICpcbiAgICogLSBZb3UgY2FuIG1hbnVhbGx5IHJ1biBjb21wYXRpYmlsaXR5IHRlc3RzIHVzaW5nIGB5YXJuIGNvbXBhdGAgaWYgdGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkLlxuICAgKiAtIFlvdSBjYW4gaWdub3JlIGNvbXBhdGliaWxpdHkgZmFpbHVyZXMgYnkgYWRkaW5nIGxpbmVzIHRvIGEgXCIuY29tcGF0aWdub3JlXCIgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGlnbm9yZSBmaWxlIGZvciBBUEkgY29tcGF0aWJpbGl0eSB0ZXN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCIuY29tcGF0aWdub3JlXCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhdElnbm9yZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWNjZXB0cyBhIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucy4gRmlsZXMgbWF0Y2hpbmcgYW55IG9mIHRob3NlIHBhdHRlcm5zIHdpbGwgYmUgZXhjbHVkZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBpbnB1dC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwganNpaSB3aWxsIGluY2x1ZGUgYWxsICoudHMgZmlsZXMgKGV4Y2VwdCAuZC50cyBmaWxlcykgaW4gdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgaW5wdXQuXG4gICAqIFRoaXMgY2FuIGJlIHByb2JsZW1hdGljIGZvciBleGFtcGxlIHdoZW4gdGhlIHBhY2thZ2UncyBidWlsZCBvciB0ZXN0IHByb2NlZHVyZSBnZW5lcmF0ZXMgLnRzIGZpbGVzXG4gICAqIHRoYXQgY2Fubm90IGJlIGNvbXBpbGVkIHdpdGgganNpaSdzIGNvbXBpbGVyIHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZVR5cGVzY3JpcHQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsZSBwYXRoIGZvciBnZW5lcmF0ZWQgZG9jcy5cbiAgICogQGRlZmF1bHQgXCJBUEkubWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jZ2VuRmlsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtaXQgYSBjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGFzc2VtYmx5XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb21wcmVzc0Fzc2VtYmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUganNpaSBjb21waWxlciB0byB1c2UuXG4gICAqXG4gICAqIFNldCB0byBcIipcIiBpZiB5b3Ugd2FudCB0byBtYW51YWxseSBtYW5hZ2UgdGhlIHZlcnNpb24gb2YganNpaSBpbiB5b3VyXG4gICAqIHByb2plY3QgYnkgbWFuYWdpbmcgdXBkYXRlcyB0byBgcGFja2FnZS5qc29uYCBvbiB5b3VyIG93bi5cbiAgICpcbiAgICogTk9URTogVGhlIGpzaWkgY29tcGlsZXIgcmVsZWFzZXMgc2luY2UgNS4wLjAgYXJlIG5vdCBzZW1hbnRpY2FsbHkgdmVyc2lvbmVkXG4gICAqIGFuZCBzaG91bGQgcmVtYWluIG9uIHRoZSBzYW1lIG1pbm9yLCBzbyB3ZSByZWNvbW1lbmQgdXNpbmcgYSBgfmAgZGVwZW5kZW5jeVxuICAgKiAoZS5nLiBgfjUuMC4wYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwifjUuOS4wXCJcbiAgICogQHBqbmV3IFwifjYuMC4wXCJcbiAgICovXG4gIHJlYWRvbmx5IGpzaWlWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMZXZlbCBvZiB0c2NvbmZpZyB2YWxpZGF0aW9uIGpzaWkgc2hvdWxkIHBlcmZvcm0gb24gdGhlIHVzZXItcHJvdmlkZWQgdHNjb25maWcuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgd2hlbiB0aGUgcHJvamVjdCBzeW50aGVzaXplcyBpdHMgb3duIHRzY29uZmlnXG4gICAqIChpLmUuIGBkaXNhYmxlVHNjb25maWdgIGlzIG5vdCBzZXQgb24gdGhlIFR5cGVTY3JpcHRQcm9qZWN0KS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2F3cy5naXRodWIuaW8vanNpaS91c2VyLWd1aWRlcy9saWItYXV0aG9yL2NvbmZpZ3VyYXRpb24vI3ZhbGlkYXRldHNjb25maWdcbiAgICogQGRlZmF1bHQgVmFsaWRhdGVUc2NvbmZpZy5TVFJJQ1RcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlVHNjb25maWc/OiBWYWxpZGF0ZVRzY29uZmlnO1xufVxuXG5leHBvcnQgZW51bSBTdGFiaWxpdHkge1xuICBFWFBFUklNRU5UQUwgPSBcImV4cGVyaW1lbnRhbFwiLFxuICBTVEFCTEUgPSBcInN0YWJsZVwiLFxuICBERVBSRUNBVEVEID0gXCJkZXByZWNhdGVkXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaUphdmFUYXJnZXQgZXh0ZW5kcyBNYXZlblB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgamF2YVBhY2thZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgbWF2ZW5Hcm91cElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdmVuQXJ0aWZhY3RJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlQeXRob25UYXJnZXQgZXh0ZW5kcyBQeVBpUHVibGlzaE9wdGlvbnMge1xuICByZWFkb25seSBkaXN0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBtb2R1bGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc2lpRG90TmV0VGFyZ2V0IGV4dGVuZHMgTnVnZXRQdWJsaXNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGRvdE5ldE5hbWVzcGFjZTogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaWNvblVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHbyB0YXJnZXQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlHb1RhcmdldCBleHRlbmRzIEdvUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhcmdldCByZXBvc2l0b3J5IGluIHdoaWNoIHRoaXMgbW9kdWxlIHdpbGwgYmUgcHVibGlzaGVkIChlLmcuIGdpdGh1Yi5jb20vb3duZXIvcmVwbykuXG4gICAqXG4gICAqIFRoZSBtb2R1bGUgaXRzZWxmIHdpbGwgYWx3YXlzIGJlIHB1Ymxpc2hlZCB1bmRlciBhIHN1YmRpcmVjdG9yeSBuYW1lZCBhY2NvcmRpbmdcbiAgICogdG8gdGhlIGBwYWNrYWdlTmFtZWAgb2YgdGhlIG1vZHVsZSAoZS5nLiBnaXRodWIuY29tL2Zvby9iYXIvcGtnKS5cbiAgICpcbiAgICogQGV4YW1wbGUgZ2l0aHViLmNvbS9vd25lci9yZXBvXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBHbyBwYWNrYWdlIG5hbWUuXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHBhY2thZ2UgbmFtZSB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGUgSmF2YVNjcmlwdCBtb2R1bGUgbmFtZVxuICAgKiBieSByZW1vdmluZyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgKGUuZy4gQHByb2plbi9mb28tYmFyIHdpbGwgYmUgcHJvamVuZm9vYmFyKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdGhlIEphdmFTY3JpcHQgbW9kdWxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN1ZmZpeCBhcHBlbmRlZCBhdCB0aGUgZW5kIG9mIHRoZSBtb2R1bGUgdmVyc2lvbiAoZS5nIGBcIi1kZXZwcmVmaXhcImApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25TdWZmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTXVsdGktbGFuZ3VhZ2UganNpaSBsaWJyYXJ5IHByb2plY3RcbiAqXG4gKiBAcGppZCBqc2lpXG4gKi9cbmV4cG9ydCBjbGFzcyBKc2lpUHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSnNpaVByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgeyBhdXRob3JFbWFpbCwgYXV0aG9yVXJsIH0gPSBwYXJzZUF1dGhvckFkZHJlc3Mob3B0aW9ucyk7XG5cbiAgICBjb25zdCBkZWZhdWx0T3B0aW9uczogUGFydGlhbDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+ID0ge1xuICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucy5yZXBvc2l0b3J5VXJsLFxuICAgICAgYXV0aG9yTmFtZTogb3B0aW9ucy5hdXRob3IsXG4gICAgICBhdXRob3JFbWFpbCxcbiAgICAgIGF1dGhvclVybCxcbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC8vIGpzaWkgc3RyaWN0IHZhbGlkYXRpb24gcmVxdWlyZW1lbnRzXG4gICAgICAgICAgdGFyZ2V0OiBcIkVTMjAyMlwiLFxuICAgICAgICAgIGxpYjogW1wiZXMyMDIyXCJdLFxuICAgICAgICAgIG1vZHVsZTogXCJub2RlMTZcIixcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgc2tpcExpYkNoZWNrOiB0cnVlLFxuICAgICAgICAgIG5vRW1pdE9uRXJyb3I6IHRydWUsXG4gICAgICAgICAgc3RyaXBJbnRlcm5hbDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNjb25maWdEZXY6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgc3RyaXBJbnRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmb3JjZWRPcHRpb25zID0ge1xuICAgICAgcmVsZWFzZVRvTnBtOiBmYWxzZSwgLy8gd2UgaGF2ZSBhIGpzaWkgcmVsZWFzZSB3b3JrZmxvd1xuICAgICAgZG9jZ2VuOiBmYWxzZSwgLy8gd2UgdXNlIGpzaWktZG9jZ2VuIGhlcmUgc28gZGlzYWJsZSB0eXBlc2NyaXB0IGRvY2dlblxuICAgIH07XG5cbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gZGVlcE1lcmdlKFtcbiAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGZvcmNlZE9wdGlvbnMsXG4gICAgXSkgYXMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zO1xuXG4gICAgc3VwZXIobWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAvLyBBcHBseSB0aGUganNpaSBtaXhpbiB1c2luZyB0aGUgY29uc3RydWN0cyAud2l0aCgpIHBhdHRlcm5cbiAgICB0aGlzLndpdGgoXG4gICAgICBuZXcgSnNpaUJ1aWxkKFxuICAgICAgICB7XG4gICAgICAgICAgcHVibGlzaFRvTWF2ZW46IG9wdGlvbnMucHVibGlzaFRvTWF2ZW4sXG4gICAgICAgICAgcHVibGlzaFRvUHlwaTogb3B0aW9ucy5wdWJsaXNoVG9QeXBpLFxuICAgICAgICAgIHB1Ymxpc2hUb0dvOiBvcHRpb25zLnB1Ymxpc2hUb0dvLFxuICAgICAgICAgIHB1Ymxpc2hUb051Z2V0OiBvcHRpb25zLnB1Ymxpc2hUb051Z2V0LFxuICAgICAgICAgIGNvbXBhdDogb3B0aW9ucy5jb21wYXQsXG4gICAgICAgICAgY29tcGF0SWdub3JlOiBvcHRpb25zLmNvbXBhdElnbm9yZSxcbiAgICAgICAgICBleGNsdWRlVHlwZXNjcmlwdDogb3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdCxcbiAgICAgICAgICBkb2NnZW5GaWxlUGF0aDogb3B0aW9ucy5kb2NnZW5GaWxlUGF0aCxcbiAgICAgICAgICBjb21wcmVzc0Fzc2VtYmx5OiBvcHRpb25zLmNvbXByZXNzQXNzZW1ibHksXG4gICAgICAgICAganNpaVZlcnNpb246IG9wdGlvbnMuanNpaVZlcnNpb24sXG4gICAgICAgICAgdmFsaWRhdGVUc2NvbmZpZzogb3B0aW9ucy52YWxpZGF0ZVRzY29uZmlnLFxuICAgICAgICAgIHN0YWJpbGl0eTogb3B0aW9ucy5zdGFiaWxpdHksXG4gICAgICAgICAgZG9jZ2VuOiBvcHRpb25zLmRvY2dlbixcbiAgICAgICAgICByZWxlYXNlVG9OcG06IG9wdGlvbnMucmVsZWFzZVRvTnBtLFxuICAgICAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBvcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nLFxuICAgICAgICAgIG5wbVZlcmlmeVB1Ymxpc2hlZDogb3B0aW9ucy5ucG1WZXJpZnlQdWJsaXNoZWQsXG4gICAgICAgICAgbnBtVmVyaWZ5UHVibGlzaGVkVGltZW91dFNlY29uZHM6XG4gICAgICAgICAgICBvcHRpb25zLm5wbVZlcmlmeVB1Ymxpc2hlZFRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgIGNvZGVBcnRpZmFjdE9wdGlvbnM6IG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucyxcbiAgICAgICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiB0aGlzLm5vZGVWZXJzaW9uLFxuICAgICAgICAgIHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM6IHRoaXMud29ya2Zsb3dCb290c3RyYXBTdGVwcyxcbiAgICAgICAgICB3b3Jrc3BhY2VEaXJlY3Rvcnk6IG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgoXG4gICAgICAgICAgICByZWxhdGl2ZSh0aGlzLnJvb3Qub3V0ZGlyLCB0aGlzLm91dGRpciksXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLnRoaXMuZ2V0Sm9iUnVuc09uQ29uZmlnKG9wdGlvbnMpLFxuICAgICAgICAgIC4uLihvcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2VcbiAgICAgICAgICAgID8geyBjb250YWluZXI6IHsgaW1hZ2U6IG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZSB9IH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgcnVucy1vbiBjb25maWcgZm9yIEpvYnMsIGZhbGxpbmcgYmFjayB0byB0aGUgcHJvamVjdCdzXG4gICAqIGdsb2JhbCBHaXRIdWIgcnVubmVyIHNlbGVjdGlvbiAoaWYgYW55KS5cbiAgICovXG4gIHByaXZhdGUgZ2V0Sm9iUnVuc09uQ29uZmlnKG9wdGlvbnM6IEpzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGdpdGh1YiA9IHRoaXMuZ2l0aHViID8/IEdpdEh1Yi5vZih0aGlzLnJvb3QpO1xuICAgIHJldHVybiAoXG4gICAgICBnaXRodWI/LnJ1bnNPbkNvbmZpZyh7XG4gICAgICAgIHJ1bnNPbjogb3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICAgICAgcnVuc09uR3JvdXA6IG9wdGlvbnMud29ya2Zsb3dSdW5zT25Hcm91cCxcbiAgICAgIH0pID8/IHt9XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUF1dGhvckFkZHJlc3Mob3B0aW9uczogSnNpaVByb2plY3RPcHRpb25zKSB7XG4gIGxldCBhdXRob3JFbWFpbCA9IG9wdGlvbnMuYXV0aG9yRW1haWw7XG4gIGxldCBhdXRob3JVcmwgPSBvcHRpb25zLmF1dGhvclVybDtcbiAgaWYgKG9wdGlvbnMuYXV0aG9yQWRkcmVzcykge1xuICAgIGlmIChvcHRpb25zLmF1dGhvckVtYWlsICYmIG9wdGlvbnMuYXV0aG9yRW1haWwgIT09IG9wdGlvbnMuYXV0aG9yQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImF1dGhvckVtYWlsIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYXV0aG9yQWRkcmVzc1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hdXRob3JVcmwgJiYgb3B0aW9ucy5hdXRob3JVcmwgIT09IG9wdGlvbnMuYXV0aG9yQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImF1dGhvclVybCBpcyBkZXByZWNhdGVkIGFuZCBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGF1dGhvckFkZHJlc3MuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChFTUFJTF9SRUdFWC50ZXN0KG9wdGlvbnMuYXV0aG9yQWRkcmVzcykpIHtcbiAgICAgIGF1dGhvckVtYWlsID0gb3B0aW9ucy5hdXRob3JBZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAoVVJMX1JFR0VYLnRlc3Qob3B0aW9ucy5hdXRob3JBZGRyZXNzKSkge1xuICAgICAgYXV0aG9yVXJsID0gb3B0aW9ucy5hdXRob3JBZGRyZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhdXRob3JBZGRyZXNzIG11c3QgYmUgZWl0aGVyIGFuIGVtYWlsIGFkZHJlc3Mgb3IgYSBVUkw6ICR7b3B0aW9ucy5hdXRob3JBZGRyZXNzfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBhdXRob3JFbWFpbCwgYXV0aG9yVXJsIH07XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9qc2lpLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLCtCQUFnQztBQUVoQyw2Q0FBeUM7QUFDekMsc0NBQW1DO0FBUW5DLDhDQUFrRDtBQUNsRCxrQ0FBNEQ7QUFFNUQsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUM7QUFDeEMsTUFBTSxTQUFTLEdBQ2Isc0xBQXNMLENBQUM7QUF1SHpMLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQiwwQ0FBNkIsQ0FBQTtJQUM3Qiw4QkFBaUIsQ0FBQTtJQUNqQixzQ0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsU0FBUyx5QkFBVCxTQUFTLFFBSXBCO0FBaUVEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSw4QkFBaUI7O0lBQ2hELFlBQVksT0FBMkI7UUFDckMsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvRCxNQUFNLGNBQWMsR0FBc0M7WUFDeEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ2pDLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTTtZQUMxQixXQUFXO1lBQ1gsU0FBUztZQUNULFFBQVEsRUFBRTtnQkFDUixlQUFlLEVBQUU7b0JBQ2Ysc0NBQXNDO29CQUN0QyxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO29CQUNmLE1BQU0sRUFBRSxRQUFRO29CQUNoQixlQUFlLEVBQUUsSUFBSTtvQkFDckIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixhQUFhLEVBQUUsS0FBSztpQkFDckI7YUFDRjtZQUNELFdBQVcsRUFBRTtnQkFDWCxlQUFlLEVBQUU7b0JBQ2YsYUFBYSxFQUFFLElBQUk7b0JBQ25CLGVBQWUsRUFBRSxJQUFJO2lCQUN0QjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFlBQVksRUFBRSxLQUFLLEVBQUUsa0NBQWtDO1lBQ3ZELE1BQU0sRUFBRSxLQUFLLEVBQUUsdURBQXVEO1NBQ3ZFLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxJQUFBLGdCQUFTLEVBQUM7WUFDOUIsY0FBYztZQUNkLE9BQU87WUFDUCxhQUFhO1NBQ2QsQ0FBNkIsQ0FBQztRQUUvQixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckIsNERBQTREO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQ1AsSUFBSSxzQkFBUyxDQUNYO1lBQ0UsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNwQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7WUFDbEMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtZQUM1QyxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtZQUMxQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtZQUMxQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CO1lBQ2xELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7WUFDOUMsZ0NBQWdDLEVBQzlCLE9BQU8sQ0FBQyxnQ0FBZ0M7WUFDMUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtZQUNoRCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsV0FBVztZQUNyQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQ25ELGtCQUFrQixFQUFFLElBQUEsNkJBQXNCLEVBQ3hDLElBQUEsZUFBUSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDeEM7U0FDRixFQUNEO1lBQ0UsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCO2dCQUNoQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEVBQUU7Z0JBQzFELENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDUixDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FBQyxPQUEyQjtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLGVBQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FDTCxNQUFNLEVBQUUsWUFBWSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYztZQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtTQUN6QyxDQUFDLElBQUksRUFBRSxDQUNULENBQUM7SUFDSixDQUFDOztBQTdGSCxrQ0E4RkM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE9BQTJCO0lBQ3JELElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDdEMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUNsQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekUsTUFBTSxJQUFJLEtBQUssQ0FDYixnRkFBZ0YsQ0FDakYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRUFBK0UsQ0FDaEYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDNUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FDbkYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVRzY29uZmlnIH0gZnJvbSBcIi4vanNpaS1idWlsZFwiO1xuaW1wb3J0IHsgSnNpaUJ1aWxkIH0gZnJvbSBcIi4vanNpaS1idWlsZFwiO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSBcIi4uL2dpdGh1YlwiO1xuaW1wb3J0IHR5cGUge1xuICBHb1B1Ymxpc2hPcHRpb25zLFxuICBNYXZlblB1Ymxpc2hPcHRpb25zLFxuICBOdWdldFB1Ymxpc2hPcHRpb25zLFxuICBQeVBpUHVibGlzaE9wdGlvbnMsXG59IGZyb20gXCIuLi9yZWxlYXNlXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdCB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG5jb25zdCBFTUFJTF9SRUdFWCA9IC9eW15cXHNAXStAW15cXHNAXSskLztcbmNvbnN0IFVSTF9SRUdFWCA9XG4gIC8oKChbQS1aYS16XXszLDl9Oig/OlxcL1xcLyk/KSg/OltcXC07OiY9XFwrXFwkLFxcd10rQCk/W0EtWmEtejAtOVxcLlxcLV0rfCg/Ond3d1xcLnxbXFwtOzomPVxcK1xcJCxcXHddK0ApW0EtWmEtejAtOVxcLlxcLV0rKSgoPzpcXC9bXFwrfiVcXC9cXC5cXHdcXC1fXSopP1xcPz8oPzpbXFwtXFwrPSY7JUBcXC5cXHdfXSopIz8oPzpbXFwuXFwhXFwvXFxcXFxcd10qKSk/KS87XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVByb2plY3RPcHRpb25zIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSByb290ZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXQgcmVwb3NpdG9yeSBVUkwuXG4gICAqIEBkZWZhdWx0ICRHSVRfUkVNT1RFXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5VXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGF1dGhvci5cbiAgICogQGRlZmF1bHQgJEdJVF9VU0VSX05BTUVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCBvciBVUkwgb2YgdGhlIGxpYnJhcnkgYXV0aG9yLlxuICAgKiBAZGVmYXVsdCAkR0lUX1VTRVJfRU1BSUxcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvckFkZHJlc3M6IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGlzaCB0byBtYXZlblxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb01hdmVuPzogSnNpaUphdmFUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gcHlwaVxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb1B5cGk/OiBKc2lpUHl0aG9uVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIEdvIGJpbmRpbmdzIHRvIGEgZ2l0IHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEEgc2VwYXJhdGUgcmVwb3NpdG9yeSBpcyByZWNvbW1lbmRlZC4gSWYgYG1vZHVsZU5hbWVgIHJlZmVycyB0byB0aGUgc291cmNlXG4gICAqIHJlcG9zaXRvcnksIHNldCBgcHVibGlzaFRvU291cmNlUmVwb3NpdG9yeWAgdG8gYHRydWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb0dvPzogSnNpaUdvVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIE51R2V0XG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvTnVnZXQ/OiBKc2lpRG90TmV0VGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJ1biBBUEkgY29tcGF0aWJpbGl0eSB0ZXN0IGFnYWluc3QgdGhlIGxhdGVzdCB2ZXJzaW9uIHB1Ymxpc2hlZCB0byBucG0gYWZ0ZXIgY29tcGlsYXRpb24uXG4gICAqXG4gICAqIC0gWW91IGNhbiBtYW51YWxseSBydW4gY29tcGF0aWJpbGl0eSB0ZXN0cyB1c2luZyBgeWFybiBjb21wYXRgIGlmIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZC5cbiAgICogLSBZb3UgY2FuIGlnbm9yZSBjb21wYXRpYmlsaXR5IGZhaWx1cmVzIGJ5IGFkZGluZyBsaW5lcyB0byBhIFwiLmNvbXBhdGlnbm9yZVwiIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb21wYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBpZ25vcmUgZmlsZSBmb3IgQVBJIGNvbXBhdGliaWxpdHkgdGVzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiLmNvbXBhdGlnbm9yZVwiXG4gICAqL1xuICByZWFkb25seSBjb21wYXRJZ25vcmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuIEZpbGVzIG1hdGNoaW5nIGFueSBvZiB0aG9zZSBwYXR0ZXJucyB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgaW5wdXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGpzaWkgd2lsbCBpbmNsdWRlIGFsbCAqLnRzIGZpbGVzIChleGNlcHQgLmQudHMgZmlsZXMpIGluIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKiBUaGlzIGNhbiBiZSBwcm9ibGVtYXRpYyBmb3IgZXhhbXBsZSB3aGVuIHRoZSBwYWNrYWdlJ3MgYnVpbGQgb3IgdGVzdCBwcm9jZWR1cmUgZ2VuZXJhdGVzIC50cyBmaWxlc1xuICAgKiB0aGF0IGNhbm5vdCBiZSBjb21waWxlZCB3aXRoIGpzaWkncyBjb21waWxlciBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVUeXBlc2NyaXB0Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEZpbGUgcGF0aCBmb3IgZ2VuZXJhdGVkIGRvY3MuXG4gICAqIEBkZWZhdWx0IFwiQVBJLm1kXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY2dlbkZpbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IGEgY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBhc3NlbWJseVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHJlc3NBc3NlbWJseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGpzaWkgY29tcGlsZXIgdG8gdXNlLlxuICAgKlxuICAgKiBTZXQgdG8gXCIqXCIgaWYgeW91IHdhbnQgdG8gbWFudWFsbHkgbWFuYWdlIHRoZSB2ZXJzaW9uIG9mIGpzaWkgaW4geW91clxuICAgKiBwcm9qZWN0IGJ5IG1hbmFnaW5nIHVwZGF0ZXMgdG8gYHBhY2thZ2UuanNvbmAgb24geW91ciBvd24uXG4gICAqXG4gICAqIE5PVEU6IFRoZSBqc2lpIGNvbXBpbGVyIHJlbGVhc2VzIHNpbmNlIDUuMC4wIGFyZSBub3Qgc2VtYW50aWNhbGx5IHZlcnNpb25lZFxuICAgKiBhbmQgc2hvdWxkIHJlbWFpbiBvbiB0aGUgc2FtZSBtaW5vciwgc28gd2UgcmVjb21tZW5kIHVzaW5nIGEgYH5gIGRlcGVuZGVuY3lcbiAgICogKGUuZy4gYH41LjAuMGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIn41LjkuMFwiXG4gICAqIEBwam5ldyBcIn42LjAuMFwiXG4gICAqL1xuICByZWFkb25seSBqc2lpVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTGV2ZWwgb2YgdHNjb25maWcgdmFsaWRhdGlvbiBqc2lpIHNob3VsZCBwZXJmb3JtIG9uIHRoZSB1c2VyLXByb3ZpZGVkIHRzY29uZmlnLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IHdoZW4gdGhlIHByb2plY3Qgc3ludGhlc2l6ZXMgaXRzIG93biB0c2NvbmZpZ1xuICAgKiAoaS5lLiBgZGlzYWJsZVRzY29uZmlnYCBpcyBub3Qgc2V0IG9uIHRoZSBUeXBlU2NyaXB0UHJvamVjdCkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuZ2l0aHViLmlvL2pzaWkvdXNlci1ndWlkZXMvbGliLWF1dGhvci9jb25maWd1cmF0aW9uLyN2YWxpZGF0ZXRzY29uZmlnXG4gICAqIEBkZWZhdWx0IFZhbGlkYXRlVHNjb25maWcuU1RSSUNUXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVRzY29uZmlnPzogVmFsaWRhdGVUc2NvbmZpZztcbn1cblxuZXhwb3J0IGVudW0gU3RhYmlsaXR5IHtcbiAgRVhQRVJJTUVOVEFMID0gXCJleHBlcmltZW50YWxcIixcbiAgU1RBQkxFID0gXCJzdGFibGVcIixcbiAgREVQUkVDQVRFRCA9IFwiZGVwcmVjYXRlZFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlKYXZhVGFyZ2V0IGV4dGVuZHMgTWF2ZW5QdWJsaXNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGphdmFQYWNrYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZDogc3RyaW5nO1xuICByZWFkb25seSBtYXZlbkFydGlmYWN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc2lpUHl0aG9uVGFyZ2V0IGV4dGVuZHMgUHlQaVB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgZGlzdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaURvdE5ldFRhcmdldCBleHRlbmRzIE51Z2V0UHVibGlzaE9wdGlvbnMge1xuICByZWFkb25seSBkb3ROZXROYW1lc3BhY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGljb25Vcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogR28gdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpR29UYXJnZXQgZXh0ZW5kcyBHb1B1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgcmVwb3NpdG9yeSBpbiB3aGljaCB0aGlzIG1vZHVsZSB3aWxsIGJlIHB1Ymxpc2hlZCAoZS5nLiBnaXRodWIuY29tL293bmVyL3JlcG8pLlxuICAgKlxuICAgKiBBIHJlcG9zaXRvcnkgc2VwYXJhdGUgZnJvbSB0aGUgc291cmNlIHJlcG9zaXRvcnkgaXMgcmVjb21tZW5kZWQuIFRvIHB1Ymxpc2hcbiAgICogdG8gdGhlIHNvdXJjZSByZXBvc2l0b3J5LCBzZXQgYHB1Ymxpc2hUb1NvdXJjZVJlcG9zaXRvcnlgIHRvIGB0cnVlYC5cbiAgICpcbiAgICogVGhlIG1vZHVsZSBpdHNlbGYgd2lsbCBhbHdheXMgYmUgcHVibGlzaGVkIHVuZGVyIGEgc3ViZGlyZWN0b3J5IG5hbWVkIGFjY29yZGluZ1xuICAgKiB0byB0aGUgYHBhY2thZ2VOYW1lYCBvZiB0aGUgbW9kdWxlIChlLmcuIGdpdGh1Yi5jb20vZm9vL2Jhci9wa2cpLlxuICAgKlxuICAgKiBAZXhhbXBsZSBnaXRodWIuY29tL293bmVyL3JlcG9cbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0IHdoZW4gYG1vZHVsZU5hbWVgIGlzIHRoZSByZXBvc2l0b3J5IHRoaXMgcHJvamVjdCBsaXZlcyBpbi5cbiAgICpcbiAgICogQSBzZXBhcmF0ZSB0YXJnZXQgcmVwb3NpdG9yeSBmb3IgR28gaXMgcmVjb21tZW5kZWQuIElmIHRoZSBzb3VyY2UgcmVwb3NpdG9yeVxuICAgKiBpcyB1c2VkIGluc3RlYWQsIHNldCB0aGlzIHRvIGB0cnVlYCB0byBhZGp1c3QgZ2l0aWdub3JlIHNvIEdpdCBjYW4gc2VsZWN0IHRoZVxuICAgKiBlbWJlZGRlZCBqc2lpIHRhcmJhbGxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvU291cmNlUmVwb3NpdG9yeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBHbyBwYWNrYWdlIG5hbWUuXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHBhY2thZ2UgbmFtZSB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGUgSmF2YVNjcmlwdCBtb2R1bGUgbmFtZVxuICAgKiBieSByZW1vdmluZyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgKGUuZy4gQHByb2plbi9mb28tYmFyIHdpbGwgYmUgcHJvamVuZm9vYmFyKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdGhlIEphdmFTY3JpcHQgbW9kdWxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN1ZmZpeCBhcHBlbmRlZCBhdCB0aGUgZW5kIG9mIHRoZSBtb2R1bGUgdmVyc2lvbiAoZS5nIGBcIi1kZXZwcmVmaXhcImApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25TdWZmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTXVsdGktbGFuZ3VhZ2UganNpaSBsaWJyYXJ5IHByb2plY3RcbiAqXG4gKiBAcGppZCBqc2lpXG4gKi9cbmV4cG9ydCBjbGFzcyBKc2lpUHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSnNpaVByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgeyBhdXRob3JFbWFpbCwgYXV0aG9yVXJsIH0gPSBwYXJzZUF1dGhvckFkZHJlc3Mob3B0aW9ucyk7XG5cbiAgICBjb25zdCBkZWZhdWx0T3B0aW9uczogUGFydGlhbDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+ID0ge1xuICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucy5yZXBvc2l0b3J5VXJsLFxuICAgICAgYXV0aG9yTmFtZTogb3B0aW9ucy5hdXRob3IsXG4gICAgICBhdXRob3JFbWFpbCxcbiAgICAgIGF1dGhvclVybCxcbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC8vIGpzaWkgc3RyaWN0IHZhbGlkYXRpb24gcmVxdWlyZW1lbnRzXG4gICAgICAgICAgdGFyZ2V0OiBcIkVTMjAyMlwiLFxuICAgICAgICAgIGxpYjogW1wiZXMyMDIyXCJdLFxuICAgICAgICAgIG1vZHVsZTogXCJub2RlMTZcIixcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgc2tpcExpYkNoZWNrOiB0cnVlLFxuICAgICAgICAgIG5vRW1pdE9uRXJyb3I6IHRydWUsXG4gICAgICAgICAgc3RyaXBJbnRlcm5hbDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNjb25maWdEZXY6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgc3RyaXBJbnRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmb3JjZWRPcHRpb25zID0ge1xuICAgICAgcmVsZWFzZVRvTnBtOiBmYWxzZSwgLy8gd2UgaGF2ZSBhIGpzaWkgcmVsZWFzZSB3b3JrZmxvd1xuICAgICAgZG9jZ2VuOiBmYWxzZSwgLy8gd2UgdXNlIGpzaWktZG9jZ2VuIGhlcmUgc28gZGlzYWJsZSB0eXBlc2NyaXB0IGRvY2dlblxuICAgIH07XG5cbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gZGVlcE1lcmdlKFtcbiAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGZvcmNlZE9wdGlvbnMsXG4gICAgXSkgYXMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zO1xuXG4gICAgc3VwZXIobWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAvLyBBcHBseSB0aGUganNpaSBtaXhpbiB1c2luZyB0aGUgY29uc3RydWN0cyAud2l0aCgpIHBhdHRlcm5cbiAgICB0aGlzLndpdGgoXG4gICAgICBuZXcgSnNpaUJ1aWxkKFxuICAgICAgICB7XG4gICAgICAgICAgcHVibGlzaFRvTWF2ZW46IG9wdGlvbnMucHVibGlzaFRvTWF2ZW4sXG4gICAgICAgICAgcHVibGlzaFRvUHlwaTogb3B0aW9ucy5wdWJsaXNoVG9QeXBpLFxuICAgICAgICAgIHB1Ymxpc2hUb0dvOiBvcHRpb25zLnB1Ymxpc2hUb0dvLFxuICAgICAgICAgIHB1Ymxpc2hUb051Z2V0OiBvcHRpb25zLnB1Ymxpc2hUb051Z2V0LFxuICAgICAgICAgIGNvbXBhdDogb3B0aW9ucy5jb21wYXQsXG4gICAgICAgICAgY29tcGF0SWdub3JlOiBvcHRpb25zLmNvbXBhdElnbm9yZSxcbiAgICAgICAgICBleGNsdWRlVHlwZXNjcmlwdDogb3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdCxcbiAgICAgICAgICBkb2NnZW5GaWxlUGF0aDogb3B0aW9ucy5kb2NnZW5GaWxlUGF0aCxcbiAgICAgICAgICBjb21wcmVzc0Fzc2VtYmx5OiBvcHRpb25zLmNvbXByZXNzQXNzZW1ibHksXG4gICAgICAgICAganNpaVZlcnNpb246IG9wdGlvbnMuanNpaVZlcnNpb24sXG4gICAgICAgICAgdmFsaWRhdGVUc2NvbmZpZzogb3B0aW9ucy52YWxpZGF0ZVRzY29uZmlnLFxuICAgICAgICAgIHN0YWJpbGl0eTogb3B0aW9ucy5zdGFiaWxpdHksXG4gICAgICAgICAgZG9jZ2VuOiBvcHRpb25zLmRvY2dlbixcbiAgICAgICAgICByZWxlYXNlVG9OcG06IG9wdGlvbnMucmVsZWFzZVRvTnBtLFxuICAgICAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBvcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nLFxuICAgICAgICAgIG5wbVZlcmlmeVB1Ymxpc2hlZDogb3B0aW9ucy5ucG1WZXJpZnlQdWJsaXNoZWQsXG4gICAgICAgICAgbnBtVmVyaWZ5UHVibGlzaGVkVGltZW91dFNlY29uZHM6XG4gICAgICAgICAgICBvcHRpb25zLm5wbVZlcmlmeVB1Ymxpc2hlZFRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgIGNvZGVBcnRpZmFjdE9wdGlvbnM6IG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucyxcbiAgICAgICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiB0aGlzLm5vZGVWZXJzaW9uLFxuICAgICAgICAgIHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM6IHRoaXMud29ya2Zsb3dCb290c3RyYXBTdGVwcyxcbiAgICAgICAgICB3b3Jrc3BhY2VEaXJlY3Rvcnk6IG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgoXG4gICAgICAgICAgICByZWxhdGl2ZSh0aGlzLnJvb3Qub3V0ZGlyLCB0aGlzLm91dGRpciksXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLnRoaXMuZ2V0Sm9iUnVuc09uQ29uZmlnKG9wdGlvbnMpLFxuICAgICAgICAgIC4uLihvcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2VcbiAgICAgICAgICAgID8geyBjb250YWluZXI6IHsgaW1hZ2U6IG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZSB9IH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgcnVucy1vbiBjb25maWcgZm9yIEpvYnMsIGZhbGxpbmcgYmFjayB0byB0aGUgcHJvamVjdCdzXG4gICAqIGdsb2JhbCBHaXRIdWIgcnVubmVyIHNlbGVjdGlvbiAoaWYgYW55KS5cbiAgICovXG4gIHByaXZhdGUgZ2V0Sm9iUnVuc09uQ29uZmlnKG9wdGlvbnM6IEpzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGdpdGh1YiA9IHRoaXMuZ2l0aHViID8/IEdpdEh1Yi5vZih0aGlzLnJvb3QpO1xuICAgIHJldHVybiAoXG4gICAgICBnaXRodWI/LnJ1bnNPbkNvbmZpZyh7XG4gICAgICAgIHJ1bnNPbjogb3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICAgICAgcnVuc09uR3JvdXA6IG9wdGlvbnMud29ya2Zsb3dSdW5zT25Hcm91cCxcbiAgICAgIH0pID8/IHt9XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUF1dGhvckFkZHJlc3Mob3B0aW9uczogSnNpaVByb2plY3RPcHRpb25zKSB7XG4gIGxldCBhdXRob3JFbWFpbCA9IG9wdGlvbnMuYXV0aG9yRW1haWw7XG4gIGxldCBhdXRob3JVcmwgPSBvcHRpb25zLmF1dGhvclVybDtcbiAgaWYgKG9wdGlvbnMuYXV0aG9yQWRkcmVzcykge1xuICAgIGlmIChvcHRpb25zLmF1dGhvckVtYWlsICYmIG9wdGlvbnMuYXV0aG9yRW1haWwgIT09IG9wdGlvbnMuYXV0aG9yQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImF1dGhvckVtYWlsIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYXV0aG9yQWRkcmVzc1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hdXRob3JVcmwgJiYgb3B0aW9ucy5hdXRob3JVcmwgIT09IG9wdGlvbnMuYXV0aG9yQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImF1dGhvclVybCBpcyBkZXByZWNhdGVkIGFuZCBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGF1dGhvckFkZHJlc3MuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChFTUFJTF9SRUdFWC50ZXN0KG9wdGlvbnMuYXV0aG9yQWRkcmVzcykpIHtcbiAgICAgIGF1dGhvckVtYWlsID0gb3B0aW9ucy5hdXRob3JBZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAoVVJMX1JFR0VYLnRlc3Qob3B0aW9ucy5hdXRob3JBZGRyZXNzKSkge1xuICAgICAgYXV0aG9yVXJsID0gb3B0aW9ucy5hdXRob3JBZGRyZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhdXRob3JBZGRyZXNzIG11c3QgYmUgZWl0aGVyIGFuIGVtYWlsIGFkZHJlc3Mgb3IgYSBVUkw6ICR7b3B0aW9ucy5hdXRob3JBZGRyZXNzfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBhdXRob3JFbWFpbCwgYXV0aG9yVXJsIH07XG59XG4iXX0=
@@ -10,7 +10,7 @@ const component_1 = require("../component");
10
10
  * found in the test tree.
11
11
  */
12
12
  class AutoDiscover extends component_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.104.19" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.104.21" };
14
14
  constructor(project, options) {
15
15
  super(project);
16
16
  if (options.integrationTestAutoDiscover ?? true) {
@@ -23,7 +23,7 @@ exports.AutoDiscover = AutoDiscover;
23
23
  * Discovers and creates integration tests from files in the test root.
24
24
  */
25
25
  class IntegrationTestAutoDiscover extends cdk_1.IntegrationTestAutoDiscoverBase {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.104.19" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.104.21" };
27
27
  constructor(project, options) {
28
28
  super(project, options);
29
29
  for (const entrypoint of this.entrypoints) {
@@ -12,7 +12,7 @@ const python_project_1 = require("../python/python-project");
12
12
  * @pjid cdk8s-app-py
13
13
  */
14
14
  class Cdk8sPythonApp extends python_project_1.PythonProject {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.104.19" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.104.21" };
16
16
  /**
17
17
  * The CDK8s app entrypoint
18
18
  */
@@ -50,7 +50,7 @@ const yaml_1 = require("../yaml");
50
50
  * @pjid cdk8s-app-ts
51
51
  */
52
52
  class Cdk8sTypeScriptApp extends typescript_1.TypeScriptAppProject {
53
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.104.19" };
53
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.104.21" };
54
54
  /**
55
55
  * The CDK8s app entrypoint
56
56
  */