@codedrifters/configulator 0.0.82 → 0.0.84

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.
package/README.md CHANGED
@@ -147,6 +147,45 @@ The `MonorepoProject` accepts all options from `TypeScriptProjectOptions` plus:
147
147
  - `packageManager: NodePackageManager.PNPM` - PNPM is mandatory
148
148
  - `defaultReleaseBranch: "main"` - Standard branch name
149
149
 
150
+ **Pull Request Linting:**
151
+ - By default, pull request titles are validated to follow [Conventional Commits](https://www.conventionalcommits.org/)
152
+ - All conventional commit types are allowed by default: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
153
+ - This provides flexibility for different types of changes while maintaining consistency
154
+
155
+ **Overriding Pull Request Lint Options:**
156
+
157
+ To customize which commit types are allowed, override the `githubOptions.pullRequestLintOptions`:
158
+
159
+ ```typescript
160
+ const project = new MonorepoProject({
161
+ name: 'my-monorepo',
162
+ githubOptions: {
163
+ pullRequestLintOptions: {
164
+ semanticTitleOptions: {
165
+ types: ['feat', 'fix', 'docs', 'chore'], // Only allow these types
166
+ },
167
+ },
168
+ },
169
+ });
170
+ ```
171
+
172
+ You can also configure other pull request linting options:
173
+
174
+ ```typescript
175
+ const project = new MonorepoProject({
176
+ name: 'my-monorepo',
177
+ githubOptions: {
178
+ pullRequestLintOptions: {
179
+ semanticTitleOptions: {
180
+ types: ['feat', 'fix', 'docs'],
181
+ requireScope: true, // Require scope in commit type (e.g., feat(ui):)
182
+ scopes: ['ui', 'api', 'core'], // Only allow these scopes
183
+ },
184
+ },
185
+ },
186
+ });
187
+ ```
188
+
150
189
  The root project automatically includes `@codedrifters/configulator` and `constructs` as dev dependencies.
151
190
 
152
191
  ### TypeScriptProject
@@ -1,4 +1,4 @@
1
- import { AwsEnvironmentType, AwsStageType } from "@codedrifters/utils";
1
+ import { AwsEnvironmentType, AwsStageType, DeploymentTargetRoleType } from "@codedrifters/utils";
2
2
  import { Component } from "projen";
3
3
  import { AwsCdkTypeScriptApp } from "projen/lib/awscdk";
4
4
  import { AwsDeploymentConfig } from "./aws-deployment-config";
@@ -64,9 +64,17 @@ export interface AwsDeploymentTargetOptions {
64
64
  * @default 'dev'
65
65
  */
66
66
  readonly awsStageType?: AwsStageType;
67
+ /**
68
+ * Deployment target role: whether this (account, region) is the primary or
69
+ * secondary deployment target (e.g. primary vs replica region).
70
+ *
71
+ * @default 'primary'
72
+ */
73
+ readonly deploymentTargetRole?: DeploymentTargetRoleType;
67
74
  /**
68
75
  * AWS environment type, such as primary or secondary.
69
76
  *
77
+ * @deprecated Use `deploymentTargetRole` instead. This property is maintained for backward compatibility.
70
78
  * @default 'primary'
71
79
  */
72
80
  readonly awsEnvironmentType?: AwsEnvironmentType;
@@ -113,9 +121,17 @@ export declare class AwsDeploymentTarget extends Component {
113
121
  * @default 'dev'
114
122
  */
115
123
  awsStageType: AwsStageType;
124
+ /**
125
+ * Deployment target role: whether this (account, region) is the primary or
126
+ * secondary deployment target (e.g. primary vs replica region).
127
+ *
128
+ * @default 'primary'
129
+ */
130
+ deploymentTargetRole: DeploymentTargetRoleType;
116
131
  /**
117
132
  * AWS environment type, such as primary or secondary.
118
133
  *
134
+ * @deprecated Use `deploymentTargetRole` instead. This property is maintained for backward compatibility.
119
135
  * @default 'primary'
120
136
  */
121
137
  awsEnvironmentType: AwsEnvironmentType;
@@ -81,10 +81,13 @@ class AwsDeploymentTarget extends projen_1.Component {
81
81
  */
82
82
  this.awsStageType = options.awsStageType || utils_1.AWS_STAGE_TYPE.DEV;
83
83
  /**
84
- * Set default environment type
84
+ * Set deployment target role (preferred) or fall back to deprecated awsEnvironmentType.
85
85
  */
86
- this.awsEnvironmentType =
87
- options.awsEnvironmentType || utils_1.AWS_ENVIRONMENT_TYPE.PRIMARY;
86
+ const role = options.deploymentTargetRole ??
87
+ options.awsEnvironmentType ??
88
+ utils_1.DEPLOYMENT_TARGET_ROLE.PRIMARY;
89
+ this.deploymentTargetRole = role;
90
+ this.awsEnvironmentType = role;
88
91
  /**
89
92
  * Set default Branches
90
93
  */
@@ -157,4 +160,4 @@ class AwsDeploymentTarget extends projen_1.Component {
157
160
  }
158
161
  }
159
162
  exports.AwsDeploymentTarget = AwsDeploymentTarget;
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlcGxveW1lbnQtdGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3cy9hd3MtZGVwbG95bWVudC10YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBSzZCO0FBQzdCLG1DQUFtQztBQUVuQyxtRUFBOEQ7QUFpSDlELE1BQWEsbUJBQW9CLFNBQVEsa0JBQVM7SUFDaEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQTRCO1FBRTVCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUE0QixFQUFFLENBQzNELENBQUMsWUFBWSxtQkFBbUIsQ0FBQztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUE4REQsWUFDRSxPQUE0QixFQUM1QixPQUFtQztRQUVuQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUF4Q2pCOzs7O1dBSUc7UUFDSSxhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQStJdkM7Ozs7OztzRkFNOEU7UUFFdEUsd0JBQW1CLEdBQUcsR0FBUyxFQUFFO1lBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixNQUFNLFFBQVEsR0FBRztvQkFDZixRQUFRO29CQUNSLElBQUksQ0FBQyxZQUFZO29CQUNqQixJQUFJLENBQUMsT0FBTztvQkFDWixJQUFJLENBQUMsTUFBTTtpQkFDWixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUN0RCxHQUFHLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUc7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsSUFBSSxDQUNiLGlFQUFpRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsT0FBTyxV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LEVBQUUsQ0FBQztRQUUzQix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztDQWlFRjtBQXZQRCxrREF1UEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBV1NfRU5WSVJPTk1FTlRfVFlQRSxcbiAgQVdTX1NUQUdFX1RZUEUsXG4gIEF3c0Vudmlyb25tZW50VHlwZSxcbiAgQXdzU3RhZ2VUeXBlLFxufSBmcm9tIFwiQGNvZGVkcmlmdGVycy91dGlsc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gXCJwcm9qZW4vbGliL2F3c2Nka1wiO1xuaW1wb3J0IHsgQXdzRGVwbG95bWVudENvbmZpZyB9IGZyb20gXCIuL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuaW1wb3J0IHsgR2l0QnJhbmNoIH0gZnJvbSBcIi4uL2dpdFwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIEFXUyBEZXBsb3ltZW50IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBBIHNpbmdsZSBkZXBsb3ltZW50IHRhcmdldCB0aGF0IENESyBhcHBsaWNhdGlvbnMgY2FuIGJlIGRlcGxveWVkIGludG8uXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciBsb2NhbCBkZXBsb3ltZW50IGluIEFXUy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NMb2NhbERlcGxveW1lbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIEFXUyBwcm9maWxlIChpbiB+Ly5hd3MvY29uZmlnKSB0byB1c2UgZm9yIGxvY2FsIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGdlbmVyYXRlZCBkeW5hbWljYWxseSBiYXNlZCByb2xlIG5hbWUsIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZWQgUm9sZSB1c2VkIHRvIGNvbmR1Y3QgbG9jYWwgZGVwbG95bWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwicG93ZXJ1c2VyYWNjZXNzXCJcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0dGVybiB1c2VkIHRvIGlkZW50aWZ5IHN0YWNrcyB0byBkZXBsb3kgaW4gQ0kgZGVwbG95bWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICotJHthY2NvdW50fS0ke3JlZ2lvbn1cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrUGF0dGVybj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaURlcGxveW1lbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIE9JREMgSUFNIFJvbGUgdG8gYXNzdW1lIGZvciBDSSBkZXBsb3ltZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdHRlcm4gdXNlZCB0byBpZGVudGlmeSBzdGFja3MgdG8gZGVwbG95IGluIENJIGRlcGxveW1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAqLSR7YWNjb3VudH0tJHtyZWdpb259XG4gICAqL1xuICByZWFkb25seSBzdGFja1BhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRlcGxveW1lbnQgdGFyZ2V0IGluIEFXUywgaW5jbHVkaW5nIGFjY291bnQgYW5kIHJlZ2lvbiwgYW5kXG4gKiBicmFuY2hlcyBhbGxvd2VkIHRvIGRlcGxveSB0byB0aGlzIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NEZXBsb3ltZW50VGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBuYW1lIGZvciB0aGUgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcmVnaW9uIGZvciB0aGUgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogQVdTIGRlcGxveW1lbnQgdHlwZSwgc3VjaCBhcyBkZXYsIHN0YWdlLCBvciBwcm9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZGV2J1xuICAgKi9cbiAgcmVhZG9ubHkgYXdzU3RhZ2VUeXBlPzogQXdzU3RhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBBV1MgZW52aXJvbm1lbnQgdHlwZSwgc3VjaCBhcyBwcmltYXJ5IG9yIHNlY29uZGFyeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICByZWFkb25seSBhd3NFbnZpcm9ubWVudFR5cGU/OiBBd3NFbnZpcm9ubWVudFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcHJvZmlsZSB0byB1c2UgZm9yIHRoaXMgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbWFpbiddIHdoZW4gcHJvZCByZWxlYXNlIHR5cGUsIFsnZmVhdHVyZS8qJ10gd2hlbiBkZXYgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoZXM/OiBBcnJheTxHaXRCcmFuY2g+O1xuXG4gIC8qKlxuICAgKiBDYW4gdGhpcyBkZXBsb3ltZW50IHRhcmdldCBiZSB1c2VkIGZvciBsb2NhbCBkZXZlbG9wbWVudD9cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZSBmb3IgZGV2IGVudmlyb25tZW50cywgZmFsc2UgZm9yIHByb2QgZW52aXJvbm1lbnRzXG4gICAqL1xuICByZWFkb25seSBsb2NhbERlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHdoZW4gZGVwbG95aW5nIHRvIHRoaXMgdGFyZ2V0IGxvY2FsbHkuXG4gICAqL1xuICByZWFkb25seSBsb2NhbERlcGxveW1lbnRDb25maWc/OiBBd3NMb2NhbERlcGxveW1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIENhbiB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0IGJlIHVzZWQgaW4gQ0kgZGVwbG95bWVudHM/XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjaURlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qXG4gICAqIENvbmZpZ3VyYXRpb24gd2hlbiBkZXBsb3lpbmcgdG8gdGhpcyB0YXJnZXQgaW4gQ0kuXG5cbiAgICovXG4gIHJlYWRvbmx5IGNpRGVwbG95bWVudENvbmZpZz86IENpRGVwbG95bWVudENvbmZpZztcbn1cblxuZXhwb3J0IGNsYXNzIEF3c0RlcGxveW1lbnRUYXJnZXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogU3RhdGljIG1ldGhvZCB0byBkaXNjb3ZlcnQgdGFyZ2V0cyBpbiBhIHByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKFxuICAgIHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsXG4gICk6IEFycmF5PEF3c0RlcGxveW1lbnRUYXJnZXQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBBd3NEZXBsb3ltZW50VGFyZ2V0ID0+XG4gICAgICBjIGluc3RhbmNlb2YgQXdzRGVwbG95bWVudFRhcmdldDtcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbHRlcihpc0RlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IG5hbWUgZm9yIHRoZSBkZXBsb3ltZW50IHRhcmdldC5cbiAgICovXG4gIHB1YmxpYyBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcmVnaW9uIGZvciB0aGUgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqL1xuICBwdWJsaWMgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqJ1xuICAgKiBBV1Mgc3RhZ2UgdHlwZSwgc3VjaCBhcyBkZXYsIHN0YWdlLCBvciBwcm9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZGV2J1xuICAgKi9cbiAgcHVibGljIGF3c1N0YWdlVHlwZTogQXdzU3RhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBBV1MgZW52aXJvbm1lbnQgdHlwZSwgc3VjaCBhcyBwcmltYXJ5IG9yIHNlY29uZGFyeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBwdWJsaWMgYXdzRW52aXJvbm1lbnRUeXBlOiBBd3NFbnZpcm9ubWVudFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcHJvZmlsZSB0byB1c2UgZm9yIHRoaXMgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnbWFpbiddIHdoZW4gcHJvZCByZWxlYXNlIHR5cGUsIFsnZmVhdHVyZS8qJ10gd2hlbiBkZXYgdHlwZVxuICAgKi9cbiAgcHVibGljIGJyYW5jaGVzOiBBcnJheTxHaXRCcmFuY2g+ID0gW107XG5cbiAgLyoqXG4gICAqIENhbiB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0IGJlIHVzZWQgZm9yIGxvY2FsIGRldmVsb3BtZW50P1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlIGZvciBkZXYgZW52aXJvbm1lbnRzLCBmYWxzZSBmb3IgcHJvZCBlbnZpcm9ubWVudHNcbiAgICovXG4gIHB1YmxpYyBsb2NhbERlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHdoZW4gZGVwbG95aW5nIHRvIHRoaXMgdGFyZ2V0IGxvY2FsbHkuXG4gICAqL1xuICBwdWJsaWMgbG9jYWxEZXBsb3ltZW50Q29uZmlnPzogQXdzTG9jYWxEZXBsb3ltZW50Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBDYW4gdGhpcyBkZXBsb3ltZW50IHRhcmdldCBiZSB1c2VkIGluIENJIGRlcGxveW1lbnRzP1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHVibGljIGNpRGVwbG95bWVudD86IGJvb2xlYW47XG5cbiAgLypcbiAgICogQ29uZmlndXJhdGlvbiB3aGVuIGRlcGxveWluZyB0byB0aGlzIHRhcmdldCBpbiBDSS5cbiAgICovXG4gIHB1YmxpYyBjaURlcGxveW1lbnRDb25maWc/OiBSZXF1aXJlZDxDaURlcGxveW1lbnRDb25maWc+O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQ0RLIG91dHB1dCBkaXJlY3RvcnkgZm9yIHRoaXMgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqL1xuICBwdWJsaWMgYXdzRGVwbG95bWVudENvbmZpZzogQXdzRGVwbG95bWVudENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLFxuICAgIG9wdGlvbnM6IEF3c0RlcGxveW1lbnRUYXJnZXRPcHRpb25zLFxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8qKlxuICAgICAqIFNldCB0YXJnZXQgcmVnaW9uIGFuZCBhY2NvdW50LlxuICAgICAqL1xuICAgIHRoaXMuYWNjb3VudCA9IG9wdGlvbnMuYWNjb3VudDtcbiAgICB0aGlzLnJlZ2lvbiA9IG9wdGlvbnMucmVnaW9uO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGRlZmF1bHQgdHlwZVxuICAgICAqL1xuICAgIHRoaXMuYXdzU3RhZ2VUeXBlID0gb3B0aW9ucy5hd3NTdGFnZVR5cGUgfHwgQVdTX1NUQUdFX1RZUEUuREVWO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGRlZmF1bHQgZW52aXJvbm1lbnQgdHlwZVxuICAgICAqL1xuICAgIHRoaXMuYXdzRW52aXJvbm1lbnRUeXBlID1cbiAgICAgIG9wdGlvbnMuYXdzRW52aXJvbm1lbnRUeXBlIHx8IEFXU19FTlZJUk9OTUVOVF9UWVBFLlBSSU1BUlk7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgZGVmYXVsdCBCcmFuY2hlc1xuICAgICAqL1xuXG4gICAgdGhpcy5icmFuY2hlcyA9XG4gICAgICBvcHRpb25zLmJyYW5jaGVzID8/XG4gICAgICAodGhpcy5hd3NTdGFnZVR5cGUgPT09IEFXU19TVEFHRV9UWVBFLlBST0RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJyYW5jaDogXCJtYWluXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJyYW5jaDogXCJmZWF0dXJlLypcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgZGVmYXVsdCBmb3IgbG9jYWwgZGVwbG95bWVudFxuICAgICAqL1xuICAgIHRoaXMubG9jYWxEZXBsb3ltZW50ID1cbiAgICAgIG9wdGlvbnMubG9jYWxEZXBsb3ltZW50ID8/IHRoaXMuYXdzU3RhZ2VUeXBlID09PSBBV1NfU1RBR0VfVFlQRS5ERVY7XG5cbiAgICAvKipcbiAgICAgKiBTb21lIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgZm9yIGxvY2FsIGRlcGxveW1lbnRzLlxuICAgICAqL1xuICAgIGlmICh0aGlzLmxvY2FsRGVwbG95bWVudCkge1xuICAgICAgY29uc3Qgcm9sZU5hbWUgPVxuICAgICAgICBvcHRpb25zLmxvY2FsRGVwbG95bWVudENvbmZpZz8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgXCJwb3dlcnVzZXJhY2Nlc3NcIjtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPVxuICAgICAgICBvcHRpb25zLmxvY2FsRGVwbG95bWVudENvbmZpZz8ucHJvZmlsZSB8fFxuICAgICAgICBgJHtyb2xlTmFtZX0tJHt0aGlzLmF3c1N0YWdlVHlwZX0tJHt0aGlzLmFjY291bnR9LSR7dGhpcy5yZWdpb259YDtcblxuICAgICAgY29uc3Qgc3RhY2tQYXR0ZXJuID1cbiAgICAgICAgb3B0aW9ucy5sb2NhbERlcGxveW1lbnRDb25maWc/LnN0YWNrUGF0dGVybiB8fFxuICAgICAgICBgJHt0aGlzLmF3c1N0YWdlVHlwZX0vJHt0aGlzLmF3c0Vudmlyb25tZW50VHlwZX0vKi0ke3RoaXMuYWNjb3VudH0tJHt0aGlzLnJlZ2lvbn1gO1xuXG4gICAgICB0aGlzLmxvY2FsRGVwbG95bWVudENvbmZpZyA9IHtcbiAgICAgICAgcHJvZmlsZSxcbiAgICAgICAgcm9sZU5hbWUsXG4gICAgICAgIHN0YWNrUGF0dGVybixcbiAgICAgICAgLi4ub3B0aW9ucy5sb2NhbERlcGxveW1lbnRDb25maWcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBDSSBkZXBsb3ltZW50IGRlZmF1bHRcbiAgICAgKi9cbiAgICB0aGlzLmNpRGVwbG95bWVudCA9IG9wdGlvbnMuY2lEZXBsb3ltZW50ID8/IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU29tZSBkZWZhdWx0cyBmb3IgQ0kgZGVwbG95bWVudHMuXG4gICAgICovXG4gICAgaWYgKHRoaXMuY2lEZXBsb3ltZW50KSB7XG4gICAgICBjb25zdCByb2xlQXJuID1cbiAgICAgICAgb3B0aW9ucy5jaURlcGxveW1lbnRDb25maWc/LnJvbGVBcm4gfHxcbiAgICAgICAgYGFybjphd3M6aWFtOjoke3RoaXMuYWNjb3VudH06cm9sZS9HaXRIdWJEZXBsb3llcn1gO1xuXG4gICAgICBjb25zdCBzdGFja1BhdHRlcm4gPVxuICAgICAgICBvcHRpb25zLmNpRGVwbG95bWVudENvbmZpZz8uc3RhY2tQYXR0ZXJuIHx8XG4gICAgICAgIGAke3RoaXMuYXdzU3RhZ2VUeXBlfS8ke3RoaXMuYXdzRW52aXJvbm1lbnRUeXBlfS8qLSR7dGhpcy5hY2NvdW50fS0ke3RoaXMucmVnaW9ufWA7XG5cbiAgICAgIHRoaXMuY2lEZXBsb3ltZW50Q29uZmlnID0ge1xuICAgICAgICByb2xlQXJuLFxuICAgICAgICBzdGFja1BhdHRlcm4sXG4gICAgICAgIC4uLm9wdGlvbnMuY2lEZXBsb3ltZW50Q29uZmlnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kIG9yIGNyZWF0ZSBDREsgZm9sZGVyIGNvbmZpZyBmb3IgdGhpcyBwcm9qZWN0LlxuICAgICAqL1xuICAgIHRoaXMuYXdzRGVwbG95bWVudENvbmZpZyA9XG4gICAgICBBd3NEZXBsb3ltZW50Q29uZmlnLm9mKHByb2plY3QpIHx8IG5ldyBBd3NEZXBsb3ltZW50Q29uZmlnKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSB0YXJnZXQgdG8gdGhlIGRlcGxveW1lbnQgdGFyZ2V0cyBhcnJheS5cbiAgICAgKi9cbiAgICB0aGlzLmF3c0RlcGxveW1lbnRDb25maWcuYXdzRGVwbG95bWVudFRhcmdldHMucHVzaCh0aGlzKTtcblxuICAgIC8vIERlcGxveSB0YXNrcyBhcmUgY29uZmlndXJlZCBwZXIgdGFyZ2V0LlxuICAgIHRoaXMuY29uZmlndXJlRGVwbG95VGFzaygpO1xuXG4gICAgLy8gV2F0Y2ggdGFza3MgYXJlIGNvbmZpZ3VyZWQgcGVyIHRhcmdldC5cbiAgICB0aGlzLmNvbmZpZ3VyZVdhdGNoVGFzaygpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqXG4gICAqIERlcGxveSBUYXNrc1xuICAgKlxuICAgKiAtIElmIGxvY2FsIGRlcGxveSwgYWRkIGEgZGVwbG95IHRhc2suXG4gICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY29uZmlndXJlRGVwbG95VGFzayA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5sb2NhbERlcGxveW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhc2tOYW1lID0gW1xuICAgICAgICBcImRlcGxveVwiLFxuICAgICAgICB0aGlzLmF3c1N0YWdlVHlwZSxcbiAgICAgICAgdGhpcy5hY2NvdW50LFxuICAgICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIF0uam9pbihcIjpcIik7XG4gICAgICBjb25zdCBkZXBsb3lUYXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLmFkZFRhc2sodGFza05hbWUsIHtcbiAgICAgICAgZW52OiB0aGlzLmF3c0RlcGxveW1lbnRDb25maWcuZW52LFxuICAgICAgfSk7XG4gICAgICBkZXBsb3lUYXNrLmV4ZWMoXG4gICAgICAgIGBjZGsgZGVwbG95IC0tbG9va3Vwcz1mYWxzZSAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1wcm9maWxlPSR7dGhpcy5sb2NhbERlcGxveW1lbnRDb25maWc/LnByb2ZpbGV9IC0tYXBwPSR7dGhpcy5hd3NEZXBsb3ltZW50Q29uZmlnLmNka091dH0gXCIke3RoaXMubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5zdGFja1BhdHRlcm59XCJgLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqXG4gICAqIFdhdGNoIHRhc2tzXG4gICAqXG4gICAqIC0gQ29uZmlndXJlIHdhdGNoIHRhc2sgdG8gdXNlIHRoZSBicmFuY2ggbmFtZVxuICAgKiAtIGNvbmZpZ3VyZSB3YXRjaCB0YXNrIHRvIHVzZSB0aGUgY29ycmVjdCBzeW50aCBvdXRwdXQgbG9jYXRpb24uXG4gICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY29uZmlndXJlV2F0Y2hUYXNrID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLmxvY2FsRGVwbG95bWVudCkge1xuICAgICAgY29uc3QgdGFza05hbWUgPSBbXG4gICAgICAgIFwid2F0Y2hcIixcbiAgICAgICAgdGhpcy5hd3NTdGFnZVR5cGUsXG4gICAgICAgIHRoaXMuYWNjb3VudCxcbiAgICAgICAgdGhpcy5yZWdpb24sXG4gICAgICBdLmpvaW4oXCI6XCIpO1xuICAgICAgY29uc3Qgd2F0Y2hUYXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLmFkZFRhc2sodGFza05hbWUsIHtcbiAgICAgICAgZW52OiB0aGlzLmF3c0RlcGxveW1lbnRDb25maWcuZW52LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHVwZGF0ZSB0aGUgc3ludGggZmlyc3RcbiAgICAgIGNvbnN0IHN5bnRoU2lsZW50ID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJzeW50aDpzaWxlbnRcIik7XG4gICAgICBpZiAoc3ludGhTaWxlbnQpIHtcbiAgICAgICAgd2F0Y2hUYXNrLnNwYXduKHN5bnRoU2lsZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gZG8gYSBub3JtYWwgZGVwbG95XG4gICAgICB3YXRjaFRhc2suZXhlYyhcbiAgICAgICAgYGNkayBkZXBsb3kgLS1sb29rdXBzPWZhbHNlIC0tcmVxdWlyZS1hcHByb3ZhbD1uZXZlciAtLXByb2ZpbGU9JHt0aGlzLmxvY2FsRGVwbG95bWVudENvbmZpZz8ucHJvZmlsZX0gLS1hcHA9JHt0aGlzLmF3c0RlcGxveW1lbnRDb25maWcuY2RrT3V0fSBcIiR7dGhpcy5sb2NhbERlcGxveW1lbnRDb25maWc/LnN0YWNrUGF0dGVybn1cImAsXG4gICAgICApO1xuXG4gICAgICAvLyB3YXRjaCBmb3IgY2hhbmdlcyBhbmQgbG9nIG91dHB1dFxuICAgICAgd2F0Y2hUYXNrLmV4ZWMoXG4gICAgICAgIGBjZGsgd2F0Y2ggLS1sb29rdXBzPWZhbHNlIC0tcmVxdWlyZS1hcHByb3ZhbD1uZXZlciAtLWhvdHN3YXAgLS1wcm9maWxlPSR7dGhpcy5sb2NhbERlcGxveW1lbnRDb25maWc/LnByb2ZpbGV9IFwiJHt0aGlzLmxvY2FsRGVwbG95bWVudENvbmZpZz8uc3RhY2tQYXR0ZXJufVwiYCxcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlcGxveW1lbnQtdGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3cy9hd3MtZGVwbG95bWVudC10YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBTTZCO0FBQzdCLG1DQUFtQztBQUVuQyxtRUFBOEQ7QUEwSDlELE1BQWEsbUJBQW9CLFNBQVEsa0JBQVM7SUFDaEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQTRCO1FBRTVCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUE0QixFQUFFLENBQzNELENBQUMsWUFBWSxtQkFBbUIsQ0FBQztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUF1RUQsWUFDRSxPQUE0QixFQUM1QixPQUFtQztRQUVuQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUF4Q2pCOzs7O1dBSUc7UUFDSSxhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQW1KdkM7Ozs7OztzRkFNOEU7UUFFdEUsd0JBQW1CLEdBQUcsR0FBUyxFQUFFO1lBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixNQUFNLFFBQVEsR0FBRztvQkFDZixRQUFRO29CQUNSLElBQUksQ0FBQyxZQUFZO29CQUNqQixJQUFJLENBQUMsT0FBTztvQkFDWixJQUFJLENBQUMsTUFBTTtpQkFDWixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUN0RCxHQUFHLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUc7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsSUFBSSxDQUNiLGlFQUFpRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsT0FBTyxV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QUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekQsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNCLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBaUVGO0FBcFFELGtEQW9RQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFXU19TVEFHRV9UWVBFLFxuICBBd3NFbnZpcm9ubWVudFR5cGUsXG4gIEF3c1N0YWdlVHlwZSxcbiAgREVQTE9ZTUVOVF9UQVJHRVRfUk9MRSxcbiAgRGVwbG95bWVudFRhcmdldFJvbGVUeXBlLFxufSBmcm9tIFwiQGNvZGVkcmlmdGVycy91dGlsc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gXCJwcm9qZW4vbGliL2F3c2Nka1wiO1xuaW1wb3J0IHsgQXdzRGVwbG95bWVudENvbmZpZyB9IGZyb20gXCIuL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuaW1wb3J0IHsgR2l0QnJhbmNoIH0gZnJvbSBcIi4uL2dpdFwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIEFXUyBEZXBsb3ltZW50IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBBIHNpbmdsZSBkZXBsb3ltZW50IHRhcmdldCB0aGF0IENESyBhcHBsaWNhdGlvbnMgY2FuIGJlIGRlcGxveWVkIGludG8uXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciBsb2NhbCBkZXBsb3ltZW50IGluIEFXUy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NMb2NhbERlcGxveW1lbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIEFXUyBwcm9maWxlIChpbiB+Ly5hd3MvY29uZmlnKSB0byB1c2UgZm9yIGxvY2FsIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGdlbmVyYXRlZCBkeW5hbWljYWxseSBiYXNlZCByb2xlIG5hbWUsIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZWQgUm9sZSB1c2VkIHRvIGNvbmR1Y3QgbG9jYWwgZGVwbG95bWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwicG93ZXJ1c2VyYWNjZXNzXCJcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0dGVybiB1c2VkIHRvIGlkZW50aWZ5IHN0YWNrcyB0byBkZXBsb3kgaW4gQ0kgZGVwbG95bWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICotJHthY2NvdW50fS0ke3JlZ2lvbn1cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrUGF0dGVybj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaURlcGxveW1lbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIE9JREMgSUFNIFJvbGUgdG8gYXNzdW1lIGZvciBDSSBkZXBsb3ltZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdHRlcm4gdXNlZCB0byBpZGVudGlmeSBzdGFja3MgdG8gZGVwbG95IGluIENJIGRlcGxveW1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAqLSR7YWNjb3VudH0tJHtyZWdpb259XG4gICAqL1xuICByZWFkb25seSBzdGFja1BhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRlcGxveW1lbnQgdGFyZ2V0IGluIEFXUywgaW5jbHVkaW5nIGFjY291bnQgYW5kIHJlZ2lvbiwgYW5kXG4gKiBicmFuY2hlcyBhbGxvd2VkIHRvIGRlcGxveSB0byB0aGlzIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NEZXBsb3ltZW50VGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBuYW1lIGZvciB0aGUgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcmVnaW9uIGZvciB0aGUgZGVwbG95bWVudCB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogQVdTIGRlcGxveW1lbnQgdHlwZSwgc3VjaCBhcyBkZXYsIHN0YWdlLCBvciBwcm9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZGV2J1xuICAgKi9cbiAgcmVhZG9ubHkgYXdzU3RhZ2VUeXBlPzogQXdzU3RhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHRhcmdldCByb2xlOiB3aGV0aGVyIHRoaXMgKGFjY291bnQsIHJlZ2lvbikgaXMgdGhlIHByaW1hcnkgb3JcbiAgICogc2Vjb25kYXJ5IGRlcGxveW1lbnQgdGFyZ2V0IChlLmcuIHByaW1hcnkgdnMgcmVwbGljYSByZWdpb24pLlxuICAgKlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnRUYXJnZXRSb2xlPzogRGVwbG95bWVudFRhcmdldFJvbGVUeXBlO1xuXG4gIC8qKlxuICAgKiBBV1MgZW52aXJvbm1lbnQgdHlwZSwgc3VjaCBhcyBwcmltYXJ5IG9yIHNlY29uZGFyeS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBkZXBsb3ltZW50VGFyZ2V0Um9sZWAgaW5zdGVhZC4gVGhpcyBwcm9wZXJ0eSBpcyBtYWludGFpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIHJlYWRvbmx5IGF3c0Vudmlyb25tZW50VHlwZT86IEF3c0Vudmlyb25tZW50VHlwZTtcblxuICAvKipcbiAgICogVGhlIEFXUyBwcm9maWxlIHRvIHVzZSBmb3IgdGhpcyBkZXBsb3ltZW50IHRhcmdldC5cbiAgICpcbiAgICogQGRlZmF1bHQgWydtYWluJ10gd2hlbiBwcm9kIHJlbGVhc2UgdHlwZSwgWydmZWF0dXJlLyonXSB3aGVuIGRldiB0eXBlXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IEFycmF5PEdpdEJyYW5jaD47XG5cbiAgLyoqXG4gICAqIENhbiB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0IGJlIHVzZWQgZm9yIGxvY2FsIGRldmVsb3BtZW50P1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlIGZvciBkZXYgZW52aXJvbm1lbnRzLCBmYWxzZSBmb3IgcHJvZCBlbnZpcm9ubWVudHNcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsRGVwbG95bWVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gd2hlbiBkZXBsb3lpbmcgdG8gdGhpcyB0YXJnZXQgbG9jYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsRGVwbG95bWVudENvbmZpZz86IEF3c0xvY2FsRGVwbG95bWVudENvbmZpZztcblxuICAvKipcbiAgICogQ2FuIHRoaXMgZGVwbG95bWVudCB0YXJnZXQgYmUgdXNlZCBpbiBDSSBkZXBsb3ltZW50cz9cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNpRGVwbG95bWVudD86IGJvb2xlYW47XG5cbiAgLypcbiAgICogQ29uZmlndXJhdGlvbiB3aGVuIGRlcGxveWluZyB0byB0aGlzIHRhcmdldCBpbiBDSS5cblxuICAgKi9cbiAgcmVhZG9ubHkgY2lEZXBsb3ltZW50Q29uZmlnPzogQ2lEZXBsb3ltZW50Q29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgQXdzRGVwbG95bWVudFRhcmdldCBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kIHRvIGRpc2NvdmVydCB0YXJnZXRzIGluIGEgcHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YoXG4gICAgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCxcbiAgKTogQXJyYXk8QXdzRGVwbG95bWVudFRhcmdldD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzRGVmaW5lZCA9IChjOiBDb21wb25lbnQpOiBjIGlzIEF3c0RlcGxveW1lbnRUYXJnZXQgPT5cbiAgICAgIGMgaW5zdGFuY2VvZiBBd3NEZXBsb3ltZW50VGFyZ2V0O1xuICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmlsdGVyKGlzRGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjY291bnQgbmFtZSBmb3IgdGhlIGRlcGxveW1lbnQgdGFyZ2V0LlxuICAgKi9cbiAgcHVibGljIGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFXUyByZWdpb24gZm9yIHRoZSBkZXBsb3ltZW50IHRhcmdldC5cbiAgICovXG4gIHB1YmxpYyByZWdpb246IHN0cmluZztcblxuICAvKionXG4gICAqIEFXUyBzdGFnZSB0eXBlLCBzdWNoIGFzIGRldiwgc3RhZ2UsIG9yIHByb2QuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdkZXYnXG4gICAqL1xuICBwdWJsaWMgYXdzU3RhZ2VUeXBlOiBBd3NTdGFnZVR5cGU7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgdGFyZ2V0IHJvbGU6IHdoZXRoZXIgdGhpcyAoYWNjb3VudCwgcmVnaW9uKSBpcyB0aGUgcHJpbWFyeSBvclxuICAgKiBzZWNvbmRhcnkgZGVwbG95bWVudCB0YXJnZXQgKGUuZy4gcHJpbWFyeSB2cyByZXBsaWNhIHJlZ2lvbikuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgcHVibGljIGRlcGxveW1lbnRUYXJnZXRSb2xlOiBEZXBsb3ltZW50VGFyZ2V0Um9sZVR5cGU7XG5cbiAgLyoqXG4gICAqIEFXUyBlbnZpcm9ubWVudCB0eXBlLCBzdWNoIGFzIHByaW1hcnkgb3Igc2Vjb25kYXJ5LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGRlcGxveW1lbnRUYXJnZXRSb2xlYCBpbnN0ZWFkLiBUaGlzIHByb3BlcnR5IGlzIG1haW50YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgcHVibGljIGF3c0Vudmlyb25tZW50VHlwZTogQXdzRW52aXJvbm1lbnRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHByb2ZpbGUgdG8gdXNlIGZvciB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ21haW4nXSB3aGVuIHByb2QgcmVsZWFzZSB0eXBlLCBbJ2ZlYXR1cmUvKiddIHdoZW4gZGV2IHR5cGVcbiAgICovXG4gIHB1YmxpYyBicmFuY2hlczogQXJyYXk8R2l0QnJhbmNoPiA9IFtdO1xuXG4gIC8qKlxuICAgKiBDYW4gdGhpcyBkZXBsb3ltZW50IHRhcmdldCBiZSB1c2VkIGZvciBsb2NhbCBkZXZlbG9wbWVudD9cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZSBmb3IgZGV2IGVudmlyb25tZW50cywgZmFsc2UgZm9yIHByb2QgZW52aXJvbm1lbnRzXG4gICAqL1xuICBwdWJsaWMgbG9jYWxEZXBsb3ltZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiB3aGVuIGRlcGxveWluZyB0byB0aGlzIHRhcmdldCBsb2NhbGx5LlxuICAgKi9cbiAgcHVibGljIGxvY2FsRGVwbG95bWVudENvbmZpZz86IEF3c0xvY2FsRGVwbG95bWVudENvbmZpZztcblxuICAvKipcbiAgICogQ2FuIHRoaXMgZGVwbG95bWVudCB0YXJnZXQgYmUgdXNlZCBpbiBDSSBkZXBsb3ltZW50cz9cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBjaURlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qXG4gICAqIENvbmZpZ3VyYXRpb24gd2hlbiBkZXBsb3lpbmcgdG8gdGhpcyB0YXJnZXQgaW4gQ0kuXG4gICAqL1xuICBwdWJsaWMgY2lEZXBsb3ltZW50Q29uZmlnPzogUmVxdWlyZWQ8Q2lEZXBsb3ltZW50Q29uZmlnPjtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIENESyBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0LlxuICAgKi9cbiAgcHVibGljIGF3c0RlcGxveW1lbnRDb25maWc6IEF3c0RlcGxveW1lbnRDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCxcbiAgICBvcHRpb25zOiBBd3NEZXBsb3ltZW50VGFyZ2V0T3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGFyZ2V0IHJlZ2lvbiBhbmQgYWNjb3VudC5cbiAgICAgKi9cbiAgICB0aGlzLmFjY291bnQgPSBvcHRpb25zLmFjY291bnQ7XG4gICAgdGhpcy5yZWdpb24gPSBvcHRpb25zLnJlZ2lvbjtcblxuICAgIC8qKlxuICAgICAqIFNldCBkZWZhdWx0IHR5cGVcbiAgICAgKi9cbiAgICB0aGlzLmF3c1N0YWdlVHlwZSA9IG9wdGlvbnMuYXdzU3RhZ2VUeXBlIHx8IEFXU19TVEFHRV9UWVBFLkRFVjtcblxuICAgIC8qKlxuICAgICAqIFNldCBkZXBsb3ltZW50IHRhcmdldCByb2xlIChwcmVmZXJyZWQpIG9yIGZhbGwgYmFjayB0byBkZXByZWNhdGVkIGF3c0Vudmlyb25tZW50VHlwZS5cbiAgICAgKi9cbiAgICBjb25zdCByb2xlID1cbiAgICAgIG9wdGlvbnMuZGVwbG95bWVudFRhcmdldFJvbGUgPz9cbiAgICAgIG9wdGlvbnMuYXdzRW52aXJvbm1lbnRUeXBlID8/XG4gICAgICBERVBMT1lNRU5UX1RBUkdFVF9ST0xFLlBSSU1BUlk7XG4gICAgdGhpcy5kZXBsb3ltZW50VGFyZ2V0Um9sZSA9IHJvbGU7XG4gICAgdGhpcy5hd3NFbnZpcm9ubWVudFR5cGUgPSByb2xlO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGRlZmF1bHQgQnJhbmNoZXNcbiAgICAgKi9cblxuICAgIHRoaXMuYnJhbmNoZXMgPVxuICAgICAgb3B0aW9ucy5icmFuY2hlcyA/P1xuICAgICAgKHRoaXMuYXdzU3RhZ2VUeXBlID09PSBBV1NfU1RBR0VfVFlQRS5QUk9EXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBicmFuY2g6IFwibWFpblwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBicmFuY2g6IFwiZmVhdHVyZS8qXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGRlZmF1bHQgZm9yIGxvY2FsIGRlcGxveW1lbnRcbiAgICAgKi9cbiAgICB0aGlzLmxvY2FsRGVwbG95bWVudCA9XG4gICAgICBvcHRpb25zLmxvY2FsRGVwbG95bWVudCA/PyB0aGlzLmF3c1N0YWdlVHlwZSA9PT0gQVdTX1NUQUdFX1RZUEUuREVWO1xuXG4gICAgLyoqXG4gICAgICogU29tZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGZvciBsb2NhbCBkZXBsb3ltZW50cy5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5sb2NhbERlcGxveW1lbnQpIHtcbiAgICAgIGNvbnN0IHJvbGVOYW1lID1cbiAgICAgICAgb3B0aW9ucy5sb2NhbERlcGxveW1lbnRDb25maWc/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgIFwicG93ZXJ1c2VyYWNjZXNzXCI7XG4gICAgICBjb25zdCBwcm9maWxlID1cbiAgICAgICAgb3B0aW9ucy5sb2NhbERlcGxveW1lbnRDb25maWc/LnByb2ZpbGUgfHxcbiAgICAgICAgYCR7cm9sZU5hbWV9LSR7dGhpcy5hd3NTdGFnZVR5cGV9LSR7dGhpcy5hY2NvdW50fS0ke3RoaXMucmVnaW9ufWA7XG5cbiAgICAgIGNvbnN0IHN0YWNrUGF0dGVybiA9XG4gICAgICAgIG9wdGlvbnMubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5zdGFja1BhdHRlcm4gfHxcbiAgICAgICAgYCR7dGhpcy5hd3NTdGFnZVR5cGV9LyR7dGhpcy5hd3NFbnZpcm9ubWVudFR5cGV9LyotJHt0aGlzLmFjY291bnR9LSR7dGhpcy5yZWdpb259YDtcblxuICAgICAgdGhpcy5sb2NhbERlcGxveW1lbnRDb25maWcgPSB7XG4gICAgICAgIHByb2ZpbGUsXG4gICAgICAgIHJvbGVOYW1lLFxuICAgICAgICBzdGFja1BhdHRlcm4sXG4gICAgICAgIC4uLm9wdGlvbnMubG9jYWxEZXBsb3ltZW50Q29uZmlnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgQ0kgZGVwbG95bWVudCBkZWZhdWx0XG4gICAgICovXG4gICAgdGhpcy5jaURlcGxveW1lbnQgPSBvcHRpb25zLmNpRGVwbG95bWVudCA/PyBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNvbWUgZGVmYXVsdHMgZm9yIENJIGRlcGxveW1lbnRzLlxuICAgICAqL1xuICAgIGlmICh0aGlzLmNpRGVwbG95bWVudCkge1xuICAgICAgY29uc3Qgcm9sZUFybiA9XG4gICAgICAgIG9wdGlvbnMuY2lEZXBsb3ltZW50Q29uZmlnPy5yb2xlQXJuIHx8XG4gICAgICAgIGBhcm46YXdzOmlhbTo6JHt0aGlzLmFjY291bnR9OnJvbGUvR2l0SHViRGVwbG95ZXJ9YDtcblxuICAgICAgY29uc3Qgc3RhY2tQYXR0ZXJuID1cbiAgICAgICAgb3B0aW9ucy5jaURlcGxveW1lbnRDb25maWc/LnN0YWNrUGF0dGVybiB8fFxuICAgICAgICBgJHt0aGlzLmF3c1N0YWdlVHlwZX0vJHt0aGlzLmF3c0Vudmlyb25tZW50VHlwZX0vKi0ke3RoaXMuYWNjb3VudH0tJHt0aGlzLnJlZ2lvbn1gO1xuXG4gICAgICB0aGlzLmNpRGVwbG95bWVudENvbmZpZyA9IHtcbiAgICAgICAgcm9sZUFybixcbiAgICAgICAgc3RhY2tQYXR0ZXJuLFxuICAgICAgICAuLi5vcHRpb25zLmNpRGVwbG95bWVudENvbmZpZyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZCBvciBjcmVhdGUgQ0RLIGZvbGRlciBjb25maWcgZm9yIHRoaXMgcHJvamVjdC5cbiAgICAgKi9cbiAgICB0aGlzLmF3c0RlcGxveW1lbnRDb25maWcgPVxuICAgICAgQXdzRGVwbG95bWVudENvbmZpZy5vZihwcm9qZWN0KSB8fCBuZXcgQXdzRGVwbG95bWVudENvbmZpZyhwcm9qZWN0KTtcblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgdGFyZ2V0IHRvIHRoZSBkZXBsb3ltZW50IHRhcmdldHMgYXJyYXkuXG4gICAgICovXG4gICAgdGhpcy5hd3NEZXBsb3ltZW50Q29uZmlnLmF3c0RlcGxveW1lbnRUYXJnZXRzLnB1c2godGhpcyk7XG5cbiAgICAvLyBEZXBsb3kgdGFza3MgYXJlIGNvbmZpZ3VyZWQgcGVyIHRhcmdldC5cbiAgICB0aGlzLmNvbmZpZ3VyZURlcGxveVRhc2soKTtcblxuICAgIC8vIFdhdGNoIHRhc2tzIGFyZSBjb25maWd1cmVkIHBlciB0YXJnZXQuXG4gICAgdGhpcy5jb25maWd1cmVXYXRjaFRhc2soKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBEZXBsb3kgVGFza3NcbiAgICpcbiAgICogLSBJZiBsb2NhbCBkZXBsb3ksIGFkZCBhIGRlcGxveSB0YXNrLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNvbmZpZ3VyZURlcGxveVRhc2sgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMubG9jYWxEZXBsb3ltZW50KSB7XG4gICAgICBjb25zdCB0YXNrTmFtZSA9IFtcbiAgICAgICAgXCJkZXBsb3lcIixcbiAgICAgICAgdGhpcy5hd3NTdGFnZVR5cGUsXG4gICAgICAgIHRoaXMuYWNjb3VudCxcbiAgICAgICAgdGhpcy5yZWdpb24sXG4gICAgICBdLmpvaW4oXCI6XCIpO1xuICAgICAgY29uc3QgZGVwbG95VGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICAgIGVudjogdGhpcy5hd3NEZXBsb3ltZW50Q29uZmlnLmVudixcbiAgICAgIH0pO1xuICAgICAgZGVwbG95VGFzay5leGVjKFxuICAgICAgICBgY2RrIGRlcGxveSAtLWxvb2t1cHM9ZmFsc2UgLS1yZXF1aXJlLWFwcHJvdmFsPW5ldmVyIC0tcHJvZmlsZT0ke3RoaXMubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5wcm9maWxlfSAtLWFwcD0ke3RoaXMuYXdzRGVwbG95bWVudENvbmZpZy5jZGtPdXR9IFwiJHt0aGlzLmxvY2FsRGVwbG95bWVudENvbmZpZz8uc3RhY2tQYXR0ZXJufVwiYCxcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBXYXRjaCB0YXNrc1xuICAgKlxuICAgKiAtIENvbmZpZ3VyZSB3YXRjaCB0YXNrIHRvIHVzZSB0aGUgYnJhbmNoIG5hbWVcbiAgICogLSBjb25maWd1cmUgd2F0Y2ggdGFzayB0byB1c2UgdGhlIGNvcnJlY3Qgc3ludGggb3V0cHV0IGxvY2F0aW9uLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNvbmZpZ3VyZVdhdGNoVGFzayA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5sb2NhbERlcGxveW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhc2tOYW1lID0gW1xuICAgICAgICBcIndhdGNoXCIsXG4gICAgICAgIHRoaXMuYXdzU3RhZ2VUeXBlLFxuICAgICAgICB0aGlzLmFjY291bnQsXG4gICAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgXS5qb2luKFwiOlwiKTtcbiAgICAgIGNvbnN0IHdhdGNoVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICAgIGVudjogdGhpcy5hd3NEZXBsb3ltZW50Q29uZmlnLmVudixcbiAgICAgIH0pO1xuXG4gICAgICAvLyB1cGRhdGUgdGhlIHN5bnRoIGZpcnN0XG4gICAgICBjb25zdCBzeW50aFNpbGVudCA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKFwic3ludGg6c2lsZW50XCIpO1xuICAgICAgaWYgKHN5bnRoU2lsZW50KSB7XG4gICAgICAgIHdhdGNoVGFzay5zcGF3bihzeW50aFNpbGVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGRvIGEgbm9ybWFsIGRlcGxveVxuICAgICAgd2F0Y2hUYXNrLmV4ZWMoXG4gICAgICAgIGBjZGsgZGVwbG95IC0tbG9va3Vwcz1mYWxzZSAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1wcm9maWxlPSR7dGhpcy5sb2NhbERlcGxveW1lbnRDb25maWc/LnByb2ZpbGV9IC0tYXBwPSR7dGhpcy5hd3NEZXBsb3ltZW50Q29uZmlnLmNka091dH0gXCIke3RoaXMubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5zdGFja1BhdHRlcm59XCJgLFxuICAgICAgKTtcblxuICAgICAgLy8gd2F0Y2ggZm9yIGNoYW5nZXMgYW5kIGxvZyBvdXRwdXRcbiAgICAgIHdhdGNoVGFzay5leGVjKFxuICAgICAgICBgY2RrIHdhdGNoIC0tbG9va3Vwcz1mYWxzZSAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1ob3Rzd2FwIC0tcHJvZmlsZT0ke3RoaXMubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5wcm9maWxlfSBcIiR7dGhpcy5sb2NhbERlcGxveW1lbnRDb25maWc/LnN0YWNrUGF0dGVybn1cImAsXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -52,6 +52,43 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
52
52
  */
53
53
  githubOptions: {
54
54
  mergify: false,
55
+ /**
56
+ * Configure pull request linting to validate PR titles follow Conventional Commits.
57
+ * By default, all conventional commit types are allowed, providing flexibility
58
+ * for different types of changes (features, fixes, documentation, refactoring, etc.).
59
+ */
60
+ pullRequestLintOptions: {
61
+ semanticTitleOptions: {
62
+ /**
63
+ * Allowed conventional commit types for PR titles.
64
+ * This includes all standard types from the Conventional Commits specification:
65
+ * - feat: New features
66
+ * - fix: Bug fixes
67
+ * - docs: Documentation changes
68
+ * - style: Code style changes (formatting, etc.)
69
+ * - refactor: Code refactoring
70
+ * - perf: Performance improvements
71
+ * - test: Test additions or changes
72
+ * - build: Build system changes
73
+ * - ci: CI configuration changes
74
+ * - chore: Maintenance tasks
75
+ * - revert: Revert commits
76
+ */
77
+ types: [
78
+ "feat",
79
+ "fix",
80
+ "docs",
81
+ "style",
82
+ "refactor",
83
+ "perf",
84
+ "test",
85
+ "build",
86
+ "ci",
87
+ "chore",
88
+ "revert",
89
+ ],
90
+ },
91
+ },
55
92
  },
56
93
  /**
57
94
  * Default PNPM version to use in the monorepo.
@@ -237,4 +274,4 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
237
274
  }
238
275
  }
239
276
  exports.MonorepoProject = MonorepoProject;
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUsrQjtBQUMvQixzREFHK0I7QUFDL0IsK0NBQXFDO0FBQ3JDLDJEQUE2RTtBQUM3RSxvREFBa0U7QUFDbEUsb0RBSTZCO0FBQzdCLDBDQUFzQztBQUN0Qyw2Q0FBZ0Q7QUFpRmhELE1BQWEsZUFBZ0IsU0FBUSxpQ0FBb0I7SUFhdkQsWUFBWSxXQUFtQztRQUM3Qzs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLG9CQUFvQixHQUFrQyxXQUFXO2FBQ3BFLFlBQVksRUFBRSxrQkFBa0I7WUFDakMsQ0FBQyxDQUFDLHNCQUFTLENBQUMsb0JBQW9CLENBQzVCLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQzVDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sY0FBYyxHQUdoQjtZQUNGOztlQUVHO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFFaEI7O2VBRUc7WUFDSCxhQUFhLEVBQUUsVUFBVTtZQUV6Qjs7ZUFFRztZQUNILFFBQVEsRUFBRSxJQUFJO1lBRWQ7O2VBRUc7WUFDSCxRQUFRLEVBQUUsS0FBSztZQUVmOzs7ZUFHRztZQUNILGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsS0FBSzthQUNmO1lBRUQ7O2VBRUc7WUFDSCxXQUFXLEVBQUUsa0JBQU8sQ0FBQyxZQUFZO1lBRWpDOztlQUVHO1lBQ0gsVUFBVSxFQUFFLEtBQUs7WUFFakI7O2VBRUc7WUFDSCxJQUFJLEVBQUUsS0FBSztZQUVYOztlQUVHO1lBQ0gsT0FBTyxFQUFFLEtBQUs7WUFFZDs7ZUFFRztZQUNILFdBQVcsRUFBRSxLQUFLO1lBRWxCOzs7O2VBSUc7WUFDSCxrQkFBa0IsRUFBRSxJQUFJO1lBRXhCOztlQUVHO1lBQ0gsUUFBUSxF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LEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2lCQUM5QzthQUNGLENBQ0YsQ0FBQztZQUNGLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUMzQixnQkFBZ0IsRUFDaEIsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQzlCLENBQUM7UUFFRjs7V0FFRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpDOztXQUVHO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZDOzs7O1dBSUc7UUFDSCxJQUFJLE9BQU8sQ0FBQyx1QkFBdUIsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxnQ0FBbUIsQ0FDcEQsSUFBSSxFQUNKLElBQUEsb0JBQUssRUFDSDtnQkFDRSxPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztnQkFDdkMsUUFBUSxFQUFFLG1DQUFtQztnQkFDN0MsZUFBZSxFQUFFO29CQUNmLFFBQVEsRUFBRSx3Q0FBMkIsQ0FBQyxLQUFLO2lCQUM1QzthQUNGLEVBQ0QsT0FBTyxDQUFDLDhCQUE4QixJQUFJLEVBQUUsQ0FDN0MsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhTRCwwQ0F3U0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2J1aWxkXCI7XG5pbXBvcnQge1xuICBOb2RlUGFja2FnZU1hbmFnZXIsXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXMsXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXNPcHRpb25zLFxuICBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUsXG59IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7XG4gIFR5cGVTY3JpcHRBcHBQcm9qZWN0LFxuICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG59IGZyb20gXCJwcm9qZW4vbGliL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcInRzLWRlZXBtZXJnZVwiO1xuaW1wb3J0IHsgUG5wbVdvcmtzcGFjZSwgUG5wbVdvcmtzcGFjZU9wdGlvbnMgfSBmcm9tIFwiLi4vcG5wbS9wbnBtLXdvcmtzcGFjZVwiO1xuaW1wb3J0IHsgUmVzZXRUYXNrLCBSZXNldFRhc2tPcHRpb25zIH0gZnJvbSBcIi4uL3Rhc2tzL3Jlc2V0LXRhc2tcIjtcbmltcG9ydCB7XG4gIFJPT1RfQ0lfVEFTS19OQU1FLFxuICBUdXJib1JlcG8sXG4gIFR1cmJvUmVwb09wdGlvbnMsXG59IGZyb20gXCIuLi90dXJiby90dXJiby1yZXBvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5pbXBvcnQgeyBWU0NvZGVDb25maWcgfSBmcm9tIFwiLi4vdnNjb2RlL3ZzY29kZVwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIE1vbm9yZXBvIFJvb3QgUHJvamVjdFxuICpcbiAqIFRoaXMgcHJvamVjdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgYmFzZSBwcm9qZWN0IGZvciBvdGhlciBwcm9qZWN0cyBpbiBhXG4gKiBtb25vcmVwby4gVGhlIE1vbm9yZXBvIHJvb3QgcHJvamVjdCBnZW5lcmFsbHkgd29uJ3QgY29udGFpbiBhbnkgY29kZSwgYnV0IGl0XG4gKiB3aWxsIGNvbnRhaW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIG1vbm9yZXBvLCBzdWNoIGFzIHBhY2thZ2UgbWFuYWdlbWVudCxcbiAqIGxpbnRpbmcsIHRlc3RpbmcsIGFuZCBvdGhlciBwcm9qZWN0LXdpZGUgc2V0dGluZ3MuXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1Byb2plY3RPcHRpb25zIGV4dGVuZHMgT21pdDxcbiAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxuICBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbj4ge1xuICAvKipcbiAgICogVHVybiBvbiBUdXJib3JlcG8gc3VwcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdHVyYm8/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zYWwgb3B0aW9ucyBmb3IgdHVyYm9yZXBvIGNvbmZpZ1xuICAgKi9cbiAgdHVyYm9PcHRpb25zPzogVHVyYm9SZXBvT3B0aW9ucztcblxuICAvKipcbiAgICogRW5hYmxlIHRoZSByZXNldCB0YXNrIHRoYXQgZGVsZXRlcyBhbGwgYnVpbGQgYXJ0aWZhY3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZXNldFRhc2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgcmVzZXQgdGFzay5cbiAgICovXG4gIHJlc2V0VGFza09wdGlvbnM/OiBSZXNldFRhc2tPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQTlBNIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAgICovXG4gIHBucG1PcHRpb25zPzoge1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIG9mIFBOUE0gdG8gdXNlIGluIHRoZSBtb25vcmVwby5cbiAgICAgKiBAZGVmYXVsdCBWRVJTSU9OLlBOUE1fVkVSU0lPTlxuICAgICAqIEBzZWUge0BsaW5rIHNyYy92ZXJzaW9ucy50c31cbiAgICAgKi9cbiAgICB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgcG5wbSBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8gd29ya3NwYWNlIGZpbGUuXG4gICAgICovXG4gICAgcG5wbVdvcmtzcGFjZU9wdGlvbnM/OiBQbnBtV29ya3NwYWNlT3B0aW9ucztcbiAgfTtcblxuICAvKipcbiAgICogVHVybiBvbiB0aGUgdXBncmFkZSBjb25maWd1cmF0b3IgdGFzayB0aGF0IHdpbGwgYXR0ZW1wdCB0byB1cGdyYWRlIHRoZVxuICAgKiBAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvciBwYWNrYWdlIHZlcnNpb24gbmlnaHRseS4gVGhpcyBrZWVwcyB0aGVcbiAgICogcHJvamVjdCB1cC10by1kYXRlIHdpdGggdGhlIGxhdGVzdCBvZmZpY2lhbCBDb2RlRHJpZnRlcnMgY29uZmlncy4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVwZ3JhZGVDb25maWd1bGF0b3JUYXNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHVwZ3JhZGUgY29uZmlndXJhdG9yIHRhc2suXG4gICAqXG4gICAqIEBkZWZhdWx0OiBkYWlseSBzY2hlZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZUNvbmZpZ3VsYXRvclRhc2tPcHRpb25zPzogVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnM7XG59XG5cbmludGVyZmFjZSBBcHBsaWVkT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyB7fVxuXG5leHBvcnQgY2xhc3MgTW9ub3JlcG9Qcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiBQTlBNIHdoaWNoIHRoZSB3aG9sZSBtb25vcmVwbyBzaG91bGQgdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcG5wbVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGFzayB0aGF0IHdpbGwgYXR0ZW1wdCB0byB1cGdyYWRlIHRoZSBAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvclxuICAgKiBwYWNrYWdlIHZlcnNpb24gbmlnaHRseS4gVGhpcyBrZWVwcyB0aGUgcHJvamVjdCB1cC10by1kYXRlIHdpdGggdGhlIGxhdGVzdFxuICAgKiBvZmZpY2lhbCBDb2RlRHJpZnRlcnMgY29uZmlncy5cbiAgICovXG4gIHJlYWRvbmx5IHVwZ3JhZGVDb25maWd1bGF0b3JUYXNrPzogVXBncmFkZURlcGVuZGVuY2llcztcblxuICBjb25zdHJ1Y3Rvcih1c2VyT3B0aW9uczogTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucykge1xuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEJVSUxEIFdPUktGTE9XIE9QVElPTlNcbiAgICAgKlxuICAgICAqIGRpc2NvdmVyIHNvbWUgdHVyYm8gb3B0aW9ucyBmb3IgYnVpbGQgd29ya2Zsb3csIGlmIG5lZWRlZC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGJ1aWxkV29ya2Zsb3dPcHRpb25zOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9IHVzZXJPcHRpb25zXG4gICAgICAudHVyYm9PcHRpb25zPy5yZW1vdGVDYWNoZU9wdGlvbnNcbiAgICAgID8gVHVyYm9SZXBvLmJ1aWxkV29ya2Zsb3dPcHRpb25zKFxuICAgICAgICAgIHVzZXJPcHRpb25zLnR1cmJvT3B0aW9ucy5yZW1vdGVDYWNoZU9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgIDoge307XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBERUZBVUxUIE9QVElPTlNcbiAgICAgKlxuICAgICAqIFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBvcHRpb25zIHVubGVzcyB5b3Ugb3ZlcnJpZGUgd2l0aCBvcHRpb24gaW5wdXRzLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8XG4gICAgICBNb25vcmVwb1Byb2plY3RPcHRpb25zLFxuICAgICAgXCJuYW1lXCIgfCBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbiAgICA+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdHlwZXNjcmlwdCBiYXNlZCBjb25maWcgZmlsZS5cbiAgICAgICAqL1xuICAgICAgcHJvamVucmNUczogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBQcm9qZW4gdmVyc2lvbiBzaG91bGQgYmUgcGlubmVkIHRvIHRoZSBsb2NhbCBzcGVjaWZpZWQgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgcHJvamVuVmVyc2lvbjogXCJjYXRhbG9nOlwiLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZSBQcmV0dGllciBmb3IgY29kZSBmb3JtYXR0aW5nLlxuICAgICAgICovXG4gICAgICBwcmV0dGllcjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBOb3QgbGljZW5zZWQgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEdpdEh1YiBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gICAgICAgKiBEb24ndCBlbmFibGUgbWVyZ2lmeSBieSBkZWZhdWx0LlxuICAgICAgICovXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEZWZhdWx0IFBOUE0gdmVyc2lvbiB0byB1c2UgaW4gdGhlIG1vbm9yZXBvLlxuICAgICAgICovXG4gICAgICBwbnBtVmVyc2lvbjogVkVSU0lPTi5QTlBNX1ZFUlNJT04sXG5cbiAgICAgIC8qKlxuICAgICAgICogV2UgZG9uJ3Qgd2FudCBzYW1wbGUgY29kZSBnZW5lcmF0ZWQgZm9yIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEplc3QgaXMgbm90IHJlcXVpcmVkIGluIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIGplc3Q6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHJlbGVhc2UgdGhlIHJvb3QgcHJvamVjdC5cbiAgICAgICAqL1xuICAgICAgcmVsZWFzZTogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICogRG9uJ3QgdXBncmFkZSBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseS5cbiAgICAgICAqL1xuICAgICAgZGVwc1VwZ3JhZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERpc2FibGUgdHNjb25maWcuZGV2Lmpzb24gaW4gdGhlIHJvb3Qgc2luY2Ugd2UgYXJlbid0IGdvaW5nIHRvIGJlXG4gICAgICAgKiBkZXZlbG9waW5nIGFueSBjb2RlIGhlcmUuIEl0J3MganVzdCBhIHRhc2sgcnVubmVyIGFuZCBjb25maWd1cmF0aW9uXG4gICAgICAgKiB0b29sIGZvciBzdWItcHJvamVjdHMuXG4gICAgICAgKi9cbiAgICAgIGRpc2FibGVUc2NvbmZpZ0RldjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBLaWxsIHRoZSBzcmNkaXIgaW4gdGhlIHJvb3Qgc2luY2Ugd2UgYXJlbid0IHVzaW5nIG9uZS5cbiAgICAgICAqL1xuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgcm9vdERpcjogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgICBleGNsdWRlOiBbXCJub2RlX21vZHVsZXNcIl0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEVuYWJsZSB0dXJib3JlcG8gYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgdHVyYm86IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogRW5hYmxlIHJlc2V0IHRhc2sgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgcmVzZXRUYXNrOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc2VsZiBhcyBhIGRldkRlcFxuICAgICAgICovXG4gICAgICBkZXZEZXBzOiBbXCJAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvclwiXSxcblxuICAgICAgcG5wbU9wdGlvbnM6IHtcbiAgICAgICAgcG5wbVdvcmtzcGFjZU9wdGlvbnM6IHtcbiAgICAgICAgICBkZWZhdWx0Q2F0YWxvZzoge1xuICAgICAgICAgICAgW1wiYXdzLWNka1wiXTogVkVSU0lPTi5BV1NfQ0RLX0NMSV9WRVJTSU9OLFxuICAgICAgICAgICAgW1wiYXdzLWNkay1saWJcIl06IFZFUlNJT04uQVdTX0NES19MSUJfVkVSU0lPTixcbiAgICAgICAgICAgIFtcInByb2plblwiXTogVkVSU0lPTi5QUk9KRU5fVkVSU0lPTixcbiAgICAgICAgICAgIFtcImNvbnN0cnVjdHNcIl06IFZFUlNJT04uQVdTX0NPTlNUUlVDVFNfVkVSU0lPTixcbiAgICAgICAgICAgIFtcInR1cmJvXCJdOiBWRVJTSU9OLlRVUkJPX1ZFUlNJT04sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFJFUVVJUkVEIE9QVElPTlNcbiAgICAgKlxuICAgICAqIFRoZXNlIG9wdGlvbnMgY2Fubm90IGJlIGNoYW5nZWQgYnkgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCByZXF1aXJlZE9wdGlvbnM6IE9taXQ8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBcIm5hbWVcIj4gPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCdzIHN0YW5kYXJkIHByYWN0aWNlIGFuZCBhbHNvIHRvIHNpbXBsaWZ5XG4gICAgICAgKiBzb21lIHdvcmtmbG93IGRlc2lnbi5cbiAgICAgICAqL1xuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZSBQTlBNIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgKFlhcm4pLiBNdWNoIG9mIHRoZSBlY29zeXN0ZW0gZGVwZW5kc1xuICAgICAgICogb24gUE5QTSBhbmQgbWFraW5nIG1vbm9yZXBvcyBQTlBNIG9ubHkgc2ltcGxpZmllcyBtYW55IGNvbmZpZ3VyYXRpb25zLlxuICAgICAgICovXG4gICAgICBwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU29tZSBhZGRpdGlvbmFsIHByZS1idWlsZCBzdGVwcyBpZiB3ZSdyZSB1c2luZyB0dXJibydzIHJlbW90ZSBjYWNoZS5cbiAgICAgICAqL1xuICAgICAgYnVpbGRXb3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAuLi5idWlsZFdvcmtmbG93T3B0aW9ucz8ucGVybWlzc2lvbnMsXG4gICAgICAgICAgLi4udXNlck9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/LnBlcm1pc3Npb25zLFxuICAgICAgICB9LFxuICAgICAgICBwcmVCdWlsZFN0ZXBzOiBbXG4gICAgICAgICAgLi4uKGJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wcmVCdWlsZFN0ZXBzID8/IFtdKSxcbiAgICAgICAgICAuLi4odXNlck9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/LnByZUJ1aWxkU3RlcHMgPz8gW10pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ09OU1RSVUNUT1JcbiAgICAgKlxuICAgICAqIENvbWJpbmVzIGRlZmF1bHQgb3B0aW9ucyB3aXRoIHVzZXIgcHJvdmlkZWQgb3B0aW9ucyBhbmQgcmVxdWlyZWQgb3B0aW9ucy5cbiAgICAgKiBTdG9yZSB0aGUgb3B0aW9ucyBpbiBhIGNvbnN0IHNvIHdlIGNhbiB1c2UgdGhlbSBhZnRlciBzdXBlcigpLCBmYXJ0aGVyXG4gICAgICogaW50byB0aGUgY29uc3RydWN0b3IgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IEFwcGxpZWRPcHRpb25zID0gbWVyZ2UoXG4gICAgICBkZWZhdWx0T3B0aW9ucyxcbiAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgcmVxdWlyZWRPcHRpb25zLFxuICAgICk7XG5cbiAgICBzdXBlcih7IC4uLm9wdGlvbnMgfSk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBQVUJMSUMgUFJPUFNcbiAgICAgKlxuICAgICAqIFNvbWUgcHJvcHMgYXJlIGhpZGRlbiBieSBQcm9qZW4gYW5kIHdlIG5lZWQgdG8gZXhwb3NlIHRoZW0gZm9yIHRoZVxuICAgICAqIG1vbm9yZXBvIHRvIHdvcmsgcHJvcGVybHkuIFRoaXMgaXMgd2hlcmUgd2Ugc3RvcmUgdGhlbS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMucG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1WZXJzaW9uITtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIENVU1RPTSBDT05GSUdTXG4gICAgICpcbiAgICAgKiBXZSBhZGQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRvIHRoZSBtb25vcmVwbyByb290IHByb2plY3QgYmVsb3dcbiAgICAgKiBzdWNoIGFzIFR1cmJvcmVwbywgVlMgQ29kZSBjb25maWcsIGFuZCB0aGUgUE5QTSB3b3Jrc3BhY2UgZmlsZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEFkZCBWU0NvZGUgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIG5ldyBWU0NvZGVDb25maWcodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgd29ya3NwYWNlIGRlZmluaXRpb24gdG8gUE5QTSByb290XG4gICAgICovXG4gICAgbmV3IFBucG1Xb3Jrc3BhY2UodGhpcywgb3B0aW9ucy5wbnBtT3B0aW9ucz8ucG5wbVdvcmtzcGFjZU9wdGlvbnMpO1xuXG4gICAgLyoqXG4gICAgICogVHVybiBvbiB0dXJib3JlcG8gc3VwcG9ydCBpZiByZXF1ZXN0ZWQuXG4gICAgICovXG4gICAgaWYgKG9wdGlvbnMudHVyYm8pIHtcbiAgICAgIG5ldyBUdXJib1JlcG8odGhpcywgb3B0aW9ucy50dXJib09wdGlvbnMpO1xuXG4gICAgICB0aGlzLmJ1aWxkV29ya2Zsb3c/LmFkZFBvc3RCdWlsZFN0ZXBzKHtcbiAgICAgICAgbmFtZTogXCJCdWlsZCBTdWIgUHJvamVjdHNcIixcbiAgICAgICAgcnVuOiBgbnB4IHByb2plbiAke1JPT1RfQ0lfVEFTS19OQU1FfWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcmVzZXQgdGFzayBpZiBlbmFibGVkLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnJlc2V0VGFzayAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRSZXNldFRhc2tPcHRpb25zOiBSZXNldFRhc2tPcHRpb25zID0ge1xuICAgICAgICBwYXRoc1RvUmVtb3ZlOiBbXCJub2RlX21vZHVsZXNcIiwgXCIudHVyYm9cIiwgXCJkaXN0XCIsIFwibGliXCJdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVzZXJSZXNldFRhc2tPcHRpb25zID0gb3B0aW9ucy5yZXNldFRhc2tPcHRpb25zID8/IHt9O1xuICAgICAgY29uc3QgcmVzZXRUYXNrT3B0aW9uczogUmVzZXRUYXNrT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgICBkZWZhdWx0UmVzZXRUYXNrT3B0aW9ucyxcbiAgICAgICAge1xuICAgICAgICAgIC4uLnVzZXJSZXNldFRhc2tPcHRpb25zLFxuICAgICAgICAgIHBhdGhzVG9SZW1vdmU6IFtcbiAgICAgICAgICAgIC4uLihkZWZhdWx0UmVzZXRUYXNrT3B0aW9ucy5wYXRoc1RvUmVtb3ZlID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih1c2VyUmVzZXRUYXNrT3B0aW9ucy5wYXRoc1RvUmVtb3ZlID8/IFtdKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIG5ldyBSZXNldFRhc2sodGhpcywgcmVzZXRUYXNrT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBwYWNrYWdlIG1hbmFnZXJcbiAgICAgKi9cbiAgICAvLyBjb25zdCBwbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb24gPz8gVkVSU0lPTi5QTlBNX1ZFUlNJT047XG4gICAgdGhpcy5wYWNrYWdlLmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcInBhY2thZ2VNYW5hZ2VyXCIsXG4gICAgICBgcG5wbUAke29wdGlvbnMucG5wbVZlcnNpb259YCxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHNvbWUgc2lsbHkgdGhpbmdzIHRvIHRoZSBnaXRpZ25vcmUuXG4gICAgICovXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKFwiLkRTX1N0b3JlXCIpO1xuXG4gICAgLyoqXG4gICAgICogVXNlIGNhdGFsb2cgdmVyc2lvbiBmb3IgY29uc3RydWN0cyB2ZXJzaW9uXG4gICAgICovXG4gICAgdGhpcy5hZGREZXZEZXBzKFwiY29uc3RydWN0c0BjYXRhbG9nOlwiKTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBhIHRhc2sgb24gdGhlIG1vbm9yZXBvJ3Mgcm9vdCBwcm9qZWN0IHRoYXQgd2lsbCBhdHRlbXB0IHRvIHVwZ3JhZGVcbiAgICAgKiB0aGUgQGNvZGVkcmlmdGVycy9jb25maWd1bGF0b3IgcGFja2FnZSB2ZXJzaW9uIG5pZ2h0bHkuIFRoaXMga2VlcHMgdGhlXG4gICAgICogcHJvamVjdCB1cC10by1kYXRlIHdpdGggdGhlIGxhdGVzdCBvZmZpY2lhbCBDb2RlRHJpZnRlcnMgY29uZmlncy4uXG4gICAgICovXG4gICAgaWYgKG9wdGlvbnMudXBncmFkZUNvbmZpZ3VsYXRvclRhc2sgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnVwZ3JhZGVDb25maWd1bGF0b3JUYXNrID0gbmV3IFVwZ3JhZGVEZXBlbmRlbmNpZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluY2x1ZGU6IFtcIkBjb2RlZHJpZnRlcnMvY29uZmlndWxhdG9yXCJdLFxuICAgICAgICAgICAgdGFza05hbWU6IGB1cGdyYWRlLWNvZGVkcmlmdGVycy1jb25maWd1bGF0b3JgLFxuICAgICAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy51cGdyYWRlQ29uZmlndWxhdG9yVGFza09wdGlvbnMgPz8ge30sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUsrQjtBQUMvQixzREFHK0I7QUFDL0IsK0NBQXFDO0FBQ3JDLDJEQUE2RTtBQUM3RSxvREFBa0U7QUFDbEUsb0RBSTZCO0FBQzdCLDBDQUFzQztBQUN0Qyw2Q0FBZ0Q7QUFpRmhELE1BQWEsZUFBZ0IsU0FBUSxpQ0FBb0I7SUFhdkQsWUFBWSxXQUFtQztRQUM3Qzs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLG9CQUFvQixHQUFrQyxXQUFXO2FBQ3BFLFlBQVksRUFBRSxrQkFBa0I7WUFDakMsQ0FBQyxDQUFDLHNCQUFTLENBQUMsb0JBQW9CLENBQzVCLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQzVDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sY0FBYyxHQUdoQjtZQUNGOztlQUVHO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFFaEI7O2VBRUc7WUFDSCxhQUFhLEVBQUUsVUFBVTtZQUV6Qjs7ZUFFRztZQUNILFFBQVEsRUFBRSxJQUFJO1lBRWQ7O2VBRUc7WUFDSCxRQUFRLEVBQUUsS0FBSztZQUVmOzs7ZUFHRztZQUNILGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsS0FBSztnQkFFZDs7OzttQkFJRztnQkFDSCxzQkFBc0IsRUFBRTtvQkFDdEIsb0JBQW9CLEVBQUU7d0JBQ3BCOzs7Ozs7Ozs7Ozs7OzsyQkFjRzt3QkFDSCxLQUFLLEVBQUU7NEJBQ0wsTUFBTTs0QkFDTixLQUFLOzRCQUNMLE1BQU07NEJBQ04sT0FBTzs0QkFDUCxVQUFVOzRCQUNWLE1BQU07NEJBQ04sTUFBTTs0QkFDTixPQUFPOzRCQUNQLElBQUk7NEJBQ0osT0FBTzs0QkFDUCxRQUFRO3lCQUNUO3FCQUNGO2lCQUNG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O0lBQ0gsQ0FBQztDQUNGO0FBOVVELDBDQThVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkV29ya2Zsb3dPcHRpb25zIH0gZnJvbSBcInByb2plbi9saWIvYnVpbGRcIjtcbmltcG9ydCB7XG4gIE5vZGVQYWNrYWdlTWFuYWdlcixcbiAgVXBncmFkZURlcGVuZGVuY2llcyxcbiAgVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnMsXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSxcbn0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgVHlwZVNjcmlwdEFwcFByb2plY3QsXG4gIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbn0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwidHMtZGVlcG1lcmdlXCI7XG5pbXBvcnQgeyBQbnBtV29ya3NwYWNlLCBQbnBtV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gXCIuLi9wbnBtL3BucG0td29ya3NwYWNlXCI7XG5pbXBvcnQgeyBSZXNldFRhc2ssIFJlc2V0VGFza09wdGlvbnMgfSBmcm9tIFwiLi4vdGFza3MvcmVzZXQtdGFza1wiO1xuaW1wb3J0IHtcbiAgUk9PVF9DSV9UQVNLX05BTUUsXG4gIFR1cmJvUmVwbyxcbiAgVHVyYm9SZXBvT3B0aW9ucyxcbn0gZnJvbSBcIi4uL3R1cmJvL3R1cmJvLXJlcG9cIjtcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi4vdmVyc2lvbnNcIjtcbmltcG9ydCB7IFZTQ29kZUNvbmZpZyB9IGZyb20gXCIuLi92c2NvZGUvdnNjb2RlXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogTW9ub3JlcG8gUm9vdCBQcm9qZWN0XG4gKlxuICogVGhpcyBwcm9qZWN0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBiYXNlIHByb2plY3QgZm9yIG90aGVyIHByb2plY3RzIGluIGFcbiAqIG1vbm9yZXBvLiBUaGUgTW9ub3JlcG8gcm9vdCBwcm9qZWN0IGdlbmVyYWxseSB3b24ndCBjb250YWluIGFueSBjb2RlLCBidXQgaXRcbiAqIHdpbGwgY29udGFpbiBjb25maWd1cmF0aW9uIGZvciB0aGUgbW9ub3JlcG8sIHN1Y2ggYXMgcGFja2FnZSBtYW5hZ2VtZW50LFxuICogbGludGluZywgdGVzdGluZywgYW5kIG90aGVyIHByb2plY3Qtd2lkZSBzZXR0aW5ncy5cbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBPbWl0PFxuICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG4gIFwiZGVmYXVsdFJlbGVhc2VCcmFuY2hcIlxuPiB7XG4gIC8qKlxuICAgKiBUdXJuIG9uIFR1cmJvcmVwbyBzdXBwb3J0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB0dXJibz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnNhbCBvcHRpb25zIGZvciB0dXJib3JlcG8gY29uZmlnXG4gICAqL1xuICB0dXJib09wdGlvbnM/OiBUdXJib1JlcG9PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIHJlc2V0IHRhc2sgdGhhdCBkZWxldGVzIGFsbCBidWlsZCBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlc2V0VGFzaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRoZSByZXNldCB0YXNrLlxuICAgKi9cbiAgcmVzZXRUYXNrT3B0aW9ucz86IFJlc2V0VGFza09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBOUE0gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvLlxuICAgKi9cbiAgcG5wbU9wdGlvbnM/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHZlcnNpb24gb2YgUE5QTSB0byB1c2UgaW4gdGhlIG1vbm9yZXBvLlxuICAgICAqIEBkZWZhdWx0IFZFUlNJT04uUE5QTV9WRVJTSU9OXG4gICAgICogQHNlZSB7QGxpbmsgc3JjL3ZlcnNpb25zLnRzfVxuICAgICAqL1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBwbnBtIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwbyB3b3Jrc3BhY2UgZmlsZS5cbiAgICAgKi9cbiAgICBwbnBtV29ya3NwYWNlT3B0aW9ucz86IFBucG1Xb3Jrc3BhY2VPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUdXJuIG9uIHRoZSB1cGdyYWRlIGNvbmZpZ3VyYXRvciB0YXNrIHRoYXQgd2lsbCBhdHRlbXB0IHRvIHVwZ3JhZGUgdGhlXG4gICAqIEBjb2RlZHJpZnRlcnMvY29uZmlndWxhdG9yIHBhY2thZ2UgdmVyc2lvbiBuaWdodGx5LiBUaGlzIGtlZXBzIHRoZVxuICAgKiBwcm9qZWN0IHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IG9mZmljaWFsIENvZGVEcmlmdGVycyBjb25maWdzLi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZUNvbmZpZ3VsYXRvclRhc2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgdXBncmFkZSBjb25maWd1cmF0b3IgdGFzay5cbiAgICpcbiAgICogQGRlZmF1bHQ6IGRhaWx5IHNjaGVkdWxlXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlQ29uZmlndWxhdG9yVGFza09wdGlvbnM/OiBVcGdyYWRlRGVwZW5kZW5jaWVzT3B0aW9ucztcbn1cblxuaW50ZXJmYWNlIEFwcGxpZWRPcHRpb25zXG4gIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBNb25vcmVwb1Byb2plY3RPcHRpb25zIHt9XG5cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1Byb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIFBOUE0gd2hpY2ggdGhlIHdob2xlIG1vbm9yZXBvIHNob3VsZCB1c2UuXG4gICAqL1xuICByZWFkb25seSBwbnBtVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB0YXNrIHRoYXQgd2lsbCBhdHRlbXB0IHRvIHVwZ3JhZGUgdGhlIEBjb2RlZHJpZnRlcnMvY29uZmlndWxhdG9yXG4gICAqIHBhY2thZ2UgdmVyc2lvbiBuaWdodGx5LiBUaGlzIGtlZXBzIHRoZSBwcm9qZWN0IHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0XG4gICAqIG9mZmljaWFsIENvZGVEcmlmdGVycyBjb25maWdzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZUNvbmZpZ3VsYXRvclRhc2s/OiBVcGdyYWRlRGVwZW5kZW5jaWVzO1xuXG4gIGNvbnN0cnVjdG9yKHVzZXJPcHRpb25zOiBNb25vcmVwb1Byb2plY3RPcHRpb25zKSB7XG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQlVJTEQgV09SS0ZMT1cgT1BUSU9OU1xuICAgICAqXG4gICAgICogZGlzY292ZXIgc29tZSB0dXJibyBvcHRpb25zIGZvciBidWlsZCB3b3JrZmxvdywgaWYgbmVlZGVkLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgYnVpbGRXb3JrZmxvd09wdGlvbnM6IFBhcnRpYWw8QnVpbGRXb3JrZmxvd09wdGlvbnM+ID0gdXNlck9wdGlvbnNcbiAgICAgIC50dXJib09wdGlvbnM/LnJlbW90ZUNhY2hlT3B0aW9uc1xuICAgICAgPyBUdXJib1JlcG8uYnVpbGRXb3JrZmxvd09wdGlvbnMoXG4gICAgICAgICAgdXNlck9wdGlvbnMudHVyYm9PcHRpb25zLnJlbW90ZUNhY2hlT3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgOiB7fTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIERFRkFVTFQgT1BUSU9OU1xuICAgICAqXG4gICAgICogVGhlc2UgYXJlIHRoZSBkZWZhdWx0IG9wdGlvbnMgdW5sZXNzIHlvdSBvdmVycmlkZSB3aXRoIG9wdGlvbiBpbnB1dHMuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBkZWZhdWx0T3B0aW9uczogT21pdDxcbiAgICAgIE1vbm9yZXBvUHJvamVjdE9wdGlvbnMsXG4gICAgICBcIm5hbWVcIiB8IFwiZGVmYXVsdFJlbGVhc2VCcmFuY2hcIlxuICAgID4gPSB7XG4gICAgICAvKipcbiAgICAgICAqIFVzZSB0eXBlc2NyaXB0IGJhc2VkIGNvbmZpZyBmaWxlLlxuICAgICAgICovXG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFByb2plbiB2ZXJzaW9uIHNob3VsZCBiZSBwaW5uZWQgdG8gdGhlIGxvY2FsIHNwZWNpZmllZCB2ZXJzaW9uLlxuICAgICAgICovXG4gICAgICBwcm9qZW5WZXJzaW9uOiBcImNhdGFsb2c6XCIsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlIFByZXR0aWVyIGZvciBjb2RlIGZvcm1hdHRpbmcuXG4gICAgICAgKi9cbiAgICAgIHByZXR0aWVyOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE5vdCBsaWNlbnNlZCBieSBkZWZhdWx0LlxuICAgICAgICovXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICogR2l0SHViIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAgICAgICAqIERvbid0IGVuYWJsZSBtZXJnaWZ5IGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIGdpdGh1Yk9wdGlvbnM6IHtcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbmZpZ3VyZSBwdWxsIHJlcXVlc3QgbGludGluZyB0byB2YWxpZGF0ZSBQUiB0aXRsZXMgZm9sbG93IENvbnZlbnRpb25hbCBDb21taXRzLlxuICAgICAgICAgKiBCeSBkZWZhdWx0LCBhbGwgY29udmVudGlvbmFsIGNvbW1pdCB0eXBlcyBhcmUgYWxsb3dlZCwgcHJvdmlkaW5nIGZsZXhpYmlsaXR5XG4gICAgICAgICAqIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgY2hhbmdlcyAoZmVhdHVyZXMsIGZpeGVzLCBkb2N1bWVudGF0aW9uLCByZWZhY3RvcmluZywgZXRjLikuXG4gICAgICAgICAqL1xuICAgICAgICBwdWxsUmVxdWVzdExpbnRPcHRpb25zOiB7XG4gICAgICAgICAgc2VtYW50aWNUaXRsZU9wdGlvbnM6IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxsb3dlZCBjb252ZW50aW9uYWwgY29tbWl0IHR5cGVzIGZvciBQUiB0aXRsZXMuXG4gICAgICAgICAgICAgKiBUaGlzIGluY2x1ZGVzIGFsbCBzdGFuZGFyZCB0eXBlcyBmcm9tIHRoZSBDb252ZW50aW9uYWwgQ29tbWl0cyBzcGVjaWZpY2F0aW9uOlxuICAgICAgICAgICAgICogLSBmZWF0OiBOZXcgZmVhdHVyZXNcbiAgICAgICAgICAgICAqIC0gZml4OiBCdWcgZml4ZXNcbiAgICAgICAgICAgICAqIC0gZG9jczogRG9jdW1lbnRhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgICAgKiAtIHN0eWxlOiBDb2RlIHN0eWxlIGNoYW5nZXMgKGZvcm1hdHRpbmcsIGV0Yy4pXG4gICAgICAgICAgICAgKiAtIHJlZmFjdG9yOiBDb2RlIHJlZmFjdG9yaW5nXG4gICAgICAgICAgICAgKiAtIHBlcmY6IFBlcmZvcm1hbmNlIGltcHJvdmVtZW50c1xuICAgICAgICAgICAgICogLSB0ZXN0OiBUZXN0IGFkZGl0aW9ucyBvciBjaGFuZ2VzXG4gICAgICAgICAgICAgKiAtIGJ1aWxkOiBCdWlsZCBzeXN0ZW0gY2hhbmdlc1xuICAgICAgICAgICAgICogLSBjaTogQ0kgY29uZmlndXJhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgICAgKiAtIGNob3JlOiBNYWludGVuYW5jZSB0YXNrc1xuICAgICAgICAgICAgICogLSByZXZlcnQ6IFJldmVydCBjb21taXRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHR5cGVzOiBbXG4gICAgICAgICAgICAgIFwiZmVhdFwiLFxuICAgICAgICAgICAgICBcImZpeFwiLFxuICAgICAgICAgICAgICBcImRvY3NcIixcbiAgICAgICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgICAgICBcInJlZmFjdG9yXCIsXG4gICAgICAgICAgICAgIFwicGVyZlwiLFxuICAgICAgICAgICAgICBcInRlc3RcIixcbiAgICAgICAgICAgICAgXCJidWlsZFwiLFxuICAgICAgICAgICAgICBcImNpXCIsXG4gICAgICAgICAgICAgIFwiY2hvcmVcIixcbiAgICAgICAgICAgICAgXCJyZXZlcnRcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRGVmYXVsdCBQTlBNIHZlcnNpb24gdG8gdXNlIGluIHRoZSBtb25vcmVwby5cbiAgICAgICAqL1xuICAgICAgcG5wbVZlcnNpb246IFZFUlNJT04uUE5QTV9WRVJTSU9OLFxuXG4gICAgICAvKipcbiAgICAgICAqIFdlIGRvbid0IHdhbnQgc2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGZvciB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBKZXN0IGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBqZXN0OiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCByZWxlYXNlIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHVwZ3JhZGUgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEaXNhYmxlIHRzY29uZmlnLmRldi5qc29uIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCBnb2luZyB0byBiZVxuICAgICAgICogZGV2ZWxvcGluZyBhbnkgY29kZSBoZXJlLiBJdCdzIGp1c3QgYSB0YXNrIHJ1bm5lciBhbmQgY29uZmlndXJhdGlvblxuICAgICAgICogdG9vbCBmb3Igc3ViLXByb2plY3RzLlxuICAgICAgICovXG4gICAgICBkaXNhYmxlVHNjb25maWdEZXY6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogS2lsbCB0aGUgc3JjZGlyIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCB1c2luZyBvbmUuXG4gICAgICAgKi9cbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHJvb3REaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBFbmFibGUgdHVyYm9yZXBvIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHR1cmJvOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEVuYWJsZSByZXNldCB0YXNrIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHJlc2V0VGFzazogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBJbmNsdWRlIHNlbGYgYXMgYSBkZXZEZXBcbiAgICAgICAqL1xuICAgICAgZGV2RGVwczogW1wiQGNvZGVkcmlmdGVycy9jb25maWd1bGF0b3JcIl0sXG5cbiAgICAgIHBucG1PcHRpb25zOiB7XG4gICAgICAgIHBucG1Xb3Jrc3BhY2VPcHRpb25zOiB7XG4gICAgICAgICAgZGVmYXVsdENhdGFsb2c6IHtcbiAgICAgICAgICAgIFtcImF3cy1jZGtcIl06IFZFUlNJT04uQVdTX0NES19DTElfVkVSU0lPTixcbiAgICAgICAgICAgIFtcImF3cy1jZGstbGliXCJdOiBWRVJTSU9OLkFXU19DREtfTElCX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJwcm9qZW5cIl06IFZFUlNJT04uUFJPSkVOX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJjb25zdHJ1Y3RzXCJdOiBWRVJTSU9OLkFXU19DT05TVFJVQ1RTX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJ0dXJib1wiXTogVkVSU0lPTi5UVVJCT19WRVJTSU9OLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBSRVFVSVJFRCBPUFRJT05TXG4gICAgICpcbiAgICAgKiBUaGVzZSBvcHRpb25zIGNhbm5vdCBiZSBjaGFuZ2VkIGJ5IHRoZSB1c2VyLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgcmVxdWlyZWRPcHRpb25zOiBPbWl0PFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgXCJuYW1lXCI+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQncyBzdGFuZGFyZCBwcmFjdGljZSBhbmQgYWxzbyB0byBzaW1wbGlmeVxuICAgICAgICogc29tZSB3b3JrZmxvdyBkZXNpZ24uXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBcIm1haW5cIixcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2UgUE5QTSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IChZYXJuKS4gTXVjaCBvZiB0aGUgZWNvc3lzdGVtIGRlcGVuZHNcbiAgICAgICAqIG9uIFBOUE0gYW5kIG1ha2luZyBtb25vcmVwb3MgUE5QTSBvbmx5IHNpbXBsaWZpZXMgbWFueSBjb25maWd1cmF0aW9ucy5cbiAgICAgICAqL1xuICAgICAgcGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNLFxuXG4gICAgICAvKipcbiAgICAgICAqIFNvbWUgYWRkaXRpb25hbCBwcmUtYnVpbGQgc3RlcHMgaWYgd2UncmUgdXNpbmcgdHVyYm8ncyByZW1vdGUgY2FjaGUuXG4gICAgICAgKi9cbiAgICAgIGJ1aWxkV29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgLi4uYnVpbGRXb3JrZmxvd09wdGlvbnM/LnBlcm1pc3Npb25zLFxuICAgICAgICAgIC4uLnVzZXJPcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlQnVpbGRTdGVwczogW1xuICAgICAgICAgIC4uLihidWlsZFdvcmtmbG93T3B0aW9ucz8ucHJlQnVpbGRTdGVwcyA/PyBbXSksXG4gICAgICAgICAgLi4uKHVzZXJPcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wcmVCdWlsZFN0ZXBzID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIENPTlNUUlVDVE9SXG4gICAgICpcbiAgICAgKiBDb21iaW5lcyBkZWZhdWx0IG9wdGlvbnMgd2l0aCB1c2VyIHByb3ZpZGVkIG9wdGlvbnMgYW5kIHJlcXVpcmVkIG9wdGlvbnMuXG4gICAgICogU3RvcmUgdGhlIG9wdGlvbnMgaW4gYSBjb25zdCBzbyB3ZSBjYW4gdXNlIHRoZW0gYWZ0ZXIgc3VwZXIoKSwgZmFydGhlclxuICAgICAqIGludG8gdGhlIGNvbnN0cnVjdG9yIGZvciBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBvcHRpb25zOiBBcHBsaWVkT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICB1c2VyT3B0aW9ucyxcbiAgICAgIHJlcXVpcmVkT3B0aW9ucyxcbiAgICApO1xuXG4gICAgc3VwZXIoeyAuLi5vcHRpb25zIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUFVCTElDIFBST1BTXG4gICAgICpcbiAgICAgKiBTb21lIHByb3BzIGFyZSBoaWRkZW4gYnkgUHJvamVuIGFuZCB3ZSBuZWVkIHRvIGV4cG9zZSB0aGVtIGZvciB0aGVcbiAgICAgKiBtb25vcmVwbyB0byB3b3JrIHByb3Blcmx5LiBUaGlzIGlzIHdoZXJlIHdlIHN0b3JlIHRoZW0uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbiE7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDVVNUT00gQ09ORklHU1xuICAgICAqXG4gICAgICogV2UgYWRkIHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucyB0byB0aGUgbW9ub3JlcG8gcm9vdCBwcm9qZWN0IGJlbG93XG4gICAgICogc3VjaCBhcyBUdXJib3JlcG8sIFZTIENvZGUgY29uZmlnLCBhbmQgdGhlIFBOUE0gd29ya3NwYWNlIGZpbGUuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgVlNDb2RlIGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBuZXcgVlNDb2RlQ29uZmlnKHRoaXMpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHdvcmtzcGFjZSBkZWZpbml0aW9uIHRvIFBOUE0gcm9vdFxuICAgICAqL1xuICAgIG5ldyBQbnBtV29ya3NwYWNlKHRoaXMsIG9wdGlvbnMucG5wbU9wdGlvbnM/LnBucG1Xb3Jrc3BhY2VPcHRpb25zKTtcblxuICAgIC8qKlxuICAgICAqIFR1cm4gb24gdHVyYm9yZXBvIHN1cHBvcnQgaWYgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnR1cmJvKSB7XG4gICAgICBuZXcgVHVyYm9SZXBvKHRoaXMsIG9wdGlvbnMudHVyYm9PcHRpb25zKTtcblxuICAgICAgdGhpcy5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICAgIG5hbWU6IFwiQnVpbGQgU3ViIFByb2plY3RzXCIsXG4gICAgICAgIHJ1bjogYG5weCBwcm9qZW4gJHtST09UX0NJX1RBU0tfTkFNRX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHJlc2V0IHRhc2sgaWYgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy5yZXNldFRhc2sgIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBkZWZhdWx0UmVzZXRUYXNrT3B0aW9uczogUmVzZXRUYXNrT3B0aW9ucyA9IHtcbiAgICAgICAgcGF0aHNUb1JlbW92ZTogW1wibm9kZV9tb2R1bGVzXCIsIFwiLnR1cmJvXCIsIFwiZGlzdFwiLCBcImxpYlwiXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB1c2VyUmVzZXRUYXNrT3B0aW9ucyA9IG9wdGlvbnMucmVzZXRUYXNrT3B0aW9ucyA/PyB7fTtcbiAgICAgIGNvbnN0IHJlc2V0VGFza09wdGlvbnM6IFJlc2V0VGFza09wdGlvbnMgPSBtZXJnZShcbiAgICAgICAgZGVmYXVsdFJlc2V0VGFza09wdGlvbnMsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi51c2VyUmVzZXRUYXNrT3B0aW9ucyxcbiAgICAgICAgICBwYXRoc1RvUmVtb3ZlOiBbXG4gICAgICAgICAgICAuLi4oZGVmYXVsdFJlc2V0VGFza09wdGlvbnMucGF0aHNUb1JlbW92ZSA/PyBbXSksXG4gICAgICAgICAgICAuLi4odXNlclJlc2V0VGFza09wdGlvbnMucGF0aHNUb1JlbW92ZSA/PyBbXSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBuZXcgUmVzZXRUYXNrKHRoaXMsIHJlc2V0VGFza09wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgcGFja2FnZSBtYW5hZ2VyXG4gICAgICovXG4gICAgLy8gY29uc3QgcG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1WZXJzaW9uID8/IFZFUlNJT04uUE5QTV9WRVJTSU9OO1xuICAgIHRoaXMucGFja2FnZS5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgXCJwYWNrYWdlTWFuYWdlclwiLFxuICAgICAgYHBucG1AJHtvcHRpb25zLnBucG1WZXJzaW9ufWAsXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBzb21lIHNpbGx5IHRoaW5ncyB0byB0aGUgZ2l0aWdub3JlLlxuICAgICAqL1xuICAgIHRoaXMuZ2l0aWdub3JlPy5hZGRQYXR0ZXJucyhcIi5EU19TdG9yZVwiKTtcblxuICAgIC8qKlxuICAgICAqIFVzZSBjYXRhbG9nIHZlcnNpb24gZm9yIGNvbnN0cnVjdHMgdmVyc2lvblxuICAgICAqL1xuICAgIHRoaXMuYWRkRGV2RGVwcyhcImNvbnN0cnVjdHNAY2F0YWxvZzpcIik7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSB0YXNrIG9uIHRoZSBtb25vcmVwbydzIHJvb3QgcHJvamVjdCB0aGF0IHdpbGwgYXR0ZW1wdCB0byB1cGdyYWRlXG4gICAgICogdGhlIEBjb2RlZHJpZnRlcnMvY29uZmlndWxhdG9yIHBhY2thZ2UgdmVyc2lvbiBuaWdodGx5LiBUaGlzIGtlZXBzIHRoZVxuICAgICAqIHByb2plY3QgdXAtdG8tZGF0ZSB3aXRoIHRoZSBsYXRlc3Qgb2ZmaWNpYWwgQ29kZURyaWZ0ZXJzIGNvbmZpZ3MuLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnVwZ3JhZGVDb25maWd1bGF0b3JUYXNrICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy51cGdyYWRlQ29uZmlndWxhdG9yVGFzayA9IG5ldyBVcGdyYWRlRGVwZW5kZW5jaWVzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBtZXJnZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbmNsdWRlOiBbXCJAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvclwiXSxcbiAgICAgICAgICAgIHRhc2tOYW1lOiBgdXBncmFkZS1jb2RlZHJpZnRlcnMtY29uZmlndWxhdG9yYCxcbiAgICAgICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgICBzY2hlZHVsZTogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLkRBSUxZLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnMudXBncmFkZUNvbmZpZ3VsYXRvclRhc2tPcHRpb25zID8/IHt9LFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { AWS_STAGE_TYPE, AwsEnvironmentType, AwsStageType } from "@codedrifters/utils";
1
+ import { AWS_STAGE_TYPE, AwsStageType, DeploymentTargetRoleType } from "@codedrifters/utils";
2
2
  import { Component } from "projen";
3
3
  import { AwsCdkTypeScriptApp } from "projen/lib/awscdk";
4
4
  import { BuildWorkflow, BuildWorkflowOptions } from "projen/lib/build";
@@ -47,9 +47,10 @@ export declare class AwsDeployWorkflow extends Component {
47
47
  /**
48
48
  * AWS environment type, such as primary or secondary.
49
49
  *
50
+ * @deprecated Use deployment target role terminology elsewhere. This property is maintained for backward compatibility.
50
51
  * @default 'primary' (this is the only type supported currently)
51
52
  */
52
- awsEnvironmentType: AwsEnvironmentType;
53
+ awsEnvironmentType: DeploymentTargetRoleType;
53
54
  /**
54
55
  * The list of targets to deploy to.
55
56
  */
@@ -22,9 +22,10 @@ class AwsDeployWorkflow extends projen_1.Component {
22
22
  /**
23
23
  * AWS environment type, such as primary or secondary.
24
24
  *
25
+ * @deprecated Use deployment target role terminology elsewhere. This property is maintained for backward compatibility.
25
26
  * @default 'primary' (this is the only type supported currently)
26
27
  */
27
- this.awsEnvironmentType = utils_1.AWS_ENVIRONMENT_TYPE.PRIMARY;
28
+ this.awsEnvironmentType = utils_1.DEPLOYMENT_TARGET_ROLE.PRIMARY;
28
29
  this.setupNode = () => {
29
30
  return [
30
31
  {
@@ -83,7 +84,7 @@ class AwsDeployWorkflow extends projen_1.Component {
83
84
  return conditions.join(" || ");
84
85
  };
85
86
  this.deploySteps = (target) => {
86
- const { awsStageType, awsEnvironmentType, account, region, ciDeploymentConfig, awsDeploymentConfig, } = target;
87
+ const { awsStageType, deploymentTargetRole, account, region, ciDeploymentConfig, awsDeploymentConfig, } = target;
87
88
  const { roleArn, stackPattern } = ciDeploymentConfig ?? {};
88
89
  const { rootCdkOut } = awsDeploymentConfig;
89
90
  return [
@@ -100,7 +101,7 @@ class AwsDeployWorkflow extends projen_1.Component {
100
101
  * Configure AWS creds.
101
102
  */
102
103
  {
103
- name: `AWS Creds ${awsStageType}/${awsEnvironmentType}/${account}/${region}`,
104
+ name: `AWS Creds ${awsStageType}/${deploymentTargetRole}/${account}/${region}`,
104
105
  uses: "aws-actions/configure-aws-credentials@v4",
105
106
  with: {
106
107
  "role-to-assume": roleArn,
@@ -112,7 +113,7 @@ class AwsDeployWorkflow extends projen_1.Component {
112
113
  * Run CDK Deploy
113
114
  */
114
115
  {
115
- name: `Deploy ${awsStageType}/${awsEnvironmentType}/${account}/${region}`,
116
+ name: `Deploy ${awsStageType}/${deploymentTargetRole}/${account}/${region}`,
116
117
  run: `pnpm dlx aws-cdk deploy --no-rollback --require-approval=never --app=${rootCdkOut} "${stackPattern}"`,
117
118
  },
118
119
  ];
@@ -258,7 +259,7 @@ class AwsDeployWorkflow extends projen_1.Component {
258
259
  const buildJobName = (target) => {
259
260
  return [
260
261
  target.awsStageType,
261
- target.awsEnvironmentType,
262
+ target.deploymentTargetRole,
262
263
  "deploy",
263
264
  target.project.name,
264
265
  target.account,
@@ -277,7 +278,7 @@ class AwsDeployWorkflow extends projen_1.Component {
277
278
  ].join(" && ")
278
279
  : "${{ !needs.build.outputs.self_mutation_happened }}";
279
280
  this.buildWorkflow.addPostBuildJob(deployJobName, {
280
- name: `Deploy ${this.project.name} ${target.awsStageType}/${target.awsEnvironmentType}/${target.account}/${target.region}`,
281
+ name: `Deploy ${this.project.name} ${target.awsStageType}/${target.deploymentTargetRole}/${target.account}/${target.region}`,
281
282
  needs: [
282
283
  "build",
283
284
  ...this.deployAfterTargets.map((p) => {
@@ -309,4 +310,4 @@ class AwsDeployWorkflow extends projen_1.Component {
309
310
  }
310
311
  }
311
312
  exports.AwsDeployWorkflow = AwsDeployWorkflow;
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlcGxveS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvd3MvYXdzLWRlcGxveS13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FLNkI7QUFDN0IsbUNBQW1DO0FBRW5DLDRDQUF1RTtBQUN2RSw4Q0FBMkM7QUFDM0MsdUVBQTJFO0FBRTNFLGdDQUE2QztBQUc3QywwQ0FBOEM7QUFDOUMsb0NBQXdEO0FBQ3hELDBDQUFzQztBQUV6QixRQUFBLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQWtDOUMsTUFBYSxpQkFBa0IsU0FBUSxrQkFBUztJQUN2QyxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQTRCLEVBQzVCLGFBQTRCO1FBRTVCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUEwQixFQUFFLENBQ3pELENBQUMsWUFBWSxpQkFBaUIsSUFBSSxDQUFDLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQztRQUN0RSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUF1Q0QsWUFDUyxPQUE0QixFQUNuQyxVQUFpQyxFQUFFO1FBRW5DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhSLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBNUJyQzs7OztXQUlHO1FBQ0ksdUJBQWtCLEdBQXVCLDRCQUFvQixDQUFDLE9BQU8sQ0FBQztRQTJQdEUsY0FBUyxHQUFHLEdBQW1CLEVBQUU7WUFDdEMsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLHVCQUF1QjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNKLENBQUMsY0FBYyxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxjQUFjO3FCQUN6QztvQkFDRCxnRUFBZ0U7b0JBQ2hFLGNBQWMsRUFBRSxDQUFDO2lCQUNsQjthQUNGLENBQUM7UUFDSixDQUFDLENB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ICBBV1NfU1RBR0VfVFlQRSxcbiAgQXdzRW52aXJvbm1lbnRUeXBlLFxuICBBd3NTdGFnZVR5cGUsXG59IGZyb20gXCJAY29kZWRyaWZ0ZXJzL3V0aWxzXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSBcInByb2plbi9saWIvYXdzY2RrXCI7XG5pbXBvcnQgeyBCdWlsZFdvcmtmbG93LCBCdWlsZFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2J1aWxkXCI7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWJcIjtcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24sIEpvYlN0ZXAgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBWYWx1ZU9mIH0gZnJvbSBcInR5cGUtZmVzdFwiO1xuaW1wb3J0IHsgQXdzRGVwbG95bWVudENvbmZpZyB9IGZyb20gXCIuLi9hd3NcIjtcbmltcG9ydCB7IEF3c0RlcGxveW1lbnRUYXJnZXQgfSBmcm9tIFwiLi4vYXdzL2F3cy1kZXBsb3ltZW50LXRhcmdldFwiO1xuaW1wb3J0IHsgR2l0QnJhbmNoIH0gZnJvbSBcIi4uL2dpdFwiO1xuaW1wb3J0IHsgTW9ub3JlcG9Qcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RzXCI7XG5pbXBvcnQgeyBST09UX0NJX1RBU0tfTkFNRSwgVHVyYm9SZXBvIH0gZnJvbSBcIi4uL3R1cmJvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5cbmV4cG9ydCBjb25zdCBQUk9EX0RFUExPWV9OQU1FID0gXCJwcm9kLWRlcGxveVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveVdvcmtmbG93T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGF0IHR5cGUgb2YgZGVwbG95IGlzIHRoaXMgd29ya2Zsb3cgZm9yP1xuICAgKlxuICAgKiBAZGVmYXVsdCBBV1NfU1RBR0VfVFlQRS5ERVZcbiAgICovXG4gIHJlYWRvbmx5IGF3c1N0YWdlVHlwZT86IFZhbHVlT2Y8dHlwZW9mIEFXU19TVEFHRV9UWVBFPjtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBmZWVkIGEgbGlzdCBvZiB0YXJnZXRzIHRvIGRlcGxveSB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgZGlzY292ZXJzIGFsbCB0YXJnZXRzIHVzaW5nIHN0YWdlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYXdzRGVwbG95bWVudFRhcmdldHM/OiBBcnJheTxBd3NEZXBsb3ltZW50VGFyZ2V0PjtcblxuICAvKipcbiAgICogRXhpc3Rpbmcgd29ya2Zsb3csIHVzZWZ1bCBpZiB3ZSdyZSB0YWNraW5nIGRlcGxveW1lbnRzIG9udG8gYW4gZXhpc3RpbmdcbiAgICogYnVpbGQgd29ya2Zsb3dcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3c/OiBCdWlsZFdvcmtmbG93O1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgYnVpbGQgd29ya2Zsb3csIGlmIG5vIGJ1aWxkIHdvcmtmbG93IGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvd09wdGlvbnM/OiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPjtcblxuICAvKipcbiAgICogUHJvamVjdHMgdGhhdCBzaG91bGQgY29tcGxldGUgZGVwbG95bWVudCBiZWZvcmUgdGhpcyBvbmUgc3RhcnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95QWZ0ZXJUYXJnZXRzPzogQXJyYXk8QXdzRGVwbG95bWVudFRhcmdldD47XG59XG5cbmV4cG9ydCBjbGFzcyBBd3NEZXBsb3lXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb2YoXG4gICAgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCxcbiAgICBidWlsZFdvcmtmbG93OiBCdWlsZFdvcmtmbG93LFxuICApOiBBd3NEZXBsb3lXb3JrZmxvdyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNEZWZpbmVkID0gKGM6IENvbXBvbmVudCk6IGMgaXMgQXdzRGVwbG95V29ya2Zsb3cgPT5cbiAgICAgIGMgaW5zdGFuY2VvZiBBd3NEZXBsb3lXb3JrZmxvdyAmJiBjLmJ1aWxkV29ya2Zsb3cgPT09IGJ1aWxkV29ya2Zsb3c7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzRGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJvb3QgcHJvamVjdCBmb3IgdGhpcyBkZXBsb3kgd29ya2Zsb3cuIE11c3QgYmUgYSBtb25vcmVwbyBwcm9qZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSByb290UHJvamVjdDogTW9ub3JlcG9Qcm9qZWN0O1xuXG4gIC8qKlxuICAgKiBXaGF0IHR5cGUgb2YgZGVwbG95IGlzIHRoaXMgd29ya2Zsb3cgZm9yP1xuICAgKi9cbiAgcHVibGljIGF3c1N0YWdlVHlwZTogQXdzU3RhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBBV1MgZW52aXJvbm1lbnQgdHlwZSwgc3VjaCBhcyBwcmltYXJ5IG9yIHNlY29uZGFyeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknICh0aGlzIGlzIHRoZSBvbmx5IHR5cGUgc3VwcG9ydGVkIGN1cnJlbnRseSlcbiAgICovXG4gIHB1YmxpYyBhd3NFbnZpcm9ubWVudFR5cGU6IEF3c0Vudmlyb25tZW50VHlwZSA9IEFXU19FTlZJUk9OTUVOVF9UWVBFLlBSSU1BUlk7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHRhcmdldHMgdG8gZGVwbG95IHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgYXdzRGVwbG95bWVudFRhcmdldHM6IEFycmF5PEF3c0RlcGxveW1lbnRUYXJnZXQ+O1xuXG4gIC8qKlxuICAgKiBIb2xkIHRoZSBkZXBsb3kgd29ya2Zsb3cgc28gd2UgY2FuIGFkZCB0byBpdCBpbiBwcmVTeW50aFxuICAgKi9cbiAgcHVibGljIGJ1aWxkV29ya2Zsb3c6IEJ1aWxkV29ya2Zsb3c7XG5cbiAgLyoqXG4gICAqIFdhcyB0aGlzIHdvcmtmbG93IGNyZWF0ZWQgZXh0ZXJuYWxseT9cbiAgICovXG4gIHB1YmxpYyBleHRlcm5hbFdvcmtmbG93OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcm9qZWN0cyB0aGF0IHNob3VsZCBjb21wbGV0ZSBkZXBsb3ltZW50IGJlZm9yZSB0aGlzIG9uZSBzdGFydHMuXG4gICAqL1xuICBwdWJsaWMgZGVwbG95QWZ0ZXJUYXJnZXRzOiBBcnJheTxBd3NEZXBsb3ltZW50VGFyZ2V0PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCxcbiAgICBvcHRpb25zOiBEZXBsb3lXb3JrZmxvd09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBSb290IHByb2plY3QgY2hlY2tcbiAgICAgKlxuICAgICAqIERldGVjdCB0aGUgcm9vdCBwcm9qZWN0IGFuZCBlbnN1cmUgaXQncyBvZiB0eXBlIE1vbm9yZXBvUHJvamVjdC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmICghKHByb2plY3Qucm9vdCBpbnN0YW5jZW9mIE1vbm9yZXBvUHJvamVjdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBd3NEZXBsb3lXb3JrZmxvdyByZXF1aXJlcyB0aGUgcm9vdCBwcm9qZWN0IHRvIGJlIGEgTW9ub3JlcG9Qcm9qZWN0XCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucm9vdFByb2plY3QgPSBwcm9qZWN0LnJvb3Q7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBHaXRIdWIgQ2hlY2tcbiAgICAgKlxuICAgICAqIE1ha2Ugc3VyZSBnaXRodWIgY29uZmlnIGlzIGFjdGl2ZSBpbiB0aGUgcHJvamVjdC4gVGhpcyBpcyB0byBlbnN1cmUgYWxsXG4gICAgICogd29ya2Zsb3dzIHdpbGwgYmUgb3V0cHV0IHByb3Blcmx5IGR1cmluZyBzeW50aC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGdpdGh1YiA9IEdpdEh1Yi5vZih0aGlzLnJvb3RQcm9qZWN0KTtcblxuICAgIGlmICghZ2l0aHViKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQXdzRGVwbG95V29ya2Zsb3cgcmVxdWlyZXMgYSBHaXRIdWIgY29tcG9uZW50IGluIHRoZSByb290IHByb2plY3RcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm9SZXBvIENoZWNrXG4gICAgICpcbiAgICAgKiBJZiB0dXJibyBpcyBlbmFibGVkLCB3ZSBtYXkgbmVlZCB0aGUgb3B0aW9ucyBsYXRlciBpbiB0aGlzIGZpbGUuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCB0dXJibyA9IFR1cmJvUmVwby5vZih0aGlzLnJvb3RQcm9qZWN0KTtcbiAgICBjb25zdCBidWlsZFdvcmtmbG93T3B0aW9uczogUGFydGlhbDxCdWlsZFdvcmtmbG93T3B0aW9ucz4gPVxuICAgICAgdHVyYm8/LnJlbW90ZUNhY2hlT3B0aW9uc1xuICAgICAgICA/IFR1cmJvUmVwby5idWlsZFdvcmtmbG93T3B0aW9ucyh0dXJiby5yZW1vdGVDYWNoZU9wdGlvbnMpXG4gICAgICAgIDoge307XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBXb3JrZmxvdyBEZXBsb3kgVHlwZVxuICAgICAqXG4gICAgICogV2hhdCB0eXBlIG9mIGVudmlyb25tZW50cyBhcmUgd2UgZGVwbG95aW5nIGludG8/IFdlJ2xsIGRlZmF1bHQgdG8gZGV2IHRvXG4gICAgICogYmUgc2FmZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMuYXdzU3RhZ2VUeXBlID0gb3B0aW9ucy5hd3NTdGFnZVR5cGUgPz8gQVdTX1NUQUdFX1RZUEUuREVWO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogV29ya2Zsb3cgRGVwbG95IFRhcmdldHNcbiAgICAgKlxuICAgICAqIFVzZSBwcm92aWRlZCB0YXJnZXRzIG9yIGRpc2NvdmVyIHRoZW0gYmFzZWQgb24gdGhlIGRlcGxveSB0eXBlLiBPbmx5XG4gICAgICogaW5jbHVkZSB0YXJnZXRzIHRoYXQgYXJlIG1hcmtlZCBmb3IgQ0kvQ0QuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLmF3c0RlcGxveW1lbnRUYXJnZXRzID1cbiAgICAgIG9wdGlvbnMuYXdzRGVwbG95bWVudFRhcmdldHMgPz9cbiAgICAgIEF3c0RlcGxveW1lbnRDb25maWcub2YocHJvamVjdCk/LmF3c0RlcGxveW1lbnRUYXJnZXRzLmZpbHRlcihcbiAgICAgICAgKHRhcmdldCkgPT5cbiAgICAgICAgICB0YXJnZXQuYXdzU3RhZ2VUeXBlID09PSB0aGlzLmF3c1N0YWdlVHlwZSAmJiB0YXJnZXQuY2lEZXBsb3ltZW50LFxuICAgICAgKSA/P1xuICAgICAgW107XG5cbiAgICB0aGlzLmRlcGxveUFmdGVyVGFyZ2V0cyA9IG9wdGlvbnMuZGVwbG95QWZ0ZXJUYXJnZXRzID8/IFtdO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQnVpbGQgV29ya2Zsb3cgT3B0aW9uc1xuICAgICAqXG4gICAgICogQ2FuJ3QgdXNlIHRoZSBvcHRpb25zIGlmIGFuIGV4aXN0aW5nIHdvcmtmbG93IHdhcyBwYXNzZWQgaW4uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBpZiAob3B0aW9ucy5idWlsZFdvcmtmbG93ICYmIG9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgcHJvdmlkZSBib3RoIGJ1aWxkV29ya2Zsb3cgYW5kIGJ1aWxkV29ya2Zsb3dPcHRpb25zXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuZXh0ZXJuYWxXb3JrZmxvdyA9ICEhb3B0aW9ucy5idWlsZFdvcmtmbG93O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQnVpbGQgV29ya2Zsb3dcbiAgICAgKlxuICAgICAqIENyZWF0ZSBhIHdvcmtmbG93IGVpdGhlciBiYXNlZCBvbiBpbnB1dCBvciBmcm9tIHNjcmF0Y2guXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLmJ1aWxkV29ya2Zsb3cgPVxuICAgICAgb3B0aW9ucy5idWlsZFdvcmtmbG93ID8/XG4gICAgICBuZXcgQnVpbGRXb3JrZmxvdyh0aGlzLnJvb3RQcm9qZWN0LCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOYW1lIGJhc2VkIG9uIHByb2plY3QgYW5kIGVudmlyb25tZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTpcbiAgICAgICAgICBvcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5uYW1lID8/XG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJkZXBsb3lcIixcbiAgICAgICAgICAgIHByb2plY3QubmFtZSxcbiAgICAgICAgICAgIHRoaXMuYXdzU3RhZ2VUeXBlLFxuICAgICAgICAgICAgdGhpcy5hd3NFbnZpcm9ubWVudFR5cGUsXG4gICAgICAgICAgXS5qb2luKFwiLVwiKSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogVXNlIHRoZSByb290IHByb2plY3RzIGJ1aWxkIHRhc2suXG4gICAgICAgICAqL1xuICAgICAgICBidWlsZFRhc2s6IHRoaXMucm9vdFByb2plY3QuYnVpbGRUYXNrLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2UgcHVzaCB0cmlnZ2VycyBiYXNlZCBuIHRoZSBicmFuY2ggY29uZmlnIGZvciBlYWNoIGVudmlyb25tZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgd29ya2Zsb3dUcmlnZ2Vyczoge1xuICAgICAgICAgIHB1c2g6IHtcbiAgICAgICAgICAgIGJyYW5jaGVzOiBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuYXdzRGVwbG95bWVudFRhcmdldHMuZmxhdE1hcCgodCkgPT5cbiAgICAgICAgICAgICAgICB0LmJyYW5jaGVzLm1hcCgoYikgPT4gYi5icmFuY2gpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgICAgIC4uLm9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/LndvcmtmbG93VHJpZ2dlcnMsXG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5ldmVyIGFsbG93IG11dGF0aW9ucyBmb3IgZGVwbG95cy4gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGhhbmRsZWRcbiAgICAgICAgICogZHVyaW5nIGJ1aWxkLlxuICAgICAgICAgKi9cbiAgICAgICAgbXV0YWJsZUJ1aWxkOiBmYWxzZSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogRG8gdGhpcyBwcmUtbWVyZ2Ugb2YgcGVybWlzc2lvbnMgYW5kIGJ1aWxkIHN0ZXBzXG4gICAgICAgICAqL1xuICAgICAgICAuLi5vcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTb21lIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHJlcXVpcmVkIHdoZW4gdHVyYm8ncyBpbnZvbHZlZC5cbiAgICAgICAgICovXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5idWlsZFdvcmtmbG93T3B0aW9ucz8ucGVybWlzc2lvbnMsXG4gICAgICAgICAgLi4uYnVpbGRXb3JrZmxvd09wdGlvbnM/LnBlcm1pc3Npb25zLFxuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBc3NlbWJsZSBhbGwgcHJlLWJ1aWxkIHN0ZXBzXG4gICAgICAgICAqL1xuICAgICAgICBwcmVCdWlsZFN0ZXBzOiBbXG4gICAgICAgICAgLi4udGhpcy5zZXR1cFBucG0oKSxcbiAgICAgICAgICAuLi50aGlzLnNldHVwTm9kZSgpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW5zdGFsbCBkZXBlbmRlbmNpZXNcIixcbiAgICAgICAgICAgIHJ1bjogXCJwbnBtIGkgLS1uby1mcm96ZW4tbG9ja2ZpbGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wcmVCdWlsZFN0ZXBzID8/IFtdKSxcbiAgICAgICAgICAuLi4oYnVpbGRXb3JrZmxvd09wdGlvbnM/LnByZUJ1aWxkU3RlcHMgPz8gW10pLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBBZGQgRGVwbG95bWVudHMgdG8gd29ya2Zsb3dcbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGJ1aWxkSm9iTmFtZSA9ICh0YXJnZXQ6IEF3c0RlcGxveW1lbnRUYXJnZXQpID0+IHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHRhcmdldC5hd3NTdGFnZVR5cGUsXG4gICAgICAgIHRhcmdldC5hd3NFbnZpcm9ubWVudFR5cGUsXG4gICAgICAgIFwiZGVwbG95XCIsXG4gICAgICAgIHRhcmdldC5wcm9qZWN0Lm5hbWUsXG4gICAgICAgIHRhcmdldC5hY2NvdW50LFxuICAgICAgICB0YXJnZXQucmVnaW9uLFxuICAgICAgXS5qb2luKFwiLVwiKTtcbiAgICB9O1xuXG4gICAgdGhpcy5hd3NEZXBsb3ltZW50VGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcbiAgICAgIGNvbnN0IGRlcGxveUpvYk5hbWUgPSBidWlsZEpvYk5hbWUodGFyZ2V0KTtcblxuICAgICAgLy8gQnVpbGQgdGhlIGJyYW5jaCBmaWx0ZXIgY29uZGl0aW9uXG4gICAgICBjb25zdCBicmFuY2hGaWx0ZXJDb25kaXRpb24gPSB0aGlzLmJ1aWxkQnJhbmNoRmlsdGVyQ29uZGl0aW9uKFxuICAgICAgICB0YXJnZXQuYnJhbmNoZXMsXG4gICAgICApO1xuXG4gICAgICAvLyBDb21iaW5lIHdpdGggdGhlIGV4aXN0aW5nIGJ1aWxkIG11dGF0aW9uIGNoZWNrXG4gICAgICBjb25zdCBqb2JDb25kaXRpb24gPSBicmFuY2hGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgPyBbXG4gICAgICAgICAgICBcIiR7eyAhbmVlZHMuYnVpbGQub3V0cHV0cy5zZWxmX211dGF0aW9uX2hhcHBlbmVkIH19XCIsXG4gICAgICAgICAgICBgKCR7YnJhbmNoRmlsdGVyQ29uZGl0aW9ufSlgLFxuICAgICAgICAgIF0uam9pbihcIiAmJiBcIilcbiAgICAgICAgOiBcIiR7eyAhbmVlZHMuYnVpbGQub3V0cHV0cy5zZWxmX211dGF0aW9uX2hhcHBlbmVkIH19XCI7XG5cbiAgICAgIHRoaXMuYnVpbGRXb3JrZmxvdy5hZGRQb3N0QnVpbGRKb2IoZGVwbG95Sm9iTmFtZSwge1xuICAgICAgICBuYW1lOiBgRGVwbG95ICR7dGhpcy5wcm9qZWN0Lm5hbWV9ICR7dGFyZ2V0LmF3c1N0YWdlVHlwZX0vJHt0YXJnZXQuYXdzRW52aXJvbm1lbnRUeXBlfS8ke3RhcmdldC5hY2NvdW50fS8ke3RhcmdldC5yZWdpb259YCxcbiAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICBcImJ1aWxkXCIsXG4gICAgICAgICAgLi4udGhpcy5kZXBsb3lBZnRlclRhcmdldHMubWFwKChwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRKb2JOYW1lKHApO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBydW5zT246IFtcInVidW50dS1sYXRlc3RcIl0sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgICBjb25jdXJyZW5jeTogZGVwbG95Sm9iTmFtZSxcbiAgICAgICAgaWY6IGpvYkNvbmRpdGlvbixcbiAgICAgICAgc3RlcHM6IFsuLi50aGlzLmRlcGxveVN0ZXBzKHRhcmdldCldLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0dXBOb2RlID0gKCk6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcIlNldHVwIE5vZGVcIixcbiAgICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLW5vZGVAdjRcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIFtcIm5vZGUtdmVyc2lvblwiXTogVkVSU0lPTi5OT0RFX1dPUktGTE9XUyxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gb2NjYXNpb25hbGx5IHRoaXMgc3RlcCBmYWlscyBkdWUgdG8gaW50ZXJuYWwgaXNzdWVzIGF0IGdpdGh1YlxuICAgICAgICB0aW1lb3V0TWludXRlczogMSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcblxuICBwdWJsaWMgc2V0dXBQbnBtID0gKCk6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcIlNldHVwIFBOUE1cIixcbiAgICAgICAgdXNlczogXCJwbnBtL2FjdGlvbi1zZXR1cEB2M1wiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgdmVyc2lvbjogVkVSU0lPTi5QTlBNX1ZFUlNJT04sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH07XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIEdpdEh1YiBBY3Rpb25zIGNvbmRpdGlvbiBzdHJpbmcgdGhhdCBjaGVja3MgaWYgdGhlIGN1cnJlbnQgYnJhbmNoXG4gICAqIG1hdGNoZXMgYW55IG9mIHRoZSBwcm92aWRlZCBicmFuY2ggcGF0dGVybnMuXG4gICAqXG4gICAqIEhhbmRsZXMgYm90aCBleGFjdCBtYXRjaGVzIChlLmcuLCBcIm1haW5cIikgYW5kIGdsb2IgcGF0dGVybnMgKGUuZy4sIFwiZmVhdHVyZS8qXCIpLlxuICAgKiBBbHNvIGFsbG93cyB3b3JrZmxvd19kaXNwYXRjaCAobWFudWFsIHJ1bnMpIHRvIHByb2NlZWQuXG4gICAqXG4gICAqIEBwYXJhbSBicmFuY2hlcyBBcnJheSBvZiBHaXRCcmFuY2ggb2JqZWN0cyB3aXRoIGJyYW5jaCBwYXR0ZXJuc1xuICAgKiBAcmV0dXJucyBDb25kaXRpb24gc3RyaW5nIG9yIGVtcHR5IHN0cmluZyBpZiBubyBicmFuY2hlcyBwcm92aWRlZFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEJyYW5jaEZpbHRlckNvbmRpdGlvbiA9IChicmFuY2hlczogQXJyYXk8R2l0QnJhbmNoPik6IHN0cmluZyA9PiB7XG4gICAgaWYgKCFicmFuY2hlcyB8fCBicmFuY2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIC8vIEFsd2F5cyBhbGxvdyB3b3JrZmxvd19kaXNwYXRjaCAobWFudWFsIHdvcmtmbG93IHJ1bnMpXG4gICAgY29uZGl0aW9ucy5wdXNoKFwiZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3dvcmtmbG93X2Rpc3BhdGNoJ1wiKTtcblxuICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIGJyYW5jaGVzKSB7XG4gICAgICBjb25zdCBicmFuY2hQYXR0ZXJuID0gYnJhbmNoLmJyYW5jaDtcblxuICAgICAgLy8gSGFuZGxlIGdsb2IgcGF0dGVybnMgKGUuZy4sIFwiZmVhdHVyZS8qXCIpXG4gICAgICBpZiAoYnJhbmNoUGF0dGVybi5pbmNsdWRlcyhcIipcIikpIHtcbiAgICAgICAgLy8gUmVwbGFjZSAqIHdpdGggcHJvcGVyIHN0YXJ0c1dpdGggY2hlY2tcbiAgICAgICAgY29uc3QgcHJlZml4ID0gYnJhbmNoUGF0dGVybi5yZXBsYWNlKC9cXCouKiQvLCBcIlwiKTtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKGBzdGFydHNXaXRoKGdpdGh1Yi5yZWYsICdyZWZzL2hlYWRzLyR7cHJlZml4fScpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFeGFjdCBtYXRjaFxuICAgICAgICBjb25kaXRpb25zLnB1c2goYGdpdGh1Yi5yZWYgPT0gJ3JlZnMvaGVhZHMvJHticmFuY2hQYXR0ZXJufSdgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21iaW5lIGFsbCBjb25kaXRpb25zIHdpdGggT1JcbiAgICByZXR1cm4gY29uZGl0aW9ucy5qb2luKFwiIHx8IFwiKTtcbiAgfTtcblxuICBwcml2YXRlIGRlcGxveVN0ZXBzID0gKHRhcmdldDogQXdzRGVwbG95bWVudFRhcmdldCk6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBhd3NTdGFnZVR5cGUsXG4gICAgICBhd3NFbnZpcm9ubWVudFR5cGUsXG4gICAgICBhY2NvdW50LFxuICAgICAgcmVnaW9uLFxuICAgICAgY2lEZXBsb3ltZW50Q29uZmlnLFxuICAgICAgYXdzRGVwbG95bWVudENvbmZpZyxcbiAgICB9ID0gdGFyZ2V0O1xuICAgIGNvbnN0IHsgcm9sZUFybiwgc3RhY2tQYXR0ZXJuIH0gPSBjaURlcGxveW1lbnRDb25maWcgPz8ge307XG4gICAgY29uc3QgeyByb290Q2RrT3V0IH0gPSBhd3NEZXBsb3ltZW50Q29uZmlnO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuc2V0dXBQbnBtKCksXG4gICAgICAuLi50aGlzLnNldHVwTm9kZSgpLFxuXG4gICAgICAvKipcbiAgICAgICAqIEluc3RhbGwgQ0RLXG4gICAgICAgKi9cbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJJbnN0YWxsIENES1wiLFxuICAgICAgICBydW46IFwicG5wbSBhZGQgYXdzLWNka1wiLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBDb25maWd1cmUgQVdTIGNyZWRzLlxuICAgICAgICovXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGBBV1MgQ3JlZHMgJHthd3NTdGFnZVR5cGV9LyR7YXdzRW52aXJvbm1lbnRUeXBlfS8ke2FjY291bnR9LyR7cmVnaW9ufWAsXG4gICAgICAgIHVzZXM6IFwiYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0B2NFwiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgXCJyb2xlLXRvLWFzc3VtZVwiOiByb2xlQXJuLFxuICAgICAgICAgIFwiYXdzLXJlZ2lvblwiOiByZWdpb24sXG4gICAgICAgICAgXCJyb2xlLWR1cmF0aW9uLXNlY29uZHNcIjogOTAwLCAvLyAxNSBtaW51dGVzXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJ1biBDREsgRGVwbG95XG4gICAgICAgKi9cbiAgICAgIHtcbiAgICAgICAgbmFtZTogYERlcGxveSAke2F3c1N0YWdlVHlwZX0vJHthd3NFbnZpcm9ubWVudFR5cGV9LyR7YWNjb3VudH0vJHtyZWdpb259YCxcbiAgICAgICAgcnVuOiBgcG5wbSBkbHggYXdzLWNkayBkZXBsb3kgLS1uby1yb2xsYmFjayAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1hcHA9JHtyb290Q2RrT3V0fSBcIiR7c3RhY2tQYXR0ZXJufVwiYCxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcblxuICBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEVuc3VyZSB0dXJibyBpcyBhY3RpdmUgd2hlbiBuZWVkZWQuXG4gICAgICovXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsV29ya2Zsb3cgJiYgVHVyYm9SZXBvLm9mKHRoaXMucm9vdFByb2plY3QpKSB7XG4gICAgICB0aGlzLmJ1aWxkV29ya2Zsb3cuYWRkUG9zdEJ1aWxkU3RlcHMoe1xuICAgICAgICBuYW1lOiBcIkJ1aWxkIFN1YiBQcm9qZWN0c1wiLFxuICAgICAgICBydW46IGBucHggcHJvamVuICR7Uk9PVF9DSV9UQVNLX05BTUV9YCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgfVxufVxuIl19
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlcGxveS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvd3MvYXdzLWRlcGxveS13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FLNkI7QUFDN0IsbUNBQW1DO0FBRW5DLDRDQUF1RTtBQUN2RSw4Q0FBMkM7QUFDM0MsdUVBQTJFO0FBRTNFLGdDQUE2QztBQUc3QywwQ0FBOEM7QUFDOUMsb0NBQXdEO0FBQ3hELDBDQUFzQztBQUV6QixRQUFBLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQWtDOUMsTUFBYSxpQkFBa0IsU0FBUSxrQkFBUztJQUN2QyxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQTRCLEVBQzVCLGFBQTRCO1FBRTVCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUEwQixFQUFFLENBQ3pELENBQUMsWUFBWSxpQkFBaUIsSUFBSSxDQUFDLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQztRQUN0RSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUF5Q0QsWUFDUyxPQUE0QixFQUNuQyxVQUFpQyxFQUFFO1FBRW5DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhSLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBOUJyQzs7Ozs7V0FLRztRQUNJLHVCQUFrQixHQUN2Qiw4QkFBc0IsQ0FBQyxPQUFPLENBQUM7UUEyUDFCLGNBQVMsR0FBRyxHQUFtQixFQUFFO1lBQ3RDLE9BQU87Z0JBQ0w7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLElBQUksRUFBRTt3QkFDSixDQUFDLGNBQWMsQ0FBQyxFQUFFLGtCQUFPLENBQUMsY0FBYztxQkFDekM7b0JBQ0QsZ0VBQWdFO29CQUNoRSxjQUFjLEVBQUUsQ0FBQztpQkFDbEI7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUssY0FBUyxHQUFHLEdBQW1CLEVBQUU7WUFDdEMsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLHNCQUFzQjtvQkFDNUIsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxrQkFBTyxDQUFDLFlBQVk7cUJBQzlCO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGOzs7Ozs7Ozs7V0FTRztRQUNLLCtCQUEwQixHQUFHLENBQUMsUUFBMEIsRUFBVSxFQUFFO1lBQzFFLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQztZQUVyQyx3REFBd0Q7WUFDeEQsVUFBVSxDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBRTVELEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBRXBDLDJDQUEyQztnQkFDM0MsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLHlDQUF5QztvQkFDekMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xELFVBQVUsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLE1BQU0sSUFBSSxDQUFDLENBQUM7Z0JBQ3BFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixjQUFjO29CQUNkLFVBQVUsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ2pFLENBQUM7WUFDSCxDQUFDO1lBRUQsaUNBQWlDO1lBQ2pDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUFFTSxnQkFBVyxHQUFHLENBQUMsTUFBMkIsRUFBa0IsRUFBRTtZQUNwRSxNQUFNLEVBQ0osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsR0FBRyxNQUFNLENBQUM7WUFDWCxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztZQUMzRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7WUFFM0MsT0FBTztnQkFDTCxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25CLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFFbkI7O21CQUVHO2dCQUNIO29CQUNFLElBQUksRUFBRSxhQUFhO29CQUNuQixHQUFHLEVBQUUsa0JBQWtCO2lCQUN4QjtnQkFFRDs7bUJBRUc7Z0JBQ0g7b0JBQ0UsSUFBSSxFQUFFLGFBQWEsWUFBWSxJQUFJLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUU7b0JBQzlFLElBQUksRUFBRSwwQ0FBMEM7b0JBQ2hELElBQUksRUFBRTt3QkFDSixnQkFBZ0IsRUFBRSxPQUFPO3dCQUN6QixZQUFZLEVBQUUsTUFBTTt3QkFDcEIsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLGFBQWE7cUJBQzVDO2lCQUNGO2dCQUVEOzttQkFFRztnQkFDSDtvQkFDRSxJQUFJLEVBQUUsVUFBVSxZQUFZLElBQUksb0JBQW9CLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtvQkFDM0UsR0FBRyxFQUFFLHdFQUF3RSxVQUFVLEtBQUssWUFBWSxHQUFHO2lCQUM1RzthQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUE1VUE7Ozs7OztvRkFNNEU7UUFFNUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksWUFBWSwwQkFBZSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUVoQzs7Ozs7OztvRkFPNEU7UUFFNUUsTUFBTSxNQUFNLEdBQUcsZUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztRQUNKLENBQUM7UUFFRDs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLEtBQUssR0FBRyxpQkFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsTUFBTSxvQkFBb0IsR0FDeEIsS0FBSyxFQUFFLGtCQUFrQjtZQUN2QixDQUFDLENBQUMsaUJBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVUOzs7Ozs7O29GQU80RTtRQUU1RSxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksc0JBQWMsQ0FBQyxHQUFHLENBQUM7UUFFL0Q7Ozs7Ozs7b0ZBTzRFO1FBRTVFLElBQUksQ0FBQyxvQkFBb0I7WUFDdkIsT0FBTyxDQUFDLG9CQUFvQjtnQkFDNUIseUJBQW1CLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FDMUQsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULE1BQU0sQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUNuRTtnQkFDRCxFQUFFLENBQUM7UUFFTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUUzRDs7Ozs7O29GQU00RTtRQUU1RSxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFaEQ7Ozs7OztvRkFNNEU7UUFFNUUsSUFBSSxDQUFDLGFBQWE7WUFDaEIsT0FBTyxDQUFDLGFBQWE7Z0JBQ3JCLElBQUkscUJBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNsQzs7dUJBRUc7b0JBQ0gsSUFBSSxFQUNGLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxJQUFJO3dCQUNsQzs0QkFDRSxRQUFROzRCQUNSLE9BQU8sQ0FBQyxJQUFJOzRCQUNaLElBQUksQ0FBQyxZQUFZOzRCQUNqQixJQUFJLENBQUMsa0JBQWtCO3lCQUN4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBRWI7O3VCQUVHO29CQUNILFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7b0JBRXJDOzt1QkFFRztvQkFDSCxnQkFBZ0IsRUFBRTt3QkFDaEIsSUFBSSxFQUFFOzRCQUNKLFFBQVEsRUFBRTtnQ0FDUixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN6QyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUNoQzs2QkFDRjt5QkFDRjt3QkFDRCxnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxnQkFBZ0I7cUJBQ2xEO29CQUVEOzs7dUJBR0c7b0JBQ0gsWUFBWSxFQUFFLEtBQUs7b0JBRW5COzt1QkFFRztvQkFDSCxHQUFHLE9BQU8sQ0FBQyxvQkFBb0I7b0JBRS9COzt1QkFFRztvQkFDSCxXQUFXLEVBQUU7d0JBQ1gsR0FBRyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsV0FBVzt3QkFDNUMsR0FBRyxvQkFBb0IsRUFBRSxXQUFXO3FCQUNyQztvQkFFRDs7dUJBRUc7b0JBQ0gsYUFBYSxFQUFFO3dCQUNiLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFDbkIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUNuQjs0QkFDRSxJQUFJLEVBQUUsc0JBQXNCOzRCQUM1QixHQUFHLEVBQUUsNkJBQTZCO3lCQUNuQzt3QkFDRCxHQUFHLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7d0JBQ3RELEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDO3FCQUMvQztpQkFDRixDQUFDLENBQUM7UUFFTDs7OztvRkFJNEU7UUFFNUUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUEyQixFQUFFLEVBQUU7WUFDbkQsT0FBTztnQkFDTCxNQUFNLENBQUMsWUFBWTtnQkFDbkIsTUFBTSxDQUFDLG9CQUFvQjtnQkFDM0IsUUFBUTtnQkFDUixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUk7Z0JBQ25CLE1BQU0sQ0FBQyxPQUFPO2dCQUNkLE1BQU0sQ0FBQyxNQUFNO2FBQ2QsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0MsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTNDLG9DQUFvQztZQUNwQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDM0QsTUFBTSxDQUFDLFFBQVEsQ0FDaEIsQ0FBQztZQUVGLGlEQUFpRDtZQUNqRCxNQUFNLFlBQVksR0FBRyxxQkFBcUI7Z0JBQ3hDLENBQUMsQ0FBQztvQkFDRSxvREFBb0Q7b0JBQ3BELElBQUkscUJBQXFCLEdBQUc7aUJBQzdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLG9EQUFvRCxDQUFDO1lBRXpELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtnQkFDaEQsSUFBSSxFQUFFLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsb0JBQW9CLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUM1SCxLQUFLLEVBQUU7b0JBQ0wsT0FBTztvQkFDUCxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDbkMsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLENBQUMsQ0FBQztpQkFDSDtnQkFDRCxNQUFNLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQ3pCLFdBQVcsRUFBRTtvQkFDWCxRQUFRLEVBQUUsK0JBQWEsQ0FBQyxJQUFJO29CQUM1QixPQUFPLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO2lCQUM3QjtnQkFDRCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsRUFBRSxFQUFFLFlBQVk7Z0JBQ2hCLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFpSEQsYUFBYTtRQUNYOztXQUVHO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxpQkFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO2dCQUNuQyxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixHQUFHLEVBQUUsY0FBYyx5QkFBaUIsRUFBRTthQUN2QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQWxaRCw4Q0FrWkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBV1NfU1RBR0VfVFlQRSxcbiAgQXdzU3RhZ2VUeXBlLFxuICBERVBMT1lNRU5UX1RBUkdFVF9ST0xFLFxuICBEZXBsb3ltZW50VGFyZ2V0Um9sZVR5cGUsXG59IGZyb20gXCJAY29kZWRyaWZ0ZXJzL3V0aWxzXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSBcInByb2plbi9saWIvYXdzY2RrXCI7XG5pbXBvcnQgeyBCdWlsZFdvcmtmbG93LCBCdWlsZFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2J1aWxkXCI7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWJcIjtcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24sIEpvYlN0ZXAgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBWYWx1ZU9mIH0gZnJvbSBcInR5cGUtZmVzdFwiO1xuaW1wb3J0IHsgQXdzRGVwbG95bWVudENvbmZpZyB9IGZyb20gXCIuLi9hd3NcIjtcbmltcG9ydCB7IEF3c0RlcGxveW1lbnRUYXJnZXQgfSBmcm9tIFwiLi4vYXdzL2F3cy1kZXBsb3ltZW50LXRhcmdldFwiO1xuaW1wb3J0IHsgR2l0QnJhbmNoIH0gZnJvbSBcIi4uL2dpdFwiO1xuaW1wb3J0IHsgTW9ub3JlcG9Qcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RzXCI7XG5pbXBvcnQgeyBST09UX0NJX1RBU0tfTkFNRSwgVHVyYm9SZXBvIH0gZnJvbSBcIi4uL3R1cmJvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5cbmV4cG9ydCBjb25zdCBQUk9EX0RFUExPWV9OQU1FID0gXCJwcm9kLWRlcGxveVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveVdvcmtmbG93T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGF0IHR5cGUgb2YgZGVwbG95IGlzIHRoaXMgd29ya2Zsb3cgZm9yP1xuICAgKlxuICAgKiBAZGVmYXVsdCBBV1NfU1RBR0VfVFlQRS5ERVZcbiAgICovXG4gIHJlYWRvbmx5IGF3c1N0YWdlVHlwZT86IFZhbHVlT2Y8dHlwZW9mIEFXU19TVEFHRV9UWVBFPjtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBmZWVkIGEgbGlzdCBvZiB0YXJnZXRzIHRvIGRlcGxveSB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgZGlzY292ZXJzIGFsbCB0YXJnZXRzIHVzaW5nIHN0YWdlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYXdzRGVwbG95bWVudFRhcmdldHM/OiBBcnJheTxBd3NEZXBsb3ltZW50VGFyZ2V0PjtcblxuICAvKipcbiAgICogRXhpc3Rpbmcgd29ya2Zsb3csIHVzZWZ1bCBpZiB3ZSdyZSB0YWNraW5nIGRlcGxveW1lbnRzIG9udG8gYW4gZXhpc3RpbmdcbiAgICogYnVpbGQgd29ya2Zsb3dcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3c/OiBCdWlsZFdvcmtmbG93O1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgYnVpbGQgd29ya2Zsb3csIGlmIG5vIGJ1aWxkIHdvcmtmbG93IGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvd09wdGlvbnM/OiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPjtcblxuICAvKipcbiAgICogUHJvamVjdHMgdGhhdCBzaG91bGQgY29tcGxldGUgZGVwbG95bWVudCBiZWZvcmUgdGhpcyBvbmUgc3RhcnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95QWZ0ZXJUYXJnZXRzPzogQXJyYXk8QXdzRGVwbG95bWVudFRhcmdldD47XG59XG5cbmV4cG9ydCBjbGFzcyBBd3NEZXBsb3lXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb2YoXG4gICAgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCxcbiAgICBidWlsZFdvcmtmbG93OiBCdWlsZFdvcmtmbG93LFxuICApOiBBd3NEZXBsb3lXb3JrZmxvdyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNEZWZpbmVkID0gKGM6IENvbXBvbmVudCk6IGMgaXMgQXdzRGVwbG95V29ya2Zsb3cgPT5cbiAgICAgIGMgaW5zdGFuY2VvZiBBd3NEZXBsb3lXb3JrZmxvdyAmJiBjLmJ1aWxkV29ya2Zsb3cgPT09IGJ1aWxkV29ya2Zsb3c7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzRGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJvb3QgcHJvamVjdCBmb3IgdGhpcyBkZXBsb3kgd29ya2Zsb3cuIE11c3QgYmUgYSBtb25vcmVwbyBwcm9qZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSByb290UHJvamVjdDogTW9ub3JlcG9Qcm9qZWN0O1xuXG4gIC8qKlxuICAgKiBXaGF0IHR5cGUgb2YgZGVwbG95IGlzIHRoaXMgd29ya2Zsb3cgZm9yP1xuICAgKi9cbiAgcHVibGljIGF3c1N0YWdlVHlwZTogQXdzU3RhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBBV1MgZW52aXJvbm1lbnQgdHlwZSwgc3VjaCBhcyBwcmltYXJ5IG9yIHNlY29uZGFyeS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGRlcGxveW1lbnQgdGFyZ2V0IHJvbGUgdGVybWlub2xvZ3kgZWxzZXdoZXJlLiBUaGlzIHByb3BlcnR5IGlzIG1haW50YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5JyAodGhpcyBpcyB0aGUgb25seSB0eXBlIHN1cHBvcnRlZCBjdXJyZW50bHkpXG4gICAqL1xuICBwdWJsaWMgYXdzRW52aXJvbm1lbnRUeXBlOiBEZXBsb3ltZW50VGFyZ2V0Um9sZVR5cGUgPVxuICAgIERFUExPWU1FTlRfVEFSR0VUX1JPTEUuUFJJTUFSWTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFyZ2V0cyB0byBkZXBsb3kgdG8uXG4gICAqL1xuICByZWFkb25seSBhd3NEZXBsb3ltZW50VGFyZ2V0czogQXJyYXk8QXdzRGVwbG95bWVudFRhcmdldD47XG5cbiAgLyoqXG4gICAqIEhvbGQgdGhlIGRlcGxveSB3b3JrZmxvdyBzbyB3ZSBjYW4gYWRkIHRvIGl0IGluIHByZVN5bnRoXG4gICAqL1xuICBwdWJsaWMgYnVpbGRXb3JrZmxvdzogQnVpbGRXb3JrZmxvdztcblxuICAvKipcbiAgICogV2FzIHRoaXMgd29ya2Zsb3cgY3JlYXRlZCBleHRlcm5hbGx5P1xuICAgKi9cbiAgcHVibGljIGV4dGVybmFsV29ya2Zsb3c6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb2plY3RzIHRoYXQgc2hvdWxkIGNvbXBsZXRlIGRlcGxveW1lbnQgYmVmb3JlIHRoaXMgb25lIHN0YXJ0cy5cbiAgICovXG4gIHB1YmxpYyBkZXBsb3lBZnRlclRhcmdldHM6IEFycmF5PEF3c0RlcGxveW1lbnRUYXJnZXQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLFxuICAgIG9wdGlvbnM6IERlcGxveVdvcmtmbG93T3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFJvb3QgcHJvamVjdCBjaGVja1xuICAgICAqXG4gICAgICogRGV0ZWN0IHRoZSByb290IHByb2plY3QgYW5kIGVuc3VyZSBpdCdzIG9mIHR5cGUgTW9ub3JlcG9Qcm9qZWN0LlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgaWYgKCEocHJvamVjdC5yb290IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkF3c0RlcGxveVdvcmtmbG93IHJlcXVpcmVzIHRoZSByb290IHByb2plY3QgdG8gYmUgYSBNb25vcmVwb1Byb2plY3RcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb290UHJvamVjdCA9IHByb2plY3Qucm9vdDtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEdpdEh1YiBDaGVja1xuICAgICAqXG4gICAgICogTWFrZSBzdXJlIGdpdGh1YiBjb25maWcgaXMgYWN0aXZlIGluIHRoZSBwcm9qZWN0LiBUaGlzIGlzIHRvIGVuc3VyZSBhbGxcbiAgICAgKiB3b3JrZmxvd3Mgd2lsbCBiZSBvdXRwdXQgcHJvcGVybHkgZHVyaW5nIHN5bnRoLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZ2l0aHViID0gR2l0SHViLm9mKHRoaXMucm9vdFByb2plY3QpO1xuXG4gICAgaWYgKCFnaXRodWIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBd3NEZXBsb3lXb3JrZmxvdyByZXF1aXJlcyBhIEdpdEh1YiBjb21wb25lbnQgaW4gdGhlIHJvb3QgcHJvamVjdFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBUdXJib1JlcG8gQ2hlY2tcbiAgICAgKlxuICAgICAqIElmIHR1cmJvIGlzIGVuYWJsZWQsIHdlIG1heSBuZWVkIHRoZSBvcHRpb25zIGxhdGVyIGluIHRoaXMgZmlsZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IHR1cmJvID0gVHVyYm9SZXBvLm9mKHRoaXMucm9vdFByb2plY3QpO1xuICAgIGNvbnN0IGJ1aWxkV29ya2Zsb3dPcHRpb25zOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9XG4gICAgICB0dXJibz8ucmVtb3RlQ2FjaGVPcHRpb25zXG4gICAgICAgID8gVHVyYm9SZXBvLmJ1aWxkV29ya2Zsb3dPcHRpb25zKHR1cmJvLnJlbW90ZUNhY2hlT3B0aW9ucylcbiAgICAgICAgOiB7fTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFdvcmtmbG93IERlcGxveSBUeXBlXG4gICAgICpcbiAgICAgKiBXaGF0IHR5cGUgb2YgZW52aXJvbm1lbnRzIGFyZSB3ZSBkZXBsb3lpbmcgaW50bz8gV2UnbGwgZGVmYXVsdCB0byBkZXYgdG9cbiAgICAgKiBiZSBzYWZlLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy5hd3NTdGFnZVR5cGUgPSBvcHRpb25zLmF3c1N0YWdlVHlwZSA/PyBBV1NfU1RBR0VfVFlQRS5ERVY7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBXb3JrZmxvdyBEZXBsb3kgVGFyZ2V0c1xuICAgICAqXG4gICAgICogVXNlIHByb3ZpZGVkIHRhcmdldHMgb3IgZGlzY292ZXIgdGhlbSBiYXNlZCBvbiB0aGUgZGVwbG95IHR5cGUuIE9ubHlcbiAgICAgKiBpbmNsdWRlIHRhcmdldHMgdGhhdCBhcmUgbWFya2VkIGZvciBDSS9DRC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMuYXdzRGVwbG95bWVudFRhcmdldHMgPVxuICAgICAgb3B0aW9ucy5hd3NEZXBsb3ltZW50VGFyZ2V0cyA/P1xuICAgICAgQXdzRGVwbG95bWVudENvbmZpZy5vZihwcm9qZWN0KT8uYXdzRGVwbG95bWVudFRhcmdldHMuZmlsdGVyKFxuICAgICAgICAodGFyZ2V0KSA9PlxuICAgICAgICAgIHRhcmdldC5hd3NTdGFnZVR5cGUgPT09IHRoaXMuYXdzU3RhZ2VUeXBlICYmIHRhcmdldC5jaURlcGxveW1lbnQsXG4gICAgICApID8/XG4gICAgICBbXTtcblxuICAgIHRoaXMuZGVwbG95QWZ0ZXJUYXJnZXRzID0gb3B0aW9ucy5kZXBsb3lBZnRlclRhcmdldHMgPz8gW107XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBCdWlsZCBXb3JrZmxvdyBPcHRpb25zXG4gICAgICpcbiAgICAgKiBDYW4ndCB1c2UgdGhlIG9wdGlvbnMgaWYgYW4gZXhpc3Rpbmcgd29ya2Zsb3cgd2FzIHBhc3NlZCBpbi5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmIChvcHRpb25zLmJ1aWxkV29ya2Zsb3cgJiYgb3B0aW9ucy5idWlsZFdvcmtmbG93T3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNhbm5vdCBwcm92aWRlIGJvdGggYnVpbGRXb3JrZmxvdyBhbmQgYnVpbGRXb3JrZmxvd09wdGlvbnNcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5leHRlcm5hbFdvcmtmbG93ID0gISFvcHRpb25zLmJ1aWxkV29ya2Zsb3c7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBCdWlsZCBXb3JrZmxvd1xuICAgICAqXG4gICAgICogQ3JlYXRlIGEgd29ya2Zsb3cgZWl0aGVyIGJhc2VkIG9uIGlucHV0IG9yIGZyb20gc2NyYXRjaC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMuYnVpbGRXb3JrZmxvdyA9XG4gICAgICBvcHRpb25zLmJ1aWxkV29ya2Zsb3cgPz9cbiAgICAgIG5ldyBCdWlsZFdvcmtmbG93KHRoaXMucm9vdFByb2plY3QsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5hbWUgYmFzZWQgb24gcHJvamVjdCBhbmQgZW52aXJvbm1lbnQuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOlxuICAgICAgICAgIG9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/Lm5hbWUgPz9cbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImRlcGxveVwiLFxuICAgICAgICAgICAgcHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgdGhpcy5hd3NTdGFnZVR5cGUsXG4gICAgICAgICAgICB0aGlzLmF3c0Vudmlyb25tZW50VHlwZSxcbiAgICAgICAgICBdLmpvaW4oXCItXCIpLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2UgdGhlIHJvb3QgcHJvamVjdHMgYnVpbGQgdGFzay5cbiAgICAgICAgICovXG4gICAgICAgIGJ1aWxkVGFzazogdGhpcy5yb290UHJvamVjdC5idWlsZFRhc2ssXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZSBwdXNoIHRyaWdnZXJzIGJhc2VkIG4gdGhlIGJyYW5jaCBjb25maWcgZm9yIGVhY2ggZW52aXJvbm1lbnQuXG4gICAgICAgICAqL1xuICAgICAgICB3b3JrZmxvd1RyaWdnZXJzOiB7XG4gICAgICAgICAgcHVzaDoge1xuICAgICAgICAgICAgYnJhbmNoZXM6IFtcbiAgICAgICAgICAgICAgLi4udGhpcy5hd3NEZXBsb3ltZW50VGFyZ2V0cy5mbGF0TWFwKCh0KSA9PlxuICAgICAgICAgICAgICAgIHQuYnJhbmNoZXMubWFwKChiKSA9PiBiLmJyYW5jaCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgICAgICAgLi4ub3B0aW9ucy5idWlsZFdvcmtmbG93T3B0aW9ucz8ud29ya2Zsb3dUcmlnZ2VycyxcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogTmV2ZXIgYWxsb3cgbXV0YXRpb25zIGZvciBkZXBsb3lzLiBUaGlzIHNob3VsZCBoYXZlIGJlZW4gaGFuZGxlZFxuICAgICAgICAgKiBkdXJpbmcgYnVpbGQuXG4gICAgICAgICAqL1xuICAgICAgICBtdXRhYmxlQnVpbGQ6IGZhbHNlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEbyB0aGlzIHByZS1tZXJnZSBvZiBwZXJtaXNzaW9ucyBhbmQgYnVpbGQgc3RlcHNcbiAgICAgICAgICovXG4gICAgICAgIC4uLm9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNvbWUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgcmVxdWlyZWQgd2hlbiB0dXJibydzIGludm9sdmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAuLi5vcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICAgICAgICAuLi5idWlsZFdvcmtmbG93T3B0aW9ucz8ucGVybWlzc2lvbnMsXG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFzc2VtYmxlIGFsbCBwcmUtYnVpbGQgc3RlcHNcbiAgICAgICAgICovXG4gICAgICAgIHByZUJ1aWxkU3RlcHM6IFtcbiAgICAgICAgICAuLi50aGlzLnNldHVwUG5wbSgpLFxuICAgICAgICAgIC4uLnRoaXMuc2V0dXBOb2RlKCksXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJJbnN0YWxsIGRlcGVuZGVuY2llc1wiLFxuICAgICAgICAgICAgcnVuOiBcInBucG0gaSAtLW5vLWZyb3plbi1sb2NrZmlsZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uKG9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/LnByZUJ1aWxkU3RlcHMgPz8gW10pLFxuICAgICAgICAgIC4uLihidWlsZFdvcmtmbG93T3B0aW9ucz8ucHJlQnVpbGRTdGVwcyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEFkZCBEZXBsb3ltZW50cyB0byB3b3JrZmxvd1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgYnVpbGRKb2JOYW1lID0gKHRhcmdldDogQXdzRGVwbG95bWVudFRhcmdldCkgPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGFyZ2V0LmF3c1N0YWdlVHlwZSxcbiAgICAgICAgdGFyZ2V0LmRlcGxveW1lbnRUYXJnZXRSb2xlLFxuICAgICAgICBcImRlcGxveVwiLFxuICAgICAgICB0YXJnZXQucHJvamVjdC5uYW1lLFxuICAgICAgICB0YXJnZXQuYWNjb3VudCxcbiAgICAgICAgdGFyZ2V0LnJlZ2lvbixcbiAgICAgIF0uam9pbihcIi1cIik7XG4gICAgfTtcblxuICAgIHRoaXMuYXdzRGVwbG95bWVudFRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiB7XG4gICAgICBjb25zdCBkZXBsb3lKb2JOYW1lID0gYnVpbGRKb2JOYW1lKHRhcmdldCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSBicmFuY2ggZmlsdGVyIGNvbmRpdGlvblxuICAgICAgY29uc3QgYnJhbmNoRmlsdGVyQ29uZGl0aW9uID0gdGhpcy5idWlsZEJyYW5jaEZpbHRlckNvbmRpdGlvbihcbiAgICAgICAgdGFyZ2V0LmJyYW5jaGVzLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSB3aXRoIHRoZSBleGlzdGluZyBidWlsZCBtdXRhdGlvbiBjaGVja1xuICAgICAgY29uc3Qgam9iQ29uZGl0aW9uID0gYnJhbmNoRmlsdGVyQ29uZGl0aW9uXG4gICAgICAgID8gW1xuICAgICAgICAgICAgXCIke3sgIW5lZWRzLmJ1aWxkLm91dHB1dHMuc2VsZl9tdXRhdGlvbl9oYXBwZW5lZCB9fVwiLFxuICAgICAgICAgICAgYCgke2JyYW5jaEZpbHRlckNvbmRpdGlvbn0pYCxcbiAgICAgICAgICBdLmpvaW4oXCIgJiYgXCIpXG4gICAgICAgIDogXCIke3sgIW5lZWRzLmJ1aWxkLm91dHB1dHMuc2VsZl9tdXRhdGlvbl9oYXBwZW5lZCB9fVwiO1xuXG4gICAgICB0aGlzLmJ1aWxkV29ya2Zsb3cuYWRkUG9zdEJ1aWxkSm9iKGRlcGxveUpvYk5hbWUsIHtcbiAgICAgICAgbmFtZTogYERlcGxveSAke3RoaXMucHJvamVjdC5uYW1lfSAke3RhcmdldC5hd3NTdGFnZVR5cGV9LyR7dGFyZ2V0LmRlcGxveW1lbnRUYXJnZXRSb2xlfS8ke3RhcmdldC5hY2NvdW50fS8ke3RhcmdldC5yZWdpb259YCxcbiAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICBcImJ1aWxkXCIsXG4gICAgICAgICAgLi4udGhpcy5kZXBsb3lBZnRlclRhcmdldHMubWFwKChwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRKb2JOYW1lKHApO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBydW5zT246IFtcInVidW50dS1sYXRlc3RcIl0sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgICBjb25jdXJyZW5jeTogZGVwbG95Sm9iTmFtZSxcbiAgICAgICAgaWY6IGpvYkNvbmRpdGlvbixcbiAgICAgICAgc3RlcHM6IFsuLi50aGlzLmRlcGxveVN0ZXBzKHRhcmdldCldLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0dXBOb2RlID0gKCk6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcIlNldHVwIE5vZGVcIixcbiAgICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLW5vZGVAdjRcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIFtcIm5vZGUtdmVyc2lvblwiXTogVkVSU0lPTi5OT0RFX1dPUktGTE9XUyxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gb2NjYXNpb25hbGx5IHRoaXMgc3RlcCBmYWlscyBkdWUgdG8gaW50ZXJuYWwgaXNzdWVzIGF0IGdpdGh1YlxuICAgICAgICB0aW1lb3V0TWludXRlczogMSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcblxuICBwdWJsaWMgc2V0dXBQbnBtID0gKCk6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcIlNldHVwIFBOUE1cIixcbiAgICAgICAgdXNlczogXCJwbnBtL2FjdGlvbi1zZXR1cEB2M1wiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgdmVyc2lvbjogVkVSU0lPTi5QTlBNX1ZFUlNJT04sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH07XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIEdpdEh1YiBBY3Rpb25zIGNvbmRpdGlvbiBzdHJpbmcgdGhhdCBjaGVja3MgaWYgdGhlIGN1cnJlbnQgYnJhbmNoXG4gICAqIG1hdGNoZXMgYW55IG9mIHRoZSBwcm92aWRlZCBicmFuY2ggcGF0dGVybnMuXG4gICAqXG4gICAqIEhhbmRsZXMgYm90aCBleGFjdCBtYXRjaGVzIChlLmcuLCBcIm1haW5cIikgYW5kIGdsb2IgcGF0dGVybnMgKGUuZy4sIFwiZmVhdHVyZS8qXCIpLlxuICAgKiBBbHNvIGFsbG93cyB3b3JrZmxvd19kaXNwYXRjaCAobWFudWFsIHJ1bnMpIHRvIHByb2NlZWQuXG4gICAqXG4gICAqIEBwYXJhbSBicmFuY2hlcyBBcnJheSBvZiBHaXRCcmFuY2ggb2JqZWN0cyB3aXRoIGJyYW5jaCBwYXR0ZXJuc1xuICAgKiBAcmV0dXJucyBDb25kaXRpb24gc3RyaW5nIG9yIGVtcHR5IHN0cmluZyBpZiBubyBicmFuY2hlcyBwcm92aWRlZFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEJyYW5jaEZpbHRlckNvbmRpdGlvbiA9IChicmFuY2hlczogQXJyYXk8R2l0QnJhbmNoPik6IHN0cmluZyA9PiB7XG4gICAgaWYgKCFicmFuY2hlcyB8fCBicmFuY2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIC8vIEFsd2F5cyBhbGxvdyB3b3JrZmxvd19kaXNwYXRjaCAobWFudWFsIHdvcmtmbG93IHJ1bnMpXG4gICAgY29uZGl0aW9ucy5wdXNoKFwiZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3dvcmtmbG93X2Rpc3BhdGNoJ1wiKTtcblxuICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIGJyYW5jaGVzKSB7XG4gICAgICBjb25zdCBicmFuY2hQYXR0ZXJuID0gYnJhbmNoLmJyYW5jaDtcblxuICAgICAgLy8gSGFuZGxlIGdsb2IgcGF0dGVybnMgKGUuZy4sIFwiZmVhdHVyZS8qXCIpXG4gICAgICBpZiAoYnJhbmNoUGF0dGVybi5pbmNsdWRlcyhcIipcIikpIHtcbiAgICAgICAgLy8gUmVwbGFjZSAqIHdpdGggcHJvcGVyIHN0YXJ0c1dpdGggY2hlY2tcbiAgICAgICAgY29uc3QgcHJlZml4ID0gYnJhbmNoUGF0dGVybi5yZXBsYWNlKC9cXCouKiQvLCBcIlwiKTtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKGBzdGFydHNXaXRoKGdpdGh1Yi5yZWYsICdyZWZzL2hlYWRzLyR7cHJlZml4fScpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFeGFjdCBtYXRjaFxuICAgICAgICBjb25kaXRpb25zLnB1c2goYGdpdGh1Yi5yZWYgPT0gJ3JlZnMvaGVhZHMvJHticmFuY2hQYXR0ZXJufSdgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21iaW5lIGFsbCBjb25kaXRpb25zIHdpdGggT1JcbiAgICByZXR1cm4gY29uZGl0aW9ucy5qb2luKFwiIHx8IFwiKTtcbiAgfTtcblxuICBwcml2YXRlIGRlcGxveVN0ZXBzID0gKHRhcmdldDogQXdzRGVwbG95bWVudFRhcmdldCk6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBhd3NTdGFnZVR5cGUsXG4gICAgICBkZXBsb3ltZW50VGFyZ2V0Um9sZSxcbiAgICAgIGFjY291bnQsXG4gICAgICByZWdpb24sXG4gICAgICBjaURlcGxveW1lbnRDb25maWcsXG4gICAgICBhd3NEZXBsb3ltZW50Q29uZmlnLFxuICAgIH0gPSB0YXJnZXQ7XG4gICAgY29uc3QgeyByb2xlQXJuLCBzdGFja1BhdHRlcm4gfSA9IGNpRGVwbG95bWVudENvbmZpZyA/PyB7fTtcbiAgICBjb25zdCB7IHJvb3RDZGtPdXQgfSA9IGF3c0RlcGxveW1lbnRDb25maWc7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4udGhpcy5zZXR1cFBucG0oKSxcbiAgICAgIC4uLnRoaXMuc2V0dXBOb2RlKCksXG5cbiAgICAgIC8qKlxuICAgICAgICogSW5zdGFsbCBDREtcbiAgICAgICAqL1xuICAgICAge1xuICAgICAgICBuYW1lOiBcIkluc3RhbGwgQ0RLXCIsXG4gICAgICAgIHJ1bjogXCJwbnBtIGFkZCBhd3MtY2RrXCIsXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIENvbmZpZ3VyZSBBV1MgY3JlZHMuXG4gICAgICAgKi9cbiAgICAgIHtcbiAgICAgICAgbmFtZTogYEFXUyBDcmVkcyAke2F3c1N0YWdlVHlwZX0vJHtkZXBsb3ltZW50VGFyZ2V0Um9sZX0vJHthY2NvdW50fS8ke3JlZ2lvbn1gLFxuICAgICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjRcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIFwicm9sZS10by1hc3N1bWVcIjogcm9sZUFybixcbiAgICAgICAgICBcImF3cy1yZWdpb25cIjogcmVnaW9uLFxuICAgICAgICAgIFwicm9sZS1kdXJhdGlvbi1zZWNvbmRzXCI6IDkwMCwgLy8gMTUgbWludXRlc1xuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSdW4gQ0RLIERlcGxveVxuICAgICAgICovXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGBEZXBsb3kgJHthd3NTdGFnZVR5cGV9LyR7ZGVwbG95bWVudFRhcmdldFJvbGV9LyR7YWNjb3VudH0vJHtyZWdpb259YCxcbiAgICAgICAgcnVuOiBgcG5wbSBkbHggYXdzLWNkayBkZXBsb3kgLS1uby1yb2xsYmFjayAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1hcHA9JHtyb290Q2RrT3V0fSBcIiR7c3RhY2tQYXR0ZXJufVwiYCxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcblxuICBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEVuc3VyZSB0dXJibyBpcyBhY3RpdmUgd2hlbiBuZWVkZWQuXG4gICAgICovXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsV29ya2Zsb3cgJiYgVHVyYm9SZXBvLm9mKHRoaXMucm9vdFByb2plY3QpKSB7XG4gICAgICB0aGlzLmJ1aWxkV29ya2Zsb3cuYWRkUG9zdEJ1aWxkU3RlcHMoe1xuICAgICAgICBuYW1lOiBcIkJ1aWxkIFN1YiBQcm9qZWN0c1wiLFxuICAgICAgICBydW46IGBucHggcHJvamVuICR7Uk9PVF9DSV9UQVNLX05BTUV9YCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "main": "lib/index.js",
43
43
  "license": "MIT",
44
- "version": "0.0.82",
44
+ "version": "0.0.84",
45
45
  "types": "lib/index.d.ts",
46
46
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".",
47
47
  "scripts": {