node-backpack 0.0.556 → 0.0.557

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.
@@ -109,7 +109,6 @@ class Attributions {
109
109
  .join('\n');
110
110
  }
111
111
  generateAttributions() {
112
- var _a, _b;
113
112
  if (this.dependencies.length === 0) {
114
113
  return new Map();
115
114
  }
@@ -131,7 +130,7 @@ class Attributions {
131
130
  // sometimes the dependency might not exist from fetching information globally,
132
131
  // so we try fetching a concrete package. this can happen for example when
133
132
  // two different major versions exist of the same dependency.
134
- const info = (_a = infos[key]) !== null && _a !== void 0 ? _a : fetchInfos(dep.path, [pkg(dep)])[key];
133
+ const info = infos[key] ?? fetchInfos(dep.path, [pkg(dep)])[key];
135
134
  if (!info) {
136
135
  // make sure all dependencies are accounted for.
137
136
  throw new Error(`Unable to locate license information for ${key} (${dep.path})`);
@@ -141,7 +140,7 @@ class Attributions {
141
140
  // text. this seems strange, disabling that for now.
142
141
  // see https://github.com/davglass/license-checker/blob/master/lib/license-files.js#L9
143
142
  // note that a non existing license file is ok as long as the license type could be extracted.
144
- const licenseFile = ((_b = info.licenseFile) === null || _b === void 0 ? void 0 : _b.toLowerCase().endsWith('.md')) ? undefined : info.licenseFile;
143
+ const licenseFile = info.licenseFile?.toLowerCase().endsWith('.md') ? undefined : info.licenseFile;
145
144
  const licenseText = licenseFile ? fs.readFileSync(licenseFile, { encoding: 'utf-8' }) : undefined;
146
145
  // the licenses key comes in different types but we convert it here
147
146
  // to always be an array.
@@ -149,7 +148,7 @@ class Attributions {
149
148
  attributions.set(key, {
150
149
  package: key,
151
150
  url: `https://www.npmjs.com/package/${dep.name}/v/${dep.version}`,
152
- licenses: licenses !== null && licenses !== void 0 ? licenses : [],
151
+ licenses: licenses ?? [],
153
152
  licenseText,
154
153
  noticeText,
155
154
  });
@@ -158,4 +157,4 @@ class Attributions {
158
157
  }
159
158
  }
160
159
  exports.Attributions = Attributions;
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2F0dHJpYnV0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvX2F0dHJpYnV0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFFL0IscUNBQWlDO0FBRWpDLDJDQUF5RTtBQUd6RSxNQUFNLHFCQUFxQixHQUFHLHNCQUFzQixDQUFDO0FBdUNyRDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQVl2QixZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLG1FQUFtRTtRQUNuRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMs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QyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNuRyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVsRyxtRUFBbUU7WUFDbkUseUJBQXlCO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBRS9HLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNwQixPQUFPLEVBQUUsR0FBRztnQkFDWixHQUFHLEVBQUUsaUNBQWlDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRTtnQkFDakUsUUFBUSxFQUFFLFFBQVEsYUFBUixRQUFRLGNBQVIsUUFBUSxHQUFJLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUVGO0FBMUtELG9DQTBLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUluZm8gfSBmcm9tICdsaWNlbnNlLWNoZWNrZXInO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuL19zaGVsbCc7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tICcuL2J1bmRsZSc7XG5pbXBvcnQgeyBWaW9sYXRpb24sIFZpb2xhdGlvblR5cGUsIFZpb2xhdGlvbnNSZXBvcnQgfSBmcm9tICcuL3Zpb2xhdGlvbic7XG5cblxuY29uc3QgQVRUUklCVVRJT05fU0VQQVJBVE9SID0gJ1xcbi0tLS0tLS0tLS0tLS0tLS1cXG4nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBBdHRyaWJ1dGlvbnNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0aW9uc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIHJvb3QgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUGFja2FnZSBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM6IFBhY2thZ2VbXTtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgZGlyZWN0b3J5IHVuZGVyd2hpY2ggYWxsIGRlcGVuZGVuY2llcyBsaXZlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzUm9vdDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgbm90aWNlIGZpbGUgdG8gY3JlYXRlZCAvIHZhbGlkYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFsbG93ZWQgbGljZW5zZXMuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogRGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoaXMgcGF0dGVybiB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gYXR0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYEF0dHJpYnV0aW9uc2AgcmVwcmVzZW50cyBhbiBhdHRyaWJ1dGlvbnMgZmlsZSBjb250YWluaW5nIHRoaXJkLXBhcnR5IGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGlvbnMge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBQYWNrYWdlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZExpY2Vuc2VzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmNpZXNSb290OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQXR0cmlidXRpb25zUHJvcHMpIHtcbiAgICB0aGlzLnBhY2thZ2VEaXIgPSBwcm9wcy5wYWNrYWdlRGlyO1xuICAgIHRoaXMucGFja2FnZU5hbWUgPSBwcm9wcy5wYWNrYWdlTmFtZTtcbiAgICB0aGlzLmZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgcHJvcHMuZmlsZVBhdGgpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gcHJvcHMuZGVwZW5kZW5jaWVzLmZpbHRlcihkID0+ICFwcm9wcy5leGNsdWRlIHx8ICFuZXcgUmVnRXhwKHByb3BzLmV4Y2x1ZGUpLnRlc3QoZC5uYW1lKSk7XG4gICAgdGhpcy5hbGxvd2VkTGljZW5zZXMgPSBwcm9wcy5hbGxvd2VkTGljZW5zZXMubWFwKGwgPT4gbC50b0xvd2VyQ2FzZSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llc1Jvb3QgPSBwcm9wcy5kZXBlbmRlbmNpZXNSb290O1xuXG4gICAgLy8gd2l0aG91dCB0aGUgZ2VuZXJhdGVkIG5vdGljZSBjb250ZW50LCB0aGlzIG9iamVjdCBpcyBwcmV0dHkgbXVjaFxuICAgIC8vIHVzZWxlc3MsIHNvIGxldHMgZ2VuZXJhdGUgdGhvc2Ugb2YgdGhlIGJhdC5cbiAgICB0aGlzLmF0dHJpYnV0aW9ucyA9IHRoaXMuZ2VuZXJhdGVBdHRyaWJ1dGlvbnMoKTtcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLnJlbmRlcih0aGlzLmF0dHJpYnV0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGN1cnJlbnQgbm90aWNlIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG5ldmVyIHRocm93cy4gVGhlIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5zcGVjdGluZyB0aGUgcmVwb3J0IHJldHVybmVkIGFuZCBhY3QgYWNjb3JkaW5hZ2x5LlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZpb2xhdGlvbnNSZXBvcnQge1xuXG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBjb25zdCByZWxOb3RpY2VQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLnBhY2thZ2VEaXIsIHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgY29uc3QgZml4ID0gKCkgPT4gdGhpcy5mbHVzaCgpO1xuXG4gICAgY29uc3QgbWlzc2luZyA9ICFmcy5leGlzdHNTeW5jKHRoaXMuZmlsZVBhdGgpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG1pc3NpbmcgPyB1bmRlZmluZWQgOiBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBjb25zdCBvdXRkYXRlZCA9IGF0dHJpYnV0aW9ucyAhPT0gdW5kZWZpbmVkICYmIGF0dHJpYnV0aW9ucyAhPT0gdGhpcy5jb250ZW50O1xuXG4gICAgaWYgKG1pc3NpbmcpIHtcbiAgICAgIHZpb2xhdGlvbnMucHVzaCh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTUlTU0lOR19OT1RJQ0UsIG1lc3NhZ2U6IGAke3JlbE5vdGljZVBhdGh9IGlzIG1pc3NpbmdgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgaWYgKG91dGRhdGVkKSB7XG4gICAgICB2aW9sYXRpb25zLnB1c2goeyB0eXBlOiBWaW9sYXRpb25UeXBlLk9VVERBVEVEX0FUVFJJQlVUSU9OUywgbWVzc2FnZTogYCR7cmVsTm90aWNlUGF0aH0gaXMgb3V0ZGF0ZWRgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZExpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5hbGxvd2VkTGljZW5zZXMuaW5jbHVkZXMoYS5saWNlbnNlc1swXS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgIC5tYXAoYSA9PiAoeyB0eXBlOiBWaW9sYXRpb25UeXBlLklOVkFMSURfTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBhbiBpbnZhbGlkIGxpY2Vuc2U6ICR7YS5saWNlbnNlc1swXX1gIH0pKTtcblxuICAgIGNvbnN0IG5vTGljZW5zZTogVmlvbGF0aW9uW10gPSBBcnJheS5mcm9tKHRoaXMuYXR0cmlidXRpb25zLnZhbHVlcygpKVxuICAgICAgLmZpbHRlcihhID0+IGEubGljZW5zZXMubGVuZ3RoID09PSAwKVxuICAgICAgLm1hcChhID0+ICh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTk9fTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBubyBsaWNlbnNlYCB9KSk7XG5cbiAgICBjb25zdCBtdWx0aUxpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA+IDEpXG4gICAgICAubWFwKGEgPT4gKHsgdHlwZTogVmlvbGF0aW9uVHlwZS5NVUxUSVBMRV9MSUNFTlNFLCBtZXNzYWdlOiBgRGVwZW5kZW5jeSAke2EucGFja2FnZX0gaGFzIG11bHRpcGxlIGxpY2Vuc2VzOiAke2EubGljZW5zZXN9YCB9KSk7XG5cbiAgICB2aW9sYXRpb25zLnB1c2goLi4uaW52YWxpZExpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5ub0xpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5tdWx0aUxpY2Vuc2UpO1xuXG4gICAgcmV0dXJuIG5ldyBWaW9sYXRpb25zUmVwb3J0KHZpb2xhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHRoZSBnZW5lcmF0ZWQgbm90aWNlIGZpbGUgdG8gZGlzay5cbiAgICovXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZmlsZVBhdGgsIHRoaXMuY29udGVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcihhdHRyaWJ1dGlvbnM6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPik6IHN0cmluZyB7XG5cbiAgICBjb25zdCBjb250ZW50ID0gW107XG5cbiAgICBpZiAoYXR0cmlidXRpb25zLnNpemUgPiAwKSB7XG4gICAgICBjb250ZW50LnB1c2goYFRoZSAke3RoaXMucGFja2FnZU5hbWV9IHBhY2thZ2UgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBzb2Z0d2FyZS9saWNlbnNpbmc6YCk7XG4gICAgICBjb250ZW50LnB1c2goJycpO1xuICAgIH1cblxuICAgIC8vIHNvcnQgdGhlIGF0dHJpYnV0aW9ucyBzbyB0aGUgZmlsZSBkb2Vzbid0IGNoYW5nZSBkdWUgdG8gb3JkZXJpbmcgaXNzdWVzXG4gICAgY29uc3Qgb3JkZXJlZCA9IEFycmF5LmZyb20oYXR0cmlidXRpb25zLnZhbHVlcygpKS5zb3J0KChhMSwgYTIpID0+IGExLnBhY2thZ2UubG9jYWxlQ29tcGFyZShhMi5wYWNrYWdlKSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dHIgb2Ygb3JkZXJlZCkge1xuICAgICAgY29udGVudC5wdXNoKGAqKiAke2F0dHIucGFja2FnZX0gLSAke2F0dHIudXJsfSB8ICR7YXR0ci5saWNlbnNlc1swXX1gKTtcblxuICAgICAgLy8gcHJlZmVyIG5vdGljZSBvdmVyIGxpY2Vuc2VcbiAgICAgIGlmIChhdHRyLm5vdGljZVRleHQpIHtcbiAgICAgICAgY29udGVudC5wdXNoKGF0dHIubm90aWNlVGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKGF0dHIubGljZW5zZVRleHQpIHtcbiAgICAgICAgY29udGVudC5wdXNoKGF0dHIubGljZW5zZVRleHQpO1xuICAgICAgfVxuICAgICAgY29udGVudC5wdXNoKEFUVFJJQlVUSU9OX1NFUEFSQVRPUik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRlbnRcbiAgICAgIC8vIHNpbmNlIHdlIGFyZSBlbWJlZGRpbmcgZXh0ZXJuYWwgZmlsZXMsIHRob3NlIGNhbiBkaWZmZXJlbnQgbGluZVxuICAgICAgLy8gZW5kaW5ncywgc28gd2Ugc3RhbmRhcmRpemUgdG8gTEYuXG4gICAgICAubWFwKGwgPT4gbC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQXR0cmlidXRpb25zKCk6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPiB7XG5cbiAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3QgcGtnID0gKGQ6IFBhY2thZ2UpID0+IGAke2QubmFtZX1AJHtkLnZlcnNpb259YDtcblxuICAgIGNvbnN0IHBhY2thZ2VzID0gdGhpcy5kZXBlbmRlbmNpZXMubWFwKGQgPT4gcGtnKGQpKTtcblxuICAgIGZ1bmN0aW9uIGZldGNoSW5mb3MoX2N3ZDogc3RyaW5nLCBfcGFja2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAvLyB3ZSBkb24ndCB1c2UgdGhlIHByb2dyYW1tYXRpYyBBUEkgc2luY2UgaXQgb25seSBvZmZlcnMgYW4gYXN5bmMgQVBJLlxuICAgICAgLy8gcHJlZmVyIHRvIHN0YXkgc3luYyBmb3Igbm93IHNpbmNlIGl0cyBlYXNpZXIgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgdG9vbGluZy5cbiAgICAgIC8vIHdpbGwgb2ZmZXIgYW4gYXN5bmMgQVBJIGZ1cnRoZXIgZG93biB0aGUgcm9hZC5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtyZXF1aXJlLnJlc29sdmUoJ2xpY2Vuc2UtY2hlY2tlci9iaW4vbGljZW5zZS1jaGVja2VyJyl9IC0tanNvbiAtLXBhY2thZ2VzIFwiJHtfcGFja2FnZXMuam9pbignOycpfVwiYDtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHNoZWxsKGNvbW1hbmQsIHsgY3dkOiBfY3dkLCBxdWlldDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgLy8gZmlyc3QgcnVuIGEgZ2xvYmFsIGNvbW1hbmQgdG8gZmV0Y2ggYXMgbXVjaCBpbmZvcm1hdGlvbiBpbiBvbmUgc2hvdFxuICAgIGNvbnN0IGluZm9zID0gZmV0Y2hJbmZvcyh0aGlzLmRlcGVuZGVuY2llc1Jvb3QsIHBhY2thZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb25zdCBrZXkgPSBwa2coZGVwKTtcblxuICAgICAgLy8gc29tZXRpbWVzIHRoZSBkZXBlbmRlbmN5IG1pZ2h0IG5vdCBleGlzdCBmcm9tIGZldGNoaW5nIGluZm9ybWF0aW9uIGdsb2JhbGx5LFxuICAgICAgLy8gc28gd2UgdHJ5IGZldGNoaW5nIGEgY29uY3JldGUgcGFja2FnZS4gdGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIHdoZW5cbiAgICAgIC8vIHR3byBkaWZmZXJlbnQgbWFqb3IgdmVyc2lvbnMgZXhpc3Qgb2YgdGhlIHNhbWUgZGVwZW5kZW5jeS5cbiAgICAgIGNvbnN0IGluZm86IE1vZHVsZUluZm8gPSBpbmZvc1trZXldID8/IGZldGNoSW5mb3MoZGVwLnBhdGgsIFtwa2coZGVwKV0pW2tleV07XG5cbiAgICAgIGlmICghaW5mbykge1xuICAgICAgICAvLyBtYWtlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvci5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9jYXRlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yICR7a2V5fSAoJHtkZXAucGF0aH0pYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdGljZVRleHQgPSBpbmZvLm5vdGljZUZpbGUgPyBmcy5yZWFkRmlsZVN5bmMoaW5mby5ub3RpY2VGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24sIHRoZSBsaWNlbnNlLWNoZWNrZXIgcGFja2FnZSBmYWxscyBiYWNrIHRvIHRoZSBSRUFETUUubWQgZmlsZSBvZiB0aGUgcGFja2FnZSBmb3IgbGljZW5zZVxuICAgICAgLy8gdGV4dC4gdGhpcyBzZWVtcyBzdHJhbmdlLCBkaXNhYmxpbmcgdGhhdCBmb3Igbm93LlxuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZnbGFzcy9saWNlbnNlLWNoZWNrZXIvYmxvYi9tYXN0ZXIvbGliL2xpY2Vuc2UtZmlsZXMuanMjTDlcbiAgICAgIC8vIG5vdGUgdGhhdCBhIG5vbiBleGlzdGluZyBsaWNlbnNlIGZpbGUgaXMgb2sgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSB0eXBlIGNvdWxkIGJlIGV4dHJhY3RlZC5cbiAgICAgIGNvbnN0IGxpY2Vuc2VGaWxlID0gaW5mby5saWNlbnNlRmlsZT8udG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLm1kJykgPyB1bmRlZmluZWQgOiBpbmZvLmxpY2Vuc2VGaWxlO1xuICAgICAgY29uc3QgbGljZW5zZVRleHQgPSBsaWNlbnNlRmlsZSA/IGZzLnJlYWRGaWxlU3luYyhsaWNlbnNlRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSA6IHVuZGVmaW5lZDtcblxuICAgICAgLy8gdGhlIGxpY2Vuc2VzIGtleSBjb21lcyBpbiBkaWZmZXJlbnQgdHlwZXMgYnV0IHdlIGNvbnZlcnQgaXQgaGVyZVxuICAgICAgLy8gdG8gYWx3YXlzIGJlIGFuIGFycmF5LlxuICAgICAgY29uc3QgbGljZW5zZXMgPSAhaW5mby5saWNlbnNlcyA/IHVuZGVmaW5lZCA6IChBcnJheS5pc0FycmF5KGluZm8ubGljZW5zZXMpID8gaW5mby5saWNlbnNlcyA6IFtpbmZvLmxpY2Vuc2VzXSk7XG5cbiAgICAgIGF0dHJpYnV0aW9ucy5zZXQoa2V5LCB7XG4gICAgICAgIHBhY2thZ2U6IGtleSxcbiAgICAgICAgdXJsOiBgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvJHtkZXAubmFtZX0vdi8ke2RlcC52ZXJzaW9ufWAsXG4gICAgICAgIGxpY2Vuc2VzOiBsaWNlbnNlcyA/PyBbXSxcbiAgICAgICAgbGljZW5zZVRleHQsXG4gICAgICAgIG5vdGljZVRleHQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRpb25zO1xuICB9XG5cbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGlvbiBvZiBhIHNwZWNpZmljIGRlcGVuZGVuY3kuXG4gKi9cbmludGVyZmFjZSBBdHRyaWJ1dGlvbiB7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGVkIHBhY2thZ2UgKG5hbWUgKyB2ZXJzaW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZTogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIHRvIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYWNrYWdlIGxpY2Vuc2VzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgc29tZSBwYWNrYWdlcyB3aWxsIG1heSBoYXZlIG11bHRpcGxlIGxpY2Vuc2VzLFxuICAgKiB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBhcnJheS4gSW4gc3VjaCBjYXNlcywgdGhlIGxpY2Vuc2VcbiAgICogdmFsaWRhdGlvbiB3aWxsIGZhaWwgc2luY2Ugd2UgY3VycmVudGx5IGRpc2FsbG93IHRoaXMuXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBQYWNrYWdlIGxpY2Vuc2UgY29udGVudC5cbiAgICpcbiAgICogSW4gY2FzZSBhIHBhY2thZ2UgaGFzIG11bHRpcGxlIGxpY2Vuc2VzLCB0aGlzIHdpbGxcbiAgICogY29udGFpbi4uLm9uZSBvZiB0aGVtLiBJdCBjdXJyZW50bHkgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICogb25lIHNpbmNlIGl0IHdpbGwgbm90IHBhc3MgdmFsaWRhdGlvbiBhbnl3YXkuXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlVGV4dD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhY2thZ2Ugbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlVGV4dD86IHN0cmluZztcbn1cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2F0dHJpYnV0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvX2F0dHJpYnV0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFFL0IscUNBQWlDO0FBRWpDLDJDQUF5RTtBQUd6RSxNQUFNLHFCQUFxQixHQUFHLHNCQUFzQixDQUFDO0FBdUNyRDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQVl2QixZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLG1FQUFtRTtRQUNuRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMs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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ25HLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWxHLG1FQUFtRTtZQUNuRSx5QkFBeUI7WUFDekIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFL0csWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxHQUFHO2dCQUNaLEdBQUcsRUFBRSxpQ0FBaUMsR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFO2dCQUNqRSxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUVGO0FBMUtELG9DQTBLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUluZm8gfSBmcm9tICdsaWNlbnNlLWNoZWNrZXInO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuL19zaGVsbCc7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tICcuL2J1bmRsZSc7XG5pbXBvcnQgeyBWaW9sYXRpb24sIFZpb2xhdGlvblR5cGUsIFZpb2xhdGlvbnNSZXBvcnQgfSBmcm9tICcuL3Zpb2xhdGlvbic7XG5cblxuY29uc3QgQVRUUklCVVRJT05fU0VQQVJBVE9SID0gJ1xcbi0tLS0tLS0tLS0tLS0tLS1cXG4nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBBdHRyaWJ1dGlvbnNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0aW9uc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIHJvb3QgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUGFja2FnZSBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM6IFBhY2thZ2VbXTtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgZGlyZWN0b3J5IHVuZGVyd2hpY2ggYWxsIGRlcGVuZGVuY2llcyBsaXZlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzUm9vdDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgbm90aWNlIGZpbGUgdG8gY3JlYXRlZCAvIHZhbGlkYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFsbG93ZWQgbGljZW5zZXMuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogRGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoaXMgcGF0dGVybiB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gYXR0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYEF0dHJpYnV0aW9uc2AgcmVwcmVzZW50cyBhbiBhdHRyaWJ1dGlvbnMgZmlsZSBjb250YWluaW5nIHRoaXJkLXBhcnR5IGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGlvbnMge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBQYWNrYWdlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZExpY2Vuc2VzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmNpZXNSb290OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQXR0cmlidXRpb25zUHJvcHMpIHtcbiAgICB0aGlzLnBhY2thZ2VEaXIgPSBwcm9wcy5wYWNrYWdlRGlyO1xuICAgIHRoaXMucGFja2FnZU5hbWUgPSBwcm9wcy5wYWNrYWdlTmFtZTtcbiAgICB0aGlzLmZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgcHJvcHMuZmlsZVBhdGgpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gcHJvcHMuZGVwZW5kZW5jaWVzLmZpbHRlcihkID0+ICFwcm9wcy5leGNsdWRlIHx8ICFuZXcgUmVnRXhwKHByb3BzLmV4Y2x1ZGUpLnRlc3QoZC5uYW1lKSk7XG4gICAgdGhpcy5hbGxvd2VkTGljZW5zZXMgPSBwcm9wcy5hbGxvd2VkTGljZW5zZXMubWFwKGwgPT4gbC50b0xvd2VyQ2FzZSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llc1Jvb3QgPSBwcm9wcy5kZXBlbmRlbmNpZXNSb290O1xuXG4gICAgLy8gd2l0aG91dCB0aGUgZ2VuZXJhdGVkIG5vdGljZSBjb250ZW50LCB0aGlzIG9iamVjdCBpcyBwcmV0dHkgbXVjaFxuICAgIC8vIHVzZWxlc3MsIHNvIGxldHMgZ2VuZXJhdGUgdGhvc2Ugb2YgdGhlIGJhdC5cbiAgICB0aGlzLmF0dHJpYnV0aW9ucyA9IHRoaXMuZ2VuZXJhdGVBdHRyaWJ1dGlvbnMoKTtcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLnJlbmRlcih0aGlzLmF0dHJpYnV0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGN1cnJlbnQgbm90aWNlIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG5ldmVyIHRocm93cy4gVGhlIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5zcGVjdGluZyB0aGUgcmVwb3J0IHJldHVybmVkIGFuZCBhY3QgYWNjb3JkaW5hZ2x5LlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZpb2xhdGlvbnNSZXBvcnQge1xuXG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBjb25zdCByZWxOb3RpY2VQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLnBhY2thZ2VEaXIsIHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgY29uc3QgZml4ID0gKCkgPT4gdGhpcy5mbHVzaCgpO1xuXG4gICAgY29uc3QgbWlzc2luZyA9ICFmcy5leGlzdHNTeW5jKHRoaXMuZmlsZVBhdGgpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG1pc3NpbmcgPyB1bmRlZmluZWQgOiBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBjb25zdCBvdXRkYXRlZCA9IGF0dHJpYnV0aW9ucyAhPT0gdW5kZWZpbmVkICYmIGF0dHJpYnV0aW9ucyAhPT0gdGhpcy5jb250ZW50O1xuXG4gICAgaWYgKG1pc3NpbmcpIHtcbiAgICAgIHZpb2xhdGlvbnMucHVzaCh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTUlTU0lOR19OT1RJQ0UsIG1lc3NhZ2U6IGAke3JlbE5vdGljZVBhdGh9IGlzIG1pc3NpbmdgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgaWYgKG91dGRhdGVkKSB7XG4gICAgICB2aW9sYXRpb25zLnB1c2goeyB0eXBlOiBWaW9sYXRpb25UeXBlLk9VVERBVEVEX0FUVFJJQlVUSU9OUywgbWVzc2FnZTogYCR7cmVsTm90aWNlUGF0aH0gaXMgb3V0ZGF0ZWRgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZExpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5hbGxvd2VkTGljZW5zZXMuaW5jbHVkZXMoYS5saWNlbnNlc1swXS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgIC5tYXAoYSA9PiAoeyB0eXBlOiBWaW9sYXRpb25UeXBlLklOVkFMSURfTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBhbiBpbnZhbGlkIGxpY2Vuc2U6ICR7YS5saWNlbnNlc1swXX1gIH0pKTtcblxuICAgIGNvbnN0IG5vTGljZW5zZTogVmlvbGF0aW9uW10gPSBBcnJheS5mcm9tKHRoaXMuYXR0cmlidXRpb25zLnZhbHVlcygpKVxuICAgICAgLmZpbHRlcihhID0+IGEubGljZW5zZXMubGVuZ3RoID09PSAwKVxuICAgICAgLm1hcChhID0+ICh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTk9fTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBubyBsaWNlbnNlYCB9KSk7XG5cbiAgICBjb25zdCBtdWx0aUxpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA+IDEpXG4gICAgICAubWFwKGEgPT4gKHsgdHlwZTogVmlvbGF0aW9uVHlwZS5NVUxUSVBMRV9MSUNFTlNFLCBtZXNzYWdlOiBgRGVwZW5kZW5jeSAke2EucGFja2FnZX0gaGFzIG11bHRpcGxlIGxpY2Vuc2VzOiAke2EubGljZW5zZXN9YCB9KSk7XG5cbiAgICB2aW9sYXRpb25zLnB1c2goLi4uaW52YWxpZExpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5ub0xpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5tdWx0aUxpY2Vuc2UpO1xuXG4gICAgcmV0dXJuIG5ldyBWaW9sYXRpb25zUmVwb3J0KHZpb2xhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHRoZSBnZW5lcmF0ZWQgbm90aWNlIGZpbGUgdG8gZGlzay5cbiAgICovXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZmlsZVBhdGgsIHRoaXMuY29udGVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcihhdHRyaWJ1dGlvbnM6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPik6IHN0cmluZyB7XG5cbiAgICBjb25zdCBjb250ZW50ID0gW107XG5cbiAgICBpZiAoYXR0cmlidXRpb25zLnNpemUgPiAwKSB7XG4gICAgICBjb250ZW50LnB1c2goYFRoZSAke3RoaXMucGFja2FnZU5hbWV9IHBhY2thZ2UgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBzb2Z0d2FyZS9saWNlbnNpbmc6YCk7XG4gICAgICBjb250ZW50LnB1c2goJycpO1xuICAgIH1cblxuICAgIC8vIHNvcnQgdGhlIGF0dHJpYnV0aW9ucyBzbyB0aGUgZmlsZSBkb2Vzbid0IGNoYW5nZSBkdWUgdG8gb3JkZXJpbmcgaXNzdWVzXG4gICAgY29uc3Qgb3JkZXJlZCA9IEFycmF5LmZyb20oYXR0cmlidXRpb25zLnZhbHVlcygpKS5zb3J0KChhMSwgYTIpID0+IGExLnBhY2thZ2UubG9jYWxlQ29tcGFyZShhMi5wYWNrYWdlKSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dHIgb2Ygb3JkZXJlZCkge1xuICAgICAgY29udGVudC5wdXNoKGAqKiAke2F0dHIucGFja2FnZX0gLSAke2F0dHIudXJsfSB8ICR7YXR0ci5saWNlbnNlc1swXX1gKTtcblxuICAgICAgLy8gcHJlZmVyIG5vdGljZSBvdmVyIGxpY2Vuc2VcbiAgICAgIGlmIChhdHRyLm5vdGljZVRleHQpIHtcbiAgICAgICAgY29udGVudC5wdXNoKGF0dHIubm90aWNlVGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKGF0dHIubGljZW5zZVRleHQpIHtcbiAgICAgICAgY29udGVudC5wdXNoKGF0dHIubGljZW5zZVRleHQpO1xuICAgICAgfVxuICAgICAgY29udGVudC5wdXNoKEFUVFJJQlVUSU9OX1NFUEFSQVRPUik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRlbnRcbiAgICAgIC8vIHNpbmNlIHdlIGFyZSBlbWJlZGRpbmcgZXh0ZXJuYWwgZmlsZXMsIHRob3NlIGNhbiBkaWZmZXJlbnQgbGluZVxuICAgICAgLy8gZW5kaW5ncywgc28gd2Ugc3RhbmRhcmRpemUgdG8gTEYuXG4gICAgICAubWFwKGwgPT4gbC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQXR0cmlidXRpb25zKCk6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPiB7XG5cbiAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3QgcGtnID0gKGQ6IFBhY2thZ2UpID0+IGAke2QubmFtZX1AJHtkLnZlcnNpb259YDtcblxuICAgIGNvbnN0IHBhY2thZ2VzID0gdGhpcy5kZXBlbmRlbmNpZXMubWFwKGQgPT4gcGtnKGQpKTtcblxuICAgIGZ1bmN0aW9uIGZldGNoSW5mb3MoX2N3ZDogc3RyaW5nLCBfcGFja2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAvLyB3ZSBkb24ndCB1c2UgdGhlIHByb2dyYW1tYXRpYyBBUEkgc2luY2UgaXQgb25seSBvZmZlcnMgYW4gYXN5bmMgQVBJLlxuICAgICAgLy8gcHJlZmVyIHRvIHN0YXkgc3luYyBmb3Igbm93IHNpbmNlIGl0cyBlYXNpZXIgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgdG9vbGluZy5cbiAgICAgIC8vIHdpbGwgb2ZmZXIgYW4gYXN5bmMgQVBJIGZ1cnRoZXIgZG93biB0aGUgcm9hZC5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtyZXF1aXJlLnJlc29sdmUoJ2xpY2Vuc2UtY2hlY2tlci9iaW4vbGljZW5zZS1jaGVja2VyJyl9IC0tanNvbiAtLXBhY2thZ2VzIFwiJHtfcGFja2FnZXMuam9pbignOycpfVwiYDtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHNoZWxsKGNvbW1hbmQsIHsgY3dkOiBfY3dkLCBxdWlldDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgLy8gZmlyc3QgcnVuIGEgZ2xvYmFsIGNvbW1hbmQgdG8gZmV0Y2ggYXMgbXVjaCBpbmZvcm1hdGlvbiBpbiBvbmUgc2hvdFxuICAgIGNvbnN0IGluZm9zID0gZmV0Y2hJbmZvcyh0aGlzLmRlcGVuZGVuY2llc1Jvb3QsIHBhY2thZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb25zdCBrZXkgPSBwa2coZGVwKTtcblxuICAgICAgLy8gc29tZXRpbWVzIHRoZSBkZXBlbmRlbmN5IG1pZ2h0IG5vdCBleGlzdCBmcm9tIGZldGNoaW5nIGluZm9ybWF0aW9uIGdsb2JhbGx5LFxuICAgICAgLy8gc28gd2UgdHJ5IGZldGNoaW5nIGEgY29uY3JldGUgcGFja2FnZS4gdGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIHdoZW5cbiAgICAgIC8vIHR3byBkaWZmZXJlbnQgbWFqb3IgdmVyc2lvbnMgZXhpc3Qgb2YgdGhlIHNhbWUgZGVwZW5kZW5jeS5cbiAgICAgIGNvbnN0IGluZm86IE1vZHVsZUluZm8gPSBpbmZvc1trZXldID8/IGZldGNoSW5mb3MoZGVwLnBhdGgsIFtwa2coZGVwKV0pW2tleV07XG5cbiAgICAgIGlmICghaW5mbykge1xuICAgICAgICAvLyBtYWtlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvci5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9jYXRlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yICR7a2V5fSAoJHtkZXAucGF0aH0pYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdGljZVRleHQgPSBpbmZvLm5vdGljZUZpbGUgPyBmcy5yZWFkRmlsZVN5bmMoaW5mby5ub3RpY2VGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24sIHRoZSBsaWNlbnNlLWNoZWNrZXIgcGFja2FnZSBmYWxscyBiYWNrIHRvIHRoZSBSRUFETUUubWQgZmlsZSBvZiB0aGUgcGFja2FnZSBmb3IgbGljZW5zZVxuICAgICAgLy8gdGV4dC4gdGhpcyBzZWVtcyBzdHJhbmdlLCBkaXNhYmxpbmcgdGhhdCBmb3Igbm93LlxuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZnbGFzcy9saWNlbnNlLWNoZWNrZXIvYmxvYi9tYXN0ZXIvbGliL2xpY2Vuc2UtZmlsZXMuanMjTDlcbiAgICAgIC8vIG5vdGUgdGhhdCBhIG5vbiBleGlzdGluZyBsaWNlbnNlIGZpbGUgaXMgb2sgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSB0eXBlIGNvdWxkIGJlIGV4dHJhY3RlZC5cbiAgICAgIGNvbnN0IGxpY2Vuc2VGaWxlID0gaW5mby5saWNlbnNlRmlsZT8udG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLm1kJykgPyB1bmRlZmluZWQgOiBpbmZvLmxpY2Vuc2VGaWxlO1xuICAgICAgY29uc3QgbGljZW5zZVRleHQgPSBsaWNlbnNlRmlsZSA/IGZzLnJlYWRGaWxlU3luYyhsaWNlbnNlRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSA6IHVuZGVmaW5lZDtcblxuICAgICAgLy8gdGhlIGxpY2Vuc2VzIGtleSBjb21lcyBpbiBkaWZmZXJlbnQgdHlwZXMgYnV0IHdlIGNvbnZlcnQgaXQgaGVyZVxuICAgICAgLy8gdG8gYWx3YXlzIGJlIGFuIGFycmF5LlxuICAgICAgY29uc3QgbGljZW5zZXMgPSAhaW5mby5saWNlbnNlcyA/IHVuZGVmaW5lZCA6IChBcnJheS5pc0FycmF5KGluZm8ubGljZW5zZXMpID8gaW5mby5saWNlbnNlcyA6IFtpbmZvLmxpY2Vuc2VzXSk7XG5cbiAgICAgIGF0dHJpYnV0aW9ucy5zZXQoa2V5LCB7XG4gICAgICAgIHBhY2thZ2U6IGtleSxcbiAgICAgICAgdXJsOiBgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvJHtkZXAubmFtZX0vdi8ke2RlcC52ZXJzaW9ufWAsXG4gICAgICAgIGxpY2Vuc2VzOiBsaWNlbnNlcyA/PyBbXSxcbiAgICAgICAgbGljZW5zZVRleHQsXG4gICAgICAgIG5vdGljZVRleHQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRpb25zO1xuICB9XG5cbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGlvbiBvZiBhIHNwZWNpZmljIGRlcGVuZGVuY3kuXG4gKi9cbmludGVyZmFjZSBBdHRyaWJ1dGlvbiB7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGVkIHBhY2thZ2UgKG5hbWUgKyB2ZXJzaW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZTogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIHRvIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYWNrYWdlIGxpY2Vuc2VzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgc29tZSBwYWNrYWdlcyB3aWxsIG1heSBoYXZlIG11bHRpcGxlIGxpY2Vuc2VzLFxuICAgKiB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBhcnJheS4gSW4gc3VjaCBjYXNlcywgdGhlIGxpY2Vuc2VcbiAgICogdmFsaWRhdGlvbiB3aWxsIGZhaWwgc2luY2Ugd2UgY3VycmVudGx5IGRpc2FsbG93IHRoaXMuXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBQYWNrYWdlIGxpY2Vuc2UgY29udGVudC5cbiAgICpcbiAgICogSW4gY2FzZSBhIHBhY2thZ2UgaGFzIG11bHRpcGxlIGxpY2Vuc2VzLCB0aGlzIHdpbGxcbiAgICogY29udGFpbi4uLm9uZSBvZiB0aGVtLiBJdCBjdXJyZW50bHkgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICogb25lIHNpbmNlIGl0IHdpbGwgbm90IHBhc3MgdmFsaWRhdGlvbiBhbnl3YXkuXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlVGV4dD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhY2thZ2Ugbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlVGV4dD86IHN0cmluZztcbn1cbiJdfQ==
package/lib/api/bundle.js CHANGED
@@ -44,17 +44,16 @@ const DEFAULT_ALLOWED_LICENSES = [
44
44
  */
45
45
  class Bundle {
46
46
  constructor(props) {
47
- var _a, _b, _c, _d, _e;
48
47
  this.packageDir = props.packageDir;
49
- this.noticePath = (_a = props.attributionsFile) !== null && _a !== void 0 ? _a : 'THIRD_PARTY_LICENSES';
48
+ this.noticePath = props.attributionsFile ?? 'THIRD_PARTY_LICENSES';
50
49
  this.manifest = fs.readJsonSync(path.join(this.packageDir, 'package.json'));
51
- this.externals = (_b = props.externals) !== null && _b !== void 0 ? _b : {};
52
- this.resources = (_c = props.resources) !== null && _c !== void 0 ? _c : {};
50
+ this.externals = props.externals ?? {};
51
+ this.resources = props.resources ?? {};
53
52
  this.test = props.test;
54
- this.allowedLicenses = (_d = props.allowedLicenses) !== null && _d !== void 0 ? _d : DEFAULT_ALLOWED_LICENSES;
53
+ this.allowedLicenses = props.allowedLicenses ?? DEFAULT_ALLOWED_LICENSES;
55
54
  this.dontAttribute = props.dontAttribute;
56
55
  this.entryPoints = {};
57
- const entryPoints = (_e = props.entryPoints) !== null && _e !== void 0 ? _e : (this.manifest.main ? [this.manifest.main] : []);
56
+ const entryPoints = props.entryPoints ?? (this.manifest.main ? [this.manifest.main] : []);
58
57
  if (entryPoints.length === 0) {
59
58
  throw new Error('Must configure at least 1 entrypoint');
60
59
  }
@@ -75,8 +74,7 @@ class Bundle {
75
74
  * returned report and act accordingly.
76
75
  */
77
76
  validate(options = {}) {
78
- var _a;
79
- const fix = (_a = options.fix) !== null && _a !== void 0 ? _a : false;
77
+ const fix = options.fix ?? false;
80
78
  // first validate
81
79
  const circularImports = this.validateCircularImports();
82
80
  const resources = this.validateResources();
@@ -124,8 +122,7 @@ class Bundle {
124
122
  * Returns the location of the tarball.
125
123
  */
126
124
  pack(options = {}) {
127
- var _a;
128
- const target = (_a = options.target) !== null && _a !== void 0 ? _a : this.packageDir;
125
+ const target = options.target ?? this.packageDir;
129
126
  const report = this.validate();
130
127
  if (!report.success) {
131
128
  throw new Error(`Unable to pack due to validation errors.\n\n${report.summary}`);
@@ -196,15 +193,14 @@ class Bundle {
196
193
  return this._attributions;
197
194
  }
198
195
  findExternalDependencyVersion(name) {
199
- var _a, _b;
200
196
  const versions = new Set();
201
197
  // external dependencies will not exist in the dependencies list
202
198
  // since esbuild skips over them. but they will exist as a dependency of
203
199
  // one of them (or of us)
204
200
  for (const pkg of [...this.dependencies, this.createPackage(this.packageDir)]) {
205
201
  const manifest = fs.readJSONSync(path.join(pkg.path, 'package.json'));
206
- const runtime = ((_a = manifest.dependencies) !== null && _a !== void 0 ? _a : {})[name];
207
- const optional = ((_b = manifest.optionalDependencies) !== null && _b !== void 0 ? _b : {})[name];
202
+ const runtime = (manifest.dependencies ?? {})[name];
203
+ const optional = (manifest.optionalDependencies ?? {})[name];
208
204
  const pin = (version) => (version.startsWith('^') || version.startsWith('~')) ? version.substring(1) : version;
209
205
  if (runtime) {
210
206
  versions.add(pin(runtime));
@@ -236,7 +232,6 @@ class Bundle {
236
232
  return { path: packageDir, name: manifest.name, version: manifest.version };
237
233
  }
238
234
  esbuild() {
239
- var _a, _b;
240
235
  const bundle = esbuild.buildSync({
241
236
  entryPoints: this.entryPoints,
242
237
  bundle: true,
@@ -246,7 +241,7 @@ class Bundle {
246
241
  metafile: true,
247
242
  treeShaking: true,
248
243
  absWorkingDir: this.packageDir,
249
- external: [...((_a = this.externals.dependencies) !== null && _a !== void 0 ? _a : []), ...((_b = this.externals.optionalDependencies) !== null && _b !== void 0 ? _b : [])],
244
+ external: [...(this.externals.dependencies ?? []), ...(this.externals.optionalDependencies ?? [])],
250
245
  write: false,
251
246
  outdir: this.packageDir,
252
247
  allowOverwrite: true,
@@ -295,31 +290,28 @@ class Bundle {
295
290
  return this.attributions.validate().violations;
296
291
  }
297
292
  addExternals(manifest) {
298
- var _a, _b, _c, _d;
299
293
  // external dependencies should be specified as runtime dependencies
300
- for (const external of (_a = this.externals.dependencies) !== null && _a !== void 0 ? _a : []) {
294
+ for (const external of this.externals.dependencies ?? []) {
301
295
  const version = this.findExternalDependencyVersion(external);
302
- manifest.dependencies = (_b = manifest.dependencies) !== null && _b !== void 0 ? _b : {};
296
+ manifest.dependencies = manifest.dependencies ?? {};
303
297
  manifest.dependencies[external] = version;
304
298
  }
305
299
  // external dependencies should be specified as optional dependencies
306
- for (const external of (_c = this.externals.optionalDependencies) !== null && _c !== void 0 ? _c : []) {
300
+ for (const external of this.externals.optionalDependencies ?? []) {
307
301
  const version = this.findExternalDependencyVersion(external);
308
- manifest.optionalDependencies = (_d = manifest.optionalDependencies) !== null && _d !== void 0 ? _d : {};
302
+ manifest.optionalDependencies = manifest.optionalDependencies ?? {};
309
303
  manifest.optionalDependencies[external] = version;
310
304
  }
311
305
  }
312
306
  removeDependencies(manifest) {
313
- var _a;
314
307
  for (const [d, v] of Object.entries(this.manifest.dependencies)) {
315
- manifest.devDependencies = (_a = manifest.devDependencies) !== null && _a !== void 0 ? _a : {};
308
+ manifest.devDependencies = manifest.devDependencies ?? {};
316
309
  manifest.devDependencies[d] = v;
317
310
  delete manifest.dependencies[d];
318
311
  }
319
312
  }
320
313
  writeOutputs(workDir) {
321
- var _a;
322
- for (const output of (_a = this.bundle.outputFiles) !== null && _a !== void 0 ? _a : []) {
314
+ for (const output of this.bundle.outputFiles ?? []) {
323
315
  const out = output.path.replace(this.packageDir, workDir);
324
316
  fs.writeFileSync(out, output.contents);
325
317
  }
@@ -349,4 +341,4 @@ function longestCommonParent(paths) {
349
341
  }
350
342
  return paths.reduce(_longestCommonParent);
351
343
  }
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtQztBQUNuQyw2Q0FBK0I7QUFDL0IsbURBQStDO0FBQy9DLHFDQUFpQztBQUNqQywyQ0FBeUU7QUFFekUsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixZQUFZO0lBQ1osS0FBSztJQUNMLGNBQWM7SUFDZCxLQUFLO0lBQ0wsY0FBYztJQUNkLE1BQU07Q0FDUCxDQUFDO0FBd0hGOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBbUJqQixZQUFZLEtBQWtCOztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUksc0JBQXNCLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBQSxLQUFLLENBQUMsU0FBUyxtQ0FBSSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFBLEtBQUssQ0FBQyxTQUFTLG1DQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFBLEtBQUssQ0FBQyxlQUFlLG1DQUFJLHdCQUF3QixDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztR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cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBBdHRyaWJ1dGlvbnMgfSBmcm9tICcuL19hdHRyaWJ1dGlvbnMnO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuL19zaGVsbCc7XG5pbXBvcnQgeyBWaW9sYXRpb24sIFZpb2xhdGlvblR5cGUsIFZpb2xhdGlvbnNSZXBvcnQgfSBmcm9tICcuL3Zpb2xhdGlvbic7XG5cbmNvbnN0IERFRkFVTFRfQUxMT1dFRF9MSUNFTlNFUyA9IFtcbiAgJ0FwYWNoZS0yLjAnLFxuICAnTUlUJyxcbiAgJ0JTRC0zLUNsYXVzZScsXG4gICdJU0MnLFxuICAnQlNELTItQ2xhdXNlJyxcbiAgJzBCU0QnLFxuXTtcblxuLyoqXG4gKiBCdW5kbGluZyBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZVByb3BzIHtcblxuICAvKipcbiAgICogRGlyZWN0b3J5IHdoZXJlIHRoZSBwYWNrYWdlIHRvIGJ1bmRsZSBpcyBsb2NhdGVkIGF0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGVudHJ5LXBvaW50cyB0byBidW5kbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlICdtYWluJyBmaWxlIGFzIHNwZWNpZmllZCBpbiBwYWNrYWdlLmpzb24uXG4gICAqL1xuICByZWFkb25seSBlbnRyeVBvaW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGF0dHJpYnV0aW9ucyBmaWxlIHRoYXQgd2lsbCBiZSBjcmVhdGVkIC8gdmFsaWRhdGVkLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIHBhY2thZ2UgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnVEhJUkRfUEFSVFlfTElDRU5TRVMnXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGlvbnNGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBwYWNrYWdlcyB0aGF0IGNhbm5vdCBiZSBidW5kbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dGVybmFsIHJlZmVyZW5jZXMuXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbHM/OiBFeHRlcm5hbHM7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIHJlc291cmNlcyB0aGF0IG5lZWQgdG8gYmUgZW1iZWRkZWQgaW4gdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogVGhlc2Ugd2lsbCBiZSBjb3BpZWQgb3ZlciB0byB0aGUgYXBwcm9wcmlhdGUgcGF0aHMgYmVmb3JlIHBhY2thZ2luZy5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlcz86IHtbc3JjOiBzdHJpbmddOiBzdHJpbmd9O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbGljZW5zZXMgdGhhdCBhcmUgYWxsb3dlZCBmb3IgYnVuZGxpbmcuXG4gICAqIElmIGFueSBkZXBlbmRlbmN5IGNvbnRhaW5zIGEgbGljZW5zZSBub3QgaW4gdGhpcyBsaXN0LCBidW5kbGluZyB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBsaXN0XG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGFja2FnZXMgbWF0Y2hpbmcgdGhpcyByZWd1bGFyIGV4cHJlc3Npb24gd2lsbCBiZSBleGNsdWRlZCBmcm9tIGF0dHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9udEF0dHJpYnV0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogQmFzaWMgc2FuaXR5IGNoZWNrIHRvIHJ1biBhZ2FpbnN0IHRoZSBjcmVhdGVkIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEJ1bmRsZS5wYWNrYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVQYWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHBhY2thZ2UgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGZpeCBhbnkgKGZpeGFibGUpIHZpb2xhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhY2thZ2Ugb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2Uge1xuICAvKipcbiAgICogUGF0aCBvZiB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbHMge1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBsaXN0ZWQgaW4gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb25cbiAgICogb2YgdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGxpc3RlZCBpbiB0aGUgYG9wdGlvbmFsRGVwZW5kZW5jaWVzYCBzZWN0aW9uXG4gICAqIG9mIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbmFsRGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBCdW5kbGUgY2xhc3MgdG8gdmFsaWRhdGUgYW5kIHBhY2sgbm9kZWpzIGJ1bmRsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGUge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFuaWZlc3Q6IGFueTtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpY2VQYXRoOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwYWNrYWdlRGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50cnlQb2ludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgZXh0ZXJuYWxzOiBFeHRlcm5hbHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VzOiB7W3NyYzogc3RyaW5nXTogc3RyaW5nfTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkTGljZW5zZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvbnRBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdD86IHN0cmluZztcblxuICBwcml2YXRlIF9idW5kbGU/OiBlc2J1aWxkLkJ1aWxkUmVzdWx0O1xuICBwcml2YXRlIF9kZXBlbmRlbmNpZXM/OiBQYWNrYWdlW107XG4gIHByaXZhdGUgX2RlcGVuZGVuY2llc1Jvb3Q/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfYXR0cmlidXRpb25zPzogQXR0cmlidXRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBCdW5kbGVQcm9wcykge1xuICAgIHRoaXMucGFja2FnZURpciA9IHByb3BzLnBhY2thZ2VEaXI7XG4gICAgdGhpcy5ub3RpY2VQYXRoID0gcHJvcHMuYXR0cmlidXRpb25zRmlsZSA/PyAnVEhJUkRfUEFSVFlfTElDRU5TRVMnO1xuICAgIHRoaXMubWFuaWZlc3QgPSBmcy5yZWFkSnNvblN5bmMocGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICB0aGlzLmV4dGVybmFscyA9IHByb3BzLmV4dGVybmFscyA/PyB7fTtcbiAgICB0aGlzLnJlc291cmNlcyA9IHByb3BzLnJlc291cmNlcyA/PyB7fTtcbiAgICB0aGlzLnRlc3QgPSBwcm9wcy50ZXN0O1xuICAgIHRoaXMuYWxsb3dlZExpY2Vuc2VzID0gcHJvcHMuYWxsb3dlZExpY2Vuc2VzID8/IERFRkFVTFRfQUxMT1dFRF9MSUNFTlNFUztcbiAgICB0aGlzLmRvbnRBdHRyaWJ1dGUgPSBwcm9wcy5kb250QXR0cmlidXRlO1xuICAgIHRoaXMuZW50cnlQb2ludHMgPSB7fTtcblxuICAgIGNvbnN0IGVudHJ5UG9pbnRzID0gcHJvcHMuZW50cnlQb2ludHMgPz8gKHRoaXMubWFuaWZlc3QubWFpbiA/IFt0aGlzLm1hbmlmZXN0Lm1haW5dIDogW10pO1xuXG4gICAgaWYgKGVudHJ5UG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IGNvbmZpZ3VyZSBhdCBsZWFzdCAxIGVudHJ5cG9pbnQnKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5cG9pbnQgb2YgZW50cnlQb2ludHMpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCBlbnRyeXBvaW50KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9jYXRlIGVudHJ5cG9pbnQ6ICR7ZW50cnlwb2ludH1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cnlQb2ludHNbZW50cnlwb2ludC5yZXBsYWNlKCcuanMnLCAnJyldID0gZW50cnlwb2ludDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGJ1bmRsZSBmb3IgdmlvbGF0aW9ucy5cbiAgICpcbiAgICogSWYgYGZpeGAgaXMgc2V0IHRvIHRydWUsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSByZW1haW5pbmdcbiAgICogdmlvbGF0aW9ucyBhZnRlciB0aGUgZml4ZXMgd2VyZSBhcHBsaWVkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBuZXZlciB0aHJvd3MuIFRoZSBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluc3BlY3RpbmcgdGhlXG4gICAqIHJldHVybmVkIHJlcG9ydCBhbmQgYWN0IGFjY29yZGluZ2x5LlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKG9wdGlvbnM6IEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyA9IHt9KTogVmlvbGF0aW9uc1JlcG9ydCB7XG5cbiAgICBjb25zdCBmaXggPSBvcHRpb25zLmZpeCA/PyBmYWxzZTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlXG4gICAgY29uc3QgY2lyY3VsYXJJbXBvcnRzID0gdGhpcy52YWxpZGF0ZUNpcmN1bGFySW1wb3J0cygpO1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMudmFsaWRhdGVSZXNvdXJjZXMoKTtcbiAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSB0aGlzLnZhbGlkYXRlQXR0cmlidXRpb25zKCk7XG5cbiAgICBjb25zdCByZXBvcnQgPSBuZXcgVmlvbGF0aW9uc1JlcG9ydChbLi4uY2lyY3VsYXJJbXBvcnRzLCAuLi5yZXNvdXJjZXMsIC4uLmF0dHJpYnV0aW9uc10pO1xuXG4gICAgaWYgKCFmaXgpIHtcbiAgICAgIHJldHVybiByZXBvcnQ7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2aW9sYXRpb24gb2YgcmVwb3J0LnZpb2xhdGlvbnMpIHtcbiAgICAgIGlmICh2aW9sYXRpb24uZml4KSB7XG4gICAgICAgIHZpb2xhdGlvbi5maXgoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZXR1cm4gdGhlIHVuIGZpeGFibGUgdmlvbGF0aW9uc1xuICAgIHJldHVybiBuZXcgVmlvbGF0aW9uc1JlcG9ydChyZXBvcnQudmlvbGF0aW9ucy5maWx0ZXIodiA9PiAhdi5maXgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0aGUgYnVuZGxlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgdG8gYSB0ZW1wIGRpcmVjdG9yeS5cbiAgICogVGhpcyBkaXJlY3RvcnkgaXMgd2hhdCB0aGUgdG9vbCB3aWxsIGVuZCB1cCBwYWNraW5nLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wIGRpcmVjdG9yeSBsb2NhdGlvbi5cbiAgICovXG4gIHB1YmxpYyB3cml0ZSgpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnYnVuZGxlLXdyaXRlLScpKTtcblxuICAgIC8vIHdlIGRlZmluaXRlbHkgZG9uJ3QgbmVlZCB0aGVzZSBkaXJlY3RvcmllcyBpbiB0aGUgcGFja2FnZVxuICAgIC8vIHNvIG5vIG5lZWQgdG8gY29weSB0aGVtIG92ZXIuXG4gICAgY29uc3QgaWdub3JlRGlyZWN0b3JpZXMgPSBbJ25vZGVfbW9kdWxlcycsICcuZ2l0J107XG5cbiAgICAvLyBjb3B5IHRoZSBlbnRpcmUgcHJvamVjdCBzaW5jZSB3ZSBhcmUgcmV0YWluaW5nIHRoZSBvcmlnaW5hbCBmaWxlcy5cbiAgICBmcy5jb3B5U3luYyh0aGlzLnBhY2thZ2VEaXIsIHRhcmdldCwgeyBmaWx0ZXI6IG4gPT4gIW4uc3BsaXQocGF0aC5zZXApLnNvbWUoKHAgPT4gaWdub3JlRGlyZWN0b3JpZXMuaW5jbHVkZXMocCkpKSB9KTtcblxuICAgIC8vIGNsb25lIHRoZSBvcmlnaW5hbCBtYW5pZmVzdCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG9cbiAgICAvLyB0byBtdXRhdGUgaXQuXG4gICAgY29uc3QgbWFuaWZlc3QgPSB7IC4uLnRoaXMubWFuaWZlc3QgfTtcblxuICAgIC8vIG1hbmlmZXN0IG11dGF0aW9uc1xuICAgIHRoaXMucmVtb3ZlRGVwZW5kZW5jaWVzKG1hbmlmZXN0KTtcbiAgICB0aGlzLmFkZEV4dGVybmFscyhtYW5pZmVzdCk7XG5cbiAgICAvLyB3cml0ZSBhcnRpZmFjdHNcbiAgICB0aGlzLndyaXRlT3V0cHV0cyh0YXJnZXQpO1xuICAgIHRoaXMud3JpdGVSZXNvdXJjZXModGFyZ2V0KTtcbiAgICB0aGlzLndyaXRlTWFuaWZlc3QodGFyZ2V0LCBtYW5pZmVzdCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBidW5kbGUgYW5kIGNyZWF0ZSB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgbG9jYXRpb24gb2YgdGhlIHRhcmJhbGwuXG4gICAqL1xuICBwdWJsaWMgcGFjayhvcHRpb25zOiBCdW5kbGVQYWNrT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcblxuICAgIGNvbnN0IHRhcmdldCA9IG9wdGlvbnMudGFyZ2V0ID8/IHRoaXMucGFja2FnZURpcjtcblxuICAgIGNvbnN0IHJlcG9ydCA9IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAoIXJlcG9ydC5zdWNjZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYWNrIGR1ZSB0byB2YWxpZGF0aW9uIGVycm9ycy5cXG5cXG4ke3JlcG9ydC5zdW1tYXJ5fWApO1xuICAgIH1cblxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhcmdldCBkb2VzbnQgZXhpc3Q6ICR7dGFyZ2V0fWApO1xuICAgIH1cblxuICAgIC8vIHJlc29sdmUgc3ltbGlua3MuXG4gICAgY29uc3QgcmVhbFRhcmdldCA9IGZzLnJlYWxwYXRoU3luYyh0YXJnZXQpO1xuXG4gICAgaWYgKCFmcy5sc3RhdFN5bmMocmVhbFRhcmdldCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUYXJnZXQgbXVzdCBiZSBhIGRpcmVjdG9yeTogJHt0YXJnZXR9YCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ1dyaXRpbmcgYnVuZGxlJyk7XG4gICAgY29uc3QgYnVuZGxlRGlyID0gdGhpcy53cml0ZSgpO1xuICAgIHRyeSB7XG5cbiAgICAgIGlmICh0aGlzLnRlc3QpIHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGAke3BhdGguam9pbihidW5kbGVEaXIsIHRoaXMudGVzdCl9YDtcbiAgICAgICAgY29uc29sZS5sb2coYFJ1bm5pbmcgc2FudGl5IHRlc3Q6ICR7Y29tbWFuZH1gKTtcbiAgICAgICAgc2hlbGwoY29tbWFuZCwgeyBjd2Q6IGJ1bmRsZURpciB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gY3JlYXRlIHRoZSB0YXJiYWxsXG4gICAgICBjb25zb2xlLmxvZygnUGFja2luZycpO1xuICAgICAgY29uc3QgdGFyYmFsbCA9IHNoZWxsKCducG0gcGFjaycsIHsgcXVpZXQ6IHRydWUsIGN3ZDogYnVuZGxlRGlyIH0pLnRyaW0oKTtcbiAgICAgIGNvbnN0IGRlc3QgPSBwYXRoLmpvaW4ocmVhbFRhcmdldCwgdGFyYmFsbCk7XG4gICAgICBmcy5jb3B5U3luYyhwYXRoLmpvaW4oYnVuZGxlRGlyLCB0YXJiYWxsKSwgZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICByZXR1cm4gZGVzdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZnMucmVtb3ZlU3luYyhidW5kbGVEaXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGJ1bmRsZSgpOiBlc2J1aWxkLkJ1aWxkUmVzdWx0IHtcbiAgICBpZiAodGhpcy5fYnVuZGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYnVuZGxlO1xuICAgIH1cbiAgICB0aGlzLl9idW5kbGUgPSB0aGlzLmVzYnVpbGQoKTtcbiAgICByZXR1cm4gdGhpcy5fYnVuZGxlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVwZW5kZW5jaWVzKCk6IFBhY2thZ2VbXSB7XG4gICAgaWYgKHRoaXMuX2RlcGVuZGVuY2llcykge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlcGVuZGVuY2llcztcbiAgICB9XG4gICAgY29uc3QgaW5wdXRzID0gT2JqZWN0LmtleXModGhpcy5idW5kbGUubWV0YWZpbGUhLmlucHV0cyk7XG4gICAgY29uc3QgcGFja2FnZXMgPSBuZXcgU2V0KEFycmF5LmZyb20oaW5wdXRzKS5tYXAoaSA9PiB0aGlzLmNsb3Nlc3RQYWNrYWdlUGF0aChwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCBpKSkpKTtcbiAgICB0aGlzLl9kZXBlbmRlbmNpZXMgPSBBcnJheS5mcm9tKHBhY2thZ2VzKS5tYXAocCA9PiB0aGlzLmNyZWF0ZVBhY2thZ2UocCkpLmZpbHRlcihkID0+IGQubmFtZSAhPT0gdGhpcy5tYW5pZmVzdC5uYW1lKTtcbiAgICByZXR1cm4gdGhpcy5fZGVwZW5kZW5jaWVzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVwZW5kZW5jaWVzUm9vdCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kZXBlbmRlbmNpZXNSb290KSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVwZW5kZW5jaWVzUm9vdDtcbiAgICB9XG4gICAgY29uc3QgbGNwID0gbG9uZ2VzdENvbW1vblBhcmVudCh0aGlzLmRlcGVuZGVuY2llcy5tYXAoZCA9PiBkLnBhdGgpKTtcbiAgICB0aGlzLl9kZXBlbmRlbmNpZXNSb290ID0gdGhpcy5jbG9zZXN0UGFja2FnZVBhdGgobGNwKTtcbiAgICByZXR1cm4gdGhpcy5fZGVwZW5kZW5jaWVzUm9vdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGF0dHJpYnV0aW9ucygpOiBBdHRyaWJ1dGlvbnMge1xuICAgIGlmICh0aGlzLl9hdHRyaWJ1dGlvbnMgPT0gbnVsbCkge1xuICAgICAgdGhpcy5fYXR0cmlidXRpb25zID0gbmV3IEF0dHJpYnV0aW9ucyh7XG4gICAgICAgIHBhY2thZ2VEaXI6IHRoaXMucGFja2FnZURpcixcbiAgICAgICAgcGFja2FnZU5hbWU6IHRoaXMubWFuaWZlc3QubmFtZSxcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMubm90aWNlUGF0aCxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiB0aGlzLmRlcGVuZGVuY2llcyxcbiAgICAgICAgZGVwZW5kZW5jaWVzUm9vdDogdGhpcy5kZXBlbmRlbmNpZXNSb290LFxuICAgICAgICBleGNsdWRlOiB0aGlzLmRvbnRBdHRyaWJ1dGUsXG4gICAgICAgIGFsbG93ZWRMaWNlbnNlczogdGhpcy5hbGxvd2VkTGljZW5zZXMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IHZlcnNpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAvLyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2lsbCBub3QgZXhpc3QgaW4gdGhlIGRlcGVuZGVuY2llcyBsaXN0XG4gICAgLy8gc2luY2UgZXNidWlsZCBza2lwcyBvdmVyIHRoZW0uIGJ1dCB0aGV5IHdpbGwgZXhpc3QgYXMgYSBkZXBlbmRlbmN5IG9mXG4gICAgLy8gb25lIG9mIHRoZW0gKG9yIG9mIHVzKVxuICAgIGZvciAoY29uc3QgcGtnIG9mIFsuLi50aGlzLmRlcGVuZGVuY2llcywgdGhpcy5jcmVhdGVQYWNrYWdlKHRoaXMucGFja2FnZURpcildKSB7XG4gICAgICBjb25zdCBtYW5pZmVzdCA9IGZzLnJlYWRKU09OU3luYyhwYXRoLmpvaW4ocGtnLnBhdGgsICdwYWNrYWdlLmpzb24nKSk7XG4gICAgICBjb25zdCBydW50aW1lID0gKG1hbmlmZXN0LmRlcGVuZGVuY2llcyA/PyB7fSlbbmFtZV07XG4gICAgICBjb25zdCBvcHRpb25hbCA9IChtYW5pZmVzdC5vcHRpb25hbERlcGVuZGVuY2llcyA/PyB7fSlbbmFtZV07XG5cbiAgICAgIGNvbnN0IHBpbiA9ICh2ZXJzaW9uOiBzdHJpbmcpID0+ICh2ZXJzaW9uLnN0YXJ0c1dpdGgoJ14nKSB8fCB2ZXJzaW9uLnN0YXJ0c1dpdGgoJ34nKSkgPyB2ZXJzaW9uLnN1YnN0cmluZygxKSA6IHZlcnNpb247XG5cbiAgICAgIGlmIChydW50aW1lKSB7XG4gICAgICAgIHZlcnNpb25zLmFkZChwaW4ocnVudGltZSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbmFsKSB7XG4gICAgICAgIHZlcnNpb25zLmFkZChwaW4ob3B0aW9uYWwpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0ZWN0IHZlcnNpb24gZm9yIGV4dGVybmFsIGRlcGVuZGVuY3k6ICR7bmFtZX1gKTtcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbnMuc2l6ZSA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgdmVyc2lvbnMgZGV0ZWN0ZWQgZm9yIGV4dGVybmFsIGRlcGVuZGVuY3k6ICR7bmFtZX0gKCR7QXJyYXkuZnJvbSh2ZXJzaW9ucykuam9pbignLCcpfSlgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2lvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZXN0UGFja2FnZVBhdGgoZmRwOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGZkcCwgJ3BhY2thZ2UuanNvbicpKSkge1xuICAgICAgcmV0dXJuIGZkcDtcbiAgICB9XG5cbiAgICBpZiAocGF0aC5kaXJuYW1lKGZkcCkgPT09IGZkcCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBwYWNrYWdlIG1hbmlmZXN0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xvc2VzdFBhY2thZ2VQYXRoKHBhdGguZGlybmFtZShmZHApKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUGFja2FnZShwYWNrYWdlRGlyOiBzdHJpbmcpOiBQYWNrYWdlIHtcbiAgICBjb25zdCBtYW5pZmVzdFBhdGggPSBwYXRoLmpvaW4ocGFja2FnZURpciwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gZnMucmVhZEpTT05TeW5jKG1hbmlmZXN0UGF0aCk7XG4gICAgcmV0dXJuIHsgcGF0aDogcGFja2FnZURpciwgbmFtZTogbWFuaWZlc3QubmFtZSwgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvbiB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlc2J1aWxkKCk6IGVzYnVpbGQuQnVpbGRSZXN1bHQge1xuXG4gICAgY29uc3QgYnVuZGxlID0gZXNidWlsZC5idWlsZFN5bmMoe1xuICAgICAgZW50cnlQb2ludHM6IHRoaXMuZW50cnlQb2ludHMsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICB0YXJnZXQ6ICdub2RlMTInLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHNvdXJjZW1hcDogJ2lubGluZScsXG4gICAgICBtZXRhZmlsZTogdHJ1ZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGhpcy5wYWNrYWdlRGlyLFxuICAgICAgZXh0ZXJuYWw6IFsuLi4odGhpcy5leHRlcm5hbHMuZGVwZW5kZW5jaWVzID8/IFtdKSwgLi4uKHRoaXMuZXh0ZXJuYWxzLm9wdGlvbmFsRGVwZW5kZW5jaWVzID8/IFtdKV0sXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBvdXRkaXI6IHRoaXMucGFja2FnZURpcixcbiAgICAgIGFsbG93T3ZlcndyaXRlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKGJ1bmRsZS53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBlc2J1aWxkIHdhcm5pbmdzIGFyZSB1c3VhbGx5IGltcG9ydGFudCwgbGV0cyB0cnkgdG8gYmUgc3RyaWN0IGhlcmUuXG4gICAgICAvLyB0aGUgd2FybmluZ3MgdGhlbXNlbHZlcyBhcmUgcHJpbnRlZCBvbiBzY3JlZW4uXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvdW5kICR7YnVuZGxlLndhcm5pbmdzLmxlbmd0aH0gYnVuZGxpbmcgd2FybmluZ3MgKFNlZSBhYm92ZSlgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVuZGxlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNpcmN1bGFySW1wb3J0cygpOiBWaW9sYXRpb25bXSB7XG4gICAgY29uc29sZS5sb2coJ1ZhbGlkYXRpbmcgY2lyY3VsYXIgaW1wb3J0cycpO1xuICAgIGNvbnN0IHZpb2xhdGlvbnM6IFZpb2xhdGlvbltdID0gW107XG4gICAgY29uc3QgcGFja2FnZXMgPSBbdGhpcy5wYWNrYWdlRGlyLCAuLi50aGlzLmRlcGVuZGVuY2llcy5tYXAoZCA9PiBkLnBhdGgpXTtcbiAgICB0cnkge1xuICAgICAgLy8gd2UgZG9uJ3QgdXNlIHRoZSBwcm9ncmFtbWF0aWMgQVBJIHNpbmNlIGl0IG9ubHkgb2ZmZXJzIGFuIGFzeW5jIEFQSS5cbiAgICAgIC8vIHByZWZlciB0byBzdGF5IHN5bmMgZm9yIG5vdyBzaW5jZSBpdHMgZWFzaWVyIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIHRvb2xpbmcuXG4gICAgICAvLyB3aWxsIG9mZmVyIGFuIGFzeW5jIEFQSSBmdXJ0aGVyIGRvd24gdGhlIHJvYWQuXG4gICAgICBjb25zdCBjb21tYW5kID0gYCR7cmVxdWlyZS5yZXNvbHZlKCdtYWRnZS9iaW4vY2xpLmpzJyl9IC0tanNvbiAtLXdhcm5pbmcgLS1uby1jb2xvciAtLW5vLXNwaW5uZXIgLS1jaXJjdWxhciAtLWV4dGVuc2lvbnMganMgJHtwYWNrYWdlcy5qb2luKCcgJyl9YDtcbiAgICAgIHNoZWxsKGNvbW1hbmQsIHsgcXVpZXQ6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zdCBpbXBvcnRzOiBzdHJpbmdbXVtdID0gSlNPTi5wYXJzZShlLnN0ZG91dC50b1N0cmluZygpLnRyaW0oKSk7XG4gICAgICBmb3IgKGNvbnN0IGltcCBvZiBpbXBvcnRzKSB7XG4gICAgICAgIHZpb2xhdGlvbnMucHVzaCh7IHR5cGU6IFZpb2xhdGlvblR5cGUuQ0lSQ1VMQVJfSU1QT1JULCBtZXNzYWdlOiBgJHtpbXAuam9pbignIC0+ICcpfWAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpb2xhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmVzb3VyY2VzKCk6IFZpb2xhdGlvbltdIHtcbiAgICBjb25zb2xlLmxvZygnVmFsaWRhdGluZyByZXNvdXJjZXMnKTtcbiAgICBjb25zdCB2aW9sYXRpb25zID0gW107XG4gICAgZm9yIChjb25zdCBbc3JjLCBfXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCBzcmMpKSkge1xuICAgICAgICB2aW9sYXRpb25zLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFZpb2xhdGlvblR5cGUuTUlTU0lOR19SRVNPVVJDRSxcbiAgICAgICAgICBtZXNzYWdlOiBgVW5hYmxlIHRvIGZpbmQgcmVzb3VyY2UgKCR7c3JjfSkgcmVsYXRpdmUgdG8gdGhlIHBhY2thZ2UgZGlyZWN0b3J5YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2aW9sYXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUF0dHJpYnV0aW9ucygpOiByZWFkb25seSBWaW9sYXRpb25bXSB7XG4gICAgY29uc29sZS5sb2coJ1ZhbGlkYXRpbmcgYXR0cmlidXRpb25zJyk7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRpb25zLnZhbGlkYXRlKCkudmlvbGF0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXh0ZXJuYWxzKG1hbmlmZXN0OiBhbnkpIHtcblxuICAgIC8vIGV4dGVybmFsIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgc3BlY2lmaWVkIGFzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBleHRlcm5hbCBvZiB0aGlzLmV4dGVybmFscy5kZXBlbmRlbmNpZXMgPz8gW10pIHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmZpbmRFeHRlcm5hbERlcGVuZGVuY3lWZXJzaW9uKGV4dGVybmFsKTtcbiAgICAgIG1hbmlmZXN0LmRlcGVuZGVuY2llcyA9IG1hbmlmZXN0LmRlcGVuZGVuY2llcyA/PyB7fTtcbiAgICAgIG1hbmlmZXN0LmRlcGVuZGVuY2llc1tleHRlcm5hbF0gPSB2ZXJzaW9uO1xuICAgIH1cblxuICAgIC8vIGV4dGVybmFsIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgc3BlY2lmaWVkIGFzIG9wdGlvbmFsIGRlcGVuZGVuY2llc1xuICAgIGZvciAoY29uc3QgZXh0ZXJuYWwgb2YgdGhpcy5leHRlcm5hbHMub3B0aW9uYWxEZXBlbmRlbmNpZXMgPz8gW10pIHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmZpbmRFeHRlcm5hbERlcGVuZGVuY3lWZXJzaW9uKGV4dGVybmFsKTtcbiAgICAgIG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzID0gbWFuaWZlc3Qub3B0aW9uYWxEZXBlbmRlbmNpZXMgPz8ge307XG4gICAgICBtYW5pZmVzdC5vcHRpb25hbERlcGVuZGVuY2llc1tleHRlcm5hbF0gPSB2ZXJzaW9uO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEZXBlbmRlbmNpZXMobWFuaWZlc3Q6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2QsIHZdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMubWFuaWZlc3QuZGVwZW5kZW5jaWVzKSkge1xuICAgICAgbWFuaWZlc3QuZGV2RGVwZW5kZW5jaWVzID0gbWFuaWZlc3QuZGV2RGVwZW5kZW5jaWVzID8/IHt9O1xuICAgICAgbWFuaWZlc3QuZGV2RGVwZW5kZW5jaWVzW2RdID0gdjtcbiAgICAgIGRlbGV0ZSBtYW5pZmVzdC5kZXBlbmRlbmNpZXNbZF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZU91dHB1dHMod29ya0Rpcjogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBvdXRwdXQgb2YgdGhpcy5idW5kbGUub3V0cHV0RmlsZXMgPz8gW10pIHtcbiAgICAgIGNvbnN0IG91dCA9IG91dHB1dC5wYXRoLnJlcGxhY2UodGhpcy5wYWNrYWdlRGlyLCB3b3JrRGlyKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMob3V0LCBvdXRwdXQuY29udGVudHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVSZXNvdXJjZXMod29ya2Rpcjogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBbc3JjLCBkc3RdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzb3VyY2VzKSkge1xuICAgICAgY29uc3QgdG8gPSBwYXRoLmpvaW4od29ya2RpciwgZHN0KTtcbiAgICAgIGZzLmNvcHlTeW5jKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIHNyYyksIHRvLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlTWFuaWZlc3Qod29ya0Rpcjogc3RyaW5nLCBtYW5pZmVzdDogYW55KSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdCwgbnVsbCwgMikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxvbmdlc3RDb21tb25QYXJlbnQocGF0aHM6IHN0cmluZ1tdKSB7XG5cbiAgZnVuY3Rpb24gX2xvbmdlc3RDb21tb25QYXJlbnQocDE6IHN0cmluZywgcDI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGlyczEgPSBwMS5zcGxpdChwYXRoLnNlcCk7XG4gICAgY29uc3QgZGlyczIgPSBwMi5zcGxpdChwYXRoLnNlcCk7XG4gICAgY29uc3QgcGFyZW50ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihkaXJzMS5sZW5ndGgsIGRpcnMyLmxlbmd0aCk7IGkrKykge1xuICAgICAgaWYgKGRpcnMxW2ldICE9PSBkaXJzMltpXSkgYnJlYWs7XG4gICAgICBwYXJlbnQucHVzaChkaXJzMVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnQuam9pbihwYXRoLnNlcCk7XG4gIH1cblxuICByZXR1cm4gcGF0aHMucmVkdWNlKF9sb25nZXN0Q29tbW9uUGFyZW50KTtcbn1cbiJdfQ==
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtQztBQUNuQyw2Q0FBK0I7QUFDL0IsbURBQStDO0FBQy9DLHFDQUFpQztBQUNqQywyQ0FBeUU7QUFFekUsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixZQUFZO0lBQ1osS0FBSztJQUNMLGNBQWM7SUFDZCxLQUFLO0lBQ0wsY0FBYztJQUNkLE1BQU07Q0FDUCxDQUFDO0FBd0hGOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBbUJqQixZQUFZLEtBQWtCO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxzQkFBc0IsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksd0JBQXdCLENBQUM7UUFDekUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLE1BQU0sV0FBVyxHQUFHLEtBQUss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QUMsT0FBZSxFQUFFLFFBQWE7UUFDbEQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUF2V0Qsd0JBdVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFlO0lBRTFDLFNBQVMsb0JBQW9CLENBQUMsRUFBVSxFQUFFLEVBQVU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdELElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQUUsTUFBTTtZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBlc2J1aWxkIGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgQXR0cmlidXRpb25zIH0gZnJvbSAnLi9fYXR0cmlidXRpb25zJztcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSAnLi9fc2hlbGwnO1xuaW1wb3J0IHsgVmlvbGF0aW9uLCBWaW9sYXRpb25UeXBlLCBWaW9sYXRpb25zUmVwb3J0IH0gZnJvbSAnLi92aW9sYXRpb24nO1xuXG5jb25zdCBERUZBVUxUX0FMTE9XRURfTElDRU5TRVMgPSBbXG4gICdBcGFjaGUtMi4wJyxcbiAgJ01JVCcsXG4gICdCU0QtMy1DbGF1c2UnLFxuICAnSVNDJyxcbiAgJ0JTRC0yLUNsYXVzZScsXG4gICcwQlNEJyxcbl07XG5cbi8qKlxuICogQnVuZGxpbmcgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVQcm9wcyB7XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aGVyZSB0aGUgcGFja2FnZSB0byBidW5kbGUgaXMgbG9jYXRlZCBhdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VEaXI6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBlbnRyeS1wb2ludHMgdG8gYnVuZGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSAnbWFpbicgZmlsZSBhcyBzcGVjaWZpZWQgaW4gcGFja2FnZS5qc29uLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlQb2ludHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGF0aCB0byBhdHRyaWJ1dGlvbnMgZmlsZSB0aGF0IHdpbGwgYmUgY3JlYXRlZCAvIHZhbGlkYXRlZC5cbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYWNrYWdlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1RISVJEX1BBUlRZX0xJQ0VOU0VTJ1xuICAgKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRpb25zRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleHRlcm5hbCByZWZlcmVuY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZXJuYWxzPzogRXh0ZXJuYWxzO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCByZXNvdXJjZXMgdGhhdCBuZWVkIHRvIGJlIGVtYmVkZGVkIGluIHRoZSBidW5kbGUuXG4gICAqXG4gICAqIFRoZXNlIHdpbGwgYmUgY29waWVkIG92ZXIgdG8gdGhlIGFwcHJvcHJpYXRlIHBhdGhzIGJlZm9yZSBwYWNrYWdpbmcuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM/OiB7IFtzcmM6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbGljZW5zZXMgdGhhdCBhcmUgYWxsb3dlZCBmb3IgYnVuZGxpbmcuXG4gICAqIElmIGFueSBkZXBlbmRlbmN5IGNvbnRhaW5zIGEgbGljZW5zZSBub3QgaW4gdGhpcyBsaXN0LCBidW5kbGluZyB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBsaXN0XG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGFja2FnZXMgbWF0Y2hpbmcgdGhpcyByZWd1bGFyIGV4cHJlc3Npb24gd2lsbCBiZSBleGNsdWRlZCBmcm9tIGF0dHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9udEF0dHJpYnV0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogQmFzaWMgc2FuaXR5IGNoZWNrIHRvIHJ1biBhZ2FpbnN0IHRoZSBjcmVhdGVkIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEJ1bmRsZS5wYWNrYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVQYWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHBhY2thZ2UgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGZpeCBhbnkgKGZpeGFibGUpIHZpb2xhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhY2thZ2Ugb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2Uge1xuICAvKipcbiAgICogUGF0aCBvZiB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbHMge1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBsaXN0ZWQgaW4gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb25cbiAgICogb2YgdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGxpc3RlZCBpbiB0aGUgYG9wdGlvbmFsRGVwZW5kZW5jaWVzYCBzZWN0aW9uXG4gICAqIG9mIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbmFsRGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBCdW5kbGUgY2xhc3MgdG8gdmFsaWRhdGUgYW5kIHBhY2sgbm9kZWpzIGJ1bmRsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGUge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFuaWZlc3Q6IGFueTtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpY2VQYXRoOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwYWNrYWdlRGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50cnlQb2ludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgZXh0ZXJuYWxzOiBFeHRlcm5hbHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VzOiB7IFtzcmM6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRMaWNlbnNlczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9udEF0dHJpYnV0ZT86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXN0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2J1bmRsZT86IGVzYnVpbGQuQnVpbGRSZXN1bHQ7XG4gIHByaXZhdGUgX2RlcGVuZGVuY2llcz86IFBhY2thZ2VbXTtcbiAgcHJpdmF0ZSBfZGVwZW5kZW5jaWVzUm9vdD86IHN0cmluZztcblxuICBwcml2YXRlIF9hdHRyaWJ1dGlvbnM/OiBBdHRyaWJ1dGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEJ1bmRsZVByb3BzKSB7XG4gICAgdGhpcy5wYWNrYWdlRGlyID0gcHJvcHMucGFja2FnZURpcjtcbiAgICB0aGlzLm5vdGljZVBhdGggPSBwcm9wcy5hdHRyaWJ1dGlvbnNGaWxlID8/ICdUSElSRF9QQVJUWV9MSUNFTlNFUyc7XG4gICAgdGhpcy5tYW5pZmVzdCA9IGZzLnJlYWRKc29uU3luYyhwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJykpO1xuICAgIHRoaXMuZXh0ZXJuYWxzID0gcHJvcHMuZXh0ZXJuYWxzID8/IHt9O1xuICAgIHRoaXMucmVzb3VyY2VzID0gcHJvcHMucmVzb3VyY2VzID8/IHt9O1xuICAgIHRoaXMudGVzdCA9IHByb3BzLnRlc3Q7XG4gICAgdGhpcy5hbGxvd2VkTGljZW5zZXMgPSBwcm9wcy5hbGxvd2VkTGljZW5zZXMgPz8gREVGQVVMVF9BTExPV0VEX0xJQ0VOU0VTO1xuICAgIHRoaXMuZG9udEF0dHJpYnV0ZSA9IHByb3BzLmRvbnRBdHRyaWJ1dGU7XG4gICAgdGhpcy5lbnRyeVBvaW50cyA9IHt9O1xuXG4gICAgY29uc3QgZW50cnlQb2ludHMgPSBwcm9wcy5lbnRyeVBvaW50cyA/PyAodGhpcy5tYW5pZmVzdC5tYWluID8gW3RoaXMubWFuaWZlc3QubWFpbl0gOiBbXSk7XG5cbiAgICBpZiAoZW50cnlQb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgY29uZmlndXJlIGF0IGxlYXN0IDEgZW50cnlwb2ludCcpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiBlbnRyeVBvaW50cykge1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIGVudHJ5cG9pbnQpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2NhdGUgZW50cnlwb2ludDogJHtlbnRyeXBvaW50fWApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyeVBvaW50c1tlbnRyeXBvaW50LnJlcGxhY2UoJy5qcycsICcnKV0gPSBlbnRyeXBvaW50O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYnVuZGxlIGZvciB2aW9sYXRpb25zLlxuICAgKlxuICAgKiBJZiBgZml4YCBpcyBzZXQgdG8gdHJ1ZSwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIHJlbWFpbmluZ1xuICAgKiB2aW9sYXRpb25zIGFmdGVyIHRoZSBmaXhlcyB3ZXJlIGFwcGxpZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG5ldmVyIHRocm93cy4gVGhlIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5zcGVjdGluZyB0aGVcbiAgICogcmV0dXJuZWQgcmVwb3J0IGFuZCBhY3QgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUob3B0aW9uczogQnVuZGxlVmFsaWRhdGVPcHRpb25zID0ge30pOiBWaW9sYXRpb25zUmVwb3J0IHtcblxuICAgIGNvbnN0IGZpeCA9IG9wdGlvbnMuZml4ID8/IGZhbHNlO1xuXG4gICAgLy8gZmlyc3QgdmFsaWRhdGVcbiAgICBjb25zdCBjaXJjdWxhckltcG9ydHMgPSB0aGlzLnZhbGlkYXRlQ2lyY3VsYXJJbXBvcnRzKCk7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy52YWxpZGF0ZVJlc291cmNlcygpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IHRoaXMudmFsaWRhdGVBdHRyaWJ1dGlvbnMoKTtcblxuICAgIGNvbnN0IHJlcG9ydCA9IG5ldyBWaW9sYXRpb25zUmVwb3J0KFsuLi5jaXJjdWxhckltcG9ydHMsIC4uLnJlc291cmNlcywgLi4uYXR0cmlidXRpb25zXSk7XG5cbiAgICBpZiAoIWZpeCkge1xuICAgICAgcmV0dXJuIHJlcG9ydDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZpb2xhdGlvbiBvZiByZXBvcnQudmlvbGF0aW9ucykge1xuICAgICAgaWYgKHZpb2xhdGlvbi5maXgpIHtcbiAgICAgICAgdmlvbGF0aW9uLmZpeCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJldHVybiB0aGUgdW4gZml4YWJsZSB2aW9sYXRpb25zXG4gICAgcmV0dXJuIG5ldyBWaW9sYXRpb25zUmVwb3J0KHJlcG9ydC52aW9sYXRpb25zLmZpbHRlcih2ID0+ICF2LmZpeCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBidW5kbGUgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCB0byBhIHRlbXAgZGlyZWN0b3J5LlxuICAgKiBUaGlzIGRpcmVjdG9yeSBpcyB3aGF0IHRoZSB0b29sIHdpbGwgZW5kIHVwIHBhY2tpbmcuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHRlbXAgZGlyZWN0b3J5IGxvY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHdyaXRlKCk6IHN0cmluZyB7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdidW5kbGUtd3JpdGUtJykpO1xuXG4gICAgLy8gd2UgZGVmaW5pdGVseSBkb24ndCBuZWVkIHRoZXNlIGRpcmVjdG9yaWVzIGluIHRoZSBwYWNrYWdlXG4gICAgLy8gc28gbm8gbmVlZCB0byBjb3B5IHRoZW0gb3Zlci5cbiAgICBjb25zdCBpZ25vcmVEaXJlY3RvcmllcyA9IFsnbm9kZV9tb2R1bGVzJywgJy5naXQnXTtcblxuICAgIC8vIGNvcHkgdGhlIGVudGlyZSBwcm9qZWN0IHNpbmNlIHdlIGFyZSByZXRhaW5pbmcgdGhlIG9yaWdpbmFsIGZpbGVzLlxuICAgIGZzLmNvcHlTeW5jKHRoaXMucGFja2FnZURpciwgdGFyZ2V0LCB7IGZpbHRlcjogbiA9PiAhbi5zcGxpdChwYXRoLnNlcCkuc29tZSgocCA9PiBpZ25vcmVEaXJlY3Rvcmllcy5pbmNsdWRlcyhwKSkpIH0pO1xuXG4gICAgLy8gY2xvbmUgdGhlIG9yaWdpbmFsIG1hbmlmZXN0IHNpbmNlIHdlIGFyZSBnb2luZyB0b1xuICAgIC8vIHRvIG11dGF0ZSBpdC5cbiAgICBjb25zdCBtYW5pZmVzdCA9IHsgLi4udGhpcy5tYW5pZmVzdCB9O1xuXG4gICAgLy8gbWFuaWZlc3QgbXV0YXRpb25zXG4gICAgdGhpcy5yZW1vdmVEZXBlbmRlbmNpZXMobWFuaWZlc3QpO1xuICAgIHRoaXMuYWRkRXh0ZXJuYWxzKG1hbmlmZXN0KTtcblxuICAgIC8vIHdyaXRlIGFydGlmYWN0c1xuICAgIHRoaXMud3JpdGVPdXRwdXRzKHRhcmdldCk7XG4gICAgdGhpcy53cml0ZVJlc291cmNlcyh0YXJnZXQpO1xuICAgIHRoaXMud3JpdGVNYW5pZmVzdCh0YXJnZXQsIG1hbmlmZXN0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdGhlIGJ1bmRsZSBhbmQgY3JlYXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGFyYmFsbC5cbiAgICovXG4gIHB1YmxpYyBwYWNrKG9wdGlvbnM6IEJ1bmRsZVBhY2tPcHRpb25zID0ge30pOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy50YXJnZXQgPz8gdGhpcy5wYWNrYWdlRGlyO1xuXG4gICAgY29uc3QgcmVwb3J0ID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGlmICghcmVwb3J0LnN1Y2Nlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhY2sgZHVlIHRvIHZhbGlkYXRpb24gZXJyb3JzLlxcblxcbiR7cmVwb3J0LnN1bW1hcnl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGFyZ2V0IGRvZXNudCBleGlzdDogJHt0YXJnZXR9YCk7XG4gICAgfVxuXG4gICAgLy8gcmVzb2x2ZSBzeW1saW5rcy5cbiAgICBjb25zdCByZWFsVGFyZ2V0ID0gZnMucmVhbHBhdGhTeW5jKHRhcmdldCk7XG5cbiAgICBpZiAoIWZzLmxzdGF0U3luYyhyZWFsVGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhcmdldCBtdXN0IGJlIGEgZGlyZWN0b3J5OiAke3RhcmdldH1gKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnV3JpdGluZyBidW5kbGUnKTtcbiAgICBjb25zdCBidW5kbGVEaXIgPSB0aGlzLndyaXRlKCk7XG4gICAgdHJ5IHtcblxuICAgICAgaWYgKHRoaXMudGVzdCkge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gYCR7cGF0aC5qb2luKGJ1bmRsZURpciwgdGhpcy50ZXN0KX1gO1xuICAgICAgICBjb25zb2xlLmxvZyhgUnVubmluZyBzYW50aXkgdGVzdDogJHtjb21tYW5kfWApO1xuICAgICAgICBzaGVsbChjb21tYW5kLCB7IGN3ZDogYnVuZGxlRGlyIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBjcmVhdGUgdGhlIHRhcmJhbGxcbiAgICAgIGNvbnNvbGUubG9nKCdQYWNraW5nJyk7XG4gICAgICBjb25zdCB0YXJiYWxsID0gc2hlbGwoJ25wbSBwYWNrJywgeyBxdWlldDogdHJ1ZSwgY3dkOiBidW5kbGVEaXIgfSkudHJpbSgpO1xuICAgICAgY29uc3QgZGVzdCA9IHBhdGguam9pbihyZWFsVGFyZ2V0LCB0YXJiYWxsKTtcbiAgICAgIGZzLmNvcHlTeW5jKHBhdGguam9pbihidW5kbGVEaXIsIHRhcmJhbGwpLCBkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBkZXN0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKGJ1bmRsZURpcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYnVuZGxlKCk6IGVzYnVpbGQuQnVpbGRSZXN1bHQge1xuICAgIGlmICh0aGlzLl9idW5kbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9idW5kbGU7XG4gICAgfVxuICAgIHRoaXMuX2J1bmRsZSA9IHRoaXMuZXNidWlsZCgpO1xuICAgIHJldHVybiB0aGlzLl9idW5kbGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZXBlbmRlbmNpZXMoKTogUGFja2FnZVtdIHtcbiAgICBpZiAodGhpcy5fZGVwZW5kZW5jaWVzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVwZW5kZW5jaWVzO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dHMgPSBPYmplY3Qua2V5cyh0aGlzLmJ1bmRsZS5tZXRhZmlsZSEuaW5wdXRzKTtcbiAgICBjb25zdCBwYWNrYWdlcyA9IG5ldyBTZXQoQXJyYXkuZnJvbShpbnB1dHMpLm1hcChpID0+IHRoaXMuY2xvc2VzdFBhY2thZ2VQYXRoKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIGkpKSkpO1xuICAgIHRoaXMuX2RlcGVuZGVuY2llcyA9IEFycmF5LmZyb20ocGFja2FnZXMpLm1hcChwID0+IHRoaXMuY3JlYXRlUGFja2FnZShwKSkuZmlsdGVyKGQgPT4gZC5uYW1lICE9PSB0aGlzLm1hbmlmZXN0Lm5hbWUpO1xuICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXM7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZXBlbmRlbmNpZXNSb290KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2RlcGVuZGVuY2llc1Jvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXNSb290O1xuICAgIH1cbiAgICBjb25zdCBsY3AgPSBsb25nZXN0Q29tbW9uUGFyZW50KHRoaXMuZGVwZW5kZW5jaWVzLm1hcChkID0+IGQucGF0aCkpO1xuICAgIHRoaXMuX2RlcGVuZGVuY2llc1Jvb3QgPSB0aGlzLmNsb3Nlc3RQYWNrYWdlUGF0aChsY3ApO1xuICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXNSb290O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYXR0cmlidXRpb25zKCk6IEF0dHJpYnV0aW9ucyB7XG4gICAgaWYgKHRoaXMuX2F0dHJpYnV0aW9ucyA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9hdHRyaWJ1dGlvbnMgPSBuZXcgQXR0cmlidXRpb25zKHtcbiAgICAgICAgcGFja2FnZURpcjogdGhpcy5wYWNrYWdlRGlyLFxuICAgICAgICBwYWNrYWdlTmFtZTogdGhpcy5tYW5pZmVzdC5uYW1lLFxuICAgICAgICBmaWxlUGF0aDogdGhpcy5ub3RpY2VQYXRoLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IHRoaXMuZGVwZW5kZW5jaWVzLFxuICAgICAgICBkZXBlbmRlbmNpZXNSb290OiB0aGlzLmRlcGVuZGVuY2llc1Jvb3QsXG4gICAgICAgIGV4Y2x1ZGU6IHRoaXMuZG9udEF0dHJpYnV0ZSxcbiAgICAgICAgYWxsb3dlZExpY2Vuc2VzOiB0aGlzLmFsbG93ZWRMaWNlbnNlcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRXh0ZXJuYWxEZXBlbmRlbmN5VmVyc2lvbihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdmVyc2lvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIC8vIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBleGlzdCBpbiB0aGUgZGVwZW5kZW5jaWVzIGxpc3RcbiAgICAvLyBzaW5jZSBlc2J1aWxkIHNraXBzIG92ZXIgdGhlbS4gYnV0IHRoZXkgd2lsbCBleGlzdCBhcyBhIGRlcGVuZGVuY3kgb2ZcbiAgICAvLyBvbmUgb2YgdGhlbSAob3Igb2YgdXMpXG4gICAgZm9yIChjb25zdCBwa2cgb2YgWy4uLnRoaXMuZGVwZW5kZW5jaWVzLCB0aGlzLmNyZWF0ZVBhY2thZ2UodGhpcy5wYWNrYWdlRGlyKV0pIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gZnMucmVhZEpTT05TeW5jKHBhdGguam9pbihwa2cucGF0aCwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICAgIGNvbnN0IHJ1bnRpbWUgPSAobWFuaWZlc3QuZGVwZW5kZW5jaWVzID8/IHt9KVtuYW1lXTtcbiAgICAgIGNvbnN0IG9wdGlvbmFsID0gKG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzID8/IHt9KVtuYW1lXTtcblxuICAgICAgY29uc3QgcGluID0gKHZlcnNpb246IHN0cmluZykgPT4gKHZlcnNpb24uc3RhcnRzV2l0aCgnXicpIHx8IHZlcnNpb24uc3RhcnRzV2l0aCgnficpKSA/IHZlcnNpb24uc3Vic3RyaW5nKDEpIDogdmVyc2lvbjtcblxuICAgICAgaWYgKHJ1bnRpbWUpIHtcbiAgICAgICAgdmVyc2lvbnMuYWRkKHBpbihydW50aW1lKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgdmVyc2lvbnMuYWRkKHBpbihvcHRpb25hbCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucy5zaXplID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlY3QgdmVyc2lvbiBmb3IgZXh0ZXJuYWwgZGVwZW5kZW5jeTogJHtuYW1lfWApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucy5zaXplID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB2ZXJzaW9ucyBkZXRlY3RlZCBmb3IgZXh0ZXJuYWwgZGVwZW5kZW5jeTogJHtuYW1lfSAoJHtBcnJheS5mcm9tKHZlcnNpb25zKS5qb2luKCcsJyl9KWApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJzaW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNsb3Nlc3RQYWNrYWdlUGF0aChmZHA6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oZmRwLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICByZXR1cm4gZmRwO1xuICAgIH1cblxuICAgIGlmIChwYXRoLmRpcm5hbWUoZmRwKSA9PT0gZmRwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHBhY2thZ2UgbWFuaWZlc3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbG9zZXN0UGFja2FnZVBhdGgocGF0aC5kaXJuYW1lKGZkcCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYWNrYWdlKHBhY2thZ2VEaXI6IHN0cmluZyk6IFBhY2thZ2Uge1xuICAgIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHBhdGguam9pbihwYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBmcy5yZWFkSlNPTlN5bmMobWFuaWZlc3RQYXRoKTtcbiAgICByZXR1cm4geyBwYXRoOiBwYWNrYWdlRGlyLCBuYW1lOiBtYW5pZmVzdC5uYW1lLCB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uIH07XG4gIH1cblxuICBwcml2YXRlIGVzYnVpbGQoKTogZXNidWlsZC5CdWlsZFJlc3VsdCB7XG5cbiAgICBjb25zdCBidW5kbGUgPSBlc2J1aWxkLmJ1aWxkU3luYyh7XG4gICAgICBlbnRyeVBvaW50czogdGhpcy5lbnRyeVBvaW50cyxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIHRhcmdldDogJ25vZGUxMicsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgc291cmNlbWFwOiAnaW5saW5lJyxcbiAgICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBhYnNXb3JraW5nRGlyOiB0aGlzLnBhY2thZ2VEaXIsXG4gICAgICBleHRlcm5hbDogWy4uLih0aGlzLmV4dGVybmFscy5kZXBlbmRlbmNpZXMgPz8gW10pLCAuLi4odGhpcy5leHRlcm5hbHMub3B0aW9uYWxEZXBlbmRlbmNpZXMgPz8gW10pXSxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIG91dGRpcjogdGhpcy5wYWNrYWdlRGlyLFxuICAgICAgYWxsb3dPdmVyd3JpdGU6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAoYnVuZGxlLndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIGVzYnVpbGQgd2FybmluZ3MgYXJlIHVzdWFsbHkgaW1wb3J0YW50LCBsZXRzIHRyeSB0byBiZSBzdHJpY3QgaGVyZS5cbiAgICAgIC8vIHRoZSB3YXJuaW5ncyB0aGVtc2VsdmVzIGFyZSBwcmludGVkIG9uIHNjcmVlbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm91bmQgJHtidW5kbGUud2FybmluZ3MubGVuZ3RofSBidW5kbGluZyB3YXJuaW5ncyAoU2VlIGFib3ZlKWApO1xuICAgIH1cblxuICAgIHJldHVybiBidW5kbGU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQ2lyY3VsYXJJbXBvcnRzKCk6IFZpb2xhdGlvbltdIHtcbiAgICBjb25zb2xlLmxvZygnVmFsaWRhdGluZyBjaXJjdWxhciBpbXBvcnRzJyk7XG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBjb25zdCBwYWNrYWdlcyA9IFt0aGlzLnBhY2thZ2VEaXIsIC4uLnRoaXMuZGVwZW5kZW5jaWVzLm1hcChkID0+IGQucGF0aCldO1xuICAgIHRyeSB7XG4gICAgICAvLyB3ZSBkb24ndCB1c2UgdGhlIHByb2dyYW1tYXRpYyBBUEkgc2luY2UgaXQgb25seSBvZmZlcnMgYW4gYXN5bmMgQVBJLlxuICAgICAgLy8gcHJlZmVyIHRvIHN0YXkgc3luYyBmb3Igbm93IHNpbmNlIGl0cyBlYXNpZXIgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgdG9vbGluZy5cbiAgICAgIC8vIHdpbGwgb2ZmZXIgYW4gYXN5bmMgQVBJIGZ1cnRoZXIgZG93biB0aGUgcm9hZC5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtyZXF1aXJlLnJlc29sdmUoJ21hZGdlL2Jpbi9jbGkuanMnKX0gLS1qc29uIC0td2FybmluZyAtLW5vLWNvbG9yIC0tbm8tc3Bpbm5lciAtLWNpcmN1bGFyIC0tZXh0ZW5zaW9ucyBqcyAke3BhY2thZ2VzLmpvaW4oJyAnKX1gO1xuICAgICAgc2hlbGwoY29tbWFuZCwgeyBxdWlldDogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGltcG9ydHM6IHN0cmluZ1tdW10gPSBKU09OLnBhcnNlKGUuc3Rkb3V0LnRvU3RyaW5nKCkudHJpbSgpKTtcbiAgICAgIGZvciAoY29uc3QgaW1wIG9mIGltcG9ydHMpIHtcbiAgICAgICAgdmlvbGF0aW9ucy5wdXNoKHsgdHlwZTogVmlvbGF0aW9uVHlwZS5DSVJDVUxBUl9JTVBPUlQsIG1lc3NhZ2U6IGAke2ltcC5qb2luKCcgLT4gJyl9YCB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmlvbGF0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVSZXNvdXJjZXMoKTogVmlvbGF0aW9uW10ge1xuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW5nIHJlc291cmNlcycpO1xuICAgIGNvbnN0IHZpb2xhdGlvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtzcmMsIF9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIHNyYykpKSB7XG4gICAgICAgIHZpb2xhdGlvbnMucHVzaCh7XG4gICAgICAgICAgdHlwZTogVmlvbGF0aW9uVHlwZS5NSVNTSU5HX1JFU09VUkNFLFxuICAgICAgICAgIG1lc3NhZ2U6IGBVbmFibGUgdG8gZmluZCByZXNvdXJjZSAoJHtzcmN9KSByZWxhdGl2ZSB0byB0aGUgcGFja2FnZSBkaXJlY3RvcnlgLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZpb2xhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQXR0cmlidXRpb25zKCk6IHJlYWRvbmx5IFZpb2xhdGlvbltdIHtcbiAgICBjb25zb2xlLmxvZygnVmFsaWRhdGluZyBhdHRyaWJ1dGlvbnMnKTtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGlvbnMudmFsaWRhdGUoKS52aW9sYXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRlcm5hbHMobWFuaWZlc3Q6IGFueSkge1xuXG4gICAgLy8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgcnVudGltZSBkZXBlbmRlbmNpZXNcbiAgICBmb3IgKGNvbnN0IGV4dGVybmFsIG9mIHRoaXMuZXh0ZXJuYWxzLmRlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24oZXh0ZXJuYWwpO1xuICAgICAgbWFuaWZlc3QuZGVwZW5kZW5jaWVzID0gbWFuaWZlc3QuZGVwZW5kZW5jaWVzID8/IHt9O1xuICAgICAgbWFuaWZlc3QuZGVwZW5kZW5jaWVzW2V4dGVybmFsXSA9IHZlcnNpb247XG4gICAgfVxuXG4gICAgLy8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgb3B0aW9uYWwgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBleHRlcm5hbCBvZiB0aGlzLmV4dGVybmFscy5vcHRpb25hbERlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24oZXh0ZXJuYWwpO1xuICAgICAgbWFuaWZlc3Qub3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBtYW5pZmVzdC5vcHRpb25hbERlcGVuZGVuY2llcyA/PyB7fTtcbiAgICAgIG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzW2V4dGVybmFsXSA9IHZlcnNpb247XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURlcGVuZGVuY2llcyhtYW5pZmVzdDogYW55KSB7XG4gICAgZm9yIChjb25zdCBbZCwgdl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5tYW5pZmVzdC5kZXBlbmRlbmNpZXMpKSB7XG4gICAgICBtYW5pZmVzdC5kZXZEZXBlbmRlbmNpZXMgPSBtYW5pZmVzdC5kZXZEZXBlbmRlbmNpZXMgPz8ge307XG4gICAgICBtYW5pZmVzdC5kZXZEZXBlbmRlbmNpZXNbZF0gPSB2O1xuICAgICAgZGVsZXRlIG1hbmlmZXN0LmRlcGVuZGVuY2llc1tkXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlT3V0cHV0cyh3b3JrRGlyOiBzdHJpbmcpIHtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0aGlzLmJ1bmRsZS5vdXRwdXRGaWxlcyA/PyBbXSkge1xuICAgICAgY29uc3Qgb3V0ID0gb3V0cHV0LnBhdGgucmVwbGFjZSh0aGlzLnBhY2thZ2VEaXIsIHdvcmtEaXIpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhvdXQsIG91dHB1dC5jb250ZW50cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZVJlc291cmNlcyh3b3JrZGlyOiBzdHJpbmcpIHtcbiAgICBmb3IgKGNvbnN0IFtzcmMsIGRzdF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMpKSB7XG4gICAgICBjb25zdCB0byA9IHBhdGguam9pbih3b3JrZGlyLCBkc3QpO1xuICAgICAgZnMuY29weVN5bmMocGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgc3JjKSwgdG8sIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVNYW5pZmVzdCh3b3JrRGlyOiBzdHJpbmcsIG1hbmlmZXN0OiBhbnkpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbih3b3JrRGlyLCAncGFja2FnZS5qc29uJyksIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9uZ2VzdENvbW1vblBhcmVudChwYXRoczogc3RyaW5nW10pIHtcblxuICBmdW5jdGlvbiBfbG9uZ2VzdENvbW1vblBhcmVudChwMTogc3RyaW5nLCBwMjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXJzMSA9IHAxLnNwbGl0KHBhdGguc2VwKTtcbiAgICBjb25zdCBkaXJzMiA9IHAyLnNwbGl0KHBhdGguc2VwKTtcbiAgICBjb25zdCBwYXJlbnQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKGRpcnMxLmxlbmd0aCwgZGlyczIubGVuZ3RoKTsgaSsrKSB7XG4gICAgICBpZiAoZGlyczFbaV0gIT09IGRpcnMyW2ldKSBicmVhaztcbiAgICAgIHBhcmVudC5wdXNoKGRpcnMxW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudC5qb2luKHBhdGguc2VwKTtcbiAgfVxuXG4gIHJldHVybiBwYXRocy5yZWR1Y2UoX2xvbmdlc3RDb21tb25QYXJlbnQpO1xufVxuIl19
package/package.json CHANGED
@@ -35,22 +35,23 @@
35
35
  "organization": true
36
36
  },
37
37
  "devDependencies": {
38
+ "@stylistic/eslint-plugin": "^2",
38
39
  "@types/fs-extra": "^9.0.13",
39
40
  "@types/jest": "^27.5.2",
40
41
  "@types/license-checker": "^25.0.6",
41
42
  "@types/madge": "^5.0.3",
42
43
  "@types/node": "^18",
43
- "@typescript-eslint/eslint-plugin": "^7",
44
- "@typescript-eslint/parser": "^7",
45
- "cdklabs-projen-project-types": "^0.1.204",
44
+ "@typescript-eslint/eslint-plugin": "^8",
45
+ "@typescript-eslint/parser": "^8",
46
+ "cdklabs-projen-project-types": "^0.3.1",
46
47
  "commit-and-tag-version": "^12",
47
48
  "constructs": "^10.0.0",
48
- "eslint": "^8",
49
+ "eslint": "^9",
49
50
  "eslint-import-resolver-typescript": "^2.7.1",
50
51
  "eslint-plugin-import": "^2.31.0",
51
52
  "jest": "^27",
52
- "jest-junit": "^15",
53
- "projen": "^0.87.4",
53
+ "jest-junit": "^16",
54
+ "projen": "^0.92.9",
54
55
  "ts-jest": "^27",
55
56
  "ts-node": "^10.9.2",
56
57
  "typescript": "^4.9.5"
@@ -68,7 +69,7 @@
68
69
  "publishConfig": {
69
70
  "access": "public"
70
71
  },
71
- "version": "0.0.556",
72
+ "version": "0.0.557",
72
73
  "jest": {
73
74
  "coverageProvider": "v8",
74
75
  "testMatch": [