@eo-sdk/client 8.16.4 → 8.16.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/eo-sdk-client.umd.js +26 -15
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/form-elements/codesystem/codesystem.component.js +8 -2
- package/esm2015/app/eo-framework/form-elements/number-range/number-range.component.js +2 -2
- package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +7 -2
- package/esm2015/app/eo-framework/media/media.component.js +8 -8
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +4 -4
- package/fesm2015/eo-sdk-client.js +26 -15
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -296,13 +296,13 @@ export class MediaComponent extends UnsubscribeOnDestroy {
|
|
|
296
296
|
// remove all special characters
|
|
297
297
|
term = (term || '').replace(/[\"|\*]/g, '').trim();
|
|
298
298
|
if (term && ((_b = (_a = win === null || win === void 0 ? void 0 : win.PDFViewerApplication) === null || _a === void 0 ? void 0 : _a.appConfig) === null || _b === void 0 ? void 0 : _b.findBar)) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
299
|
+
win.PDFViewerApplication.findController.executeCommand('find', {
|
|
300
|
+
caseSensitive: false,
|
|
301
|
+
findPrevious: undefined,
|
|
302
|
+
highlightAll: true,
|
|
303
|
+
phraseSearch: true,
|
|
304
|
+
query: term
|
|
305
|
+
});
|
|
306
306
|
win.PDFViewerApplication.appConfig.findBar.findField.value = term;
|
|
307
307
|
win.PDFViewerApplication.appConfig.findBar.highlightAllCheckbox.checked = true;
|
|
308
308
|
win.PDFViewerApplication.appConfig.findBar.caseSensitiveCheckbox.checked = false;
|
|
@@ -382,4 +382,4 @@ MediaComponent.propDecorators = {
|
|
|
382
382
|
previewFile: [{ type: Input }],
|
|
383
383
|
dmsObject: [{ type: Input }]
|
|
384
384
|
};
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFDTCxNQUFNLEVBRU4sYUFBYSxFQUNiLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsY0FBYyxFQUNmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBZSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDekUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUF5Qi9FLE1BQU0sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBNkl0RCxZQUFtQixTQUEyQixFQUNwQyxHQUFlLEVBQ2YsUUFBbUIsRUFDbkIsTUFBcUIsRUFDckIsT0FBZSxFQUNmLE1BQWMsRUFDZCxjQUE4QixFQUM5QixPQUF1QjtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQVJTLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ3BDLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FB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O2FBQ25DOzs7WUFsQ0MsZ0JBQWdCO1lBR2hCLFVBQVU7WUFSMEMsU0FBUztZQUk3RCxhQUFhO1lBSndFLE1BQU07WUFFM0YsTUFBTTtZQUhBLGNBQWM7WUFVcEIsY0FBYzs7OzZCQThFYixLQUFLOzZCQU1MLEtBQUs7eUJBR0wsS0FBSzttQkFDTCxXQUFXLFNBQUMsWUFBWTt5QkFFeEIsU0FBUyxTQUFDLFlBQVk7cUJBQ3RCLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDOzBCQUNsQyxTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzs2QkFFdkMsS0FBSyxTQUFDLGFBQWE7NEJBTW5CLEtBQUssU0FBQyxZQUFZO3VCQUtsQixLQUFLO3lCQVVMLEtBQUs7MEJBVUwsS0FBSzt3QkFjTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWcsXG4gIE9iamVjdFR5cGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRG1zT2JqZWN0QXR0YWNobWVudCxcbiAgRG1zU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2Vcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCBmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWwsIHRha2VXaGlsZSwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGaWxlU2l6ZVBpcGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2ZpbGVzaXplLnBpcGUnO1xuaW1wb3J0IHtDb250ZW50UHJldmlld1NlcnZpY2V9IGZyb20gJy4vY29udGVudC1wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlckNvbmZpZyB7XG4gIG1pbWVUeXBlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmlld2VyOiBzdHJpbmc7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgdHlwZT86ICdjb21wYXJlJyB8ICdleHRlbmQnIHwgJ2Vycm9yJyB8ICdkZWZhdWx0Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0ZpbGUge1xuICB1cmk6IHN0cmluZztcbiAgdXJpUGRmOiBzdHJpbmc7XG4gIG1pbWV0eXBlOiBzdHJpbmc7XG4gIG1pbWVncm91cDogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZU5hbWU/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW1lZGlhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYUNvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBzdGF0aWMgVklERU9fVklFV0VSID0gJ2Fzc2V0cy9fZGVmYXVsdC9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9JztcbiAgc3RhdGljIFBERl9WSUVXRVIgPSAnYXNzZXRzL19kZWZhdWx0L2FwaS9wZGYvd2ViL3ZpZXdlci5odG1sP2ZpbGU9JnBhdGg9JHtwYXRofSZwYXRoUGRmPSR7cGF0aFBkZn0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZjc3M9JTIzdG9vbGJhclZpZXdlclJpZ2h0JTIwJTIzcHJpbnQlN0JkaXNwbGF5JTNBYmxvY2shaW1wb3J0YW50JTNCJTdEJztcblxuICBwcml2YXRlIFNJWkVfTElNSVQgPSAxMDI0ICogMTAyNCAqIDEwOyAvLyAxME1CXG4gIHByaXZhdGUgcGRmanM6IGFueTtcbiAgbGF0ZXN0VXJpOiBzdHJpbmc7XG4gIHNsaWRlVXJpOiBzdHJpbmc7XG4gIHZpZXdlcjogYW55O1xuICBkbXNPYmplY3RUaXRsZTogc3RyaW5nO1xuICBwcml2YXRlIF9wcmV2aWV3VXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Rtc09iamVjdDogRG1zT2JqZWN0O1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZTtcbiAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gIGF0dGFjaG1lbnRzOiBEbXNPYmplY3RBdHRhY2htZW50W10gPSBbXTtcbiAgaXNNZWRpYSA9IGZhbHNlO1xuICBpc09jdGV0U3RyZWFtID0gZmFsc2U7XG4gIGlzTm90U3VwcG9ydGVkID0gZmFsc2U7XG4gIGlzTGFyZ2UgPSBmYWxzZTtcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgYXR0YWNobWVudHNMb2FkaW5nOiBTdWJzY3JpcHRpb247XG4gIGF0dGFjaG1lbnRzU2hvd246IGJvb2xlYW47XG4gIHNlYXJjaFRlcm06IHN0cmluZztcbiAgbWVkaWFUeXBlOiBPYmplY3RUeXBlO1xuICBjdXN0b21Db25maWc6IGFueVtdID0gW107XG5cbiAgZGVmYXVsdFZpZXdlcnMgPSBbXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJhcHBsaWNhdGlvbi9qc29uXCIsIFwidGV4dC9qc29uXCIsIFwidGV4dC9wbGFpblwiLCBcInRleHQveG1sXCIsIFwidGV4dC9qYXZhXCIsIFwidGV4dC9qYXZhc2NyaXB0XCIsIFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiLCBcInRleHQvaHRtbFwiLCBcInRleHQvbWFya2Rvd25cIiwgXCJ0ZXh0L3gtd2ViLW1hcmtkb3duXCIsIFwidGV4dC94LW1hcmtkb3duXCJdLFxuICAgICAgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJhdWRpby9tcDNcIiwgXCJhdWRpby93ZWJtXCIsIFwiYXVkaW8vb2dnXCIsIFwiYXVkaW8vbXBlZ1wiLCBcInZpZGVvL21wNFwiLCBcInZpZGVvL3dlYm1cIiwgXCJ2aWRlby9vZ2dcIiwgXCJhcHBsaWNhdGlvbi9vZ2dcIl0sXG4gICAgICBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2FwbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9zdmcreG1sXCIsIFwiaW1hZ2Uvd2VicFwiXSxcbiAgICAgIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9pbWcvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcInZpZXdlclwiOiBcIigpID0+IHBhcmFtZXRlcnMuZGVmYXVsdFZpZXdlciArICcjJ1wifSxcbiAgICB7XCJlcnJvclwiOiB0cnVlLCBcInR5cGVcIjogXCJlcnJvclwiLCBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvZXJyb3IvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJ9XG4gIF07XG5cbiAgaXNVbmRvY2tlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKSB1bmRvY2tEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGdldCB1bmRvY2tXaW4oKTogV2luZG93IHtcbiAgICByZXR1cm4gQ29udGVudFByZXZpZXdTZXJ2aWNlLmdldFVuZG9ja1dpbigpO1xuICB9XG5cbiAgQElucHV0KCkgZW5hYmxlQ2xvc2VCdG4gPSBmYWxzZTtcbiAgLy8gYnkgZGVmYXVsdCwgdGhlIHZpZXdlciBpZ25vcmVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0LiBUaGlzIHdpbGwgYWx3YXlzIHNob3cgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAvLyBXZSBuZWVkIHRoaXMgdG8gYmUgYWJsZSB0byByZWZyZXNoIHRoZSB2aWV3ZXIgYmVjYXVzZSBvdGhlcndpc2UgcGRmanMgd29ya2VyIHdpbGwgZmFpbC5cbiAgQElucHV0KCkgdXNlVmVyc2lvbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9wZW4nKSBvcGVuO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvZGVzeXN0ZW0nKSBjb2Rlc3lzdGVtO1xuICBAVmlld0NoaWxkKCdpZnJhbWUnLCB7c3RhdGljOiB0cnVlfSkgaWZyYW1lO1xuICBAVmlld0NoaWxkKCdpZnJhbWVNZWRpYScsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWVNZWRpYTtcblxuICBASW5wdXQoJ2F0dGFjaG1lbnRzJylcbiAgc2V0IHNldEF0dGFjaG1lbnRzKGF0dGFjaG1lbnRzKSB7XG4gICAgdGhpcy5hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzO1xuICAgIHRoaXMuYXR0YWNobWVudHNTaG93biA9IGZhbHNlO1xuICB9XG5cbiAgQElucHV0KCdzZWFyY2hUZXJtJylcbiAgc2V0IHNldFNlYXJjaFRlcm0oc2VhcmNoVGVybSkge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IHNlYXJjaFRlcm0gfHwgJyc7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9ICEhZGlzYWJsZWQ7XG4gICAgdGhpcy50b29nbGVWaWV3ZXIoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcHJldmlld1VyaSh1cmk6IHN0cmluZykge1xuICAgIHRoaXMuX3ByZXZpZXdVcmkgPSB1cmk7XG4gICAgdGhpcy50b29nbGVWaWV3ZXIoKTtcbiAgfVxuXG4gIGdldCBwcmV2aWV3VXJpKCkge1xuICAgIHJldHVybiB0aGlzLl9wcmV2aWV3VXJpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHByZXZpZXdGaWxlKGZpbGU6IFByZXZpZXdGaWxlKSB7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHRoaXMudmlld2VyID0gdGhpcy5nZXRWaWV3ZXIoZmlsZSk7XG4gICAgICB0aGlzLmlzTWVkaWEgPSB0aGlzLnZpZXdlci52aWV3ZXIgIT09IE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVI7XG4gICAgICB0aGlzLmlzT2N0ZXRTdHJlYW0gPSAhIWZpbGUubWltZWdyb3VwPy5tYXRjaCgvb2N0ZXQtc3RyZWFtLyk7XG4gICAgICB0aGlzLmlzTGFyZ2UgPSBmaWxlLnNpemUgJiYgZmlsZS5zaXplID4gdGhpcy5TSVpFX0xJTUlUO1xuICAgICAgdGhpcy5tZWRpYVR5cGUgPSBmaWxlLm1lZGlhVHlwZU5hbWUgJiYgdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShmaWxlLm1lZGlhVHlwZU5hbWUpO1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gdGhpcy5pc01lZGlhID8gdGhpcy52aWV3ZXIucHJldmlld1VyaSA6IGZpbGUudXJpUGRmO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSAnJztcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZG1zT2JqZWN0KGl0ZW06IERtc09iamVjdCkge1xuICAgIHRoaXMuX2Rtc09iamVjdCA9IGl0ZW07XG4gICAgdGhpcy5kbXNPYmplY3RUaXRsZSA9IGl0ZW0udGl0bGUgfHwgJy4uLic7XG5cbiAgICB0aGlzLnNldEF0dGFjaG1lbnRzID0gW107XG4gICAgaWYgKHRoaXMuYXR0YWNobWVudHNMb2FkaW5nKSB7XG4gICAgICAvLyBjYW5jZWwgYW55IHBlbmRpbmcgcmVxdWVzdHNcbiAgICAgIHRoaXMuYXR0YWNobWVudHNMb2FkaW5nLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmIChpdGVtLmNvbnRlbnQgJiYgaXRlbS5jb250ZW50LmNvbnRlbnRzICYmIGl0ZW0uY29udGVudC5jb250ZW50cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtLmNvbnRlbnQuY29udGVudHNbMF0gfHwge307XG5cbiAgICAgIHRoaXMucHJldmlld0ZpbGUgPSB7XG4gICAgICAgIHVyaTogdGhpcy5kbXMuZ2V0UHJldmlldyhpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsKSxcbiAgICAgICAgdXJpUGRmOiB0aGlzLmRtcy5nZXRQcmV2aWV3KGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsICdQREYnKSxcbiAgICAgICAgbWltZXR5cGU6IGZpbGUubWltZXR5cGUsXG4gICAgICAgIG1pbWVncm91cDogZmlsZS5taW1lZ3JvdXAsXG4gICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxuICAgICAgICBtZWRpYVR5cGVOYW1lOiBpdGVtLnR5cGVOYW1lXG4gICAgICB9O1xuXG4gICAgICBpZiAoISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15tYWlsfG9jdGV0LXN0cmVhbS8pKSB7XG4gICAgICAgIHRoaXMuc2xpZGVVcmkgPSB0aGlzLmRtcy5nZXRTbGlkZShpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsLCAyNTYpO1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZyA9IHRoaXMuZG1zLmdldEF0dGFjaG1lbnRzKGl0ZW0pLnN1YnNjcmliZShhID0+IHRoaXMuc2V0QXR0YWNobWVudHMgPSBhKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSAnJztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZmlsZVNpemVQaXBlID0gbmV3IEZpbGVTaXplUGlwZSh0cmFuc2xhdGUpO1xuICAgIHRoaXMuU0laRV9MSU1JVCA9IHRoaXMuY29uZmlnLmdldFJhdygncHJldmlldy5maWxlU2l6ZUxpbWl0JykgfHwgdGhpcy5TSVpFX0xJTUlUO1xuICAgIHRoaXMuY3VzdG9tQ29uZmlnID0gKHRoaXMuY29uZmlnLmdldFJhdygncHJldmlldy52aWV3ZXJzJykgfHwgW10pLmNvbmNhdCh0aGlzLmRlZmF1bHRWaWV3ZXJzKTtcblxuICAgIHRoaXMucGx1Z2luc1NlcnZpY2UuYXBpLmNvbnRlbnQuY2F0Y2hFcnJvcigpLnN1YnNjcmliZSgoZXZ0OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtlcnIsIHdpbiwgcGFyYW1ldGVyc30gPSBldnQuZGF0YTtcbiAgICAgIGNvbnN0IHVyaSA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbih0aGlzLmN1c3RvbUNvbmZpZz8uZmluZCgodikgPT4gdi5lcnJvcik/LnZpZXdlciwgJ2FwaSwgZXJyLCB3aW4sIHBhcmFtZXRlcnMnLCBbXG4gICAgICAgIHRoaXMucGx1Z2luc1NlcnZpY2UuYXBpLFxuICAgICAgICBlcnIsXG4gICAgICAgIHdpbixcbiAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgXSk7XG5cbiAgICAgIHVyaSAmJiB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnJlc29sdmVVcmkodXJpLCBwYXJhbWV0ZXJzKSwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpZiAoQ29udGVudFByZXZpZXdTZXJ2aWNlLnVuZG9ja1dpbkFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLnVuZG9jayhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QXR0YWNobWVudChhdHRhY2htZW50PywgZm9yY2U/KSB7XG4gICAgY29uc3QgcHJldmlld1VyaSA9IGF0dGFjaG1lbnQgJiYgdGhpcy5pc01lZGlhID8gdGhpcy5nZXRWaWV3ZXIoe3VyaVBkZjogYXR0YWNobWVudD8ucHJldmlld1VyaX0gYXMgUHJldmlld0ZpbGUpLnByZXZpZXdVcmkgOiBhdHRhY2htZW50Py5wcmV2aWV3VXJpO1xuICAgIHRoaXMubG9hZERvY3VtZW50KHByZXZpZXdVcmkgfHwgdGhpcy5wcmV2aWV3VXJpLCBmb3JjZSk7XG4gIH1cblxuICBwdWJsaWMgdG9vZ2xlVmlld2VyKCkge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLmRpc2FibGVkICYmICEhdGhpcy5wcmV2aWV3VXJpO1xuICAgIHRoaXMudW5kb2NrRGlzYWJsZWQgPSB0aGlzLnVuZG9ja0Rpc2FibGVkID8gdHJ1ZSA6IHRoaXMucHJldmlld1VyaSA9PT0gJyc7XG4gICAgaWYgKHRoaXMudW5kb2NrRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuaXNVbmRvY2tlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuIHx8IHRoaXMuaXNVbmRvY2tlZCkge1xuICAgICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpLCB0aGlzLmlzVW5kb2NrZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKCkge1xuICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5QZGZWaWV3ZXIodXJpOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24ub3Blbih1cmkpLnRoZW4oKCkgPT4gKHRoaXMuaGFzRXJyb3IgPSBmYWxzZSkpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIHRoaXMuaGFzRXJyb3IgPSAhdGhpcy5pc09jdGV0U3RyZWFtO1xuICAgICAgdGhpcy5pc05vdFN1cHBvcnRlZCA9IHRoaXMuaXNPY3RldFN0cmVhbTtcbiAgICB9KTtcbiAgICAvLyB0aGlzLnNlYXJjaCgpO1xuICB9XG5cbiAgZ2V0Vmlld2VyKGZpbGU6IFByZXZpZXdGaWxlKTogYW55IHtcbiAgICBjb25zdCBpc1ZpZGVvID0gISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15hdWRpb3xedmlkZW8vKTtcbiAgICBjb25zdCBkZWZhdWx0Vmlld2VyID0gaXNWaWRlbyA/IE1lZGlhQ29tcG9uZW50LlZJREVPX1ZJRVdFUiA6IE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVI7XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGUucGF0aD8uaW5jbHVkZXMoJy4nKSA/IGZpbGUucGF0aC5zcGxpdCgnLicpLnBvcCgpIDogJyc7XG4gICAgY29uc3QgbWltZVR5cGUgPSBmaWxlLm1pbWV0eXBlO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY3VzdG9tQ29uZmlnLmZpbmQoKGM6IFZpZXdlckNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hNVCA9ICFjLm1pbWVUeXBlIHx8ICh0eXBlb2YgYy5taW1lVHlwZSA9PT0gJ3N0cmluZycgPyBbYy5taW1lVHlwZV0gOiBjLm1pbWVUeXBlKS5pbmNsdWRlcyhtaW1lVHlwZT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCBtYXRjaEZFID0gIWMuZmlsZUV4dGVuc2lvbiB8fCAodHlwZW9mIGMuZmlsZUV4dGVuc2lvbiA9PT0gJ3N0cmluZycgPyBbYy5maWxlRXh0ZW5zaW9uXSA6IGMuZmlsZUV4dGVuc2lvbikuaW5jbHVkZXMoKGZpbGVFeHRlbnNpb24pLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgcmV0dXJuIG1hdGNoTVQgJiYgbWF0Y2hGRSAmJiAoIWMudHlwZSB8fCBjLnR5cGUgPT09ICdkZWZhdWx0Jyk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgZmlsZSxcbiAgICAgIHBhdGg6IGxvY2F0aW9uLm9yaWdpbiArIGZpbGUudXJpLFxuICAgICAgcGF0aFBkZjogbG9jYXRpb24ub3JpZ2luICsgZmlsZS51cmlQZGYsXG4gICAgICB2aWV3ZXI6IGNvbmZpZz8udmlld2VyIHx8IGRlZmF1bHRWaWV3ZXIsXG4gICAgICBsb2FkOiBjb25maWc/LmxvYWQsXG4gICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgbWltZVR5cGUsXG4gICAgICB0aGVtZTogJycsXG4gICAgICBkZWZhdWx0Vmlld2VyLFxuICAgICAgcHJldmlld1VyaTogJydcbiAgICB9O1xuICAgIHBhcmFtZXRlcnMudmlld2VyID0gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHBhcmFtZXRlcnMudmlld2VyLCAnY29tcG9uZW50LCBkbXNPYmplY3QsIHBhcmFtZXRlcnMnLCBbdGhpcywgdGhpcy5fZG1zT2JqZWN0LCBwYXJhbWV0ZXJzXSkgfHwgZGVmYXVsdFZpZXdlcjtcblxuICAgIGNvbnN0IGV4dGVuZCA9IHRoaXMuY3VzdG9tQ29uZmlnLmZpbmQoKGMpID0+IGMudHlwZSA9PT0gJ2V4dGVuZCcpO1xuICAgIGlmIChleHRlbmQpIHBhcmFtZXRlcnMudmlld2VyID0gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKGV4dGVuZC52aWV3ZXIsICdjb21wb25lbnQsIGRtc09iamVjdCwgcGFyYW1ldGVycycsIFt0aGlzLCB0aGlzLl9kbXNPYmplY3QsIHBhcmFtZXRlcnNdKTtcblxuICAgIHBhcmFtZXRlcnMucHJldmlld1VyaSA9IHRoaXMucmVzb2x2ZVVyaShwYXJhbWV0ZXJzLnZpZXdlciwgcGFyYW1ldGVycyk7XG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVVcmkodmlld2VyOiBzdHJpbmcsIHBhcmFtZXRlcnM6IGFueSkge1xuICAgIHJldHVybiAodmlld2VyID8gZG9jdW1lbnQuYmFzZVVSSSA6ICcnKSArIHZpZXdlclxuICAgICAgLnJlcGxhY2UoJyR7b3JpZ2luYWxQYXRofScsIHBhcmFtZXRlcnMucGF0aClcbiAgICAgIC5yZXBsYWNlKCcke3BhdGh9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMucGF0aCkpXG4gICAgICAucmVwbGFjZSgnJHtwYXRoUGRmfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnBhdGhQZGYpKVxuICAgICAgLnJlcGxhY2UoJyR7ZmlsZUV4dGVuc2lvbn0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5maWxlRXh0ZW5zaW9uKSlcbiAgICAgIC5yZXBsYWNlKCcke21pbWVUeXBlfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLm1pbWVUeXBlKSlcbiAgICAgIC5yZXBsYWNlKCcke3RoZW1lfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnRoZW1lKSlcbiAgICAgIC5yZXBsYWNlKCcke2xhbmd9JywgQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcbiAgfVxuXG4gIHVuZG9jayhvcGVuID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLnVuZG9ja0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNVbmRvY2tlZCA9ICF0aGlzLmlzVW5kb2NrZWQ7XG4gICAgaWYgKCF0aGlzLmlzVW5kb2NrZWQpIHtcbiAgICAgIENvbnRlbnRQcmV2aWV3U2VydmljZS5jbG9zZVdpbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoXyA9PiB7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnVuZG9ja1dpbiAmJiAhQ29udGVudFByZXZpZXdTZXJ2aWNlLnVuZG9ja1dpbkFjdGl2ZSgpKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5pc1VuZG9ja2VkICYmIHRoaXMudW5kb2NrKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdiZWZvcmV1bmxvYWQnKVxuICAgICAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLmlzVW5kb2NrZWQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiBDb250ZW50UHJldmlld1NlcnZpY2UuY2xvc2VXaW4oKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbldpbmRvdyhzcmM6IHN0cmluZywgY2xlYW4gPSBmYWxzZSkge1xuICAgIENvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW4oc3JjKTtcbiAgICBpZiAoY2xlYW4pIHtcbiAgICAgIHdoaWxlICh0aGlzLnVuZG9ja1dpbi5kb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgdGhpcy51bmRvY2tXaW4uZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnVuZG9ja1dpbi5kb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXNyYyAmJiAhdGhpcy51bmRvY2tXaW4uZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI25vLWZpbGUnKSkge1xuICAgICAgdGhpcy51bmRvY2tXaW4uZG9jdW1lbnQud3JpdGUoXG4gICAgICAgIGA8ZGl2IGlkPVwibm8tZmlsZVwiIHN0eWxlPVwib3BhY2l0eTogMC4wNjsgZGlzcGxheTogZmxleDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMjhcIiBoZWlnaHQ9XCIxMjhcIiB2aWV3Qm94PVwiMCAwIDQ4IDQ4XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0yOSA0SDE0LjZjLS44IDAtMS41LjItMiAuNmwyNy4yIDI3LjJ2LTE3TDI5IDR6bS0uNyAxMS42VjcuOGw3LjggNy44aC03Ljh6TTQzLjQgNDAuOGwtMi41IDIuNS0zLjUtMy41Yy0uNC4xLS44LjItMS4yLjJIMTQuNmMtMlxuICAgICAgICAgIDAtMy42LTEuNi0zLjYtMy42VjEzLjVMNS45IDguNGwyLjUtMi41TDExIDguNGwyOC43IDI4LjcgMy4xIDMuMS42LjZ6XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2PmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbG9hZERvY3VtZW50KHVyaTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoZm9yY2UpIHtcbiAgICAgIHRoaXMuaXNMYXJnZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWZvcmNlICYmICh0aGlzLmRpc2FibGVkIHx8ICF1cmkgfHwgKHVyaSA9PT0gdGhpcy5sYXRlc3RVcmkgJiYgIXRoaXMuaGFzRXJyb3IpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmxhdGVzdFVyaSA9IHVyaSB8fCAnJztcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5pc05vdFN1cHBvcnRlZCA9IGZhbHNlO1xuXG5cblxuICAgIGlmICh0aGlzLmlzVW5kb2NrZWQpIHtcbiAgICAgIHRoaXMub3BlbldpbmRvdyh0aGlzLmxhdGVzdFVyaSk7XG4gICAgICBjb25zdCBvbmxvYWQgPSAoKSA9PiB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy52aWV3ZXI/LmxvYWQsICdpZnJhbWUsIGNvbXBvbmVudCcsIFt0aGlzLnVuZG9ja1dpbiwgdGhpc10pO1xuICAgICAgdGhpcy5pZnJhbWVJbml0KHRoaXMudW5kb2NrV2luLCB0aGlzLnZpZXdlcj8ubG9hZCAmJiBvbmxvYWQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTGFyZ2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc01lZGlhKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZU1lZGlhLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCB0aGlzLmxhdGVzdFVyaSk7XG4gICAgICBjb25zdCBvbmxvYWQgPSAoKSA9PiB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy52aWV3ZXI/LmxvYWQsICdpZnJhbWUsIGNvbXBvbmVudCcsIFt0aGlzLmlmcmFtZU1lZGlhLm5hdGl2ZUVsZW1lbnQsIHRoaXNdKTtcbiAgICAgIHRoaXMuaWZyYW1lSW5pdCh0aGlzLmlmcmFtZU1lZGlhLm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5wZGZqcykge1xuICAgICAgICB0aGlzLnBkZmpzID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5wZGZqcywgJ3NyYycsIE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVIucmVwbGFjZSgvXFw/LiovLCAnP2ZpbGU9JicpKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5wZGZqcywgJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucy5zZXQoJ3NpZGViYXJWaWV3T25Mb2FkJywgMCk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucy5zZXQoJ3ZpZXdPbkxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucy5zZXQoJ2xvY2FsZScsIENvbnRlbnRQcmV2aWV3U2VydmljZS5tYXBMYW5nKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LmRvY3VtZW50LndlYkwxMG4uc2V0TGFuZ3VhZ2UoQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcbiAgICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24uX2luaXRpYWxpemVMMTBuKCk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uT3B0aW9ucy5zZXQoJ3ZpZXdlckNzc1RoZW1lJywgMSk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLl9mb3JjZUNzc1RoZW1lKCk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy52aWV3ZXJDb250YWluZXJcbiAgICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCBlID0+IHdpbmRvdy5kb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBEcmFnRXZlbnQoJ2RyYWdlbnRlcicsIGUpKSk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy52aWV3ZXJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSk7XG5cbiAgICAgICAgICB0aGlzLm9wZW5QZGZWaWV3ZXIodGhpcy5sYXRlc3RVcmkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZGZqcy5jb250ZW50V2luZG93ICYmIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbikge1xuICAgICAgICB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24ucGRmU2lkZWJhci5jbG9zZSgpO1xuICAgICAgICB0aGlzLm9wZW5QZGZWaWV3ZXIodGhpcy5sYXRlc3RVcmkpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzZWFyY2ggaW5zaWRlIFBERi5KUyBiYXNlZCBvbiBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gdGVybSBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gd2luIGlmcmFtZSB3aW5kb3dcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoUERGKHRlcm0gPSAnJywgd2luOiBhbnkpIHtcbiAgICAvLyByZW1vdmUgYWxsIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgIHRlcm0gPSAodGVybSB8fCAnJykucmVwbGFjZSgvW1xcXCJ8XFwqXS9nLCAnJykudHJpbSgpO1xuICAgIGlmICh0ZXJtICYmIHdpbj8uUERGVmlld2VyQXBwbGljYXRpb24/LmFwcENvbmZpZz8uZmluZEJhcikge1xuICAgICAgLy8gd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmZpbmRDb250cm9sbGVyLmV4ZWN1dGVDb21tYW5kKCdmaW5kJywge1xuICAgICAgLy8gICBjYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgICAgIC8vICAgZmluZFByZXZpb3VzOiB1bmRlZmluZWQsXG4gICAgICAvLyAgIGhpZ2hsaWdodEFsbDogdHJ1ZSxcbiAgICAgIC8vICAgcGhyYXNlU2VhcmNoOiB0cnVlLFxuICAgICAgLy8gICBxdWVyeTogdGVybVxuICAgICAgLy8gfSk7XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuZmluZEZpZWxkLnZhbHVlID0gdGVybTtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5oaWdobGlnaHRBbGxDaGVja2JveC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5jYXNlU2Vuc2l0aXZlQ2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERyb3BFdmVudCh3aW46IGFueSkge1xuICAgIGlmICh0aGlzLmlmcmFtZT8uc3JjPy5zdGFydHNXaXRoKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pKSB7XG4gICAgICB3aW4/LmRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCkpO1xuICAgICAgLy8gZGlzcGFjaCBkcmFnICYgZHJvcCBldmVudHMgdG8gbWFpbiB3aW5kb3dcbiAgICAgIHdpbj8uZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChlKSA9PiB7XG4gICAgICAgIHdpbmRvdy5kb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBEcmFnRXZlbnQoJ2RyYWdlbnRlcicsIGUpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnbGVhdmUnLCBlKSksIDEwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmcmFtZUluaXQoaWZyYW1lID0gdGhpcy5pZnJhbWUsIG9ubG9hZD86IEZ1bmN0aW9uKSB7XG4gICAgaWYgKGlmcmFtZSkge1xuICAgICAgaWZyYW1lLl9pbml0IHx8IGZyb21FdmVudChpZnJhbWUsICdsb2FkJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdpbiA9IHRoaXMuc2V0QXBpKGlmcmFtZSk7XG4gICAgICAgICAgb25sb2FkICYmIG9ubG9hZCgpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFBERih0aGlzLnNlYXJjaFRlcm0sIHdpbik7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnREcm9wRXZlbnQod2luKTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9KTtcbiAgICAgIGlmcmFtZS5faW5pdCA9ICEhdGhpcy5zZXRBcGkoaWZyYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFwaShpZnJhbWU6IGFueSkge1xuICAgIC8vIHNldCBhcGkgdG8gaWZyYW1lIHdpbmRvd1xuICAgIGNvbnN0IHdpbiA9IGlmcmFtZT8uY29udGVudFdpbmRvdyB8fCBpZnJhbWU7XG4gICAgd2luWydhcGknXSA9IHdpbmRvd1snYXBpJ107XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHJldHVybiBDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luQWN0aXZlKCkgJiYgdGhpcy5vcGVuV2luZG93KCcnLCB0cnVlKTtcbiAgfVxuXG59XG4iXX0=
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFDTCxNQUFNLEVBRU4sYUFBYSxFQUNiLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsY0FBYyxFQUNmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBZSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDekUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUF5Qi9FLE1BQU0sT0FBTyxjQUFlLFNBQVEsb0JBQW9CO0lBNkl0RCxZQUFtQixTQUEyQixFQUNwQyxHQUFlLEVBQ2YsUUFBbUIsRUFDbkIsTUFBcUIsRUFDckIsT0FBZSxFQUNmLE1BQWMsRUFDZCxjQUE4QixFQUM5QixPQUF1QjtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQVJTLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ3BDLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FB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TyxDQUFDOztZQVQ1UCxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLCtwRUFBcUM7Z0JBRXJDLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDOzthQUNuQzs7O1lBbENDLGdCQUFnQjtZQUdoQixVQUFVO1lBUjBDLFNBQVM7WUFJN0QsYUFBYTtZQUp3RSxNQUFNO1lBRTNGLE1BQU07WUFIQSxjQUFjO1lBVXBCLGNBQWM7Ozs2QkE4RWIsS0FBSzs2QkFNTCxLQUFLO3lCQUdMLEtBQUs7bUJBQ0wsV0FBVyxTQUFDLFlBQVk7eUJBRXhCLFNBQVMsU0FBQyxZQUFZO3FCQUN0QixTQUFTLFNBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzswQkFDbEMsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7NkJBRXZDLEtBQUssU0FBQyxhQUFhOzRCQU1uQixLQUFLLFNBQUMsWUFBWTt1QkFLbEIsS0FBSzt5QkFVTCxLQUFLOzBCQVVMLEtBQUs7d0JBY0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGx1Z2luc1NlcnZpY2V9IGZyb20gJy4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL3BsdWdpbnMuc2VydmljZSc7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnLFxuICBPYmplY3RUeXBlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBEbXNPYmplY3QsXG4gIERtc09iamVjdEF0dGFjaG1lbnQsXG4gIERtc1NlcnZpY2UsXG4gIEJhY2tlbmRTZXJ2aWNlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbiwgZnJvbUV2ZW50fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsLCB0YWtlV2hpbGUsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7Q29udGVudFByZXZpZXdTZXJ2aWNlfSBmcm9tICcuL2NvbnRlbnQtcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3ZXJDb25maWcge1xuICBtaW1lVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHZpZXdlcjogc3RyaW5nO1xuICBlcnJvcj86IGJvb2xlYW47XG4gIHR5cGU/OiAnY29tcGFyZScgfCAnZXh0ZW5kJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdGaWxlIHtcbiAgdXJpOiBzdHJpbmc7XG4gIHVyaVBkZjogc3RyaW5nO1xuICBtaW1ldHlwZTogc3RyaW5nO1xuICBtaW1lZ3JvdXA6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBwYXRoPzogc3RyaW5nO1xuICBtZWRpYVR5cGVOYW1lPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1tZWRpYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbnRlbnRQcmV2aWV3U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWVkaWFDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgc3RhdGljIFZJREVPX1ZJRVdFUiA9ICdhc3NldHMvX2RlZmF1bHQvYXBpL3ZpZGVvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSc7XG4gIHN0YXRpYyBQREZfVklFV0VSID0gJ2Fzc2V0cy9fZGVmYXVsdC9hcGkvcGRmL3dlYi92aWV3ZXIuaHRtbD9maWxlPSZwYXRoPSR7cGF0aH0mcGF0aFBkZj0ke3BhdGhQZGZ9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX0mY3NzPSUyM3Rvb2xiYXJWaWV3ZXJSaWdodCUyMCUyM3ByaW50JTdCZGlzcGxheSUzQWJsb2NrIWltcG9ydGFudCUzQiU3RCc7XG5cbiAgcHJpdmF0ZSBTSVpFX0xJTUlUID0gMTAyNCAqIDEwMjQgKiAxMDsgLy8gMTBNQlxuICBwcml2YXRlIHBkZmpzOiBhbnk7XG4gIGxhdGVzdFVyaTogc3RyaW5nO1xuICBzbGlkZVVyaTogc3RyaW5nO1xuICB2aWV3ZXI6IGFueTtcbiAgZG1zT2JqZWN0VGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcHJldmlld1VyaTogc3RyaW5nO1xuICBwcml2YXRlIF9kbXNPYmplY3Q6IERtc09iamVjdDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgZmlsZVNpemVQaXBlOiBGaWxlU2l6ZVBpcGU7XG4gIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICBhdHRhY2htZW50czogRG1zT2JqZWN0QXR0YWNobWVudFtdID0gW107XG4gIGlzTWVkaWEgPSBmYWxzZTtcbiAgaXNPY3RldFN0cmVhbSA9IGZhbHNlO1xuICBpc05vdFN1cHBvcnRlZCA9IGZhbHNlO1xuICBpc0xhcmdlID0gZmFsc2U7XG4gIGhhc0Vycm9yID0gZmFsc2U7XG4gIGF0dGFjaG1lbnRzTG9hZGluZzogU3Vic2NyaXB0aW9uO1xuICBhdHRhY2htZW50c1Nob3duOiBib29sZWFuO1xuICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogT2JqZWN0VHlwZTtcbiAgY3VzdG9tQ29uZmlnOiBhbnlbXSA9IFtdO1xuXG4gIGRlZmF1bHRWaWV3ZXJzID0gW1xuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXBwbGljYXRpb24vanNvblwiLCBcInRleHQvanNvblwiLCBcInRleHQvcGxhaW5cIiwgXCJ0ZXh0L3htbFwiLCBcInRleHQvamF2YVwiLCBcInRleHQvamF2YXNjcmlwdFwiLCBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiwgXCJ0ZXh0L2h0bWxcIiwgXCJ0ZXh0L21hcmtkb3duXCIsIFwidGV4dC94LXdlYi1tYXJrZG93blwiLCBcInRleHQveC1tYXJrZG93blwiXSxcbiAgICAgIFwidmlld2VyXCI6IFwiYXNzZXRzL19kZWZhdWx0L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXVkaW8vbXAzXCIsIFwiYXVkaW8vd2VibVwiLCBcImF1ZGlvL29nZ1wiLCBcImF1ZGlvL21wZWdcIiwgXCJ2aWRlby9tcDRcIiwgXCJ2aWRlby93ZWJtXCIsIFwidmlkZW8vb2dnXCIsIFwiYXBwbGljYXRpb24vb2dnXCJdLFxuICAgICAgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL3ZpZGVvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm1pbWVUeXBlXCI6IFtcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9hcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2Uvc3ZnK3htbFwiLCBcImltYWdlL3dlYnBcIl0sXG4gICAgICBcInZpZXdlclwiOiBcImFzc2V0cy9fZGVmYXVsdC9hcGkvaW1nLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfVwiXG4gICAgfSxcbiAgICB7XCJ2aWV3ZXJcIjogXCIoKSA9PiBwYXJhbWV0ZXJzLmRlZmF1bHRWaWV3ZXIgKyAnIydcIn0sXG4gICAge1wiZXJyb3JcIjogdHJ1ZSwgXCJ0eXBlXCI6IFwiZXJyb3JcIiwgXCJ2aWV3ZXJcIjogXCJhc3NldHMvX2RlZmF1bHQvYXBpL2Vycm9yLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfVwifVxuICBdO1xuXG4gIGlzVW5kb2NrZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdW5kb2NrRGlzYWJsZWQgPSBmYWxzZTtcblxuICBnZXQgdW5kb2NrV2luKCk6IFdpbmRvdyB7XG4gICAgcmV0dXJuIENvbnRlbnRQcmV2aWV3U2VydmljZS5nZXRVbmRvY2tXaW4oKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGVuYWJsZUNsb3NlQnRuID0gZmFsc2U7XG4gIC8vIGJ5IGRlZmF1bHQsIHRoZSB2aWV3ZXIgaWdub3JlcyB0aGUgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdC4gVGhpcyB3aWxsIGFsd2F5cyBzaG93IHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgLy8gV2UgbmVlZCB0aGlzIHRvIGJlIGFibGUgdG8gcmVmcmVzaCB0aGUgdmlld2VyIGJlY2F1c2Ugb3RoZXJ3aXNlIHBkZmpzIHdvcmtlciB3aWxsIGZhaWwuXG4gIEBJbnB1dCgpIHVzZVZlcnNpb24gPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vcGVuJykgb3BlbjtcblxuICBAVmlld0NoaWxkKCdjb2Rlc3lzdGVtJykgY29kZXN5c3RlbTtcbiAgQFZpZXdDaGlsZCgnaWZyYW1lJywge3N0YXRpYzogdHJ1ZX0pIGlmcmFtZTtcbiAgQFZpZXdDaGlsZCgnaWZyYW1lTWVkaWEnLCB7c3RhdGljOiB0cnVlfSkgaWZyYW1lTWVkaWE7XG5cbiAgQElucHV0KCdhdHRhY2htZW50cycpXG4gIHNldCBzZXRBdHRhY2htZW50cyhhdHRhY2htZW50cykge1xuICAgIHRoaXMuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB0aGlzLmF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZTtcbiAgfVxuXG4gIEBJbnB1dCgnc2VhcmNoVGVybScpXG4gIHNldCBzZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm0pIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtIHx8ICcnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSAhIWRpc2FibGVkO1xuICAgIHRoaXMudG9vZ2xlVmlld2VyKCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHByZXZpZXdVcmkodXJpOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wcmV2aWV3VXJpID0gdXJpO1xuICAgIHRoaXMudG9vZ2xlVmlld2VyKCk7XG4gIH1cblxuICBnZXQgcHJldmlld1VyaSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld1VyaTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwcmV2aWV3RmlsZShmaWxlOiBQcmV2aWV3RmlsZSkge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICB0aGlzLnZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKGZpbGUpO1xuICAgICAgdGhpcy5pc01lZGlhID0gdGhpcy52aWV3ZXIudmlld2VyICE9PSBNZWRpYUNvbXBvbmVudC5QREZfVklFV0VSO1xuICAgICAgdGhpcy5pc09jdGV0U3RyZWFtID0gISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL29jdGV0LXN0cmVhbS8pO1xuICAgICAgdGhpcy5pc0xhcmdlID0gZmlsZS5zaXplICYmIGZpbGUuc2l6ZSA+IHRoaXMuU0laRV9MSU1JVDtcbiAgICAgIHRoaXMubWVkaWFUeXBlID0gZmlsZS5tZWRpYVR5cGVOYW1lICYmIHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUoZmlsZS5tZWRpYVR5cGVOYW1lKTtcbiAgICAgIHRoaXMucHJldmlld1VyaSA9IHRoaXMuaXNNZWRpYSA/IHRoaXMudmlld2VyLnByZXZpZXdVcmkgOiBmaWxlLnVyaVBkZjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gJyc7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRtc09iamVjdChpdGVtOiBEbXNPYmplY3QpIHtcbiAgICB0aGlzLl9kbXNPYmplY3QgPSBpdGVtO1xuICAgIHRoaXMuZG1zT2JqZWN0VGl0bGUgPSBpdGVtLnRpdGxlIHx8ICcuLi4nO1xuXG4gICAgdGhpcy5zZXRBdHRhY2htZW50cyA9IFtdO1xuICAgIGlmICh0aGlzLmF0dGFjaG1lbnRzTG9hZGluZykge1xuICAgICAgLy8gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3RzXG4gICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAoaXRlbS5jb250ZW50ICYmIGl0ZW0uY29udGVudC5jb250ZW50cyAmJiBpdGVtLmNvbnRlbnQuY29udGVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaWxlID0gaXRlbS5jb250ZW50LmNvbnRlbnRzWzBdIHx8IHt9O1xuXG4gICAgICB0aGlzLnByZXZpZXdGaWxlID0ge1xuICAgICAgICB1cmk6IHRoaXMuZG1zLmdldFByZXZpZXcoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCksXG4gICAgICAgIHVyaVBkZjogdGhpcy5kbXMuZ2V0UHJldmlldyhpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsLCAnUERGJyksXG4gICAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxuICAgICAgICBtaW1lZ3JvdXA6IGZpbGUubWltZWdyb3VwLFxuICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgIHBhdGg6IGZpbGUucGF0aCxcbiAgICAgICAgbWVkaWFUeXBlTmFtZTogaXRlbS50eXBlTmFtZVxuICAgICAgfTtcblxuICAgICAgaWYgKCEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9ebWFpbHxvY3RldC1zdHJlYW0vKSkge1xuICAgICAgICB0aGlzLnNsaWRlVXJpID0gdGhpcy5kbXMuZ2V0U2xpZGUoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgMjU2KTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50c0xvYWRpbmcgPSB0aGlzLmRtcy5nZXRBdHRhY2htZW50cyhpdGVtKS5zdWJzY3JpYmUoYSA9PiB0aGlzLnNldEF0dGFjaG1lbnRzID0gYSk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gJyc7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGRtczogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZyxcbiAgICBwcml2YXRlIHBsdWdpbnNTZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmZpbGVTaXplUGlwZSA9IG5ldyBGaWxlU2l6ZVBpcGUodHJhbnNsYXRlKTtcbiAgICB0aGlzLlNJWkVfTElNSVQgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcuZmlsZVNpemVMaW1pdCcpIHx8IHRoaXMuU0laRV9MSU1JVDtcbiAgICB0aGlzLmN1c3RvbUNvbmZpZyA9ICh0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcudmlld2VycycpIHx8IFtdKS5jb25jYXQodGhpcy5kZWZhdWx0Vmlld2Vycyk7XG5cbiAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaS5jb250ZW50LmNhdGNoRXJyb3IoKS5zdWJzY3JpYmUoKGV2dDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7ZXJyLCB3aW4sIHBhcmFtZXRlcnN9ID0gZXZ0LmRhdGE7XG4gICAgICBjb25zdCB1cmkgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy5jdXN0b21Db25maWc/LmZpbmQoKHYpID0+IHYuZXJyb3IpPy52aWV3ZXIsICdhcGksIGVyciwgd2luLCBwYXJhbWV0ZXJzJywgW1xuICAgICAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaSxcbiAgICAgICAgZXJyLFxuICAgICAgICB3aW4sXG4gICAgICAgIHBhcmFtZXRlcnNcbiAgICAgIF0pO1xuXG4gICAgICB1cmkgJiYgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5yZXNvbHZlVXJpKHVyaSwgcGFyYW1ldGVycyksIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKENvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW5BY3RpdmUoKSkge1xuICAgICAgdGhpcy51bmRvY2soZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEF0dGFjaG1lbnQoYXR0YWNobWVudD8sIGZvcmNlPykge1xuICAgIGNvbnN0IHByZXZpZXdVcmkgPSBhdHRhY2htZW50ICYmIHRoaXMuaXNNZWRpYSA/IHRoaXMuZ2V0Vmlld2VyKHt1cmlQZGY6IGF0dGFjaG1lbnQ/LnByZXZpZXdVcml9IGFzIFByZXZpZXdGaWxlKS5wcmV2aWV3VXJpIDogYXR0YWNobWVudD8ucHJldmlld1VyaTtcbiAgICB0aGlzLmxvYWREb2N1bWVudChwcmV2aWV3VXJpIHx8IHRoaXMucHJldmlld1VyaSwgZm9yY2UpO1xuICB9XG5cbiAgcHVibGljIHRvb2dsZVZpZXdlcigpIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5kaXNhYmxlZCAmJiAhIXRoaXMucHJldmlld1VyaTtcbiAgICB0aGlzLnVuZG9ja0Rpc2FibGVkID0gdGhpcy51bmRvY2tEaXNhYmxlZCA/IHRydWUgOiB0aGlzLnByZXZpZXdVcmkgPT09ICcnO1xuICAgIGlmICh0aGlzLnVuZG9ja0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmlzVW5kb2NrZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbiB8fCB0aGlzLmlzVW5kb2NrZWQpIHtcbiAgICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSwgdGhpcy5pc1VuZG9ja2VkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnByZXZpZXdVcmksIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUGRmVmlld2VyKHVyaTogc3RyaW5nKSB7XG4gICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLm9wZW4odXJpKS50aGVuKCgpID0+ICh0aGlzLmhhc0Vycm9yID0gZmFsc2UpKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICB0aGlzLmhhc0Vycm9yID0gIXRoaXMuaXNPY3RldFN0cmVhbTtcbiAgICAgIHRoaXMuaXNOb3RTdXBwb3J0ZWQgPSB0aGlzLmlzT2N0ZXRTdHJlYW07XG4gICAgfSk7XG4gICAgLy8gdGhpcy5zZWFyY2goKTtcbiAgfVxuXG4gIGdldFZpZXdlcihmaWxlOiBQcmV2aWV3RmlsZSk6IGFueSB7XG4gICAgY29uc3QgaXNWaWRlbyA9ICEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9eYXVkaW98XnZpZGVvLyk7XG4gICAgY29uc3QgZGVmYXVsdFZpZXdlciA9IGlzVmlkZW8gPyBNZWRpYUNvbXBvbmVudC5WSURFT19WSUVXRVIgOiBNZWRpYUNvbXBvbmVudC5QREZfVklFV0VSO1xuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlLnBhdGg/LmluY2x1ZGVzKCcuJykgPyBmaWxlLnBhdGguc3BsaXQoJy4nKS5wb3AoKSA6ICcnO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gZmlsZS5taW1ldHlwZTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmN1c3RvbUNvbmZpZy5maW5kKChjOiBWaWV3ZXJDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoTVQgPSAhYy5taW1lVHlwZSB8fCAodHlwZW9mIGMubWltZVR5cGUgPT09ICdzdHJpbmcnID8gW2MubWltZVR5cGVdIDogYy5taW1lVHlwZSkuaW5jbHVkZXMobWltZVR5cGU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY29uc3QgbWF0Y2hGRSA9ICFjLmZpbGVFeHRlbnNpb24gfHwgKHR5cGVvZiBjLmZpbGVFeHRlbnNpb24gPT09ICdzdHJpbmcnID8gW2MuZmlsZUV4dGVuc2lvbl0gOiBjLmZpbGVFeHRlbnNpb24pLmluY2x1ZGVzKChmaWxlRXh0ZW5zaW9uKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHJldHVybiBtYXRjaE1UICYmIG1hdGNoRkUgJiYgKCFjLnR5cGUgfHwgYy50eXBlID09PSAnZGVmYXVsdCcpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgIGZpbGUsXG4gICAgICBwYXRoOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaSxcbiAgICAgIHBhdGhQZGY6IGxvY2F0aW9uLm9yaWdpbiArIGZpbGUudXJpUGRmLFxuICAgICAgdmlld2VyOiBjb25maWc/LnZpZXdlciB8fCBkZWZhdWx0Vmlld2VyLFxuICAgICAgbG9hZDogY29uZmlnPy5sb2FkLFxuICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgIG1pbWVUeXBlLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgZGVmYXVsdFZpZXdlcixcbiAgICAgIHByZXZpZXdVcmk6ICcnXG4gICAgfTtcbiAgICBwYXJhbWV0ZXJzLnZpZXdlciA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbihwYXJhbWV0ZXJzLnZpZXdlciwgJ2NvbXBvbmVudCwgZG1zT2JqZWN0LCBwYXJhbWV0ZXJzJywgW3RoaXMsIHRoaXMuX2Rtc09iamVjdCwgcGFyYW1ldGVyc10pIHx8IGRlZmF1bHRWaWV3ZXI7XG5cbiAgICBjb25zdCBleHRlbmQgPSB0aGlzLmN1c3RvbUNvbmZpZy5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdleHRlbmQnKTtcbiAgICBpZiAoZXh0ZW5kKSBwYXJhbWV0ZXJzLnZpZXdlciA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbihleHRlbmQudmlld2VyLCAnY29tcG9uZW50LCBkbXNPYmplY3QsIHBhcmFtZXRlcnMnLCBbdGhpcywgdGhpcy5fZG1zT2JqZWN0LCBwYXJhbWV0ZXJzXSk7XG5cbiAgICBwYXJhbWV0ZXJzLnByZXZpZXdVcmkgPSB0aGlzLnJlc29sdmVVcmkocGFyYW1ldGVycy52aWV3ZXIsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVXJpKHZpZXdlcjogc3RyaW5nLCBwYXJhbWV0ZXJzOiBhbnkpIHtcbiAgICByZXR1cm4gKHZpZXdlciA/IGRvY3VtZW50LmJhc2VVUkkgOiAnJykgKyB2aWV3ZXJcbiAgICAgIC5yZXBsYWNlKCcke29yaWdpbmFsUGF0aH0nLCBwYXJhbWV0ZXJzLnBhdGgpXG4gICAgICAucmVwbGFjZSgnJHtwYXRofScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnBhdGgpKVxuICAgICAgLnJlcGxhY2UoJyR7cGF0aFBkZn0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5wYXRoUGRmKSlcbiAgICAgIC5yZXBsYWNlKCcke2ZpbGVFeHRlbnNpb259JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMuZmlsZUV4dGVuc2lvbikpXG4gICAgICAucmVwbGFjZSgnJHttaW1lVHlwZX0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5taW1lVHlwZSkpXG4gICAgICAucmVwbGFjZSgnJHt0aGVtZX0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy50aGVtZSkpXG4gICAgICAucmVwbGFjZSgnJHtsYW5nfScsIENvbnRlbnRQcmV2aWV3U2VydmljZS5tYXBMYW5nKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSk7XG4gIH1cblxuICB1bmRvY2sob3BlbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy51bmRvY2tEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzVW5kb2NrZWQgPSAhdGhpcy5pc1VuZG9ja2VkO1xuICAgIGlmICghdGhpcy5pc1VuZG9ja2VkKSB7XG4gICAgICBDb250ZW50UHJldmlld1NlcnZpY2UuY2xvc2VXaW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKF8gPT4ge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy51bmRvY2tXaW4gJiYgIUNvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW5BY3RpdmUoKSkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuaXNVbmRvY2tlZCAmJiB0aGlzLnVuZG9jaygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAnYmVmb3JldW5sb2FkJylcbiAgICAgICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5pc1VuZG9ja2VkKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKGUgPT4gQ29udGVudFByZXZpZXdTZXJ2aWNlLmNsb3NlV2luKCkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChvcGVuKSB7XG4gICAgICB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnByZXZpZXdVcmksIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5XaW5kb3coc3JjOiBzdHJpbmcsIGNsZWFuID0gZmFsc2UpIHtcbiAgICBDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luKHNyYyk7XG4gICAgaWYgKGNsZWFuKSB7XG4gICAgICB3aGlsZSAodGhpcy51bmRvY2tXaW4uZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKSB7XG4gICAgICAgIHRoaXMudW5kb2NrV2luLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy51bmRvY2tXaW4uZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFzcmMgJiYgIXRoaXMudW5kb2NrV2luLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNuby1maWxlJykpIHtcbiAgICAgIHRoaXMudW5kb2NrV2luLmRvY3VtZW50LndyaXRlKFxuICAgICAgICBgPGRpdiBpZD1cIm5vLWZpbGVcIiBzdHlsZT1cIm9wYWNpdHk6IDAuMDY7IGRpc3BsYXk6IGZsZXg7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTI4XCIgaGVpZ2h0PVwiMTI4XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMjkgNEgxNC42Yy0uOCAwLTEuNS4yLTIgLjZsMjcuMiAyNy4ydi0xN0wyOSA0em0tLjcgMTEuNlY3LjhsNy44IDcuOGgtNy44ek00My40IDQwLjhsLTIuNSAyLjUtMy41LTMuNWMtLjQuMS0uOC4yLTEuMi4ySDE0LjZjLTJcbiAgICAgICAgICAwLTMuNi0xLjYtMy42LTMuNlYxMy41TDUuOSA4LjRsMi41LTIuNUwxMSA4LjRsMjguNyAyOC43IDMuMSAzLjEuNi42elwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPGRpdj5gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxvYWREb2N1bWVudCh1cmk6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKSB7XG4gICAgaWYgKGZvcmNlKSB7XG4gICAgICB0aGlzLmlzTGFyZ2UgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFmb3JjZSAmJiAodGhpcy5kaXNhYmxlZCB8fCAhdXJpIHx8ICh1cmkgPT09IHRoaXMubGF0ZXN0VXJpICYmICF0aGlzLmhhc0Vycm9yKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5sYXRlc3RVcmkgPSB1cmkgfHwgJyc7XG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaXNOb3RTdXBwb3J0ZWQgPSBmYWxzZTtcblxuXG5cbiAgICBpZiAodGhpcy5pc1VuZG9ja2VkKSB7XG4gICAgICB0aGlzLm9wZW5XaW5kb3codGhpcy5sYXRlc3RVcmkpO1xuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy51bmRvY2tXaW4sIHRoaXNdKTtcbiAgICAgIHRoaXMuaWZyYW1lSW5pdCh0aGlzLnVuZG9ja1dpbiwgdGhpcy52aWV3ZXI/LmxvYWQgJiYgb25sb2FkKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0xhcmdlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNNZWRpYSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5pZnJhbWVNZWRpYS5uYXRpdmVFbGVtZW50LCAnc3JjJywgdGhpcy5sYXRlc3RVcmkpO1xuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy5pZnJhbWVNZWRpYS5uYXRpdmVFbGVtZW50LCB0aGlzXSk7XG4gICAgICB0aGlzLmlmcmFtZUluaXQodGhpcy5pZnJhbWVNZWRpYS5uYXRpdmVFbGVtZW50LCB0aGlzLnZpZXdlcj8ubG9hZCAmJiBvbmxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMucGRmanMpIHtcbiAgICAgICAgdGhpcy5wZGZqcyA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMucGRmanMsICdzcmMnLCBNZWRpYUNvbXBvbmVudC5QREZfVklFV0VSLnJlcGxhY2UoL1xcPy4qLywgJz9maWxlPSYnKSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMucGRmanMsICdsb2FkJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCdzaWRlYmFyVmlld09uTG9hZCcsIDApO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCd2aWV3T25Mb2FkJywgZmFsc2UpO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCdsb2NhbGUnLCBDb250ZW50UHJldmlld1NlcnZpY2UubWFwTGFuZyh0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZykpO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5kb2N1bWVudC53ZWJMMTBuLnNldExhbmd1YWdlKENvbnRlbnRQcmV2aWV3U2VydmljZS5tYXBMYW5nKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSk7XG4gICAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLl9pbml0aWFsaXplTDEwbigpO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbk9wdGlvbnMuc2V0KCd2aWV3ZXJDc3NUaGVtZScsIDEpO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5fZm9yY2VDc3NUaGVtZSgpO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcudmlld2VyQ29udGFpbmVyXG4gICAgICAgICAgICAuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgZSA9PiB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnZW50ZXInLCBlKSkpO1xuICAgICAgICAgIHRoaXMucGRmanMuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcudmlld2VyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCkpO1xuXG4gICAgICAgICAgdGhpcy5vcGVuUGRmVmlld2VyKHRoaXMubGF0ZXN0VXJpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGRmanMuY29udGVudFdpbmRvdyAmJiB0aGlzLnBkZmpzLmNvbnRlbnRXaW5kb3cuUERGVmlld2VyQXBwbGljYXRpb24pIHtcbiAgICAgICAgdGhpcy5wZGZqcy5jb250ZW50V2luZG93LlBERlZpZXdlckFwcGxpY2F0aW9uLnBkZlNpZGViYXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5vcGVuUGRmVmlld2VyKHRoaXMubGF0ZXN0VXJpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBDdXN0b20gc2VhcmNoIGluc2lkZSBQREYuSlMgYmFzZWQgb24gc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHRlcm0gc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHdpbiBpZnJhbWUgd2luZG93XG4gICAqL1xuICBwcml2YXRlIHNlYXJjaFBERih0ZXJtID0gJycsIHdpbjogYW55KSB7XG4gICAgLy8gcmVtb3ZlIGFsbCBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgICB0ZXJtID0gKHRlcm0gfHwgJycpLnJlcGxhY2UoL1tcXFwifFxcKl0vZywgJycpLnRyaW0oKTtcbiAgICBpZiAodGVybSAmJiB3aW4/LlBERlZpZXdlckFwcGxpY2F0aW9uPy5hcHBDb25maWc/LmZpbmRCYXIpIHtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5maW5kQ29udHJvbGxlci5leGVjdXRlQ29tbWFuZCgnZmluZCcsIHtcbiAgICAgICAgY2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgICAgIGZpbmRQcmV2aW91czogdW5kZWZpbmVkLFxuICAgICAgICBoaWdobGlnaHRBbGw6IHRydWUsXG4gICAgICAgIHBocmFzZVNlYXJjaDogdHJ1ZSxcbiAgICAgICAgcXVlcnk6IHRlcm1cbiAgICAgIH0pO1xuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy5maW5kQmFyLmZpbmRGaWVsZC52YWx1ZSA9IHRlcm07XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuaGlnaGxpZ2h0QWxsQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuY2FzZVNlbnNpdGl2ZUNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREcm9wRXZlbnQod2luOiBhbnkpIHtcbiAgICBpZiAodGhpcy5pZnJhbWU/LnNyYz8uc3RhcnRzV2l0aCh3aW5kb3cubG9jYXRpb24ub3JpZ2luKSkge1xuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpKTtcbiAgICAgIC8vIGRpc3BhY2ggZHJhZyAmIGRyb3AgZXZlbnRzIHRvIG1haW4gd2luZG93XG4gICAgICB3aW4/LmRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCAoZSkgPT4ge1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnZW50ZXInLCBlKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2xlYXZlJywgZSkpLCAxMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZnJhbWVJbml0KGlmcmFtZSA9IHRoaXMuaWZyYW1lLCBvbmxvYWQ/OiBGdW5jdGlvbikge1xuICAgIGlmIChpZnJhbWUpIHtcbiAgICAgIGlmcmFtZS5faW5pdCB8fCBmcm9tRXZlbnQoaWZyYW1lLCAnbG9hZCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3aW4gPSB0aGlzLnNldEFwaShpZnJhbWUpO1xuICAgICAgICAgIG9ubG9hZCAmJiBvbmxvYWQoKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hQREYodGhpcy5zZWFyY2hUZXJtLCB3aW4pO1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RHJvcEV2ZW50KHdpbik7XG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgICBpZnJhbWUuX2luaXQgPSAhIXRoaXMuc2V0QXBpKGlmcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBcGkoaWZyYW1lOiBhbnkpIHtcbiAgICAvLyBzZXQgYXBpIHRvIGlmcmFtZSB3aW5kb3dcbiAgICBjb25zdCB3aW4gPSBpZnJhbWU/LmNvbnRlbnRXaW5kb3cgfHwgaWZyYW1lO1xuICAgIHdpblsnYXBpJ10gPSB3aW5kb3dbJ2FwaSddO1xuICAgIHJldHVybiB3aW47XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyByZXR1cm4gQ29udGVudFByZXZpZXdTZXJ2aWNlLnVuZG9ja1dpbkFjdGl2ZSgpICYmIHRoaXMub3BlbldpbmRvdygnJywgdHJ1ZSk7XG4gIH1cblxufVxuIl19
|
|
@@ -76,7 +76,7 @@ export class FormElementTableComponent extends UnsubscribeOnDestroy {
|
|
|
76
76
|
});
|
|
77
77
|
this._cachedColumns = this.storageService.getItem(FormElementTableComponent.COLUMNS_DEFINITION) || [];
|
|
78
78
|
this._cachedColumnsOverlay = this.storageService.getItem(FormElementTableComponent.COLUMNS_DEFINITION_OVERLAY) || [];
|
|
79
|
-
this.showPreview = !!this.storageService.getItem('showPreview');
|
|
79
|
+
this.showPreview = !!this.storageService.getItem('eo.table.showPreview');
|
|
80
80
|
}
|
|
81
81
|
set params(p) {
|
|
82
82
|
if (p) {
|
|
@@ -414,7 +414,7 @@ export class FormElementTableComponent extends UnsubscribeOnDestroy {
|
|
|
414
414
|
}
|
|
415
415
|
togglePreview() {
|
|
416
416
|
this.showPreview = !this.showPreview;
|
|
417
|
-
this.storageService.setItem('showPreview', this.showPreview);
|
|
417
|
+
this.storageService.setItem('eo.table.showPreview', this.showPreview);
|
|
418
418
|
}
|
|
419
419
|
}
|
|
420
420
|
FormElementTableComponent.COLUMNS_DEFINITION = 'eo.framework.cache.tables.columns.definition';
|
|
@@ -422,7 +422,7 @@ FormElementTableComponent.COLUMNS_DEFINITION_OVERLAY = 'eo.framework.cache.table
|
|
|
422
422
|
FormElementTableComponent.decorators = [
|
|
423
423
|
{ type: Component, args: [{
|
|
424
424
|
selector: 'eo-table',
|
|
425
|
-
template: "<div class=\"object-form-table\" [ngClass]=\"{medium: _params.size === 'medium', large: _params.size === 'large'}\">\n <div class=\"label\">\n <span>{{_params.element.label}}</span>\n <ng-container *ngIf=\"_params.situation !== 'SEARCH'\">\n\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_expand.svg'\" [iconTitle]=\"('eo.form.table.options.btn.open'| translate)\" (click)=\"openDialog()\"></eo-icon>\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_size_to_fit.svg'\" [iconTitle]=\"('eo.form.table.options.btn.fit'| translate)\" (click)=\"sizeToFit()\"></eo-icon>\n <eo-icon class=\"stf\" *ngIf=\"gridOptions.rowData.length\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.form.table.options.btn.csv'| translate)\" (click)=\"exportCSV()\"></eo-icon>\n <eo-icon class=\"stf add-row\" *ngIf=\"!_params.element.readonly\" [iconSrc]=\"'assets/_default/svg/ic_add.svg'\" [iconTitle]=\"('eo.form.table.options.btn.add'| translate)\" (click)=\"addRow()\"></eo-icon>\n\n </ng-container>\n </div>\n <div class=\"grid-body size-{{ params.size }}\">\n <ag-grid-angular #agGrid *ngIf=\"gridReady\" class=\"ag-theme-balham\" [modules]=\"modules\"\n [gridOptions]=\"gridOptions\"\n (rowDoubleClicked)=\"editRow($event)\"\n (cellClicked)=\"onCellClicked($event)\"\n (sortChanged)=\"onSortChanged()\"\n (cellValueChanged)=\"onEditComplete($event)\"\n (columnResized)=\"onColumnResized($event.column)\">\n </ag-grid-angular>\n </div>\n</div>\n\n\n<eo-dialog\n[title]=\"params.element.label\"\n[visible]=\"showDialog\"\n[dirtyCheck]=\"rowEdit?.pendingTaskId\"\n[minWidth]=\"_params.situation !== 'SEARCH' ? '97vw' : 200\"\n[styleClass]=\"'object-form-table-dialog'\"\n(hide)=\"onClose()\"\n[isFormTable]=\"true\"\n[hasPreviewFile]=\"!!params.object?.content\"\n[showPreview]=\"showPreview\"\n(onTogglePreview)=\"togglePreview()\">\n\n <div class=\"body\">\n\n <eo-split [gutterSize]=\"16\" [switchable]=\"true\">\n\n <eo-split-area *ngIf=\"_params.situation !== 'SEARCH'\" class=\"table-area\" [size]=\"
|
|
425
|
+
template: "<div class=\"object-form-table\" [ngClass]=\"{medium: _params.size === 'medium', large: _params.size === 'large'}\">\n <div class=\"label\">\n <span>{{_params.element.label}}</span>\n <ng-container *ngIf=\"_params.situation !== 'SEARCH'\">\n\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_expand.svg'\" [iconTitle]=\"('eo.form.table.options.btn.open'| translate)\" (click)=\"openDialog()\"></eo-icon>\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_size_to_fit.svg'\" [iconTitle]=\"('eo.form.table.options.btn.fit'| translate)\" (click)=\"sizeToFit()\"></eo-icon>\n <eo-icon class=\"stf\" *ngIf=\"gridOptions.rowData.length\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.form.table.options.btn.csv'| translate)\" (click)=\"exportCSV()\"></eo-icon>\n <eo-icon class=\"stf add-row\" *ngIf=\"!_params.element.readonly\" [iconSrc]=\"'assets/_default/svg/ic_add.svg'\" [iconTitle]=\"('eo.form.table.options.btn.add'| translate)\" (click)=\"addRow()\"></eo-icon>\n\n </ng-container>\n </div>\n <div class=\"grid-body size-{{ params.size }}\">\n <ag-grid-angular #agGrid *ngIf=\"gridReady\" class=\"ag-theme-balham\" [modules]=\"modules\"\n [gridOptions]=\"gridOptions\"\n (rowDoubleClicked)=\"editRow($event)\"\n (cellClicked)=\"onCellClicked($event)\"\n (sortChanged)=\"onSortChanged()\"\n (cellValueChanged)=\"onEditComplete($event)\"\n (columnResized)=\"onColumnResized($event.column)\">\n </ag-grid-angular>\n </div>\n</div>\n\n\n<eo-dialog\n[title]=\"params.element.label\"\n[visible]=\"showDialog\"\n[dirtyCheck]=\"rowEdit?.pendingTaskId\"\n[minWidth]=\"_params.situation !== 'SEARCH' ? '97vw' : 200\"\n[styleClass]=\"'object-form-table-dialog'\"\n(hide)=\"onClose()\"\n[isFormTable]=\"true\"\n[hasPreviewFile]=\"!!params.object?.content\"\n[showPreview]=\"showPreview\"\n(onTogglePreview)=\"togglePreview()\">\n\n <div class=\"body\">\n\n <eo-split [gutterSize]=\"16\" [switchable]=\"true\" [cacheLayout]=\"'table.state'\">\n\n <eo-split-area *ngIf=\"_params.situation !== 'SEARCH'\" class=\"table-area\" [size]=\"40\" [minSizePixel]=\"100\" [order]=\"1\">\n <div class=\"table-body\">\n <div class=\"object-form-table\">\n <div class=\"label\">\n <span></span>\n <ng-container>\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_size_to_fit.svg'\" [iconTitle]=\"('eo.form.table.options.btn.fit'| translate)\" (click)=\"sizeToFit(true)\"></eo-icon>\n <eo-icon class=\"stf\" *ngIf=\"gridOptions.rowData.length\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.form.table.options.btn.csv'| translate)\" (click)=\"exportCSV()\"></eo-icon>\n <eo-icon class=\"stf add-row\" *ngIf=\"!_params.element.readonly\" [iconSrc]=\"'assets/_default/svg/ic_add.svg'\" [iconTitle]=\"('eo.form.table.options.btn.add'| translate)\" (click)=\"addRow()\"></eo-icon>\n </ng-container>\n </div>\n <div class=\"grid-body\">\n <ag-grid-angular #agGrid2 *ngIf=\"gridReady\" class=\"ag-theme-balham\" [modules]=\"modules\"\n [gridOptions]=\"overlayGridOptions\"\n (cellClicked)=\"onCellClicked($event);editRow($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (sortChanged)=\"onSortChanged()\"\n (cellValueChanged)=\"onEditComplete($event)\"\n (columnResized)=\"onColumnResized($event.column, true)\">\n </ag-grid-angular>\n </div>\n </div>\n </div>\n </eo-split-area>\n\n <eo-split-area [size]=\"20\" [minSizePixel]=\"300\" *ngIf=\"editingRow\" [order]=\"2\">\n <div class=\"edit-body\">\n <eo-row-edit [row]=\"editingRow\" #rowEdit\n (onSave)=\"updateRow($event)\"\n (onSaveCopy)=\"copyRow($event)\"\n (onDelete)=\"deleteRow($event)\"\n (onCancel)=\"cancelRowEdit()\"></eo-row-edit>\n </div>\n </eo-split-area>\n\n <eo-split-area *ngIf=\"showPreview && !!params.object?.content\" [size]=\"40\" [minSizePixel]=\"150\" [order]=\"3\">\n <eo-media [dmsObject]=\"params.object\" [undockDisabled]=\"true\"\n [useVersion]=\"params.object.id === params.object.content?.id\"></eo-media>\n </eo-split-area>\n </eo-split>\n </div>\n</eo-dialog>\n\n",
|
|
426
426
|
providers: [
|
|
427
427
|
{
|
|
428
428
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -451,4 +451,4 @@ FormElementTableComponent.propDecorators = {
|
|
|
451
451
|
params: [{ type: Input }],
|
|
452
452
|
copyCellHandler: [{ type: HostListener, args: ['keydown.control.alt.shift.c', ['$event'],] }, { type: HostListener, args: ['keydown.control.shift.c', ['$event'],] }, { type: HostListener, args: ['keydown.control.alt.c', ['$event'],] }, { type: HostListener, args: ['keydown.control.c', ['$event'],] }]
|
|
453
453
|
};
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHlFQUF5RSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUUsYUFBYSxFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBRzlHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRSxPQUFPLEVBQXdCLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlILE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFnRHJGLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxvQkFBb0I7SUF1RGpFLFlBQW9CLGFBQTRCLEVBQVUsY0FBcUMsRUFDdEYsT0FBb0IsRUFBVSxTQUEyQixFQUFVLGNBQW1DLEVBQVUsWUFBMEI7UUFDakosS0FBSyxFQUFFLENBQUM7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QWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDOztBQXRjTSw0Q0FBa0IsR0FBRyw4Q0FBOEMsQ0FBQztBQUNwRSxvREFBMEIsR0FBRyxzREFBc0QsQ0FBQzs7WUF4QjVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsaXJKQUFrRDtnQkFJbEQsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7d0JBQ3hELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO3dCQUN4RCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjs7YUFDRjs7O1lBckRpRSxhQUFhO1lBTnZFLHFCQUFxQjtZQUtyQixXQUFXO1lBQzhELGdCQUFnQjtZQUFwRCxtQkFBbUI7WUFBakMsWUFBWTs7O3NCQStEeEMsU0FBUyxTQUFDLFNBQVM7cUJBRW5CLEtBQUs7OEJBb0NMLFlBQVksU0FBQyw2QkFBNkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUN0RCxZQUFZLFNBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDbEQsWUFBWSxTQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ2hELFlBQVksU0FBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRvciwgRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7R3JpZE9wdGlvbnMsIENvbERlZiwgTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0dyaWRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7RG1zT2JqZWN0LCBFbmFpb0V2ZW50LCBFdmVudFNlcnZpY2UsIExvY2FsU3RvcmFnZVNlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtDbGllbnRTaWRlUm93TW9kZWxNb2R1bGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jbGllbnQtc2lkZS1yb3ctbW9kZWwnO1xuaW1wb3J0IHtDc3ZFeHBvcnRNb2R1bGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jc3YtZXhwb3J0JztcbmltcG9ydCB7Zm9ya0pvaW59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtSb3dFZGl0Q29tcG9uZW50fSBmcm9tICcuL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi8uLi8uLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XG5cbi8vIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSB0YWJsZSBjb21wb25lbnRcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb21wb25lbnRQYXJhbXMge1xuICAvLyBjdXJyZW50IGZvcm0gc2l0dWF0aW9uIChFRElULCBTRUFSQ0ggb3IgQ1JFQVRFKVxuICBzaXR1YXRpb246IHN0cmluZztcbiAgLy8gdGFibGUgc2l6ZSAobWVkaXVtLCBsYXJnZSlcbiAgc2l6ZTogc3RyaW5nO1xuICAvLyB0aGUgdGFibGVzIGZyb20gZWxlbWVudFxuICBlbGVtZW50OiBhbnk7XG4gIC8vIHRoZSBkbXMgb2JqZWN0IHRoZSBmb3JtIGlzIGF0dGFjaGVkIHRvIChuZWVkZWQgZm9yIHByZXZpZXcgaW4gZGlhbG9nKVxuICBvYmplY3Q/OiBEbXNPYmplY3Q7XG59XG5cbi8vIHJlcHJlc2VudGF0aW9uIG9mIGEgcm93IHdoaWxlIGVkaXRpbmdcbmV4cG9ydCBpbnRlcmZhY2UgRWRpdFJvdyB7XG4gIHNpdHVhdGlvbjogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XG4gIHRhYmxlRWxlbWVudDogYW55O1xufVxuXG4vLyByZXN1bHQgb2YgZWRpdGluZyBhIHRhYmxlcyByb3dcbmV4cG9ydCBpbnRlcmZhY2UgRWRpdFJvd1Jlc3VsdCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIHJvd0RhdGE6IGFueTtcbiAgY3JlYXRlTmV3Um93OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnNjc3MnXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuXG4gIHByaXZhdGUgX2NhY2hlZENvbHVtbnM6IGFueVtdO1xuICBwcml2YXRlIF9jYWNoZWRDb2x1bW5zT3ZlcmxheTogYW55W107XG4gIHN0YXRpYyBDT0xVTU5TX0RFRklOSVRJT04gPSAnZW8uZnJhbWV3b3JrLmNhY2hlLnRhYmxlcy5jb2x1bW5zLmRlZmluaXRpb24nO1xuICBzdGF0aWMgQ09MVU1OU19ERUZJTklUSU9OX09WRVJMQVkgPSAnZW8uZnJhbWV3b3JrLmNhY2hlLnRhYmxlcy5vdmVybGF5LmNvbHVtbnMuZGVmaW5pdGlvbic7XG5cbiAgcHVibGljIG1vZHVsZXM6IE1vZHVsZVtdID0gW0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZSwgQ3N2RXhwb3J0TW9kdWxlXTtcblxuICBAVmlld0NoaWxkKCdyb3dFZGl0Jykgcm93RWRpdDogUm93RWRpdENvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBzZXQgcGFyYW1zKHA6IFRhYmxlQ29tcG9uZW50UGFyYW1zKSB7XG4gICAgaWYgKHApIHtcbiAgICAgIHRoaXMuX3BhcmFtcyA9IHA7XG4gICAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1zLnNpemUgPSAnc3VwZXJzbWFsbCc7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLl9wYXJhbXMuc2l6ZSkge1xuICAgICAgICB0aGlzLl9wYXJhbXMuc2l6ZSA9ICdzbWFsbCc7XG4gICAgICB9XG4gICAgICB0aGlzLmdyaWRSZWFkeSA9IGZhbHNlO1xuICAgICAgdGhpcy5fZWxlbWVudHMgPSBwLmVsZW1lbnQuZWxlbWVudHM7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSB0aGlzLmNyZWF0ZUNvbHVtbkRlZmluaXRpb24oKTtcbiAgICAgIGlmICh0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbkRlZnMucHVzaCh7aGVhZGVyTmFtZTogJycsIGNvbElkOiAnYWN0aW9ucycsIHdpZHRoOiAzNCwgbWluV2lkdGg6IDM0LCBwaW5uZWQ6ICdyaWdodCcsIGNlbGxSZW5kZXJlcjogdGhpcy5hY3Rpb25zQ2VsbFJlbmRlcmVyfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gdGhpcy5jcmVhdGVDb2x1bW5EZWZpbml0aW9uKHRydWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdyaWRSZWFkeSA9IHRydWU7XG4gICAgfVxuICB9XG4gIGdldCBwYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtcztcbiAgfVxuXG4gIF9wYXJhbXM6IFRhYmxlQ29tcG9uZW50UGFyYW1zO1xuICBwcml2YXRlIF9lbGVtZW50czogYW55W107XG4gIGdyaWRSZWFkeSA9IGZhbHNlO1xuICB2YWx1ZTogYW55W107XG4gIGlubmVyVmFsdWU6IGFueVtdO1xuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIG92ZXJsYXlHcmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIGVkaXRpbmdSb3c6IEVkaXRSb3c7XG4gIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgc2hvd1ByZXZpZXcgPSBmYWxzZTtcblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuc2hpZnQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5hbHQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5jJywgWyckZXZlbnQnXSlcbiAgY29weUNlbGxIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5ncmlkQXBpLmNvcHlUb0NsaXBib2FyZChldmVudCwgdGhpcy5ncmlkT3B0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZEFwaTogR3JpZFNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPntcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ3JpZEFwaS5nZXRDb250ZXh0KCksXG4gICAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgICAgcm93SGVpZ2h0OiAzMCxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgICAgIGFjY2VudGVkU29ydDogdHJ1ZSxcbiAgICAgIC8vIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgICBzdXBwcmVzc01vdmFibGVDb2x1bW5zOiB0cnVlLFxuICAgICAgZW5hYmxlRmlsdGVyOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzTm9Sb3dzT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTG9hZGluZ092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0NvbnRleHRNZW51OiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQudGFibGVDb21wb25lbnQgPSB0aGlzO1xuXG4gICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMgPSA8R3JpZE9wdGlvbnM+e1xuICAgICAgY29udGV4dDogdGhpcy5ncmlkQXBpLmdldENvbnRleHQoKSxcbiAgICAgIGhlYWRlckhlaWdodDogMzAsXG4gICAgICByb3dIZWlnaHQ6IDMwLFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIG11bHRpU29ydEtleTogJ2N0cmwnLFxuICAgICAgYWNjZW50ZWRTb3J0OiB0cnVlLFxuICAgICAgLy8gc3VwcHJlc3NDZWxsU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgcm93U2VsZWN0aW9uOiAnc2luZ2xlJyxcbiAgICAgIHN1cHByZXNzTW92YWJsZUNvbHVtbnM6IHRydWUsXG4gICAgICBlbmFibGVGaWx0ZXI6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NOb1Jvd3NPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NMb2FkaW5nT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzQ29udGV4dE1lbnU6IHRydWVcbiAgICB9O1xuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmNvbnRleHQudGFibGVDb21wb25lbnQgPSB0aGlzO1xuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnJvd0NsYXNzUnVsZXMgPSB7XG4gICAgICAnbmV3LXJvdyc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmlzTmV3Um93KSB7XG4gICAgICAgICAgZGVsZXRlIHBhcmFtcy5kYXRhLmlzTmV3Um93O1xuICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5pbm5lclZhbHVlW3BhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LmlubmVyVmFsdWUubGVuZ3RoIC0gMV0uaXNOZXdSb3c7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy50YXNrcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0YXNrcyA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSAhIXRoaXMucm93RWRpdCAmJiAhIXRhc2tzLmluY2x1ZGVzKHRoaXMucm93RWRpdC5wZW5kaW5nVGFza0lkKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2NhY2hlZENvbHVtbnMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudC5DT0xVTU5TX0RFRklOSVRJT04pIHx8IFtdO1xuICAgIHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5ID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OX09WRVJMQVkpIHx8IFtdO1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSAhIXRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnc2hvd1ByZXZpZXcnKTtcbiAgfVxuXG4gIGFjdGlvbnNDZWxsUmVuZGVyZXIocGFyYW1zKSB7XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgaWYgKHBhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LnBhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBkaXYuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9XCJhY3Rpb24taWNvblwiIGlkPVwiYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1cIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+YDtcbiAgICAgIGxldCBjbGVhckljb24gPSBkaXYucXVlcnlTZWxlY3RvckFsbChgI2FjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9YClbMF07XG4gICAgICBjbGVhckljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5jbGVhclJvdyhwYXJhbXMucm93SW5kZXgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGl2LmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwiYWN0aW9uLWljb25cIiBpZD1cImFjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9XCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PmA7XG4gICAgICBsZXQgZGVsZXRlSWNvbiA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKGAjYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1gKVswXTtcbiAgICAgIGRlbGV0ZUljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5kZWxldGVSb3cocGFyYW1zLnJvd0luZGV4KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpdjtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG5cbiAgICBpZiAoIXZhbHVlICYmIHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAvLyBmb3Igc2VhcmNoIHJvdyBkYXRhIHdpbGwgYWx3YXlzIGJlIG9uZSBlbXB0eSByb3dcbiAgICAgIC8vIHRvZG86IHJlLWVuYWJsZSBhZ2FpbiB3aGVuIHNlYXJjaCBpbiB0YWJsZXMgaXMgc3VwcG9ydGVkXG4gICAgICB2YWx1ZSA9IFt7fV07XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbXTtcbiAgICAvLyBjcmVhdGUgYSBjbG9uZSBvZiB0aGUgYWN0dWFsIHZhbHVlIGZvciBpbnRlcm5hbCB1c2FnZVxuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLmZvcm1EYXRhUGFyc2UoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkodGhpcy52YWx1ZSkpO1xuXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuYXBpKSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdEVkaXRSb3coKSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnJvd0RhdGEgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY29sdW1uIGRlZmluaXRpb24gZnJvbSBmb3JtIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIGNvbHVtbiBkZWZpbml0aW9uIHRvIGJlIGFkZGVkIHRvIHRoZSBncmlkT3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDb2x1bW5EZWZpbml0aW9uKG92ZXJsYXk/OiBib29sZWFuKTogQ29sRGVmW10ge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50cy5tYXAoKGVsKSA9PiB7XG4gICAgICBsZXQgY29sOiBDb2xEZWYgPSB0aGlzLmdyaWRBcGkuZ2V0Q29sdW1uRGVmaW5pdGlvbihlbCk7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbCwge1xuICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxuICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICBmaWVsZDogZWwubmFtZSxcbiAgICAgICAgcmVmRGF0YToge1xuICAgICAgICAgIC4uLmNvbC5yZWZEYXRhLFxuICAgICAgICAgIF9lb0Zvcm1FbGVtZW50OiBlbCxcbiAgICAgICAgICBfc2l0dWF0aW9uOiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGV0IGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zO1xuICAgICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgICAgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5O1xuICAgICAgfVxuICAgICAgbGV0IGNhY2hlZENvbHVtbiA9IGNhY2hlZENvbHVtbnMuZmluZChmID0+IGYucW5hbWUgPT09IGVsLnFuYW1lKTtcbiAgICAgIGlmIChjYWNoZWRDb2x1bW4pIHtcbiAgICAgICAgY29sLndpZHRoID0gY2FjaGVkQ29sdW1uLndpZHRoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbDtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJvdygpIHtcbiAgICBjb25zdCByb3dEYXRhID0ge307XG4gICAgY29uc3QgYXN5bmNGZXRjaGVzID0gW107XG4gICAgdGhpcy5fZWxlbWVudHNcbiAgICAgIC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgaWYgKGVsLmRlZmF1bHR2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcm93RGF0YVtlbC5uYW1lXSA9IGVsLmRlZmF1bHR2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChlbC5kZWZhdWx0dmFsdWVmdW5jdGlvbikge1xuICAgICAgICAgIHJvd0RhdGFbZWwubmFtZV0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0RGVmYXVsdFZhbHVlKGVsLmRlZmF1bHR2YWx1ZWZ1bmN0aW9uKTtcbiAgICAgICAgICBpZiAoZWwuZGVmYXVsdHZhbHVlZnVuY3Rpb24gPT09ICdDVVJSRU5UX1VTRVInKSB7XG4gICAgICAgICAgICBhc3luY0ZldGNoZXMucHVzaCh0aGlzLnJlc29sdmVPcmdEYXRhTWV0YShlbC5uYW1lLCByb3dEYXRhW2VsLm5hbWVdKSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgaWYgKGFzeW5jRmV0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JrSm9pbihhc3luY0ZldGNoZXMpLnN1YnNjcmliZSgocmVzOiB7a2V5OiBzdHJpbmcsIHZhbHVlOiBhbnl9W10pID0+IHtcbiAgICAgICAgcmVzLmZvckVhY2gociA9PiB7XG4gICAgICAgICAgcm93RGF0YVtyLmtleV0gPSByLnZhbHVlO1xuICAgICAgICB9KVxuICAgICAgICB0aGlzLnNldEVkaXRSb3coLTEsIHJvd0RhdGEpO1xuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KC0xLCByb3dEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVPcmdEYXRhTWV0YShlbGVtZW50TmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QodmFsdWUpLnBpcGUoXG4gICAgICBtYXAocmVzID0+ICh7XG4gICAgICAgIGtleTogYCR7ZWxlbWVudE5hbWV9X21ldGFgLFxuICAgICAgICB2YWx1ZTogcmVzXG4gICAgICB9KSlcbiAgICApXG4gIH1cblxuICBlZGl0Um93KGV2ZW50KSB7XG4gICAgdGhpcy5zZXRFZGl0Um93KGV2ZW50Lm5vZGUuaWQsIGV2ZW50Lm5vZGUuZGF0YSk7XG4gIH1cblxuICBvbkVkaXRDb21wbGV0ZShldmVudCkge1xuICAgIC8vdG9kbzogaXMgaXQgb2Jzb2xldGU/XG4gIH1cblxuICBwcml2YXRlIHNldEVkaXRSb3coaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XG4gICAgLy8gc2V0dXAgdGhlIHJvdyB0byBiZSBlZGl0ZWQuIEJlc2lkZSBzb21lIHByb3BlcnRpZXMsIHRoZVxuICAgIC8vIHJvdyBjb250YWlucyBhIGZvcm0gbW9kZWwgYW5kIGZvcm0gZGF0YS4gSWYgdGhlIHBhcmVudCBmb3JtIG1vZGVsXG4gICAgLy8gcHJvdmlkZWQgYSBzY3JpcHQsIHRoaXMgd2lsbCBiZSBhZGRlZCBhcyB3ZWxsLCBzbyBlZGl0aW5nIGEgcm93IHdpbGxcbiAgICAvLyByZXNwZWN0IHRoZSBmb3JtIHNjcmlwdC5cbiAgICB0aGlzLmVkaXRpbmdSb3cgPSB7XG4gICAgICBzaXR1YXRpb246IHRoaXMuX3BhcmFtcy5zaXR1YXRpb24sXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB0YWJsZUVsZW1lbnQ6IHRoaXMuX3BhcmFtcy5lbGVtZW50LFxuICAgICAgZm9ybU9wdGlvbnM6IHtcbiAgICAgICAgZm9ybU1vZGVsOiB7XG4gICAgICAgICAgc2l0dWF0aW9uOiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uLCAgLy8gcmVxdWlyZWQgYnkgb2JqZWN0IGZvcm0gZm9yIHJlYWRpbmcgZGF0YVxuICAgICAgICAgIGVsZW1lbnRzOiBbe1xuICAgICAgICAgICAgdHlwZTogJ28ybUdyb3VwJyxcbiAgICAgICAgICAgIGVsZW1lbnRzOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2VsZW1lbnRzKSlcbiAgICAgICAgICB9XVxuICAgICAgICB9LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5fcGFyYW1zLmVsZW1lbnQucmVhZG9ubHlcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdEVkaXRSb3coKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEVkaXRSb3coKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaSl7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZGVzZWxlY3RBbGwoKTtcbiAgICAgIGlmICh0aGlzLmVkaXRpbmdSb3cgJiYgdGhpcy5lZGl0aW5nUm93LmluZGV4ICE9PSAtMSkge1xuICAgICAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5nZXRSb3dOb2RlKCcnICsgdGhpcy5lZGl0aW5nUm93LmluZGV4KTtcbiAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGFibGVWYWx1ZSgpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaSkge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLnNldFJvd0RhdGEodGhpcy5pbm5lclZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy52YWx1ZS5pbmNsdWRlcygnaXNOZXdSb3cnKSkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnZhbHVlWydpc05ld1JvdyddO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGNhbmNlbFJvd0VkaXQoKSB7XG4gICAgaWYgKHRoaXMucm93RWRpdCkge1xuICAgICAgdGhpcy5yb3dFZGl0LmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0aW5nUm93ID0gbnVsbDtcbiAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5lZGl0aW5nUm93ID0gbnVsbDtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZVJvdyhyb3dSZXN1bHQ6IGFueSkge1xuICAgIGNvbnN0IGlzTmV3Um93ID0gcm93UmVzdWx0LmluZGV4ID09PSAtMTtcbiAgICBpZiAoaXNOZXdSb3cpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZS5wdXNoKHsuLi5yb3dSZXN1bHQucm93RGF0YSwgLi4ue2lzTmV3Um93OiB0cnVlfX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgLy8gdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0gPSB7Li4udGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0sIC4uLnJvd1Jlc3VsdC5yb3dEYXRhfTtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF1bZWwubmFtZV0gPSByb3dSZXN1bHQucm93RGF0YVtlbC5uYW1lXTtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdW2VsLm5hbWUgKyAnX21ldGEnXSkge1xuICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdW2VsLm5hbWUgKyAnX21ldGEnXSA9IHJvd1Jlc3VsdC5yb3dEYXRhW2VsLm5hbWUgKyAnX21ldGEnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgIGlmICh0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChpc05ld1JvdyAmJiAhcm93UmVzdWx0LmNyZWF0ZU5ld1Jvdykge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxLCB0aGlzLmlubmVyVmFsdWVbdGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDFdKTtcbiAgICB9IGVsc2UgaWYgKHJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuYWRkUm93KCk7XG4gICAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5nZXRSb3dOb2RlKCcnICsgKHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxKSk7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZW5zdXJlTm9kZVZpc2libGUocm93Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyhyb3dSZXN1bHQuaW5kZXgsIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBjb3B5Um93KHJvd1Jlc3VsdDogYW55KSB7XG4gICAgcm93UmVzdWx0LmluZGV4ID0gLTE7XG4gICAgdGhpcy5pbm5lclZhbHVlLnB1c2goey4uLnJvd1Jlc3VsdC5yb3dEYXRhLCAuLi57aXNOZXdSb3c6IHRydWV9fSk7XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gICAgaWYgKHJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuYWRkUm93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyh0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb3dSZXN1bHQucm93RGF0YSkpKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVSb3coaW5kZXg6IG51bWJlcikge1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IGluZGV4ID09IHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggPyB0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSA6IGluZGV4O1xuICAgICAgICAgIHRoaXMuc2V0RWRpdFJvdyhuZXh0SW5kZXgsIHRoaXMuaW5uZXJWYWx1ZVtuZXh0SW5kZXhdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNhbmNlbFJvd0VkaXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgY2xlYXJSb3coaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuaW5uZXJWYWx1ZVtpbmRleF0gPSB7fTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgfVxuXG4gIGV4cG9ydENTVigpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5leHBvcnREYXRhQXNDc3Yoe1xuICAgICAgLi4udGhpcy5ncmlkQXBpLmNzdkV4cG9ydFBhcmFtcyxcbiAgICAgIGZpbGVOYW1lOiB0aGlzLl9wYXJhbXMuZWxlbWVudC5sYWJlbFxuICAgIH0pO1xuICB9XG5cbiAgc2l6ZVRvRml0KG92ZXJsYXk/OiBib29sZWFuKSB7XG4gICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRGlhbG9nKCkge1xuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5yZWZyZXNoVmlldygpO1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVGFibGVEYXRhKCk6IGJvb2xlYW4ge1xuICAgIC8vIHRvZG86IGltcGxlbWVudFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVRhYmxlRGF0YSgpID8gbnVsbCA6IHtcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBvbk1vdXNlRG93bigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5zdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2tGb3JQZW5kaW5nVGFza3ModGhpcy5yb3dFZGl0LnBlbmRpbmdUYXNrSWQpKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yb3dFZGl0LmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgbGV0IHJvd0luZGV4ID0gdGhpcy5ncmlkQXBpLmdldFJvd0luZGV4KCRldmVudC50YXJnZXQsICdhZy1ib2R5Jyk7XG4gICAgICAgIGlmIChyb3dJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5nZXRSb3dOb2RlKCcnICsgcm93SW5kZXgpLnNldFNlbGVjdGVkKHRydWUsIHRydWUpO1xuICAgICAgICAgICRldmVudC50YXJnZXQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNvcnRDaGFuZ2VkKCl7XG4gICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCk7XG4gICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICB9XG5cbiAgb25DZWxsQ2xpY2tlZCgkZXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIGlmICgkZXZlbnQuY29sRGVmLmNlbGxDbGFzcyA9PT0gJ3JvdXRlci1saW5rLWNlbGwnKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55LCBvdmVybGF5PzogYm9vbGVhbikge1xuICAgIGxldCBjb2x1bW5zRGVmaW5pdGlvbiA9IEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OO1xuICAgIGxldCBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1ucztcbiAgICBpZiAob3ZlcmxheSkge1xuICAgICAgY29sdW1uc0RlZmluaXRpb24gPSBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTl9PVkVSTEFZO1xuICAgICAgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5O1xuICAgIH1cbiAgICBsZXQgY29sID0gY2FjaGVkQ29sdW1ucy5maW5kKGMgPT4gYy5xbmFtZSA9PT0gY29sdW1uLmNvbERlZi5yZWZEYXRhLnFuYW1lKTtcbiAgICBpZiAoY29sKSB7XG4gICAgICBjb2wud2lkdGggPSBjb2x1bW4uYWN0dWFsV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlZENvbHVtbnMucHVzaCh7cW5hbWU6IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSwgd2lkdGg6IGNvbHVtbi5hY3R1YWxXaWR0aH0pO1xuICAgIH1cbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oY29sdW1uc0RlZmluaXRpb24sIGNhY2hlZENvbHVtbnMpO1xuICB9XG5cbiAgdG9nZ2xlUHJldmlldygpIHtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gIXRoaXMuc2hvd1ByZXZpZXc7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdzaG93UHJldmlldycsIHRoaXMuc2hvd1ByZXZpZXcpO1xuICB9XG59XG4iXX0=
|
|
454
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHlFQUF5RSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUUsYUFBYSxFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBRzlHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRSxPQUFPLEVBQXdCLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlILE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFnRHJGLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxvQkFBb0I7SUF1RGpFLFlBQW9CLGFBQTRCLEVBQVUsY0FBcUMsRUFDdEYsT0FBb0IsRUFBVSxTQUEyQixFQUFVLGNBQW1DLEVBQVUsWUFBMEI7UUFDakosS0FBSyxFQUFFLENBQUM7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Y0FBYyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7QUF0Y00sNENBQWtCLEdBQUcsOENBQThDLENBQUM7QUFDcEUsb0RBQTBCLEdBQUcsc0RBQXNELENBQUM7O1lBeEI1RixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLG1zSkFBa0Q7Z0JBSWxELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO3dCQUN4RCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQzt3QkFDeEQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7O2FBQ0Y7OztZQXJEaUUsYUFBYTtZQU52RSxxQkFBcUI7WUFLckIsV0FBVztZQUM4RCxnQkFBZ0I7WUFBcEQsbUJBQW1CO1lBQWpDLFlBQVk7OztzQkErRHhDLFNBQVMsU0FBQyxTQUFTO3FCQUVuQixLQUFLOzhCQW9DTCxZQUFZLFNBQUMsNkJBQTZCLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDdEQsWUFBWSxTQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ2xELFlBQVksU0FBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUNoRCxZQUFZLFNBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi8uLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0b3IsIEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQge0dyaWRPcHRpb25zLCBDb2xEZWYsIE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtHcmlkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgRW5haW9FdmVudCwgRXZlbnRTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7Q2xpZW50U2lkZVJvd01vZGVsTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsJztcbmltcG9ydCB7Q3N2RXhwb3J0TW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY3N2LWV4cG9ydCc7XG5pbXBvcnQge2ZvcmtKb2lufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Um93RWRpdENvbXBvbmVudH0gZnJvbSAnLi9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xuXG4vLyBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgdGFibGUgY29tcG9uZW50XG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29tcG9uZW50UGFyYW1zIHtcbiAgLy8gY3VycmVudCBmb3JtIHNpdHVhdGlvbiAoRURJVCwgU0VBUkNIIG9yIENSRUFURSlcbiAgc2l0dWF0aW9uOiBzdHJpbmc7XG4gIC8vIHRhYmxlIHNpemUgKG1lZGl1bSwgbGFyZ2UpXG4gIHNpemU6IHN0cmluZztcbiAgLy8gdGhlIHRhYmxlcyBmcm9tIGVsZW1lbnRcbiAgZWxlbWVudDogYW55O1xuICAvLyB0aGUgZG1zIG9iamVjdCB0aGUgZm9ybSBpcyBhdHRhY2hlZCB0byAobmVlZGVkIGZvciBwcmV2aWV3IGluIGRpYWxvZylcbiAgb2JqZWN0PzogRG1zT2JqZWN0O1xufVxuXG4vLyByZXByZXNlbnRhdGlvbiBvZiBhIHJvdyB3aGlsZSBlZGl0aW5nXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRSb3cge1xuICBzaXR1YXRpb246IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICB0YWJsZUVsZW1lbnQ6IGFueTtcbn1cblxuLy8gcmVzdWx0IG9mIGVkaXRpbmcgYSB0YWJsZXMgcm93XG5leHBvcnQgaW50ZXJmYWNlIEVkaXRSb3dSZXN1bHQge1xuICBpbmRleDogbnVtYmVyO1xuICByb3dEYXRhOiBhbnk7XG4gIGNyZWF0ZU5ld1JvdzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5zY3NzJ1xuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBwcml2YXRlIF9jYWNoZWRDb2x1bW5zOiBhbnlbXTtcbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uc092ZXJsYXk6IGFueVtdO1xuICBzdGF0aWMgQ09MVU1OU19ERUZJTklUSU9OID0gJ2VvLmZyYW1ld29yay5jYWNoZS50YWJsZXMuY29sdW1ucy5kZWZpbml0aW9uJztcbiAgc3RhdGljIENPTFVNTlNfREVGSU5JVElPTl9PVkVSTEFZID0gJ2VvLmZyYW1ld29yay5jYWNoZS50YWJsZXMub3ZlcmxheS5jb2x1bW5zLmRlZmluaXRpb24nO1xuXG4gIHB1YmxpYyBtb2R1bGVzOiBNb2R1bGVbXSA9IFtDbGllbnRTaWRlUm93TW9kZWxNb2R1bGUsIENzdkV4cG9ydE1vZHVsZV07XG5cbiAgQFZpZXdDaGlsZCgncm93RWRpdCcpIHJvd0VkaXQ6IFJvd0VkaXRDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgc2V0IHBhcmFtcyhwOiBUYWJsZUNvbXBvbmVudFBhcmFtcykge1xuICAgIGlmIChwKSB7XG4gICAgICB0aGlzLl9wYXJhbXMgPSBwO1xuICAgICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5zaXplID0gJ3N1cGVyc21hbGwnO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5fcGFyYW1zLnNpemUpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1zLnNpemUgPSAnc21hbGwnO1xuICAgICAgfVxuICAgICAgdGhpcy5ncmlkUmVhZHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2VsZW1lbnRzID0gcC5lbGVtZW50LmVsZW1lbnRzO1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gdGhpcy5jcmVhdGVDb2x1bW5EZWZpbml0aW9uKCk7XG4gICAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLnB1c2goe2hlYWRlck5hbWU6ICcnLCBjb2xJZDogJ2FjdGlvbnMnLCB3aWR0aDogMzQsIG1pbldpZHRoOiAzNCwgcGlubmVkOiAncmlnaHQnLCBjZWxsUmVuZGVyZXI6IHRoaXMuYWN0aW9uc0NlbGxSZW5kZXJlcn0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuY3JlYXRlQ29sdW1uRGVmaW5pdGlvbih0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ncmlkUmVhZHkgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBfcGFyYW1zOiBUYWJsZUNvbXBvbmVudFBhcmFtcztcbiAgcHJpdmF0ZSBfZWxlbWVudHM6IGFueVtdO1xuICBncmlkUmVhZHkgPSBmYWxzZTtcbiAgdmFsdWU6IGFueVtdO1xuICBpbm5lclZhbHVlOiBhbnlbXTtcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBvdmVybGF5R3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBlZGl0aW5nUm93OiBFZGl0Um93O1xuICBzaG93RGlhbG9nID0gZmFsc2U7XG4gIHNob3dQcmV2aWV3ID0gZmFsc2U7XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLmFsdC5zaGlmdC5jJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYycsIFsnJGV2ZW50J10pXG4gIGNvcHlDZWxsSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuZ3JpZEFwaS5jb3B5VG9DbGlwYm9hcmQoZXZlbnQsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLCBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHVibGljIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XG4gICAgICBjb250ZXh0OiB0aGlzLmdyaWRBcGkuZ2V0Q29udGV4dCgpLFxuICAgICAgaGVhZGVySGVpZ2h0OiAzMCxcbiAgICAgIHJvd0hlaWdodDogMzAsXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gICAgICBhY2NlbnRlZFNvcnQ6IHRydWUsXG4gICAgICAvLyBzdXBwcmVzc0NlbGxTZWxlY3Rpb246IHRydWUsXG4gICAgICByb3dTZWxlY3Rpb246ICdzaW5nbGUnLFxuICAgICAgc3VwcHJlc3NNb3ZhYmxlQ29sdW1uczogdHJ1ZSxcbiAgICAgIGVuYWJsZUZpbHRlcjogZmFsc2UsXG4gICAgICBzdXBwcmVzc05vUm93c092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0xvYWRpbmdPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NDb250ZXh0TWVudTogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnRhYmxlQ29tcG9uZW50ID0gdGhpcztcblxuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPntcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ3JpZEFwaS5nZXRDb250ZXh0KCksXG4gICAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgICAgcm93SGVpZ2h0OiAzMCxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgICAgIGFjY2VudGVkU29ydDogdHJ1ZSxcbiAgICAgIC8vIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgICBzdXBwcmVzc01vdmFibGVDb2x1bW5zOiB0cnVlLFxuICAgICAgZW5hYmxlRmlsdGVyOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzTm9Sb3dzT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTG9hZGluZ092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0NvbnRleHRNZW51OiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5jb250ZXh0LnRhYmxlQ29tcG9uZW50ID0gdGhpcztcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5yb3dDbGFzc1J1bGVzID0ge1xuICAgICAgJ25ldy1yb3cnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbXMuZGF0YS5pc05ld1Jvdykge1xuICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZGF0YS5pc05ld1JvdztcbiAgICAgICAgICBkZWxldGUgcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuaW5uZXJWYWx1ZVtwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5pbm5lclZhbHVlLmxlbmd0aCAtIDFdLmlzTmV3Um93O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMudGFza3MkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGFza3MgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5zdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gISF0aGlzLnJvd0VkaXQgJiYgISF0YXNrcy5pbmNsdWRlcyh0aGlzLnJvd0VkaXQucGVuZGluZ1Rhc2tJZCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9jYWNoZWRDb2x1bW5zID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OKSB8fCBbXTtcbiAgICB0aGlzLl9jYWNoZWRDb2x1bW5zT3ZlcmxheSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTl9PVkVSTEFZKSB8fCBbXTtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gISF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2VvLnRhYmxlLnNob3dQcmV2aWV3Jyk7XG4gIH1cblxuICBhY3Rpb25zQ2VsbFJlbmRlcmVyKHBhcmFtcykge1xuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmIChwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgZGl2LmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwiYWN0aW9uLWljb25cIiBpZD1cImFjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9XCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PmA7XG4gICAgICBsZXQgY2xlYXJJY29uID0gZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoYCNhY3Rpb25JY29uLSR7cGFyYW1zLnJvd0luZGV4fWApWzBdO1xuICAgICAgY2xlYXJJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuY2xlYXJSb3cocGFyYW1zLnJvd0luZGV4KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpdi5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz1cImFjdGlvbi1pY29uXCIgaWQ9XCJhY3Rpb25JY29uLSR7cGFyYW1zLnJvd0luZGV4fVwiPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgPHBhdGggZD1cIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5gO1xuICAgICAgbGV0IGRlbGV0ZUljb24gPSBkaXYucXVlcnlTZWxlY3RvckFsbChgI2FjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9YClbMF07XG4gICAgICBkZWxldGVJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuZGVsZXRlUm93KHBhcmFtcy5yb3dJbmRleCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgLy8gZm9yIHNlYXJjaCByb3cgZGF0YSB3aWxsIGFsd2F5cyBiZSBvbmUgZW1wdHkgcm93XG4gICAgICAvLyB0b2RvOiByZS1lbmFibGUgYWdhaW4gd2hlbiBzZWFyY2ggaW4gdGFibGVzIGlzIHN1cHBvcnRlZFxuICAgICAgdmFsdWUgPSBbe31dO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IHZhbHVlIDogW107XG4gICAgLy8gY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGFjdHVhbCB2YWx1ZSBmb3IgaW50ZXJuYWwgdXNhZ2VcbiAgICB0aGlzLmlubmVyVmFsdWUgPSBVdGlscy5mb3JtRGF0YVBhcnNlKFV0aWxzLmZvcm1EYXRhU3RyaW5naWZ5KHRoaXMudmFsdWUpKTtcblxuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmlubmVyVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaSkge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLnNldFJvd0RhdGEodGhpcy5pbm5lclZhbHVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3RFZGl0Um93KCksIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5yb3dEYXRhID0gdGhpcy5pbm5lclZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGNvbHVtbiBkZWZpbml0aW9uIGZyb20gZm9ybSBlbGVtZW50LlxuICAgKiBAcmV0dXJucyBjb2x1bW4gZGVmaW5pdGlvbiB0byBiZSBhZGRlZCB0byB0aGUgZ3JpZE9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ29sdW1uRGVmaW5pdGlvbihvdmVybGF5PzogYm9vbGVhbik6IENvbERlZltdIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHMubWFwKChlbCkgPT4ge1xuICAgICAgbGV0IGNvbDogQ29sRGVmID0gdGhpcy5ncmlkQXBpLmdldENvbHVtbkRlZmluaXRpb24oZWwpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjb2wsIHtcbiAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcbiAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgZmllbGQ6IGVsLm5hbWUsXG4gICAgICAgIHJlZkRhdGE6IHtcbiAgICAgICAgICAuLi5jb2wucmVmRGF0YSxcbiAgICAgICAgICBfZW9Gb3JtRWxlbWVudDogZWwsXG4gICAgICAgICAgX3NpdHVhdGlvbjogdGhpcy5fcGFyYW1zLnNpdHVhdGlvblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxldCBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1ucztcbiAgICAgIGlmIChvdmVybGF5KSB7XG4gICAgICAgIGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zT3ZlcmxheTtcbiAgICAgIH1cbiAgICAgIGxldCBjYWNoZWRDb2x1bW4gPSBjYWNoZWRDb2x1bW5zLmZpbmQoZiA9PiBmLnFuYW1lID09PSBlbC5xbmFtZSk7XG4gICAgICBpZiAoY2FjaGVkQ29sdW1uKSB7XG4gICAgICAgIGNvbC53aWR0aCA9IGNhY2hlZENvbHVtbi53aWR0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2w7XG4gICAgfSk7XG4gIH1cblxuICBhZGRSb3coKSB7XG4gICAgY29uc3Qgcm93RGF0YSA9IHt9O1xuICAgIGNvbnN0IGFzeW5jRmV0Y2hlcyA9IFtdO1xuICAgIHRoaXMuX2VsZW1lbnRzXG4gICAgICAuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIGlmIChlbC5kZWZhdWx0dmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJvd0RhdGFbZWwubmFtZV0gPSBlbC5kZWZhdWx0dmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZWwuZGVmYXVsdHZhbHVlZnVuY3Rpb24pIHtcbiAgICAgICAgICByb3dEYXRhW2VsLm5hbWVdID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldERlZmF1bHRWYWx1ZShlbC5kZWZhdWx0dmFsdWVmdW5jdGlvbik7XG4gICAgICAgICAgaWYgKGVsLmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnQ1VSUkVOVF9VU0VSJykge1xuICAgICAgICAgICAgYXN5bmNGZXRjaGVzLnB1c2godGhpcy5yZXNvbHZlT3JnRGF0YU1ldGEoZWwubmFtZSwgcm93RGF0YVtlbC5uYW1lXSkpXG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGlmIChhc3luY0ZldGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9ya0pvaW4oYXN5bmNGZXRjaGVzKS5zdWJzY3JpYmUoKHJlczoge2tleTogc3RyaW5nLCB2YWx1ZTogYW55fVtdKSA9PiB7XG4gICAgICAgIHJlcy5mb3JFYWNoKHIgPT4ge1xuICAgICAgICAgIHJvd0RhdGFbci5rZXldID0gci52YWx1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5zZXRFZGl0Um93KC0xLCByb3dEYXRhKTtcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdygtMSwgcm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlT3JnRGF0YU1ldGEoZWxlbWVudE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0KHZhbHVlKS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICBrZXk6IGAke2VsZW1lbnROYW1lfV9tZXRhYCxcbiAgICAgICAgdmFsdWU6IHJlc1xuICAgICAgfSkpXG4gICAgKVxuICB9XG5cbiAgZWRpdFJvdyhldmVudCkge1xuICAgIHRoaXMuc2V0RWRpdFJvdyhldmVudC5ub2RlLmlkLCBldmVudC5ub2RlLmRhdGEpO1xuICB9XG5cbiAgb25FZGl0Q29tcGxldGUoZXZlbnQpIHtcbiAgICAvL3RvZG86IGlzIGl0IG9ic29sZXRlP1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFZGl0Um93KGluZGV4OiBudW1iZXIsIGRhdGE6IGFueSkge1xuICAgIC8vIHNldHVwIHRoZSByb3cgdG8gYmUgZWRpdGVkLiBCZXNpZGUgc29tZSBwcm9wZXJ0aWVzLCB0aGVcbiAgICAvLyByb3cgY29udGFpbnMgYSBmb3JtIG1vZGVsIGFuZCBmb3JtIGRhdGEuIElmIHRoZSBwYXJlbnQgZm9ybSBtb2RlbFxuICAgIC8vIHByb3ZpZGVkIGEgc2NyaXB0LCB0aGlzIHdpbGwgYmUgYWRkZWQgYXMgd2VsbCwgc28gZWRpdGluZyBhIHJvdyB3aWxsXG4gICAgLy8gcmVzcGVjdCB0aGUgZm9ybSBzY3JpcHQuXG4gICAgdGhpcy5lZGl0aW5nUm93ID0ge1xuICAgICAgc2l0dWF0aW9uOiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgdGFibGVFbGVtZW50OiB0aGlzLl9wYXJhbXMuZWxlbWVudCxcbiAgICAgIGZvcm1PcHRpb25zOiB7XG4gICAgICAgIGZvcm1Nb2RlbDoge1xuICAgICAgICAgIHNpdHVhdGlvbjogdGhpcy5fcGFyYW1zLnNpdHVhdGlvbiwgIC8vIHJlcXVpcmVkIGJ5IG9iamVjdCBmb3JtIGZvciByZWFkaW5nIGRhdGFcbiAgICAgICAgICBlbGVtZW50czogW3tcbiAgICAgICAgICAgIHR5cGU6ICdvMm1Hcm91cCcsXG4gICAgICAgICAgICBlbGVtZW50czogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9lbGVtZW50cykpXG4gICAgICAgICAgfV1cbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuX3BhcmFtcy5lbGVtZW50LnJlYWRvbmx5XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3RFZGl0Um93KCksIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RFZGl0Um93KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkpe1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgICBpZiAodGhpcy5lZGl0aW5nUm93ICYmIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCk7XG4gICAgICAgIHJvd05vZGUuc2V0U2VsZWN0ZWQodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5lbnN1cmVOb2RlVmlzaWJsZShyb3dOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlVmFsdWUoKSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmlubmVyVmFsdWUpO1xuICAgIGlmICh0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkpIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnJvd0RhdGEgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMudmFsdWUuaW5jbHVkZXMoJ2lzTmV3Um93JykpKSB7XG4gICAgICBkZWxldGUgdGhpcy52YWx1ZVsnaXNOZXdSb3cnXTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBjYW5jZWxSb3dFZGl0KCkge1xuICAgIGlmICh0aGlzLnJvd0VkaXQpIHtcbiAgICAgIHRoaXMucm93RWRpdC5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICAgIHRoaXMuZWRpdGluZ1JvdyA9IG51bGw7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuZWRpdGluZ1JvdyA9IG51bGw7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVSb3cocm93UmVzdWx0OiBhbnkpIHtcbiAgICBjb25zdCBpc05ld1JvdyA9IHJvd1Jlc3VsdC5pbmRleCA9PT0gLTE7XG4gICAgaWYgKGlzTmV3Um93KSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUucHVzaCh7Li4ucm93UmVzdWx0LnJvd0RhdGEsIC4uLntpc05ld1JvdzogdHJ1ZX19KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIC8vIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdID0gey4uLnRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdLCAuLi5yb3dSZXN1bHQucm93RGF0YX07XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdW2VsLm5hbWVdID0gcm93UmVzdWx0LnJvd0RhdGFbZWwubmFtZV07XG4gICAgICAgIGlmICh0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XVtlbC5uYW1lICsgJ19tZXRhJ10pIHtcbiAgICAgICAgICB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XVtlbC5uYW1lICsgJ19tZXRhJ10gPSByb3dSZXN1bHQucm93RGF0YVtlbC5uYW1lICsgJ19tZXRhJ107XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoaXNOZXdSb3cgJiYgIXJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyh0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSwgdGhpcy5pbm5lclZhbHVlW3RoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxXSk7XG4gICAgfSBlbHNlIGlmIChyb3dSZXN1bHQuY3JlYXRlTmV3Um93KSB7XG4gICAgICB0aGlzLmFkZFJvdygpO1xuICAgICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArICh0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSkpO1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3cocm93UmVzdWx0LmluZGV4LCB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgY29weVJvdyhyb3dSZXN1bHQ6IGFueSkge1xuICAgIHJvd1Jlc3VsdC5pbmRleCA9IC0xO1xuICAgIHRoaXMuaW5uZXJWYWx1ZS5wdXNoKHsuLi5yb3dSZXN1bHQucm93RGF0YSwgLi4ue2lzTmV3Um93OiB0cnVlfX0pO1xuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgIGlmIChyb3dSZXN1bHQuY3JlYXRlTmV3Um93KSB7XG4gICAgICB0aGlzLmFkZFJvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3codGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm93UmVzdWx0LnJvd0RhdGEpKSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlUm93KGluZGV4OiBudW1iZXIpIHtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBpbmRleCA9PSB0aGlzLmlubmVyVmFsdWUubGVuZ3RoID8gdGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEgOiBpbmRleDtcbiAgICAgICAgICB0aGlzLnNldEVkaXRSb3cobmV4dEluZGV4LCB0aGlzLmlubmVyVmFsdWVbbmV4dEluZGV4XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jYW5jZWxSb3dFZGl0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGNsZWFyUm93KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmlubmVyVmFsdWVbaW5kZXhdID0ge307XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gIH1cblxuICBleHBvcnRDU1YoKSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZXhwb3J0RGF0YUFzQ3N2KHtcbiAgICAgIC4uLnRoaXMuZ3JpZEFwaS5jc3ZFeHBvcnRQYXJhbXMsXG4gICAgICBmaWxlTmFtZTogdGhpcy5fcGFyYW1zLmVsZW1lbnQubGFiZWxcbiAgICB9KTtcbiAgfVxuXG4gIHNpemVUb0ZpdChvdmVybGF5PzogYm9vbGVhbikge1xuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRpYWxvZygpIHtcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkucmVmcmVzaFZpZXcoKTtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRhYmxlRGF0YSgpOiBib29sZWFuIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUYWJsZURhdGEoKSA/IG51bGwgOiB7XG4gICAgICB0YWJsZToge1xuICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgb25Nb3VzZURvd24oJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrRm9yUGVuZGluZ1Rhc2tzKHRoaXMucm93RWRpdC5wZW5kaW5nVGFza0lkKSkge1xuICAgICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5zdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm93RWRpdC5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgIGxldCByb3dJbmRleCA9IHRoaXMuZ3JpZEFwaS5nZXRSb3dJbmRleCgkZXZlbnQudGFyZ2V0LCAnYWctYm9keScpO1xuICAgICAgICBpZiAocm93SW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArIHJvd0luZGV4KS5zZXRTZWxlY3RlZCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAkZXZlbnQudGFyZ2V0LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Tb3J0Q2hhbmdlZCgpe1xuICAgIGxldCByb3dOb2RlID0gdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmdldFJvd05vZGUoJycgKyB0aGlzLmVkaXRpbmdSb3cuaW5kZXgpO1xuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5lbnN1cmVOb2RlVmlzaWJsZShyb3dOb2RlKTtcbiAgfVxuXG4gIG9uQ2VsbENsaWNrZWQoJGV2ZW50KSB7XG4gICAgaWYgKCRldmVudC5yb3dJbmRleCAhPT0gbnVsbCkge1xuICAgICAgaWYgKCEkZXZlbnQubm9kZS5ncm91cCAmJiAkZXZlbnQuZGF0YSkge1xuICAgICAgICBpZiAoJGV2ZW50LmNvbERlZi5jZWxsQ2xhc3MgPT09ICdyb3V0ZXItbGluay1jZWxsJykge1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5vcGVuUm91dGVyTGluaygkZXZlbnQuZXZlbnQsICdhZy1yb3cnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uUmVzaXplZChjb2x1bW46IGFueSwgb3ZlcmxheT86IGJvb2xlYW4pIHtcbiAgICBsZXQgY29sdW1uc0RlZmluaXRpb24gPSBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTjtcbiAgICBsZXQgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnM7XG4gICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgIGNvbHVtbnNEZWZpbml0aW9uID0gRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudC5DT0xVTU5TX0RFRklOSVRJT05fT1ZFUkxBWTtcbiAgICAgIGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zT3ZlcmxheTtcbiAgICB9XG4gICAgbGV0IGNvbCA9IGNhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKGNvbHVtbnNEZWZpbml0aW9uLCBjYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIHRvZ2dsZVByZXZpZXcoKSB7XG4gICAgdGhpcy5zaG93UHJldmlldyA9ICF0aGlzLnNob3dQcmV2aWV3O1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnZW8udGFibGUuc2hvd1ByZXZpZXcnLCB0aGlzLnNob3dQcmV2aWV3KTtcbiAgfVxufVxuIl19
|