gitlab-ci-local 4.26.2 → 4.27.1

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
@@ -32,6 +32,7 @@ Get rid of all those dev specific shell scripts and make files.
32
32
  * [Quirks](#quirks)
33
33
  * [Tracked Files](#tracked-files)
34
34
  * [Home Variables](#home-variables)
35
+ * [Project Variables](#project-variables)
35
36
  * [Decorators](#decorators)
36
37
  * [Artifacts](#artifacts)
37
38
  * [Development](#development)
@@ -135,6 +136,20 @@ global:
135
136
 
136
137
  Variables will now appear in your jobs, if project or group matches git remote, global's are always present
137
138
 
139
+ ### Project variables
140
+
141
+ Put a file like this in `$CWD/.gitlab-ci-local-variables.yml`
142
+
143
+ ```yaml
144
+ ---
145
+ AUTHORIZATION_PASSWORD: djwqiod910321
146
+ DOCKER_LOGIN_PASSWORD: dij3213n123n12in3
147
+ # Will be type File, because value is a file path
148
+ KNOWN_HOSTS: '~/.ssh/known_hosts'
149
+ ```
150
+
151
+ Variables will now appear in your jobs.
152
+
138
153
  ### Decorators
139
154
 
140
155
  #### The `@Description` decorator
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Tired of pushing to test your .gitlab-ci.yml?",
4
4
  "main": "src/index.js",
5
5
  "bin": "src/index.js",
6
- "version": "4.26.2",
6
+ "version": "4.27.1",
7
7
  "scripts": {
8
8
  "prepublishOnly": "npm run check-all && chmod +x src/index.js",
9
9
  "pkg-linux": "pkg src/index.js --public -t node16-linux-x64 -o bin/linux/gitlab-ci-local && chmod +x bin/linux/gitlab-ci-local && gzip -c bin/linux/gitlab-ci-local > bin/linux.gz",
@@ -20,41 +20,39 @@
20
20
  "start": "ts-node --log-error src/index.ts --cwd examples/docker-compose-nodejs"
21
21
  },
22
22
  "dependencies": {
23
+ "axios": "^0.24.0",
23
24
  "base64url": "^3.0.1",
24
- "camelcase": "^6.2.0",
25
+ "camelcase": "^6.2.1",
25
26
  "chalk": "^4.1.2",
26
27
  "checksum": "^1.0.0",
27
28
  "deep-extend": "^0.6.0",
28
29
  "dotenv": "^10.0.0",
29
30
  "fs-extra": "^10.0.0",
30
31
  "js-yaml": "^4.1.0",
31
- "node-fetch": "^2.6.5",
32
32
  "pretty-hrtime": "^1.0.3",
33
- "source-map-support": "^0.5.20",
34
- "yargs": "^17.2.1"
33
+ "source-map-support": "^0.5.21",
34
+ "yargs": "^17.3.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@types/chalk": "2.2.0",
38
37
  "@types/checksum": "0.1.33",
39
38
  "@types/deep-extend": "0.4.32",
40
39
  "@types/fs-extra": "9.0.13",
41
- "@types/jest": "27.0.2",
40
+ "@types/jest": "27.0.3",
42
41
  "@types/jest-when": "2.7.3",
43
- "@types/js-yaml": "4.0.4",
44
- "@types/node-fetch": "2.5.12",
42
+ "@types/js-yaml": "4.0.5",
45
43
  "@types/pretty-hrtime": "1.0.1",
46
44
  "@types/source-map-support": "0.5.4",
47
- "@types/yargs": "17.0.5",
48
- "@typescript-eslint/eslint-plugin": "5.3.1",
49
- "@typescript-eslint/parser": "5.3.1",
45
+ "@types/yargs": "17.0.7",
46
+ "@typescript-eslint/eslint-plugin": "5.7.0",
47
+ "@typescript-eslint/parser": "5.7.0",
50
48
  "depcheck": "1.4.2",
51
- "eslint": "8.2.0",
52
- "jest": "27.3.1",
53
- "jest-when": "3.4.2",
54
- "pkg": "5.4.1",
55
- "ts-jest": "27.0.7",
49
+ "eslint": "8.4.1",
50
+ "jest": "27.4.5",
51
+ "jest-when": "3.5.0",
52
+ "pkg": "5.5.1",
53
+ "ts-jest": "27.1.1",
56
54
  "ts-node": "10.4.0",
57
- "typescript": "4.4.4"
55
+ "typescript": "4.5.4"
58
56
  },
59
57
  "engines": {
60
58
  "node": ">=16.10.0"
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheEntry = void 0;
4
+ const utils_1 = require("./utils");
5
+ class CacheEntry {
6
+ constructor(key, paths, policy) {
7
+ this.key = key;
8
+ this.policy = policy;
9
+ this.paths = paths;
10
+ }
11
+ async getUniqueCacheName(cwd, env) {
12
+ if (typeof this.key === "string" || this.key == null) {
13
+ return utils_1.Utils.expandText(this.key ?? "default");
14
+ }
15
+ return "md-" + await utils_1.Utils.checksumFiles(this.key.files.map(f => {
16
+ return `${cwd}/${utils_1.Utils.expandText(f, env)}`;
17
+ }));
18
+ }
19
+ }
20
+ exports.CacheEntry = CacheEntry;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtZW50cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjYWNoZS1lbnRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBOEI7QUFFOUIsTUFBYSxVQUFVO0lBS25CLFlBQVksR0FBaUMsRUFBRSxLQUFlLEVBQUUsTUFBcUM7UUFDakcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxHQUE4QjtRQUNoRSxJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDbEQsT0FBTyxhQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLENBQUM7U0FDbEQ7UUFDRCxPQUFPLEtBQUssR0FBRyxNQUFNLGFBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVELE9BQU8sR0FBRyxHQUFHLElBQUksYUFBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztDQUVKO0FBcEJELGdDQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBDYWNoZUVudHJ5IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5OiBcInB1bGxcIiB8IFwicHVsbC1wdXNoXCIgfCBcInB1c2hcIjtcbiAgICBwdWJsaWMgcmVhZG9ubHkga2V5OiBzdHJpbmcgfCB7IGZpbGVzOiBzdHJpbmdbXSB9O1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoczogc3RyaW5nW107XG5cbiAgICBjb25zdHJ1Y3RvcihrZXk6IHN0cmluZyB8IHsgZmlsZXM6IHN0cmluZ1tdIH0sIHBhdGhzOiBzdHJpbmdbXSwgcG9saWN5OiBcInB1bGxcIiB8IFwicHVsbC1wdXNoXCIgfCBcInB1c2hcIikge1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICAgICAgdGhpcy5wb2xpY3kgPSBwb2xpY3k7XG4gICAgICAgIHRoaXMucGF0aHMgPSBwYXRocztcbiAgICB9XG5cbiAgICBhc3luYyBnZXRVbmlxdWVDYWNoZU5hbWUoY3dkOiBzdHJpbmcsIGVudjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2V5ID09PSBcInN0cmluZ1wiIHx8IHRoaXMua2V5ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBVdGlscy5leHBhbmRUZXh0KHRoaXMua2V5ID8/IFwiZGVmYXVsdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJtZC1cIiArIGF3YWl0IFV0aWxzLmNoZWNrc3VtRmlsZXModGhpcy5rZXkuZmlsZXMubWFwKGYgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2N3ZH0vJHtVdGlscy5leHBhbmRUZXh0KGYsIGVudil9YDtcbiAgICAgICAgfSkpO1xuICAgIH1cblxufVxuIl19
package/src/git-data.js CHANGED
@@ -18,7 +18,7 @@ class GitData {
18
18
  return `${this.remote.group}/${this.remote.project}`;
19
19
  }
20
20
  get CI_REGISTRY() {
21
- return `local-registry.${this.remote.domain}`;
21
+ return `local-registry.${this.remote.host}`;
22
22
  }
23
23
  get CI_REGISTRY_IMAGE() {
24
24
  return `${this.CI_REGISTRY}/${this.CI_PROJECT_PATH}`;
@@ -64,10 +64,11 @@ class GitData {
64
64
  static async getRemoteData(cwd, writeStreams) {
65
65
  try {
66
66
  const { stdout: gitRemote } = await utils_1.Utils.spawn("git remote -v", cwd);
67
- const gitRemoteMatch = gitRemote.match(/.*(?:http[s]?:\/\/|@)(?<domain>[^:/]*)((:\d+\/)|:|\/)(?<group>.*)\/(?<project>.*?)(?:\r?\n|\.git)/);
67
+ const gitRemoteMatch = gitRemote.match(/.*(?:\/\/|@)(?<host>[^:/]*)(:(?<port>\d+)\/|:|\/)(?<group>.*)\/(?<project>.*?)(?:\r?\n|\.git)/);
68
68
  (0, asserts_1.assert)(gitRemoteMatch?.groups != null, "git remote -v didn't provide valid matches");
69
69
  return {
70
- domain: gitRemoteMatch.groups.domain,
70
+ port: gitRemoteMatch.groups.port ?? "22",
71
+ host: gitRemoteMatch.groups.host,
71
72
  group: gitRemoteMatch.groups.group,
72
73
  project: gitRemoteMatch.groups.project,
73
74
  };
@@ -106,7 +107,8 @@ GitData.defaultData = new GitData({
106
107
  GITLAB_USER_ID: "1000",
107
108
  },
108
109
  remote: {
109
- domain: "fallback.domain",
110
+ port: "22",
111
+ host: "gitlab.com",
110
112
  group: "fallback.group",
111
113
  project: "fallback.project",
112
114
  },
@@ -116,4 +118,4 @@ GitData.defaultData = new GitData({
116
118
  SHORT_SHA: "00000000",
117
119
  },
118
120
  });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBZ0M7QUFDaEMsdUNBQW1DO0FBRW5DLGtEQUEwQjtBQUMxQixtREFBNkM7QUFxQjdDLE1BQWEsT0FBTztJQTBCaEIsWUFBWSxJQUE2RDtRQUNyRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLFlBQTBCO1FBQ3JELElBQUk7WUFDQSxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sYUFBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxN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UUFDSixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsT0FBTyxFQUFFLGtCQUFrQjtLQUM5QjtJQUNELE1BQU0sRUFBRTtRQUNKLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEdBQUcsRUFBRSwwQ0FBMEM7UUFDL0MsU0FBUyxFQUFFLFVBQVU7S0FDeEI7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlscyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiLi9hc3NlcnRzXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vdHlwZXMvd3JpdGUtc3RyZWFtc1wiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHtFeGl0RXJyb3J9IGZyb20gXCIuL3R5cGVzL2V4aXQtZXJyb3JcIjtcblxuaW50ZXJmYWNlIEdpdFJlbW90ZSB7XG4gICAgZG9tYWluOiBzdHJpbmc7XG4gICAgZ3JvdXA6IHN0cmluZztcbiAgICBwcm9qZWN0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBHaXRDb21taXQge1xuICAgIFNIQTogc3RyaW5nO1xuICAgIFNIT1JUX1NIQTogc3RyaW5nO1xuICAgIFJFRl9OQU1FOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBHaXRVc2VyIHtcbiAgICBHSVRMQUJfVVNFUl9FTUFJTDogc3RyaW5nO1xuICAgIEdJVExBQl9VU0VSX0xPR0lOOiBzdHJpbmc7XG4gICAgR0lUTEFCX1VTRVJfTkFNRTogc3RyaW5nO1xuICAgIEdJVExBQl9VU0VSX0lEOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXREYXRhIHtcblxuICAgIHN0YXRpYyByZWFkb25seSBkZWZhdWx0RGF0YTogR2l0RGF0YSA9XG4gICAgICAgIG5ldyBHaXREYXRhKHtcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9MT0dJTjogXCJsb2NhbFwiLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0VNQUlMOiBcImxvY2FsQGdpdGxhYi5jb21cIixcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9OQU1FOiBcIkJvYiBMb2NhbFwiLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0lEOiBcIjEwMDBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZW1vdGU6IHtcbiAgICAgICAgICAgICAgICBkb21haW46IFwiZmFsbGJhY2suZG9tYWluXCIsXG4gICAgICAgICAgICAgICAgZ3JvdXA6IFwiZmFsbGJhY2suZ3JvdXBcIixcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBcImZhbGxiYWNrLnByb2plY3RcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21taXQ6IHtcbiAgICAgICAgICAgICAgICBSRUZfTkFNRTogXCJtYWluXCIsXG4gICAgICAgICAgICAgICAgU0hBOiBcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICAgICAgICBTSE9SVF9TSEE6IFwiMDAwMDAwMDBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgcmVtb3RlOiBHaXRSZW1vdGU7XG4gICAgcmVhZG9ubHkgY29tbWl0OiBHaXRDb21taXQ7XG4gICAgcmVhZG9ubHkgdXNlcjogR2l0VXNlcjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IHsgcmVtb3RlOiBHaXRSZW1vdGU7IGNvbW1pdDogR2l0Q29tbWl0OyB1c2VyOiBHaXRVc2VyIH0pIHtcbiAgICAgICAgdGhpcy5yZW1vdGUgPSBkYXRhLnJlbW90ZTtcbiAgICAgICAgdGhpcy5jb21taXQgPSBkYXRhLmNvbW1pdDtcbiAgICAgICAgdGhpcy51c2VyID0gZGF0YS51c2VyO1xuICAgIH1cblxuICAgIGdldCBDSV9QUk9KRUNUX1BBVEgoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnJlbW90ZS5ncm91cH0vJHt0aGlzLnJlbW90ZS5wcm9qZWN0fWA7XG4gICAgfVxuXG4gICAgZ2V0IENJX1JFR0lTVFJZKCkge1xuICAgICAgICByZXR1cm4gYGxvY2FsLXJlZ2lzdHJ5LiR7dGhpcy5yZW1vdGUuZG9tYWlufWA7XG4gICAgfVxuXG4gICAgZ2V0IENJX1JFR0lTVFJZX0lNQUdFKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5DSV9SRUdJU1RSWX0vJHt0aGlzLkNJX1BST0pFQ1RfUEFUSH1gO1xuICAgIH1cblxuICAgIGdldCBDSV9QUk9KRUNUX1BBVEhfU0xVRygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMucmVtb3RlLmdyb3VwLnJlcGxhY2UoL1xcLy9nLCBcIi1cIil9LSR7dGhpcy5yZW1vdGUucHJvamVjdH1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBpbml0KGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8R2l0RGF0YT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZ2l0VmVyc2lvbiA9IChhd2FpdCBVdGlscy5zcGF3bihcImdpdCAtLXZlcnNpb25cIiwgY3dkKSkuc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgICAgIGFzc2VydChnaXRWZXJzaW9uICE9IG51bGwsIFwiV2UgZG8gbm90IHRoaW5rIGl0IGlzIHNhZmUgdG8gdXNlIGdpdCB3aXRob3V0IGEgcHJvcGVyIHZlcnNpb24gc3RyaW5nIVwiKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IEdpdCBub3QgYXZhaWxhYmxlIHVzaW5nIGZhbGxiYWNrfVxcbmApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERhdGE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IEdpdERhdGEoe1xuICAgICAgICAgICAgdXNlcjogYXdhaXQgR2l0RGF0YS5nZXRVc2VyRGF0YShjd2QsIHdyaXRlU3RyZWFtcyksXG4gICAgICAgICAgICByZW1vdGU6IGF3YWl0IEdpdERhdGEuZ2V0UmVtb3RlRGF0YShjd2QsIHdyaXRlU3RyZWFtcyksXG4gICAgICAgICAgICBjb21taXQ6IGF3YWl0IEdpdERhdGEuZ2V0Q29tbWl0RGF0YShjd2QsIHdyaXRlU3RyZWFtcyksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBnZXRDb21taXREYXRhKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8R2l0Q29tbWl0PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBnaXRMb2dTdGRvdXQgPSAoYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDonJWggJUggJUQnXCIsIGN3ZCkpLnN0ZG91dC5yZXBsYWNlKC9cXHI/XFxuL2csIFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgZ2l0TG9nTWF0Y2ggPSBnaXRMb2dTdGRvdXQubWF0Y2goLyg/PHNob3J0X3NoYT5cXFMqPykgKD88c2hhPlxcUyopIC4qSEVBRCggLT4gfCwgdGFnOiB8LCApKD88cmVmX25hbWU+Lio/KSg/Oix8JCkvKTtcblxuICAgICAgICAgICAgYXNzZXJ0KGdpdExvZ01hdGNoPy5ncm91cHMgIT0gbnVsbCwgXCJnaXQgbG9nIC0xIGRpZG4ndCBwcm92aWRlIHZhbGlkIG1hdGNoZXNcIik7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgUkVGX05BTUU6IGdpdExvZ01hdGNoLmdyb3Vwcy5yZWZfbmFtZSxcbiAgICAgICAgICAgICAgICBTSEE6IGdpdExvZ01hdGNoLmdyb3Vwcy5zaGEsXG4gICAgICAgICAgICAgICAgU0hPUlRfU0hBOiBnaXRMb2dNYXRjaC5ncm91cHMuc2hvcnRfc2hhLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFeGl0RXJyb3IpIHtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgJHtlLm1lc3NhZ2V9fVxcbmApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREYXRhLmNvbW1pdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgY29tbWl0IGRhdGF9XFxuYCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGF0YS5jb21taXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgZ2V0UmVtb3RlRGF0YShjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPEdpdFJlbW90ZT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyBzdGRvdXQ6IGdpdFJlbW90ZSB9ID0gYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgcmVtb3RlIC12XCIsIGN3ZCk7XG4gICAgICAgICAgICBjb25zdCBnaXRSZW1vdGVNYXRjaCA9IGdpdFJlbW90ZS5tYXRjaCgvLiooPzpodHRwW3NdPzpcXC9cXC98QCkoPzxkb21haW4+W146L10qKSgoOlxcZCtcXC8pfDp8XFwvKSg/PGdyb3VwPi4qKVxcLyg/PHByb2plY3Q+Lio/KSg/Olxccj9cXG58XFwuZ2l0KS8pO1xuXG4gICAgICAgICAgICBhc3NlcnQoZ2l0UmVtb3RlTWF0Y2g/Lmdyb3VwcyAhPSBudWxsLCBcImdpdCByZW1vdGUgLXYgZGlkbid0IHByb3ZpZGUgdmFsaWQgbWF0Y2hlc1wiKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkb21haW46IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5kb21haW4sXG4gICAgICAgICAgICAgICAgZ3JvdXA6IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ncm91cCxcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBnaXRSZW1vdGVNYXRjaC5ncm91cHMucHJvamVjdCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXhpdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93ICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGF0YS5yZW1vdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IHJlbW90ZSBkYXRhfVxcbmApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERhdGEucmVtb3RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGdldFVzZXJEYXRhKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8R2l0VXNlcj4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW1haWwgPSAoYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgY29uZmlnIHVzZXIuZW1haWxcIiwgY3dkKSkuc3Rkb3V0LnRyaW1FbmQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9OQU1FOiAoYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgY29uZmlnIHVzZXIubmFtZVwiLCBjd2QpKS5zdGRvdXQudHJpbUVuZCgpLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0lEOiAoYXdhaXQgVXRpbHMuc3Bhd24oXCJpZCAtdVwiLCBjd2QpKS5zdGRvdXQudHJpbUVuZCgpLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0VNQUlMOiBlbWFpbCxcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9MT0dJTjogZW1haWwucmVwbGFjZSgvQC4qLywgXCJcIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IHVzZXIgZGF0YX1cXG5gKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREYXRhLnVzZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBZ0M7QUFDaEMsdUNBQW1DO0FBRW5DLGtEQUEwQjtBQUMxQixtREFBNkM7QUFzQjdDLE1BQWEsT0FBTztJQTJCaEIsWUFBWSxJQUE2RDtRQUNyRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLFlBQTBCO1FBQ3JELElBQUk7WUFDQSxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sYUFBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxN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RUFBRSxXQUFXO1FBQzdCLGNBQWMsRUFBRSxNQUFNO0tBQ3pCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0I7S0FDOUI7SUFDRCxNQUFNLEVBQUU7UUFDSixRQUFRLEVBQUUsTUFBTTtRQUNoQixHQUFHLEVBQUUsMENBQTBDO1FBQy9DLFNBQVMsRUFBRSxVQUFVO0tBQ3hCO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4vYXNzZXJ0c1wiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3R5cGVzL3dyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7RXhpdEVycm9yfSBmcm9tIFwiLi90eXBlcy9leGl0LWVycm9yXCI7XG5cbmludGVyZmFjZSBHaXRSZW1vdGUge1xuICAgIHBvcnQ6IHN0cmluZztcbiAgICBob3N0OiBzdHJpbmc7XG4gICAgZ3JvdXA6IHN0cmluZztcbiAgICBwcm9qZWN0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBHaXRDb21taXQge1xuICAgIFNIQTogc3RyaW5nO1xuICAgIFNIT1JUX1NIQTogc3RyaW5nO1xuICAgIFJFRl9OQU1FOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBHaXRVc2VyIHtcbiAgICBHSVRMQUJfVVNFUl9FTUFJTDogc3RyaW5nO1xuICAgIEdJVExBQl9VU0VSX0xPR0lOOiBzdHJpbmc7XG4gICAgR0lUTEFCX1VTRVJfTkFNRTogc3RyaW5nO1xuICAgIEdJVExBQl9VU0VSX0lEOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXREYXRhIHtcblxuICAgIHN0YXRpYyByZWFkb25seSBkZWZhdWx0RGF0YTogR2l0RGF0YSA9XG4gICAgICAgIG5ldyBHaXREYXRhKHtcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9MT0dJTjogXCJsb2NhbFwiLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0VNQUlMOiBcImxvY2FsQGdpdGxhYi5jb21cIixcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9OQU1FOiBcIkJvYiBMb2NhbFwiLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0lEOiBcIjEwMDBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZW1vdGU6IHtcbiAgICAgICAgICAgICAgICBwb3J0OiBcIjIyXCIsXG4gICAgICAgICAgICAgICAgaG9zdDogXCJnaXRsYWIuY29tXCIsXG4gICAgICAgICAgICAgICAgZ3JvdXA6IFwiZmFsbGJhY2suZ3JvdXBcIixcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBcImZhbGxiYWNrLnByb2plY3RcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21taXQ6IHtcbiAgICAgICAgICAgICAgICBSRUZfTkFNRTogXCJtYWluXCIsXG4gICAgICAgICAgICAgICAgU0hBOiBcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICAgICAgICBTSE9SVF9TSEE6IFwiMDAwMDAwMDBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgcmVtb3RlOiBHaXRSZW1vdGU7XG4gICAgcmVhZG9ubHkgY29tbWl0OiBHaXRDb21taXQ7XG4gICAgcmVhZG9ubHkgdXNlcjogR2l0VXNlcjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IHsgcmVtb3RlOiBHaXRSZW1vdGU7IGNvbW1pdDogR2l0Q29tbWl0OyB1c2VyOiBHaXRVc2VyIH0pIHtcbiAgICAgICAgdGhpcy5yZW1vdGUgPSBkYXRhLnJlbW90ZTtcbiAgICAgICAgdGhpcy5jb21taXQgPSBkYXRhLmNvbW1pdDtcbiAgICAgICAgdGhpcy51c2VyID0gZGF0YS51c2VyO1xuICAgIH1cblxuICAgIGdldCBDSV9QUk9KRUNUX1BBVEgoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnJlbW90ZS5ncm91cH0vJHt0aGlzLnJlbW90ZS5wcm9qZWN0fWA7XG4gICAgfVxuXG4gICAgZ2V0IENJX1JFR0lTVFJZKCkge1xuICAgICAgICByZXR1cm4gYGxvY2FsLXJlZ2lzdHJ5LiR7dGhpcy5yZW1vdGUuaG9zdH1gO1xuICAgIH1cblxuICAgIGdldCBDSV9SRUdJU1RSWV9JTUFHRSgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuQ0lfUkVHSVNUUll9LyR7dGhpcy5DSV9QUk9KRUNUX1BBVEh9YDtcbiAgICB9XG5cbiAgICBnZXQgQ0lfUFJPSkVDVF9QQVRIX1NMVUcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnJlbW90ZS5ncm91cC5yZXBsYWNlKC9cXC8vZywgXCItXCIpfS0ke3RoaXMucmVtb3RlLnByb2plY3R9YDtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgaW5pdChjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPEdpdERhdGE+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGdpdFZlcnNpb24gPSAoYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgLS12ZXJzaW9uXCIsIGN3ZCkpLnN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgICAgICBhc3NlcnQoZ2l0VmVyc2lvbiAhPSBudWxsLCBcIldlIGRvIG5vdCB0aGluayBpdCBpcyBzYWZlIHRvIHVzZSBnaXQgd2l0aG91dCBhIHByb3BlciB2ZXJzaW9uIHN0cmluZyFcIik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBHaXQgbm90IGF2YWlsYWJsZSB1c2luZyBmYWxsYmFja31cXG5gKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBHaXREYXRhKHtcbiAgICAgICAgICAgIHVzZXI6IGF3YWl0IEdpdERhdGEuZ2V0VXNlckRhdGEoY3dkLCB3cml0ZVN0cmVhbXMpLFxuICAgICAgICAgICAgcmVtb3RlOiBhd2FpdCBHaXREYXRhLmdldFJlbW90ZURhdGEoY3dkLCB3cml0ZVN0cmVhbXMpLFxuICAgICAgICAgICAgY29tbWl0OiBhd2FpdCBHaXREYXRhLmdldENvbW1pdERhdGEoY3dkLCB3cml0ZVN0cmVhbXMpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgZ2V0Q29tbWl0RGF0YShjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPEdpdENvbW1pdD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZ2l0TG9nU3Rkb3V0ID0gKGF3YWl0IFV0aWxzLnNwYXduKFwiZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JyVoICVIICVEJ1wiLCBjd2QpKS5zdGRvdXQucmVwbGFjZSgvXFxyP1xcbi9nLCBcIlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGdpdExvZ01hdGNoID0gZ2l0TG9nU3Rkb3V0Lm1hdGNoKC8oPzxzaG9ydF9zaGE+XFxTKj8pICg/PHNoYT5cXFMqKSAuKkhFQUQoIC0+IHwsIHRhZzogfCwgKSg/PHJlZl9uYW1lPi4qPykoPzosfCQpLyk7XG5cbiAgICAgICAgICAgIGFzc2VydChnaXRMb2dNYXRjaD8uZ3JvdXBzICE9IG51bGwsIFwiZ2l0IGxvZyAtMSBkaWRuJ3QgcHJvdmlkZSB2YWxpZCBtYXRjaGVzXCIpO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFJFRl9OQU1FOiBnaXRMb2dNYXRjaC5ncm91cHMucmVmX25hbWUsXG4gICAgICAgICAgICAgICAgU0hBOiBnaXRMb2dNYXRjaC5ncm91cHMuc2hhLFxuICAgICAgICAgICAgICAgIFNIT1JUX1NIQTogZ2l0TG9nTWF0Y2guZ3JvdXBzLnNob3J0X3NoYSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXhpdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93ICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGF0YS5jb21taXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IGNvbW1pdCBkYXRhfVxcbmApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERhdGEuY29tbWl0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGdldFJlbW90ZURhdGEoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTxHaXRSZW1vdGU+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc3Rkb3V0OiBnaXRSZW1vdGUgfSA9IGF3YWl0IFV0aWxzLnNwYXduKFwiZ2l0IHJlbW90ZSAtdlwiLCBjd2QpO1xuICAgICAgICAgICAgY29uc3QgZ2l0UmVtb3RlTWF0Y2ggPSBnaXRSZW1vdGUubWF0Y2goLy4qKD86XFwvXFwvfEApKD88aG9zdD5bXjovXSopKDooPzxwb3J0PlxcZCspXFwvfDp8XFwvKSg/PGdyb3VwPi4qKVxcLyg/PHByb2plY3Q+Lio/KSg/Olxccj9cXG58XFwuZ2l0KS8pO1xuXG4gICAgICAgICAgICBhc3NlcnQoZ2l0UmVtb3RlTWF0Y2g/Lmdyb3VwcyAhPSBudWxsLCBcImdpdCByZW1vdGUgLXYgZGlkbid0IHByb3ZpZGUgdmFsaWQgbWF0Y2hlc1wiKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwb3J0OiBnaXRSZW1vdGVNYXRjaC5ncm91cHMucG9ydCA/PyBcIjIyXCIsXG4gICAgICAgICAgICAgICAgaG9zdDogZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmhvc3QsXG4gICAgICAgICAgICAgICAgZ3JvdXA6IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ncm91cCxcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBnaXRSZW1vdGVNYXRjaC5ncm91cHMucHJvamVjdCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXhpdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93ICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGF0YS5yZW1vdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IHJlbW90ZSBkYXRhfVxcbmApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERhdGEucmVtb3RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGdldFVzZXJEYXRhKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8R2l0VXNlcj4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW1haWwgPSAoYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgY29uZmlnIHVzZXIuZW1haWxcIiwgY3dkKSkuc3Rkb3V0LnRyaW1FbmQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9OQU1FOiAoYXdhaXQgVXRpbHMuc3Bhd24oXCJnaXQgY29uZmlnIHVzZXIubmFtZVwiLCBjd2QpKS5zdGRvdXQudHJpbUVuZCgpLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0lEOiAoYXdhaXQgVXRpbHMuc3Bhd24oXCJpZCAtdVwiLCBjd2QpKS5zdGRvdXQudHJpbUVuZCgpLFxuICAgICAgICAgICAgICAgIEdJVExBQl9VU0VSX0VNQUlMOiBlbWFpbCxcbiAgICAgICAgICAgICAgICBHSVRMQUJfVVNFUl9MT0dJTjogZW1haWwucmVwbGFjZSgvQC4qLywgXCJcIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IHVzZXIgZGF0YX1cXG5gKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREYXRhLnVzZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
package/src/handler.js CHANGED
@@ -106,7 +106,7 @@ async function handler(argv, writeStreams) {
106
106
  else if (argv.preview != null) {
107
107
  const pipelineIid = await state.getPipelineIid(cwd);
108
108
  parser = await parser_1.Parser.create({
109
- cwd, writeStreams, pipelineIid, showInitMessage: false, file: argv.file, home: argv.home, extraHosts, volumes, variables,
109
+ cwd, writeStreams, pipelineIid, showInitMessage: false, file: argv.file, home: argv.home, extraHosts, volumes, variables, mountCache: argv.mountCache,
110
110
  });
111
111
  const gitlabData = parser.gitlabData;
112
112
  for (const jobName of Object.keys(gitlabData)) {
@@ -123,7 +123,7 @@ async function handler(argv, writeStreams) {
123
123
  checkFolderAndFile(cwd, argv.file);
124
124
  const pipelineIid = await state.getPipelineIid(cwd);
125
125
  parser = await parser_1.Parser.create({
126
- cwd, writeStreams, pipelineIid, showInitMessage: false, file: argv.file, home: argv.home, extraHosts, volumes, variables,
126
+ cwd, writeStreams, pipelineIid, showInitMessage: false, file: argv.file, home: argv.home, extraHosts, volumes, variables, mountCache: argv.mountCache,
127
127
  });
128
128
  commander_1.Commander.runList(parser, writeStreams, argv.listAll != null);
129
129
  }
@@ -137,7 +137,7 @@ async function handler(argv, writeStreams) {
137
137
  }
138
138
  const pipelineIid = await state.getPipelineIid(cwd);
139
139
  parser = await parser_1.Parser.create({
140
- cwd, writeStreams, pipelineIid, file: argv.file, home: argv.home, extraHosts, volumes, shellIsolation, variables,
140
+ cwd, writeStreams, pipelineIid, file: argv.file, home: argv.home, extraHosts, volumes, shellIsolation, variables, mountCache: argv.mountCache,
141
141
  });
142
142
  await utils_1.Utils.rsyncTrackedFiles(cwd, ".docker");
143
143
  await commander_1.Commander.runSingleJob(parser, writeStreams, argv.job, argv.needs || false, argv.manual || [], argv.privileged || false);
@@ -153,7 +153,7 @@ async function handler(argv, writeStreams) {
153
153
  await state.incrementPipelineIid(cwd);
154
154
  const pipelineIid = await state.getPipelineIid(cwd);
155
155
  parser = await parser_1.Parser.create({
156
- cwd, writeStreams, pipelineIid, file: argv.file, home: argv.home, extraHosts, volumes, shellIsolation, variables,
156
+ cwd, writeStreams, pipelineIid, file: argv.file, home: argv.home, extraHosts, volumes, shellIsolation, variables, mountCache: argv.mountCache,
157
157
  });
158
158
  await utils_1.Utils.rsyncTrackedFiles(cwd, ".docker");
159
159
  await commander_1.Commander.runPipeline(parser, writeStreams, argv.manual || [], argv.privileged || false);
@@ -166,4 +166,4 @@ async function handler(argv, writeStreams) {
166
166
  return new Map();
167
167
  }
168
168
  exports.handler = handler;
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFnQztBQUNoQyxrREFBMEI7QUFDMUIsNkNBQStCO0FBQy9CLDZDQUErQjtBQUMvQiwyQ0FBc0M7QUFDdEMscUNBQWdDO0FBQ2hDLCtDQUFpQztBQUNqQyx1Q0FBaUM7QUFDakMsK0NBQWlDO0FBQ2pDLDBEQUFrQztBQUNsQyxrRUFBeUM7QUFFekMsK0JBQTBCO0FBQzFCLG1DQUE4QjtBQUM5QixtREFBNkM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhLEVBQUUsRUFBRTtJQUN0RCxJQUFBLGdCQUFNLEVBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcscUJBQXFCLENBQUMsQ0FBQztJQUU1RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsaUJBQWlCLENBQUM7SUFDekUsSUFBQSxnQkFBTSxFQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxHQUFHLHFCQUFxQixJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ2pHLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUN0QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyw4QkFBOEIsQ0FBQztJQUMvRCxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0lBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDbkMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0tBQzFE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LENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFHO0lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXJCLElBQUksTUFBTSxFQUFFO1FBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBQ2xDLENBQUM7QUE3R0QsMEJBNkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFtbCBmcm9tIFwianMteWFtbFwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7Q29tbWFuZGVyfSBmcm9tIFwiLi9jb21tYW5kZXJcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCAqIGFzIHN0YXRlIGZyb20gXCIuL3N0YXRlXCI7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSBcIi4vYXNzZXJ0c1wiO1xuaW1wb3J0ICogYXMgZG90ZW52IGZyb20gXCJkb3RlbnZcIjtcbmltcG9ydCBjYW1lbENhc2UgZnJvbSBcImNhbWVsY2FzZVwiO1xuaW1wb3J0IHByZXR0eUhydGltZSBmcm9tIFwicHJldHR5LWhydGltZVwiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3R5cGVzL3dyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge0V4aXRFcnJvcn0gZnJvbSBcIi4vdHlwZXMvZXhpdC1lcnJvclwiO1xuXG5jb25zdCBjaGVja0ZvbGRlckFuZEZpbGUgPSAoY3dkOiBzdHJpbmcsIGZpbGU/OiBzdHJpbmcpID0+IHtcbiAgICBhc3NlcnQoZnMucGF0aEV4aXN0c1N5bmMoY3dkKSwgYCR7Y3dkfSBpcyBub3QgYSBkaXJlY3RvcnlgKTtcblxuICAgIGNvbnN0IGdpdGxhYkZpbGVQYXRoID0gZmlsZSA/IGAke2N3ZH0vJHtmaWxlfWAgOiBgJHtjd2R9Ly5naXRsYWItY2kueW1sYDtcbiAgICBhc3NlcnQoZnMuZXhpc3RzU3luYyhnaXRsYWJGaWxlUGF0aCksIGAke2N3ZH0gZG9lcyBub3QgY29udGFpbiAke2ZpbGUgPz8gXCIuZ2l0bGFiLWNpLnltbFwifWApO1xufTtcblxuY29uc3QgZ2VuZXJhdGVHaXRJZ25vcmUgPSAoY3dkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBnaXRJZ25vcmVGaWxlUGF0aCA9IGAke2N3ZH0vLmdpdGxhYi1jaS1sb2NhbC8uZ2l0aWdub3JlYDtcbiAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gXCIqXFxuIS5naXRpZ25vcmVcXG5cIjtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0SWdub3JlRmlsZVBhdGgpKSB7XG4gICAgICAgIGZzLm91dHB1dEZpbGVTeW5jKGdpdElnbm9yZUZpbGVQYXRoLCBnaXRJZ25vcmVDb250ZW50KTtcbiAgICB9XG59O1xuXG5jb25zdCBjbGVhbnVwUmVzb3VyY2VzID0gYXN5bmMocGFyc2VyOiBQYXJzZXJ8bnVsbCkgPT4ge1xuICAgIGlmICghcGFyc2VyKSB7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGpvYiBvZiBwYXJzZXIuam9icy52YWx1ZXMoKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKGpvYi5jbGVhbnVwUmVzb3VyY2VzKCkpO1xuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihhcmd2OiBhbnksIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTxSZWFkb25seU1hcDxzdHJpbmcsIEpvYj4+IHtcbiAgICBhc3NlcnQodHlwZW9mIGFyZ3YuY3dkICE9IFwib2JqZWN0XCIsIFwiLS1jd2Qgb3B0aW9uIGNhbm5vdCBiZSBhbiBhcnJheVwiKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZD8ucmVwbGFjZSgvXFwvJC8sIFwiXCIpID8/IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBwcm9jZXNzLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXhpdEVycm9yKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNoYWxrYHtyZWQgJHtlLnN0YWNrID8/IGUubWVzc2FnZX19XFxuYCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2hhbGtge3JlZCAke2UudG9TdHJpbmcoKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY2xlYW51cFJlc291cmNlcyhwYXJzZXIpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSk7XG5cbiAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsIGFzeW5jIChfOiBzdHJpbmcsIGNvZGU6IG51bWJlcikgPT4ge1xuICAgICAgICBhd2FpdCBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcik7XG4gICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICB9KTtcblxuICAgIGxldCBwYXJzZXI6IFBhcnNlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmApKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGRvdGVudi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYCR7Y3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmApKTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnKSkge1xuICAgICAgICAgICAgY29uc3QgYXJnS2V5ID0gY2FtZWxDYXNlKGtleSk7XG4gICAgICAgICAgICBpZiAoYXJndlthcmdLZXldID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBhcmd2W2FyZ0tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZvbHVtZXMgPSB0eXBlb2YgYXJndi52b2x1bWUgPT0gXCJzdHJpbmdcIiA/IGFyZ3Yudm9sdW1lLnNwbGl0KFwiIFwiKSA6IGFyZ3Yudm9sdW1lO1xuICAgIGNvbnN0IGV4dHJhSG9zdHMgPSB0eXBlb2YgYXJndi5leHRyYUhvc3QgPT0gXCJzdHJpbmdcIiA/IGFyZ3YuZXh0cmFIb3N0LnNwbGl0KFwiIFwiKSA6IGFyZ3YuZXh0cmFIb3N0O1xuICAgIGNvbnN0IHZhcmlhYmxlUGFpcnMgPSB0eXBlb2YgYXJndi52YXJpYWJsZSA9PSBcInN0cmluZ1wiID8gYXJndi52YXJpYWJsZS5zcGxpdChcIiBcIikgOiBhcmd2LnZhcmlhYmxlO1xuICAgIGNvbnN0IHNoZWxsSXNvbGF0aW9uID0gYXJndi5zaGVsbElzb2xhdGlvbjtcblxuICAgIGNvbnN0IHZhcmlhYmxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgKHZhcmlhYmxlUGFpcnMgPz8gW10pLmZvckVhY2goKHZhcmlhYmxlUGFpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4ZWMgPSAvKD88a2V5Plxcdyo/KSg9KSg/PHZhbHVlPlxcdy4qKS8uZXhlYyh2YXJpYWJsZVBhaXIpO1xuICAgICAgICBpZiAoZXhlYz8uZ3JvdXBzPy5rZXkpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlc1tleGVjLmdyb3Vwcy5rZXldID0gZXhlYz8uZ3JvdXBzPy52YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHlhcmdzLnNob3dDb21wbGV0aW9uU2NyaXB0KCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LnByZXZpZXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoe1xuICAgICAgICAgICAgY3dkLCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBzaG93SW5pdE1lc3NhZ2U6IGZhbHNlLCBmaWxlOiBhcmd2LmZpbGUsIGhvbWU6IGFyZ3YuaG9tZSwgZXh0cmFIb3N0cywgdm9sdW1lcywgdmFyaWFibGVzLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZ2l0bGFiRGF0YSA9IHBhcnNlci5naXRsYWJEYXRhO1xuICAgICAgICBmb3IgKGNvbnN0IGpvYk5hbWUgb2YgT2JqZWN0LmtleXMoZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgICAgIGlmIChqb2JOYW1lID09PSBcInN0YWdlc1wiKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5pbmNsdWRlcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgIT0gbnVsbCB8fCBhcmd2Lmxpc3RBbGwgIT0gbnVsbCkge1xuICAgICAgICBjaGVja0ZvbGRlckFuZEZpbGUoY3dkLCBhcmd2LmZpbGUpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoe1xuICAgICAgICAgICAgY3dkLCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBzaG93SW5pdE1lc3NhZ2U6IGZhbHNlLCBmaWxlOiBhcmd2LmZpbGUsIGhvbWU6IGFyZ3YuaG9tZSwgZXh0cmFIb3N0cywgdm9sdW1lcywgdmFyaWFibGVzLFxuICAgICAgICB9KTtcbiAgICAgICAgQ29tbWFuZGVyLnJ1bkxpc3QocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdEFsbCAhPSBudWxsKTtcbiAgICB9IGVsc2UgaWYgKGFyZ3Yuam9iKSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjaGVja0ZvbGRlckFuZEZpbGUoY3dkLCBhcmd2LmZpbGUpO1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vLmdpdGxhYi1jaS1sb2NhbC9hcnRpZmFjdHNgKTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRlLmluY3JlbWVudFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKHtcbiAgICAgICAgICAgIGN3ZCwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgZmlsZTogYXJndi5maWxlLCBob21lOiBhcmd2LmhvbWUsIGV4dHJhSG9zdHMsIHZvbHVtZXMsIHNoZWxsSXNvbGF0aW9uLCB2YXJpYWJsZXMsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1blNpbmdsZUpvYihwYXJzZXIsIHdyaXRlU3RyZWFtcywgYXJndi5qb2IsIGFyZ3YubmVlZHMgfHwgZmFsc2UsIGFyZ3YubWFudWFsIHx8IFtdLCBhcmd2LnByaXZpbGVnZWQgfHwgZmFsc2UpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjaGVja0ZvbGRlckFuZEZpbGUoY3dkLCBhcmd2LmZpbGUpO1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QpO1xuICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8uZ2l0bGFiLWNpLWxvY2FsL2FydGlmYWN0c2ApO1xuICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoe1xuICAgICAgICAgICAgY3dkLCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBmaWxlOiBhcmd2LmZpbGUsIGhvbWU6IGFyZ3YuaG9tZSwgZXh0cmFIb3N0cywgdm9sdW1lcywgc2hlbGxJc29sYXRpb24sIHZhcmlhYmxlcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgXCIuZG9ja2VyXCIpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucnVuUGlwZWxpbmUocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubWFudWFsIHx8IFtdLCBhcmd2LnByaXZpbGVnZWQgfHwgZmFsc2UpO1xuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtncmV5IHBpcGVsaW5lIGZpbmlzaGVkfSBpbiB7Z3JleSAke3ByZXR0eUhydGltZShwcm9jZXNzLmhydGltZSh0aW1lKSl9fVxcbmApO1xuICAgIH1cbiAgICB3cml0ZVN0cmVhbXMuZmx1c2goKTtcblxuICAgIGlmIChwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5qb2JzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgSm9iPigpO1xufVxuXG4iXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFnQztBQUNoQyxrREFBMEI7QUFDMUIsNkNBQStCO0FBQy9CLDZDQUErQjtBQUMvQiwyQ0FBc0M7QUFDdEMscUNBQWdDO0FBQ2hDLCtDQUFpQztBQUNqQyx1Q0FBaUM7QUFDakMsK0NBQWlDO0FBQ2pDLDBEQUFrQztBQUNsQyxrRUFBeUM7QUFFekMsK0JBQTBCO0FBQzFCLG1DQUE4QjtBQUM5QixtREFBNkM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhLEVBQUUsRUFBRTtJQUN0RCxJQUFBLGdCQUFNLEVBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcscUJBQXFCLENBQUMsQ0FBQztJQUU1RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsaUJBQWlCLENBQUM7SUFDekUsSUFBQSxnQkFBTSxFQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxHQUFHLHFCQUFxQixJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ2pHLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUN0QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyw4QkFBOEIsQ0FBQztJQUMvRCxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0lBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDbkMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0tBQzFE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TSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQy9GLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBQSxlQUFLLEVBQUEscUNBQXFDLElBQUEsdUJBQVksRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFHO0lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXJCLElBQUksTUFBTSxFQUFFO1FBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBQ2xDLENBQUM7QUE3R0QsMEJBNkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFtbCBmcm9tIFwianMteWFtbFwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7Q29tbWFuZGVyfSBmcm9tIFwiLi9jb21tYW5kZXJcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCAqIGFzIHN0YXRlIGZyb20gXCIuL3N0YXRlXCI7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSBcIi4vYXNzZXJ0c1wiO1xuaW1wb3J0ICogYXMgZG90ZW52IGZyb20gXCJkb3RlbnZcIjtcbmltcG9ydCBjYW1lbENhc2UgZnJvbSBcImNhbWVsY2FzZVwiO1xuaW1wb3J0IHByZXR0eUhydGltZSBmcm9tIFwicHJldHR5LWhydGltZVwiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3R5cGVzL3dyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge0V4aXRFcnJvcn0gZnJvbSBcIi4vdHlwZXMvZXhpdC1lcnJvclwiO1xuXG5jb25zdCBjaGVja0ZvbGRlckFuZEZpbGUgPSAoY3dkOiBzdHJpbmcsIGZpbGU/OiBzdHJpbmcpID0+IHtcbiAgICBhc3NlcnQoZnMucGF0aEV4aXN0c1N5bmMoY3dkKSwgYCR7Y3dkfSBpcyBub3QgYSBkaXJlY3RvcnlgKTtcblxuICAgIGNvbnN0IGdpdGxhYkZpbGVQYXRoID0gZmlsZSA/IGAke2N3ZH0vJHtmaWxlfWAgOiBgJHtjd2R9Ly5naXRsYWItY2kueW1sYDtcbiAgICBhc3NlcnQoZnMuZXhpc3RzU3luYyhnaXRsYWJGaWxlUGF0aCksIGAke2N3ZH0gZG9lcyBub3QgY29udGFpbiAke2ZpbGUgPz8gXCIuZ2l0bGFiLWNpLnltbFwifWApO1xufTtcblxuY29uc3QgZ2VuZXJhdGVHaXRJZ25vcmUgPSAoY3dkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBnaXRJZ25vcmVGaWxlUGF0aCA9IGAke2N3ZH0vLmdpdGxhYi1jaS1sb2NhbC8uZ2l0aWdub3JlYDtcbiAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gXCIqXFxuIS5naXRpZ25vcmVcXG5cIjtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0SWdub3JlRmlsZVBhdGgpKSB7XG4gICAgICAgIGZzLm91dHB1dEZpbGVTeW5jKGdpdElnbm9yZUZpbGVQYXRoLCBnaXRJZ25vcmVDb250ZW50KTtcbiAgICB9XG59O1xuXG5jb25zdCBjbGVhbnVwUmVzb3VyY2VzID0gYXN5bmMocGFyc2VyOiBQYXJzZXJ8bnVsbCkgPT4ge1xuICAgIGlmICghcGFyc2VyKSB7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGpvYiBvZiBwYXJzZXIuam9icy52YWx1ZXMoKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKGpvYi5jbGVhbnVwUmVzb3VyY2VzKCkpO1xuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihhcmd2OiBhbnksIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTxSZWFkb25seU1hcDxzdHJpbmcsIEpvYj4+IHtcbiAgICBhc3NlcnQodHlwZW9mIGFyZ3YuY3dkICE9IFwib2JqZWN0XCIsIFwiLS1jd2Qgb3B0aW9uIGNhbm5vdCBiZSBhbiBhcnJheVwiKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZD8ucmVwbGFjZSgvXFwvJC8sIFwiXCIpID8/IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBwcm9jZXNzLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXhpdEVycm9yKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNoYWxrYHtyZWQgJHtlLnN0YWNrID8/IGUubWVzc2FnZX19XFxuYCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2hhbGtge3JlZCAke2UudG9TdHJpbmcoKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY2xlYW51cFJlc291cmNlcyhwYXJzZXIpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSk7XG5cbiAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsIGFzeW5jIChfOiBzdHJpbmcsIGNvZGU6IG51bWJlcikgPT4ge1xuICAgICAgICBhd2FpdCBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcik7XG4gICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICB9KTtcblxuICAgIGxldCBwYXJzZXI6IFBhcnNlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmApKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGRvdGVudi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYCR7Y3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmApKTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnKSkge1xuICAgICAgICAgICAgY29uc3QgYXJnS2V5ID0gY2FtZWxDYXNlKGtleSk7XG4gICAgICAgICAgICBpZiAoYXJndlthcmdLZXldID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBhcmd2W2FyZ0tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZvbHVtZXMgPSB0eXBlb2YgYXJndi52b2x1bWUgPT0gXCJzdHJpbmdcIiA/IGFyZ3Yudm9sdW1lLnNwbGl0KFwiIFwiKSA6IGFyZ3Yudm9sdW1lO1xuICAgIGNvbnN0IGV4dHJhSG9zdHMgPSB0eXBlb2YgYXJndi5leHRyYUhvc3QgPT0gXCJzdHJpbmdcIiA/IGFyZ3YuZXh0cmFIb3N0LnNwbGl0KFwiIFwiKSA6IGFyZ3YuZXh0cmFIb3N0O1xuICAgIGNvbnN0IHZhcmlhYmxlUGFpcnMgPSB0eXBlb2YgYXJndi52YXJpYWJsZSA9PSBcInN0cmluZ1wiID8gYXJndi52YXJpYWJsZS5zcGxpdChcIiBcIikgOiBhcmd2LnZhcmlhYmxlO1xuICAgIGNvbnN0IHNoZWxsSXNvbGF0aW9uID0gYXJndi5zaGVsbElzb2xhdGlvbjtcblxuICAgIGNvbnN0IHZhcmlhYmxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgKHZhcmlhYmxlUGFpcnMgPz8gW10pLmZvckVhY2goKHZhcmlhYmxlUGFpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4ZWMgPSAvKD88a2V5Plxcdyo/KSg9KSg/PHZhbHVlPlxcdy4qKS8uZXhlYyh2YXJpYWJsZVBhaXIpO1xuICAgICAgICBpZiAoZXhlYz8uZ3JvdXBzPy5rZXkpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlc1tleGVjLmdyb3Vwcy5rZXldID0gZXhlYz8uZ3JvdXBzPy52YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHlhcmdzLnNob3dDb21wbGV0aW9uU2NyaXB0KCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LnByZXZpZXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoe1xuICAgICAgICAgICAgY3dkLCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBzaG93SW5pdE1lc3NhZ2U6IGZhbHNlLCBmaWxlOiBhcmd2LmZpbGUsIGhvbWU6IGFyZ3YuaG9tZSwgZXh0cmFIb3N0cywgdm9sdW1lcywgdmFyaWFibGVzLCBtb3VudENhY2hlOiBhcmd2Lm1vdW50Q2FjaGUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmluY2x1ZGVzKGpvYk5hbWUpIHx8IGpvYk5hbWUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAtLS1cXG4ke3lhbWwuZHVtcChnaXRsYWJEYXRhLCB7bGluZVdpZHRoOiAxNjB9KX1gKTtcbiAgICB9IGVsc2UgaWYgKGFyZ3YubGlzdCAhPSBudWxsIHx8IGFyZ3YubGlzdEFsbCAhPSBudWxsKSB7XG4gICAgICAgIGNoZWNrRm9sZGVyQW5kRmlsZShjd2QsIGFyZ3YuZmlsZSk7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZSh7XG4gICAgICAgICAgICBjd2QsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIHNob3dJbml0TWVzc2FnZTogZmFsc2UsIGZpbGU6IGFyZ3YuZmlsZSwgaG9tZTogYXJndi5ob21lLCBleHRyYUhvc3RzLCB2b2x1bWVzLCB2YXJpYWJsZXMsIG1vdW50Q2FjaGU6IGFyZ3YubW91bnRDYWNoZSxcbiAgICAgICAgfSk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwgIT0gbnVsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYikge1xuICAgICAgICBjb25zdCB0aW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgY2hlY2tGb2xkZXJBbmRGaWxlKGN3ZCwgYXJndi5maWxlKTtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJlbW92ZShgJHtjd2R9Ly5naXRsYWItY2ktbG9jYWwvYXJ0aWZhY3RzYCk7XG4gICAgICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZSh7XG4gICAgICAgICAgICBjd2QsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGZpbGU6IGFyZ3YuZmlsZSwgaG9tZTogYXJndi5ob21lLCBleHRyYUhvc3RzLCB2b2x1bWVzLCBzaGVsbElzb2xhdGlvbiwgdmFyaWFibGVzLCBtb3VudENhY2hlOiBhcmd2Lm1vdW50Q2FjaGUsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1blNpbmdsZUpvYihwYXJzZXIsIHdyaXRlU3RyZWFtcywgYXJndi5qb2IsIGFyZ3YubmVlZHMgfHwgZmFsc2UsIGFyZ3YubWFudWFsIHx8IFtdLCBhcmd2LnByaXZpbGVnZWQgfHwgZmFsc2UpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjaGVja0ZvbGRlckFuZEZpbGUoY3dkLCBhcmd2LmZpbGUpO1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QpO1xuICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8uZ2l0bGFiLWNpLWxvY2FsL2FydGlmYWN0c2ApO1xuICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoe1xuICAgICAgICAgICAgY3dkLCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBmaWxlOiBhcmd2LmZpbGUsIGhvbWU6IGFyZ3YuaG9tZSwgZXh0cmFIb3N0cywgdm9sdW1lcywgc2hlbGxJc29sYXRpb24sIHZhcmlhYmxlcywgbW91bnRDYWNoZTogYXJndi5tb3VudENhY2hlLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgVXRpbHMucnN5bmNUcmFja2VkRmlsZXMoY3dkLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5QaXBlbGluZShwYXJzZXIsIHdyaXRlU3RyZWFtcywgYXJndi5tYW51YWwgfHwgW10sIGFyZ3YucHJpdmlsZWdlZCB8fCBmYWxzZSk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfVxuICAgIHdyaXRlU3RyZWFtcy5mbHVzaCgpO1xuXG4gICAgaWYgKHBhcnNlcikge1xuICAgICAgICByZXR1cm4gcGFyc2VyLmpvYnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBKb2I+KCk7XG59XG5cbiJdfQ==
package/src/index.js CHANGED
@@ -122,6 +122,11 @@ sourceMapSupport.install();
122
122
  type: "boolean",
123
123
  description: "Enable artifact isolation for shell-executor jobs",
124
124
  requiresArg: false,
125
+ })
126
+ .option("mount-cache", {
127
+ type: "boolean",
128
+ description: "Enable docker mount based caching",
129
+ requiresArg: false,
125
130
  })
126
131
  .option("privileged", {
127
132
  type: "boolean",
@@ -159,4 +164,4 @@ sourceMapSupport.install();
159
164
  })
160
165
  .parse();
161
166
  })();
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esa0RBQTBCO0FBQzFCLDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFDN0IscUVBQXVEO0FBQ3ZELGtEQUEwQjtBQUMxQixxQ0FBZ0M7QUFDaEMsK0NBQWlDO0FBQ2pDLG1EQUE2QztBQUM3QyxtRUFBNEQ7QUFDNUQsdUNBQWtDO0FBQ2xDLGlEQUEyQztBQUUzQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUUzQixDQUFDLEdBQUcsRUFBRTtJQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakcsSUFBQSxlQUFLLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMvQixjQUFjLENBQUMsS0FBSyxDQUFDO1NBQ3JCLElBQUksQ0FBQyxlQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDM0IsT0FBTyxDQUFDO1FBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJO2dCQUNBLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDLElBQUksRUFBRSxJQUFJLDJDQUFtQixFQUFFLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxVQUFVLEdBQUcsMEJBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBzb3VyY2VNYXBTdXBwb3J0IGZyb20gXCJzb3VyY2UtbWFwLXN1cHBvcnRcIjtcbmltcG9ydCB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCAqIGFzIHN0YXRlIGZyb20gXCIuL3N0YXRlXCI7XG5pbXBvcnQge0V4aXRFcnJvcn0gZnJvbSBcIi4vdHlwZXMvZXhpdC1lcnJvclwiO1xuaW1wb3J0IHtQcm9jZXNzV3JpdGVTdHJlYW1zfSBmcm9tIFwiLi9wcm9jZXNzLXdyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCB7aGFuZGxlcn0gZnJvbSBcIi4vaGFuZGxlclwiO1xuaW1wb3J0IHtKb2JFeGVjdXRvcn0gZnJvbSBcIi4vam9iLWV4ZWN1dG9yXCI7XG5cbnNvdXJjZU1hcFN1cHBvcnQuaW5zdGFsbCgpO1xuXG4oKCkgPT4ge1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9wYWNrYWdlLmpzb25cIiksIFwidXRmOFwiKSk7XG4gICAgeWFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxuICAgICAgICAudmVyc2lvbihwYWNrYWdlSnNvbltcInZlcnNpb25cIl0pXG4gICAgICAgIC5zaG93SGVscE9uRmFpbChmYWxzZSlcbiAgICAgICAgLndyYXAoeWFyZ3MudGVybWluYWxXaWR0aCgpKVxuICAgICAgICAuY29tbWFuZCh7XG4gICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJndikgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpvYnMgPSBhd2FpdCBoYW5kbGVyKGFyZ3YsIG5ldyBQcm9jZXNzV3JpdGVTdHJlYW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWlsZWRKb2JzID0gSm9iRXhlY3V0b3IuZ2V0RmFpbGVkKGpvYnMpO1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoZmFpbGVkSm9icy5sZW5ndGggPiAwID8gMSA6IDApO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFeGl0RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNoYWxrYHtyZWQgJHtlLm1lc3NhZ2V9fVxcbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1aWxkZXI6ICh5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geS5wb3NpdGlvbmFsKFwiam9iXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmU6IFwiSm9ibmFtZSdzIHRvIGV4ZWN1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwiJDAgW2pvYi4uXVwiLFxuICAgICAgICAgICAgZGVzY3JpYmU6IFwiUnVucyB0aGUgZW50aXJlIHBpcGVsaW5lIG9yIGpvYidzXCIsXG4gICAgICAgIH0pXG4gICAgICAgIC51c2FnZShcIkZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhdCBodHRwczovL2dpdGh1Yi5jb20vZmlyZWNvdy9naXRsYWItY2ktbG9jYWxcIilcbiAgICAgICAgLnN0cmljdE9wdGlvbnMoKVxuICAgICAgICAuZW52KFwiR0NMXCIpXG4gICAgICAgIC5vcHRpb24oXCJtYW51YWxcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT25lIG9yIG1vcmUgbWFudWFsIGpvYnMgdG8gcnVuIGR1cmluZyBhIHBpcGVsaW5lXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImxpc3RcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3Qgam9icyBhbmQgam9iIGluZm9ybWF0aW9uLCB3aGVuOm5ldmVyIGV4Y2x1ZGVkXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJsaXN0LWFsbFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGlzdCBqb2JzIGFuZCBqb2IgaW5mb3JtYXRpb24sIHdoZW46bmV2ZXIgaW5jbHVkZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInByZXZpZXdcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IFlNTCB3aXRoIGRlZmF1bHRzLCBpbmNsdWRlcywgZXh0ZW5kcyBhbmQgcmVmZXJlbmNlJ3MgZXhwYW5kZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImN3ZFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiY29tcGxldGlvblwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiR2VuZXJhdGUgdGFiIGNvbXBsZXRpb24gc2NyaXB0XCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJuZWVkc1wiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlJ1biBuZWVkZWQgam9icywgd2hlbiBleGVjdXRpbmcgYSBzaW5nbGUgam9iXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ2YXJpYWJsZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBZGQgdmFyaWFibGUgdG8gYWxsIGV4ZWN1dGVkIGpvYnMgKC0tdmFyaWFibGUgSEVMTE89d29ybGQpXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJmaWxlXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTcGVjaWZ5IGN1c3RvbSBsb2NhdGlvbiBvZiB0aGUgLmdpdGxhYi1jaS55bWwuIFJlbGF0aXZlIHRvIGN3ZCwgZWcuIChnaXRsYWIvLmdpdGxhYi1jaS55bWwpXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJob21lXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTcGVjaWZ5IGN1c3RvbSBIT01FIGxvY2F0aW9uICgkSE9NRS8uZ2l0bGFiLWNpLWxvY2FsL3ZhcmlhYmxlcy55bWwpXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJzaGVsbC1pc29sYXRpb25cIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgYXJ0aWZhY3QgaXNvbGF0aW9uIGZvciBzaGVsbC1leGVjdXRvciBqb2JzXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJwcml2aWxlZ2VkXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2V0IGRvY2tlciBleGVjdXRvciB0byBwcml2aWxlZ2VkIG1vZGVcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInZvbHVtZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBZGQgdm9sdW1lcyB0byBkb2NrZXIgZXhlY3V0b3JcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImV4dHJhLWhvc3RcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWRkIGV4dHJhIGRvY2tlciBob3N0IGVudHJpZXNcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLmNvbXBsZXRpb24oXCJjb21wbGV0aW9uXCIsIGZhbHNlLCBhc3luYyAoXywgeWFyZ3NBcmd2KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN3ZCA9IHlhcmdzQXJndi5jd2QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zOiBuZXcgUHJvY2Vzc1dyaXRlU3RyZWFtcygpLFxuICAgICAgICAgICAgICAgICAgICBwaXBlbGluZUlpZCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0luaXRNZXNzYWdlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hJbmNsdWRlczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbGU6IHlhcmdzQXJndi5maWxlLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHt9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucGFyc2VyLmpvYnMudmFsdWVzKCldLmZpbHRlcigoaikgPT4gai53aGVuICE9IFwibmV2ZXJcIikubWFwKChqKSA9PiBqLm5hbWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXCJQYXJzZXItRmFpbGVkIVwiXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgICAucGFyc2UoKTtcbn0pKCk7XG5cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esa0RBQTBCO0FBQzFCLDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFDN0IscUVBQXVEO0FBQ3ZELGtEQUEwQjtBQUMxQixxQ0FBZ0M7QUFDaEMsK0NBQWlDO0FBQ2pDLG1EQUE2QztBQUM3QyxtRUFBNEQ7QUFDNUQsdUNBQWtDO0FBQ2xDLGlEQUEyQztBQUUzQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUUzQixDQUFDLEdBQUcsRUFBRTtJQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakcsSUFBQSxlQUFLLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMvQixjQUFjLENBQUMsS0FBSyxDQUFDO1NBQ3JCLElBQUksQ0FBQyxlQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDM0IsT0FBTyxDQUFDO1FBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJO2dCQUNBLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDLElBQUksRUFBRSxJQUFJLDJDQUFtQixFQUFFLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxVQUFVLEdBQUcsMEJBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0M7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixJQUFJLENBQUMsWUFBWSxzQkFBUyxFQUFFO29CQUN4QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFBLGVBQUssRUFBQSxRQUFRLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDO29CQUNsRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNuQjtnQkFDRCxNQUFNLENBQUMsQ0FBQzthQUNYO1FBQ0wsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZCLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLElBQUksRUFBRSxPQUFPO2FBQ2hCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUsbUNBQW1DO0tBQ2hELENBQUM7U0FDRCxLQUFLLENBQUMscUVBQXFFLENBQUM7U0FDNUUsYUFBYSxFQUFFO1NBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQztTQUNWLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDZCxJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsV0FBVyxFQUFFLElBQUk7S0FDcEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDWixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxvREFBb0Q7UUFDakUsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsb0RBQW9EO1FBQ2pFLFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2YsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUscUVBQXFFO1FBQ2xGLFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFdBQVcsRUFBRSxJQUFJO0tBQ3BCLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNiLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLDhDQUE4QztRQUMzRCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUNoQixJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSw0REFBNEQ7UUFDekUsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDWixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSw2RkFBNkY7UUFDMUcsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDWixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxxRUFBcUU7UUFDbEYsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtRQUN2QixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxtREFBbUQ7UUFDaEUsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDbkIsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ2xCLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHdDQUF3QztRQUNyRCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNkLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFlBQVksRUFBRTtRQUNsQixJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSwrQkFBK0I7UUFDNUMsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELFVBQVUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFDcEQsSUFBSTtZQUNBLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNDLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLEdBQUc7Z0JBQ0gsWUFBWSxFQUFFLElBQUksMkNBQW1CLEVBQUU7Z0JBQ3ZDLFdBQVc7Z0JBQ1gsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLFNBQVMsRUFBRSxFQUFFO2FBQ2hCLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEY7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzdCO0lBRUwsQ0FBQyxDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQUM7QUFDakIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgc291cmNlTWFwU3VwcG9ydCBmcm9tIFwic291cmNlLW1hcC1zdXBwb3J0XCI7XG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSBcIi4vcGFyc2VyXCI7XG5pbXBvcnQgKiBhcyBzdGF0ZSBmcm9tIFwiLi9zdGF0ZVwiO1xuaW1wb3J0IHtFeGl0RXJyb3J9IGZyb20gXCIuL3R5cGVzL2V4aXQtZXJyb3JcIjtcbmltcG9ydCB7UHJvY2Vzc1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vcHJvY2Vzcy13cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge2hhbmRsZXJ9IGZyb20gXCIuL2hhbmRsZXJcIjtcbmltcG9ydCB7Sm9iRXhlY3V0b3J9IGZyb20gXCIuL2pvYi1leGVjdXRvclwiO1xuXG5zb3VyY2VNYXBTdXBwb3J0Lmluc3RhbGwoKTtcblxuKCgpID0+IHtcbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vcGFja2FnZS5qc29uXCIpLCBcInV0ZjhcIikpO1xuICAgIHlhcmdzKHByb2Nlc3MuYXJndi5zbGljZSgyKSlcbiAgICAgICAgLnZlcnNpb24ocGFja2FnZUpzb25bXCJ2ZXJzaW9uXCJdKVxuICAgICAgICAuc2hvd0hlbHBPbkZhaWwoZmFsc2UpXG4gICAgICAgIC53cmFwKHlhcmdzLnRlcm1pbmFsV2lkdGgoKSlcbiAgICAgICAgLmNvbW1hbmQoe1xuICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3YpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBqb2JzID0gYXdhaXQgaGFuZGxlcihhcmd2LCBuZXcgUHJvY2Vzc1dyaXRlU3RyZWFtcygpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFpbGVkSm9icyA9IEpvYkV4ZWN1dG9yLmdldEZhaWxlZChqb2JzKTtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGZhaWxlZEpvYnMubGVuZ3RoID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXhpdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWlsZGVyOiAoeTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHkucG9zaXRpb25hbChcImpvYlwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlOiBcIkpvYm5hbWUncyB0byBleGVjdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21tYW5kOiBcIiQwIFtqb2IuLl1cIixcbiAgICAgICAgICAgIGRlc2NyaWJlOiBcIlJ1bnMgdGhlIGVudGlyZSBwaXBlbGluZSBvciBqb2Inc1wiLFxuICAgICAgICB9KVxuICAgICAgICAudXNhZ2UoXCJGaW5kIG1vcmUgaW5mb3JtYXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2ZpcmVjb3cvZ2l0bGFiLWNpLWxvY2FsXCIpXG4gICAgICAgIC5zdHJpY3RPcHRpb25zKClcbiAgICAgICAgLmVudihcIkdDTFwiKVxuICAgICAgICAub3B0aW9uKFwibWFudWFsXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk9uZSBvciBtb3JlIG1hbnVhbCBqb2JzIHRvIHJ1biBkdXJpbmcgYSBwaXBlbGluZVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJsaXN0XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMaXN0IGpvYnMgYW5kIGpvYiBpbmZvcm1hdGlvbiwgd2hlbjpuZXZlciBleGNsdWRlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibGlzdC1hbGxcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3Qgam9icyBhbmQgam9iIGluZm9ybWF0aW9uLCB3aGVuOm5ldmVyIGluY2x1ZGVkXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJwcmV2aWV3XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmludCBZTUwgd2l0aCBkZWZhdWx0cywgaW5jbHVkZXMsIGV4dGVuZHMgYW5kIHJlZmVyZW5jZSdzIGV4cGFuZGVkXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJjd2RcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBhdGggdG8gYSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImNvbXBsZXRpb25cIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIHRhYiBjb21wbGV0aW9uIHNjcmlwdFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibmVlZHNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW4gbmVlZGVkIGpvYnMsIHdoZW4gZXhlY3V0aW5nIGEgc2luZ2xlIGpvYlwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidmFyaWFibGVcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWRkIHZhcmlhYmxlIHRvIGFsbCBleGVjdXRlZCBqb2JzICgtLXZhcmlhYmxlIEhFTExPPXdvcmxkKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiZmlsZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3BlY2lmeSBjdXN0b20gbG9jYXRpb24gb2YgdGhlIC5naXRsYWItY2kueW1sLiBSZWxhdGl2ZSB0byBjd2QsIGVnLiAoZ2l0bGFiLy5naXRsYWItY2kueW1sKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiaG9tZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3BlY2lmeSBjdXN0b20gSE9NRSBsb2NhdGlvbiAoJEhPTUUvLmdpdGxhYi1jaS1sb2NhbC92YXJpYWJsZXMueW1sKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwic2hlbGwtaXNvbGF0aW9uXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRW5hYmxlIGFydGlmYWN0IGlzb2xhdGlvbiBmb3Igc2hlbGwtZXhlY3V0b3Igam9ic1wiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibW91bnQtY2FjaGVcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgZG9ja2VyIG1vdW50IGJhc2VkIGNhY2hpbmdcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInByaXZpbGVnZWRcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZXQgZG9ja2VyIGV4ZWN1dG9yIHRvIHByaXZpbGVnZWQgbW9kZVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidm9sdW1lXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkFkZCB2b2x1bWVzIHRvIGRvY2tlciBleGVjdXRvclwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiZXh0cmEtaG9zdFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBZGQgZXh0cmEgZG9ja2VyIGhvc3QgZW50cmllc1wiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAuY29tcGxldGlvbihcImNvbXBsZXRpb25cIiwgZmFsc2UsIGFzeW5jIChfLCB5YXJnc0FyZ3YpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3dkID0geWFyZ3NBcmd2LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgY3dkLFxuICAgICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXM6IG5ldyBQcm9jZXNzV3JpdGVTdHJlYW1zKCksXG4gICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lSWlkLFxuICAgICAgICAgICAgICAgICAgICBzaG93SW5pdE1lc3NhZ2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaEluY2x1ZGVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogeWFyZ3NBcmd2LmZpbGUsXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge30sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5wYXJzZXIuam9icy52YWx1ZXMoKV0uZmlsdGVyKChqKSA9PiBqLndoZW4gIT0gXCJuZXZlclwiKS5tYXAoKGopID0+IGoubmFtZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcIlBhcnNlci1GYWlsZWQhXCJdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICAgIC5wYXJzZSgpO1xufSkoKTtcblxuIl19
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.scripts = exports.afterScripts = exports.beforeScripts = exports.image = exports.services = exports.cache = exports.artifacts = exports.reference = exports.jobExtends = void 0;
6
+ exports.scripts = exports.afterScripts = exports.beforeScripts = exports.image = exports.services = exports.artifacts = exports.reference = exports.jobExtends = void 0;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const deep_extend_1 = __importDefault(require("deep-extend"));
9
9
  const utils_1 = require("./utils");
@@ -69,22 +69,6 @@ function artifacts(gitlabData) {
69
69
  });
70
70
  }
71
71
  exports.artifacts = artifacts;
72
- function cache(gitlabData) {
73
- utils_1.Utils.forEachRealJob(gitlabData, (_, jobData) => {
74
- let expandedCache = [];
75
- if (!jobData.cache) {
76
- return;
77
- }
78
- if (Array.isArray(jobData.cache)) {
79
- expandedCache = jobData.cache;
80
- }
81
- else if (jobData.cache && jobData.cache.paths) {
82
- expandedCache = [jobData.cache];
83
- }
84
- jobData.cache = expandedCache;
85
- });
86
- }
87
- exports.cache = cache;
88
72
  function services(gitlabData) {
89
73
  utils_1.Utils.forEachRealJob(gitlabData, (_, jobData) => {
90
74
  const expandedServices = jobData.services || (gitlabData.default || {}).services || gitlabData.services;
@@ -154,4 +138,4 @@ function scripts(gitlabData) {
154
138
  });
155
139
  }
156
140
  exports.scripts = scripts;
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWV4cGFuZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImpvYi1leHBhbmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDhEQUFxQztBQUNyQyxtQ0FBOEI7QUFDOUIsdUNBQWlDO0FBQ2pDLCtCQUEwQjtBQUMxQix1Q0FBa0M7QUFFbEMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBZSxFQUFFLE9BQWUsRUFBRSxPQUFZLEVBQUUsT0FBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQ3JHLElBQUEsZ0JBQU0sRUFBQyxLQUFLLEdBQUcsZUFBZSxFQUFFLElBQUEsZUFBSyxFQUFBLGVBQWUsT0FBTyxnREFBZ0QsQ0FBQyxDQUFDO0lBQzdHLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDOUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUEsZ0JBQU0sRUFBQyxVQUFVLElBQUksSUFBSSxFQUFFLElBQUEsZUFBSyxFQUFBLGVBQWUsVUFBVSxrQ0FBa0MsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNILGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLFNBQWdCLFVBQVUsQ0FBQyxVQUFlO0lBQ3RDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLFVBQVUsQ0FBQyxFQUFFO1FBQzlELElBQUksU0FBRyxDQUFDLGVB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QyxDQUFDO1NBQ3JFO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBUEQsb0NBT0M7QUFFRCxTQUFnQixPQUFPLENBQUMsVUFBZTtJQUNuQyxhQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNsRCxJQUFBLGdCQUFNLEVBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUEsZUFBSyxFQUFBLGVBQWUsT0FBTyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDeEYsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBUkQsMEJBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgZGVlcEV4dGVuZCBmcm9tIFwiZGVlcC1leHRlbmRcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSBcIi4vYXNzZXJ0c1wiO1xuaW1wb3J0IHtKb2J9IGZyb20gXCIuL2pvYlwiO1xuaW1wb3J0IHtTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlXCI7XG5cbmNvbnN0IGV4dGVuZHNNYXhEZXB0aCA9IDExO1xuY29uc3QgZXh0ZW5kc1JlY3Vyc2UgPSAoZ2l0bGFiRGF0YTogYW55LCBqb2JOYW1lOiBzdHJpbmcsIGpvYkRhdGE6IGFueSwgcGFyZW50czogYW55W10sIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICBhc3NlcnQoZGVwdGggPCBleHRlbmRzTWF4RGVwdGgsIGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iTmFtZX19OiBjaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIGluIFxcYGV4dGVuZHNcXGBgKTtcbiAgICBkZXB0aCsrO1xuICAgIGZvciAoY29uc3QgcGFyZW50TmFtZSBvZiAoam9iRGF0YS5leHRlbmRzIHx8IFtdKSkge1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gZ2l0bGFiRGF0YVtwYXJlbnROYW1lXTtcbiAgICAgICAgYXNzZXJ0KHBhcmVudERhdGEgIT0gbnVsbCwgY2hhbGtge2JsdWVCcmlnaHQgJHtwYXJlbnROYW1lfX0gaXMgZXh0ZW5kZWQgZnJvbSB7Ymx1ZUJyaWdodCAke2pvYk5hbWV9fSwgYnV0IGlzIHVuc3BlY2lmaWVkYCk7XG4gICAgICAgIGV4dGVuZHNSZWN1cnNlKGdpdGxhYkRhdGEsIHBhcmVudE5hbWUsIHBhcmVudERhdGEsIHBhcmVudHMsIGRlcHRoKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKHBhcmVudERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBqb2JFeHRlbmRzKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaW5jbHVkZXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBqb2JEYXRhLmV4dGVuZHMgPSB0eXBlb2Ygam9iRGF0YS5leHRlbmRzID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuZXh0ZW5kc10gOiBqb2JEYXRhLmV4dGVuZHMgPz8gW107XG4gICAgfVxuXG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKGpvYk5hbWUsIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgcGFyZW50RGF0YXMgPSBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBqb2JOYW1lLCBqb2JEYXRhLCBbXSwgMCk7XG4gICAgICAgIGdpdGxhYkRhdGFbam9iTmFtZV0gPSBkZWVwRXh0ZW5kKHt9LCAuLi5wYXJlbnREYXRhcywgam9iRGF0YSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmluY2x1ZGVzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgZGVsZXRlIGpvYkRhdGEuZXh0ZW5kcztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2UoZ2l0bGFiRGF0YTogYW55LCByZWN1cnNlRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihyZWN1cnNlRGF0YSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnJlZmVyZW5jZURhdGEpIHtcbiAgICAgICAgICAgIHJlY3Vyc2VEYXRhW2tleV0gPSBnZXRTdWJEYXRhQnlSZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUucmVmZXJlbmNlRGF0YSk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWN1cnNlRGF0YVtrZXldKSAmJiByZWN1cnNlRGF0YVtrZXldLmZpbHRlcigoZDogYW55KSA9PiBBcnJheS5pc0FycmF5KGQpKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVjdXJzZURhdGFba2V5XSA9IGV4cGFuZE11bHRpZGltZW5zaW9uKHJlY3Vyc2VEYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlID0gKGdpdGxhYkRhdGE6IGFueSwgcmVmZXJlbmNlRGF0YTogc3RyaW5nW10pID0+IHtcbiAgICBsZXQgZ2l0bGFiU3ViRGF0YSA9IGdpdGxhYkRhdGE7XG4gICAgcmVmZXJlbmNlRGF0YS5mb3JFYWNoKChyZWZlcmVuY2VQb2ludGVyKSA9PiB7XG4gICAgICAgIGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdO1xuICAgIH0pO1xuICAgIHJldHVybiBnaXRsYWJTdWJEYXRhO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFydGlmYWN0cyhnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBVdGlscy5mb3JFYWNoUmVhbEpvYihnaXRsYWJEYXRhLCAoXywgam9iRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBleHBhbmRlZEFydGlmYWN0cyA9IGpvYkRhdGEuYXJ0aWZhY3RzIHx8IChnaXRsYWJEYXRhLmRlZmF1bHQgfHwge30pLmFydGlmYWN0cyB8fCBnaXRsYWJEYXRhLmFydGlmYWN0cztcbiAgICAgICAgaWYgKGV4cGFuZGVkQXJ0aWZhY3RzKSB7XG4gICAgICAgICAgICBqb2JEYXRhLmFydGlmYWN0cyA9IGV4cGFuZGVkQXJ0aWZhY3RzO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZShnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBVdGlscy5mb3JFYWNoUmVhbEpvYihnaXRsYWJEYXRhLCAoXywgam9iRGF0YSkgPT4ge1xuICAgICAgICBsZXQgZXhwYW5kZWRDYWNoZSA9IFtdO1xuICAgICAgICBpZiAoIWpvYkRhdGEuY2FjaGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqb2JEYXRhLmNhY2hlKSkge1xuICAgICAgICAgICAgZXhwYW5kZWRDYWNoZSA9IGpvYkRhdGEuY2FjaGU7XG4gICAgICAgIH0gZWxzZSBpZiAoam9iRGF0YS5jYWNoZSAmJiBqb2JEYXRhLmNhY2hlLnBhdGhzKSB7XG4gICAgICAgICAgICBleHBhbmRlZENhY2hlID0gW2pvYkRhdGEuY2FjaGVdO1xuICAgICAgICB9XG4gICAgICAgIGpvYkRhdGEuY2FjaGUgPSBleHBhbmRlZENhY2hlO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZXMoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRTZXJ2aWNlcyA9IGpvYkRhdGEuc2VydmljZXMgfHwgKGdpdGxhYkRhdGEuZGVmYXVsdCB8fCB7fSkuc2VydmljZXMgfHwgZ2l0bGFiRGF0YS5zZXJ2aWNlcztcbiAgICAgICAgaWYgKGV4cGFuZGVkU2VydmljZXMpIHtcbiAgICAgICAgICAgIGpvYkRhdGEuc2VydmljZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4LCBleHBhbmRlZFNlcnZpY2VdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZXhwYW5kZWRTZXJ2aWNlcykpIHtcbiAgICAgICAgICAgICAgICBqb2JEYXRhLnNlcnZpY2VzW2luZGV4XSA9IG5ldyBTZXJ2aWNlKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHlwZW9mIGV4cGFuZGVkU2VydmljZSA9PT0gXCJzdHJpbmdcIiA/IGV4cGFuZGVkU2VydmljZSA6IGV4cGFuZGVkU2VydmljZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50OiBleHBhbmRlZFNlcnZpY2UuZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogdHlwZW9mIGV4cGFuZGVkU2VydmljZS5jb21tYW5kID09PSBcInN0cmluZ1wiID8gZXhwYW5kZWRTZXJ2aWNlLmNvbW1hbmQgOiBleHBhbmRlZFNlcnZpY2UuY29tbWFuZD8uam9pbihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIGFsaWFzOiBleHBhbmRlZFNlcnZpY2UuYWxpYXMsXG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2UoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRJbWFnZSA9IGpvYkRhdGEuaW1hZ2UgfHwgKGdpdGxhYkRhdGEuZGVmYXVsdCB8fCB7fSkuaW1hZ2UgfHwgZ2l0bGFiRGF0YS5pbWFnZTtcbiAgICAgICAgaWYgKGV4cGFuZGVkSW1hZ2UpIHtcbiAgICAgICAgICAgIGpvYkRhdGEuaW1hZ2UgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdHlwZW9mIGV4cGFuZGVkSW1hZ2UgPT09IFwic3RyaW5nXCIgPyBleHBhbmRlZEltYWdlIDogZXhwYW5kZWRJbWFnZS5uYW1lLFxuICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQ6IGV4cGFuZGVkSW1hZ2UuZW50cnlwb2ludCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuY29uc3QgZXhwYW5kTXVsdGlkaW1lbnNpb24gPSAoaW5wdXRBcnI6IGFueSkgPT4ge1xuICAgIGNvbnN0IGFyciA9IFtdO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBpbnB1dEFycikge1xuICAgICAgICBpZiAodHlwZW9mIGxpbmUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgYXJyLnB1c2gobGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaW5lLmZvckVhY2goKGw6IHN0cmluZykgPT4gYXJyLnB1c2gobCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYmVmb3JlU2NyaXB0cyhnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBVdGlscy5mb3JFYWNoUmVhbEpvYihnaXRsYWJEYXRhLCAoXywgam9iRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBleHBhbmRlZEJlZm9yZVNjcmlwdHMgPSBbXS5jb25jYXQoam9iRGF0YS5iZWZvcmVfc2NyaXB0IHx8IChnaXRsYWJEYXRhLmRlZmF1bHQgfHwge30pLmJlZm9yZV9zY3JpcHQgfHwgZ2l0bGFiRGF0YS5iZWZvcmVfc2NyaXB0IHx8IFtdKTtcbiAgICAgICAgaWYgKGV4cGFuZGVkQmVmb3JlU2NyaXB0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBqb2JEYXRhLmJlZm9yZV9zY3JpcHQgPSBleHBhbmRNdWx0aWRpbWVuc2lvbihleHBhbmRlZEJlZm9yZVNjcmlwdHMpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZnRlclNjcmlwdHMoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRBZnRlclNjcmlwdHMgPSBbXS5jb25jYXQoam9iRGF0YS5hZnRlcl9zY3JpcHQgfHwgKGdpdGxhYkRhdGEuZGVmYXVsdCB8fCB7fSkuYWZ0ZXJfc2NyaXB0IHx8IGdpdGxhYkRhdGEuYWZ0ZXJfc2NyaXB0IHx8IFtdKTtcbiAgICAgICAgaWYgKGV4cGFuZGVkQWZ0ZXJTY3JpcHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpvYkRhdGEuYWZ0ZXJfc2NyaXB0ID0gZXhwYW5kTXVsdGlkaW1lbnNpb24oZXhwYW5kZWRBZnRlclNjcmlwdHMpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JpcHRzKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIFV0aWxzLmZvckVhY2hSZWFsSm9iKGdpdGxhYkRhdGEsIChqb2JOYW1lLCBqb2JEYXRhKSA9PiB7XG4gICAgICAgIGFzc2VydChqb2JEYXRhLnNjcmlwdCB8fCBqb2JEYXRhLnRyaWdnZXIsIGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iTmFtZX19IG11c3QgaGF2ZSBzY3JpcHQgc3BlY2lmaWVkYCk7XG4gICAgICAgIGpvYkRhdGEuc2NyaXB0ID0gdHlwZW9mIGpvYkRhdGEuc2NyaXB0ID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuc2NyaXB0XSA6IGpvYkRhdGEuc2NyaXB0O1xuICAgICAgICBpZiAoam9iRGF0YS5zY3JpcHQpIHtcbiAgICAgICAgICAgIGpvYkRhdGEuc2NyaXB0ID0gZXhwYW5kTXVsdGlkaW1lbnNpb24oam9iRGF0YS5zY3JpcHQpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWV4cGFuZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImpvYi1leHBhbmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDhEQUFxQztBQUNyQyxtQ0FBOEI7QUFDOUIsdUNBQWlDO0FBQ2pDLCtCQUEwQjtBQUMxQix1Q0FBa0M7QUFFbEMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBZSxFQUFFLE9BQWUsRUFBRSxPQUFZLEVBQUUsT0FBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQ3JHLElBQUEsZ0JBQU0sRUFBQyxLQUFLLEdBQUcsZUFBZSxFQUFFLElBQUEsZUFBSyxFQUFBLGVBQWUsT0FBTyxnREFBZ0QsQ0FBQyxDQUFDO0lBQzdHLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDOUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUEsZ0JBQU0sRUFBQyxVQUFVLElBQUksSUFBSSxFQUFFLElBQUEsZUFBSyxFQUFBLGVBQWUsVUFBVSxrQ0FBa0MsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNILGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLFNBQWdCLFVBQVUsQ0FBQyxVQUFlO0lBQ3RDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLFVBQVUsQ0FBQyxFQUFFO1FBQzlELElBQUksU0FBRyxDQUFDLGVB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QUFNLENBQUMsQ0FBQztTQUN6RDtJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVJELDBCQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IGRlZXBFeHRlbmQgZnJvbSBcImRlZXAtZXh0ZW5kXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHthc3NlcnR9IGZyb20gXCIuL2Fzc2VydHNcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7U2VydmljZX0gZnJvbSBcIi4vc2VydmljZVwiO1xuXG5jb25zdCBleHRlbmRzTWF4RGVwdGggPSAxMTtcbmNvbnN0IGV4dGVuZHNSZWN1cnNlID0gKGdpdGxhYkRhdGE6IGFueSwgam9iTmFtZTogc3RyaW5nLCBqb2JEYXRhOiBhbnksIHBhcmVudHM6IGFueVtdLCBkZXB0aDogbnVtYmVyKSA9PiB7XG4gICAgYXNzZXJ0KGRlcHRoIDwgZXh0ZW5kc01heERlcHRoLCBjaGFsa2B7Ymx1ZUJyaWdodCAke2pvYk5hbWV9fTogY2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCBpbiBcXGBleHRlbmRzXFxgYCk7XG4gICAgZGVwdGgrKztcbiAgICBmb3IgKGNvbnN0IHBhcmVudE5hbWUgb2YgKGpvYkRhdGEuZXh0ZW5kcyB8fCBbXSkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50RGF0YSA9IGdpdGxhYkRhdGFbcGFyZW50TmFtZV07XG4gICAgICAgIGFzc2VydChwYXJlbnREYXRhICE9IG51bGwsIGNoYWxrYHtibHVlQnJpZ2h0ICR7cGFyZW50TmFtZX19IGlzIGV4dGVuZGVkIGZyb20ge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX0sIGJ1dCBpcyB1bnNwZWNpZmllZGApO1xuICAgICAgICBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBwYXJlbnROYW1lLCBwYXJlbnREYXRhLCBwYXJlbnRzLCBkZXB0aCk7XG4gICAgICAgIHBhcmVudHMucHVzaChwYXJlbnREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gam9iRXh0ZW5kcyhnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmluY2x1ZGVzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgam9iRGF0YS5leHRlbmRzID0gdHlwZW9mIGpvYkRhdGEuZXh0ZW5kcyA9PT0gXCJzdHJpbmdcIiA/IFtqb2JEYXRhLmV4dGVuZHNdIDogam9iRGF0YS5leHRlbmRzID8/IFtdO1xuICAgIH1cblxuICAgIFV0aWxzLmZvckVhY2hSZWFsSm9iKGdpdGxhYkRhdGEsIChqb2JOYW1lLCBqb2JEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmVudERhdGFzID0gZXh0ZW5kc1JlY3Vyc2UoZ2l0bGFiRGF0YSwgam9iTmFtZSwgam9iRGF0YSwgW10sIDApO1xuICAgICAgICBnaXRsYWJEYXRhW2pvYk5hbWVdID0gZGVlcEV4dGVuZCh7fSwgLi4ucGFyZW50RGF0YXMsIGpvYkRhdGEpO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5pbmNsdWRlcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGRlbGV0ZSBqb2JEYXRhLmV4dGVuZHM7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlKGdpdGxhYkRhdGE6IGFueSwgcmVjdXJzZURhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4ocmVjdXJzZURhdGEgfHwge30pKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5yZWZlcmVuY2VEYXRhKSB7XG4gICAgICAgICAgICByZWN1cnNlRGF0YVtrZXldID0gZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlKGdpdGxhYkRhdGEsIHZhbHVlLnJlZmVyZW5jZURhdGEpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjdXJzZURhdGFba2V5XSkgJiYgcmVjdXJzZURhdGFba2V5XS5maWx0ZXIoKGQ6IGFueSkgPT4gQXJyYXkuaXNBcnJheShkKSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlY3Vyc2VEYXRhW2tleV0gPSBleHBhbmRNdWx0aWRpbWVuc2lvbihyZWN1cnNlRGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGdldFN1YkRhdGFCeVJlZmVyZW5jZSA9IChnaXRsYWJEYXRhOiBhbnksIHJlZmVyZW5jZURhdGE6IHN0cmluZ1tdKSA9PiB7XG4gICAgbGV0IGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJEYXRhO1xuICAgIHJlZmVyZW5jZURhdGEuZm9yRWFjaCgocmVmZXJlbmNlUG9pbnRlcikgPT4ge1xuICAgICAgICBnaXRsYWJTdWJEYXRhID0gZ2l0bGFiU3ViRGF0YVtyZWZlcmVuY2VQb2ludGVyXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZ2l0bGFiU3ViRGF0YTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnRpZmFjdHMoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRBcnRpZmFjdHMgPSBqb2JEYXRhLmFydGlmYWN0cyB8fCAoZ2l0bGFiRGF0YS5kZWZhdWx0IHx8IHt9KS5hcnRpZmFjdHMgfHwgZ2l0bGFiRGF0YS5hcnRpZmFjdHM7XG4gICAgICAgIGlmIChleHBhbmRlZEFydGlmYWN0cykge1xuICAgICAgICAgICAgam9iRGF0YS5hcnRpZmFjdHMgPSBleHBhbmRlZEFydGlmYWN0cztcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZXMoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRTZXJ2aWNlcyA9IGpvYkRhdGEuc2VydmljZXMgfHwgKGdpdGxhYkRhdGEuZGVmYXVsdCB8fCB7fSkuc2VydmljZXMgfHwgZ2l0bGFiRGF0YS5zZXJ2aWNlcztcbiAgICAgICAgaWYgKGV4cGFuZGVkU2VydmljZXMpIHtcbiAgICAgICAgICAgIGpvYkRhdGEuc2VydmljZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4LCBleHBhbmRlZFNlcnZpY2VdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZXhwYW5kZWRTZXJ2aWNlcykpIHtcbiAgICAgICAgICAgICAgICBqb2JEYXRhLnNlcnZpY2VzW2luZGV4XSA9IG5ldyBTZXJ2aWNlKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHlwZW9mIGV4cGFuZGVkU2VydmljZSA9PT0gXCJzdHJpbmdcIiA/IGV4cGFuZGVkU2VydmljZSA6IGV4cGFuZGVkU2VydmljZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50OiBleHBhbmRlZFNlcnZpY2UuZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogdHlwZW9mIGV4cGFuZGVkU2VydmljZS5jb21tYW5kID09PSBcInN0cmluZ1wiID8gZXhwYW5kZWRTZXJ2aWNlLmNvbW1hbmQgOiBleHBhbmRlZFNlcnZpY2UuY29tbWFuZD8uam9pbihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIGFsaWFzOiBleHBhbmRlZFNlcnZpY2UuYWxpYXMsXG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2UoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRJbWFnZSA9IGpvYkRhdGEuaW1hZ2UgfHwgKGdpdGxhYkRhdGEuZGVmYXVsdCB8fCB7fSkuaW1hZ2UgfHwgZ2l0bGFiRGF0YS5pbWFnZTtcbiAgICAgICAgaWYgKGV4cGFuZGVkSW1hZ2UpIHtcbiAgICAgICAgICAgIGpvYkRhdGEuaW1hZ2UgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdHlwZW9mIGV4cGFuZGVkSW1hZ2UgPT09IFwic3RyaW5nXCIgPyBleHBhbmRlZEltYWdlIDogZXhwYW5kZWRJbWFnZS5uYW1lLFxuICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQ6IGV4cGFuZGVkSW1hZ2UuZW50cnlwb2ludCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuY29uc3QgZXhwYW5kTXVsdGlkaW1lbnNpb24gPSAoaW5wdXRBcnI6IGFueSkgPT4ge1xuICAgIGNvbnN0IGFyciA9IFtdO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBpbnB1dEFycikge1xuICAgICAgICBpZiAodHlwZW9mIGxpbmUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgYXJyLnB1c2gobGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaW5lLmZvckVhY2goKGw6IHN0cmluZykgPT4gYXJyLnB1c2gobCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYmVmb3JlU2NyaXB0cyhnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBVdGlscy5mb3JFYWNoUmVhbEpvYihnaXRsYWJEYXRhLCAoXywgam9iRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBleHBhbmRlZEJlZm9yZVNjcmlwdHMgPSBbXS5jb25jYXQoam9iRGF0YS5iZWZvcmVfc2NyaXB0IHx8IChnaXRsYWJEYXRhLmRlZmF1bHQgfHwge30pLmJlZm9yZV9zY3JpcHQgfHwgZ2l0bGFiRGF0YS5iZWZvcmVfc2NyaXB0IHx8IFtdKTtcbiAgICAgICAgaWYgKGV4cGFuZGVkQmVmb3JlU2NyaXB0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBqb2JEYXRhLmJlZm9yZV9zY3JpcHQgPSBleHBhbmRNdWx0aWRpbWVuc2lvbihleHBhbmRlZEJlZm9yZVNjcmlwdHMpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZnRlclNjcmlwdHMoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgVXRpbHMuZm9yRWFjaFJlYWxKb2IoZ2l0bGFiRGF0YSwgKF8sIGpvYkRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRBZnRlclNjcmlwdHMgPSBbXS5jb25jYXQoam9iRGF0YS5hZnRlcl9zY3JpcHQgfHwgKGdpdGxhYkRhdGEuZGVmYXVsdCB8fCB7fSkuYWZ0ZXJfc2NyaXB0IHx8IGdpdGxhYkRhdGEuYWZ0ZXJfc2NyaXB0IHx8IFtdKTtcbiAgICAgICAgaWYgKGV4cGFuZGVkQWZ0ZXJTY3JpcHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpvYkRhdGEuYWZ0ZXJfc2NyaXB0ID0gZXhwYW5kTXVsdGlkaW1lbnNpb24oZXhwYW5kZWRBZnRlclNjcmlwdHMpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JpcHRzKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIFV0aWxzLmZvckVhY2hSZWFsSm9iKGdpdGxhYkRhdGEsIChqb2JOYW1lLCBqb2JEYXRhKSA9PiB7XG4gICAgICAgIGFzc2VydChqb2JEYXRhLnNjcmlwdCB8fCBqb2JEYXRhLnRyaWdnZXIsIGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iTmFtZX19IG11c3QgaGF2ZSBzY3JpcHQgc3BlY2lmaWVkYCk7XG4gICAgICAgIGpvYkRhdGEuc2NyaXB0ID0gdHlwZW9mIGpvYkRhdGEuc2NyaXB0ID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuc2NyaXB0XSA6IGpvYkRhdGEuc2NyaXB0O1xuICAgICAgICBpZiAoam9iRGF0YS5zY3JpcHQpIHtcbiAgICAgICAgICAgIGpvYkRhdGEuc2NyaXB0ID0gZXhwYW5kTXVsdGlkaW1lbnNpb24oam9iRGF0YS5zY3JpcHQpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4iXX0=