jsii-pacmak 1.57.0 → 1.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +7 -2
- package/lib/targets/go/documentation.d.ts +1 -0
- package/lib/targets/go/documentation.js +10 -1
- package/lib/targets/go/package.d.ts +4 -5
- package/lib/targets/go/package.js +14 -14
- package/lib/targets/go/readme-file.d.ts +3 -2
- package/lib/targets/go/readme-file.js +7 -13
- package/lib/targets/go/types/type-member.js +3 -2
- package/lib/targets/python/requirements-dev.txt +2 -3
- package/lib/targets/python.js +8 -4
- package/lib/version.d.ts +2 -2
- package/lib/version.js +4 -4
- package/package.json +15 -15
package/lib/index.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.pacmak = exports.TargetName = void 0;
|
|
4
4
|
const jsii_reflect_1 = require("jsii-reflect");
|
|
5
5
|
const jsii_rosetta_1 = require("jsii-rosetta");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const process_1 = require("process");
|
|
6
8
|
const logging = require("./logging");
|
|
7
9
|
const npm_modules_1 = require("./npm-modules");
|
|
8
10
|
const targets_1 = require("./targets");
|
|
@@ -30,8 +32,11 @@ async function pacmak({ argv = {}, clean = true, codeOnly = false, fingerprint =
|
|
|
30
32
|
return;
|
|
31
33
|
}
|
|
32
34
|
if (outputDirectory) {
|
|
35
|
+
// Ensure this is consistently interpreted as relative to cwd(). This is transparent for absolute
|
|
36
|
+
// paths, as those would be returned unmodified.
|
|
37
|
+
const absoluteOutputDirectory = path_1.resolve(process_1.cwd(), outputDirectory);
|
|
33
38
|
for (const mod of modulesToPackageFlat) {
|
|
34
|
-
mod.outputDirectory =
|
|
39
|
+
mod.outputDirectory = absoluteOutputDirectory;
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
else if (updateNpmIgnoreFiles) {
|
|
@@ -141,4 +146,4 @@ function describePackages(target) {
|
|
|
141
146
|
return `${modules.length} modules`;
|
|
142
147
|
}
|
|
143
148
|
//#endregion
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEM7QUFDMUMsK0NBQTJEO0FBRTNELHFDQUFxQztBQUNyQywrQ0FBcUU7QUFFckUsdUNBQXFEO0FBTzVDLDJGQVBjLG9CQUFVLE9BT2Q7QUFObkIsbUNBQWlDO0FBRWpDLGlDQUFpQztBQUtqQyxxQ0FBMEQ7QUFBakQsMkdBQUEsU0FBUyxPQUFvQjtBQUV0Qzs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsRUFDM0IsSUFBSSxHQUFHLEVBQUUsRUFDVCxLQUFLLEdBQUcsSUFBSSxFQUNaLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLEtBQUssR0FBRyxLQUFLLEVBQ2IsaUJBQWlCLEdBQUcsSUFBSSxFQUN4QixXQUFXLEdBQUcsS0FBSyxFQUNuQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsR0FBRyxJQUFJLEVBQ2YsT0FBTyxHQUFHLEtBQUssRUFDZixhQUFhLEVBQ2IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQVUsQ0FBQyxFQUNuQyxNQUFNLEdBQUcsSUFBSSxjQUFNLEVBQUUsRUFDckIsc0JBQXNCLEdBQUcsU0FBUyxFQUNsQyxvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FDWjtJQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQU8sQ0FBQztRQUMxQixlQUFlLEVBQUUsc0JBQXNCO1FBQ3ZDLGdCQUFnQixFQUFFLElBQUk7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxhQUFhLEVBQUU7UUFDakIsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDakQ7SUFFRCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sNkJBQWUsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sQ0FDUixDQUFDO0lBQ0YsTUFB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TSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUTtZQUM3QixDQUFDLENBQUMscUNBQXFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLHdEQUF3RDtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ2xCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUNOLENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxZQUFZO0FBRVoseUJBQXlCO0FBRXpCLFNBQVMsZ0JBQWdCLENBQUMsTUFBaUI7SUFDekMsTUFBTSxPQUFPLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IFJvc2V0dGEsIFVua25vd25TbmlwcGV0TW9kZSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7IGZpbmRKc2lpTW9kdWxlcywgdXBkYXRlQWxsTnBtSWdub3JlcyB9IGZyb20gJy4vbnBtLW1vZHVsZXMnO1xuaW1wb3J0IHsgSnNpaU1vZHVsZSB9IGZyb20gJy4vcGFja2FnaW5nJztcbmltcG9ydCB7IEFMTF9CVUlMREVSUywgVGFyZ2V0TmFtZSB9IGZyb20gJy4vdGFyZ2V0cyc7XG5pbXBvcnQgeyBUaW1lcnMgfSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuL3V0aWwnO1xuXG4vLyNyZWdpb24gRXhwb3J0ZWQgQVBJc1xuXG5leHBvcnQgeyBUYXJnZXROYW1lIH07XG5leHBvcnQgeyBjb25maWd1cmUgYXMgY29uZmlndXJlTG9nZ2luZyB9IGZyb20gJy4vbG9nZ2luZyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGNvZGUgaW4gdGhlIGRlc2lyZWQgdGFyZ2V0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhY21hayh7XG4gIGFyZ3YgPSB7fSxcbiAgY2xlYW4gPSB0cnVlLFxuICBjb2RlT25seSA9IGZhbHNlLFxuICBmaW5nZXJwcmludCA9IHRydWUsXG4gIGZvcmNlID0gZmFsc2UsXG4gIGZvcmNlU3ViZGlyZWN0b3J5ID0gdHJ1ZSxcbiAgZm9yY2VUYXJnZXQgPSBmYWxzZSxcbiAgaW5wdXREaXJlY3RvcmllcyxcbiAgb3V0cHV0RGlyZWN0b3J5LFxuICBwYXJhbGxlbCA9IHRydWUsXG4gIHJlY3Vyc2UgPSBmYWxzZSxcbiAgcm9zZXR0YVRhYmxldCxcbiAgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXMoVGFyZ2V0TmFtZSksXG4gIHRpbWVycyA9IG5ldyBUaW1lcnMoKSxcbiAgcm9zZXR0YVVua25vd25TbmlwcGV0cyA9IHVuZGVmaW5lZCxcbiAgdXBkYXRlTnBtSWdub3JlRmlsZXMgPSBmYWxzZSxcbiAgdmFsaWRhdGVBc3NlbWJsaWVzID0gZmFsc2UsXG59OiBQYWNtYWtPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvc2V0dGEgPSBuZXcgUm9zZXR0YSh7XG4gICAgdW5rbm93blNuaXBwZXRzOiByb3NldHRhVW5rbm93blNuaXBwZXRzLFxuICAgIHByZWZpeERpc2NsYWltZXI6IHRydWUsXG4gIH0pO1xuICBpZiAocm9zZXR0YVRhYmxldCkge1xuICAgIGF3YWl0IHJvc2V0dGEubG9hZFRhYmxldEZyb21GaWxlKHJvc2V0dGFUYWJsZXQpO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCA9IGF3YWl0IGZpbmRKc2lpTW9kdWxlcyhcbiAgICBpbnB1dERpcmVjdG9yaWVzLFxuICAgIHJlY3Vyc2UsXG4gICk7XG4gIGNvbnN0IG1vZHVsZXNUb1BhY2thZ2VGbGF0ID0gZmxhdHRlbihtb2R1bGVzVG9QYWNrYWdlU29ydGVkKTtcblxuICBsb2dnaW5nLmluZm8oYEZvdW5kICR7bW9kdWxlc1RvUGFja2FnZUZsYXQubGVuZ3RofSBtb2R1bGVzIHRvIHBhY2thZ2VgKTtcbiAgaWYgKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ2dpbmcud2FybignTm90aGluZyB0byBkbycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvdXRwdXREaXJlY3RvcnkpIHtcbiAgICBmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzVG9QYWNrYWdlRmxhdCkge1xuICAgICAgbW9kLm91dHB1dERpcmVjdG9yeSA9IG91dHB1dERpcmVjdG9yeTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodXBkYXRlTnBtSWdub3JlRmlsZXMpIHtcbiAgICAvLyBpZiBvdXRkaXIgaXMgY29taW5nIGZyb20gcGFja2FnZS5qc29uLCB2ZXJpZnkgaXQgaXMgZXhjbHVkZWQgYnkgLm5wbWlnbm9yZS4gaWYgaXQgaXMgZXhwbGljaXRseVxuICAgIC8vIGRlZmluZWQgdmlhIC0tb3V0LCBkb24ndCBwZXJmb3JtIHRoaXMgdmVyaWZpY2F0aW9uLlxuICAgIGF3YWl0IHVwZGF0ZUFsbE5wbUlnbm9yZXMobW9kdWxlc1RvUGFja2FnZUZsYXQpO1xuICB9XG5cbiAgYXdhaXQgdGltZXJzLnJlY29yZEFzeW5jKCducG0gcGFjaycsICgpID0+IHtcbiAgICBsb2dnaW5nLmluZm8oJ1BhY2thZ2luZyBOUE0gYnVuZGxlcycpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChtb2R1bGVzVG9QYWNrYWdlRmxhdC5tYXAoKG0pID0+IG0ubnBtUGFjaygpKSk7XG4gIH0pO1xuXG4gIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnbG9hZCBqc2lpJywgKCkgPT4ge1xuICAgIGxvZ2dpbmcuaW5mbygnTG9hZGluZyBqc2lpIGFzc2VtYmxpZXMgYW5kIHRyYW5zbGF0aW9ucycpO1xuICAgIGNvbnN0IHN5c3RlbSA9IG5ldyBUeXBlU3lzdGVtKCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZUZsYXQubWFwKGFzeW5jIChtKSA9PiB7XG4gICAgICAgIGF3YWl0IG0ubG9hZChzeXN0ZW0sIHZhbGlkYXRlQXNzZW1ibGllcyk7XG4gICAgICAgIHJldHVybiByb3NldHRhLmFkZEFzc2VtYmx5KG0uYXNzZW1ibHkuc3BlYywgbS5tb2R1bGVEaXJlY3RvcnkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0YXJnZXRTZXRzID0gc2xpY2VUYXJnZXRzKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCxcbiAgICAgIHRhcmdldHMsXG4gICAgICBmb3JjZVRhcmdldCxcbiAgICApO1xuICAgIGlmICh0YXJnZXRTZXRzLmV2ZXJ5KChzKSA9PiBzLm1vZHVsZXNTb3J0ZWQubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTm9uZSBvZiB0aGUgcmVxdWVzdGVkIHBhY2thZ2VzIGhhZCBhbnkgdGFyZ2V0cyB0byBidWlsZCBmb3IgJyR7dGFyZ2V0cy5qb2luKFxuICAgICAgICAgICcsICcsXG4gICAgICAgICl9JyAodXNlIC0tZm9yY2UtdGFyZ2V0IHRvIGZvcmNlKWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBlckxhbmd1YWdlRGlyZWN0b3J5ID0gdGFyZ2V0U2V0cy5sZW5ndGggPiAxIHx8IGZvcmNlU3ViZGlyZWN0b3J5O1xuXG4gICAgLy8gV2UgcnVuIGFsbCB0YXJnZXQgc2V0cyBpbiBwYXJhbGxlbCBmb3IgbWluaW1hbCB3YWxsIGNsb2NrIHRpbWVcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hcFBhcmFsbGVsT3JTZXJpYWwoXG4gICAgICAgIHRhcmdldFNldHMsXG4gICAgICAgIGFzeW5jICh0YXJnZXRTZXQpID0+IHtcbiAgICAgICAgICBsb2dnaW5nLmluZm8oXG4gICAgICAgICAgICBgUGFja2FnaW5nICcke3RhcmdldFNldC50YXJnZXRUeXBlfScgZm9yICR7ZGVzY3JpYmVQYWNrYWdlcyhcbiAgICAgICAgICAgICAgdGFyZ2V0U2V0LFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRpbWVyc1xuICAgICAgICAgICAgLnJlY29yZEFzeW5jKHRhcmdldFNldC50YXJnZXRUeXBlLCAoKSA9PlxuICAgICAgICAgICAgICBidWlsZFRhcmdldHNGb3JMYW5ndWFnZShcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQudGFyZ2V0VHlwZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQubW9kdWxlc1NvcnRlZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcmd2LFxuICAgICAgICAgICAgICAgICAgY2xlYW4sXG4gICAgICAgICAgICAgICAgICBjb2RlT25seSxcbiAgICAgICAgICAgICAgICAgIGZpbmdlcnByaW50LFxuICAgICAgICAgICAgICAgICAgZm9yY2UsXG4gICAgICAgICAgICAgICAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgIHJvc2V0dGEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAoKSA9PiBsb2dnaW5nLmluZm8oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZpbmlzaGVkYCksXG4gICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZhaWxlZGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBwYXJhbGxlbCB9LFxuICAgICAgKSxcbiAgICApO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChjbGVhbikge1xuICAgICAgbG9nZ2luZy5kZWJ1ZygnQ2xlYW5pbmcgdXAnKTtcbiAgICAgIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnY2xlYW51cCcsICgpID0+XG4gICAgICAgIFByb21pc2UuYWxsKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lm1hcCgobSkgPT4gbS5jbGVhbnVwKCkpKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dpbmcuaW5mbygnVGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHJldGFpbmVkICgtLW5vLWNsZWFuKScpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2dpbmcuaW5mbyhgUGFja2FnZWQuICR7dGltZXJzLmRpc3BsYXkoKX1gKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHByb3ZpZGVkIHRvIHRoZSBgcGFjbWFrYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNtYWtPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoYXQgd2VyZSBwcm92aWRlZC4gVGhpcyBpbmNsdWRlcyB0YXJnZXQtc3BlY2lmaWMgcGFyYW1ldGVycywgdGhlXG4gICAqIGhhbmRsaW5nIG9mIHdoaWNoIGlzIHVwIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBhcmd2PzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHVwb24gY29tcGxldGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIHNvdXJjZSBjb2RlIG9ubHkgKGFzIG9wcG9zZWQgdG8gYnVpbHQgcGFja2FnZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGluY2x1ZGUgYSBmaW5nZXJwcmludCBpbiBnZW5lcmF0ZWQgY29kZSwgdG8gYXZvaWQgcmUtZ2VuZXJhdGluZ1xuICAgKiBjb2RlIGlmIHRoZSBzb3VyY2UgYXNzZW1ibHkgaGFzIG5vdCBjaGFuZ2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmaW5nZXJwcmludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWx3YXlzIHJlLWdlbmVyYXRlIGNvZGUsIGV2ZW4gaWYgdGhlIGZpbmdlcnByaW50IGhhcyBub3QgY2hhbmdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWx3YXlzIGVtaXQgY29kZSBpbiBhIHBlci1sYW5ndWFnZSBzdWJkaXJlY3RvcnksIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBvbmUgdGFyZ2V0IGxhbmd1YWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVN1YmRpcmVjdG9yeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsd2F5cyB0cnkgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIHNlbGVjdGVkIHRhcmdldHMsIGV2ZW4gaWYgdGhvc2UgYXJlIG5vdCBjb25maWd1cmVkLiBVc2UgdGhpcyBvcHRpb24gYXQgeW91ciBvd25cbiAgICogcmlzaywgYXMgdGhlcmUgYXJlIHNpZ25pZmljYW50IGNoYW5jZXMgY29kZSBnZW5lcmF0b3JzIGNhbm5vdCBvcGVyYXRlIHdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVRhcmdldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGlucHV0IGFzc2VtYmxpZXMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dERpcmVjdG9yaWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBvdXRwdXQgZ2VuZXJhdGVkIHBhY2thZ2VzIG9yIGNvZGUgKGlmICBgY29kZU9ubHlgIGlzIGB0cnVlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ29uZmlndXJlZCBpbiBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcmFsbGVsaXplIGNvZGUgZ2VuZXJhdGlvbi4gVHVybmluZyB0aGlzIHRvIGBmYWxzZWAgY2FuIGJlIGJlbmVmaWNpYWwgaW4gY2VydGFpbiByZXNvdXJjZS1jb25zdHJhaW5lZFxuICAgKiBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgZnJlZSBDSS9DRCBvZmZlcmluZ3MsIGFzIGl0IHJlZHVjZXMgdGhlIHByZXNzdXJlIG9uIElPLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgZ2VuZXJhdGUgZm9yIHRoZSBzZWxlY3RlZCBwYWNrYWdlcycgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyByb3NldHRhIHNob3VsZCB0cmVhdCBzbmlwcGV0cyB0aGF0IGNhbm5vdCBiZSBsb2FkZWQgZnJvbSBhIHRyYW5zbGF0aW9uIHRhYmxldC5cbiAgICpcbiAgICogQGRlZmF1bHQgVW5rbm93blNuaXBwZXRNb2RlLlZFUkJBVElNXG4gICAqL1xuICByZWFkb25seSByb3NldHRhVW5rbm93blNuaXBwZXRzPzogVW5rbm93blNuaXBwZXRNb2RlO1xuXG4gIC8qKlxuICAgKiBBIFJvc2V0dGEgdGFibGV0IGZpbGUgd2hlcmUgdHJhbnNsYXRpb25zIGZvciBjb2RlIGV4YW1wbGVzIGNhbiBiZSBmb3VuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByb3NldHRhVGFibGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0YXJnZXRzIGZvciB3aGljaCBjb2RlIHNob3VsZCBiZSBnZW5lcmF0ZWQuIFVubGVzcyBgZm9yY2VUYXJnZXRgIGlzIGB0cnVlYCwgYSBnaXZlbiB0YXJnZXQgd2lsbCBvbmx5XG4gICAqIGJlIGdlbmVyYXRlZCBmb3IgYXNzZW1ibGllcyB0aGF0IGhhdmUgY29uZmlndXJlZCBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgT2JqZWN0LnZhbHVlcyhUYXJnZXROYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0cz86IHJlYWRvbmx5IFRhcmdldE5hbWVbXTtcblxuICAvKipcbiAgICogQSBgVGltZXJzYCBvYmplY3QsIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBpbmNsdWRpbmcgdGhlIHJvc2V0dGEgcnVuIGluIGEgbGFyZ2VyIHNldCBvZiB0aW1lZCBvcGVyYXRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZXJzPzogVGltZXJzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSAubnBtaWdub3JlIGZpbGVzIGlmIGBvdXRwdXREaXJlY3RvcnlgIGNvbWVzIGZyb20gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlTnBtSWdub3JlRmlsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFzc2VtYmxpZXMgc2hvdWxkIGJlIHZhbGlkYXRlZCBvciBub3QuIFZhbGlkYXRpb24gY2FuIGJlIGV4cGVuc2l2ZSBhbmQgY2FuIGJlIHNraXBwZWQgaWYgdGhlIGFzc2VtYmxpZXNcbiAgICogY2FuIGJlIGFzc3VtZWQgdG8gYmUgdmFsaWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZUFzc2VtYmxpZXM/OiBib29sZWFuO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIEJ1aWxkaW5nXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGFyZ2V0c0Zvckxhbmd1YWdlKFxuICB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLFxuICBtb2R1bGVzOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+LFxuICB7XG4gICAgYXJndixcbiAgICBjbGVhbixcbiAgICBjb2RlT25seSxcbiAgICBmaW5nZXJwcmludCxcbiAgICBmb3JjZSxcbiAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICByb3NldHRhLFxuICB9OiB7XG4gICAgYXJndjogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG4gICAgY2xlYW46IGJvb2xlYW47XG4gICAgY29kZU9ubHk6IGJvb2xlYW47XG4gICAgZmluZ2VycHJpbnQ6IGJvb2xlYW47XG4gICAgZm9yY2U6IGJvb2xlYW47XG4gICAgcGVyTGFuZ3VhZ2VEaXJlY3Rvcnk6IGJvb2xlYW47XG4gICAgcm9zZXR0YTogUm9zZXR0YTtcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBgYGFyZ3YudGFyZ2V0YGAgaXMgZ3VhcmFudGVlZCB2YWxpZCBieSBgYHlhcmdzYGAgdGhyb3VnaCB0aGUgYGBjaG9pY2VzYGAgZGlyZWN0aXZlLlxuICBjb25zdCBmYWN0b3J5ID0gQUxMX0JVSUxERVJTW3RhcmdldExhbmd1YWdlIGFzIFRhcmdldE5hbWVdO1xuICBpZiAoIWZhY3RvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHRhcmdldDogJyR7dGFyZ2V0TGFuZ3VhZ2V9J2ApO1xuICB9XG5cbiAgcmV0dXJuIGZhY3RvcnkobW9kdWxlcywge1xuICAgIGNsZWFuOiBjbGVhbixcbiAgICBjb2RlT25seTogY29kZU9ubHksXG4gICAgcm9zZXR0YSxcbiAgICBmb3JjZTogZm9yY2UsXG4gICAgZmluZ2VycHJpbnQ6IGZpbmdlcnByaW50LFxuICAgIGFyZ3VtZW50czogYXJndixcbiAgICBsYW5ndWFnZVN1YmRpcmVjdG9yeTogcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gIH0pLmJ1aWxkTW9kdWxlcygpO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIFRhcmdldCBTbGljaW5nXG5cbi8qKlxuICogQSBzZXQgb2YgcGFja2FnZXMgKHRhcmdldHMpIHRyYW5zbGF0ZWQgaW50byB0aGUgc2FtZSBsYW5ndWFnZVxuICovXG5pbnRlcmZhY2UgVGFyZ2V0U2V0IHtcbiAgdGFyZ2V0VHlwZTogc3RyaW5nO1xuXG4gIC8vIFNvcnRlZCBpbnRvIHRvcG9zb3J0ZWQgdHJhbmNoZXNcbiAgbW9kdWxlc1NvcnRlZDogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPjtcbn1cblxuZnVuY3Rpb24gc2xpY2VUYXJnZXRzKFxuICBtb2R1bGVzU29ydGVkOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+LFxuICByZXF1ZXN0ZWRUYXJnZXRzOiByZWFkb25seSBUYXJnZXROYW1lW10sXG4gIGZvcmNlOiBib29sZWFuLFxuKTogcmVhZG9ubHkgVGFyZ2V0U2V0W10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8VGFyZ2V0U2V0PigpO1xuICBmb3IgKGNvbnN0IHRhcmdldCBvZiByZXF1ZXN0ZWRUYXJnZXRzKSB7XG4gICAgcmV0LnB1c2goe1xuICAgICAgdGFyZ2V0VHlwZTogdGFyZ2V0LFxuICAgICAgbW9kdWxlc1NvcnRlZDogbW9kdWxlc1NvcnRlZFxuICAgICAgICAubWFwKChtb2R1bGVzKSA9PlxuICAgICAgICAgIG1vZHVsZXMuZmlsdGVyKChtKSA9PiBmb3JjZSB8fCBtLmF2YWlsYWJsZVRhcmdldHMuaW5jbHVkZXModGFyZ2V0KSksXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigobXMpID0+IG1zLmxlbmd0aCA+IDApLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gUGFyYWxsZWxpemF0aW9uXG5cbmZ1bmN0aW9uIG1hcFBhcmFsbGVsT3JTZXJpYWw8VCwgUj4oXG4gIGNvbGxlY3Rpb246IHJlYWRvbmx5IFRbXSxcbiAgbWFwcGVyOiAoaXRlbTogVCkgPT4gUHJvbWlzZTxSPixcbiAgeyBwYXJhbGxlbCB9OiB7IHBhcmFsbGVsOiBib29sZWFuIH0sXG4pOiBBcnJheTxQcm9taXNlPFI+PiB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxQcm9taXNlPFI+PigpO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgIHJlc3VsdC5wdXNoKFxuICAgICAgcmVzdWx0Lmxlbmd0aCA9PT0gMCB8fCBwYXJhbGxlbFxuICAgICAgICA/IC8vIFJ1bm5pbmcgcGFyYWxsZWwsIG9yIGZpcnN0IGVsZW1lbnRcbiAgICAgICAgICBtYXBwZXIoaXRlbSlcbiAgICAgICAgOiAvLyBXYWl0IGZvciB0aGUgcHJldmlvdXMgcHJvbWlzZSwgdGhlbiBtYWtlIHRoZSBuZXh0IG9uZVxuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0udGhlbihcbiAgICAgICAgICAgICgpID0+IG1hcHBlcihpdGVtKSxcbiAgICAgICAgICAgIChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpLFxuICAgICAgICAgICksXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIE1pc2MuIFV0aWxpdGllc1xuXG5mdW5jdGlvbiBkZXNjcmliZVBhY2thZ2VzKHRhcmdldDogVGFyZ2V0U2V0KSB7XG4gIGNvbnN0IG1vZHVsZXMgPSBmbGF0dGVuKHRhcmdldC5tb2R1bGVzU29ydGVkKTtcbiAgaWYgKG1vZHVsZXMubGVuZ3RoID4gMCAmJiBtb2R1bGVzLmxlbmd0aCA8IDUpIHtcbiAgICByZXR1cm4gbW9kdWxlcy5tYXAoKG0pID0+IG0ubmFtZSkuam9pbignLCAnKTtcbiAgfVxuICByZXR1cm4gYCR7bW9kdWxlcy5sZW5ndGh9IG1vZHVsZXNgO1xufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEM7QUFDMUMsK0NBQTJEO0FBQzNELCtCQUErQjtBQUMvQixxQ0FBOEI7QUFFOUIscUNBQXFDO0FBQ3JDLCtDQUFxRTtBQUVyRSx1Q0FBcUQ7QUFPNUMsMkZBUGMsb0JBQVUsT0FPZDtBQU5uQixtQ0FBaUM7QUFFakMsaUNBQWlDO0FBS2pDLHFDQUEwRDtBQUFqRCwyR0FBQSxTQUFTLE9BQW9CO0FBRXRDOztHQUVHO0FBQ0ksS0FBSyxVQUFVLE1BQU0sQ0FBQyxFQUMzQixJQUFJLEdBQUcsRUFBRSxFQUNULEtBQUssR0FBRyxJQUFJLEVBQ1osUUFBUSxHQUFHLEtBQUssRUFDaEIsV0FBVyxHQUFHLElBQUksRUFDbEIsS0FBSyxHQUFHLEtBQUssRUFDYixpQkFBaUIsR0FBRyxJQUFJLEVBQ3hCLFdBQVcsR0FBRyxLQUFLLEVBQ25CLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsUUFBUSxHQUFHLElBQUksRUFDZixPQUFPLEdBQUcsS0FBSyxFQUNmLGFBQWEsRUFDYixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBVSxDQUFDLEVBQ25DLE1BQU0sR0FBRyxJQUFJLGNBQU0sRUFBRSxFQUNyQixzQkFBc0IsR0FBRyxTQUFTLEVBQ2xDLG9CQUFvQixHQUFHLEtBQUssRUFDNUIsa0JBQWtCLEdBQUcsS0FBSyxHQUNaO0lBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBTyxDQUFDO1FBQzFCLGVBQWUsRUFBRSxzQkFBc0I7UUFDdkMsZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QixDQUFDLENBQUM7SUFDSCxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNqRDtJQUVELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSw2QkFBZSxDQUNsRCxnQkFBZ0IsRUFD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UUFBUSxFQUF5QjtJQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO1FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUTtZQUM3QixDQUFDLENBQUMscUNBQXFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLHdEQUF3RDtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ2xCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUNOLENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxZQUFZO0FBRVoseUJBQXlCO0FBRXpCLFNBQVMsZ0JBQWdCLENBQUMsTUFBaUI7SUFDekMsTUFBTSxPQUFPLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IFJvc2V0dGEsIFVua25vd25TbmlwcGV0TW9kZSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcblxuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tICcuL2xvZ2dpbmcnO1xuaW1wb3J0IHsgZmluZEpzaWlNb2R1bGVzLCB1cGRhdGVBbGxOcG1JZ25vcmVzIH0gZnJvbSAnLi9ucG0tbW9kdWxlcyc7XG5pbXBvcnQgeyBKc2lpTW9kdWxlIH0gZnJvbSAnLi9wYWNrYWdpbmcnO1xuaW1wb3J0IHsgQUxMX0JVSUxERVJTLCBUYXJnZXROYW1lIH0gZnJvbSAnLi90YXJnZXRzJztcbmltcG9ydCB7IFRpbWVycyB9IGZyb20gJy4vdGltZXInO1xuaW1wb3J0IHsgVG9wb3NvcnRlZCB9IGZyb20gJy4vdG9wb3NvcnQnO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJy4vdXRpbCc7XG5cbi8vI3JlZ2lvbiBFeHBvcnRlZCBBUElzXG5cbmV4cG9ydCB7IFRhcmdldE5hbWUgfTtcbmV4cG9ydCB7IGNvbmZpZ3VyZSBhcyBjb25maWd1cmVMb2dnaW5nIH0gZnJvbSAnLi9sb2dnaW5nJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgY29kZSBpbiB0aGUgZGVzaXJlZCB0YXJnZXRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFjbWFrKHtcbiAgYXJndiA9IHt9LFxuICBjbGVhbiA9IHRydWUsXG4gIGNvZGVPbmx5ID0gZmFsc2UsXG4gIGZpbmdlcnByaW50ID0gdHJ1ZSxcbiAgZm9yY2UgPSBmYWxzZSxcbiAgZm9yY2VTdWJkaXJlY3RvcnkgPSB0cnVlLFxuICBmb3JjZVRhcmdldCA9IGZhbHNlLFxuICBpbnB1dERpcmVjdG9yaWVzLFxuICBvdXRwdXREaXJlY3RvcnksXG4gIHBhcmFsbGVsID0gdHJ1ZSxcbiAgcmVjdXJzZSA9IGZhbHNlLFxuICByb3NldHRhVGFibGV0LFxuICB0YXJnZXRzID0gT2JqZWN0LnZhbHVlcyhUYXJnZXROYW1lKSxcbiAgdGltZXJzID0gbmV3IFRpbWVycygpLFxuICByb3NldHRhVW5rbm93blNuaXBwZXRzID0gdW5kZWZpbmVkLFxuICB1cGRhdGVOcG1JZ25vcmVGaWxlcyA9IGZhbHNlLFxuICB2YWxpZGF0ZUFzc2VtYmxpZXMgPSBmYWxzZSxcbn06IFBhY21ha09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgcm9zZXR0YSA9IG5ldyBSb3NldHRhKHtcbiAgICB1bmtub3duU25pcHBldHM6IHJvc2V0dGFVbmtub3duU25pcHBldHMsXG4gICAgcHJlZml4RGlzY2xhaW1lcjogdHJ1ZSxcbiAgfSk7XG4gIGlmIChyb3NldHRhVGFibGV0KSB7XG4gICAgYXdhaXQgcm9zZXR0YS5sb2FkVGFibGV0RnJvbUZpbGUocm9zZXR0YVRhYmxldCk7XG4gIH1cblxuICBjb25zdCBtb2R1bGVzVG9QYWNrYWdlU29ydGVkID0gYXdhaXQgZmluZEpzaWlNb2R1bGVzKFxuICAgIGlucHV0RGlyZWN0b3JpZXMsXG4gICAgcmVjdXJzZSxcbiAgKTtcbiAgY29uc3QgbW9kdWxlc1RvUGFja2FnZUZsYXQgPSBmbGF0dGVuKG1vZHVsZXNUb1BhY2thZ2VTb3J0ZWQpO1xuXG4gIGxvZ2dpbmcuaW5mbyhgRm91bmQgJHttb2R1bGVzVG9QYWNrYWdlRmxhdC5sZW5ndGh9IG1vZHVsZXMgdG8gcGFja2FnZWApO1xuICBpZiAobW9kdWxlc1RvUGFja2FnZUZsYXQubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nZ2luZy53YXJuKCdOb3RoaW5nIHRvIGRvJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKG91dHB1dERpcmVjdG9yeSkge1xuICAgIC8vIEVuc3VyZSB0aGlzIGlzIGNvbnNpc3RlbnRseSBpbnRlcnByZXRlZCBhcyByZWxhdGl2ZSB0byBjd2QoKS4gVGhpcyBpcyB0cmFuc3BhcmVudCBmb3IgYWJzb2x1dGVcbiAgICAvLyBwYXRocywgYXMgdGhvc2Ugd291bGQgYmUgcmV0dXJuZWQgdW5tb2RpZmllZC5cbiAgICBjb25zdCBhYnNvbHV0ZU91dHB1dERpcmVjdG9yeSA9IHJlc29sdmUoY3dkKCksIG91dHB1dERpcmVjdG9yeSk7XG4gICAgZm9yIChjb25zdCBtb2Qgb2YgbW9kdWxlc1RvUGFja2FnZUZsYXQpIHtcbiAgICAgIG1vZC5vdXRwdXREaXJlY3RvcnkgPSBhYnNvbHV0ZU91dHB1dERpcmVjdG9yeTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodXBkYXRlTnBtSWdub3JlRmlsZXMpIHtcbiAgICAvLyBpZiBvdXRkaXIgaXMgY29taW5nIGZyb20gcGFja2FnZS5qc29uLCB2ZXJpZnkgaXQgaXMgZXhjbHVkZWQgYnkgLm5wbWlnbm9yZS4gaWYgaXQgaXMgZXhwbGljaXRseVxuICAgIC8vIGRlZmluZWQgdmlhIC0tb3V0LCBkb24ndCBwZXJmb3JtIHRoaXMgdmVyaWZpY2F0aW9uLlxuICAgIGF3YWl0IHVwZGF0ZUFsbE5wbUlnbm9yZXMobW9kdWxlc1RvUGFja2FnZUZsYXQpO1xuICB9XG5cbiAgYXdhaXQgdGltZXJzLnJlY29yZEFzeW5jKCducG0gcGFjaycsICgpID0+IHtcbiAgICBsb2dnaW5nLmluZm8oJ1BhY2thZ2luZyBOUE0gYnVuZGxlcycpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChtb2R1bGVzVG9QYWNrYWdlRmxhdC5tYXAoKG0pID0+IG0ubnBtUGFjaygpKSk7XG4gIH0pO1xuXG4gIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnbG9hZCBqc2lpJywgKCkgPT4ge1xuICAgIGxvZ2dpbmcuaW5mbygnTG9hZGluZyBqc2lpIGFzc2VtYmxpZXMgYW5kIHRyYW5zbGF0aW9ucycpO1xuICAgIGNvbnN0IHN5c3RlbSA9IG5ldyBUeXBlU3lzdGVtKCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZUZsYXQubWFwKGFzeW5jIChtKSA9PiB7XG4gICAgICAgIGF3YWl0IG0ubG9hZChzeXN0ZW0sIHZhbGlkYXRlQXNzZW1ibGllcyk7XG4gICAgICAgIHJldHVybiByb3NldHRhLmFkZEFzc2VtYmx5KG0uYXNzZW1ibHkuc3BlYywgbS5tb2R1bGVEaXJlY3RvcnkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0YXJnZXRTZXRzID0gc2xpY2VUYXJnZXRzKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCxcbiAgICAgIHRhcmdldHMsXG4gICAgICBmb3JjZVRhcmdldCxcbiAgICApO1xuICAgIGlmICh0YXJnZXRTZXRzLmV2ZXJ5KChzKSA9PiBzLm1vZHVsZXNTb3J0ZWQubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTm9uZSBvZiB0aGUgcmVxdWVzdGVkIHBhY2thZ2VzIGhhZCBhbnkgdGFyZ2V0cyB0byBidWlsZCBmb3IgJyR7dGFyZ2V0cy5qb2luKFxuICAgICAgICAgICcsICcsXG4gICAgICAgICl9JyAodXNlIC0tZm9yY2UtdGFyZ2V0IHRvIGZvcmNlKWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBlckxhbmd1YWdlRGlyZWN0b3J5ID0gdGFyZ2V0U2V0cy5sZW5ndGggPiAxIHx8IGZvcmNlU3ViZGlyZWN0b3J5O1xuXG4gICAgLy8gV2UgcnVuIGFsbCB0YXJnZXQgc2V0cyBpbiBwYXJhbGxlbCBmb3IgbWluaW1hbCB3YWxsIGNsb2NrIHRpbWVcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hcFBhcmFsbGVsT3JTZXJpYWwoXG4gICAgICAgIHRhcmdldFNldHMsXG4gICAgICAgIGFzeW5jICh0YXJnZXRTZXQpID0+IHtcbiAgICAgICAgICBsb2dnaW5nLmluZm8oXG4gICAgICAgICAgICBgUGFja2FnaW5nICcke3RhcmdldFNldC50YXJnZXRUeXBlfScgZm9yICR7ZGVzY3JpYmVQYWNrYWdlcyhcbiAgICAgICAgICAgICAgdGFyZ2V0U2V0LFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRpbWVyc1xuICAgICAgICAgICAgLnJlY29yZEFzeW5jKHRhcmdldFNldC50YXJnZXRUeXBlLCAoKSA9PlxuICAgICAgICAgICAgICBidWlsZFRhcmdldHNGb3JMYW5ndWFnZShcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQudGFyZ2V0VHlwZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQubW9kdWxlc1NvcnRlZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcmd2LFxuICAgICAgICAgICAgICAgICAgY2xlYW4sXG4gICAgICAgICAgICAgICAgICBjb2RlT25seSxcbiAgICAgICAgICAgICAgICAgIGZpbmdlcnByaW50LFxuICAgICAgICAgICAgICAgICAgZm9yY2UsXG4gICAgICAgICAgICAgICAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgIHJvc2V0dGEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAoKSA9PiBsb2dnaW5nLmluZm8oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZpbmlzaGVkYCksXG4gICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZhaWxlZGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBwYXJhbGxlbCB9LFxuICAgICAgKSxcbiAgICApO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChjbGVhbikge1xuICAgICAgbG9nZ2luZy5kZWJ1ZygnQ2xlYW5pbmcgdXAnKTtcbiAgICAgIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnY2xlYW51cCcsICgpID0+XG4gICAgICAgIFByb21pc2UuYWxsKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lm1hcCgobSkgPT4gbS5jbGVhbnVwKCkpKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dpbmcuaW5mbygnVGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHJldGFpbmVkICgtLW5vLWNsZWFuKScpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2dpbmcuaW5mbyhgUGFja2FnZWQuICR7dGltZXJzLmRpc3BsYXkoKX1gKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHByb3ZpZGVkIHRvIHRoZSBgcGFjbWFrYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNtYWtPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoYXQgd2VyZSBwcm92aWRlZC4gVGhpcyBpbmNsdWRlcyB0YXJnZXQtc3BlY2lmaWMgcGFyYW1ldGVycywgdGhlXG4gICAqIGhhbmRsaW5nIG9mIHdoaWNoIGlzIHVwIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBhcmd2PzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHVwb24gY29tcGxldGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIHNvdXJjZSBjb2RlIG9ubHkgKGFzIG9wcG9zZWQgdG8gYnVpbHQgcGFja2FnZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGluY2x1ZGUgYSBmaW5nZXJwcmludCBpbiBnZW5lcmF0ZWQgY29kZSwgdG8gYXZvaWQgcmUtZ2VuZXJhdGluZ1xuICAgKiBjb2RlIGlmIHRoZSBzb3VyY2UgYXNzZW1ibHkgaGFzIG5vdCBjaGFuZ2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmaW5nZXJwcmludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWx3YXlzIHJlLWdlbmVyYXRlIGNvZGUsIGV2ZW4gaWYgdGhlIGZpbmdlcnByaW50IGhhcyBub3QgY2hhbmdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWx3YXlzIGVtaXQgY29kZSBpbiBhIHBlci1sYW5ndWFnZSBzdWJkaXJlY3RvcnksIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBvbmUgdGFyZ2V0IGxhbmd1YWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVN1YmRpcmVjdG9yeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsd2F5cyB0cnkgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIHNlbGVjdGVkIHRhcmdldHMsIGV2ZW4gaWYgdGhvc2UgYXJlIG5vdCBjb25maWd1cmVkLiBVc2UgdGhpcyBvcHRpb24gYXQgeW91ciBvd25cbiAgICogcmlzaywgYXMgdGhlcmUgYXJlIHNpZ25pZmljYW50IGNoYW5jZXMgY29kZSBnZW5lcmF0b3JzIGNhbm5vdCBvcGVyYXRlIHdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVRhcmdldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGlucHV0IGFzc2VtYmxpZXMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dERpcmVjdG9yaWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBvdXRwdXQgZ2VuZXJhdGVkIHBhY2thZ2VzIG9yIGNvZGUgKGlmICBgY29kZU9ubHlgIGlzIGB0cnVlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ29uZmlndXJlZCBpbiBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcmFsbGVsaXplIGNvZGUgZ2VuZXJhdGlvbi4gVHVybmluZyB0aGlzIHRvIGBmYWxzZWAgY2FuIGJlIGJlbmVmaWNpYWwgaW4gY2VydGFpbiByZXNvdXJjZS1jb25zdHJhaW5lZFxuICAgKiBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgZnJlZSBDSS9DRCBvZmZlcmluZ3MsIGFzIGl0IHJlZHVjZXMgdGhlIHByZXNzdXJlIG9uIElPLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgZ2VuZXJhdGUgZm9yIHRoZSBzZWxlY3RlZCBwYWNrYWdlcycgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyByb3NldHRhIHNob3VsZCB0cmVhdCBzbmlwcGV0cyB0aGF0IGNhbm5vdCBiZSBsb2FkZWQgZnJvbSBhIHRyYW5zbGF0aW9uIHRhYmxldC5cbiAgICpcbiAgICogQGRlZmF1bHQgVW5rbm93blNuaXBwZXRNb2RlLlZFUkJBVElNXG4gICAqL1xuICByZWFkb25seSByb3NldHRhVW5rbm93blNuaXBwZXRzPzogVW5rbm93blNuaXBwZXRNb2RlO1xuXG4gIC8qKlxuICAgKiBBIFJvc2V0dGEgdGFibGV0IGZpbGUgd2hlcmUgdHJhbnNsYXRpb25zIGZvciBjb2RlIGV4YW1wbGVzIGNhbiBiZSBmb3VuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByb3NldHRhVGFibGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0YXJnZXRzIGZvciB3aGljaCBjb2RlIHNob3VsZCBiZSBnZW5lcmF0ZWQuIFVubGVzcyBgZm9yY2VUYXJnZXRgIGlzIGB0cnVlYCwgYSBnaXZlbiB0YXJnZXQgd2lsbCBvbmx5XG4gICAqIGJlIGdlbmVyYXRlZCBmb3IgYXNzZW1ibGllcyB0aGF0IGhhdmUgY29uZmlndXJlZCBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgT2JqZWN0LnZhbHVlcyhUYXJnZXROYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0cz86IHJlYWRvbmx5IFRhcmdldE5hbWVbXTtcblxuICAvKipcbiAgICogQSBgVGltZXJzYCBvYmplY3QsIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBpbmNsdWRpbmcgdGhlIHJvc2V0dGEgcnVuIGluIGEgbGFyZ2VyIHNldCBvZiB0aW1lZCBvcGVyYXRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZXJzPzogVGltZXJzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSAubnBtaWdub3JlIGZpbGVzIGlmIGBvdXRwdXREaXJlY3RvcnlgIGNvbWVzIGZyb20gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlTnBtSWdub3JlRmlsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFzc2VtYmxpZXMgc2hvdWxkIGJlIHZhbGlkYXRlZCBvciBub3QuIFZhbGlkYXRpb24gY2FuIGJlIGV4cGVuc2l2ZSBhbmQgY2FuIGJlIHNraXBwZWQgaWYgdGhlIGFzc2VtYmxpZXNcbiAgICogY2FuIGJlIGFzc3VtZWQgdG8gYmUgdmFsaWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZUFzc2VtYmxpZXM/OiBib29sZWFuO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIEJ1aWxkaW5nXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGFyZ2V0c0Zvckxhbmd1YWdlKFxuICB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLFxuICBtb2R1bGVzOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+LFxuICB7XG4gICAgYXJndixcbiAgICBjbGVhbixcbiAgICBjb2RlT25seSxcbiAgICBmaW5nZXJwcmludCxcbiAgICBmb3JjZSxcbiAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICByb3NldHRhLFxuICB9OiB7XG4gICAgYXJndjogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG4gICAgY2xlYW46IGJvb2xlYW47XG4gICAgY29kZU9ubHk6IGJvb2xlYW47XG4gICAgZmluZ2VycHJpbnQ6IGJvb2xlYW47XG4gICAgZm9yY2U6IGJvb2xlYW47XG4gICAgcGVyTGFuZ3VhZ2VEaXJlY3Rvcnk6IGJvb2xlYW47XG4gICAgcm9zZXR0YTogUm9zZXR0YTtcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBgYGFyZ3YudGFyZ2V0YGAgaXMgZ3VhcmFudGVlZCB2YWxpZCBieSBgYHlhcmdzYGAgdGhyb3VnaCB0aGUgYGBjaG9pY2VzYGAgZGlyZWN0aXZlLlxuICBjb25zdCBmYWN0b3J5ID0gQUxMX0JVSUxERVJTW3RhcmdldExhbmd1YWdlIGFzIFRhcmdldE5hbWVdO1xuICBpZiAoIWZhY3RvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHRhcmdldDogJyR7dGFyZ2V0TGFuZ3VhZ2V9J2ApO1xuICB9XG5cbiAgcmV0dXJuIGZhY3RvcnkobW9kdWxlcywge1xuICAgIGNsZWFuOiBjbGVhbixcbiAgICBjb2RlT25seTogY29kZU9ubHksXG4gICAgcm9zZXR0YSxcbiAgICBmb3JjZTogZm9yY2UsXG4gICAgZmluZ2VycHJpbnQ6IGZpbmdlcnByaW50LFxuICAgIGFyZ3VtZW50czogYXJndixcbiAgICBsYW5ndWFnZVN1YmRpcmVjdG9yeTogcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gIH0pLmJ1aWxkTW9kdWxlcygpO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIFRhcmdldCBTbGljaW5nXG5cbi8qKlxuICogQSBzZXQgb2YgcGFja2FnZXMgKHRhcmdldHMpIHRyYW5zbGF0ZWQgaW50byB0aGUgc2FtZSBsYW5ndWFnZVxuICovXG5pbnRlcmZhY2UgVGFyZ2V0U2V0IHtcbiAgdGFyZ2V0VHlwZTogc3RyaW5nO1xuXG4gIC8vIFNvcnRlZCBpbnRvIHRvcG9zb3J0ZWQgdHJhbmNoZXNcbiAgbW9kdWxlc1NvcnRlZDogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPjtcbn1cblxuZnVuY3Rpb24gc2xpY2VUYXJnZXRzKFxuICBtb2R1bGVzU29ydGVkOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+LFxuICByZXF1ZXN0ZWRUYXJnZXRzOiByZWFkb25seSBUYXJnZXROYW1lW10sXG4gIGZvcmNlOiBib29sZWFuLFxuKTogcmVhZG9ubHkgVGFyZ2V0U2V0W10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8VGFyZ2V0U2V0PigpO1xuICBmb3IgKGNvbnN0IHRhcmdldCBvZiByZXF1ZXN0ZWRUYXJnZXRzKSB7XG4gICAgcmV0LnB1c2goe1xuICAgICAgdGFyZ2V0VHlwZTogdGFyZ2V0LFxuICAgICAgbW9kdWxlc1NvcnRlZDogbW9kdWxlc1NvcnRlZFxuICAgICAgICAubWFwKChtb2R1bGVzKSA9PlxuICAgICAgICAgIG1vZHVsZXMuZmlsdGVyKChtKSA9PiBmb3JjZSB8fCBtLmF2YWlsYWJsZVRhcmdldHMuaW5jbHVkZXModGFyZ2V0KSksXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigobXMpID0+IG1zLmxlbmd0aCA+IDApLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gUGFyYWxsZWxpemF0aW9uXG5cbmZ1bmN0aW9uIG1hcFBhcmFsbGVsT3JTZXJpYWw8VCwgUj4oXG4gIGNvbGxlY3Rpb246IHJlYWRvbmx5IFRbXSxcbiAgbWFwcGVyOiAoaXRlbTogVCkgPT4gUHJvbWlzZTxSPixcbiAgeyBwYXJhbGxlbCB9OiB7IHBhcmFsbGVsOiBib29sZWFuIH0sXG4pOiBBcnJheTxQcm9taXNlPFI+PiB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxQcm9taXNlPFI+PigpO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgIHJlc3VsdC5wdXNoKFxuICAgICAgcmVzdWx0Lmxlbmd0aCA9PT0gMCB8fCBwYXJhbGxlbFxuICAgICAgICA/IC8vIFJ1bm5pbmcgcGFyYWxsZWwsIG9yIGZpcnN0IGVsZW1lbnRcbiAgICAgICAgICBtYXBwZXIoaXRlbSlcbiAgICAgICAgOiAvLyBXYWl0IGZvciB0aGUgcHJldmlvdXMgcHJvbWlzZSwgdGhlbiBtYWtlIHRoZSBuZXh0IG9uZVxuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0udGhlbihcbiAgICAgICAgICAgICgpID0+IG1hcHBlcihpdGVtKSxcbiAgICAgICAgICAgIChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpLFxuICAgICAgICAgICksXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIE1pc2MuIFV0aWxpdGllc1xuXG5mdW5jdGlvbiBkZXNjcmliZVBhY2thZ2VzKHRhcmdldDogVGFyZ2V0U2V0KSB7XG4gIGNvbnN0IG1vZHVsZXMgPSBmbGF0dGVuKHRhcmdldC5tb2R1bGVzU29ydGVkKTtcbiAgaWYgKG1vZHVsZXMubGVuZ3RoID4gMCAmJiBtb2R1bGVzLmxlbmd0aCA8IDUpIHtcbiAgICByZXR1cm4gbW9kdWxlcy5tYXAoKG0pID0+IG0ubmFtZSkuam9pbignLCAnKTtcbiAgfVxuICByZXR1cm4gYCR7bW9kdWxlcy5sZW5ndGh9IG1vZHVsZXNgO1xufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==
|
|
@@ -18,6 +18,7 @@ export declare class Documentation {
|
|
|
18
18
|
*/
|
|
19
19
|
emit(docs: Docs, apiLocation: ApiLocation): void;
|
|
20
20
|
emitStability(docs: Docs): void;
|
|
21
|
+
emitReadme(moduleFqn: string, readme: string, directory: string): void;
|
|
21
22
|
private emitComment;
|
|
22
23
|
private shouldMentionStability;
|
|
23
24
|
}
|
|
@@ -64,6 +64,15 @@ class Documentation {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
emitReadme(moduleFqn, readme, directory) {
|
|
68
|
+
const goReadme = this.rosetta.translateSnippetsInMarkdown({ api: 'moduleReadme', moduleFqn }, readme, jsii_rosetta_1.TargetLanguage.GO, false);
|
|
69
|
+
const readmeFile = `${directory}/README.md`;
|
|
70
|
+
this.code.openFile(readmeFile);
|
|
71
|
+
for (const line of goReadme.split('\n')) {
|
|
72
|
+
this.code.line(line);
|
|
73
|
+
}
|
|
74
|
+
this.code.closeFile(readmeFile);
|
|
75
|
+
}
|
|
67
76
|
emitComment(text = '') {
|
|
68
77
|
const lines = text.trim().split('\n');
|
|
69
78
|
// Ensure the comment always ends with a final period, conform with GoDoc conventions.
|
|
@@ -82,4 +91,4 @@ class Documentation {
|
|
|
82
91
|
}
|
|
83
92
|
}
|
|
84
93
|
exports.Documentation = Documentation;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRvY3VtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVDO0FBR3ZDLCtDQUFvRTtBQUVwRSxNQUFhLGFBQWE7SUFDeEIsWUFDbUIsSUFBZSxFQUNmLE9BQWdCO1FBRGhCLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFTO0lBQ2hDLENBQUM7SUFFSjs7Ozs7Ozs7OztPQVVHO0lBQ0ksSUFBSSxDQUFDLElBQVUsRUFBRSxXQUF3QjtRQUM5QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7WUFDRCxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7WUFDRCxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLCtFQUErRTtZQUMvRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUM3QyxX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QVMsRUFBUTtRQUNoRCw0RUFBNEU7UUFDNUUsT0FBTyxDQUNMLFNBQVMsS0FBSyxnQkFBUyxDQUFDLFVBQVUsSUFBSSxTQUFTLEtBQUssZ0JBQVMsQ0FBQyxZQUFZLENBQzNFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE3R0Qsc0NBNkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhYmlsaXR5IH0gZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBDb2RlTWFrZXIgfSBmcm9tICdjb2RlbWFrZXInO1xuaW1wb3J0IHsgRG9jcyB9IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBBcGlMb2NhdGlvbiwgUm9zZXR0YSwgVGFyZ2V0TGFuZ3VhZ2UgfSBmcm9tICdqc2lpLXJvc2V0dGEnO1xuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRhdGlvbiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvZGU6IENvZGVNYWtlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvc2V0dGE6IFJvc2V0dGEsXG4gICkge31cblxuICAvKipcbiAgICogRW1pdHMgYWxsIGRvY3VtZW50YXRpb24gZGVwZW5kaW5nIG9uIHdoYXQgaXMgYXZhaWxhYmxlIGluIHRoZSBqc2lpIG1vZGVsXG4gICAqXG4gICAqIFVzZWQgYnkgYWxsIGtpbmQgb2YgbWVtYmVycyArIGNsYXNzZXMsIGludGVyZmFjZXMsIGVudW1zXG4gICAqIE9yZGVyIHNob3VsZCBiZVxuICAgKiBTdW1tYXJ5ICsgUmVtYXJrc1xuICAgKiBSZXR1cm5zXG4gICAqIEV4YW1wbGVzIDx0cmFuc2xpdGVyYXRlZCBleGFtcGxlIGNvZGU+XG4gICAqIExpbmtcbiAgICogU3RhYmlsaXR5L0RlcHJlY2F0aW9uIGRlc2NyaXB0aW9uXG4gICAqL1xuICBwdWJsaWMgZW1pdChkb2NzOiBEb2NzLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiB2b2lkIHtcbiAgICBsZXQgZmlyc3RMaW5lID0gdHJ1ZTtcbiAgICBpZiAoZG9jcy50b1N0cmluZygpICE9PSAnJykge1xuICAgICAgdGhpcy5lbWl0Q29tbWVudChkb2NzLnRvU3RyaW5nKCkpO1xuICAgICAgZmlyc3RMaW5lID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGRvY3MucmV0dXJucyAhPT0gJycpIHtcbiAgICAgIGlmICghZmlyc3RMaW5lKSB7XG4gICAgICAgIHRoaXMuZW1pdENvbW1lbnQoKTtcbiAgICAgIH1cbiAgICAgIGZpcnN0TGluZSA9IGZhbHNlO1xuICAgICAgdGhpcy5lbWl0Q29tbWVudChgUmV0dXJuczogJHtkb2NzLnJldHVybnN9YCk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3MuZXhhbXBsZSAhPT0gJycpIHtcbiAgICAgIGlmICghZmlyc3RMaW5lKSB7XG4gICAgICAgIHRoaXMuZW1pdENvbW1lbnQoKTtcbiAgICAgIH1cbiAgICAgIGZpcnN0TGluZSA9IGZhbHNlO1xuICAgICAgLy8gVE9ETzogVHJhbnNsYXRlIGNvZGUgZXhhbXBsZXMgdG8gR28gd2l0aCBSb3NldHRhIChub3QgaW1wbGVtZW50ZWQgdGhlcmUgeWV0KVxuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vIEV4YW1wbGU6Jyk7XG4gICAgICBjb25zdCBnb0V4YW1wbGUgPSB0aGlzLnJvc2V0dGEudHJhbnNsYXRlRXhhbXBsZShcbiAgICAgICAgYXBpTG9jYXRpb24sXG4gICAgICAgIGRvY3MuZXhhbXBsZSxcbiAgICAgICAgVGFyZ2V0TGFuZ3VhZ2UuR08sXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGxpbmVzID0gZ29FeGFtcGxlLnNvdXJjZS5zcGxpdCgnXFxuJyk7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgLy8gSW5saW5lIGNvZGUgbmVlZHMgdG8gYmUgaW50ZW50ZWQgb25lIGxldmVsIGRlZXBlciB0aGFuIHJlZ3VsYXIgdGV4dC5cbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vICAgJHtsaW5lfWAudHJpbSgpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW1pdENvbW1lbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jcy5saW5rICE9PSAnJykge1xuICAgICAgdGhpcy5lbWl0Q29tbWVudChgU2VlOiAke2RvY3MubGlua31gKTtcbiAgICAgIHRoaXMuZW1pdENvbW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRTdGFiaWxpdHkoZG9jcyk7XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0YWJpbGl0eShkb2NzOiBEb2NzKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhYmlsaXR5ID0gZG9jcy5zdGFiaWxpdHk7XG4gICAgaWYgKHN0YWJpbGl0eSAmJiB0aGlzLnNob3VsZE1lbnRpb25TdGFiaWxpdHkoZG9jcykpIHtcbiAgICAgIGlmIChkb2NzLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgdGhpcy5lbWl0Q29tbWVudChgRGVwcmVjYXRlZDogJHtkb2NzLmRlcHJlY2F0aW9uUmVhc29ufWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbWl0Q29tbWVudChgJHt0aGlzLmNvZGUudG9QYXNjYWxDYXNlKHN0YWJpbGl0eSl9LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbWl0UmVhZG1lKG1vZHVsZUZxbjogc3RyaW5nLCByZWFkbWU6IHN0cmluZywgZGlyZWN0b3J5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBnb1JlYWRtZSA9IHRoaXMucm9zZXR0YS50cmFuc2xhdGVTbmlwcGV0c0luTWFya2Rvd24oXG4gICAgICB7IGFwaTogJ21vZHVsZVJlYWRtZScsIG1vZHVsZUZxbiB9LFxuICAgICAgcmVhZG1lLFxuICAgICAgVGFyZ2V0TGFuZ3VhZ2UuR08sXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgY29uc3QgcmVhZG1lRmlsZSA9IGAke2RpcmVjdG9yeX0vUkVBRE1FLm1kYDtcbiAgICB0aGlzLmNvZGUub3BlbkZpbGUocmVhZG1lRmlsZSk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGdvUmVhZG1lLnNwbGl0KCdcXG4nKSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUobGluZSk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUocmVhZG1lRmlsZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb21tZW50KHRleHQgPSAnJykge1xuICAgIGNvbnN0IGxpbmVzID0gdGV4dC50cmltKCkuc3BsaXQoJ1xcbicpO1xuXG4gICAgLy8gRW5zdXJlIHRoZSBjb21tZW50IGFsd2F5cyBlbmRzIHdpdGggYSBmaW5hbCBwZXJpb2QsIGNvbmZvcm0gd2l0aCBHb0RvYyBjb252ZW50aW9ucy5cbiAgICBjb25zdCBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0TGluZS50cmltKCkgIT09ICcnICYmICEvXFxwe1NlbnRlbmNlX1Rlcm1pbmFsfS91LnRlc3QobGFzdExpbmUpKSB7XG4gICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9IGAke2xhc3RMaW5lLnRyaW0oKX0uYDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIC8vIEZpbmFsIHRyaW0oKSBoZXJlIGlzIHRvIGF2b2lkIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb24gZW1wdHkgY29tbWVudCBsaW5lcy5cbiAgICAgIHRoaXMuY29kZS5saW5lKGAvLyAke2xpbmV9YC50cmltKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTWVudGlvblN0YWJpbGl0eSh7IHN0YWJpbGl0eSB9OiBEb2NzKTogYm9vbGVhbiB7XG4gICAgLy8gRG9uJ3QgcmVuZGVyIFwic3RhYmxlXCIgb3IgXCJleHRlcm5hbFwiLCB0aG9zZSBhcmUgYm90aCBzdGFibGUgYnkgaW1wbGljYXRpb25cbiAgICByZXR1cm4gKFxuICAgICAgc3RhYmlsaXR5ID09PSBTdGFiaWxpdHkuRGVwcmVjYXRlZCB8fCBzdGFiaWxpdHkgPT09IFN0YWJpbGl0eS5FeHBlcmltZW50YWxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { CodeMaker } from 'codemaker';
|
|
2
|
-
import { Assembly,
|
|
2
|
+
import { Assembly, ModuleLike as JsiiModuleLike, Submodule as JsiiSubmodule } from 'jsii-reflect';
|
|
3
3
|
import { SpecialDependencies } from './dependencies';
|
|
4
4
|
import { EmitContext } from './emit-context';
|
|
5
5
|
import { GoClass, GoType, GoInterface, GoTypeRef } from './types';
|
|
6
6
|
export declare const GOMOD_FILENAME = "go.mod";
|
|
7
7
|
export declare const GO_VERSION = "1.16";
|
|
8
8
|
export declare abstract class Package {
|
|
9
|
-
private readonly
|
|
10
|
-
private readonly submoduleSpec;
|
|
9
|
+
private readonly jsiiModule;
|
|
11
10
|
readonly packageName: string;
|
|
12
11
|
readonly filePath: string;
|
|
13
12
|
readonly moduleName: string;
|
|
@@ -18,7 +17,8 @@ export declare abstract class Package {
|
|
|
18
17
|
readonly submodules: InternalPackage[];
|
|
19
18
|
readonly types: GoType[];
|
|
20
19
|
private readonly embeddedTypes;
|
|
21
|
-
|
|
20
|
+
private readonly readmeFile?;
|
|
21
|
+
constructor(jsiiModule: JsiiModuleLike, packageName: string, filePath: string, moduleName: string, version: string, root?: Package);
|
|
22
22
|
get dependencies(): Package[];
|
|
23
23
|
get goModuleName(): string;
|
|
24
24
|
get dependencyImports(): Set<string>;
|
|
@@ -56,7 +56,6 @@ export declare abstract class Package {
|
|
|
56
56
|
export declare class RootPackage extends Package {
|
|
57
57
|
readonly assembly: Assembly;
|
|
58
58
|
readonly version: string;
|
|
59
|
-
private readonly readme?;
|
|
60
59
|
private readonly versionFile;
|
|
61
60
|
private readonly rootPackageCache;
|
|
62
61
|
constructor(assembly: Assembly, rootPackageCache?: Map<string, RootPackage>);
|
|
@@ -18,11 +18,11 @@ const INTERNAL_PACKAGE_NAME = 'internal';
|
|
|
18
18
|
* Package represents a single `.go` source file within a package. This can be the root package file or a submodule
|
|
19
19
|
*/
|
|
20
20
|
class Package {
|
|
21
|
-
constructor(
|
|
21
|
+
constructor(jsiiModule, packageName, filePath, moduleName, version,
|
|
22
22
|
// If no root is provided, this module is the root
|
|
23
23
|
root) {
|
|
24
|
-
|
|
25
|
-
this.
|
|
24
|
+
var _a;
|
|
25
|
+
this.jsiiModule = jsiiModule;
|
|
26
26
|
this.packageName = packageName;
|
|
27
27
|
this.filePath = filePath;
|
|
28
28
|
this.moduleName = moduleName;
|
|
@@ -31,8 +31,8 @@ class Package {
|
|
|
31
31
|
this.directory = filePath;
|
|
32
32
|
this.file = `${this.directory}/${packageName}.go`;
|
|
33
33
|
this.root = root !== null && root !== void 0 ? root : this;
|
|
34
|
-
this.submodules = this.
|
|
35
|
-
this.types = this.
|
|
34
|
+
this.submodules = this.jsiiModule.submodules.map((sm) => new InternalPackage(this.root, this, sm));
|
|
35
|
+
this.types = this.jsiiModule.types.map((type) => {
|
|
36
36
|
if (type.isInterfaceType() && type.datatype) {
|
|
37
37
|
return new types_1.Struct(this, type);
|
|
38
38
|
}
|
|
@@ -47,6 +47,9 @@ class Package {
|
|
|
47
47
|
}
|
|
48
48
|
throw new Error(`Type: ${type.name} with kind ${type.kind} is not a supported type`);
|
|
49
49
|
});
|
|
50
|
+
if ((_a = this.jsiiModule.readme) === null || _a === void 0 ? void 0 : _a.markdown) {
|
|
51
|
+
this.readmeFile = new readme_file_1.ReadmeFile(this.jsiiModule.fqn, this.jsiiModule.readme.markdown, this.directory);
|
|
52
|
+
}
|
|
50
53
|
}
|
|
51
54
|
/*
|
|
52
55
|
* Packages within this module
|
|
@@ -79,12 +82,14 @@ class Package {
|
|
|
79
82
|
return util_1.findTypeInTree(this, fqn);
|
|
80
83
|
}
|
|
81
84
|
emit(context) {
|
|
85
|
+
var _a;
|
|
82
86
|
const { code } = context;
|
|
83
87
|
code.openFile(this.file);
|
|
84
88
|
this.emitHeader(code);
|
|
85
89
|
this.emitImports(code);
|
|
86
90
|
this.emitTypes(context);
|
|
87
91
|
code.closeFile(this.file);
|
|
92
|
+
(_a = this.readmeFile) === null || _a === void 0 ? void 0 : _a.emit(context);
|
|
88
93
|
this.emitGoInitFunction(context);
|
|
89
94
|
this.emitSubmodules(context);
|
|
90
95
|
this.emitInternal(context);
|
|
@@ -244,27 +249,22 @@ exports.Package = Package;
|
|
|
244
249
|
*/
|
|
245
250
|
class RootPackage extends Package {
|
|
246
251
|
constructor(assembly, rootPackageCache = new Map()) {
|
|
247
|
-
var _a, _b, _c, _d
|
|
252
|
+
var _a, _b, _c, _d;
|
|
248
253
|
const goConfig = (_b = (_a = assembly.targets) === null || _a === void 0 ? void 0 : _a.go) !== null && _b !== void 0 ? _b : {};
|
|
249
254
|
const packageName = util_1.goPackageNameForAssembly(assembly);
|
|
250
255
|
const filePath = '';
|
|
251
256
|
const moduleName = (_c = goConfig.moduleName) !== null && _c !== void 0 ? _c : '';
|
|
252
257
|
const version = `${assembly.version}${(_d = goConfig.versionSuffix) !== null && _d !== void 0 ? _d : ''}`;
|
|
253
|
-
super(assembly
|
|
258
|
+
super(assembly, packageName, filePath, moduleName, version);
|
|
254
259
|
this.rootPackageCache = rootPackageCache;
|
|
255
260
|
this.rootPackageCache.set(assembly.name, this);
|
|
256
261
|
this.assembly = assembly;
|
|
257
262
|
this.version = version;
|
|
258
263
|
this.versionFile = new version_file_1.VersionFile(this.version);
|
|
259
|
-
if ((_e = this.assembly.readme) === null || _e === void 0 ? void 0 : _e.markdown) {
|
|
260
|
-
this.readme = new readme_file_1.ReadmeFile(this.packageName, this.assembly.readme.markdown);
|
|
261
|
-
}
|
|
262
264
|
}
|
|
263
265
|
emit(context) {
|
|
264
|
-
var _a;
|
|
265
266
|
super.emit(context);
|
|
266
267
|
this.emitJsiiPackage(context);
|
|
267
|
-
(_a = this.readme) === null || _a === void 0 ? void 0 : _a.emit(context);
|
|
268
268
|
this.emitGomod(context.code);
|
|
269
269
|
this.versionFile.emit(context.code);
|
|
270
270
|
}
|
|
@@ -379,7 +379,7 @@ class InternalPackage extends Package {
|
|
|
379
379
|
constructor(root, parent, assembly) {
|
|
380
380
|
const packageName = util_1.goPackageNameForAssembly(assembly);
|
|
381
381
|
const filePath = parent === root ? packageName : `${parent.filePath}/${packageName}`;
|
|
382
|
-
super(assembly
|
|
382
|
+
super(assembly, packageName, filePath, root.moduleName, root.version, root);
|
|
383
383
|
this.parent = parent;
|
|
384
384
|
}
|
|
385
385
|
}
|
|
@@ -470,4 +470,4 @@ function importGoModules(code, modules) {
|
|
|
470
470
|
return mod.alias === runtime_1.JSII_RT_ALIAS || mod.alias === runtime_1.JSII_INIT_ALIAS;
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0JBQStDO0FBQy9DLGlDQUFpQztBQUVqQywyQ0FBd0M7QUFHeEMsK0NBQTJDO0FBQzNDLHVDQU9tQjtBQUNuQixtQ0FBZ0Y7QUFDaEYsaUNBS2dCO0FBQ2hCLGlEQUE2QztBQUVoQyxRQUFBLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFDMUIsUUFBQSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBRWpDLDZFQUE2RTtBQUM3RSxrQ0FBa0M7QUFDbEMsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUM7QUFFekM7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBUzNCLFlBQ21CLFFBQXlCLEVBQ3pCLGFBQXVDLEVBQ3hDLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLE9BQWU7SUFDL0Isa0RBQWtEO0lBQ2xELElBQWM7UUFQRyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFSaEIsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQVkvRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxXQUFXLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUN0QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMs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RCxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsR0FBbUI7UUFDcEMseUVBQXlFO1FBQ3pFLG9FQUFvRTtRQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVMsU0FBUyxDQUFDLEdBQW1CO1FBQ3BDLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyx1QkFBYSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUsseUJBQWUsQ0FBQztJQUN0RSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gJ2NvZGVtYWtlcic7XG5pbXBvcnQgeyBBc3NlbWJseSwgVHlwZSwgU3VibW9kdWxlIGFzIEpzaWlTdWJtb2R1bGUgfSBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgeyBTcGVjaWFsRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMnO1xuaW1wb3J0IHsgRW1pdENvbnRleHQgfSBmcm9tICcuL2VtaXQtY29udGV4dCc7XG5pbXBvcnQgeyBSZWFkbWVGaWxlIH0gZnJvbSAnLi9yZWFkbWUtZmlsZSc7XG5pbXBvcnQge1xuICBKU0lJX1JUX0FMSUFTLFxuICBKU0lJX1JUX01PRFVMRV9OQU1FLFxuICBKU0lJX1JUX1BBQ0tBR0VfTkFNRSxcbiAgSlNJSV9JTklUX1BBQ0tBR0UsXG4gIEpTSUlfSU5JVF9GVU5DLFxuICBKU0lJX0lOSVRfQUxJQVMsXG59IGZyb20gJy4vcnVudGltZSc7XG5pbXBvcnQgeyBHb0NsYXNzLCBHb1R5cGUsIEVudW0sIEdvSW50ZXJmYWNlLCBTdHJ1Y3QsIEdvVHlwZVJlZiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZmluZFR5cGVJblRyZWUsXG4gIGdvUGFja2FnZU5hbWVGb3JBc3NlbWJseSxcbiAgZmxhdE1hcCxcbiAgdGFyYmFsbE5hbWUsXG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBWZXJzaW9uRmlsZSB9IGZyb20gJy4vdmVyc2lvbi1maWxlJztcblxuZXhwb3J0IGNvbnN0IEdPTU9EX0ZJTEVOQU1FID0gJ2dvLm1vZCc7XG5leHBvcnQgY29uc3QgR09fVkVSU0lPTiA9ICcxLjE2JztcblxuLy8gdGhlIG5hbWUgb2YgYSBzdWItcGFja2FnZSB0aGF0IGluY2x1ZGVzIGludGVybmFsIHR5cGUgYWxpYXNlcyBpdCBoYXMgdG8gYmVcbi8vIFwiaW50ZXJuYWxcIiBzbyBpdCBub3QgcHVibGlzaGVkLlxuY29uc3QgSU5URVJOQUxfUEFDS0FHRV9OQU1FID0gJ2ludGVybmFsJztcblxuLypcbiAqIFBhY2thZ2UgcmVwcmVzZW50cyBhIHNpbmdsZSBgLmdvYCBzb3VyY2UgZmlsZSB3aXRoaW4gYSBwYWNrYWdlLiBUaGlzIGNhbiBiZSB0aGUgcm9vdCBwYWNrYWdlIGZpbGUgb3IgYSBzdWJtb2R1bGVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBhY2thZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9vdDogUGFja2FnZTtcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibW9kdWxlczogSW50ZXJuYWxQYWNrYWdlW107XG4gIHB1YmxpYyByZWFkb25seSB0eXBlczogR29UeXBlW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbWJlZGRlZFR5cGVzID0gbmV3IE1hcDxzdHJpbmcsIEVtYmVkZGVkVHlwZT4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlU3BlYzogcmVhZG9ubHkgVHlwZVtdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VibW9kdWxlU3BlYzogcmVhZG9ubHkgSnNpaVN1Ym1vZHVsZVtdLFxuICAgIHB1YmxpYyByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZyxcbiAgICAvLyBJZiBubyByb290IGlzIHByb3ZpZGVkLCB0aGlzIG1vZHVsZSBpcyB0aGUgcm9vdFxuICAgIHJvb3Q/OiBQYWNrYWdlLFxuICApIHtcbiAgICB0aGlzLmRpcmVjdG9yeSA9IGZpbGVQYXRoO1xuICAgIHRoaXMuZmlsZSA9IGAke3RoaXMuZGlyZWN0b3J5fS8ke3BhY2thZ2VOYW1lfS5nb2A7XG4gICAgdGhpcy5yb290ID0gcm9vdCA/PyB0aGlzO1xuICAgIHRoaXMuc3VibW9kdWxlcyA9IHRoaXMuc3VibW9kdWxlU3BlYy5tYXAoXG4gICAgICAoc20pID0+IG5ldyBJbnRlcm5hbFBhY2thZ2UodGhpcy5yb290LCB0aGlzLCBzbSksXG4gICAgKTtcblxuICAgIHRoaXMudHlwZXMgPSB0aGlzLnR5cGVTcGVjLm1hcCgodHlwZTogVHlwZSk6IEdvVHlwZSA9PiB7XG4gICAgICBpZiAodHlwZS5pc0ludGVyZmFjZVR5cGUoKSAmJiB0eXBlLmRhdGF0eXBlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RydWN0KHRoaXMsIHR5cGUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICAgIHJldHVybiBuZXcgR29JbnRlcmZhY2UodGhpcywgdHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUuaXNDbGFzc1R5cGUoKSkge1xuICAgICAgICByZXR1cm4gbmV3IEdvQ2xhc3ModGhpcywgdHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUuaXNFbnVtVHlwZSgpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRW51bSh0aGlzLCB0eXBlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFR5cGU6ICR7dHlwZS5uYW1lfSB3aXRoIGtpbmQgJHt0eXBlLmtpbmR9IGlzIG5vdCBhIHN1cHBvcnRlZCB0eXBlYCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBQYWNrYWdlcyB3aXRoaW4gdGhpcyBtb2R1bGVcbiAgICovXG4gIHB1YmxpYyBnZXQgZGVwZW5kZW5jaWVzKCk6IFBhY2thZ2VbXSB7XG4gICAgcmV0dXJuIGZsYXRNYXAodGhpcy50eXBlcywgKHQ6IEdvVHlwZSk6IFBhY2thZ2VbXSA9PiB0LmRlcGVuZGVuY2llcykuZmlsdGVyKFxuICAgICAgKG1vZCkgPT4gbW9kLnBhY2thZ2VOYW1lICE9PSB0aGlzLnBhY2thZ2VOYW1lLFxuICAgICk7XG4gIH1cblxuICAvKlxuICAgKiBnb01vZHVsZU5hbWUgcmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBtb2R1bGUgbmFtZS5cbiAgICogVXNlZCBmb3IgaW1wb3J0IHN0YXRlbWVudHMgYW5kIGdvLm1vZCBnZW5lcmF0aW9uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGdvTW9kdWxlTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0aGlzLnJvb3QubW9kdWxlTmFtZTtcbiAgICBjb25zdCBwcmVmaXggPSBtb2R1bGVOYW1lICE9PSAnJyA/IGAke21vZHVsZU5hbWV9L2AgOiAnJztcbiAgICBjb25zdCByb290UGFja2FnZU5hbWUgPSB0aGlzLnJvb3QucGFja2FnZU5hbWU7XG4gICAgY29uc3QgdmVyc2lvblN1ZmZpeCA9IGRldGVybWluZU1ham9yVmVyc2lvblN1ZmZpeCh0aGlzLnZlcnNpb24pO1xuICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuZmlsZVBhdGggIT09ICcnID8gYC8ke3RoaXMuZmlsZVBhdGh9YCA6IGBgO1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtyb290UGFja2FnZU5hbWV9JHt2ZXJzaW9uU3VmZml4fSR7c3VmZml4fWA7XG4gIH1cblxuICAvKlxuICAgKiBUaGUgbW9kdWxlIG5hbWVzIG9mIHRoaXMgbW9kdWxlJ3MgZGVwZW5kZW5jaWVzLiBVc2VkIGZvciBpbXBvcnQgc3RhdGVtZW50cy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVwZW5kZW5jeUltcG9ydHMoKTogU2V0PHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgU2V0KHRoaXMuZGVwZW5kZW5jaWVzLm1hcCgocGtnKSA9PiBwa2cuZ29Nb2R1bGVOYW1lKSk7XG4gIH1cblxuICAvKlxuICAgKiBTZWFyY2ggZm9yIGEgdHlwZSB3aXRoIGEgYGZxbmAgd2l0aGluIHRoaXMuIFNlYXJjaGVzIGFsbCBDaGlsZHJlbiBtb2R1bGVzIGFzIHdlbGwuXG4gICAqL1xuICBwdWJsaWMgZmluZFR5cGUoZnFuOiBzdHJpbmcpOiBHb1R5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBmaW5kVHlwZUluVHJlZSh0aGlzLCBmcW4pO1xuICB9XG5cbiAgcHVibGljIGVtaXQoY29udGV4dDogRW1pdENvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvZGUgfSA9IGNvbnRleHQ7XG5cbiAgICBjb2RlLm9wZW5GaWxlKHRoaXMuZmlsZSk7XG4gICAgdGhpcy5lbWl0SGVhZGVyKGNvZGUpO1xuICAgIHRoaXMuZW1pdEltcG9ydHMoY29kZSk7XG4gICAgdGhpcy5lbWl0VHlwZXMoY29udGV4dCk7XG4gICAgY29kZS5jbG9zZUZpbGUodGhpcy5maWxlKTtcblxuICAgIHRoaXMuZW1pdEdvSW5pdEZ1bmN0aW9uKGNvbnRleHQpO1xuICAgIHRoaXMuZW1pdFN1Ym1vZHVsZXMoY29udGV4dCk7XG5cbiAgICB0aGlzLmVtaXRJbnRlcm5hbChjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U3VibW9kdWxlcyhjb250ZXh0OiBFbWl0Q29udGV4dCkge1xuICAgIGZvciAoY29uc3Qgc3VibW9kdWxlIG9mIHRoaXMuc3VibW9kdWxlcykge1xuICAgICAgc3VibW9kdWxlLmVtaXQoY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYHR5cGVgIGNvbWVzIGZyb20gYSBmb3JlaWduIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgaXNFeHRlcm5hbFR5cGUodHlwZTogR29DbGFzcyB8IEdvSW50ZXJmYWNlKSB7XG4gICAgcmV0dXJuIHR5cGUucGtnICE9PSB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGVtYmVkIGZpZWxkIHVzZWQgdG8gZW1iZWQgYSBiYXNlIGNsYXNzL2ludGVyZmFjZSBpbiBhXG4gICAqIHN0cnVjdC5cbiAgICpcbiAgICogQHJldHVybnMgSWYgdGhlIGJhc2UgaXMgaW4gdGhlIHNhbWUgcGFja2FnZSwgcmV0dXJucyB0aGUgcHJveHkgbmFtZSBvZiB0aGVcbiAgICogYmFzZSB1bmRlciBgZW1iZWRgLCBvdGhlcndpc2UgcmV0dXJucyBhIHVuaXF1ZSBzeW1ib2wgdW5kZXIgYGVtYmVkYCBhbmQgdGhlXG4gICAqIG9yaWdpbmFsIGludGVyZmFjZSByZWZlcmVuY2UgdW5kZXIgYG9yaWdpbmFsYC5cbiAgICpcbiAgICogQHBhcmFtIHR5cGUgVGhlIGJhc2UgdHlwZSB3ZSB3YW50IHRvIGVtYmVkXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZUVtYmVkZGVkVHlwZSh0eXBlOiBHb0NsYXNzIHwgR29JbnRlcmZhY2UpOiBFbWJlZGRlZFR5cGUge1xuICAgIGlmICghdGhpcy5pc0V4dGVybmFsVHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW1iZWQ6IHR5cGUucHJveHlOYW1lLFxuICAgICAgICBmaWVsZE5hbWU6IHR5cGUucHJveHlOYW1lLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdHMgPSB0aGlzLmVtYmVkZGVkVHlwZXMuZ2V0KHR5cGUuZnFuKTtcbiAgICBpZiAoZXhpc3RzKSB7XG4gICAgICByZXR1cm4gZXhpc3RzO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVyZWYgPSBuZXcgR29UeXBlUmVmKHRoaXMucm9vdCwgdHlwZS50eXBlLnJlZmVyZW5jZSk7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSB0eXBlcmVmLnNjb3BlZE5hbWUodGhpcyk7XG5cbiAgICBjb25zdCBzbHVnID0gb3JpZ2luYWwucmVwbGFjZSgvW15BLVphLXowLTldL2csICcnKTtcbiAgICBjb25zdCBhbGlhc05hbWUgPSBgVHlwZV9fJHtzbHVnfWA7XG5cbiAgICBjb25zdCBlbWJlZGRlZFR5cGU6IEVtYmVkZGVkVHlwZSA9IHtcbiAgICAgIGZvcmllZ25UeXBlTmFtZTogb3JpZ2luYWwsXG4gICAgICBmb3JpZWduVHlwZTogdHlwZXJlZixcbiAgICAgIGZpZWxkTmFtZTogYWxpYXNOYW1lLFxuICAgICAgZW1iZWQ6IGAke0lOVEVSTkFMX1BBQ0tBR0VfTkFNRX0uJHthbGlhc05hbWV9YCxcbiAgICB9O1xuICAgIHRoaXMuZW1iZWRkZWRUeXBlcy5zZXQodHlwZS5mcW4sIGVtYmVkZGVkVHlwZSk7XG5cbiAgICByZXR1cm4gZW1iZWRkZWRUeXBlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVtaXRIZWFkZXIoY29kZTogQ29kZU1ha2VyKSB7XG4gICAgY29kZS5saW5lKGBwYWNrYWdlICR7dGhpcy5wYWNrYWdlTmFtZX1gKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc3BlY2lhbERlcGVuZGVuY2llcygpOiBTcGVjaWFsRGVwZW5kZW5jaWVzIHtcbiAgICByZXR1cm4gdGhpcy50eXBlc1xuICAgICAgLm1hcCgodCkgPT4gdC5zcGVjaWFsRGVwZW5kZW5jaWVzKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKGFjYywgZWx0KSA9PiAoe1xuICAgICAgICAgIHJ1bnRpbWU6IGFjYy5ydW50aW1lIHx8IGVsdC5ydW50aW1lLFxuICAgICAgICAgIGluaXQ6IGFjYy5pbml0IHx8IGVsdC5pbml0LFxuICAgICAgICAgIGludGVybmFsOiBhY2MuaW50ZXJuYWwgfHwgZWx0LmludGVybmFsLFxuICAgICAgICAgIHRpbWU6IGFjYy50aW1lIHx8IGVsdC50aW1lLFxuICAgICAgICB9KSxcbiAgICAgICAgeyBydW50aW1lOiBmYWxzZSwgaW5pdDogZmFsc2UsIGludGVybmFsOiBmYWxzZSwgdGltZTogZmFsc2UgfSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSBgZnVuYyBpbml0KCkgeyAuLi4gfWAgaW4gYSBkZWRpY2F0ZWQgZmlsZSAoc28gd2UgZG9uJ3QgaGF2ZSB0b1xuICAgKiB3b3JyeSBhYm91dCB3aGF0IG5lZWRzIHRvIGJlIGltcG9ydGVkIGFuZCB3aGF0bm90KS4gVGhpcyBmdW5jdGlvbiBpc1xuICAgKiByZXNwb25zaWJsZSBmb3IgY29ycmVjdGx5IGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCBpbmNsdWRpbmcgcmVnaXN0ZXJpbmdcbiAgICogdGhlIGRlY2xhcmVkIHR5cGVzIHdpdGggdGhlIGpzaWkgcnVudGltZSBmb3IgZ28uXG4gICAqL1xuICBwcml2YXRlIGVtaXRHb0luaXRGdW5jdGlvbih7IGNvZGUgfTogRW1pdENvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBXZSBkb24ndCBlbWl0IGFueXRoaW5nIGlmIHRoZXJlIGFyZSBub3QgdHlwZXMgaW4gdGhpcyAoc3ViKW1vZHVsZS4gVGhpc1xuICAgIC8vIGF2b2lkcyByZWdpc3RlcmluZyBhbiBgaW5pdGAgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcsIHdoaWNoIGlzIHBvb3JcbiAgICAvLyBmb3JtLiBJdCBhbHNvIHNhdmVzIHVzIGZyb20gXCJpbXBvcnRlZCBidXQgdW51c2VkXCIgZXJyb3JzIHRoYXQgd291bGQgYXJpc2VcbiAgICAvLyBhcyBhIGNvbnNlcXVlbmNlLlxuICAgIGlmICh0aGlzLnR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGluaXRGaWxlID0gam9pbihcbiAgICAgICAgZGlybmFtZSh0aGlzLmZpbGUpLFxuICAgICAgICBgJHtiYXNlbmFtZSh0aGlzLmZpbGUsICcuZ28nKX0uaW5pdC5nb2AsXG4gICAgICApO1xuICAgICAgY29kZS5vcGVuRmlsZShpbml0RmlsZSk7XG4gICAgICBjb2RlLmxpbmUoYHBhY2thZ2UgJHt0aGlzLnBhY2thZ2VOYW1lfWApO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBpbXBvcnRHb01vZHVsZXMoY29kZSwgW0dPX1JFRkxFQ1QsIEpTSUlfUlRfTU9EVUxFXSk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKCdmdW5jIGluaXQoKScpO1xuICAgICAgZm9yIChjb25zdCB0eXBlIG9mIHRoaXMudHlwZXMpIHtcbiAgICAgICAgdHlwZS5lbWl0UmVnaXN0cmF0aW9uKGNvZGUpO1xuICAgICAgfVxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICBjb2RlLmNsb3NlRmlsZShpbml0RmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW1wb3J0cyhjb2RlOiBDb2RlTWFrZXIpIHtcbiAgICBjb25zdCB0b0ltcG9ydCA9IG5ldyBBcnJheTxJbXBvcnRlZE1vZHVsZT4oKTtcblxuICAgIGNvbnN0IHNwZWNpYWxEZXBzID0gdGhpcy5zcGVjaWFsRGVwZW5kZW5jaWVzO1xuXG4gICAgaWYgKHNwZWNpYWxEZXBzLnRpbWUpIHtcbiAgICAgIHRvSW1wb3J0LnB1c2goeyBtb2R1bGU6ICd0aW1lJyB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3BlY2lhbERlcHMucnVudGltZSkge1xuICAgICAgdG9JbXBvcnQucHVzaChKU0lJX1JUX01PRFVMRSk7XG4gICAgfVxuXG4gICAgaWYgKHNwZWNpYWxEZXBzLmluaXQpIHtcbiAgICAgIHRvSW1wb3J0LnB1c2goe1xuICAgICAgICBhbGlhczogSlNJSV9JTklUX0FMSUFTLFxuICAgICAgICBtb2R1bGU6IGAke3RoaXMucm9vdC5nb01vZHVsZU5hbWV9LyR7SlNJSV9JTklUX1BBQ0tBR0V9YCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzcGVjaWFsRGVwcy5pbnRlcm5hbCkge1xuICAgICAgdG9JbXBvcnQucHVzaCh7XG4gICAgICAgIG1vZHVsZTogYCR7dGhpcy5nb01vZHVsZU5hbWV9LyR7SU5URVJOQUxfUEFDS0FHRV9OQU1FfWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHBhY2thZ2VOYW1lIG9mIHRoaXMuZGVwZW5kZW5jeUltcG9ydHMpIHtcbiAgICAgIC8vIElmIHRoZSBtb2R1bGUgaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgb25lIGJlaW5nIHdyaXR0ZW4sIGRvbid0IGVtaXQgYW4gaW1wb3J0IHN0YXRlbWVudFxuICAgICAgaWYgKHBhY2thZ2VOYW1lICE9PSB0aGlzLnBhY2thZ2VOYW1lKSB7XG4gICAgICAgIHRvSW1wb3J0LnB1c2goeyBtb2R1bGU6IHBhY2thZ2VOYW1lIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGltcG9ydEdvTW9kdWxlcyhjb2RlLCB0b0ltcG9ydCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUeXBlcyhjb250ZXh0OiBFbWl0Q29udGV4dCkge1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0aGlzLnR5cGVzKSB7XG4gICAgICB0eXBlLmVtaXQoY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW50ZXJuYWwoY29udGV4dDogRW1pdENvbnRleHQpIHtcbiAgICBpZiAodGhpcy5lbWJlZGRlZFR5cGVzLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2RlID0gY29udGV4dC5jb2RlO1xuXG4gICAgY29uc3QgZmlsZU5hbWUgPSBqb2luKHRoaXMuZGlyZWN0b3J5LCBJTlRFUk5BTF9QQUNLQUdFX05BTUUsICd0eXBlcy5nbycpO1xuICAgIGNvZGUub3BlbkZpbGUoZmlsZU5hbWUpO1xuXG4gICAgY29kZS5saW5lKGBwYWNrYWdlICR7SU5URVJOQUxfUEFDS0FHRV9OQU1FfWApO1xuXG4gICAgY29uc3QgaW1wb3J0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCBhbGlhcyBvZiB0aGlzLmVtYmVkZGVkVHlwZXMudmFsdWVzKCkpIHtcbiAgICAgIGlmICghYWxpYXMuZm9yaWVnblR5cGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcGtnIG9mIGFsaWFzLmZvcmllZ25UeXBlLmRlcGVuZGVuY2llcykge1xuICAgICAgICBpbXBvcnRzLmFkZChwa2cuZ29Nb2R1bGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb2RlLm9wZW4oJ2ltcG9ydCAoJyk7XG4gICAgZm9yIChjb25zdCBpbXBydCBvZiBpbXBvcnRzKSB7XG4gICAgICBjb2RlLmxpbmUoYFwiJHtpbXBydH1cImApO1xuICAgIH1cbiAgICBjb2RlLmNsb3NlKCcpJyk7XG5cbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIHRoaXMuZW1iZWRkZWRUeXBlcy52YWx1ZXMoKSkge1xuICAgICAgY29kZS5saW5lKGB0eXBlICR7YWxpYXMuZmllbGROYW1lfSA9ICR7YWxpYXMuZm9yaWVnblR5cGVOYW1lfWApO1xuICAgIH1cblxuICAgIGNvZGUuY2xvc2VGaWxlKGZpbGVOYW1lKTtcbiAgfVxufVxuXG4vKlxuICogUm9vdFBhY2thZ2UgY29ycmVzcG9uZHMgdG8gSlNJSSBtb2R1bGUuXG4gKlxuICogRXh0ZW5kcyBgUGFja2FnZWAgZm9yIHJvb3Qgc291cmNlIHBhY2thZ2UgZW1pdCBsb2dpY1xuICovXG5leHBvcnQgY2xhc3MgUm9vdFBhY2thZ2UgZXh0ZW5kcyBQYWNrYWdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGFzc2VtYmx5OiBBc3NlbWJseTtcbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWFkbWU/OiBSZWFkbWVGaWxlO1xuICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb25GaWxlOiBWZXJzaW9uRmlsZTtcblxuICAvLyBUaGlzIGNhY2hlIG9mIHJvb3QgcGFja2FnZXMgaXMgc2hhcmVkIGFjcm9zcyBhbGwgcm9vdCBwYWNrYWdlcyBkZXJpdmVkIGNyZWF0ZWQgYnkgdGhpcyBvbmUgKHZpYSBkZXBlbmRlbmNpZXMpLlxuICBwcml2YXRlIHJlYWRvbmx5IHJvb3RQYWNrYWdlQ2FjaGU6IE1hcDxzdHJpbmcsIFJvb3RQYWNrYWdlPjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgYXNzZW1ibHk6IEFzc2VtYmx5LFxuICAgIHJvb3RQYWNrYWdlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUm9vdFBhY2thZ2U+KCksXG4gICkge1xuICAgIGNvbnN0IGdvQ29uZmlnID0gYXNzZW1ibHkudGFyZ2V0cz8uZ28gPz8ge307XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBnb1BhY2thZ2VOYW1lRm9yQXNzZW1ibHkoYXNzZW1ibHkpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gJyc7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IGdvQ29uZmlnLm1vZHVsZU5hbWUgPz8gJyc7XG4gICAgY29uc3QgdmVyc2lvbiA9IGAke2Fzc2VtYmx5LnZlcnNpb259JHtnb0NvbmZpZy52ZXJzaW9uU3VmZml4ID8/ICcnfWA7XG5cbiAgICBzdXBlcihcbiAgICAgIGFzc2VtYmx5LnR5cGVzLFxuICAgICAgYXNzZW1ibHkuc3VibW9kdWxlcyxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgZmlsZVBhdGgsXG4gICAgICBtb2R1bGVOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICApO1xuXG4gICAgdGhpcy5yb290UGFja2FnZUNhY2hlID0gcm9vdFBhY2thZ2VDYWNoZTtcbiAgICB0aGlzLnJvb3RQYWNrYWdlQ2FjaGUuc2V0KGFzc2VtYmx5Lm5hbWUsIHRoaXMpO1xuXG4gICAgdGhpcy5hc3NlbWJseSA9IGFzc2VtYmx5O1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy52ZXJzaW9uRmlsZSA9IG5ldyBWZXJzaW9uRmlsZSh0aGlzLnZlcnNpb24pO1xuXG4gICAgaWYgKHRoaXMuYXNzZW1ibHkucmVhZG1lPy5tYXJrZG93bikge1xuICAgICAgdGhpcy5yZWFkbWUgPSBuZXcgUmVhZG1lRmlsZShcbiAgICAgICAgdGhpcy5wYWNrYWdlTmFtZSxcbiAgICAgICAgdGhpcy5hc3NlbWJseS5yZWFkbWUubWFya2Rvd24sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbWl0KGNvbnRleHQ6IEVtaXRDb250ZXh0KTogdm9pZCB7XG4gICAgc3VwZXIuZW1pdChjb250ZXh0KTtcbiAgICB0aGlzLmVtaXRKc2lpUGFja2FnZShjb250ZXh0KTtcbiAgICB0aGlzLnJlYWRtZT8uZW1pdChjb250ZXh0KTtcblxuICAgIHRoaXMuZW1pdEdvbW9kKGNvbnRleHQuY29kZSk7XG4gICAgdGhpcy52ZXJzaW9uRmlsZS5lbWl0KGNvbnRleHQuY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRHb21vZChjb2RlOiBDb2RlTWFrZXIpIHtcbiAgICBjb2RlLm9wZW5GaWxlKEdPTU9EX0ZJTEVOQU1FKTtcbiAgICBjb2RlLmxpbmUoYG1vZHVsZSAke3RoaXMuZ29Nb2R1bGVOYW1lfWApO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZShgZ28gJHtHT19WRVJTSU9OfWApO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUub3BlbigncmVxdWlyZSAoJyk7XG4gICAgLy8gU3RyaXAgXCIgKGJ1aWxkIGFiY2RlZilcIiBmcm9tIHRoZSBqc2lpIHZlcnNpb25cbiAgICBjb2RlLmxpbmUoYCR7SlNJSV9SVF9NT0RVTEVfTkFNRX0gdiR7VkVSU0lPTn1gKTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnBhY2thZ2VEZXBlbmRlbmNpZXM7XG4gICAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb2RlLmxpbmUoYCR7ZGVwLmdvTW9kdWxlTmFtZX0gdiR7ZGVwLnZlcnNpb259YCk7XG4gICAgfVxuICAgIGluZGlyZWN0RGVwZW5kZW5jaWVzKFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgbmV3IFNldChkZXBlbmRlbmNpZXMubWFwKChkZXApID0+IGRlcC5nb01vZHVsZU5hbWUpKSxcbiAgICApO1xuICAgIGNvZGUuY2xvc2UoJyknKTtcbiAgICBjb2RlLmNsb3NlRmlsZShHT01PRF9GSUxFTkFNRSk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBpbmRpcmVjdCBkZXBlbmRlbmN5IGRlY2xhcmF0aW9ucywgd2hpY2ggYXJlIGhlbHBmdWwgdG8gbWFrZSBJREVzIGF0XG4gICAgICogZWFzZSB3aXRoIHRoZSBjb2RlYmFzZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRpcmVjdERlcGVuZGVuY2llcyhcbiAgICAgIHBrZ3M6IFJvb3RQYWNrYWdlW10sXG4gICAgICBhbHJlYWR5RW1pdHRlZDogU2V0PHN0cmluZz4sXG4gICAgKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IHBrZyBvZiBwa2dzKSB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBwa2cucGFja2FnZURlcGVuZGVuY2llcztcbiAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xuICAgICAgICAgIGlmIChhbHJlYWR5RW1pdHRlZC5oYXMoZGVwLmdvTW9kdWxlTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhbHJlYWR5RW1pdHRlZC5hZGQoZGVwLmdvTW9kdWxlTmFtZSk7XG4gICAgICAgICAgY29kZS5saW5lKGAke2RlcC5nb01vZHVsZU5hbWV9IHYke2RlcC52ZXJzaW9ufSAvLyBpbmRpcmVjdGApO1xuICAgICAgICB9XG4gICAgICAgIGluZGlyZWN0RGVwZW5kZW5jaWVzKGRlcHMsIGFscmVhZHlFbWl0dGVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBPdmVycmlkZSBwYWNrYWdlIGZpbmRUeXBlIGZvciByb290IFBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgYWxsb3dzIHJlc29sdmluZyB0eXBlIHJlZmVyZW5jZXMgZnJvbSBvdGhlciBKU0lJIG1vZHVsZXNcbiAgICovXG4gIHB1YmxpYyBmaW5kVHlwZShmcW46IHN0cmluZyk6IEdvVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZURlcGVuZGVuY2llcy5yZWR1Y2UoXG4gICAgICAoYWNjdW06IEdvVHlwZSB8IHVuZGVmaW5lZCwgY3VycmVudDogUm9vdFBhY2thZ2UpID0+IHtcbiAgICAgICAgaWYgKGFjY3VtKSB7XG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50LmZpbmRUeXBlKGZxbik7XG4gICAgICB9LFxuICAgICAgc3VwZXIuZmluZFR5cGUoZnFuKSxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICogR2V0IGFsbCBKU0lJIG1vZHVsZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHBhY2thZ2UgYmVpbmcgZ2VuZXJhdGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBhY2thZ2VEZXBlbmRlbmNpZXMoKTogUm9vdFBhY2thZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZW1ibHkuZGVwZW5kZW5jaWVzLm1hcChcbiAgICAgIChkZXApID0+XG4gICAgICAgIHRoaXMucm9vdFBhY2thZ2VDYWNoZS5nZXQoZGVwLmFzc2VtYmx5Lm5hbWUpID8/XG4gICAgICAgIG5ldyBSb290UGFja2FnZShkZXAuYXNzZW1ibHksIHRoaXMucm9vdFBhY2thZ2VDYWNoZSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0SGVhZGVyKGNvZGU6IENvZGVNYWtlcikge1xuICAgIGlmICh0aGlzLmFzc2VtYmx5LmRlc2NyaXB0aW9uICE9PSAnJykge1xuICAgICAgY29kZS5saW5lKGAvLyAke3RoaXMuYXNzZW1ibHkuZGVzY3JpcHRpb259YCk7XG4gICAgfVxuICAgIGNvZGUubGluZShgcGFja2FnZSAke3RoaXMucGFja2FnZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRKc2lpUGFja2FnZSh7IGNvZGUgfTogRW1pdENvbnRleHQpIHtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnBhY2thZ2VEZXBlbmRlbmNpZXMuc29ydCgobCwgcikgPT5cbiAgICAgIGwubW9kdWxlTmFtZS5sb2NhbGVDb21wYXJlKHIubW9kdWxlTmFtZSksXG4gICAgKTtcblxuICAgIGNvbnN0IGZpbGUgPSBqb2luKEpTSUlfSU5JVF9QQUNLQUdFLCBgJHtKU0lJX0lOSVRfUEFDS0FHRX0uZ29gKTtcbiAgICBjb2RlLm9wZW5GaWxlKGZpbGUpO1xuICAgIGNvZGUubGluZShcbiAgICAgIGAvLyBQYWNrYWdlICR7SlNJSV9JTklUX1BBQ0tBR0V9IGNvbnRhaW5zIHRoZSBmdW5jdGlvbmFpbGl0eSBuZWVkZWQgZm9yIGpzaWkgcGFja2FnZXMgdG9gLFxuICAgICk7XG4gICAgY29kZS5saW5lKFxuICAgICAgJy8vIGluaXRpYWxpemUgdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCB0aGVtc2VsdmVzLiBVc2VycyBzaG91bGQgbmV2ZXIgbmVlZCB0byB1c2UgdGhpcyBwYWNrYWdlJyxcbiAgICApO1xuICAgIGNvZGUubGluZSgnLy8gZGlyZWN0bHkuIElmIHlvdSBmaW5kIHlvdSBuZWVkIHRvIC0gcGxlYXNlIHJlcG9ydCBhIGJ1ZyBhdCcpO1xuICAgIGNvZGUubGluZSgnLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9qc2lpL2lzc3Vlcy9uZXcvY2hvb3NlJyk7XG4gICAgY29kZS5saW5lKGBwYWNrYWdlICR7SlNJSV9JTklUX1BBQ0tBR0V9YCk7XG4gICAgY29kZS5saW5lKCk7XG5cbiAgICBjb25zdCB0b0ltcG9ydDogSW1wb3J0ZWRNb2R1bGVbXSA9IFtcbiAgICAgIEpTSUlfUlRfTU9EVUxFLFxuICAgICAgeyBtb2R1bGU6ICdlbWJlZCcsIGFsaWFzOiAnXycgfSxcbiAgICBdO1xuICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBwa2cgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRvSW1wb3J0LnB1c2goe1xuICAgICAgICAgIGFsaWFzOiBwa2cucGFja2FnZU5hbWUsXG4gICAgICAgICAgbW9kdWxlOiBgJHtwa2cucm9vdC5nb01vZHVsZU5hbWV9LyR7SlNJSV9JTklUX1BBQ0tBR0V9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGltcG9ydEdvTW9kdWxlcyhjb2RlLCB0b0ltcG9ydCk7XG5cbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLmxpbmUoYC8vZ286ZW1iZWQgJHt0YXJiYWxsTmFtZSh0aGlzLmFzc2VtYmx5KX1gKTtcbiAgICBjb2RlLmxpbmUoJ3ZhciB0YXJiYWxsIFtdYnl0ZScpO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKFxuICAgICAgYC8vICR7SlNJSV9JTklUX0ZVTkN9IGxvYWRzIHRoZSBuZWNlc3NhcnkgcGFja2FnZXMgaW4gdGhlIEBqc2lpL2tlcm5lbCB0byBzdXBwb3J0IHRoZSBlbmNsb3NpbmcgbW9kdWxlLmAsXG4gICAgKTtcbiAgICBjb2RlLmxpbmUoXG4gICAgICAnLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGlkZW1wb3RlbnQgKGFuZCBoZW5jZSBzYWZlIHRvIGJlIGNhbGxlZCBvdmVyIGFuZCBvdmVyKS4nLFxuICAgICk7XG4gICAgY29kZS5vcGVuKGBmdW5jICR7SlNJSV9JTklUX0ZVTkN9KCkge2ApO1xuICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29kZS5saW5lKCcvLyBFbnN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgaW5pdGlhbGl6ZWQnKTtcbiAgICAgIGZvciAoY29uc3QgcGtnIG9mIHRoaXMucGFja2FnZURlcGVuZGVuY2llcykge1xuICAgICAgICBjb2RlLmxpbmUoYCR7cGtnLnBhY2thZ2VOYW1lfS4ke0pTSUlfSU5JVF9GVU5DfSgpYCk7XG4gICAgICB9XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCcvLyBMb2FkIHRoaXMgbGlicmFyeSBpbnRvIHRoZSBrZXJuZWwnKTtcbiAgICBjb2RlLmxpbmUoXG4gICAgICBgJHtKU0lJX1JUX0FMSUFTfS5Mb2FkKFwiJHt0aGlzLmFzc2VtYmx5Lm5hbWV9XCIsIFwiJHt0aGlzLmFzc2VtYmx5LnZlcnNpb259XCIsIHRhcmJhbGwpYCxcbiAgICApO1xuICAgIGNvZGUuY2xvc2UoJ30nKTtcblxuICAgIGNvZGUuY2xvc2VGaWxlKGZpbGUpO1xuICB9XG59XG5cbi8qXG4gKiBJbnRlcm5hbFBhY2thZ2UgcmVmZXJzIHRvIGFueSBnbyBwYWNrYWdlIHdpdGhpbiBhIGdpdmVuIEpTSUkgbW9kdWxlLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxQYWNrYWdlIGV4dGVuZHMgUGFja2FnZSB7XG4gIHB1YmxpYyByZWFkb25seSBwYXJlbnQ6IFBhY2thZ2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHJvb3Q6IFBhY2thZ2UsIHBhcmVudDogUGFja2FnZSwgYXNzZW1ibHk6IEpzaWlTdWJtb2R1bGUpIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGdvUGFja2FnZU5hbWVGb3JBc3NlbWJseShhc3NlbWJseSk7XG4gICAgY29uc3QgZmlsZVBhdGggPVxuICAgICAgcGFyZW50ID09PSByb290ID8gcGFja2FnZU5hbWUgOiBgJHtwYXJlbnQuZmlsZVBhdGh9LyR7cGFja2FnZU5hbWV9YDtcblxuICAgIHN1cGVyKFxuICAgICAgYXNzZW1ibHkudHlwZXMsXG4gICAgICBhc3NlbWJseS5zdWJtb2R1bGVzLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgICBmaWxlUGF0aCxcbiAgICAgIHJvb3QubW9kdWxlTmFtZSxcbiAgICAgIHJvb3QudmVyc2lvbixcbiAgICAgIHJvb3QsXG4gICAgKTtcblxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogR28gcmVxdWlyZXMgdGhhdCB3aGVuIGEgbW9kdWxlIG1ham9yIHZlcnNpb24gaXMgdjIuMCBhbmQgYWJvdmUsIHRoZSBtb2R1bGVcbiAqIG5hbWUgd2lsbCBoYXZlIGEgYC92Tk5gIHN1ZmZpeCAod2hlcmUgYE5OYCBpcyB0aGUgbWFqb3IgdmVyc2lvbikuXG4gKlxuICogPiBTdGFydGluZyB3aXRoIG1ham9yIHZlcnNpb24gMiwgbW9kdWxlIHBhdGhzIG11c3QgaGF2ZSBhIG1ham9yIHZlcnNpb25cbiAqID4gc3VmZml4IGxpa2UgL3YyIHRoYXQgbWF0Y2hlcyB0aGUgbWFqb3IgdmVyc2lvbi4gRm9yIGV4YW1wbGUsIGlmIGEgbW9kdWxlXG4gKiA+IGhhcyB0aGUgcGF0aCBleGFtcGxlLmNvbS9tb2QgYXQgdjEuMC4wLCBpdCBtdXN0IGhhdmUgdGhlIHBhdGhcbiAqID4gZXhhbXBsZS5jb20vbW9kL3YyIGF0IHZlcnNpb24gdjIuMC4wLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9nb2xhbmcub3JnL3JlZi9tb2QjbWFqb3ItdmVyc2lvbi1zdWZmaXhlc1xuICogQHBhcmFtIHZlcnNpb24gVGhlIG1vZHVsZSB2ZXJzaW9uIChlLmcuIGAyLjMuMGApXG4gKiBAcmV0dXJucyBhIHN1ZmZpeCB0byBhcHBlbmQgdG8gdGhlIG1vZHVsZSBuYW1lIGluIHRoZSBmb3JtIChgL3ZOTmApLiBJZiB0aGVcbiAqIG1vZHVsZSB2ZXJzaW9uIGlzIGAwLnhgIG9yIGAxLnhgLCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZGV0ZXJtaW5lTWFqb3JWZXJzaW9uU3VmZml4KHZlcnNpb246IHN0cmluZykge1xuICBjb25zdCBzdiA9IHNlbXZlci5wYXJzZSh2ZXJzaW9uKTtcbiAgaWYgKCFzdikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbmFibGUgdG8gcGFyc2UgdmVyc2lvbiBcIiR7dmVyc2lvbn1cIiBhcyBhIHNlbWFudGljIHZlcnNpb25gLFxuICAgICk7XG4gIH1cblxuICAvLyBzdWZmaXggaXMgb25seSBuZWVkZWQgZm9yIDIuMCBhbmQgYWJvdmVcbiAgaWYgKHN2Lm1ham9yIDw9IDEpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gYC92JHtzdi5tYWpvcn1gO1xufVxuXG5pbnRlcmZhY2UgSW1wb3J0ZWRNb2R1bGUge1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG59XG5cbmNvbnN0IEpTSUlfUlRfTU9EVUxFOiBJbXBvcnRlZE1vZHVsZSA9IHtcbiAgYWxpYXM6IEpTSUlfUlRfQUxJQVMsXG4gIG1vZHVsZTogSlNJSV9SVF9QQUNLQUdFX05BTUUsXG59O1xuY29uc3QgR09fUkVGTEVDVDogSW1wb3J0ZWRNb2R1bGUgPSB7IG1vZHVsZTogJ3JlZmxlY3QnIH07XG5cbmZ1bmN0aW9uIGltcG9ydEdvTW9kdWxlcyhjb2RlOiBDb2RlTWFrZXIsIG1vZHVsZXM6IHJlYWRvbmx5IEltcG9ydGVkTW9kdWxlW10pIHtcbiAgaWYgKG1vZHVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWxpYXNTaXplID0gTWF0aC5tYXgoLi4ubW9kdWxlcy5tYXAoKG1vZCkgPT4gbW9kLmFsaWFzPy5sZW5ndGggPz8gMCkpO1xuICBjb2RlLm9wZW4oJ2ltcG9ydCAoJyk7XG4gIGNvbnN0IHNvcnRlZE1vZHVsZXMgPSBBcnJheS5mcm9tKG1vZHVsZXMpLnNvcnQoY29tcGFyZUltcG9ydGVkTW9kdWxlcyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkTW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1vZCA9IHNvcnRlZE1vZHVsZXNbaV07XG4gICAgLy8gU2VwYXJhdGUgbW9kdWxlIGNhdGVnb3JpZXMgZnJvbSBlYWNoIG90aGVyIG1vZHVsZXMgd2l0aCBhIGJsYW5rIGxpbmUuXG4gICAgaWYgKFxuICAgICAgaSA+IDAgJiZcbiAgICAgIChpc0J1aWx0SW4obW9kKSAhPT0gaXNCdWlsdEluKHNvcnRlZE1vZHVsZXNbaSAtIDFdKSB8fFxuICAgICAgICBpc1NwZWNpYWwobW9kKSAhPT0gaXNTcGVjaWFsKHNvcnRlZE1vZHVsZXNbaSAtIDFdKSlcbiAgICApIHtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgIH1cbiAgICBpZiAobW9kLmFsaWFzKSB7XG4gICAgICBjb2RlLmxpbmUoYCR7bW9kLmFsaWFzLnBhZEVuZChhbGlhc1NpemUsICcgJyl9IFwiJHttb2QubW9kdWxlfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUubGluZShgXCIke21vZC5tb2R1bGV9XCJgKTtcbiAgICB9XG4gIH1cbiAgY29kZS5jbG9zZSgnKScpO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBhcmF0b3IgZm9yIGBJbXBvcnRlZE1vZHVsZWAgaW5zdGFuY2VzIHN1Y2ggdGhhdCBidWlsdC1pbiBtb2R1bGVzXG4gICAqIGFsd2F5cyBhcHBlYXIgZmlyc3QsIGZvbGxvd2VkIGJ5IHRoZSByZXN0LiBUaGVuIHdpdGhpbiB0aGVzZSB0d28gZ3JvdXBzLFxuICAgKiBhbGlhc2VkIGltcG9ydHMgYXBwZWFyIGZpcnN0LCBmb2xsb3dlZCBieSB0aGUgcmVzdC5cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBhcmVJbXBvcnRlZE1vZHVsZXMoXG4gICAgbDogSW1wb3J0ZWRNb2R1bGUsXG4gICAgcjogSW1wb3J0ZWRNb2R1bGUsXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgbEJ1aWx0SW4gPSBpc0J1aWx0SW4obCk7XG4gICAgY29uc3QgckJ1aWx0SW4gPSBpc0J1aWx0SW4ocik7XG4gICAgaWYgKGxCdWlsdEluICYmICFyQnVpbHRJbikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoIWxCdWlsdEluICYmIHJCdWlsdEluKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsU3BlY2lhbCA9IGlzU3BlY2lhbChsKTtcbiAgICBjb25zdCByU3BlY2lhbCA9IGlzU3BlY2lhbChyKTtcbiAgICBpZiAobFNwZWNpYWwgJiYgIXJTcGVjaWFsKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICghbFNwZWNpYWwgJiYgclNwZWNpYWwpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiBsLm1vZHVsZS5sb2NhbGVDb21wYXJlKHIubW9kdWxlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQnVpbHRJbihtb2Q6IEltcG9ydGVkTW9kdWxlKTogYm9vbGVhbiB7XG4gICAgLy8gU3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzIGRvbid0IGhhdmUgYW55IFwiLlwiIGluIHRoZWlyIHBhdGgsIHdoZXJlYXMgYW55XG4gICAgLy8gb3RoZXIgbW9kdWxlIGhhcyBhIEROUyBwb3J0aW9uIGluIHRoZW0sIHdoaWNoIG11c3QgaW5jbHVkZSBhIFwiLlwiLlxuICAgIHJldHVybiAhbW9kLm1vZHVsZS5pbmNsdWRlcygnLicpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNTcGVjaWFsKG1vZDogSW1wb3J0ZWRNb2R1bGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbW9kLmFsaWFzID09PSBKU0lJX1JUX0FMSUFTIHx8IG1vZC5hbGlhcyA9PT0gSlNJSV9JTklUX0FMSUFTO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbWJlZGRlZCBHbyB0eXBlLlxuICovXG5pbnRlcmZhY2UgRW1iZWRkZWRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBmaWVsZCBuYW1lIGZvciB0aGUgZW1iZWRkZWQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW1iZWRkZWQgdHlwZSBuYW1lIHRvIHVzZS4gQ291bGQgYmUgZWl0aGVyIGEgc3RydWN0IHByb3h5IChpZiB0aGUgYmFzZVxuICAgKiB0eXBlIGlzIGluIHRoZSBzYW1lIHBhY2thZ2UpIG9yIGFuIGludGVybmFsIGFsaWFzIGZvciBhIGZvcmllZ24gdHlwZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1iZWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUmVmZXJuY2UgdG8gdGhlIGZvcmVpZ24gdHlwZSAoaWYgdGhpcyBpcyBhIGZvcmllZ24gdHlwZSlcbiAgICovXG4gIHJlYWRvbmx5IGZvcmllZ25UeXBlPzogR29UeXBlUmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZm9yaWVnbiB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yaWVnblR5cGVOYW1lPzogc3RyaW5nO1xufVxuIl19
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsK0JBQStDO0FBQy9DLGlDQUFpQztBQUVqQywyQ0FBd0M7QUFHeEMsK0NBQTJDO0FBQzNDLHVDQU9tQjtBQUNuQixtQ0FBZ0Y7QUFDaEYsaUNBS2dCO0FBQ2hCLGlEQUE2QztBQUVoQyxRQUFBLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFDMUIsUUFBQSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBRWpDLDZFQUE2RTtBQUM3RSxrQ0FBa0M7QUFDbEMsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUM7QUFFekM7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBVTNCLFlBQ21CLFVBQTBCLEVBQzNCLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLE9BQWU7SUFDL0Isa0RBQWtEO0lBQ2xELElBQWM7O1FBTkcsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFSaEIsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQVkvRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxXQUFXLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDOUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJ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LENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsR0FBbUI7UUFDcEMseUVBQXlFO1FBQ3pFLG9FQUFvRTtRQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVMsU0FBUyxDQUFDLEdBQW1CO1FBQ3BDLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyx1QkFBYSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUsseUJBQWUsQ0FBQztJQUN0RSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gJ2NvZGVtYWtlcic7XG5pbXBvcnQge1xuICBBc3NlbWJseSxcbiAgTW9kdWxlTGlrZSBhcyBKc2lpTW9kdWxlTGlrZSxcbiAgVHlwZSxcbiAgU3VibW9kdWxlIGFzIEpzaWlTdWJtb2R1bGUsXG59IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5cbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCB7IFNwZWNpYWxEZXBlbmRlbmNpZXMgfSBmcm9tICcuL2RlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBFbWl0Q29udGV4dCB9IGZyb20gJy4vZW1pdC1jb250ZXh0JztcbmltcG9ydCB7IFJlYWRtZUZpbGUgfSBmcm9tICcuL3JlYWRtZS1maWxlJztcbmltcG9ydCB7XG4gIEpTSUlfUlRfQUxJQVMsXG4gIEpTSUlfUlRfTU9EVUxFX05BTUUsXG4gIEpTSUlfUlRfUEFDS0FHRV9OQU1FLFxuICBKU0lJX0lOSVRfUEFDS0FHRSxcbiAgSlNJSV9JTklUX0ZVTkMsXG4gIEpTSUlfSU5JVF9BTElBUyxcbn0gZnJvbSAnLi9ydW50aW1lJztcbmltcG9ydCB7IEdvQ2xhc3MsIEdvVHlwZSwgRW51bSwgR29JbnRlcmZhY2UsIFN0cnVjdCwgR29UeXBlUmVmIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBmaW5kVHlwZUluVHJlZSxcbiAgZ29QYWNrYWdlTmFtZUZvckFzc2VtYmx5LFxuICBmbGF0TWFwLFxuICB0YXJiYWxsTmFtZSxcbn0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFZlcnNpb25GaWxlIH0gZnJvbSAnLi92ZXJzaW9uLWZpbGUnO1xuXG5leHBvcnQgY29uc3QgR09NT0RfRklMRU5BTUUgPSAnZ28ubW9kJztcbmV4cG9ydCBjb25zdCBHT19WRVJTSU9OID0gJzEuMTYnO1xuXG4vLyB0aGUgbmFtZSBvZiBhIHN1Yi1wYWNrYWdlIHRoYXQgaW5jbHVkZXMgaW50ZXJuYWwgdHlwZSBhbGlhc2VzIGl0IGhhcyB0byBiZVxuLy8gXCJpbnRlcm5hbFwiIHNvIGl0IG5vdCBwdWJsaXNoZWQuXG5jb25zdCBJTlRFUk5BTF9QQUNLQUdFX05BTUUgPSAnaW50ZXJuYWwnO1xuXG4vKlxuICogUGFja2FnZSByZXByZXNlbnRzIGEgc2luZ2xlIGAuZ29gIHNvdXJjZSBmaWxlIHdpdGhpbiBhIHBhY2thZ2UuIFRoaXMgY2FuIGJlIHRoZSByb290IHBhY2thZ2UgZmlsZSBvciBhIHN1Ym1vZHVsZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFja2FnZSB7XG4gIHB1YmxpYyByZWFkb25seSByb290OiBQYWNrYWdlO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzdWJtb2R1bGVzOiBJbnRlcm5hbFBhY2thZ2VbXTtcbiAgcHVibGljIHJlYWRvbmx5IHR5cGVzOiBHb1R5cGVbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVtYmVkZGVkVHlwZXMgPSBuZXcgTWFwPHN0cmluZywgRW1iZWRkZWRUeXBlPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYWRtZUZpbGU/OiBSZWFkbWVGaWxlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGpzaWlNb2R1bGU6IEpzaWlNb2R1bGVMaWtlLFxuICAgIHB1YmxpYyByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZyxcbiAgICAvLyBJZiBubyByb290IGlzIHByb3ZpZGVkLCB0aGlzIG1vZHVsZSBpcyB0aGUgcm9vdFxuICAgIHJvb3Q/OiBQYWNrYWdlLFxuICApIHtcbiAgICB0aGlzLmRpcmVjdG9yeSA9IGZpbGVQYXRoO1xuICAgIHRoaXMuZmlsZSA9IGAke3RoaXMuZGlyZWN0b3J5fS8ke3BhY2thZ2VOYW1lfS5nb2A7XG4gICAgdGhpcy5yb290ID0gcm9vdCA/PyB0aGlzO1xuICAgIHRoaXMuc3VibW9kdWxlcyA9IHRoaXMuanNpaU1vZHVsZS5zdWJtb2R1bGVzLm1hcChcbiAgICAgIChzbSkgPT4gbmV3IEludGVybmFsUGFja2FnZSh0aGlzLnJvb3QsIHRoaXMsIHNtKSxcbiAgICApO1xuXG4gICAgdGhpcy50eXBlcyA9IHRoaXMuanNpaU1vZHVsZS50eXBlcy5tYXAoKHR5cGU6IFR5cGUpOiBHb1R5cGUgPT4ge1xuICAgICAgaWYgKHR5cGUuaXNJbnRlcmZhY2VUeXBlKCkgJiYgdHlwZS5kYXRhdHlwZSkge1xuICAgICAgICByZXR1cm4gbmV3IFN0cnVjdCh0aGlzLCB0eXBlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZS5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgICByZXR1cm4gbmV3IEdvSW50ZXJmYWNlKHRoaXMsIHR5cGUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlLmlzQ2xhc3NUeXBlKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHb0NsYXNzKHRoaXMsIHR5cGUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlLmlzRW51bVR5cGUoKSkge1xuICAgICAgICByZXR1cm4gbmV3IEVudW0odGhpcywgdHlwZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUeXBlOiAke3R5cGUubmFtZX0gd2l0aCBraW5kICR7dHlwZS5raW5kfSBpcyBub3QgYSBzdXBwb3J0ZWQgdHlwZWAsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuanNpaU1vZHVsZS5yZWFkbWU/Lm1hcmtkb3duKSB7XG4gICAgICB0aGlzLnJlYWRtZUZpbGUgPSBuZXcgUmVhZG1lRmlsZShcbiAgICAgICAgdGhpcy5qc2lpTW9kdWxlLmZxbixcbiAgICAgICAgdGhpcy5qc2lpTW9kdWxlLnJlYWRtZS5tYXJrZG93bixcbiAgICAgICAgdGhpcy5kaXJlY3RvcnksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIFBhY2thZ2VzIHdpdGhpbiB0aGlzIG1vZHVsZVxuICAgKi9cbiAgcHVibGljIGdldCBkZXBlbmRlbmNpZXMoKTogUGFja2FnZVtdIHtcbiAgICByZXR1cm4gZmxhdE1hcCh0aGlzLnR5cGVzLCAodDogR29UeXBlKTogUGFja2FnZVtdID0+IHQuZGVwZW5kZW5jaWVzKS5maWx0ZXIoXG4gICAgICAobW9kKSA9PiBtb2QucGFja2FnZU5hbWUgIT09IHRoaXMucGFja2FnZU5hbWUsXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAqIGdvTW9kdWxlTmFtZSByZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIG1vZHVsZSBuYW1lLlxuICAgKiBVc2VkIGZvciBpbXBvcnQgc3RhdGVtZW50cyBhbmQgZ28ubW9kIGdlbmVyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgZ29Nb2R1bGVOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHRoaXMucm9vdC5tb2R1bGVOYW1lO1xuICAgIGNvbnN0IHByZWZpeCA9IG1vZHVsZU5hbWUgIT09ICcnID8gYCR7bW9kdWxlTmFtZX0vYCA6ICcnO1xuICAgIGNvbnN0IHJvb3RQYWNrYWdlTmFtZSA9IHRoaXMucm9vdC5wYWNrYWdlTmFtZTtcbiAgICBjb25zdCB2ZXJzaW9uU3VmZml4ID0gZGV0ZXJtaW5lTWFqb3JWZXJzaW9uU3VmZml4KHRoaXMudmVyc2lvbik7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5maWxlUGF0aCAhPT0gJycgPyBgLyR7dGhpcy5maWxlUGF0aH1gIDogYGA7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3Jvb3RQYWNrYWdlTmFtZX0ke3ZlcnNpb25TdWZmaXh9JHtzdWZmaXh9YDtcbiAgfVxuXG4gIC8qXG4gICAqIFRoZSBtb2R1bGUgbmFtZXMgb2YgdGhpcyBtb2R1bGUncyBkZXBlbmRlbmNpZXMuIFVzZWQgZm9yIGltcG9ydCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgcHVibGljIGdldCBkZXBlbmRlbmN5SW1wb3J0cygpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBTZXQodGhpcy5kZXBlbmRlbmNpZXMubWFwKChwa2cpID0+IHBrZy5nb01vZHVsZU5hbWUpKTtcbiAgfVxuXG4gIC8qXG4gICAqIFNlYXJjaCBmb3IgYSB0eXBlIHdpdGggYSBgZnFuYCB3aXRoaW4gdGhpcy4gU2VhcmNoZXMgYWxsIENoaWxkcmVuIG1vZHVsZXMgYXMgd2VsbC5cbiAgICovXG4gIHB1YmxpYyBmaW5kVHlwZShmcW46IHN0cmluZyk6IEdvVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGZpbmRUeXBlSW5UcmVlKHRoaXMsIGZxbik7XG4gIH1cblxuICBwdWJsaWMgZW1pdChjb250ZXh0OiBFbWl0Q29udGV4dCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29kZSB9ID0gY29udGV4dDtcblxuICAgIGNvZGUub3BlbkZpbGUodGhpcy5maWxlKTtcbiAgICB0aGlzLmVtaXRIZWFkZXIoY29kZSk7XG4gICAgdGhpcy5lbWl0SW1wb3J0cyhjb2RlKTtcbiAgICB0aGlzLmVtaXRUeXBlcyhjb250ZXh0KTtcbiAgICBjb2RlLmNsb3NlRmlsZSh0aGlzLmZpbGUpO1xuXG4gICAgdGhpcy5yZWFkbWVGaWxlPy5lbWl0KGNvbnRleHQpO1xuXG4gICAgdGhpcy5lbWl0R29Jbml0RnVuY3Rpb24oY29udGV4dCk7XG4gICAgdGhpcy5lbWl0U3VibW9kdWxlcyhjb250ZXh0KTtcblxuICAgIHRoaXMuZW1pdEludGVybmFsKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRTdWJtb2R1bGVzKGNvbnRleHQ6IEVtaXRDb250ZXh0KSB7XG4gICAgZm9yIChjb25zdCBzdWJtb2R1bGUgb2YgdGhpcy5zdWJtb2R1bGVzKSB7XG4gICAgICBzdWJtb2R1bGUuZW1pdChjb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBgdHlwZWAgY29tZXMgZnJvbSBhIGZvcmVpZ24gcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBpc0V4dGVybmFsVHlwZSh0eXBlOiBHb0NsYXNzIHwgR29JbnRlcmZhY2UpIHtcbiAgICByZXR1cm4gdHlwZS5wa2cgIT09IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZW1iZWQgZmllbGQgdXNlZCB0byBlbWJlZCBhIGJhc2UgY2xhc3MvaW50ZXJmYWNlIGluIGFcbiAgICogc3RydWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyBJZiB0aGUgYmFzZSBpcyBpbiB0aGUgc2FtZSBwYWNrYWdlLCByZXR1cm5zIHRoZSBwcm94eSBuYW1lIG9mIHRoZVxuICAgKiBiYXNlIHVuZGVyIGBlbWJlZGAsIG90aGVyd2lzZSByZXR1cm5zIGEgdW5pcXVlIHN5bWJvbCB1bmRlciBgZW1iZWRgIGFuZCB0aGVcbiAgICogb3JpZ2luYWwgaW50ZXJmYWNlIHJlZmVyZW5jZSB1bmRlciBgb3JpZ2luYWxgLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgYmFzZSB0eXBlIHdlIHdhbnQgdG8gZW1iZWRcbiAgICovXG4gIHB1YmxpYyByZXNvbHZlRW1iZWRkZWRUeXBlKHR5cGU6IEdvQ2xhc3MgfCBHb0ludGVyZmFjZSk6IEVtYmVkZGVkVHlwZSB7XG4gICAgaWYgKCF0aGlzLmlzRXh0ZXJuYWxUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbWJlZDogdHlwZS5wcm94eU5hbWUsXG4gICAgICAgIGZpZWxkTmFtZTogdHlwZS5wcm94eU5hbWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuZW1iZWRkZWRUeXBlcy5nZXQodHlwZS5mcW4pO1xuICAgIGlmIChleGlzdHMpIHtcbiAgICAgIHJldHVybiBleGlzdHM7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXJlZiA9IG5ldyBHb1R5cGVSZWYodGhpcy5yb290LCB0eXBlLnR5cGUucmVmZXJlbmNlKTtcbiAgICBjb25zdCBvcmlnaW5hbCA9IHR5cGVyZWYuc2NvcGVkTmFtZSh0aGlzKTtcblxuICAgIGNvbnN0IHNsdWcgPSBvcmlnaW5hbC5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywgJycpO1xuICAgIGNvbnN0IGFsaWFzTmFtZSA9IGBUeXBlX18ke3NsdWd9YDtcblxuICAgIGNvbnN0IGVtYmVkZGVkVHlwZTogRW1iZWRkZWRUeXBlID0ge1xuICAgICAgZm9yaWVnblR5cGVOYW1lOiBvcmlnaW5hbCxcbiAgICAgIGZvcmllZ25UeXBlOiB0eXBlcmVmLFxuICAgICAgZmllbGROYW1lOiBhbGlhc05hbWUsXG4gICAgICBlbWJlZDogYCR7SU5URVJOQUxfUEFDS0FHRV9OQU1FfS4ke2FsaWFzTmFtZX1gLFxuICAgIH07XG4gICAgdGhpcy5lbWJlZGRlZFR5cGVzLnNldCh0eXBlLmZxbiwgZW1iZWRkZWRUeXBlKTtcblxuICAgIHJldHVybiBlbWJlZGRlZFR5cGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdEhlYWRlcihjb2RlOiBDb2RlTWFrZXIpIHtcbiAgICBjb2RlLmxpbmUoYHBhY2thZ2UgJHt0aGlzLnBhY2thZ2VOYW1lfWApO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzcGVjaWFsRGVwZW5kZW5jaWVzKCk6IFNwZWNpYWxEZXBlbmRlbmNpZXMge1xuICAgIHJldHVybiB0aGlzLnR5cGVzXG4gICAgICAubWFwKCh0KSA9PiB0LnNwZWNpYWxEZXBlbmRlbmNpZXMpXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoYWNjLCBlbHQpID0+ICh7XG4gICAgICAgICAgcnVudGltZTogYWNjLnJ1bnRpbWUgfHwgZWx0LnJ1bnRpbWUsXG4gICAgICAgICAgaW5pdDogYWNjLmluaXQgfHwgZWx0LmluaXQsXG4gICAgICAgICAgaW50ZXJuYWw6IGFjYy5pbnRlcm5hbCB8fCBlbHQuaW50ZXJuYWwsXG4gICAgICAgICAgdGltZTogYWNjLnRpbWUgfHwgZWx0LnRpbWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7IHJ1bnRpbWU6IGZhbHNlLCBpbml0OiBmYWxzZSwgaW50ZXJuYWw6IGZhbHNlLCB0aW1lOiBmYWxzZSB9LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIGBmdW5jIGluaXQoKSB7IC4uLiB9YCBpbiBhIGRlZGljYXRlZCBmaWxlIChzbyB3ZSBkb24ndCBoYXZlIHRvXG4gICAqIHdvcnJ5IGFib3V0IHdoYXQgbmVlZHMgdG8gYmUgaW1wb3J0ZWQgYW5kIHdoYXRub3QpLiBUaGlzIGZ1bmN0aW9uIGlzXG4gICAqIHJlc3BvbnNpYmxlIGZvciBjb3JyZWN0bHkgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIGluY2x1ZGluZyByZWdpc3RlcmluZ1xuICAgKiB0aGUgZGVjbGFyZWQgdHlwZXMgd2l0aCB0aGUganNpaSBydW50aW1lIGZvciBnby5cbiAgICovXG4gIHByaXZhdGUgZW1pdEdvSW5pdEZ1bmN0aW9uKHsgY29kZSB9OiBFbWl0Q29udGV4dCk6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IGVtaXQgYW55dGhpbmcgaWYgdGhlcmUgYXJlIG5vdCB0eXBlcyBpbiB0aGlzIChzdWIpbW9kdWxlLiBUaGlzXG4gICAgLy8gYXZvaWRzIHJlZ2lzdGVyaW5nIGFuIGBpbml0YCBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZywgd2hpY2ggaXMgcG9vclxuICAgIC8vIGZvcm0uIEl0IGFsc28gc2F2ZXMgdXMgZnJvbSBcImltcG9ydGVkIGJ1dCB1bnVzZWRcIiBlcnJvcnMgdGhhdCB3b3VsZCBhcmlzZVxuICAgIC8vIGFzIGEgY29uc2VxdWVuY2UuXG4gICAgaWYgKHRoaXMudHlwZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW5pdEZpbGUgPSBqb2luKFxuICAgICAgICBkaXJuYW1lKHRoaXMuZmlsZSksXG4gICAgICAgIGAke2Jhc2VuYW1lKHRoaXMuZmlsZSwgJy5nbycpfS5pbml0LmdvYCxcbiAgICAgICk7XG4gICAgICBjb2RlLm9wZW5GaWxlKGluaXRGaWxlKTtcbiAgICAgIGNvZGUubGluZShgcGFja2FnZSAke3RoaXMucGFja2FnZU5hbWV9YCk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGltcG9ydEdvTW9kdWxlcyhjb2RlLCBbR09fUkVGTEVDVCwgSlNJSV9SVF9NT0RVTEVdKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5vcGVuQmxvY2soJ2Z1bmMgaW5pdCgpJyk7XG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdGhpcy50eXBlcykge1xuICAgICAgICB0eXBlLmVtaXRSZWdpc3RyYXRpb24oY29kZSk7XG4gICAgICB9XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgIGNvZGUuY2xvc2VGaWxlKGluaXRGaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbXBvcnRzKGNvZGU6IENvZGVNYWtlcikge1xuICAgIGNvbnN0IHRvSW1wb3J0ID0gbmV3IEFycmF5PEltcG9ydGVkTW9kdWxlPigpO1xuXG4gICAgY29uc3Qgc3BlY2lhbERlcHMgPSB0aGlzLnNwZWNpYWxEZXBlbmRlbmNpZXM7XG5cbiAgICBpZiAoc3BlY2lhbERlcHMudGltZSkge1xuICAgICAgdG9JbXBvcnQucHVzaCh7IG1vZHVsZTogJ3RpbWUnIH0pO1xuICAgIH1cblxuICAgIGlmIChzcGVjaWFsRGVwcy5ydW50aW1lKSB7XG4gICAgICB0b0ltcG9ydC5wdXNoKEpTSUlfUlRfTU9EVUxFKTtcbiAgICB9XG5cbiAgICBpZiAoc3BlY2lhbERlcHMuaW5pdCkge1xuICAgICAgdG9JbXBvcnQucHVzaCh7XG4gICAgICAgIGFsaWFzOiBKU0lJX0lOSVRfQUxJQVMsXG4gICAgICAgIG1vZHVsZTogYCR7dGhpcy5yb290LmdvTW9kdWxlTmFtZX0vJHtKU0lJX0lOSVRfUEFDS0FHRX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHNwZWNpYWxEZXBzLmludGVybmFsKSB7XG4gICAgICB0b0ltcG9ydC5wdXNoKHtcbiAgICAgICAgbW9kdWxlOiBgJHt0aGlzLmdvTW9kdWxlTmFtZX0vJHtJTlRFUk5BTF9QQUNLQUdFX05BTUV9YCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcGFja2FnZU5hbWUgb2YgdGhpcy5kZXBlbmRlbmN5SW1wb3J0cykge1xuICAgICAgLy8gSWYgdGhlIG1vZHVsZSBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBvbmUgYmVpbmcgd3JpdHRlbiwgZG9uJ3QgZW1pdCBhbiBpbXBvcnQgc3RhdGVtZW50XG4gICAgICBpZiAocGFja2FnZU5hbWUgIT09IHRoaXMucGFja2FnZU5hbWUpIHtcbiAgICAgICAgdG9JbXBvcnQucHVzaCh7IG1vZHVsZTogcGFja2FnZU5hbWUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1wb3J0R29Nb2R1bGVzKGNvZGUsIHRvSW1wb3J0KTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFR5cGVzKGNvbnRleHQ6IEVtaXRDb250ZXh0KSB7XG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHRoaXMudHlwZXMpIHtcbiAgICAgIHR5cGUuZW1pdChjb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlcm5hbChjb250ZXh0OiBFbWl0Q29udGV4dCkge1xuICAgIGlmICh0aGlzLmVtYmVkZGVkVHlwZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZGUgPSBjb250ZXh0LmNvZGU7XG5cbiAgICBjb25zdCBmaWxlTmFtZSA9IGpvaW4odGhpcy5kaXJlY3RvcnksIElOVEVSTkFMX1BBQ0tBR0VfTkFNRSwgJ3R5cGVzLmdvJyk7XG4gICAgY29kZS5vcGVuRmlsZShmaWxlTmFtZSk7XG5cbiAgICBjb2RlLmxpbmUoYHBhY2thZ2UgJHtJTlRFUk5BTF9QQUNLQUdFX05BTUV9YCk7XG5cbiAgICBjb25zdCBpbXBvcnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIHRoaXMuZW1iZWRkZWRUeXBlcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKCFhbGlhcy5mb3JpZWduVHlwZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBwa2cgb2YgYWxpYXMuZm9yaWVnblR5cGUuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGltcG9ydHMuYWRkKHBrZy5nb01vZHVsZU5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvZGUub3BlbignaW1wb3J0ICgnKTtcbiAgICBmb3IgKGNvbnN0IGltcHJ0IG9mIGltcG9ydHMpIHtcbiAgICAgIGNvZGUubGluZShgXCIke2ltcHJ0fVwiYCk7XG4gICAgfVxuICAgIGNvZGUuY2xvc2UoJyknKTtcblxuICAgIGZvciAoY29uc3QgYWxpYXMgb2YgdGhpcy5lbWJlZGRlZFR5cGVzLnZhbHVlcygpKSB7XG4gICAgICBjb2RlLmxpbmUoYHR5cGUgJHthbGlhcy5maWVsZE5hbWV9ID0gJHthbGlhcy5mb3JpZWduVHlwZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgY29kZS5jbG9zZUZpbGUoZmlsZU5hbWUpO1xuICB9XG59XG5cbi8qXG4gKiBSb290UGFja2FnZSBjb3JyZXNwb25kcyB0byBKU0lJIG1vZHVsZS5cbiAqXG4gKiBFeHRlbmRzIGBQYWNrYWdlYCBmb3Igcm9vdCBzb3VyY2UgcGFja2FnZSBlbWl0IGxvZ2ljXG4gKi9cbmV4cG9ydCBjbGFzcyBSb290UGFja2FnZSBleHRlbmRzIFBhY2thZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzZW1ibHk6IEFzc2VtYmx5O1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb25GaWxlOiBWZXJzaW9uRmlsZTtcblxuICAvLyBUaGlzIGNhY2hlIG9mIHJvb3QgcGFja2FnZXMgaXMgc2hhcmVkIGFjcm9zcyBhbGwgcm9vdCBwYWNrYWdlcyBkZXJpdmVkIGNyZWF0ZWQgYnkgdGhpcyBvbmUgKHZpYSBkZXBlbmRlbmNpZXMpLlxuICBwcml2YXRlIHJlYWRvbmx5IHJvb3RQYWNrYWdlQ2FjaGU6IE1hcDxzdHJpbmcsIFJvb3RQYWNrYWdlPjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgYXNzZW1ibHk6IEFzc2VtYmx5LFxuICAgIHJvb3RQYWNrYWdlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUm9vdFBhY2thZ2U+KCksXG4gICkge1xuICAgIGNvbnN0IGdvQ29uZmlnID0gYXNzZW1ibHkudGFyZ2V0cz8uZ28gPz8ge307XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBnb1BhY2thZ2VOYW1lRm9yQXNzZW1ibHkoYXNzZW1ibHkpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gJyc7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IGdvQ29uZmlnLm1vZHVsZU5hbWUgPz8gJyc7XG4gICAgY29uc3QgdmVyc2lvbiA9IGAke2Fzc2VtYmx5LnZlcnNpb259JHtnb0NvbmZpZy52ZXJzaW9uU3VmZml4ID8/ICcnfWA7XG5cbiAgICBzdXBlcihhc3NlbWJseSwgcGFja2FnZU5hbWUsIGZpbGVQYXRoLCBtb2R1bGVOYW1lLCB2ZXJzaW9uKTtcblxuICAgIHRoaXMucm9vdFBhY2thZ2VDYWNoZSA9IHJvb3RQYWNrYWdlQ2FjaGU7XG4gICAgdGhpcy5yb290UGFja2FnZUNhY2hlLnNldChhc3NlbWJseS5uYW1lLCB0aGlzKTtcblxuICAgIHRoaXMuYXNzZW1ibHkgPSBhc3NlbWJseTtcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMudmVyc2lvbkZpbGUgPSBuZXcgVmVyc2lvbkZpbGUodGhpcy52ZXJzaW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KGNvbnRleHQ6IEVtaXRDb250ZXh0KTogdm9pZCB7XG4gICAgc3VwZXIuZW1pdChjb250ZXh0KTtcbiAgICB0aGlzLmVtaXRKc2lpUGFja2FnZShjb250ZXh0KTtcblxuICAgIHRoaXMuZW1pdEdvbW9kKGNvbnRleHQuY29kZSk7XG4gICAgdGhpcy52ZXJzaW9uRmlsZS5lbWl0KGNvbnRleHQuY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRHb21vZChjb2RlOiBDb2RlTWFrZXIpIHtcbiAgICBjb2RlLm9wZW5GaWxlKEdPTU9EX0ZJTEVOQU1FKTtcbiAgICBjb2RlLmxpbmUoYG1vZHVsZSAke3RoaXMuZ29Nb2R1bGVOYW1lfWApO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZShgZ28gJHtHT19WRVJTSU9OfWApO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUub3BlbigncmVxdWlyZSAoJyk7XG4gICAgLy8gU3RyaXAgXCIgKGJ1aWxkIGFiY2RlZilcIiBmcm9tIHRoZSBqc2lpIHZlcnNpb25cbiAgICBjb2RlLmxpbmUoYCR7SlNJSV9SVF9NT0RVTEVfTkFNRX0gdiR7VkVSU0lPTn1gKTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnBhY2thZ2VEZXBlbmRlbmNpZXM7XG4gICAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb2RlLmxpbmUoYCR7ZGVwLmdvTW9kdWxlTmFtZX0gdiR7ZGVwLnZlcnNpb259YCk7XG4gICAgfVxuICAgIGluZGlyZWN0RGVwZW5kZW5jaWVzKFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgbmV3IFNldChkZXBlbmRlbmNpZXMubWFwKChkZXApID0+IGRlcC5nb01vZHVsZU5hbWUpKSxcbiAgICApO1xuICAgIGNvZGUuY2xvc2UoJyknKTtcbiAgICBjb2RlLmNsb3NlRmlsZShHT01PRF9GSUxFTkFNRSk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBpbmRpcmVjdCBkZXBlbmRlbmN5IGRlY2xhcmF0aW9ucywgd2hpY2ggYXJlIGhlbHBmdWwgdG8gbWFrZSBJREVzIGF0XG4gICAgICogZWFzZSB3aXRoIHRoZSBjb2RlYmFzZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRpcmVjdERlcGVuZGVuY2llcyhcbiAgICAgIHBrZ3M6IFJvb3RQYWNrYWdlW10sXG4gICAgICBhbHJlYWR5RW1pdHRlZDogU2V0PHN0cmluZz4sXG4gICAgKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IHBrZyBvZiBwa2dzKSB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBwa2cucGFja2FnZURlcGVuZGVuY2llcztcbiAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xuICAgICAgICAgIGlmIChhbHJlYWR5RW1pdHRlZC5oYXMoZGVwLmdvTW9kdWxlTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhbHJlYWR5RW1pdHRlZC5hZGQoZGVwLmdvTW9kdWxlTmFtZSk7XG4gICAgICAgICAgY29kZS5saW5lKGAke2RlcC5nb01vZHVsZU5hbWV9IHYke2RlcC52ZXJzaW9ufSAvLyBpbmRpcmVjdGApO1xuICAgICAgICB9XG4gICAgICAgIGluZGlyZWN0RGVwZW5kZW5jaWVzKGRlcHMsIGFscmVhZHlFbWl0dGVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBPdmVycmlkZSBwYWNrYWdlIGZpbmRUeXBlIGZvciByb290IFBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgYWxsb3dzIHJlc29sdmluZyB0eXBlIHJlZmVyZW5jZXMgZnJvbSBvdGhlciBKU0lJIG1vZHVsZXNcbiAgICovXG4gIHB1YmxpYyBmaW5kVHlwZShmcW46IHN0cmluZyk6IEdvVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZURlcGVuZGVuY2llcy5yZWR1Y2UoXG4gICAgICAoYWNjdW06IEdvVHlwZSB8IHVuZGVmaW5lZCwgY3VycmVudDogUm9vdFBhY2thZ2UpID0+IHtcbiAgICAgICAgaWYgKGFjY3VtKSB7XG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50LmZpbmRUeXBlKGZxbik7XG4gICAgICB9LFxuICAgICAgc3VwZXIuZmluZFR5cGUoZnFuKSxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICogR2V0IGFsbCBKU0lJIG1vZHVsZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHBhY2thZ2UgYmVpbmcgZ2VuZXJhdGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBhY2thZ2VEZXBlbmRlbmNpZXMoKTogUm9vdFBhY2thZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZW1ibHkuZGVwZW5kZW5jaWVzLm1hcChcbiAgICAgIChkZXApID0+XG4gICAgICAgIHRoaXMucm9vdFBhY2thZ2VDYWNoZS5nZXQoZGVwLmFzc2VtYmx5Lm5hbWUpID8/XG4gICAgICAgIG5ldyBSb290UGFja2FnZShkZXAuYXNzZW1ibHksIHRoaXMucm9vdFBhY2thZ2VDYWNoZSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0SGVhZGVyKGNvZGU6IENvZGVNYWtlcikge1xuICAgIGlmICh0aGlzLmFzc2VtYmx5LmRlc2NyaXB0aW9uICE9PSAnJykge1xuICAgICAgY29kZS5saW5lKGAvLyAke3RoaXMuYXNzZW1ibHkuZGVzY3JpcHRpb259YCk7XG4gICAgfVxuICAgIGNvZGUubGluZShgcGFja2FnZSAke3RoaXMucGFja2FnZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRKc2lpUGFja2FnZSh7IGNvZGUgfTogRW1pdENvbnRleHQpIHtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnBhY2thZ2VEZXBlbmRlbmNpZXMuc29ydCgobCwgcikgPT5cbiAgICAgIGwubW9kdWxlTmFtZS5sb2NhbGVDb21wYXJlKHIubW9kdWxlTmFtZSksXG4gICAgKTtcblxuICAgIGNvbnN0IGZpbGUgPSBqb2luKEpTSUlfSU5JVF9QQUNLQUdFLCBgJHtKU0lJX0lOSVRfUEFDS0FHRX0uZ29gKTtcbiAgICBjb2RlLm9wZW5GaWxlKGZpbGUpO1xuICAgIGNvZGUubGluZShcbiAgICAgIGAvLyBQYWNrYWdlICR7SlNJSV9JTklUX1BBQ0tBR0V9IGNvbnRhaW5zIHRoZSBmdW5jdGlvbmFpbGl0eSBuZWVkZWQgZm9yIGpzaWkgcGFja2FnZXMgdG9gLFxuICAgICk7XG4gICAgY29kZS5saW5lKFxuICAgICAgJy8vIGluaXRpYWxpemUgdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCB0aGVtc2VsdmVzLiBVc2VycyBzaG91bGQgbmV2ZXIgbmVlZCB0byB1c2UgdGhpcyBwYWNrYWdlJyxcbiAgICApO1xuICAgIGNvZGUubGluZSgnLy8gZGlyZWN0bHkuIElmIHlvdSBmaW5kIHlvdSBuZWVkIHRvIC0gcGxlYXNlIHJlcG9ydCBhIGJ1ZyBhdCcpO1xuICAgIGNvZGUubGluZSgnLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9qc2lpL2lzc3Vlcy9uZXcvY2hvb3NlJyk7XG4gICAgY29kZS5saW5lKGBwYWNrYWdlICR7SlNJSV9JTklUX1BBQ0tBR0V9YCk7XG4gICAgY29kZS5saW5lKCk7XG5cbiAgICBjb25zdCB0b0ltcG9ydDogSW1wb3J0ZWRNb2R1bGVbXSA9IFtcbiAgICAgIEpTSUlfUlRfTU9EVUxFLFxuICAgICAgeyBtb2R1bGU6ICdlbWJlZCcsIGFsaWFzOiAnXycgfSxcbiAgICBdO1xuICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBwa2cgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRvSW1wb3J0LnB1c2goe1xuICAgICAgICAgIGFsaWFzOiBwa2cucGFja2FnZU5hbWUsXG4gICAgICAgICAgbW9kdWxlOiBgJHtwa2cucm9vdC5nb01vZHVsZU5hbWV9LyR7SlNJSV9JTklUX1BBQ0tBR0V9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGltcG9ydEdvTW9kdWxlcyhjb2RlLCB0b0ltcG9ydCk7XG5cbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLmxpbmUoYC8vZ286ZW1iZWQgJHt0YXJiYWxsTmFtZSh0aGlzLmFzc2VtYmx5KX1gKTtcbiAgICBjb2RlLmxpbmUoJ3ZhciB0YXJiYWxsIFtdYnl0ZScpO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKFxuICAgICAgYC8vICR7SlNJSV9JTklUX0ZVTkN9IGxvYWRzIHRoZSBuZWNlc3NhcnkgcGFja2FnZXMgaW4gdGhlIEBqc2lpL2tlcm5lbCB0byBzdXBwb3J0IHRoZSBlbmNsb3NpbmcgbW9kdWxlLmAsXG4gICAgKTtcbiAgICBjb2RlLmxpbmUoXG4gICAgICAnLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGlkZW1wb3RlbnQgKGFuZCBoZW5jZSBzYWZlIHRvIGJlIGNhbGxlZCBvdmVyIGFuZCBvdmVyKS4nLFxuICAgICk7XG4gICAgY29kZS5vcGVuKGBmdW5jICR7SlNJSV9JTklUX0ZVTkN9KCkge2ApO1xuICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29kZS5saW5lKCcvLyBFbnN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgaW5pdGlhbGl6ZWQnKTtcbiAgICAgIGZvciAoY29uc3QgcGtnIG9mIHRoaXMucGFja2FnZURlcGVuZGVuY2llcykge1xuICAgICAgICBjb2RlLmxpbmUoYCR7cGtnLnBhY2thZ2VOYW1lfS4ke0pTSUlfSU5JVF9GVU5DfSgpYCk7XG4gICAgICB9XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCcvLyBMb2FkIHRoaXMgbGlicmFyeSBpbnRvIHRoZSBrZXJuZWwnKTtcbiAgICBjb2RlLmxpbmUoXG4gICAgICBgJHtKU0lJX1JUX0FMSUFTfS5Mb2FkKFwiJHt0aGlzLmFzc2VtYmx5Lm5hbWV9XCIsIFwiJHt0aGlzLmFzc2VtYmx5LnZlcnNpb259XCIsIHRhcmJhbGwpYCxcbiAgICApO1xuICAgIGNvZGUuY2xvc2UoJ30nKTtcblxuICAgIGNvZGUuY2xvc2VGaWxlKGZpbGUpO1xuICB9XG59XG5cbi8qXG4gKiBJbnRlcm5hbFBhY2thZ2UgcmVmZXJzIHRvIGFueSBnbyBwYWNrYWdlIHdpdGhpbiBhIGdpdmVuIEpTSUkgbW9kdWxlLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxQYWNrYWdlIGV4dGVuZHMgUGFja2FnZSB7XG4gIHB1YmxpYyByZWFkb25seSBwYXJlbnQ6IFBhY2thZ2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHJvb3Q6IFBhY2thZ2UsIHBhcmVudDogUGFja2FnZSwgYXNzZW1ibHk6IEpzaWlTdWJtb2R1bGUpIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGdvUGFja2FnZU5hbWVGb3JBc3NlbWJseShhc3NlbWJseSk7XG4gICAgY29uc3QgZmlsZVBhdGggPVxuICAgICAgcGFyZW50ID09PSByb290ID8gcGFja2FnZU5hbWUgOiBgJHtwYXJlbnQuZmlsZVBhdGh9LyR7cGFja2FnZU5hbWV9YDtcblxuICAgIHN1cGVyKGFzc2VtYmx5LCBwYWNrYWdlTmFtZSwgZmlsZVBhdGgsIHJvb3QubW9kdWxlTmFtZSwgcm9vdC52ZXJzaW9uLCByb290KTtcblxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogR28gcmVxdWlyZXMgdGhhdCB3aGVuIGEgbW9kdWxlIG1ham9yIHZlcnNpb24gaXMgdjIuMCBhbmQgYWJvdmUsIHRoZSBtb2R1bGVcbiAqIG5hbWUgd2lsbCBoYXZlIGEgYC92Tk5gIHN1ZmZpeCAod2hlcmUgYE5OYCBpcyB0aGUgbWFqb3IgdmVyc2lvbikuXG4gKlxuICogPiBTdGFydGluZyB3aXRoIG1ham9yIHZlcnNpb24gMiwgbW9kdWxlIHBhdGhzIG11c3QgaGF2ZSBhIG1ham9yIHZlcnNpb25cbiAqID4gc3VmZml4IGxpa2UgL3YyIHRoYXQgbWF0Y2hlcyB0aGUgbWFqb3IgdmVyc2lvbi4gRm9yIGV4YW1wbGUsIGlmIGEgbW9kdWxlXG4gKiA+IGhhcyB0aGUgcGF0aCBleGFtcGxlLmNvbS9tb2QgYXQgdjEuMC4wLCBpdCBtdXN0IGhhdmUgdGhlIHBhdGhcbiAqID4gZXhhbXBsZS5jb20vbW9kL3YyIGF0IHZlcnNpb24gdjIuMC4wLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9nb2xhbmcub3JnL3JlZi9tb2QjbWFqb3ItdmVyc2lvbi1zdWZmaXhlc1xuICogQHBhcmFtIHZlcnNpb24gVGhlIG1vZHVsZSB2ZXJzaW9uIChlLmcuIGAyLjMuMGApXG4gKiBAcmV0dXJucyBhIHN1ZmZpeCB0byBhcHBlbmQgdG8gdGhlIG1vZHVsZSBuYW1lIGluIHRoZSBmb3JtIChgL3ZOTmApLiBJZiB0aGVcbiAqIG1vZHVsZSB2ZXJzaW9uIGlzIGAwLnhgIG9yIGAxLnhgLCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZGV0ZXJtaW5lTWFqb3JWZXJzaW9uU3VmZml4KHZlcnNpb246IHN0cmluZykge1xuICBjb25zdCBzdiA9IHNlbXZlci5wYXJzZSh2ZXJzaW9uKTtcbiAgaWYgKCFzdikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbmFibGUgdG8gcGFyc2UgdmVyc2lvbiBcIiR7dmVyc2lvbn1cIiBhcyBhIHNlbWFudGljIHZlcnNpb25gLFxuICAgICk7XG4gIH1cblxuICAvLyBzdWZmaXggaXMgb25seSBuZWVkZWQgZm9yIDIuMCBhbmQgYWJvdmVcbiAgaWYgKHN2Lm1ham9yIDw9IDEpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gYC92JHtzdi5tYWpvcn1gO1xufVxuXG5pbnRlcmZhY2UgSW1wb3J0ZWRNb2R1bGUge1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG59XG5cbmNvbnN0IEpTSUlfUlRfTU9EVUxFOiBJbXBvcnRlZE1vZHVsZSA9IHtcbiAgYWxpYXM6IEpTSUlfUlRfQUxJQVMsXG4gIG1vZHVsZTogSlNJSV9SVF9QQUNLQUdFX05BTUUsXG59O1xuY29uc3QgR09fUkVGTEVDVDogSW1wb3J0ZWRNb2R1bGUgPSB7IG1vZHVsZTogJ3JlZmxlY3QnIH07XG5cbmZ1bmN0aW9uIGltcG9ydEdvTW9kdWxlcyhjb2RlOiBDb2RlTWFrZXIsIG1vZHVsZXM6IHJlYWRvbmx5IEltcG9ydGVkTW9kdWxlW10pIHtcbiAgaWYgKG1vZHVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWxpYXNTaXplID0gTWF0aC5tYXgoLi4ubW9kdWxlcy5tYXAoKG1vZCkgPT4gbW9kLmFsaWFzPy5sZW5ndGggPz8gMCkpO1xuICBjb2RlLm9wZW4oJ2ltcG9ydCAoJyk7XG4gIGNvbnN0IHNvcnRlZE1vZHVsZXMgPSBBcnJheS5mcm9tKG1vZHVsZXMpLnNvcnQoY29tcGFyZUltcG9ydGVkTW9kdWxlcyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkTW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1vZCA9IHNvcnRlZE1vZHVsZXNbaV07XG4gICAgLy8gU2VwYXJhdGUgbW9kdWxlIGNhdGVnb3JpZXMgZnJvbSBlYWNoIG90aGVyIG1vZHVsZXMgd2l0aCBhIGJsYW5rIGxpbmUuXG4gICAgaWYgKFxuICAgICAgaSA+IDAgJiZcbiAgICAgIChpc0J1aWx0SW4obW9kKSAhPT0gaXNCdWlsdEluKHNvcnRlZE1vZHVsZXNbaSAtIDFdKSB8fFxuICAgICAgICBpc1NwZWNpYWwobW9kKSAhPT0gaXNTcGVjaWFsKHNvcnRlZE1vZHVsZXNbaSAtIDFdKSlcbiAgICApIHtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgIH1cbiAgICBpZiAobW9kLmFsaWFzKSB7XG4gICAgICBjb2RlLmxpbmUoYCR7bW9kLmFsaWFzLnBhZEVuZChhbGlhc1NpemUsICcgJyl9IFwiJHttb2QubW9kdWxlfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUubGluZShgXCIke21vZC5tb2R1bGV9XCJgKTtcbiAgICB9XG4gIH1cbiAgY29kZS5jbG9zZSgnKScpO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBhcmF0b3IgZm9yIGBJbXBvcnRlZE1vZHVsZWAgaW5zdGFuY2VzIHN1Y2ggdGhhdCBidWlsdC1pbiBtb2R1bGVzXG4gICAqIGFsd2F5cyBhcHBlYXIgZmlyc3QsIGZvbGxvd2VkIGJ5IHRoZSByZXN0LiBUaGVuIHdpdGhpbiB0aGVzZSB0d28gZ3JvdXBzLFxuICAgKiBhbGlhc2VkIGltcG9ydHMgYXBwZWFyIGZpcnN0LCBmb2xsb3dlZCBieSB0aGUgcmVzdC5cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBhcmVJbXBvcnRlZE1vZHVsZXMoXG4gICAgbDogSW1wb3J0ZWRNb2R1bGUsXG4gICAgcjogSW1wb3J0ZWRNb2R1bGUsXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgbEJ1aWx0SW4gPSBpc0J1aWx0SW4obCk7XG4gICAgY29uc3QgckJ1aWx0SW4gPSBpc0J1aWx0SW4ocik7XG4gICAgaWYgKGxCdWlsdEluICYmICFyQnVpbHRJbikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoIWxCdWlsdEluICYmIHJCdWlsdEluKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsU3BlY2lhbCA9IGlzU3BlY2lhbChsKTtcbiAgICBjb25zdCByU3BlY2lhbCA9IGlzU3BlY2lhbChyKTtcbiAgICBpZiAobFNwZWNpYWwgJiYgIXJTcGVjaWFsKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICghbFNwZWNpYWwgJiYgclNwZWNpYWwpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiBsLm1vZHVsZS5sb2NhbGVDb21wYXJlKHIubW9kdWxlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQnVpbHRJbihtb2Q6IEltcG9ydGVkTW9kdWxlKTogYm9vbGVhbiB7XG4gICAgLy8gU3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzIGRvbid0IGhhdmUgYW55IFwiLlwiIGluIHRoZWlyIHBhdGgsIHdoZXJlYXMgYW55XG4gICAgLy8gb3RoZXIgbW9kdWxlIGhhcyBhIEROUyBwb3J0aW9uIGluIHRoZW0sIHdoaWNoIG11c3QgaW5jbHVkZSBhIFwiLlwiLlxuICAgIHJldHVybiAhbW9kLm1vZHVsZS5pbmNsdWRlcygnLicpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNTcGVjaWFsKG1vZDogSW1wb3J0ZWRNb2R1bGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbW9kLmFsaWFzID09PSBKU0lJX1JUX0FMSUFTIHx8IG1vZC5hbGlhcyA9PT0gSlNJSV9JTklUX0FMSUFTO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbWJlZGRlZCBHbyB0eXBlLlxuICovXG5pbnRlcmZhY2UgRW1iZWRkZWRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBmaWVsZCBuYW1lIGZvciB0aGUgZW1iZWRkZWQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW1iZWRkZWQgdHlwZSBuYW1lIHRvIHVzZS4gQ291bGQgYmUgZWl0aGVyIGEgc3RydWN0IHByb3h5IChpZiB0aGUgYmFzZVxuICAgKiB0eXBlIGlzIGluIHRoZSBzYW1lIHBhY2thZ2UpIG9yIGFuIGludGVybmFsIGFsaWFzIGZvciBhIGZvcmllZ24gdHlwZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1iZWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUmVmZXJuY2UgdG8gdGhlIGZvcmVpZ24gdHlwZSAoaWYgdGhpcyBpcyBhIGZvcmllZ24gdHlwZSlcbiAgICovXG4gIHJlYWRvbmx5IGZvcmllZ25UeXBlPzogR29UeXBlUmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZm9yaWVnbiB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9yaWVnblR5cGVOYW1lPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -2,6 +2,7 @@ import { EmitContext } from './emit-context';
|
|
|
2
2
|
export declare class ReadmeFile {
|
|
3
3
|
private readonly packageName;
|
|
4
4
|
private readonly document;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
private readonly directory;
|
|
6
|
+
constructor(packageName: string, document: string, directory: string);
|
|
7
|
+
emit({ documenter }: EmitContext): void;
|
|
7
8
|
}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ReadmeFile = void 0;
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
// import { Translation } from 'jsii-rosetta';
|
|
6
|
-
// import { INCOMPLETE_DISCLAIMER_COMPILING, INCOMPLETE_DISCLAIMER_NONCOMPILING } from '..';
|
|
7
4
|
class ReadmeFile {
|
|
8
|
-
constructor(packageName, document) {
|
|
5
|
+
constructor(packageName, document, directory) {
|
|
9
6
|
this.packageName = packageName;
|
|
10
7
|
this.document = document;
|
|
8
|
+
this.directory = directory;
|
|
11
9
|
}
|
|
12
|
-
emit({
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
code.openFile(file);
|
|
16
|
-
const translated = this.document; // rosetta.translateSnippetsInMarkdown(this.document, 'go', prependDisclaimer);
|
|
17
|
-
for (const line of translated.split('\n')) {
|
|
18
|
-
code.line(line);
|
|
10
|
+
emit({ documenter }) {
|
|
11
|
+
if (!this.document) {
|
|
12
|
+
return;
|
|
19
13
|
}
|
|
20
|
-
|
|
14
|
+
documenter.emitReadme(this.packageName, this.document, this.directory);
|
|
21
15
|
}
|
|
22
16
|
}
|
|
23
17
|
exports.ReadmeFile = ReadmeFile;
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG1lLWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWFkbWUtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLFVBQVU7SUFDckIsWUFDbUIsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsU0FBaUI7UUFGakIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ2pDLENBQUM7SUFFRyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQWU7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRjtBQWJELGdDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1pdENvbnRleHQgfSBmcm9tICcuL2VtaXQtY29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBSZWFkbWVGaWxlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBlbWl0KHsgZG9jdW1lbnRlciB9OiBFbWl0Q29udGV4dCkge1xuICAgIGlmICghdGhpcy5kb2N1bWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkb2N1bWVudGVyLmVtaXRSZWFkbWUodGhpcy5wYWNrYWdlTmFtZSwgdGhpcy5kb2N1bWVudCwgdGhpcy5kaXJlY3RvcnkpO1xuICB9XG59XG4iXX0=
|