@jupiterone/typescript-tools 19.0.0 → 19.1.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.
|
@@ -187,13 +187,17 @@ async function checkMonorepo() {
|
|
|
187
187
|
else {
|
|
188
188
|
log(chalk_1.default.gray(` ${chalk_1.default.bold(packageInfo.packageName)} has no dependencies`));
|
|
189
189
|
}
|
|
190
|
-
const
|
|
190
|
+
const expectedNonDist = new Set(requiredDependencies.map((dep) => {
|
|
191
|
+
const knownPackage = knownPackages[dep];
|
|
192
|
+
return `../${knownPackage.dirName}/tsconfig.json`;
|
|
193
|
+
}));
|
|
194
|
+
const expectedDist = new Set(requiredDependencies.map((dep) => {
|
|
191
195
|
const knownPackage = knownPackages[dep];
|
|
192
196
|
return `../${knownPackage.dirName}/tsconfig.dist.json`;
|
|
193
197
|
}));
|
|
194
198
|
if (tsconfigObj) {
|
|
195
199
|
await checkTsConfigFile({
|
|
196
|
-
expectedProjectReferences:
|
|
200
|
+
expectedProjectReferences: expectedNonDist,
|
|
197
201
|
packageInfo,
|
|
198
202
|
stats,
|
|
199
203
|
tsconfigFile,
|
|
@@ -202,7 +206,7 @@ async function checkMonorepo() {
|
|
|
202
206
|
}
|
|
203
207
|
if (tsconfigDistObj) {
|
|
204
208
|
await checkTsConfigFile({
|
|
205
|
-
expectedProjectReferences:
|
|
209
|
+
expectedProjectReferences: expectedDist,
|
|
206
210
|
packageInfo,
|
|
207
211
|
stats,
|
|
208
212
|
tsconfigFile: tsconfigDistFile,
|
|
@@ -236,4 +240,4 @@ async function run() {
|
|
|
236
240
|
run().catch((err) => {
|
|
237
241
|
console.error(chalk_1.default.red(chalk_1.default.bold('Error occurred. ') + (err.stack || err.toString())));
|
|
238
242
|
});
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stdHNjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vY2hlY2stdHNjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsa0RBQTBCO0FBQzFCLDJCQUFvQztBQUNwQyxnREFBd0I7QUFDeEIsa0RBQTBCO0FBRTFCLE1BQU0sS0FBSyxHQUFHLGVBQUs7S0FDaEIsTUFBTSxDQUFDLEdBQUcsRUFBRTtJQUNYLEtBQUssRUFBRSxNQUFNO0lBQ2IsSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztLQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSxxQ0FBcUM7Q0FDbkQsQ0FBQztLQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSwyQkFBMkI7Q0FDekMsQ0FBQztLQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDaEIsSUFBSSxFQUFFLFNBQVM7SUFDZixXQUFXLEVBQUUsdUNBQXVDO0NBQ3JELENBQUM7S0FDRCxNQUFNLENBQUMsVUFBVSxFQUFFO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsV0FBVyxFQUFFLHFEQUFxRDtDQUNuRSxDQUFDLENBQUMsSUFPSixDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDOUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7QUFFM0MsU0FBUyxHQUFHLENBQUMsR0FBVztJQUN0QixJQUFJLE9BQU8sRUFBRTtRQUNYLE9BQU87S0FDUjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQUksSUFBWTtJQUN6QyxJQUFJLFFBQWdCLENBQUM7SUFDckIsSUFBSTtRQUNGLFFBQVEsR0FBRyxNQUFNLGFBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDMUQ7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLEdBQUcsQ0FDRCxlQUFLLENBQUMsTUFBTSxDQUNWLGlCQUFpQixlQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUNsRSxDQUNGLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSTtRQUNGLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzVCO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixHQUFHLENBQ0QsZUFBSyxDQUFDLE1BQU0sQ0FDVixpQkFBaUIsZUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FDbEUsQ0FDRixDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUEwQkQsS0FBSyxVQUFVLGlCQUFpQixDQUFDLE9BTWhDO0lBQ0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNsRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUM7SUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBUyxRQUFRLENBQUMsQ0FBQztJQUUxQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFO1FBQzlDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFCLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQjtpQkFBTTtnQkFDTCxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQjtTQUNGO0tBQ0Y7SUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7UUFDbkIsR0FBRyxDQUNELGVBQUssQ0FBQyxNQUFNLENBQ1YsS0FBSyxlQUFLLENBQUMsSUFBSSxDQUNiLFdBQVcsQ0FBQyxXQUFXLENBQ3hCLHdDQUF3QyxDQUFDLEdBQUcsVUFBVSxDQUFDO2FBQ3JELEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1gsT0FBTyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUMxQyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDZCxDQUNGLENBQUM7S0FDSDtJQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtRQUNoQixHQUFHLENBQ0QsZUFBSyxDQUFDLE1BQU0sQ0FDVixLQUFLLGVBQUssQ0FBQyxJQUFJLENBQ2IsV0FBVyxDQUFDLFdBQVcsQ0FDeEIsa0RBQWtELENBQUMsR0FBRyxPQUFPLENBQUM7YUFDNUQsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDWCxPQUFPLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQzFDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUNkLENBQ0YsQ0FBQztLQUNIO0lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsQ0FDRCxlQUFLLENBQUMsSUFBSSxDQUNSLE9BQU8sZUFBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksZUFBSyxDQUFDLElBQUksQ0FDeEMsV0FBVyxDQUFDLFdBQVcsQ0FDeEIsVUFBVSxDQUNaLENBQ0YsQ0FBQztRQUNGLE9BQU87S0FDUjtJQUVELEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBRXpCLElBQUksZUFBZSxFQUFFO1FBQ25CLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE9BQU87YUFDZCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQ2hCLFlBQVksRUFDWixJQUFJLENBQUMsU0FBUyxDQUNaO1lBQ0UsR0FBRyxXQUFXO1lBQ2QsVUFBVSxFQUFFLGtCQUFrQjtTQUMvQixFQUNELElBQUksRUFDSixDQUFDLENBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FDckIsQ0FBQztRQUVGLEdBQUcsQ0FBQyxlQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztLQUM1RTtBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYTtJQUMxQixNQUFNLFdBQVcsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxNQUFNLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBRW5DLE1BQU0sYUFBYSxHQUFnQyxFQUFFLENBQUM7SUFDdEQsTUFBTSxLQUFLLEdBQXVCO1FBQ2hDLGdCQUFnQixFQUFFLENBQUM7S0FDcEIsQ0FBQztJQUVGLElBQUkscUJBQXFCLENBQUM7SUFFMUIsSUFBSTtRQUNGLHFCQUFxQixHQUFHLE1BQU0sYUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUN2RDtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osR0FBRyxDQUNELGVBQUssQ0FBQyxNQUFNLENBQ1YsdUNBQXVDLGVBQUssQ0FBQyxJQUFJLENBQy9DLFdBQVcsQ0FDWixxQ0FBcUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQ2xFLENBQ0YsQ0FBQztRQUNGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE9BQU87S0FDUjtJQUVELEtBQUssTUFBTSxjQUFjLElBQUkscUJBQXFCLEVBQUU7UUFDbEQsTUFBTSxVQUFVLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDakMsU0FBUztTQUNWO1FBRUQsTUFBTSxXQUFXLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxZQUFZLENBQWtCLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixTQUFTO1NBQ1Y7UUFFRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsR0FBRyxDQUNELGVBQUssQ0FBQyxNQUFNLENBQ1YsOEJBQThCLGVBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FDbkUsQ0FDRixDQUFDO1lBQ0YsU0FBUztTQUNWO1FBRUQsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDOUIsR0FBRyxDQUNELGVBQUssQ0FBQyxNQUFNLENBQ1YseUNBQXlDLGVBQUssQ0FBQyxJQUFJLENBQ2pELFdBQVcsQ0FDWixjQUFjLENBQ2hCLENBQ0YsQ0FBQztZQUNGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLE9BQU87U0FDUjtRQUVELE1BQU0sV0FBVyxHQUFnQjtZQUMvQixXQUFXO1lBQ1gsR0FBRyxFQUFFLFVBQVU7WUFDZixPQUFPLEVBQUUsY0FBYztZQUN2QixXQUFXO1lBQ1gsVUFBVTtTQUNYLENBQUM7UUFFRixhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDNUI7SUFFRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFFBQVEsRUFBRTtRQUNsQyxHQUFHLENBQUMsY0FBYyxlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUMxRSxNQUFNLGVBQWUsR0FBRyxNQUFNLFlBQVksQ0FBVyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZFLE1BQU0sWUFBWSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNqRSxNQUFNLFdBQVcsR0FBRyxNQUFNLFlBQVksQ0FBVyxZQUFZLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsV0FBVyxlQUFLLENBQUMsSUFBSSxDQUNuQixXQUFXLENBQUMsT0FBTyxDQUNwQiwrREFBK0QsQ0FDakUsQ0FBQztZQUNGLFNBQVM7U0FDVjtRQUVELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVsRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsZUFBeUIsRUFBRSxFQUFFO1lBQ3hELEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFO2dCQUM1QyxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRTtvQkFDakMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUM3QzthQUNGO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRTtZQUN2QyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztTQUN2RTtRQUVELElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUU7WUFDMUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7U0FDMUU7UUFFRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzFELElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFO1lBQy9CLEdBQUcsQ0FDRCxxQkFBcUIsb0JBQW9CO2lCQUN0QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWCxPQUFPLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUNkLENBQUM7U0FDSDthQUFNO1lBQ0wsR0FBRyxDQUNELGVBQUssQ0FBQyxJQUFJLENBQ1IsS0FBSyxlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQy9ELENBQ0YsQ0FBQztTQUNIO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQ3RCLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQy9CLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLE1BQU0sWUFBWSxDQUFDLE9BQU8scUJBQXFCLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxpQkFBaUIsQ0FBQztnQkFDdEIseUJBQXlCLEVBQUUsUUFBUTtnQkFDbkMsV0FBVztnQkFDWCxLQUFLO2dCQUNMLFlBQVk7Z0JBQ1osV0FBVzthQUNaLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsTUFBTSxpQkFBaUIsQ0FBQztnQkFDdEIseUJBQXlCLEVBQUUsUUFBUTtnQkFDbkMsV0FBVztnQkFDWCxLQUFLO2dCQUNMLFlBQVksRUFBRSxnQkFBZ0I7Z0JBQzlCLFdBQVcsRUFBRSxlQUFlO2FBQzdCLENBQUMsQ0FBQztTQUNKO0tBQ0Y7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUNULEtBQUssZUFBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsRUFBRSxDQUN2RSxDQUFDO0lBRUYsSUFBSSxlQUFlLEVBQUU7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztLQUN4RTtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztLQUM3RTtJQUVELElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsZUFBZSxFQUFFO1FBQzlDLE9BQU8sQ0FBQyxLQUFLLENBQ1gsZUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsMERBQTBELENBQUMsQ0FDM0UsQ0FBQztRQUNGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0tBQ3RCO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxHQUFHO0lBQ2hCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtRQUNkLE9BQU8sZUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3pCO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLGFBQWEsRUFBRSxDQUFDO0tBQ3ZCO1NBQU07UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLDREQUE0RCxDQUFDLENBQUM7S0FDM0U7QUFDSCxDQUFDO0FBRUQsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FDWCxlQUFLLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FDMUUsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB5YXJncyBmcm9tICd5YXJncyc7XG5cbmNvbnN0IGlucHV0ID0geWFyZ3NcbiAgLm9wdGlvbignaCcsIHtcbiAgICBhbGlhczogJ2hlbHAnLFxuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgfSlcbiAgLm9wdGlvbignaHVza3knLCB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnSXMgdGhpcyBjb21tYW5kIGJlaW5nIHJhbiBieSBodXNreT8nLFxuICB9KVxuICAub3B0aW9uKCdxdWlldCcsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVzY3JpcHRpb246ICdVc2UgcXVpZXQgbW9kZT8gKG5vIGxvZ3MpJyxcbiAgfSlcbiAgLm9wdGlvbigncmVwYWlyJywge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Nob3VsZCBlcnJvcnMgYmUgZml4ZWQgd2hlbiBwb3NzaWJsZT8nLFxuICB9KVxuICAub3B0aW9uKCdtb25vcmVwbycsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVzY3JpcHRpb246ICdJcyB0aGlzIGEgbW9ub3JlcG8/IElmIHNvLCBwYWNrYWdlcyB3aWxsIGJlIGNoZWNrZWQnLFxuICB9KS5hcmd2IGFzIHtcbiAgaGVscD86IGJvb2xlYW47XG4gIGh1c2t5PzogYm9vbGVhbjtcbiAgcXVpZXQ/OiBib29sZWFuO1xuICByZXBhaXI/OiBib29sZWFuO1xuICBtb25vcmVwbz86IGJvb2xlYW47XG4gIF86IHN0cmluZ1tdO1xufTtcblxuY29uc3QgaXNRdWlldCA9IGlucHV0LnF1aWV0ID09PSB0cnVlO1xuY29uc3QgaXNSZXBhaXJFbmFibGVkID0gaW5wdXQucmVwYWlyID09PSB0cnVlO1xuY29uc3QgaXNNb25vcmVwbyA9IGlucHV0Lm1vbm9yZXBvID09PSB0cnVlO1xuXG5mdW5jdGlvbiBsb2cobXNnOiBzdHJpbmcpIHtcbiAgaWYgKGlzUXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc29sZS5sb2cobXNnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEpzb25GaWxlPFQ+KGZpbGU6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICBsZXQgY29udGVudHM6IHN0cmluZztcbiAgdHJ5IHtcbiAgICBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgRXJyb3IgcmVhZGluZyAke2NoYWxrLmJvbGQoZmlsZSl9LiAke2Vyci50b1N0cmluZygpfSAoc2tpcHBpbmcpYFxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCBvYmo7XG4gIHRyeSB7XG4gICAgb2JqID0gSlNPTi5wYXJzZShjb250ZW50cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgYEVycm9yIHBhcnNpbmcgJHtjaGFsay5ib2xkKGZpbGUpfS4gJHtlcnIudG9TdHJpbmcoKX0gKHNraXBwaW5nKWBcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG50eXBlIFBhY2thZ2VNYW5pZmVzdCA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgZGV2RGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn07XG5cbnR5cGUgVFNDb25maWcgPSB7XG4gIHJlZmVyZW5jZXM/OiB7XG4gICAgcGF0aD86IHN0cmluZztcbiAgfVtdO1xufTtcblxudHlwZSBQYWNrYWdlSW5mbyA9IHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgZGlyOiBzdHJpbmc7XG4gIGRpck5hbWU6IHN0cmluZztcbiAgcGFja2FnZUZpbGU6IHN0cmluZztcbiAgcGFja2FnZU9iajogUGFja2FnZU1hbmlmZXN0O1xufTtcblxudHlwZSBDaGVja1RTQ29uZmlnU3RhdHMgPSB7XG4gIHByb2JsZW1GaWxlQ291bnQ6IG51bWJlcjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrVHNDb25maWdGaWxlKG9wdGlvbnM6IHtcbiAgcGFja2FnZUluZm86IFBhY2thZ2VJbmZvO1xuICBzdGF0czogQ2hlY2tUU0NvbmZpZ1N0YXRzO1xuICB0c2NvbmZpZ0ZpbGU6IHN0cmluZztcbiAgdHNjb25maWdPYmo6IFRTQ29uZmlnO1xuICBleHBlY3RlZFByb2plY3RSZWZlcmVuY2VzOiBTZXQ8c3RyaW5nPjtcbn0pIHtcbiAgY29uc3QgeyBwYWNrYWdlSW5mbywgc3RhdHMsIHRzY29uZmlnRmlsZSwgdHNjb25maWdPYmogfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGV4cGVjdGVkID0gb3B0aW9ucy5leHBlY3RlZFByb2plY3RSZWZlcmVuY2VzO1xuICBjb25zdCB1bmV4cGVjdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IG1pc3NpbmcgPSBuZXcgU2V0PHN0cmluZz4oZXhwZWN0ZWQpO1xuXG4gIGZvciAoY29uc3QgcmVmIG9mIHRzY29uZmlnT2JqLnJlZmVyZW5jZXMgPz8gW10pIHtcbiAgICBpZiAocmVmLnBhdGgpIHtcbiAgICAgIGlmIChleHBlY3RlZC5oYXMocmVmLnBhdGgpKSB7XG4gICAgICAgIGxvZyhjaGFsay5ncmF5KGAgIOKckyBBbHJlYWR5IGhhcyAke3JlZi5wYXRofWApKTtcbiAgICAgICAgbWlzc2luZy5kZWxldGUocmVmLnBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdW5leHBlY3RlZC5hZGQocmVmLnBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh1bmV4cGVjdGVkLnNpemUpIHtcbiAgICBsb2coXG4gICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgIGAgICR7Y2hhbGsuYm9sZChcbiAgICAgICAgICBwYWNrYWdlSW5mby5wYWNrYWdlTmFtZVxuICAgICAgICApfSBoYXMgdW5leHBlY3RlZCBwcm9qZWN0IHJlZmVyZW5jZXM6XFxuJHtbLi4udW5leHBlY3RlZF1cbiAgICAgICAgICAubWFwKChkZXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgICAgIC0gJHtKU09OLnN0cmluZ2lmeShkZXApfVxcbmA7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyl9YFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpZiAobWlzc2luZy5zaXplKSB7XG4gICAgbG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgICAke2NoYWxrLmJvbGQoXG4gICAgICAgICAgcGFja2FnZUluZm8ucGFja2FnZU5hbWVcbiAgICAgICAgKX0gaXMgbWlzc2luZyB0aGVzZSBwcm9qZWN0IHByb2plY3QgcmVmZXJlbmNlczpcXG4ke1suLi5taXNzaW5nXVxuICAgICAgICAgIC5tYXAoKGRlcCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAgICAgLSAke0pTT04uc3RyaW5naWZ5KGRlcCl9XFxuYDtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5qb2luKCcnKX1gXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGlmICghdW5leHBlY3RlZC5zaXplICYmICFtaXNzaW5nLnNpemUpIHtcbiAgICBsb2coXG4gICAgICBjaGFsay5ncmF5KFxuICAgICAgICBgXFxuICAke2NoYWxrLmJvbGQuZ3JlZW4oJ+KckycpfSAke2NoYWxrLmJvbGQoXG4gICAgICAgICAgcGFja2FnZUluZm8ucGFja2FnZU5hbWVcbiAgICAgICAgKX0gaXMgZ29vZGBcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRzLnByb2JsZW1GaWxlQ291bnQrKztcblxuICBpZiAoaXNSZXBhaXJFbmFibGVkKSB7XG4gICAgY29uc3QgcmVwYWlyZWRSZWZlcmVuY2VzID0gWy4uLmV4cGVjdGVkXS5tYXAoKHJlZlBhdGgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGg6IHJlZlBhdGgsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKFxuICAgICAgdHNjb25maWdGaWxlLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50c2NvbmZpZ09iaixcbiAgICAgICAgICByZWZlcmVuY2VzOiByZXBhaXJlZFJlZmVyZW5jZXMsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIDJcbiAgICAgICksXG4gICAgICB7IGVuY29kaW5nOiAndXRmOCcgfVxuICAgICk7XG5cbiAgICBsb2coY2hhbGsuZ3JlZW4oYCAgJHtjaGFsay5ib2xkKHBhY2thZ2VJbmZvLnBhY2thZ2VOYW1lKX0gd2FzIHJlcGFpcmVkIWApKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjaGVja01vbm9yZXBvKCkge1xuICBjb25zdCBwYWNrYWdlc0RpciA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAncGFja2FnZXMnKTtcbiAgY29uc3QgcGFja2FnZXM6IFBhY2thZ2VJbmZvW10gPSBbXTtcblxuICBjb25zdCBrbm93blBhY2thZ2VzOiBSZWNvcmQ8c3RyaW5nLCBQYWNrYWdlSW5mbz4gPSB7fTtcbiAgY29uc3Qgc3RhdHM6IENoZWNrVFNDb25maWdTdGF0cyA9IHtcbiAgICBwcm9ibGVtRmlsZUNvdW50OiAwLFxuICB9O1xuXG4gIGxldCBwYWNrYWdlc1JlYWREaXJSZXN1bHQ7XG5cbiAgdHJ5IHtcbiAgICBwYWNrYWdlc1JlYWREaXJSZXN1bHQgPSBhd2FpdCBmcy5yZWFkZGlyKHBhY2thZ2VzRGlyKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgVW5hYmxlIHRvIHJlYWQgbW9ub3JlcG8gcGFja2FnZXMgYXQgJHtjaGFsay5ib2xkKFxuICAgICAgICAgIHBhY2thZ2VzRGlyXG4gICAgICAgICl9IChwcm9iYWJseSBub3QgYSBtb25yZXBvKS4gRXJyb3I6ICR7ZXJyLnRvU3RyaW5nKCl9IChza2lwcGluZylgXG4gICAgICApXG4gICAgKTtcbiAgICBwcm9jZXNzLmV4aXRDb2RlID0gMztcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhY2thZ2VEaXJOYW1lIG9mIHBhY2thZ2VzUmVhZERpclJlc3VsdCkge1xuICAgIGNvbnN0IHBhY2thZ2VEaXIgPSBwYXRoLmpvaW4ocGFja2FnZXNEaXIsIHBhY2thZ2VEaXJOYW1lKTtcbiAgICBjb25zdCBwYWNrYWdlRGlyU3RhdCA9IGF3YWl0IGZzLnN0YXQocGFja2FnZURpcik7XG4gICAgaWYgKCFwYWNrYWdlRGlyU3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IHBhdGguam9pbihwYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgcGFja2FnZU9iaiA9IGF3YWl0IHJlYWRKc29uRmlsZTxQYWNrYWdlTWFuaWZlc3Q+KHBhY2thZ2VGaWxlKTtcbiAgICBpZiAoIXBhY2thZ2VPYmopIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcGFja2FnZU9iai5uYW1lO1xuICAgIGlmICghcGFja2FnZU5hbWUpIHtcbiAgICAgIGxvZyhcbiAgICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICAgIGBQYWNrYWdlIG5hbWUgaXMgbWlzc2luZyBpbiAke2NoYWxrLmJvbGQocGFja2FnZUZpbGUpfSAoc2tpcHBpbmcpYFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGtub3duUGFja2FnZXNbcGFja2FnZU5hbWVdKSB7XG4gICAgICBsb2coXG4gICAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgICBgRHVwbGljYXRlIHBhY2thZ2UgbmFtZSBlbmNvdW50ZXJlZCBpbiAke2NoYWxrLmJvbGQoXG4gICAgICAgICAgICBwYWNrYWdlRmlsZVxuICAgICAgICAgICl9IChhYm9ydGluZyEpYFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZUluZm86IFBhY2thZ2VJbmZvID0ge1xuICAgICAgcGFja2FnZU5hbWUsXG4gICAgICBkaXI6IHBhY2thZ2VEaXIsXG4gICAgICBkaXJOYW1lOiBwYWNrYWdlRGlyTmFtZSxcbiAgICAgIHBhY2thZ2VGaWxlLFxuICAgICAgcGFja2FnZU9iaixcbiAgICB9O1xuXG4gICAga25vd25QYWNrYWdlc1twYWNrYWdlTmFtZV0gPSBwYWNrYWdlSW5mbztcbiAgICBwYWNrYWdlcy5wdXNoKHBhY2thZ2VJbmZvKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcGFja2FnZUluZm8gb2YgcGFja2FnZXMpIHtcbiAgICBsb2coYFxcbkNoZWNraW5nICR7Y2hhbGsuYm9sZChwYWNrYWdlSW5mby5kaXJOYW1lKX0uLi5gKTtcblxuICAgIGNvbnN0IHRzY29uZmlnRGlzdEZpbGUgPSBwYXRoLmpvaW4ocGFja2FnZUluZm8uZGlyLCAndHNjb25maWcuZGlzdC5qc29uJyk7XG4gICAgY29uc3QgdHNjb25maWdEaXN0T2JqID0gYXdhaXQgcmVhZEpzb25GaWxlPFRTQ29uZmlnPih0c2NvbmZpZ0Rpc3RGaWxlKTtcblxuICAgIGNvbnN0IHRzY29uZmlnRmlsZSA9IHBhdGguam9pbihwYWNrYWdlSW5mby5kaXIsICd0c2NvbmZpZy5qc29uJyk7XG4gICAgY29uc3QgdHNjb25maWdPYmogPSBhd2FpdCByZWFkSnNvbkZpbGU8VFNDb25maWc+KHRzY29uZmlnRmlsZSk7XG5cbiAgICBpZiAoIXRzY29uZmlnT2JqICYmICF0c2NvbmZpZ0Rpc3RPYmopIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUGFja2FnZSAke2NoYWxrLmJvbGQoXG4gICAgICAgICAgcGFja2FnZUluZm8uZGlyTmFtZVxuICAgICAgICApfSBkb2VzIG5vdCBoYXZlIHRzY29uZmlnLmpzb24gb3IgdHNjb25maWcuZGlzdC5qc29uIChza2lwcGluZylgXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWlyZWREZXBlbmRlbmNpZXNTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHByb2Nlc3NEZXBlbmRlbmNpZXMgPSAoZGVwZW5kZW5jeU5hbWVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5TmFtZSBvZiBkZXBlbmRlbmN5TmFtZXMpIHtcbiAgICAgICAgaWYgKGtub3duUGFja2FnZXNbZGVwZW5kZW5jeU5hbWVdKSB7XG4gICAgICAgICAgcmVxdWlyZWREZXBlbmRlbmNpZXNTZXQuYWRkKGRlcGVuZGVuY3lOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocGFja2FnZUluZm8ucGFja2FnZU9iai5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHByb2Nlc3NEZXBlbmRlbmNpZXMoT2JqZWN0LmtleXMocGFja2FnZUluZm8ucGFja2FnZU9iai5kZXBlbmRlbmNpZXMpKTtcbiAgICB9XG5cbiAgICBpZiAocGFja2FnZUluZm8ucGFja2FnZU9iai5kZXZEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHByb2Nlc3NEZXBlbmRlbmNpZXMoT2JqZWN0LmtleXMocGFja2FnZUluZm8ucGFja2FnZU9iai5kZXZEZXBlbmRlbmNpZXMpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1aXJlZERlcGVuZGVuY2llcyA9IFsuLi5yZXF1aXJlZERlcGVuZGVuY2llc1NldF07XG4gICAgaWYgKHJlcXVpcmVkRGVwZW5kZW5jaWVzLmxlbmd0aCkge1xuICAgICAgbG9nKFxuICAgICAgICBgICBJdCBkZXBlbmRzIG9uOlxcbiR7cmVxdWlyZWREZXBlbmRlbmNpZXNcbiAgICAgICAgICAubWFwKChkZXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgICAgIC0gJHtkZXB9XFxuYDtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5qb2luKCcnKX1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coXG4gICAgICAgIGNoYWxrLmdyYXkoXG4gICAgICAgICAgYCAgJHtjaGFsay5ib2xkKHBhY2thZ2VJbmZvLnBhY2thZ2VOYW1lKX0gaGFzIG5vIGRlcGVuZGVuY2llc2BcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBlY3RlZCA9IG5ldyBTZXQ8c3RyaW5nPihcbiAgICAgIHJlcXVpcmVkRGVwZW5kZW5jaWVzLm1hcCgoZGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IGtub3duUGFja2FnZSA9IGtub3duUGFja2FnZXNbZGVwXTtcbiAgICAgICAgcmV0dXJuIGAuLi8ke2tub3duUGFja2FnZS5kaXJOYW1lfS90c2NvbmZpZy5kaXN0Lmpzb25gO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRzY29uZmlnT2JqKSB7XG4gICAgICBhd2FpdCBjaGVja1RzQ29uZmlnRmlsZSh7XG4gICAgICAgIGV4cGVjdGVkUHJvamVjdFJlZmVyZW5jZXM6IGV4cGVjdGVkLFxuICAgICAgICBwYWNrYWdlSW5mbyxcbiAgICAgICAgc3RhdHMsXG4gICAgICAgIHRzY29uZmlnRmlsZSxcbiAgICAgICAgdHNjb25maWdPYmosXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodHNjb25maWdEaXN0T2JqKSB7XG4gICAgICBhd2FpdCBjaGVja1RzQ29uZmlnRmlsZSh7XG4gICAgICAgIGV4cGVjdGVkUHJvamVjdFJlZmVyZW5jZXM6IGV4cGVjdGVkLFxuICAgICAgICBwYWNrYWdlSW5mbyxcbiAgICAgICAgc3RhdHMsXG4gICAgICAgIHRzY29uZmlnRmlsZTogdHNjb25maWdEaXN0RmlsZSxcbiAgICAgICAgdHNjb25maWdPYmo6IHRzY29uZmlnRGlzdE9iaixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBcXG4ke2NoYWxrLmJvbGQuZ3JlZW4oJ0ZpbmlzaGVkIGNoZWNraW5nIHRzY29uZmlnLmRpc3QuanNvbiBmaWxlcy4nKX1gXG4gICk7XG5cbiAgaWYgKGlzUmVwYWlyRW5hYmxlZCkge1xuICAgIGNvbnNvbGUubG9nKGAgIE51bWJlciBvZiBmaWxlcyByZXBhaXJlZDogJHtzdGF0cy5wcm9ibGVtRmlsZUNvdW50fVxcbmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGAgIE51bWJlciBvZiBmaWxlcyB3aXRoIHByb2JsZW1zOiAke3N0YXRzLnByb2JsZW1GaWxlQ291bnR9XFxuYCk7XG4gIH1cblxuICBpZiAoc3RhdHMucHJvYmxlbUZpbGVDb3VudCAmJiAhaXNSZXBhaXJFbmFibGVkKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGNoYWxrLmJvbGQucmVkKGBQcm9ibGVtcyB3ZXJlIGZvdW5kIGluIHRzY29uZmlnIGZpbGVzIChwbGVhc2UgcmV2aWV3KS5cXG5gKVxuICAgICk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDI7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBpZiAoaW5wdXQuaGVscCkge1xuICAgIHJldHVybiB5YXJncy5zaG93SGVscCgpO1xuICB9XG5cbiAgaWYgKGlzTW9ub3JlcG8pIHtcbiAgICBhd2FpdCBjaGVja01vbm9yZXBvKCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coYHRzY29uZmlnIGNoZWNrcyBhcmUgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGZvciBtb25vcmVwb3NgKTtcbiAgfVxufVxuXG5ydW4oKS5jYXRjaCgoZXJyKSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoXG4gICAgY2hhbGsucmVkKGNoYWxrLmJvbGQoJ0Vycm9yIG9jY3VycmVkLiAnKSArIChlcnIuc3RhY2sgfHwgZXJyLnRvU3RyaW5nKCkpKVxuICApO1xufSk7XG4iXX0=
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stdHNjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vY2hlY2stdHNjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsa0RBQTBCO0FBQzFCLDJCQUFvQztBQUNwQyxnREFBd0I7QUFDeEIsa0RBQTBCO0FBRTFCLE1BQU0sS0FBSyxHQUFHLGVBQUs7S0FDaEIsTUFBTSxDQUFDLEdBQUcsRUFBRTtJQUNYLEtBQUssRUFBRSxNQUFNO0lBQ2IsSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztLQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSxxQ0FBcUM7Q0FDbkQsQ0FBQztLQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSwyQkFBMkI7Q0FDekMsQ0FBQztLQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDaEIsSUFBSSxFQUFFLFNBQVM7SUFDZixXQUFXLEVBQUUsdUNBQXVDO0NBQ3JELENBQUM7S0FDRCxNQUFNLENBQUMsVUFBVSxFQUFFO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsV0FBVyxFQUFFLHFEQUFxRDtDQUNuRSxDQUFDLENBQUMsSUFPSixDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDOUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7QUFFM0MsU0FBUyxHQUFHLENBQUMsR0FBVztJQUN0QixJQUFJLE9BQU8sRUFBRTtRQUNYLE9BQU87S0FDUjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQUks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QUM7UUFDRixPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztLQUN0QjtBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsR0FBRztJQUNoQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDZCxPQUFPLGVBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUN6QjtJQUVELElBQUksVUFBVSxFQUFFO1FBQ2QsTUFBTSxhQUFhLEVBQUUsQ0FBQztLQUN2QjtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0tBQzNFO0FBQ0gsQ0FBQztBQUVELEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsZUFBSyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQzFFLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuXG5jb25zdCBpbnB1dCA9IHlhcmdzXG4gIC5vcHRpb24oJ2gnLCB7XG4gICAgYWxpYXM6ICdoZWxwJyxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gIH0pXG4gIC5vcHRpb24oJ2h1c2t5Jywge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZXNjcmlwdGlvbjogJ0lzIHRoaXMgY29tbWFuZCBiZWluZyByYW4gYnkgaHVza3k/JyxcbiAgfSlcbiAgLm9wdGlvbigncXVpZXQnLCB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnVXNlIHF1aWV0IG1vZGU/IChubyBsb2dzKScsXG4gIH0pXG4gIC5vcHRpb24oJ3JlcGFpcicsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVzY3JpcHRpb246ICdTaG91bGQgZXJyb3JzIGJlIGZpeGVkIHdoZW4gcG9zc2libGU/JyxcbiAgfSlcbiAgLm9wdGlvbignbW9ub3JlcG8nLCB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnSXMgdGhpcyBhIG1vbm9yZXBvPyBJZiBzbywgcGFja2FnZXMgd2lsbCBiZSBjaGVja2VkJyxcbiAgfSkuYXJndiBhcyB7XG4gIGhlbHA/OiBib29sZWFuO1xuICBodXNreT86IGJvb2xlYW47XG4gIHF1aWV0PzogYm9vbGVhbjtcbiAgcmVwYWlyPzogYm9vbGVhbjtcbiAgbW9ub3JlcG8/OiBib29sZWFuO1xuICBfOiBzdHJpbmdbXTtcbn07XG5cbmNvbnN0IGlzUXVpZXQgPSBpbnB1dC5xdWlldCA9PT0gdHJ1ZTtcbmNvbnN0IGlzUmVwYWlyRW5hYmxlZCA9IGlucHV0LnJlcGFpciA9PT0gdHJ1ZTtcbmNvbnN0IGlzTW9ub3JlcG8gPSBpbnB1dC5tb25vcmVwbyA9PT0gdHJ1ZTtcblxuZnVuY3Rpb24gbG9nKG1zZzogc3RyaW5nKSB7XG4gIGlmIChpc1F1aWV0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnNvbGUubG9nKG1zZyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRKc29uRmlsZTxUPihmaWxlOiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgbGV0IGNvbnRlbnRzOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgYEVycm9yIHJlYWRpbmcgJHtjaGFsay5ib2xkKGZpbGUpfS4gJHtlcnIudG9TdHJpbmcoKX0gKHNraXBwaW5nKWBcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBsZXQgb2JqO1xuICB0cnkge1xuICAgIG9iaiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2coXG4gICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgIGBFcnJvciBwYXJzaW5nICR7Y2hhbGsuYm9sZChmaWxlKX0uICR7ZXJyLnRvU3RyaW5nKCl9IChza2lwcGluZylgXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxudHlwZSBQYWNrYWdlTWFuaWZlc3QgPSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGRldkRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG50eXBlIFRTQ29uZmlnID0ge1xuICByZWZlcmVuY2VzPzoge1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gIH1bXTtcbn07XG5cbnR5cGUgUGFja2FnZUluZm8gPSB7XG4gIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIGRpcjogc3RyaW5nO1xuICBkaXJOYW1lOiBzdHJpbmc7XG4gIHBhY2thZ2VGaWxlOiBzdHJpbmc7XG4gIHBhY2thZ2VPYmo6IFBhY2thZ2VNYW5pZmVzdDtcbn07XG5cbnR5cGUgQ2hlY2tUU0NvbmZpZ1N0YXRzID0ge1xuICBwcm9ibGVtRmlsZUNvdW50OiBudW1iZXI7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjaGVja1RzQ29uZmlnRmlsZShvcHRpb25zOiB7XG4gIHBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbztcbiAgc3RhdHM6IENoZWNrVFNDb25maWdTdGF0cztcbiAgdHNjb25maWdGaWxlOiBzdHJpbmc7XG4gIHRzY29uZmlnT2JqOiBUU0NvbmZpZztcbiAgZXhwZWN0ZWRQcm9qZWN0UmVmZXJlbmNlczogU2V0PHN0cmluZz47XG59KSB7XG4gIGNvbnN0IHsgcGFja2FnZUluZm8sIHN0YXRzLCB0c2NvbmZpZ0ZpbGUsIHRzY29uZmlnT2JqIH0gPSBvcHRpb25zO1xuICBjb25zdCBleHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWRQcm9qZWN0UmVmZXJlbmNlcztcbiAgY29uc3QgdW5leHBlY3RlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBtaXNzaW5nID0gbmV3IFNldDxzdHJpbmc+KGV4cGVjdGVkKTtcblxuICBmb3IgKGNvbnN0IHJlZiBvZiB0c2NvbmZpZ09iai5yZWZlcmVuY2VzID8/IFtdKSB7XG4gICAgaWYgKHJlZi5wYXRoKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQuaGFzKHJlZi5wYXRoKSkge1xuICAgICAgICBsb2coY2hhbGsuZ3JheShgICDinJMgQWxyZWFkeSBoYXMgJHtyZWYucGF0aH1gKSk7XG4gICAgICAgIG1pc3NpbmcuZGVsZXRlKHJlZi5wYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVuZXhwZWN0ZWQuYWRkKHJlZi5wYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodW5leHBlY3RlZC5zaXplKSB7XG4gICAgbG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgICAke2NoYWxrLmJvbGQoXG4gICAgICAgICAgcGFja2FnZUluZm8ucGFja2FnZU5hbWVcbiAgICAgICAgKX0gaGFzIHVuZXhwZWN0ZWQgcHJvamVjdCByZWZlcmVuY2VzOlxcbiR7Wy4uLnVuZXhwZWN0ZWRdXG4gICAgICAgICAgLm1hcCgoZGVwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCAgICAtICR7SlNPTi5zdHJpbmdpZnkoZGVwKX1cXG5gO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmpvaW4oJycpfWBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgaWYgKG1pc3Npbmcuc2l6ZSkge1xuICAgIGxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgYCAgJHtjaGFsay5ib2xkKFxuICAgICAgICAgIHBhY2thZ2VJbmZvLnBhY2thZ2VOYW1lXG4gICAgICAgICl9IGlzIG1pc3NpbmcgdGhlc2UgcHJvamVjdCBwcm9qZWN0IHJlZmVyZW5jZXM6XFxuJHtbLi4ubWlzc2luZ11cbiAgICAgICAgICAubWFwKChkZXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgICAgIC0gJHtKU09OLnN0cmluZ2lmeShkZXApfVxcbmA7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyl9YFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpZiAoIXVuZXhwZWN0ZWQuc2l6ZSAmJiAhbWlzc2luZy5zaXplKSB7XG4gICAgbG9nKFxuICAgICAgY2hhbGsuZ3JheShcbiAgICAgICAgYFxcbiAgJHtjaGFsay5ib2xkLmdyZWVuKCfinJMnKX0gJHtjaGFsay5ib2xkKFxuICAgICAgICAgIHBhY2thZ2VJbmZvLnBhY2thZ2VOYW1lXG4gICAgICAgICl9IGlzIGdvb2RgXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0cy5wcm9ibGVtRmlsZUNvdW50Kys7XG5cbiAgaWYgKGlzUmVwYWlyRW5hYmxlZCkge1xuICAgIGNvbnN0IHJlcGFpcmVkUmVmZXJlbmNlcyA9IFsuLi5leHBlY3RlZF0ubWFwKChyZWZQYXRoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiByZWZQYXRoLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgIHRzY29uZmlnRmlsZSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7XG4gICAgICAgICAgLi4udHNjb25maWdPYmosXG4gICAgICAgICAgcmVmZXJlbmNlczogcmVwYWlyZWRSZWZlcmVuY2VzLFxuICAgICAgICB9LFxuICAgICAgICBudWxsLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgeyBlbmNvZGluZzogJ3V0ZjgnIH1cbiAgICApO1xuXG4gICAgbG9nKGNoYWxrLmdyZWVuKGAgICR7Y2hhbGsuYm9sZChwYWNrYWdlSW5mby5wYWNrYWdlTmFtZSl9IHdhcyByZXBhaXJlZCFgKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tNb25vcmVwbygpIHtcbiAgY29uc3QgcGFja2FnZXNEaXIgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3BhY2thZ2VzJyk7XG4gIGNvbnN0IHBhY2thZ2VzOiBQYWNrYWdlSW5mb1tdID0gW107XG5cbiAgY29uc3Qga25vd25QYWNrYWdlczogUmVjb3JkPHN0cmluZywgUGFja2FnZUluZm8+ID0ge307XG4gIGNvbnN0IHN0YXRzOiBDaGVja1RTQ29uZmlnU3RhdHMgPSB7XG4gICAgcHJvYmxlbUZpbGVDb3VudDogMCxcbiAgfTtcblxuICBsZXQgcGFja2FnZXNSZWFkRGlyUmVzdWx0O1xuXG4gIHRyeSB7XG4gICAgcGFja2FnZXNSZWFkRGlyUmVzdWx0ID0gYXdhaXQgZnMucmVhZGRpcihwYWNrYWdlc0Rpcik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgYFVuYWJsZSB0byByZWFkIG1vbm9yZXBvIHBhY2thZ2VzIGF0ICR7Y2hhbGsuYm9sZChcbiAgICAgICAgICBwYWNrYWdlc0RpclxuICAgICAgICApfSAocHJvYmFibHkgbm90IGEgbW9ucmVwbykuIEVycm9yOiAke2Vyci50b1N0cmluZygpfSAoc2tpcHBpbmcpYFxuICAgICAgKVxuICAgICk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDM7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yIChjb25zdCBwYWNrYWdlRGlyTmFtZSBvZiBwYWNrYWdlc1JlYWREaXJSZXN1bHQpIHtcbiAgICBjb25zdCBwYWNrYWdlRGlyID0gcGF0aC5qb2luKHBhY2thZ2VzRGlyLCBwYWNrYWdlRGlyTmFtZSk7XG4gICAgY29uc3QgcGFja2FnZURpclN0YXQgPSBhd2FpdCBmcy5zdGF0KHBhY2thZ2VEaXIpO1xuICAgIGlmICghcGFja2FnZURpclN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBwYXRoLmpvaW4ocGFja2FnZURpciwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGNvbnN0IHBhY2thZ2VPYmogPSBhd2FpdCByZWFkSnNvbkZpbGU8UGFja2FnZU1hbmlmZXN0PihwYWNrYWdlRmlsZSk7XG4gICAgaWYgKCFwYWNrYWdlT2JqKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHBhY2thZ2VPYmoubmFtZTtcbiAgICBpZiAoIXBhY2thZ2VOYW1lKSB7XG4gICAgICBsb2coXG4gICAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgICBgUGFja2FnZSBuYW1lIGlzIG1pc3NpbmcgaW4gJHtjaGFsay5ib2xkKHBhY2thZ2VGaWxlKX0gKHNraXBwaW5nKWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChrbm93blBhY2thZ2VzW3BhY2thZ2VOYW1lXSkge1xuICAgICAgbG9nKFxuICAgICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgICAgYER1cGxpY2F0ZSBwYWNrYWdlIG5hbWUgZW5jb3VudGVyZWQgaW4gJHtjaGFsay5ib2xkKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVcbiAgICAgICAgICApfSAoYWJvcnRpbmchKWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyA9IHtcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgZGlyOiBwYWNrYWdlRGlyLFxuICAgICAgZGlyTmFtZTogcGFja2FnZURpck5hbWUsXG4gICAgICBwYWNrYWdlRmlsZSxcbiAgICAgIHBhY2thZ2VPYmosXG4gICAgfTtcblxuICAgIGtub3duUGFja2FnZXNbcGFja2FnZU5hbWVdID0gcGFja2FnZUluZm87XG4gICAgcGFja2FnZXMucHVzaChwYWNrYWdlSW5mbyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhY2thZ2VJbmZvIG9mIHBhY2thZ2VzKSB7XG4gICAgbG9nKGBcXG5DaGVja2luZyAke2NoYWxrLmJvbGQocGFja2FnZUluZm8uZGlyTmFtZSl9Li4uYCk7XG5cbiAgICBjb25zdCB0c2NvbmZpZ0Rpc3RGaWxlID0gcGF0aC5qb2luKHBhY2thZ2VJbmZvLmRpciwgJ3RzY29uZmlnLmRpc3QuanNvbicpO1xuICAgIGNvbnN0IHRzY29uZmlnRGlzdE9iaiA9IGF3YWl0IHJlYWRKc29uRmlsZTxUU0NvbmZpZz4odHNjb25maWdEaXN0RmlsZSk7XG5cbiAgICBjb25zdCB0c2NvbmZpZ0ZpbGUgPSBwYXRoLmpvaW4ocGFja2FnZUluZm8uZGlyLCAndHNjb25maWcuanNvbicpO1xuICAgIGNvbnN0IHRzY29uZmlnT2JqID0gYXdhaXQgcmVhZEpzb25GaWxlPFRTQ29uZmlnPih0c2NvbmZpZ0ZpbGUpO1xuXG4gICAgaWYgKCF0c2NvbmZpZ09iaiAmJiAhdHNjb25maWdEaXN0T2JqKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFBhY2thZ2UgJHtjaGFsay5ib2xkKFxuICAgICAgICAgIHBhY2thZ2VJbmZvLmRpck5hbWVcbiAgICAgICAgKX0gZG9lcyBub3QgaGF2ZSB0c2NvbmZpZy5qc29uIG9yIHRzY29uZmlnLmRpc3QuanNvbiAoc2tpcHBpbmcpYFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVkRGVwZW5kZW5jaWVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCBwcm9jZXNzRGVwZW5kZW5jaWVzID0gKGRlcGVuZGVuY3lOYW1lczogc3RyaW5nW10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeU5hbWUgb2YgZGVwZW5kZW5jeU5hbWVzKSB7XG4gICAgICAgIGlmIChrbm93blBhY2thZ2VzW2RlcGVuZGVuY3lOYW1lXSkge1xuICAgICAgICAgIHJlcXVpcmVkRGVwZW5kZW5jaWVzU2V0LmFkZChkZXBlbmRlbmN5TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHBhY2thZ2VJbmZvLnBhY2thZ2VPYmouZGVwZW5kZW5jaWVzKSB7XG4gICAgICBwcm9jZXNzRGVwZW5kZW5jaWVzKE9iamVjdC5rZXlzKHBhY2thZ2VJbmZvLnBhY2thZ2VPYmouZGVwZW5kZW5jaWVzKSk7XG4gICAgfVxuXG4gICAgaWYgKHBhY2thZ2VJbmZvLnBhY2thZ2VPYmouZGV2RGVwZW5kZW5jaWVzKSB7XG4gICAgICBwcm9jZXNzRGVwZW5kZW5jaWVzKE9iamVjdC5rZXlzKHBhY2thZ2VJbmZvLnBhY2thZ2VPYmouZGV2RGVwZW5kZW5jaWVzKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWlyZWREZXBlbmRlbmNpZXMgPSBbLi4ucmVxdWlyZWREZXBlbmRlbmNpZXNTZXRdO1xuICAgIGlmIChyZXF1aXJlZERlcGVuZGVuY2llcy5sZW5ndGgpIHtcbiAgICAgIGxvZyhcbiAgICAgICAgYCAgSXQgZGVwZW5kcyBvbjpcXG4ke3JlcXVpcmVkRGVwZW5kZW5jaWVzXG4gICAgICAgICAgLm1hcCgoZGVwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCAgICAtICR7ZGVwfVxcbmA7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyl9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKFxuICAgICAgICBjaGFsay5ncmF5KFxuICAgICAgICAgIGAgICR7Y2hhbGsuYm9sZChwYWNrYWdlSW5mby5wYWNrYWdlTmFtZSl9IGhhcyBubyBkZXBlbmRlbmNpZXNgXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwZWN0ZWROb25EaXN0ID0gbmV3IFNldDxzdHJpbmc+KFxuICAgICAgcmVxdWlyZWREZXBlbmRlbmNpZXMubWFwKChkZXApID0+IHtcbiAgICAgICAgY29uc3Qga25vd25QYWNrYWdlID0ga25vd25QYWNrYWdlc1tkZXBdO1xuICAgICAgICByZXR1cm4gYC4uLyR7a25vd25QYWNrYWdlLmRpck5hbWV9L3RzY29uZmlnLmpzb25gO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgZXhwZWN0ZWREaXN0ID0gbmV3IFNldDxzdHJpbmc+KFxuICAgICAgcmVxdWlyZWREZXBlbmRlbmNpZXMubWFwKChkZXApID0+IHtcbiAgICAgICAgY29uc3Qga25vd25QYWNrYWdlID0ga25vd25QYWNrYWdlc1tkZXBdO1xuICAgICAgICByZXR1cm4gYC4uLyR7a25vd25QYWNrYWdlLmRpck5hbWV9L3RzY29uZmlnLmRpc3QuanNvbmA7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodHNjb25maWdPYmopIHtcbiAgICAgIGF3YWl0IGNoZWNrVHNDb25maWdGaWxlKHtcbiAgICAgICAgZXhwZWN0ZWRQcm9qZWN0UmVmZXJlbmNlczogZXhwZWN0ZWROb25EaXN0LFxuICAgICAgICBwYWNrYWdlSW5mbyxcbiAgICAgICAgc3RhdHMsXG4gICAgICAgIHRzY29uZmlnRmlsZSxcbiAgICAgICAgdHNjb25maWdPYmosXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodHNjb25maWdEaXN0T2JqKSB7XG4gICAgICBhd2FpdCBjaGVja1RzQ29uZmlnRmlsZSh7XG4gICAgICAgIGV4cGVjdGVkUHJvamVjdFJlZmVyZW5jZXM6IGV4cGVjdGVkRGlzdCxcbiAgICAgICAgcGFja2FnZUluZm8sXG4gICAgICAgIHN0YXRzLFxuICAgICAgICB0c2NvbmZpZ0ZpbGU6IHRzY29uZmlnRGlzdEZpbGUsXG4gICAgICAgIHRzY29uZmlnT2JqOiB0c2NvbmZpZ0Rpc3RPYmosXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhcbiAgICBgXFxuJHtjaGFsay5ib2xkLmdyZWVuKCdGaW5pc2hlZCBjaGVja2luZyB0c2NvbmZpZy5kaXN0Lmpzb24gZmlsZXMuJyl9YFxuICApO1xuXG4gIGlmIChpc1JlcGFpckVuYWJsZWQpIHtcbiAgICBjb25zb2xlLmxvZyhgICBOdW1iZXIgb2YgZmlsZXMgcmVwYWlyZWQ6ICR7c3RhdHMucHJvYmxlbUZpbGVDb3VudH1cXG5gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgICBOdW1iZXIgb2YgZmlsZXMgd2l0aCBwcm9ibGVtczogJHtzdGF0cy5wcm9ibGVtRmlsZUNvdW50fVxcbmApO1xuICB9XG5cbiAgaWYgKHN0YXRzLnByb2JsZW1GaWxlQ291bnQgJiYgIWlzUmVwYWlyRW5hYmxlZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjaGFsay5ib2xkLnJlZChgUHJvYmxlbXMgd2VyZSBmb3VuZCBpbiB0c2NvbmZpZyBmaWxlcyAocGxlYXNlIHJldmlldykuXFxuYClcbiAgICApO1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAyO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgaWYgKGlucHV0LmhlbHApIHtcbiAgICByZXR1cm4geWFyZ3Muc2hvd0hlbHAoKTtcbiAgfVxuXG4gIGlmIChpc01vbm9yZXBvKSB7XG4gICAgYXdhaXQgY2hlY2tNb25vcmVwbygpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGB0c2NvbmZpZyBjaGVja3MgYXJlIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBmb3IgbW9ub3JlcG9zYCk7XG4gIH1cbn1cblxucnVuKCkuY2F0Y2goKGVycikgPT4ge1xuICBjb25zb2xlLmVycm9yKFxuICAgIGNoYWxrLnJlZChjaGFsay5ib2xkKCdFcnJvciBvY2N1cnJlZC4gJykgKyAoZXJyLnN0YWNrIHx8IGVyci50b1N0cmluZygpKSlcbiAgKTtcbn0pO1xuIl19
|