cdklabs-projen-project-types 0.6.1 → 0.6.2

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/.jsii CHANGED
@@ -7403,7 +7403,7 @@
7403
7403
  },
7404
7404
  "locationInModule": {
7405
7405
  "filename": "src/yarn/monorepo.ts",
7406
- "line": 324
7406
+ "line": 334
7407
7407
  },
7408
7408
  "parameters": [
7409
7409
  {
@@ -7417,7 +7417,7 @@
7417
7417
  "kind": "class",
7418
7418
  "locationInModule": {
7419
7419
  "filename": "src/yarn/monorepo.ts",
7420
- "line": 323
7420
+ "line": 333
7421
7421
  },
7422
7422
  "name": "CdkLabsMonorepo",
7423
7423
  "namespace": "yarn",
@@ -7437,7 +7437,7 @@
7437
7437
  "kind": "interface",
7438
7438
  "locationInModule": {
7439
7439
  "filename": "src/yarn/monorepo.ts",
7440
- "line": 317
7440
+ "line": 327
7441
7441
  },
7442
7442
  "name": "CdkLabsMonorepoOptions",
7443
7443
  "namespace": "yarn",
@@ -7562,7 +7562,7 @@
7562
7562
  "kind": "interface",
7563
7563
  "locationInModule": {
7564
7564
  "filename": "src/yarn/monorepo.ts",
7565
- "line": 306
7565
+ "line": 316
7566
7566
  },
7567
7567
  "methods": [
7568
7568
  {
@@ -7572,7 +7572,7 @@
7572
7572
  },
7573
7573
  "locationInModule": {
7574
7574
  "filename": "src/yarn/monorepo.ts",
7575
- "line": 307
7575
+ "line": 317
7576
7576
  },
7577
7577
  "name": "resolveDepsAndWritePackageJson",
7578
7578
  "returns": {
@@ -8131,7 +8131,7 @@
8131
8131
  },
8132
8132
  "locationInModule": {
8133
8133
  "filename": "src/yarn/monorepo.ts",
8134
- "line": 291
8134
+ "line": 301
8135
8135
  },
8136
8136
  "name": "postSynthesize",
8137
8137
  "overrides": "projen.Project"
@@ -8144,7 +8144,7 @@
8144
8144
  },
8145
8145
  "locationInModule": {
8146
8146
  "filename": "src/yarn/monorepo.ts",
8147
- "line": 231
8147
+ "line": 238
8148
8148
  },
8149
8149
  "name": "requestInstallDependencies",
8150
8150
  "parameters": [
@@ -8164,7 +8164,7 @@
8164
8164
  },
8165
8165
  "locationInModule": {
8166
8166
  "filename": "src/yarn/monorepo.ts",
8167
- "line": 220
8167
+ "line": 227
8168
8168
  },
8169
8169
  "name": "synth",
8170
8170
  "overrides": "projen.Project"
@@ -8195,7 +8195,7 @@
8195
8195
  "immutable": true,
8196
8196
  "locationInModule": {
8197
8197
  "filename": "src/yarn/monorepo.ts",
8198
- "line": 216
8198
+ "line": 223
8199
8199
  },
8200
8200
  "name": "subprojects",
8201
8201
  "overrides": "projen.Project",
@@ -15241,6 +15241,6 @@
15241
15241
  "usedFeatures": [
15242
15242
  "class-covariant-overrides"
15243
15243
  ],
15244
- "version": "0.6.1",
15245
- "fingerprint": "y2gdol/Sa0BhinajNQsxdgcDrKYIO8MqP6VOGJ5Yz80="
15244
+ "version": "0.6.2",
15245
+ "fingerprint": "4TRzYpGaDZKHww6xQ00ieyTzlz9omPHswpjUeKBQqZw="
15246
15246
  }
package/lib/cdk.js CHANGED
@@ -12,7 +12,7 @@ const rosetta_1 = require("./rosetta");
12
12
  * @pjid cdk-construct-lib
13
13
  */
14
14
  class CdkConstructLibrary extends projen_1.awscdk.AwsCdkConstructLibrary {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkConstructLibrary", version: "0.6.1" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkConstructLibrary", version: "0.6.2" };
16
16
  static stabilityRequirements(options) {
17
17
  const errors = [];
18
18
  if (!options.publishToPypi) {
@@ -61,7 +61,7 @@ exports.CdkConstructLibrary = CdkConstructLibrary;
61
61
  * @pjid cdk-ts-proj
62
62
  */
63
63
  class CdkTypeScriptProject extends projen_1.typescript.TypeScriptProject {
64
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkTypeScriptProject", version: "0.6.1" };
64
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkTypeScriptProject", version: "0.6.2" };
65
65
  private;
66
66
  constructor(options) {
67
67
  const opts = (0, common_options_1.withCommonOptionsDefaults)(options);
package/lib/cdklabs.js CHANGED
@@ -112,7 +112,7 @@ function createNpmPublishingDefaults() {
112
112
  * @pjid cdklabs-construct-lib
113
113
  */
114
114
  class CdklabsConstructLibrary extends cdk_1.CdkConstructLibrary {
115
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsConstructLibrary", version: "0.6.1" };
115
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsConstructLibrary", version: "0.6.2" };
116
116
  constructor(options) {
117
117
  const cdklabsPublishingDefaultProps = (options.cdklabsPublishingDefaults ?? true) ?
118
118
  createCdklabsPublishingDefaults(options.name, options.jsiiTargetLanguages) : {};
@@ -134,7 +134,7 @@ exports.CdklabsConstructLibrary = CdklabsConstructLibrary;
134
134
  * @pjid cdklabs-ts-proj
135
135
  */
136
136
  class CdklabsTypeScriptProject extends cdk_1.CdkTypeScriptProject {
137
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsTypeScriptProject", version: "0.6.1" };
137
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsTypeScriptProject", version: "0.6.2" };
138
138
  constructor(options) {
139
139
  // the leftmost object is mutated and returned by deepMerge
140
140
  const mergedOptions = (0, util_1.deepMerge)([
@@ -154,7 +154,7 @@ exports.CdklabsTypeScriptProject = CdklabsTypeScriptProject;
154
154
  * @pjid cdklabs-jsii-proj
155
155
  */
156
156
  class CdklabsJsiiProject extends jsii_1.CdkJsiiProject {
157
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsJsiiProject", version: "0.6.1" };
157
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsJsiiProject", version: "0.6.2" };
158
158
  constructor(options) {
159
159
  const cdklabsPublishingDefaultProps = (options.cdklabsPublishingDefaults ?? true) ?
160
160
  createCdklabsPublishingDefaults(options.name, options.jsiiTargetLanguages) : {};
package/lib/jsii.js CHANGED
@@ -10,7 +10,7 @@ const common_options_1 = require("./common-options");
10
10
  * @pjid cdk-jsii-proj
11
11
  */
12
12
  class CdkJsiiProject extends projen_1.cdk.JsiiProject {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkJsiiProject", version: "0.6.1" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkJsiiProject", version: "0.6.2" };
14
14
  private;
15
15
  constructor(options) {
16
16
  const opts = (0, common_options_1.withCommonOptionsDefaults)({
package/lib/rosetta.js CHANGED
@@ -10,7 +10,7 @@ const projen_1 = require("projen");
10
10
  * ensure that rosetta will run successfully
11
11
  */
12
12
  class Rosetta extends projen_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.Rosetta", version: "0.6.1" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.Rosetta", version: "0.6.2" };
14
14
  constructor(project, options = {}) {
15
15
  super(project);
16
16
  const strict = options.strict ?? true;
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const projen_1 = require("projen");
6
6
  const DEV_DEP_TYPES = [projen_1.DependencyType.BUILD, projen_1.DependencyType.DEVENV, projen_1.DependencyType.TEST];
7
7
  class Constraints extends projen_1.Component {
8
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.Constraints", version: "0.6.1" };
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.Constraints", version: "0.6.2" };
9
9
  packages;
10
10
  constructor(project, options) {
11
11
  super(project);
@@ -11,7 +11,7 @@ const rosetta_1 = require("../rosetta");
11
11
  * adding monorepo-appropriate defaults (Rosetta, composite, pypiClassifiers).
12
12
  */
13
13
  class WorkspaceJsiiBuild {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceJsiiBuild", version: "0.6.1" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceJsiiBuild", version: "0.6.2" };
15
15
  options;
16
16
  constructor(options = {}) {
17
17
  this.options = options;
@@ -47,7 +47,7 @@ const LATEST_COMMIT_OUTPUT = 'latest_commit';
47
47
  const ALL_PACKAGES_INPUT = '*all packages*';
48
48
  class MonorepoRelease extends projen_1.Component {
49
49
  options;
50
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.MonorepoRelease", version: "0.6.1" };
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.MonorepoRelease", version: "0.6.2" };
51
51
  /**
52
52
  * Returns the `MonorepoReleaseWorkflow` component of a project or `undefined` if the project
53
53
  * does not have a MonorepoReleaseWorkflow component.
@@ -46,7 +46,7 @@ const MONOREPO_SYM = Symbol.for('cdklabs-projen-project-types.yarn.Monorepo');
46
46
  */
47
47
  class Monorepo extends projen_1.typescript.TypeScriptProject {
48
48
  settings;
49
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.Monorepo", version: "0.6.1" };
49
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.Monorepo", version: "0.6.2" };
50
50
  static isMonorepo(x) {
51
51
  return Boolean(x && typeof x === 'object' && MONOREPO_SYM in x);
52
52
  }
@@ -74,6 +74,13 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
74
74
  jest: false,
75
75
  eslint: false,
76
76
  release: false,
77
+ // The monorepo root is not a real compilation unit; its single tsconfig
78
+ // only exists to type-check the projenrc files and hold project
79
+ // references to the workspaces. A separate dev tsconfig is not just
80
+ // redundant, it actively resolves to `test/tsconfig.json` in projen and
81
+ // would pollute that file. Disabling it makes `tsconfigDev` alias
82
+ // `tsconfig`, consolidating everything onto the root `tsconfig.json`.
83
+ disableTsconfigDev: true,
77
84
  });
78
85
  this.settings = settings;
79
86
  Object.defineProperty(this, MONOREPO_SYM, { value: true });
@@ -96,7 +103,7 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
96
103
  parserOptions: {
97
104
  ecmaVersion: 2018,
98
105
  sourceType: 'module',
99
- project: './tsconfig.dev.json',
106
+ project: `./${(this.tsconfigDev ?? this.tsconfig)?.fileName ?? 'tsconfig.json'}`,
100
107
  },
101
108
  ignorePatterns: ['!.projenrc.ts'],
102
109
  extends: ['plugin:prettier/recommended'],
@@ -256,9 +263,12 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
256
263
  }
257
264
  }
258
265
  }
259
- this.tsconfig?.file.addOverride('include', []);
260
- this.tsconfigDev?.file.addOverride('include', ['.projenrc.ts', 'projenrc/**/*.ts']);
261
- for (const tsconfig of [this.tsconfig, this.tsconfigDev]) {
266
+ // The root tsconfig is only there to type-check the projenrc files and to
267
+ // hold project references to the workspaces. Because the dev tsconfig is
268
+ // disabled, `tsconfigDev` aliases `tsconfig`, so we only have a single file
269
+ // to configure here (the `Set` dedupes in case that ever changes).
270
+ for (const tsconfig of new Set([this.tsconfig, this.tsconfigDev])) {
271
+ tsconfig?.file.addOverride('include', ['.projenrc.ts', 'projenrc/**/*.ts']);
262
272
  tsconfig?.file.addOverride('references', this.subprojects.map((p) => ({ path: p.workspaceDirectory })));
263
273
  }
264
274
  this.package.addField('jest', {
@@ -305,7 +315,7 @@ function getObjFromFile(project, file) {
305
315
  * @pjid cdklabs-yarn-monorepo
306
316
  */
307
317
  class CdkLabsMonorepo extends Monorepo {
308
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.CdkLabsMonorepo", version: "0.6.1" };
318
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.CdkLabsMonorepo", version: "0.6.2" };
309
319
  constructor(options) {
310
320
  super({
311
321
  projenrcTs: true,
@@ -332,4 +342,4 @@ class CdkLabsMonorepo extends Monorepo {
332
342
  }
333
343
  }
334
344
  exports.CdkLabsMonorepo = CdkLabsMonorepo;
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9tb25vcmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTZDO0FBQzdDLG1DQUFzRztBQUN0RywrQ0FBNEM7QUFFNUMseURBQXFEO0FBQ3JELDZCQUEwQjtBQUcxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQWlCNUI7O0lBaEJyQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQVU7UUFDakMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ2EsZUFBZSxDQUFtQjtJQUVsRDs7T0FFRztJQUNhLGFBQWEsQ0FBVTtJQUUvQix1QkFBdUIsR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztJQUU5RCxZQUE0QixRQUF5QjtRQUNuRCxLQUFLLENBQUM7WUFDSixHQUFHLFFBQVE7WUFDWCxjQUFjLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsWUFBWTtZQUMxSCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDckMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCO2dCQUM1QixhQUFhLEVBQUU7b0JBQ2IsVUFBVSxFQUFFLG1CQUFVLENBQUMsY0FBYyxDQUFDLFlBQVk7b0JBQ2xELEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLGFBQWE7aUJBQzVDO2FBQ0YsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNiLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLElBQUksRUFBRSxLQUFLO1lBQ1gsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztRQWZ1QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQWlCbkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRSxxREFBcUQ7UUFDckQsSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FDMUQsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLHdCQUF3QixDQUFDLENBQUM7WUFDcEUsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDbkMsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLEdBQUcsRUFBRTtvQkFDSCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUM7b0JBQzNDLE1BQU0sRUFBRSwyQkFBMkI7b0JBQ25DLGFBQWEsRUFBRTt3QkFDYixXQUFXLEVBQUUsSUFBSTt3QkFDakIsVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLE9BQU8sRUFBRSxxQkFBcUI7cUJBQy9CO29CQUNELGNBQWMsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQ3pDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLDhFQUE4RSxFQUFFLENBQUMsQ0FBQztZQUVwSCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxFQUFFO2dCQUN6RixZQUFZO2dCQUNaLFlBQVk7YUFDYixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM3QixNQUFNLGFBQWEsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDO1lBQ3BELElBQUksaUJBQVEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUNoQyxhQUFhLEVBQUUsSUFBSTtnQkFDbkIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ1YsT0FBTyxFQUFFLEdBQUcsRUFBRTt3QkFDWixNQUFNLE9BQU8sR0FHUixJQUFJLENBQUMsV0FBVzs2QkFDbEIsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUVoRCxJQUFJLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxDQUFDOzRCQUMxRCxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLHNCQUFzQixFQUFFLGlCQUFpQixJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQ3ZHLENBQUM7d0JBRUQsT0FBTyxPQUFPLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixNQUFNLGNBQWMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQVEsQ0FBQzt3QkFDcEYsSUFBSSxRQUFRLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDckYsY0FBYyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO2dDQUN4RSxPQUFPO29DQUNMLEdBQUcsUUFBUTtvQ0FDWCxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtpQ0FDckQsQ0FBQzs0QkFDSixDQUFDLEVBQUUsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUM1QyxDQUFDO3dCQUNELE9BQU8sY0FBYyxDQUFDO29CQUN4QixDQUFDO29CQUNELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDO2lCQUNsRSxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVEOztXQUVHO1FBQ0gsYUFBYTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUVBQWlFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1FBRTdILElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQ2hELGtCQUFTLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLE1BQU0sQ0FBQyxDQUMxRCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2xCLElBQUksRUFBRSxLQUFLO1lBQ1gsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9GLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7UUFDMUUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyx5QkFBeUIsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzVCLEdBQUcsRUFBRSxVQUFVO1lBQ2YsV0FBVyxFQUFFLHdDQUF3QztZQUNyRCxLQUFLLEVBQUU7Z0JBQ0wsZ0hBQWdIO2dCQUNoSCxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxxRkFBcUYsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDcEwsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLG9CQUFvQixFQUFFO2dCQUN0QyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixFQUFFO2dCQUM1RSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRTtnQkFDekQsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNwQixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7YUFDMUI7U0FDRixDQUFDLENBQUM7UUFFSCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdEMsS0FBSztRQUNMLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLElBQUksT0FBRSxDQUFDLElBQUksRUFBRTtnQkFDWCxXQUFXLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjthQUMzQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxrQ0FBZSxDQUFDLElBQUksRUFBRTtnQkFDL0MsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO2dCQUN2QyxXQUFXO2dCQUNYLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsR0FBRyxRQUFRLENBQUMsY0FBYzthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQW9CLFdBQVc7UUFDN0IsT0FBTyxLQUFLLENBQUMsV0FBb0MsQ0FBQztJQUNwRCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSwwQkFBMEIsQ0FBQyxRQUE2QjtRQUM3RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztZQUMzRCxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDakUsQ0FBQyxDQUFDO1FBRUgsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDcEYsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekQsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQ3hCLFlBQVksRUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQzlELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssYUFBYTtRQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRzthQUNQLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyx1QkFBYyxDQUFDLE9BQU8sQ0FBQzthQUNwRCxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLO1NBQzNCLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsTUFBTSxPQUFPLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxNQUFNLEVBQUUsbUJBQVUsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBRXZGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakYsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxtQkFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMvRixDQUFDO1lBRUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzs7QUFqU0gsNEJBa1NDO0FBTUQsU0FBUyxjQUFjLENBQUMsT0FBZ0IsRUFBRSxJQUFZO0lBQ3BELE9BQVEsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBUyxFQUFFLEdBQUcsQ0FBQztBQUN2RCxDQUFDO0FBT0Q7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFFBQVE7O0lBQzNDLFlBQVksT0FBK0I7UUFDekMsS0FBSyxDQUFDO1lBQ0osVUFBVSxFQUFFLElBQUk7WUFFaEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixrQkFBa0IsRUFBRTtnQkFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUM7Z0JBQ3pFLE1BQU0sRUFBRSxjQUFjO2FBQ3ZCO1lBQ0QsR0FBRyxPQUFPO1lBQ1YsYUFBYSxFQUFFO2dCQUNiLEdBQUcsT0FBTyxDQUFDLGFBQWE7Z0JBQ3hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLGdCQUFnQixFQUFFLElBQUk7YUFDdkI7WUFDRCw2R0FBNkc7WUFDN0csK0ZBQStGO1lBQy9GLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxPQUFPO1NBQzVELENBQUMsQ0FBQztRQUVILElBQUksZUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDMUIsZ0JBQWdCLEVBQUU7Z0JBQ2hCLGlCQUFpQixFQUFFLGVBQU0sQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxDQUFDO2FBQ3ZHO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExQkgsMENBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aFBvc2l4IGZyb20gJ25vZGU6cGF0aC9wb3NpeCc7XG5pbXBvcnQgeyBKc29uRmlsZSwgUHJvamVjdCwgamF2YXNjcmlwdCwgdHlwZXNjcmlwdCwgZ2l0aHViLCBEZXBlbmRlbmN5VHlwZSwgSnNvblBhdGNoIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENvbnN0cmFpbnRzIH0gZnJvbSAnLi9jb25zdHJhaW50cyc7XG5pbXBvcnQgeyBNb25vcmVwb09wdGlvbnMgfSBmcm9tICcuL21vbm9yZXBvLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlJztcbmltcG9ydCB7IE54IH0gZnJvbSAnLi9ueCc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZSc7XG5cbmNvbnN0IE1PTk9SRVBPX1NZTSA9IFN5bWJvbC5mb3IoJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMueWFybi5Nb25vcmVwbycpO1xuXG4vKipcbiAqIEEgbW9ub3JlcG8gdXNpbmcgeWFybiB3b3Jrc3BhY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ub3JlcG8gZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgcHVibGljIHN0YXRpYyBpc01vbm9yZXBvKHg6IFByb2plY3QpOiB4IGlzIE1vbm9yZXBvIHtcbiAgICByZXR1cm4gQm9vbGVhbih4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBNT05PUkVQT19TWU0gaW4geCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIE1vbm9yZXBvIFJlbGVhc2UgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9ub3JlcG9SZWxlYXNlPzogTW9ub3JlcG9SZWxlYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIHBhY2thZ2UgbGl2ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICBwcml2YXRlIHBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzID0gbmV3IEFycmF5PCgpID0+IHN0cmluZ1tdPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzZXR0aW5nczogTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICBwYWNrYWdlTWFuYWdlcjogc2V0dGluZ3MueWFybkJlcnJ5ID8gamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuWUFSTl9CRVJSWSA6IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQ0xBU1NJQyxcbiAgICAgIHlhcm5CZXJyeU9wdGlvbnM6IHNldHRpbmdzLnlhcm5CZXJyeSA/IHtcbiAgICAgICAgLi4uc2V0dGluZ3MueWFybkJlcnJ5T3B0aW9ucyxcbiAgICAgICAgeWFyblJjT3B0aW9uczoge1xuICAgICAgICAgIG5vZGVMaW5rZXI6IGphdmFzY3JpcHQuWWFybk5vZGVMaW5rZXIuTk9ERV9NT0RVTEVTLFxuICAgICAgICAgIC4uLnNldHRpbmdzLnlhcm5CZXJyeU9wdGlvbnM/Lnlhcm5SY09wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICB9IDogdW5kZWZpbmVkLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICBqZXN0OiBmYWxzZSxcbiAgICAgIGVzbGludDogZmFsc2UsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBNT05PUkVQT19TWU0sIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnJlcG9zaXRvcnlVcmwgPSBzZXR0aW5ncy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IGJ1aWxkV2l0aE54ID0gQm9vbGVhbihzZXR0aW5ncy5ueCAmJiBzZXR0aW5ncy5idWlsZFdpdGhOeCk7XG5cbiAgICAvLyBZYXJuIEJlcnJ5IGRlcGVuZGVuY2llc01ldGEgZm9yIGJ1aWxkYWJsZSBwYWNrYWdlc1xuICAgIGlmIChzZXR0aW5ncy5idWlsZGFibGVQYWNrYWdlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2RlcGVuZGVuY2llc01ldGEnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIHNldHRpbmdzLmJ1aWxkYWJsZVBhY2thZ2VzLm1hcCgocGtnKSA9PiBbcGtnLCB7IGJ1aWx0OiB0cnVlIH1dKSxcbiAgICAgICkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIGZvcm1hdHRpbmdcbiAgICAgKi9cbiAgICBpZiAoc2V0dGluZ3MucHJldHRpZXIpIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcygnZXNsaW50LWNvbmZpZy1wcmV0dGllcicsICdlc2xpbnQtcGx1Z2luLXByZXR0aWVyJyk7XG4gICAgICBuZXcgSnNvbkZpbGUodGhpcywgJy5lc2xpbnRyYy5qc29uJywge1xuICAgICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgICBvYmo6IHtcbiAgICAgICAgICBwbHVnaW5zOiBbJ0B0eXBlc2NyaXB0LWVzbGludCcsICdwcmV0dGllciddLFxuICAgICAgICAgIHBhcnNlcjogJ0B0eXBlc2NyaXB0LWVzbGludC9wYXJzZXInLFxuICAgICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVjbWFWZXJzaW9uOiAyMDE4LFxuICAgICAgICAgICAgc291cmNlVHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICBwcm9qZWN0OiAnLi90c2NvbmZpZy5kZXYuanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpZ25vcmVQYXR0ZXJuczogWychLnByb2plbnJjLnRzJ10sXG4gICAgICAgICAgZXh0ZW5kczogWydwbHVnaW46cHJldHRpZXIvcmVjb21tZW5kZWQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50YXNrcy5hZGRUYXNrKCdmbXQnLCB7IGV4ZWM6ICdlc2xpbnQgLS1leHQgLnRzIC0tZml4IC0tbm8tZXJyb3Itb24tdW5tYXRjaGVkLXBhdHRlcm4gcHJvamVucmMgLnByb2plbnJjLnRzJyB9KTtcblxuICAgICAgdGhpcy52c2NvZGU/LmV4dGVuc2lvbnMuYWRkUmVjb21tZW5kYXRpb25zKCdlc2JlbnAucHJldHRpZXItdnNjb2RlJywgJ2RiYWV1bWVyLnZzY29kZS1lc2xpbnQnKTtcbiAgICAgIHRoaXMudnNjb2RlPy5zZXR0aW5ncy5hZGRTZXR0aW5nKCdlZGl0b3IuZGVmYXVsdEZvcm1hdHRlcicsICdlc2JlbnAucHJldHRpZXItdnNjb2RlJyk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZygnZXNsaW50LmZvcm1hdC5lbmFibGUnLCB0cnVlKTtcbiAgICAgIHRoaXMudnNjb2RlPy5zZXR0aW5ncy5hZGRTZXR0aW5ncyh7ICdlZGl0b3IuZGVmYXVsdEZvcm1hdHRlcic6ICdkYmFldW1lci52c2NvZGUtZXNsaW50JyB9LCBbXG4gICAgICAgICdqYXZhc2NyaXB0JyxcbiAgICAgICAgJ3R5cGVzY3JpcHQnLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgVlNDb2RlIFdvcmtzcGFjZVxuICAgICAqL1xuICAgIGlmIChzZXR0aW5ncy52c2NvZGVXb3Jrc3BhY2UpIHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZUZpbGUgPSBgJHt0aGlzLm5hbWV9LmNvZGUtd29ya3NwYWNlYDtcbiAgICAgIG5ldyBKc29uRmlsZSh0aGlzLCB3b3Jrc3BhY2VGaWxlLCB7XG4gICAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgICBmb2xkZXJzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXJzOiBBcnJheTx7XG4gICAgICAgICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgIH0+ID0gdGhpcy5zdWJwcm9qZWN0c1xuICAgICAgICAgICAgICAuc29ydCgocDEsIHAyKSA9PiBwMS5uYW1lLmxvY2FsZUNvbXBhcmUocDIubmFtZSkpXG4gICAgICAgICAgICAgIC5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKTtcblxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LmluY2x1ZGVSb290V29ya3NwYWNlKSB7XG4gICAgICAgICAgICAgIGZvbGRlcnMudW5zaGlmdCh7IHBhdGg6ICcuJywgbmFtZTogc2V0dGluZ3MudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8ucm9vdFdvcmtzcGFjZU5hbWUgPz8gJzxyb290PicgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmb2xkZXJzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0dGluZ3M6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZzY29kZVNldHRpbmdzID0gKGdldE9iakZyb21GaWxlKHRoaXMsICcudnNjb2RlL3NldHRpbmdzLmpzb24nKSA/PyB7fSkgYXMgYW55O1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LmluY2x1ZGVSb290V29ya3NwYWNlICYmIHRoaXMuc3VicHJvamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHZzY29kZVNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPSB0aGlzLnN1YnByb2plY3RzLnJlZHVjZSgoZXhjbHVkZXMsIHApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4uZXhjbHVkZXMsXG4gICAgICAgICAgICAgICAgICBbcC53b3Jrc3BhY2VEaXJlY3Rvcnkuc3BsaXQocGF0aFBvc2l4LnNlcClbMF1dOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sIHZzY29kZVNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPz8ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZzY29kZVNldHRpbmdzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXh0ZW5zaW9uczogKCkgPT4gZ2V0T2JqRnJvbUZpbGUodGhpcywgJy52c2NvZGUvZXh0ZW5zaW9ucy5qc29uJyksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFza3NcbiAgICAgKi9cbiAgICAvLyBidWlsZCB0YXNrXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdidWlsZCcpO1xuICAgIGNvbnN0IGZtdFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ2ZtdCcpO1xuICAgIGNvbnN0IGJ1aWxkVGFzayA9IHRoaXMudGFza3MuYWRkVGFzaygnYnVpbGQnKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKHRoaXMuZGVmYXVsdFRhc2spO1xuICAgIH1cbiAgICBpZiAoZm10VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKGZtdFRhc2spO1xuICAgIH1cbiAgICBjb25zdCB3c1J1biA9IHNldHRpbmdzLnlhcm5CZXJyeSA/ICd5YXJuIHdvcmtzcGFjZXMgZm9yZWFjaCAtLWFsbCAtLWV4Y2x1ZGUgLiAtLXRvcG9sb2dpY2FsLWRldiBydW4nIDogJ3lhcm4gd29ya3NwYWNlcyBydW4nO1xuXG4gICAgaWYgKGJ1aWxkV2l0aE54KSB7XG4gICAgICBidWlsZFRhc2suZXhlYygnbnggcnVuLW1hbnkgLXQgYnVpbGQnKTtcbiAgICAgIHRoaXMuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coJ2J1aWxkJyk/LmZpbGU/LnBhdGNoKFxuICAgICAgICBKc29uUGF0Y2guYWRkKCcvam9icy9idWlsZC9lbnYvTlhfU0tJUF9OWF9DQUNIRScsICd0cnVlJyksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWlsZFRhc2suZXhlYyhgJHt3c1J1bn0gYnVpbGRgKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gaW4gYWxsIHdvcmtzcGFjZXMgdGFza3NcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ2NvbXBpbGUnKT8ucmVzZXQoYCR7d3NSdW59IGNvbXBpbGVgKTtcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ3BhY2thZ2UnKT8ucmVzZXQoYCR7d3NSdW59IHBhY2thZ2VgKTtcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ3Rlc3QnKT8ucmVzZXQoYCR7d3NSdW59IHRlc3RgKTtcbiAgICB0aGlzLmFkZFRhc2soJ3J1bicsIHtcbiAgICAgIGV4ZWM6IHdzUnVuLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBVcGdyYWRlIGFsbCBwYWNrYWdlc1xuICAgIGNvbnN0IGNvb2xkb3duID0gc2V0dGluZ3MuZGVwc1VwZ3JhZGVPcHRpb25zPy5jb29sZG93biA/PyAoc2V0dGluZ3MueWFybkJlcnJ5ID8gMyA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgdXBncmFkZUVudiA9IHsgLi4udGhpcy51cGdyYWRlV29ya2Zsb3c/LnVwZ3JhZGVUYXNrLmVudlZhcnMgfHwge30gfTtcbiAgICBpZiAoY29vbGRvd24gJiYgc2V0dGluZ3MueWFybkJlcnJ5KSB7XG4gICAgICB1cGdyYWRlRW52LllBUk5fTlBNX01JTklNQUxfQUdFX0dBVEUgPSBTdHJpbmcoY29vbGRvd24gKiAyNCAqIDYwKTtcbiAgICB9XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCd1cGdyYWRlJyk7XG4gICAgdGhpcy50YXNrcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZW52OiB1cGdyYWRlRW52LFxuICAgICAgZGVzY3JpcHRpb246ICdVcGdyYWRlIGRlcGVuZGVuY2llcyBpbiBhbGwgd29ya3NwYWNlcycsXG4gICAgICBzdGVwczogW1xuICAgICAgICAvLyBJdCBpcyBub3Qgc2FmZSBhbnltb3JlIHRvIGhhdmUgJ25wbS1jaGVjay11cGRhdGVzJyBpbiBhIFlhcm4gMSBkZXBlbmRlbmN5IHRyZWUsIHNvIHJ1biBpdCBpbiBhIHNlcGFyYXRlIHRyZWUuXG4gICAgICAgIHsgZXhlYzogYCR7c2V0dGluZ3MueWFybkJlcnJ5ID8gJ3lhcm4gZGx4JyA6ICducHgnfSBucG0tY2hlY2stdXBkYXRlc0AyMCAtLWRlcD1kZXYsb3B0aW9uYWwscGVlcixwcm9kLGJ1bmRsZSAtLXVwZ3JhZGUgLS10YXJnZXQ9bWlub3Ike2Nvb2xkb3duID8gYCAtLWNvb2xkb3duPSR7Y29vbGRvd259YCA6ICcnfWAgfSxcbiAgICAgICAgeyBleGVjOiBgJHt3c1J1bn0gY2hlY2stZm9yLXVwZGF0ZXNgIH0sXG4gICAgICAgIHsgZXhlYzogc2V0dGluZ3MueWFybkJlcnJ5ID8gJ3lhcm4gaW5zdGFsbCcgOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMnIH0sXG4gICAgICAgIHsgZXhlYzogc2V0dGluZ3MueWFybkJlcnJ5ID8gJ3lhcm4gdXAnIDogJ3lhcm4gdXBncmFkZScgfSxcbiAgICAgICAgeyBzcGF3bjogJ2RlZmF1bHQnIH0sXG4gICAgICAgIHsgc3Bhd246ICdwb3N0LXVwZ3JhZGUnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xlYW4gdXAgdGFza3Mgbm90IHJlcXVpcmVkIGF0IHRvcC1sZXZlbFxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnZWplY3QnKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3dhdGNoJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdwcmUtY29tcGlsZScpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygncG9zdC1jb21waWxlJyk7XG5cbiAgICAvLyBOeFxuICAgIGlmIChzZXR0aW5ncy5ueCkge1xuICAgICAgbmV3IE54KHRoaXMsIHtcbiAgICAgICAgZGVmYXVsdEJhc2U6IHNldHRpbmdzLmRlZmF1bHRSZWxlYXNlQnJhbmNoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gWWFybiBDb25zdHJhaW50c1xuICAgIGNvbnN0IGNvbnNpc3RlbnRWZXJzaW9ucyA9IFsuLi4oc2V0dGluZ3MuY29uc2lzdGVudFZlcnNpb25zID8/IFtdKV07XG4gICAgaWYgKHNldHRpbmdzLm54KSB7XG4gICAgICBjb25zaXN0ZW50VmVyc2lvbnMucHVzaCgnbngnKTtcbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLnlhcm5CZXJyeSAmJiBjb25zaXN0ZW50VmVyc2lvbnMubGVuZ3RoKSB7XG4gICAgICBuZXcgQ29uc3RyYWludHModGhpcywgeyBjb25zaXN0ZW50VmVyc2lvbnMgfSk7XG4gICAgfVxuXG4gICAgLy8gUmVsZWFzZSBXb3JrZmxvd1xuICAgIGlmIChzZXR0aW5ncy5yZWxlYXNlKSB7XG4gICAgICB0aGlzLm1vbm9yZXBvUmVsZWFzZSA9IG5ldyBNb25vcmVwb1JlbGVhc2UodGhpcywge1xuICAgICAgICB3b3JrZmxvd1J1bnNPbjogc2V0dGluZ3Mud29ya2Zsb3dSdW5zT24sXG4gICAgICAgIGJ1aWxkV2l0aE54LFxuICAgICAgICB5YXJuQmVycnk6IHNldHRpbmdzLnlhcm5CZXJyeSxcbiAgICAgICAgLi4uc2V0dGluZ3MucmVsZWFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHN1YnByb2plY3RzKCk6IFR5cGVTY3JpcHRXb3Jrc3BhY2VbXSB7XG4gICAgcmV0dXJuIHN1cGVyLnN1YnByb2plY3RzIGFzIFR5cGVTY3JpcHRXb3Jrc3BhY2VbXTtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aCgpIHtcbiAgICB0aGlzLmZpbmFsRXNjYXBlSGF0Y2hlcygpO1xuICAgIHN1cGVyLnN5bnRoKCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIGEgc3ViIHByb2plY3QgdG8gcmVxdWVzdCBpbnN0YWxsYXRpb24gb2YgZGVwZW5kZW5jeSBhdCB0aGUgTW9ub3JlcG8gcm9vdFxuICAgKiBUaGV5IG11c3QgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0ZWQgYWZ0ZXIgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWRcbiAgICogSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZSBpbnN0YWxsIGNvbW1hbmQgaXMgcnVuIGZvciBhIHNlY29uZCB0aW1lIGFmdGVyIGFsbCBzdWIgcHJvamVjdCByZXF1ZXN0cyBoYXZlIHJ1bi5cbiAgICogVGhpcyBpcyB1c2VkIHRvIHJlc29sdmUgZGVwZW5kZW5jeSB2ZXJzaW9ucyBmcm9tIGAqYCB0byBhIGNvbmNyZXRlIHZlcnNpb24gY29uc3RyYWludC5cbiAgICovXG4gIHB1YmxpYyByZXF1ZXN0SW5zdGFsbERlcGVuZGVuY2llcyhyZXNvbHZlcjogSURlcGVuZGVuY3lSZXNvbHZlcikge1xuICAgIHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMucHVzaChyZXNvbHZlci5yZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvZGUgdGhhdCBuZWVkcyB0byBydW4ganVzdCBiZWZvcmUgc3ludGgsIGJ1dCBhZnRlciBhbGwgb3RoZXIgY29kZVxuICAgKi9cbiAgcHJpdmF0ZSBmaW5hbEVzY2FwZUhhdGNoZXMoKSB7XG4gICAgLy8gR2V0IHRoZSBPYmplY3RGaWxlXG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdwcml2YXRlJywgdHJ1ZSk7XG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCd3b3Jrc3BhY2VzJywge1xuICAgICAgcGFja2FnZXM6IHRoaXMuc3VicHJvamVjdHMubWFwKChwKSA9PiBwLndvcmtzcGFjZURpcmVjdG9yeSksXG4gICAgICAuLi4oIXRoaXMuc2V0dGluZ3MueWFybkJlcnJ5ID8gdGhpcy5yZW5kZXJOb0hvaXN0KCkgOiB1bmRlZmluZWQpLFxuICAgIH0pO1xuXG4gICAgLy8gQXV0by1zZXQgaG9pc3RpbmdMaW1pdHMgZm9yIHdvcmtzcGFjZXMgd2l0aCBidW5kbGVkIGRlcHMgd2hlbiB1c2luZyBZYXJuIEJlcnJ5XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MueWFybkJlcnJ5KSB7XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5zdWJwcm9qZWN0cykge1xuICAgICAgICBpZiAocC5idW5kbGVkRGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcC5wYWNrYWdlLmFkZEZpZWxkKCdpbnN0YWxsQ29uZmlnJywgeyBob2lzdGluZ0xpbWl0czogJ3dvcmtzcGFjZXMnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZSgnaW5jbHVkZScsIFtdKTtcbiAgICB0aGlzLnRzY29uZmlnRGV2Py5maWxlLmFkZE92ZXJyaWRlKCdpbmNsdWRlJywgWycucHJvamVucmMudHMnLCAncHJvamVucmMvKiovKi50cyddKTtcbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnIG9mIFt0aGlzLnRzY29uZmlnLCB0aGlzLnRzY29uZmlnRGV2XSkge1xuICAgICAgdHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICAgICdyZWZlcmVuY2VzJyxcbiAgICAgICAgdGhpcy5zdWJwcm9qZWN0cy5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdqZXN0Jywge1xuICAgICAgcHJvamVjdHM6IHRoaXMuc3VicHJvamVjdHMubWFwKChwKSA9PiBgPHJvb3REaXI+LyR7cC53b3Jrc3BhY2VEaXJlY3Rvcnl9YCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSAnbm9ob2lzdCcgZGlyZWN0aXZlXG4gICAqXG4gICAqIEJ1bmRsZWQgZGVwZW5kZW5jaWVzIG11c3QgYmUgbm9ob2lzdCdlZCwgb3RoZXJ3aXNlIE5QTSBzaWxlbnRseSB3b24ndCBidW5kbGUgdGhlbS5cbiAgICpcbiAgICogUmVuZGVycyBhbiBvYmplY3QgdGhhdCBzaG91bGQgYmUgbWl4ZWQgaW50byB0aGUgYHdvcmtzcGFjZXNgIG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgcmVuZGVyTm9Ib2lzdCgpOiBhbnkge1xuICAgIGNvbnN0IG5vaG9pc3QgPSB0aGlzLnN1YnByb2plY3RzLmZsYXRNYXAoKHApID0+XG4gICAgICBwLmRlcHMuYWxsXG4gICAgICAgIC5maWx0ZXIoKGRlcCkgPT4gZGVwLnR5cGUgPT09IERlcGVuZGVuY3lUeXBlLkJVTkRMRUQpXG4gICAgICAgIC5mbGF0TWFwKChkZXApID0+IFtcbiAgICAgICAgICBgJHtwLm5hbWV9LyR7ZGVwLm5hbWV9YCxcbiAgICAgICAgICBgJHtwLm5hbWV9LyR7ZGVwLm5hbWV9LyoqYCxcbiAgICAgICAgXSksXG4gICAgKTtcbiAgICByZXR1cm4gbm9ob2lzdC5sZW5ndGggPiAwID8geyBub2hvaXN0IH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogSG9va3MgaW50byB0aGUgaW5zdGFsbCBkZXBlbmRlbmNpZXMgY3ljbGVcbiAgICovXG4gIHB1YmxpYyBwb3N0U3ludGhlc2l6ZSgpIHtcbiAgICBpZiAodGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vZGVQa2c6IGFueSA9IHRoaXMucGFja2FnZTtcbiAgICAgIG5vZGVQa2cuaW5zdGFsbERlcGVuZGVuY2llcyh7IHJlYXNvbjogamF2YXNjcmlwdC5JbnN0YWxsUmVhc29uLlBBQ0tBR0VfSlNPTl9DSEFOR0VEIH0pO1xuXG4gICAgICBjb25zdCByZXNvbHV0aW9ucyA9IHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMuZmxhdE1hcCgocmVxdWVzdCkgPT4gcmVxdWVzdCgpKTtcbiAgICAgIGlmIChyZXNvbHV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgbm9kZVBrZy5pbnN0YWxsRGVwZW5kZW5jaWVzKHsgcmVhc29uOiBqYXZhc2NyaXB0Lkluc3RhbGxSZWFzb24uREVQU19SRVNPTFZFRCwgcmVzb2x1dGlvbnMgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBbXTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGVwZW5kZW5jeVJlc29sdmVyIHtcbiAgcmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uKCk6IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiBnZXRPYmpGcm9tRmlsZShwcm9qZWN0OiBQcm9qZWN0LCBmaWxlOiBzdHJpbmcpOiBvYmplY3Qge1xuICByZXR1cm4gKHByb2plY3QudHJ5RmluZE9iamVjdEZpbGUoZmlsZSkgYXMgYW55KT8ub2JqO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIENka0xhYnNNb25vcmVwb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0xhYnNNb25vcmVwb09wdGlvbnMgZXh0ZW5kcyBNb25vcmVwb09wdGlvbnMge31cblxuLyoqXG4gKiBPcGluaW9uYXRlZCBpbXBsZW1lbnRhdGlvbiBvZiB5YXJuLk1vbm9yZXBvXG4gKiBAcGppZCBjZGtsYWJzLXlhcm4tbW9ub3JlcG9cbiAqL1xuZXhwb3J0IGNsYXNzIENka0xhYnNNb25vcmVwbyBleHRlbmRzIE1vbm9yZXBvIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrTGFic01vbm9yZXBvT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG5cbiAgICAgIGF1dG9BcHByb3ZlVXBncmFkZXM6IHRydWUsXG4gICAgICBhdXRvQXBwcm92ZU9wdGlvbnM6IHtcbiAgICAgICAgYWxsb3dlZFVzZXJuYW1lczogWydnaXRodWItYm90JywgJ2Nka2xhYnMtYXV0b21hdGlvbicsICdkZXBlbmRhYm90W2JvdF0nXSxcbiAgICAgICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmdpdGh1Yk9wdGlvbnMsXG4gICAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgICBkZXBlbmRlbmN5UmV2aWV3OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIC8vIERldmlhdGlvbiBmcm9tIHVwc3RyZWFtIHByb2plbjogdXBzdHJlYW0gcHJvamVuIGRlZmF1bHRzIHRvIG1pbk5vZGVWZXJzaW9uLCBidXQgd2UgaGF2ZSB0b28gbWFueSB3b3JrZmxvd3NcbiAgICAgIC8vIHRoYXQgdXNlIHRvb2xzIHRoYXQgd2FudCBhIHJlY2VudCBOb2RlIHZlcnNpb24sIHNvIGRlZmF1bHQgdG8gYSByZWFzb25hYmxlIGZsb2F0aW5nIHZlcnNpb24uXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcbiAgICB9KTtcblxuICAgIG5ldyBnaXRodWIuTWVyZ2VRdWV1ZSh0aGlzLCB7XG4gICAgICBhdXRvUXVldWVPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oeyBzZWNyZXQ6ICdQUk9KRU5fR0lUSFVCX1RPS0VOJyB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9tb25vcmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTZDO0FBQzdDLG1DQUFzRztBQUN0RywrQ0FBNEM7QUFFNUMseURBQXFEO0FBQ3JELDZCQUEwQjtBQUcxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQWlCNUI7O0lBaEJyQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQVU7UUFDakMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ2EsZUFBZSxDQUFtQjtJQUVsRDs7T0FFRztJQUNhLGFBQWEsQ0FBVTtJQUUvQix1QkFBdUIsR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztJQUU5RCxZQUE0QixRQUF5QjtRQUNuRCxLQUFLLENBQUM7WUFDSixHQUFHLFFBQVE7WUFDWCxjQUFjLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsWUFBWTtZQUMxSCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDckMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCO2dCQUM1QixhQUFhLEVBQUU7b0JBQ2IsVUFBVSxFQUFFLG1CQUFVLENBQUMsY0FBYyxDQUFDLFlBQVk7b0JBQ2xELEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLGFBQWE7aUJBQzVDO2FBQ0Ys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QUFFLHFCQUFxQixFQUFFLENBQUM7YUFDdkc7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTFCSCwwQ0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoUG9zaXggZnJvbSAnbm9kZTpwYXRoL3Bvc2l4JztcbmltcG9ydCB7IEpzb25GaWxlLCBQcm9qZWN0LCBqYXZhc2NyaXB0LCB0eXBlc2NyaXB0LCBnaXRodWIsIERlcGVuZGVuY3lUeXBlLCBKc29uUGF0Y2ggfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQ29uc3RyYWludHMgfSBmcm9tICcuL2NvbnN0cmFpbnRzJztcbmltcG9ydCB7IE1vbm9yZXBvT3B0aW9ucyB9IGZyb20gJy4vbW9ub3JlcG8tb3B0aW9ucyc7XG5pbXBvcnQgeyBNb25vcmVwb1JlbGVhc2UgfSBmcm9tICcuL21vbm9yZXBvLXJlbGVhc2UnO1xuaW1wb3J0IHsgTnggfSBmcm9tICcuL254JztcbmltcG9ydCB7IFR5cGVTY3JpcHRXb3Jrc3BhY2UgfSBmcm9tICcuL3R5cGVzY3JpcHQtd29ya3NwYWNlJztcblxuY29uc3QgTU9OT1JFUE9fU1lNID0gU3ltYm9sLmZvcignY2RrbGFicy1wcm9qZW4tcHJvamVjdC10eXBlcy55YXJuLk1vbm9yZXBvJyk7XG5cbi8qKlxuICogQSBtb25vcmVwbyB1c2luZyB5YXJuIHdvcmtzcGFjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25vcmVwbyBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3Qge1xuICBwdWJsaWMgc3RhdGljIGlzTW9ub3JlcG8oeDogUHJvamVjdCk6IHggaXMgTW9ub3JlcG8ge1xuICAgIHJldHVybiBCb29sZWFuKHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIE1PTk9SRVBPX1NZTSBpbiB4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTW9ub3JlcG8gUmVsZWFzZSBjb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtb25vcmVwb1JlbGVhc2U/OiBNb25vcmVwb1JlbGVhc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgd2hlcmUgdGhlIGFjdHVhbCBjb2RlIGZvciB0aGUgcGFja2FnZSBsaXZlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXBvc2l0b3J5VXJsPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBuZXcgQXJyYXk8KCkgPT4gc3RyaW5nW10+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNldHRpbmdzOiBNb25vcmVwb09wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBzZXR0aW5ncy55YXJuQmVycnkgPyBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZIDogamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuWUFSTl9DTEFTU0lDLFxuICAgICAgeWFybkJlcnJ5T3B0aW9uczogc2V0dGluZ3MueWFybkJlcnJ5ID8ge1xuICAgICAgICAuLi5zZXR0aW5ncy55YXJuQmVycnlPcHRpb25zLFxuICAgICAgICB5YXJuUmNPcHRpb25zOiB7XG4gICAgICAgICAgbm9kZUxpbmtlcjogamF2YXNjcmlwdC5ZYXJuTm9kZUxpbmtlci5OT0RFX01PRFVMRVMsXG4gICAgICAgICAgLi4uc2V0dGluZ3MueWFybkJlcnJ5T3B0aW9ucz8ueWFyblJjT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgZXNsaW50OiBmYWxzZSxcbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuICAgICAgLy8gVGhlIG1vbm9yZXBvIHJvb3QgaXMgbm90IGEgcmVhbCBjb21waWxhdGlvbiB1bml0OyBpdHMgc2luZ2xlIHRzY29uZmlnXG4gICAgICAvLyBvbmx5IGV4aXN0cyB0byB0eXBlLWNoZWNrIHRoZSBwcm9qZW5yYyBmaWxlcyBhbmQgaG9sZCBwcm9qZWN0XG4gICAgICAvLyByZWZlcmVuY2VzIHRvIHRoZSB3b3Jrc3BhY2VzLiBBIHNlcGFyYXRlIGRldiB0c2NvbmZpZyBpcyBub3QganVzdFxuICAgICAgLy8gcmVkdW5kYW50LCBpdCBhY3RpdmVseSByZXNvbHZlcyB0byBgdGVzdC90c2NvbmZpZy5qc29uYCBpbiBwcm9qZW4gYW5kXG4gICAgICAvLyB3b3VsZCBwb2xsdXRlIHRoYXQgZmlsZS4gRGlzYWJsaW5nIGl0IG1ha2VzIGB0c2NvbmZpZ0RldmAgYWxpYXNcbiAgICAgIC8vIGB0c2NvbmZpZ2AsIGNvbnNvbGlkYXRpbmcgZXZlcnl0aGluZyBvbnRvIHRoZSByb290IGB0c2NvbmZpZy5qc29uYC5cbiAgICAgIGRpc2FibGVUc2NvbmZpZ0RldjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBNT05PUkVQT19TWU0sIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnJlcG9zaXRvcnlVcmwgPSBzZXR0aW5ncy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IGJ1aWxkV2l0aE54ID0gQm9vbGVhbihzZXR0aW5ncy5ueCAmJiBzZXR0aW5ncy5idWlsZFdpdGhOeCk7XG5cbiAgICAvLyBZYXJuIEJlcnJ5IGRlcGVuZGVuY2llc01ldGEgZm9yIGJ1aWxkYWJsZSBwYWNrYWdlc1xuICAgIGlmIChzZXR0aW5ncy5idWlsZGFibGVQYWNrYWdlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2RlcGVuZGVuY2llc01ldGEnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIHNldHRpbmdzLmJ1aWxkYWJsZVBhY2thZ2VzLm1hcCgocGtnKSA9PiBbcGtnLCB7IGJ1aWx0OiB0cnVlIH1dKSxcbiAgICAgICkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIGZvcm1hdHRpbmdcbiAgICAgKi9cbiAgICBpZiAoc2V0dGluZ3MucHJldHRpZXIpIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcygnZXNsaW50LWNvbmZpZy1wcmV0dGllcicsICdlc2xpbnQtcGx1Z2luLXByZXR0aWVyJyk7XG4gICAgICBuZXcgSnNvbkZpbGUodGhpcywgJy5lc2xpbnRyYy5qc29uJywge1xuICAgICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgICBvYmo6IHtcbiAgICAgICAgICBwbHVnaW5zOiBbJ0B0eXBlc2NyaXB0LWVzbGludCcsICdwcmV0dGllciddLFxuICAgICAgICAgIHBhcnNlcjogJ0B0eXBlc2NyaXB0LWVzbGludC9wYXJzZXInLFxuICAgICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVjbWFWZXJzaW9uOiAyMDE4LFxuICAgICAgICAgICAgc291cmNlVHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICBwcm9qZWN0OiBgLi8keyh0aGlzLnRzY29uZmlnRGV2ID8/IHRoaXMudHNjb25maWcpPy5maWxlTmFtZSA/PyAndHNjb25maWcuanNvbid9YCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlnbm9yZVBhdHRlcm5zOiBbJyEucHJvamVucmMudHMnXSxcbiAgICAgICAgICBleHRlbmRzOiBbJ3BsdWdpbjpwcmV0dGllci9yZWNvbW1lbmRlZCddLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhc2tzLmFkZFRhc2soJ2ZtdCcsIHsgZXhlYzogJ2VzbGludCAtLWV4dCAudHMgLS1maXggLS1uby1lcnJvci1vbi11bm1hdGNoZWQtcGF0dGVybiBwcm9qZW5yYyAucHJvamVucmMudHMnIH0pO1xuXG4gICAgICB0aGlzLnZzY29kZT8uZXh0ZW5zaW9ucy5hZGRSZWNvbW1lbmRhdGlvbnMoJ2VzYmVucC5wcmV0dGllci12c2NvZGUnLCAnZGJhZXVtZXIudnNjb2RlLWVzbGludCcpO1xuICAgICAgdGhpcy52c2NvZGU/LnNldHRpbmdzLmFkZFNldHRpbmcoJ2VkaXRvci5kZWZhdWx0Rm9ybWF0dGVyJywgJ2VzYmVucC5wcmV0dGllci12c2NvZGUnKTtcbiAgICAgIHRoaXMudnNjb2RlPy5zZXR0aW5ncy5hZGRTZXR0aW5nKCdlc2xpbnQuZm9ybWF0LmVuYWJsZScsIHRydWUpO1xuICAgICAgdGhpcy52c2NvZGU/LnNldHRpbmdzLmFkZFNldHRpbmdzKHsgJ2VkaXRvci5kZWZhdWx0Rm9ybWF0dGVyJzogJ2RiYWV1bWVyLnZzY29kZS1lc2xpbnQnIH0sIFtcbiAgICAgICAgJ2phdmFzY3JpcHQnLFxuICAgICAgICAndHlwZXNjcmlwdCcsXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBWU0NvZGUgV29ya3NwYWNlXG4gICAgICovXG4gICAgaWYgKHNldHRpbmdzLnZzY29kZVdvcmtzcGFjZSkge1xuICAgICAgY29uc3Qgd29ya3NwYWNlRmlsZSA9IGAke3RoaXMubmFtZX0uY29kZS13b3Jrc3BhY2VgO1xuICAgICAgbmV3IEpzb25GaWxlKHRoaXMsIHdvcmtzcGFjZUZpbGUsIHtcbiAgICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgICAgb2JqOiAoKSA9PiAoe1xuICAgICAgICAgIGZvbGRlcnM6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvbGRlcnM6IEFycmF5PHtcbiAgICAgICAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICAgICAgfT4gPSB0aGlzLnN1YnByb2plY3RzXG4gICAgICAgICAgICAgIC5zb3J0KChwMSwgcDIpID0+IHAxLm5hbWUubG9jYWxlQ29tcGFyZShwMi5uYW1lKSlcbiAgICAgICAgICAgICAgLm1hcCgocCkgPT4gKHsgcGF0aDogcC53b3Jrc3BhY2VEaXJlY3RvcnkgfSkpO1xuXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8uaW5jbHVkZVJvb3RXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgZm9sZGVycy51bnNoaWZ0KHsgcGF0aDogJy4nLCBuYW1lOiBzZXR0aW5ncy52c2NvZGVXb3Jrc3BhY2VPcHRpb25zPy5yb290V29ya3NwYWNlTmFtZSA/PyAnPHJvb3Q+JyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvbGRlcnM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXR0aW5nczogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdnNjb2RlU2V0dGluZ3MgPSAoZ2V0T2JqRnJvbUZpbGUodGhpcywgJy52c2NvZGUvc2V0dGluZ3MuanNvbicpID8/IHt9KSBhcyBhbnk7XG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8uaW5jbHVkZVJvb3RXb3Jrc3BhY2UgJiYgdGhpcy5zdWJwcm9qZWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdnNjb2RlU2V0dGluZ3NbJ2ZpbGVzLmV4Y2x1ZGUnXSA9IHRoaXMuc3VicHJvamVjdHMucmVkdWNlKChleGNsdWRlcywgcCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAuLi5leGNsdWRlcyxcbiAgICAgICAgICAgICAgICAgIFtwLndvcmtzcGFjZURpcmVjdG9yeS5zcGxpdChwYXRoUG9zaXguc2VwKVswXV06IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSwgdnNjb2RlU2V0dGluZ3NbJ2ZpbGVzLmV4Y2x1ZGUnXSA/PyB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdnNjb2RlU2V0dGluZ3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleHRlbnNpb25zOiAoKSA9PiBnZXRPYmpGcm9tRmlsZSh0aGlzLCAnLnZzY29kZS9leHRlbnNpb25zLmpzb24nKSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYXNrc1xuICAgICAqL1xuICAgIC8vIGJ1aWxkIHRhc2tcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ2J1aWxkJyk7XG4gICAgY29uc3QgZm10VGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgnZm10Jyk7XG4gICAgY29uc3QgYnVpbGRUYXNrID0gdGhpcy50YXNrcy5hZGRUYXNrKCdidWlsZCcpO1xuICAgIGlmICh0aGlzLmRlZmF1bHRUYXNrKSB7XG4gICAgICBidWlsZFRhc2suc3Bhd24odGhpcy5kZWZhdWx0VGFzayk7XG4gICAgfVxuICAgIGlmIChmbXRUYXNrKSB7XG4gICAgICBidWlsZFRhc2suc3Bhd24oZm10VGFzayk7XG4gICAgfVxuICAgIGNvbnN0IHdzUnVuID0gc2V0dGluZ3MueWFybkJlcnJ5ID8gJ3lhcm4gd29ya3NwYWNlcyBmb3JlYWNoIC0tYWxsIC0tZXhjbHVkZSAuIC0tdG9wb2xvZ2ljYWwtZGV2IHJ1bicgOiAneWFybiB3b3Jrc3BhY2VzIHJ1bic7XG5cbiAgICBpZiAoYnVpbGRXaXRoTngpIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdygnYnVpbGQnKT8uZmlsZT8ucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoJy9qb2JzL2J1aWxkL2Vudi9OWF9TS0lQX05YX0NBQ0hFJywgJ3RydWUnKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKGAke3dzUnVufSBidWlsZGApO1xuICAgIH1cblxuICAgIC8vIFJ1biBpbiBhbGwgd29ya3NwYWNlcyB0YXNrc1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpPy5yZXNldChgJHt3c1J1bn0gY29tcGlsZWApO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgncGFja2FnZScpPy5yZXNldChgJHt3c1J1bn0gcGFja2FnZWApO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgndGVzdCcpPy5yZXNldChgJHt3c1J1bn0gdGVzdGApO1xuICAgIHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZXhlYzogd3NSdW4sXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFVwZ3JhZGUgYWxsIHBhY2thZ2VzXG4gICAgY29uc3QgY29vbGRvd24gPSBzZXR0aW5ncy5kZXBzVXBncmFkZU9wdGlvbnM/LmNvb2xkb3duID8/IChzZXR0aW5ncy55YXJuQmVycnkgPyAzIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCB1cGdyYWRlRW52ID0geyAuLi50aGlzLnVwZ3JhZGVXb3JrZmxvdz8udXBncmFkZVRhc2suZW52VmFycyB8fCB7fSB9O1xuICAgIGlmIChjb29sZG93biAmJiBzZXR0aW5ncy55YXJuQmVycnkpIHtcbiAgICAgIHVwZ3JhZGVFbnYuWUFSTl9OUE1fTUlOSU1BTF9BR0VfR0FURSA9IFN0cmluZyhjb29sZG93biAqIDI0ICogNjApO1xuICAgIH1cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3VwZ3JhZGUnKTtcbiAgICB0aGlzLnRhc2tzLmFkZFRhc2soJ3VwZ3JhZGUnLCB7XG4gICAgICBlbnY6IHVwZ3JhZGVFbnYsXG4gICAgICBkZXNjcmlwdGlvbjogJ1VwZ3JhZGUgZGVwZW5kZW5jaWVzIGluIGFsbCB3b3Jrc3BhY2VzJyxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIC8vIEl0IGlzIG5vdCBzYWZlIGFueW1vcmUgdG8gaGF2ZSAnbnBtLWNoZWNrLXVwZGF0ZXMnIGluIGEgWWFybiAxIGRlcGVuZGVuY3kgdHJlZSwgc28gcnVuIGl0IGluIGEgc2VwYXJhdGUgdHJlZS5cbiAgICAgICAgeyBleGVjOiBgJHtzZXR0aW5ncy55YXJuQmVycnkgPyAneWFybiBkbHgnIDogJ25weCd9IG5wbS1jaGVjay11cGRhdGVzQDIwIC0tZGVwPWRldixvcHRpb25hbCxwZWVyLHByb2QsYnVuZGxlIC0tdXBncmFkZSAtLXRhcmdldD1taW5vciR7Y29vbGRvd24gPyBgIC0tY29vbGRvd249JHtjb29sZG93bn1gIDogJyd9YCB9LFxuICAgICAgICB7IGV4ZWM6IGAke3dzUnVufSBjaGVjay1mb3ItdXBkYXRlc2AgfSxcbiAgICAgICAgeyBleGVjOiBzZXR0aW5ncy55YXJuQmVycnkgPyAneWFybiBpbnN0YWxsJyA6ICd5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcycgfSxcbiAgICAgICAgeyBleGVjOiBzZXR0aW5ncy55YXJuQmVycnkgPyAneWFybiB1cCcgOiAneWFybiB1cGdyYWRlJyB9LFxuICAgICAgICB7IHNwYXduOiAnZGVmYXVsdCcgfSxcbiAgICAgICAgeyBzcGF3bjogJ3Bvc3QtdXBncmFkZScgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBDbGVhbiB1cCB0YXNrcyBub3QgcmVxdWlyZWQgYXQgdG9wLWxldmVsXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdlamVjdCcpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnd2F0Y2gnKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3ByZS1jb21waWxlJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdwb3N0LWNvbXBpbGUnKTtcblxuICAgIC8vIE54XG4gICAgaWYgKHNldHRpbmdzLm54KSB7XG4gICAgICBuZXcgTngodGhpcywge1xuICAgICAgICBkZWZhdWx0QmFzZTogc2V0dGluZ3MuZGVmYXVsdFJlbGVhc2VCcmFuY2gsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBZYXJuIENvbnN0cmFpbnRzXG4gICAgY29uc3QgY29uc2lzdGVudFZlcnNpb25zID0gWy4uLihzZXR0aW5ncy5jb25zaXN0ZW50VmVyc2lvbnMgPz8gW10pXTtcbiAgICBpZiAoc2V0dGluZ3MubngpIHtcbiAgICAgIGNvbnNpc3RlbnRWZXJzaW9ucy5wdXNoKCdueCcpO1xuICAgIH1cbiAgICBpZiAoc2V0dGluZ3MueWFybkJlcnJ5ICYmIGNvbnNpc3RlbnRWZXJzaW9ucy5sZW5ndGgpIHtcbiAgICAgIG5ldyBDb25zdHJhaW50cyh0aGlzLCB7IGNvbnNpc3RlbnRWZXJzaW9ucyB9KTtcbiAgICB9XG5cbiAgICAvLyBSZWxlYXNlIFdvcmtmbG93XG4gICAgaWYgKHNldHRpbmdzLnJlbGVhc2UpIHtcbiAgICAgIHRoaXMubW9ub3JlcG9SZWxlYXNlID0gbmV3IE1vbm9yZXBvUmVsZWFzZSh0aGlzLCB7XG4gICAgICAgIHdvcmtmbG93UnVuc09uOiBzZXR0aW5ncy53b3JrZmxvd1J1bnNPbixcbiAgICAgICAgYnVpbGRXaXRoTngsXG4gICAgICAgIHlhcm5CZXJyeTogc2V0dGluZ3MueWFybkJlcnJ5LFxuICAgICAgICAuLi5zZXR0aW5ncy5yZWxlYXNlT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgc3VicHJvamVjdHMoKTogVHlwZVNjcmlwdFdvcmtzcGFjZVtdIHtcbiAgICByZXR1cm4gc3VwZXIuc3VicHJvamVjdHMgYXMgVHlwZVNjcmlwdFdvcmtzcGFjZVtdO1xuICB9XG5cbiAgcHVibGljIHN5bnRoKCkge1xuICAgIHRoaXMuZmluYWxFc2NhcGVIYXRjaGVzKCk7XG4gICAgc3VwZXIuc3ludGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgYSBzdWIgcHJvamVjdCB0byByZXF1ZXN0IGluc3RhbGxhdGlvbiBvZiBkZXBlbmRlbmN5IGF0IHRoZSBNb25vcmVwbyByb290XG4gICAqIFRoZXkgbXVzdCBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCBpcyBleGVjdXRlZCBhZnRlciBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZFxuICAgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGluc3RhbGwgY29tbWFuZCBpcyBydW4gZm9yIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgYWxsIHN1YiBwcm9qZWN0IHJlcXVlc3RzIGhhdmUgcnVuLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gcmVzb2x2ZSBkZXBlbmRlbmN5IHZlcnNpb25zIGZyb20gYCpgIHRvIGEgY29uY3JldGUgdmVyc2lvbiBjb25zdHJhaW50LlxuICAgKi9cbiAgcHVibGljIHJlcXVlc3RJbnN0YWxsRGVwZW5kZW5jaWVzKHJlc29sdmVyOiBJRGVwZW5kZW5jeVJlc29sdmVyKSB7XG4gICAgdGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcy5wdXNoKHJlc29sdmVyLnJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbik7XG4gIH1cblxuICAvKipcbiAgICogQ29kZSB0aGF0IG5lZWRzIHRvIHJ1biBqdXN0IGJlZm9yZSBzeW50aCwgYnV0IGFmdGVyIGFsbCBvdGhlciBjb2RlXG4gICAqL1xuICBwcml2YXRlIGZpbmFsRXNjYXBlSGF0Y2hlcygpIHtcbiAgICAvLyBHZXQgdGhlIE9iamVjdEZpbGVcbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3ByaXZhdGUnLCB0cnVlKTtcbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3dvcmtzcGFjZXMnLCB7XG4gICAgICBwYWNrYWdlczogdGhpcy5zdWJwcm9qZWN0cy5tYXAoKHApID0+IHAud29ya3NwYWNlRGlyZWN0b3J5KSxcbiAgICAgIC4uLighdGhpcy5zZXR0aW5ncy55YXJuQmVycnkgPyB0aGlzLnJlbmRlck5vSG9pc3QoKSA6IHVuZGVmaW5lZCksXG4gICAgfSk7XG5cbiAgICAvLyBBdXRvLXNldCBob2lzdGluZ0xpbWl0cyBmb3Igd29ya3NwYWNlcyB3aXRoIGJ1bmRsZWQgZGVwcyB3aGVuIHVzaW5nIFlhcm4gQmVycnlcbiAgICBpZiAodGhpcy5zZXR0aW5ncy55YXJuQmVycnkpIHtcbiAgICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLnN1YnByb2plY3RzKSB7XG4gICAgICAgIGlmIChwLmJ1bmRsZWREZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwLnBhY2thZ2UuYWRkRmllbGQoJ2luc3RhbGxDb25maWcnLCB7IGhvaXN0aW5nTGltaXRzOiAnd29ya3NwYWNlcycgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgcm9vdCB0c2NvbmZpZyBpcyBvbmx5IHRoZXJlIHRvIHR5cGUtY2hlY2sgdGhlIHByb2plbnJjIGZpbGVzIGFuZCB0b1xuICAgIC8vIGhvbGQgcHJvamVjdCByZWZlcmVuY2VzIHRvIHRoZSB3b3Jrc3BhY2VzLiBCZWNhdXNlIHRoZSBkZXYgdHNjb25maWcgaXNcbiAgICAvLyBkaXNhYmxlZCwgYHRzY29uZmlnRGV2YCBhbGlhc2VzIGB0c2NvbmZpZ2AsIHNvIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmaWxlXG4gICAgLy8gdG8gY29uZmlndXJlIGhlcmUgKHRoZSBgU2V0YCBkZWR1cGVzIGluIGNhc2UgdGhhdCBldmVyIGNoYW5nZXMpLlxuICAgIGZvciAoY29uc3QgdHNjb25maWcgb2YgbmV3IFNldChbdGhpcy50c2NvbmZpZywgdGhpcy50c2NvbmZpZ0Rldl0pKSB7XG4gICAgICB0c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZSgnaW5jbHVkZScsIFsnLnByb2plbnJjLnRzJywgJ3Byb2plbnJjLyoqLyoudHMnXSk7XG4gICAgICB0c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZShcbiAgICAgICAgJ3JlZmVyZW5jZXMnLFxuICAgICAgICB0aGlzLnN1YnByb2plY3RzLm1hcCgocCkgPT4gKHsgcGF0aDogcC53b3Jrc3BhY2VEaXJlY3RvcnkgfSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2plc3QnLCB7XG4gICAgICBwcm9qZWN0czogdGhpcy5zdWJwcm9qZWN0cy5tYXAoKHApID0+IGA8cm9vdERpcj4vJHtwLndvcmtzcGFjZURpcmVjdG9yeX1gKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlICdub2hvaXN0JyBkaXJlY3RpdmVcbiAgICpcbiAgICogQnVuZGxlZCBkZXBlbmRlbmNpZXMgbXVzdCBiZSBub2hvaXN0J2VkLCBvdGhlcndpc2UgTlBNIHNpbGVudGx5IHdvbid0IGJ1bmRsZSB0aGVtLlxuICAgKlxuICAgKiBSZW5kZXJzIGFuIG9iamVjdCB0aGF0IHNob3VsZCBiZSBtaXhlZCBpbnRvIHRoZSBgd29ya3NwYWNlc2Agb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJOb0hvaXN0KCk6IGFueSB7XG4gICAgY29uc3Qgbm9ob2lzdCA9IHRoaXMuc3VicHJvamVjdHMuZmxhdE1hcCgocCkgPT5cbiAgICAgIHAuZGVwcy5hbGxcbiAgICAgICAgLmZpbHRlcigoZGVwKSA9PiBkZXAudHlwZSA9PT0gRGVwZW5kZW5jeVR5cGUuQlVORExFRClcbiAgICAgICAgLmZsYXRNYXAoKGRlcCkgPT4gW1xuICAgICAgICAgIGAke3AubmFtZX0vJHtkZXAubmFtZX1gLFxuICAgICAgICAgIGAke3AubmFtZX0vJHtkZXAubmFtZX0vKipgLFxuICAgICAgICBdKSxcbiAgICApO1xuICAgIHJldHVybiBub2hvaXN0Lmxlbmd0aCA+IDAgPyB7IG5vaG9pc3QgfSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rcyBpbnRvIHRoZSBpbnN0YWxsIGRlcGVuZGVuY2llcyBjeWNsZVxuICAgKi9cbiAgcHVibGljIHBvc3RTeW50aGVzaXplKCkge1xuICAgIGlmICh0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgbm9kZVBrZzogYW55ID0gdGhpcy5wYWNrYWdlO1xuICAgICAgbm9kZVBrZy5pbnN0YWxsRGVwZW5kZW5jaWVzKHsgcmVhc29uOiBqYXZhc2NyaXB0Lkluc3RhbGxSZWFzb24uUEFDS0FHRV9KU09OX0NIQU5HRUQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc29sdXRpb25zID0gdGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcy5mbGF0TWFwKChyZXF1ZXN0KSA9PiByZXF1ZXN0KCkpO1xuICAgICAgaWYgKHJlc29sdXRpb25zLmxlbmd0aCkge1xuICAgICAgICBub2RlUGtnLmluc3RhbGxEZXBlbmRlbmNpZXMoeyByZWFzb246IGphdmFzY3JpcHQuSW5zdGFsbFJlYXNvbi5ERVBTX1JFU09MVkVELCByZXNvbHV0aW9ucyB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcyA9IFtdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5UmVzb2x2ZXIge1xuICByZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb24oKTogc3RyaW5nW107XG59XG5cbmZ1bmN0aW9uIGdldE9iakZyb21GaWxlKHByb2plY3Q6IFByb2plY3QsIGZpbGU6IHN0cmluZyk6IG9iamVjdCB7XG4gIHJldHVybiAocHJvamVjdC50cnlGaW5kT2JqZWN0RmlsZShmaWxlKSBhcyBhbnkpPy5vYmo7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgQ2RrTGFic01vbm9yZXBvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrTGFic01vbm9yZXBvT3B0aW9ucyBleHRlbmRzIE1vbm9yZXBvT3B0aW9ucyB7fVxuXG4vKipcbiAqIE9waW5pb25hdGVkIGltcGxlbWVudGF0aW9uIG9mIHlhcm4uTW9ub3JlcG9cbiAqIEBwamlkIGNka2xhYnMteWFybi1tb25vcmVwb1xuICovXG5leHBvcnQgY2xhc3MgQ2RrTGFic01vbm9yZXBvIGV4dGVuZHMgTW9ub3JlcG8ge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtMYWJzTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgcHJvamVucmNUczogdHJ1ZSxcblxuICAgICAgYXV0b0FwcHJvdmVVcGdyYWRlczogdHJ1ZSxcbiAgICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBhbGxvd2VkVXNlcm5hbWVzOiBbJ2dpdGh1Yi1ib3QnLCAnY2RrbGFicy1hdXRvbWF0aW9uJywgJ2RlcGVuZGFib3RbYm90XSddLFxuICAgICAgICBzZWNyZXQ6ICdHSVRIVUJfVE9LRU4nLFxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZ2l0aHViT3B0aW9ucyxcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICAgIGRlcGVuZGVuY3lSZXZpZXc6IHRydWUsXG4gICAgICB9LFxuICAgICAgLy8gRGV2aWF0aW9uIGZyb20gdXBzdHJlYW0gcHJvamVuOiB1cHN0cmVhbSBwcm9qZW4gZGVmYXVsdHMgdG8gbWluTm9kZVZlcnNpb24sIGJ1dCB3ZSBoYXZlIHRvbyBtYW55IHdvcmtmbG93c1xuICAgICAgLy8gdGhhdCB1c2UgdG9vbHMgdGhhdCB3YW50IGEgcmVjZW50IE5vZGUgdmVyc2lvbiwgc28gZGVmYXVsdCB0byBhIHJlYXNvbmFibGUgZmxvYXRpbmcgdmVyc2lvbi5cbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG9wdGlvbnMud29ya2Zsb3dOb2RlVmVyc2lvbiA/PyAnbHRzLyonLFxuICAgIH0pO1xuXG4gICAgbmV3IGdpdGh1Yi5NZXJnZVF1ZXVlKHRoaXMsIHtcbiAgICAgIGF1dG9RdWV1ZU9wdGlvbnM6IHtcbiAgICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7IHNlY3JldDogJ1BST0pFTl9HSVRIVUJfVE9LRU4nIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -39,7 +39,7 @@ const path = __importStar(require("node:path"));
39
39
  const projen_1 = require("projen");
40
40
  const gather_versions_task_1 = require("./gather-versions.task");
41
41
  class WorkspaceRelease extends projen_1.Component {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceRelease", version: "0.6.1" };
42
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceRelease", version: "0.6.2" };
43
43
  publisher;
44
44
  version;
45
45
  workspace;
@@ -8,7 +8,7 @@ const projen_1 = require("projen");
8
8
  * A TypeScript workspace in a `yarn.Monorepo`
9
9
  */
10
10
  class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.6.1" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.6.2" };
12
12
  workspaceDirectory;
13
13
  bundledDeps = [];
14
14
  isPrivatePackage;
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "version": "0.6.1",
85
+ "version": "0.6.2",
86
86
  "packageManager": "yarn@4.13.0",
87
87
  "jest": {
88
88
  "coverageProvider": "v8",