@cdktn/provider-project 0.7.37 → 0.7.39
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 +12 -28
- package/API.md +0 -11
- package/CLAUDE.md +7 -10
- package/README.md +0 -8
- package/lib/force-release.js +2 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +27 -36
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
},
|
|
101
101
|
"name": "@cdktn/provider-project",
|
|
102
102
|
"readme": {
|
|
103
|
-
"markdown": "# The Future of Terraform CDK\n\n> [!IMPORTANT]\n>\n> [OCF](https://the-ocf.org/) - [github.com/open-constructs](https://github.com/open-constructs) has stepped up to fork under the new name of [CDK Terrain - cdktn.io](http://cdktn.io)\n\n---\n\n# Terraform CDK Provider Project\n\nA project template for [projen](https://projen.io) to create repositories for prebuilt provider packages for [CDK Terrain](https://cdktn.io).\n\n## Usage\n\nThe provider repos are entirely auto generated from the configuration contained in this repo here. There's no manual interaction necessary, except for creating the initial repository - using this repo. The `cdktn get` command is executed as part of the build pipeline in Github Actions. These jobs are executed on a schedule. Hence, new provider changes will be picked up automatically.\n\n### Creating a new provider\n\n> [!NOTE]\n> Only Offical Terraform Providers or Hashicorp partner Terraform Poviders will be accepted for pre-built provider generation.\n\nAdd a new repository [over here](https://github.com/cdktn-io/cdktn-repository-manager).\n\nIn the newly created repository, all we need is a `.projenrc.js` file like this:\n\n```js\nconst { CdktnProviderProject } = require('@cdktn/provider-project');\nconst { Semver } = require('projen');\n\nconst project = new CdktnProviderProject({\n terraformProvider: \"aws@~> 2.0\"\n});\n\nproject.synth();\n```\n\nAdjust the `terraformProvider` attribute as required and run the following commands:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nThis will generate an entire repository ready to be published, including Github Workflows for publishing NPM, Pypi and maven packages. The only thing which is needed to be set manually are the tokens for these registries:\n\n- `NPM_TOKEN`\n- `TWINE_PASSWORD`\n- `TWINE_USERNAME`\n
|
|
103
|
+
"markdown": "# The Future of Terraform CDK\n\n> [!IMPORTANT]\n>\n> [OCF](https://the-ocf.org/) - [github.com/open-constructs](https://github.com/open-constructs) has stepped up to fork under the new name of [CDK Terrain - cdktn.io](http://cdktn.io)\n\n---\n\n# Terraform CDK Provider Project\n\nA project template for [projen](https://projen.io) to create repositories for prebuilt provider packages for [CDK Terrain](https://cdktn.io).\n\n## Usage\n\nThe provider repos are entirely auto generated from the configuration contained in this repo here. There's no manual interaction necessary, except for creating the initial repository - using this repo. The `cdktn get` command is executed as part of the build pipeline in Github Actions. These jobs are executed on a schedule. Hence, new provider changes will be picked up automatically.\n\n### Creating a new provider\n\n> [!NOTE]\n> Only Offical Terraform Providers or Hashicorp partner Terraform Poviders will be accepted for pre-built provider generation.\n\nAdd a new repository [over here](https://github.com/cdktn-io/cdktn-repository-manager).\n\nIn the newly created repository, all we need is a `.projenrc.js` file like this:\n\n```js\nconst { CdktnProviderProject } = require('@cdktn/provider-project');\nconst { Semver } = require('projen');\n\nconst project = new CdktnProviderProject({\n terraformProvider: \"aws@~> 2.0\"\n});\n\nproject.synth();\n```\n\nAdjust the `terraformProvider` attribute as required and run the following commands:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nThis will generate an entire repository ready to be published, including Github Workflows for publishing NPM, Pypi and maven packages. The only thing which is needed to be set manually are the tokens for these registries:\n\n- `NPM_TOKEN`\n- `TWINE_PASSWORD`\n- `TWINE_USERNAME`\n- `MAVEN_GPG_PRIVATE_KEY`\n- `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n- `MAVEN_PASSWORD`\n- `MAVEN_USERNAME`\n\n### Updating an existing Provider\n\nCommit and push the required changes to this repository here and wait for the auto-release to happen. Once released, you can run the following commands in the target provider repository:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nCommit, push and check for the auto-released version.\n\n## Development\n\nWhatever needs to be changed in the downstream [provider repositories](https://github.com/cdktn-io/cdktn-repository-manager) should be done via the [code definitions](./src/index.ts) here.\n\nFor local development, [yarn link](https://classic.yarnpkg.com/en/docs/cli/link/) might be quite helpful for testing.\n"
|
|
104
104
|
},
|
|
105
105
|
"repository": {
|
|
106
106
|
"type": "git",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
},
|
|
127
127
|
"locationInModule": {
|
|
128
128
|
"filename": "src/index.ts",
|
|
129
|
-
"line":
|
|
129
|
+
"line": 109
|
|
130
130
|
},
|
|
131
131
|
"parameters": [
|
|
132
132
|
{
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"kind": "class",
|
|
141
141
|
"locationInModule": {
|
|
142
142
|
"filename": "src/index.ts",
|
|
143
|
-
"line":
|
|
143
|
+
"line": 108
|
|
144
144
|
},
|
|
145
145
|
"name": "CdktnProviderProject",
|
|
146
146
|
"symbolId": "src/index:CdktnProviderProject"
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
"immutable": true,
|
|
235
235
|
"locationInModule": {
|
|
236
236
|
"filename": "src/index.ts",
|
|
237
|
-
"line":
|
|
237
|
+
"line": 63
|
|
238
238
|
},
|
|
239
239
|
"name": "creationYear",
|
|
240
240
|
"optional": true,
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
"immutable": true,
|
|
253
253
|
"locationInModule": {
|
|
254
254
|
"filename": "src/index.ts",
|
|
255
|
-
"line":
|
|
255
|
+
"line": 73
|
|
256
256
|
},
|
|
257
257
|
"name": "deprecationDate",
|
|
258
258
|
"optional": true,
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
"immutable": true,
|
|
305
305
|
"locationInModule": {
|
|
306
306
|
"filename": "src/index.ts",
|
|
307
|
-
"line":
|
|
307
|
+
"line": 68
|
|
308
308
|
},
|
|
309
309
|
"name": "isDeprecated",
|
|
310
310
|
"optional": true,
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
"immutable": true,
|
|
322
322
|
"locationInModule": {
|
|
323
323
|
"filename": "src/index.ts",
|
|
324
|
-
"line":
|
|
324
|
+
"line": 77
|
|
325
325
|
},
|
|
326
326
|
"name": "licensee",
|
|
327
327
|
"optional": true,
|
|
@@ -329,22 +329,6 @@
|
|
|
329
329
|
"primitive": "string"
|
|
330
330
|
}
|
|
331
331
|
},
|
|
332
|
-
{
|
|
333
|
-
"abstract": true,
|
|
334
|
-
"docs": {
|
|
335
|
-
"stability": "stable"
|
|
336
|
-
},
|
|
337
|
-
"immutable": true,
|
|
338
|
-
"locationInModule": {
|
|
339
|
-
"filename": "src/index.ts",
|
|
340
|
-
"line": 47
|
|
341
|
-
},
|
|
342
|
-
"name": "mavenEndpoint",
|
|
343
|
-
"optional": true,
|
|
344
|
-
"type": {
|
|
345
|
-
"primitive": "string"
|
|
346
|
-
}
|
|
347
|
-
},
|
|
348
332
|
{
|
|
349
333
|
"abstract": true,
|
|
350
334
|
"docs": {
|
|
@@ -354,7 +338,7 @@
|
|
|
354
338
|
"immutable": true,
|
|
355
339
|
"locationInModule": {
|
|
356
340
|
"filename": "src/index.ts",
|
|
357
|
-
"line":
|
|
341
|
+
"line": 58
|
|
358
342
|
},
|
|
359
343
|
"name": "mavenGroupId",
|
|
360
344
|
"optional": true,
|
|
@@ -371,7 +355,7 @@
|
|
|
371
355
|
"immutable": true,
|
|
372
356
|
"locationInModule": {
|
|
373
357
|
"filename": "src/index.ts",
|
|
374
|
-
"line":
|
|
358
|
+
"line": 54
|
|
375
359
|
},
|
|
376
360
|
"name": "mavenOrg",
|
|
377
361
|
"optional": true,
|
|
@@ -405,7 +389,7 @@
|
|
|
405
389
|
"immutable": true,
|
|
406
390
|
"locationInModule": {
|
|
407
391
|
"filename": "src/index.ts",
|
|
408
|
-
"line":
|
|
392
|
+
"line": 50
|
|
409
393
|
},
|
|
410
394
|
"name": "nugetOrg",
|
|
411
395
|
"optional": true,
|
|
@@ -433,6 +417,6 @@
|
|
|
433
417
|
"symbolId": "src/index:CdktnProviderProjectOptions"
|
|
434
418
|
}
|
|
435
419
|
},
|
|
436
|
-
"version": "0.7.
|
|
437
|
-
"fingerprint": "
|
|
420
|
+
"version": "0.7.39",
|
|
421
|
+
"fingerprint": "MqZ1LeYUiH+vLQ2VFTfcyLgUPKQ1+Y25WYtGUNf9Sxc="
|
|
438
422
|
}
|
package/API.md
CHANGED
|
@@ -1715,7 +1715,6 @@ const cdktnProviderProjectOptions: CdktnProviderProjectOptions = { ... }
|
|
|
1715
1715
|
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.githubNamespace">githubNamespace</a></code> | <code>string</code> | defaults to "cdktn-io" previously was "cdktf". |
|
|
1716
1716
|
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.isDeprecated">isDeprecated</a></code> | <code>boolean</code> | Whether or not this prebuilt provider is deprecated. |
|
|
1717
1717
|
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.licensee">licensee</a></code> | <code>string</code> | defaults to "HashiCorp, Inc.". |
|
|
1718
|
-
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.mavenEndpoint">mavenEndpoint</a></code> | <code>string</code> | *No description.* |
|
|
1719
1718
|
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.mavenGroupId">mavenGroupId</a></code> | <code>string</code> | defaults to "io.${mavenOrg}". |
|
|
1720
1719
|
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.mavenOrg">mavenOrg</a></code> | <code>string</code> | defaults to "cdktn". |
|
|
1721
1720
|
| <code><a href="#@cdktn/provider-project.CdktnProviderProjectOptions.property.namespace">namespace</a></code> | <code>string</code> | defaults to "cdktn". |
|
|
@@ -4299,16 +4298,6 @@ defaults to "HashiCorp, Inc.".
|
|
|
4299
4298
|
|
|
4300
4299
|
---
|
|
4301
4300
|
|
|
4302
|
-
##### `mavenEndpoint`<sup>Optional</sup> <a name="mavenEndpoint" id="@cdktn/provider-project.CdktnProviderProjectOptions.property.mavenEndpoint"></a>
|
|
4303
|
-
|
|
4304
|
-
```typescript
|
|
4305
|
-
public readonly mavenEndpoint: string;
|
|
4306
|
-
```
|
|
4307
|
-
|
|
4308
|
-
- *Type:* string
|
|
4309
|
-
|
|
4310
|
-
---
|
|
4311
|
-
|
|
4312
4301
|
##### `mavenGroupId`<sup>Optional</sup> <a name="mavenGroupId" id="@cdktn/provider-project.CdktnProviderProjectOptions.property.mavenGroupId"></a>
|
|
4313
4302
|
|
|
4314
4303
|
```typescript
|
package/CLAUDE.md
CHANGED
|
@@ -19,12 +19,12 @@ This is a Projen (https://projen.io) project template for creating CDKTF (CDK fo
|
|
|
19
19
|
### Development
|
|
20
20
|
```bash
|
|
21
21
|
npx projen # Regenerate all project files from .projenrc.ts
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
yarn build # Compile TypeScript and run all build steps
|
|
23
|
+
yarn compile # Compile TypeScript only
|
|
24
|
+
yarn test # Run Jest tests
|
|
25
|
+
yarn eslint # Lint TypeScript files
|
|
26
|
+
yarn eslint:fix # Fix auto-fixable linting issues
|
|
27
|
+
yarn validate-workflows # Validate GitHub Actions workflow YAML files
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
### Testing Changes
|
|
@@ -115,9 +115,6 @@ Generated packages follow this pattern:
|
|
|
115
115
|
- **Python**: `{namespace}-provider-{providerName}`
|
|
116
116
|
- **Go**: `github.com/{githubNamespace}/cdktn-provider-{providerName}-go`
|
|
117
117
|
- **NuGet**: `{NuGetOrg}.Providers.{ProviderName}`
|
|
118
|
-
|
|
119
|
-
### For Future
|
|
120
|
-
|
|
121
118
|
- **Maven**: `{mavenOrg}.providers.{providerName}`
|
|
122
119
|
|
|
123
120
|
Special cases: `null` and `random` providers get `_provider` suffix in Maven to avoid keyword conflicts.
|
|
@@ -137,7 +134,7 @@ Tests use snapshot testing via `synthSnapshot()` helper:
|
|
|
137
134
|
- Generates a full Projen project in memory
|
|
138
135
|
- Captures all generated files
|
|
139
136
|
- Compares against committed snapshots
|
|
140
|
-
- Update snapshots: `
|
|
137
|
+
- Update snapshots: `yarn test -u`
|
|
141
138
|
|
|
142
139
|
Key test scenarios:
|
|
143
140
|
- Minimal configuration
|
package/README.md
CHANGED
|
@@ -47,14 +47,10 @@ This will generate an entire repository ready to be published, including Github
|
|
|
47
47
|
- `NPM_TOKEN`
|
|
48
48
|
- `TWINE_PASSWORD`
|
|
49
49
|
- `TWINE_USERNAME`
|
|
50
|
-
|
|
51
|
-
<!-- TODO: Re-enable Maven
|
|
52
50
|
- `MAVEN_GPG_PRIVATE_KEY`
|
|
53
51
|
- `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`
|
|
54
52
|
- `MAVEN_PASSWORD`
|
|
55
53
|
- `MAVEN_USERNAME`
|
|
56
|
-
- `MAVEN_STAGING_PROFILE_ID`
|
|
57
|
-
-->
|
|
58
54
|
|
|
59
55
|
### Updating an existing Provider
|
|
60
56
|
|
|
@@ -73,7 +69,3 @@ Commit, push and check for the auto-released version.
|
|
|
73
69
|
Whatever needs to be changed in the downstream [provider repositories](https://github.com/cdktn-io/cdktn-repository-manager) should be done via the [code definitions](./src/index.ts) here.
|
|
74
70
|
|
|
75
71
|
For local development, [yarn link](https://classic.yarnpkg.com/en/docs/cli/link/) might be quite helpful for testing.
|
|
76
|
-
|
|
77
|
-
## CAVEATS
|
|
78
|
-
|
|
79
|
-
1. Maven publishing is disabled (TODO: re-enable when requested and infra available)
|
package/lib/force-release.js
CHANGED
|
@@ -92,6 +92,7 @@ class ForceRelease {
|
|
|
92
92
|
// I couldn't find a better way to do this so this is manually c&ped from /src/index.ts line 389
|
|
93
93
|
releaseStep.env.MAVEN_OPTS =
|
|
94
94
|
"--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED";
|
|
95
|
+
delete releaseStep.env.MAVEN_STAGING_PROFILE_ID;
|
|
95
96
|
}
|
|
96
97
|
if (jobName === "release_pypi") {
|
|
97
98
|
job.if = "${{ inputs.publish_to_pypi }}";
|
|
@@ -109,4 +110,4 @@ class ForceRelease {
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
exports.ForceRelease = ForceRelease;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JjZS1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUdILDhDQUFtRDtBQUtuRCxNQUFhLFlBQVk7SUFDdkIsWUFBWSxPQUF3QixFQUFFLE9BQTRCO1FBQ2hFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSx1QkFBYyxDQUFDLE9BQU8sQ0FBQyxNQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNWLGdCQUFnQixFQUFFO2dCQUNoQixNQUFNLEVBQUU7b0JBQ04sR0FBRyxFQUFFO3dCQUNILElBQUksRUFBRSxRQUFRO3dCQUNkLFFBQVEsRUFBRSxJQUFJO3dCQUNkLFdBQVcsRUFBRSxrQ0FBa0M7cUJBQ2hEO29CQUNELGNBQWMsRUFBRTt3QkFDZCxJQUFJLEVBQUUsU0FBUzt3QkFDZixPQUFPLEVBQUUsS0FBSzt3QkFDZCxXQUFXLEVBQUUsa0NBQWtDO3FCQUNoRDtvQkFDRCxnQkFBZ0IsRUFBRTt3QkFDaEIsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsV0FBVyxFQUFFLG9DQUFvQztxQkFDbEQ7b0JBQ0QsZUFBZSxFQUFFO3dCQUNmLElBQUksRUFBRSxTQUFTO3dCQUNmLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFdBQVcsRUFBRSxtQ0FBbUM7cUJBQ2pEO29CQUNELGdCQUFnQixFQUFFO3dCQUNoQixJQUFJLEVBQUUsU0FBUzt3QkFDZixPQUFPLEVBQUUsS0FBSzt3QkFDZCxXQUFXLEVBQUUsb0NBQW9DO3FCQUNsRDtvQkFDRCxhQUFhLEVBQUU7d0JBQ2IsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsV0FBVyxFQUFFLGlDQUFpQztxQkFDL0M7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUNyRCxTQUFTLENBQ1EsQ0FBQztRQUNwQixNQUFNLFdBQVcsR0FBbUMsZUFBdUI7YUFDeEUsSUFBSSxDQUFDO1FBRVIsb0dBQW9HO1FBQ3BHLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDeEMsRUFBRSxDQUFDO1lBQ0YsSUFBSSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxVQUFVO1lBQ3RCLENBQUM7WUFDRCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsMkdBQTJHO2dCQUMxRyxHQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsY0FBYyxDQUFDO2dCQUN6QyxPQUFRLEdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2dCQUUxQyxNQUFNLGVBQWUsR0FBSSxHQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDN0MsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUNwQyxDQUFDO2dCQUNGLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLG1CQUFtQixDQUFDO2dCQUUvQyxNQUFNLFdBQVcsR0FBSSxHQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDekMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUNuQyxDQUFDO2dCQUNGLFdBQVcsQ0FBQyxHQUFHLEdBQUcsa0NBQWtDLENBQUM7Z0JBRXJELE1BQU0sVUFBVSxHQUFJLEdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN4QyxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyw2QkFBNkIsQ0FDdkQsQ0FBQztnQkFDRixPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBRXJCLE1BQU0sa0JBQWtCLEdBQUksR0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2hELENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUMzQyxDQUFDO2dCQUNGLE9BQU8sa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUU3QixNQUFNLGFBQWEsR0FBSSxHQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDaEQsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUNwQyxDQUFDO2dCQUNELEdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFNUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBVSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBa0MsQ0FDakQsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUNsQixDQUFBLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFO1lBQzdCLFlBQVksRUFBRSxlQUFlO1NBQzlCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUVoQyxJQUFJLE9BQU8sS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNqQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsNENBQTRDLENBQUM7Z0JBQ3RELE1BQU0sV0FBVyxHQUFJLEdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN6QyxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQ25DLENBQUM7Z0JBQ0YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxxQ0FBcUM7Z0JBQ3ZGLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDO1lBQ25ELENBQUM7WUFDRCxJQUFJLE9BQU8sS0FBSyxhQUFhLEVBQUUsQ0FBQztnQkFDOUIsR0FBRyxDQUFDLEVBQUUsR0FBRyw4QkFBOEIsQ0FBQztZQUMxQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQ2hDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsZ0NBQWdDLENBQUM7Z0JBQzFDLE1BQU0sV0FBVyxHQUFJLEdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN6QyxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQ25DLENBQUM7Z0JBQ0YsZ0dBQWdHO2dCQUNoRyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVU7b0JBQ3hCLGdNQUFnTSxDQUFDO1lBQ3JNLENBQUM7WUFDRCxJQUFJLE9BQU8sS0FBSyxjQUFjLEVBQUUsQ0FBQztnQkFDL0IsR0FBRyxDQUFDLEVBQUUsR0FBRywrQkFBK0IsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQ2hDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsZ0NBQWdDLENBQUM7WUFDNUMsQ0FBQztZQUNELElBQUksT0FBTyxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2pDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsNkJBQTZCLENBQUM7WUFDekMsQ0FBQztZQUVELHVFQUF1RTtZQUN2RSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBVSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRJRCxvQ0FzSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IGNkayB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEdpdGh1YldvcmtmbG93IH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViXCI7XG5pbnRlcmZhY2UgRm9yY2VSZWxlYXNlT3B0aW9ucyB7XG4gIHdvcmtmbG93UnVuc09uOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZvcmNlUmVsZWFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IGNkay5Kc2lpUHJvamVjdCwgb3B0aW9uczogRm9yY2VSZWxlYXNlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgd29ya2Zsb3dSdW5zT24gfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSBuZXcgR2l0aHViV29ya2Zsb3cocHJvamVjdC5naXRodWIhLCBcImZvcmNlLXJlbGVhc2VcIik7XG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICBzaGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBzaGEgb2YgdGhlIGNvbW1pdCB0byByZWxlYXNlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaXNoX3RvX25wbToge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIldoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggdG8gTlBNXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaXNoX3RvX21hdmVuOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBNYXZlblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHVibGlzaF90b19weXBpOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBQeVBpXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaXNoX3RvX251Z2V0OiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBOdUdldFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHVibGlzaF90b19nbzoge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIldoZXRoZXIgb3Igbm90IHRvIHB1Ymxpc2ggdG8gR29cIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlbGVhc2VXb3JrZmxvdyA9IHByb2plY3QuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coXG4gICAgICBcInJlbGVhc2VcIlxuICAgICkgYXMgR2l0aHViV29ya2Zsb3c7XG4gICAgY29uc3QgcmVsZWFzZUpvYnM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+ID0gKHJlbGVhc2VXb3JrZmxvdyBhcyBhbnkpXG4gICAgICAuam9icztcblxuICAgIC8vIEhhY2t5IHdheSBvZiBkb2luZyBhIGRlZXAgY29weSwgb3RoZXJ3aXNlIHRoZSBiZWxvdyBtb2RpZmllcyB0aGUgcmVndWxhciByZWxlYXNlIHdvcmtmbG93IGFzIHdlbGxcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZWxlYXNlSm9icykpXG4gICAgKSkge1xuICAgICAgaWYgKGpvYk5hbWUgPT09IFwiZGVwcmVjYXRlXCIpIHtcbiAgICAgICAgY29udGludWU7IC8vIHNraXAgaXRcbiAgICAgIH1cbiAgICAgIGlmIChqb2JOYW1lID09PSBcInJlbGVhc2VcIikge1xuICAgICAgICAvLyBJIGNsZWFybHkgYW0gbm90IGEgZGV2ZWxvcGVyIGFueW1vcmUgYmVjYXVzZSBJIGNhbm5vdCByZW1lbWJlciBob3cgdHlwZXMgd29yaywgaGVuY2UgYWxsIHRoZSAoYW55KSB1c2FnZVxuICAgICAgICAoam9iIGFzIGFueSlbXCJydW5zLW9uXCJdID0gd29ya2Zsb3dSdW5zT247XG4gICAgICAgIGRlbGV0ZSAoam9iIGFzIGFueSkub3V0cHV0cy5sYXRlc3RfY29tbWl0O1xuXG4gICAgICAgIGNvbnN0IGdpdENoZWNrb3V0U3RlcCA9IChqb2IgYXMgYW55KS5zdGVwcy5maW5kKFxuICAgICAgICAgIChpdDogYW55KSA9PiBpdC5uYW1lID09PSBcIkNoZWNrb3V0XCJcbiAgICAgICAgKTtcbiAgICAgICAgZ2l0Q2hlY2tvdXRTdGVwLndpdGgucmVmID0gXCIke3sgaW5wdXRzLnNoYSB9fVwiO1xuXG4gICAgICAgIGNvbnN0IHJlbGVhc2VTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmQoXG4gICAgICAgICAgKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT09IFwicmVsZWFzZVwiXG4gICAgICAgICk7XG4gICAgICAgIHJlbGVhc2VTdGVwLnJ1biA9IFwibnB4IHByb2plbiB1bmNvbmRpdGlvbmFsLXJlbGVhc2VcIjtcblxuICAgICAgICBjb25zdCBiYWNrdXBTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmQoXG4gICAgICAgICAgKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT09IFwiQmFja3VwIGFydGlmYWN0IHBlcm1pc3Npb25zXCJcbiAgICAgICAgKTtcbiAgICAgICAgZGVsZXRlIGJhY2t1cFN0ZXAuaWY7XG5cbiAgICAgICAgY29uc3QgdXBsb2FkQXJ0aWZhY3RTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmQoXG4gICAgICAgICAgKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT09IFwiVXBsb2FkIGFydGlmYWN0XCJcbiAgICAgICAgKTtcbiAgICAgICAgZGVsZXRlIHVwbG9hZEFydGlmYWN0U3RlcC5pZjtcblxuICAgICAgICBjb25zdCBnaXRSZW1vdGVTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmRJbmRleChcbiAgICAgICAgICAoaXQ6IGFueSkgPT4gaXQuaWQgPT09IFwiZ2l0X3JlbW90ZVwiXG4gICAgICAgICk7XG4gICAgICAgIChqb2IgYXMgYW55KS5zdGVwcy5zcGxpY2UoZ2l0UmVtb3RlU3RlcCwgMSk7XG5cbiAgICAgICAgd29ya2Zsb3cuYWRkSm9iKGpvYk5hbWUsIGpvYiBhcyBhbnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHB1Ymxpc2hKb2JzOiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiA9IChcbiAgICAgIHByb2plY3QucmVsZWFzZT8ucHVibGlzaGVyIGFzIGFueVxuICAgICkuX3JlbmRlckpvYnNGb3JCcmFuY2goXCJtYWluXCIsIHtcbiAgICAgIHdvcmtmbG93TmFtZTogXCJmb3JjZS1yZWxlYXNlXCIsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JdIG9mIE9iamVjdC5lbnRyaWVzKHB1Ymxpc2hKb2JzKSkge1xuICAgICAgam9iW1wicnVucy1vblwiXSA9IHdvcmtmbG93UnVuc09uO1xuXG4gICAgICBpZiAoam9iTmFtZSA9PT0gXCJyZWxlYXNlX2dpdGh1YlwiKSB7XG4gICAgICAgIGpvYi5uZWVkcyA9IFtcInJlbGVhc2VcIl07XG4gICAgICAgIGpvYi5pZiA9IFwibmVlZHMucmVsZWFzZS5vdXRwdXRzLnRhZ19leGlzdHMgIT0gJ3RydWUnXCI7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmQoXG4gICAgICAgICAgKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT09IFwiUmVsZWFzZVwiXG4gICAgICAgICk7XG4gICAgICAgIHJlbGVhc2VTdGVwLmVudi5HSVRIVUJfUkVGID0gXCIke3sgaW5wdXRzLnNoYSB9fVwiOyAvLyBAdG9kbyByZW1vdmUgd2hlbiB1cGdyYWRpbmcgUHJvamVuXG4gICAgICAgIHJlbGVhc2VTdGVwLmVudi5HSVRIVUJfU0hBID0gXCIke3sgaW5wdXRzLnNoYSB9fVwiO1xuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZV9ucG1cIikge1xuICAgICAgICBqb2IuaWYgPSBcIiR7eyBpbnB1dHMucHVibGlzaF90b19ucG0gfX1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChqb2JOYW1lID09PSBcInJlbGVhc2VfbWF2ZW5cIikge1xuICAgICAgICBqb2IuaWYgPSBcIiR7eyBpbnB1dHMucHVibGlzaF90b19tYXZlbiB9fVwiO1xuICAgICAgICBjb25zdCByZWxlYXNlU3RlcCA9IChqb2IgYXMgYW55KS5zdGVwcy5maW5kKFxuICAgICAgICAgIChpdDogYW55KSA9PiBpdC5uYW1lID09PSBcIlJlbGVhc2VcIlxuICAgICAgICApO1xuICAgICAgICAvLyBJIGNvdWxkbid0IGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgc28gdGhpcyBpcyBtYW51YWxseSBjJnBlZCBmcm9tIC9zcmMvaW5kZXgudHMgbGluZSAzODlcbiAgICAgICAgcmVsZWFzZVN0ZXAuZW52Lk1BVkVOX09QVFMgPVxuICAgICAgICAgIFwiLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEudXRpbD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS5sYW5nLnJlZmxlY3Q9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEudGV4dD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmRlc2t0b3AvamF2YS5hd3QuZm9udD1BTEwtVU5OQU1FRFwiO1xuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZV9weXBpXCIpIHtcbiAgICAgICAgam9iLmlmID0gXCIke3sgaW5wdXRzLnB1Ymxpc2hfdG9fcHlwaSB9fVwiO1xuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZV9udWdldFwiKSB7XG4gICAgICAgIGpvYi5pZiA9IFwiJHt7IGlucHV0cy5wdWJsaXNoX3RvX251Z2V0IH19XCI7XG4gICAgICB9XG4gICAgICBpZiAoam9iTmFtZSA9PT0gXCJyZWxlYXNlX2dvbGFuZ1wiKSB7XG4gICAgICAgIGpvYi5pZiA9IFwiJHt7IGlucHV0cy5wdWJsaXNoX3RvX2dvIH19XCI7XG4gICAgICB9XG5cbiAgICAgIC8vIERlbGV0ZSB0aGUgc3RlcHMgdGhhdCBjcmVhdGUgYSBuZXcgR2l0SHViIGlzc3VlIGZvciBhIGZhaWxlZCByZWxlYXNlXG4gICAgICBqb2Iuc3RlcHMuc3BsaWNlKGpvYi5zdGVwcy5sZW5ndGggLSAyLCAyKTtcblxuICAgICAgd29ya2Zsb3cuYWRkSm9iKGpvYk5hbWUsIGpvYiBhcyBhbnkpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JjZS1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUdILDhDQUFtRDtBQUtuRCxNQUFhLFlBQVk7SUFDdkIsWUFBWSxPQUF3QixFQUFFLE9BQTRCO1FBQ2hFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSx1QkFBYyxDQUFDLE9BQU8sQ0FBQyxNQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNWLGdCQUFnQixFQUFFO2dCQUNoQixNQUFNLEVBQUU7b0JBQ04sR0FBRyxFQUFFO3dCQUNILElBQUksRUFBRSxRQUFRO3dCQUNkLFFBQVEsRUFBRSxJQUFJO3dCQUNkLFdBQVcsRUFBRSxrQ0FBa0M7cUJBQ2hEO29CQUNELGNBQWMsRUFBRTt3QkFDZCxJQUFJLEVBQUUsU0FBUzt3QkFDZixPQUFPLEVBQUUsS0FBSzt3QkFDZCxXQUFXLEVBQUUsa0NBQWtDO3FCQUNoRDtvQkFDRCxnQkFBZ0IsRUFBRTt3QkFDaEIsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsV0FBVyxFQUFFLG9DQUFvQztxQkFDbEQ7b0JBQ0QsZUFBZSxFQUFFO3dCQUNmLElBQUksRUFBRSxTQUFTO3dCQUNmLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFdBQVcsRUFBRSxtQ0FBbUM7cUJBQ2pEO29CQUNELGdCQUFnQixFQUFFO3dCQUNoQixJQUFJLEVBQUUsU0FBUzt3QkFDZixPQUFPLEVBQUUsS0FBSzt3QkFDZCxXQUFXLEVBQUUsb0NBQW9DO3FCQUNsRDtvQkFDRCxhQUFhLEVBQUU7d0JBQ2IsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsV0FBVyxFQUFFLGlDQUFpQztxQkFDL0M7aUJBQ0Y7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QUUxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFVLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdklELG9DQXVJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgY2RrIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgR2l0aHViV29ya2Zsb3cgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWJcIjtcbmludGVyZmFjZSBGb3JjZVJlbGVhc2VPcHRpb25zIHtcbiAgd29ya2Zsb3dSdW5zT246IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgRm9yY2VSZWxlYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogY2RrLkpzaWlQcm9qZWN0LCBvcHRpb25zOiBGb3JjZVJlbGVhc2VPcHRpb25zKSB7XG4gICAgY29uc3QgeyB3b3JrZmxvd1J1bnNPbiB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB3b3JrZmxvdyA9IG5ldyBHaXRodWJXb3JrZmxvdyhwcm9qZWN0LmdpdGh1YiEsIFwiZm9yY2UtcmVsZWFzZVwiKTtcbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7XG4gICAgICAgIGlucHV0czoge1xuICAgICAgICAgIHNoYToge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHNoYSBvZiB0aGUgY29tbWl0IHRvIHJlbGVhc2VcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1Ymxpc2hfdG9fbnBtOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBOUE1cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1Ymxpc2hfdG9fbWF2ZW46IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIE1hdmVuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaXNoX3RvX3B5cGk6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIFB5UGlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1Ymxpc2hfdG9fbnVnZXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0byBwdWJsaXNoIHRvIE51R2V0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdWJsaXNoX3RvX2dvOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hldGhlciBvciBub3QgdG8gcHVibGlzaCB0byBHb1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVsZWFzZVdvcmtmbG93ID0gcHJvamVjdC5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcbiAgICAgIFwicmVsZWFzZVwiXG4gICAgKSBhcyBHaXRodWJXb3JrZmxvdztcbiAgICBjb25zdCByZWxlYXNlSm9iczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4gPSAocmVsZWFzZVdvcmtmbG93IGFzIGFueSlcbiAgICAgIC5qb2JzO1xuXG4gICAgLy8gSGFja3kgd2F5IG9mIGRvaW5nIGEgZGVlcCBjb3B5LCBvdGhlcndpc2UgdGhlIGJlbG93IG1vZGlmaWVzIHRoZSByZWd1bGFyIHJlbGVhc2Ugd29ya2Zsb3cgYXMgd2VsbFxuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYl0gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlbGVhc2VKb2JzKSlcbiAgICApKSB7XG4gICAgICBpZiAoam9iTmFtZSA9PT0gXCJkZXByZWNhdGVcIikge1xuICAgICAgICBjb250aW51ZTsgLy8gc2tpcCBpdFxuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZVwiKSB7XG4gICAgICAgIC8vIEkgY2xlYXJseSBhbSBub3QgYSBkZXZlbG9wZXIgYW55bW9yZSBiZWNhdXNlIEkgY2Fubm90IHJlbWVtYmVyIGhvdyB0eXBlcyB3b3JrLCBoZW5jZSBhbGwgdGhlIChhbnkpIHVzYWdlXG4gICAgICAgIChqb2IgYXMgYW55KVtcInJ1bnMtb25cIl0gPSB3b3JrZmxvd1J1bnNPbjtcbiAgICAgICAgZGVsZXRlIChqb2IgYXMgYW55KS5vdXRwdXRzLmxhdGVzdF9jb21taXQ7XG5cbiAgICAgICAgY29uc3QgZ2l0Q2hlY2tvdXRTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmQoXG4gICAgICAgICAgKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT09IFwiQ2hlY2tvdXRcIlxuICAgICAgICApO1xuICAgICAgICBnaXRDaGVja291dFN0ZXAud2l0aC5yZWYgPSBcIiR7eyBpbnB1dHMuc2hhIH19XCI7XG5cbiAgICAgICAgY29uc3QgcmVsZWFzZVN0ZXAgPSAoam9iIGFzIGFueSkuc3RlcHMuZmluZChcbiAgICAgICAgICAoaXQ6IGFueSkgPT4gaXQubmFtZSA9PT0gXCJyZWxlYXNlXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmVsZWFzZVN0ZXAucnVuID0gXCJucHggcHJvamVuIHVuY29uZGl0aW9uYWwtcmVsZWFzZVwiO1xuXG4gICAgICAgIGNvbnN0IGJhY2t1cFN0ZXAgPSAoam9iIGFzIGFueSkuc3RlcHMuZmluZChcbiAgICAgICAgICAoaXQ6IGFueSkgPT4gaXQubmFtZSA9PT0gXCJCYWNrdXAgYXJ0aWZhY3QgcGVybWlzc2lvbnNcIlxuICAgICAgICApO1xuICAgICAgICBkZWxldGUgYmFja3VwU3RlcC5pZjtcblxuICAgICAgICBjb25zdCB1cGxvYWRBcnRpZmFjdFN0ZXAgPSAoam9iIGFzIGFueSkuc3RlcHMuZmluZChcbiAgICAgICAgICAoaXQ6IGFueSkgPT4gaXQubmFtZSA9PT0gXCJVcGxvYWQgYXJ0aWZhY3RcIlxuICAgICAgICApO1xuICAgICAgICBkZWxldGUgdXBsb2FkQXJ0aWZhY3RTdGVwLmlmO1xuXG4gICAgICAgIGNvbnN0IGdpdFJlbW90ZVN0ZXAgPSAoam9iIGFzIGFueSkuc3RlcHMuZmluZEluZGV4KFxuICAgICAgICAgIChpdDogYW55KSA9PiBpdC5pZCA9PT0gXCJnaXRfcmVtb3RlXCJcbiAgICAgICAgKTtcbiAgICAgICAgKGpvYiBhcyBhbnkpLnN0ZXBzLnNwbGljZShnaXRSZW1vdGVTdGVwLCAxKTtcblxuICAgICAgICB3b3JrZmxvdy5hZGRKb2Ioam9iTmFtZSwgam9iIGFzIGFueSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHVibGlzaEpvYnM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+ID0gKFxuICAgICAgcHJvamVjdC5yZWxlYXNlPy5wdWJsaXNoZXIgYXMgYW55XG4gICAgKS5fcmVuZGVySm9ic0ZvckJyYW5jaChcIm1haW5cIiwge1xuICAgICAgd29ya2Zsb3dOYW1lOiBcImZvcmNlLXJlbGVhc2VcIixcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYl0gb2YgT2JqZWN0LmVudHJpZXMocHVibGlzaEpvYnMpKSB7XG4gICAgICBqb2JbXCJydW5zLW9uXCJdID0gd29ya2Zsb3dSdW5zT247XG5cbiAgICAgIGlmIChqb2JOYW1lID09PSBcInJlbGVhc2VfZ2l0aHViXCIpIHtcbiAgICAgICAgam9iLm5lZWRzID0gW1wicmVsZWFzZVwiXTtcbiAgICAgICAgam9iLmlmID0gXCJuZWVkcy5yZWxlYXNlLm91dHB1dHMudGFnX2V4aXN0cyAhPSAndHJ1ZSdcIjtcbiAgICAgICAgY29uc3QgcmVsZWFzZVN0ZXAgPSAoam9iIGFzIGFueSkuc3RlcHMuZmluZChcbiAgICAgICAgICAoaXQ6IGFueSkgPT4gaXQubmFtZSA9PT0gXCJSZWxlYXNlXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmVsZWFzZVN0ZXAuZW52LkdJVEhVQl9SRUYgPSBcIiR7eyBpbnB1dHMuc2hhIH19XCI7IC8vIEB0b2RvIHJlbW92ZSB3aGVuIHVwZ3JhZGluZyBQcm9qZW5cbiAgICAgICAgcmVsZWFzZVN0ZXAuZW52LkdJVEhVQl9TSEEgPSBcIiR7eyBpbnB1dHMuc2hhIH19XCI7XG4gICAgICB9XG4gICAgICBpZiAoam9iTmFtZSA9PT0gXCJyZWxlYXNlX25wbVwiKSB7XG4gICAgICAgIGpvYi5pZiA9IFwiJHt7IGlucHV0cy5wdWJsaXNoX3RvX25wbSB9fVwiO1xuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZV9tYXZlblwiKSB7XG4gICAgICAgIGpvYi5pZiA9IFwiJHt7IGlucHV0cy5wdWJsaXNoX3RvX21hdmVuIH19XCI7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VTdGVwID0gKGpvYiBhcyBhbnkpLnN0ZXBzLmZpbmQoXG4gICAgICAgICAgKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT09IFwiUmVsZWFzZVwiXG4gICAgICAgICk7XG4gICAgICAgIC8vIEkgY291bGRuJ3QgZmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBzbyB0aGlzIGlzIG1hbnVhbGx5IGMmcGVkIGZyb20gL3NyYy9pbmRleC50cyBsaW5lIDM4OVxuICAgICAgICByZWxlYXNlU3RlcC5lbnYuTUFWRU5fT1BUUyA9XG4gICAgICAgICAgXCItLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS51dGlsPUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLmxhbmcucmVmbGVjdD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS50ZXh0PUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuZGVza3RvcC9qYXZhLmF3dC5mb250PUFMTC1VTk5BTUVEXCI7XG4gICAgICAgIGRlbGV0ZSByZWxlYXNlU3RlcC5lbnYuTUFWRU5fU1RBR0lOR19QUk9GSUxFX0lEO1xuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZV9weXBpXCIpIHtcbiAgICAgICAgam9iLmlmID0gXCIke3sgaW5wdXRzLnB1Ymxpc2hfdG9fcHlwaSB9fVwiO1xuICAgICAgfVxuICAgICAgaWYgKGpvYk5hbWUgPT09IFwicmVsZWFzZV9udWdldFwiKSB7XG4gICAgICAgIGpvYi5pZiA9IFwiJHt7IGlucHV0cy5wdWJsaXNoX3RvX251Z2V0IH19XCI7XG4gICAgICB9XG4gICAgICBpZiAoam9iTmFtZSA9PT0gXCJyZWxlYXNlX2dvbGFuZ1wiKSB7XG4gICAgICAgIGpvYi5pZiA9IFwiJHt7IGlucHV0cy5wdWJsaXNoX3RvX2dvIH19XCI7XG4gICAgICB9XG5cbiAgICAgIC8vIERlbGV0ZSB0aGUgc3RlcHMgdGhhdCBjcmVhdGUgYSBuZXcgR2l0SHViIGlzc3VlIGZvciBhIGZhaWxlZCByZWxlYXNlXG4gICAgICBqb2Iuc3RlcHMuc3BsaWNlKGpvYi5zdGVwcy5sZW5ndGggLSAyLCAyKTtcblxuICAgICAgd29ya2Zsb3cuYWRkSm9iKGpvYk5hbWUsIGpvYiBhcyBhbnkpO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -18,7 +18,6 @@ export interface CdktnProviderProjectOptions extends cdk.JsiiProjectOptions {
|
|
|
18
18
|
* previously was "cdktf". Used for GitHub org name and package scoping
|
|
19
19
|
*/
|
|
20
20
|
readonly githubNamespace?: string;
|
|
21
|
-
readonly mavenEndpoint?: string;
|
|
22
21
|
/**
|
|
23
22
|
* defaults to "Io.Cdktn"
|
|
24
23
|
*/
|
package/lib/index.js
CHANGED
|
@@ -32,23 +32,23 @@ const getMavenName = (providerName) => {
|
|
|
32
32
|
: providerName.replace(/-/gi, "_");
|
|
33
33
|
};
|
|
34
34
|
const githubActionPinnedVersions = {
|
|
35
|
-
"actions/checkout": "
|
|
36
|
-
"actions/download-artifact": "
|
|
37
|
-
"actions/github-script": "
|
|
38
|
-
"actions/setup-dotnet": "
|
|
39
|
-
"actions/setup-go": "
|
|
40
|
-
"actions/setup-java": "
|
|
41
|
-
"actions/setup-node": "
|
|
42
|
-
"actions/setup-python": "
|
|
43
|
-
"actions/stale": "
|
|
44
|
-
"actions/upload-artifact": "
|
|
45
|
-
"amannn/action-semantic-pull-request": "
|
|
46
|
-
"dessant/lock-threads": "
|
|
35
|
+
"actions/checkout": "de0fac2e4500dabe0009e67214ff5f5447ce83dd", // v6.0.2
|
|
36
|
+
"actions/download-artifact": "3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c", // v8.0.1
|
|
37
|
+
"actions/github-script": "ed597411d8f924073f98dfc5c65a23a2325f34cd", // v8.0.0
|
|
38
|
+
"actions/setup-dotnet": "c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7", // v5.2.0
|
|
39
|
+
"actions/setup-go": "4a3601121dd01d1626a1e23e37211e3254c1c06c", // v6.4.0
|
|
40
|
+
"actions/setup-java": "be666c2fcd27ec809703dec50e508c2fdc7f6654", // v5.2.0
|
|
41
|
+
"actions/setup-node": "48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e", // v6.4.0
|
|
42
|
+
"actions/setup-python": "a309ff8b426b58ec0e2a45f0f869d46889d02405", // v6.2.0
|
|
43
|
+
"actions/stale": "b5d41d4e1d5dceea10e7104786b73624c18a190f", // v10.2.0
|
|
44
|
+
"actions/upload-artifact": "043fb46d1a93c77aae656e7c1c64a875d1fc6a0a", // v7.0.1
|
|
45
|
+
"amannn/action-semantic-pull-request": "48f256284bd46cdaab1048c3721360e808335d50", // v6.1.1
|
|
46
|
+
"dessant/lock-threads": "7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7", // v6.0.0
|
|
47
47
|
"hashicorp/setup-copywrite": "32638da2d4e81d56a0764aa1547882fc4d209636", // v1.1.3
|
|
48
|
-
"hashicorp/setup-terraform": "
|
|
49
|
-
"imjohnbo/issue-bot": "
|
|
50
|
-
"peter-evans/create-pull-request": "
|
|
51
|
-
"slackapi/slack-github-action": "
|
|
48
|
+
"hashicorp/setup-terraform": "5e8dbf3c6d9deaf4193ca7a8fb23f2ac83bb6c85", // v4.0.0
|
|
49
|
+
"imjohnbo/issue-bot": "3188c6ce06249206709d3b1f274d0d4c5a521601", // v3.4.5
|
|
50
|
+
"peter-evans/create-pull-request": "5f6978faf089d4d20b00c7766989d076bb2fc7f1", // v8.1.1
|
|
51
|
+
"slackapi/slack-github-action": "45a88b9581bfab2566dc881e2cd66d334e621e2c", // v3.0.3
|
|
52
52
|
"actions/create-github-app-token": "29824e69f54612133e76f7eaac726eef6c875baf", // v2.2.1
|
|
53
53
|
};
|
|
54
54
|
class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
@@ -57,9 +57,7 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
57
57
|
assert(cdktnVersion, "Either cdktnVersion or cdktfVersion must be provided");
|
|
58
58
|
const { terraformProvider, workflowContainerImage, constructsVersion, minNodeVersion, jsiiVersion, typescriptVersion, isDeprecated, deprecationDate,
|
|
59
59
|
// TODO: Confirm default Author Name
|
|
60
|
-
authorName = "CDK Terrain Maintainers", authorAddress = "https://cdktn.io", namespace = "cdktn", githubNamespace = "cdktn-io",
|
|
61
|
-
nugetOrg = "Io.Cdktn", mavenOrg = "cdktn", // TODO
|
|
62
|
-
npmTrustedPublishing, } = options;
|
|
60
|
+
authorName = "CDK Terrain Maintainers", authorAddress = "https://cdktn.io", namespace = "cdktn", githubNamespace = "cdktn-io", nugetOrg = "Io.Cdktn", mavenOrg = "cdktn", npmTrustedPublishing, } = options;
|
|
63
61
|
const [fqproviderName, providerVersion] = terraformProvider.split("@");
|
|
64
62
|
const providerName = fqproviderName.split("/").pop();
|
|
65
63
|
assert(providerName, `${terraformProvider} doesn't seem to be valid`);
|
|
@@ -87,7 +85,6 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
87
85
|
javaPackage: mavenName,
|
|
88
86
|
mavenGroupId: mavenGroupId,
|
|
89
87
|
mavenArtifactId: `${namespace}-provider-${providerName}`,
|
|
90
|
-
mavenEndpoint,
|
|
91
88
|
},
|
|
92
89
|
publishToGo: {
|
|
93
90
|
moduleName: `${repositoryUrl}-go`,
|
|
@@ -207,8 +204,7 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
207
204
|
},
|
|
208
205
|
python: packageInfo.python,
|
|
209
206
|
publishToNuget: packageInfo.publishToNuget,
|
|
210
|
-
|
|
211
|
-
// publishToMaven: packageInfo.publishToMaven,
|
|
207
|
+
publishToMaven: packageInfo.publishToMaven,
|
|
212
208
|
publishToGo: packageInfo.publishToGo,
|
|
213
209
|
releaseFailureIssue: true,
|
|
214
210
|
peerDependencyOptions: {
|
|
@@ -310,15 +306,12 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
310
306
|
if (!isDeprecated) {
|
|
311
307
|
patchGoPublishToUseAppToken(releaseWorkflow);
|
|
312
308
|
}
|
|
313
|
-
//
|
|
314
|
-
|
|
315
|
-
//
|
|
316
|
-
|
|
317
|
-
//
|
|
318
|
-
|
|
319
|
-
// "--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED"
|
|
320
|
-
// )
|
|
321
|
-
// );
|
|
309
|
+
// Fix maven issue (https://github.com/cdklabs/publib/pull/777)
|
|
310
|
+
projen_1.github.GitHub.of(this)?.tryFindWorkflow("release")?.file?.patch(projen_1.JsonPatch.add("/jobs/release_maven/steps/10/env/MAVEN_OPTS",
|
|
311
|
+
// See https://stackoverflow.com/questions/70153962/nexus-staging-maven-plugin-maven-deploy-failed-an-api-incompatibility-was-enco
|
|
312
|
+
"--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED"), projen_1.JsonPatch.remove(
|
|
313
|
+
// This is no longer used.
|
|
314
|
+
"/jobs/release_maven/steps/10/env/MAVEN_STAGING_PROFILE_ID"));
|
|
322
315
|
this.pinGithubActionVersions(githubActionPinnedVersions);
|
|
323
316
|
new cdktf_config_1.CdktfConfig(this, {
|
|
324
317
|
terraformProvider,
|
|
@@ -425,9 +418,7 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
425
418
|
"rm -rf docs",
|
|
426
419
|
"rm -f API.md",
|
|
427
420
|
"mkdir docs",
|
|
428
|
-
|
|
429
|
-
// "jsii-docgen --split-by-submodule -l typescript -l python -l java -l csharp -l go",
|
|
430
|
-
"jsii-docgen --split-by-submodule -l typescript -l python -l go",
|
|
421
|
+
"jsii-docgen --split-by-submodule -l typescript -l python -l java -l csharp -l go",
|
|
431
422
|
// There is no nice way to tell jsii-docgen to generate docs into a folder so I went this route
|
|
432
423
|
"mv *.*.md docs",
|
|
433
424
|
// Some part of the documentation are too long, we need to truncate them to ~10MB
|
|
@@ -487,10 +478,10 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
|
|
|
487
478
|
}
|
|
488
479
|
exports.CdktnProviderProject = CdktnProviderProject;
|
|
489
480
|
_a = JSII_RTTI_SYMBOL_1;
|
|
490
|
-
CdktnProviderProject[_a] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.7.
|
|
481
|
+
CdktnProviderProject[_a] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.7.39" };
|
|
491
482
|
function prettyAssertEqual(subject, expected, message) {
|
|
492
483
|
if (subject !== expected) {
|
|
493
484
|
throw new Error(`${message ?? "Assertion failed"}: expected ${JSON.stringify(expected)} but got ${JSON.stringify(subject)}`);
|
|
494
485
|
}
|
|
495
486
|
}
|
|
496
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBMEQ7QUFDMUQsaUNBQWtDO0FBQ2xDLDZDQUF5QztBQUN6QyxtQ0FBc0U7QUFFdEUsc0RBQW9FO0FBQ3BFLHFEQUFnRDtBQUNoRCxpREFBNkM7QUFDN0MsK0VBQXlFO0FBQ3pFLDJDQUF3QztBQUN4QyxpREFBNkM7QUFDN0MsMkRBQXVEO0FBQ3ZELDZEQUF5RDtBQUN6RCw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBQ3pELG1EQUErQztBQUMvQyxtREFBK0M7QUFDL0MsK0NBQTJDO0FBRTNDLHlEQUFxRDtBQUNyRCxxRUFBMEU7QUFDMUUsNkRBQW1FO0FBQ25FLG9EQUFrRTtBQUVsRSxtSEFBbUg7QUFDbkgsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUF1RDVCLE1BQU0sWUFBWSxHQUFHLENBQUMsWUFBb0IsRUFBVSxFQUFFO0lBQ3BELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QyxDQUFDLENBQUMsR0FBRyxZQUFZLFdBQVc7UUFDNUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsa0JBQWtCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUN6RSwyQkFBMkIsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ2xGLHVCQUF1QixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDOUUsc0JBQXNCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM3RSxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLG9CQUFvQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDM0Usb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FB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SSw0QkFBWSxDQUFDLElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDM0MsMkJBQTJCLENBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUM5RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxjQUFzQztRQUNwRSx3Q0FBd0M7UUFDeEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBOWhCSCxvREEraEJDOzs7QUFFRCxTQUFTLGlCQUFpQixDQUFJLE9BQVUsRUFBRSxRQUFXLEVBQUUsT0FBZ0I7SUFDckUsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLE9BQU8sSUFBSSxrQkFBa0IsY0FBYyxJQUFJLENBQUMsU0FBUyxDQUMxRCxRQUFRLENBQ1QsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3ZDLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmltcG9ydCBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuaW1wb3J0IHsgcGFzY2FsQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSwgVGV4dEZpbGUsIGNkaywgZ2l0aHViLCBKc29uUGF0Y2ggfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBKb2JTdGVwIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlIH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQWxlcnRPcGVuUHJzIH0gZnJvbSBcIi4vYWxlcnQtb3Blbi1wcnNcIjtcbmltcG9ydCB7IEF1dG9BcHByb3ZlIH0gZnJvbSBcIi4vYXV0by1hcHByb3ZlXCI7XG5pbXBvcnQgeyBBdXRvQ2xvc2VDb21tdW5pdHlJc3N1ZXMgfSBmcm9tIFwiLi9hdXRvLWNsb3NlLWNvbW11bml0eS1pc3N1ZXNcIjtcbmltcG9ydCB7IEF1dG9tZXJnZSB9IGZyb20gXCIuL2F1dG9tZXJnZVwiO1xuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWdcIjtcbmltcG9ydCB7IENvcHlyaWdodEhlYWRlcnMgfSBmcm9tIFwiLi9jb3B5cmlnaHQtaGVhZGVyc1wiO1xuaW1wb3J0IHsgQ3VzdG9taXplZExpY2Vuc2UgfSBmcm9tIFwiLi9jdXN0b21pemVkLWxpY2Vuc2VcIjtcbmltcG9ydCB7IERlcGVuZGFib3QgfSBmcm9tIFwiLi9kZXBlbmRhYm90XCI7XG5pbXBvcnQgeyBEZXByZWNhdGVQYWNrYWdlcyB9IGZyb20gXCIuL2RlcHJlY2F0ZS1wYWNrYWdlc1wiO1xuaW1wb3J0IHsgRm9yY2VSZWxlYXNlIH0gZnJvbSBcIi4vZm9yY2UtcmVsZWFzZVwiO1xuaW1wb3J0IHsgR2l0aHViSXNzdWVzIH0gZnJvbSBcIi4vZ2l0aHViLWlzc3Vlc1wiO1xuaW1wb3J0IHsgTG9ja0lzc3VlcyB9IGZyb20gXCIuL2xvY2staXNzdWVzXCI7XG5pbXBvcnQgeyBQYWNrYWdlSW5mbyB9IGZyb20gXCIuL3BhY2thZ2UtaW5mb1wiO1xuaW1wb3J0IHsgUHJvdmlkZXJVcGdyYWRlIH0gZnJvbSBcIi4vcHJvdmlkZXItdXBncmFkZVwiO1xuaW1wb3J0IHsgQ2hlY2tGb3JVcGdyYWRlc1NjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL2NoZWNrLWZvci11cGdyYWRlc1wiO1xuaW1wb3J0IHsgU2hvdWxkUmVsZWFzZVNjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmRvbUNyb24sIFNjaGVkdWxlIH0gZnJvbSBcIi4vdXRpbC9yYW5kb20tY3JvblwiO1xuXG4vLyBlbnN1cmUgbmV3IHByb2plY3RzIHN0YXJ0IHdpdGggMS4wLjAgc28gdGhhdCBldmVyeSBmb2xsb3dpbmcgYnJlYWtpbmcgY2hhbmdlIGxlYWRzIHRvIGFuIGluY3JlYXNlZCBtYWpvciB2ZXJzaW9uXG5jb25zdCBNSU5fTUFKT1JfVkVSU0lPTiA9IDE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zIGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUdpdGh1YlJ1bm5lcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlcnJhZm9ybVByb3ZpZGVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNka3RuVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBjZGt0blZlcnNpb25gIGluc3RlYWQuIFRoaXMgYWxpYXMgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICByZWFkb25seSBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZvcmNlTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0blwiXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuLWlvXCJcbiAgICogcHJldmlvdXNseSB3YXMgXCJjZGt0ZlwiLiBVc2VkIGZvciBHaXRIdWIgb3JnIG5hbWUgYW5kIHBhY2thZ2Ugc2NvcGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViTmFtZXNwYWNlPzogc3RyaW5nO1xuICByZWFkb25seSBtYXZlbkVuZHBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJJby5DZGt0blwiXG4gICAqL1xuICByZWFkb25seSBudWdldE9yZz86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5Pcmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImlvLiR7bWF2ZW5Pcmd9XCJcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB5ZWFyIG9mIHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeSwgZm9yIGNvcHlyaWdodCBwdXJwb3Nlcy5cbiAgICogV2lsbCBmYWxsIGJhY2sgdG8gdGhlIGN1cnJlbnQgeWVhciBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRpb25ZZWFyPzogbnVtYmVyO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcmVidWlsdCBwcm92aWRlciBpcyBkZXByZWNhdGVkLlxuICAgKiBJZiB0cnVlLCBubyBuZXcgdmVyc2lvbnMgd2lsbCBiZSBwdWJsaXNoZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGF0ZSB3aGVuIHRoZSBwcm9qZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQsIHRvIGJlIHVzZWQgaW4gdGhlIFJFQURNRSB0ZXh0LlxuICAgKiBJZiBubyBkYXRlIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBkYXRlIG9mIHRoZSBidWlsZCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uRGF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiSGFzaGlDb3JwLCBJbmMuXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNYXZlbk5hbWUgPSAocHJvdmlkZXJOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gW1wibnVsbFwiLCBcInJhbmRvbVwiXS5pbmNsdWRlcyhwcm92aWRlck5hbWUpXG4gICAgPyBgJHtwcm92aWRlck5hbWV9X3Byb3ZpZGVyYFxuICAgIDogcHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKTtcbn07XG5cbmNvbnN0IGdpdGh1YkFjdGlvblBpbm5lZFZlcnNpb25zID0ge1xuICBcImFjdGlvbnMvY2hlY2tvdXRcIjogXCIxMWJkNzE5MDFiYmU1YjE2MzBjZWVhNzNkMjc1OTczNjRjOWFmNjgzXCIsIC8vIHY0LjIuMlxuICBcImFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RcIjogXCI5NTgxNWMzOGNmMmZmMjE2NDg2OWNiYWI3OWRhOGQxZjQyMmJjODllXCIsIC8vIHY0LjIuMVxuICBcImFjdGlvbnMvZ2l0aHViLXNjcmlwdFwiOiBcIjYwYTBkODMwMzljNzRhNGFlZTU0MzUwOGQyZmZjYjFjMzc5OWNkZWFcIiwgLy8gdjcuMC4xXG4gIFwiYWN0aW9ucy9zZXR1cC1kb3RuZXRcIjogXCI2N2EzNTczYzlhOTg2YTNmOWM1OTQ1MzlmNGFiNTExZDU3YmIzY2U5XCIsIC8vIHY0LjMuMVxuICBcImFjdGlvbnMvc2V0dXAtZ29cIjogXCIwYWFjY2ZkMTUwZDUwY2NhZWI1OGViZDg4ZDM2ZTkxOTY3YTVmMzViXCIsIC8vIHY1LjQuMFxuICBcImFjdGlvbnMvc2V0dXAtamF2YVwiOiBcIjNhNGY2ZTFhZjUwNGNmNmEzMTg1NWZhODk5YzZhYTUzNTViYTZjMTJcIiwgLy8gdjQuNy4wXG4gIFwiYWN0aW9ucy9zZXR1cC1ub2RlXCI6IFwiY2RjYTczNjViMmRhZGI4YWFkMGEzM2JjNzYwMTg1NmZmYWJjYzQ4ZVwiLCAvLyB2NC4zLjBcbiAgXCJhY3Rpb25zL3NldHVwLXB5dGhvblwiOiBcIjQyMzc1NTI0ZTIzYzQxMmQ5M2ZiNjdiNDk5NThiNDkxZmNlNzFjMzhcIiwgLy8gdjUuNC4wXG4gIFwiYWN0aW9ucy9zdGFsZVwiOiBcIjViZWY2NGYxOWQ3ZmFjZmIyNWIzN2I0MTQ0ODJjNzE2NGQ2Mzk2MzlcIiwgLy8gdjkuMS4wXG4gIFwiYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RcIjogXCJlYTE2NWY4ZDY1YjZlNzViNTQwNDQ5ZTkyYjQ4ODZmNDM2MDdmYTAyXCIsIC8vIHY0LjYuMlxuICBcImFtYW5ubi9hY3Rpb24tc2VtYW50aWMtcHVsbC1yZXF1ZXN0XCI6XG4gICAgXCIwNzIzMzg3ZmFhZjliMzhhZGVmNDc3NWNkNDJjZmQ1MTU1ZWQ2MDE3XCIsIC8vIHY1LjUuM1xuICBcImRlc3NhbnQvbG9jay10aHJlYWRzXCI6IFwiMWJmN2VjMjUwNTFmZTdjMDBiZGQxN2U2YTdjZjNkN2JmYjdkYzc3MVwiLCAvLyB2NS4wLjFcbiAgXCJoYXNoaWNvcnAvc2V0dXAtY29weXdyaXRlXCI6IFwiMzI2MzhkYTJkNGU4MWQ1NmEwNzY0YWExNTQ3ODgyZmM0ZDIwOTYzNlwiLCAvLyB2MS4xLjNcbiAgXCJoYXNoaWNvcnAvc2V0dXAtdGVycmFmb3JtXCI6IFwiYjljZDU0YTNjMzQ5ZDNmMzhlODg4MTU1NWQ2MTZjZWQyNjk4NjJkZFwiLCAvLyB2My4xLjJcbiAgXCJpbWpvaG5iby9pc3N1ZS1ib3RcIjogXCI1NzJlZWQxNDQyMmM0ZDZjYTM3ZTg3MGY5N2U3ZGEyMDk0MjJmNWJkXCIsIC8vIHYzLjQuNFxuICBcInBldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3RcIjogXCIyNzFhOGQwMzQwMjY1ZjcwNWIxNGI2ZDMyYjk4MjljMWNiMzNkNDVlXCIsIC8vIHY3LjAuOFxuICBcInNsYWNrYXBpL3NsYWNrLWdpdGh1Yi1hY3Rpb25cIjogXCI0ODVhOWQ0MmQzYTczMDMxZjEyZWMyMDFjNDU3ZTIxNjJjNDVkMDJkXCIsIC8vIHYyLjAuMFxuICBcImFjdGlvbnMvY3JlYXRlLWdpdGh1Yi1hcHAtdG9rZW5cIjogXCIyOTgyNGU2OWY1NDYxMjEzM2U3NmY3ZWFhYzcyNmVlZjZjODc1YmFmXCIsIC8vIHYyLjIuMVxufTtcblxuZXhwb3J0IGNsYXNzIENka3RuUHJvdmlkZXJQcm9qZWN0IGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrdG5WZXJzaW9uID0gb3B0aW9ucy5jZGt0blZlcnNpb24gPz8gb3B0aW9ucy5jZGt0ZlZlcnNpb247XG4gICAgYXNzZXJ0KFxuICAgICAgY2RrdG5WZXJzaW9uLFxuICAgICAgXCJFaXRoZXIgY2RrdG5WZXJzaW9uIG9yIGNka3RmVmVyc2lvbiBtdXN0IGJlIHByb3ZpZGVkXCJcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgdGVycmFmb3JtUHJvdmlkZXIsXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb24sXG4gICAgICBtaW5Ob2RlVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBpc0RlcHJlY2F0ZWQsXG4gICAgICBkZXByZWNhdGlvbkRhdGUsXG4gICAgICAvLyBUT0RPOiBDb25maXJtIGRlZmF1bHQgQXV0aG9yIE5hbWVcbiAgICAgIGF1dGhvck5hbWUgPSBcIkNESyBUZXJyYWluIE1haW50YWluZXJzXCIsXG4gICAgICBhdXRob3JBZGRyZXNzID0gXCJodHRwczovL2Nka3RuLmlvXCIsXG4gICAgICBuYW1lc3BhY2UgPSBcImNka3RuXCIsXG4gICAgICBnaXRodWJOYW1lc3BhY2UgPSBcImNka3RuLWlvXCIsXG4gICAgICBtYXZlbkVuZHBvaW50ID0gXCJodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tXCIsIC8vIFRPRE9cbiAgICAgIG51Z2V0T3JnID0gXCJJby5DZGt0blwiLFxuICAgICAgbWF2ZW5PcmcgPSBcImNka3RuXCIsIC8vIFRPRE9cbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgW2ZxcHJvdmlkZXJOYW1lLCBwcm92aWRlclZlcnNpb25dID0gdGVycmFmb3JtUHJvdmlkZXIuc3BsaXQoXCJAXCIpO1xuICAgIGNvbnN0IHByb3ZpZGVyTmFtZSA9IGZxcHJvdmlkZXJOYW1lLnNwbGl0KFwiL1wiKS5wb3AoKTtcbiAgICBhc3NlcnQocHJvdmlkZXJOYW1lLCBgJHt0ZXJyYWZvcm1Qcm92aWRlcn0gZG9lc24ndCBzZWVtIHRvIGJlIHZhbGlkYCk7XG4gICAgYXNzZXJ0KFxuICAgICAgIXByb3ZpZGVyTmFtZS5lbmRzV2l0aChcIi1nb1wiKSxcbiAgICAgIFwicHJvdmlkZXJOYW1lIG1heSBub3QgZW5kIHdpdGggJy1nbycgYXMgdGhpcyBjYW4gY29uZmxpY3Qgd2l0aCByZXBvcyBmb3IgZ28gcGFja2FnZXNcIlxuICAgICk7XG5cbiAgICBjb25zdCBudWdldE5hbWUgPSBgJHtudWdldE9yZ30uUHJvdmlkZXJzLiR7cGFzY2FsQ2FzZShwcm92aWRlck5hbWUpfWA7XG4gICAgY29uc3QgbWF2ZW5Hcm91cElkID0gb3B0aW9ucy5tYXZlbkdyb3VwSWQgPz8gYGlvLiR7bWF2ZW5Pcmd9YDtcbiAgICBjb25zdCBtYXZlbk5hbWUgPSBgJHttYXZlbkdyb3VwSWR9LnByb3ZpZGVycy4ke2dldE1hdmVuTmFtZShwcm92aWRlck5hbWUpfWA7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGAke2dpdGh1Yk5hbWVzcGFjZX0vJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoXG4gICAgICAvLS9nLFxuICAgICAgXCJcIlxuICAgICl9YDtcbiAgICBjb25zdCByZXBvc2l0b3J5VXJsID0gYGdpdGh1Yi5jb20vJHtyZXBvc2l0b3J5fWA7XG5cbiAgICBjb25zdCBwYWNrYWdlSW5mbzogUGFja2FnZUluZm8gPSB7XG4gICAgICBucG06IHtcbiAgICAgICAgbmFtZTogYEAke25hbWVzcGFjZX0vcHJvdmlkZXItJHtwcm92aWRlck5hbWV9YCxcbiAgICAgIH0sXG4gICAgICBweXRob246IHtcbiAgICAgICAgLy8gZGlzdE5hbWU6IGAke2dpdGh1Yk5hbWVzcGFjZX0tJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoXG4gICAgICAgIGRpc3ROYW1lOiBgJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKX1gLFxuICAgICAgICAvLyBtb2R1bGU6IGAke2dpdGh1Yk5hbWVzcGFjZX1fJHtuYW1lc3BhY2V9X3Byb3ZpZGVyXyR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoXG4gICAgICAgIG1vZHVsZTogYCR7bmFtZXNwYWNlfV9wcm92aWRlcl8ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKC8tL2dpLCBcIl9cIil9YCxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9OdWdldDoge1xuICAgICAgICBkb3ROZXROYW1lc3BhY2U6IG51Z2V0TmFtZSxcbiAgICAgICAgcGFja2FnZUlkOiBudWdldE5hbWUsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvTWF2ZW46IHtcbiAgICAgICAgamF2YVBhY2thZ2U6IG1hdmVuTmFtZSxcbiAgICAgICAgbWF2ZW5Hcm91cElkOiBtYXZlbkdyb3VwSWQsXG4gICAgICAgIG1hdmVuQXJ0aWZhY3RJZDogYCR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZX1gLFxuICAgICAgICBtYXZlbkVuZHBvaW50LFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb0dvOiB7XG4gICAgICAgIG1vZHVsZU5hbWU6IGAke3JlcG9zaXRvcnlVcmx9LWdvYCxcbiAgICAgICAgZ2l0VXNlckVtYWlsOiBcImdpdGh1Yi10ZWFtLWNkay10ZXJyYWluQGNka3RuLmlvXCIsXG4gICAgICAgIGdpdFVzZXJOYW1lOiBcInRlYW0tY2RrLXRlcnJhaW5cIixcbiAgICAgICAgcGFja2FnZU5hbWU6IHByb3ZpZGVyTmFtZS5yZXBsYWNlKC8tL2csIFwiXCIpLFxuICAgICAgICAvLyBJbiBvcmRlciB0byB1c2UgdGhlIGNvcHl3cml0ZSBhY3Rpb24sIHdlIG5lZWQgdG8gcmVidWlsZCB0aGUgZnVsbCBwcmUtcHVibGlzaCBzdGVwcyB3b3JrZmxvdyB1bmZvcnR1bmF0ZWx5XG4gICAgICAgIC8vIElmIHNvbWVvbmUga25vd3MgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgbXV0YXRpb24gd2l0aCBtaW5pbWFsIGN1c3RvbSBjb2RlLCBwbGVhc2UgZG8gc29cbiAgICAgICAgcHJlUHVibGlzaFN0ZXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDaGVja291dFwiLFxuICAgICAgICAgICAgdXNlczogXCJhY3Rpb25zL2NoZWNrb3V0XCIsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgIHBhdGg6IFwiLnJlcG9cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkluc3RhbGwgRGVwZW5kZW5jaWVzXCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8gJiYgeWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMgLS1mcm96ZW4tbG9ja2ZpbGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiRXh0cmFjdCBidWlsZCBhcnRpZmFjdFwiLFxuICAgICAgICAgICAgcnVuOiBcInRhciAtLXN0cmlwLWNvbXBvbmVudHM9MSAteHp2ZiBkaXN0L2pzLyoudGd6IC1DIC5yZXBvXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIk1vdmUgYnVpbGQgYXJ0aWZhY3Qgb3V0IG9mIHRoZSB3YXlcIixcbiAgICAgICAgICAgIHJ1bjogXCJtdiBkaXN0IGRpc3Qub2xkXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNyZWF0ZSBnbyBhcnRpZmFjdFwiLFxuICAgICAgICAgICAgcnVuOiBcImNkIC5yZXBvICYmIG5weCBwcm9qZW4gcGFja2FnZTpnb1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJTZXR1cCBDb3B5d3JpdGUgdG9vbFwiLFxuICAgICAgICAgICAgdXNlczogXCJoYXNoaWNvcnAvc2V0dXAtY29weXdyaXRlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvcHkgY29weXdyaXRlIGhjbCBmaWxlXCIsXG4gICAgICAgICAgICBydW46IFwiY3AgLnJlcG8vLmNvcHl3cml0ZS5oY2wgLnJlcG8vZGlzdC9nby8uY29weXdyaXRlLmhjbFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJBZGQgaGVhZGVycyB1c2luZyBDb3B5d3JpdGUgdG9vbFwiLFxuICAgICAgICAgICAgcnVuOiBcImNkIC5yZXBvL2Rpc3QvZ28gJiYgY29weXdyaXRlIGhlYWRlcnNcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiUmVtb3ZlIGNvcHl3cml0ZSBoY2wgZmlsZVwiLFxuICAgICAgICAgICAgcnVuOiBcInJtIC1mIC5yZXBvL2Rpc3QvZ28vLmNvcHl3cml0ZS5oY2xcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiUmVtb3ZlIHNvbWUgdGV4dCBmcm9tIHRoZSBSRUFETUUgdGhhdCBkb2Vzbid0IGFwcGx5IHRvIEdvXCIsXG4gICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgXCJzZWQgLWkgJ3MvIyBDREtUTiBwcmVidWlsdCBiaW5kaW5ncyBmb3IvIyBDREtUTiBHbyBiaW5kaW5ncyBmb3IvJyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kXCIsXG4gICAgICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ5NTExOTQ5XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgICAgYHNlZCAtaSAtZSAnLyMjICR7aXNEZXByZWNhdGVkID8gXCJEZXByZWNhdGVkXCIgOiBcIkF2YWlsYWJsZVwifSBQYWNrYWdlcy8sLyMjIyBHby8hYicgLWUgJy8jIyMgR28vIWQ7cDsgcy8jIyMgR28vIyMgR28gUGFja2FnZS8nIC1lICdkJyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kYCxcbiAgICAgICAgICAgICAgLy8gc2VkIC1lIGlzIGJsYWNrIG1hZ2ljIGFuZCBmb3Igd2hhdGV2ZXIgcmVhc29uIHRoZSBzdHJpbmcgcmVwbGFjZSBkb2Vzbid0IHdvcmsgc28gbGV0J3MgdHJ5IGl0IGFnYWluOlxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgICAgICAgIGBzZWQgLWkgJ3MvIyMjIEdvLyMjICR7aXNEZXByZWNhdGVkID8gXCJEZXByZWNhdGVkXCIgOiBcIkdvXCJ9IFBhY2thZ2UvJyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kYCxcbiAgICAgICAgICAgICAgLy8gSnVzdCBzdHJhaWdodCB1cCBkZWxldGUgdGhlc2UgZnVsbCBsaW5lcyBhbmQgZXZlcnl0aGluZyBpbiBiZXR3ZWVuIHRoZW06XG4gICAgICAgICAgICAgIFwic2VkIC1pIC1lICcvQVBJLnR5cGVzY3JpcHQubWQvLC9Zb3UgY2FuIGFsc28gdmlzaXQgYSBob3N0ZWQgdmVyc2lvbi8hYicgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgICAgYHNlZCAtaSAnc3xGaW5kIGF1dG8tZ2VuZXJhdGVkIGRvY3MgZm9yIHRoaXMgcHJvdmlkZXIgaGVyZTp8RmluZCBhdXRvLWdlbmVyYXRlZCBkb2NzIGZvciB0aGlzIHByb3ZpZGVyIFtoZXJlXShodHRwczovLyR7cmVwb3NpdG9yeVVybH0vYmxvYi9tYWluL2RvY3MvQVBJLmdvLm1kKS58JyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kYCxcbiAgICAgICAgICAgICAgLy8gSnVzdCBzdHJhaWdodCB1cCBkZWxldGUgdGhlc2UgZnVsbCBsaW5lcyBhbmQgZXZlcnl0aGluZyBpbiBiZXR3ZWVuIHRoZW06XG4gICAgICAgICAgICAgIFwic2VkIC1pIC1lICcvIyMjIFByb3ZpZGVyIFZlcnNpb24vLC9UaGUgcHJvdmlkZXIgdmVyc2lvbiBjYW4gYmUgYWRqdXN0ZWQvIWInIC1lICdkJyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kXCIsXG4gICAgICAgICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvcHkgdGhlIFJFQURNRSBmaWxlIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgICBydW46IFwiY3AgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZCAucmVwby9kaXN0L2dvL1JFQURNRS5tZFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb2xsZWN0IGdvIEFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwibXYgLnJlcG8vZGlzdCBkaXN0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHdvcmtmbG93UnVuc09uID0gb3B0aW9ucy51c2VDdXN0b21HaXRodWJSdW5uZXJcbiAgICAgID8gW1wiZGVwb3QtdWJ1bnR1LTI0LjA0LThcIl0gLy8gOCBjb3JlLCAzMiBHQlxuICAgICAgOiBbXCJ1YnVudHUtbGF0ZXN0XCJdOyAvLyA3IEdCXG5cbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgYXV0aG9yQWRkcmVzcyxcbiAgICAgIGF1dGhvck5hbWUsXG4gICAgICBtaW5Ob2RlVmVyc2lvbixcbiAgICAgIHdvcmtmbG93Q29udGFpbmVySW1hZ2UsXG4gICAgICB3b3JrZmxvd1J1bnNPbixcbiAgICAgIGxpY2Vuc2VkOiBmYWxzZSwgLy8gd2UgZG8gc3VwcGx5IG91ciBvd24gbGljZW5zZSBmaWxlIHdpdGggYSBjdXN0b20gaGVhZGVyXG4gICAgICByZWxlYXNlVG9OcG06IHRydWUsXG4gICAgICBucG1UcnVzdGVkUHVibGlzaGluZzogbnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz8gZmFsc2UsXG4gICAgICBuYW1lOiBwYWNrYWdlSW5mby5ucG0ubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUHJlYnVpbHQgJHtwcm92aWRlck5hbWV9IFByb3ZpZGVyIGZvciBDREsgVGVycmFpbiAoY2RrdG4pYCxcbiAgICAgIGtleXdvcmRzOiBbXG4gICAgICAgIFwiY2RrdG5cIixcbiAgICAgICAgXCJjZGstdGVycmFpblwiLFxuICAgICAgICBcImNka3RmXCIsXG4gICAgICAgIFwidGVycmFmb3JtXCIsXG4gICAgICAgIFwib3BlbnRvZnVcIixcbiAgICAgICAgXCJjZGtcIixcbiAgICAgICAgXCJwcm92aWRlclwiLFxuICAgICAgICBwcm92aWRlck5hbWUsXG4gICAgICBdLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICBqZXN0OiBmYWxzZSxcbiAgICAgIGF1dGhvck9yZ2FuaXphdGlvbjogdHJ1ZSxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBcIm1haW5cIixcbiAgICAgIHJlcG9zaXRvcnk6IGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvc2l0b3J5fS5naXRgLFxuICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgZGVwc1VwZ3JhZGU6ICFpc0RlcHJlY2F0ZWQsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWxzOiBbXCJhdXRvbWVyZ2VcIiwgXCJhdXRvLWFwcHJvdmVcIiwgXCJkZXBlbmRlbmNpZXNcIl0sXG4gICAgICAgICAgc2NoZWR1bGU6IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5XRUVLTFksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHl0aG9uOiBwYWNrYWdlSW5mby5weXRob24sXG4gICAgICBwdWJsaXNoVG9OdWdldDogcGFja2FnZUluZm8ucHVibGlzaFRvTnVnZXQsXG4gICAgICAvLyBUT0RPOiBSZS1lbmFibGUgaWYgcmVxdWVzdGVkIGFuZCB3aGVuIGF2YWlsYWJsZVxuICAgICAgLy8gcHVibGlzaFRvTWF2ZW46IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb01hdmVuLFxuICAgICAgcHVibGlzaFRvR286IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvLFxuICAgICAgcmVsZWFzZUZhaWx1cmVJc3N1ZTogdHJ1ZSxcbiAgICAgIHBlZXJEZXBlbmRlbmN5T3B0aW9uczoge1xuICAgICAgICBwaW5uZWREZXZEZXBlbmRlbmN5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0dpdElkZW50aXR5OiB7XG4gICAgICAgIG5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBlbWFpbDogXCJnaXRodWItdGVhbS1jZGstdGVycmFpbkBjZGt0bi5pb1wiLFxuICAgICAgfSxcbiAgICAgIG1pbk1ham9yVmVyc2lvbjogTUlOX01BSk9SX1ZFUlNJT04sXG4gICAgICBzdGFsZTogdHJ1ZSxcbiAgICAgIHN0YWxlT3B0aW9uczoge1xuICAgICAgICBpc3N1ZXM6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiA0NSxcbiAgICAgICAgICBzdGFsZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjQ1IGRheXMgaGF2ZSBwYXNzZWQgc2luY2UgdGhpcyBpc3N1ZSB3YXMgb3BlbmVkLCBhbmQgSSBhc3N1bWUgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS4gXCIgK1xuICAgICAgICAgICAgXCJJZiBubyBvbmUgcmVtb3ZlcyB0aGUgYHN0YWxlYCBsYWJlbCBvciBjb21tZW50cywgSSdtIGdvaW5nIHRvIGF1dG8tY2xvc2UgdGhpcyBpc3N1ZSBpbiAxNCBkYXlzLlwiLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMTQsXG4gICAgICAgICAgY2xvc2VNZXNzYWdlOlxuICAgICAgICAgICAgXCIyIG1vbnRocyBoYXZlIHBhc3NlZCwgc28gSSdtIGNsb3NpbmcgdGhpcyBpc3N1ZSB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS5cIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVsbFJlcXVlc3Q6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiAxLFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTogYENsb3NpbmcgdGhpcyBQUiwgaWYgaXQgaGFzIG5vdCBtZXJnZWQgdGhlcmUgaXMgbW9zdCBsaWtlbHkgYSBDSSBvciBDREtUTiBpc3N1ZSBwcmV2ZW50aW5nIGl0IGZyb20gbWVyZ2luZy4gSWYgdGhpcyBoYXMgYmVlbiBhIG1hbnVhbCBQUiwgcGxlYXNlIHJlb3BlbiBpdCBhbmQgYWRkIHRoZSBcXGBuby1hdXRvLWNsb3NlXFxgIGxhYmVsIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZyBhZ2Fpbi5gLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMCxcbiAgICAgICAgICBleGVtcHRMYWJlbHM6IFtcIm5vLWF1dG8tY2xvc2VcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHVsbFJlcXVlc3RUZW1wbGF0ZTogZmFsc2UsXG4gICAgICBkb2NnZW46IGZhbHNlLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBcImRvdC1wcm9wQF41LjIuMFwiLFxuICAgICAgXCJAYWN0aW9ucy9jb3JlQF4xLjEuMFwiLFxuICAgICAgXCJAYWN0aW9uLXZhbGlkYXRvci9jb3JlXCIsXG4gICAgICBcIkBhY3Rpb24tdmFsaWRhdG9yL2NsaVwiXG4gICAgKTtcblxuICAgIC8vIERlZmF1bHQgbWVtb3J5IGlzIDdHQjogaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy1naXRodWItaG9zdGVkLXJ1bm5lcnMvYWJvdXQtZ2l0aHViLWhvc3RlZC1ydW5uZXJzI3N1cHBvcnRlZC1ydW5uZXJzLWFuZC1oYXJkd2FyZS1yZXNvdXJjZXNcbiAgICAvLyBDdXN0b20gUnVubmVycyB3ZSB1c2UgaGF2ZSAzMkdCIG9mIG1lbW9yeVxuICAgIC8vIFRoZSBiZWxvdyBudW1iZXJzIHNldCBoZWFwIGxpbWl0cyB0aGF0IGFyZSB+MWdiIGFuZCB+MC41Z2IgbGVzcywgcmVzcGVjdGl2ZWx5LCB0aGFuIHRoZSB0b3RhbCBhdmFpbGFibGUgbWVtb3J5XG4gICAgY29uc3QgbWF4T2xkU3BhY2VTaXplID0gb3B0aW9ucy51c2VDdXN0b21HaXRodWJSdW5uZXIgPyBcIjMxNzQ0XCIgOiBcIjY2NTZcIjtcblxuICAgIC8vIEdvbGFuZyBuZWVkcyBtb3JlIG1lbW9yeSB0byBidWlsZFxuICAgIHRoaXMudGFza3MuYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIk5PREVfT1BUSU9OU1wiLFxuICAgICAgYC0tbWF4LW9sZC1zcGFjZS1zaXplPSR7bWF4T2xkU3BhY2VTaXplfWBcbiAgICApO1xuXG4gICAgdGhpcy50YXNrcy5hZGRFbnZpcm9ubWVudChcIkNIRUNLUE9JTlRfRElTQUJMRVwiLCBcIjFcIik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLmFkZFRhc2soXCJ2YWxpZGF0ZS13b3JrZmxvd3NcIiwge1xuICAgICAgZXhlYzogYGZpbmQgLi8uZ2l0aHViL3dvcmtmbG93cyAtdHlwZSBmIC1uYW1lIFwiKi55bWxcIiAtcHJpbnQwIHwgeGFyZ3MgLTAgLW4gMSBucHggYWN0aW9uLXZhbGlkYXRvcmAsXG4gICAgfSk7XG4gICAgdmFsaWRhdGVUYXNrLmRlc2NyaXB0aW9uID1cbiAgICAgIFwiTGludCB0aGUgWUFNTCBmaWxlcyBnZW5lcmF0ZWQgYnkgUHJvamVuIHRvIGRlZmluZSBHaXRIdWIgQWN0aW9ucyBhbmQgV29ya2Zsb3dzLCBjaGVja2luZyB0aGVtIGFnYWluc3QgcHVibGlzaGVkIEpTT04gc2NoZW1hc1wiO1xuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKHZhbGlkYXRlVGFzayk7XG5cbiAgICB0aGlzLnBhY2thZ2UuYWRkUGFja2FnZVJlc29sdXRpb25zKFwiQHR5cGVzL3lhcmdzQDE3LjAuMTNcIik7XG5cbiAgICBjb25zdCBzZXRTYWZlRGlyZWN0b3J5ID0ge1xuICAgICAgbmFtZTogXCJTZXQgZ2l0IGNvbmZpZyBzYWZlLmRpcmVjdG9yeVwiLFxuICAgICAgcnVuOiBcImdpdCBjb25maWcgLS1nbG9iYWwgLS1hZGQgc2FmZS5kaXJlY3RvcnkgJChwd2QpXCIsXG4gICAgfTtcblxuICAgICgodGhpcy5idWlsZFdvcmtmbG93IGFzIGFueSkucHJlQnVpbGRTdGVwcyBhcyBKb2JTdGVwW10pLnB1c2goXG4gICAgICBzZXRTYWZlRGlyZWN0b3J5XG4gICAgKTtcbiAgICAodGhpcy5yZWxlYXNlIGFzIGFueSkuZGVmYXVsdEJyYW5jaC53b3JrZmxvdy5qb2JzLnJlbGVhc2Uuc3RlcHMuc3BsaWNlKFxuICAgICAgMSxcbiAgICAgIDAsXG4gICAgICBzZXRTYWZlRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIC8vIGFsd2F5cyBwdWJsaXNoIGEgbmV3IEdpdEh1YiByZWxlYXNlLCBldmVuIHdoZW4gcHVibGlzaGluZyB0byBhIHBhcnRpY3VsYXIgcGFja2FnZSBtYW5hZ2VyIGZhaWxzXG4gICAgY29uc3QgcmVsZWFzZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcbiAgICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS55bWxcIlxuICAgICk7XG4gICAgcmVsZWFzZVdvcmtmbG93Py5hZGRPdmVycmlkZShcImpvYnMucmVsZWFzZV9naXRodWIubmVlZHNcIiwgXCJyZWxlYXNlXCIpO1xuXG4gICAgLy8gVHJ1c3RlZCBwdWJsaXNoaW5nIHJlcXVpcmVzIG5wbSA+PTExLjUuMSB3aGljaCBzaGlwcyB3aXRoIE5vZGUgMjRcbiAgICBpZiAobnBtVHJ1c3RlZFB1Ymxpc2hpbmcpIHtcbiAgICAgIHRoaXMuZ2l0aHViXG4gICAgICAgID8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKVxuICAgICAgICA/LmZpbGU/LnBhdGNoKFxuICAgICAgICAgIEpzb25QYXRjaC5yZXBsYWNlKFxuICAgICAgICAgICAgXCIvam9icy9yZWxlYXNlX25wbS9zdGVwcy8wL3dpdGgvbm9kZS12ZXJzaW9uXCIsXG4gICAgICAgICAgICBcIjI0LnhcIlxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgd2UgZG9uJ3QgZmFpbCBpZiB0aGUgcmVsZWFzZSBmaWxlIGlzIG5vdCBwcmVzZW50XG4gICAgY29uc3QgY2hlY2tFeGlzdGluZ1RhZ1N0ZXAgPSAoXG4gICAgICB0aGlzLnJlbGVhc2UgYXMgYW55XG4gICAgKS5kZWZhdWx0QnJhbmNoLndvcmtmbG93LmpvYnMucmVsZWFzZS5zdGVwcy5maW5kKFxuICAgICAgKHM6IG9iamVjdCkgPT4gXCJpZFwiIGluIHMgJiYgcy5pZCA9PT0gXCJjaGVja190YWdfZXhpc3RzXCJcbiAgICApO1xuICAgIGNvbnN0IG9sZEV4aXN0aW5nVGFnUnVuOiBzdHJpbmcgPSBjaGVja0V4aXN0aW5nVGFnU3RlcC5ydW47XG4gICAgcHJldHR5QXNzZXJ0RXF1YWwoXG4gICAgICBvbGRFeGlzdGluZ1RhZ1J1bi5zcGxpdChcIlxcblwiKVswXSxcbiAgICAgIFwiVEFHPSQoY2F0IGRpc3QvcmVsZWFzZXRhZy50eHQpXCIsXG4gICAgICBcInJlbGVhc2Ugc3RlcCBjaGFuZ2VkLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICApO1xuICAgIGNoZWNrRXhpc3RpbmdUYWdTdGVwLnJ1biA9IGBpZiBbICEgLWYgZGlzdC9yZWxlYXNldGFnLnR4dCBdOyB0aGVuIChlY2hvIFwiZXhpc3RzPXRydWVcIiA+PiAkR0lUSFVCX09VVFBVVCkgJiYgZXhpdCAwOyBmaVxcbiR7b2xkRXhpc3RpbmdUYWdSdW59YDtcblxuICAgIGlmICghaXNEZXByZWNhdGVkKSB7XG4gICAgICBjb25zdCB7IHVwZ3JhZGUsIHByIH0gPSAodGhpcy51cGdyYWRlV29ya2Zsb3cgYXMgYW55KS53b3JrZmxvd3NbMF0uam9icztcbiAgICAgIHVwZ3JhZGUuc3RlcHMuc3BsaWNlKDEsIDAsIHNldFNhZmVEaXJlY3RvcnkpO1xuICAgICAgcHIuc3RlcHMuc3BsaWNlKDEsIDAsIHNldFNhZmVEaXJlY3RvcnkpO1xuICAgIH1cblxuICAgIC8vIHJlbGVhc2U6IEdvIOKAlCBwYXRjaCB0aGUgcmVsZWFzZSB3b3JrZmxvdydzIEdvIHB1Ymxpc2ggdG8gdXNlIGEgR2l0SHViXG4gICAgLy8gQXBwIGluc3RhbGxhdGlvbiB0b2tlbi4gVGhlIHNhbWUgcGF0Y2ggaXMgYXBwbGllZCB0byBmb3JjZS1yZWxlYXNlLnltbFxuICAgIC8vIGZ1cnRoZXIgYmVsb3cgKGFmdGVyIEZvcmNlUmVsZWFzZSBoYXMgY29uc3RydWN0ZWQgaXQpLCBzaW5jZVxuICAgIC8vIEZvcmNlUmVsZWFzZSByZW5kZXJzIHB1Ymxpc2ggam9icyBmcm9tIGEgZnJlc2ggc291cmNlIGFuZCBieXBhc3NlcyB0aGlzXG4gICAgLy8gcGF0Y2guXG4gICAgY29uc3QgcGF0Y2hHb1B1Ymxpc2hUb1VzZUFwcFRva2VuID0gKHdvcmtmbG93RmlsZT86IE9iamVjdEZpbGUpID0+IHtcbiAgICAgIGlmICghd29ya2Zsb3dGaWxlKSByZXR1cm47XG4gICAgICBjb25zdCBnb1B1Ymxpc2hUb2tlbiA9IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tQXBwKHtcbiAgICAgICAgYXBwSWRTZWNyZXQ6IFwiUFJPSkVOX0FQUF9JRFwiLFxuICAgICAgICBwcml2YXRlS2V5U2VjcmV0OiBcIlBST0pFTl9BUFBfUFJJVkFURV9LRVlcIixcbiAgICAgICAgb3duZXI6IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5X293bmVyIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcmllczogW1xuICAgICAgICAgIHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvPy5tb2R1bGVOYW1lPy5zcGxpdChcIi9cIikucG9wKCkgPz8gXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHsgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuQXBwUGVybWlzc2lvbi5XUklURSB9LFxuICAgICAgfSk7XG4gICAgICB3b3JrZmxvd0ZpbGUucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoXG4gICAgICAgICAgXCIvam9icy9yZWxlYXNlX2dvbGFuZy9zdGVwcy8xNlwiLFxuICAgICAgICAgIGdvUHVibGlzaFRva2VuLnNldHVwU3RlcHNbMF1cbiAgICAgICAgKSxcbiAgICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfZ29sYW5nL3N0ZXBzLzE3L2Vudi9HSVRIVUJfVE9LRU5cIixcbiAgICAgICAgICAvLyBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiB0b2tlbnMgKGdoc18qKSByZXF1aXJlIHRoZSBgeC1hY2Nlc3MtdG9rZW5gXG4gICAgICAgICAgLy8gdXNlcm5hbWUgd2hlbiB1c2VkIGluIEhUVFBTIGdpdCBVUkxzLiBwdWJsaWIgcmVuZGVycyB0aGlzIGVudiB2YXJcbiAgICAgICAgICAvLyB2ZXJiYXRpbSBpbnRvIGBodHRwczovLyR7R0lUSFVCX1RPS0VOfUBnaXRodWIuY29tLy4uLmAsIHNvIHdpdGhvdXRcbiAgICAgICAgICAvLyB0aGUgcHJlZml4IHRoZSBwdXNoIDQwMXMgYW5kIGZhbGxzIGJhY2sgdG8gYSBUVFkgcGFzc3dvcmQgcHJvbXB0LlxuICAgICAgICAgIGB4LWFjY2Vzcy10b2tlbjoke2dvUHVibGlzaFRva2VuLnRva2VuUmVmfWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIHBhdGNoR29QdWJsaXNoVG9Vc2VBcHBUb2tlbihyZWxlYXNlV29ya2Zsb3cpO1xuICAgIH1cblxuICAgIC8vIC8vIFRPRE86IFJlLWVuYWJsZSB3aGVuIE1hdmVuIHJlcXVlc3RlZCBhbmQgaW5mcmEgYXZhaWxhYmxlXG4gICAgLy8gLy8gRml4IG1hdmVuIGlzc3VlIChodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9wdWJsaWIvcHVsbC83NzcpXG4gICAgLy8gZ2l0aHViLkdpdEh1Yi5vZih0aGlzKT8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKT8uZmlsZT8ucGF0Y2goXG4gICAgLy8gICBKc29uUGF0Y2guYWRkKFxuICAgIC8vICAgICBcIi9qb2JzL3JlbGVhc2VfbWF2ZW4vc3RlcHMvMTAvZW52L01BVkVOX09QVFNcIixcbiAgICAvLyAgICAgLy8gU2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzcwMTUzOTYyL25leHVzLXN0YWdpbmctbWF2ZW4tcGx1Z2luLW1hdmVuLWRlcGxveS1mYWlsZWQtYW4tYXBpLWluY29tcGF0aWJpbGl0eS13YXMtZW5jb1xuICAgIC8vICAgICBcIi0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLnV0aWw9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEubGFuZy5yZWZsZWN0PUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLnRleHQ9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5kZXNrdG9wL2phdmEuYXd0LmZvbnQ9QUxMLVVOTkFNRURcIlxuICAgIC8vICAgKVxuICAgIC8vICk7XG5cbiAgICB0aGlzLnBpbkdpdGh1YkFjdGlvblZlcnNpb25zKGdpdGh1YkFjdGlvblBpbm5lZFZlcnNpb25zKTtcblxuICAgIG5ldyBDZGt0ZkNvbmZpZyh0aGlzLCB7XG4gICAgICB0ZXJyYWZvcm1Qcm92aWRlcixcbiAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIGZxcHJvdmlkZXJOYW1lLFxuICAgICAgcHJvdmlkZXJWZXJzaW9uLFxuICAgICAgY2RrdG5WZXJzaW9uLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb24sXG4gICAgICBqc2lpVmVyc2lvbixcbiAgICAgIHR5cGVzY3JpcHRWZXJzaW9uLFxuICAgICAgcGFja2FnZUluZm8sXG4gICAgICBnaXRodWJOYW1lc3BhY2UsXG4gICAgICBkZXByZWNhdGlvbkRhdGUsXG4gICAgICBpc0RlcHJlY2F0ZWQ6ICEhaXNEZXByZWNhdGVkLFxuICAgIH0pO1xuICAgIG5ldyBDdXN0b21pemVkTGljZW5zZSh0aGlzLCBvcHRpb25zLmNyZWF0aW9uWWVhciwgb3B0aW9ucy5saWNlbnNlZSk7XG4gICAgbmV3IEdpdGh1Yklzc3Vlcyh0aGlzLCB7IHByb3ZpZGVyTmFtZSB9KTtcbiAgICBuZXcgQXV0b0FwcHJvdmUodGhpcyk7XG4gICAgbmV3IEF1dG9DbG9zZUNvbW11bml0eUlzc3Vlcyh0aGlzLCB7IHByb3ZpZGVyTmFtZSB9KTtcbiAgICBuZXcgQXV0b21lcmdlKHRoaXMpO1xuICAgIG5ldyBMb2NrSXNzdWVzKHRoaXMpO1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIGNvbnN0IHVwZ3JhZGVTY3JpcHQgPSBuZXcgQ2hlY2tGb3JVcGdyYWRlc1NjcmlwdEZpbGUodGhpcywge1xuICAgICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICAgIGZxcHJvdmlkZXJOYW1lLFxuICAgICAgfSk7XG4gICAgICBuZXcgUHJvdmlkZXJVcGdyYWRlKHRoaXMsIHtcbiAgICAgICAgY2hlY2tGb3JVcGdyYWRlc1NjcmlwdFBhdGg6IHVwZ3JhZGVTY3JpcHQucGF0aCxcbiAgICAgICAgd29ya2Zsb3dSdW5zT24sXG4gICAgICAgIG5vZGVIZWFwU2l6ZTogbWF4T2xkU3BhY2VTaXplLFxuICAgICAgfSk7XG4gICAgICBuZXcgQWxlcnRPcGVuUHJzKHRoaXMsIHtcbiAgICAgICAgc2xhY2tXZWJob29rVXJsOiBcIiR7eyBzZWNyZXRzLkFMRVJUX1BSU19TTEFDS19XRUJIT09LX1VSTCB9fVwiLFxuICAgICAgICByZXBvc2l0b3J5LFxuICAgICAgfSk7XG4gICAgICBuZXcgRGVwZW5kYWJvdCh0aGlzKTtcbiAgICB9XG5cbiAgICBuZXcgVGV4dEZpbGUodGhpcywgXCIuZ2l0aHViL0NPREVPV05FUlNcIiwge1xuICAgICAgbGluZXM6IFtcbiAgICAgICAgXCIjIFRoZXNlIG93bmVycyB3aWxsIGJlIHRoZSBkZWZhdWx0IG93bmVycyBmb3IgZXZlcnl0aGluZyBpbiBcIixcbiAgICAgICAgXCIjIHRoZSByZXBvLiBVbmxlc3MgYSBsYXRlciBtYXRjaCB0YWtlcyBwcmVjZWRlbmNlLCBcIixcbiAgICAgICAgXCIjIHRoZXkgd2lsbCBiZSByZXF1ZXN0ZWQgZm9yIHJldmlldyB3aGVuIHNvbWVvbmUgb3BlbnMgYSBcIixcbiAgICAgICAgXCIjIHB1bGwgcmVxdWVzdC5cIixcbiAgICAgICAgXCIqICAgICAgIEBjZGt0bi1pby90ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIG5ldyBTaG91bGRSZWxlYXNlU2NyaXB0RmlsZSh0aGlzLCB7fSk7XG5cbiAgICAgIGNvbnN0IHJlbGVhc2VUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKFwicmVsZWFzZVwiKSE7XG4gICAgICB0aGlzLnJlbW92ZVRhc2soXCJyZWxlYXNlXCIpO1xuICAgICAgdGhpcy5hZGRUYXNrKFwicmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICAgIGNvbmRpdGlvbjogXCJub2RlIC4vc2NyaXB0cy9zaG91bGQtcmVsZWFzZS5qc1wiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZFRhc2soXCJ1bmNvbmRpdGlvbmFsLXJlbGVhc2VcIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogcmVsZWFzZVRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgIHN0ZXBzOiByZWxlYXNlVGFzay5zdGVwcyxcbiAgICAgICAgZW52OiAocmVsZWFzZVRhc2sgYXMgYW55KS5fZW52LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlbGVhc2VKb2JTdGVwczogYW55W10gPSAoXG4gICAgICAgIHRoaXMuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpIGFzIGFueVxuICAgICAgKS5qb2JzLnJlbGVhc2Uuc3RlcHM7XG4gICAgICBjb25zdCBnaXRSZW1vdGVKb2IgPSByZWxlYXNlSm9iU3RlcHMuZmluZCgoaXQpID0+IGl0LmlkID09PSBcImdpdF9yZW1vdGVcIik7XG4gICAgICBwcmV0dHlBc3NlcnRFcXVhbChcbiAgICAgICAgZ2l0UmVtb3RlSm9iLnJ1bixcbiAgICAgICAgJ2VjaG8gXCJsYXRlc3RfY29tbWl0PSQoZ2l0IGxzLXJlbW90ZSBvcmlnaW4gLWggJHt7IGdpdGh1Yi5yZWYgfX0gfCBjdXQgLWYxKVwiID4+ICRHSVRIVUJfT1VUUFVUXFxuY2F0ICRHSVRIVUJfT1VUUFVUJyxcbiAgICAgICAgXCJnaXRfcmVtb3RlIHN0ZXAgaW4gcmVsZWFzZSB3b3JrZmxvdyBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIHN0cmluZywgcGxlYXNlIGNoZWNrIGlmIHRoZSB3b3JrYXJvdW5kIHN0aWxsIHdvcmtzIVwiXG4gICAgICApO1xuICAgICAgY29uc3QgcHJldmlvdXNDb21tYW5kID0gZ2l0UmVtb3RlSm9iLnJ1bi5yZXBsYWNlKFwiXFxuXCIsIFwiICYmIFwiKTtcblxuICAgICAgY29uc3QgY2FuY2VsQ29tbWFuZCA9XG4gICAgICAgICdlY2hvIFwibGF0ZXN0X2NvbW1pdD1yZWxlYXNlX2NhbmNlbGxlZFwiID4+ICRHSVRIVUJfT1VUUFVUJzsgLy8gdGhpcyBjYW5jZWxzIHRoZSByZWxlYXNlIHZpYSBhIG5vbi1tYXRjaGluZyBTSEE7XG4gICAgICBnaXRSZW1vdGVKb2IucnVuID0gYG5vZGUgLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlLmpzICYmICgke3ByZXZpb3VzQ29tbWFuZH0pIHx8ICR7Y2FuY2VsQ29tbWFuZH1gO1xuICAgICAgZ2l0UmVtb3RlSm9iLm5hbWUgKz1cbiAgICAgICAgXCIgb3IgY2FuY2VsIHZpYSBmYWtpbmcgYSBTSEEgaWYgcmVsZWFzZSB3YXMgY2FuY2VsbGVkXCI7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhbGVXb3JrZmxvdyA9IHRoaXMudHJ5RmluZE9iamVjdEZpbGUoXCIuZ2l0aHViL3dvcmtmbG93cy9zdGFsZS55bWxcIik7XG4gICAgc3RhbGVXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJvbi5zY2hlZHVsZVwiLCBbXG4gICAgICB7XG4gICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7IHByb2plY3Q6IHRoaXMsIG1heEhvdXI6IDQsIGhvdXJPZmZzZXQ6IDEgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgY29uc3QgdXBncmFkZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcbiAgICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvdXBncmFkZS1tYWluLnltbFwiXG4gICAgKTtcbiAgICB1cGdyYWRlV29ya2Zsb3c/LmFkZE92ZXJyaWRlKFwib24uc2NoZWR1bGVcIiwgW1xuICAgICAge1xuICAgICAgICBjcm9uOiBnZW5lcmF0ZVJhbmRvbUNyb24oe1xuICAgICAgICAgIHByb2plY3Q6IHRoaXMsXG4gICAgICAgICAgbWF4SG91cjogMCxcbiAgICAgICAgICBob3VyT2Zmc2V0OiAxLFxuICAgICAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5XZWVrbHksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIC8vIFN1Ym1vZHVsZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb25cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKFwiQVBJLm1kXCIpOyAvLyBpZ25vcmUgdGhlIG9sZCBmaWxlLCB3ZSBub3cgZ2VuZXJhdGUgaXQgaW4gdGhlIGRvY3MgZm9sZGVyXG4gICAgdGhpcy5hZGREZXZEZXBzKFwianNpaS1kb2NnZW5AXjEwLjIuM1wiKTtcbiAgICBpZiAoanNpaVZlcnNpb24pIHtcbiAgICAgIC8vIE5PVEU6IHRoZSBiZWxvdyBpcyBtYWtpbmcgYSBicm9hZCBhc3N1bXB0aW9uIHRoYXQgeW91J3JlIHBhc3NpbmcgYSByYW5nZSBsaWtlIFwifjUuMy4wXCIgdG8ganNpaVZlcnNpb25cbiAgICAgIC8vIElmIHlvdSB1c2UgdGhhdCBmaWVsZCB0byBwYXNzIGEgdmVyeSBzcGVjaWZpYyB2ZXJzaW9uIChlLmcuIFwiNS4zLjExXCIpIHRoZW4gdGhpcyBtaWdodCBicmVha1xuICAgICAgdGhpcy5hZGREZXZEZXBzKGBqc2lpLXJvc2V0dGFAJHtqc2lpVmVyc2lvbn1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGREZXZEZXBzKGBqc2lpLXJvc2V0dGFgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb2NnZW4gPSB0aGlzLmFkZFRhc2soXCJkb2NnZW5cIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHByb2plY3RcIixcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiBbXG4gICAgICAgICAgICBcInJtIC1yZiBkb2NzXCIsXG4gICAgICAgICAgICBcInJtIC1mIEFQSS5tZFwiLFxuICAgICAgICAgICAgXCJta2RpciBkb2NzXCIsXG4gICAgICAgICAgICAvLyBUT0RPOiBSZS1lbmFibGUgamF2YSAvIGNzaGFycFxuICAgICAgICAgICAgLy8gXCJqc2lpLWRvY2dlbiAtLXNwbGl0LWJ5LXN1Ym1vZHVsZSAtbCB0eXBlc2NyaXB0IC1sIHB5dGhvbiAtbCBqYXZhIC1sIGNzaGFycCAtbCBnb1wiLFxuICAgICAgICAgICAgXCJqc2lpLWRvY2dlbiAtLXNwbGl0LWJ5LXN1Ym1vZHVsZSAtbCB0eXBlc2NyaXB0IC1sIHB5dGhvbiAtbCBnb1wiLFxuICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmljZSB3YXkgdG8gdGVsbCBqc2lpLWRvY2dlbiB0byBnZW5lcmF0ZSBkb2NzIGludG8gYSBmb2xkZXIgc28gSSB3ZW50IHRoaXMgcm91dGVcbiAgICAgICAgICAgIFwibXYgKi4qLm1kIGRvY3NcIixcbiAgICAgICAgICAgIC8vIFNvbWUgcGFydCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBhcmUgdG9vIGxvbmcsIHdlIG5lZWQgdG8gdHJ1bmNhdGUgdGhlbSB0byB+MTBNQlxuICAgICAgICAgICAgXCJjZCBkb2NzXCIsXG4gICAgICAgICAgICBcImxzIC4vIHwgeGFyZ3Mgc2VkIC1pICcxNTAwMDAsJCBkJyAkMVwiLFxuICAgICAgICAgIF0uam9pbihcIiAmJiBcIiksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKGRvY2dlbik7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgL2RvY3MvKi5tZGApO1xuICAgIHRoaXMuYW5ub3RhdGVHZW5lcmF0ZWQoYC9kb2NzLyoubWRgKTtcblxuICAgIC8vIFNldHRpbmcgdGhlIHZlcnNpb24gaW4gcGFja2FnZS5qc29uIHNvIHRoZSBnb2xhbmcgZG9jcyBoYXZlIHRoZSBjb3JyZWN0IHZlcnNpb25cbiAgICBjb25zdCB1bmNvbmRpdGlvbmFsQnVtcCA9IHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtYnVtcFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTZXQgdGhlIHZlcnNpb24gaW4gcGFja2FnZS5qc29uIHRvIHRoZSBjdXJyZW50IHZlcnNpb25cIixcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcIkNsZWFyIHRoZSBjaGFuZ2Vsb2cgc28gdGhhdCBpdCBkb2Vzbid0IGdldCBwdWJsaXNoZWQgdHdpY2VcIixcbiAgICAgICAgICBleGVjOiBcInJtIC1mICRDSEFOR0VMT0dcIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBidWlsdGluOiBcInJlbGVhc2UvYnVtcC12ZXJzaW9uXCIgfSxcbiAgICAgIF0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgT1VURklMRTogXCJwYWNrYWdlLmpzb25cIixcbiAgICAgICAgQ0hBTkdFTE9HOiBcImRpc3QvY2hhbmdlbG9nLm1kXCIsXG4gICAgICAgIEJVTVBGSUxFOiBcImRpc3QvdmVyc2lvbi50eHRcIixcbiAgICAgICAgUkVMRUFTRVRBRzogXCJkaXN0L3JlbGVhc2V0YWcudHh0XCIsXG4gICAgICAgIFJFTEVBU0VfVEFHX1BSRUZJWDogXCJcIixcbiAgICAgICAgTUlOX01BSk9SOiBTdHJpbmcoTUlOX01BSk9SX1ZFUlNJT04pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnByZUNvbXBpbGVUYXNrLnNwYXduKHVuY29uZGl0aW9uYWxCdW1wKTtcbiAgICAvLyBUbyBidW1wIGNvcnJlY3RseSB3ZSBuZWVkIHRvIGhhdmUgdGhlIGNvbXBsZXRlbHkgY2xvbmVkIHJlcG9cbiAgICAodGhpcy5idWlsZFdvcmtmbG93IGFzIGFueSkud29ya2Zsb3cuZmlsZS5hZGRPdmVycmlkZShcbiAgICAgIFwiam9icy5idWlsZC5zdGVwcy4wLndpdGguZmV0Y2gtZGVwdGhcIixcbiAgICAgIDBcbiAgICApO1xuICAgIC8vIFVuZG8gdGhlIGNoYW5nZXMgYWZ0ZXIgY29tcGlsYXRpb25cbiAgICB0aGlzLmJ1aWxkV29ya2Zsb3c/LmFkZFBvc3RCdWlsZFN0ZXBzKHtcbiAgICAgIG5hbWU6IFwiUmV2ZXJ0IHBhY2thZ2UuanNvbiB2ZXJzaW9uIGJ1bXBcIixcbiAgICAgIHJ1bjogXCJnaXQgY2hlY2tvdXQgcGFja2FnZS5qc29uXCIsXG4gICAgfSk7XG5cbiAgICBuZXcgQ29weXJpZ2h0SGVhZGVycyh0aGlzKTtcbiAgICBuZXcgRGVwcmVjYXRlUGFja2FnZXModGhpcywge1xuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgcGFja2FnZUluZm8sXG4gICAgICBpc0RlcHJlY2F0ZWQ6ICEhaXNEZXByZWNhdGVkLFxuICAgIH0pO1xuICAgIGlmICghaXNEZXByZWNhdGVkKSB7XG4gICAgICBuZXcgRm9yY2VSZWxlYXNlKHRoaXMsIHsgd29ya2Zsb3dSdW5zT24gfSk7XG4gICAgICBwYXRjaEdvUHVibGlzaFRvVXNlQXBwVG9rZW4oXG4gICAgICAgIHRoaXMudHJ5RmluZE9iamVjdEZpbGUoXCIuZ2l0aHViL3dvcmtmbG93cy9mb3JjZS1yZWxlYXNlLnltbFwiKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBpbkdpdGh1YkFjdGlvblZlcnNpb25zKHBpbm5lZFZlcnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgLy8gVXNlIHBpbm5lZCB2ZXJzaW9ucyBvZiBnaXRodWIgYWN0aW9uc1xuICAgIE9iamVjdC5lbnRyaWVzKHBpbm5lZFZlcnNpb25zKS5mb3JFYWNoKChbbmFtZSwgc2hhXSkgPT4ge1xuICAgICAgdGhpcy5naXRodWI/LmFjdGlvbnMuc2V0KG5hbWUsIGAke25hbWV9QCR7c2hhfWApO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByZXR0eUFzc2VydEVxdWFsPFQ+KHN1YmplY3Q6IFQsIGV4cGVjdGVkOiBULCBtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChzdWJqZWN0ICE9PSBleHBlY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke21lc3NhZ2UgPz8gXCJBc3NlcnRpb24gZmFpbGVkXCJ9OiBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBleHBlY3RlZFxuICAgICAgKX0gYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWBcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBMEQ7QUFDMUQsaUNBQWtDO0FBQ2xDLDZDQUF5QztBQUN6QyxtQ0FBc0U7QUFFdEUsc0RBQW9FO0FBQ3BFLHFEQUFnRDtBQUNoRCxpREFBNkM7QUFDN0MsK0VBQXlFO0FBQ3pFLDJDQUF3QztBQUN4QyxpREFBNkM7QUFDN0MsMkRBQXVEO0FBQ3ZELDZEQUF5RDtBQUN6RCw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBQ3pELG1EQUErQztBQUMvQyxtREFBK0M7QUFDL0MsK0NBQTJDO0FBRTNDLHlEQUFxRDtBQUNyRCxxRUFBMEU7QUFDMUUsNkRBQW1FO0FBQ25FLG9EQUFrRTtBQUVsRSxtSEFBbUg7QUFDbkgsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFzRDVCLE1BQU0sWUFBWSxHQUFHLENBQUMsWUFBb0IsRUFBVSxFQUFFO0lBQ3BELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QyxDQUFDLENBQUMsR0FBRyxZQUFZLFdBQVc7UUFDNUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsa0JBQWtCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUN6RSwyQkFBMkIsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ2xGLHVCQUF1QixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDOUUsc0JBQXNCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM3RSxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLG9CQUFvQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDM0Usb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FB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QUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLDJCQUEyQixDQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMscUNBQXFDLENBQUMsQ0FDOUQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsY0FBc0M7UUFDcEUsd0NBQXdDO1FBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTVoQkgsb0RBNmhCQzs7O0FBRUQsU0FBUyxpQkFBaUIsQ0FBSSxPQUFVLEVBQUUsUUFBVyxFQUFFLE9BQWdCO0lBQ3JFLElBQUksT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxPQUFPLElBQUksa0JBQWtCLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FDMUQsUUFBUSxDQUNULFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUN2QyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5pbXBvcnQgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbmltcG9ydCB7IHBhc2NhbENhc2UgfSBmcm9tIFwiY2hhbmdlLWNhc2VcIjtcbmltcG9ydCB7IE9iamVjdEZpbGUsIFRleHRGaWxlLCBjZGssIGdpdGh1YiwgSnNvblBhdGNoIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgSm9iU3RlcCB9IGZyb20gXCJwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IEFsZXJ0T3BlblBycyB9IGZyb20gXCIuL2FsZXJ0LW9wZW4tcHJzXCI7XG5pbXBvcnQgeyBBdXRvQXBwcm92ZSB9IGZyb20gXCIuL2F1dG8tYXBwcm92ZVwiO1xuaW1wb3J0IHsgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzIH0gZnJvbSBcIi4vYXV0by1jbG9zZS1jb21tdW5pdHktaXNzdWVzXCI7XG5pbXBvcnQgeyBBdXRvbWVyZ2UgfSBmcm9tIFwiLi9hdXRvbWVyZ2VcIjtcbmltcG9ydCB7IENka3RmQ29uZmlnIH0gZnJvbSBcIi4vY2RrdGYtY29uZmlnXCI7XG5pbXBvcnQgeyBDb3B5cmlnaHRIZWFkZXJzIH0gZnJvbSBcIi4vY29weXJpZ2h0LWhlYWRlcnNcIjtcbmltcG9ydCB7IEN1c3RvbWl6ZWRMaWNlbnNlIH0gZnJvbSBcIi4vY3VzdG9taXplZC1saWNlbnNlXCI7XG5pbXBvcnQgeyBEZXBlbmRhYm90IH0gZnJvbSBcIi4vZGVwZW5kYWJvdFwiO1xuaW1wb3J0IHsgRGVwcmVjYXRlUGFja2FnZXMgfSBmcm9tIFwiLi9kZXByZWNhdGUtcGFja2FnZXNcIjtcbmltcG9ydCB7IEZvcmNlUmVsZWFzZSB9IGZyb20gXCIuL2ZvcmNlLXJlbGVhc2VcIjtcbmltcG9ydCB7IEdpdGh1Yklzc3VlcyB9IGZyb20gXCIuL2dpdGh1Yi1pc3N1ZXNcIjtcbmltcG9ydCB7IExvY2tJc3N1ZXMgfSBmcm9tIFwiLi9sb2NrLWlzc3Vlc1wiO1xuaW1wb3J0IHsgUGFja2FnZUluZm8gfSBmcm9tIFwiLi9wYWNrYWdlLWluZm9cIjtcbmltcG9ydCB7IFByb3ZpZGVyVXBncmFkZSB9IGZyb20gXCIuL3Byb3ZpZGVyLXVwZ3JhZGVcIjtcbmltcG9ydCB7IENoZWNrRm9yVXBncmFkZXNTY3JpcHRGaWxlIH0gZnJvbSBcIi4vc2NyaXB0cy9jaGVjay1mb3ItdXBncmFkZXNcIjtcbmltcG9ydCB7IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlIH0gZnJvbSBcIi4vc2NyaXB0cy9zaG91bGQtcmVsZWFzZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5kb21Dcm9uLCBTY2hlZHVsZSB9IGZyb20gXCIuL3V0aWwvcmFuZG9tLWNyb25cIjtcblxuLy8gZW5zdXJlIG5ldyBwcm9qZWN0cyBzdGFydCB3aXRoIDEuMC4wIHNvIHRoYXQgZXZlcnkgZm9sbG93aW5nIGJyZWFraW5nIGNoYW5nZSBsZWFkcyB0byBhbiBpbmNyZWFzZWQgbWFqb3IgdmVyc2lvblxuY29uc3QgTUlOX01BSk9SX1ZFUlNJT04gPSAxO1xuXG5leHBvcnQgaW50ZXJmYWNlIENka3RuUHJvdmlkZXJQcm9qZWN0T3B0aW9ucyBleHRlbmRzIGNkay5Kc2lpUHJvamVjdE9wdGlvbnMge1xuICByZWFkb25seSB1c2VDdXN0b21HaXRodWJSdW5uZXI/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXJyYWZvcm1Qcm92aWRlcjogc3RyaW5nO1xuICByZWFkb25seSBjZGt0blZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgY2RrdG5WZXJzaW9uYCBpbnN0ZWFkLiBUaGlzIGFsaWFzIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrdGZWZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBjb25zdHJ1Y3RzVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBmb3JjZU1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0bi1pb1wiXG4gICAqIHByZXZpb3VzbHkgd2FzIFwiY2RrdGZcIi4gVXNlZCBmb3IgR2l0SHViIG9yZyBuYW1lIGFuZCBwYWNrYWdlIHNjb3BpbmdcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yk5hbWVzcGFjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiSW8uQ2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbnVnZXRPcmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuXCJcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuT3JnPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJpby4ke21hdmVuT3JnfVwiXG4gICAqL1xuICByZWFkb25seSBtYXZlbkdyb3VwSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgeWVhciBvZiB0aGUgY3JlYXRpb24gb2YgdGhlIHJlcG9zaXRvcnksIGZvciBjb3B5cmlnaHQgcHVycG9zZXMuXG4gICAqIFdpbGwgZmFsbCBiYWNrIHRvIHRoZSBjdXJyZW50IHllYXIgaWYgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0aW9uWWVhcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcHJlYnVpbHQgcHJvdmlkZXIgaXMgZGVwcmVjYXRlZC5cbiAgICogSWYgdHJ1ZSwgbm8gbmV3IHZlcnNpb25zIHdpbGwgYmUgcHVibGlzaGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNEZXByZWNhdGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGRhdGUgd2hlbiB0aGUgcHJvamVjdCBzaG91bGQgYmUgY29uc2lkZXJlZCBkZXByZWNhdGVkLCB0byBiZSB1c2VkIGluIHRoZSBSRUFETUUgdGV4dC5cbiAgICogSWYgbm8gZGF0ZSBpcyBwcm92aWRlZCwgdGhlbiB0aGUgZGF0ZSBvZiB0aGUgYnVpbGQgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBkZXByZWNhdGlvbkRhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcIkhhc2hpQ29ycCwgSW5jLlwiXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlZT86IHN0cmluZztcbn1cblxuY29uc3QgZ2V0TWF2ZW5OYW1lID0gKHByb3ZpZGVyTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIFtcIm51bGxcIiwgXCJyYW5kb21cIl0uaW5jbHVkZXMocHJvdmlkZXJOYW1lKVxuICAgID8gYCR7cHJvdmlkZXJOYW1lfV9wcm92aWRlcmBcbiAgICA6IHByb3ZpZGVyTmFtZS5yZXBsYWNlKC8tL2dpLCBcIl9cIik7XG59O1xuXG5jb25zdCBnaXRodWJBY3Rpb25QaW5uZWRWZXJzaW9ucyA9IHtcbiAgXCJhY3Rpb25zL2NoZWNrb3V0XCI6IFwiZGUwZmFjMmU0NTAwZGFiZTAwMDllNjcyMTRmZjVmNTQ0N2NlODNkZFwiLCAvLyB2Ni4wLjJcbiAgXCJhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0XCI6IFwiM2U1ZjQ1YjJjZmI5MTcyMDU0YjQwODdhNDBlOGUwYjVhNTQ2MWU3Y1wiLCAvLyB2OC4wLjFcbiAgXCJhY3Rpb25zL2dpdGh1Yi1zY3JpcHRcIjogXCJlZDU5NzQxMWQ4ZjkyNDA3M2Y5OGRmYzVjNjVhMjNhMjMyNWYzNGNkXCIsIC8vIHY4LjAuMFxuICBcImFjdGlvbnMvc2V0dXAtZG90bmV0XCI6IFwiYzJmYTA5ZjRiZGU1ZWJiOWQxNzc3Y2YyODI2MmEzZWIzZGIzY2VkN1wiLCAvLyB2NS4yLjBcbiAgXCJhY3Rpb25zL3NldHVwLWdvXCI6IFwiNGEzNjAxMTIxZGQwMWQxNjI2YTFlMjNlMzcyMTFlMzI1NGMxYzA2Y1wiLCAvLyB2Ni40LjBcbiAgXCJhY3Rpb25zL3NldHVwLWphdmFcIjogXCJiZTY2NmMyZmNkMjdlYzgwOTcwM2RlYzUwZTUwOGMyZmRjN2Y2NjU0XCIsIC8vIHY1LjIuMFxuICBcImFjdGlvbnMvc2V0dXAtbm9kZVwiOiBcIjQ4YjU1YTAxMWJkYTlmNWQ2YWViNGMyZDljNzM2MmU4ZGFlNDA0MWVcIiwgLy8gdjYuNC4wXG4gIFwiYWN0aW9ucy9zZXR1cC1weXRob25cIjogXCJhMzA5ZmY4YjQyNmI1OGVjMGUyYTQ1ZjBmODY5ZDQ2ODg5ZDAyNDA1XCIsIC8vIHY2LjIuMFxuICBcImFjdGlvbnMvc3RhbGVcIjogXCJiNWQ0MWQ0ZTFkNWRjZWVhMTBlNzEwNDc4NmI3MzYyNGMxOGExOTBmXCIsIC8vIHYxMC4yLjBcbiAgXCJhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdFwiOiBcIjA0M2ZiNDZkMWE5M2M3N2FhZTY1NmU3YzFjNjRhODc1ZDFmYzZhMGFcIiwgLy8gdjcuMC4xXG4gIFwiYW1hbm5uL2FjdGlvbi1zZW1hbnRpYy1wdWxsLXJlcXVlc3RcIjpcbiAgICBcIjQ4ZjI1NjI4NGJkNDZjZGFhYjEwNDhjMzcyMTM2MGU4MDgzMzVkNTBcIiwgLy8gdjYuMS4xXG4gIFwiZGVzc2FudC9sb2NrLXRocmVhZHNcIjogXCI3MjY2YTdjZTVjMWRmMDFiMWM2ZGI4NWJmOGNkODZjNzM3ZGFkYmU3XCIsIC8vIHY2LjAuMFxuICBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIjogXCIzMjYzOGRhMmQ0ZTgxZDU2YTA3NjRhYTE1NDc4ODJmYzRkMjA5NjM2XCIsIC8vIHYxLjEuM1xuICBcImhhc2hpY29ycC9zZXR1cC10ZXJyYWZvcm1cIjogXCI1ZThkYmYzYzZkOWRlYWY0MTkzY2E3YThmYjIzZjJhYzgzYmI2Yzg1XCIsIC8vIHY0LjAuMFxuICBcImltam9obmJvL2lzc3VlLWJvdFwiOiBcIjMxODhjNmNlMDYyNDkyMDY3MDlkM2IxZjI3NGQwZDRjNWE1MjE2MDFcIiwgLy8gdjMuNC41XG4gIFwicGV0ZXItZXZhbnMvY3JlYXRlLXB1bGwtcmVxdWVzdFwiOiBcIjVmNjk3OGZhZjA4OWQ0ZDIwYjAwYzc3NjY5ODlkMDc2YmIyZmM3ZjFcIiwgLy8gdjguMS4xXG4gIFwic2xhY2thcGkvc2xhY2stZ2l0aHViLWFjdGlvblwiOiBcIjQ1YTg4Yjk1ODFiZmFiMjU2NmRjODgxZTJjZDY2ZDMzNGU2MjFlMmNcIiwgLy8gdjMuMC4zXG4gIFwiYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlblwiOiBcIjI5ODI0ZTY5ZjU0NjEyMTMzZTc2ZjdlYWFjNzI2ZWVmNmM4NzViYWZcIiwgLy8gdjIuMi4xXG59O1xuXG5leHBvcnQgY2xhc3MgQ2RrdG5Qcm92aWRlclByb2plY3QgZXh0ZW5kcyBjZGsuSnNpaVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGt0blByb3ZpZGVyUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjZGt0blZlcnNpb24gPSBvcHRpb25zLmNka3RuVmVyc2lvbiA/PyBvcHRpb25zLmNka3RmVmVyc2lvbjtcbiAgICBhc3NlcnQoXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBcIkVpdGhlciBjZGt0blZlcnNpb24gb3IgY2RrdGZWZXJzaW9uIG11c3QgYmUgcHJvdmlkZWRcIlxuICAgICk7XG5cbiAgICBjb25zdCB7XG4gICAgICB0ZXJyYWZvcm1Qcm92aWRlcixcbiAgICAgIHdvcmtmbG93Q29udGFpbmVySW1hZ2UsXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAganNpaVZlcnNpb24sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbixcbiAgICAgIGlzRGVwcmVjYXRlZCxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIC8vIFRPRE86IENvbmZpcm0gZGVmYXVsdCBBdXRob3IgTmFtZVxuICAgICAgYXV0aG9yTmFtZSA9IFwiQ0RLIFRlcnJhaW4gTWFpbnRhaW5lcnNcIixcbiAgICAgIGF1dGhvckFkZHJlc3MgPSBcImh0dHBzOi8vY2RrdG4uaW9cIixcbiAgICAgIG5hbWVzcGFjZSA9IFwiY2RrdG5cIixcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSA9IFwiY2RrdG4taW9cIixcbiAgICAgIG51Z2V0T3JnID0gXCJJby5DZGt0blwiLFxuICAgICAgbWF2ZW5PcmcgPSBcImNka3RuXCIsXG4gICAgICBucG1UcnVzdGVkUHVibGlzaGluZyxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IFtmcXByb3ZpZGVyTmFtZSwgcHJvdmlkZXJWZXJzaW9uXSA9IHRlcnJhZm9ybVByb3ZpZGVyLnNwbGl0KFwiQFwiKTtcbiAgICBjb25zdCBwcm92aWRlck5hbWUgPSBmcXByb3ZpZGVyTmFtZS5zcGxpdChcIi9cIikucG9wKCk7XG4gICAgYXNzZXJ0KHByb3ZpZGVyTmFtZSwgYCR7dGVycmFmb3JtUHJvdmlkZXJ9IGRvZXNuJ3Qgc2VlbSB0byBiZSB2YWxpZGApO1xuICAgIGFzc2VydChcbiAgICAgICFwcm92aWRlck5hbWUuZW5kc1dpdGgoXCItZ29cIiksXG4gICAgICBcInByb3ZpZGVyTmFtZSBtYXkgbm90IGVuZCB3aXRoICctZ28nIGFzIHRoaXMgY2FuIGNvbmZsaWN0IHdpdGggcmVwb3MgZm9yIGdvIHBhY2thZ2VzXCJcbiAgICApO1xuXG4gICAgY29uc3QgbnVnZXROYW1lID0gYCR7bnVnZXRPcmd9LlByb3ZpZGVycy4ke3Bhc2NhbENhc2UocHJvdmlkZXJOYW1lKX1gO1xuICAgIGNvbnN0IG1hdmVuR3JvdXBJZCA9IG9wdGlvbnMubWF2ZW5Hcm91cElkID8/IGBpby4ke21hdmVuT3JnfWA7XG4gICAgY29uc3QgbWF2ZW5OYW1lID0gYCR7bWF2ZW5Hcm91cElkfS5wcm92aWRlcnMuJHtnZXRNYXZlbk5hbWUocHJvdmlkZXJOYW1lKX1gO1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBgJHtnaXRodWJOYW1lc3BhY2V9LyR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKFxuICAgICAgLy0vZyxcbiAgICAgIFwiXCJcbiAgICApfWA7XG4gICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IGBnaXRodWIuY29tLyR7cmVwb3NpdG9yeX1gO1xuXG4gICAgY29uc3QgcGFja2FnZUluZm86IFBhY2thZ2VJbmZvID0ge1xuICAgICAgbnBtOiB7XG4gICAgICAgIG5hbWU6IGBAJHtuYW1lc3BhY2V9L3Byb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWAsXG4gICAgICB9LFxuICAgICAgcHl0aG9uOiB7XG4gICAgICAgIC8vIGRpc3ROYW1lOiBgJHtnaXRodWJOYW1lc3BhY2V9LSR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKFxuICAgICAgICBkaXN0TmFtZTogYCR7bmFtZXNwYWNlfS1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKC8tL2dpLCBcIl9cIil9YCxcbiAgICAgICAgLy8gbW9kdWxlOiBgJHtnaXRodWJOYW1lc3BhY2V9XyR7bmFtZXNwYWNlfV9wcm92aWRlcl8ke3Byb3ZpZGVyTmFtZS5yZXBsYWNlKFxuICAgICAgICBtb2R1bGU6IGAke25hbWVzcGFjZX1fcHJvdmlkZXJfJHtwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpfWAsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvTnVnZXQ6IHtcbiAgICAgICAgZG90TmV0TmFtZXNwYWNlOiBudWdldE5hbWUsXG4gICAgICAgIHBhY2thZ2VJZDogbnVnZXROYW1lLFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb01hdmVuOiB7XG4gICAgICAgIGphdmFQYWNrYWdlOiBtYXZlbk5hbWUsXG4gICAgICAgIG1hdmVuR3JvdXBJZDogbWF2ZW5Hcm91cElkLFxuICAgICAgICBtYXZlbkFydGlmYWN0SWQ6IGAke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWV9YCxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9Hbzoge1xuICAgICAgICBtb2R1bGVOYW1lOiBgJHtyZXBvc2l0b3J5VXJsfS1nb2AsXG4gICAgICAgIGdpdFVzZXJFbWFpbDogXCJnaXRodWItdGVhbS1jZGstdGVycmFpbkBjZGt0bi5pb1wiLFxuICAgICAgICBnaXRVc2VyTmFtZTogXCJ0ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICAgIHBhY2thZ2VOYW1lOiBwcm92aWRlck5hbWUucmVwbGFjZSgvLS9nLCBcIlwiKSxcbiAgICAgICAgLy8gSW4gb3JkZXIgdG8gdXNlIHRoZSBjb3B5d3JpdGUgYWN0aW9uLCB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGZ1bGwgcHJlLXB1Ymxpc2ggc3RlcHMgd29ya2Zsb3cgdW5mb3J0dW5hdGVseVxuICAgICAgICAvLyBJZiBzb21lb25lIGtub3dzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIG11dGF0aW9uIHdpdGggbWluaW1hbCBjdXN0b20gY29kZSwgcGxlYXNlIGRvIHNvXG4gICAgICAgIHByZVB1Ymxpc2hTdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHVzZXM6IFwiYWN0aW9ucy9jaGVja291dFwiLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICBwYXRoOiBcIi5yZXBvXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJJbnN0YWxsIERlcGVuZGVuY2llc1wiLFxuICAgICAgICAgICAgcnVuOiBcImNkIC5yZXBvICYmIHlhcm4gaW5zdGFsbCAtLWNoZWNrLWZpbGVzIC0tZnJvemVuLWxvY2tmaWxlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkV4dHJhY3QgYnVpbGQgYXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJ0YXIgLS1zdHJpcC1jb21wb25lbnRzPTEgLXh6dmYgZGlzdC9qcy8qLnRneiAtQyAucmVwb1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJNb3ZlIGJ1aWxkIGFydGlmYWN0IG91dCBvZiB0aGUgd2F5XCIsXG4gICAgICAgICAgICBydW46IFwibXYgZGlzdCBkaXN0Lm9sZFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDcmVhdGUgZ28gYXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwbyAmJiBucHggcHJvamVuIHBhY2thZ2U6Z29cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiU2V0dXAgQ29weXdyaXRlIHRvb2xcIixcbiAgICAgICAgICAgIHVzZXM6IFwiaGFzaGljb3JwL3NldHVwLWNvcHl3cml0ZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb3B5IGNvcHl3cml0ZSBoY2wgZmlsZVwiLFxuICAgICAgICAgICAgcnVuOiBcImNwIC5yZXBvLy5jb3B5d3JpdGUuaGNsIC5yZXBvL2Rpc3QvZ28vLmNvcHl3cml0ZS5oY2xcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQWRkIGhlYWRlcnMgdXNpbmcgQ29weXdyaXRlIHRvb2xcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwby9kaXN0L2dvICYmIGNvcHl3cml0ZSBoZWFkZXJzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlJlbW92ZSBjb3B5d3JpdGUgaGNsIGZpbGVcIixcbiAgICAgICAgICAgIHJ1bjogXCJybSAtZiAucmVwby9kaXN0L2dvLy5jb3B5d3JpdGUuaGNsXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlJlbW92ZSBzb21lIHRleHQgZnJvbSB0aGUgUkVBRE1FIHRoYXQgZG9lc24ndCBhcHBseSB0byBHb1wiLFxuICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgIFwic2VkIC1pICdzLyMgQ0RLVE4gcHJlYnVpbHQgYmluZGluZ3MgZm9yLyMgQ0RLVE4gR28gYmluZGluZ3MgZm9yLycgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80OTUxMTk0OVxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgICAgICAgIGBzZWQgLWkgLWUgJy8jIyAke2lzRGVwcmVjYXRlZCA/IFwiRGVwcmVjYXRlZFwiIDogXCJBdmFpbGFibGVcIn0gUGFja2FnZXMvLC8jIyMgR28vIWInIC1lICcvIyMjIEdvLyFkO3A7IHMvIyMjIEdvLyMjIEdvIFBhY2thZ2UvJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZGAsXG4gICAgICAgICAgICAgIC8vIHNlZCAtZSBpcyBibGFjayBtYWdpYyBhbmQgZm9yIHdoYXRldmVyIHJlYXNvbiB0aGUgc3RyaW5nIHJlcGxhY2UgZG9lc24ndCB3b3JrIHNvIGxldCdzIHRyeSBpdCBhZ2FpbjpcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgICBgc2VkIC1pICdzLyMjIyBHby8jIyAke2lzRGVwcmVjYXRlZCA/IFwiRGVwcmVjYXRlZFwiIDogXCJHb1wifSBQYWNrYWdlLycgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZGAsXG4gICAgICAgICAgICAgIC8vIEp1c3Qgc3RyYWlnaHQgdXAgZGVsZXRlIHRoZXNlIGZ1bGwgbGluZXMgYW5kIGV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiB0aGVtOlxuICAgICAgICAgICAgICBcInNlZCAtaSAtZSAnL0FQSS50eXBlc2NyaXB0Lm1kLywvWW91IGNhbiBhbHNvIHZpc2l0IGEgaG9zdGVkIHZlcnNpb24vIWInIC1lICdkJyAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kXCIsXG4gICAgICAgICAgICAgIGBzZWQgLWkgJ3N8RmluZCBhdXRvLWdlbmVyYXRlZCBkb2NzIGZvciB0aGlzIHByb3ZpZGVyIGhlcmU6fEZpbmQgYXV0by1nZW5lcmF0ZWQgZG9jcyBmb3IgdGhpcyBwcm92aWRlciBbaGVyZV0oaHR0cHM6Ly8ke3JlcG9zaXRvcnlVcmx9L2Jsb2IvbWFpbi9kb2NzL0FQSS5nby5tZCkufCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZGAsXG4gICAgICAgICAgICAgIC8vIEp1c3Qgc3RyYWlnaHQgdXAgZGVsZXRlIHRoZXNlIGZ1bGwgbGluZXMgYW5kIGV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiB0aGVtOlxuICAgICAgICAgICAgICBcInNlZCAtaSAtZSAnLyMjIyBQcm92aWRlciBWZXJzaW9uLywvVGhlIHByb3ZpZGVyIHZlcnNpb24gY2FuIGJlIGFkanVzdGVkLyFiJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb3B5IHRoZSBSRUFETUUgZmlsZSB0byB0aGUgcGFyZW50IGRpcmVjdG9yeVwiLFxuICAgICAgICAgICAgcnVuOiBcImNwIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWQgLnJlcG8vZGlzdC9nby9SRUFETUUubWRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29sbGVjdCBnbyBBcnRpZmFjdFwiLFxuICAgICAgICAgICAgcnVuOiBcIm12IC5yZXBvL2Rpc3QgZGlzdFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB3b3JrZmxvd1J1bnNPbiA9IG9wdGlvbnMudXNlQ3VzdG9tR2l0aHViUnVubmVyXG4gICAgICA/IFtcImRlcG90LXVidW50dS0yNC4wNC04XCJdIC8vIDggY29yZSwgMzIgR0JcbiAgICAgIDogW1widWJ1bnR1LWxhdGVzdFwiXTsgLy8gNyBHQlxuXG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGF1dGhvckFkZHJlc3MsXG4gICAgICBhdXRob3JOYW1lLFxuICAgICAgbWluTm9kZVZlcnNpb24sXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgd29ya2Zsb3dSdW5zT24sXG4gICAgICBsaWNlbnNlZDogZmFsc2UsIC8vIHdlIGRvIHN1cHBseSBvdXIgb3duIGxpY2Vuc2UgZmlsZSB3aXRoIGEgY3VzdG9tIGhlYWRlclxuICAgICAgcmVsZWFzZVRvTnBtOiB0cnVlLFxuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IG5wbVRydXN0ZWRQdWJsaXNoaW5nID8/IGZhbHNlLFxuICAgICAgbmFtZTogcGFja2FnZUluZm8ubnBtLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYFByZWJ1aWx0ICR7cHJvdmlkZXJOYW1lfSBQcm92aWRlciBmb3IgQ0RLIFRlcnJhaW4gKGNka3RuKWAsXG4gICAgICBrZXl3b3JkczogW1xuICAgICAgICBcImNka3RuXCIsXG4gICAgICAgIFwiY2RrLXRlcnJhaW5cIixcbiAgICAgICAgXCJjZGt0ZlwiLFxuICAgICAgICBcInRlcnJhZm9ybVwiLFxuICAgICAgICBcIm9wZW50b2Z1XCIsXG4gICAgICAgIFwiY2RrXCIsXG4gICAgICAgIFwicHJvdmlkZXJcIixcbiAgICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgXSxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBhdXRob3JPcmdhbml6YXRpb246IHRydWUsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG4gICAgICByZXBvc2l0b3J5OiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cmVwb3NpdG9yeX0uZ2l0YCxcbiAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgZXNsaW50OiBmYWxzZSxcbiAgICAgIGRlcHNVcGdyYWRlOiAhaXNEZXByZWNhdGVkLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsczogW1wiYXV0b21lcmdlXCIsIFwiYXV0by1hcHByb3ZlXCIsIFwiZGVwZW5kZW5jaWVzXCJdLFxuICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuV0VFS0xZLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHB5dGhvbjogcGFja2FnZUluZm8ucHl0aG9uLFxuICAgICAgcHVibGlzaFRvTnVnZXQ6IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb051Z2V0LFxuICAgICAgcHVibGlzaFRvTWF2ZW46IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb01hdmVuLFxuICAgICAgcHVibGlzaFRvR286IHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvLFxuICAgICAgcmVsZWFzZUZhaWx1cmVJc3N1ZTogdHJ1ZSxcbiAgICAgIHBlZXJEZXBlbmRlbmN5T3B0aW9uczoge1xuICAgICAgICBwaW5uZWREZXZEZXBlbmRlbmN5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0dpdElkZW50aXR5OiB7XG4gICAgICAgIG5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBlbWFpbDogXCJnaXRodWItdGVhbS1jZGstdGVycmFpbkBjZGt0bi5pb1wiLFxuICAgICAgfSxcbiAgICAgIG1pbk1ham9yVmVyc2lvbjogTUlOX01BSk9SX1ZFUlNJT04sXG4gICAgICBzdGFsZTogdHJ1ZSxcbiAgICAgIHN0YWxlT3B0aW9uczoge1xuICAgICAgICBpc3N1ZXM6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiA0NSxcbiAgICAgICAgICBzdGFsZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjQ1IGRheXMgaGF2ZSBwYXNzZWQgc2luY2UgdGhpcyBpc3N1ZSB3YXMgb3BlbmVkLCBhbmQgSSBhc3N1bWUgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS4gXCIgK1xuICAgICAgICAgICAgXCJJZiBubyBvbmUgcmVtb3ZlcyB0aGUgYHN0YWxlYCBsYWJlbCBvciBjb21tZW50cywgSSdtIGdvaW5nIHRvIGF1dG8tY2xvc2UgdGhpcyBpc3N1ZSBpbiAxNCBkYXlzLlwiLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMTQsXG4gICAgICAgICAgY2xvc2VNZXNzYWdlOlxuICAgICAgICAgICAgXCIyIG1vbnRocyBoYXZlIHBhc3NlZCwgc28gSSdtIGNsb3NpbmcgdGhpcyBpc3N1ZSB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgb3RoZXIgcHVibGlzaGVzIGhhdmUgc3VjY2VlZGVkIGluIHRoZSBtZWFudGltZS5cIixcbiAgICAgICAgfSxcbiAgICAgICAgcHVsbFJlcXVlc3Q6IHtcbiAgICAgICAgICBzdGFsZUxhYmVsOiBcInN0YWxlXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZVN0YWxlOiAxLFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTogYENsb3NpbmcgdGhpcyBQUiwgaWYgaXQgaGFzIG5vdCBtZXJnZWQgdGhlcmUgaXMgbW9zdCBsaWtlbHkgYSBDSSBvciBDREtUTiBpc3N1ZSBwcmV2ZW50aW5nIGl0IGZyb20gbWVyZ2luZy4gSWYgdGhpcyBoYXMgYmVlbiBhIG1hbnVhbCBQUiwgcGxlYXNlIHJlb3BlbiBpdCBhbmQgYWRkIHRoZSBcXGBuby1hdXRvLWNsb3NlXFxgIGxhYmVsIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZyBhZ2Fpbi5gLFxuICAgICAgICAgIGRheXNCZWZvcmVDbG9zZTogMCxcbiAgICAgICAgICBleGVtcHRMYWJlbHM6IFtcIm5vLWF1dG8tY2xvc2VcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHVsbFJlcXVlc3RUZW1wbGF0ZTogZmFsc2UsXG4gICAgICBkb2NnZW46IGZhbHNlLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBcImRvdC1wcm9wQF41LjIuMFwiLFxuICAgICAgXCJAYWN0aW9ucy9jb3JlQF4xLjEuMFwiLFxuICAgICAgXCJAYWN0aW9uLXZhbGlkYXRvci9jb3JlXCIsXG4gICAgICBcIkBhY3Rpb24tdmFsaWRhdG9yL2NsaVwiXG4gICAgKTtcblxuICAgIC8vIERlZmF1bHQgbWVtb3J5IGlzIDdHQjogaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy1naXRodWItaG9zdGVkLXJ1bm5lcnMvYWJvdXQtZ2l0aHViLWhvc3RlZC1ydW5uZXJzI3N1cHBvcnRlZC1ydW5uZXJzLWFuZC1oYXJkd2FyZS1yZXNvdXJjZXNcbiAgICAvLyBDdXN0b20gUnVubmVycyB3ZSB1c2UgaGF2ZSAzMkdCIG9mIG1lbW9yeVxuICAgIC8vIFRoZSBiZWxvdyBudW1iZXJzIHNldCBoZWFwIGxpbWl0cyB0aGF0IGFyZSB+MWdiIGFuZCB+MC41Z2IgbGVzcywgcmVzcGVjdGl2ZWx5LCB0aGFuIHRoZSB0b3RhbCBhdmFpbGFibGUgbWVtb3J5XG4gICAgY29uc3QgbWF4T2xkU3BhY2VTaXplID0gb3B0aW9ucy51c2VDdXN0b21HaXRodWJSdW5uZXIgPyBcIjMxNzQ0XCIgOiBcIjY2NTZcIjtcblxuICAgIC8vIEdvbGFuZyBuZWVkcyBtb3JlIG1lbW9yeSB0byBidWlsZFxuICAgIHRoaXMudGFza3MuYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIk5PREVfT1BUSU9OU1wiLFxuICAgICAgYC0tbWF4LW9sZC1zcGFjZS1zaXplPSR7bWF4T2xkU3BhY2VTaXplfWBcbiAgICApO1xuXG4gICAgdGhpcy50YXNrcy5hZGRFbnZpcm9ubWVudChcIkNIRUNLUE9JTlRfRElTQUJMRVwiLCBcIjFcIik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLmFkZFRhc2soXCJ2YWxpZGF0ZS13b3JrZmxvd3NcIiwge1xuICAgICAgZXhlYzogYGZpbmQgLi8uZ2l0aHViL3dvcmtmbG93cyAtdHlwZSBmIC1uYW1lIFwiKi55bWxcIiAtcHJpbnQwIHwgeGFyZ3MgLTAgLW4gMSBucHggYWN0aW9uLXZhbGlkYXRvcmAsXG4gICAgfSk7XG4gICAgdmFsaWRhdGVUYXNrLmRlc2NyaXB0aW9uID1cbiAgICAgIFwiTGludCB0aGUgWUFNTCBmaWxlcyBnZW5lcmF0ZWQgYnkgUHJvamVuIHRvIGRlZmluZSBHaXRIdWIgQWN0aW9ucyBhbmQgV29ya2Zsb3dzLCBjaGVja2luZyB0aGVtIGFnYWluc3QgcHVibGlzaGVkIEpTT04gc2NoZW1hc1wiO1xuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKHZhbGlkYXRlVGFzayk7XG5cbiAgICB0aGlzLnBhY2thZ2UuYWRkUGFja2FnZVJlc29sdXRpb25zKFwiQHR5cGVzL3lhcmdzQDE3LjAuMTNcIik7XG5cbiAgICBjb25zdCBzZXRTYWZlRGlyZWN0b3J5ID0ge1xuICAgICAgbmFtZTogXCJTZXQgZ2l0IGNvbmZpZyBzYWZlLmRpcmVjdG9yeVwiLFxuICAgICAgcnVuOiBcImdpdCBjb25maWcgLS1nbG9iYWwgLS1hZGQgc2FmZS5kaXJlY3RvcnkgJChwd2QpXCIsXG4gICAgfTtcblxuICAgICgodGhpcy5idWlsZFdvcmtmbG93IGFzIGFueSkucHJlQnVpbGRTdGVwcyBhcyBKb2JTdGVwW10pLnB1c2goXG4gICAgICBzZXRTYWZlRGlyZWN0b3J5XG4gICAgKTtcbiAgICAodGhpcy5yZWxlYXNlIGFzIGFueSkuZGVmYXVsdEJyYW5jaC53b3JrZmxvdy5qb2JzLnJlbGVhc2Uuc3RlcHMuc3BsaWNlKFxuICAgICAgMSxcbiAgICAgIDAsXG4gICAgICBzZXRTYWZlRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIC8vIGFsd2F5cyBwdWJsaXNoIGEgbmV3IEdpdEh1YiByZWxlYXNlLCBldmVuIHdoZW4gcHVibGlzaGluZyB0byBhIHBhcnRpY3VsYXIgcGFja2FnZSBtYW5hZ2VyIGZhaWxzXG4gICAgY29uc3QgcmVsZWFzZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcbiAgICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS55bWxcIlxuICAgICk7XG4gICAgcmVsZWFzZVdvcmtmbG93Py5hZGRPdmVycmlkZShcImpvYnMucmVsZWFzZV9naXRodWIubmVlZHNcIiwgXCJyZWxlYXNlXCIpO1xuXG4gICAgLy8gVHJ1c3RlZCBwdWJsaXNoaW5nIHJlcXVpcmVzIG5wbSA+PTExLjUuMSB3aGljaCBzaGlwcyB3aXRoIE5vZGUgMjRcbiAgICBpZiAobnBtVHJ1c3RlZFB1Ymxpc2hpbmcpIHtcbiAgICAgIHRoaXMuZ2l0aHViXG4gICAgICAgID8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKVxuICAgICAgICA/LmZpbGU/LnBhdGNoKFxuICAgICAgICAgIEpzb25QYXRjaC5yZXBsYWNlKFxuICAgICAgICAgICAgXCIvam9icy9yZWxlYXNlX25wbS9zdGVwcy8wL3dpdGgvbm9kZS12ZXJzaW9uXCIsXG4gICAgICAgICAgICBcIjI0LnhcIlxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgd2UgZG9uJ3QgZmFpbCBpZiB0aGUgcmVsZWFzZSBmaWxlIGlzIG5vdCBwcmVzZW50XG4gICAgY29uc3QgY2hlY2tFeGlzdGluZ1RhZ1N0ZXAgPSAoXG4gICAgICB0aGlzLnJlbGVhc2UgYXMgYW55XG4gICAgKS5kZWZhdWx0QnJhbmNoLndvcmtmbG93LmpvYnMucmVsZWFzZS5zdGVwcy5maW5kKFxuICAgICAgKHM6IG9iamVjdCkgPT4gXCJpZFwiIGluIHMgJiYgcy5pZCA9PT0gXCJjaGVja190YWdfZXhpc3RzXCJcbiAgICApO1xuICAgIGNvbnN0IG9sZEV4aXN0aW5nVGFnUnVuOiBzdHJpbmcgPSBjaGVja0V4aXN0aW5nVGFnU3RlcC5ydW47XG4gICAgcHJldHR5QXNzZXJ0RXF1YWwoXG4gICAgICBvbGRFeGlzdGluZ1RhZ1J1bi5zcGxpdChcIlxcblwiKVswXSxcbiAgICAgIFwiVEFHPSQoY2F0IGRpc3QvcmVsZWFzZXRhZy50eHQpXCIsXG4gICAgICBcInJlbGVhc2Ugc3RlcCBjaGFuZ2VkLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICApO1xuICAgIGNoZWNrRXhpc3RpbmdUYWdTdGVwLnJ1biA9IGBpZiBbICEgLWYgZGlzdC9yZWxlYXNldGFnLnR4dCBdOyB0aGVuIChlY2hvIFwiZXhpc3RzPXRydWVcIiA+PiAkR0lUSFVCX09VVFBVVCkgJiYgZXhpdCAwOyBmaVxcbiR7b2xkRXhpc3RpbmdUYWdSdW59YDtcblxuICAgIGlmICghaXNEZXByZWNhdGVkKSB7XG4gICAgICBjb25zdCB7IHVwZ3JhZGUsIHByIH0gPSAodGhpcy51cGdyYWRlV29ya2Zsb3cgYXMgYW55KS53b3JrZmxvd3NbMF0uam9icztcbiAgICAgIHVwZ3JhZGUuc3RlcHMuc3BsaWNlKDEsIDAsIHNldFNhZmVEaXJlY3RvcnkpO1xuICAgICAgcHIuc3RlcHMuc3BsaWNlKDEsIDAsIHNldFNhZmVEaXJlY3RvcnkpO1xuICAgIH1cblxuICAgIC8vIHJlbGVhc2U6IEdvIOKAlCBwYXRjaCB0aGUgcmVsZWFzZSB3b3JrZmxvdydzIEdvIHB1Ymxpc2ggdG8gdXNlIGEgR2l0SHViXG4gICAgLy8gQXBwIGluc3RhbGxhdGlvbiB0b2tlbi4gVGhlIHNhbWUgcGF0Y2ggaXMgYXBwbGllZCB0byBmb3JjZS1yZWxlYXNlLnltbFxuICAgIC8vIGZ1cnRoZXIgYmVsb3cgKGFmdGVyIEZvcmNlUmVsZWFzZSBoYXMgY29uc3RydWN0ZWQgaXQpLCBzaW5jZVxuICAgIC8vIEZvcmNlUmVsZWFzZSByZW5kZXJzIHB1Ymxpc2ggam9icyBmcm9tIGEgZnJlc2ggc291cmNlIGFuZCBieXBhc3NlcyB0aGlzXG4gICAgLy8gcGF0Y2guXG4gICAgY29uc3QgcGF0Y2hHb1B1Ymxpc2hUb1VzZUFwcFRva2VuID0gKHdvcmtmbG93RmlsZT86IE9iamVjdEZpbGUpID0+IHtcbiAgICAgIGlmICghd29ya2Zsb3dGaWxlKSByZXR1cm47XG4gICAgICBjb25zdCBnb1B1Ymxpc2hUb2tlbiA9IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tQXBwKHtcbiAgICAgICAgYXBwSWRTZWNyZXQ6IFwiUFJPSkVOX0FQUF9JRFwiLFxuICAgICAgICBwcml2YXRlS2V5U2VjcmV0OiBcIlBST0pFTl9BUFBfUFJJVkFURV9LRVlcIixcbiAgICAgICAgb3duZXI6IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5X293bmVyIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcmllczogW1xuICAgICAgICAgIHBhY2thZ2VJbmZvLnB1Ymxpc2hUb0dvPy5tb2R1bGVOYW1lPy5zcGxpdChcIi9cIikucG9wKCkgPz8gXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHsgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuQXBwUGVybWlzc2lvbi5XUklURSB9LFxuICAgICAgfSk7XG4gICAgICB3b3JrZmxvd0ZpbGUucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoXG4gICAgICAgICAgXCIvam9icy9yZWxlYXNlX2dvbGFuZy9zdGVwcy8xNlwiLFxuICAgICAgICAgIGdvUHVibGlzaFRva2VuLnNldHVwU3RlcHNbMF1cbiAgICAgICAgKSxcbiAgICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfZ29sYW5nL3N0ZXBzLzE3L2Vudi9HSVRIVUJfVE9LRU5cIixcbiAgICAgICAgICAvLyBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiB0b2tlbnMgKGdoc18qKSByZXF1aXJlIHRoZSBgeC1hY2Nlc3MtdG9rZW5gXG4gICAgICAgICAgLy8gdXNlcm5hbWUgd2hlbiB1c2VkIGluIEhUVFBTIGdpdCBVUkxzLiBwdWJsaWIgcmVuZGVycyB0aGlzIGVudiB2YXJcbiAgICAgICAgICAvLyB2ZXJiYXRpbSBpbnRvIGBodHRwczovLyR7R0lUSFVCX1RPS0VOfUBnaXRodWIuY29tLy4uLmAsIHNvIHdpdGhvdXRcbiAgICAgICAgICAvLyB0aGUgcHJlZml4IHRoZSBwdXNoIDQwMXMgYW5kIGZhbGxzIGJhY2sgdG8gYSBUVFkgcGFzc3dvcmQgcHJvbXB0LlxuICAgICAgICAgIGB4LWFjY2Vzcy10b2tlbjoke2dvUHVibGlzaFRva2VuLnRva2VuUmVmfWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIHBhdGNoR29QdWJsaXNoVG9Vc2VBcHBUb2tlbihyZWxlYXNlV29ya2Zsb3cpO1xuICAgIH1cblxuICAgIC8vIEZpeCBtYXZlbiBpc3N1ZSAoaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvcHVibGliL3B1bGwvNzc3KVxuICAgIGdpdGh1Yi5HaXRIdWIub2YodGhpcyk/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIik/LmZpbGU/LnBhdGNoKFxuICAgICAgSnNvblBhdGNoLmFkZChcbiAgICAgICAgXCIvam9icy9yZWxlYXNlX21hdmVuL3N0ZXBzLzEwL2Vudi9NQVZFTl9PUFRTXCIsXG4gICAgICAgIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MDE1Mzk2Mi9uZXh1cy1zdGFnaW5nLW1hdmVuLXBsdWdpbi1tYXZlbi1kZXBsb3ktZmFpbGVkLWFuLWFwaS1pbmNvbXBhdGliaWxpdHktd2FzLWVuY29cbiAgICAgICAgXCItLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS51dGlsPUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuYmFzZS9qYXZhLmxhbmcucmVmbGVjdD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS50ZXh0PUFMTC1VTk5BTUVEIC0tYWRkLW9wZW5zPWphdmEuZGVza3RvcC9qYXZhLmF3dC5mb250PUFMTC1VTk5BTUVEXCJcbiAgICAgICksXG4gICAgICBKc29uUGF0Y2gucmVtb3ZlKFxuICAgICAgICAvLyBUaGlzIGlzIG5vIGxvbmdlciB1c2VkLlxuICAgICAgICBcIi9qb2JzL3JlbGVhc2VfbWF2ZW4vc3RlcHMvMTAvZW52L01BVkVOX1NUQUdJTkdfUFJPRklMRV9JRFwiXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMucGluR2l0aHViQWN0aW9uVmVyc2lvbnMoZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMpO1xuXG4gICAgbmV3IENka3RmQ29uZmlnKHRoaXMsIHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgbmV3IEN1c3RvbWl6ZWRMaWNlbnNlKHRoaXMsIG9wdGlvbnMuY3JlYXRpb25ZZWFyLCBvcHRpb25zLmxpY2Vuc2VlKTtcbiAgICBuZXcgR2l0aHViSXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvQXBwcm92ZSh0aGlzKTtcbiAgICBuZXcgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvbWVyZ2UodGhpcyk7XG4gICAgbmV3IExvY2tJc3N1ZXModGhpcyk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgdXBncmFkZVNjcmlwdCA9IG5ldyBDaGVja0ZvclVwZ3JhZGVzU2NyaXB0RmlsZSh0aGlzLCB7XG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbixcbiAgICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBQcm92aWRlclVwZ3JhZGUodGhpcywge1xuICAgICAgICBjaGVja0ZvclVwZ3JhZGVzU2NyaXB0UGF0aDogdXBncmFkZVNjcmlwdC5wYXRoLFxuICAgICAgICB3b3JrZmxvd1J1bnNPbixcbiAgICAgICAgbm9kZUhlYXBTaXplOiBtYXhPbGRTcGFjZVNpemUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBBbGVydE9wZW5QcnModGhpcywge1xuICAgICAgICBzbGFja1dlYmhvb2tVcmw6IFwiJHt7IHNlY3JldHMuQUxFUlRfUFJTX1NMQUNLX1dFQkhPT0tfVVJMIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcnksXG4gICAgICB9KTtcbiAgICAgIG5ldyBEZXBlbmRhYm90KHRoaXMpO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCBcIi5naXRodWIvQ09ERU9XTkVSU1wiLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICBcIiMgVGhlc2Ugb3duZXJzIHdpbGwgYmUgdGhlIGRlZmF1bHQgb3duZXJzIGZvciBldmVyeXRoaW5nIGluIFwiLFxuICAgICAgICBcIiMgdGhlIHJlcG8uIFVubGVzcyBhIGxhdGVyIG1hdGNoIHRha2VzIHByZWNlZGVuY2UsIFwiLFxuICAgICAgICBcIiMgdGhleSB3aWxsIGJlIHJlcXVlc3RlZCBmb3IgcmV2aWV3IHdoZW4gc29tZW9uZSBvcGVucyBhIFwiLFxuICAgICAgICBcIiMgcHVsbCByZXF1ZXN0LlwiLFxuICAgICAgICBcIiogICAgICAgQGNka3RuLWlvL3RlYW0tY2RrLXRlcnJhaW5cIixcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgbmV3IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlKHRoaXMsIHt9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoXCJyZWxlYXNlXCIpITtcbiAgICAgIHRoaXMucmVtb3ZlVGFzayhcInJlbGVhc2VcIik7XG4gICAgICB0aGlzLmFkZFRhc2soXCJyZWxlYXNlXCIsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHJlbGVhc2VUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICBzdGVwczogcmVsZWFzZVRhc2suc3RlcHMsXG4gICAgICAgIGVudjogKHJlbGVhc2VUYXNrIGFzIGFueSkuX2VudixcbiAgICAgICAgY29uZGl0aW9uOiBcIm5vZGUgLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlLmpzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtcmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZUpvYlN0ZXBzOiBhbnlbXSA9IChcbiAgICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIikgYXMgYW55XG4gICAgICApLmpvYnMucmVsZWFzZS5zdGVwcztcbiAgICAgIGNvbnN0IGdpdFJlbW90ZUpvYiA9IHJlbGVhc2VKb2JTdGVwcy5maW5kKChpdCkgPT4gaXQuaWQgPT09IFwiZ2l0X3JlbW90ZVwiKTtcbiAgICAgIHByZXR0eUFzc2VydEVxdWFsKFxuICAgICAgICBnaXRSZW1vdGVKb2IucnVuLFxuICAgICAgICAnZWNobyBcImxhdGVzdF9jb21taXQ9JChnaXQgbHMtcmVtb3RlIG9yaWdpbiAtaCAke3sgZ2l0aHViLnJlZiB9fSB8IGN1dCAtZjEpXCIgPj4gJEdJVEhVQl9PVVRQVVRcXG5jYXQgJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICBcImdpdF9yZW1vdGUgc3RlcCBpbiByZWxlYXNlIHdvcmtmbG93IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgc3RyaW5nLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICAgICk7XG4gICAgICBjb25zdCBwcmV2aW91c0NvbW1hbmQgPSBnaXRSZW1vdGVKb2IucnVuLnJlcGxhY2UoXCJcXG5cIiwgXCIgJiYgXCIpO1xuXG4gICAgICBjb25zdCBjYW5jZWxDb21tYW5kID1cbiAgICAgICAgJ2VjaG8gXCJsYXRlc3RfY29tbWl0PXJlbGVhc2VfY2FuY2VsbGVkXCIgPj4gJEdJVEhVQl9PVVRQVVQnOyAvLyB0aGlzIGNhbmNlbHMgdGhlIHJlbGVhc2UgdmlhIGEgbm9uLW1hdGNoaW5nIFNIQTtcbiAgICAgIGdpdFJlbW90ZUpvYi5ydW4gPSBgbm9kZSAuL3NjcmlwdHMvc2hvdWxkLXJlbGVhc2UuanMgJiYgKCR7cHJldmlvdXNDb21tYW5kfSkgfHwgJHtjYW5jZWxDb21tYW5kfWA7XG4gICAgICBnaXRSZW1vdGVKb2IubmFtZSArPVxuICAgICAgICBcIiBvciBjYW5jZWwgdmlhIGZha2luZyBhIFNIQSBpZiByZWxlYXNlIHdhcyBjYW5jZWxsZWRcIjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFsZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcIi5naXRodWIvd29ya2Zsb3dzL3N0YWxlLnltbFwiKTtcbiAgICBzdGFsZVdvcmtmbG93Py5hZGRPdmVycmlkZShcIm9uLnNjaGVkdWxlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHsgcHJvamVjdDogdGhpcywgbWF4SG91cjogNCwgaG91ck9mZnNldDogMSB9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGdyYWRlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy91cGdyYWRlLW1haW4ueW1sXCJcbiAgICApO1xuICAgIHVwZ3JhZGVXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJvbi5zY2hlZHVsZVwiLCBbXG4gICAgICB7XG4gICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7XG4gICAgICAgICAgcHJvamVjdDogdGhpcyxcbiAgICAgICAgICBtYXhIb3VyOiAwLFxuICAgICAgICAgIGhvdXJPZmZzZXQ6IDEsXG4gICAgICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLldlZWtseSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgLy8gU3VibW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCJBUEkubWRcIik7IC8vIGlnbm9yZSB0aGUgb2xkIGZpbGUsIHdlIG5vdyBnZW5lcmF0ZSBpdCBpbiB0aGUgZG9jcyBmb2xkZXJcbiAgICB0aGlzLmFkZERldkRlcHMoXCJqc2lpLWRvY2dlbkBeMTAuMi4zXCIpO1xuICAgIGlmIChqc2lpVmVyc2lvbikge1xuICAgICAgLy8gTk9URTogdGhlIGJlbG93IGlzIG1ha2luZyBhIGJyb2FkIGFzc3VtcHRpb24gdGhhdCB5b3UncmUgcGFzc2luZyBhIHJhbmdlIGxpa2UgXCJ+NS4zLjBcIiB0byBqc2lpVmVyc2lvblxuICAgICAgLy8gSWYgeW91IHVzZSB0aGF0IGZpZWxkIHRvIHBhc3MgYSB2ZXJ5IHNwZWNpZmljIHZlcnNpb24gKGUuZy4gXCI1LjMuMTFcIikgdGhlbiB0aGlzIG1pZ2h0IGJyZWFrXG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY2dlbiA9IHRoaXMuYWRkVGFzayhcImRvY2dlblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcHJvamVjdFwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IFtcbiAgICAgICAgICAgIFwicm0gLXJmIGRvY3NcIixcbiAgICAgICAgICAgIFwicm0gLWYgQVBJLm1kXCIsXG4gICAgICAgICAgICBcIm1rZGlyIGRvY3NcIixcbiAgICAgICAgICAgIFwianNpaS1kb2NnZW4gLS1zcGxpdC1ieS1zdWJtb2R1bGUgLWwgdHlwZXNjcmlwdCAtbCBweXRob24gLWwgamF2YSAtbCBjc2hhcnAgLWwgZ29cIixcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5pY2Ugd2F5IHRvIHRlbGwganNpaS1kb2NnZW4gdG8gZ2VuZXJhdGUgZG9jcyBpbnRvIGEgZm9sZGVyIHNvIEkgd2VudCB0aGlzIHJvdXRlXG4gICAgICAgICAgICBcIm12ICouKi5tZCBkb2NzXCIsXG4gICAgICAgICAgICAvLyBTb21lIHBhcnQgb2YgdGhlIGRvY3VtZW50YXRpb24gYXJlIHRvbyBsb25nLCB3ZSBuZWVkIHRvIHRydW5jYXRlIHRoZW0gdG8gfjEwTUJcbiAgICAgICAgICAgIFwiY2QgZG9jc1wiLFxuICAgICAgICAgICAgXCJscyAuLyB8IHhhcmdzIHNlZCAtaSAnMTUwMDAwLCQgZCcgJDFcIixcbiAgICAgICAgICBdLmpvaW4oXCIgJiYgXCIpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bihkb2NnZW4pO1xuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoYC9kb2NzLyoubWRgKTtcbiAgICB0aGlzLmFubm90YXRlR2VuZXJhdGVkKGAvZG9jcy8qLm1kYCk7XG5cbiAgICAvLyBTZXR0aW5nIHRoZSB2ZXJzaW9uIGluIHBhY2thZ2UuanNvbiBzbyB0aGUgZ29sYW5nIGRvY3MgaGF2ZSB0aGUgY29ycmVjdCB2ZXJzaW9uXG4gICAgY29uc3QgdW5jb25kaXRpb25hbEJ1bXAgPSB0aGlzLmFkZFRhc2soXCJ1bmNvbmRpdGlvbmFsLWJ1bXBcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiU2V0IHRoZSB2ZXJzaW9uIGluIHBhY2thZ2UuanNvbiB0byB0aGUgY3VycmVudCB2ZXJzaW9uXCIsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJDbGVhciB0aGUgY2hhbmdlbG9nIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgcHVibGlzaGVkIHR3aWNlXCIsXG4gICAgICAgICAgZXhlYzogXCJybSAtZiAkQ0hBTkdFTE9HXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHsgYnVpbHRpbjogXCJyZWxlYXNlL2J1bXAtdmVyc2lvblwiIH0sXG4gICAgICBdLFxuICAgICAgZW52OiB7XG4gICAgICAgIE9VVEZJTEU6IFwicGFja2FnZS5qc29uXCIsXG4gICAgICAgIENIQU5HRUxPRzogXCJkaXN0L2NoYW5nZWxvZy5tZFwiLFxuICAgICAgICBCVU1QRklMRTogXCJkaXN0L3ZlcnNpb24udHh0XCIsXG4gICAgICAgIFJFTEVBU0VUQUc6IFwiZGlzdC9yZWxlYXNldGFnLnR4dFwiLFxuICAgICAgICBSRUxFQVNFX1RBR19QUkVGSVg6IFwiXCIsXG4gICAgICAgIE1JTl9NQUpPUjogU3RyaW5nKE1JTl9NQUpPUl9WRVJTSU9OKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5wcmVDb21waWxlVGFzay5zcGF3bih1bmNvbmRpdGlvbmFsQnVtcCk7XG4gICAgLy8gVG8gYnVtcCBjb3JyZWN0bHkgd2UgbmVlZCB0byBoYXZlIHRoZSBjb21wbGV0ZWx5IGNsb25lZCByZXBvXG4gICAgKHRoaXMuYnVpbGRXb3JrZmxvdyBhcyBhbnkpLndvcmtmbG93LmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcImpvYnMuYnVpbGQuc3RlcHMuMC53aXRoLmZldGNoLWRlcHRoXCIsXG4gICAgICAwXG4gICAgKTtcbiAgICAvLyBVbmRvIHRoZSBjaGFuZ2VzIGFmdGVyIGNvbXBpbGF0aW9uXG4gICAgdGhpcy5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICBuYW1lOiBcIlJldmVydCBwYWNrYWdlLmpzb24gdmVyc2lvbiBidW1wXCIsXG4gICAgICBydW46IFwiZ2l0IGNoZWNrb3V0IHBhY2thZ2UuanNvblwiLFxuICAgIH0pO1xuXG4gICAgbmV3IENvcHlyaWdodEhlYWRlcnModGhpcyk7XG4gICAgbmV3IERlcHJlY2F0ZVBhY2thZ2VzKHRoaXMsIHtcbiAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIHBhY2thZ2VJbmZvLFxuICAgICAgaXNEZXByZWNhdGVkOiAhIWlzRGVwcmVjYXRlZCxcbiAgICB9KTtcbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgbmV3IEZvcmNlUmVsZWFzZSh0aGlzLCB7IHdvcmtmbG93UnVuc09uIH0pO1xuICAgICAgcGF0Y2hHb1B1Ymxpc2hUb1VzZUFwcFRva2VuKFxuICAgICAgICB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFwiLmdpdGh1Yi93b3JrZmxvd3MvZm9yY2UtcmVsZWFzZS55bWxcIilcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwaW5HaXRodWJBY3Rpb25WZXJzaW9ucyhwaW5uZWRWZXJzaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIC8vIFVzZSBwaW5uZWQgdmVyc2lvbnMgb2YgZ2l0aHViIGFjdGlvbnNcbiAgICBPYmplY3QuZW50cmllcyhwaW5uZWRWZXJzaW9ucykuZm9yRWFjaCgoW25hbWUsIHNoYV0pID0+IHtcbiAgICAgIHRoaXMuZ2l0aHViPy5hY3Rpb25zLnNldChuYW1lLCBgJHtuYW1lfUAke3NoYX1gKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmV0dHlBc3NlcnRFcXVhbDxUPihzdWJqZWN0OiBULCBleHBlY3RlZDogVCwgbWVzc2FnZT86IHN0cmluZyk6IHZvaWQge1xuICBpZiAoc3ViamVjdCAhPT0gZXhwZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHttZXNzYWdlID8/IFwiQXNzZXJ0aW9uIGZhaWxlZFwifTogZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgZXhwZWN0ZWRcbiAgICAgICl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gXG4gICAgKTtcbiAgfVxufVxuIl19
|