gitlab-ci-local 4.41.2 → 4.43.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/src/handler.js CHANGED
@@ -38,7 +38,7 @@ const pretty_hrtime_1 = __importDefault(require("pretty-hrtime"));
38
38
  const job_1 = require("./job");
39
39
  const utils_1 = require("./utils");
40
40
  const argv_1 = require("./argv");
41
- const assert_1 = __importStar(require("assert"));
41
+ const assert_1 = __importDefault(require("assert"));
42
42
  const generateGitIgnore = (cwd, stateDir) => {
43
43
  const gitIgnoreFilePath = `${cwd}/${stateDir}/.gitignore`;
44
44
  const gitIgnoreContent = "*\n!.gitignore\n";
@@ -46,57 +46,24 @@ const generateGitIgnore = (cwd, stateDir) => {
46
46
  fs.outputFileSync(gitIgnoreFilePath, gitIgnoreContent);
47
47
  }
48
48
  };
49
- const cleanupResources = async (parser) => {
50
- if (!parser) {
51
- return;
52
- }
53
- const promises = [];
54
- for (const job of parser.jobs.values()) {
55
- promises.push(job.cleanupResources());
56
- }
57
- await Promise.all(promises);
58
- };
59
- async function handler(args, writeStreams) {
49
+ async function handler(args, writeStreams, jobs = []) {
60
50
  const argv = new argv_1.Argv(args);
61
51
  const cwd = argv.cwd;
62
52
  const stateDir = argv.stateDir;
63
53
  const file = argv.file;
64
54
  let parser = null;
65
- process.on("unhandledRejection", (e) => {
66
- if (e instanceof assert_1.AssertionError) {
67
- process.stderr.write((0, chalk_1.default) `{red ${e.message.trim()}}\n`);
68
- }
69
- else if (e instanceof Error) {
70
- process.stderr.write((0, chalk_1.default) `{red ${e.stack?.trim() ?? e.message.trim()}}\n`);
71
- }
72
- else if (e) {
73
- process.stderr.write((0, chalk_1.default) `{red ${e.toString().trim()}}\n`);
74
- }
75
- if (parser) {
76
- cleanupResources(parser).finally(process.exit(1));
77
- }
78
- else {
79
- process.exit(1);
80
- }
81
- });
82
- process.on("exit", (_, code) => {
83
- cleanupResources(parser).finally(process.exit(code));
84
- });
85
- process.on("SIGINT", (_, code) => {
86
- cleanupResources(parser).finally(process.exit(code));
87
- });
88
55
  if (argv.completion) {
89
56
  yargs.showCompletionScript();
90
57
  return [];
91
58
  }
92
59
  (0, assert_1.default)(fs.existsSync(`${cwd}/${file}`), `${cwd}/${file} could not be found`);
93
60
  if (argv.fetchIncludes) {
94
- parser = await parser_1.Parser.create(argv, writeStreams, 0);
61
+ await parser_1.Parser.create(argv, writeStreams, 0, jobs);
95
62
  return [];
96
63
  }
97
64
  if (argv.preview) {
98
65
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
99
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
66
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
100
67
  const gitlabData = parser.gitlabData;
101
68
  for (const jobName of Object.keys(gitlabData)) {
102
69
  if (jobName === "stages") {
@@ -110,17 +77,17 @@ async function handler(args, writeStreams) {
110
77
  }
111
78
  else if (argv.list || argv.listAll) {
112
79
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
113
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
80
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
114
81
  commander_1.Commander.runList(parser, writeStreams, argv.listAll);
115
82
  }
116
83
  else if (argv.listJson) {
117
84
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
118
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
85
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
119
86
  commander_1.Commander.runJson(parser, writeStreams);
120
87
  }
121
88
  else if (argv.listCsv || argv.listCsvAll) {
122
89
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
123
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
90
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
124
91
  commander_1.Commander.runCsv(parser, writeStreams, argv.listCsvAll);
125
92
  }
126
93
  else if (argv.job.length > 0) {
@@ -132,7 +99,7 @@ async function handler(args, writeStreams) {
132
99
  await state.incrementPipelineIid(cwd, stateDir);
133
100
  }
134
101
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
135
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
102
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
136
103
  await utils_1.Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
137
104
  await commander_1.Commander.runJobs(argv, parser, writeStreams);
138
105
  if (argv.needs || argv.onlyNeeds) {
@@ -143,7 +110,7 @@ async function handler(args, writeStreams) {
143
110
  generateGitIgnore(cwd, stateDir);
144
111
  const time = process.hrtime();
145
112
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
146
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
113
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
147
114
  await utils_1.Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
148
115
  await commander_1.Commander.runJobsInStage(argv, parser, writeStreams);
149
116
  writeStreams.stderr((0, chalk_1.default) `{grey pipeline finished} in {grey ${(0, pretty_hrtime_1.default)(process.hrtime(time))}}\n`);
@@ -154,14 +121,13 @@ async function handler(args, writeStreams) {
154
121
  await fs.remove(`${cwd}/${stateDir}/artifacts`);
155
122
  await state.incrementPipelineIid(cwd, stateDir);
156
123
  const pipelineIid = await state.getPipelineIid(cwd, stateDir);
157
- parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid);
124
+ parser = await parser_1.Parser.create(argv, writeStreams, pipelineIid, jobs);
158
125
  await utils_1.Utils.rsyncTrackedFiles(cwd, stateDir, ".docker");
159
126
  await commander_1.Commander.runPipeline(argv, parser, writeStreams);
160
127
  writeStreams.stderr((0, chalk_1.default) `{grey pipeline finished} in {grey ${(0, pretty_hrtime_1.default)(process.hrtime(time))}}\n`);
161
128
  }
162
129
  writeStreams.flush();
163
- await cleanupResources(parser);
164
- return parser.jobs;
130
+ return (0, job_1.cleanupJobResources)(jobs);
165
131
  }
166
132
  exports.handler = handler;
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBZ0M7QUFDaEMsa0RBQTBCO0FBQzFCLDZDQUErQjtBQUMvQiw2Q0FBK0I7QUFDL0IsMkNBQXNDO0FBQ3RDLHFDQUFnQztBQUNoQywrQ0FBaUM7QUFDakMsa0VBQXlDO0FBRXpDLCtCQUEwQjtBQUMxQixtQ0FBOEI7QUFDOUIsaUNBQTRCO0FBQzVCLGlEQUE4QztBQUU5QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUNuQyxFQUFFLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FDMUQ7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNULE9BQU87S0FDVjtJQUNELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDcEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO0lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVLLEtBQUssVUFBVSxPQUFPLENBQUUsSUFBUyxFQUFFLFlBQTBCO0lB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UUFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEdBQUcsTUFBTSxlQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUQsTUFBTSxhQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLHFCQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSxxQ0FBcUMsSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUc7SUFDRCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckIsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQztBQXpHRCwwQkF5R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0IHtDb21tYW5kZXJ9IGZyb20gXCIuL2NvbW1hbmRlclwiO1xuaW1wb3J0IHtQYXJzZXJ9IGZyb20gXCIuL3BhcnNlclwiO1xuaW1wb3J0ICogYXMgc3RhdGUgZnJvbSBcIi4vc3RhdGVcIjtcbmltcG9ydCBwcmV0dHlIcnRpbWUgZnJvbSBcInByZXR0eS1ocnRpbWVcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge0pvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHtBcmd2fSBmcm9tIFwiLi9hcmd2XCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcblxuY29uc3QgZ2VuZXJhdGVHaXRJZ25vcmUgPSAoY3dkOiBzdHJpbmcsIHN0YXRlRGlyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBnaXRJZ25vcmVGaWxlUGF0aCA9IGAke2N3ZH0vJHtzdGF0ZURpcn0vLmdpdGlnbm9yZWA7XG4gICAgY29uc3QgZ2l0SWdub3JlQ29udGVudCA9IFwiKlxcbiEuZ2l0aWdub3JlXFxuXCI7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdElnbm9yZUZpbGVQYXRoKSkge1xuICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhnaXRJZ25vcmVGaWxlUGF0aCwgZ2l0SWdub3JlQ29udGVudCk7XG4gICAgfVxufTtcblxuY29uc3QgY2xlYW51cFJlc291cmNlcyA9IGFzeW5jIChwYXJzZXI6IFBhcnNlciB8IG51bGwpID0+IHtcbiAgICBpZiAoIXBhcnNlcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgZm9yIChjb25zdCBqb2Igb2YgcGFyc2VyLmpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChqb2IuY2xlYW51cFJlc291cmNlcygpKTtcbiAgICB9XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIgKGFyZ3M6IGFueSwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPFJlYWRvbmx5QXJyYXk8Sm9iPj4ge1xuICAgIGNvbnN0IGFyZ3YgPSBuZXcgQXJndihhcmdzKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZDtcbiAgICBjb25zdCBzdGF0ZURpciA9IGFyZ3Yuc3RhdGVEaXI7XG4gICAgY29uc3QgZmlsZSA9IGFyZ3YuZmlsZTtcbiAgICBsZXQgcGFyc2VyOiBQYXJzZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHByb2Nlc3Mub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiwgKGUpID0+IHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2hhbGtge3JlZCAke2UubWVzc2FnZS50cmltKCl9fVxcbmApO1xuICAgICAgICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2hhbGtge3JlZCAke2Uuc3RhY2s/LnRyaW0oKSA/PyBlLm1lc3NhZ2UudHJpbSgpfX1cXG5gKTtcbiAgICAgICAgfSBlbHNlIGlmIChlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS50b1N0cmluZygpLnRyaW0oKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlcikge1xuICAgICAgICAgICAgY2xlYW51cFJlc291cmNlcyhwYXJzZXIpLmZpbmFsbHkocHJvY2Vzcy5leGl0KDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHJvY2Vzcy5vbihcImV4aXRcIiwgKF86IHN0cmluZywgY29kZTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNsZWFudXBSZXNvdXJjZXMocGFyc2VyKS5maW5hbGx5KHByb2Nlc3MuZXhpdChjb2RlKSk7XG4gICAgfSk7XG5cbiAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsIChfOiBzdHJpbmcsIGNvZGU6IG51bWJlcikgPT4ge1xuICAgICAgICBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcikuZmluYWxseShwcm9jZXNzLmV4aXQoY29kZSkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbikge1xuICAgICAgICB5YXJncy5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke2N3ZH0vJHtmaWxlfSBjb3VsZCBub3QgYmUgZm91bmRgKTtcblxuICAgIGlmIChhcmd2LmZldGNoSW5jbHVkZXMpIHtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIDApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YucHJldmlldykge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgfHwgYXJndi5saXN0QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0SnNvbikge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBDb21tYW5kZXIucnVuSnNvbihwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3RDc3YgfHwgYXJndi5saXN0Q3N2QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIENvbW1hbmRlci5ydW5Dc3YocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdENzdkFsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzc2VydChhcmd2LnN0YWdlID09IG51bGwsIFwiWW91IGNhbm5vdCB1c2UgLS1zdGFnZSB3aGVuIHN0YXJ0aW5nIGluZGl2aWR1YWwgam9ic1wiKTtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyB8fCBhcmd2Lm9ubHlOZWVkcykge1xuICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZ3Yuc3RhZ2UpIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzSW5TdGFnZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9hcnRpZmFjdHNgKTtcbiAgICAgICAgYXdhaXQgc3RhdGUuaW5jcmVtZW50UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgc3RhdGVEaXIsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1blBpcGVsaW5lKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICB9XG4gICAgd3JpdGVTdHJlYW1zLmZsdXNoKCk7XG5cbiAgICBhd2FpdCBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcik7XG4gICAgcmV0dXJuIHBhcnNlci5qb2JzO1xufVxuXG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBZ0M7QUFDaEMsa0RBQTBCO0FBQzFCLDZDQUErQjtBQUMvQiw2Q0FBK0I7QUFDL0IsMkNBQXNDO0FBQ3RDLHFDQUFnQztBQUNoQywrQ0FBaUM7QUFDakMsa0VBQXlDO0FBRXpDLCtCQUErQztBQUMvQyxtQ0FBOEI7QUFDOUIsaUNBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUNuQyxFQUFFLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FDMUQ7QUFDTCxDQUFDLENBQUM7QUFFSyxLQUFLLFVBQVUsT0FBTyxDQUFFLElBQVMsRUFBRSxZQUEwQixFQUFFLE9BQWMsRUFBRTtJQUNsRixNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixJQUFJLE1BQU0sR0FBa0IsSUFBSSxDQUFDO0lBRWpDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNqQixLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM3QixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBRUQsSUFBQSxnQkFBTSxFQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFJLHFCQUFxQixDQUFDLENBQUM7SUFFN0UsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ3BCLE1BQU0sZUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxPQUFPLEVBQUUsQ0FBQztLQUNiO0lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ2QsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEdBQUcsTUFBTSxlQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzNDLElBQUksT0FBTyxLQUFLLFFBQVEsRUFBRTtnQkFDdEIsU0FBUzthQUNaO1lBQ0QsSUFBSSxTQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM3RCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QjtTQUNKO1FBQ0QsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzFFO1NBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEdBQUcsTUFBTSxlQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLHFCQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3pEO1NBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsTUFBTSxHQUFHLE1BQU0sZUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDM0M7U0FBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlELE1BQU0sR0FBRyxNQUFNLGVBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUscUJBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDM0Q7U0FBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUM1QixJQUFBLGdCQUFNLEVBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsc0RBQXNELENBQUMsQ0FBQztRQUNuRixpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxRQUFRLFlBQVksQ0FBQyxDQUFDO1lBQ2hELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNuRDtRQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsTUFBTSxHQUFHLE1BQU0sZUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLGFBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0scUJBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM5QixZQUFZLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBSyxFQUFBLHFDQUFxQyxJQUFBLHVCQUFZLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxRztLQUNKO1NBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ25CLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEdBQUcsTUFBTSxlQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sYUFBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEQsTUFBTSxxQkFBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNELFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBQSxlQUFLLEVBQUEscUNBQXFDLElBQUEsdUJBQVksRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFHO1NBQU07UUFDSCxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlCLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxRQUFRLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlELE1BQU0sR0FBRyxNQUFNLGVBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxhQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLHFCQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSxxQ0FBcUMsSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUc7SUFDRCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckIsT0FBTyxJQUFBLHlCQUFtQixFQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFqRkQsMEJBaUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFtbCBmcm9tIFwianMteWFtbFwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7Q29tbWFuZGVyfSBmcm9tIFwiLi9jb21tYW5kZXJcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCAqIGFzIHN0YXRlIGZyb20gXCIuL3N0YXRlXCI7XG5pbXBvcnQgcHJldHR5SHJ0aW1lIGZyb20gXCJwcmV0dHktaHJ0aW1lXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtc1wiO1xuaW1wb3J0IHtjbGVhbnVwSm9iUmVzb3VyY2VzLCBKb2J9IGZyb20gXCIuL2pvYlwiO1xuaW1wb3J0IHtVdGlsc30gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndlwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5cbmNvbnN0IGdlbmVyYXRlR2l0SWdub3JlID0gKGN3ZDogc3RyaW5nLCBzdGF0ZURpcjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZ2l0SWdub3JlRmlsZVBhdGggPSBgJHtjd2R9LyR7c3RhdGVEaXJ9Ly5naXRpZ25vcmVgO1xuICAgIGNvbnN0IGdpdElnbm9yZUNvbnRlbnQgPSBcIipcXG4hLmdpdGlnbm9yZVxcblwiO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhnaXRJZ25vcmVGaWxlUGF0aCkpIHtcbiAgICAgICAgZnMub3V0cHV0RmlsZVN5bmMoZ2l0SWdub3JlRmlsZVBhdGgsIGdpdElnbm9yZUNvbnRlbnQpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyIChhcmdzOiBhbnksIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBqb2JzOiBKb2JbXSA9IFtdKSB7XG4gICAgY29uc3QgYXJndiA9IG5ldyBBcmd2KGFyZ3MpO1xuICAgIGNvbnN0IGN3ZCA9IGFyZ3YuY3dkO1xuICAgIGNvbnN0IHN0YXRlRGlyID0gYXJndi5zdGF0ZURpcjtcbiAgICBjb25zdCBmaWxlID0gYXJndi5maWxlO1xuICAgIGxldCBwYXJzZXI6IFBhcnNlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbikge1xuICAgICAgICB5YXJncy5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke2N3ZH0vJHtmaWxlfSBjb3VsZCBub3QgYmUgZm91bmRgKTtcblxuICAgIGlmIChhcmd2LmZldGNoSW5jbHVkZXMpIHtcbiAgICAgICAgYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIDAsIGpvYnMpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YucHJldmlldykge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgfHwgYXJndi5saXN0QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0SnNvbikge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBDb21tYW5kZXIucnVuSnNvbihwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3RDc3YgfHwgYXJndi5saXN0Q3N2QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIENvbW1hbmRlci5ydW5Dc3YocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdENzdkFsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzc2VydChhcmd2LnN0YWdlID09IG51bGwsIFwiWW91IGNhbm5vdCB1c2UgLS1zdGFnZSB3aGVuIHN0YXJ0aW5nIGluZGl2aWR1YWwgam9ic1wiKTtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyB8fCBhcmd2Lm9ubHlOZWVkcykge1xuICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZ3Yuc3RhZ2UpIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQsIGpvYnMpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzSW5TdGFnZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9hcnRpZmFjdHNgKTtcbiAgICAgICAgYXdhaXQgc3RhdGUuaW5jcmVtZW50UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCwgam9icyk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgc3RhdGVEaXIsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1blBpcGVsaW5lKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICB9XG4gICAgd3JpdGVTdHJlYW1zLmZsdXNoKCk7XG5cbiAgICByZXR1cm4gY2xlYW51cEpvYlJlc291cmNlcyhqb2JzKTtcbn1cblxuIl19
package/src/index.js CHANGED
@@ -39,6 +39,14 @@ const handler_1 = require("./handler");
39
39
  const executor_1 = require("./executor");
40
40
  const argv_1 = require("./argv");
41
41
  const assert_1 = require("assert");
42
+ const job_js_1 = require("./job.js");
43
+ const jobs = [];
44
+ process.on("exit", (_, code) => {
45
+ (0, job_js_1.cleanupJobResources)(jobs).finally(process.exit(code));
46
+ });
47
+ process.on("SIGINT", (_, code) => {
48
+ (0, job_js_1.cleanupJobResources)(jobs).finally(process.exit(code));
49
+ });
42
50
  (() => {
43
51
  const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "../package.json"), "utf8"));
44
52
  (0, yargs_1.default)(process.argv.slice(2))
@@ -49,17 +57,19 @@ const assert_1 = require("assert");
49
57
  .command({
50
58
  handler: async (argv) => {
51
59
  try {
52
- const jobs = await (0, handler_1.handler)(argv, new write_streams_1.WriteStreamsProcess());
60
+ const jobs = [];
61
+ await (0, handler_1.handler)(argv, new write_streams_1.WriteStreamsProcess(), jobs);
53
62
  const failedJobs = executor_1.Executor.getFailed(jobs);
54
63
  process.exit(failedJobs.length > 0 ? 1 : 0);
55
64
  }
56
65
  catch (e) {
57
66
  if (e instanceof assert_1.AssertionError) {
58
- process.stderr.write((0, chalk_1.default) `{red ${e.message}}\n`);
59
- process.exit(1);
67
+ process.stderr.write((0, chalk_1.default) `{red ${e.message.trim()}}\n`);
60
68
  }
61
- process.stderr.write((0, chalk_1.default) `{red ${e.stack ?? e}}\n`);
62
- process.exit(1);
69
+ else {
70
+ process.stderr.write((0, chalk_1.default) `{red ${e.stack ?? e}}\n`);
71
+ }
72
+ (0, job_js_1.cleanupJobResources)(jobs).finally(process.exit(1));
63
73
  }
64
74
  },
65
75
  builder: (y) => {
@@ -71,7 +81,7 @@ const assert_1 = require("assert");
71
81
  command: "$0 [job..]",
72
82
  describe: "Runs the entire pipeline or job's",
73
83
  })
74
- .usage("Find more information at https://github.com/firecow/gitlab-ci-local")
84
+ .usage("Find more information at https://github.com/firecow/gitlab-ci-local.\nNote: To negate an option use '--no-(option)'.")
75
85
  .strictOptions()
76
86
  .env("GCL")
77
87
  .option("manual", {
@@ -178,6 +188,7 @@ const assert_1 = require("assert");
178
188
  type: "boolean",
179
189
  description: "Sets docker user to 0:0",
180
190
  requiresArg: false,
191
+ default: true,
181
192
  })
182
193
  .option("privileged", {
183
194
  type: "boolean",
@@ -208,11 +219,13 @@ const assert_1 = require("assert");
208
219
  type: "boolean",
209
220
  description: "Copy the generated artifacts into cwd",
210
221
  requiresArg: false,
222
+ default: true,
211
223
  })
212
224
  .option("cleanup", {
213
225
  type: "boolean",
214
226
  description: "Remove docker resources after they've been used",
215
227
  requiresArg: false,
228
+ default: true,
216
229
  })
217
230
  .option("quiet", {
218
231
  type: "boolean",
@@ -224,17 +237,30 @@ const assert_1 = require("assert");
224
237
  description: "Show timestamps and job duration in the logs",
225
238
  requiresArg: false,
226
239
  })
227
- .option("maxJobNameLength", {
240
+ .option("max-job-name-length", {
228
241
  type: "number",
229
242
  description: "Maximum padding for job name (use <= 0 for no padding)",
230
243
  requiresArg: false,
231
244
  })
232
- .completion("completion", false, async (_, yargsArgv) => {
245
+ .option("concurrency", {
246
+ type: "number",
247
+ description: "Limit the number of jobs that run simultaneously",
248
+ requiresArg: false,
249
+ })
250
+ .completion("completion", false, (current, yargsArgv, completionFilter, done) => {
233
251
  try {
234
- const argv = new argv_1.Argv({ ...yargsArgv, autoCompleting: true });
235
- const pipelineIid = await state.getPipelineIid(argv.cwd, argv.stateDir);
236
- const parser = await parser_1.Parser.create(argv, new write_streams_1.WriteStreamsMock(), pipelineIid);
237
- return [...parser.jobs.values()].filter((j) => j.when != "never").map((j) => j.name);
252
+ if (current.startsWith("-")) {
253
+ completionFilter();
254
+ }
255
+ else {
256
+ const argv = new argv_1.Argv({ ...yargsArgv, autoCompleting: true });
257
+ state.getPipelineIid(argv.cwd, argv.stateDir).then((pipelineIid) => {
258
+ parser_1.Parser.create(argv, new write_streams_1.WriteStreamsMock(), pipelineIid, []).then((parser) => {
259
+ const jobNames = [...parser.jobs.values()].filter((j) => j.when != "never").map((j) => j.name);
260
+ done(jobNames);
261
+ });
262
+ });
263
+ }
238
264
  }
239
265
  catch (e) {
240
266
  return ["Parser-Failed!"];
@@ -242,4 +268,4 @@ const assert_1 = require("assert");
242
268
  })
243
269
  .parse();
244
270
  })();
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVDQUFxQztBQUNyQyxrREFBMEI7QUFDMUIsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUM3QixrREFBMEI7QUFDMUIscUNBQWdDO0FBQ2hDLCtDQUFpQztBQUNqQyxtREFBc0U7QUFDdEUsdUNBQWtDO0FBQ2xDLHlDQUFvQztBQUNwQyxpQ0FBNEI7QUFDNUIsbUNBQXNDO0FBRXRDLENBQUMsR0FBRyxFQUFFO0lBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRyxJQUFBLGVBQUssRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QixtQkFBbUIsQ0FBQyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUMsQ0FBQztTQUM3QyxjQUFjLENBQUMsS0FBSyxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0IsSUFBSSxDQUFDLGVBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMzQixPQUFPLENBQUM7UUFDTCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUk7Z0JBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksbUNBQW1CLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLFVBQVUsR0FBRyxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENB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cG9ydC9yZWdpc3RlclwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSBcIi4vcGFyc2VyXCI7XG5pbXBvcnQgKiBhcyBzdGF0ZSBmcm9tIFwiLi9zdGF0ZVwiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXNQcm9jZXNzLCBXcml0ZVN0cmVhbXNNb2NrfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge2hhbmRsZXJ9IGZyb20gXCIuL2hhbmRsZXJcIjtcbmltcG9ydCB7RXhlY3V0b3J9IGZyb20gXCIuL2V4ZWN1dG9yXCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3ZcIjtcbmltcG9ydCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcblxuKCgpID0+IHtcbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vcGFja2FnZS5qc29uXCIpLCBcInV0ZjhcIikpO1xuICAgIHlhcmdzKHByb2Nlc3MuYXJndi5zbGljZSgyKSlcbiAgICAgICAgLnBhcnNlckNvbmZpZ3VyYXRpb24oe1wiZ3JlZWR5LWFycmF5c1wiOiBmYWxzZX0pXG4gICAgICAgIC5zaG93SGVscE9uRmFpbChmYWxzZSlcbiAgICAgICAgLnZlcnNpb24ocGFja2FnZUpzb25bXCJ2ZXJzaW9uXCJdKVxuICAgICAgICAud3JhcCh5YXJncy50ZXJtaW5hbFdpZHRoKCkpXG4gICAgICAgIC5jb21tYW5kKHtcbiAgICAgICAgICAgIGhhbmRsZXI6IGFzeW5jIChhcmd2KSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgam9icyA9IGF3YWl0IGhhbmRsZXIoYXJndiwgbmV3IFdyaXRlU3RyZWFtc1Byb2Nlc3MoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZhaWxlZEpvYnMgPSBFeGVjdXRvci5nZXRGYWlsZWQoam9icyk7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChmYWlsZWRKb2JzLmxlbmd0aCA+IDAgPyAxIDogMCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNoYWxrYHtyZWQgJHtlLm1lc3NhZ2V9fVxcbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNoYWxrYHtyZWQgJHtlLnN0YWNrID8/IGV9fVxcbmApO1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1aWxkZXI6ICh5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geS5wb3NpdGlvbmFsKFwiam9iXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmU6IFwiSm9ibmFtZSdzIHRvIGV4ZWN1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwiJDAgW2pvYi4uXVwiLFxuICAgICAgICAgICAgZGVzY3JpYmU6IFwiUnVucyB0aGUgZW50aXJlIHBpcGVsaW5lIG9yIGpvYidzXCIsXG4gICAgICAgIH0pXG4gICAgICAgIC51c2FnZShcIkZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhdCBodHRwczovL2dpdGh1Yi5jb20vZmlyZWNvdy9naXRsYWItY2ktbG9jYWxcIilcbiAgICAgICAgLnN0cmljdE9wdGlvbnMoKVxuICAgICAgICAuZW52KFwiR0NMXCIpXG4gICAgICAgIC5vcHRpb24oXCJtYW51YWxcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT25lIG9yIG1vcmUgbWFudWFsIGpvYnMgdG8gcnVuIGR1cmluZyBhIHBpcGVsaW5lXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImxpc3RcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMaXN0IGpvYiBpbmZvcm1hdGlvbiwgd2hlbjpuZXZlciBleGNsdWRlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibGlzdC1hbGxcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMaXN0IGpvYiBpbmZvcm1hdGlvbiwgd2hlbjpuZXZlciBpbmNsdWRlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibGlzdC1qc29uXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGlzdCBqb2IgaW5mb3JtYXRpb24gaW4ganNvbiBmb3JtYXQsIHdoZW46bmV2ZXIgaW5jbHVkZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImxpc3QtY3N2XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGlzdCBqb2IgaW5mb3JtYXRpb24gaW4gY3N2IGZvcm1hdCwgd2hlbjpuZXZlciBleGNsdWRlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibGlzdC1jc3YtYWxsXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGlzdCBqb2IgaW5mb3JtYXRpb24gaW4gY3N2IGZvcm1hdCwgd2hlbjpuZXZlciBpbmNsdWRlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwicHJldmlld1wiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IFlNTCB3aXRoIGRlZmF1bHRzLCBpbmNsdWRlcywgZXh0ZW5kcyBhbmQgcmVmZXJlbmNlJ3MgZXhwYW5kZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImN3ZFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiY29tcGxldGlvblwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIHRhYiBjb21wbGV0aW9uIHNjcmlwdFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibmVlZHNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW4gbmVlZGVkIGpvYnMsIHdoZW4gZXhlY3V0aW5nIHNwZWNpZmljIGpvYnNcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcIm9ubHktbmVlZHNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW4gbmVlZGVkIGpvYnMsIGV4Y2VwdCB0aGUgc3BlY2lmaWVkIGpvYnMgdGhlbXNlbHZlc1wiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwic3RhZ2VcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlJ1biBhbGwgam9icyBpbiBhIHNwZWNpZmljIHN0YWdlXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ2YXJpYWJsZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBZGQgdmFyaWFibGUgdG8gYWxsIGV4ZWN1dGVkIGpvYnMgKC0tdmFyaWFibGUgSEVMTE89d29ybGQpXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ1bnNldC12YXJpYWJsZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJVbnNldHMgYSB2YXJpYWJsZSAoLS11bnNldC12YXJpYWJsZSBIRUxMTylcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInJlbW90ZS12YXJpYWJsZXNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZldGNoIHZhcmlhYmxlcyBmaWxlIGZyb20gcmVtb3RlIGxvY2F0aW9uXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJzdGF0ZS1kaXJcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIG9mIHRoZSAuZ2l0bGFiLWNpLWxvY2FsIHN0YXRlIGRpciwgcmVsYXRpdmUgdG8gY3dkLCBlZy4gKHN5bWZvbnkvLmdpdGxhYi1jaS1sb2NhbC8pXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJmaWxlXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBvZiB0aGUgLmdpdGxhYi1jaS55bWwsIHJlbGF0aXZlIHRvIGN3ZCwgZWcuIChnaXRsYWIvLmdpdGxhYi1jaS55bWwpXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJob21lXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBvZiB0aGUgSE9NRSAuZ2l0bGFiLWNpLWxvY2FsIGZvbGRlciAoJEhPTUUvLmdpdGxhYi1jaS1sb2NhbC92YXJpYWJsZXMueW1sKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwic2hlbGwtaXNvbGF0aW9uXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRW5hYmxlIGFydGlmYWN0IGlzb2xhdGlvbiBmb3Igc2hlbGwtZXhlY3V0b3Igam9ic1wiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibW91bnQtY2FjaGVcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgZG9ja2VyIG1vdW50IGJhc2VkIGNhY2hpbmdcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInVtYXNrXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2V0cyBkb2NrZXIgdXNlciB0byAwOjBcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInByaXZpbGVnZWRcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZXQgZG9ja2VyIGV4ZWN1dG9yIHRvIHByaXZpbGVnZWQgbW9kZVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidWxpbWl0XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZXQgZG9ja2VyIGV4ZWN1dG9yIHVsaW1pdFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidm9sdW1lXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkFkZCB2b2x1bWVzIHRvIGRvY2tlciBleGVjdXRvclwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiZXh0cmEtaG9zdFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBZGQgZXh0cmEgZG9ja2VyIGhvc3QgZW50cmllc1wiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiZmV0Y2gtaW5jbHVkZXNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGZXRjaCBhbGwgZXh0ZXJuYWwgaW5jbHVkZXMgb25lIG1vcmUgdGltZVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiYXJ0aWZhY3RzLXRvLXNvdXJjZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvcHkgdGhlIGdlbmVyYXRlZCBhcnRpZmFjdHMgaW50byBjd2RcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImNsZWFudXBcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJSZW1vdmUgZG9ja2VyIHJlc291cmNlcyBhZnRlciB0aGV5J3ZlIGJlZW4gdXNlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwicXVpZXRcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTdXBwcmVzcyBhbGwgam9iIG91dHB1dFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidGltZXN0YW1wc1wiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNob3cgdGltZXN0YW1wcyBhbmQgam9iIGR1cmF0aW9uIGluIHRoZSBsb2dzXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJtYXhKb2JOYW1lTGVuZ3RoXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJNYXhpbXVtIHBhZGRpbmcgZm9yIGpvYiBuYW1lICh1c2UgPD0gMCBmb3Igbm8gcGFkZGluZylcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLmNvbXBsZXRpb24oXCJjb21wbGV0aW9uXCIsIGZhbHNlLCBhc3luYyAoXywgeWFyZ3NBcmd2KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3YgPSBuZXcgQXJndih7Li4ueWFyZ3NBcmd2LCBhdXRvQ29tcGxldGluZzogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoYXJndi5jd2QsIGFyZ3Yuc3RhdGVEaXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgbmV3IFdyaXRlU3RyZWFtc01vY2soKSwgcGlwZWxpbmVJaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucGFyc2VyLmpvYnMudmFsdWVzKCldLmZpbHRlcigoaikgPT4gai53aGVuICE9IFwibmV2ZXJcIikubWFwKChqKSA9PiBqLm5hbWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXCJQYXJzZXItRmFpbGVkIVwiXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgICAucGFyc2UoKTtcbn0pKCk7XG5cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVDQUFxQztBQUNyQyxrREFBMEI7QUFDMUIsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUM3QixrREFBMEI7QUFDMUIscUNBQWdDO0FBQ2hDLCtDQUFpQztBQUNqQyxtREFBc0U7QUFDdEUsdUNBQWtDO0FBQ2xDLHlDQUFvQztBQUNwQyxpQ0FBNEI7QUFDNUIsbUNBQXNDO0FBQ3RDLHFDQUFrRDtBQUVsRCxNQUFNLElBQUksR0FBVSxFQUFFLENBQUM7QUFFdkIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFTLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDM0MsSUFBQSw0QkFBbUIsRUFBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDO0FBQ0gsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFTLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDN0MsSUFBQSw0QkFBbUIsRUFBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDO0FBRUgsQ0FBQyxHQUFHLEVBQUU7SUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLElBQUEsZUFBSyxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLG1CQUFtQixDQUFDLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBQyxDQUFDO1NBQzdDLGNBQWMsQ0FBQyxLQUFLLENBQUM7U0FDckIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMvQixJQUFJLENBQUMsZUFBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzNCLE9BQU8sQ0FBQztRQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDcEIsSUFBSTtnQkFDQSxNQUFNLElBQUksR0FBVSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBQSxpQkFBTyxFQUFDLElBQUksRUFBRSxJQUFJLG1DQUFtQixFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sVUFBVSxHQUFHLG1CQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9DO1lBQUMsT0FBTyxDQUFNLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksdUJBQWMsRUFBRTtvQkFDN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBQSxlQUFLLEVBQUEsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDNUQ7cUJBQU07b0JBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBQSxlQUFLLEVBQUEsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3hEO2dCQUNELElBQUEsNEJBQW1CLEVBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0RDtRQUNMLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUN2QixRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxJQUFJLEVBQUUsT0FBTzthQUNoQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxFQUFFLFlBQVk7UUFDckIsUUFBUSxFQUFFLG1DQUFtQztLQUNoRCxDQUFDO1NBQ0QsS0FBSyxDQUFDLHNIQUFzSCxDQUFDO1NBQzdILGFBQWEsRUFBRTtTQUNmLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDVixNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2QsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELFdBQVcsRUFBRSxJQUFJO0tBQ3BCLENBQUM7U0FDRCxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ1osSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsMkNBQTJDO1FBQ3hELFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSwwREFBMEQ7UUFDdkUsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsY0FBYyxFQUFFO1FBQ3BCLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHFFQUFxRTtRQUNsRixXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLHFDQUFxQztRQUNsRCxXQUFXLEVBQUUsSUFBSTtLQUNwQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFlBQVksRUFBRTtRQUNsQixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxnQ0FBZ0M7UUFDN0MsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDYixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDbEIsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsdURBQXVEO1FBQ3BFLFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2IsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsa0NBQWtDO1FBQy9DLFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ2hCLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLDREQUE0RDtRQUN6RSxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1FBQ3RCLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLDRDQUE0QztRQUN6RCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLGtCQUFrQixFQUFFO1FBQ3hCLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNqQixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSw4RkFBOEY7UUFDM0csV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDWixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSw4RUFBOEU7UUFDM0YsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDWixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxxRkFBcUY7UUFDbEcsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtRQUN2QixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxtREFBbUQ7UUFDaEUsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDbkIsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2IsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE9BQU8sRUFBRSxJQUFJO0tBQ2hCLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ2xCLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHdDQUF3QztRQUNyRCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNkLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFlBQVksRUFBRTtRQUNsQixJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSwrQkFBK0I7UUFDNUMsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtRQUN0QixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSwyQ0FBMkM7UUFDeEQsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxxQkFBcUIsRUFBRTtRQUMzQixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSx1Q0FBdUM7UUFDcEQsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTyxFQUFFLElBQUk7S0FDaEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxpREFBaUQ7UUFDOUQsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTyxFQUFFLElBQUk7S0FDaEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDYixJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsV0FBVyxFQUFFLEtBQUs7S0FDckIsQ0FBQztTQUNELE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDbEIsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsOENBQThDO1FBQzNELFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMscUJBQXFCLEVBQUU7UUFDM0IsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsd0RBQXdEO1FBQ3JFLFdBQVcsRUFBRSxLQUFLO0tBQ3JCLENBQUM7U0FDRCxNQUFNLENBQUMsYUFBYSxFQUFFO1FBQ25CLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLGtEQUFrRDtRQUMvRCxXQUFXLEVBQUUsS0FBSztLQUNyQixDQUFDO1NBQ0QsVUFBVSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsU0FBYyxFQUFFLGdCQUFxQixFQUFFLElBQW9DLEVBQUUsRUFBRTtRQUM5SCxJQUFJO1lBQ0EsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixnQkFBZ0IsRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLEVBQUMsR0FBRyxTQUFTLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7Z0JBQzVELEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQy9ELGVBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksZ0NBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ3pFLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMvRixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDN0I7SUFFTCxDQUFDLENBQUM7U0FDRCxLQUFLLEVBQUUsQ0FBQztBQUNqQixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IFwic291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCAqIGFzIHN0YXRlIGZyb20gXCIuL3N0YXRlXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc1Byb2Nlc3MsIFdyaXRlU3RyZWFtc01vY2t9IGZyb20gXCIuL3dyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCB7aGFuZGxlcn0gZnJvbSBcIi4vaGFuZGxlclwiO1xuaW1wb3J0IHtFeGVjdXRvcn0gZnJvbSBcIi4vZXhlY3V0b3JcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndlwiO1xuaW1wb3J0IHtBc3NlcnRpb25FcnJvcn0gZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHtKb2IsIGNsZWFudXBKb2JSZXNvdXJjZXN9IGZyb20gXCIuL2pvYi5qc1wiO1xuXG5jb25zdCBqb2JzOiBKb2JbXSA9IFtdO1xuXG5wcm9jZXNzLm9uKFwiZXhpdFwiLCAoXzogc3RyaW5nLCBjb2RlOiBudW1iZXIpID0+IHtcbiAgICBjbGVhbnVwSm9iUmVzb3VyY2VzKGpvYnMpLmZpbmFsbHkocHJvY2Vzcy5leGl0KGNvZGUpKTtcbn0pO1xucHJvY2Vzcy5vbihcIlNJR0lOVFwiLCAoXzogc3RyaW5nLCBjb2RlOiBudW1iZXIpID0+IHtcbiAgICBjbGVhbnVwSm9iUmVzb3VyY2VzKGpvYnMpLmZpbmFsbHkocHJvY2Vzcy5leGl0KGNvZGUpKTtcbn0pO1xuXG4oKCkgPT4ge1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9wYWNrYWdlLmpzb25cIiksIFwidXRmOFwiKSk7XG4gICAgeWFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxuICAgICAgICAucGFyc2VyQ29uZmlndXJhdGlvbih7XCJncmVlZHktYXJyYXlzXCI6IGZhbHNlfSlcbiAgICAgICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgICAgICAudmVyc2lvbihwYWNrYWdlSnNvbltcInZlcnNpb25cIl0pXG4gICAgICAgIC53cmFwKHlhcmdzLnRlcm1pbmFsV2lkdGgoKSlcbiAgICAgICAgLmNvbW1hbmQoe1xuICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3YpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBqb2JzOiBKb2JbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBoYW5kbGVyKGFyZ3YsIG5ldyBXcml0ZVN0cmVhbXNQcm9jZXNzKCksIGpvYnMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWlsZWRKb2JzID0gRXhlY3V0b3IuZ2V0RmFpbGVkKGpvYnMpO1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoZmFpbGVkSm9icy5sZW5ndGggPiAwID8gMSA6IDApO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5tZXNzYWdlLnRyaW0oKX19XFxuYCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5zdGFjayA/PyBlfX1cXG5gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwSm9iUmVzb3VyY2VzKGpvYnMpLmZpbmFsbHkocHJvY2Vzcy5leGl0KDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnVpbGRlcjogKHk6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB5LnBvc2l0aW9uYWwoXCJqb2JcIiwge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmliZTogXCJKb2JuYW1lJ3MgdG8gZXhlY3V0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogXCIkMCBbam9iLi5dXCIsXG4gICAgICAgICAgICBkZXNjcmliZTogXCJSdW5zIHRoZSBlbnRpcmUgcGlwZWxpbmUgb3Igam9iJ3NcIixcbiAgICAgICAgfSlcbiAgICAgICAgLnVzYWdlKFwiRmluZCBtb3JlIGluZm9ybWF0aW9uIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9maXJlY293L2dpdGxhYi1jaS1sb2NhbC5cXG5Ob3RlOiBUbyBuZWdhdGUgYW4gb3B0aW9uIHVzZSAnLS1uby0ob3B0aW9uKScuXCIpXG4gICAgICAgIC5zdHJpY3RPcHRpb25zKClcbiAgICAgICAgLmVudihcIkdDTFwiKVxuICAgICAgICAub3B0aW9uKFwibWFudWFsXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk9uZSBvciBtb3JlIG1hbnVhbCBqb2JzIHRvIHJ1biBkdXJpbmcgYSBwaXBlbGluZVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJsaXN0XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGlzdCBqb2IgaW5mb3JtYXRpb24sIHdoZW46bmV2ZXIgZXhjbHVkZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImxpc3QtYWxsXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGlzdCBqb2IgaW5mb3JtYXRpb24sIHdoZW46bmV2ZXIgaW5jbHVkZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImxpc3QtanNvblwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3Qgam9iIGluZm9ybWF0aW9uIGluIGpzb24gZm9ybWF0LCB3aGVuOm5ldmVyIGluY2x1ZGVkXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJsaXN0LWNzdlwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3Qgam9iIGluZm9ybWF0aW9uIGluIGNzdiBmb3JtYXQsIHdoZW46bmV2ZXIgZXhjbHVkZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImxpc3QtY3N2LWFsbFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpc3Qgam9iIGluZm9ybWF0aW9uIGluIGNzdiBmb3JtYXQsIHdoZW46bmV2ZXIgaW5jbHVkZWRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInByZXZpZXdcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmludCBZTUwgd2l0aCBkZWZhdWx0cywgaW5jbHVkZXMsIGV4dGVuZHMgYW5kIHJlZmVyZW5jZSdzIGV4cGFuZGVkXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJjd2RcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBhdGggdG8gYSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImNvbXBsZXRpb25cIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSB0YWIgY29tcGxldGlvbiBzY3JpcHRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcIm5lZWRzXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUnVuIG5lZWRlZCBqb2JzLCB3aGVuIGV4ZWN1dGluZyBzcGVjaWZpYyBqb2JzXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJvbmx5LW5lZWRzXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUnVuIG5lZWRlZCBqb2JzLCBleGNlcHQgdGhlIHNwZWNpZmllZCBqb2JzIHRoZW1zZWx2ZXNcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInN0YWdlXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW4gYWxsIGpvYnMgaW4gYSBzcGVjaWZpYyBzdGFnZVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidmFyaWFibGVcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWRkIHZhcmlhYmxlIHRvIGFsbCBleGVjdXRlZCBqb2JzICgtLXZhcmlhYmxlIEhFTExPPXdvcmxkKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwidW5zZXQtdmFyaWFibGVcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVW5zZXRzIGEgdmFyaWFibGUgKC0tdW5zZXQtdmFyaWFibGUgSEVMTE8pXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJyZW1vdGUtdmFyaWFibGVzXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGZXRjaCB2YXJpYWJsZXMgZmlsZSBmcm9tIHJlbW90ZSBsb2NhdGlvblwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwic3RhdGUtZGlyXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBvZiB0aGUgLmdpdGxhYi1jaS1sb2NhbCBzdGF0ZSBkaXIsIHJlbGF0aXZlIHRvIGN3ZCwgZWcuIChzeW1mb255Ly5naXRsYWItY2ktbG9jYWwvKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiZmlsZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTG9jYXRpb24gb2YgdGhlIC5naXRsYWItY2kueW1sLCByZWxhdGl2ZSB0byBjd2QsIGVnLiAoZ2l0bGFiLy5naXRsYWItY2kueW1sKVwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiaG9tZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTG9jYXRpb24gb2YgdGhlIEhPTUUgLmdpdGxhYi1jaS1sb2NhbCBmb2xkZXIgKCRIT01FLy5naXRsYWItY2ktbG9jYWwvdmFyaWFibGVzLnltbClcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInNoZWxsLWlzb2xhdGlvblwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkVuYWJsZSBhcnRpZmFjdCBpc29sYXRpb24gZm9yIHNoZWxsLWV4ZWN1dG9yIGpvYnNcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcIm1vdW50LWNhY2hlXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRW5hYmxlIGRvY2tlciBtb3VudCBiYXNlZCBjYWNoaW5nXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ1bWFza1wiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNldHMgZG9ja2VyIHVzZXIgdG8gMDowXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwicHJpdmlsZWdlZFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNldCBkb2NrZXIgZXhlY3V0b3IgdG8gcHJpdmlsZWdlZCBtb2RlXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ1bGltaXRcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNldCBkb2NrZXIgZXhlY3V0b3IgdWxpbWl0XCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ2b2x1bWVcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWRkIHZvbHVtZXMgdG8gZG9ja2VyIGV4ZWN1dG9yXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJleHRyYS1ob3N0XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkFkZCBleHRyYSBkb2NrZXIgaG9zdCBlbnRyaWVzXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJmZXRjaC1pbmNsdWRlc1wiLCB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZldGNoIGFsbCBleHRlcm5hbCBpbmNsdWRlcyBvbmUgbW9yZSB0aW1lXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJhcnRpZmFjdHMtdG8tc291cmNlXCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29weSB0aGUgZ2VuZXJhdGVkIGFydGlmYWN0cyBpbnRvIGN3ZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcImNsZWFudXBcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJSZW1vdmUgZG9ja2VyIHJlc291cmNlcyBhZnRlciB0aGV5J3ZlIGJlZW4gdXNlZFwiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInF1aWV0XCIsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3VwcHJlc3MgYWxsIGpvYiBvdXRwdXRcIixcbiAgICAgICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInRpbWVzdGFtcHNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTaG93IHRpbWVzdGFtcHMgYW5kIGpvYiBkdXJhdGlvbiBpbiB0aGUgbG9nc1wiLFxuICAgICAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwibWF4LWpvYi1uYW1lLWxlbmd0aFwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTWF4aW11bSBwYWRkaW5nIGZvciBqb2IgbmFtZSAodXNlIDw9IDAgZm9yIG5vIHBhZGRpbmcpXCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJjb25jdXJyZW5jeVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGltaXQgdGhlIG51bWJlciBvZiBqb2JzIHRoYXQgcnVuIHNpbXVsdGFuZW91c2x5XCIsXG4gICAgICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIC5jb21wbGV0aW9uKFwiY29tcGxldGlvblwiLCBmYWxzZSwgKGN1cnJlbnQ6IHN0cmluZywgeWFyZ3NBcmd2OiBhbnksIGNvbXBsZXRpb25GaWx0ZXI6IGFueSwgZG9uZTogKGNvbXBsZXRpb25zOiBzdHJpbmdbXSkgPT4gYW55KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25GaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmd2ID0gbmV3IEFyZ3Yoey4uLnlhcmdzQXJndiwgYXV0b0NvbXBsZXRpbmc6IHRydWV9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoYXJndi5jd2QsIGFyZ3Yuc3RhdGVEaXIpLnRoZW4oKHBpcGVsaW5lSWlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXIuY3JlYXRlKGFyZ3YsIG5ldyBXcml0ZVN0cmVhbXNNb2NrKCksIHBpcGVsaW5lSWlkLCBbXSkudGhlbigocGFyc2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgam9iTmFtZXMgPSBbLi4ucGFyc2VyLmpvYnMudmFsdWVzKCldLmZpbHRlcigoaikgPT4gai53aGVuICE9IFwibmV2ZXJcIikubWFwKChqKSA9PiBqLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoam9iTmFtZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1wiUGFyc2VyLUZhaWxlZCFcIl07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgICAgLnBhcnNlKCk7XG59KSgpO1xuXG4iXX0=