@colijnit/configurator 12.0.6 → 12.0.7
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.
|
@@ -10,35 +10,38 @@ export class VariationUtils {
|
|
|
10
10
|
}
|
|
11
11
|
static LoadVariation(assetPath, fileName) {
|
|
12
12
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (fileName.indexOf('ione3d') < 0) {
|
|
17
|
-
fileName = fileName.concat('.ione3d');
|
|
18
|
-
}
|
|
19
|
-
const id = fileName.substr(0, fileName.lastIndexOf('.ione3d'));
|
|
20
|
-
try {
|
|
21
|
-
if (!assetPath.endsWith('/')) {
|
|
22
|
-
assetPath += '/';
|
|
13
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
if (!fileName) {
|
|
15
|
+
resolve(null);
|
|
23
16
|
}
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
return null;
|
|
17
|
+
if (fileName.indexOf('ione3d') < 0) {
|
|
18
|
+
fileName = fileName.concat('.ione3d');
|
|
27
19
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
const id = fileName.substr(0, fileName.lastIndexOf('.ione3d'));
|
|
21
|
+
try {
|
|
22
|
+
if (!assetPath.endsWith('/')) {
|
|
23
|
+
assetPath += '/';
|
|
24
|
+
}
|
|
25
|
+
if (!window.hasOwnProperty('downloadVariation')) {
|
|
26
|
+
console.error('downloadVariation not defined in window global');
|
|
27
|
+
reject('downloadVariation not defined in window global');
|
|
28
|
+
}
|
|
29
|
+
let file;
|
|
30
|
+
if (this.MaterialCache.has(id)) {
|
|
31
|
+
resolve(this.MaterialCache.get(id));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
file = yield window.downloadVariation(`${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`);
|
|
35
|
+
const settings = yield VariationUtils.GetVariationSettingsFromFile(id, file);
|
|
36
|
+
this.MaterialCache.set(id, settings);
|
|
37
|
+
resolve(settings);
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
catch (err) {
|
|
41
|
+
const mute = err;
|
|
42
|
+
reject(err);
|
|
35
43
|
}
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
const mute = err;
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
44
|
+
}));
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
// public static GetMaterialFromName(variationFolder: string, material: any): Promise<MeshStandardMaterial> {
|
|
@@ -291,4 +294,4 @@ export class VariationUtils {
|
|
|
291
294
|
}
|
|
292
295
|
}
|
|
293
296
|
VariationUtils.MaterialCache = new Map();
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN2QztZQUNELE1BQU0sRUFBRSxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM1QixTQUFTLElBQUksR0FBRyxDQUFDO2lCQUNsQjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELElBQUksSUFBSSxDQUFDO2dCQUNULElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDbkM7cUJBQU07b0JBQ0wsSUFBSSxHQUFHLE1BQU8sTUFBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUMsYUFBYSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUM5SCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELE9BQU8sTUFBTSxjQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3BFO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQztLQUFBO0lBRUQsNkdBQTZHO0lBQzdHLGdEQUFnRDtJQUNoRCx1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLFFBQVE7SUFDUixtREFBbUQ7SUFDbkQsZ0VBQWdFO0lBQ2hFLGVBQWU7SUFDZixvSEFBb0g7SUFDcEgsMEJBQTBCO0lBQzFCLDJGQUEyRjtJQUMzRix5RUFBeUU7SUFDekUsbURBQW1EO0lBQ25ELHdEQUF3RDtJQUN4RCw2REFBNkQ7SUFDN0QscURBQXFEO0lBQ3JELG1FQUFtRTtJQUNuRSxtRUFBbUU7SUFDbkUsNENBQTRDO0lBQzVDLDRDQUE0QztJQUM1Qyw2RkFBNkY7SUFDN0YsNkRBQTZEO0lBQzdELHVDQUF1QztJQUN2QyxnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLCtCQUErQjtJQUMvQixZQUFZO0lBQ1osWUFBWTtJQUNaLFFBQVE7SUFDUixRQUFRO0lBQ1IsSUFBSTtJQUVJLE1BQU0sQ0FBTyw0QkFBNEIsQ0FBQyxFQUFVLEVBQUUsY0FBbUI7O1lBQy9FLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdEUsTUFBTSxpQkFBaUIsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JFLElBQUksS0FBSyxDQUFDO1lBQ1YsaUJBQWlCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUUxQixJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ2xDLE1BQU0sU0FBUyxHQUFXLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQy9FLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQjtnQkFDRCxJQUFJLEtBQUssRUFBRTtvQkFDVCxNQUFNLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ3ZGO3FCQUFNO29CQUNMLE1BQU0sY0FBYyxDQUFDLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUNuRjthQUNGO1lBQ0QsT0FBTyxpQkFBaUIsQ0FBQztRQUMzQixDQUFDO0tBQUE7SUFFTyxNQUFNLENBQU8sMEJBQTBCLENBQUMsS0FBVSxFQUFFLGlCQUFvQyxFQUFFLFVBQWU7O1lBQy9HLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsaUJBQWlCLENBQUMsTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0gsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDckQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2hJLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ3ZEO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNqQixpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNwSCxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUMvQztpQkFBTTtnQkFDTCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pILGlCQUFpQixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2lCQUM3QztnQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7b0JBQ3ZCLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3RJLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7aUJBQzNEO2dCQUNELElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtvQkFDdkIsaUJBQWlCLENBQUMsU0FBUyxHQUFHLE1BQU0sY0FBYyxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdEksaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztpQkFDM0Q7YUFDRjtZQUNELElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQixpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDL0ksaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2FBQ2pFO1lBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUN0QixpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuSSxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ3pEO1lBQ0QsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO2dCQUNwQixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3SCxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNyRDtZQUNELGlCQUFpQixDQUFDLFFBQVE7Z0JBQ3RCLENBQUEsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLEtBQUksRUFBRSxDQUFDO1lBQzdHLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDdkQsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ3ZELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNySDtZQUNELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqRCxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDbkUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQzNELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNuRCxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakk7WUFDRCxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUM3RCxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM3QyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDN0QsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQy9ELENBQUM7S0FBQTtJQUVPLE1BQU0sQ0FBTyw2QkFBNkIsQ0FBQyxpQkFBb0MsRUFBRSxVQUFlOztZQUN0RyxNQUFNLFNBQVMsR0FBaUMsRUFBRSxDQUFDO1lBQ25ELEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDdkMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDN0MsTUFBTSxJQUFJLEdBQVEsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNuRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNqRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFOzRCQUNqRixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLFVBQVUsRUFBRSxDQUFDOzRCQUNsRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO3dCQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3BGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7NEJBQzdFLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsTUFBTSxFQUFFLENBQUM7NEJBQzFGLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7d0JBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0w7eUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDM0YsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFrQixFQUFFLEVBQUU7NEJBQ3BGLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsYUFBYSxFQUFFLENBQUM7NEJBQ3hHLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQzt3QkFDakQsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUMzRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWtCLEVBQUUsRUFBRTs0QkFDcEYsaUJBQWlCLENBQUMsU0FBUyxHQUFHLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxhQUFhLEVBQUUsQ0FBQzs0QkFDeEcsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO3dCQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3pGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFOzRCQUNsRixpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLFdBQVcsRUFBRSxDQUFDOzRCQUNwRyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO3dCQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzlGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQXFCLEVBQUUsRUFBRTs0QkFDdkYsaUJBQWlCLENBQUMsWUFBWSxHQUFHLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUM5RyxpQkFBaUIsQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUM7d0JBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0w7eUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDMUYsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7NEJBQ25GLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsWUFBWSxFQUFFLENBQUM7NEJBQ3RHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQzt3QkFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUN4RixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFOzRCQUNqRixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLFVBQVUsRUFBRSxDQUFDOzRCQUNsRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO3dCQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ3hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFOzRCQUNsRixpQkFBaUIsQ0FBQyxPQUFPLEdBQUcseUJBQXlCLEdBQUcsV0FBVyxDQUFDOzRCQUNwRSxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO3dCQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFOzRCQUNuRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDOzRCQUNqRCxLQUFLLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRTtnQ0FDakMsSUFBSSxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29DQUN2QyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lDQUN4RDs2QkFDRjt3QkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO2lCQUNGO2FBQ0Y7WUFDRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRU8sTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQVEsRUFBRSxRQUFnQixFQUFFLFNBQWtCLElBQUk7UUFDdEYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUN2QyxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRTtvQkFDaEUsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxXQUFXLFdBQVcsRUFBRSxDQUFDLENBQUM7cUJBQ2pGO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDdEI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ3pDLE1BQU0sR0FBRyxHQUFXLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JHLFFBQVEsR0FBRyxFQUFFO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWdCO1FBQy9DLE1BQU0sR0FBRyxHQUFXLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JHLFFBQVEsR0FBRyxFQUFFO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2Y7Z0JBQ0UsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1YsTUFBTSxDQUFPLGFBQWEsQ0FBQyxJQUFJOztZQUNyQyxJQUFJO2dCQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7S0FBQTs7QUE3UWMsNEJBQWEsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gXCJ0aHJlZVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tIFwiLi4vbW9kZWwvdmFyaWF0aW9uLXNldHRpbmdzXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuaW1wb3J0IEpTWmlwIGZyb20gXCJqc3ppcFwiO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIFZhcmlhdGlvblV0aWxzIHtcclxuICBwcml2YXRlIHN0YXRpYyBNYXRlcmlhbENhY2hlOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIENsZWFyQ2FjaGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLk1hdGVyaWFsQ2FjaGUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgTG9hZFZhcmlhdGlvbihhc3NldFBhdGg6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsZU5hbWUuaW5kZXhPZignaW9uZTNkJykgPCAwKSB7XHJcbiAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcuaW9uZTNkJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZDogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuaW9uZTNkJykpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCFhc3NldFBhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIGFzc2V0UGF0aCArPSAnLyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF3aW5kb3cuaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkVmFyaWF0aW9uJykpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdkb3dubG9hZFZhcmlhdGlvbiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbGU7XHJcbiAgICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKGlkKSkge1xyXG4gICAgICAgIGZpbGUgPSB0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KGlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmRvd25sb2FkVmFyaWF0aW9uKGAke2Fzc2V0UGF0aC5yZXBsYWNlKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sLycsICcnKX12YXJpYXRpb24vJHtmaWxlTmFtZX1gKTtcclxuICAgICAgICB0aGlzLk1hdGVyaWFsQ2FjaGUuc2V0KGlkLCBmaWxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0VmFyaWF0aW9uU2V0dGluZ3NGcm9tRmlsZShpZCwgZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc3QgbXV0ZSA9IGVycjtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgc3RhdGljIEdldE1hdGVyaWFsRnJvbU5hbWUodmFyaWF0aW9uRm9sZGVyOiBzdHJpbmcsIG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgLy8gICAgIGlmICghbWF0ZXJpYWwpIHtcclxuICAvLyAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKG1hdGVyaWFsLm5hbWUpKSB7XHJcbiAgLy8gICAgICAgcmVzb2x2ZSh0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KG1hdGVyaWFsLm5hbWUpLmNsb25lKCkpO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIFZhcmlhdGlvblV0aWxzLkxvYWRWYXJpYXRpb24odmFyaWF0aW9uRm9sZGVyLCBtYXRlcmlhbC5uYW1lLCBmYWxzZSkudGhlbigoc2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAvLyAgICAgICAgICAgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChzZXR0aW5ncykudGhlbigobWF0ZXJpYWxPYmo6IE1hdGVyaWFsKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQYXJhbXM6IE1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHt9O1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm5hbWUgPSBtYXRlcmlhbC5uYW1lO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1hcCA9IG1hdGVyaWFsT2JqLnRleHR1cmU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubm9ybWFsTWFwID0gbWF0ZXJpYWxPYmoubm9ybWFsO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLmFvTWFwID0gbWF0ZXJpYWxPYmouYW87XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzTWFwID0gbWF0ZXJpYWxPYmoucm91Z2huZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzc01hcCA9IG1hdGVyaWFsT2JqLm1ldGFsbmVzcztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3MgPSAxO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcGJyTWF0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbChtYXRlcmlhbFBhcmFtcyk7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChtYXRlcmlhbC5uYW1lLCBwYnJNYXQpO1xyXG4gIC8vICAgICAgICAgICAgIHJlc29sdmUocGJyTWF0LmNsb25lKCkpO1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJlc29sdmUobWF0ZXJpYWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIEdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQ6IHN0cmluZywgY29tcHJlc3NlZEZpbGU6IGFueSk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghY29tcHJlc3NlZEZpbGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6aXBDb250ZW50ID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0WmlwQ29udGVudChjb21wcmVzc2VkRmlsZSk7XHJcbiAgICBjb25zdCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgIGxldCBpbmRleDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmlkID0gaWQ7XHJcblxyXG4gICAgaWYgKHppcENvbnRlbnQpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4RmlsZTogc3RyaW5nID0gYXdhaXQgemlwQ29udGVudC5maWxlc1snaW5kZXguanNvbiddLmFzeW5jKCdzdHJpbmcnKTtcclxuICAgICAgICBpbmRleCA9IEpTT04ucGFyc2UoaW5kZXhGaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleCwgdmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IFZhcmlhdGlvblV0aWxzLkNyZWF0ZVNldHRpbmdzQmFzZWRPbkZpbGVOYW1lKHZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhcmlhdGlvblNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXg6IGFueSwgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpbmRleC5ub3JtYWxGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5ub3JtYWxGaWxlXSwgaW5kZXgubm9ybWFsRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gaW5kZXgubm9ybWFsRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaWZmdXNlRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmRpZmZ1c2VGaWxlXSwgaW5kZXguZGlmZnVzZUZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBpbmRleC5kaWZmdXNlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5vcm1GaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybSA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5vcm1GaWxlXSwgaW5kZXgub3JtRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybUZpbGVuYW1lID0gaW5kZXgub3JtRmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleC5hb0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hbyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5hb0ZpbGVdLCBpbmRleC5hb0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBpbmRleC5hb0ZpbGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4Lm1ldGFsbmVzc0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXgubWV0YWxuZXNzRmlsZV0sIGluZGV4Lm1ldGFsbmVzc0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gaW5kZXgubWV0YWxuZXNzRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgucm91Z2huZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnJvdWdobmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5yb3VnaG5lc3NGaWxlXSwgaW5kZXgucm91Z2huZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBpbmRleC5yb3VnaG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZGlzcGxhY2VtZW50RmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlzcGxhY2VtZW50RmlsZV0sIGluZGV4LmRpc3BsYWNlbWVudEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGluZGV4LmRpc3BsYWNlbWVudEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW1pc3NpdmVGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmVtaXNzaXZlRmlsZV0sIGluZGV4LmVtaXNzaXZlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBpbmRleC5lbWlzc2l2ZUZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW52TWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW52TWFwRmlsZV0sIGluZGV4LmVudk1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXBGaWxlbmFtZSA9IGluZGV4LmVudk1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncyA9XHJcbiAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzWydyZXBlYXQuanNvbiddLCAncmVwZWF0Lmpzb24nLCBmYWxzZSkgfHwge307XHJcbiAgICBPYmplY3QuYXNzaWduKHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLCBpbmRleC5yZXBlYXQpO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MubWV0YWxuZXNzID0gaW5kZXgubWV0YWxuZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Mucm91Z2huZXNzID0gaW5kZXgucm91Z2huZXNzO1xyXG4gICAgaWYgKGluZGV4LnNoZWVuQ29sb3IpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Muc2hlZW5Db2xvciA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5zaGVlbkNvbG9yLnIsIGluZGV4LnNoZWVuQ29sb3IuZywgaW5kZXguc2hlZW5Db2xvci5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcCA9IGluZGV4LmVudk1hcDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcEludGVuc2l0eSA9IGluZGV4LmVudk1hcEludGVuc2l0eTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnRyYW5zcGFyZW50ID0gaW5kZXgudHJhbnNwYXJlbnQ7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5vcGFjaXR5ID0gaW5kZXgub3BhY2l0eTtcclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVtaXNzaXZlVmFsdWUgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguZW1pc3NpdmVWYWx1ZS5yLCBpbmRleC5lbWlzc2l2ZVZhbHVlLmcsIGluZGV4LmVtaXNzaXZlVmFsdWUuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5lbWlzc2l2ZUludGVuc2l0eSA9IGluZGV4LmVtaXNzaXZlSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MucmVmbGVjdGl2aXR5ID0gaW5kZXgucmVmbGVjdGl2aXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MuZGlzcGxhY2VtZW50VmFsdWUgPSBpbmRleC5kaXNwbGFjZW1lbnRWYWx1ZTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnNpZGUgPSBpbmRleC5zaWRlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNwYXJlbmN5ID0gaW5kZXgudHJhbnNwYXJlbmN5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNtaXNzaW9uID0gaW5kZXgudHJhbnNtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGFsbExvYWRlZDogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz5bXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBpbiB6aXBDb250ZW50LmZpbGVzKSB7XHJcbiAgICAgIGlmICh6aXBDb250ZW50LmZpbGVzLmhhc093blByb3BlcnR5KGZpbGVOYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdO1xyXG4gICAgICAgIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdub3JtYWwnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG5vcm1hbEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWwgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bm9ybWFsRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWxGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignYW8nKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGFvRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2FvRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hb0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtZXRhbG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG1ldGFsbmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bWV0YWxuZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigncm91Z2huZXNzJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChyb3VnaG5lc3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke3JvdWdobmVzc0ZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2RpZmZ1c2UnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGRpZmZ1c2VGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaWZmdXNlRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Rpc3BsYWNlbWVudCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlzcGxhY2VtZW50RmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaXNwbGFjZW1lbnRGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdlbWlzc2l2ZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW1pc3NpdmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7ZW1pc3NpdmVGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Vudk1hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW52TWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbnZNYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpwJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHRleHR1cmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyB0ZXh0dXJlRmlsZTtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZUZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpzb24nKSA+IC0xKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnc3RyaW5nJykudGhlbigoc2V0dGluZ3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3NGaWxlT2JqID0gSlNPTi5wYXJzZShzZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzZXR0aW5nc0ZpbGVPYmopIHtcclxuICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NGaWxlT2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzW2tleV0gPSBzZXR0aW5nc0ZpbGVPYmpba2V5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbExvYWRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQU8sT0FBaUIsRUFBRSxNQUFnQixFQUFFLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO2dCQUNELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxNQUFNLEVBQUUsR0FBVyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUk7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLFNBQVMsSUFBSSxHQUFHLENBQUM7cUJBQ2xCO29CQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7d0JBQy9DLE9BQU8sQ0FBQyxLQUFL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O1FBQ0gsQ0FBQztLQUFBOztBQWhSYyw0QkFBYSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSBcInRocmVlXCI7XHJcbmltcG9ydCB7VmFyaWF0aW9uU2V0dGluZ3N9IGZyb20gXCIuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3NcIjtcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSlNaaXAgZnJvbSBcImpzemlwXCI7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgVmFyaWF0aW9uVXRpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIE1hdGVyaWFsQ2FjaGU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBMb2FkVmFyaWF0aW9uKGFzc2V0UGF0aDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XHJcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZU5hbWUuaW5kZXhPZignaW9uZTNkJykgPCAwKSB7XHJcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5pb25lM2QnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuaW9uZTNkJykpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmICghYXNzZXRQYXRoLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgIGFzc2V0UGF0aCArPSAnLyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdkb3dubG9hZFZhcmlhdGlvbicpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdkb3dubG9hZFZhcmlhdGlvbiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgICByZWplY3QoJ2Rvd25sb2FkVmFyaWF0aW9uIG5vdCBkZWZpbmVkIGluIHdpbmRvdyBnbG9iYWwnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbGU7XHJcbiAgICAgICAgaWYgKHRoaXMuTWF0ZXJpYWxDYWNoZS5oYXMoaWQpKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHRoaXMuTWF0ZXJpYWxDYWNoZS5nZXQoaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZSA9IGF3YWl0ICh3aW5kb3cgYXMgYW55KS5kb3dubG9hZFZhcmlhdGlvbihgJHthc3NldFBhdGgucmVwbGFjZSgnaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC8nLCAnJyl9dmFyaWF0aW9uLyR7ZmlsZU5hbWV9YCk7XHJcbiAgICAgICAgICBjb25zdCBzZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5HZXRWYXJpYXRpb25TZXR0aW5nc0Zyb21GaWxlKGlkLCBmaWxlKTtcclxuICAgICAgICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5zZXQoaWQsIHNldHRpbmdzKTtcclxuICAgICAgICAgIHJlc29sdmUoc2V0dGluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc3QgbXV0ZSA9IGVycjtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgc3RhdGljIEdldE1hdGVyaWFsRnJvbU5hbWUodmFyaWF0aW9uRm9sZGVyOiBzdHJpbmcsIG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgLy8gICAgIGlmICghbWF0ZXJpYWwpIHtcclxuICAvLyAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKG1hdGVyaWFsLm5hbWUpKSB7XHJcbiAgLy8gICAgICAgcmVzb2x2ZSh0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KG1hdGVyaWFsLm5hbWUpLmNsb25lKCkpO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIFZhcmlhdGlvblV0aWxzLkxvYWRWYXJpYXRpb24odmFyaWF0aW9uRm9sZGVyLCBtYXRlcmlhbC5uYW1lLCBmYWxzZSkudGhlbigoc2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAvLyAgICAgICAgICAgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChzZXR0aW5ncykudGhlbigobWF0ZXJpYWxPYmo6IE1hdGVyaWFsKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQYXJhbXM6IE1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHt9O1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm5hbWUgPSBtYXRlcmlhbC5uYW1lO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1hcCA9IG1hdGVyaWFsT2JqLnRleHR1cmU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubm9ybWFsTWFwID0gbWF0ZXJpYWxPYmoubm9ybWFsO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLmFvTWFwID0gbWF0ZXJpYWxPYmouYW87XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzTWFwID0gbWF0ZXJpYWxPYmoucm91Z2huZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzc01hcCA9IG1hdGVyaWFsT2JqLm1ldGFsbmVzcztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3MgPSAxO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcGJyTWF0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbChtYXRlcmlhbFBhcmFtcyk7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChtYXRlcmlhbC5uYW1lLCBwYnJNYXQpO1xyXG4gIC8vICAgICAgICAgICAgIHJlc29sdmUocGJyTWF0LmNsb25lKCkpO1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJlc29sdmUobWF0ZXJpYWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIEdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQ6IHN0cmluZywgY29tcHJlc3NlZEZpbGU6IGFueSk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghY29tcHJlc3NlZEZpbGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6aXBDb250ZW50ID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0WmlwQ29udGVudChjb21wcmVzc2VkRmlsZSk7XHJcbiAgICBjb25zdCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgIGxldCBpbmRleDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmlkID0gaWQ7XHJcblxyXG4gICAgaWYgKHppcENvbnRlbnQpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4RmlsZTogc3RyaW5nID0gYXdhaXQgemlwQ29udGVudC5maWxlc1snaW5kZXguanNvbiddLmFzeW5jKCdzdHJpbmcnKTtcclxuICAgICAgICBpbmRleCA9IEpTT04ucGFyc2UoaW5kZXhGaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleCwgdmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IFZhcmlhdGlvblV0aWxzLkNyZWF0ZVNldHRpbmdzQmFzZWRPbkZpbGVOYW1lKHZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhcmlhdGlvblNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXg6IGFueSwgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpbmRleC5ub3JtYWxGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5ub3JtYWxGaWxlXSwgaW5kZXgubm9ybWFsRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gaW5kZXgubm9ybWFsRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaWZmdXNlRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmRpZmZ1c2VGaWxlXSwgaW5kZXguZGlmZnVzZUZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBpbmRleC5kaWZmdXNlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5vcm1GaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybSA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5vcm1GaWxlXSwgaW5kZXgub3JtRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybUZpbGVuYW1lID0gaW5kZXgub3JtRmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleC5hb0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hbyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5hb0ZpbGVdLCBpbmRleC5hb0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBpbmRleC5hb0ZpbGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4Lm1ldGFsbmVzc0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXgubWV0YWxuZXNzRmlsZV0sIGluZGV4Lm1ldGFsbmVzc0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gaW5kZXgubWV0YWxuZXNzRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgucm91Z2huZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnJvdWdobmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5yb3VnaG5lc3NGaWxlXSwgaW5kZXgucm91Z2huZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBpbmRleC5yb3VnaG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZGlzcGxhY2VtZW50RmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlzcGxhY2VtZW50RmlsZV0sIGluZGV4LmRpc3BsYWNlbWVudEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGluZGV4LmRpc3BsYWNlbWVudEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW1pc3NpdmVGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmVtaXNzaXZlRmlsZV0sIGluZGV4LmVtaXNzaXZlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBpbmRleC5lbWlzc2l2ZUZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW52TWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW52TWFwRmlsZV0sIGluZGV4LmVudk1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXBGaWxlbmFtZSA9IGluZGV4LmVudk1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncyA9XHJcbiAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzWydyZXBlYXQuanNvbiddLCAncmVwZWF0Lmpzb24nLCBmYWxzZSkgfHwge307XHJcbiAgICBPYmplY3QuYXNzaWduKHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLCBpbmRleC5yZXBlYXQpO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MubWV0YWxuZXNzID0gaW5kZXgubWV0YWxuZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Mucm91Z2huZXNzID0gaW5kZXgucm91Z2huZXNzO1xyXG4gICAgaWYgKGluZGV4LnNoZWVuQ29sb3IpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3Muc2hlZW5Db2xvciA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5zaGVlbkNvbG9yLnIsIGluZGV4LnNoZWVuQ29sb3IuZywgaW5kZXguc2hlZW5Db2xvci5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcCA9IGluZGV4LmVudk1hcDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVudk1hcEludGVuc2l0eSA9IGluZGV4LmVudk1hcEludGVuc2l0eTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnRyYW5zcGFyZW50ID0gaW5kZXgudHJhbnNwYXJlbnQ7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5vcGFjaXR5ID0gaW5kZXgub3BhY2l0eTtcclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLmVtaXNzaXZlVmFsdWUgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguZW1pc3NpdmVWYWx1ZS5yLCBpbmRleC5lbWlzc2l2ZVZhbHVlLmcsIGluZGV4LmVtaXNzaXZlVmFsdWUuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5lbWlzc2l2ZUludGVuc2l0eSA9IGluZGV4LmVtaXNzaXZlSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MucmVmbGVjdGl2aXR5ID0gaW5kZXgucmVmbGVjdGl2aXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MuZGlzcGxhY2VtZW50VmFsdWUgPSBpbmRleC5kaXNwbGFjZW1lbnRWYWx1ZTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzLnNpZGUgPSBpbmRleC5zaWRlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNwYXJlbmN5ID0gaW5kZXgudHJhbnNwYXJlbmN5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MudHJhbnNtaXNzaW9uID0gaW5kZXgudHJhbnNtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGFsbExvYWRlZDogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz5bXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBpbiB6aXBDb250ZW50LmZpbGVzKSB7XHJcbiAgICAgIGlmICh6aXBDb250ZW50LmZpbGVzLmhhc093blByb3BlcnR5KGZpbGVOYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdO1xyXG4gICAgICAgIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdub3JtYWwnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG5vcm1hbEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWwgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bm9ybWFsRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWxGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignYW8nKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGFvRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2FvRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hb0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtZXRhbG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG1ldGFsbmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bWV0YWxuZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigncm91Z2huZXNzJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChyb3VnaG5lc3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke3JvdWdobmVzc0ZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2RpZmZ1c2UnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGRpZmZ1c2VGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaWZmdXNlRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Rpc3BsYWNlbWVudCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlzcGxhY2VtZW50RmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaXNwbGFjZW1lbnRGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdlbWlzc2l2ZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW1pc3NpdmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7ZW1pc3NpdmVGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Vudk1hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW52TWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbnZNYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpwJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHRleHR1cmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyB0ZXh0dXJlRmlsZTtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZUZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpzb24nKSA+IC0xKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnc3RyaW5nJykudGhlbigoc2V0dGluZ3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3NGaWxlT2JqID0gSlNPTi5wYXJzZShzZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzZXR0aW5nc0ZpbGVPYmopIHtcclxuICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NGaWxlT2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzW2tleV0gPSBzZXR0aW5nc0ZpbGVPYmpba2V5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbExvYWRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -718,35 +718,38 @@ class VariationUtils {
|
|
|
718
718
|
}
|
|
719
719
|
static LoadVariation(assetPath, fileName) {
|
|
720
720
|
return __awaiter(this, void 0, void 0, function* () {
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
if (fileName.indexOf('ione3d') < 0) {
|
|
725
|
-
fileName = fileName.concat('.ione3d');
|
|
726
|
-
}
|
|
727
|
-
const id = fileName.substr(0, fileName.lastIndexOf('.ione3d'));
|
|
728
|
-
try {
|
|
729
|
-
if (!assetPath.endsWith('/')) {
|
|
730
|
-
assetPath += '/';
|
|
721
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
722
|
+
if (!fileName) {
|
|
723
|
+
resolve(null);
|
|
731
724
|
}
|
|
732
|
-
if (
|
|
733
|
-
|
|
734
|
-
return null;
|
|
725
|
+
if (fileName.indexOf('ione3d') < 0) {
|
|
726
|
+
fileName = fileName.concat('.ione3d');
|
|
735
727
|
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
728
|
+
const id = fileName.substr(0, fileName.lastIndexOf('.ione3d'));
|
|
729
|
+
try {
|
|
730
|
+
if (!assetPath.endsWith('/')) {
|
|
731
|
+
assetPath += '/';
|
|
732
|
+
}
|
|
733
|
+
if (!window.hasOwnProperty('downloadVariation')) {
|
|
734
|
+
console.error('downloadVariation not defined in window global');
|
|
735
|
+
reject('downloadVariation not defined in window global');
|
|
736
|
+
}
|
|
737
|
+
let file;
|
|
738
|
+
if (this.MaterialCache.has(id)) {
|
|
739
|
+
resolve(this.MaterialCache.get(id));
|
|
740
|
+
}
|
|
741
|
+
else {
|
|
742
|
+
file = yield window.downloadVariation(`${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`);
|
|
743
|
+
const settings = yield VariationUtils.GetVariationSettingsFromFile(id, file);
|
|
744
|
+
this.MaterialCache.set(id, settings);
|
|
745
|
+
resolve(settings);
|
|
746
|
+
}
|
|
739
747
|
}
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
748
|
+
catch (err) {
|
|
749
|
+
const mute = err;
|
|
750
|
+
reject(err);
|
|
743
751
|
}
|
|
744
|
-
|
|
745
|
-
}
|
|
746
|
-
catch (err) {
|
|
747
|
-
const mute = err;
|
|
748
|
-
return null;
|
|
749
|
-
}
|
|
752
|
+
}));
|
|
750
753
|
});
|
|
751
754
|
}
|
|
752
755
|
// public static GetMaterialFromName(variationFolder: string, material: any): Promise<MeshStandardMaterial> {
|