jsii-release 0.2.817 → 0.2.819

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -66,16 +66,16 @@ npx publib-npm [DIR]
66
66
 
67
67
  **Options (environment variables):**
68
68
 
69
- |Option|Required|Description|
70
- |------|--------|-----------|
71
- |`NPM_TOKEN`|Optional|Registry authentication token (either [npm.js publishing token](https://docs.npmjs.com/creating-and-viewing-authentication-tokens) or a [GitHub personal access token](https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#authenticating-to-github-packages)), not used for AWS CodeArtifact|
72
- |`NPM_REGISTRY`|Optional|The registry URL (defaults to "registry.npmjs.org"). Use "npm.pkg.github.com" to publish to GitHub Packages. Use repository endpoint for AWS CodeAtifact, e.g. "my-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/".|
73
- |`NPM_DIST_TAG`|Optional|Registers the published package with the given [dist-tag](https://docs.npmjs.com/cli/dist-tag) (e.g. `next`, default is `latest`)|
74
- |`NPM_ACCESS_LEVEL`|Optional|Publishes the package with the given [access level](https://docs.npmjs.com/cli/v8/commands/npm-publish#access) (e.g. `public`, default is `restricted` for scoped packages and `public` for unscoped packages)|
75
- |`AWS_ACCESS_KEY_ID`|Optional|If AWS CodeArtifact is used as registry, an AWS access key can be spedified.|
76
- |`AWS_SECRET_ACCESS_KEY`|Optional|Secret access key that belongs to the AWS access key.|
77
- |`AWS_ROLE_TO_ASSUME`|Optional|If AWS CodeArtifact is used as registry, an AWS role ARN to assume before authorizing.|
78
- |`DISABLE_HTTPS`|Optional|Connect to the registry with HTTP instead of HTTPS (defaults to false).|
69
+ | Option | Required | Description |
70
+ | ----------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
71
+ | `NPM_TOKEN` | Optional | Registry authentication token (either [npm.js publishing token](https://docs.npmjs.com/creating-and-viewing-authentication-tokens) or a [GitHub personal access token](https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#authenticating-to-github-packages)), not used for AWS CodeArtifact |
72
+ | `NPM_REGISTRY` | Optional | The registry URL (defaults to "registry.npmjs.org"). Use "npm.pkg.github.com" to publish to GitHub Packages. Use repository endpoint for AWS CodeAtifact, e.g. "my-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/". |
73
+ | `NPM_DIST_TAG` | Optional | Registers the published package with the given [dist-tag](https://docs.npmjs.com/cli/dist-tag) (e.g. `next`, default is `latest`) |
74
+ | `NPM_ACCESS_LEVEL` | Optional | Publishes the package with the given [access level](https://docs.npmjs.com/cli/v8/commands/npm-publish#access) (e.g. `public`, default is `restricted` for scoped packages and `public` for unscoped packages) |
75
+ | `AWS_ACCESS_KEY_ID` | Optional | If AWS CodeArtifact is used as registry, an AWS access key can be spedified. |
76
+ | `AWS_SECRET_ACCESS_KEY` | Optional | Secret access key that belongs to the AWS access key. |
77
+ | `AWS_ROLE_TO_ASSUME` | Optional | If AWS CodeArtifact is used as registry, an AWS role ARN to assume before authorizing. |
78
+ | `DISABLE_HTTPS` | Optional | Connect to the registry with HTTP instead of HTTPS (defaults to false). |
79
79
 
80
80
  ## Maven
81
81
 
@@ -93,15 +93,15 @@ npx publib-maven [DIR]
93
93
 
94
94
  **Options (environment variables):**
95
95
 
96
- |Option|Required|Description|
97
- |------|--------|-----------|
98
- |`MAVEN_USERNAME` and `MAVEN_PASSWORD`|Yes|Username and password for maven repository. For Maven Central, you will need to [Create JIRA account](https://issues.sonatype.org/secure/Signup!default.jspa) and then request a [new project](https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134). Read the [OSSRH guide](https://central.sonatype.org/pages/ossrh-guide.html) for more details.|
99
- |`MAVEN_GPG_PRIVATE_KEY` or `MAVEN_GPG_PRIVATE_KEY_FILE` and `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`|Yes for Maven Central|GPG private key or file that includes it. This is used to sign your Maven packages. See instructions below|
100
- |`MAVEN_STAGING_PROFILE_ID`|Yes for Maven Central|Maven Central (sonatype) staging profile ID (e.g. 68a05363083174). Staging profile ID can be found **in the URL** of the "Releases" staging profile under "Staging Profiles" in <https://oss.sonatype.org> or <https://s01.oss.sonatype.org> if you are logged in (e.g. `https://oss.sonatype.org/#stagingProfiles;68a05363083174`).|
101
- |`MAVEN_ENDPOINT`|Yes for new Maven Central users|URL of Nexus repository. Defaults to `https://oss.sonatype.org`. Use `https://s01.oss.sonatype.org` if you are a new user.|
102
- |`MAVEN_SERVER_ID`|No|Used in maven settings for credential lookup (e.g. use `github` when publishing to GitHub). Defaults to `ossrh` for Maven Central.|
103
- |`MAVEN_REPOSITORY_URL`|No|Deployment repository when not deploying to Maven Central|
104
- |`MAVEN_DRYRUN`|No|Set to "true" for a dry run|
96
+ | Option | Required | Description |
97
+ | ---------------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
98
+ | `MAVEN_USERNAME` and `MAVEN_PASSWORD` | Yes | Username and password for maven repository. For Maven Central, you will need to [Create JIRA account](https://issues.sonatype.org/secure/Signup!default.jspa) and then request a [new project](https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134). Read the [OSSRH guide](https://central.sonatype.org/pages/ossrh-guide.html) for more details. |
99
+ | `MAVEN_GPG_PRIVATE_KEY` or `MAVEN_GPG_PRIVATE_KEY_FILE` and `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE` | Yes for Maven Central | GPG private key or file that includes it. This is used to sign your Maven packages. See instructions below |
100
+ | `MAVEN_STAGING_PROFILE_ID` | Yes for Maven Central | Maven Central (sonatype) staging profile ID (e.g. 68a05363083174). Staging profile ID can be found **in the URL** of the "Releases" staging profile under "Staging Profiles" in <https://oss.sonatype.org> or <https://s01.oss.sonatype.org> if you are logged in (e.g. `https://oss.sonatype.org/#stagingProfiles;68a05363083174`). |
101
+ | `MAVEN_ENDPOINT` | Yes for new Maven Central users | URL of Nexus repository. Defaults to `https://oss.sonatype.org`. Use `https://s01.oss.sonatype.org` if you are a new user. |
102
+ | `MAVEN_SERVER_ID` | No | Used in maven settings for credential lookup (e.g. use `github` when publishing to GitHub). Defaults to `ossrh` for Maven Central. |
103
+ | `MAVEN_REPOSITORY_URL` | No | Deployment repository when not deploying to Maven Central |
104
+ | `MAVEN_DRYRUN` | No | Set to "true" for a dry run |
105
105
 
106
106
  **How to create a GPG key?**
107
107
 
@@ -139,8 +139,7 @@ and then assign it to `MAVEN_GPG_PRIVATE_KEY`:
139
139
  echo $(cat -e private.pem) | sed 's/\$ /\\n/g' | sed 's/\$$//'
140
140
  ```
141
141
 
142
- **Publish to GitHub Packages**
143
-
142
+ **Publish to GitHub Packages**\
144
143
  An example GitHub Actions publish step:
145
144
 
146
145
  ```yaml
@@ -167,14 +166,15 @@ npx publib-nuget [DIR]
167
166
 
168
167
  **Options (environment variables):**
169
168
 
170
- |Option|Required|Description|
171
- |------|--------|-----------|
172
- |`NUGET_API_KEY`|Required|[NuGet API Key](https://www.nuget.org/account/apikeys) with "Push" permissions|
173
- |`NUGET_SERVER`|Optional|NuGet Server URL (defaults to nuget.org)|
169
+ | Option | Required | Description |
170
+ | --------------- | -------- | ------------------------------------------------------------------------------ |
171
+ | `NUGET_API_KEY` | Required | [NuGet API Key](https://www.nuget.org/account/apikeys) with "Push" permissions |
172
+ | `NUGET_SERVER` | Optional | NuGet Server URL (defaults to nuget.org) |
174
173
 
175
- **Publish to GitHub Packages**
174
+ **Publish to GitHub Packages**\
175
+ You can publish to GitHub Packages instead, with the following options:
176
176
 
177
- * Set `NUGET_SERVER` to `https://nuget.pkg.github.com/(`org or user`)`.
177
+ * Set `NUGET_SERVER` to `https://nuget.pkg.github.com/[org or user]`.
178
178
  * Set `NUGET_API_KEY` to a token with write packages permissions.
179
179
  * Make sure the repository url in the project file matches the org or user used for the server
180
180
 
@@ -192,11 +192,11 @@ npx publib-pypi [DIR]
192
192
 
193
193
  **Options (environment variables):**
194
194
 
195
- |Option|Required|Description|
196
- |------|--------|-----------|
197
- |`TWINE_USERNAME`|Required|PyPI username ([register](https://pypi.org/account/register/))|
198
- |`TWINE_PASSWORD`|Required|PyPI password|
199
- |`TWINE_REPOSITORY_URL`|Optional|The registry URL (defaults to Twine default)|
195
+ | Option | Required | Description |
196
+ | ---------------------- | -------- | -------------------------------------------------------------- |
197
+ | `TWINE_USERNAME` | Required | PyPI username ([register](https://pypi.org/account/register/)) |
198
+ | `TWINE_PASSWORD` | Required | PyPI password |
199
+ | `TWINE_REPOSITORY_URL` | Optional | The registry URL (defaults to Twine default) |
200
200
 
201
201
  ## Golang
202
202
 
@@ -219,16 +219,20 @@ Repository tags will be in the following format:
219
219
 
220
220
  **Options (environment variables):**
221
221
 
222
- |Option|Required|Description|
223
- |------|--------|-----------|
224
- |`GITHUB_TOKEN`|Required if `GITHUB_USE_SSH` is not specified|[GitHub personal access token.](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)|
225
- |`GITHUB_USE_SSH`|Required if `GITHUB_TOKEN` is not specified|Set any value to use SSH with [deploy keys](https://docs.github.com/en/developers/overview/managing-deploy-keys#deploy-keys) or your private SSH key. Your system must ready to use the key as publib will not set it up.|
226
- |`VERSION`|Optional|Module version. Defaults to the value in the 'version' file of the module directory. Fails if it doesn't exist.|
227
- |`GIT_BRANCH`|Optional|Branch to push to. Defaults to 'main'.|
228
- |`GIT_USER_NAME`|Optional|Username to perform the commit with. Defaults to the git user.name config in the current directory. Fails if it doesn't exist.|
229
- |`GIT_USER_EMAIL`|Optional|Email to perform the commit with. Defaults to the git user.email config in the current directory. Fails if it doesn't exist.|
230
- |`GIT_COMMIT_MESSAGE`|Optional|The commit message. Defaults to 'chore(release): $VERSION'.|
231
- |`DRYRUN`|Optional|Set to "true" for a dry run.|
222
+ | Option | Required | Description |
223
+ | ----------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
224
+ | `GITHUB_TOKEN` | Required when not in SSH mode, see `GIT_USE_SSH` | [GitHub personal access token.](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) |
225
+ | `GIT_USE_SSH` | Optional | Set to a non-falsy value to use SSH with [deploy keys](https://docs.github.com/en/developers/overview/managing-deploy-keys#deploy-keys) or your private SSH key. Your system must ready to use the key as publib will not set it up. |
226
+ | `GITHUB_USE_SSH` | Deprecated | Legacy alias for `GIT_USE_SSH`. |
227
+ | `GH_ENTERPRISE_TOKEN` or<br>`GITHUB_ENTERPRISE_TOKEN` | Optional | [Custom Authentication token for API requests to GitHub Enterprise](https://cli.github.com/manual/gh_help_environment). |
228
+ | `GH_HOST` | Optional | Force use of a different [Hostname for GitHub Enterprise](https://cli.github.com/manual/gh_help_environment). |
229
+ | `GITHUB_API_URL` | Optional | If present, used to detect the GitHub instance to target. This is specified by default in [GitHub Actions workflow](https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables) and should not be set manually. |
230
+ | `VERSION` | Optional | Module version. Defaults to the value in the 'version' file of the module directory. Fails if it doesn't exist. |
231
+ | `GIT_BRANCH` | Optional | Branch to push to. Defaults to 'main'. |
232
+ | `GIT_USER_NAME` | Optional | Username to perform the commit with. Defaults to the git user.name config in the current directory. Fails if it doesn't exist. |
233
+ | `GIT_USER_EMAIL` | Optional | Email to perform the commit with. Defaults to the git user.email config in the current directory. Fails if it doesn't exist. |
234
+ | `GIT_COMMIT_MESSAGE` | Optional | The commit message. Defaults to 'chore(release): $VERSION'. |
235
+ | `DRYRUN` | Optional | Set to "true" for a dry run. |
232
236
 
233
237
  ## Publish to CodeArtifact for testing
234
238
 
package/lib/help/git.d.ts CHANGED
@@ -5,6 +5,27 @@
5
5
  * @param targetDir the clone directory.
6
6
  */
7
7
  export declare function clone(repositoryUrl: string, targetDir: string): void;
8
+ /**
9
+ * Checks if the current environment is an GHE environment.
10
+ *
11
+ * This check is using GITHUB_API_URL set in GitHub Actions workflow, as well as common gh cli env variables.
12
+ * https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables
13
+ * https://cli.github.com/manual/gh_help_environment
14
+ *
15
+ * @return - `true` if GH_HOST or GITHUB_API_URL env var are defined and not equal to the public github endpoint, otherwise `false`
16
+ */
17
+ export declare function detectGHE(): boolean;
18
+ /**
19
+ * Returns an appropriate github token from the environment.
20
+ *
21
+ * @return GH_ENTERPRISE_TOKEN or GITHUB_ENTERPRISE_TOKEN or GITHUB_TOKEN if in an GHE environment, otherwise GITHUB_TOKEN
22
+ */
23
+ export declare function getToken(isGHE: boolean): (string | undefined);
24
+ /**
25
+ * Checks if SSH should be used to clone repo.
26
+ * This checks the presence and values of the GIT_USE_SSH env variable and the deprecated GITHUB_USE_SSH for legacy reason. Returns true if either of these env vars are defined and not falsy.
27
+ */
28
+ export declare function detectSSH(): boolean;
8
29
  /**
9
30
  * Query the git index for changes.
10
31
  *
package/lib/help/git.js CHANGED
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.identify = exports.email = exports.username = exports.checkout = exports.push = exports.tag = exports.init = exports.commit = exports.add = exports.diffIndex = exports.clone = void 0;
26
+ exports.identify = exports.email = exports.username = exports.checkout = exports.push = exports.tag = exports.init = exports.commit = exports.add = exports.diffIndex = exports.detectSSH = exports.getToken = exports.detectGHE = exports.clone = void 0;
27
27
  const shell = __importStar(require("./shell"));
28
28
  /**
29
29
  * Clones a repository from GitHub. Requires a `GITHUB_TOKEN` env variable.
@@ -32,13 +32,13 @@ const shell = __importStar(require("./shell"));
32
32
  * @param targetDir the clone directory.
33
33
  */
34
34
  function clone(repositoryUrl, targetDir) {
35
- const gitHubUseSsh = process.env.GITHUB_USE_SSH;
35
+ const gitHubUseSsh = detectSSH();
36
36
  if (gitHubUseSsh) {
37
37
  const sshRepositoryUrl = repositoryUrl.replace('/', ':');
38
38
  shell.run(`git clone git@${sshRepositoryUrl}.git ${targetDir}`);
39
39
  }
40
40
  else {
41
- const gitHubToken = process.env.GITHUB_TOKEN;
41
+ const gitHubToken = getToken(detectGHE());
42
42
  if (!gitHubToken) {
43
43
  throw new Error('GITHUB_TOKEN env variable is required when GITHUB_USE_SSH env variable is not used');
44
44
  }
@@ -46,6 +46,45 @@ function clone(repositoryUrl, targetDir) {
46
46
  }
47
47
  }
48
48
  exports.clone = clone;
49
+ /**
50
+ * Checks if the current environment is an GHE environment.
51
+ *
52
+ * This check is using GITHUB_API_URL set in GitHub Actions workflow, as well as common gh cli env variables.
53
+ * https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables
54
+ * https://cli.github.com/manual/gh_help_environment
55
+ *
56
+ * @return - `true` if GH_HOST or GITHUB_API_URL env var are defined and not equal to the public github endpoint, otherwise `false`
57
+ */
58
+ function detectGHE() {
59
+ const githubApiUrl = process.env.GITHUB_API_URL;
60
+ const ghHost = process.env.GH_HOST;
61
+ return (Boolean(ghHost) && ghHost.trim().toLowerCase() != 'github.com')
62
+ || (Boolean(githubApiUrl) && githubApiUrl.trim().toLowerCase() != 'https://api.github.com');
63
+ }
64
+ exports.detectGHE = detectGHE;
65
+ /**
66
+ * Returns an appropriate github token from the environment.
67
+ *
68
+ * @return GH_ENTERPRISE_TOKEN or GITHUB_ENTERPRISE_TOKEN or GITHUB_TOKEN if in an GHE environment, otherwise GITHUB_TOKEN
69
+ */
70
+ function getToken(isGHE) {
71
+ var _a, _b;
72
+ if (isGHE) {
73
+ const githubEnterpiseToken = (_b = (_a = process.env.GH_ENTERPRISE_TOKEN) !== null && _a !== void 0 ? _a : process.env.GITHUB_ENTERPRISE_TOKEN) !== null && _b !== void 0 ? _b : process.env.GITHUB_TOKEN;
74
+ return githubEnterpiseToken;
75
+ }
76
+ return process.env.GITHUB_TOKEN;
77
+ }
78
+ exports.getToken = getToken;
79
+ /**
80
+ * Checks if SSH should be used to clone repo.
81
+ * This checks the presence and values of the GIT_USE_SSH env variable and the deprecated GITHUB_USE_SSH for legacy reason. Returns true if either of these env vars are defined and not falsy.
82
+ */
83
+ function detectSSH() {
84
+ var _a;
85
+ return Boolean((_a = process.env.GIT_USE_SSH) !== null && _a !== void 0 ? _a : process.env.GITHUB_USE_SSH);
86
+ }
87
+ exports.detectSSH = detectSSH;
49
88
  /**
50
89
  * Query the git index for changes.
51
90
  *
@@ -179,4 +218,4 @@ function identify(user, address) {
179
218
  shell.run(`git config user.email "${address}"`);
180
219
  }
181
220
  exports.identify = identify;
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHAvZ2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLGFBQXFCLEVBQUUsU0FBaUI7SUFDNUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFDaEQsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsR0FBRyxDQUFDLGlCQUFpQixnQkFBZ0IsUUFBUSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ2pFO1NBQU07UUFDTCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztTQUN2RztRQUNELEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLFdBQVcsSUFBSSxhQUFhLFFBQVEsU0FBUyxFQUFFLENBQUMsQ0FBQztLQUNqRjtBQUNILENBQUM7QUFaRCxzQkFZQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixTQUFTO0lBQ3ZCLElBQUk7UUFDRixLQUFLLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUFQRCw4QkFPQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBUztJQUMzQixLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztB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QUMsMEJBQTBCLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUhELDRCQUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2hlbGwgZnJvbSAnLi9zaGVsbCc7XG5cbi8qKlxuICogQ2xvbmVzIGEgcmVwb3NpdG9yeSBmcm9tIEdpdEh1Yi4gUmVxdWlyZXMgYSBgR0lUSFVCX1RPS0VOYCBlbnYgdmFyaWFibGUuXG4gKlxuICogQHBhcmFtIHJlcG9zaXRvcnlVcmwgdGhlIHJlcG9zaXRvcnkgdG8gY2xvbmUuXG4gKiBAcGFyYW0gdGFyZ2V0RGlyIHRoZSBjbG9uZSBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShyZXBvc2l0b3J5VXJsOiBzdHJpbmcsIHRhcmdldERpcjogc3RyaW5nKSB7XG4gIGNvbnN0IGdpdEh1YlVzZVNzaCA9IHByb2Nlc3MuZW52LkdJVEhVQl9VU0VfU1NIO1xuICBpZiAoZ2l0SHViVXNlU3NoKSB7XG4gICAgY29uc3Qgc3NoUmVwb3NpdG9yeVVybCA9IHJlcG9zaXRvcnlVcmwucmVwbGFjZSgnLycsICc6Jyk7XG4gICAgc2hlbGwucnVuKGBnaXQgY2xvbmUgZ2l0QCR7c3NoUmVwb3NpdG9yeVVybH0uZ2l0ICR7dGFyZ2V0RGlyfWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGdpdEh1YlRva2VuID0gcHJvY2Vzcy5lbnYuR0lUSFVCX1RPS0VOO1xuICAgIGlmICghZ2l0SHViVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR0lUSFVCX1RPS0VOIGVudiB2YXJpYWJsZSBpcyByZXF1aXJlZCB3aGVuIEdJVEhVQl9VU0VfU1NIIGVudiB2YXJpYWJsZSBpcyBub3QgdXNlZCcpO1xuICAgIH1cbiAgICBzaGVsbC5ydW4oYGdpdCBjbG9uZSBodHRwczovLyR7Z2l0SHViVG9rZW59QCR7cmVwb3NpdG9yeVVybH0uZ2l0ICR7dGFyZ2V0RGlyfWApO1xuICB9XG59XG5cbi8qKlxuICogUXVlcnkgdGhlIGdpdCBpbmRleCBmb3IgY2hhbmdlcy5cbiAqXG4gKiBAcmV0dXJuIFRydWUgaWYgY2hhbmdlcyBleGlzdCwgRmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkluZGV4KCk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHNoZWxsLnJ1bignZ2l0IGRpZmYtaW5kZXggLS1leGl0LWNvZGUgSEVBRCAtLScpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGQgZmlsZXMgdG8gdGhlIGluZGV4LlxuICpcbiAqIEBwYXJhbSBwIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkKHA6IHN0cmluZykge1xuICBzaGVsbC5ydW4oYGdpdCBhZGQgJHtwfWApO1xufVxuXG4vKipcbiAqIENvbW1pdC5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSB0aGUgY29tbWl0IG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21taXQobWVzc2FnZTogc3RyaW5nKSB7XG4gIHNoZWxsLnJ1bihgZ2l0IGNvbW1pdCAtbSBcIiR7bWVzc2FnZX1cImApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgYSByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdCgpIHtcbiAgc2hlbGwucnVuKCdnaXQgaW5pdCcpO1xufVxuXG4vKipcbiAqIENlcmF0ZSBhIHRhZy5cbiAqXG4gKiBAcGFyYW0gbmFtZSB0YWcgbmFtZS5cbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHRhZyB3YXMgY3JlYXRlZCwgZmFsc2UgaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWcobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgc2hlbGwucnVuKGBnaXQgdGFnIC1hICR7bmFtZX0gLW0gJHtuYW1lfWAsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5tZXNzYWdlLmluY2x1ZGVzKCdhbHJlYWR5IGV4aXN0cycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoIGEgcmVmIHRvIG9yaWdpbi5cbiAqXG4gKiBAcGFyYW0gcmVmIHRoZSByZWZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1c2gocmVmOiBzdHJpbmcpIHtcbiAgc2hlbGwucnVuKGBnaXQgcHVzaCBvcmlnaW4gJHtyZWZ9YCk7XG59XG5cbi8qKlxuICogQ2hlY2tvdXQgdG8gYSBuZXcgYnJhbmNoLiBDcmVhdGVzIGEgbmV3IG9uZSBpZiBgb3B0aW9ucy5jcmVhdGVJZk1pc3NpbmdgIGlzIFRydWUgYW5kIHRoZSBicmFuY2ggZG9lc24ndCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYnJhbmNoIHRoZSBicmFuY2guXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tvdXQoYnJhbmNoOiBzdHJpbmcsIG9wdGlvbnM6IHsgY3JlYXRlSWZNaXNzaW5nPzogYm9vbGVhbiB9ICkge1xuICBpZiAob3B0aW9ucy5jcmVhdGVJZk1pc3NpbmcpIHtcbiAgICB0cnkge1xuICAgICAgc2hlbGwucnVuKGBnaXQgc2hvdy1icmFuY2ggb3JpZ2luLyR7YnJhbmNofWApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5tZXNzYWdlLmluY2x1ZGVzKCdmYXRhbDogYmFkIHNoYTEgcmVmZXJlbmNlJykpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1JlbW90ZSBicmFuY2ggbm90IGZvdW5kLCBjcmVhdGluZyBuZXcgYnJhbmNoLicpO1xuICAgICAgICBzaGVsbC5ydW4oYGdpdCBjaGVja291dCAtQiAke2JyYW5jaH1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaGVsbC5ydW4oYGdpdCBjaGVja291dCAke2JyYW5jaH1gKTtcbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgY29uZmlndXJlZCBnaXQgdXNlciBuYW1lIGZvciB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZXJuYW1lKCkge1xuICB0cnkge1xuICAgIHJldHVybiBzaGVsbC5ydW4oJ2dpdCBjb25maWcgdXNlci5uYW1lJywgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgY29uZmlndXJlZCBnaXQgdXNlciBlbWFpbCBmb3IgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuICogUmV0dXJucyB1bmRlZmluZWQgaWYgbm90IGNvbmZpZ3VyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbCgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc2hlbGwucnVuKCdnaXQgY29uZmlnIHVzZXIuZW1haWwnLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIElkZW50aWZ5IHRoZSBjb21taXR0ZXIgd2l0aCBhIHVzZXJuYW1lIGFuZCBlbWFpbC5cbiAqXG4gKiBAcGFyYW0gdXNlciB0aGUgdXNlcm5hbWUuXG4gKiBAcGFyYW0gZW1haWwgdGhlIGVtYWlsIGFkZHJlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmeSh1c2VyOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZykge1xuICBzaGVsbC5ydW4oYGdpdCBjb25maWcgdXNlci5uYW1lIFwiJHt1c2VyfVwiYCk7XG4gIHNoZWxsLnJ1bihgZ2l0IGNvbmZpZyB1c2VyLmVtYWlsIFwiJHthZGRyZXNzfVwiYCk7XG59XG4iXX0=
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHAvZ2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBRWpDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLGFBQXFCLEVBQUUsU0FBaUI7SUFDNUQsTUFBTSxZQUFZLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDakMsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsR0FBRyxDQUFDLGlCQUFpQixnQkFBZ0IsUUFBUSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ2pFO1NBQU07UUFDTCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztTQUN2RztRQUNELEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLFdBQVcsSUFBSSxhQUFhLFFBQVEsU0FBUyxFQUFFLENBQUMsQ0FBQztLQUVqRjtBQUNILENBQUM7QUFiRCxzQkFhQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsU0FBUztJQUN2QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUVuQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxZQUFZLENBQUM7V0FDbkUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksWUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLHdCQUF3QixDQUFDLENBQUM7QUFDakcsQ0FBQztBQU5ELDhCQU1DO0FBRUQ7Ozs7R0FJRztBQUVILFNBQWdCLFFBQVEsQ0FBQyxLQUFjOztJQUNyQyxJQUFJLEtBQUssRUFBRTtRQUNULE1BQU0sb0JBQW9CLEdBQUcsTUFBQSxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO1FBQ2hJLE9BQU8sb0JBQW9CLENBQUM7S0FDN0I7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBQ2xDLENBQUM7QUFORCw0QkFNQztBQUVEOzs7R0FHRztBQUVILFNBQWdCLFNBQVM7O0lBQ3ZCLE9BQU8sT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUZELDhCQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFNBQVM7SUFDdkIsSUFBSTtRQUNGLEtBQUssQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQVBELDhCQU9DO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLEdBQUcsQ0FBQyxDQUFTO0lBQzNCLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFGRCxrQkFFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixNQUFNLENBQUMsT0FBZTtJQUNwQyxLQUFLLENBQUMsR0FBRyxDQUFDLGtCQUFrQixPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFGRCx3QkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSTtJQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFGRCxvQkFFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsR0FBRyxDQUFDLElBQVk7SUFDOUIsSUFBSTtRQUNGLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLE9BQU8sSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUM5RCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsTUFBTSxDQUFDLENBQUM7S0FDVDtBQUNILENBQUM7QUFWRCxrQkFVQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixJQUFJLENBQUMsR0FBVztJQUM5QixLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxvQkFFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLE1BQWMsRUFBRSxPQUFzQztJQUM3RSxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7UUFDM0IsSUFBSTtZQUNGLEtBQUssQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO2dCQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxDQUFDLENBQUM7Z0JBQzdELEtBQUssQ0FBQyxHQUFHLENBQUMsbUJBQW1CLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLE9BQU87YUFDUjtTQUNGO0tBQ0Y7SUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFiRCw0QkFhQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFFBQVE7SUFDdEIsSUFBSTtRQUNGLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzdEO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtBQUNILENBQUM7QUFURCw0QkFTQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLEtBQUs7SUFDbkIsSUFBSTtRQUNGLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzlEO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtBQUNILENBQUM7QUFURCxzQkFTQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLElBQVksRUFBRSxPQUFlO0lBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMseUJBQXlCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBSEQsNEJBR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaGVsbCBmcm9tICcuL3NoZWxsJztcblxuLyoqXG4gKiBDbG9uZXMgYSByZXBvc2l0b3J5IGZyb20gR2l0SHViLiBSZXF1aXJlcyBhIGBHSVRIVUJfVE9LRU5gIGVudiB2YXJpYWJsZS5cbiAqXG4gKiBAcGFyYW0gcmVwb3NpdG9yeVVybCB0aGUgcmVwb3NpdG9yeSB0byBjbG9uZS5cbiAqIEBwYXJhbSB0YXJnZXREaXIgdGhlIGNsb25lIGRpcmVjdG9yeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKHJlcG9zaXRvcnlVcmw6IHN0cmluZywgdGFyZ2V0RGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgZ2l0SHViVXNlU3NoID0gZGV0ZWN0U1NIKCk7XG4gIGlmIChnaXRIdWJVc2VTc2gpIHtcbiAgICBjb25zdCBzc2hSZXBvc2l0b3J5VXJsID0gcmVwb3NpdG9yeVVybC5yZXBsYWNlKCcvJywgJzonKTtcbiAgICBzaGVsbC5ydW4oYGdpdCBjbG9uZSBnaXRAJHtzc2hSZXBvc2l0b3J5VXJsfS5naXQgJHt0YXJnZXREaXJ9YCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZ2l0SHViVG9rZW4gPSBnZXRUb2tlbihkZXRlY3RHSEUoKSk7XG4gICAgaWYgKCFnaXRIdWJUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHSVRIVUJfVE9LRU4gZW52IHZhcmlhYmxlIGlzIHJlcXVpcmVkIHdoZW4gR0lUSFVCX1VTRV9TU0ggZW52IHZhcmlhYmxlIGlzIG5vdCB1c2VkJyk7XG4gICAgfVxuICAgIHNoZWxsLnJ1bihgZ2l0IGNsb25lIGh0dHBzOi8vJHtnaXRIdWJUb2tlbn1AJHtyZXBvc2l0b3J5VXJsfS5naXQgJHt0YXJnZXREaXJ9YCk7XG5cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBhbiBHSEUgZW52aXJvbm1lbnQuXG4gKlxuICogVGhpcyBjaGVjayBpcyB1c2luZyBHSVRIVUJfQVBJX1VSTCBzZXQgaW4gR2l0SHViIEFjdGlvbnMgd29ya2Zsb3csIGFzIHdlbGwgYXMgY29tbW9uIGdoIGNsaSBlbnYgdmFyaWFibGVzLlxuICogaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9sZWFybi1naXRodWItYWN0aW9ucy92YXJpYWJsZXMjZGVmYXVsdC1lbnZpcm9ubWVudC12YXJpYWJsZXNcbiAqIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vbWFudWFsL2doX2hlbHBfZW52aXJvbm1lbnRcbiAqXG4gKiBAcmV0dXJuIC0gYHRydWVgIGlmIEdIX0hPU1Qgb3IgR0lUSFVCX0FQSV9VUkwgZW52IHZhciBhcmUgZGVmaW5lZCBhbmQgbm90IGVxdWFsIHRvIHRoZSBwdWJsaWMgZ2l0aHViIGVuZHBvaW50LCBvdGhlcndpc2UgYGZhbHNlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0R0hFKCk6IGJvb2xlYW4ge1xuICBjb25zdCBnaXRodWJBcGlVcmwgPSBwcm9jZXNzLmVudi5HSVRIVUJfQVBJX1VSTDtcbiAgY29uc3QgZ2hIb3N0ID0gcHJvY2Vzcy5lbnYuR0hfSE9TVDtcblxuICByZXR1cm4gKEJvb2xlYW4oZ2hIb3N0KSAmJiBnaEhvc3QhLnRyaW0oKS50b0xvd2VyQ2FzZSgpICE9ICdnaXRodWIuY29tJylcbiAgICB8fCAoQm9vbGVhbihnaXRodWJBcGlVcmwpICYmIGdpdGh1YkFwaVVybCEudHJpbSgpLnRvTG93ZXJDYXNlKCkgIT0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFwcHJvcHJpYXRlIGdpdGh1YiB0b2tlbiBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiAqXG4gKiBAcmV0dXJuIEdIX0VOVEVSUFJJU0VfVE9LRU4gb3IgR0lUSFVCX0VOVEVSUFJJU0VfVE9LRU4gb3IgR0lUSFVCX1RPS0VOIGlmIGluIGFuIEdIRSBlbnZpcm9ubWVudCwgb3RoZXJ3aXNlIEdJVEhVQl9UT0tFTlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2tlbihpc0dIRTogYm9vbGVhbik6IChzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKGlzR0hFKSB7XG4gICAgY29uc3QgZ2l0aHViRW50ZXJwaXNlVG9rZW4gPSBwcm9jZXNzLmVudi5HSF9FTlRFUlBSSVNFX1RPS0VOID8/IHByb2Nlc3MuZW52LkdJVEhVQl9FTlRFUlBSSVNFX1RPS0VOID8/IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTjtcbiAgICByZXR1cm4gZ2l0aHViRW50ZXJwaXNlVG9rZW47XG4gIH1cbiAgcmV0dXJuIHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgU1NIIHNob3VsZCBiZSB1c2VkIHRvIGNsb25lIHJlcG8uXG4gKiBUaGlzIGNoZWNrcyB0aGUgcHJlc2VuY2UgYW5kIHZhbHVlcyBvZiB0aGUgR0lUX1VTRV9TU0ggZW52IHZhcmlhYmxlIGFuZCB0aGUgZGVwcmVjYXRlZCBHSVRIVUJfVVNFX1NTSCBmb3IgbGVnYWN5IHJlYXNvbi4gUmV0dXJucyB0cnVlIGlmIGVpdGhlciBvZiB0aGVzZSBlbnYgdmFycyBhcmUgZGVmaW5lZCBhbmQgbm90IGZhbHN5LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RTU0goKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHByb2Nlc3MuZW52LkdJVF9VU0VfU1NIID8/IHByb2Nlc3MuZW52LkdJVEhVQl9VU0VfU1NIKTtcbn1cblxuLyoqXG4gKiBRdWVyeSB0aGUgZ2l0IGluZGV4IGZvciBjaGFuZ2VzLlxuICpcbiAqIEByZXR1cm4gVHJ1ZSBpZiBjaGFuZ2VzIGV4aXN0LCBGYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSW5kZXgoKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgc2hlbGwucnVuKCdnaXQgZGlmZi1pbmRleCAtLWV4aXQtY29kZSBIRUFEIC0tJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFkZCBmaWxlcyB0byB0aGUgaW5kZXguXG4gKlxuICogQHBhcmFtIHAgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGQocDogc3RyaW5nKSB7XG4gIHNoZWxsLnJ1bihgZ2l0IGFkZCAke3B9YCk7XG59XG5cbi8qKlxuICogQ29tbWl0LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIHRoZSBjb21taXQgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgc2hlbGwucnVuKGBnaXQgY29tbWl0IC1tIFwiJHttZXNzYWdlfVwiYCk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0KCkge1xuICBzaGVsbC5ydW4oJ2dpdCBpbml0Jyk7XG59XG5cbi8qKlxuICogQ2VyYXRlIGEgdGFnLlxuICpcbiAqIEBwYXJhbSBuYW1lIHRhZyBuYW1lLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgdGFnIHdhcyBjcmVhdGVkLCBmYWxzZSBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhZyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBzaGVsbC5ydW4oYGdpdCB0YWcgLWEgJHtuYW1lfSAtbSAke25hbWV9YCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ2FscmVhZHkgZXhpc3RzJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSByZWYgdG8gb3JpZ2luLlxuICpcbiAqIEBwYXJhbSByZWYgdGhlIHJlZlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVzaChyZWY6IHN0cmluZykge1xuICBzaGVsbC5ydW4oYGdpdCBwdXNoIG9yaWdpbiAke3JlZn1gKTtcbn1cblxuLyoqXG4gKiBDaGVja291dCB0byBhIG5ldyBicmFuY2guIENyZWF0ZXMgYSBuZXcgb25lIGlmIGBvcHRpb25zLmNyZWF0ZUlmTWlzc2luZ2AgaXMgVHJ1ZSBhbmQgdGhlIGJyYW5jaCBkb2Vzbid0IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBicmFuY2ggdGhlIGJyYW5jaC5cbiAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja291dChicmFuY2g6IHN0cmluZywgb3B0aW9uczogeyBjcmVhdGVJZk1pc3Npbmc/OiBib29sZWFuIH0gKSB7XG4gIGlmIChvcHRpb25zLmNyZWF0ZUlmTWlzc2luZykge1xuICAgIHRyeSB7XG4gICAgICBzaGVsbC5ydW4oYGdpdCBzaG93LWJyYW5jaCBvcmlnaW4vJHticmFuY2h9YCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ2ZhdGFsOiBiYWQgc2hhMSByZWZlcmVuY2UnKSkge1xuICAgICAgICBjb25zb2xlLmxvZygnUmVtb3RlIGJyYW5jaCBub3QgZm91bmQsIGNyZWF0aW5nIG5ldyBicmFuY2guJyk7XG4gICAgICAgIHNoZWxsLnJ1bihgZ2l0IGNoZWNrb3V0IC1CICR7YnJhbmNofWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNoZWxsLnJ1bihgZ2l0IGNoZWNrb3V0ICR7YnJhbmNofWApO1xufVxuXG4vKipcbiAqIEZldGNoIHRoZSBjb25maWd1cmVkIGdpdCB1c2VyIG5hbWUgZm9yIHRoZSBjdXJyZW50IGRpcmVjdG9yeS5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlcm5hbWUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHNoZWxsLnJ1bignZ2l0IGNvbmZpZyB1c2VyLm5hbWUnLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEZldGNoIHRoZSBjb25maWd1cmVkIGdpdCB1c2VyIGVtYWlsIGZvciB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKCkge1xuICB0cnkge1xuICAgIHJldHVybiBzaGVsbC5ydW4oJ2dpdCBjb25maWcgdXNlci5lbWFpbCcsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogSWRlbnRpZnkgdGhlIGNvbW1pdHRlciB3aXRoIGEgdXNlcm5hbWUgYW5kIGVtYWlsLlxuICpcbiAqIEBwYXJhbSB1c2VyIHRoZSB1c2VybmFtZS5cbiAqIEBwYXJhbSBlbWFpbCB0aGUgZW1haWwgYWRkcmVzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZ5KHVzZXI6IHN0cmluZywgYWRkcmVzczogc3RyaW5nKSB7XG4gIHNoZWxsLnJ1bihgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgXCIke3VzZXJ9XCJgKTtcbiAgc2hlbGwucnVuKGBnaXQgY29uZmlnIHVzZXIuZW1haWwgXCIke2FkZHJlc3N9XCJgKTtcbn1cbiJdfQ==
package/lib/targets/go.js CHANGED
@@ -145,7 +145,9 @@ class GoReleaser {
145
145
  throw new Error(`Module declaration in '${modFile}' expected to end with '${majorVersionSuffix}' since its major version is larger than 1`);
146
146
  }
147
147
  if (!repoURL.startsWith('github.com')) {
148
- throw new Error(`Repository must be hosted on github.com. Found: '${repoURL}' in ${modFile}`);
148
+ if (!(git.detectSSH() || git.detectGHE())) {
149
+ throw new Error(`Repository must be hosted on github.com. Found: '${repoURL}' in ${modFile}`);
150
+ }
149
151
  }
150
152
  let repoPath = cannonicalNameParts
151
153
  .slice(3) // e.g ['constructs', 'v3']
@@ -226,4 +228,4 @@ class GoReleaser {
226
228
  }
227
229
  }
228
230
  exports.GoReleaser = GoReleaser;
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0cy9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsaURBQW1DO0FBQ25DLCtDQUFpQztBQUNqQyxxREFBdUM7QUE0R3ZDOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBV3JCLFlBQVksS0FBc0I7O1FBRWhDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztTQUMzRjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBQSxLQUFLLENBQUMsR0FBRyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxLQUFLLENBQUMsTUFBTSxtQ0FBSSxLQUFLLENBQUM7UUFFcEMsTUFBTSxXQUFXLEdBQUcsTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsTUFBQSxLQUFLLENBQUMsS0FBSyxtQ0FBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGdHQUFnRyxDQUFDLENBQUM7U0FDbkg7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0dBQW9HLENBQUMsQ0FBQztTQUN2SDtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTztRQUNaLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXJELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFNUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUk7WUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDekM7Z0JBQVM7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBRUgsQ0FBQztJQUVPLFNBQVMsQ0FBQyxPQUFtQixFQUFFLE9BQWU7O1FBRXBELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV2QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDNUMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sYUFBYSxHQUFHLE1BQUEsSUFBSSxDQUFDLGdCQUFnQixtQ0FBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLElBQUksT0FBTyxFQUFFO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFBRTtTQUNsQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7WUFDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXO1FBQ2hDLE1BQU0sT0FBTyxHQUFlLEVBQUUsQ0FBQztRQUMvQixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM1QyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQWU7UUFFakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRCwyRkFBMkY7UUFDM0YsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsbURBQW1EO1FBQ25ELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoQyxpRUFBaUU7UUFDakUsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRELHFDQUFxQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxRCxXQUFXO1FBQ1gsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFdkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLDJCQUEyQixrQkFBa0IsNENBQTRDLENBQUMsQ0FBQztTQUM3STtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELE9BQU8sUUFBUSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO1FBRUQsSUFBSSxRQUFRLEdBQUcsbUJBQW1CO2FBQy9CLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7YUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBRXBDLCtCQUErQjtRQUMvQixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLGtCQUFrQjtRQUNsQixzQ0FBc0M7UUFDdEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksWUFBWSxFQUFFLEVBQUU7WUFDbEQsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1osUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7UUFFRCx5REFBeUQ7UUFDekQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUV2RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBRWpFLENBQUM7SUFFTyxZQUFZLENBQUMsQ0FBVztRQUM5QixPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBbUI7UUFDN0MsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDdkIsOENBQThDO1lBQzlDLE9BQU8sR0FBRyxRQUFRLE1BQU0sUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzFEO2FBQU07WUFDTCx5RkFBeUY7WUFDekYsT0FBTyxHQUFHLFFBQVEsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQzNHO0lBQ0gsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFlO1FBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQix1REFBdUQ7WUFDdkQsMEJBQTBCO1lBQzFCLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2lCQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDO2lCQUN6QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0wsd0RBQXdEO1lBQ3hELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQzVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdEM7YUFDRjtTQUNGO1FBQ0QsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxjQUFjLENBQUMsT0FBbUI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQVMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7U0FDaEU7UUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxlQUF1QjtRQUU1QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUUxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV2RyxJQUFJLFdBQVcsSUFBSSxhQUFhLElBQUksV0FBVyxLQUFLLGFBQWEsRUFBRTtZQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixXQUFXLG9DQUFvQyxhQUFhLG1CQUFtQixlQUFlLEVBQUUsQ0FBQyxDQUFDO1NBQ3BJO1FBRUQsc0VBQXNFO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFFNUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLGVBQWUsSUFBSTtrQkFDeEUsc0dBQXNHLENBQUMsQ0FBQztTQUM3RztRQUVELE9BQU8sT0FBTyxDQUFDO0lBRWpCLENBQUM7Q0FFRjtBQWpQRCxnQ0FpUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgZ2l0IGZyb20gJy4uL2hlbHAvZ2l0JztcbmltcG9ydCAqIGFzIG9zIGZyb20gJy4uL2hlbHAvb3MnO1xuaW1wb3J0ICogYXMgc2hlbGwgZnJvbSAnLi4vaGVscC9zaGVsbCc7XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29SZWxlYXNlIHtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdGhlIHJlbGVhc2UgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGNvbW1pdCBtZXNzYWdlIG9mIHRoZSByZWxlYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWl0TWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3NpdG9yeSB3YXMgcmVsZWFzZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9EaXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYEdvUmVsZWFzZXJgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdvUmVsZWFzZXJQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgY29kZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdkaXN0L2dvJ1xuICAgKi9cbiAgcmVhZG9ubHkgZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgZHJ5IHJ1biBvbmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFpbidcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVzZXJuYW1lIHRvIHVzZSBmb3IgdGhlIGNvbW1pdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YWtlbiBmcm9tIGdpdCBjb25maWcuIHRocm93cyBpZiBub3QgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW1haWwgdG8gdXNlIGZvciB0aGUgY29tbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRha2VuIGZyb20gZ2l0IGNvbmZpZy4gdGhyb3dzIGlmIG5vdCBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1haWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRha2VuIGZyb20gdGhlICd2ZXJzaW9uJy4gdGhyb3dzIGlmIGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byB1c2UgZm9yIHRoZSBjb21taXQgbWFya2luZyB0aGUgcmVsZWFzZS5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBtb2R1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29Nb2R1bGUge1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBtb2QgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZEZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIG1vZHVsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNhbm5vbmljYWwgbmFtZSBvZiB0aGUgbW9kdWxlLiAoZS5nICdnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzLWdvL2NvbnN0cnVjdHMvdjNgKVxuICAgKi9cbiAgcmVhZG9ubHkgY2Fubm9uaWNhbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggaW5zaWRlIHRoZSByZXBvc2l0b3J5IHRoZSBtb2R1bGUgaXMgbG9jYXRlZCBpbi4gKGUuZyAnY29uc3RydWN0cycpXG4gICAqL1xuICByZWFkb25seSByZXBvUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSBVUkwuIChlLmcgJ2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMnKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb1VSTDogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogUmVsZWFzZSBhIHNldCBvZiBHb2xhbmcgbW9kdWxlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdvUmVsZWFzZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRDb21taXRNZXNzYWdlPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZHJ5UnVuOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGdpdEJyYW5jaDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGdpdFVzZXJuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0VXNlcmVtYWlsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEdvUmVsZWFzZXJQcm9wcykge1xuXG4gICAgaWYgKCFzaGVsbC53aGljaCgnZ2l0JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2l0IG11c3QgYmUgYXZhaWxhYmxlIHRvIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHVzaCBHbyBjb2RlIHRvIEdpdEh1YicpO1xuICAgIH1cblxuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5naXRDb21taXRNZXNzYWdlID0gcHJvcHMubWVzc2FnZTtcbiAgICB0aGlzLmRpciA9IHBhdGgucmVzb2x2ZShwcm9wcy5kaXIgPz8gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdkaXN0JywgJ2dvJykpO1xuICAgIHRoaXMuZ2l0QnJhbmNoID0gcHJvcHMuYnJhbmNoID8/ICdtYWluJztcbiAgICB0aGlzLmRyeVJ1biA9IHByb3BzLmRyeVJ1biA/PyBmYWxzZTtcblxuICAgIGNvbnN0IGdpdFVzZXJuYW1lID0gcHJvcHMudXNlcm5hbWUgPz8gZ2l0LnVzZXJuYW1lKCk7XG4gICAgY29uc3QgZ2l0VXNlcmVtYWlsID0gcHJvcHMuZW1haWwgPz8gZ2l0LmVtYWlsKCk7XG5cbiAgICBpZiAoIWdpdFVzZXJuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlY3QgdXNlcm5hbWUuIGVpdGhlciBjb25maWd1cmUgYSBnaXQgdXNlci5uYW1lIG9yIHBhc3MgR0lUX1VTRVJfTkFNRSBlbnYgdmFyaWFibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoIWdpdFVzZXJlbWFpbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGV0ZWN0IHVzZXIgZW1haWwuIGVpdGhlciBjb25maWd1cmUgYSBnaXQgdXNlci5lbWFpbCBvciBwYXNzIEdJVF9VU0VSX0VNQUlMIGVudiB2YXJpYWJsZScpO1xuICAgIH1cblxuICAgIHRoaXMuZ2l0VXNlcmVtYWlsID0gZ2l0VXNlcmVtYWlsO1xuICAgIHRoaXMuZ2l0VXNlcm5hbWUgPSBnaXRVc2VybmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdGhlIHJlbGVhc2UgcHJvY2Vzcy5cbiAgICpcbiAgICogQHJldHVybnMgbWV0YWRhdGEgYWJvdXQgdGhlIHJlbGVhc2UuXG4gICAqL1xuICBwdWJsaWMgcmVsZWFzZSgpOiBHb1JlbGVhc2Uge1xuICAgIGNvbnN0IG1vZHVsZXMgPSB0aGlzLmNvbGxlY3RNb2R1bGVzKHRoaXMuZGlyKTtcbiAgICBpZiAobW9kdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBtb2R1bGVzIGRldGVjdGVkLiBTa2lwcGluZycpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdEZXRlY3RlZCBtb2R1bGVzOicpO1xuICAgIG1vZHVsZXMuZm9yRWFjaChtID0+IGNvbnNvbGUubG9nKGAgLSAke20ubW9kRmlsZX1gKSk7XG5cbiAgICBjb25zdCByZXBvVVJMID0gdGhpcy5leHRyYWN0UmVwb1VSTChtb2R1bGVzKTtcbiAgICBjb25zdCByZXBvRGlyID0gcGF0aC5qb2luKG9zLm1rZHRlbXBTeW5jKCksICdyZXBvJyk7XG4gICAgZ2l0LmNsb25lKHJlcG9VUkwsIHJlcG9EaXIpO1xuXG4gICAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICB0cnkge1xuICAgICAgcHJvY2Vzcy5jaGRpcihyZXBvRGlyKTtcbiAgICAgIHJldHVybiB0aGlzLmRvUmVsZWFzZShtb2R1bGVzLCByZXBvRGlyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcHJvY2Vzcy5jaGRpcihjd2QpO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBkb1JlbGVhc2UobW9kdWxlczogR29Nb2R1bGVbXSwgcmVwb0Rpcjogc3RyaW5nKTogR29SZWxlYXNlIHtcblxuICAgIGdpdC5pZGVudGlmeSh0aGlzLmdpdFVzZXJuYW1lLCB0aGlzLmdpdFVzZXJlbWFpbCk7XG4gICAgZ2l0LmNoZWNrb3V0KHRoaXMuZ2l0QnJhbmNoLCB7IGNyZWF0ZUlmTWlzc2luZzogdHJ1ZSB9KTtcbiAgICB0aGlzLnN5bmNSZXBvKHJlcG9EaXIpO1xuXG4gICAgZ2l0LmFkZCgnLicpO1xuICAgIGlmICghZ2l0LmRpZmZJbmRleCgpKSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gY2hhbmdlcy4gU2tpcHBpbmcgcmVsZWFzZScpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1pdE1lc3NhZ2UgPSB0aGlzLmdpdENvbW1pdE1lc3NhZ2UgPz8gdGhpcy5idWlsZFJlbGVhc2VNZXNzYWdlKG1vZHVsZXMpO1xuICAgIGdpdC5jb21taXQoY29tbWl0TWVzc2FnZSk7XG5cbiAgICBjb25zdCB0YWdzID0gW107XG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlcykge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuYnVpbGRUYWdOYW1lKG1vZHVsZSk7XG4gICAgICBjb25zdCBjcmVhdGVkID0gZ2l0LnRhZyhuYW1lKTtcbiAgICAgIGlmIChjcmVhdGVkKSB7IHRhZ3MucHVzaChuYW1lKTsgfVxuICAgIH1cblxuICAgIGlmICh0YWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ0FsbCB0YWdzIGFscmVhZHkgZXhpc3QuIFNraXBwaW5nIHJlbGVhc2UnKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZzID0gWy4uLnRhZ3MsIHRoaXMuZ2l0QnJhbmNoXTtcblxuICAgIGlmICh0aGlzLmRyeVJ1bikge1xuICAgICAgY29uc29sZS5sb2coJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgICAgIGNvbnNvbGUubG9nKCcgICAgICAgICAgICDwn4+c77iPIERSWS1SVU4gTU9ERSDwn4+c77iPJyk7XG4gICAgICBjb25zb2xlLmxvZygnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xuICAgICAgcmVmcy5mb3JFYWNoKHQgPT4gY29uc29sZS5sb2coYFJlbW90ZSByZWYgd2lsbCBiZSB1cGRhdGVkOiAke3R9YCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWZzLmZvckVhY2godCA9PiBnaXQucHVzaCh0KSk7XG4gICAgfVxuICAgIHJldHVybiB7IHRhZ3MsIGNvbW1pdE1lc3NhZ2UsIHJlcG9EaXIgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdE1vZHVsZXMoZGlyOiBzdHJpbmcpOiBHb01vZHVsZVtdIHtcbiAgICBjb25zdCBtb2R1bGVzOiBHb01vZHVsZVtdID0gW107XG4gICAgZm9yIChjb25zdCBwIG9mIFsuLi5mcy5yZWFkZGlyU3luYyhkaXIpLCAnLiddKSB7XG4gICAgICBjb25zdCBtb2RGaWxlID0gcGF0aC5qb2luKGRpciwgcCwgJ2dvLm1vZCcpO1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMobW9kRmlsZSkpIHtcbiAgICAgICAgbW9kdWxlcy5wdXNoKHRoaXMucGFyc2VNb2R1bGUobW9kRmlsZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW9kdWxlcztcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VNb2R1bGUobW9kRmlsZTogc3RyaW5nKTogR29Nb2R1bGUge1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZXh0cmFjdFZlcnNpb24ocGF0aC5kaXJuYW1lKG1vZEZpbGUpKTtcbiAgICBjb25zdCBtYWpvclZlcnNpb24gPSBOdW1iZXIodmVyc2lvbi5zcGxpdCgnLicpWzBdKTtcblxuICAgIC8vIGV4dHJhY3QgdGhlIG1vZHVsZSBkZWNsZXJhdGlvbiAoZS5nICdtb2R1bGUgZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy1nby9jb25zdHJ1Y3RzL3YzJylcbiAgICBjb25zdCBtYXRjaCA9IGZzLnJlYWRGaWxlU3luYyhtb2RGaWxlKS50b1N0cmluZygpLm1hdGNoKC9tb2R1bGUgKC4qKS8pO1xuICAgIGlmICghbWF0Y2ggfHwgIW1hdGNoWzFdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlY3RlZCBtb2R1bGUgZGVjbGFyYXRpb24gaW4gJHttb2RGaWxlfWApO1xuICAgIH1cblxuICAgIC8vIGUuZyAnZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy1nby9jb25zdHJ1Y3RzL3YzJ1xuICAgIGNvbnN0IGNhbm5vbmljYWxOYW1lID0gbWF0Y2hbMV07XG5cbiAgICAvLyBlLmcgWydnaXRodWIuY29tJywgJ2F3cycsICdjb25zdHJ1Y3RzLWdvJywgJ2NvbnN0cnVjdHMnLCAndjMnXVxuICAgIGNvbnN0IGNhbm5vbmljYWxOYW1lUGFydHMgPSBjYW5ub25pY2FsTmFtZS5zcGxpdCgnLycpO1xuXG4gICAgLy8gZS5nICdnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzLWdvJ1xuICAgIGNvbnN0IHJlcG9VUkwgPSBjYW5ub25pY2FsTmFtZVBhcnRzLnNsaWNlKDAsIDMpLmpvaW4oJy8nKTtcblxuICAgIC8vIGUuZyAndjMnXG4gICAgY29uc3QgbWFqb3JWZXJzaW9uU3VmZml4ID0gbWFqb3JWZXJzaW9uID4gMSA/IGAvdiR7bWFqb3JWZXJzaW9ufWAgOiAnJztcblxuICAgIGlmICghY2Fubm9uaWNhbE5hbWUuZW5kc1dpdGgobWFqb3JWZXJzaW9uU3VmZml4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGVjbGFyYXRpb24gaW4gJyR7bW9kRmlsZX0nIGV4cGVjdGVkIHRvIGVuZCB3aXRoICcke21ham9yVmVyc2lvblN1ZmZpeH0nIHNpbmNlIGl0cyBtYWpvciB2ZXJzaW9uIGlzIGxhcmdlciB0aGFuIDFgKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcG9VUkwuc3RhcnRzV2l0aCgnZ2l0aHViLmNvbScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9zaXRvcnkgbXVzdCBiZSBob3N0ZWQgb24gZ2l0aHViLmNvbS4gRm91bmQ6ICcke3JlcG9VUkx9JyBpbiAke21vZEZpbGV9YCk7XG4gICAgfVxuXG4gICAgbGV0IHJlcG9QYXRoID0gY2Fubm9uaWNhbE5hbWVQYXJ0c1xuICAgICAgLnNsaWNlKDMpIC8vIGUuZyBbJ2NvbnN0cnVjdHMnLCAndjMnXVxuICAgICAgLmpvaW4oJy8nKTsgLy8gZS5nICdjb25zdHJ1Y3RzL3YzJ1xuXG4gICAgLy8gd2UgY291bGQgaGF2ZSBzb21ldGhpbmcgbGlrZVxuICAgIC8vIGNvbnN0cnVjdHMvdjNcbiAgICAvLyBvciBzb21ldGhpbmcgbGlrZVxuICAgIC8vIGNvbnN0cnVjdHN2My92M1xuICAgIC8vIHdlIG9ubHkgd2FudCB0byBzdHJpcCB0aGUgbGFzdCAndjMnXG4gICAgY29uc3Qgc3BsaXQgPSByZXBvUGF0aC5zcGxpdCgnLycpO1xuICAgIGlmIChzcGxpdFtzcGxpdC5sZW5ndGggLSAxXSA9PT0gYHYke21ham9yVmVyc2lvbn1gKSB7XG4gICAgICBzcGxpdC5wb3AoKTtcbiAgICAgIHJlcG9QYXRoID0gc3BsaXQuam9pbignLycpO1xuICAgIH1cblxuICAgIC8vIHN0cmlwICcvJyBpZiBleGlzdHMgKHdvbnQgZXhpc3QgZm9yIHRvcCBsZXZlbCBtb2R1bGVzKVxuICAgIHJlcG9QYXRoID0gcmVwb1BhdGguZW5kc1dpdGgoJy8nKSA/IHJlcG9QYXRoLnN1YnN0cigwLCByZXBvUGF0aC5sZW5ndGggLSAxKSA6IHJlcG9QYXRoO1xuXG4gICAgcmV0dXJuIHsgbW9kRmlsZSwgdmVyc2lvbiwgY2Fubm9uaWNhbE5hbWUsIHJlcG9QYXRoLCByZXBvVVJMIH07XG5cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUYWdOYW1lKG06IEdvTW9kdWxlKSB7XG4gICAgcmV0dXJuIG0ucmVwb1BhdGggPT09ICcnID8gYHYke20udmVyc2lvbn1gIDogYCR7bS5yZXBvUGF0aH0vdiR7bS52ZXJzaW9ufWA7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUmVsZWFzZU1lc3NhZ2UobW9kdWxlczogR29Nb2R1bGVbXSkge1xuICAgIGNvbnN0IHNlbWFudGljID0gJ2Nob3JlKHJlbGVhc2UpJztcbiAgICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBTZXQobW9kdWxlcy5tYXAobSA9PiBtLnZlcnNpb24pKTtcbiAgICBpZiAodmVyc2lvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgLy8gc2luZ2xlIHZlcnNpb24gKGUuZyBjaG9yZShyZWxlYXNlKTogdjEuMi4zKVxuICAgICAgcmV0dXJuIGAke3NlbWFudGljfTogdiR7dmVyc2lvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG11bHRpcGxlIHZlcnNpb25zIChlLmcgY2hvcmUocmVsZWFzZSk6IGNob3JlKHJlbGVhc2UpOiBtb2R1bGUxQHYxLjIuMyAgbW9kdWxlMkB2MS4yLjMpXG4gICAgICByZXR1cm4gYCR7c2VtYW50aWN9OiAke21vZHVsZXMubWFwKG0gPT4gYCR7bS5yZXBvUGF0aCA/IGAke20ucmVwb1BhdGh9QGAgOiAnJ312JHttLnZlcnNpb259YCkuam9pbignICcpfWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jUmVwbyhyZXBvRGlyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0b3BMZXZlbCA9IHBhdGguam9pbihyZXBvRGlyLCAnZ28ubW9kJyk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmModG9wTGV2ZWwpKSB7XG4gICAgICAvLyB3aXRoIHRvcCBsZXZlbCBtb2R1bGVzIHdlIHN5bmMgdGhlIGVudGlyZSByZXBvc2l0b3J5XG4gICAgICAvLyBzbyB3ZSBqdXN0IGVtcHR5IGl0IG91dFxuICAgICAgZnMucmVhZGRpclN5bmMocmVwb0RpcilcbiAgICAgICAgLmZpbHRlcihmID0+IGYgIT09ICcuZ2l0JylcbiAgICAgICAgLmZvckVhY2goZiA9PiBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihyZXBvRGlyLCBmKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvdGhlcndpc2UsIHdlIHNlbGVjdGl2ZWx5IHJlbW92ZSB0aGUgc3VibW9kdWxlcyBvbmx5LlxuICAgICAgZm9yIChjb25zdCBwIG9mIGZzLnJlYWRkaXJTeW5jKHJlcG9EaXIpKSB7XG4gICAgICAgIGNvbnN0IHN1Ym1vZHVsZSA9IHBhdGguam9pbihyZXBvRGlyLCBwLCAnZ28ubW9kJyk7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHN1Ym1vZHVsZSkpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihyZXBvRGlyLCBwKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnMuY29weVN5bmModGhpcy5kaXIsIHJlcG9EaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UmVwb1VSTChtb2R1bGVzOiBHb01vZHVsZVtdKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXBvcyA9IG5ldyBTZXQ8c3RyaW5nPihtb2R1bGVzLm1hcChtID0+IG0ucmVwb1VSTCkpO1xuICAgIGlmIChyZXBvcy5zaXplID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlY3QgcmVwb3NpdG9yeSBmcm9tIG1vZHVsZSBmaWxlcy4nKTtcbiAgICB9XG4gICAgaWYgKHJlcG9zLnNpemUgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpcGxlIHJlcG9zaXRvcmllcyBmb3VuZCBpbiBtb2R1bGUgZmlsZXMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcG9zLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFZlcnNpb24obW9kdWxlRGlyZWN0b3J5OiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdmVyc2lvbkZpbGUgPSBwYXRoLmpvaW4obW9kdWxlRGlyZWN0b3J5LCAndmVyc2lvbicpO1xuXG4gICAgY29uc3QgcmVwb1ZlcnNpb24gPSB0aGlzLnZlcnNpb247XG4gICAgY29uc3QgbW9kdWxlVmVyc2lvbiA9IGZzLmV4aXN0c1N5bmModmVyc2lvbkZpbGUpID8gZnMucmVhZEZpbGVTeW5jKHZlcnNpb25GaWxlKS50b1N0cmluZygpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHJlcG9WZXJzaW9uICYmIG1vZHVsZVZlcnNpb24gJiYgcmVwb1ZlcnNpb24gIT09IG1vZHVsZVZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwbyB2ZXJzaW9uICgke3JlcG9WZXJzaW9ufSkgY29uZmxpY3RzIHdpdGggbW9kdWxlIHZlcnNpb24gKCR7bW9kdWxlVmVyc2lvbn0pIGZvciBtb2R1bGUgaW4gJHttb2R1bGVEaXJlY3Rvcnl9YCk7XG4gICAgfVxuXG4gICAgLy8ganVzdCB0YWtlIHRoZSBvbmUgdGhhdHMgZGVmaW5lZCwgdGhleSBoYXZlIHRvIHRoZSBzYW1lIGlmIGJvdGggYXJlLlxuICAgIGNvbnN0IHZlcnNpb24gPSBtb2R1bGVWZXJzaW9uID8gbW9kdWxlVmVyc2lvbiA6IHJlcG9WZXJzaW9uO1xuXG4gICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlcm1pbmUgdmVyc2lvbiBvZiBtb2R1bGUgJHttb2R1bGVEaXJlY3Rvcnl9LiBgXG4gICAgICAgICsgXCJFaXRoZXIgaW5jbHVkZSBhICd2ZXJzaW9uJyBmaWxlLCBvciBzcGVjaWZ5IGEgZ2xvYmFsIHZlcnNpb24gdXNpbmcgdGhlIFZFUlNJT04gZW52aXJvbm1lbnQgdmFyaWFibGUuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJzaW9uO1xuXG4gIH1cblxufVxuIl19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0cy9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsaURBQW1DO0FBQ25DLCtDQUFpQztBQUNqQyxxREFBdUM7QUE0R3ZDOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBV3JCLFlBQVksS0FBc0I7O1FBRWhDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztTQUMzRjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBQSxLQUFLLENBQUMsR0FBRyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxLQUFLLENBQUMsTUFBTSxtQ0FBSSxLQUFLLENBQUM7UUFFcEMsTUFBTSxXQUFXLEdBQUcsTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsTUFBQSxLQUFLLENBQUMsS0FBSyxtQ0FBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFD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QUFDLENBQUM7UUFFMUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFdkcsSUFBSSxXQUFXLElBQUksYUFBYSxJQUFJLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsV0FBVyxvQ0FBb0MsYUFBYSxtQkFBbUIsZUFBZSxFQUFFLENBQUMsQ0FBQztTQUNwSTtRQUVELHNFQUFzRTtRQUN0RSxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBRTVELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxlQUFlLElBQUk7a0JBQ3hFLHNHQUFzRyxDQUFDLENBQUM7U0FDN0c7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUVqQixDQUFDO0NBRUY7QUFsUEQsZ0NBa1BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIGdpdCBmcm9tICcuLi9oZWxwL2dpdCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICcuLi9oZWxwL29zJztcbmltcG9ydCAqIGFzIHNoZWxsIGZyb20gJy4uL2hlbHAvc2hlbGwnO1xuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWxlYXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdvUmVsZWFzZSB7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRoZSByZWxlYXNlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBjb21taXQgbWVzc2FnZSBvZiB0aGUgcmVsZWFzZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHJlcG9zaXRvcnkgd2FzIHJlbGVhc2VkIGZyb20uXG4gICAqL1xuICByZWFkb25seSByZXBvRGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBHb1JlbGVhc2VyYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHb1JlbGVhc2VyUHJvcHMge1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGNvZGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZGlzdC9nbydcbiAgICovXG4gIHJlYWRvbmx5IGRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogRXhlY3V0ZSBhIGRyeSBydW4gb25seS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2ggdG8gcHVzaCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21haW4nXG4gICAqL1xuICByZWFkb25seSBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VybmFtZSB0byB1c2UgZm9yIHRoZSBjb21taXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFrZW4gZnJvbSBnaXQgY29uZmlnLiB0aHJvd3MgaWYgbm90IGNvbmZpZ3VyZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VybmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVtYWlsIHRvIHVzZSBmb3IgdGhlIGNvbW1pdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YWtlbiBmcm9tIGdpdCBjb25maWcuIHRocm93cyBpZiBub3QgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YWtlbiBmcm9tIHRoZSAndmVyc2lvbicuIHRocm93cyBpZiBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdG8gdXNlIGZvciB0aGUgY29tbWl0IG1hcmtpbmcgdGhlIHJlbGVhc2UuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgbW9kdWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdvTW9kdWxlIHtcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgbW9kIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBtb2RGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5ub25pY2FsIG5hbWUgb2YgdGhlIG1vZHVsZS4gKGUuZyAnZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy1nby9jb25zdHJ1Y3RzL3YzYClcbiAgICovXG4gIHJlYWRvbmx5IGNhbm5vbmljYWxOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIGluc2lkZSB0aGUgcmVwb3NpdG9yeSB0aGUgbW9kdWxlIGlzIGxvY2F0ZWQgaW4uIChlLmcgJ2NvbnN0cnVjdHMnKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb1BhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgVVJMLiAoZS5nICdnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzJylcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9VUkw6IHN0cmluZztcblxufVxuXG4vKipcbiAqIFJlbGVhc2UgYSBzZXQgb2YgR29sYW5nIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHb1JlbGVhc2VyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0Q29tbWl0TWVzc2FnZT86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRyeVJ1bjogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRCcmFuY2g6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRVc2VybmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGdpdFVzZXJlbWFpbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBHb1JlbGVhc2VyUHJvcHMpIHtcblxuICAgIGlmICghc2hlbGwud2hpY2goJ2dpdCcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dpdCBtdXN0IGJlIGF2YWlsYWJsZSB0byBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHB1c2ggR28gY29kZSB0byBHaXRIdWInKTtcbiAgICB9XG5cbiAgICB0aGlzLnZlcnNpb24gPSBwcm9wcy52ZXJzaW9uO1xuICAgIHRoaXMuZ2l0Q29tbWl0TWVzc2FnZSA9IHByb3BzLm1lc3NhZ2U7XG4gICAgdGhpcy5kaXIgPSBwYXRoLnJlc29sdmUocHJvcHMuZGlyID8/IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnZGlzdCcsICdnbycpKTtcbiAgICB0aGlzLmdpdEJyYW5jaCA9IHByb3BzLmJyYW5jaCA/PyAnbWFpbic7XG4gICAgdGhpcy5kcnlSdW4gPSBwcm9wcy5kcnlSdW4gPz8gZmFsc2U7XG5cbiAgICBjb25zdCBnaXRVc2VybmFtZSA9IHByb3BzLnVzZXJuYW1lID8/IGdpdC51c2VybmFtZSgpO1xuICAgIGNvbnN0IGdpdFVzZXJlbWFpbCA9IHByb3BzLmVtYWlsID8/IGdpdC5lbWFpbCgpO1xuXG4gICAgaWYgKCFnaXRVc2VybmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGV0ZWN0IHVzZXJuYW1lLiBlaXRoZXIgY29uZmlndXJlIGEgZ2l0IHVzZXIubmFtZSBvciBwYXNzIEdJVF9VU0VSX05BTUUgZW52IHZhcmlhYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFnaXRVc2VyZW1haWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCB1c2VyIGVtYWlsLiBlaXRoZXIgY29uZmlndXJlIGEgZ2l0IHVzZXIuZW1haWwgb3IgcGFzcyBHSVRfVVNFUl9FTUFJTCBlbnYgdmFyaWFibGUnKTtcbiAgICB9XG5cbiAgICB0aGlzLmdpdFVzZXJlbWFpbCA9IGdpdFVzZXJlbWFpbDtcbiAgICB0aGlzLmdpdFVzZXJuYW1lID0gZ2l0VXNlcm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSByZWxlYXNlIHByb2Nlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIHJlbGVhc2UoKTogR29SZWxlYXNlIHtcbiAgICBjb25zdCBtb2R1bGVzID0gdGhpcy5jb2xsZWN0TW9kdWxlcyh0aGlzLmRpcik7XG4gICAgaWYgKG1vZHVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gbW9kdWxlcyBkZXRlY3RlZC4gU2tpcHBpbmcnKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnRGV0ZWN0ZWQgbW9kdWxlczonKTtcbiAgICBtb2R1bGVzLmZvckVhY2gobSA9PiBjb25zb2xlLmxvZyhgIC0gJHttLm1vZEZpbGV9YCkpO1xuXG4gICAgY29uc3QgcmVwb1VSTCA9IHRoaXMuZXh0cmFjdFJlcG9VUkwobW9kdWxlcyk7XG4gICAgY29uc3QgcmVwb0RpciA9IHBhdGguam9pbihvcy5ta2R0ZW1wU3luYygpLCAncmVwbycpO1xuICAgIGdpdC5jbG9uZShyZXBvVVJMLCByZXBvRGlyKTtcblxuICAgIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgdHJ5IHtcbiAgICAgIHByb2Nlc3MuY2hkaXIocmVwb0Rpcik7XG4gICAgICByZXR1cm4gdGhpcy5kb1JlbGVhc2UobW9kdWxlcywgcmVwb0Rpcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHByb2Nlc3MuY2hkaXIoY3dkKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgZG9SZWxlYXNlKG1vZHVsZXM6IEdvTW9kdWxlW10sIHJlcG9EaXI6IHN0cmluZyk6IEdvUmVsZWFzZSB7XG5cbiAgICBnaXQuaWRlbnRpZnkodGhpcy5naXRVc2VybmFtZSwgdGhpcy5naXRVc2VyZW1haWwpO1xuICAgIGdpdC5jaGVja291dCh0aGlzLmdpdEJyYW5jaCwgeyBjcmVhdGVJZk1pc3Npbmc6IHRydWUgfSk7XG4gICAgdGhpcy5zeW5jUmVwbyhyZXBvRGlyKTtcblxuICAgIGdpdC5hZGQoJy4nKTtcbiAgICBpZiAoIWdpdC5kaWZmSW5kZXgoKSkge1xuICAgICAgY29uc29sZS5sb2coJ05vIGNoYW5nZXMuIFNraXBwaW5nIHJlbGVhc2UnKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21taXRNZXNzYWdlID0gdGhpcy5naXRDb21taXRNZXNzYWdlID8/IHRoaXMuYnVpbGRSZWxlYXNlTWVzc2FnZShtb2R1bGVzKTtcbiAgICBnaXQuY29tbWl0KGNvbW1pdE1lc3NhZ2UpO1xuXG4gICAgY29uc3QgdGFncyA9IFtdO1xuICAgIGZvciAoY29uc3QgbW9kdWxlIG9mIG1vZHVsZXMpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmJ1aWxkVGFnTmFtZShtb2R1bGUpO1xuICAgICAgY29uc3QgY3JlYXRlZCA9IGdpdC50YWcobmFtZSk7XG4gICAgICBpZiAoY3JlYXRlZCkgeyB0YWdzLnB1c2gobmFtZSk7IH1cbiAgICB9XG5cbiAgICBpZiAodGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdBbGwgdGFncyBhbHJlYWR5IGV4aXN0LiBTa2lwcGluZyByZWxlYXNlJyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgcmVmcyA9IFsuLi50YWdzLCB0aGlzLmdpdEJyYW5jaF07XG5cbiAgICBpZiAodGhpcy5kcnlSdW4pIHtcbiAgICAgIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gICAgICBjb25zb2xlLmxvZygnICAgICAgICAgICAg8J+PnO+4jyBEUlktUlVOIE1PREUg8J+PnO+4jycpO1xuICAgICAgY29uc29sZS5sb2coJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgICAgIHJlZnMuZm9yRWFjaCh0ID0+IGNvbnNvbGUubG9nKGBSZW1vdGUgcmVmIHdpbGwgYmUgdXBkYXRlZDogJHt0fWApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVmcy5mb3JFYWNoKHQgPT4gZ2l0LnB1c2godCkpO1xuICAgIH1cbiAgICByZXR1cm4geyB0YWdzLCBjb21taXRNZXNzYWdlLCByZXBvRGlyIH07XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3RNb2R1bGVzKGRpcjogc3RyaW5nKTogR29Nb2R1bGVbXSB7XG4gICAgY29uc3QgbW9kdWxlczogR29Nb2R1bGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcCBvZiBbLi4uZnMucmVhZGRpclN5bmMoZGlyKSwgJy4nXSkge1xuICAgICAgY29uc3QgbW9kRmlsZSA9IHBhdGguam9pbihkaXIsIHAsICdnby5tb2QnKTtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKG1vZEZpbGUpKSB7XG4gICAgICAgIG1vZHVsZXMucHVzaCh0aGlzLnBhcnNlTW9kdWxlKG1vZEZpbGUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZXM7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTW9kdWxlKG1vZEZpbGU6IHN0cmluZyk6IEdvTW9kdWxlIHtcblxuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmV4dHJhY3RWZXJzaW9uKHBhdGguZGlybmFtZShtb2RGaWxlKSk7XG4gICAgY29uc3QgbWFqb3JWZXJzaW9uID0gTnVtYmVyKHZlcnNpb24uc3BsaXQoJy4nKVswXSk7XG5cbiAgICAvLyBleHRyYWN0IHRoZSBtb2R1bGUgZGVjbGVyYXRpb24gKGUuZyAnbW9kdWxlIGdpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMtZ28vY29uc3RydWN0cy92MycpXG4gICAgY29uc3QgbWF0Y2ggPSBmcy5yZWFkRmlsZVN5bmMobW9kRmlsZSkudG9TdHJpbmcoKS5tYXRjaCgvbW9kdWxlICguKikvKTtcbiAgICBpZiAoIW1hdGNoIHx8ICFtYXRjaFsxXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0ZWN0ZWQgbW9kdWxlIGRlY2xhcmF0aW9uIGluICR7bW9kRmlsZX1gKTtcbiAgICB9XG5cbiAgICAvLyBlLmcgJ2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMtZ28vY29uc3RydWN0cy92MydcbiAgICBjb25zdCBjYW5ub25pY2FsTmFtZSA9IG1hdGNoWzFdO1xuXG4gICAgLy8gZS5nIFsnZ2l0aHViLmNvbScsICdhd3MnLCAnY29uc3RydWN0cy1nbycsICdjb25zdHJ1Y3RzJywgJ3YzJ11cbiAgICBjb25zdCBjYW5ub25pY2FsTmFtZVBhcnRzID0gY2Fubm9uaWNhbE5hbWUuc3BsaXQoJy8nKTtcblxuICAgIC8vIGUuZyAnZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy1nbydcbiAgICBjb25zdCByZXBvVVJMID0gY2Fubm9uaWNhbE5hbWVQYXJ0cy5zbGljZSgwLCAzKS5qb2luKCcvJyk7XG5cbiAgICAvLyBlLmcgJ3YzJ1xuICAgIGNvbnN0IG1ham9yVmVyc2lvblN1ZmZpeCA9IG1ham9yVmVyc2lvbiA+IDEgPyBgL3Yke21ham9yVmVyc2lvbn1gIDogJyc7XG5cbiAgICBpZiAoIWNhbm5vbmljYWxOYW1lLmVuZHNXaXRoKG1ham9yVmVyc2lvblN1ZmZpeCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kdWxlIGRlY2xhcmF0aW9uIGluICcke21vZEZpbGV9JyBleHBlY3RlZCB0byBlbmQgd2l0aCAnJHttYWpvclZlcnNpb25TdWZmaXh9JyBzaW5jZSBpdHMgbWFqb3IgdmVyc2lvbiBpcyBsYXJnZXIgdGhhbiAxYCk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXBvVVJMLnN0YXJ0c1dpdGgoJ2dpdGh1Yi5jb20nKSkge1xuICAgICAgaWYgKCEoZ2l0LmRldGVjdFNTSCgpIHx8IGdpdC5kZXRlY3RHSEUoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvc2l0b3J5IG11c3QgYmUgaG9zdGVkIG9uIGdpdGh1Yi5jb20uIEZvdW5kOiAnJHtyZXBvVVJMfScgaW4gJHttb2RGaWxlfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVwb1BhdGggPSBjYW5ub25pY2FsTmFtZVBhcnRzXG4gICAgICAuc2xpY2UoMykgLy8gZS5nIFsnY29uc3RydWN0cycsICd2MyddXG4gICAgICAuam9pbignLycpOyAvLyBlLmcgJ2NvbnN0cnVjdHMvdjMnXG5cbiAgICAvLyB3ZSBjb3VsZCBoYXZlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gY29uc3RydWN0cy92M1xuICAgIC8vIG9yIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gY29uc3RydWN0c3YzL3YzXG4gICAgLy8gd2Ugb25seSB3YW50IHRvIHN0cmlwIHRoZSBsYXN0ICd2MydcbiAgICBjb25zdCBzcGxpdCA9IHJlcG9QYXRoLnNwbGl0KCcvJyk7XG4gICAgaWYgKHNwbGl0W3NwbGl0Lmxlbmd0aCAtIDFdID09PSBgdiR7bWFqb3JWZXJzaW9ufWApIHtcbiAgICAgIHNwbGl0LnBvcCgpO1xuICAgICAgcmVwb1BhdGggPSBzcGxpdC5qb2luKCcvJyk7XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgJy8nIGlmIGV4aXN0cyAod29udCBleGlzdCBmb3IgdG9wIGxldmVsIG1vZHVsZXMpXG4gICAgcmVwb1BhdGggPSByZXBvUGF0aC5lbmRzV2l0aCgnLycpID8gcmVwb1BhdGguc3Vic3RyKDAsIHJlcG9QYXRoLmxlbmd0aCAtIDEpIDogcmVwb1BhdGg7XG5cbiAgICByZXR1cm4geyBtb2RGaWxlLCB2ZXJzaW9uLCBjYW5ub25pY2FsTmFtZSwgcmVwb1BhdGgsIHJlcG9VUkwgfTtcblxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRhZ05hbWUobTogR29Nb2R1bGUpIHtcbiAgICByZXR1cm4gbS5yZXBvUGF0aCA9PT0gJycgPyBgdiR7bS52ZXJzaW9ufWAgOiBgJHttLnJlcG9QYXRofS92JHttLnZlcnNpb259YDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSZWxlYXNlTWVzc2FnZShtb2R1bGVzOiBHb01vZHVsZVtdKSB7XG4gICAgY29uc3Qgc2VtYW50aWMgPSAnY2hvcmUocmVsZWFzZSknO1xuICAgIGNvbnN0IHZlcnNpb25zID0gbmV3IFNldChtb2R1bGVzLm1hcChtID0+IG0udmVyc2lvbikpO1xuICAgIGlmICh2ZXJzaW9ucy5zaXplID09PSAxKSB7XG4gICAgICAvLyBzaW5nbGUgdmVyc2lvbiAoZS5nIGNob3JlKHJlbGVhc2UpOiB2MS4yLjMpXG4gICAgICByZXR1cm4gYCR7c2VtYW50aWN9OiB2JHt2ZXJzaW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbXVsdGlwbGUgdmVyc2lvbnMgKGUuZyBjaG9yZShyZWxlYXNlKTogY2hvcmUocmVsZWFzZSk6IG1vZHVsZTFAdjEuMi4zICBtb2R1bGUyQHYxLjIuMylcbiAgICAgIHJldHVybiBgJHtzZW1hbnRpY306ICR7bW9kdWxlcy5tYXAobSA9PiBgJHttLnJlcG9QYXRoID8gYCR7bS5yZXBvUGF0aH1AYCA6ICcnfXYke20udmVyc2lvbn1gKS5qb2luKCcgJyl9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNSZXBvKHJlcG9EaXI6IHN0cmluZykge1xuICAgIGNvbnN0IHRvcExldmVsID0gcGF0aC5qb2luKHJlcG9EaXIsICdnby5tb2QnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0b3BMZXZlbCkpIHtcbiAgICAgIC8vIHdpdGggdG9wIGxldmVsIG1vZHVsZXMgd2Ugc3luYyB0aGUgZW50aXJlIHJlcG9zaXRvcnlcbiAgICAgIC8vIHNvIHdlIGp1c3QgZW1wdHkgaXQgb3V0XG4gICAgICBmcy5yZWFkZGlyU3luYyhyZXBvRGlyKVxuICAgICAgICAuZmlsdGVyKGYgPT4gZiAhPT0gJy5naXQnKVxuICAgICAgICAuZm9yRWFjaChmID0+IGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHJlcG9EaXIsIGYpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSwgd2Ugc2VsZWN0aXZlbHkgcmVtb3ZlIHRoZSBzdWJtb2R1bGVzIG9ubHkuXG4gICAgICBmb3IgKGNvbnN0IHAgb2YgZnMucmVhZGRpclN5bmMocmVwb0RpcikpIHtcbiAgICAgICAgY29uc3Qgc3VibW9kdWxlID0gcGF0aC5qb2luKHJlcG9EaXIsIHAsICdnby5tb2QnKTtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3VibW9kdWxlKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHJlcG9EaXIsIHApKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmcy5jb3B5U3luYyh0aGlzLmRpciwgcmVwb0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RSZXBvVVJMKG1vZHVsZXM6IEdvTW9kdWxlW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlcG9zID0gbmV3IFNldDxzdHJpbmc+KG1vZHVsZXMubWFwKG0gPT4gbS5yZXBvVVJMKSk7XG4gICAgaWYgKHJlcG9zLnNpemUgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCByZXBvc2l0b3J5IGZyb20gbW9kdWxlIGZpbGVzLicpO1xuICAgIH1cbiAgICBpZiAocmVwb3Muc2l6ZSA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVsdGlwbGUgcmVwb3NpdG9yaWVzIGZvdW5kIGluIG1vZHVsZSBmaWxlcycpO1xuICAgIH1cbiAgICByZXR1cm4gcmVwb3MudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0VmVyc2lvbihtb2R1bGVEaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHBhdGguam9pbihtb2R1bGVEaXJlY3RvcnksICd2ZXJzaW9uJyk7XG5cbiAgICBjb25zdCByZXBvVmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgICBjb25zdCBtb2R1bGVWZXJzaW9uID0gZnMuZXhpc3RzU3luYyh2ZXJzaW9uRmlsZSkgPyBmcy5yZWFkRmlsZVN5bmModmVyc2lvbkZpbGUpLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocmVwb1ZlcnNpb24gJiYgbW9kdWxlVmVyc2lvbiAmJiByZXBvVmVyc2lvbiAhPT0gbW9kdWxlVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvIHZlcnNpb24gKCR7cmVwb1ZlcnNpb259KSBjb25mbGljdHMgd2l0aCBtb2R1bGUgdmVyc2lvbiAoJHttb2R1bGVWZXJzaW9ufSkgZm9yIG1vZHVsZSBpbiAke21vZHVsZURpcmVjdG9yeX1gKTtcbiAgICB9XG5cbiAgICAvLyBqdXN0IHRha2UgdGhlIG9uZSB0aGF0cyBkZWZpbmVkLCB0aGV5IGhhdmUgdG8gdGhlIHNhbWUgaWYgYm90aCBhcmUuXG4gICAgY29uc3QgdmVyc2lvbiA9IG1vZHVsZVZlcnNpb24gPyBtb2R1bGVWZXJzaW9uIDogcmVwb1ZlcnNpb247XG5cbiAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVybWluZSB2ZXJzaW9uIG9mIG1vZHVsZSAke21vZHVsZURpcmVjdG9yeX0uIGBcbiAgICAgICAgKyBcIkVpdGhlciBpbmNsdWRlIGEgJ3ZlcnNpb24nIGZpbGUsIG9yIHNwZWNpZnkgYSBnbG9iYWwgdmVyc2lvbiB1c2luZyB0aGUgVkVSU0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnNpb247XG5cbiAgfVxuXG59XG4iXX0=
package/package.json CHANGED
@@ -53,7 +53,7 @@
53
53
  "organization": true
54
54
  },
55
55
  "devDependencies": {
56
- "@aws-sdk/client-sts": "^3.554.0",
56
+ "@aws-sdk/client-sts": "^3.556.0",
57
57
  "@types/glob": "^8.1.0",
58
58
  "@types/jest": "^27.5.2",
59
59
  "@types/node": "^18",
@@ -67,15 +67,15 @@
67
67
  "eslint-plugin-import": "^2.29.1",
68
68
  "jest": "^27.5.1",
69
69
  "jest-junit": "^15",
70
- "projen": "^0.81.0",
70
+ "projen": "^0.81.1",
71
71
  "standard-version": "^9",
72
72
  "ts-jest": "^27.1.5",
73
73
  "ts-node": "^10.9.2",
74
74
  "typescript": "~4.9.5"
75
75
  },
76
76
  "dependencies": {
77
- "@aws-sdk/client-codeartifact": "^3.554.0",
78
- "@aws-sdk/credential-providers": "^3.554.0",
77
+ "@aws-sdk/client-codeartifact": "^3.556.0",
78
+ "@aws-sdk/credential-providers": "^3.556.0",
79
79
  "@aws-sdk/types": "^3.535.0",
80
80
  "@types/fs-extra": "^8.0.0",
81
81
  "fs-extra": "^8.0.0",
@@ -87,7 +87,7 @@
87
87
  "main": "lib/index.js",
88
88
  "license": "Apache-2.0",
89
89
  "homepage": "https://github.com/cdklabs/publib",
90
- "version": "0.2.817",
90
+ "version": "0.2.819",
91
91
  "jest": {
92
92
  "testMatch": [
93
93
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",
package/package.json.bak CHANGED
@@ -53,7 +53,7 @@
53
53
  "organization": true
54
54
  },
55
55
  "devDependencies": {
56
- "@aws-sdk/client-sts": "^3.554.0",
56
+ "@aws-sdk/client-sts": "^3.556.0",
57
57
  "@types/glob": "^8.1.0",
58
58
  "@types/jest": "^27.5.2",
59
59
  "@types/node": "^18",
@@ -67,15 +67,15 @@
67
67
  "eslint-plugin-import": "^2.29.1",
68
68
  "jest": "^27.5.1",
69
69
  "jest-junit": "^15",
70
- "projen": "^0.81.0",
70
+ "projen": "^0.81.1",
71
71
  "standard-version": "^9",
72
72
  "ts-jest": "^27.1.5",
73
73
  "ts-node": "^10.9.2",
74
74
  "typescript": "~4.9.5"
75
75
  },
76
76
  "dependencies": {
77
- "@aws-sdk/client-codeartifact": "^3.554.0",
78
- "@aws-sdk/credential-providers": "^3.554.0",
77
+ "@aws-sdk/client-codeartifact": "^3.556.0",
78
+ "@aws-sdk/credential-providers": "^3.556.0",
79
79
  "@aws-sdk/types": "^3.535.0",
80
80
  "@types/fs-extra": "^8.0.0",
81
81
  "fs-extra": "^8.0.0",
@@ -87,7 +87,7 @@
87
87
  "main": "lib/index.js",
88
88
  "license": "Apache-2.0",
89
89
  "homepage": "https://github.com/cdklabs/publib",
90
- "version": "0.2.817",
90
+ "version": "0.2.819",
91
91
  "jest": {
92
92
  "testMatch": [
93
93
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",