gitlab-ci-local 4.59.0 → 4.60.0

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/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "description": "Tired of pushing to test your .gitlab-ci.yml?",
5
5
  "main": "src/index.js",
6
6
  "bin": "src/index.js",
7
- "version": "4.59.0",
7
+ "version": "4.60.0",
8
8
  "scripts": {
9
9
  "esbuild": "esbuild src/index.ts --outfile=bin/index.cjs --bundle --platform=node --format=cjs --minify --external:yargs --external:re2 --sourcemap=inline",
10
10
  "pkg-linux": "npx tsx scripts/install-re2-bin.ts --platform linux --platform-arch=x64 && pkg bin/index.cjs --public --options=enable-source-maps --no-bytecode -t 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",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "ajv": "8.x.x",
28
- "axios": "1.8.4",
28
+ "axios": "1.9.0",
29
29
  "base64url": "3.x.x",
30
30
  "camelcase": "6.x.x",
31
31
  "chalk": "4.x.x",
package/src/argv.js CHANGED
@@ -179,6 +179,9 @@ export class Argv {
179
179
  // TODO: default to false in 5.x.x
180
180
  return this.map.get("umask") ?? true;
181
181
  }
182
+ get userns() {
183
+ return this.map.get("userns");
184
+ }
182
185
  get privileged() {
183
186
  return this.map.get("privileged") ?? false;
184
187
  }
@@ -279,4 +282,4 @@ export class Argv {
279
282
  return this.map.get("childPipelineDepth");
280
283
  }
281
284
  }
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyZ3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsS0FBSyxVQUFVLGlCQUFpQjtJQUM1QixJQUFJLENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVztJQUN0QixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDNUUsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sT0FBTyxJQUFJO0lBQ2IsTUFBTSxDQUFVLE9BQU8sR0FBRztRQUN0QixlQUFlLEVBQUUsZ0NBQWdDO1FBQ2pELHFCQUFxQixFQUFFLElBQUk7UUFDM0IsbUJBQW1CLEVBQUUsRUFBRTtLQUMxQixDQUFDO0lBRUYsR0FBRyxHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQzlCLFlBQVksQ0FBMkI7SUFFaEQsS0FBSyxDQUFDLFdBQVcsQ0FBRSxJQUFTO1FBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsT0FBTztRQUM5RCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDO1lBQUUsT0FBTztRQUM3RCxJQUFJLENBQUMsQ0FBQyxNQUFNLGlCQUFpQixFQUFFLENBQUM7WUFBRSxPQUFPO1FBRXpDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQSxnRkFBZ0YsQ0FBQyxDQUFDO1FBQ2pILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUUsSUFBUyxFQUFFLFlBQTJCO1FBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwRCxZQUFZLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQSxtR0FBbUcsQ0FBQyxDQUFDO1FBQ25JLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUEsMkZBQTJGLENBQUMsQ0FBQztRQUMzSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUEsbUdBQW1HLENBQUMsQ0FBQztRQUNuSSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUEsZ0dBQWdHLENBQUMsQ0FBQztRQUNoSSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQXFCLElBQVMsRUFBRSxZQUEyQjtRQUN2RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBRSx1QkFBK0IsRUFBRSxJQUFTO1FBQzVELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztZQUN0RSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRTlCLHlDQUF5QztnQkFDekMsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3hCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ3JCLFVBQVUsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDckMsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUM3QixTQUFTO29CQUNiLENBQUM7b0JBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2xDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDOUIsNEdBQTRHO29CQUM1RyxJQUFJLEtBQUssS0FBSyxNQUFNO3dCQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzt5QkFDNUMsSUFBSSxLQUFLLEtBQUssT0FBTzt3QkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7eUJBQ25ELElBQUksS0FBSyxLQUFLLE1BQU07d0JBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO3lCQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7O3dCQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDckMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsK0NBQStDLENBQUMsQ0FBQztRQUMvRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcscUJBQXFCLENBQUMsQ0FBQztRQUM1RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztJQUNuRixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxPQUFPLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsT0FBTyxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVDLE9BQU8sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLGdCQUFnQixDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sU0FBUyxHQUE0QixFQUFFLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDNUQsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBb0IsRUFBRSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxHQUFHLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RSxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLE9BQU8sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLGtDQUFrQztRQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxpQ0FBaUM7UUFDakMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixrQ0FBa0M7UUFDbEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3BCLGtDQUFrQztRQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLCtDQUErQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGtHQUFrRztJQUNySixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIGRvdGVudiBmcm9tIFwiZG90ZW52XCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtcy5qc1wiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5hc3luYyBmdW5jdGlvbiBpc0luR2l0UmVwb3NpdG9yeSAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmV2LXBhcnNlXCIsIFwiLS1pcy1pbnNpZGUtd29yay10cmVlXCJdKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdpdFJvb3RQYXRoICgpIHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcInJldi1wYXJzZVwiLCBcIi0tc2hvdy10b3BsZXZlbFwiXSk7XG4gICAgcmV0dXJuIHN0ZG91dDtcbn1cblxuZXhwb3J0IGNsYXNzIEFyZ3Yge1xuICAgIHN0YXRpYyByZWFkb25seSBkZWZhdWx0ID0ge1xuICAgICAgICBcInZhcmlhYmxlc0ZpbGVcIjogXCIuZ2l0bGFiLWNpLWxvY2FsLXZhcmlhYmxlcy55bWxcIixcbiAgICAgICAgXCJldmFsdWF0ZVJ1bGVDaGFuZ2VzXCI6IHRydWUsXG4gICAgICAgIFwiaWdub3JlU2NoZW1hUGF0aHNcIjogW10sXG4gICAgfTtcblxuICAgIG1hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyB8IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgYXN5bmMgZmFsbGJhY2tDd2QgKGFyZ3M6IGFueSkge1xuICAgICAgICBpZiAoYXJncy5jd2QgIT09IHVuZGVmaW5lZCB8fCBhcmdzLmZpbGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhgJHtwcm9jZXNzLmN3ZCgpfS8uZ2l0bGFiLWNpLnltbGApKSByZXR1cm47XG4gICAgICAgIGlmICghKGF3YWl0IGlzSW5HaXRSZXBvc2l0b3J5KCkpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy53cml0ZVN0cmVhbXM/LnN0ZGVycihjaGFsa2B7eWVsbG93IC5naXRsYWItY2kueW1sIG5vdCBmb3VuZCBpbiBjd2QsIGZhbGxpbmcgYmFjayB0byBnaXQgcm9vdCBkaXJlY3Rvcnl9XFxuYCk7XG4gICAgICAgIHRoaXMubWFwLnNldChcImN3ZFwiLCBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGF3YWl0IGdpdFJvb3RQYXRoKCkpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgYnVpbGQgKGFyZ3M6IGFueSwgd3JpdGVTdHJlYW1zPzogV3JpdGVTdHJlYW1zKSB7XG4gICAgICAgIGNvbnN0IGFyZ3YgPSBuZXcgQXJndihhcmdzLCB3cml0ZVN0cmVhbXMpO1xuICAgICAgICBhd2FpdCBhcmd2LmZhbGxiYWNrQ3dkKGFyZ3MpO1xuXG4gICAgICAgIGFyZ3YuaW5qZWN0RG90ZW52KGAke2FyZ3YuaG9tZX0vLmdpdGxhYi1jaS1sb2NhbC8uZW52YCwgYXJncyk7XG4gICAgICAgIGFyZ3YuaW5qZWN0RG90ZW52KGAke2FyZ3YuY3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmAsIGFyZ3MpO1xuXG4gICAgICAgIGlmICghYXJndi5zaGVsbEV4ZWN1dG9yTm9JbWFnZSAmJiBhcmd2LnNoZWxsSXNvbGF0aW9uKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM/LnN0ZGVycihjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSAtLXNoZWxsLWlzb2xhdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggLS1uby1zaGVsbC1leGVjdXRvci1uby1pbWFnZVxcbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyZ3YuZGVmYXVsdEltYWdlRXhwbGljaXRseVNldCAmJiBhcmd2LnNoZWxsSXNvbGF0aW9uKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM/LnN0ZGVycihjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSAtLWRlZmF1bHQtaW1hZ2UgZG9lcyBub3Qgd29yayB3aXRoIC0tc2hlbGwtaXNvbGF0aW9uPXRydWVcXG5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmd2LmRlZmF1bHRJbWFnZUV4cGxpY2l0bHlTZXQgJiYgYXJndi5zaGVsbEV4ZWN1dG9yTm9JbWFnZSkge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zPy5zdGRlcnIoY2hhbGtge2JsYWNrLmJnWWVsbG93QnJpZ2h0ICBXQVJOIH0gLS1kZWZhdWx0LWltYWdlIGRvZXMgbm90IHdvcmsgd2l0aCAtLXNoZWxsLWV4ZWN1dG9yLW5vLWltYWdlPXRydWVcXG5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmd2LmRlZmF1bHRJbWFnZUV4cGxpY2l0bHlTZXQgJiYgYXJndi5mb3JjZVNoZWxsRXhlY3V0b3IpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcz8uc3RkZXJyKGNoYWxrYHtibGFjay5iZ1llbGxvd0JyaWdodCAgV0FSTiB9IC0tZGVmYXVsdC1pbWFnZSBkb2VzIG5vdCB3b3JrIHdpdGggLS1mb3JjZS1zaGVsbC1leGVjdXRvcj10cnVlXFxuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJndjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yIChhcmd2OiBhbnksIHdyaXRlU3RyZWFtcz86IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBpZiAoYXJndi5ub0NvbG9yKSB7XG4gICAgICAgICAgICBjaGFsay5sZXZlbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53cml0ZVN0cmVhbXMgPSB3cml0ZVN0cmVhbXM7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3YpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluamVjdERvdGVudiAocG90ZW50aWFsRG90ZW52RmlsZXBhdGg6IHN0cmluZywgYXJndjogYW55KSB7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBvdGVudGlhbERvdGVudkZpbGVwYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gZG90ZW52LnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwb3RlbnRpYWxEb3RlbnZGaWxlcGF0aCkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ0tleSA9IGNhbWVsQ2FzZShrZXkpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGUgS0VZPVZBTFVFIHZhcmlhYmxlIGtleXNcbiAgICAgICAgICAgICAgICBpZiAoYXJnS2V5ID09PSBcInZhcmlhYmxlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWwgPSBhcmd2W2FyZ0tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VmFsID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnNldChhcmdLZXksIGN1cnJlbnRWYWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHZhbHVlLnNwbGl0KFwiIFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbC51bnNoaWZ0KHBhaXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcmd2W2FyZ0tleV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBgZG90ZW52LnBhcnNlYCBsaW1pdGF0aW9uIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3Rkb3RsYS9kb3RlbnYvaXNzdWVzLzUxI2lzc3VlY29tbWVudC01NTI1NTkwNzBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikgdGhpcy5tYXAuc2V0KGFyZ0tleSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHRoaXMubWFwLnNldChhcmdLZXksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwibnVsbFwiKSB0aGlzLm1hcC5zZXQoYXJnS2V5LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB0aGlzLm1hcC5zZXQoYXJnS2V5LCBOdW1iZXIodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLm1hcC5zZXQoYXJnS2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGN3ZCAoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGN3ZCA9IHRoaXMubWFwLmdldChcImN3ZFwiKSA/PyBcIi5cIjtcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBjd2QgIT0gXCJvYmplY3RcIiwgXCItLWN3ZCBvcHRpb24gY2Fubm90IGJlIGFuIGFycmF5XCIpO1xuICAgICAgICBhc3NlcnQoIXBhdGguaXNBYnNvbHV0ZShjd2QpLCBcIlBsZWFzZSB1c2UgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIC0tY3dkIG9wdGlvblwiKTtcbiAgICAgICAgY3dkID0gcGF0aC5ub3JtYWxpemUoYCR7cHJvY2Vzcy5jd2QoKX0vJHtjd2R9YCk7XG4gICAgICAgIGN3ZCA9IGN3ZC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgICAgIGFzc2VydChmcy5wYXRoRXhpc3RzU3luYyhjd2QpLCBgJHtjd2R9IGlzIG5vdCBhIGRpcmVjdG9yeWApO1xuICAgICAgICByZXR1cm4gY3dkO1xuICAgIH1cblxuICAgIGdldCB2YXJpYWJsZXNGaWxlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwidmFyaWFibGVzRmlsZVwiKSA/PyBBcmd2LmRlZmF1bHQudmFyaWFibGVzRmlsZTtcbiAgICB9XG5cbiAgICBnZXQgZXZhbHVhdGVSdWxlQ2hhbmdlcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJldmFsdWF0ZVJ1bGVDaGFuZ2VzXCIpID8/IEFyZ3YuZGVmYXVsdC5ldmFsdWF0ZVJ1bGVDaGFuZ2VzO1xuICAgIH1cblxuICAgIGdldCBmaWxlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiZmlsZVwiKSA/PyBcIi5naXRsYWItY2kueW1sXCI7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlRGlyICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMubWFwLmdldChcInN0YXRlRGlyXCIpID8/IFwiLmdpdGxhYi1jaS1sb2NhbFwiKS5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgfVxuXG4gICAgZ2V0IGhvbWUgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5tYXAuZ2V0KFwiaG9tZVwiKSA/PyBwcm9jZXNzLmVudi5IT01FID8/IFwiXCIpLnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcbiAgICB9XG5cbiAgICBnZXQgdm9sdW1lICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubWFwLmdldChcInZvbHVtZVwiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IG5ldHdvcmsgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwibmV0d29ya1wiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IGV4dHJhSG9zdCAoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLm1hcC5nZXQoXCJleHRyYUhvc3RcIikgPz8gW107XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgIH1cblxuICAgIGdldCBpZ25vcmVTY2hlbWFQYXRocyAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiaWdub3JlU2NoZW1hUGF0aHNcIikgPz8gQXJndi5kZWZhdWx0Lmlnbm9yZVNjaGVtYVBhdGhzO1xuICAgIH1cblxuICAgIGdldCBwdWxsUG9saWN5ICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicHVsbFBvbGljeVwiKSA/PyBcImlmLW5vdC1wcmVzZW50XCI7XG4gICAgfVxuXG4gICAgZ2V0IHJlbW90ZVZhcmlhYmxlcyAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInJlbW90ZVZhcmlhYmxlc1wiKTtcbiAgICB9XG5cbiAgICBnZXQgdmFyaWFibGUgKCk6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9IHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwidmFyaWFibGVcIik7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICAgICAgY29uc3QgcGFpcnMgPSB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgICAgICAocGFpcnMgPz8gW10pLmZvckVhY2goKHZhcmlhYmxlUGFpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGVjID0gLyg/PGtleT5cXHcqPykoPSkoPzx2YWx1ZT4oLnxcXG58XFxyKSopLy5leGVjKHZhcmlhYmxlUGFpcik7XG4gICAgICAgICAgICBpZiAoZXhlYz8uZ3JvdXBzPy5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXNbZXhlYy5ncm91cHMua2V5XSA9IGV4ZWM/Lmdyb3Vwcz8udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFyaWFibGVzO1xuICAgIH1cblxuICAgIGdldCB1bnNldFZhcmlhYmxlcyAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwidW5zZXRWYXJpYWJsZVwiKSA/PyBbXTtcbiAgICB9XG5cbiAgICBnZXQgbWFudWFsICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubWFwLmdldChcIm1hbnVhbFwiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IGpvYiAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiam9iXCIpID8/IFtdO1xuICAgIH1cblxuICAgIGdldCBhdXRvQ29tcGxldGluZyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJhdXRvQ29tcGxldGluZ1wiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgY2xlYW51cCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJjbGVhbnVwXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHF1aWV0ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInF1aWV0XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCB1bWFzayAoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFRPRE86IGRlZmF1bHQgdG8gZmFsc2UgaW4gNS54LnhcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInVtYXNrXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHByaXZpbGVnZWQgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicHJpdmlsZWdlZFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgdWxpbWl0ICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgdWxpbWl0ID0gdGhpcy5tYXAuZ2V0KFwidWxpbWl0XCIpO1xuICAgICAgICBpZiAoIXVsaW1pdCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB1bGltaXQ7XG4gICAgfVxuXG4gICAgZ2V0IG5lZWRzICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcIm5lZWRzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBvbmx5TmVlZHMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwib25seU5lZWRzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzdGFnZSAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJzdGFnZVwiKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGdldCBjb21wbGV0aW9uICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNvbXBsZXRpb25cIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxpc3QgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibGlzdFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbGlzdEFsbCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0QWxsXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0SnNvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0SnNvblwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbGlzdENzdiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0Q3N2XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0Q3N2QWxsICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RDc3ZBbGxcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IHByZXZpZXcgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicHJldmlld1wiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgc2hlbGxJc29sYXRpb24gKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBUT0RPOiBkZWZhdWx0IHRvIHRydWUgaW4gNS54LnhcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInNoZWxsSXNvbGF0aW9uXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBmZXRjaEluY2x1ZGVzICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImZldGNoSW5jbHVkZXNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IG1vdW50Q2FjaGUgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibW91bnRDYWNoZVwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgYXJ0aWZhY3RzVG9Tb3VyY2UgKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBUT0RPOiBkZWZhdWx0IHRvIGZhbHNlIGluIDUueC54XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJhcnRpZmFjdHNUb1NvdXJjZVwiKSA/PyB0cnVlO1xuICAgIH1cblxuICAgIGdldCBzaG93VGltZXN0YW1wcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJ0aW1lc3RhbXBzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBtYXhKb2JOYW1lUGFkZGluZyAoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJtYXhKb2JOYW1lUGFkZGluZ1wiKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXJNYWNBZGRyZXNzICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNvbnRhaW5lck1hY0FkZHJlc3NcIikgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyRW11bGF0ZSAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJjb250YWluZXJFbXVsYXRlXCIpID8/IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmN1cnJlbmN5ICgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLm1hcC5nZXQoXCJjb25jdXJyZW5jeVwiKTtcbiAgICAgICAgaWYgKCFjb25jdXJyZW5jeSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBOdW1iZXIoY29uY3VycmVuY3kpO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXJFeGVjdXRhYmxlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiY29udGFpbmVyRXhlY3V0YWJsZVwiKSA/PyBcImRvY2tlclwiO1xuICAgIH1cblxuICAgIGdldCBqc29uU2NoZW1hVmFsaWRhdGlvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJqc29uU2NoZW1hVmFsaWRhdGlvblwiKSA/PyB0cnVlO1xuICAgIH1cblxuICAgIGdldCBzaGVsbEV4ZWN1dG9yTm9JbWFnZSAoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFRPRE86IGRlZmF1bHQgdG8gZmFsc2UgaW4gNS54LnhcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInNoZWxsRXhlY3V0b3JOb0ltYWdlXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IGZvcmNlU2hlbGxFeGVjdXRvciAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJmb3JjZVNoZWxsRXhlY3V0b3JcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRJbWFnZSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImRlZmF1bHRJbWFnZVwiKSA/PyBcImRvY2tlci5pby9ydWJ5OjMuMVwiO1xuICAgIH1cblxuICAgIGdldCBoZWxwZXJJbWFnZSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImhlbHBlckltYWdlXCIpID8/IFwiZG9ja2VyLmlvL2ZpcmVjb3cvZ2l0bGFiLWNpLWxvY2FsLXV0aWw6bGF0ZXN0XCI7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRJbWFnZUV4cGxpY2l0bHlTZXQgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiZGVmYXVsdEltYWdlXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBtYXhpbXVtSW5jbHVkZXMgKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJtYXhpbXVtSW5jbHVkZXNcIikgPz8gMTUwOyAvLyBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9hZG1pbmlzdHJhdGlvbi9zZXR0aW5ncy9jb250aW51b3VzX2ludGVncmF0aW9uLmh0bWwjbWF4aW11bS1pbmNsdWRlc1xuICAgIH1cblxuICAgIGdldCBjaGlsZFBpcGVsaW5lRGVwdGggKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJjaGlsZFBpcGVsaW5lRGVwdGhcIik7XG4gICAgfVxufVxuIl19
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyZ3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsS0FBSyxVQUFVLGlCQUFpQjtJQUM1QixJQUFJLENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVztJQUN0QixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDNUUsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sT0FBTyxJQUFJO0lBQ2IsTUFBTSxDQUFVLE9BQU8sR0FBRztRQUN0QixlQUFlLEVBQUUsZ0NBQWdDO1FBQ2pELHFCQUFxQixFQUFFLElBQUk7UUFDM0IsbUJBQW1CLEVBQUUsRUFBRTtLQUMxQixDQUFDO0lBRUYsR0FBRyxHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQzlCLFlBQVksQ0FBMkI7SUFFaEQsS0FBSyxDQUFDLFdBQVcsQ0FBRSxJQUFTO1FBQ2hD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RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGtHQUFrRztJQUNySixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIGRvdGVudiBmcm9tIFwiZG90ZW52XCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtcy5qc1wiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5hc3luYyBmdW5jdGlvbiBpc0luR2l0UmVwb3NpdG9yeSAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmV2LXBhcnNlXCIsIFwiLS1pcy1pbnNpZGUtd29yay10cmVlXCJdKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdpdFJvb3RQYXRoICgpIHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcInJldi1wYXJzZVwiLCBcIi0tc2hvdy10b3BsZXZlbFwiXSk7XG4gICAgcmV0dXJuIHN0ZG91dDtcbn1cblxuZXhwb3J0IGNsYXNzIEFyZ3Yge1xuICAgIHN0YXRpYyByZWFkb25seSBkZWZhdWx0ID0ge1xuICAgICAgICBcInZhcmlhYmxlc0ZpbGVcIjogXCIuZ2l0bGFiLWNpLWxvY2FsLXZhcmlhYmxlcy55bWxcIixcbiAgICAgICAgXCJldmFsdWF0ZVJ1bGVDaGFuZ2VzXCI6IHRydWUsXG4gICAgICAgIFwiaWdub3JlU2NoZW1hUGF0aHNcIjogW10sXG4gICAgfTtcblxuICAgIG1hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyB8IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgYXN5bmMgZmFsbGJhY2tDd2QgKGFyZ3M6IGFueSkge1xuICAgICAgICBpZiAoYXJncy5jd2QgIT09IHVuZGVmaW5lZCB8fCBhcmdzLmZpbGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhgJHtwcm9jZXNzLmN3ZCgpfS8uZ2l0bGFiLWNpLnltbGApKSByZXR1cm47XG4gICAgICAgIGlmICghKGF3YWl0IGlzSW5HaXRSZXBvc2l0b3J5KCkpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy53cml0ZVN0cmVhbXM/LnN0ZGVycihjaGFsa2B7eWVsbG93IC5naXRsYWItY2kueW1sIG5vdCBmb3VuZCBpbiBjd2QsIGZhbGxpbmcgYmFjayB0byBnaXQgcm9vdCBkaXJlY3Rvcnl9XFxuYCk7XG4gICAgICAgIHRoaXMubWFwLnNldChcImN3ZFwiLCBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGF3YWl0IGdpdFJvb3RQYXRoKCkpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgYnVpbGQgKGFyZ3M6IGFueSwgd3JpdGVTdHJlYW1zPzogV3JpdGVTdHJlYW1zKSB7XG4gICAgICAgIGNvbnN0IGFyZ3YgPSBuZXcgQXJndihhcmdzLCB3cml0ZVN0cmVhbXMpO1xuICAgICAgICBhd2FpdCBhcmd2LmZhbGxiYWNrQ3dkKGFyZ3MpO1xuXG4gICAgICAgIGFyZ3YuaW5qZWN0RG90ZW52KGAke2FyZ3YuaG9tZX0vLmdpdGxhYi1jaS1sb2NhbC8uZW52YCwgYXJncyk7XG4gICAgICAgIGFyZ3YuaW5qZWN0RG90ZW52KGAke2FyZ3YuY3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmAsIGFyZ3MpO1xuXG4gICAgICAgIGlmICghYXJndi5zaGVsbEV4ZWN1dG9yTm9JbWFnZSAmJiBhcmd2LnNoZWxsSXNvbGF0aW9uKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM/LnN0ZGVycihjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSAtLXNoZWxsLWlzb2xhdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggLS1uby1zaGVsbC1leGVjdXRvci1uby1pbWFnZVxcbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyZ3YuZGVmYXVsdEltYWdlRXhwbGljaXRseVNldCAmJiBhcmd2LnNoZWxsSXNvbGF0aW9uKSB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM/LnN0ZGVycihjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSAtLWRlZmF1bHQtaW1hZ2UgZG9lcyBub3Qgd29yayB3aXRoIC0tc2hlbGwtaXNvbGF0aW9uPXRydWVcXG5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmd2LmRlZmF1bHRJbWFnZUV4cGxpY2l0bHlTZXQgJiYgYXJndi5zaGVsbEV4ZWN1dG9yTm9JbWFnZSkge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zPy5zdGRlcnIoY2hhbGtge2JsYWNrLmJnWWVsbG93QnJpZ2h0ICBXQVJOIH0gLS1kZWZhdWx0LWltYWdlIGRvZXMgbm90IHdvcmsgd2l0aCAtLXNoZWxsLWV4ZWN1dG9yLW5vLWltYWdlPXRydWVcXG5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmd2LmRlZmF1bHRJbWFnZUV4cGxpY2l0bHlTZXQgJiYgYXJndi5mb3JjZVNoZWxsRXhlY3V0b3IpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcz8uc3RkZXJyKGNoYWxrYHtibGFjay5iZ1llbGxvd0JyaWdodCAgV0FSTiB9IC0tZGVmYXVsdC1pbWFnZSBkb2VzIG5vdCB3b3JrIHdpdGggLS1mb3JjZS1zaGVsbC1leGVjdXRvcj10cnVlXFxuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJndjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yIChhcmd2OiBhbnksIHdyaXRlU3RyZWFtcz86IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBpZiAoYXJndi5ub0NvbG9yKSB7XG4gICAgICAgICAgICBjaGFsay5sZXZlbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53cml0ZVN0cmVhbXMgPSB3cml0ZVN0cmVhbXM7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3YpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluamVjdERvdGVudiAocG90ZW50aWFsRG90ZW52RmlsZXBhdGg6IHN0cmluZywgYXJndjogYW55KSB7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBvdGVudGlhbERvdGVudkZpbGVwYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gZG90ZW52LnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwb3RlbnRpYWxEb3RlbnZGaWxlcGF0aCkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ0tleSA9IGNhbWVsQ2FzZShrZXkpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGUgS0VZPVZBTFVFIHZhcmlhYmxlIGtleXNcbiAgICAgICAgICAgICAgICBpZiAoYXJnS2V5ID09PSBcInZhcmlhYmxlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWwgPSBhcmd2W2FyZ0tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VmFsID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnNldChhcmdLZXksIGN1cnJlbnRWYWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHZhbHVlLnNwbGl0KFwiIFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbC51bnNoaWZ0KHBhaXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcmd2W2FyZ0tleV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBgZG90ZW52LnBhcnNlYCBsaW1pdGF0aW9uIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3Rkb3RsYS9kb3RlbnYvaXNzdWVzLzUxI2lzc3VlY29tbWVudC01NTI1NTkwNzBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikgdGhpcy5tYXAuc2V0KGFyZ0tleSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHRoaXMubWFwLnNldChhcmdLZXksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwibnVsbFwiKSB0aGlzLm1hcC5zZXQoYXJnS2V5LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB0aGlzLm1hcC5zZXQoYXJnS2V5LCBOdW1iZXIodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLm1hcC5zZXQoYXJnS2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGN3ZCAoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGN3ZCA9IHRoaXMubWFwLmdldChcImN3ZFwiKSA/PyBcIi5cIjtcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBjd2QgIT0gXCJvYmplY3RcIiwgXCItLWN3ZCBvcHRpb24gY2Fubm90IGJlIGFuIGFycmF5XCIpO1xuICAgICAgICBhc3NlcnQoIXBhdGguaXNBYnNvbHV0ZShjd2QpLCBcIlBsZWFzZSB1c2UgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIC0tY3dkIG9wdGlvblwiKTtcbiAgICAgICAgY3dkID0gcGF0aC5ub3JtYWxpemUoYCR7cHJvY2Vzcy5jd2QoKX0vJHtjd2R9YCk7XG4gICAgICAgIGN3ZCA9IGN3ZC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgICAgIGFzc2VydChmcy5wYXRoRXhpc3RzU3luYyhjd2QpLCBgJHtjd2R9IGlzIG5vdCBhIGRpcmVjdG9yeWApO1xuICAgICAgICByZXR1cm4gY3dkO1xuICAgIH1cblxuICAgIGdldCB2YXJpYWJsZXNGaWxlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwidmFyaWFibGVzRmlsZVwiKSA/PyBBcmd2LmRlZmF1bHQudmFyaWFibGVzRmlsZTtcbiAgICB9XG5cbiAgICBnZXQgZXZhbHVhdGVSdWxlQ2hhbmdlcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJldmFsdWF0ZVJ1bGVDaGFuZ2VzXCIpID8/IEFyZ3YuZGVmYXVsdC5ldmFsdWF0ZVJ1bGVDaGFuZ2VzO1xuICAgIH1cblxuICAgIGdldCBmaWxlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiZmlsZVwiKSA/PyBcIi5naXRsYWItY2kueW1sXCI7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlRGlyICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMubWFwLmdldChcInN0YXRlRGlyXCIpID8/IFwiLmdpdGxhYi1jaS1sb2NhbFwiKS5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgfVxuXG4gICAgZ2V0IGhvbWUgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5tYXAuZ2V0KFwiaG9tZVwiKSA/PyBwcm9jZXNzLmVudi5IT01FID8/IFwiXCIpLnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcbiAgICB9XG5cbiAgICBnZXQgdm9sdW1lICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubWFwLmdldChcInZvbHVtZVwiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IG5ldHdvcmsgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwibmV0d29ya1wiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IGV4dHJhSG9zdCAoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLm1hcC5nZXQoXCJleHRyYUhvc3RcIikgPz8gW107XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgIH1cblxuICAgIGdldCBpZ25vcmVTY2hlbWFQYXRocyAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiaWdub3JlU2NoZW1hUGF0aHNcIikgPz8gQXJndi5kZWZhdWx0Lmlnbm9yZVNjaGVtYVBhdGhzO1xuICAgIH1cblxuICAgIGdldCBwdWxsUG9saWN5ICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicHVsbFBvbGljeVwiKSA/PyBcImlmLW5vdC1wcmVzZW50XCI7XG4gICAgfVxuXG4gICAgZ2V0IHJlbW90ZVZhcmlhYmxlcyAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInJlbW90ZVZhcmlhYmxlc1wiKTtcbiAgICB9XG5cbiAgICBnZXQgdmFyaWFibGUgKCk6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9IHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwidmFyaWFibGVcIik7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICAgICAgY29uc3QgcGFpcnMgPSB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgICAgICAocGFpcnMgPz8gW10pLmZvckVhY2goKHZhcmlhYmxlUGFpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGVjID0gLyg/PGtleT5cXHcqPykoPSkoPzx2YWx1ZT4oLnxcXG58XFxyKSopLy5leGVjKHZhcmlhYmxlUGFpcik7XG4gICAgICAgICAgICBpZiAoZXhlYz8uZ3JvdXBzPy5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXNbZXhlYy5ncm91cHMua2V5XSA9IGV4ZWM/Lmdyb3Vwcz8udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFyaWFibGVzO1xuICAgIH1cblxuICAgIGdldCB1bnNldFZhcmlhYmxlcyAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwidW5zZXRWYXJpYWJsZVwiKSA/PyBbXTtcbiAgICB9XG5cbiAgICBnZXQgbWFudWFsICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubWFwLmdldChcIm1hbnVhbFwiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IGpvYiAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiam9iXCIpID8/IFtdO1xuICAgIH1cblxuICAgIGdldCBhdXRvQ29tcGxldGluZyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJhdXRvQ29tcGxldGluZ1wiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgY2xlYW51cCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJjbGVhbnVwXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHF1aWV0ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInF1aWV0XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCB1bWFzayAoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFRPRE86IGRlZmF1bHQgdG8gZmFsc2UgaW4gNS54LnhcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInVtYXNrXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXJucyAoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInVzZXJuc1wiKTtcbiAgICB9XG5cbiAgICBnZXQgcHJpdmlsZWdlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJwcml2aWxlZ2VkXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCB1bGltaXQgKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCB1bGltaXQgPSB0aGlzLm1hcC5nZXQoXCJ1bGltaXRcIik7XG4gICAgICAgIGlmICghdWxpbWl0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHVsaW1pdDtcbiAgICB9XG5cbiAgICBnZXQgbmVlZHMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibmVlZHNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IG9ubHlOZWVkcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJvbmx5TmVlZHNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IHN0YWdlICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInN0YWdlXCIpID8/IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXBsZXRpb24gKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiY29tcGxldGlvblwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbGlzdCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0QWxsICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RBbGxcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxpc3RKc29uICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RKc29uXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0Q3N2ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RDc3ZcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxpc3RDc3ZBbGwgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibGlzdENzdkFsbFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlldyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJwcmV2aWV3XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzaGVsbElzb2xhdGlvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFRPRE86IGRlZmF1bHQgdG8gdHJ1ZSBpbiA1LngueFxuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwic2hlbGxJc29sYXRpb25cIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGZldGNoSW5jbHVkZXMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiZmV0Y2hJbmNsdWRlc1wiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbW91bnRDYWNoZSAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJtb3VudENhY2hlXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBhcnRpZmFjdHNUb1NvdXJjZSAoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFRPRE86IGRlZmF1bHQgdG8gZmFsc2UgaW4gNS54LnhcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImFydGlmYWN0c1RvU291cmNlXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dUaW1lc3RhbXBzICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInRpbWVzdGFtcHNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IG1heEpvYk5hbWVQYWRkaW5nICgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcIm1heEpvYk5hbWVQYWRkaW5nXCIpID8/IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRhaW5lck1hY0FkZHJlc3MgKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiY29udGFpbmVyTWFjQWRkcmVzc1wiKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXJFbXVsYXRlICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNvbnRhaW5lckVtdWxhdGVcIikgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgY29uY3VycmVuY3kgKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBjb25zdCBjb25jdXJyZW5jeSA9IHRoaXMubWFwLmdldChcImNvbmN1cnJlbmN5XCIpO1xuICAgICAgICBpZiAoIWNvbmN1cnJlbmN5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIE51bWJlcihjb25jdXJyZW5jeSk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRhaW5lckV4ZWN1dGFibGUgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJjb250YWluZXJFeGVjdXRhYmxlXCIpID8/IFwiZG9ja2VyXCI7XG4gICAgfVxuXG4gICAgZ2V0IGpzb25TY2hlbWFWYWxpZGF0aW9uICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImpzb25TY2hlbWFWYWxpZGF0aW9uXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHNoZWxsRXhlY3V0b3JOb0ltYWdlICgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gVE9ETzogZGVmYXVsdCB0byBmYWxzZSBpbiA1LngueFxuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwic2hlbGxFeGVjdXRvck5vSW1hZ2VcIikgPz8gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9yY2VTaGVsbEV4ZWN1dG9yICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImZvcmNlU2hlbGxFeGVjdXRvclwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdEltYWdlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiZGVmYXVsdEltYWdlXCIpID8/IFwiZG9ja2VyLmlvL3J1Ynk6My4xXCI7XG4gICAgfVxuXG4gICAgZ2V0IGhlbHBlckltYWdlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiaGVscGVySW1hZ2VcIikgPz8gXCJkb2NrZXIuaW8vZmlyZWNvdy9naXRsYWItY2ktbG9jYWwtdXRpbDpsYXRlc3RcIjtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdEltYWdlRXhwbGljaXRseVNldCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJkZWZhdWx0SW1hZ2VcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IG1heGltdW1JbmNsdWRlcyAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcIm1heGltdW1JbmNsdWRlc1wiKSA/PyAxNTA7IC8vIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2FkbWluaXN0cmF0aW9uL3NldHRpbmdzL2NvbnRpbnVvdXNfaW50ZWdyYXRpb24uaHRtbCNtYXhpbXVtLWluY2x1ZGVzXG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkUGlwZWxpbmVEZXB0aCAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNoaWxkUGlwZWxpbmVEZXB0aFwiKTtcbiAgICB9XG59XG4iXX0=
@@ -38,7 +38,13 @@ export function jobExtends(gitlabData) {
38
38
  export function reference(gitlabData, recurseData) {
39
39
  for (const [key, value] of Object.entries(recurseData || {})) {
40
40
  if (value?.referenceData) {
41
- recurseData[key] = getSubDataByReference(gitlabData, value.referenceData);
41
+ if (Object.keys(value).length > 1) {
42
+ recurseData[key] = { ...getSubDataByReference(gitlabData, value.referenceData), ...recurseData[key] };
43
+ delete recurseData[key].referenceData;
44
+ }
45
+ else {
46
+ recurseData[key] = getSubDataByReference(gitlabData, value.referenceData);
47
+ }
42
48
  }
43
49
  else if (typeof value === "object") {
44
50
  reference(gitlabData, value);
@@ -215,4 +221,4 @@ export function flattenLists(gitlabData) {
215
221
  }
216
222
  }, { cycleHandling: true });
217
223
  }
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBhbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGEtZXhwYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLE1BQU0sRUFBRSxFQUFDLGNBQWMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFPLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQWUsRUFBRSxPQUFlLEVBQUUsT0FBWSxFQUFFLE9BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNyRyxNQUFNLENBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxLQUFLLENBQUEsZUFBZSxPQUFPLGdEQUFnRCxDQUFDLENBQUM7SUFDN0csS0FBSyxFQUFFLENBQUM7SUFFUixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzVGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFFeEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLEtBQUssQ0FBQSxlQUFlLFVBQVUseUNBQXlDLE9B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RCxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFBLHdEQUF3RCxJQUFJLENBQUMsUUFBUSw0RUFBNEUsQ0FBQyxDQUFDO1FBQ3JNLENBQUM7SUFDTCxDQUFDLEVBQUUsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IGRlZXBFeHRlbmQgZnJvbSBcImRlZXAtZXh0ZW5kXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7Sm9iLCBOZWVkfSBmcm9tIFwiLi9qb2IuanNcIjtcbmltcG9ydCB7dHJhdmVyc2V9IGZyb20gXCJvYmplY3QtdHJhdmVyc2FsXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG5jb25zdCBleHRlbmRzTWF4RGVwdGggPSAxMTtcbmNvbnN0IGV4dGVuZHNSZWN1cnNlID0gKGdpdGxhYkRhdGE6IGFueSwgam9iTmFtZTogc3RyaW5nLCBqb2JEYXRhOiBhbnksIHBhcmVudHM6IGFueVtdLCBkZXB0aDogbnVtYmVyKSA9PiB7XG4gICAgYXNzZXJ0KGRlcHRoIDwgZXh0ZW5kc01heERlcHRoLCBjaGFsa2B7Ymx1ZUJyaWdodCAke2pvYk5hbWV9fTogY2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCBpbiBcXGBleHRlbmRzXFxgYCk7XG4gICAgZGVwdGgrKztcblxuICAgIGpvYkRhdGEuZXh0ZW5kcyA9IHR5cGVvZiBqb2JEYXRhLmV4dGVuZHMgPT09IFwic3RyaW5nXCIgPyBbam9iRGF0YS5leHRlbmRzXSA6IGpvYkRhdGEuZXh0ZW5kcztcbiAgICBqb2JEYXRhLmV4dGVuZHMgPSBqb2JEYXRhLmV4dGVuZHMgPz8gW107XG5cbiAgICBmb3IgKGNvbnN0IHBhcmVudE5hbWUgb2Ygam9iRGF0YS5leHRlbmRzKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudERhdGEgPSBnaXRsYWJEYXRhW3BhcmVudE5hbWVdO1xuICAgICAgICBhc3NlcnQocGFyZW50RGF0YSAhPSBudWxsLCBjaGFsa2B7Ymx1ZUJyaWdodCAke3BhcmVudE5hbWV9fSBpcyB1bnNwZWNpZmllZCwgdXNlZCBieSB7Ymx1ZUJyaWdodCAke2pvYk5hbWV9fSBleHRlbmRzYCk7XG4gICAgICAgIGV4dGVuZHNSZWN1cnNlKGdpdGxhYkRhdGEsIHBhcmVudE5hbWUsIHBhcmVudERhdGEsIHBhcmVudHMsIGRlcHRoKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKHBhcmVudERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBqb2JFeHRlbmRzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmICghVXRpbHMuaXNPYmplY3Qoam9iRGF0YSkpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhcyA9IGV4dGVuZHNSZWN1cnNlKGdpdGxhYkRhdGEsIGpvYk5hbWUsIGpvYkRhdGEsIFtdLCAwKTtcbiAgICAgICAgZ2l0bGFiRGF0YVtqb2JOYW1lXSA9IGRlZXBFeHRlbmQoe30sIC4uLnBhcmVudERhdGFzLCBqb2JEYXRhKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmICghVXRpbHMuaXNPYmplY3Qoam9iRGF0YSkpIGNvbnRpbnVlO1xuICAgICAgICBkZWxldGUgam9iRGF0YS5leHRlbmRzO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZSAoZ2l0bGFiRGF0YTogYW55LCByZWN1cnNlRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihyZWN1cnNlRGF0YSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKHZhbHVlPy5yZWZlcmVuY2VEYXRhKSB7XG4gICAgICAgICAgICByZWN1cnNlRGF0YVtrZXldID0gZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlKGdpdGxhYkRhdGEsIHZhbHVlLnJlZmVyZW5jZURhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNDaXJjdWxhckNoYWluKHJlY3Vyc2VEYXRhKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKHttZXNzYWdlOiBgIXJlZmVyZW5jZSBjaXJjdWxhciBjaGFpbiBkZXRlY3RlZCBbJHt2YWx1ZS5yZWZlcmVuY2VEYXRhfV1gfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGdldFN1YkRhdGFCeVJlZmVyZW5jZSA9IChnaXRsYWJEYXRhOiBhbnksIHJlZmVyZW5jZURhdGE6IHN0cmluZ1tdKSA9PiB7XG4gICAgbGV0IGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJEYXRhO1xuICAgIHJlZmVyZW5jZURhdGEuZm9yRWFjaCgocmVmZXJlbmNlUG9pbnRlcikgPT4ge1xuICAgICAgICBhc3NlcnQoZ2l0bGFiU3ViRGF0YVtyZWZlcmVuY2VQb2ludGVyXSAhPSBudWxsLCBgIXJlZmVyZW5jZSBbJHtyZWZlcmVuY2VEYXRhLmpvaW4oXCIsIFwiKX1dIGlzIHVuZGVmaW5lZGApO1xuICAgICAgICBnaXRsYWJTdWJEYXRhID0gZ2l0bGFiU3ViRGF0YVtyZWZlcmVuY2VQb2ludGVyXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZ2l0bGFiU3ViRGF0YTtcbn07XG5cbmZ1bmN0aW9uIGhhc0NpcmN1bGFyQ2hhaW4gKGRhdGE6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZS5tZXNzYWdlLnN0YXJ0c1dpdGgoXCJDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09OXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICBUcmFuc2Zvcm0gdGhlIGdsb2JhbGx5IGRlZmluZWQgW1wiaW1hZ2VcIiwgXCJzZXJ2aWNlc1wiLCBcImNhY2hlXCIsIFwiYmVmb3JlX3NjcmlwdFwiLCBcImFmdGVyX3NjcmlwdFwiXSBpbnRvIHRoZSBkZWZhdWx0Lnggc3ludGF4XG4gIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvaW5kZXguaHRtbCNnbG9iYWxseS1kZWZpbmVkLWltYWdlLXNlcnZpY2VzLWNhY2hlLWJlZm9yZV9zY3JpcHQtYWZ0ZXJfc2NyaXB0XG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURlcHJlY2F0ZWRHbG9iYWxEZWZhdWx0U3ludGF4IChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBHSVRMQUJfREVQUkVDQVRFRF9HTE9CQUxMWV9ERUZJTkVEX0tFWVdPUkRTID0gW1wiaW1hZ2VcIiwgXCJzZXJ2aWNlc1wiLCBcImNhY2hlXCIsIFwiYmVmb3JlX3NjcmlwdFwiLCBcImFmdGVyX3NjcmlwdFwiXTtcblxuICAgIGdpdGxhYkRhdGEuZGVmYXVsdCA9IGdpdGxhYkRhdGEuZGVmYXVsdCA/PyB7fTtcbiAgICBmb3IgKGNvbnN0IGcgb2YgR0lUTEFCX0RFUFJFQ0FURURfR0xPQkFMTFlfREVGSU5FRF9LRVlXT1JEUykge1xuICAgICAgICBpZiAoZ2l0bGFiRGF0YVtnXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBnaXRsYWJEYXRhLmRlZmF1bHRbZ10gPSBnaXRsYWJEYXRhW2ddO1xuICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbZ107IC8vIFNpbmNlIHRoaXMgaXMgZGVwcmVjYXRlZCwgZGVsZXRpbmcgaXQgdG8gcHJldmVudCB1cyBmcm9tIHVzaW5nIGl0IGludGVybmFsbHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZSAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgbm9ybWFsaXplR2xvYmFsVmFyaWFibGVzKGdpdGxhYkRhdGEpO1xuXG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkgfHwgam9iTmFtZS5zdGFydHNXaXRoKFwiLlwiKSkgY29udGludWU7XG4gICAgICAgIG5lZWRzRWFjaChqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgY2FjaGVFYWNoKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBzZXJ2aWNlc0VhY2goam9iTmFtZSwgZ2l0bGFiRGF0YSk7XG4gICAgICAgIGltYWdlRWFjaChqb2JOYW1lLCBnaXRsYWJEYXRhKTtcblxuICAgICAgICBqb2JEYXRhLmFmdGVyX3NjcmlwdCA9ICh0eXBlb2Ygam9iRGF0YS5hZnRlcl9zY3JpcHQgPT09IFwic3RyaW5nXCIgJiYgam9iRGF0YS5hZnRlcl9zY3JpcHQgIT09IFwiXCIpID8gW2pvYkRhdGEuYWZ0ZXJfc2NyaXB0XSA6IGpvYkRhdGEuYWZ0ZXJfc2NyaXB0O1xuICAgICAgICBqb2JEYXRhLmJlZm9yZV9zY3JpcHQgPSAodHlwZW9mIGpvYkRhdGEuYmVmb3JlX3NjcmlwdCA9PT0gXCJzdHJpbmdcIiAmJiBqb2JEYXRhLmJlZm9yZV9zY3JpcHQgIT09IFwiXCIpID8gW2pvYkRhdGEuYmVmb3JlX3NjcmlwdF0gOiBqb2JEYXRhLmJlZm9yZV9zY3JpcHQ7XG4gICAgICAgIGpvYkRhdGEuc2NyaXB0ID0gKHR5cGVvZiBqb2JEYXRhLnNjcmlwdCA9PT0gXCJzdHJpbmdcIiAmJiBqb2JEYXRhLnNjcmlwdCAhPT0gXCJcIikgPyBbam9iRGF0YS5zY3JpcHRdIDogam9iRGF0YS5zY3JpcHQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNDb21wbGV4IChkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBuZWVkczogTmVlZCA9IHtcbiAgICAgICAgam9iOiBkYXRhLmpvYiA/PyBkYXRhLFxuICAgICAgICBhcnRpZmFjdHM6IGRhdGEuYXJ0aWZhY3RzID8/IHRydWUsXG4gICAgICAgIC4uLihkYXRhLnBpcGVsaW5lID8ge3BpcGVsaW5lOiBkYXRhLnBpcGVsaW5lfSA6IHt9KSxcbiAgICAgICAgLi4uKGRhdGEucHJvamVjdCA/IHtwcm9qZWN0OiBkYXRhLnByb2plY3R9IDoge30pLFxuICAgICAgICAuLi4oZGF0YS5yZWYgPyB7cmVmOiBkYXRhLnJlZn0gOiB7fSksXG4gICAgICAgIC4uLihkYXRhLm9wdGlvbmFsID8ge29wdGlvbmFsOiBkYXRhLm9wdGlvbmFsfSA6IHt9KSxcbiAgICB9O1xuXG4gICAgLy8gSW4gbmVlZHM6cHJvamVjdC9uZWVkczpwaXBlbGluZSwgYG9wdGlvbmFsYCBpcyBub3QgYW4gYWxsb3dlZCBwcm9wZXJ0eVxuICAgIGlmICghZGF0YS5wcm9qZWN0ICYmICFkYXRhLnBpcGVsaW5lICYmIGRhdGEub3B0aW9uYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZWVkcy5vcHRpb25hbCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbmVlZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc0VhY2ggKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgaWYgKCFqb2JEYXRhLm5lZWRzKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IFtpLCBuXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGpvYkRhdGEubmVlZHMpKSB7XG4gICAgICAgIGpvYkRhdGEubmVlZHNbaV0gPSBuZWVkc0NvbXBsZXgobik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVDb21wbGV4IChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgICBwYXRoczogZGF0YS5wYXRocyxcbiAgICAgICAgcG9saWN5OiBkYXRhLnBvbGljeSA/PyBcInB1bGwtcHVzaFwiLFxuICAgICAgICB3aGVuOiBkYXRhLndoZW4gPz8gXCJvbl9zdWNjZXNzXCIsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlRWFjaCAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBjYWNoZSA9IGpvYkRhdGEuY2FjaGU7XG4gICAgaWYgKCFjYWNoZSkgcmV0dXJuO1xuXG4gICAgam9iRGF0YS5jYWNoZSA9IEFycmF5LmlzQXJyYXkoY2FjaGUpID8gY2FjaGUgOiBbY2FjaGVdO1xuICAgIGZvciAoY29uc3QgW2ksIGNdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGMua2V5Py5maWxlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBhc3NlcnQoYy5rZXkuZmlsZXMubGVuZ3RoID09PSAxIHx8IGMua2V5LmZpbGVzLmxlbmd0aCA9PT0gMiwgYGNhY2hlOmtleTpmaWxlcyBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygb25lIG9yIHR3byBmaWxlIHBhdGhzLiBHb3QgJHtjLmtleS5maWxlcy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgam9iRGF0YS5jYWNoZVtpXSA9IGNhY2hlQ29tcGxleChjKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgY2FjaGUgZWxlbWVudHMgd2l0aCBlbXB0eSBwYXRocyBhcnJheSAoZ2l0bGFiLmNvbSB3b3JrcyB0aGUgc2FtZSB3YXkuKVxuICAgIGpvYkRhdGEuY2FjaGUgPSBqb2JEYXRhLmNhY2hlLmZpbHRlcigoYzogYW55KSA9PiBjLnBhdGhzPy5sZW5ndGggIT09IHVuZGVmaW5lZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlc0NvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiID8gZGF0YSA6IGRhdGEubmFtZSxcbiAgICAgICAgZW50cnlwb2ludDogZGF0YS5lbnRyeXBvaW50LFxuICAgICAgICBjb21tYW5kOiBkYXRhLmNvbW1hbmQsXG4gICAgICAgIGFsaWFzOiBkYXRhLmFsaWFzLFxuICAgICAgICB2YXJpYWJsZXM6IGRhdGEudmFyaWFibGVzLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlc0VhY2ggKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgY29uc3Qgc2VydmljZXMgPSBqb2JEYXRhLnNlcnZpY2VzO1xuICAgIGlmICghc2VydmljZXMpIHJldHVybjtcblxuICAgIGpvYkRhdGEuc2VydmljZXMgPSBBcnJheS5pc0FycmF5KHNlcnZpY2VzKSA/IHNlcnZpY2VzIDogW3NlcnZpY2VzXTtcblxuICAgIGZvciAoY29uc3QgW2ksIHNdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5zZXJ2aWNlcykpIHtcbiAgICAgICAgam9iRGF0YS5zZXJ2aWNlc1tpXSA9IHNlcnZpY2VzQ29tcGxleChzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUNvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIGlmIChkYXRhID09IG51bGwpIHJldHVybiBkYXRhO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiID8gZGF0YSA6IGRhdGEubmFtZSxcbiAgICAgICAgZW50cnlwb2ludDogZGF0YS5lbnRyeXBvaW50LFxuICAgICAgICAuLi4oZGF0YS5kb2NrZXI/LnVzZXIgPyB7ZG9ja2VyOiB7dXNlcjogZGF0YS5kb2NrZXI/LnVzZXJ9fSA6IHt9KSxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VFYWNoIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGNvbnN0IGltYWdlID0gam9iRGF0YS5pbWFnZTtcbiAgICBpZiAoIWltYWdlKSByZXR1cm47XG5cbiAgICBqb2JEYXRhLmltYWdlID0gaW1hZ2VDb21wbGV4KGpvYkRhdGEuaW1hZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5oZXJpdERlZmF1bHQgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKGpvYkRhdGEuaW5oZXJpdD8uZGVmYXVsdCA9PT0gZmFsc2UpIGNvbnRpbnVlO1xuXG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAvLyBza2lwIGhpZGRlbiBqb2JzIGFzIHRoZXkgbWlnaHQganVzdCBjb250YWluIHNoYXJlZCB5YW1sXG4gICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZpcmVjb3cvZ2l0bGFiLWNpLWxvY2FsL2lzc3Vlcy8xMjc3XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleXdvcmRzVG9Jbmhlcml0RnJvbSA9IChBcnJheS5pc0FycmF5KGpvYkRhdGEuaW5oZXJpdD8uZGVmYXVsdCkpID9cbiAgICAgICAgICAgIGpvYkRhdGEuaW5oZXJpdC5kZWZhdWx0IDpcbiAgICAgICAgICAgIFtcImFydGlmYWN0c1wiLCBcImNhY2hlXCIsIFwic2VydmljZXNcIiwgXCJpbWFnZVwiLCBcImJlZm9yZV9zY3JpcHRcIiwgXCJhZnRlcl9zY3JpcHRcIl07XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGtleXdvcmRzVG9Jbmhlcml0RnJvbSkge1xuICAgICAgICAgICAgaWYgKGdpdGxhYkRhdGEuZGVmYXVsdFtrZXl3b3JkXSAhPT0gdW5kZWZpbmVkKSBqb2JEYXRhW2tleXdvcmRdID0gam9iRGF0YVtrZXl3b3JkXSA/PyBnaXRsYWJEYXRhLmRlZmF1bHRba2V5d29yZF07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUdsb2JhbFZhcmlhYmxlcyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhLnZhcmlhYmxlcyA/PyB7fSkpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICBnaXRsYWJEYXRhLnZhcmlhYmxlc1trZXldID0gXCJcIjsgLy8gdmFyaWFibGUncyB2YWx1ZXMgYXJlIG51bGxhYmxlXG4gICAgICAgIH0gZWxzZSBpZiAoVXRpbHMuaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICBnaXRsYWJEYXRhLnZhcmlhYmxlc1trZXldID0gU3RyaW5nKHZhbHVlW1widmFsdWVcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2l0bGFiRGF0YS52YXJpYWJsZXNba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuTGlzdHMgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIHRyYXZlcnNlKGdpdGxhYkRhdGEsICh7cGFyZW50LCBrZXksIHZhbHVlLCBtZXRhfSkgPT4ge1xuICAgICAgICBpZiAocGFyZW50ICE9IG51bGwgJiYga2V5ICE9IG51bGwgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHBhcmVudFtrZXldID0gdmFsdWUuZmxhdCg5KTtcbiAgICAgICAgICAgIGFzc2VydCghcGFyZW50W2tleV0uc29tZShBcnJheS5pc0FycmF5KSwgY2hhbGtgVGhpcyBHaXRsYWIgQ0kgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkOiB7Ymx1ZUJyaWdodCAke21ldGEubm9kZVBhdGh9fSBjb25maWcgc2hvdWxkIGJlIHN0cmluZyBvciBhIG5lc3RlZCBhcnJheSBvZiBzdHJpbmdzIHVwIHRvIDEwIGxldmVsIGRlZXBgKTtcbiAgICAgICAgfVxuICAgIH0sIHtjeWNsZUhhbmRsaW5nOiB0cnVlfSk7XG59XG4iXX0=
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBhbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGEtZXhwYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLE1BQU0sRUFBRSxFQUFDLGNBQWMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFPLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQWUsRUFBRSxPQUFlLEVBQUUsT0FBWSxFQUFFLE9BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNyRyxNQUFNLENBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxLQUFLLENBQUEsZUFBZSxPQUFPLGdEQUFnRCxDQUFDLENBQUM7SUFDN0csS0FBSyxFQUFFLENBQUM7SUFFUixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzVGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFFeEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLEtBQUssQ0FBQSxlQUFlLFVBQVUseUNBQXlDLE9B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TSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7YUFBTSxDQUFDO1lBQ0osVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBRSxVQUFlO0lBQ3pDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQSx3REFBd0QsSUFBSSxDQUFDLFFBQVEsNEVBQTRFLENBQUMsQ0FBQztRQUNyTSxDQUFDO0lBQ0wsQ0FBQyxFQUFFLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBkZWVwRXh0ZW5kIGZyb20gXCJkZWVwLWV4dGVuZFwiO1xuaW1wb3J0IGFzc2VydCwge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQge0pvYiwgTmVlZH0gZnJvbSBcIi4vam9iLmpzXCI7XG5pbXBvcnQge3RyYXZlcnNlfSBmcm9tIFwib2JqZWN0LXRyYXZlcnNhbFwiO1xuaW1wb3J0IHtVdGlsc30gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuY29uc3QgZXh0ZW5kc01heERlcHRoID0gMTE7XG5jb25zdCBleHRlbmRzUmVjdXJzZSA9IChnaXRsYWJEYXRhOiBhbnksIGpvYk5hbWU6IHN0cmluZywgam9iRGF0YTogYW55LCBwYXJlbnRzOiBhbnlbXSwgZGVwdGg6IG51bWJlcikgPT4ge1xuICAgIGFzc2VydChkZXB0aCA8IGV4dGVuZHNNYXhEZXB0aCwgY2hhbGtge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX06IGNpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgaW4gXFxgZXh0ZW5kc1xcYGApO1xuICAgIGRlcHRoKys7XG5cbiAgICBqb2JEYXRhLmV4dGVuZHMgPSB0eXBlb2Ygam9iRGF0YS5leHRlbmRzID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuZXh0ZW5kc10gOiBqb2JEYXRhLmV4dGVuZHM7XG4gICAgam9iRGF0YS5leHRlbmRzID0gam9iRGF0YS5leHRlbmRzID8/IFtdO1xuXG4gICAgZm9yIChjb25zdCBwYXJlbnROYW1lIG9mIGpvYkRhdGEuZXh0ZW5kcykge1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gZ2l0bGFiRGF0YVtwYXJlbnROYW1lXTtcbiAgICAgICAgYXNzZXJ0KHBhcmVudERhdGEgIT0gbnVsbCwgY2hhbGtge2JsdWVCcmlnaHQgJHtwYXJlbnROYW1lfX0gaXMgdW5zcGVjaWZpZWQsIHVzZWQgYnkge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX0gZXh0ZW5kc2ApO1xuICAgICAgICBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBwYXJlbnROYW1lLCBwYXJlbnREYXRhLCBwYXJlbnRzLCBkZXB0aCk7XG4gICAgICAgIHBhcmVudHMucHVzaChwYXJlbnREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gam9iRXh0ZW5kcyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzT2JqZWN0KGpvYkRhdGEpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcGFyZW50RGF0YXMgPSBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBqb2JOYW1lLCBqb2JEYXRhLCBbXSwgMCk7XG4gICAgICAgIGdpdGxhYkRhdGFbam9iTmFtZV0gPSBkZWVwRXh0ZW5kKHt9LCAuLi5wYXJlbnREYXRhcywgam9iRGF0YSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzT2JqZWN0KGpvYkRhdGEpKSBjb250aW51ZTtcbiAgICAgICAgZGVsZXRlIGpvYkRhdGEuZXh0ZW5kcztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2UgKGdpdGxhYkRhdGE6IGFueSwgcmVjdXJzZURhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4ocmVjdXJzZURhdGEgfHwge30pKSB7XG4gICAgICAgIGlmICh2YWx1ZT8ucmVmZXJlbmNlRGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgcmVjdXJzZURhdGFba2V5XSA9IHsuLi5nZXRTdWJEYXRhQnlSZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUucmVmZXJlbmNlRGF0YSksIC4uLnJlY3Vyc2VEYXRhW2tleV19O1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByZWN1cnNlRGF0YVtrZXldLnJlZmVyZW5jZURhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlY3Vyc2VEYXRhW2tleV0gPSBnZXRTdWJEYXRhQnlSZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUucmVmZXJlbmNlRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0NpcmN1bGFyQ2hhaW4ocmVjdXJzZURhdGEpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGAhcmVmZXJlbmNlIGNpcmN1bGFyIGNoYWluIGRldGVjdGVkIFske3ZhbHVlLnJlZmVyZW5jZURhdGF9XWB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlID0gKGdpdGxhYkRhdGE6IGFueSwgcmVmZXJlbmNlRGF0YTogc3RyaW5nW10pID0+IHtcbiAgICBsZXQgZ2l0bGFiU3ViRGF0YSA9IGdpdGxhYkRhdGE7XG4gICAgcmVmZXJlbmNlRGF0YS5mb3JFYWNoKChyZWZlcmVuY2VQb2ludGVyKSA9PiB7XG4gICAgICAgIGFzc2VydChnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdICE9IG51bGwsIGAhcmVmZXJlbmNlIFske3JlZmVyZW5jZURhdGEuam9pbihcIiwgXCIpfV0gaXMgdW5kZWZpbmVkYCk7XG4gICAgICAgIGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdO1xuICAgIH0pO1xuICAgIHJldHVybiBnaXRsYWJTdWJEYXRhO1xufTtcblxuZnVuY3Rpb24gaGFzQ2lyY3VsYXJDaGFpbiAoZGF0YTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBlLm1lc3NhZ2Uuc3RhcnRzV2l0aChcIkNvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gIFRyYW5zZm9ybSB0aGUgZ2xvYmFsbHkgZGVmaW5lZCBbXCJpbWFnZVwiLCBcInNlcnZpY2VzXCIsIFwiY2FjaGVcIiwgXCJiZWZvcmVfc2NyaXB0XCIsIFwiYWZ0ZXJfc2NyaXB0XCJdIGludG8gdGhlIGRlZmF1bHQueCBzeW50YXhcbiAgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9pbmRleC5odG1sI2dsb2JhbGx5LWRlZmluZWQtaW1hZ2Utc2VydmljZXMtY2FjaGUtYmVmb3JlX3NjcmlwdC1hZnRlcl9zY3JpcHRcbiovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGVwcmVjYXRlZEdsb2JhbERlZmF1bHRTeW50YXggKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IEdJVExBQl9ERVBSRUNBVEVEX0dMT0JBTExZX0RFRklORURfS0VZV09SRFMgPSBbXCJpbWFnZVwiLCBcInNlcnZpY2VzXCIsIFwiY2FjaGVcIiwgXCJiZWZvcmVfc2NyaXB0XCIsIFwiYWZ0ZXJfc2NyaXB0XCJdO1xuXG4gICAgZ2l0bGFiRGF0YS5kZWZhdWx0ID0gZ2l0bGFiRGF0YS5kZWZhdWx0ID8/IHt9O1xuICAgIGZvciAoY29uc3QgZyBvZiBHSVRMQUJfREVQUkVDQVRFRF9HTE9CQUxMWV9ERUZJTkVEX0tFWVdPUkRTKSB7XG4gICAgICAgIGlmIChnaXRsYWJEYXRhW2ddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGdpdGxhYkRhdGEuZGVmYXVsdFtnXSA9IGdpdGxhYkRhdGFbZ107XG4gICAgICAgICAgICBkZWxldGUgZ2l0bGFiRGF0YVtnXTsgLy8gU2luY2UgdGhpcyBpcyBkZXByZWNhdGVkLCBkZWxldGluZyBpdCB0byBwcmV2ZW50IHVzIGZyb20gdXNpbmcgaXQgaW50ZXJuYWxseVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBub3JtYWxpemVHbG9iYWxWYXJpYWJsZXMoZ2l0bGFiRGF0YSk7XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSBjb250aW51ZTtcbiAgICAgICAgbmVlZHNFYWNoKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBjYWNoZUVhY2goam9iTmFtZSwgZ2l0bGFiRGF0YSk7XG4gICAgICAgIHNlcnZpY2VzRWFjaChqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgaW1hZ2VFYWNoKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuXG4gICAgICAgIGpvYkRhdGEuYWZ0ZXJfc2NyaXB0ID0gKHR5cGVvZiBqb2JEYXRhLmFmdGVyX3NjcmlwdCA9PT0gXCJzdHJpbmdcIiAmJiBqb2JEYXRhLmFmdGVyX3NjcmlwdCAhPT0gXCJcIikgPyBbam9iRGF0YS5hZnRlcl9zY3JpcHRdIDogam9iRGF0YS5hZnRlcl9zY3JpcHQ7XG4gICAgICAgIGpvYkRhdGEuYmVmb3JlX3NjcmlwdCA9ICh0eXBlb2Ygam9iRGF0YS5iZWZvcmVfc2NyaXB0ID09PSBcInN0cmluZ1wiICYmIGpvYkRhdGEuYmVmb3JlX3NjcmlwdCAhPT0gXCJcIikgPyBbam9iRGF0YS5iZWZvcmVfc2NyaXB0XSA6IGpvYkRhdGEuYmVmb3JlX3NjcmlwdDtcbiAgICAgICAgam9iRGF0YS5zY3JpcHQgPSAodHlwZW9mIGpvYkRhdGEuc2NyaXB0ID09PSBcInN0cmluZ1wiICYmIGpvYkRhdGEuc2NyaXB0ICE9PSBcIlwiKSA/IFtqb2JEYXRhLnNjcmlwdF0gOiBqb2JEYXRhLnNjcmlwdDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc0NvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IG5lZWRzOiBOZWVkID0ge1xuICAgICAgICBqb2I6IGRhdGEuam9iID8/IGRhdGEsXG4gICAgICAgIGFydGlmYWN0czogZGF0YS5hcnRpZmFjdHMgPz8gdHJ1ZSxcbiAgICAgICAgLi4uKGRhdGEucGlwZWxpbmUgPyB7cGlwZWxpbmU6IGRhdGEucGlwZWxpbmV9IDoge30pLFxuICAgICAgICAuLi4oZGF0YS5wcm9qZWN0ID8ge3Byb2plY3Q6IGRhdGEucHJvamVjdH0gOiB7fSksXG4gICAgICAgIC4uLihkYXRhLnJlZiA/IHtyZWY6IGRhdGEucmVmfSA6IHt9KSxcbiAgICAgICAgLi4uKGRhdGEub3B0aW9uYWwgPyB7b3B0aW9uYWw6IGRhdGEub3B0aW9uYWx9IDoge30pLFxuICAgIH07XG5cbiAgICAvLyBJbiBuZWVkczpwcm9qZWN0L25lZWRzOnBpcGVsaW5lLCBgb3B0aW9uYWxgIGlzIG5vdCBhbiBhbGxvd2VkIHByb3BlcnR5XG4gICAgaWYgKCFkYXRhLnByb2plY3QgJiYgIWRhdGEucGlwZWxpbmUgJiYgZGF0YS5vcHRpb25hbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5lZWRzLm9wdGlvbmFsID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBuZWVkcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzRWFjaCAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBpZiAoIWpvYkRhdGEubmVlZHMpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgW2ksIG5dIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5uZWVkcykpIHtcbiAgICAgICAgam9iRGF0YS5uZWVkc1tpXSA9IG5lZWRzQ29tcGxleChuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUNvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICAgIHBhdGhzOiBkYXRhLnBhdGhzLFxuICAgICAgICBwb2xpY3k6IGRhdGEucG9saWN5ID8/IFwicHVsbC1wdXNoXCIsXG4gICAgICAgIHdoZW46IGRhdGEud2hlbiA/PyBcIm9uX3N1Y2Nlc3NcIixcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVFYWNoIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGNvbnN0IGNhY2hlID0gam9iRGF0YS5jYWNoZTtcbiAgICBpZiAoIWNhY2hlKSByZXR1cm47XG5cbiAgICBqb2JEYXRhLmNhY2hlID0gQXJyYXkuaXNBcnJheShjYWNoZSkgPyBjYWNoZSA6IFtjYWNoZV07XG4gICAgZm9yIChjb25zdCBbaSwgY10gb2YgT2JqZWN0LmVudHJpZXM8YW55Pihqb2JEYXRhLmNhY2hlKSkge1xuICAgICAgICBpZiAoYy5rZXk/LmZpbGVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGFzc2VydChjLmtleS5maWxlcy5sZW5ndGggPT09IDEgfHwgYy5rZXkuZmlsZXMubGVuZ3RoID09PSAyLCBgY2FjaGU6a2V5OmZpbGVzIHNob3VsZCBiZSBhbiBhcnJheSBvZiBvbmUgb3IgdHdvIGZpbGUgcGF0aHMuIEdvdCAke2Mua2V5LmZpbGVzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBqb2JEYXRhLmNhY2hlW2ldID0gY2FjaGVDb21wbGV4KGMpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBjYWNoZSBlbGVtZW50cyB3aXRoIGVtcHR5IHBhdGhzIGFycmF5IChnaXRsYWIuY29tIHdvcmtzIHRoZSBzYW1lIHdheS4pXG4gICAgam9iRGF0YS5jYWNoZSA9IGpvYkRhdGEuY2FjaGUuZmlsdGVyKChjOiBhbnkpID0+IGMucGF0aHM/Lmxlbmd0aCAhPT0gdW5kZWZpbmVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VzQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBkYXRhIDogZGF0YS5uYW1lLFxuICAgICAgICBlbnRyeXBvaW50OiBkYXRhLmVudHJ5cG9pbnQsXG4gICAgICAgIGNvbW1hbmQ6IGRhdGEuY29tbWFuZCxcbiAgICAgICAgYWxpYXM6IGRhdGEuYWxpYXMsXG4gICAgICAgIHZhcmlhYmxlczogZGF0YS52YXJpYWJsZXMsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VzRWFjaCAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGpvYkRhdGEuc2VydmljZXM7XG4gICAgaWYgKCFzZXJ2aWNlcykgcmV0dXJuO1xuXG4gICAgam9iRGF0YS5zZXJ2aWNlcyA9IEFycmF5LmlzQXJyYXkoc2VydmljZXMpID8gc2VydmljZXMgOiBbc2VydmljZXNdO1xuXG4gICAgZm9yIChjb25zdCBbaSwgc10gb2YgT2JqZWN0LmVudHJpZXM8YW55Pihqb2JEYXRhLnNlcnZpY2VzKSkge1xuICAgICAgICBqb2JEYXRhLnNlcnZpY2VzW2ldID0gc2VydmljZXNDb21wbGV4KHMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBkYXRhIDogZGF0YS5uYW1lLFxuICAgICAgICBlbnRyeXBvaW50OiBkYXRhLmVudHJ5cG9pbnQsXG4gICAgICAgIC4uLihkYXRhLmRvY2tlcj8udXNlciA/IHtkb2NrZXI6IHt1c2VyOiBkYXRhLmRvY2tlcj8udXNlcn19IDoge30pLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUVhY2ggKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgY29uc3QgaW1hZ2UgPSBqb2JEYXRhLmltYWdlO1xuICAgIGlmICghaW1hZ2UpIHJldHVybjtcblxuICAgIGpvYkRhdGEuaW1hZ2UgPSBpbWFnZUNvbXBsZXgoam9iRGF0YS5pbWFnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmhlcml0RGVmYXVsdCAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoam9iRGF0YS5pbmhlcml0Py5kZWZhdWx0ID09PSBmYWxzZSkgY29udGludWU7XG5cbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpIHx8IGpvYk5hbWUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgIC8vIHNraXAgaGlkZGVuIGpvYnMgYXMgdGhleSBtaWdodCBqdXN0IGNvbnRhaW4gc2hhcmVkIHlhbWxcbiAgICAgICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmlyZWNvdy9naXRsYWItY2ktbG9jYWwvaXNzdWVzLzEyNzdcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5d29yZHNUb0luaGVyaXRGcm9tID0gKEFycmF5LmlzQXJyYXkoam9iRGF0YS5pbmhlcml0Py5kZWZhdWx0KSkgP1xuICAgICAgICAgICAgam9iRGF0YS5pbmhlcml0LmRlZmF1bHQgOlxuICAgICAgICAgICAgW1wiYXJ0aWZhY3RzXCIsIFwiY2FjaGVcIiwgXCJzZXJ2aWNlc1wiLCBcImltYWdlXCIsIFwiYmVmb3JlX3NjcmlwdFwiLCBcImFmdGVyX3NjcmlwdFwiXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yga2V5d29yZHNUb0luaGVyaXRGcm9tKSB7XG4gICAgICAgICAgICBpZiAoZ2l0bGFiRGF0YS5kZWZhdWx0W2tleXdvcmRdICE9PSB1bmRlZmluZWQpIGpvYkRhdGFba2V5d29yZF0gPSBqb2JEYXRhW2tleXdvcmRdID8/IGdpdGxhYkRhdGEuZGVmYXVsdFtrZXl3b3JkXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplR2xvYmFsVmFyaWFibGVzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEudmFyaWFibGVzID8/IHt9KSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGdpdGxhYkRhdGEudmFyaWFibGVzW2tleV0gPSBcIlwiOyAvLyB2YXJpYWJsZSdzIHZhbHVlcyBhcmUgbnVsbGFibGVcbiAgICAgICAgfSBlbHNlIGlmIChVdGlscy5pc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGdpdGxhYkRhdGEudmFyaWFibGVzW2tleV0gPSBTdHJpbmcodmFsdWVbXCJ2YWx1ZVwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnaXRsYWJEYXRhLnZhcmlhYmxlc1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5MaXN0cyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgdHJhdmVyc2UoZ2l0bGFiRGF0YSwgKHtwYXJlbnQsIGtleSwgdmFsdWUsIG1ldGF9KSA9PiB7XG4gICAgICAgIGlmIChwYXJlbnQgIT0gbnVsbCAmJiBrZXkgIT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcGFyZW50W2tleV0gPSB2YWx1ZS5mbGF0KDkpO1xuICAgICAgICAgICAgYXNzZXJ0KCFwYXJlbnRba2V5XS5zb21lKEFycmF5LmlzQXJyYXkpLCBjaGFsa2BUaGlzIEdpdGxhYiBDSSBjb25maWd1cmF0aW9uIGlzIGludmFsaWQ6IHtibHVlQnJpZ2h0ICR7bWV0YS5ub2RlUGF0aH19IGNvbmZpZyBzaG91bGQgYmUgc3RyaW5nIG9yIGEgbmVzdGVkIGFycmF5IG9mIHN0cmluZ3MgdXAgdG8gMTAgbGV2ZWwgZGVlcGApO1xuICAgICAgICB9XG4gICAgfSwge2N5Y2xlSGFuZGxpbmc6IHRydWV9KTtcbn1cbiJdfQ==
package/src/executor.js CHANGED
@@ -85,6 +85,7 @@ export class Executor {
85
85
  if (j.when === "manual" && !manuals.includes(j.name)) {
86
86
  throw new AssertionError({ message: chalk `{blueBright ${j.name}} is when:manual, its needed by {blueBright ${job.name}}, and not specified in --manual` });
87
87
  }
88
+ assert(job.name !== j.name, chalk `This GitLab CI configuration is invalid: The pipeline has circular dependencies: self-dependency: {blueBright ${need.job}}.`);
88
89
  toWaitFor.push(j);
89
90
  }
90
91
  }
@@ -100,4 +101,4 @@ export class Executor {
100
101
  return previousToWaitFor;
101
102
  }
102
103
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxNQUFNLEVBQUUsRUFBQyxjQUFjLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBRXpCLE1BQU0sT0FBTyxRQUFRO0lBRWpCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFFLElBQVUsRUFBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQXdCO1FBQzNHLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixHQUFHLENBQUM7WUFDQSxlQUFlLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVGLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLGNBQW1CLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQ25HLENBQUM7UUFDTCxDQUFDLFFBQVEsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQWlDLEVBQUUsT0FBaUI7UUFDaEksTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTNCLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFNLGlCQUFp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SSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHtKb2J9IGZyb20gXCIuL2pvYi5qc1wiO1xuaW1wb3J0IGFzc2VydCwge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3YuanNcIjtcbmltcG9ydCBwTWFwIGZyb20gXCJwLW1hcFwiO1xuXG5leHBvcnQgY2xhc3MgRXhlY3V0b3Ige1xuXG4gICAgc3RhdGljIGFzeW5jIHJ1bkxvb3AgKGFyZ3Y6IEFyZ3YsIGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgcG90ZW50aWFsU3RhcnRlcnM6IEpvYltdKSB7XG4gICAgICAgIGxldCBzdGFydENhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBzdGFydENhbmRpZGF0ZXMgPSBFeGVjdXRvci5nZXRTdGFydENhbmRpZGF0ZXMoam9icywgc3RhZ2VzLCBwb3RlbnRpYWxTdGFydGVycywgYXJndi5tYW51YWwpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0Q2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGVyID0gYXN5bmMgKHN0YXJ0Q2FuZGlkYXRlOiBKb2IpID0+IHN0YXJ0Q2FuZGlkYXRlLnN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgcE1hcChzdGFydENhbmRpZGF0ZXMsIG1hcHBlciwge2NvbmN1cnJlbmN5OiBhcmd2LmNvbmN1cnJlbmN5ID8/IHN0YXJ0Q2FuZGlkYXRlcy5sZW5ndGh9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoc3RhcnRDYW5kaWRhdGVzLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRTdGFydENhbmRpZGF0ZXMgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgcG90ZW50aWFsU3RhcnRlcnM6IHJlYWRvbmx5IEpvYltdLCBtYW51YWxzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBzdGFydENhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBbLi4ubmV3IFNldDxKb2I+KHBvdGVudGlhbFN0YXJ0ZXJzKV0pIHtcbiAgICAgICAgICAgIGlmIChqb2Iuc3RhcnRlZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGpvYnNUb1dhaXRGb3IgPSBFeGVjdXRvci5nZXRQYXN0VG9XYWl0Rm9yKGpvYnMsIHN0YWdlcywgam9iLCBtYW51YWxzKTtcbiAgICAgICAgICAgIGlmIChFeGVjdXRvci5pc05vdEZpbmlzaGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iLndoZW4gPT09IFwib25fc3VjY2Vzc1wiICYmIEV4ZWN1dG9yLmlzUGFzdEZhaWxlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGpvYi53aGVuID09PSBcIm1hbnVhbFwiICYmIEV4ZWN1dG9yLmlzUGFzdEZhaWxlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGpvYi53aGVuID09PSBcIm9uX2ZhaWx1cmVcIiAmJiAhRXhlY3V0b3IuaXNQYXN0RmFpbGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXJ0Q2FuZGlkYXRlcy5wdXNoKGpvYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXJ0Q2FuZGlkYXRlcztcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNQYXN0RmFpbGVkIChqb2JzVG9XYWl0Rm9yOiBSZWFkb25seUFycmF5PEpvYj4pIHtcbiAgICAgICAgY29uc3QgZmFpbEpvYnMgPSBqb2JzVG9XYWl0Rm9yLmZpbHRlcihqID0+IHtcbiAgICAgICAgICAgIGlmIChqLmFsbG93RmFpbHVyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoai5wcmVTY3JpcHRzRXhpdENvZGUgPyBqLnByZVNjcmlwdHNFeGl0Q29kZSA6IDApID4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWlsSm9icy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc05vdEZpbmlzaGVkIChqb2JzVG9XYWl0Rm9yOiBSZWFkb25seUFycmF5PEpvYj4pIHtcbiAgICAgICAgY29uc3Qgbm90RmluaXNoZWRKb2JzID0gam9ic1RvV2FpdEZvci5maWx0ZXIoaiA9PiAhai5maW5pc2hlZCk7XG4gICAgICAgIHJldHVybiBub3RGaW5pc2hlZEpvYnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RmFpbGVkIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4pIHtcbiAgICAgICAgcmV0dXJuIGpvYnMuZmlsdGVyKGogPT4gai5maW5pc2hlZCAmJiAhai5hbGxvd0ZhaWx1cmUgJiYgKGoucHJlU2NyaXB0c0V4aXRDb2RlID8/IDApID4gMCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFBhc3RUb1dhaXRGb3IgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgam9iOiBKb2IsIG1hbnVhbHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IGpvYnNUb1dhaXRGb3JTZXQgPSBuZXcgU2V0PEpvYj4oKTtcbiAgICAgICAgbGV0IHdhaXRGb3JMb29wQXJyYXk6IEpvYltdID0gW2pvYl07XG5cbiAgICAgICAgd2hpbGUgKHdhaXRGb3JMb29wQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbG9vcEpvYiA9IHdhaXRGb3JMb29wQXJyYXkucG9wKCk7XG4gICAgICAgICAgICBhc3NlcnQobG9vcEpvYiAhPSBudWxsLCBcIkpvYiBub3QgZm91bmQgaW4gZ2V0UGFzdFRvV2FpdEZvciwgc2hvdWxkIGJlIGltcG9zc2libGUhXCIpO1xuICAgICAgICAgICAgaWYgKGxvb3BKb2IubmVlZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZWVkZWRUb1dhaXRGb3IgPSB0aGlzLmdldE5lZWRlZFRvV2FpdEZvcihqb2JzLCBtYW51YWxzLCBsb29wSm9iKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5LnB1c2goLi4ubmVlZGVkVG9XYWl0Rm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNUb1dhaXRGb3IgPSB0aGlzLmdldFByZXZpb3VzVG9XYWl0Rm9yKGpvYnMsIHN0YWdlcywgbG9vcEpvYik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheSA9IHdhaXRGb3JMb29wQXJyYXkuY29uY2F0KHByZXZpb3VzVG9XYWl0Rm9yKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5ID0gd2FpdEZvckxvb3BBcnJheS5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheSA9IHdhaXRGb3JMb29wQXJyYXkuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm1hbnVhbFwiIHx8IG1hbnVhbHMuaW5jbHVkZXMoai5uYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5LmZvckVhY2goaiA9PiBqb2JzVG9XYWl0Rm9yU2V0LmFkZChqKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5qb2JzVG9XYWl0Rm9yU2V0XTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0TmVlZGVkVG9XYWl0Rm9yIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIG1hbnVhbHM6IHN0cmluZ1tdLCBqb2I6IEpvYikge1xuICAgICAgICBjb25zdCB0b1dhaXRGb3IgPSBbXTtcbiAgICAgICAgYXNzZXJ0KGpvYi5uZWVkcyAhPSBudWxsLCBjaGFsa2Ake2pvYi5uYW1lfS5uZWVkcyBjYW5ub3QgYmUgbnVsbCBpbiBnZXROZWVkZWRUb1dhaXRGb3JgKTtcbiAgICAgICAgZm9yIChjb25zdCBuZWVkIG9mIGpvYi5uZWVkcykge1xuICAgICAgICAgICAgY29uc3QgYmFzZUpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGouYmFzZU5hbWUgPT09IG5lZWQuam9iKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaiBvZiBiYXNlSm9icykge1xuICAgICAgICAgICAgICAgIGlmIChqLndoZW4gPT09IFwibmV2ZXJcIiAmJiAhbmVlZC5vcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGNoYWxrYHtibHVlQnJpZ2h0ICR7ai5uYW1lfX0gaXMgd2hlbjpuZXZlciwgYnV0IGl0cyBuZWVkZWQgYnkge2JsdWVCcmlnaHQgJHtqb2IubmFtZX19YH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoai53aGVuID09PSBcIm5ldmVyXCIgJiYgbmVlZC5vcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGoud2hlbiA9PT0gXCJtYW51YWxcIiAmJiAhbWFudWFscy5pbmNsdWRlcyhqLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogY2hhbGtge2JsdWVCcmlnaHQgJHtqLm5hbWV9fSBpcyB3aGVuOm1hbnVhbCwgaXRzIG5lZWRlZCBieSB7Ymx1ZUJyaWdodCAke2pvYi5uYW1lfX0sIGFuZCBub3Qgc3BlY2lmaWVkIGluIC0tbWFudWFsYH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b1dhaXRGb3IucHVzaChqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9XYWl0Rm9yO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQcmV2aW91c1RvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBqb2I6IEpvYikge1xuICAgICAgICBjb25zdCBwcmV2aW91c1RvV2FpdEZvcjogSm9iW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc3RhZ2VJbmRleCA9IHN0YWdlcy5pbmRleE9mKGpvYi5zdGFnZSk7XG4gICAgICAgIGNvbnN0IHBhc3RTdGFnZXMgPSBzdGFnZXMuc2xpY2UoMCwgc3RhZ2VJbmRleCk7XG4gICAgICAgIHBhc3RTdGFnZXMuZm9yRWFjaCgocGFzdFN0YWdlKSA9PiB7XG4gICAgICAgICAgICBwcmV2aW91c1RvV2FpdEZvci5wdXNoKC4uLlsuLi5qb2JzLnZhbHVlcygpXS5maWx0ZXIoaiA9PiBqLnN0YWdlID09PSBwYXN0U3RhZ2UpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1RvV2FpdEZvcjtcbiAgICB9XG59XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxNQUFNLEVBQUUsRUFBQyxjQUFjLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBRXpCLE1BQU0sT0FBTyxRQUFRO0lBRWpCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFFLElBQVUsRUFBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQXdCO1FBQzNHLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixHQUFHLENBQUM7WUFDQSxlQUFlLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVGLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLGNBQW1CLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQ25HLENBQUM7UUFDTCxDQUFDLFFBQVEsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQWlDLEVBQUUsT0FBaUI7UUFDaEksTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTNCLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFNLGlCQUFp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QyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM3QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQge0pvYn0gZnJvbSBcIi4vam9iLmpzXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndi5qc1wiO1xuaW1wb3J0IHBNYXAgZnJvbSBcInAtbWFwXCI7XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRvciB7XG5cbiAgICBzdGF0aWMgYXN5bmMgcnVuTG9vcCAoYXJndjogQXJndiwgam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBwb3RlbnRpYWxTdGFydGVyczogSm9iW10pIHtcbiAgICAgICAgbGV0IHN0YXJ0Q2FuZGlkYXRlcyA9IFtdO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHN0YXJ0Q2FuZGlkYXRlcyA9IEV4ZWN1dG9yLmdldFN0YXJ0Q2FuZGlkYXRlcyhqb2JzLCBzdGFnZXMsIHBvdGVudGlhbFN0YXJ0ZXJzLCBhcmd2Lm1hbnVhbCk7XG4gICAgICAgICAgICBpZiAoc3RhcnRDYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXBwZXIgPSBhc3luYyAoc3RhcnRDYW5kaWRhdGU6IEpvYikgPT4gc3RhcnRDYW5kaWRhdGUuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBwTWFwKHN0YXJ0Q2FuZGlkYXRlcywgbWFwcGVyLCB7Y29uY3VycmVuY3k6IGFyZ3YuY29uY3VycmVuY3kgPz8gc3RhcnRDYW5kaWRhdGVzLmxlbmd0aH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChzdGFydENhbmRpZGF0ZXMubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFN0YXJ0Q2FuZGlkYXRlcyAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBwb3RlbnRpYWxTdGFydGVyczogcmVhZG9ubHkgSm9iW10sIG1hbnVhbHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0Q2FuZGlkYXRlcyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIFsuLi5uZXcgU2V0PEpvYj4ocG90ZW50aWFsU3RhcnRlcnMpXSkge1xuICAgICAgICAgICAgaWYgKGpvYi5zdGFydGVkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3Qgam9ic1RvV2FpdEZvciA9IEV4ZWN1dG9yLmdldFBhc3RUb1dhaXRGb3Ioam9icywgc3RhZ2VzLCBqb2IsIG1hbnVhbHMpO1xuICAgICAgICAgICAgaWYgKEV4ZWN1dG9yLmlzTm90RmluaXNoZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2Iud2hlbiA9PT0gXCJvbl9zdWNjZXNzXCIgJiYgRXhlY3V0b3IuaXNQYXN0RmFpbGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iLndoZW4gPT09IFwibWFudWFsXCIgJiYgRXhlY3V0b3IuaXNQYXN0RmFpbGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iLndoZW4gPT09IFwib25fZmFpbHVyZVwiICYmICFFeGVjdXRvci5pc1Bhc3RGYWlsZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhcnRDYW5kaWRhdGVzLnB1c2goam9iKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnRDYW5kaWRhdGVzO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1Bhc3RGYWlsZWQgKGpvYnNUb1dhaXRGb3I6IFJlYWRvbmx5QXJyYXk8Sm9iPikge1xuICAgICAgICBjb25zdCBmYWlsSm9icyA9IGpvYnNUb1dhaXRGb3IuZmlsdGVyKGogPT4ge1xuICAgICAgICAgICAgaWYgKGouYWxsb3dGYWlsdXJlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChqLnByZVNjcmlwdHNFeGl0Q29kZSA/IGoucHJlU2NyaXB0c0V4aXRDb2RlIDogMCkgPiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhaWxKb2JzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzTm90RmluaXNoZWQgKGpvYnNUb1dhaXRGb3I6IFJlYWRvbmx5QXJyYXk8Sm9iPikge1xuICAgICAgICBjb25zdCBub3RGaW5pc2hlZEpvYnMgPSBqb2JzVG9XYWl0Rm9yLmZpbHRlcihqID0+ICFqLmZpbmlzaGVkKTtcbiAgICAgICAgcmV0dXJuIG5vdEZpbmlzaGVkSm9icy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRGYWlsZWQgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPikge1xuICAgICAgICByZXR1cm4gam9icy5maWx0ZXIoaiA9PiBqLmZpbmlzaGVkICYmICFqLmFsbG93RmFpbHVyZSAmJiAoai5wcmVTY3JpcHRzRXhpdENvZGUgPz8gMCkgPiAwKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0UGFzdFRvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBqb2I6IEpvYiwgbWFudWFsczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3Qgam9ic1RvV2FpdEZvclNldCA9IG5ldyBTZXQ8Sm9iPigpO1xuICAgICAgICBsZXQgd2FpdEZvckxvb3BBcnJheTogSm9iW10gPSBbam9iXTtcblxuICAgICAgICB3aGlsZSAod2FpdEZvckxvb3BBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsb29wSm9iID0gd2FpdEZvckxvb3BBcnJheS5wb3AoKTtcbiAgICAgICAgICAgIGFzc2VydChsb29wSm9iICE9IG51bGwsIFwiSm9iIG5vdCBmb3VuZCBpbiBnZXRQYXN0VG9XYWl0Rm9yLCBzaG91bGQgYmUgaW1wb3NzaWJsZSFcIik7XG4gICAgICAgICAgICBpZiAobG9vcEpvYi5uZWVkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRlZFRvV2FpdEZvciA9IHRoaXMuZ2V0TmVlZGVkVG9XYWl0Rm9yKGpvYnMsIG1hbnVhbHMsIGxvb3BKb2IpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkucHVzaCguLi5uZWVkZWRUb1dhaXRGb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1RvV2FpdEZvciA9IHRoaXMuZ2V0UHJldmlvdXNUb1dhaXRGb3Ioam9icywgc3RhZ2VzLCBsb29wSm9iKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5ID0gd2FpdEZvckxvb3BBcnJheS5jb25jYXQocHJldmlvdXNUb1dhaXRGb3IpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkgPSB3YWl0Rm9yTG9vcEFycmF5LmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5ID0gd2FpdEZvckxvb3BBcnJheS5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibWFudWFsXCIgfHwgbWFudWFscy5pbmNsdWRlcyhqLm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkuZm9yRWFjaChqID0+IGpvYnNUb1dhaXRGb3JTZXQuYWRkKGopKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmpvYnNUb1dhaXRGb3JTZXRdO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXROZWVkZWRUb1dhaXRGb3IgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgbWFudWFsczogc3RyaW5nW10sIGpvYjogSm9iKSB7XG4gICAgICAgIGNvbnN0IHRvV2FpdEZvciA9IFtdO1xuICAgICAgICBhc3NlcnQoam9iLm5lZWRzICE9IG51bGwsIGNoYWxrYCR7am9iLm5hbWV9Lm5lZWRzIGNhbm5vdCBiZSBudWxsIGluIGdldE5lZWRlZFRvV2FpdEZvcmApO1xuICAgICAgICBmb3IgKGNvbnN0IG5lZWQgb2Ygam9iLm5lZWRzKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlSm9icyA9IGpvYnMuZmlsdGVyKGogPT4gai5iYXNlTmFtZSA9PT0gbmVlZC5qb2IpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBqIG9mIGJhc2VKb2JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGoud2hlbiA9PT0gXCJuZXZlclwiICYmICFuZWVkLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogY2hhbGtge2JsdWVCcmlnaHQgJHtqLm5hbWV9fSBpcyB3aGVuOm5ldmVyLCBidXQgaXRzIG5lZWRlZCBieSB7Ymx1ZUJyaWdodCAke2pvYi5uYW1lfX1gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChqLndoZW4gPT09IFwibmV2ZXJcIiAmJiBuZWVkLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoai53aGVuID09PSBcIm1hbnVhbFwiICYmICFtYW51YWxzLmluY2x1ZGVzKGoubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKHttZXNzYWdlOiBjaGFsa2B7Ymx1ZUJyaWdodCAke2oubmFtZX19IGlzIHdoZW46bWFudWFsLCBpdHMgbmVlZGVkIGJ5IHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fSwgYW5kIG5vdCBzcGVjaWZpZWQgaW4gLS1tYW51YWxgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFzc2VydChqb2IubmFtZSAhPT0gai5uYW1lLCBjaGFsa2BUaGlzIEdpdExhYiBDSSBjb25maWd1cmF0aW9uIGlzIGludmFsaWQ6IFRoZSBwaXBlbGluZSBoYXMgY2lyY3VsYXIgZGVwZW5kZW5jaWVzOiBzZWxmLWRlcGVuZGVuY3k6IHtibHVlQnJpZ2h0ICR7bmVlZC5qb2J9fS5gKTtcbiAgICAgICAgICAgICAgICB0b1dhaXRGb3IucHVzaChqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9XYWl0Rm9yO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQcmV2aW91c1RvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBqb2I6IEpvYikge1xuICAgICAgICBjb25zdCBwcmV2aW91c1RvV2FpdEZvcjogSm9iW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc3RhZ2VJbmRleCA9IHN0YWdlcy5pbmRleE9mKGpvYi5zdGFnZSk7XG4gICAgICAgIGNvbnN0IHBhc3RTdGFnZXMgPSBzdGFnZXMuc2xpY2UoMCwgc3RhZ2VJbmRleCk7XG4gICAgICAgIHBhc3RTdGFnZXMuZm9yRWFjaCgocGFzdFN0YWdlKSA9PiB7XG4gICAgICAgICAgICBwcmV2aW91c1RvV2FpdEZvci5wdXNoKC4uLlsuLi5qb2JzLnZhbHVlcygpXS5maWx0ZXIoaiA9PiBqLnN0YWdlID09PSBwYXN0U3RhZ2UpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1RvV2FpdEZvcjtcbiAgICB9XG59XG4iXX0=
package/src/handler.js CHANGED
@@ -65,7 +65,6 @@ export async function handler(args, writeStreams, jobs = [], childPipelineDepth
65
65
  generateGitIgnore(cwd, stateDir);
66
66
  const time = process.hrtime();
67
67
  if (argv.needs || argv.onlyNeeds) {
68
- await fs.remove(`${cwd}/${stateDir}/artifacts`);
69
68
  await state.incrementPipelineIid(cwd, stateDir);
70
69
  }
71
70
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
@@ -88,8 +87,6 @@ export async function handler(args, writeStreams, jobs = [], childPipelineDepth
88
87
  else {
89
88
  generateGitIgnore(cwd, stateDir);
90
89
  const time = process.hrtime();
91
- if (childPipelineDepth == 0)
92
- await fs.remove(`${cwd}/${stateDir}/artifacts`);
93
90
  await state.incrementPipelineIid(cwd, stateDir);
94
91
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
95
92
  parser = await Parser.create(argv, writeStreams, pipelineIid, jobs);
@@ -101,4 +98,4 @@ export async function handler(args, writeStreams, jobs = [], childPipelineDepth
101
98
  writeStreams.flush();
102
99
  return cleanupJobResources(jobs);
103
100
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQU0sTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9CLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUUsSUFBUyxFQUFFLFlBQTBCLEVBQUUs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Q0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUIsSUFBSSxrQkFBa0IsSUFBSSxDQUFDO1lBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLFFBQVEsWUFBWSxDQUFDLENBQUM7UUFDN0UsTUFBTSxLQUFLLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hELElBQUksa0JBQWtCLElBQUksQ0FBQztZQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLHFDQUFxQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXJCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhbWwgZnJvbSBcImpzLXlhbWxcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQge0NvbW1hbmRlcn0gZnJvbSBcIi4vY29tbWFuZGVyLmpzXCI7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSBcIi4vcGFyc2VyLmpzXCI7XG5pbXBvcnQgKiBhcyBzdGF0ZSBmcm9tIFwiLi9zdGF0ZS5qc1wiO1xuaW1wb3J0IHByZXR0eUhydGltZSBmcm9tIFwicHJldHR5LWhydGltZVwiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3dyaXRlLXN0cmVhbXMuanNcIjtcbmltcG9ydCB7Y2xlYW51cEpvYlJlc291cmNlcywgSm9ifSBmcm9tIFwiLi9qb2IuanNcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3YuanNcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5jb25zdCBnZW5lcmF0ZUdpdElnbm9yZSA9IChjd2Q6IHN0cmluZywgc3RhdGVEaXI6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGdpdElnbm9yZUZpbGVQYXRoID0gYCR7Y3dkfS8ke3N0YXRlRGlyfS8uZ2l0aWdub3JlYDtcbiAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gXCIqXFxuIS5naXRpZ25vcmVcXG5cIjtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0SWdub3JlRmlsZVBhdGgpKSB7XG4gICAgICAgIGZzLm91dHB1dEZpbGVTeW5jKGdpdElnbm9yZUZpbGVQYXRoLCBnaXRJZ25vcmVDb250ZW50KTtcbiAgICB9XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlciAoYXJnczogYW55LCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcywgam9iczogSm9iW10gPSBbXSwgY2hpbGRQaXBlbGluZURlcHRoID0gMCkge1xuICAgIGFzc2VydChjaGlsZFBpcGVsaW5lRGVwdGggPD0gMiwgXCJQYXJlbnQgYW5kIGNoaWxkIHBpcGVsaW5lcyBoYXZlIGEgbWF4aW11bSBkZXB0aCBvZiB0d28gbGV2ZWxzIG9mIGNoaWxkIHBpcGVsaW5lcy5cIik7XG4gICAgY29uc3QgYXJndiA9IGF3YWl0IEFyZ3YuYnVpbGQoey4uLmFyZ3MsIGNoaWxkUGlwZWxpbmVEZXB0aDogY2hpbGRQaXBlbGluZURlcHRofSwgd3JpdGVTdHJlYW1zKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZDtcbiAgICBjb25zdCBzdGF0ZURpciA9IGFyZ3Yuc3RhdGVEaXI7XG4gICAgY29uc3QgZmlsZSA9IGFyZ3YuZmlsZTtcbiAgICBsZXQgcGFyc2VyOiBQYXJzZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChhcmd2LmNvbXBsZXRpb24pIHtcbiAgICAgICAgeWFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKS5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke3BhdGgucmVzb2x2ZShjd2QpfS8ke2ZpbGV9IGNvdWxkIG5vdCBiZSBmb3VuZGApO1xuXG4gICAgaWYgKGFyZ3YucHJldmlldykge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgZ2l0bGFiRGF0YSA9IHBhcnNlci5naXRsYWJEYXRhO1xuICAgICAgICBmb3IgKGNvbnN0IGpvYk5hbWUgb2YgT2JqZWN0LmtleXMoZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgICAgIGlmIChqb2JOYW1lID09PSBcInN0YWdlc1wiKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iTmFtZS5zdGFydHNXaXRoKFwiLlwiKSB8fCBbXCJpbmNsdWRlXCIsIFwiYWZ0ZXJfc2NyaXB0XCIsIFwiYmVmb3JlX3NjcmlwdFwiLCBcImRlZmF1bHRcIl0uaW5jbHVkZXMoam9iTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgc2luY2UgdGhlc2UgYXJlIHJlZHVuZGFudCBpbmZvIHdoaWNoIGFyZSBhbHJlYWR5IFwiZXh0ZW5kZWRcIiBpbiB0aGUgam9ic1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoYC0tLVxcbiR7eWFtbC5kdW1wKGdpdGxhYkRhdGEsIHtsaW5lV2lkdGg6IDE2MH0pfWApO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0IHx8IGFyZ3YubGlzdEFsbCkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuTGlzdChwYXJzZXIsIHdyaXRlU3RyZWFtcywgYXJndi5saXN0QWxsKTtcbiAgICB9IGVsc2UgaWYgKGFyZ3YubGlzdEpzb24pIHtcbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgQ29tbWFuZGVyLnJ1bkpzb24ocGFyc2VyLCB3cml0ZVN0cmVhbXMpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0Q3N2IHx8IGFyZ3YubGlzdENzdkFsbCkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuQ3N2KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RDc3ZBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5qb2IubGVuZ3RoID4gMCkge1xuICAgICAgICBhc3NlcnQoYXJndi5zdGFnZSA9PT0gbnVsbCwgXCJZb3UgY2Fubm90IHVzZSAtLXN0YWdlIHdoZW4gc3RhcnRpbmcgaW5kaXZpZHVhbCBqb2JzXCIpO1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgY29uc3QgdGltZSA9IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgICAgIGlmIChhcmd2Lm5lZWRzIHx8IGFyZ3Yub25seU5lZWRzKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9hcnRpZmFjdHNgKTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRlLmluY3JlbWVudFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgc3RhdGVEaXIsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1bkpvYnMoYXJndiwgcGFyc2VyLCB3cml0ZVN0cmVhbXMpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyB8fCBhcmd2Lm9ubHlOZWVkcykge1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYXJndi5zdGFnZSkge1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgY29uc3QgdGltZSA9IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgc3RhdGVEaXIsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1bkpvYnNJblN0YWdlKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgY29uc3QgdGltZSA9IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgICAgIGlmIChjaGlsZFBpcGVsaW5lRGVwdGggPT0gMCkgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgIGF3YWl0IHN0YXRlLmluY3JlbWVudFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5QaXBlbGluZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIGlmIChjaGlsZFBpcGVsaW5lRGVwdGggPT0gMCkgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICB9XG4gICAgd3JpdGVTdHJlYW1zLmZsdXNoKCk7XG5cbiAgICByZXR1cm4gY2xlYW51cEpvYlJlc291cmNlcyhqb2JzKTtcbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQU0sTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9CLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUUsSUFBUyxFQUFFLFlBQTBCLEVBQUUs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LENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hELElBQUksa0JBQWtCLElBQUksQ0FBQztZQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLHFDQUFxQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXJCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhbWwgZnJvbSBcImpzLXlhbWxcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQge0NvbW1hbmRlcn0gZnJvbSBcIi4vY29tbWFuZGVyLmpzXCI7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSBcIi4vcGFyc2VyLmpzXCI7XG5pbXBvcnQgKiBhcyBzdGF0ZSBmcm9tIFwiLi9zdGF0ZS5qc1wiO1xuaW1wb3J0IHByZXR0eUhydGltZSBmcm9tIFwicHJldHR5LWhydGltZVwiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3dyaXRlLXN0cmVhbXMuanNcIjtcbmltcG9ydCB7Y2xlYW51cEpvYlJlc291cmNlcywgSm9ifSBmcm9tIFwiLi9qb2IuanNcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3YuanNcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5jb25zdCBnZW5lcmF0ZUdpdElnbm9yZSA9IChjd2Q6IHN0cmluZywgc3RhdGVEaXI6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGdpdElnbm9yZUZpbGVQYXRoID0gYCR7Y3dkfS8ke3N0YXRlRGlyfS8uZ2l0aWdub3JlYDtcbiAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gXCIqXFxuIS5naXRpZ25vcmVcXG5cIjtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0SWdub3JlRmlsZVBhdGgpKSB7XG4gICAgICAgIGZzLm91dHB1dEZpbGVTeW5jKGdpdElnbm9yZUZpbGVQYXRoLCBnaXRJZ25vcmVDb250ZW50KTtcbiAgICB9XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlciAoYXJnczogYW55LCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcywgam9iczogSm9iW10gPSBbXSwgY2hpbGRQaXBlbGluZURlcHRoID0gMCkge1xuICAgIGFzc2VydChjaGlsZFBpcGVsaW5lRGVwdGggPD0gMiwgXCJQYXJlbnQgYW5kIGNoaWxkIHBpcGVsaW5lcyBoYXZlIGEgbWF4aW11bSBkZXB0aCBvZiB0d28gbGV2ZWxzIG9mIGNoaWxkIHBpcGVsaW5lcy5cIik7XG4gICAgY29uc3QgYXJndiA9IGF3YWl0IEFyZ3YuYnVpbGQoey4uLmFyZ3MsIGNoaWxkUGlwZWxpbmVEZXB0aDogY2hpbGRQaXBlbGluZURlcHRofSwgd3JpdGVTdHJlYW1zKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZDtcbiAgICBjb25zdCBzdGF0ZURpciA9IGFyZ3Yuc3RhdGVEaXI7XG4gICAgY29uc3QgZmlsZSA9IGFyZ3YuZmlsZTtcbiAgICBsZXQgcGFyc2VyOiBQYXJzZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChhcmd2LmNvbXBsZXRpb24pIHtcbiAgICAgICAgeWFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKS5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke3BhdGgucmVzb2x2ZShjd2QpfS8ke2ZpbGV9IGNvdWxkIG5vdCBiZSBmb3VuZGApO1xuXG4gICAgaWYgKGFyZ3YucHJldmlldykge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgZ2l0bGFiRGF0YSA9IHBhcnNlci5naXRsYWJEYXRhO1xuICAgICAgICBmb3IgKGNvbnN0IGpvYk5hbWUgb2YgT2JqZWN0LmtleXMoZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgICAgIGlmIChqb2JOYW1lID09PSBcInN0YWdlc1wiKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iTmFtZS5zdGFydHNXaXRoKFwiLlwiKSB8fCBbXCJpbmNsdWRlXCIsIFwiYWZ0ZXJfc2NyaXB0XCIsIFwiYmVmb3JlX3NjcmlwdFwiLCBcImRlZmF1bHRcIl0uaW5jbHVkZXMoam9iTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgc2luY2UgdGhlc2UgYXJlIHJlZHVuZGFudCBpbmZvIHdoaWNoIGFyZSBhbHJlYWR5IFwiZXh0ZW5kZWRcIiBpbiB0aGUgam9ic1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoYC0tLVxcbiR7eWFtbC5kdW1wKGdpdGxhYkRhdGEsIHtsaW5lV2lkdGg6IDE2MH0pfWApO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0IHx8IGFyZ3YubGlzdEFsbCkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuTGlzdChwYXJzZXIsIHdyaXRlU3RyZWFtcywgYXJndi5saXN0QWxsKTtcbiAgICB9IGVsc2UgaWYgKGFyZ3YubGlzdEpzb24pIHtcbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgQ29tbWFuZGVyLnJ1bkpzb24ocGFyc2VyLCB3cml0ZVN0cmVhbXMpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0Q3N2IHx8IGFyZ3YubGlzdENzdkFsbCkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuQ3N2KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RDc3ZBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5qb2IubGVuZ3RoID4gMCkge1xuICAgICAgICBhc3NlcnQoYXJndi5zdGFnZSA9PT0gbnVsbCwgXCJZb3UgY2Fubm90IHVzZSAtLXN0YWdlIHdoZW4gc3RhcnRpbmcgaW5kaXZpZHVhbCBqb2JzXCIpO1xuICAgICAgICBnZW5lcmF0ZUdpdElnbm9yZShjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgY29uc3QgdGltZSA9IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgICAgIGlmIChhcmd2Lm5lZWRzIHx8IGFyZ3Yub25seU5lZWRzKSB7XG4gICAgICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZ3Yuc3RhZ2UpIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzSW5TdGFnZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgY29uc3QgcGlwZWxpbmVJaWQgPSBhd2FpdCBzdGF0ZS5nZXRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIHBpcGVsaW5lSWlkLCBqb2JzKTtcbiAgICAgICAgYXdhaXQgVXRpbHMucnN5bmNUcmFja2VkRmlsZXMoY3dkLCBzdGF0ZURpciwgXCIuZG9ja2VyXCIpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucnVuUGlwZWxpbmUoYXJndiwgcGFyc2VyLCB3cml0ZVN0cmVhbXMpO1xuICAgICAgICBpZiAoY2hpbGRQaXBlbGluZURlcHRoID09IDApIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfVxuICAgIHdyaXRlU3RyZWFtcy5mbHVzaCgpO1xuXG4gICAgcmV0dXJuIGNsZWFudXBKb2JSZXNvdXJjZXMoam9icyk7XG59XG4iXX0=