jsii-pacmak 1.47.0 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,7 +31,7 @@ export declare type Callback = (packageDir: string, meta: PackageJson, root: boo
31
31
  */
32
32
  export interface TraverseDependencyGraphHost {
33
33
  readonly readJson: typeof fs.readJson;
34
- readonly resolveDependencyDirectory: typeof util.resolveDependencyDirectory;
34
+ readonly findDependencyDirectory: typeof util.findDependencyDirectory;
35
35
  }
36
36
  /**
37
37
  * Contents of the `package.json` file.
@@ -19,7 +19,7 @@ const util = require("./util");
19
19
  */
20
20
  async function traverseDependencyGraph(packageDir, callback, host = {
21
21
  readJson: fs.readJson,
22
- resolveDependencyDirectory: util.resolveDependencyDirectory,
22
+ findDependencyDirectory: util.findDependencyDirectory,
23
23
  }) {
24
24
  return real$traverseDependencyGraph(packageDir, callback, host, new Set());
25
25
  }
@@ -40,9 +40,11 @@ async function real$traverseDependencyGraph(packageDir, callback, host, visited)
40
40
  ...Object.keys((_a = meta.dependencies) !== null && _a !== void 0 ? _a : {}),
41
41
  ...Object.keys((_b = meta.peerDependencies) !== null && _b !== void 0 ? _b : {}),
42
42
  ]);
43
- return Promise.all(Array.from(deps).map((dep) => {
44
- const dependencyDir = host.resolveDependencyDirectory(packageDir, dep);
43
+ return Promise.all(Array.from(deps)
44
+ .filter((m) => !util.isBuiltinModule(m))
45
+ .map(async (dep) => {
46
+ const dependencyDir = await host.findDependencyDirectory(dep, packageDir);
45
47
  return real$traverseDependencyGraph(dependencyDir, callback, host, visited);
46
48
  })).then();
47
49
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlcGVuZGVuY3ktZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtCQUE0QjtBQUU1QiwrQkFBK0I7QUFFL0I7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0ksS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxVQUFrQixFQUNsQixRQUFrQixFQUNsQixPQUFvQztJQUNsQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7SUFDckIsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtDQUM1RDtJQUVELE9BQU8sNEJBQTRCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFURCwwREFTQztBQXFDRCxLQUFLLFVBQVUsNEJBQTRCLENBQ3pDLFVBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLElBQWlDLEVBQ2pDLE9BQW9COztJQUVwQix5RUFBeUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQWdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDM0MsV0FBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FDakMsQ0FBQztJQUNGLElBQUksQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtRQUMvQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0tBQ2Y7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQixHQUFHLE1BQU0sQ0FBQyxJQUFJLE9BQUMsSUFBSSxDQUFDLFlBQVksbUNBQUksRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsTUFBTSxDQUFDLElBQUksT0FBQyxJQUFJLENBQUMsZ0JBQWdCLG1DQUFJLEVBQUUsQ0FBQztLQUM1QyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDM0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RSxPQUFPLDRCQUE0QixDQUNqQyxhQUFhLEVBQ2IsUUFBUSxFQUNSLElBQUksRUFDSixPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUVILENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHJhdmVyc2VzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGFuZCBpbnZva2VzIHRoZSBwcm92aWRlZCBjYWxsYmFjayBtZXRob2QgZm9yXG4gKiBlYWNoIGluZGl2aWR1YWwgZGVwZW5kZW5jeSByb290IGRpcmVjdG9yeSAoaW5jbHVkaW5nIHRoZSBjdXJyZW50IHBhY2thZ2UpLlxuICogVGhlIGRlcGVuZGVuY3kgcm9vdHMgYXJlIGRlLWR1cGxpY2F0ZWQgYmFzZWQgb24gdGhlaXIgYWJzb2x1dGUgcGF0aCBvbiB0aGVcbiAqIGZpbGUgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBwYWNrYWdlRGlyIHRoZSBjdXJyZW50IHBhY2thZ2UncyByb290IGRpcmVjdG9yeSAoaS5lOiB3aGVyZSB0aGVcbiAqICAgICAgICAgICAgICAgICAgIGBwYWNrYWdlLmpzb25gIGZpbGUgaXMgbG9jYXRlZClcbiAqIEBwYXJhbSBjYWxsYmFjayAgIHRoZSBmdW5jdGlvbiB0byBpbnZva2Ugd2l0aCBlYWNoIHBhY2thZ2UncyBpbmZvcm1hdGlvbnNcbiAqIEBwYXJhbSBob3N0ICAgICAgIHRoZSBkZXBlbmRlbmN5IGdyYXBoIHRyYXZlcnNhbCBob3N0IHRvIHVzZSAodGhpcyBwYXJhbWV0ZXJcbiAqICAgICAgICAgICAgICAgICAgIHNob3VsZCB0eXBpY2FsbHkgbm90IGJlIHByb3ZpZGVkIHVubGVzcyB0aGlzIG1vZHVsZSBpc1xuICogICAgICAgICAgICAgICAgICAgYmVpbmcgdW5pdCB0ZXN0ZWQpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmF2ZXJzZURlcGVuZGVuY3lHcmFwaChcbiAgcGFja2FnZURpcjogc3RyaW5nLFxuICBjYWxsYmFjazogQ2FsbGJhY2ssXG4gIGhvc3Q6IFRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoSG9zdCA9IHtcbiAgICByZWFkSnNvbjogZnMucmVhZEpzb24sXG4gICAgcmVzb2x2ZURlcGVuZGVuY3lEaXJlY3Rvcnk6IHV0aWwucmVzb2x2ZURlcGVuZGVuY3lEaXJlY3RvcnksXG4gIH0sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHJlYWwkdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgocGFja2FnZURpciwgY2FsbGJhY2ssIGhvc3QsIG5ldyBTZXQoKSk7XG59XG5cbi8qKlxuICogQSBjYWxsYmFjayBpbnZva2VkIGZvciBlYWNoIG5vZGUgaW4gYSBOUE0gbW9kdWxlJ3MgZGVwZW5kZW5jeSBncmFwaC5cbiAqXG4gKiBAcGFyYW0gcGFja2FnZURpciB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjdXJyZW50IHBhY2thZ2UgaXMgbG9jYXRlZC5cbiAqIEBwYXJhbSBtZXRhICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSBmb3IgdGhpcyBwYWNrYWdlLlxuICogQHBhcmFtIHJvb3QgICAgICAgd2hldGhlciB0aGlzIHBhY2thZ2UgaXMgdGhlIHJvb3QgdGhhdCB3YXMgcHJvdmlkZWQgdG8gdGhlXG4gKiAgICAgICAgICAgICAgICAgICBgdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGhgIGNhbGwuXG4gKlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgcGFja2FnZSdzIG93biBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIHByb2Nlc3NlZCxcbiAqICAgICAgICAgIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgdHlwZSBDYWxsYmFjayA9IChcbiAgcGFja2FnZURpcjogc3RyaW5nLFxuICBtZXRhOiBQYWNrYWdlSnNvbixcbiAgcm9vdDogYm9vbGVhbixcbikgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbi8qKlxuICogSG9zdCBtZXRob2RzIGZvciB0cmF2ZXJzaW5nIGRlcGVuZGVuY3kgZ3JhcGhzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoSG9zdCB7XG4gIHJlYWRvbmx5IHJlYWRKc29uOiB0eXBlb2YgZnMucmVhZEpzb247XG4gIHJlYWRvbmx5IHJlc29sdmVEZXBlbmRlbmN5RGlyZWN0b3J5OiB0eXBlb2YgdXRpbC5yZXNvbHZlRGVwZW5kZW5jeURpcmVjdG9yeTtcbn1cblxuLyoqXG4gKiBDb250ZW50cyBvZiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlSnNvbiB7XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhbCR0cmF2ZXJzZURlcGVuZGVuY3lHcmFwaChcbiAgcGFja2FnZURpcjogc3RyaW5nLFxuICBjYWxsYmFjazogQ2FsbGJhY2ssXG4gIGhvc3Q6IFRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoSG9zdCxcbiAgdmlzaXRlZDogU2V0PHN0cmluZz4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gV2UncmUgYXQgdGhlIHJvb3QgaWYgd2UgaGF2ZSBub3QgdmlzaXRlZCBhbnl0aGluZyB5ZXQuIEhvdyBjb252ZW5pZW50IVxuICBjb25zdCBpc1Jvb3QgPSB2aXNpdGVkLnNpemUgPT09IDA7XG4gIGlmICh2aXNpdGVkLmhhcyhwYWNrYWdlRGlyKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgdmlzaXRlZC5hZGQocGFja2FnZURpcik7XG5cbiAgY29uc3QgbWV0YTogUGFja2FnZUpzb24gPSBhd2FpdCBob3N0LnJlYWRKc29uKFxuICAgIGpvaW4ocGFja2FnZURpciwgJ3BhY2thZ2UuanNvbicpLFxuICApO1xuICBpZiAoIShhd2FpdCBjYWxsYmFjayhwYWNrYWdlRGlyLCBtZXRhLCBpc1Jvb3QpKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBkZXBzID0gbmV3IFNldChbXG4gICAgLi4uT2JqZWN0LmtleXMobWV0YS5kZXBlbmRlbmNpZXMgPz8ge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKG1ldGEucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gIF0pO1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgQXJyYXkuZnJvbShkZXBzKS5tYXAoKGRlcCkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeURpciA9IGhvc3QucmVzb2x2ZURlcGVuZGVuY3lEaXJlY3RvcnkocGFja2FnZURpciwgZGVwKTtcbiAgICAgIHJldHVybiByZWFsJHRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoKFxuICAgICAgICBkZXBlbmRlbmN5RGlyLFxuICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgaG9zdCxcbiAgICAgICAgdmlzaXRlZCxcbiAgICAgICk7XG4gICAgfSksXG4gICAgLy8gVGhlIGZvbGxvd2luZyBcIi50aGVuXCIgbGl0ZXJhbGx5IGp1c3QgdHVybnMgYSBgUHJvbWlzZTxUPmAgaW50byBhIGBQcm9taXNlPHZvaWQ+YC4gQ29udmVuaWVudCFcbiAgKS50aGVuKCk7XG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlcGVuZGVuY3ktZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtCQUE0QjtBQUU1QiwrQkFBK0I7QUFFL0I7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0ksS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxVQUFrQixFQUNsQixRQUFrQixFQUNsQixPQUFvQztJQUNsQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7SUFDckIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtDQUN0RDtJQUVELE9BQU8sNEJBQTRCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFURCwwREFTQztBQXFDRCxLQUFLLFVBQVUsNEJBQTRCLENBQ3pDLFVBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLElBQWlDLEVBQ2pDLE9BQW9COztJQUVwQix5RUFBeUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQWdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDM0MsV0FBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FDakMsQ0FBQztJQUNGLElBQUksQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtRQUMvQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0tBQ2Y7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQixHQUFHLE1BQU0sQ0FBQyxJQUFJLE9BQUMsSUFBSSxDQUFDLFlBQVksbUNBQUksRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsTUFBTSxDQUFDLElBQUksT0FBQyxJQUFJLENBQUMsZ0JBQWdCLG1DQUFJLEVBQUUsQ0FBQztLQUM1QyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNqQixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FDdEQsR0FBRyxFQUNILFVBQVUsQ0FDWCxDQUFDO1FBQ0YsT0FBTyw0QkFBNEIsQ0FDakMsYUFBYSxFQUNiLFFBQVEsRUFDUixJQUFJLEVBQ0osT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDLENBQUMsQ0FFTCxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcblxuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFRyYXZlcnNlcyB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgaW52b2tlcyB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgbWV0aG9kIGZvclxuICogZWFjaCBpbmRpdmlkdWFsIGRlcGVuZGVuY3kgcm9vdCBkaXJlY3RvcnkgKGluY2x1ZGluZyB0aGUgY3VycmVudCBwYWNrYWdlKS5cbiAqIFRoZSBkZXBlbmRlbmN5IHJvb3RzIGFyZSBkZS1kdXBsaWNhdGVkIGJhc2VkIG9uIHRoZWlyIGFic29sdXRlIHBhdGggb24gdGhlXG4gKiBmaWxlIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFja2FnZURpciB0aGUgY3VycmVudCBwYWNrYWdlJ3Mgcm9vdCBkaXJlY3RvcnkgKGkuZTogd2hlcmUgdGhlXG4gKiAgICAgICAgICAgICAgICAgICBgcGFja2FnZS5qc29uYCBmaWxlIGlzIGxvY2F0ZWQpXG4gKiBAcGFyYW0gY2FsbGJhY2sgICB0aGUgZnVuY3Rpb24gdG8gaW52b2tlIHdpdGggZWFjaCBwYWNrYWdlJ3MgaW5mb3JtYXRpb25zXG4gKiBAcGFyYW0gaG9zdCAgICAgICB0aGUgZGVwZW5kZW5jeSBncmFwaCB0cmF2ZXJzYWwgaG9zdCB0byB1c2UgKHRoaXMgcGFyYW1ldGVyXG4gKiAgICAgICAgICAgICAgICAgICBzaG91bGQgdHlwaWNhbGx5IG5vdCBiZSBwcm92aWRlZCB1bmxlc3MgdGhpcyBtb2R1bGUgaXNcbiAqICAgICAgICAgICAgICAgICAgIGJlaW5nIHVuaXQgdGVzdGVkKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgY2FsbGJhY2s6IENhbGxiYWNrLFxuICBob3N0OiBUcmF2ZXJzZURlcGVuZGVuY3lHcmFwaEhvc3QgPSB7XG4gICAgcmVhZEpzb246IGZzLnJlYWRKc29uLFxuICAgIGZpbmREZXBlbmRlbmN5RGlyZWN0b3J5OiB1dGlsLmZpbmREZXBlbmRlbmN5RGlyZWN0b3J5LFxuICB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiByZWFsJHRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoKHBhY2thZ2VEaXIsIGNhbGxiYWNrLCBob3N0LCBuZXcgU2V0KCkpO1xufVxuXG4vKipcbiAqIEEgY2FsbGJhY2sgaW52b2tlZCBmb3IgZWFjaCBub2RlIGluIGEgTlBNIG1vZHVsZSdzIGRlcGVuZGVuY3kgZ3JhcGguXG4gKlxuICogQHBhcmFtIHBhY2thZ2VEaXIgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgY3VycmVudCBwYWNrYWdlIGlzIGxvY2F0ZWQuXG4gKiBAcGFyYW0gbWV0YSAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgZm9yIHRoaXMgcGFja2FnZS5cbiAqIEBwYXJhbSByb290ICAgICAgIHdoZXRoZXIgdGhpcyBwYWNrYWdlIGlzIHRoZSByb290IHRoYXQgd2FzIHByb3ZpZGVkIHRvIHRoZVxuICogICAgICAgICAgICAgICAgICAgYHRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoYCBjYWxsLlxuICpcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGlzIHBhY2thZ2UncyBvd24gZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBwcm9jZXNzZWQsXG4gKiAgICAgICAgICBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbGJhY2sgPSAoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgbWV0YTogUGFja2FnZUpzb24sXG4gIHJvb3Q6IGJvb2xlYW4sXG4pID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuXG4vKipcbiAqIEhvc3QgbWV0aG9kcyBmb3IgdHJhdmVyc2luZyBkZXBlbmRlbmN5IGdyYXBocy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmF2ZXJzZURlcGVuZGVuY3lHcmFwaEhvc3Qge1xuICByZWFkb25seSByZWFkSnNvbjogdHlwZW9mIGZzLnJlYWRKc29uO1xuICByZWFkb25seSBmaW5kRGVwZW5kZW5jeURpcmVjdG9yeTogdHlwZW9mIHV0aWwuZmluZERlcGVuZGVuY3lEaXJlY3Rvcnk7XG59XG5cbi8qKlxuICogQ29udGVudHMgb2YgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZUpzb24ge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWwkdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgY2FsbGJhY2s6IENhbGxiYWNrLFxuICBob3N0OiBUcmF2ZXJzZURlcGVuZGVuY3lHcmFwaEhvc3QsXG4gIHZpc2l0ZWQ6IFNldDxzdHJpbmc+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIFdlJ3JlIGF0IHRoZSByb290IGlmIHdlIGhhdmUgbm90IHZpc2l0ZWQgYW55dGhpbmcgeWV0LiBIb3cgY29udmVuaWVudCFcbiAgY29uc3QgaXNSb290ID0gdmlzaXRlZC5zaXplID09PSAwO1xuICBpZiAodmlzaXRlZC5oYXMocGFja2FnZURpcikpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHZpc2l0ZWQuYWRkKHBhY2thZ2VEaXIpO1xuXG4gIGNvbnN0IG1ldGE6IFBhY2thZ2VKc29uID0gYXdhaXQgaG9zdC5yZWFkSnNvbihcbiAgICBqb2luKHBhY2thZ2VEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgKTtcbiAgaWYgKCEoYXdhaXQgY2FsbGJhY2socGFja2FnZURpciwgbWV0YSwgaXNSb290KSkpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZGVwcyA9IG5ldyBTZXQoW1xuICAgIC4uLk9iamVjdC5rZXlzKG1ldGEuZGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICAuLi5PYmplY3Qua2V5cyhtZXRhLnBlZXJEZXBlbmRlbmNpZXMgPz8ge30pLFxuICBdKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIEFycmF5LmZyb20oZGVwcylcbiAgICAgIC5maWx0ZXIoKG0pID0+ICF1dGlsLmlzQnVpbHRpbk1vZHVsZShtKSlcbiAgICAgIC5tYXAoYXN5bmMgKGRlcCkgPT4ge1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RGlyID0gYXdhaXQgaG9zdC5maW5kRGVwZW5kZW5jeURpcmVjdG9yeShcbiAgICAgICAgICBkZXAsXG4gICAgICAgICAgcGFja2FnZURpcixcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlYWwkdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgoXG4gICAgICAgICAgZGVwZW5kZW5jeURpcixcbiAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICBob3N0LFxuICAgICAgICAgIHZpc2l0ZWQsXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAvLyBUaGUgZm9sbG93aW5nIFwiLnRoZW5cIiBsaXRlcmFsbHkganVzdCB0dXJucyBhIGBQcm9taXNlPFQ+YCBpbnRvIGEgYFByb21pc2U8dm9pZD5gLiBDb252ZW5pZW50IVxuICApLnRoZW4oKTtcbn1cbiJdfQ==
@@ -47,9 +47,22 @@ async function findJsiiModules(directories, recurse) {
47
47
  ];
48
48
  // if --recurse is set, find dependency dirs and build them.
49
49
  if (recurse) {
50
- await Promise.all(dependencyNames
51
- .map((dep) => util_1.resolveDependencyDirectory(realPath, dep))
52
- .map((depDir) => visitPackage(depDir, false)));
50
+ await Promise.all(dependencyNames.flatMap(async (dep) => {
51
+ if (util_1.isBuiltinModule(dep)) {
52
+ return [];
53
+ }
54
+ try {
55
+ const depDir = await util_1.findDependencyDirectory(dep, realPath);
56
+ return [await visitPackage(depDir, false)];
57
+ }
58
+ catch (e) {
59
+ // Some modules like `@types/node` cannot be require()d, but we also don't need them.
60
+ if (!['MODULE_NOT_FOUND', 'ERR_PACKAGE_PATH_NOT_EXPORTED'].includes(e.code)) {
61
+ throw e;
62
+ }
63
+ return [];
64
+ }
65
+ }));
53
66
  }
54
67
  // outdir is either by package.json/jsii.outdir (relative to package root) or via command line (relative to cwd)
55
68
  const outputDirectory = pkg.jsii.outdir && path.resolve(realPath, pkg.jsii.outdir);
@@ -108,4 +121,4 @@ async function updateNpmIgnore(packageDir, excludeOutdir) {
108
121
  }
109
122
  }
110
123
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLW1vZHVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJucG0tbW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUU3QiwwQ0FBMEM7QUFDMUMsMkNBQXlDO0FBQ3pDLHlDQUF5RDtBQUN6RCxpQ0FBb0Q7QUFFcEQ7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FDbkMsV0FBOEIsRUFDOUIsT0FBZ0I7SUFFaEIsTUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sMEJBQWUsQ0FDcEIsR0FBRyxFQUNILENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUN6QixDQUFDO0lBRUYsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFXLEVBQUUsTUFBZTs7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6QixPQUFPO1NBQ1IsQ0FBQyxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztR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Z0JBQzNCLE9BQU8sQ0FBQyx3QkFBd0I7YUFDakM7WUFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBRWhCLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzNCLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDZjtZQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNwZWMgZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4uL2xpYi9sb2dnaW5nJztcbmltcG9ydCB7IEpzaWlNb2R1bGUgfSBmcm9tICcuL3BhY2thZ2luZyc7XG5pbXBvcnQgeyB0b3BvbG9naWNhbFNvcnQsIFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IHJlc29sdmVEZXBlbmRlbmN5RGlyZWN0b3J5IH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBGaW5kIGFsbCBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBwYWNrYWdlcmRcbiAqXG4gKiBJZiB0aGUgaW5wdXQgbGlzdCBpcyBlbXB0eSwgaW5jbHVkZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4gKlxuICogVGhlIHJlc3VsdCBpcyB0b3BvbG9naWNhbGx5IHNvcnRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRKc2lpTW9kdWxlcyhcbiAgZGlyZWN0b3JpZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICByZWN1cnNlOiBib29sZWFuLFxuKTogUHJvbWlzZTxUb3Bvc29ydGVkPEpzaWlNb2R1bGU+PiB7XG4gIGNvbnN0IHJldDogSnNpaU1vZHVsZVtdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCB0b1Zpc2l0ID0gZGlyZWN0b3JpZXMubGVuZ3RoID4gMCA/IGRpcmVjdG9yaWVzIDogWycuJ107XG4gIGF3YWl0IFByb21pc2UuYWxsKHRvVmlzaXQubWFwKChkaXIpID0+IHZpc2l0UGFja2FnZShkaXIsIHRydWUpKSk7XG5cbiAgcmV0dXJuIHRvcG9sb2dpY2FsU29ydChcbiAgICByZXQsXG4gICAgKG0pID0+IG0ubmFtZSxcbiAgICAobSkgPT4gbS5kZXBlbmRlbmN5TmFtZXMsXG4gICk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gdmlzaXRQYWNrYWdlKGRpcjogc3RyaW5nLCBpc1Jvb3Q6IGJvb2xlYW4pIHtcbiAgICBjb25zdCByZWFsUGF0aCA9IGF3YWl0IGZzLnJlYWxwYXRoKGRpcik7XG4gICAgaWYgKHZpc2l0ZWQuaGFzKHJlYWxQYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gQWxyZWFkeSB2aXNpdGVkXG4gICAgdmlzaXRlZC5hZGQocmVhbFBhdGgpO1xuXG4gICAgY29uc3QgcGtnID0gYXdhaXQgZnMucmVhZEpzb24ocGF0aC5qb2luKHJlYWxQYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgIGlmICghcGtnLmpzaWk/Lm91dGRpciB8fCAhcGtnLmpzaWk/LnRhcmdldHMpIHtcbiAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIFwianNpaVwiIHNlY3Rpb24gaW4gJHtyZWFsUGF0aH0uIEV4cGVjdGluZyBcIm91dGRpclwiIGFuZCBcInRhcmdldHNcImAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47IC8vIGp1c3QgbW92ZSBvbiwgdGhpcyBpcyBub3QgYSBqc2lpIHBhY2thZ2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBrZy5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBwYWNrYWdlLmpzb24gZG9lcyBub3QgaGF2ZSBhICduYW1lJyBmaWVsZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwa2csXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgLi4uT2JqZWN0LmtleXMocGtnLmRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cuZGV2RGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICBdO1xuXG4gICAgLy8gaWYgLS1yZWN1cnNlIGlzIHNldCwgZmluZCBkZXBlbmRlbmN5IGRpcnMgYW5kIGJ1aWxkIHRoZW0uXG4gICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBkZXBlbmRlbmN5TmFtZXNcbiAgICAgICAgICAubWFwKChkZXApID0+IHJlc29sdmVEZXBlbmRlbmN5RGlyZWN0b3J5KHJlYWxQYXRoLCBkZXApKVxuICAgICAgICAgIC5tYXAoKGRlcERpcikgPT4gdmlzaXRQYWNrYWdlKGRlcERpciwgZmFsc2UpKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gb3V0ZGlyIGlzIGVpdGhlciBieSBwYWNrYWdlLmpzb24vanNpaS5vdXRkaXIgKHJlbGF0aXZlIHRvIHBhY2thZ2Ugcm9vdCkgb3IgdmlhIGNvbW1hbmQgbGluZSAocmVsYXRpdmUgdG8gY3dkKVxuICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9XG4gICAgICBwa2cuanNpaS5vdXRkaXIgJiYgcGF0aC5yZXNvbHZlKHJlYWxQYXRoLCBwa2cuanNpaS5vdXRkaXIpO1xuICAgIGNvbnN0IHRhcmdldHMgPSBbLi4uT2JqZWN0LmtleXMocGtnLmpzaWkudGFyZ2V0cyksICdqcyddOyAvLyBcImpzXCIgaXMgYW4gaW1wbGljaXQgdGFyZ2V0LlxuXG4gICAgcmV0LnB1c2goXG4gICAgICBuZXcgSnNpaU1vZHVsZSh7XG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBtb2R1bGVEaXJlY3Rvcnk6IHJlYWxQYXRoLFxuICAgICAgICBkZWZhdWx0T3V0cHV0RGlyZWN0b3J5OiBvdXRwdXREaXJlY3RvcnksXG4gICAgICAgIGF2YWlsYWJsZVRhcmdldHM6IHRhcmdldHMsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFsbE5wbUlnbm9yZXMoXG4gIHBhY2thZ2VzOiBKc2lpTW9kdWxlW10sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICB1cGRhdGVOcG1JZ25vcmUocGtnLm1vZHVsZURpcmVjdG9yeSwgcGtnLm91dHB1dERpcmVjdG9yeSksXG4gICAgKSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTnBtSWdub3JlKFxuICBwYWNrYWdlRGlyOiBzdHJpbmcsXG4gIGV4Y2x1ZGVPdXRkaXI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbikge1xuICBjb25zdCBucG1JZ25vcmVQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VEaXIsICcubnBtaWdub3JlJyk7XG4gIGxldCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGxldCBtb2RpZmllZCA9IGZhbHNlO1xuICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhucG1JZ25vcmVQYXRoKSkge1xuICAgIGxpbmVzID0gKGF3YWl0IGZzLnJlYWRGaWxlKG5wbUlnbm9yZVBhdGgpKS50b1N0cmluZygpLnNwbGl0KCdcXG4nKTtcbiAgfVxuXG4gIC8vIGlmIHRoaXMgaXMgYSBmcmVzaCAubnBtaWdub3JlLCB3ZSBjYW4gYmUgYSBiaXQgbW9yZSBvcGluaW9uYXRlZFxuICAvLyBvdGhlcndpc2UsIHdlIGFkZCBqdXN0IGFkZCBzdHVmZiB0aGF0J3MgY3JpdGljYWxcbiAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUgdHlwZXNjcmlwdCBzb3VyY2UgYW5kIGNvbmZpZycsXG4gICAgICAnKi50cycsXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgKTtcbiAgICBpbmNsdWRlUGF0dGVybihcbiAgICAgICdJbmNsdWRlIGphdmFzY3JpcHQgZmlsZXMgYW5kIHR5cGVzY3JpcHQgZGVjbGFyYXRpb25zJyxcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLmQudHMnLFxuICAgICk7XG4gIH1cblxuICBpZiAoZXhjbHVkZU91dGRpcikge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUganNpaSBvdXRkaXInLFxuICAgICAgcGF0aC5yZWxhdGl2ZShwYWNrYWdlRGlyLCBleGNsdWRlT3V0ZGlyKSxcbiAgICApO1xuICB9XG5cbiAgaW5jbHVkZVBhdHRlcm4oJ0luY2x1ZGUgLmpzaWknLCBzcGVjLlNQRUNfRklMRV9OQU1FKTtcblxuICBpZiAobW9kaWZpZWQpIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUobnBtSWdub3JlUGF0aCwgYCR7bGluZXMuam9pbignXFxuJyl9XFxuYCk7XG4gICAgbG9nZ2luZy5pbmZvKCdVcGRhdGVkIC5ucG1pZ25vcmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluY2x1ZGVQYXR0ZXJuKGNvbW1lbnQ6IHN0cmluZywgLi4ucGF0dGVybnM6IHN0cmluZ1tdKSB7XG4gICAgZXhjbHVkZVBhdHRlcm4oY29tbWVudCwgLi4ucGF0dGVybnMubWFwKChwKSA9PiBgISR7cH1gKSk7XG4gIH1cblxuICBmdW5jdGlvbiBleGNsdWRlUGF0dGVybihjb21tZW50OiBzdHJpbmcsIC4uLnBhdHRlcm5zOiBzdHJpbmdbXSkge1xuICAgIGxldCBmaXJzdCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICBpZiAobGluZXMuaW5jbHVkZXMocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGluIC5ucG1pZ25vcmVcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgIGxpbmVzLnB1c2goYCMgJHtjb21tZW50fWApO1xuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsaW5lcy5wdXNoKHBhdHRlcm4pO1xuICAgIH1cbiAgfVxufVxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLW1vZHVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJucG0tbW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUU3QiwwQ0FBMEM7QUFDMUMsMkNBQXlDO0FBQ3pDLHlDQUF5RDtBQUN6RCxpQ0FBa0U7QUFFbEU7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FDbkMsV0FBOEIsRUFDOUIsT0FBZ0I7SUFFaEIsTUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sMEJBQWUsQ0FDcEIsR0FBRyxFQUNILENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUN6QixDQUFDO0lBRUYsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFXLEVBQUUsTUFBZTs7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6QixPQUFPO1NBQ1IsQ0FBQyxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLFFBQUMsR0FBRyxDQUFDLElBQUksMENBQUUsTUFBTSxDQUFBLElBQUksUUFBQyxHQUFHLENBQUMsSUFBSSwwQ0FBRSxPQUFPLENBQUEsRUFBRTtZQUMzQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLElBQUksS0FBSyxDQUNiLDZCQUE2QixRQUFRLG9DQUFvQyxDQUMxRSxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLDJDQUEyQzthQUNwRDtTQUNGO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUNiLDhDQUE4QyxJQUFJLENBQUMsU0FBUyxDQUMxRCxHQUFHLEVBQ0gsU0FBUyxFQUNULENBQUMsQ0FDRixFQUFFLENBQ0osQ0FBQztTQUNIO1FBRUQsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxNQUFNLENBQUMsSUFBSSxPQUFDLEdBQUcsQ0FBQyxZQUFZLG1DQUFJLEVBQUUsQ0FBQztZQUN0QyxHQUFHLE1BQU0sQ0FBQyxJQUFJLE9BQUMsR0FBRyxDQUFDLGdCQUFnQixtQ0FBSSxFQUFFLENBQUM7WUFDMUMsR0FBRyxNQUFNLENBQUMsSUFBSSxPQUFDLEdBQUcsQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQztTQUMxQyxDQUFDO1FBRUYsNERBQTREO1FBQzVELElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLHNCQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDO2lCQUNYO2dCQUVELElBQUk7b0JBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSw4QkFBdUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQzVELE9BQU8sQ0FBQyxNQUFNLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDNUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YscUZBQXFGO29CQUNyRixJQUNFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDLFFBQVEsQ0FDN0QsQ0FBQyxDQUFDLElBQUksQ0FDUCxFQUNEO3dCQUNBLE1BQU0sQ0FBQyxDQUFDO3FCQUNUO29CQUNELE9BQU8sRUFBRSxDQUFDO2lCQUNYO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO1FBRUQsZ0hBQWdIO1FBQ2hILE1BQU0sZUFBZSxHQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7UUFFeEYsR0FBRyxDQUFDLElBQUksQ0FDTixJQUFJLHNCQUFVLENBQUM7WUFDYixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDZCxlQUFlLEVBQUUsUUFBUTtZQUN6QixzQkFBc0IsRUFBRSxlQUFlO1lBQ3ZDLGdCQUFnQixFQUFFLE9BQU87WUFDekIsZUFBZTtTQUNoQixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBM0ZELDBDQTJGQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsUUFBc0I7SUFFdEIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNuQixlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLENBQzFELENBQ0YsQ0FBQztBQUNKLENBQUM7QUFSRCxrREFRQztBQUVELEtBQUssVUFBVSxlQUFlLENBQzVCLFVBQWtCLEVBQ2xCLGFBQWlDO0lBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFELElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFDaEMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQ3RDLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuRTtJQUVELGtFQUFrRTtJQUNsRSxtREFBbUQ7SUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN0QixjQUFjLENBQ1osc0NBQXNDLEVBQ3RDLE1BQU0sRUFDTixlQUFlLENBQ2hCLENBQUM7UUFDRixjQUFjLENBQ1osc0RBQXNELEVBQ3RELE1BQU0sRUFDTixRQUFRLENBQ1QsQ0FBQztLQUNIO0lBRUQsSUFBSSxhQUFhLEVBQUU7UUFDakIsY0FBYyxDQUNaLHFCQUFxQixFQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FDekMsQ0FBQztLQUNIO0lBRUQsY0FBYyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckQsSUFBSSxRQUFRLEVBQUU7UUFDWixNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsU0FBUyxjQUFjLENBQUMsT0FBZSxFQUFFLEdBQUcsUUFBa0I7UUFDNUQsY0FBYyxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFlLEVBQUUsR0FBRyxRQUFrQjtRQUM1RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixPQUFPLENBQUMsd0JBQXdCO2FBQ2pDO1lBRUQsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVoQixJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ2Y7WUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzcGVjIGZyb20gJ0Bqc2lpL3NwZWMnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tICcuLi9saWIvbG9nZ2luZyc7XG5pbXBvcnQgeyBKc2lpTW9kdWxlIH0gZnJvbSAnLi9wYWNrYWdpbmcnO1xuaW1wb3J0IHsgdG9wb2xvZ2ljYWxTb3J0LCBUb3Bvc29ydGVkIH0gZnJvbSAnLi90b3Bvc29ydCc7XG5pbXBvcnQgeyBmaW5kRGVwZW5kZW5jeURpcmVjdG9yeSwgaXNCdWlsdGluTW9kdWxlIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBGaW5kIGFsbCBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBwYWNrYWdlcmRcbiAqXG4gKiBJZiB0aGUgaW5wdXQgbGlzdCBpcyBlbXB0eSwgaW5jbHVkZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4gKlxuICogVGhlIHJlc3VsdCBpcyB0b3BvbG9naWNhbGx5IHNvcnRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRKc2lpTW9kdWxlcyhcbiAgZGlyZWN0b3JpZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICByZWN1cnNlOiBib29sZWFuLFxuKTogUHJvbWlzZTxUb3Bvc29ydGVkPEpzaWlNb2R1bGU+PiB7XG4gIGNvbnN0IHJldDogSnNpaU1vZHVsZVtdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCB0b1Zpc2l0ID0gZGlyZWN0b3JpZXMubGVuZ3RoID4gMCA/IGRpcmVjdG9yaWVzIDogWycuJ107XG4gIGF3YWl0IFByb21pc2UuYWxsKHRvVmlzaXQubWFwKChkaXIpID0+IHZpc2l0UGFja2FnZShkaXIsIHRydWUpKSk7XG5cbiAgcmV0dXJuIHRvcG9sb2dpY2FsU29ydChcbiAgICByZXQsXG4gICAgKG0pID0+IG0ubmFtZSxcbiAgICAobSkgPT4gbS5kZXBlbmRlbmN5TmFtZXMsXG4gICk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gdmlzaXRQYWNrYWdlKGRpcjogc3RyaW5nLCBpc1Jvb3Q6IGJvb2xlYW4pIHtcbiAgICBjb25zdCByZWFsUGF0aCA9IGF3YWl0IGZzLnJlYWxwYXRoKGRpcik7XG4gICAgaWYgKHZpc2l0ZWQuaGFzKHJlYWxQYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gQWxyZWFkeSB2aXNpdGVkXG4gICAgdmlzaXRlZC5hZGQocmVhbFBhdGgpO1xuXG4gICAgY29uc3QgcGtnID0gYXdhaXQgZnMucmVhZEpzb24ocGF0aC5qb2luKHJlYWxQYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgIGlmICghcGtnLmpzaWk/Lm91dGRpciB8fCAhcGtnLmpzaWk/LnRhcmdldHMpIHtcbiAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIFwianNpaVwiIHNlY3Rpb24gaW4gJHtyZWFsUGF0aH0uIEV4cGVjdGluZyBcIm91dGRpclwiIGFuZCBcInRhcmdldHNcImAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47IC8vIGp1c3QgbW92ZSBvbiwgdGhpcyBpcyBub3QgYSBqc2lpIHBhY2thZ2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBrZy5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBwYWNrYWdlLmpzb24gZG9lcyBub3QgaGF2ZSBhICduYW1lJyBmaWVsZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwa2csXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgLi4uT2JqZWN0LmtleXMocGtnLmRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cuZGV2RGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICBdO1xuXG4gICAgLy8gaWYgLS1yZWN1cnNlIGlzIHNldCwgZmluZCBkZXBlbmRlbmN5IGRpcnMgYW5kIGJ1aWxkIHRoZW0uXG4gICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBkZXBlbmRlbmN5TmFtZXMuZmxhdE1hcChhc3luYyAoZGVwKSA9PiB7XG4gICAgICAgICAgaWYgKGlzQnVpbHRpbk1vZHVsZShkZXApKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlcERpciA9IGF3YWl0IGZpbmREZXBlbmRlbmN5RGlyZWN0b3J5KGRlcCwgcmVhbFBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIFthd2FpdCB2aXNpdFBhY2thZ2UoZGVwRGlyLCBmYWxzZSldO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgbW9kdWxlcyBsaWtlIGBAdHlwZXMvbm9kZWAgY2Fubm90IGJlIHJlcXVpcmUoKWQsIGJ1dCB3ZSBhbHNvIGRvbid0IG5lZWQgdGhlbS5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIVsnTU9EVUxFX05PVF9GT1VORCcsICdFUlJfUEFDS0FHRV9QQVRIX05PVF9FWFBPUlRFRCddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIGUuY29kZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gb3V0ZGlyIGlzIGVpdGhlciBieSBwYWNrYWdlLmpzb24vanNpaS5vdXRkaXIgKHJlbGF0aXZlIHRvIHBhY2thZ2Ugcm9vdCkgb3IgdmlhIGNvbW1hbmQgbGluZSAocmVsYXRpdmUgdG8gY3dkKVxuICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9XG4gICAgICBwa2cuanNpaS5vdXRkaXIgJiYgcGF0aC5yZXNvbHZlKHJlYWxQYXRoLCBwa2cuanNpaS5vdXRkaXIpO1xuICAgIGNvbnN0IHRhcmdldHMgPSBbLi4uT2JqZWN0LmtleXMocGtnLmpzaWkudGFyZ2V0cyksICdqcyddOyAvLyBcImpzXCIgaXMgYW4gaW1wbGljaXQgdGFyZ2V0LlxuXG4gICAgcmV0LnB1c2goXG4gICAgICBuZXcgSnNpaU1vZHVsZSh7XG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBtb2R1bGVEaXJlY3Rvcnk6IHJlYWxQYXRoLFxuICAgICAgICBkZWZhdWx0T3V0cHV0RGlyZWN0b3J5OiBvdXRwdXREaXJlY3RvcnksXG4gICAgICAgIGF2YWlsYWJsZVRhcmdldHM6IHRhcmdldHMsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFsbE5wbUlnbm9yZXMoXG4gIHBhY2thZ2VzOiBKc2lpTW9kdWxlW10sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICB1cGRhdGVOcG1JZ25vcmUocGtnLm1vZHVsZURpcmVjdG9yeSwgcGtnLm91dHB1dERpcmVjdG9yeSksXG4gICAgKSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTnBtSWdub3JlKFxuICBwYWNrYWdlRGlyOiBzdHJpbmcsXG4gIGV4Y2x1ZGVPdXRkaXI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbikge1xuICBjb25zdCBucG1JZ25vcmVQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VEaXIsICcubnBtaWdub3JlJyk7XG4gIGxldCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGxldCBtb2RpZmllZCA9IGZhbHNlO1xuICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhucG1JZ25vcmVQYXRoKSkge1xuICAgIGxpbmVzID0gKGF3YWl0IGZzLnJlYWRGaWxlKG5wbUlnbm9yZVBhdGgpKS50b1N0cmluZygpLnNwbGl0KCdcXG4nKTtcbiAgfVxuXG4gIC8vIGlmIHRoaXMgaXMgYSBmcmVzaCAubnBtaWdub3JlLCB3ZSBjYW4gYmUgYSBiaXQgbW9yZSBvcGluaW9uYXRlZFxuICAvLyBvdGhlcndpc2UsIHdlIGFkZCBqdXN0IGFkZCBzdHVmZiB0aGF0J3MgY3JpdGljYWxcbiAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUgdHlwZXNjcmlwdCBzb3VyY2UgYW5kIGNvbmZpZycsXG4gICAgICAnKi50cycsXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgKTtcbiAgICBpbmNsdWRlUGF0dGVybihcbiAgICAgICdJbmNsdWRlIGphdmFzY3JpcHQgZmlsZXMgYW5kIHR5cGVzY3JpcHQgZGVjbGFyYXRpb25zJyxcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLmQudHMnLFxuICAgICk7XG4gIH1cblxuICBpZiAoZXhjbHVkZU91dGRpcikge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUganNpaSBvdXRkaXInLFxuICAgICAgcGF0aC5yZWxhdGl2ZShwYWNrYWdlRGlyLCBleGNsdWRlT3V0ZGlyKSxcbiAgICApO1xuICB9XG5cbiAgaW5jbHVkZVBhdHRlcm4oJ0luY2x1ZGUgLmpzaWknLCBzcGVjLlNQRUNfRklMRV9OQU1FKTtcblxuICBpZiAobW9kaWZpZWQpIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUobnBtSWdub3JlUGF0aCwgYCR7bGluZXMuam9pbignXFxuJyl9XFxuYCk7XG4gICAgbG9nZ2luZy5pbmZvKCdVcGRhdGVkIC5ucG1pZ25vcmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluY2x1ZGVQYXR0ZXJuKGNvbW1lbnQ6IHN0cmluZywgLi4ucGF0dGVybnM6IHN0cmluZ1tdKSB7XG4gICAgZXhjbHVkZVBhdHRlcm4oY29tbWVudCwgLi4ucGF0dGVybnMubWFwKChwKSA9PiBgISR7cH1gKSk7XG4gIH1cblxuICBmdW5jdGlvbiBleGNsdWRlUGF0dGVybihjb21tZW50OiBzdHJpbmcsIC4uLnBhdHRlcm5zOiBzdHJpbmdbXSkge1xuICAgIGxldCBmaXJzdCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICBpZiAobGluZXMuaW5jbHVkZXMocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGluIC5ucG1pZ25vcmVcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgIGxpbmVzLnB1c2goYCMgJHtjb21tZW50fWApO1xuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsaW5lcy5wdXNoKHBhdHRlcm4pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -6,4 +6,4 @@
6
6
  setuptools~=59.1.1 # build-system
7
7
  wheel~=0.37.0 # build-system
8
8
 
9
- twine~=3.6.0
9
+ twine~=3.7.0
package/lib/util.d.ts CHANGED
@@ -1,12 +1,35 @@
1
1
  /// <reference types="node" />
2
2
  import { SpawnOptions } from 'child_process';
3
3
  /**
4
- * Given an npm package directory and a dependency name, returns the package directory of the dep.
5
- * @param packageDir the root of the package declaring the dependency.
6
- * @param dependencyName the name of the dependency to be resolved.
7
- * @return the resolved directory path.
4
+ * Find the directory that contains a given dependency, identified by its 'package.json', from a starting search directory
5
+ *
6
+ * (This code is duplicated among jsii/jsii-pacmak/jsii-reflect. Changes should be done in all
7
+ * 3 locations, and we should unify these at some point: https://github.com/aws/jsii/issues/3236)
8
+ */
9
+ export declare function findDependencyDirectory(dependencyName: string, searchStart: string): Promise<string>;
10
+ /**
11
+ * Whether the given dependency is a built-in
12
+ *
13
+ * Some dependencies that occur in `package.json` are also built-ins in modern Node
14
+ * versions (most egregious example: 'punycode'). Detect those and filter them out.
15
+ */
16
+ export declare function isBuiltinModule(depName: string): any;
17
+ /**
18
+ * Find the package.json for a given package upwards from the given directory
19
+ *
20
+ * (This code is duplicated among jsii/jsii-pacmak/jsii-reflect. Changes should be done in all
21
+ * 3 locations, and we should unify these at some point: https://github.com/aws/jsii/issues/3236)
22
+ */
23
+ export declare function findPackageJsonUp(packageName: string, directory: string): Promise<string | undefined>;
24
+ /**
25
+ * Find a directory up the tree from a starting directory matching a condition
26
+ *
27
+ * Will return `undefined` if no directory matches
28
+ *
29
+ * (This code is duplicated among jsii/jsii-pacmak/jsii-reflect. Changes should be done in all
30
+ * 3 locations, and we should unify these at some point: https://github.com/aws/jsii/issues/3236)
8
31
  */
9
- export declare function resolveDependencyDirectory(packageDir: string, dependencyName: string): string;
32
+ export declare function findUp(directory: string, pred: (dir: string) => Promise<boolean>): Promise<string | undefined>;
10
33
  export interface RetryOptions {
11
34
  /**
12
35
  * The maximum amount of attempts to make.
package/lib/util.js CHANGED
@@ -1,22 +1,81 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flatten = exports.wait = exports.filterAsync = exports.setExtend = exports.Scratch = exports.slugify = exports.shell = exports.retry = exports.AllAttemptsFailed = exports.resolveDependencyDirectory = void 0;
3
+ exports.flatten = exports.wait = exports.filterAsync = exports.setExtend = exports.Scratch = exports.slugify = exports.shell = exports.retry = exports.AllAttemptsFailed = exports.findUp = exports.findPackageJsonUp = exports.isBuiltinModule = exports.findDependencyDirectory = void 0;
4
4
  const child_process_1 = require("child_process");
5
5
  const fs = require("fs-extra");
6
6
  const os = require("os");
7
7
  const path = require("path");
8
8
  const logging = require("./logging");
9
9
  /**
10
- * Given an npm package directory and a dependency name, returns the package directory of the dep.
11
- * @param packageDir the root of the package declaring the dependency.
12
- * @param dependencyName the name of the dependency to be resolved.
13
- * @return the resolved directory path.
10
+ * Find the directory that contains a given dependency, identified by its 'package.json', from a starting search directory
11
+ *
12
+ * (This code is duplicated among jsii/jsii-pacmak/jsii-reflect. Changes should be done in all
13
+ * 3 locations, and we should unify these at some point: https://github.com/aws/jsii/issues/3236)
14
+ */
15
+ async function findDependencyDirectory(dependencyName, searchStart) {
16
+ // Explicitly do not use 'require("dep/package.json")' because that will fail if the
17
+ // package does not export that particular file.
18
+ const entryPoint = require.resolve(dependencyName, {
19
+ paths: [searchStart],
20
+ });
21
+ // Search up from the given directory, looking for a package.json that matches
22
+ // the dependency name (so we don't accidentally find stray 'package.jsons').
23
+ const depPkgJsonPath = await findPackageJsonUp(dependencyName, path.dirname(entryPoint));
24
+ if (!depPkgJsonPath) {
25
+ throw new Error(`Could not find dependency '${dependencyName}' from '${searchStart}'`);
26
+ }
27
+ return depPkgJsonPath;
28
+ }
29
+ exports.findDependencyDirectory = findDependencyDirectory;
30
+ /**
31
+ * Whether the given dependency is a built-in
32
+ *
33
+ * Some dependencies that occur in `package.json` are also built-ins in modern Node
34
+ * versions (most egregious example: 'punycode'). Detect those and filter them out.
35
+ */
36
+ function isBuiltinModule(depName) {
37
+ // eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/no-var-requires
38
+ const { builtinModules } = require('module');
39
+ return (builtinModules !== null && builtinModules !== void 0 ? builtinModules : []).includes(depName);
40
+ }
41
+ exports.isBuiltinModule = isBuiltinModule;
42
+ /**
43
+ * Find the package.json for a given package upwards from the given directory
44
+ *
45
+ * (This code is duplicated among jsii/jsii-pacmak/jsii-reflect. Changes should be done in all
46
+ * 3 locations, and we should unify these at some point: https://github.com/aws/jsii/issues/3236)
14
47
  */
15
- function resolveDependencyDirectory(packageDir, dependencyName) {
16
- const lookupPaths = [path.join(packageDir, 'node_modules')];
17
- return path.dirname(require.resolve(`${dependencyName}/package.json`, { paths: lookupPaths }));
48
+ async function findPackageJsonUp(packageName, directory) {
49
+ return findUp(directory, async (dir) => {
50
+ const pjFile = path.join(dir, 'package.json');
51
+ return ((await fs.pathExists(pjFile)) &&
52
+ (await fs.readJson(pjFile)).name === packageName);
53
+ });
54
+ }
55
+ exports.findPackageJsonUp = findPackageJsonUp;
56
+ /**
57
+ * Find a directory up the tree from a starting directory matching a condition
58
+ *
59
+ * Will return `undefined` if no directory matches
60
+ *
61
+ * (This code is duplicated among jsii/jsii-pacmak/jsii-reflect. Changes should be done in all
62
+ * 3 locations, and we should unify these at some point: https://github.com/aws/jsii/issues/3236)
63
+ */
64
+ async function findUp(directory, pred) {
65
+ // eslint-disable-next-line no-constant-condition
66
+ while (true) {
67
+ // eslint-disable-next-line no-await-in-loop
68
+ if (await pred(directory)) {
69
+ return directory;
70
+ }
71
+ const parent = path.dirname(directory);
72
+ if (parent === directory) {
73
+ return undefined;
74
+ }
75
+ directory = parent;
76
+ }
18
77
  }
19
- exports.resolveDependencyDirectory = resolveDependencyDirectory;
78
+ exports.findUp = findUp;
20
79
  class AllAttemptsFailed extends Error {
21
80
  constructor(callback, errors) {
22
81
  super(`All attempts failed. Last error: ${errors[errors.length - 1].message}`);
@@ -218,4 +277,4 @@ function flatten(xs) {
218
277
  return Array.prototype.concat.call([], ...xs);
219
278
  }
220
279
  exports.flatten = flatten;
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQW9EO0FBQ3BELCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsNkJBQTZCO0FBRTdCLHFDQUFxQztBQUVyQzs7Ozs7R0FLRztBQUNILFNBQWdCLDBCQUEwQixDQUN4QyxVQUFrQixFQUNsQixjQUFzQjtJQUV0QixNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsY0FBYyxlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FDMUUsQ0FBQztBQUNKLENBQUM7QUFSRCxnRUFRQztBQTZDRCxNQUFhLGlCQUFxQixTQUFRLEtBQUs7SUFDN0MsWUFDa0IsUUFBMEIsRUFDMUIsTUFBd0I7UUFFeEMsS0FBSyxDQUNILG9DQUFvQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FDeEUsQ0FBQztRQUxjLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQWtCO0lBSzFDLENBQUM7Q0FDRjtBQVRELDhDQVNDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxLQUFLLENBQ3pCLEVBQW9CLEVBQ3BCLE9BQXFCLEVBQUUsRUFDdkIsU0FBd0MsSUFBSTs7SUFFNUMsSUFBSSxZQUFZLFNBQUcsSUFBSSxDQUFDLFdBQVcsbUNBQUksQ0FBQyxDQUFDO0lBQ3pDLElBQUksU0FBUyxTQUFHLElBQUksQ0FBQyx1QkFBdUIsbUNBQUksR0FBRyxDQUFDO0lBQ3BELE1BQU0sV0FBVyxTQUFHLElBQUksQ0FBQyxpQkFBaUIsbUNBQUksQ0FBQyxDQUFDO0lBRWhE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QyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFSRCxrQ0FRQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsRUFBVTtJQUNuQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUZELG9CQUVDO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLEVBQWtCO0lBQzNDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFGRCwwQkFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcblxuLyoqXG4gKiBHaXZlbiBhbiBucG0gcGFja2FnZSBkaXJlY3RvcnkgYW5kIGEgZGVwZW5kZW5jeSBuYW1lLCByZXR1cm5zIHRoZSBwYWNrYWdlIGRpcmVjdG9yeSBvZiB0aGUgZGVwLlxuICogQHBhcmFtIHBhY2thZ2VEaXIgICAgIHRoZSByb290IG9mIHRoZSBwYWNrYWdlIGRlY2xhcmluZyB0aGUgZGVwZW5kZW5jeS5cbiAqIEBwYXJhbSBkZXBlbmRlbmN5TmFtZSB0aGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeSB0byBiZSByZXNvbHZlZC5cbiAqIEByZXR1cm4gdGhlIHJlc29sdmVkIGRpcmVjdG9yeSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlcGVuZGVuY3lEaXJlY3RvcnkoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgZGVwZW5kZW5jeU5hbWU6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGxvb2t1cFBhdGhzID0gW3BhdGguam9pbihwYWNrYWdlRGlyLCAnbm9kZV9tb2R1bGVzJyldO1xuICByZXR1cm4gcGF0aC5kaXJuYW1lKFxuICAgIHJlcXVpcmUucmVzb2x2ZShgJHtkZXBlbmRlbmN5TmFtZX0vcGFja2FnZS5qc29uYCwgeyBwYXRoczogbG9va3VwUGF0aHMgfSksXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBhdHRlbXB0cyB0byBtYWtlLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICBtYXhBdHRlbXB0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgYWZ0ZXIgdGhlIGZpcnN0IGZhaWxlZCBhdHRlbXB0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxNTBcbiAgICovXG4gIGJhY2tvZmZCYXNlTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbXVsdGlwbGllciB0byBhcHBseSBhZnRlciBlYWNoIGZhaWxlZCBhdHRlbXB0cy4gSWYgdGhlIGJhY2tvZmYgYmVmb3JlXG4gICAqIHRoZSBwcmV2aW91cyBhdHRlbXB0IHdhcyBgQmAsIHRoZSBuZXh0IGJhY2tvZmYgaXMgY29tcHV0ZWQgYXNcbiAgICogYEIgKiBiYWNrb2ZmTXVsdGlwbGllcmAsIGNyZWF0aW5nIGFuIGV4cG9uZW50aWFsIHNlcmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgYmFja29mZk11bHRpcGxpZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbm5hbCBjYWxsYmFjayB0aGF0IGdldHMgaW52b2tlZCB3aGVuIGFuIGF0dGVtcHQgZmFpbGVkLiBUaGlzIGNhbiBiZVxuICAgKiB1c2VkIHRvIGdpdmUgdGhlIHVzZXIgaW5kaWNhdGlvbnMgb2Ygd2hhdCBpcyBoYXBwZW5pbmcuXG4gICAqXG4gICAqIFRoaXMgY2FsbGJhY2sgbXVzdCBub3QgdGhyb3cuXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciAgICAgICAgICAgICAgIHRoZSBlcnJvciB0aGF0IGp1c3Qgb2NjdXJyZWRcbiAgICogQHBhcmFtIGF0dGVtcHRzTGVmdCAgICAgICAgdGhlIG51bWJlciBvZiBhdHRlbXB0cyBsZWZ0XG4gICAqIEBwYXJhbSBiYWNrb2ZmTWlsbGlzZWNvbmRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIG9mIGJhY2stb2ZmIHRoYXQgd2lsbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBhd2FpdGVkIGJlZm9yZSBtYWtpbmcgdGhlIG5leHQgYXR0ZW1wdCAoaWZcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUgYXJlIGF0dGVtcHRzIGxlZnQpXG4gICAqL1xuICBvbkZhaWxlZEF0dGVtcHQ/OiAoXG4gICAgZXJyb3I6IHVua25vd24sXG4gICAgYXR0ZW1wdHNMZWZ0OiBudW1iZXIsXG4gICAgYmFja29mZk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICApID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBbGxBdHRlbXB0c0ZhaWxlZDxSPiBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjYWxsYmFjazogKCkgPT4gUHJvbWlzZTxSPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZXJyb3JzOiByZWFkb25seSBFcnJvcltdLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGBBbGwgYXR0ZW1wdHMgZmFpbGVkLiBMYXN0IGVycm9yOiAke2Vycm9yc1tlcnJvcnMubGVuZ3RoIC0gMV0ubWVzc2FnZX1gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGRzIGJhY2stb2ZmIGFuZCByZXRyeSBsb2dpYyBhcm91bmQgdGhlIHByb3ZpZGVkIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSBjYiAgIHRoZSBjYWxsYmFjayB3aGljaCBpcyB0byBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdHMgdGhlIGJhY2tvZmYtYW5kLXJldHJ5IGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBjYmBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5PFI+KFxuICBjYjogKCkgPT4gUHJvbWlzZTxSPixcbiAgb3B0czogUmV0cnlPcHRpb25zID0ge30sXG4gIHdhaXRlcjogKG1zOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gPSB3YWl0LFxuKTogUHJvbWlzZTxSPiB7XG4gIGxldCBhdHRlbXB0c0xlZnQgPSBvcHRzLm1heEF0dGVtcHRzID8/IDU7XG4gIGxldCBiYWNrb2ZmTXMgPSBvcHRzLmJhY2tvZmZCYXNlTWlsbGlzZWNvbmRzID8/IDE1MDtcbiAgY29uc3QgYmFja29mZk11bHQgPSBvcHRzLmJhY2tvZmZNdWx0aXBsaWVyID8/IDI7XG5cbiAgLy8gQ2hlY2sgZm9yIGluY29ycmVjdCB1c2FnZVxuICBpZiAoYXR0ZW1wdHNMZWZ0IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21heFRyaWVzIG11c3QgYmUgPiAwJyk7XG4gIH1cbiAgaWYgKGJhY2tvZmZNcyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWNrb2ZmQmFzZU1pbGxpc2Vjb25kcyBtdXN0IGJlID4gMCcpO1xuICB9XG4gIGlmIChiYWNrb2ZmTXVsdCA8PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWNrb2ZmTXVsdGlwbGllciBtdXN0IGJlID4gMScpO1xuICB9XG5cbiAgY29uc3QgZXJyb3JzID0gbmV3IEFycmF5PEVycm9yPigpO1xuICB3aGlsZSAoYXR0ZW1wdHNMZWZ0ID4gMCkge1xuICAgIGF0dGVtcHRzTGVmdC0tO1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgcmV0dXJuIGF3YWl0IGNiKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgIGlmIChvcHRzLm9uRmFpbGVkQXR0ZW1wdCAhPSBudWxsKSB7XG4gICAgICAgIG9wdHMub25GYWlsZWRBdHRlbXB0KGVycm9yLCBhdHRlbXB0c0xlZnQsIGJhY2tvZmZNcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhdHRlbXB0c0xlZnQgPiAwKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgYXdhaXQgd2FpdGVyKGJhY2tvZmZNcykudGhlbigoKSA9PiAoYmFja29mZk1zICo9IGJhY2tvZmZNdWx0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQWxsQXR0ZW1wdHNGYWlsZWQoY2IsIGVycm9ycykpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsT3B0aW9ucyBleHRlbmRzIE9taXQ8U3Bhd25PcHRpb25zLCAnc2hlbGwnIHwgJ3N0ZGlvJz4ge1xuICAvKipcbiAgICogQ29uZmlndXJlIGluLWxpbmUgcmV0cmllcyBpZiB0aGUgZXhlY3V0aW9uIGZhaWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJldHJpZXNcbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5PzogUmV0cnlPcHRpb25zO1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3Mgd2l0aCB0aGUgcHJvdmlkZWQgY29tbWFuZCBhbmQgYXJndW1lbnRzLiBUaGUgY2hpbGRcbiAqIHByb2Nlc3MgaXMgYWx3YXlzIHNwYXduZWQgdXNpbmcgYHNoZWxsOiB0cnVlYCwgYW5kIHRoZSBjb250ZW50cyBvZlxuICogYHByb2Nlc3MuZW52YCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBgZW52YCBzcGF3biBvcHRpb24gKHZhbHVlc1xuICogcHJvdmlkZWQgaW4gYG9wdGlvbnMuZW52YCBjYW4gb3ZlcnJpZGUgdGhvc2UpLlxuICpcbiAqIEBwYXJhbSBjbWQgICAgIHRoZSBjb21tYW5kIHRvIHNoZWxsIG91dCB0by5cbiAqIEBwYXJhbSBhcmdzICAgIHRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgY21kYFxuICogQHBhcmFtIG9wdGlvbnMgYW55IG9wdGlvbnMgdG8gcGFzcyB0byBgc3Bhd25gXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGVsbChcbiAgY21kOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICB7IHJldHJ5OiByZXRyeU9wdGlvbnMsIC4uLm9wdGlvbnMgfTogU2hlbGxPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhc3luYyBmdW5jdGlvbiBzcGF3bjEoKSB7XG4gICAgbG9nZ2luZy5kZWJ1ZyhjbWQsIGFyZ3Muam9pbignICcpLCBKU09OLnN0cmluZ2lmeShvcHRpb25zKSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKG9rLCBrbykgPT4ge1xuICAgICAgY29uc3QgY2hpbGQgPSBzcGF3bihjbWQsIGFyZ3MsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgc2hlbGw6IHRydWUsXG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uKG9wdGlvbnMuZW52ID8/IHt9KSB9LFxuICAgICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0ZG91dCA9IG5ldyBBcnJheTxCdWZmZXI+KCk7XG4gICAgICBjb25zdCBzdGRlcnIgPSBuZXcgQXJyYXk8QnVmZmVyPigpO1xuICAgICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICAgIGlmIChsb2dnaW5nLmxldmVsID49IGxvZ2dpbmcuTEVWRUxfU0lMTFkpIHtcbiAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaHVuayk7IC8vIG5vdGljZSAtIHdlIGVtaXQgYWxsIGJ1aWxkIG91dHB1dCB0byBzdGRlcnJcbiAgICAgICAgfVxuICAgICAgICBzdGRvdXQucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICAgICAgfSk7XG4gICAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgICAgaWYgKGxvZ2dpbmcubGV2ZWwgPj0gbG9nZ2luZy5MRVZFTF9TSUxMWSkge1xuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICBzdGRlcnIucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICAgICAgfSk7XG4gICAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgICAgLy8gTXVzdCB1c2UgQ0xPU0UgaW5zdGVhZCBvZiBFWElUOyBFWElUIG1heSBmaXJlIHdoaWxlIHRoZXJlIGlzIHN0aWxsIGRhdGEgaW4gdGhlXG4gICAgICAvLyBJL08gcGlwZXMsIHdoaWNoIHdlIHdpbGwgbWlzcyBpZiB3ZSByZXR1cm4gYXQgdGhhdCBwb2ludC5cbiAgICAgIGNoaWxkLm9uY2UoJ2Nsb3NlJywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBjb25zdCBvdXQgPSBCdWZmZXIuY29uY2F0KHN0ZG91dCkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9rKG91dCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyID0gQnVmZmVyLmNvbmNhdChzdGRlcnIpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgICAgICBjb25zdCByZWFzb24gPSBzaWduYWwgIT0gbnVsbCA/IGBzaWduYWwgJHtzaWduYWx9YCA6IGBzdGF0dXMgJHtjb2RlfWA7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtjbWR9ICR7YXJncy5qb2luKCcgJyl9YDtcbiAgICAgICAgcmV0dXJuIGtvKFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgYENvbW1hbmQgKCR7Y29tbWFuZH0pIGZhaWxlZCB3aXRoICR7cmVhc29ufTpgLFxuICAgICAgICAgICAgICAvLyBTVERFUlIgZmlyc3QsIHRoZSBlcnJvIG1lc3NhZ2UgY291bGQgYmUgdHJ1bmNhdGVkIGluIGxvZ3MuXG4gICAgICAgICAgICAgIHByZWZpeChlcnIsICcjU1RERVJSPiAnKSxcbiAgICAgICAgICAgICAgcHJlZml4KG91dCwgJyNTVERPVVQ+ICcpLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIHByZWZpeCh0ZXh0OiBzdHJpbmcsIGFkZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gdGV4dFxuICAgICAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgLm1hcCgobGluZSkgPT4gYCR7YWRkfSR7bGluZX1gKVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXRyeU9wdGlvbnMgIT0gbnVsbCkge1xuICAgIHJldHVybiByZXRyeShzcGF3bjEsIHtcbiAgICAgIC4uLnJldHJ5T3B0aW9ucyxcbiAgICAgIG9uRmFpbGVkQXR0ZW1wdDpcbiAgICAgICAgcmV0cnlPcHRpb25zLm9uRmFpbGVkQXR0ZW1wdCA/P1xuICAgICAgICAoKGVycm9yLCBhdHRlbXB0c0xlZnQsIGJhY2tvZmZNcykgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gZXJyb3I7XG4gICAgICAgICAgY29uc3QgcmV0cnlJbmZvID1cbiAgICAgICAgICAgIGF0dGVtcHRzTGVmdCA+IDBcbiAgICAgICAgICAgICAgPyBgV2FpdGluZyAke2JhY2tvZmZNc30gbXMgYmVmb3JlIHJldHJ5aW5nICgke2F0dGVtcHRzTGVmdH0gYXR0ZW1wdHMgbGVmdClgXG4gICAgICAgICAgICAgIDogJ05vIGF0dGVtcHRzIGxlZnQnO1xuICAgICAgICAgIGxvZ2dpbmcuaW5mbyhcbiAgICAgICAgICAgIGBDb21tYW5kIFwiJHtjbWR9ICR7YXJncy5qb2luKFxuICAgICAgICAgICAgICAnICcsXG4gICAgICAgICAgICApfVwiIGZhaWxlZCB3aXRoICR7bWVzc2FnZX0uICR7cmV0cnlJbmZvfS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBzcGF3bjEoKTtcbn1cblxuLyoqXG4gKiBTdHJpcCBmaWxlc3lzdGVtIHVuc2FmZSBjaGFyYWN0ZXJzIGZyb20gYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWdpZnkoeDogc3RyaW5nKSB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05Xy1dL2csICdfJyk7XG59XG5cbi8qKlxuICogQ2xhc3MgdGhhdCBtYWtlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIGhvbGRzIG9uIHRvIGFuIG9wZXJhdGlvbiBvYmplY3RcbiAqL1xuZXhwb3J0IGNsYXNzIFNjcmF0Y2g8QT4ge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIG1ha2U8QT4oXG4gICAgZmFjdG9yeTogKGRpcjogc3RyaW5nKSA9PiBQcm9taXNlPEE+LFxuICApOiBQcm9taXNlPFNjcmF0Y2g8QT4+O1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIG1ha2U8QT4oZmFjdG9yeTogKGRpcjogc3RyaW5nKSA9PiBBKTogUHJvbWlzZTxTY3JhdGNoPEE+PjtcbiAgcHVibGljIHN0YXRpYyBhc3luYyBtYWtlPEE+KGZhY3Rvcnk6IChkaXI6IHN0cmluZykgPT4gQSB8IFByb21pc2U8QT4pIHtcbiAgICBjb25zdCB0bXBkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ25wbS1wYWNrJykpO1xuICAgIHJldHVybiBuZXcgU2NyYXRjaCh0bXBkaXIsIGF3YWl0IGZhY3RvcnkodG1wZGlyKSwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmYWtlPEE+KGRpcmVjdG9yeTogc3RyaW5nLCBvYmplY3Q6IEEpIHtcbiAgICByZXR1cm4gbmV3IFNjcmF0Y2goZGlyZWN0b3J5LCBvYmplY3QsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjbGVhbnVwQWxsPEE+KHRlbXBEaXJzOiBBcnJheTxTY3JhdGNoPEE+Pikge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRlbXBEaXJzLm1hcCgodCkgPT4gdC5jbGVhbnVwKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBvYmplY3Q6IEEsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYWtlOiBib29sZWFuLFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGNsZWFudXAoKSB7XG4gICAgaWYgKCF0aGlzLmZha2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLnJlbW92ZSh0aGlzLmRpcmVjdG9yeSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdFQlVTWScpIHtcbiAgICAgICAgICAvLyBUaGlzIG9jY2FzaW9uYWxseSBoYXBwZW5zIG9uIFdpbmRvd3MgaWYgd2UgdHJ5IHRvIGNsZWFuIHVwIHRvb1xuICAgICAgICAgIC8vIHF1aWNrbHkgYWZ0ZXIgd2UncmUgZG9uZS4uLiBDb3VsZCBiZSBiZWNhdXNlIHNvbWUgQVYgc29mdHdhcmUgaXNcbiAgICAgICAgICAvLyBzdGlsbCBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgICAgIC8vIFdhaXQgMXMgYW5kIHJldHJ5IG9uY2UhXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBzZXRUaW1lb3V0KG9rLCAxXzAwMCkpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5yZW1vdmUodGhpcy5kaXJlY3RvcnkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBsb2dnaW5nLndhcm4oYFVuYWJsZSB0byBjbGVhbiB1cCAke3RoaXMuZGlyZWN0b3J5fTogJHtlMn1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dpbmcud2FybihgVW5hYmxlIHRvIGNsZWFuIHVwICR7dGhpcy5kaXJlY3Rvcnl9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFeHRlbmQ8QT4oeHM6IFNldDxBPiwgZWxzOiBJdGVyYWJsZTxBPikge1xuICBmb3IgKGNvbnN0IGVsIG9mIGVscykge1xuICAgIHhzLmFkZChlbCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbHRlckFzeW5jPEE+KFxuICB4czogQVtdLFxuICBwcmVkOiAoeDogQSkgPT4gUHJvbWlzZTxib29sZWFuPixcbik6IFByb21pc2U8QVtdPiB7XG4gIGNvbnN0IG1hcHBlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHhzLm1hcChhc3luYyAoeCkgPT4gKHsgeCwgcHJlZDogYXdhaXQgcHJlZCh4KSB9KSksXG4gICk7XG4gIHJldHVybiBtYXBwZWQuZmlsdGVyKCh7IHByZWQgfSkgPT4gcHJlZCkubWFwKCh7IHggfSkgPT4geCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW48QT4oeHM6IHJlYWRvbmx5IEFbXVtdKTogQVtdIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgLi4ueHMpO1xufVxuIl19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQW9EO0FBQ3BELCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsNkJBQTZCO0FBRTdCLHFDQUFxQztBQUVyQzs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsY0FBc0IsRUFDdEIsV0FBbUI7SUFFbkIsb0ZBQW9GO0lBQ3BGLGdEQUFnRDtJQUNoRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtRQUNqRCxLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDckIsQ0FBQyxDQUFDO0lBRUgsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSxNQUFNLGNBQWMsR0FBRyxNQUFNLGlCQUFpQixDQUM1QyxjQUFjLEVBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDekIsQ0FBQztJQUVGLElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYiw4QkFBOEIsY0FBYyxXQUFXLFdBQVcsR0FBRyxDQUN0RSxDQUFDO0tBQ0g7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBeEJELDBEQXdCQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWU7SUFDN0Msb0dBQW9HO0lBQ3BHLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsT0FBTyxDQUFDLGNBQWMsYUFBZCxjQUFjLGNBQWQsY0FBYyxHQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBSkQsMENBSUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsV0FBbUIsRUFDbkIsU0FBaUI7SUFFakIsT0FBTyxNQUFNLENBQUMsU0FBUyxF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LEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDbEQsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFSRCxrQ0FRQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsRUFBVTtJQUNuQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUZELG9CQUVDO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLEVBQWtCO0lBQzNDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFGRCwwQkFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBTcGF3bk9wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcblxuLyoqXG4gKiBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBhIGdpdmVuIGRlcGVuZGVuY3ksIGlkZW50aWZpZWQgYnkgaXRzICdwYWNrYWdlLmpzb24nLCBmcm9tIGEgc3RhcnRpbmcgc2VhcmNoIGRpcmVjdG9yeVxuICpcbiAqIChUaGlzIGNvZGUgaXMgZHVwbGljYXRlZCBhbW9uZyBqc2lpL2pzaWktcGFjbWFrL2pzaWktcmVmbGVjdC4gQ2hhbmdlcyBzaG91bGQgYmUgZG9uZSBpbiBhbGxcbiAqIDMgbG9jYXRpb25zLCBhbmQgd2Ugc2hvdWxkIHVuaWZ5IHRoZXNlIGF0IHNvbWUgcG9pbnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvanNpaS9pc3N1ZXMvMzIzNilcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmREZXBlbmRlbmN5RGlyZWN0b3J5KFxuICBkZXBlbmRlbmN5TmFtZTogc3RyaW5nLFxuICBzZWFyY2hTdGFydDogc3RyaW5nLFxuKSB7XG4gIC8vIEV4cGxpY2l0bHkgZG8gbm90IHVzZSAncmVxdWlyZShcImRlcC9wYWNrYWdlLmpzb25cIiknIGJlY2F1c2UgdGhhdCB3aWxsIGZhaWwgaWYgdGhlXG4gIC8vIHBhY2thZ2UgZG9lcyBub3QgZXhwb3J0IHRoYXQgcGFydGljdWxhciBmaWxlLlxuICBjb25zdCBlbnRyeVBvaW50ID0gcmVxdWlyZS5yZXNvbHZlKGRlcGVuZGVuY3lOYW1lLCB7XG4gICAgcGF0aHM6IFtzZWFyY2hTdGFydF0sXG4gIH0pO1xuXG4gIC8vIFNlYXJjaCB1cCBmcm9tIHRoZSBnaXZlbiBkaXJlY3RvcnksIGxvb2tpbmcgZm9yIGEgcGFja2FnZS5qc29uIHRoYXQgbWF0Y2hlc1xuICAvLyB0aGUgZGVwZW5kZW5jeSBuYW1lIChzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgZmluZCBzdHJheSAncGFja2FnZS5qc29ucycpLlxuICBjb25zdCBkZXBQa2dKc29uUGF0aCA9IGF3YWl0IGZpbmRQYWNrYWdlSnNvblVwKFxuICAgIGRlcGVuZGVuY3lOYW1lLFxuICAgIHBhdGguZGlybmFtZShlbnRyeVBvaW50KSxcbiAgKTtcblxuICBpZiAoIWRlcFBrZ0pzb25QYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENvdWxkIG5vdCBmaW5kIGRlcGVuZGVuY3kgJyR7ZGVwZW5kZW5jeU5hbWV9JyBmcm9tICcke3NlYXJjaFN0YXJ0fSdgLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZGVwUGtnSnNvblBhdGg7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgZ2l2ZW4gZGVwZW5kZW5jeSBpcyBhIGJ1aWx0LWluXG4gKlxuICogU29tZSBkZXBlbmRlbmNpZXMgdGhhdCBvY2N1ciBpbiBgcGFja2FnZS5qc29uYCBhcmUgYWxzbyBidWlsdC1pbnMgaW4gbW9kZXJuIE5vZGVcbiAqIHZlcnNpb25zIChtb3N0IGVncmVnaW91cyBleGFtcGxlOiAncHVueWNvZGUnKS4gRGV0ZWN0IHRob3NlIGFuZCBmaWx0ZXIgdGhlbSBvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0aW5Nb2R1bGUoZGVwTmFtZTogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzLEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3QgeyBidWlsdGluTW9kdWxlcyB9ID0gcmVxdWlyZSgnbW9kdWxlJyk7XG4gIHJldHVybiAoYnVpbHRpbk1vZHVsZXMgPz8gW10pLmluY2x1ZGVzKGRlcE5hbWUpO1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIHBhY2thZ2UuanNvbiBmb3IgYSBnaXZlbiBwYWNrYWdlIHVwd2FyZHMgZnJvbSB0aGUgZ2l2ZW4gZGlyZWN0b3J5XG4gKlxuICogKFRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGFtb25nIGpzaWkvanNpaS1wYWNtYWsvanNpaS1yZWZsZWN0LiBDaGFuZ2VzIHNob3VsZCBiZSBkb25lIGluIGFsbFxuICogMyBsb2NhdGlvbnMsIGFuZCB3ZSBzaG91bGQgdW5pZnkgdGhlc2UgYXQgc29tZSBwb2ludDogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9qc2lpL2lzc3Vlcy8zMjM2KVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFBhY2thZ2VKc29uVXAoXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIGRpcmVjdG9yeTogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBmaW5kVXAoZGlyZWN0b3J5LCBhc3luYyAoZGlyKSA9PiB7XG4gICAgY29uc3QgcGpGaWxlID0gcGF0aC5qb2luKGRpciwgJ3BhY2thZ2UuanNvbicpO1xuICAgIHJldHVybiAoXG4gICAgICAoYXdhaXQgZnMucGF0aEV4aXN0cyhwakZpbGUpKSAmJlxuICAgICAgKGF3YWl0IGZzLnJlYWRKc29uKHBqRmlsZSkpLm5hbWUgPT09IHBhY2thZ2VOYW1lXG4gICAgKTtcbiAgfSk7XG59XG5cbi8qKlxuICogRmluZCBhIGRpcmVjdG9yeSB1cCB0aGUgdHJlZSBmcm9tIGEgc3RhcnRpbmcgZGlyZWN0b3J5IG1hdGNoaW5nIGEgY29uZGl0aW9uXG4gKlxuICogV2lsbCByZXR1cm4gYHVuZGVmaW5lZGAgaWYgbm8gZGlyZWN0b3J5IG1hdGNoZXNcbiAqXG4gKiAoVGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgYW1vbmcganNpaS9qc2lpLXBhY21hay9qc2lpLXJlZmxlY3QuIENoYW5nZXMgc2hvdWxkIGJlIGRvbmUgaW4gYWxsXG4gKiAzIGxvY2F0aW9ucywgYW5kIHdlIHNob3VsZCB1bmlmeSB0aGVzZSBhdCBzb21lIHBvaW50OiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2pzaWkvaXNzdWVzLzMyMzYpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kVXAoXG4gIGRpcmVjdG9yeTogc3RyaW5nLFxuICBwcmVkOiAoZGlyOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj4sXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBpZiAoYXdhaXQgcHJlZChkaXJlY3RvcnkpKSB7XG4gICAgICByZXR1cm4gZGlyZWN0b3J5O1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZGlybmFtZShkaXJlY3RvcnkpO1xuICAgIGlmIChwYXJlbnQgPT09IGRpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZGlyZWN0b3J5ID0gcGFyZW50O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBhdHRlbXB0cyB0byBtYWtlLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICBtYXhBdHRlbXB0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgYWZ0ZXIgdGhlIGZpcnN0IGZhaWxlZCBhdHRlbXB0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxNTBcbiAgICovXG4gIGJhY2tvZmZCYXNlTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbXVsdGlwbGllciB0byBhcHBseSBhZnRlciBlYWNoIGZhaWxlZCBhdHRlbXB0cy4gSWYgdGhlIGJhY2tvZmYgYmVmb3JlXG4gICAqIHRoZSBwcmV2aW91cyBhdHRlbXB0IHdhcyBgQmAsIHRoZSBuZXh0IGJhY2tvZmYgaXMgY29tcHV0ZWQgYXNcbiAgICogYEIgKiBiYWNrb2ZmTXVsdGlwbGllcmAsIGNyZWF0aW5nIGFuIGV4cG9uZW50aWFsIHNlcmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgYmFja29mZk11bHRpcGxpZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbm5hbCBjYWxsYmFjayB0aGF0IGdldHMgaW52b2tlZCB3aGVuIGFuIGF0dGVtcHQgZmFpbGVkLiBUaGlzIGNhbiBiZVxuICAgKiB1c2VkIHRvIGdpdmUgdGhlIHVzZXIgaW5kaWNhdGlvbnMgb2Ygd2hhdCBpcyBoYXBwZW5pbmcuXG4gICAqXG4gICAqIFRoaXMgY2FsbGJhY2sgbXVzdCBub3QgdGhyb3cuXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciAgICAgICAgICAgICAgIHRoZSBlcnJvciB0aGF0IGp1c3Qgb2NjdXJyZWRcbiAgICogQHBhcmFtIGF0dGVtcHRzTGVmdCAgICAgICAgdGhlIG51bWJlciBvZiBhdHRlbXB0cyBsZWZ0XG4gICAqIEBwYXJhbSBiYWNrb2ZmTWlsbGlzZWNvbmRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIG9mIGJhY2stb2ZmIHRoYXQgd2lsbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBhd2FpdGVkIGJlZm9yZSBtYWtpbmcgdGhlIG5leHQgYXR0ZW1wdCAoaWZcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUgYXJlIGF0dGVtcHRzIGxlZnQpXG4gICAqL1xuICBvbkZhaWxlZEF0dGVtcHQ/OiAoXG4gICAgZXJyb3I6IHVua25vd24sXG4gICAgYXR0ZW1wdHNMZWZ0OiBudW1iZXIsXG4gICAgYmFja29mZk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICApID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBbGxBdHRlbXB0c0ZhaWxlZDxSPiBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjYWxsYmFjazogKCkgPT4gUHJvbWlzZTxSPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZXJyb3JzOiByZWFkb25seSBFcnJvcltdLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGBBbGwgYXR0ZW1wdHMgZmFpbGVkLiBMYXN0IGVycm9yOiAke2Vycm9yc1tlcnJvcnMubGVuZ3RoIC0gMV0ubWVzc2FnZX1gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGRzIGJhY2stb2ZmIGFuZCByZXRyeSBsb2dpYyBhcm91bmQgdGhlIHByb3ZpZGVkIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSBjYiAgIHRoZSBjYWxsYmFjayB3aGljaCBpcyB0byBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdHMgdGhlIGJhY2tvZmYtYW5kLXJldHJ5IGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBjYmBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5PFI+KFxuICBjYjogKCkgPT4gUHJvbWlzZTxSPixcbiAgb3B0czogUmV0cnlPcHRpb25zID0ge30sXG4gIHdhaXRlcjogKG1zOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gPSB3YWl0LFxuKTogUHJvbWlzZTxSPiB7XG4gIGxldCBhdHRlbXB0c0xlZnQgPSBvcHRzLm1heEF0dGVtcHRzID8/IDU7XG4gIGxldCBiYWNrb2ZmTXMgPSBvcHRzLmJhY2tvZmZCYXNlTWlsbGlzZWNvbmRzID8/IDE1MDtcbiAgY29uc3QgYmFja29mZk11bHQgPSBvcHRzLmJhY2tvZmZNdWx0aXBsaWVyID8/IDI7XG5cbiAgLy8gQ2hlY2sgZm9yIGluY29ycmVjdCB1c2FnZVxuICBpZiAoYXR0ZW1wdHNMZWZ0IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21heFRyaWVzIG11c3QgYmUgPiAwJyk7XG4gIH1cbiAgaWYgKGJhY2tvZmZNcyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWNrb2ZmQmFzZU1pbGxpc2Vjb25kcyBtdXN0IGJlID4gMCcpO1xuICB9XG4gIGlmIChiYWNrb2ZmTXVsdCA8PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWNrb2ZmTXVsdGlwbGllciBtdXN0IGJlID4gMScpO1xuICB9XG5cbiAgY29uc3QgZXJyb3JzID0gbmV3IEFycmF5PEVycm9yPigpO1xuICB3aGlsZSAoYXR0ZW1wdHNMZWZ0ID4gMCkge1xuICAgIGF0dGVtcHRzTGVmdC0tO1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgcmV0dXJuIGF3YWl0IGNiKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgIGlmIChvcHRzLm9uRmFpbGVkQXR0ZW1wdCAhPSBudWxsKSB7XG4gICAgICAgIG9wdHMub25GYWlsZWRBdHRlbXB0KGVycm9yLCBhdHRlbXB0c0xlZnQsIGJhY2tvZmZNcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhdHRlbXB0c0xlZnQgPiAwKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgYXdhaXQgd2FpdGVyKGJhY2tvZmZNcykudGhlbigoKSA9PiAoYmFja29mZk1zICo9IGJhY2tvZmZNdWx0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQWxsQXR0ZW1wdHNGYWlsZWQoY2IsIGVycm9ycykpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsT3B0aW9ucyBleHRlbmRzIE9taXQ8U3Bhd25PcHRpb25zLCAnc2hlbGwnIHwgJ3N0ZGlvJz4ge1xuICAvKipcbiAgICogQ29uZmlndXJlIGluLWxpbmUgcmV0cmllcyBpZiB0aGUgZXhlY3V0aW9uIGZhaWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJldHJpZXNcbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5PzogUmV0cnlPcHRpb25zO1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3Mgd2l0aCB0aGUgcHJvdmlkZWQgY29tbWFuZCBhbmQgYXJndW1lbnRzLiBUaGUgY2hpbGRcbiAqIHByb2Nlc3MgaXMgYWx3YXlzIHNwYXduZWQgdXNpbmcgYHNoZWxsOiB0cnVlYCwgYW5kIHRoZSBjb250ZW50cyBvZlxuICogYHByb2Nlc3MuZW52YCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBgZW52YCBzcGF3biBvcHRpb24gKHZhbHVlc1xuICogcHJvdmlkZWQgaW4gYG9wdGlvbnMuZW52YCBjYW4gb3ZlcnJpZGUgdGhvc2UpLlxuICpcbiAqIEBwYXJhbSBjbWQgICAgIHRoZSBjb21tYW5kIHRvIHNoZWxsIG91dCB0by5cbiAqIEBwYXJhbSBhcmdzICAgIHRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgY21kYFxuICogQHBhcmFtIG9wdGlvbnMgYW55IG9wdGlvbnMgdG8gcGFzcyB0byBgc3Bhd25gXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGVsbChcbiAgY21kOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICB7IHJldHJ5OiByZXRyeU9wdGlvbnMsIC4uLm9wdGlvbnMgfTogU2hlbGxPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhc3luYyBmdW5jdGlvbiBzcGF3bjEoKSB7XG4gICAgbG9nZ2luZy5kZWJ1ZyhjbWQsIGFyZ3Muam9pbignICcpLCBKU09OLnN0cmluZ2lmeShvcHRpb25zKSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKG9rLCBrbykgPT4ge1xuICAgICAgY29uc3QgY2hpbGQgPSBzcGF3bihjbWQsIGFyZ3MsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgc2hlbGw6IHRydWUsXG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uKG9wdGlvbnMuZW52ID8/IHt9KSB9LFxuICAgICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0ZG91dCA9IG5ldyBBcnJheTxCdWZmZXI+KCk7XG4gICAgICBjb25zdCBzdGRlcnIgPSBuZXcgQXJyYXk8QnVmZmVyPigpO1xuICAgICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICAgIGlmIChsb2dnaW5nLmxldmVsID49IGxvZ2dpbmcuTEVWRUxfU0lMTFkpIHtcbiAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaHVuayk7IC8vIG5vdGljZSAtIHdlIGVtaXQgYWxsIGJ1aWxkIG91dHB1dCB0byBzdGRlcnJcbiAgICAgICAgfVxuICAgICAgICBzdGRvdXQucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICAgICAgfSk7XG4gICAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgICAgaWYgKGxvZ2dpbmcubGV2ZWwgPj0gbG9nZ2luZy5MRVZFTF9TSUxMWSkge1xuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICBzdGRlcnIucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICAgICAgfSk7XG4gICAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgICAgLy8gTXVzdCB1c2UgQ0xPU0UgaW5zdGVhZCBvZiBFWElUOyBFWElUIG1heSBmaXJlIHdoaWxlIHRoZXJlIGlzIHN0aWxsIGRhdGEgaW4gdGhlXG4gICAgICAvLyBJL08gcGlwZXMsIHdoaWNoIHdlIHdpbGwgbWlzcyBpZiB3ZSByZXR1cm4gYXQgdGhhdCBwb2ludC5cbiAgICAgIGNoaWxkLm9uY2UoJ2Nsb3NlJywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBjb25zdCBvdXQgPSBCdWZmZXIuY29uY2F0KHN0ZG91dCkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9rKG91dCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyID0gQnVmZmVyLmNvbmNhdChzdGRlcnIpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgICAgICBjb25zdCByZWFzb24gPSBzaWduYWwgIT0gbnVsbCA/IGBzaWduYWwgJHtzaWduYWx9YCA6IGBzdGF0dXMgJHtjb2RlfWA7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtjbWR9ICR7YXJncy5qb2luKCcgJyl9YDtcbiAgICAgICAgcmV0dXJuIGtvKFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgYENvbW1hbmQgKCR7Y29tbWFuZH0pIGZhaWxlZCB3aXRoICR7cmVhc29ufTpgLFxuICAgICAgICAgICAgICAvLyBTVERFUlIgZmlyc3QsIHRoZSBlcnJvIG1lc3NhZ2UgY291bGQgYmUgdHJ1bmNhdGVkIGluIGxvZ3MuXG4gICAgICAgICAgICAgIHByZWZpeChlcnIsICcjU1RERVJSPiAnKSxcbiAgICAgICAgICAgICAgcHJlZml4KG91dCwgJyNTVERPVVQ+ICcpLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIHByZWZpeCh0ZXh0OiBzdHJpbmcsIGFkZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gdGV4dFxuICAgICAgICAgICAgLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgLm1hcCgobGluZSkgPT4gYCR7YWRkfSR7bGluZX1gKVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXRyeU9wdGlvbnMgIT0gbnVsbCkge1xuICAgIHJldHVybiByZXRyeShzcGF3bjEsIHtcbiAgICAgIC4uLnJldHJ5T3B0aW9ucyxcbiAgICAgIG9uRmFpbGVkQXR0ZW1wdDpcbiAgICAgICAgcmV0cnlPcHRpb25zLm9uRmFpbGVkQXR0ZW1wdCA/P1xuICAgICAgICAoKGVycm9yLCBhdHRlbXB0c0xlZnQsIGJhY2tvZmZNcykgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gZXJyb3I7XG4gICAgICAgICAgY29uc3QgcmV0cnlJbmZvID1cbiAgICAgICAgICAgIGF0dGVtcHRzTGVmdCA+IDBcbiAgICAgICAgICAgICAgPyBgV2FpdGluZyAke2JhY2tvZmZNc30gbXMgYmVmb3JlIHJldHJ5aW5nICgke2F0dGVtcHRzTGVmdH0gYXR0ZW1wdHMgbGVmdClgXG4gICAgICAgICAgICAgIDogJ05vIGF0dGVtcHRzIGxlZnQnO1xuICAgICAgICAgIGxvZ2dpbmcuaW5mbyhcbiAgICAgICAgICAgIGBDb21tYW5kIFwiJHtjbWR9ICR7YXJncy5qb2luKFxuICAgICAgICAgICAgICAnICcsXG4gICAgICAgICAgICApfVwiIGZhaWxlZCB3aXRoICR7bWVzc2FnZX0uICR7cmV0cnlJbmZvfS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBzcGF3bjEoKTtcbn1cblxuLyoqXG4gKiBTdHJpcCBmaWxlc3lzdGVtIHVuc2FmZSBjaGFyYWN0ZXJzIGZyb20gYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWdpZnkoeDogc3RyaW5nKSB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05Xy1dL2csICdfJyk7XG59XG5cbi8qKlxuICogQ2xhc3MgdGhhdCBtYWtlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIGhvbGRzIG9uIHRvIGFuIG9wZXJhdGlvbiBvYmplY3RcbiAqL1xuZXhwb3J0IGNsYXNzIFNjcmF0Y2g8QT4ge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIG1ha2U8QT4oXG4gICAgZmFjdG9yeTogKGRpcjogc3RyaW5nKSA9PiBQcm9taXNlPEE+LFxuICApOiBQcm9taXNlPFNjcmF0Y2g8QT4+O1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIG1ha2U8QT4oZmFjdG9yeTogKGRpcjogc3RyaW5nKSA9PiBBKTogUHJvbWlzZTxTY3JhdGNoPEE+PjtcbiAgcHVibGljIHN0YXRpYyBhc3luYyBtYWtlPEE+KGZhY3Rvcnk6IChkaXI6IHN0cmluZykgPT4gQSB8IFByb21pc2U8QT4pIHtcbiAgICBjb25zdCB0bXBkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ25wbS1wYWNrJykpO1xuICAgIHJldHVybiBuZXcgU2NyYXRjaCh0bXBkaXIsIGF3YWl0IGZhY3RvcnkodG1wZGlyKSwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmYWtlPEE+KGRpcmVjdG9yeTogc3RyaW5nLCBvYmplY3Q6IEEpIHtcbiAgICByZXR1cm4gbmV3IFNjcmF0Y2goZGlyZWN0b3J5LCBvYmplY3QsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjbGVhbnVwQWxsPEE+KHRlbXBEaXJzOiBBcnJheTxTY3JhdGNoPEE+Pikge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRlbXBEaXJzLm1hcCgodCkgPT4gdC5jbGVhbnVwKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBvYmplY3Q6IEEsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYWtlOiBib29sZWFuLFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGNsZWFudXAoKSB7XG4gICAgaWYgKCF0aGlzLmZha2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLnJlbW92ZSh0aGlzLmRpcmVjdG9yeSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdFQlVTWScpIHtcbiAgICAgICAgICAvLyBUaGlzIG9jY2FzaW9uYWxseSBoYXBwZW5zIG9uIFdpbmRvd3MgaWYgd2UgdHJ5IHRvIGNsZWFuIHVwIHRvb1xuICAgICAgICAgIC8vIHF1aWNrbHkgYWZ0ZXIgd2UncmUgZG9uZS4uLiBDb3VsZCBiZSBiZWNhdXNlIHNvbWUgQVYgc29mdHdhcmUgaXNcbiAgICAgICAgICAvLyBzdGlsbCBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgICAgIC8vIFdhaXQgMXMgYW5kIHJldHJ5IG9uY2UhXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBzZXRUaW1lb3V0KG9rLCAxXzAwMCkpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5yZW1vdmUodGhpcy5kaXJlY3RvcnkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBsb2dnaW5nLndhcm4oYFVuYWJsZSB0byBjbGVhbiB1cCAke3RoaXMuZGlyZWN0b3J5fTogJHtlMn1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dpbmcud2FybihgVW5hYmxlIHRvIGNsZWFuIHVwICR7dGhpcy5kaXJlY3Rvcnl9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFeHRlbmQ8QT4oeHM6IFNldDxBPiwgZWxzOiBJdGVyYWJsZTxBPikge1xuICBmb3IgKGNvbnN0IGVsIG9mIGVscykge1xuICAgIHhzLmFkZChlbCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbHRlckFzeW5jPEE+KFxuICB4czogQVtdLFxuICBwcmVkOiAoeDogQSkgPT4gUHJvbWlzZTxib29sZWFuPixcbik6IFByb21pc2U8QVtdPiB7XG4gIGNvbnN0IG1hcHBlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHhzLm1hcChhc3luYyAoeCkgPT4gKHsgeCwgcHJlZDogYXdhaXQgcHJlZCh4KSB9KSksXG4gICk7XG4gIHJldHVybiBtYXBwZWQuZmlsdGVyKCh7IHByZWQgfSkgPT4gcHJlZCkubWFwKCh7IHggfSkgPT4geCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW48QT4oeHM6IHJlYWRvbmx5IEFbXVtdKTogQVtdIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgLi4ueHMpO1xufVxuIl19
package/lib/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /** The short version number for this JSII compiler (e.g: `X.Y.Z`) */
2
- export declare const VERSION = "1.47.0";
2
+ export declare const VERSION = "1.48.0";
3
3
  /** The qualified version number for this JSII compiler (e.g: `X.Y.Z (build #######)`) */
4
- export declare const VERSION_DESC = "1.47.0 (build 86d2c33)";
4
+ export declare const VERSION_DESC = "1.48.0 (build 05dd13a)";
package/lib/version.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
- // Generated at 2021-12-06T14:14:18Z by generate.sh
2
+ // Generated at 2021-12-13T17:15:48Z by generate.sh
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.VERSION_DESC = exports.VERSION = void 0;
5
5
  /** The short version number for this JSII compiler (e.g: `X.Y.Z`) */
6
- exports.VERSION = '1.47.0';
6
+ exports.VERSION = '1.48.0';
7
7
  /** The qualified version number for this JSII compiler (e.g: `X.Y.Z (build #######)`) */
8
- exports.VERSION_DESC = '1.47.0 (build 86d2c33)';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1EQUFtRDs7O0FBRW5ELHFFQUFxRTtBQUN4RCxRQUFBLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFaEMseUZBQXlGO0FBQzVFLFFBQUEsWUFBWSxHQUFHLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGF0IDIwMjEtMTItMDZUMTQ6MTQ6MThaIGJ5IGdlbmVyYXRlLnNoXG5cbi8qKiBUaGUgc2hvcnQgdmVyc2lvbiBudW1iZXIgZm9yIHRoaXMgSlNJSSBjb21waWxlciAoZS5nOiBgWC5ZLlpgKSAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnMS40Ny4wJztcblxuLyoqIFRoZSBxdWFsaWZpZWQgdmVyc2lvbiBudW1iZXIgZm9yIHRoaXMgSlNJSSBjb21waWxlciAoZS5nOiBgWC5ZLlogKGJ1aWxkICMjIyMjIyMpYCkgKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OX0RFU0MgPSAnMS40Ny4wIChidWlsZCA4NmQyYzMzKSc7XG4iXX0=
8
+ exports.VERSION_DESC = '1.48.0 (build 05dd13a)';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1EQUFtRDs7O0FBRW5ELHFFQUFxRTtBQUN4RCxRQUFBLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFaEMseUZBQXlGO0FBQzVFLFFBQUEsWUFBWSxHQUFHLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGF0IDIwMjEtMTItMTNUMTc6MTU6NDhaIGJ5IGdlbmVyYXRlLnNoXG5cbi8qKiBUaGUgc2hvcnQgdmVyc2lvbiBudW1iZXIgZm9yIHRoaXMgSlNJSSBjb21waWxlciAoZS5nOiBgWC5ZLlpgKSAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnMS40OC4wJztcblxuLyoqIFRoZSBxdWFsaWZpZWQgdmVyc2lvbiBudW1iZXIgZm9yIHRoaXMgSlNJSSBjb21waWxlciAoZS5nOiBgWC5ZLlogKGJ1aWxkICMjIyMjIyMpYCkgKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OX0RFU0MgPSAnMS40OC4wIChidWlsZCAwNWRkMTNhKSc7XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsii-pacmak",
3
- "version": "1.47.0",
3
+ "version": "1.48.0",
4
4
  "description": "A code generation framework for jsii backend languages",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
@@ -33,42 +33,42 @@
33
33
  "test": "npm run test:unit && npm run test:build",
34
34
  "test:unit": "jest",
35
35
  "test:build": "bash test/build-test.sh",
36
- "test:update": "jest -u && npm run test:build",
36
+ "test:update": "true",
37
37
  "package": "package-js"
38
38
  },
39
39
  "dependencies": {
40
- "@jsii/check-node": "1.47.0",
41
- "@jsii/spec": "^1.47.0",
40
+ "@jsii/check-node": "1.48.0",
41
+ "@jsii/spec": "^1.48.0",
42
42
  "clone": "^2.1.2",
43
- "codemaker": "^1.47.0",
43
+ "codemaker": "^1.48.0",
44
44
  "commonmark": "^0.30.0",
45
45
  "escape-string-regexp": "^4.0.0",
46
46
  "fs-extra": "^9.1.0",
47
- "jsii-reflect": "^1.47.0",
48
- "jsii-rosetta": "^1.47.0",
47
+ "jsii-reflect": "^1.48.0",
48
+ "jsii-rosetta": "^1.48.0",
49
49
  "semver": "^7.3.5",
50
50
  "spdx-license-list": "^6.4.0",
51
51
  "xmlbuilder": "^15.1.1",
52
52
  "yargs": "^16.2.0"
53
53
  },
54
54
  "devDependencies": {
55
- "@jsii/dotnet-runtime": "^1.47.0",
56
- "@jsii/java-runtime": "^1.47.0",
57
- "@jsii/go-runtime": "^1.47.0",
58
- "@scope/jsii-calc-lib": "^1.47.0",
55
+ "@jsii/dotnet-runtime": "^1.48.0",
56
+ "@jsii/java-runtime": "^1.48.0",
57
+ "@jsii/go-runtime": "^1.48.0",
58
+ "@scope/jsii-calc-lib": "^1.48.0",
59
59
  "@types/clone": "^2.1.1",
60
60
  "@types/commonmark": "^0.27.5",
61
61
  "@types/fs-extra": "^9.0.13",
62
62
  "@types/jest": "^27.0.3",
63
63
  "@types/node": "^12.20.37",
64
64
  "@types/semver": "^7.3.9",
65
- "eslint": "^8.3.0",
66
- "jest": "^27.3.1",
67
- "jsii": "^1.47.0",
68
- "jsii-build-tools": "^1.47.0",
65
+ "eslint": "^8.4.1",
66
+ "jest": "^27.4.4",
67
+ "jsii": "^1.48.0",
68
+ "jsii-build-tools": "^1.48.0",
69
69
  "jsii-calc": "^3.20.120",
70
- "prettier": "^2.4.1",
71
- "ts-jest": "^27.0.7",
70
+ "prettier": "^2.5.1",
71
+ "ts-jest": "^27.1.1",
72
72
  "typescript": "~3.9.10"
73
73
  },
74
74
  "keywords": [