cdk8s-cli 2.204.9 → 2.205.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/util.js CHANGED
@@ -15,15 +15,40 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.crdsArePresent = exports.isHelmImport = exports.isK8sImport = exports.deriveFileName = exports.hashAndEncode = exports.parseImports = exports.findConstructMetadata = exports.findManifests = exports.download = exports.safeParseYaml = exports.safeParseJson = exports.validateApp = exports.synthApp = exports.mkdtemp = exports.shell = exports.PREFIX_DELIM = void 0;
36
+ exports.PREFIX_DELIM = void 0;
37
+ exports.shell = shell;
38
+ exports.mkdtemp = mkdtemp;
39
+ exports.synthApp = synthApp;
40
+ exports.validateApp = validateApp;
41
+ exports.safeParseJson = safeParseJson;
42
+ exports.safeParseYaml = safeParseYaml;
43
+ exports.download = download;
44
+ exports.findManifests = findManifests;
45
+ exports.findConstructMetadata = findConstructMetadata;
46
+ exports.parseImports = parseImports;
47
+ exports.hashAndEncode = hashAndEncode;
48
+ exports.deriveFileName = deriveFileName;
49
+ exports.isK8sImport = isK8sImport;
50
+ exports.isHelmImport = isHelmImport;
51
+ exports.crdsArePresent = crdsArePresent;
27
52
  const child_process_1 = require("child_process");
28
53
  const crypto_1 = require("crypto");
29
54
  const fs_1 = require("fs");
@@ -54,7 +79,6 @@ async function shell(program, args = [], options = {}) {
54
79
  });
55
80
  });
56
81
  }
57
- exports.shell = shell;
58
82
  async function mkdtemp(closure) {
59
83
  const workdir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk8s-'));
60
84
  try {
@@ -64,7 +88,6 @@ async function mkdtemp(closure) {
64
88
  await fs.remove(workdir);
65
89
  }
66
90
  }
67
- exports.mkdtemp = mkdtemp;
68
91
  async function synthApp(command, outdir, stdout, metadata) {
69
92
  if (!stdout) {
70
93
  console.log('Synthesizing application');
@@ -99,7 +122,6 @@ async function synthApp(command, outdir, stdout, metadata) {
99
122
  const constructMetadata = findConstructMetadata(outdir);
100
123
  return { manifests: yamlFiles, constructMetadata };
101
124
  }
102
- exports.synthApp = synthApp;
103
125
  async function validateApp(app, stdout, validations, pluginManager, reportsFile) {
104
126
  const validators = [];
105
127
  for (const validation of validations) {
@@ -139,13 +161,11 @@ async function validateApp(app, stdout, validations, pluginManager, reportsFile)
139
161
  }
140
162
  console.log('Validations ended succesfully');
141
163
  }
142
- exports.validateApp = validateApp;
143
164
  function safeParseJson(text, reviver) {
144
165
  const json = JSON.parse(text);
145
166
  reviver.sanitize(json);
146
167
  return json;
147
168
  }
148
- exports.safeParseJson = safeParseJson;
149
169
  function safeParseYaml(text, reviver) {
150
170
  // parseAllDocuments doesnt accept a reviver
151
171
  // so we first parse normally and than transform
@@ -159,7 +179,6 @@ function safeParseYaml(text, reviver) {
159
179
  }
160
180
  return docs;
161
181
  }
162
- exports.safeParseYaml = safeParseYaml;
163
182
  async function download(url) {
164
183
  let client;
165
184
  const proto = (0, url_1.parse)(url).protocol;
@@ -202,7 +221,6 @@ async function download(url) {
202
221
  req.end();
203
222
  });
204
223
  }
205
- exports.download = download;
206
224
  async function findManifests(directory) {
207
225
  // Ensure path is valid
208
226
  try {
@@ -224,13 +242,11 @@ async function findManifests(directory) {
224
242
  }
225
243
  return files;
226
244
  }
227
- exports.findManifests = findManifests;
228
245
  function findConstructMetadata(directory) {
229
246
  // this file is optionally created during synthesis
230
247
  const p = path.join(directory, 'construct-metadata.json');
231
248
  return fs.existsSync(p) ? p : undefined;
232
249
  }
233
- exports.findConstructMetadata = findConstructMetadata;
234
250
  function parseImports(spec) {
235
251
  const splitImport = spec.split(exports.PREFIX_DELIM);
236
252
  // k8s@x.y.z
@@ -251,13 +267,11 @@ function parseImports(spec) {
251
267
  }
252
268
  throw new Error('Unable to parse import specification. Syntax is [NAME:=]SPEC');
253
269
  }
254
- exports.parseImports = parseImports;
255
270
  function hashAndEncode(input, algorithm = 'sha256', encoding = 'hex') {
256
271
  const hash = (0, crypto_1.createHash)(algorithm);
257
272
  hash.update(input);
258
273
  return hash.digest(encoding);
259
274
  }
260
- exports.hashAndEncode = hashAndEncode;
261
275
  function deriveFileName(url) {
262
276
  const devUrl = (0, crds_dev_1.matchCrdsDevUrl)(url);
263
277
  let filename = undefined;
@@ -279,23 +293,19 @@ function deriveFileName(url) {
279
293
  }
280
294
  return filename;
281
295
  }
282
- exports.deriveFileName = deriveFileName;
283
296
  function isK8sImport(value) {
284
297
  if (value !== 'k8s' && !value.startsWith('k8s@')) {
285
298
  return false;
286
299
  }
287
300
  return true;
288
301
  }
289
- exports.isK8sImport = isK8sImport;
290
302
  function isHelmImport(value) {
291
303
  if (!value.startsWith('helm:') && !value.includes(':=helm:')) {
292
304
  return false;
293
305
  }
294
306
  return true;
295
307
  }
296
- exports.isHelmImport = isHelmImport;
297
308
  function crdsArePresent(imprts) {
298
309
  return (imprts ?? []).some(imprt => (!isK8sImport(imprt) && !isHelmImport(imprt)));
299
310
  }
300
- exports.crdsArePresent = crdsArePresent;
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELG1DQUEwRDtBQUMxRCwyQkFBMEM7QUFDMUMsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDZCQUE0QjtBQUM1Qiw2Q0FBK0I7QUFDL0IsMkNBQTZCO0FBRTdCLGdEQUFvRDtBQUVwRCxxREFBeUc7QUFHNUYsUUFBQSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRTFCLEtBQUssVUFBVSxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCLEVBQUUsRUFBRSxVQUF3QixFQUFHO0lBQzNGLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFLLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXBELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcs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LFNBQWdCLGNBQWMsQ0FBQyxNQUE0QjtJQUN6RCxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFGRCx3Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IEJpbmFyeVRvVGV4dEVuY29kaW5nLCBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHByb21pc2VzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3VybCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgSW1wb3J0U3BlYywgVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IG1hdGNoQ3Jkc0RldlVybCB9IGZyb20gJy4vaW1wb3J0L2NyZHMtZGV2JztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuL3BsdWdpbnMvX21hbmFnZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvblBsdWdpbiwgVmFsaWRhdGlvbkNvbnRleHQsIFZhbGlkYXRpb25SZXBvcnQsIFZhbGlkYXRpb24gfSBmcm9tICcuL3BsdWdpbnMvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWZlUmV2aXZlciB9IGZyb20gJy4vcmV2aXZlcic7XG5cbmV4cG9ydCBjb25zdCBQUkVGSVhfREVMSU0gPSAnOj0nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hlbGwocHJvZ3JhbTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSA9IFtdLCBvcHRpb25zOiBTcGF3bk9wdGlvbnMgPSB7IH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21tYW5kID0gYFwiJHtwcm9ncmFtfSAke2FyZ3Muam9pbignICcpfVwiIGF0ICR7cGF0aC5yZXNvbHZlKG9wdGlvbnMuY3dkPy50b1N0cmluZygpID8/ICcuJyl9YDtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKHByb2dyYW0sIGFyZ3MsIHsgc3RkaW86IFsnaW5oZXJpdCcsICdwaXBlJywgJ2luaGVyaXQnXSwgLi4ub3B0aW9ucyB9KTtcbiAgICBjb25zdCBkYXRhID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcbiAgICBjaGlsZC5zdGRvdXQ/Lm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YS5wdXNoKGNodW5rKSk7XG5cbiAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGVyciA9PiBrbyhuZXcgRXJyb3IoYGNvbW1hbmQgJHtjb21tYW5kfSBmYWlsZWQ6ICR7ZXJyfWApKSk7XG4gICAgY2hpbGQub25jZSgnZXhpdCcsIGNvZGUgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9rKEJ1ZmZlci5jb25jYXQoZGF0YSkudG9TdHJpbmcoJ3V0Zi04JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtvKG5ldyBFcnJvcihgY29tbWFuZCAke2NvbW1hbmR9IHJldHVybmVkIGEgbm9uLXplcm8gZXhpdCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWtkdGVtcChjbG9zdXJlOiAoZGlyOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgY29uc3Qgd29ya2RpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrOHMtJykpO1xuICB0cnkge1xuICAgIGF3YWl0IGNsb3N1cmUod29ya2Rpcik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmVtb3ZlKHdvcmtkaXIpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzeW50aEFwcChjb21tYW5kOiBzdHJpbmcsIG91dGRpcjogc3RyaW5nLCBzdGRvdXQ6IGJvb2xlYW4sIG1ldGFkYXRhOiBib29sZWFuKTogUHJvbWlzZTxTeW50aGVzaXplZEFwcD4ge1xuICBpZiAoIXN0ZG91dCkge1xuICAgIGNvbnNvbGUubG9nKCdTeW50aGVzaXppbmcgYXBwbGljYXRpb24nKTtcbiAgfVxuICBhd2FpdCBzaGVsbChjb21tYW5kLCBbXSwge1xuICAgIHNoZWxsOiB0cnVlLFxuICAgIGVudjoge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICBDREs4U19PVVRESVI6IG91dGRpcixcbiAgICAgIC8vIHJlY29yZCBtZXRhZGF0YSBzbyB0aGF0IHRoZSB2YWxpZGF0aW9uIHJlcG9ydFxuICAgICAgLy8gaGFzIGNvbnRydWN0IGF3YXJlIGNvbnRleHQuXG4gICAgICBDREs4U19SRUNPUkRfQ09OU1RSVUNUX01FVEFEQVRBOiBwcm9jZXNzLmVudi5DREs4U19SRUNPUkRfQ09OU1RSVUNUX01FVEFEQVRBID8/IChtZXRhZGF0YSA/ICd0cnVlJyA6ICdmYWxzZScpLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhvdXRkaXIpKSB7XG4gICAgY29uc29sZS5lcnJvcihgRVJST1I6IHN5bnRoZXNpcyBmYWlsZWQsIGFwcCBleHBlY3RlZCB0byBjcmVhdGUgXCIke291dGRpcn1cImApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuICBjb25zdCB5YW1sRmlsZXMgPSBhd2FpdCBmaW5kTWFuaWZlc3RzKG91dGRpcik7XG4gIGlmICh5YW1sRmlsZXM/Lmxlbmd0aCkge1xuICAgIGlmICghc3Rkb3V0KSB7XG4gICAgICBmb3IgKGNvbnN0IHlhbWxGaWxlIG9mIHlhbWxGaWxlcykge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAtICR7eWFtbEZpbGV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghZm91bmQpIHtcbiAgICBjb25zb2xlLmVycm9yKCdObyBtYW5pZmVzdHMgc3ludGhlc2l6ZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnN0cnVjdE1ldGFkYXRhID0gZmluZENvbnN0cnVjdE1ldGFkYXRhKG91dGRpcik7XG5cbiAgcmV0dXJuIHsgbWFuaWZlc3RzOiB5YW1sRmlsZXMsIGNvbnN0cnVjdE1ldGFkYXRhIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUFwcChcbiAgYXBwOiBTeW50aGVzaXplZEFwcCxcbiAgc3Rkb3V0OiBib29sZWFuLFxuICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbkNvbmZpZ1tdLFxuICBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyLFxuICByZXBvcnRzRmlsZT86IHN0cmluZykge1xuXG4gIGNvbnN0IHZhbGlkYXRvcnM6IHsgcGx1Z2luOiBWYWxpZGF0aW9uOyBjb250ZXh0OiBWYWxpZGF0aW9uQ29udGV4dCB9W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcbiAgICBjb25zdCB7IHBsdWdpbiwgY29udGV4dCB9ID0gVmFsaWRhdGlvblBsdWdpbi5sb2FkKHZhbGlkYXRpb24sIGFwcCwgc3Rkb3V0LCBwbHVnaW5NYW5hZ2VyKTtcbiAgICB2YWxpZGF0b3JzLnB1c2goeyBwbHVnaW4sIGNvbnRleHQgfSk7XG4gIH1cblxuICBjb25zdCByZXBvcnRzOiBWYWxpZGF0aW9uUmVwb3J0W10gPSBbXTtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnNvbGUubG9nKCdQZXJmb3JtaW5nIHZhbGlkYXRpb25zJyk7XG5cbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGF3YWl0IHZhbGlkYXRvci5wbHVnaW4udmFsaWRhdGUodmFsaWRhdG9yLmNvbnRleHQpO1xuICAgIGNvbnN0IHJlcG9ydCA9IHZhbGlkYXRvci5jb250ZXh0LnJlcG9ydDtcbiAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiByZXBvcnQuc3VjY2VzcztcbiAgICByZXBvcnRzLnB1c2gocmVwb3J0KTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9ucyBmaW5pc2hlZCcpO1xuXG4gIC8vIG5vdyB3ZSBjYW4gcHJpbnQgdGhlbS4gd2UgZG9uJ3QgaW5jcmVtZW50YWxseSBwcmludFxuICAvLyBzbyB0byBub3QgY2x1dHRlciB0aGUgdGVybWluYWwgaW4gY2FzZSBvZiBlcnJvcnMuXG4gIGZvciAoY29uc3QgcmVwb3J0IG9mIHJlcG9ydHMpIHtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgY29uc29sZS5sb2cocmVwb3J0LnRvU3RyaW5nKCkpO1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgfVxuXG4gIGlmIChyZXBvcnRzRmlsZSkge1xuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocmVwb3J0c0ZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB3cml0ZSB2YWxpZGF0aW9uIHJlcG9ydHMgZmlsZS4gQWxyZWFkeSBleGlzdHM6ICR7cmVwb3J0c0ZpbGV9YCk7XG4gICAgfVxuICAgIC8vIHdyaXRlIHRoZSByZXBvcnRzIGluIEpTT04gdG8gYSBmaWxlXG4gICAgZnMud3JpdGVGaWxlU3luYyhyZXBvcnRzRmlsZSwgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgcmVwb3J0czogcmVwb3J0cy5tYXAociA9PiByLnRvSnNvbigpKSxcbiAgICB9LCBudWxsLCAyKSk7XG4gIH1cblxuICAvLyBleGl0IHdpdGggZmFpbHVyZSBpZiBhbnkgcmVwb3J0IHJlc3VsdGVkIGluIGEgZmFpbHVyZVxuICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICBjb25zb2xlLmVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZC4gU2VlIGFib3ZlIHJlcG9ydHMgZm9yIGRldGFpbHMnKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cblxuICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbnMgZW5kZWQgc3VjY2VzZnVsbHknKTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZVBhcnNlSnNvbih0ZXh0OiBzdHJpbmcsIHJldml2ZXI6IFNhZmVSZXZpdmVyKTogYW55IHtcbiAgY29uc3QganNvbiA9IEpTT04ucGFyc2UodGV4dCk7XG4gIHJldml2ZXIuc2FuaXRpemUoanNvbik7XG4gIHJldHVybiBqc29uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZVBhcnNlWWFtbCh0ZXh0OiBzdHJpbmcsIHJldml2ZXI6IFNhZmVSZXZpdmVyKTogYW55W10ge1xuXG4gIC8vIHBhcnNlQWxsRG9jdW1lbnRzIGRvZXNudCBhY2NlcHQgYSByZXZpdmVyXG4gIC8vIHNvIHdlIGZpcnN0IHBhcnNlIG5vcm1hbGx5IGFuZCB0aGFuIHRyYW5zZm9ybVxuICAvLyB0byBKUyB1c2luZyB0aGUgcmV2aXZlci5cbiAgY29uc3QgcGFyc2VkID0geWFtbC5wYXJzZUFsbERvY3VtZW50cyh0ZXh0KTtcbiAgY29uc3QgZG9jcyA9IFtdO1xuICBmb3IgKGNvbnN0IGRvYyBvZiBwYXJzZWQpIHtcbiAgICBjb25zdCBqc29uID0gZG9jLnRvSlMoKTtcbiAgICByZXZpdmVyLnNhbml0aXplKGpzb24pO1xuICAgIGRvY3MucHVzaChqc29uKTtcbiAgfVxuICByZXR1cm4gZG9jcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkKHVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblxuICBsZXQgY2xpZW50OiB0eXBlb2YgaHR0cCB8IHR5cGVvZiBodHRwcztcbiAgY29uc3QgcHJvdG8gPSBwYXJzZSh1cmwpLnByb3RvY29sO1xuXG4gIGlmICghcHJvdG8gfHwgcHJvdG8gPT09ICdmaWxlOicpIHtcbiAgICByZXR1cm4gZnMucmVhZEZpbGUodXJsLCAndXRmLTgnKTtcbiAgfVxuXG4gIHN3aXRjaCAocHJvdG8pIHtcbiAgICBjYXNlICdodHRwczonOlxuICAgICAgY2xpZW50ID0gaHR0cHM7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2h0dHA6JzpcbiAgICAgIGNsaWVudCA9IGh0dHA7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHByb3RvY29sICR7cHJvdG99YCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IHJlcSA9IGNsaWVudC5nZXQodXJsLCByZXMgPT4ge1xuICAgICAgc3dpdGNoIChyZXMuc3RhdHVzQ29kZSkge1xuICAgICAgICBjYXNlIDIwMDoge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXk8QnVmZmVyPigpO1xuICAgICAgICAgIHJlcy5vbignZGF0YScsIGNodW5rID0+IGRhdGEucHVzaChjaHVuaykpO1xuICAgICAgICAgIHJlcy5vbmNlKCdlbmQnLCAoKSA9PiBvayhCdWZmZXIuY29uY2F0KGRhdGEpLnRvU3RyaW5nKCd1dGYtOCcpKSk7XG4gICAgICAgICAgcmVzLm9uY2UoJ2Vycm9yJywga28pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAzMDE6XG4gICAgICAgIGNhc2UgMzAyOiB7XG4gICAgICAgICAgaWYgKHJlcy5oZWFkZXJzLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICBvayhkb3dubG9hZChyZXMuaGVhZGVycy5sb2NhdGlvbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBrbyhuZXcgRXJyb3IoYCR7cmVzLnN0YXR1c01lc3NhZ2V9OiAke3VybH1gKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlcS5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICByZXEuZW5kKCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZE1hbmlmZXN0cyhkaXJlY3Rvcnk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgLy8gRW5zdXJlIHBhdGggaXMgdmFsaWRcbiAgdHJ5IHtcbiAgICBhd2FpdCBwcm9taXNlcy5hY2Nlc3MoZGlyZWN0b3J5KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gUmVhZCBQYXRoIGNvbnRlbnRzXG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBwcm9taXNlcy5yZWFkZGlyKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuXG4gIC8vIEdldCBmaWxlcyB3aXRoaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gIGNvbnN0IGZpbGVzID0gZW50cmllc1xuICAgIC5maWx0ZXIoZmlsZSA9PiAoIWZpbGUuaXNEaXJlY3RvcnkoKSAmJiBmaWxlLm5hbWUuZW5kc1dpdGgoJy55YW1sJykpKVxuICAgIC5tYXAoZmlsZSA9PiAoZGlyZWN0b3J5ICsgJy8nICsgZmlsZS5uYW1lKSk7XG5cbiAgLy8gR2V0IHN1Yi1mb2xkZXJzIHdpdGhpbiB0aGUgY3VycmVudCBmb2xkZXJcbiAgY29uc3QgZm9sZGVycyA9IGVudHJpZXMuZmlsdGVyKGZvbGRlciA9PiBmb2xkZXIuaXNEaXJlY3RvcnkoKSk7XG5cbiAgZm9yIChjb25zdCBmb2xkZXIgb2YgZm9sZGVycykge1xuICAgIGZpbGVzLnB1c2goLi4uYXdhaXQgZmluZE1hbmlmZXN0cyhgJHtkaXJlY3Rvcnl9LyR7Zm9sZGVyLm5hbWV9YCkpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENvbnN0cnVjdE1ldGFkYXRhKGRpcmVjdG9yeTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gdGhpcyBmaWxlIGlzIG9wdGlvbmFsbHkgY3JlYXRlZCBkdXJpbmcgc3ludGhlc2lzXG4gIGNvbnN0IHAgPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCAnY29uc3RydWN0LW1ldGFkYXRhLmpzb24nKTtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocCkgPyBwIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBzeW50aGVzaXppbmcgYW4gYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2l6ZWRBcHAge1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBtYW5pZmVzdHMgcHJvZHVjZWQgYnkgdGhlIGFwcC5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0czogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3QgbWV0YWRhdGEgZmlsZSAoaWYgZXhpc3RzKS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdE1ldGFkYXRhPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbXBvcnRzKHNwZWM6IHN0cmluZyk6IEltcG9ydFNwZWMge1xuICBjb25zdCBzcGxpdEltcG9ydCA9IHNwZWMuc3BsaXQoUFJFRklYX0RFTElNKTtcblxuICAvLyBrOHNAeC55LnpcbiAgLy8gY3JkLnlhbWxcbiAgLy8gdXJsLmNvbS9jcmQueWFtbFxuICBpZiAoc3BsaXRJbXBvcnQubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogc3BlYyxcbiAgICB9O1xuICB9XG5cbiAgLy8gY3JkOj1jcmQueWFtbFxuICAvLyBjcmQ6PXVybC5jb20vY3JkLnlhbWxcbiAgaWYgKHNwbGl0SW1wb3J0Lmxlbmd0aCA9PT0gMikge1xuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGVOYW1lUHJlZml4OiBzcGxpdEltcG9ydFswXSxcbiAgICAgIHNvdXJjZTogc3BsaXRJbXBvcnRbMV0sXG4gICAgfTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHBhcnNlIGltcG9ydCBzcGVjaWZpY2F0aW9uLiBTeW50YXggaXMgW05BTUU6PV1TUEVDJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoQW5kRW5jb2RlKGlucHV0OiBzdHJpbmcsIGFsZ29yaXRobTogc3RyaW5nID0gJ3NoYTI1NicsIGVuY29kaW5nOiBCaW5hcnlUb1RleHRFbmNvZGluZyA9ICdoZXgnKTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2goYWxnb3JpdGhtKTtcbiAgaGFzaC51cGRhdGUoaW5wdXQpO1xuICByZXR1cm4gaGFzaC5kaWdlc3QoZW5jb2RpbmcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlRmlsZU5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkZXZVcmwgPSBtYXRjaENyZHNEZXZVcmwodXJsKTtcbiAgbGV0IGZpbGVuYW1lID0gdW5kZWZpbmVkO1xuXG4gIGlmIChkZXZVcmwpIHtcbiAgICBjb25zdCBsYXN0SW5kZXhPZlNsYXNoID0gZGV2VXJsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgY29uc3QgbGFzdEluZGV4T2ZBdCA9IGRldlVybC5sYXN0SW5kZXhPZignQCcpO1xuICAgIGZpbGVuYW1lID0gKGxhc3RJbmRleE9mU2xhc2ggPiAwICYmIGxhc3RJbmRleE9mQXQgPiAwKSA/IGRldlVybC5zbGljZShsYXN0SW5kZXhPZlNsYXNoKzEsIGxhc3RJbmRleE9mQXQpOiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbGFzdEluZGV4T2ZTbGFzaCA9IHVybC5sYXN0SW5kZXhPZignLycpO1xuICAgIGNvbnN0IGxhc3RJbmRleE9mWWFtbCA9IHVybC5sYXN0SW5kZXhPZignLnlhbWwnKSA+IDAgPyB1cmwubGFzdEluZGV4T2YoJy55YW1sJykgOiB1cmwubGFzdEluZGV4T2YoJy55bWwnKTtcblxuICAgIGZpbGVuYW1lID0gKGxhc3RJbmRleE9mU2xhc2ggPiAwICYmIGxhc3RJbmRleE9mWWFtbCA+IDApID8gdXJsLnNsaWNlKGxhc3RJbmRleE9mU2xhc2grMSwgbGFzdEluZGV4T2ZZYW1sKTogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFmaWxlbmFtZSkge1xuICAgIC8vIElmIHRoZSB1cmwgaWYgZm9yIGEgbG9jYWwgZmlsZSwgdGhlbiBqdXN0IGVuY29kZSB0aGUgZmlsZW5hbWUgYW5kIG5vdCB0aGUgZW50aXJlIHBhdGhcbiAgICAvLyBTaW5jZSBwYXRoIGNhbiBkZXBlbmQgb24gcGxhdGZvcm1cbiAgICBsZXQgZmlsZSA9IGV4aXN0c1N5bmModXJsKSA/IHBhdGguYmFzZW5hbWUodXJsKSA6IHVybDtcblxuICAgIGZpbGVuYW1lID0gaGFzaEFuZEVuY29kZShmaWxlKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSzhzSW1wb3J0KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlICE9PSAnazhzJyAmJiAhdmFsdWUuc3RhcnRzV2l0aCgnazhzQCcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hlbG1JbXBvcnQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJ2hlbG06JykgJiYgIXZhbHVlLmluY2x1ZGVzKCc6PWhlbG06JykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZHNBcmVQcmVzZW50KGltcHJ0czogc3RyaW5nW10gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChpbXBydHMgPz8gW10pLnNvbWUoaW1wcnQgPT4gKCFpc0s4c0ltcG9ydChpbXBydCkgJiYgIWlzSGVsbUltcG9ydChpbXBydCkpKTtcbn0iXX0=
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxzQkFnQkM7QUFFRCwwQkFPQztBQUVELDRCQXNDQztBQUVELGtDQXVEQztBQUVELHNDQUlDO0FBRUQsc0NBYUM7QUFFRCw0QkFrREM7QUFFRCxzQ0F3QkM7QUFFRCxzREFJQztBQWtCRCxvQ0FzQkM7QUFFRCxzQ0FJQztBQUVELHdDQXdCQztBQUVELGtDQU1DO0FBRUQsb0NBTUM7QUFFRCx3Q0FFQztBQWpWRCxpREFBb0Q7QUFDcEQsbUNBQTBEO0FBQzFELDJCQUEwQztBQUMxQywyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkJBQTRCO0FBQzVCLDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFFN0IsZ0RBQW9EO0FBRXBELHFEQUF5RztBQUc1RixRQUFBLFlBQVksR0FBRyxJQUFJLENBQUM7QUFFMUIsS0FBSyxVQUFVLEtBQUssQ0FBQyxPQUFlLEVBQUUsT0FBaUIsRUFBRSxFQUFFLFVBQXdCLEVBQUc7SUFDM0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNwRyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQUssRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFD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bEIsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxLQUFhO0lBQ3ZDLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBYTtJQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsTUFBNEI7SUFDekQsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIFNwYXduT3B0aW9ucyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgQmluYXJ5VG9UZXh0RW5jb2RpbmcsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcHJvbWlzZXMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAndXJsJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBJbXBvcnRTcGVjLCBWYWxpZGF0aW9uQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgbWF0Y2hDcmRzRGV2VXJsIH0gZnJvbSAnLi9pbXBvcnQvY3Jkcy1kZXYnO1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4vcGx1Z2lucy9fbWFuYWdlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUGx1Z2luLCBWYWxpZGF0aW9uQ29udGV4dCwgVmFsaWRhdGlvblJlcG9ydCwgVmFsaWRhdGlvbiB9IGZyb20gJy4vcGx1Z2lucy92YWxpZGF0aW9uJztcbmltcG9ydCB7IFNhZmVSZXZpdmVyIH0gZnJvbSAnLi9yZXZpdmVyJztcblxuZXhwb3J0IGNvbnN0IFBSRUZJWF9ERUxJTSA9ICc6PSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGVsbChwcm9ncmFtOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdID0gW10sIG9wdGlvbnM6IFNwYXduT3B0aW9ucyA9IHsgfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNvbW1hbmQgPSBgXCIke3Byb2dyYW19ICR7YXJncy5qb2luKCcgJyl9XCIgYXQgJHtwYXRoLnJlc29sdmUob3B0aW9ucy5jd2Q/LnRvU3RyaW5nKCkgPz8gJy4nKX1gO1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24ocHJvZ3JhbSwgYXJncywgeyBzdGRpbzogWydpbmhlcml0JywgJ3BpcGUnLCAnaW5oZXJpdCddLCAuLi5vcHRpb25zIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXk8QnVmZmVyPigpO1xuICAgIGNoaWxkLnN0ZG91dD8ub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhLnB1c2goY2h1bmspKTtcblxuICAgIGNoaWxkLm9uY2UoJ2Vycm9yJywgZXJyID0+IGtvKG5ldyBFcnJvcihgY29tbWFuZCAke2NvbW1hbmR9IGZhaWxlZDogJHtlcnJ9YCkpKTtcbiAgICBjaGlsZC5vbmNlKCdleGl0JywgY29kZSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2soQnVmZmVyLmNvbmNhdChkYXRhKS50b1N0cmluZygndXRmLTgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga28obmV3IEVycm9yKGBjb21tYW5kICR7Y29tbWFuZH0gcmV0dXJuZWQgYSBub24temVybyBleGl0IGNvZGUgJHtjb2RlfWApKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBta2R0ZW1wKGNsb3N1cmU6IChkaXI6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPikge1xuICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGs4cy0nKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2xvc3VyZSh3b3JrZGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUod29ya2Rpcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bnRoQXBwKGNvbW1hbmQ6IHN0cmluZywgb3V0ZGlyOiBzdHJpbmcsIHN0ZG91dDogYm9vbGVhbiwgbWV0YWRhdGE6IGJvb2xlYW4pOiBQcm9taXNlPFN5bnRoZXNpemVkQXBwPiB7XG4gIGlmICghc3Rkb3V0KSB7XG4gICAgY29uc29sZS5sb2coJ1N5bnRoZXNpemluZyBhcHBsaWNhdGlvbicpO1xuICB9XG4gIGF3YWl0IHNoZWxsKGNvbW1hbmQsIFtdLCB7XG4gICAgc2hlbGw6IHRydWUsXG4gICAgZW52OiB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIENESzhTX09VVERJUjogb3V0ZGlyLFxuICAgICAgLy8gcmVjb3JkIG1ldGFkYXRhIHNvIHRoYXQgdGhlIHZhbGlkYXRpb24gcmVwb3J0XG4gICAgICAvLyBoYXMgY29udHJ1Y3QgYXdhcmUgY29udGV4dC5cbiAgICAgIENESzhTX1JFQ09SRF9DT05TVFJVQ1RfTUVUQURBVEE6IHByb2Nlc3MuZW52LkNESzhTX1JFQ09SRF9DT05TVFJVQ1RfTUVUQURBVEEgPz8gKG1ldGFkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJyksXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFhd2FpdCBmcy5wYXRoRXhpc3RzKG91dGRpcikpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFUlJPUjogc3ludGhlc2lzIGZhaWxlZCwgYXBwIGV4cGVjdGVkIHRvIGNyZWF0ZSBcIiR7b3V0ZGlyfVwiYCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIGNvbnN0IHlhbWxGaWxlcyA9IGF3YWl0IGZpbmRNYW5pZmVzdHMob3V0ZGlyKTtcbiAgaWYgKHlhbWxGaWxlcz8ubGVuZ3RoKSB7XG4gICAgaWYgKCFzdGRvdXQpIHtcbiAgICAgIGZvciAoY29uc3QgeWFtbEZpbGUgb2YgeWFtbEZpbGVzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIC0gJHt5YW1sRmlsZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCFmb3VuZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ05vIG1hbmlmZXN0cyBzeW50aGVzaXplZCcpO1xuICB9XG5cbiAgY29uc3QgY29uc3RydWN0TWV0YWRhdGEgPSBmaW5kQ29uc3RydWN0TWV0YWRhdGEob3V0ZGlyKTtcblxuICByZXR1cm4geyBtYW5pZmVzdHM6IHlhbWxGaWxlcywgY29uc3RydWN0TWV0YWRhdGEgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlQXBwKFxuICBhcHA6IFN5bnRoZXNpemVkQXBwLFxuICBzdGRvdXQ6IGJvb2xlYW4sXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uQ29uZmlnW10sXG4gIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsXG4gIHJlcG9ydHNGaWxlPzogc3RyaW5nKSB7XG5cbiAgY29uc3QgdmFsaWRhdG9yczogeyBwbHVnaW46IFZhbGlkYXRpb247IGNvbnRleHQ6IFZhbGlkYXRpb25Db250ZXh0IH1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuICAgIGNvbnN0IHsgcGx1Z2luLCBjb250ZXh0IH0gPSBWYWxpZGF0aW9uUGx1Z2luLmxvYWQodmFsaWRhdGlvbiwgYXBwLCBzdGRvdXQsIHBsdWdpbk1hbmFnZXIpO1xuICAgIHZhbGlkYXRvcnMucHVzaCh7IHBsdWdpbiwgY29udGV4dCB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlcG9ydHM6IFZhbGlkYXRpb25SZXBvcnRbXSA9IFtdO1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc29sZS5sb2coJ1BlcmZvcm1pbmcgdmFsaWRhdGlvbnMnKTtcblxuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgYXdhaXQgdmFsaWRhdG9yLnBsdWdpbi52YWxpZGF0ZSh2YWxpZGF0b3IuY29udGV4dCk7XG4gICAgY29uc3QgcmVwb3J0ID0gdmFsaWRhdG9yLmNvbnRleHQucmVwb3J0O1xuICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIHJlcG9ydC5zdWNjZXNzO1xuICAgIHJlcG9ydHMucHVzaChyZXBvcnQpO1xuICB9XG5cbiAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb25zIGZpbmlzaGVkJyk7XG5cbiAgLy8gbm93IHdlIGNhbiBwcmludCB0aGVtLiB3ZSBkb24ndCBpbmNyZW1lbnRhbGx5IHByaW50XG4gIC8vIHNvIHRvIG5vdCBjbHV0dGVyIHRoZSB0ZXJtaW5hbCBpbiBjYXNlIG9mIGVycm9ycy5cbiAgZm9yIChjb25zdCByZXBvcnQgb2YgcmVwb3J0cykge1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBjb25zb2xlLmxvZyhyZXBvcnQudG9TdHJpbmcoKSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG5cbiAgaWYgKHJlcG9ydHNGaWxlKSB7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhyZXBvcnRzRmlsZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHdyaXRlIHZhbGlkYXRpb24gcmVwb3J0cyBmaWxlLiBBbHJlYWR5IGV4aXN0czogJHtyZXBvcnRzRmlsZX1gKTtcbiAgICB9XG4gICAgLy8gd3JpdGUgdGhlIHJlcG9ydHMgaW4gSlNPTiB0byBhIGZpbGVcbiAgICBmcy53cml0ZUZpbGVTeW5jKHJlcG9ydHNGaWxlLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICByZXBvcnRzOiByZXBvcnRzLm1hcChyID0+IHIudG9Kc29uKCkpLFxuICAgIH0sIG51bGwsIDIpKTtcbiAgfVxuXG4gIC8vIGV4aXQgd2l0aCBmYWlsdXJlIGlmIGFueSByZXBvcnQgcmVzdWx0ZWQgaW4gYSBmYWlsdXJlXG4gIGlmICghc3VjY2Vzcykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1ZhbGlkYXRpb24gZmFpbGVkLiBTZWUgYWJvdmUgcmVwb3J0cyBmb3IgZGV0YWlscycpO1xuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9ucyBlbmRlZCBzdWNjZXNmdWxseScpO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VKc29uKHRleHQ6IHN0cmluZywgcmV2aXZlcjogU2FmZVJldml2ZXIpOiBhbnkge1xuICBjb25zdCBqc29uID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgcmV2aXZlci5zYW5pdGl6ZShqc29uKTtcbiAgcmV0dXJuIGpzb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGFyc2VZYW1sKHRleHQ6IHN0cmluZywgcmV2aXZlcjogU2FmZVJldml2ZXIpOiBhbnlbXSB7XG5cbiAgLy8gcGFyc2VBbGxEb2N1bWVudHMgZG9lc250IGFjY2VwdCBhIHJldml2ZXJcbiAgLy8gc28gd2UgZmlyc3QgcGFyc2Ugbm9ybWFsbHkgYW5kIHRoYW4gdHJhbnNmb3JtXG4gIC8vIHRvIEpTIHVzaW5nIHRoZSByZXZpdmVyLlxuICBjb25zdCBwYXJzZWQgPSB5YW1sLnBhcnNlQWxsRG9jdW1lbnRzKHRleHQpO1xuICBjb25zdCBkb2NzID0gW107XG4gIGZvciAoY29uc3QgZG9jIG9mIHBhcnNlZCkge1xuICAgIGNvbnN0IGpzb24gPSBkb2MudG9KUygpO1xuICAgIHJldml2ZXIuc2FuaXRpemUoanNvbik7XG4gICAgZG9jcy5wdXNoKGpzb24pO1xuICB9XG4gIHJldHVybiBkb2NzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gIGxldCBjbGllbnQ6IHR5cGVvZiBodHRwIHwgdHlwZW9mIGh0dHBzO1xuICBjb25zdCBwcm90byA9IHBhcnNlKHVybCkucHJvdG9jb2w7XG5cbiAgaWYgKCFwcm90byB8fCBwcm90byA9PT0gJ2ZpbGU6Jykge1xuICAgIHJldHVybiBmcy5yZWFkRmlsZSh1cmwsICd1dGYtOCcpO1xuICB9XG5cbiAgc3dpdGNoIChwcm90bykge1xuICAgIGNhc2UgJ2h0dHBzOic6XG4gICAgICBjbGllbnQgPSBodHRwcztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnaHR0cDonOlxuICAgICAgY2xpZW50ID0gaHR0cDtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgcHJvdG9jb2wgJHtwcm90b31gKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxID0gY2xpZW50LmdldCh1cmwsIHJlcyA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcy5zdGF0dXNDb2RlKSB7XG4gICAgICAgIGNhc2UgMjAwOiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBBcnJheTxCdWZmZXI+KCk7XG4gICAgICAgICAgcmVzLm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YS5wdXNoKGNodW5rKSk7XG4gICAgICAgICAgcmVzLm9uY2UoJ2VuZCcsICgpID0+IG9rKEJ1ZmZlci5jb25jYXQoZGF0YSkudG9TdHJpbmcoJ3V0Zi04JykpKTtcbiAgICAgICAgICByZXMub25jZSgnZXJyb3InLCBrbyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIDMwMTpcbiAgICAgICAgY2FzZSAzMDI6IHtcbiAgICAgICAgICBpZiAocmVzLmhlYWRlcnMubG9jYXRpb24pIHtcbiAgICAgICAgICAgIG9rKGRvd25sb2FkKHJlcy5oZWFkZXJzLmxvY2F0aW9uKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGtvKG5ldyBFcnJvcihgJHtyZXMuc3RhdHVzTWVzc2FnZX06ICR7dXJsfWApKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVxLm9uY2UoJ2Vycm9yJywga28pO1xuICAgIHJlcS5lbmQoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kTWFuaWZlc3RzKGRpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAvLyBFbnN1cmUgcGF0aCBpcyB2YWxpZFxuICB0cnkge1xuICAgIGF3YWl0IHByb21pc2VzLmFjY2VzcyhkaXJlY3RvcnkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBSZWFkIFBhdGggY29udGVudHNcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyZWN0b3J5LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgLy8gR2V0IGZpbGVzIHdpdGhpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgY29uc3QgZmlsZXMgPSBlbnRyaWVzXG4gICAgLmZpbHRlcihmaWxlID0+ICghZmlsZS5pc0RpcmVjdG9yeSgpICYmIGZpbGUubmFtZS5lbmRzV2l0aCgnLnlhbWwnKSkpXG4gICAgLm1hcChmaWxlID0+IChkaXJlY3RvcnkgKyAnLycgKyBmaWxlLm5hbWUpKTtcblxuICAvLyBHZXQgc3ViLWZvbGRlcnMgd2l0aGluIHRoZSBjdXJyZW50IGZvbGRlclxuICBjb25zdCBmb2xkZXJzID0gZW50cmllcy5maWx0ZXIoZm9sZGVyID0+IGZvbGRlci5pc0RpcmVjdG9yeSgpKTtcblxuICBmb3IgKGNvbnN0IGZvbGRlciBvZiBmb2xkZXJzKSB7XG4gICAgZmlsZXMucHVzaCguLi5hd2FpdCBmaW5kTWFuaWZlc3RzKGAke2RpcmVjdG9yeX0vJHtmb2xkZXIubmFtZX1gKSk7XG4gIH1cblxuICByZXR1cm4gZmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29uc3RydWN0TWV0YWRhdGEoZGlyZWN0b3J5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyB0aGlzIGZpbGUgaXMgb3B0aW9uYWxseSBjcmVhdGVkIGR1cmluZyBzeW50aGVzaXNcbiAgY29uc3QgcCA9IHBhdGguam9pbihkaXJlY3RvcnksICdjb25zdHJ1Y3QtbWV0YWRhdGEuanNvbicpO1xuICByZXR1cm4gZnMuZXhpc3RzU3luYyhwKSA/IHAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIHN5bnRoZXNpemluZyBhbiBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aGVzaXplZEFwcCB7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG1hbmlmZXN0cyBwcm9kdWNlZCBieSB0aGUgYXBwLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuaWZlc3RzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBtZXRhZGF0YSBmaWxlIChpZiBleGlzdHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0TWV0YWRhdGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUltcG9ydHMoc3BlYzogc3RyaW5nKTogSW1wb3J0U3BlYyB7XG4gIGNvbnN0IHNwbGl0SW1wb3J0ID0gc3BlYy5zcGxpdChQUkVGSVhfREVMSU0pO1xuXG4gIC8vIGs4c0B4LnkuelxuICAvLyBjcmQueWFtbFxuICAvLyB1cmwuY29tL2NyZC55YW1sXG4gIGlmIChzcGxpdEltcG9ydC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBzcGVjLFxuICAgIH07XG4gIH1cblxuICAvLyBjcmQ6PWNyZC55YW1sXG4gIC8vIGNyZDo9dXJsLmNvbS9jcmQueWFtbFxuICBpZiAoc3BsaXRJbXBvcnQubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZU5hbWVQcmVmaXg6IHNwbGl0SW1wb3J0WzBdLFxuICAgICAgc291cmNlOiBzcGxpdEltcG9ydFsxXSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgaW1wb3J0IHNwZWNpZmljYXRpb24uIFN5bnRheCBpcyBbTkFNRTo9XVNQRUMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hBbmRFbmNvZGUoaW5wdXQ6IHN0cmluZywgYWxnb3JpdGhtOiBzdHJpbmcgPSAnc2hhMjU2JywgZW5jb2Rpbmc6IEJpbmFyeVRvVGV4dEVuY29kaW5nID0gJ2hleCcpOiBzdHJpbmcge1xuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChhbGdvcml0aG0pO1xuICBoYXNoLnVwZGF0ZShpbnB1dCk7XG4gIHJldHVybiBoYXNoLmRpZ2VzdChlbmNvZGluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVGaWxlTmFtZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRldlVybCA9IG1hdGNoQ3Jkc0RldlVybCh1cmwpO1xuICBsZXQgZmlsZW5hbWUgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGRldlVybCkge1xuICAgIGNvbnN0IGxhc3RJbmRleE9mU2xhc2ggPSBkZXZVcmwubGFzdEluZGV4T2YoJy8nKTtcbiAgICBjb25zdCBsYXN0SW5kZXhPZkF0ID0gZGV2VXJsLmxhc3RJbmRleE9mKCdAJyk7XG4gICAgZmlsZW5hbWUgPSAobGFzdEluZGV4T2ZTbGFzaCA+IDAgJiYgbGFzdEluZGV4T2ZBdCA+IDApID8gZGV2VXJsLnNsaWNlKGxhc3RJbmRleE9mU2xhc2grMSwgbGFzdEluZGV4T2ZBdCk6IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0SW5kZXhPZlNsYXNoID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgY29uc3QgbGFzdEluZGV4T2ZZYW1sID0gdXJsLmxhc3RJbmRleE9mKCcueWFtbCcpID4gMCA/IHVybC5sYXN0SW5kZXhPZignLnlhbWwnKSA6IHVybC5sYXN0SW5kZXhPZignLnltbCcpO1xuXG4gICAgZmlsZW5hbWUgPSAobGFzdEluZGV4T2ZTbGFzaCA+IDAgJiYgbGFzdEluZGV4T2ZZYW1sID4gMCkgPyB1cmwuc2xpY2UobGFzdEluZGV4T2ZTbGFzaCsxLCBsYXN0SW5kZXhPZllhbWwpOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIWZpbGVuYW1lKSB7XG4gICAgLy8gSWYgdGhlIHVybCBpZiBmb3IgYSBsb2NhbCBmaWxlLCB0aGVuIGp1c3QgZW5jb2RlIHRoZSBmaWxlbmFtZSBhbmQgbm90IHRoZSBlbnRpcmUgcGF0aFxuICAgIC8vIFNpbmNlIHBhdGggY2FuIGRlcGVuZCBvbiBwbGF0Zm9ybVxuICAgIGxldCBmaWxlID0gZXhpc3RzU3luYyh1cmwpID8gcGF0aC5iYXNlbmFtZSh1cmwpIDogdXJsO1xuXG4gICAgZmlsZW5hbWUgPSBoYXNoQW5kRW5jb2RlKGZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNLOHNJbXBvcnQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodmFsdWUgIT09ICdrOHMnICYmICF2YWx1ZS5zdGFydHNXaXRoKCdrOHNAJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGVsbUltcG9ydCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghdmFsdWUuc3RhcnRzV2l0aCgnaGVsbTonKSAmJiAhdmFsdWUuaW5jbHVkZXMoJzo9aGVsbTonKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3Jkc0FyZVByZXNlbnQoaW1wcnRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gKGltcHJ0cyA/PyBbXSkuc29tZShpbXBydCA9PiAoIWlzSzhzSW1wb3J0KGltcHJ0KSAmJiAhaXNIZWxtSW1wb3J0KGltcHJ0KSkpO1xufSJdfQ==
package/package.json CHANGED
@@ -49,7 +49,7 @@
49
49
  "organization": false
50
50
  },
51
51
  "devDependencies": {
52
- "@cdk8s/projen-common": "^0.0.665",
52
+ "@cdk8s/projen-common": "^0.0.677",
53
53
  "@stylistic/eslint-plugin": "^2",
54
54
  "@types/fs-extra": "^8",
55
55
  "@types/jest": "^27",
@@ -65,23 +65,23 @@
65
65
  "fast-glob": "^3.3.3",
66
66
  "jest": "^27",
67
67
  "jest-junit": "^16",
68
- "projen": "^0.99.12",
68
+ "projen": "^0.99.21",
69
69
  "ts-jest": "^27",
70
70
  "ts-node": "^10.9.2",
71
- "typescript": "~4.9.5",
71
+ "typescript": "~5.9",
72
72
  "typescript-json-schema": "^0.67.1"
73
73
  },
74
74
  "dependencies": {
75
75
  "@types/node": "^16",
76
76
  "ajv": "^8.18.0",
77
- "cdk8s": "^2.70.47",
78
- "cdk8s-plus-28": "^2.5.6",
79
- "codemaker": "^1.126.0",
77
+ "cdk8s": "^2.70.51",
78
+ "cdk8s-plus-33": "^2.4.38",
79
+ "codemaker": "^1.127.0",
80
80
  "colors": "1.4.0",
81
- "constructs": "^10.4.5",
81
+ "constructs": "^10.5.1",
82
82
  "fs-extra": "^8",
83
- "jsii-pacmak": "^1.126.0",
84
- "jsii-rosetta": "^5.9.30",
83
+ "jsii-pacmak": "^1.127.0",
84
+ "jsii-rosetta": "^5.9.36",
85
85
  "jsii-srcmak": "0.1.1319",
86
86
  "json2jsii": "0.5.12",
87
87
  "semver": "^7.7.4",
@@ -106,7 +106,7 @@
106
106
  "publishConfig": {
107
107
  "access": "public"
108
108
  },
109
- "version": "2.204.9",
109
+ "version": "2.205.1",
110
110
  "jest": {
111
111
  "coverageProvider": "v8",
112
112
  "testMatch": [
@@ -31,7 +31,7 @@ exports.post = options => {
31
31
  }
32
32
 
33
33
  if (mvn_cdk8s_plus.endsWith('.jar')) {
34
- execSync(`mvn install:install-file -Dfile=${mvn_cdk8s_plus} -DgroupId=org.cdk8s -DartifactId=cdk8s-plus-28 -Dversion=${cdk8s_plus_version} -Dpackaging=jar`)
34
+ execSync(`mvn install:install-file -Dfile=${mvn_cdk8s_plus} -DgroupId=org.cdk8s -DartifactId=cdk8s-plus-33 -Dversion=${cdk8s_plus_version} -Dpackaging=jar`)
35
35
  }
36
36
 
37
37
  execSync(`mvn install`);
@@ -15,7 +15,7 @@
15
15
  </dependency>
16
16
  <dependency>
17
17
  <groupId>org.cdk8s</groupId>
18
- <artifactId>cdk8s-plus-28</artifactId>
18
+ <artifactId>cdk8s-plus-33</artifactId>
19
19
  <version>{{ cdk8s_plus_version }}</version>
20
20
  </dependency>
21
21
  <dependency>
@@ -17,16 +17,16 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "cdk8s": "^{{ cdk8s_core_version }}",
20
- "cdk8s-plus-28": "^{{ cdk8s_plus_version }}",
20
+ "cdk8s-plus-33": "^{{ cdk8s_plus_version }}",
21
21
  "constructs": "^{{ constructs_version }}"
22
22
  },
23
23
  "devDependencies": {
24
24
  "cdk8s-cli": "{{ cdk8s_cli_spec }}",
25
25
  "@types/node": "^14",
26
- "@types/jest": "^27",
27
- "jest": "^27",
28
- "ts-jest": "^27",
29
- "typescript": "^4.9.5",
26
+ "@types/jest": "^29",
27
+ "jest": "^29",
28
+ "ts-jest": "^29",
29
+ "typescript": "5.9.x",
30
30
  "ts-node": "^10"
31
31
  }
32
32
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "alwaysStrict": true,
4
- "charset": "utf8",
5
4
  "declaration": true,
6
5
  "experimentalDecorators": true,
7
6
  "inlineSourceMap": true,