nuxeo-development-framework 6.1.5 → 6.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nuxeo-development-framework.umd.js +688 -1009
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +7 -5
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +9 -9
- package/esm2015/lib/components/ndf-filters/models/base-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +9 -4
- package/esm2015/lib/components/ndf-filters/pipes/evaluate-label.pipe.js +3 -3
- package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +2 -1
- package/esm2015/lib/components/pdf-tron/pdftron/silent-pdftron.service.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/graph-definition.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/pipes/check-condition.pipe.js +3 -3
- package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +28 -15
- package/esm2015/lib/components/reports/ndf-reports/services/reports-hooks.service.js +3 -3
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/services/table-hooks.service.js +4 -4
- package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
- package/esm2015/lib/shared/index.js +5 -6
- package/esm2015/lib/shared-services/global-pdftron.service.js +2 -1
- package/esm2015/public-api.js +12 -13
- package/fesm2015/nuxeo-development-framework.js +644 -938
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.d.ts +1 -2
- package/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.d.ts +3 -3
- package/lib/components/ndf-filters/models/base-field-config.d.ts +1 -1
- package/lib/components/ndf-filters/pipes/check-condition.pipe.d.ts +1 -2
- package/lib/components/reports/ndf-reports/models/details.d.ts +1 -1
- package/lib/components/reports/ndf-reports/models/graph-definition.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +2 -2
- package/lib/components/tables/ndf-table/models/table-config.d.ts +1 -1
- package/lib/shared/index.d.ts +7 -5
- package/package.json +1 -1
- package/public-api.d.ts +11 -12
- package/esm2015/lib/shared/evaluator/evaluator.js +0 -318
- package/esm2015/lib/shared/evaluator/index.js +0 -3
- package/esm2015/lib/shared/evaluator/types.js +0 -2
- package/lib/shared/evaluator/evaluator.d.ts +0 -79
- package/lib/shared/evaluator/index.d.ts +0 -2
- package/lib/shared/evaluator/types.d.ts +0 -18
|
@@ -724,6 +724,7 @@ _PdftronComponent_docLoaded = new WeakMap(), _PdftronComponent_instances = new W
|
|
|
724
724
|
});
|
|
725
725
|
}, _PdftronComponent_afterLoadWebViewer = function _PdftronComponent_afterLoadWebViewer(instance) {
|
|
726
726
|
var _a, _b;
|
|
727
|
+
instance.CoreControls.disableEmbeddedJavaScript();
|
|
727
728
|
this.isArabic ? instance.setLanguage('ar') : instance.setLanguage('en');
|
|
728
729
|
this.pdftronService.instance = this.webViewerInstance = instance;
|
|
729
730
|
if (this.correspondance.facets.indexOf('ctocr') > -1 && ((_b = (_a = this.correspondance) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b['ctocr:recognizedJson'])) {
|
|
@@ -849,4 +850,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
849
850
|
}], SignatureEvent: [{
|
|
850
851
|
type: Output
|
|
851
852
|
}] } });
|
|
852
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFLeEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQTZENUIsWUFDUSxHQUFzQixFQUNyQixjQUE4QixFQUM5QixLQUFtQixFQUNJLFFBQWdCLEVBQ3ZDLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDbkIsV0FBVztRQU5uQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNJLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFBOztRQTlEbEMsa0JBQWEsR0FBRyxLQUFL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LE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXpDLFFBQVE7c0JBRFAsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLEtBQUs7Z0JBQ0ksMkJBQTJCO3NCQUFwQyxNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFUCxNQUFNO3NCQURMLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5qZWN0LFxyXG5cdElucHV0LFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFdlYlZpZXdlciBmcm9tICdAcGRmdHJvbi93ZWJ2aWV3ZXInO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZGZ0cm9uU2VydmljZSB9IGZyb20gJy4vcGRmdHJvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBQX0JBU0VfSFJFRiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNlY3VyZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9zZWN1cmUucGlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTaWxlbnRQZGZUcm9uU2VydmljZSB9IGZyb20gJy4vc2lsZW50LXBkZnRyb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQSByZXVzYWJsZSBmaWxlIHZpZXdlciBiYXNlZCBvbiBQREZUcm9uIExpYnJhcnlcclxuICogQHRpdGxlXHJcbiAqIFBERlRyb24gVmlld2VyXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxhcHAtcGRmdHJvblxyXG4gKiAgIFtmaWxlRGF0YV09XCJmaWxlRGF0YVwiXHJcbiAqICAgW2VkaXRNb2RlXT1cImZhbHNlXCJcclxuICogICBbZG9jSWRdPVwiZmlsZUlkXCJcclxuICogICBbZmlsZVRpdGxlXT1cImZpbGUudGl0bGVcIlxyXG4gKiA+XHJcbiAqIDwvYXBwLXBkZnRyb24+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1wZGZ0cm9uJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGRmdHJvbi5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcGRmdHJvbi5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW1NlY3VyZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZGZ0cm9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblx0QFZpZXdDaGlsZCgnZmlsZVZpZXdlcicsIHsgc3RhdGljOiB0cnVlIH0pIHZpZXdlclJlZjogRWxlbWVudFJlZjtcclxuXHR3ZWJWaWV3ZXJJbnN0YW5jZTtcclxuXHQvKiogRGlzYWJsZS9FbmFibGUgQW5ub3RhdGlvbiAqL1xyXG5cdEBJbnB1dCgpXHJcblx0ZWRpdE1vZGU6IGJvb2xlYW47XHJcblx0QElucHV0KCkgYWN0aW9uQ2xpY2tlZCA9IGZhbHNlOyAvLyB1c2VkIHRvIGtub3cgaWYgdGhlcmUgaXMgYWN0aW9uIGNsaWNrZWQgb3V0c2lkZSB0byBzdGFydCBlZGl0IG1vZGUgb3Igbm90XHJcblx0aXNEb2N1bWVudExvYWRpbmc6IGJvb2xlYW47XHJcblx0aXNGZXRjaGluZzogYm9vbGVhbjtcclxuXHQvKiogRG9jdW1lbnQgdGl0bGUgKi9cclxuXHRASW5wdXQoKVxyXG5cdGZpbGVUaXRsZTogc3RyaW5nO1xyXG5cdC8qKiBEb2N1bWVudCBJRCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0ZG9jSWQ6IHN0cmluZztcclxuXHRASW5wdXQoKVxyXG5cdERPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vcGRmJztcclxuXHRASW5wdXQoKVxyXG5cdGZpbGVEYXRhO1xyXG5cdEBJbnB1dCgpXHJcblx0Zml0TW9kZTogJ0ZpdFdpZHRoJyB8ICdGaXRQYWdlJyB8ICdab29tJyA9ICdGaXRXaWR0aCc7XHJcblx0QElucHV0KClcclxuXHRhdXRoSGVhZGVyOiBzdHJpbmc7XHJcblx0QElucHV0KClcclxuXHRmaWxlVVJMOiBzdHJpbmc7XHJcblx0QElucHV0KClcclxuXHRjb3JyZXNwb25kYW5jZTtcclxuXHJcblx0QElucHV0KCkgc2VjcmVjeVByb3BlcnR5OyAvLyB1c2VkIHRvIGFkZCB3YXRlcm1hcmsgYWNvcmRpbmcgY2VydGFpbiBzZWNyZWN5IGxldmVsXHJcblx0QElucHV0KCkgZWRpdGluZ1R5cGU7XHJcblx0QElucHV0KCkgdXNlclNpZ25hdHVyZXM7XHJcblx0QElucHV0KCkgc2VhcmNoU3RyaW5nID0gJyc7IC8vIHN0cmluZyB0byBzZWFyY2ggZm9yIGl0IGluIHRoZSBkb2N1bWVudFxyXG5cclxuXHRASW5wdXQoKSB0cmFja1NpZ25hdHVyZSA9IGZhbHNlOyAvLyB0byBlbmFibGUgdHJhY2tpbmcgc2lnbmF0dXJlIHBvc2l0aW9uIGFuZCBlbWl0IGl0IGFmdGVyIGV2ZXJ5IGNoYW5nZSBpdCBzaWduYXR1cmVcclxuXHRAT3V0cHV0KCkgb25TaWduYXR1cmVUcmFja2luZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gZXZlbnQgdG8gZW1pdCBzaWduYXR1cmUgY2hhbmdlc1xyXG5cclxuXHRASW5wdXQoKSB1c2VPdXRzaWRlQW5vdGF0aW9ucyA9IGZhbHNlOyAvLyBmbGFnZSB0byBpbmRpY2F0IGlmIHVzaW5nIG91dCBzaWRlIGFub3RhdGlvbnMgb3Igbm90XHJcblx0QElucHV0KCkgaW1wb3J0ZWRBbm90YXRpb25zOyAvLyBpbXBvcnRlZCBhbm90YXRpb25zIGZyb20gb3V0c2lkZVxyXG5cdEBJbnB1dCgpIGFsbG93RG93bmxvYWRTZWNyZXRGaWxlID0gdHJ1ZTsgLy8gYWxsb3cgb3IgcHJldmVudCBkb3dubG9hZCBzY3JlY3QgZmlsZXNcclxuXHRASW5wdXQoKSBhbGxvd1ByaW50U2VjcmV0RmlsZSA9IHRydWU7IC8vIGFsbG93IG9yIHByZXZlbnQgcHJpbnQgc2NyZWN0IGZpbGVzXHJcblx0QElucHV0KCkgbmVnZWxlY3RBZGRpbmdXYXRlck1hcmsgPSBmYWxzZTsgLy8gZG9uJ3QgYWRkIHdhdGVybWFyayBoZXJlIHdoYXRldmVyIGVhcyB0aGUgY29uZGl0aW9ucyAod2UgbWF5IGFkZCBpdCBmcm9tIG91dHNpZGUgb3Igbm90IGFkZCBpdCBhdCBhbGwpXHJcblx0QElucHV0KCkgZmxhdHRlbkFub3RhdGlvbiA9IGZhbHNlOyAvLyB1c2VkIHRvIGZsYXR0ZW4gYW5vdGF0aW9uIGludG8gdGhlIGRvY3VtZW50IHRvIGF2b2lkIGVkaXRpbmcgb24gdGhlbSBhZnRlciBzYXZpbmdcclxuXHRASW5wdXQoKSByZWNvZ25pemVkSnNvbjtcclxuXHRASW5wdXQgKCkgaXNTaWduZWREb2N1bWVudCA9IGZhbHNlOyAvLyBmbGFnZSB0byBpbmRpY2F0ZSBpZiB0aGlzIGRvY3VtZW50IGlzIHNpZ25lZCB3aXRoIG91dHNpZGUgcGxhdGZvcm0gdG8gZW5hYmxlIGRpZmZyZW50IHdheSBvZiBkb3dubG9hZGluZyBpdFxyXG5cdEBJbnB1dCAoKSBhbGxvd1ByaW50RnJvbU91dFNpZGUgPSBmYWxzZTsgLy9mbGFnZSB0byBpbmRpY2F0ZSBpZiB0byB1c2UgcHJpbnQgb2YgcGRmdHJvbiBvciBlbWl0IHRoZSBldmVudCBvdXRzaWRlIHRvIGhhbmRsZSBwcmludGZyb20gb3V0c2lkZVxyXG5cdEBPdXRwdXQoKSBvbkRvd25sb2FkaW5nU2lnbmVkRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHVzZWQgdG8gdGVsbCBvdXRzaWRlIHdlIG5lZWQgZG93bmxvYWQgc2lnbmVkIGRvY3VtZW50IHRvIGRvd25sb2FkIGl0IHdpdGggcHJvcGVyIHdheSBkaWZmcmVudCBmcm9tIGV4cG9ydCBvZiBwZGZ0cm9uXHJcblx0QE91dHB1dCgpIG9uQWRkaW5nQW5vdGF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyB1c2VkIHRvIGV4cG9ydCBhbGwgYW5vdGF0aW9ucyB0byBvdXRzaWRlXHJcblx0QE91dHB1dCgpXHJcblx0ZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBTaWduYXR1cmVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdXNlZCB0byBleHBvcnQgc2lnbmF0dXJlIHRvIG91dHNpZGVcclxuXHRmaXJzdFRpbWVMb2FkID0gdHJ1ZTsgLy9mbGFnZSB0byBjb250cm9sIGltcG9ydGluZyBzaWduYXR1cmVzIGluIHRoZSBmaXJzdCB0aW1lIGxvYWQgb25seVxyXG5cdGZpcnN0U2lnbmF0dXJlTG9hZCA9IHRydWU7IC8vIGZsYWdlIHRvIHBhc3MgZmlyc3QgbG9hZCBvZiBpbXBvcnRlZCBzaWduYXR1cmVzIHdpdGhvdXQgZW1pdHRpbmcgdGhlIGV2ZW50XHJcblx0bmV3U2lnbkNyZWF0aW9uID0gZmFsc2U7IC8vIGZsYWdlIHRvIGluZGljYXRlIHNpZ25hdHVyZSBjcmVhdGlvbiBpcyBjcmVhdGVkIG9yIGNob29zZWQgZnJvbSBzdG9yZWQgb25lc1xyXG5cdHRyYW5zZWxhdGlvblN1YnNjcml0aW9uOiBTdWJzY3JpcHRpb247XHJcblx0aXNBcmFiaWM7XHJcblxyXG5cdC8vc2lsZW50IHBkZlRyb25cclxuXHRzaWxlbnRQZGZUcm9uOiBIVE1MRWxlbWVudDtcclxuXHRtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xyXG5cdHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHByaXZhdGUgcGRmdHJvblNlcnZpY2U6IFBkZnRyb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBudXhlbzogTnV4ZW9TZXJ2aWNlLFxyXG5cdFx0QEluamVjdChBUFBfQkFTRV9IUkVGKSBwcml2YXRlIGJhc2VIcmVmOiBzdHJpbmcsXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBzaWxlbnRQZGZUcm9uU2VydmljZTogU2lsZW50UGRmVHJvblNlcnZpY2UsXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnRcclxuXHQpIHt9XHJcblxyXG5cdGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkgPSB0aGlzLnNlYXJjaFN0cmluZy50cmltKCkgPyB0aGlzLnNlYXJjaFN0cmluZy5zcGxpdCgnLCcpIDogW107XHJcblx0XHRpZiAodGhpcy5maWxlVGl0bGUpIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcucHB0JykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcucHB0eCcpKSB7XHJcblx0XHRcdFx0dGhpcy5ET0NVTUVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcuZG9jJykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vbXN3b3JkJztcclxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmZpbGVUaXRsZS5lbmRzV2l0aCgnLmRvY3gnKSkge1xyXG5cdFx0XHRcdHRoaXMuRE9DVU1FTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5zaWxlbnRQZGZUcm9uU2VydmljZS5pc0VuYWJsZWQpIHtcclxuXHRcdFx0W3RoaXMuc2lsZW50UGRmVHJvbiwgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZV0gPSBhd2FpdCB0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmdldFdlYlZpZXdlcigpO1xyXG5cdFx0XHR0aGlzLiNhZnRlckxvYWRXZWJWaWV3ZXIodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSk7XHJcblxyXG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLiN1cGRhdGVTaWxlbnRQZGZUcm9uKCkpO1xyXG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcclxuXHJcblx0XHRcdHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy4jdXBkYXRlU2lsZW50UGRmVHJvbigpKTtcclxuXHRcdFx0dGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuXHRcdFx0dGhpcy4jdXBkYXRlU2lsZW50UGRmVHJvbigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0V2ViVmlld2VyKFxyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdHBhdGg6IHRoaXMuYmFzZUhyZWYgKyAnL2Fzc2V0cy9wZGZ0cm9ucycsXHJcblx0XHRcdFx0XHRmb3JjZUNsaWVudFNpZGVJbml0OiB0cnVlLFxyXG5cdFx0XHRcdFx0c3RyZWFtaW5nOiB0cnVlLFxyXG5cdFx0XHRcdFx0ZnVsbEFQSTogdGhpcy5pbXBvcnRGdWxsQXBpKCksXHJcblx0XHRcdFx0XHRsaWNlbnNlS2V5OiB0aGlzLmVudmlyb25tZW50LnBkZnRyb25MaWNlbmNlS2V5LFxyXG5cdFx0XHRcdFx0Y3NzOiB0aGlzLmlzQXJhYmljXHJcblx0XHRcdFx0XHRcdD8gdGhpcy5iYXNlSHJlZiArICcvYXNzZXRzL3N0eWxlcy9hci1teXBkZnRyb24uY3NzJ1xyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuYmFzZUhyZWYgKyAnL2Fzc2V0cy9zdHlsZXMvZW4tbXlwZGZ0cm9uLmNzcycsXHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uVXNlcjpcclxuXHRcdFx0XHRcdFx0dGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMuZmlyc3ROYW1lICsgJyAnICsgdGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMubGFzdE5hbWUsXHJcblx0XHRcdFx0XHRkaXNhYmxlZEVsZW1lbnRzOiBbJ2Rvd25sb2FkQnV0dG9uJywgJ3ByaW50QnV0dG9uJ11cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnRcclxuXHRcdFx0KS50aGVuKGFzeW5jIChpbnN0YW5jZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuI2FmdGVyTG9hZFdlYlZpZXdlcihpbnN0YW5jZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjdXBkYXRlU2lsZW50UGRmVHJvbigpIHtcclxuXHRcdGNvbnN0IHJlY3QgPSB0aGlzLnZpZXdlclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLnNpbGVudFBkZlRyb24uc3R5bGUsIHtcclxuXHRcdFx0cG9zaXRpb246ICdhYnNvbHV0ZScsXHJcblx0XHRcdHRvcDogYCR7cmVjdC50b3B9cHhgLFxyXG5cdFx0XHRsZWZ0OiBgJHtyZWN0LmxlZnR9cHhgLFxyXG5cdFx0XHR3aWR0aDogYCR7cmVjdC53aWR0aH1weGAsXHJcblx0XHRcdGhlaWdodDogYCR7cmVjdC5oZWlnaHR9cHhgLFxyXG5cdFx0XHR6SW5kZXg6ICc5OTknLFxyXG5cdFx0XHRkaXNwbGF5OiAnYmxvY2snXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCNhZnRlckxvYWRXZWJWaWV3ZXIoaW5zdGFuY2UpIHtcclxuXHRcdHRoaXMuaXNBcmFiaWMgPyBpbnN0YW5jZS5zZXRMYW5ndWFnZSgnYXInKSA6IGluc3RhbmNlLnNldExhbmd1YWdlKCdlbicpO1xyXG5cdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuXHRcdGlmICh0aGlzLmNvcnJlc3BvbmRhbmNlLmZhY2V0cy5pbmRleE9mKCdjdG9jcicpID4gLTEgJiYgdGhpcy5jb3JyZXNwb25kYW5jZT8ucHJvcGVydGllcz8uWydjdG9jcjpyZWNvZ25pemVkSnNvbiddKSB7XHJcblx0XHRcdHRoaXMuZmlsZVdpdGhPY3IgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnBhZ2VzID0gdGhpcy5yZWNvZ25pemVkSnNvbj9KU09OLnBhcnNlKHRoaXMucmVjb2duaXplZEpzb24pIDogSlNPTi5wYXJzZSh0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbJ2N0b2NyOnJlY29nbml6ZWRKc29uJ10pO1xyXG5cdFx0XHQvLyBvdmVycmlkZSBzZWFyY2ggZnVudGlvbiB0byB1c2Ugb3VyIHNlYXJjaCBpbiBvY3Igbm90IGRlZnVsdCBzZWFyY2hcclxuXHRcdFx0aW5zdGFuY2Uub3ZlcnJpZGVTZWFyY2hFeGVjdXRpb24odGhpcy5zZWFyY2hGbik7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBpZiBubyBvY3IgdGhlbiBhZGQgc2VhcmNoIGxpc25lciB0byBsaXNuZSB0byBpbnRlcm5hbCBzZWFyY2ggYW5kIGNhdGNoIHJlc3VsdHNcclxuXHRcdFx0dGhpcy5hZGRTZWFyY2hMaXN0bmVyKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmFkZFByaW50QnV0dG9uKCk7XHJcblx0XHR0aGlzLmFkZERvd25sb2FkQnV0dG9uKCk7XHJcblx0XHR0aGlzLmltcG9ydFNpZ25hdHVyZSgpO1xyXG5cdFx0dGhpcy5leHBvcnRpbmdTaWduYXR1cmUoKTtcclxuXHRcdHRoaXMuZGVsZXRlQW5ub3RhdGlvbigpO1xyXG5cdFx0dGhpcy5leHBvcnRpbmdTYXZlZFNpZ25hdHVyZSgpO1xyXG5cdFx0aWYgKHRoaXMudXNlT3V0c2lkZUFub3RhdGlvbnMpIHtcclxuXHRcdFx0dGhpcy5pbXBvcnRBbm90YXRpb25zRnJvbU91dHNpZGUoKTtcclxuXHRcdFx0dGhpcy5leHBvcnRBbm90YXRpb25zVG9PdXRzaWRlKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5zZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMoe1xyXG5cdFx0XHQvLyBzZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMgYWNjZXB0cyBib3RoIEFubm90YXRpb25zLkNvbG9yIG9iamVjdHMgb3IgJ3JnYmEnIHN0cmluZ3NcclxuXHRcdFx0c2VhcmNoUmVzdWx0OiBuZXcgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Bbm5vdGF0aW9ucy5Db2xvcigyNTAsIDIwNiwgMCwgMC41MDE5NiksXHJcblx0XHRcdGFjdGl2ZVNlYXJjaFJlc3VsdDogbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuQ29sb3IoMjUwLCAyMDYsIDAsIDAuNTAxOTYpXHJcblx0XHR9KTtcclxuXHRcdGlmICh0aGlzLnJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkubGVuZ3RoICE9PSAwKSB7XHJcblx0XHRcdHRoaXMuYXV0b21hdGljU2VhcmNoKHRoaXMucmVjaXZlZFNlYXJjaFN0cmluZ3NBcnJheSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxvYWREb2N1bWVudCgpO1xyXG5cdH1cclxuXHJcblx0Ly8gZnVudGlvbiB0byBjaGVjayB0byBpbXBvcnQgdGhlIGZ1bGwgYXBpIG9yIG5vdCBhY2NvcmRpbmcgdG8gYWN0aW9uIG9mIGFkZCBzdGlja2VyIGV4aXN0IG9yIG5vdFxyXG5cdGltcG9ydEZ1bGxBcGkoKXtcclxuXHRcdGxldCB1c2VGdWxsQXBpID0gZmFsc2U7XHJcbiAgICAgICAgLy8gbGV0IGFjdGlvbkV4aXN0ID0gWydhZGRRcmNvZGUnICwgJ3NlbGVjdFFyY29kZSddLnNvbWUoaXRlbSA9PiB0aGlzLmNvcnJlc3BvbmRhbmNlLmNvbnRleHRQYXJhbWV0ZXJzLmFjdGlvbnMuaW5jbHVkZXMoaXRlbSkpO1xyXG5cdFx0bGV0IGxvY2tNb2RlRXhpc3QgPSB0aGlzLnBkZnRyb25TZXJ2aWNlLm1vZGUgPT09ICdhZGRRcmNvZGUnO1xyXG5cdFx0aWYodGhpcy5mbGF0dGVuQW5vdGF0aW9uICYmIGxvY2tNb2RlRXhpc3Qpe1xyXG5cdFx0XHR1c2VGdWxsQXBpID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB1c2VGdWxsQXBpXHJcblx0fVxyXG5cclxuXHRpbXBvcnRBbm90YXRpb25zRnJvbU91dHNpZGUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cclxuXHRcdGRvY3VtZW50Vmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuaW1wb3J0QW5ub3RhdGlvbnModGhpcy5pbXBvcnRlZEFub3RhdGlvbnMpO1xyXG5cdFx0fSk7XHJcblx0XHQvLyAudGhlbihhbm5vdGF0aW9ucyA9PiB7XHJcblx0XHQvLyAgIGFubm90YXRpb25zLmZvckVhY2goYW5ub3RhdGlvbiA9PiB7XHJcblx0XHQvLyAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIucmVkcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uKTtcclxuXHRcdC8vICAgfSk7XHJcblx0XHQvLyB9KTtcclxuXHR9XHJcblxyXG5cdC8vIGV4Y3RyYWN0IGFsbCBhbm90YXRpb25zIG9uIHRoZSBmaWxlIGFuZCBzZW5kIGl0IG91dCBzaWRlIHRvIGJlIHNhdmVkIGFuZCBsZWF2ZSB0aGUgZmlsZSBhcyBpdCBpcyB3aXRob3V0IGFueSBhbm90YXRpb25zIG9uIGl0XHJcblx0ZXhwb3J0QW5vdGF0aW9uc1RvT3V0c2lkZSgpIHtcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLm9uKCdhbm5vdGF0aW9uQ2hhbmdlZCcsIChhbm5vdGF0aW9ucywgYWN0aW9uLCB7IGltcG9ydGVkIH0pID0+IHtcclxuXHRcdFx0aWYgKGltcG9ydGVkKSByZXR1cm47XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmV4cG9ydEFubm90YXRpb25zKCkudGhlbigoZXhjdHJhY3RlZEFub3RhdGlvbnMpID0+IHtcclxuXHRcdFx0XHR0aGlzLm9uQWRkaW5nQW5vdGF0aW9uLmVtaXQoZXhjdHJhY3RlZEFub3RhdGlvbnMpO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0Ly8gaWYgdHJhY2tpbmcgc2lnbmF0dXJlIGxvY2F0aW9uIGlzIGVuYWJsZSB0aGVuIGVtaXQgc2lnbmF0dXJlIG91dHNpZGUgd2l0aCBldmVyeSBjaGFuZ2VzIGluIGl0XHJcblx0XHRcdGlmICh0aGlzLnRyYWNrU2lnbmF0dXJlKSB7XHJcblx0XHRcdFx0dGhpcy5vblNpZ25hdHVyZVRyYWNraW5nLmVtaXQoeyBhbm90YXRpb25zOiBhbm5vdGF0aW9ucywgYWN0aW9uOiBhY3Rpb24gfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aW1wb3J0U2lnbmF0dXJlKCkge1xyXG5cdFx0Y29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuXHRcdGNvbnN0IHNpZ25hdHVyZVRvb2wgPSBkb2N1bWVudFZpZXdlci5nZXRUb29sKCdBbm5vdGF0aW9uQ3JlYXRlU2lnbmF0dXJlJyk7XHJcblxyXG5cdFx0ZG9jdW1lbnRWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5maXJzdFRpbWVMb2FkKSB7XHJcblx0XHRcdFx0c2lnbmF0dXJlVG9vbC5pbXBvcnRTaWduYXR1cmVzKFsuLi50aGlzLnVzZXJTaWduYXR1cmVzXSk7XHJcblx0XHRcdFx0dGhpcy5maXJzdFRpbWVMb2FkID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0aW5nU2F2ZWRTaWduYXR1cmUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHRcdFNpZ25hdHVyZUNyZWF0ZVRvb2wub24oJ3NpZ25hdHVyZVNhdmVkJywgKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLmZpcnN0U2lnbmF0dXJlTG9hZCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdzaWduYXR1cmUgc2F2ZWQgdHJpZ2VyZWQnKTtcclxuXHRcdFx0XHR0aGlzLm5ld1NpZ25DcmVhdGlvbiA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5maXJzdFNpZ25hdHVyZUxvYWQgPSBmYWxzZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0aW5nU2lnbmF0dXJlKCkge1xyXG5cdFx0Y29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuXHRcdGNvbnN0IFNpZ25hdHVyZUNyZWF0ZVRvb2wgPSBkb2N1bWVudFZpZXdlci5nZXRUb29sKCdBbm5vdGF0aW9uQ3JlYXRlU2lnbmF0dXJlJyk7XHJcblx0XHRTaWduYXR1cmVDcmVhdGVUb29sLm9uKCdhbm5vdGF0aW9uQWRkZWQnLCAoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRpZiAoYW5ub3RhdGlvbiAmJiB0aGlzLm5ld1NpZ25DcmVhdGlvbikge1xyXG5cdFx0XHRcdHRoaXMubmV3U2lnbkNyZWF0aW9uID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5leHRyYWN0QW5vdGF0aW9uKGFubm90YXRpb24sIGRvY3VtZW50Vmlld2VyKTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhhbm5vdGF0aW9uKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRleHRyYWN0QW5vdGF0aW9uKGFubm90YXRpb24sIGRvY3VtZW50Vmlld2VyKSB7XHJcblx0XHRpZiAoYW5ub3RhdGlvblsnaW1hZ2UnXSkge1xyXG5cdFx0XHQvLyBjb252ZXJ0IGJhc2U2NCBzaWduYXR1cmUgaW50byBmaWxlIGFuZCBlbWl0IGl0IHRvIG91dCBzaWRlXHJcblx0XHRcdGxldCBiYXNlNjRJbWcgPSBhbm5vdGF0aW9uWydpbWFnZSddWydjdXJyZW50U3JjJ107XHJcblx0XHRcdHZhciBhcnIgPSBiYXNlNjRJbWcuc3BsaXQoJywnKSxcclxuXHRcdFx0XHRtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV0sXHJcblx0XHRcdFx0YnN0ciA9IGF0b2IoYXJyWzFdKSxcclxuXHRcdFx0XHRuID0gYnN0ci5sZW5ndGgsXHJcblx0XHRcdFx0dThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcclxuXHRcdFx0d2hpbGUgKG4tLSkge1xyXG5cdFx0XHRcdHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGxldCBuYW1lID0gbWltZS5yZXBsYWNlKCcvJywgJy4nKTtcclxuXHRcdFx0bGV0IG15RmlsZSA9IG5ldyBGaWxlKFt1OGFycl0sICdteVNpZ25hdHVyZS5wbmcnLCB7IHR5cGU6IG1pbWUgfSk7XHJcblx0XHRcdHRoaXMuU2lnbmF0dXJlRXZlbnQuZW1pdCh7IGRhdGE6IG15RmlsZSwgZXZlbnROYW1lOiAnZXhwb3J0JyB9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiwgZG9jdW1lbnRWaWV3ZXIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiwgZG9jVmlld2VyKSB7XHJcblx0XHQvLyBDcmVhdGUgYSBuZXcgQ2FudmFzIHRvIGRyYXcgdGhlIEFubm90YXRpb24gb25cclxuXHRcdGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG5cdFx0Ly8gUmVmZXJlbmNlIHRoZSBhbm5vdGF0aW9uIGZyb20gdGhlIERvY3VtZW50XHJcblx0XHRjb25zdCBwYWdlTWF0cml4ID0gZG9jVmlld2VyLmdldERvY3VtZW50KCkuZ2V0UGFnZU1hdHJpeChhbm5vdGF0aW9uLlBhZ2VOdW1iZXIpO1xyXG5cdFx0Ly8gU2V0IHRoZSBoZWlnaHQgJiB3aWR0aCBvZiB0aGUgY2FudmFzIHRvIG1hZGVsZXRlU2F2ZWRTaWduYXR1cmV0Y2ggdGhlIGFubm90YXRpb25cclxuXHRcdGNhbnZhcy5oZWlnaHQgPSBhbm5vdGF0aW9uLkhlaWdodDtcclxuXHRcdGNhbnZhcy53aWR0aCA9IGFubm90YXRpb24uV2lkdGg7XHJcblx0XHRjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHRcdC8vIFRyYW5zbGF0ZSB0aGUgQW5ub3RhdGlvbiB0byB0aGUgdG9wIFRvcCBMZWZ0IENvcm5lciBvZiB0aGUgQ2FudmFzIGllICgwLCAwKVxyXG5cdFx0Y3R4LnRyYW5zbGF0ZSgtYW5ub3RhdGlvbi5YLCAtYW5ub3RhdGlvbi5ZKTtcclxuXHRcdC8vIERyYXcgdGhlIEFubm90YXRpb24gb250byB0aGUgQ2FudmFzXHJcblx0XHRhbm5vdGF0aW9uLmRyYXcoY3R4LCBwYWdlTWF0cml4KTtcclxuXHRcdC8vIENvbnZlcnQgdGhlIENhbnZhcyB0byBhIEJsb2IgT2JqZWN0IGZvciBVcGxvYWRcclxuXHRcdGNhbnZhcy50b0Jsb2IoKGJsb2IpID0+IHtcclxuXHRcdFx0Ly8gQ2FsbCB5b3VyIEJsb2IgU3RvcmFnZSBVcGxvYWQgRnVuY3Rpb25cclxuXHRcdFx0bGV0IG5hbWUgPSBibG9iLnR5cGUucmVwbGFjZSgnLycsICcuJyk7XHJcblx0XHRcdGxldCBteUZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIG5hbWUpO1xyXG5cdFx0XHR0aGlzLlNpZ25hdHVyZUV2ZW50LmVtaXQoeyBkYXRhOiBteUZpbGUsIGV2ZW50TmFtZTogJ2V4cG9ydCcgfSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUFubm90YXRpb24oKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHRcdFNpZ25hdHVyZUNyZWF0ZVRvb2wub24oJ3NpZ25hdHVyZURlbGV0ZWQnLCAoYW5ub3RhdGlvbiwgaW5kZXgpID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ3RoZXJlIHdlcmUgYW5ub3RhdGlvbnMgZGVsZXRlZCcpO1xyXG5cdFx0XHR0aGlzLnVzZXJTaWduYXR1cmVzLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdHRoaXMuU2lnbmF0dXJlRXZlbnQuZW1pdCh7IGRhdGE6IHsgc2lnbmF0dXJlOiBhbm5vdGF0aW9uLCBpbmRleDogaW5kZXggfSwgZXZlbnROYW1lOiAnZGVsZXRlJyB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0YWRkRG93bmxvYWRCdXR0b24oKSB7XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuYWxsb3dEb3dubG9hZFNlY3JldEZpbGUgfHxcclxuXHRcdFx0KCF0aGlzLmFsbG93RG93bmxvYWRTZWNyZXRGaWxlICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAmJlxyXG5cdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gPT09ICdOb3JtYWwnKVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0SGVhZGVySXRlbXMoKGhlYWRlcikgPT4ge1xyXG5cdFx0XHRcdGhlYWRlci5wdXNoKHtcclxuXHRcdFx0XHRcdHR5cGU6ICdhY3Rpb25CdXR0b24nLFxyXG5cdFx0XHRcdFx0aW1nOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYmkgYmktZmlsZS1lYXJtYXJrLWFycm93LWRvd25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+IDxwYXRoIGQ9XCJNOC41IDYuNWEuNS41IDAgMCAwLTEgMHYzLjc5M0w2LjM1NCA5LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDIgMmEuNS41IDAgMCAwIC43MDggMGwyLTJhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDEwLjI5M1Y2LjV6XCIvPiA8cGF0aCBkPVwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwiLz48L3N2Zz4nLFxyXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuaXNBcmFiaWMgPyAn2KrZhtiy2YrZhCcgOiAnRG93bmxvYWQnLFxyXG5cdFx0XHRcdFx0b25DbGljazogYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBpZiB3YXNuJ3Qgc2lnbmVkIGRvY3VtZW50IHRoZW4gZG93bmxvYWQgaXQgdXNpbmcgcGRmdHJvbiBub3JtYWwgZG9ud25sb2FkXHJcblx0XHRcdFx0XHRcdGlmKCF0aGlzLmlzU2lnbmVkRG9jdW1lbnQpe1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHhmZGZTdHJpbmcgPSBhd2FpdCB0aGlzLnBkZnRyb25TZXJ2aWNlLmluc3RhbmNlLmFubm90TWFuYWdlci5leHBvcnRBbm5vdGF0aW9ucygpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmaWxlbmFtZTogdGhpcy5jb3JyZXNwb25kYW5jZS50aXRsZSA/IHRoaXMuY29ycmVzcG9uZGFuY2UudGl0bGUgOiAnbXlEb2N1bWVudC5wZGYnLFxyXG5cdFx0XHRcdFx0XHRcdFx0eGZkZlN0cmluZyxcclxuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVBbm5vdGF0aW9uczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0XHRcdGRvd25sb2FkVHlwZTogJ3BkZidcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UuZG93bmxvYWRQZGYob3B0aW9ucyk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ldmVudHMubmV4dCgnZG93bmxvYWQnKTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0Ly8gaWYgaXQgd2FzIHNpZ25lZCBkb2N1bWVudCB0aGVuIGRvd25sb2FkIGl0IGJ5IGZ1bmN0aW9uIGZyb20gb3V0c2lkZSB0byBhdm9pZCBcclxuXHRcdFx0XHRcdFx0XHQvLyBsb29zaW5nIHNpZ25pbmcgaW5mb3JtYXRpb24gdGhhdCBoYXBwZW5zIGlmIGkgZG93bmxvYWQgaXQgZnJvbSBwZGZ0cm9uIGl0c2VsZlxyXG5cdFx0XHRcdFx0XHRcdHRoaXMub25Eb3dubG9hZGluZ1NpZ25lZERvY3VtZW50LmVtaXQoKVxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBsZXQgdXJsID0gdGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzLmNvbnRlbnQuZGF0YTtcclxuXHRcdFx0XHRcdFx0Ly8gbGV0IGZpbGVOYW1lID0gdGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzLmNvbnRlbnQubmFtZTtcclxuXHRcdFx0XHRcdFx0Ly8gaWYgKHVybCAmJiBmaWxlTmFtZSkge1xyXG5cdFx0XHRcdFx0XHQvLyAgIGxldCBzYWZlVXJsID0gdGhpcy5zZWN1cmVQaXBlLnRyYW5zZm9ybSh1cmwpO1xyXG5cdFx0XHRcdFx0XHQvLyAgIHNhZmVVcmwuc3Vic2NyaWJlKCh1cmw6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuaHJlZiA9IHVybC5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuY2xpY2soKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblx0XHRcdFx0XHRcdC8vICAgICB0aGlzLmV2ZW50cy5uZXh0KCdkb3dubG9hZCcpO1xyXG5cdFx0XHRcdFx0XHQvLyAgIH0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YWRkUHJpbnRCdXR0b24oKSB7XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuYWxsb3dQcmludFNlY3JldEZpbGUgfHxcclxuXHRcdFx0KCF0aGlzLmFsbG93UHJpbnRTZWNyZXRGaWxlICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAmJlxyXG5cdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gPT09ICdOb3JtYWwnKVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0SGVhZGVySXRlbXMoKGhlYWRlcikgPT4ge1xyXG5cdFx0XHRcdGhlYWRlci5wdXNoKHtcclxuXHRcdFx0XHRcdHR5cGU6ICdhY3Rpb25CdXR0b24nLFxyXG5cdFx0XHRcdFx0aW1nOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojYWJiMGM0O308L3N0eWxlPjwvZGVmcz48dGl0bGU+aWNvbiAtIGhlYWRlciAtIHByaW50IC0gbGluZTwvdGl0bGU+PHBhdGggY2xhc3M9XCJjbHMtMVwiIGQ9XCJNMjAsNkgxOFYySDZWNkg0QTIsMiwwLDAsMCwyLDh2OWEyLDIsMCwwLDAsMiwySDZ2M0gxOFYxOWgyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjAsNlpNOCw0aDhWNkg4Wm04LDE2SDhWMTZoOFptNC0zSDE4VjE0SDZ2M0g0VjhIMjBabS00LTdoMnYySDE2Wm0tMywwaDJ2MkgxM1pcIj48L3BhdGg+PC9zdmc+JyxcclxuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLmlzQXJhYmljID8gJ9i32KjYp9i52KknIDogJ1ByaW50JyxcclxuXHRcdFx0XHRcdG9uQ2xpY2s6ICgpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYodGhpcy5hbGxvd1ByaW50RnJvbU91dFNpZGUpe1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXZlbnRzLm5leHQoJ3ByaW50Jyk7XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UucHJpbnQoKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmV2ZW50cy5uZXh0KCdwcmludCcpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kaXNhYmxlRWxlbWVudHMoWydwcmludE1vZGFsJ10pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YWRkV2F0ZXJtYXJrKCkge1xyXG5cdFx0Y29uc3QgdXNlcmluZm8gPSB0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcztcclxuXHRcdHRoaXMucGRmdHJvblNlcnZpY2UuYWRkV2F0ZXJtYXJrKFxyXG5cdFx0XHRgJHt1c2VyaW5mby51c2VybmFtZX0gICAgYFxyXG5cdFx0XHQvLyBgJHt1c2VyaW5mby5maXJzdE5hbWV9ICR7XHJcblx0XHRcdC8vICAgdXNlcmluZm8ubGFzdE5hbWVcclxuXHRcdFx0Ly8gfSBgXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0I2RvY0xvYWRlZCA9ICgpID0+IHtcclxuXHRcdGxldCBmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLkZpdFdpZHRoO1xyXG5cdFx0aWYgKHRoaXMuZml0TW9kZSA9PT0gJ0ZpdFBhZ2UnKSB7XHJcblx0XHRcdGZpdE1vZGUgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLkZpdE1vZGUuRml0UGFnZTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5maXRNb2RlID09PSAnWm9vbScpIHtcclxuXHRcdFx0Zml0TW9kZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuRml0TW9kZS5ab29tO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5zZXRGaXRNb2RlKGZpdE1vZGUpO1xyXG5cdH07XHJcblx0bG9hZERvY3VtZW50KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLndlYlZpZXdlckluc3RhbmNlIHx8ICghdGhpcy5maWxlRGF0YSAmJiAhdGhpcy5maWxlVVJMKSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCB7IGRvY1ZpZXdlciwgYW5ub3RNYW5hZ2VyLCBBbm5vdGF0aW9ucyB9ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZTtcclxuXHRcdGRvY1ZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCB0aGlzLiNkb2NMb2FkZWQpO1xyXG5cdFx0aWYgKCF0aGlzLmVkaXRNb2RlKSB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnNldFJlYWRPbmx5KHRydWUpO1xyXG5cdFx0XHQvLyBpbnN0YW5jZS5lbmFibGVUb29scyhbXSk7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5maWxlVVJMICYmIHRoaXMuZmlsZVVSTC5sZW5ndGgpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5sb2FkRG9jdW1lbnQodGhpcy5maWxlVVJMLCB7XHJcblx0XHRcdFx0eG9kc3RyZWFtaW5nOiB0cnVlLFxyXG5cdFx0XHRcdGN1c3RvbUhlYWRlcnM6IHtcclxuXHRcdFx0XHRcdEF1dGhvcml6YXRpb246IHRoaXMuYXV0aEhlYWRlclxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5sb2FkRG9jdW1lbnQobmV3IEJsb2IoW25ldyBVaW50OEFycmF5KHRoaXMuZmlsZURhdGEpXSwgeyB0eXBlOiB0aGlzLkRPQ1VNRU5UX1RZUEUgfSksIHtcclxuXHRcdFx0XHRmaWxlbmFtZTogdGhpcy5maWxlVGl0bGVcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcblx0XHQvLyBpZiBub3QgbmVnZWxjdGluZyBhZGRpbmcgd2F0ZXIgbWFyayB0aGVuIGNoZWNrIGNvbmRpdGlvbnMgZm9yIGFkZGluZyBpdFxyXG5cdFx0aWYgKCF0aGlzLm5lZ2VsZWN0QWRkaW5nV2F0ZXJNYXJrKSB7XHJcblx0XHRcdGlmICh0aGlzLmNvcnJlc3BvbmRhbmNlICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHQvLyBpZiB3ZSBuZWVkIHRvIGNoZWNrIG9uIHNlY3JlY3kgbGV2ZWwgZm9yIGFkZGluZyB3YXRlciBtYXJrIG9yIG5vdFxyXG5cdFx0XHRcdGlmICh0aGlzLmVudmlyb25tZW50LmVuYWJsZVZpZXdlcldhdGVyTWFyayAmJiB0aGlzLnNlY3JlY3lQcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0Ly8gY2hlY2sgZm9yIHNlY3JlY3kgbGV2ZWwgYmVmb3IgYWRkaW5nIHdhdGVybWFya1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldICYmXHJcblx0XHRcdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gIT09ICdOb3JtYWwnXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5hZGRXYXRlcm1hcmsoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuZW52aXJvbm1lbnQuZW5hYmxlVmlld2VyV2F0ZXJNYXJrICYmICF0aGlzLnNlY3JlY3lQcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0dGhpcy5hZGRXYXRlcm1hcmsoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGV4cG9ydEFzQmxvYigpOiBQcm9taXNlPEJsb2I+IHtcclxuXHRcdGNvbnN0IGRvYyA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldERvY3VtZW50KCk7XHJcblx0XHRjb25zdCB4ZmRmU3RyaW5nID0gYXdhaXQgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZXhwb3J0QW5ub3RhdGlvbnMoKTtcclxuXHRcdGNvbnN0IGRhdGEgPSBhd2FpdCBkb2MuZ2V0RmlsZURhdGEoe1xyXG5cdFx0XHQvLyBzYXZlcyB0aGUgZG9jdW1lbnQgd2l0aCBhbm5vdGF0aW9ucyBpbiBpdFxyXG5cdFx0XHR4ZmRmU3RyaW5nXHJcblx0XHR9KTtcclxuXHRcdGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KGRhdGEpO1xyXG5cdFx0Y29uc3QgYmxvYiA9IG5ldyBCbG9iKFthcnJdLCB7IHR5cGU6IHRoaXMuRE9DVU1FTlRfVFlQRSB9KTtcclxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYmxvYik7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFZGl0KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmFjdGlvbkNsaWNrZWQpIHtcclxuXHRcdFx0Ly8gYWN0aW9uIGNsaWNrZWQgaXMgbm90IGNsaWNrZWQgdGhlbiBubyB1cGRhdGUgbW9kZSBvcGVuZWRcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kaXNhYmxlRWxlbWVudHMoW1xyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtU2hhcGVzJyxcclxuXHRcdFx0XHQndG9vbGJhckdyb3VwLUVkaXQnLFxyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtSW5zZXJ0JyxcclxuXHRcdFx0XHQndG9vbGJhckdyb3VwLUFubm90YXRlJ1xyXG5cdFx0XHRdKTtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBlZGl0IG1vZGUgb3BlbmVkIGFuZCBtdXN0IGJlIHdoZW4gYWN0aW9uIGlzIGNsaWNrZWRcclxuXHRcdFx0aWYgKHRoaXMuZWRpdGluZ1R5cGUpIHtcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLVNoYXBlcycsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUVkaXQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZSdcclxuXHRcdFx0XHRdKTtcclxuXHRcdFx0XHRsZXQgZ3JvdXA7XHJcblx0XHRcdFx0aWYgKHRoaXMuZWRpdGluZ1R5cGUgPT09ICdzaWduRG9jJykge1xyXG5cdFx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbJ3Rvb2xiYXJHcm91cC1JbnNlcnQnXSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmVkaXRpbmdUeXBlID09PSAnYW5ub3RhdGUnKSB7XHJcblx0XHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmVuYWJsZUVsZW1lbnRzKFsndG9vbGJhckdyb3VwLVNoYXBlcycsICd0b29sYmFyR3JvdXAtRWRpdCcsICd0b29sYmFyR3JvdXAtQW5ub3RhdGUnXSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZW5hYmxlRWxlbWVudHMoW1xyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1TaGFwZXMnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1FZGl0JyxcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtSW5zZXJ0JyxcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtQW5ub3RhdGUnXHJcblx0XHRcdFx0XSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkoZmFsc2UpO1xyXG5cdFx0XHQvLyB0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldFRvb2xiYXJHcm91cCgndG9vbGJhckdyb3VwLUFubm90YXRlJyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSkge1xyXG5cdFx0XHR0aGlzLnRvZ2dsZUVkaXQoKTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdGNoYW5nZXMudXJsRmlsZUNvbnRlbnQgJiZcclxuXHRcdFx0XHRjaGFuZ2VzLnVybEZpbGVDb250ZW50LnByZXZpb3VzVmFsdWUgJiZcclxuXHRcdFx0XHRjaGFuZ2VzLnVybEZpbGVDb250ZW50LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMudXJsRmlsZUNvbnRlbnQuY3VycmVudFZhbHVlXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHRoaXMubmdPbkRlc3Ryb3koKTtcclxuXHRcdFx0XHR0aGlzLm5nT25Jbml0KCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcGRmVHJvbkV2ZW50KGV2ZW50KSB7XHJcblx0XHRpZiAodGhpc1tldmVudC5hY3Rpb25dKSB7XHJcblx0XHRcdC8vIG1ldGhvZCBleGlzdHMgaW4gdGhlIGNvbXBvbmVudFxyXG5cdFx0XHQvLyAgdGhpc1tldmVudC5hY3Rpb25dKGV2ZW50LnBhcmFtcyk7IC8vIGNhbGwgaXRcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2VhcmNoIHJlc3VsdHMgc2VjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblx0cGFnZXM6IGFueTtcclxuXHRzdGFuZGFyZEhlaWdodDtcclxuXHRzdGFuZGFyZFdpZHRoO1xyXG5cdHBhZ2VIZWlnaHQ7XHJcblx0cGFnZVdpZHRoO1xyXG5cdHNhdmVkQW5vdGF0aW9ucyA9IFtdO1xyXG5cdGZpbGVXaXRoT2NyID0gZmFsc2U7XHJcblx0bmV3QW5ub3RhdGlvbnMgPSBbXTtcclxuXHRteVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuXHRyZWNpdmVkU2VhcmNoU3RyaW5nc0FycmF5ID0gW107XHJcblxyXG5cdC8vIGFkZGluZyBzZWFyY2ggbGlzbmVyIHRvIGxpc2VuIHRvIGludGVybmFsIHNlYXJjaCBmcm9tIHVpIGFuZCB3aXRob3V0IG9jclxyXG5cdGFkZFNlYXJjaExpc3RuZXIoKSB7XHJcblx0XHRjb25zdCB7IGFubm90TWFuYWdlciwgZG9jVmlld2VyLCBBbm5vdGF0aW9ucyB9ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZTtcclxuXHRcdGNvbnN0IHNlYXJjaExpc3RlbmVyID0gKHNlYXJjaFBhdHRlcm4sIG9wdGlvbnMsIHJlc3VsdHMpID0+IHtcclxuXHRcdFx0dGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuXHRcdFx0aWYgKHRoaXMuc2F2ZWRBbm90YXRpb25zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5tYXAoKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uSGlkZGVuID0gdHJ1ZTtcclxuXHRcdFx0XHRcdC8vIEFsd2F5cyByZWRyYXcgYW5ub3RhdGlvbiBpZiByZW5kZXJpbmcgd2FzIHVwZGF0ZWRcclxuXHRcdFx0XHRcdGFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIGRvbid0IGRvIGFueSBzZWFyY2ggdW50aWwgdGhlcmUgaXMgYSBzZWFyY2ggcGF0dGVyblxyXG5cdFx0XHRpZiAoc2VhcmNoUGF0dGVybi50cmltKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdC8vIGFkZCByZWRhY3Rpb24gYW5ub3RhdGlvbiBmb3IgZWFjaCBzZWFyY2ggcmVzdWx0XHJcblx0XHRcdFx0dGhpcy5uZXdBbm5vdGF0aW9ucyA9IHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uUXVhZHMgPSByZXN1bHQucXVhZHMubWFwKChxdWFkKSA9PiBxdWFkLmdldFBvaW50cygpKTtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uUGFnZU51bWJlciA9IHJlc3VsdC5wYWdlTnVtO1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5TdHJva2VDb2xvciA9IG5ldyBBbm5vdGF0aW9ucy5Db2xvcigyNTAsIDIwNiwgMCwgMC41MDE5Nik7XHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uLkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gYW5ub3RhdGlvbjtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKC4uLnRoaXMubmV3QW5ub3RhdGlvbnMpO1xyXG5cdFx0XHRcdGFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9ucyh0aGlzLm5ld0Fubm90YXRpb25zKTtcclxuXHRcdFx0XHRhbm5vdE1hbmFnZXIuZHJhd0Fubm90YXRpb25zRnJvbUxpc3QodGhpcy5uZXdBbm5vdGF0aW9ucyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0ZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGRvY1ZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCAoKSA9PiB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYWRkU2VhcmNoTGlzdGVuZXIoc2VhcmNoTGlzdGVuZXIpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBwZXJmb3JtIGF1dG9tYXRpYyBzZWFyY2ggd2hlbiBpbnRlcmluZyB0aGUgcGFnZVxyXG5cdGF1dG9tYXRpY1NlYXJjaChzZWFyY2hUZXh0QXJyYXkpIHtcclxuXHRcdGNvbnN0IHsgYW5ub3RNYW5hZ2VyLCBkb2NWaWV3ZXIsIEFubm90YXRpb25zIH0gPSB0aGlzLndlYlZpZXdlckluc3RhbmNlO1xyXG5cdFx0bGV0IHNlYXJjaE9wdGlvbnM7XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLm9wZW5FbGVtZW50cyhbJ3NlYXJjaFBhbmVsJ10pO1xyXG5cdFx0ZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuXHRcdFx0Y29uc3QgbW9kZSA9XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuUEFHRV9TVE9QIHxcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLkNvcmVDb250cm9scy5TZWFyY2guTW9kZS5ISUdITElHSFQgfFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzLlNlYXJjaC5Nb2RlLkFNQklFTlRfU1RSSU5HO1xyXG5cdFx0XHR0aGlzLm15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdOyAvLyBlbXB0eSBteSBzZWFyY2ggcmVzdWx0IHdoZW4gc3RhcnRpbmcgbmV3IHNlYXJjaFxyXG5cdFx0XHRpZiAodGhpcy5maWxlV2l0aE9jcikge1xyXG5cdFx0XHRcdC8vIGFkZCByZWRhY3Rpb24gYW5ub3RhdGlvbiBmb3IgZWFjaCBzZWFyY2ggcmVzdWx0XHJcblx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdHNlYXJjaFRleHRBcnJheS5tYXAoKHNlYXJjaFRleHQpID0+IHtcclxuXHRcdFx0XHRcdGxldCBteVNlYXJjaCA9IHNlYXJjaFRleHQuc3BsaXQoJyAnKTtcclxuXHRcdFx0XHRcdGlmIChteVNlYXJjaC5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoZW4gaSBhbSBzZWFyY2hpbmcgd2l0aCBtb3JlIHRoYW4gb25lIHdvcmRcclxuXHRcdFx0XHRcdFx0dGhpcy5wYWdlcy5wYWdlcy5mb3JFYWNoKChwYWdlLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGFuZGFyZEhlaWdodCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VIZWlnaHQoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0XHRwYWdlLnpvbmVzLmZvckVhY2goKHpvbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdHpvbmUucGFyYWdyYXBocy5mb3JFYWNoKChwYXJhZ3JhcGgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyYWdyYXBoLmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobGluZS50ZXh0LmluY2x1ZGVzKHNlYXJjaFRleHQpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsIGxpbmUsIGluZGV4ICsgMSwgcGFnZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoZW4gaSBhbSBzZWFyY2hpbmcgd2l0aCBvbmx5IG9uZSB3b3JkXHJcblx0XHRcdFx0XHRcdHRoaXMuc2VhcmNoRm9yV29yZEluQWxsUGFnZXMoc2VhcmNoVGV4dCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0ZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHRcdHRoaXMuZGlzcGFsYXlTZWFyY2hSZXN1bHRzKGRvY1ZpZXdlcik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c2VhcmNoT3B0aW9ucyA9IHtcclxuXHRcdFx0XHRcdC8vIElmIHRydWUsIGEgc2VhcmNoIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgd2lsbCBiZSBwZXJmb3JtZWQuIE90aGVyd2lzZSwgYSBzaW5nbGUgc2VhcmNoIHdpbGwgYmUgcGVyZm9ybWVkLlxyXG5cdFx0XHRcdFx0ZnVsbFNlYXJjaDogdHJ1ZSxcclxuXHRcdFx0XHRcdC8vIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBzZWFyY2ggcmV0dXJucyBhIHJlc3VsdC5cclxuXHRcdFx0XHRcdG9uUmVzdWx0OiAocmVzdWx0KSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIHdpdGggJ1BBR0VfU1RPUCcgbW9kZSwgdGhlIGNhbGxiYWNrIGlzIGludm9rZWQgYWZ0ZXIgZWFjaCBwYWdlIGhhcyBiZWVuIHNlYXJjaGVkLlxyXG5cdFx0XHRcdFx0XHRpZiAocmVzdWx0LnJlc3VsdENvZGUgPT09IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzLlNlYXJjaC5SZXN1bHRDb2RlLkZPVU5EKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uUXVhZHMgPSByZXN1bHQucXVhZHMubWFwKChxdWFkKSA9PiBxdWFkLmdldFBvaW50cygpKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhbm5vdGF0aW9uLlF1YWRzKTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLlBhZ2VOdW1iZXIgPSByZXN1bHQucGFnZU51bTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLlN0cm9rZUNvbG9yID0gbmV3IEFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlZEFub3RhdGlvbnMucHVzaChhbm5vdGF0aW9uKTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdE1hbmFnZXIuYWRkQW5ub3RhdGlvbnMoW2Fubm90YXRpb25dKTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdE1hbmFnZXIuZHJhd0Fubm90YXRpb25zRnJvbUxpc3QoW2Fubm90YXRpb25dKTtcclxuXHRcdFx0XHRcdFx0XHRkb2NWaWV3ZXIuZGlzcGxheUFkZGl0aW9uYWxTZWFyY2hSZXN1bHRzKFtyZXN1bHRdKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0c2VhcmNoVGV4dEFycmF5Lm1hcCgoc2VhcmNoZWRUZXh0KSA9PiB7XHJcblx0XHRcdFx0XHRkb2NWaWV3ZXIudGV4dFNlYXJjaEluaXQoc2VhcmNoZWRUZXh0LCBtb2RlLCBzZWFyY2hPcHRpb25zKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBzZWFyY2ggZm9yIHNpbmdsZSB3b3JkIGluIGFsbCBwYWdlc1xyXG5cdHNlYXJjaEZvcldvcmRJbkFsbFBhZ2VzKHNlYXJjaGVkV29yZCkge1xyXG5cdFx0dGhpcy5wYWdlcy5wYWdlcy5mb3JFYWNoKChwYWdlLCBpbmRleCkgPT4ge1xyXG5cdFx0XHR0aGlzLnBhZ2VIZWlnaHQgPSBwYWdlLnBhZ2VfaGVpZ2h0O1xyXG5cdFx0XHR0aGlzLnBhZ2VXaWR0aCA9IHBhZ2UucGFnZV93aWR0aDtcclxuXHRcdFx0dGhpcy5zdGFuZGFyZEhlaWdodCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VIZWlnaHQoaW5kZXggKyAxKTtcclxuXHRcdFx0dGhpcy5zdGFuZGFyZFdpZHRoID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZVdpZHRoKGluZGV4ICsgMSk7XHJcblx0XHRcdGNvbnN0IHggPSB0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuc3RhbmRhcmRXaWR0aDsgLy8gd2lkdGggcmF0aW9cclxuXHRcdFx0Y29uc3QgeSA9IHRoaXMucGFnZUhlaWdodCAvIHRoaXMuc3RhbmRhcmRIZWlnaHQ7IC8vIGhlaWdodCByYXRpb1xyXG5cdFx0XHRwYWdlLnpvbmVzLmZvckVhY2goKHpvbmUpID0+IHtcclxuXHRcdFx0XHR6b25lLnBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoKSA9PiB7XHJcblx0XHRcdFx0XHRwYXJhZ3JhcGgubGluZXMuZm9yRWFjaCgobGluZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRsaW5lLndvcmRzLmZvckVhY2goKHdvcmQpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAod29yZC50ZXh0LmluY2x1ZGVzKHNlYXJjaGVkV29yZCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGFubm90YXRpb24uUGFnZU51bWJlciA9IGluZGV4KzE7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcXVhZHMgPSBbXHJcblx0XHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4MTogd29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHgyOiB3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4Mzogd29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueCAvIHgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eDQ6IHdvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC54IC8geCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR5MTogd29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHkyOiB3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eTM6IHdvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHk0OiB3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oaWdsaWdodFRleHQocXVhZHMsIGluZGV4ICsgMSk7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNvbnN0cnVjdFNlYXJjaFJlc3VsdChzZWFyY2hlZFdvcmQsIGluZGV4ICsgMSwgcXVhZHMsIGxpbmUudGV4dCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8gc2VhcmNoIGZvciB3b3JkIGluIHNpbmdsZSBsaW5lXHJcblx0U2VhcmNoRm9yV29yZEluTGluZShsaXN0T2ZTZWFyY2hlZFdvcmRzLCBsaW5lLCBwYWdlbnVtYmVyLCBwYWdlKSB7XHJcblx0XHR0aGlzLnBhZ2VIZWlnaHQgPSBwYWdlLnBhZ2VfaGVpZ2h0O1xyXG5cdFx0dGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcblx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChwYWdlbnVtYmVyKTtcclxuXHRcdHRoaXMuc3RhbmRhcmRXaWR0aCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aChwYWdlbnVtYmVyKTtcclxuXHRcdGNvbnN0IHggPSB0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuc3RhbmRhcmRXaWR0aDsgLy8gd2lkdGggcmF0aW9cclxuXHRcdGNvbnN0IHkgPSB0aGlzLnBhZ2VIZWlnaHQgLyB0aGlzLnN0YW5kYXJkSGVpZ2h0OyAvLyBoZWlnaHQgcmF0aW9cclxuXHRcdC8vIGZpbmQgb25seSB3b3JkcyByZWxhdGVkIHRvIG15IHNlYXJjaCBmb3JtIHRoZSBsaW5lXHJcblx0XHRsZXQgbXlGb3VuZGVkUmVzdWx0cyA9IFtdO1xyXG5cdFx0bGV0IGNvcnJlY3RSZXN1bHRzID0gW107XHJcblx0XHRsaW5lLndvcmRzLmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAobGlzdE9mU2VhcmNoZWRXb3Jkcy5pbmRleE9mKHdvcmQudGV4dCkgPiAtMSkge1xyXG5cdFx0XHRcdG15Rm91bmRlZFJlc3VsdHMucHVzaCh7IHdvcmQ6IHdvcmQsIHdvcmRJbmRleDogd29yZEluZGV4IH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyBmaW5kIG9ubHkgd29yZHMgZXhpc3QgaW4gbXkgc2VhcmNoIHNlbnRlbmNlIGFuZCBub3Qgc2luZ2xlIGFuZCByZXBlYXRlZCB3b3JkXHJcblx0XHRteUZvdW5kZWRSZXN1bHRzLm1hcCgocmVzdWx0LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0bXlGb3VuZGVkUmVzdWx0c1tpbmRleF1bJ3dvcmRJbmRleCddIC0gMSA9PT1cclxuXHRcdFx0XHRcdChteUZvdW5kZWRSZXN1bHRzW2luZGV4IC0gMV0gJiYgbXlGb3VuZGVkUmVzdWx0c1tpbmRleCAtIDFdWyd3b3JkSW5kZXgnXSkgfHxcclxuXHRcdFx0XHQobXlGb3VuZGVkUmVzdWx0c1tpbmRleCArIDFdICYmXHJcblx0XHRcdFx0XHRteUZvdW5kZWRSZXN1bHRzW2luZGV4ICsgMV1bJ3dvcmRJbmRleCddIC0gMSA9PT0gbXlGb3VuZGVkUmVzdWx0c1tpbmRleF1bJ3dvcmRJbmRleCddKVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRjb3JyZWN0UmVzdWx0cy5wdXNoKHJlc3VsdCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIGhpZ2hsaWh0IHRoZXNlIHdvcmRzIGFmdGVyIGVsZW1pbmF0aW5nIGFsbCByZXBlYXRlZCBhbmQgcmVsYXRlZCB3b3Jkc1xyXG5cdFx0Ly8gbXVzdCBiZSBmb3IgbG9vcCBzcCBpIGNhbiBjb250cm9sIHRoZSBzdGVwIGluIGVhY2ggbG9vcFxyXG5cdFx0bGV0IHF1YWRzID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvcnJlY3RSZXN1bHRzLmxlbmd0aDsgaSA9IGkgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCkge1xyXG5cdFx0XHRxdWFkcy5wdXNoKHtcclxuXHRcdFx0XHR4MTogY29ycmVjdFJlc3VsdHNbaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoIC0gMV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdHgyOiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHR4MzogY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueCAvIHgsXHJcblx0XHRcdFx0eDQ6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC54IC8geCxcclxuXHRcdFx0XHR5MTogY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5LFxyXG5cdFx0XHRcdHkyOiBjb3JyZWN0UmVzdWx0c1tpICsgbGlzdE9mU2VhcmNoZWRXb3Jkcy5sZW5ndGggLSAxXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0eTM6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5LFxyXG5cdFx0XHRcdHk0OiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5oaWdsaWdodFRleHQocXVhZHMsIHBhZ2VudW1iZXIpO1xyXG5cdFx0XHR0aGlzLmNvbnN0cnVjdFNlYXJjaFJlc3VsdChsaXN0T2ZTZWFyY2hlZFdvcmRzLmpvaW4oJyAnKSwgcGFnZW51bWJlciwgcXVhZHMsIGxpbmUudGV4dCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RTZWFyY2hSZXN1bHQoc2VhcmNoZWRUZXh0LCBwYWdlTnVtLCBxdWFkcywgbGluZSkge1xyXG5cdFx0bGV0IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggPSBsaW5lLmluZGV4T2Yoc2VhcmNoZWRUZXh0KTtcclxuXHRcdGxldCBteVNlZWFyY2hlZFRleHRFbmRJbmRleCA9IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggKyBzZWFyY2hlZFRleHQubGVuZ3RoO1xyXG5cdFx0bGV0IHNlYXJjaFJlc3VsdE9iamVjdCA9IHtcclxuXHRcdFx0YW1iaWVudFN0cjogbGluZSxcclxuXHRcdFx0cmVzdWx0U3RyOiBzZWFyY2hlZFRleHQsXHJcblx0XHRcdHJlc3VsdFN0clN0YXJ0OiBteVNlYXJjaFN0YXJ0VGV4dEluZGV4LFxyXG5cdFx0XHRyZXN1bHRTdHJFbmQ6IG15U2VlYXJjaGVkVGV4dEVuZEluZGV4LFxyXG5cdFx0XHRwYWdlTnVtOiBwYWdlTnVtLFxyXG5cdFx0XHRyZXN1bHRDb2RlOiAyLFxyXG5cdFx0XHRxdWFkczogW1xyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdGVhOiBxdWFkc1swXVsneTMnXSxcclxuXHRcdFx0XHRcdGZhOiBxdWFkc1swXVsneTQnXSxcclxuXHRcdFx0XHRcdGhhOiBxdWFkc1swXVsneDEnXSxcclxuXHRcdFx0XHRcdGlhOiBxdWFkc1swXVsneDInXSxcclxuXHRcdFx0XHRcdHBCOiBxdWFkc1swXVsneDMnXSxcclxuXHRcdFx0XHRcdHFCOiBxdWFkc1swXVsneDQnXSxcclxuXHRcdFx0XHRcdHJCOiBxdWFkc1swXVsneTEnXSxcclxuXHRcdFx0XHRcdHNCOiBxdWFkc1swXVsneTInXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XVxyXG5cdFx0fTtcclxuXHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzLnB1c2goc2VhcmNoUmVzdWx0T2JqZWN0KTtcclxuXHRcdGNvbnNvbGUubG9nKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuXHR9XHJcblxyXG5cdGRpc3BhbGF5U2VhcmNoUmVzdWx0cyhkb2NWaWV3ZXIpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRkb2NWaWV3ZXIuZGlzcGxheUFkZGl0aW9uYWxTZWFyY2hSZXN1bHRzKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuXHRcdH0sIDUwMCk7XHJcblx0fVxyXG5cclxuXHQvLyBkcmF3IGhpbGlndGhpbmcgYXJvdW5kIGNlcnRhaW4gY2hhcmF0YWN0ZXJzXHJcblx0aGlnbGlnaHRUZXh0KHF1YWRzLCBwYWdlTnVtYmVyKSB7XHJcblx0XHRjb25zdCBoaWdobGlnaHRpbmdBbm5vdCA9IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRoaWdobGlnaHRpbmdBbm5vdC5TdHJva2VDb2xvciA9IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LlF1YWRzID0gcXVhZHM7XHJcblx0XHRoaWdobGlnaHRpbmdBbm5vdC5QYWdlTnVtYmVyID0gcGFnZU51bWJlcjtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKGhpZ2hsaWdodGluZ0Fubm90KTtcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb24oaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cclxuXHRcdC8vIG5lZWQgdG8gZHJhdyB0aGUgYW5ub3RhdGlvbiBvdGhlcndpc2UgaXQgd29uJ3Qgc2hvdyB1cCB1bnRpbCB0aGUgcGFnZSBpcyByZWZyZXNoZWRcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoRm4gPSAoc2VhcmNoVmFsdWUsIG9wdGlvbnMpID0+IHtcclxuXHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzID0gW107XHJcblx0XHRpZiAodGhpcy5zYXZlZEFub3RhdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5tYXAoKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0XHRhbm5vdGF0aW9uLkhpZGRlbiA9IHRydWU7XHJcblx0XHRcdFx0Ly8gQWx3YXlzIHJlZHJhdyBhbm5vdGF0aW9uIGlmIHJlbmRlcmluZyB3YXMgdXBkYXRlZFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbik7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly8gZG9uJ3QgZG8gYW55IHNlYXJjaCB1bnRpbCB0aGVyZSBpcyBhIHNlYXJjaCBwYXR0ZXJuXHJcblx0XHRpZiAoc2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsZVdpdGhPY3IpIHtcclxuXHRcdFx0XHQvLyBhZGQgcmVkYWN0aW9uIGFubm90YXRpb24gZm9yIGVhY2ggc2VhcmNoIHJlc3VsdFxyXG5cdFx0XHRcdC8vIGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuXHRcdFx0XHRsZXQgbXlTZWFyY2ggPSBzZWFyY2hWYWx1ZS5zcGxpdCgnICcpO1xyXG5cdFx0XHRcdGlmIChteVNlYXJjaC5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHQvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggbW9yZSB0aGFuIG9uZSB3b3JkXHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdFx0XHRcdHRoaXMucGFnZVdpZHRoID0gcGFnZS5wYWdlX3dpZHRoO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0cGFnZS56b25lcy5mb3JFYWNoKCh6b25lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0em9uZS5wYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYWdyYXBoLmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxpbmUudGV4dC5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsIGxpbmUsIGluZGV4ICsgMSwgcGFnZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggb25seSBvbmUgd29yZFxyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hGb3JXb3JkSW5BbGxQYWdlcyhzZWFyY2hWYWx1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHRcdHRoaXMuZGlzcGFsYXlTZWFyY2hSZXN1bHRzKHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmlzRW5hYmxlZCkge1xyXG5cdFx0XHR0aGlzLiNyZXNldCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMud2ViVmlld2VySW5zdGFuY2UpIHtcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmNsb3NlRG9jdW1lbnQoKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdkb2N1bWVudCBjbG9zZWQhJyk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24gPyB0aGlzLnRyYW5zZWxhdGlvblN1YnNjcml0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0I3Jlc2V0KCkge1xyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5jbG9zZURvY3VtZW50KCkudGhlbigoKSA9PiB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdkb2N1bWVudCBjbG9zZWQhJyk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UgPSBudWxsO1xyXG5cdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA/IHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcblxyXG5cdFx0dGhpcy5zaWxlbnRQZGZUcm9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblx0XHR0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcblx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEhlYWRlckl0ZW1zKChoZWFkZXIpID0+IHtcclxuXHRcdFx0aGVhZGVyLmhlYWRlcnMuZGVmYXVsdCA9IGhlYWRlci5oZWFkZXJzLmRlZmF1bHQuZmlsdGVyKChxKSA9PiAhcS5pbWc/LmluY2x1ZGVzKCc8c3ZnJykpO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5vZmYoJ2RvY3VtZW50TG9hZGVkJywgdGhpcy4jZG9jTG9hZGVkKTtcclxuXHRcdC8vIG1heWJlIHdpbGwgbmVlZCB0byByZXNldCBzaWduYXR1cmUgJiBhbm5vdGF0aW9uc1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2ICNmaWxlVmlld2VyIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIj48L2Rpdj5cclxuIl19
|
|
853
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFLeEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQTZENUIsWUFDUSxHQUFzQixFQUNyQixjQUE4QixFQUM5QixLQUFtQixFQUNJLFFBQWdCLEVBQ3ZDLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDbkIsV0FBVztRQU5uQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNJLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFBOztRQTlEbEMsa0JBQWEsR0FBRyxLQUFL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QW5FcUIsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6QyxRQUFRO3NCQURQLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNJLDJCQUEyQjtzQkFBcEMsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRVAsTUFBTTtzQkFETCxNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdEluamVjdCxcclxuXHRJbnB1dCxcclxuXHRPbkNoYW5nZXMsXHJcblx0T25EZXN0cm95LFxyXG5cdE9uSW5pdCxcclxuXHRPdXRwdXQsXHJcblx0Vmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBXZWJWaWV3ZXIgZnJvbSAnQHBkZnRyb24vd2Vidmlld2VyJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGRmdHJvblNlcnZpY2UgfSBmcm9tICcuL3BkZnRyb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFQUF9CQVNFX0hSRUYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTZWN1cmVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvc2VjdXJlLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2lsZW50UGRmVHJvblNlcnZpY2UgfSBmcm9tICcuL3NpbGVudC1wZGZ0cm9uLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEEgcmV1c2FibGUgZmlsZSB2aWV3ZXIgYmFzZWQgb24gUERGVHJvbiBMaWJyYXJ5XHJcbiAqIEB0aXRsZVxyXG4gKiBQREZUcm9uIFZpZXdlclxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8YXBwLXBkZnRyb25cclxuICogICBbZmlsZURhdGFdPVwiZmlsZURhdGFcIlxyXG4gKiAgIFtlZGl0TW9kZV09XCJmYWxzZVwiXHJcbiAqICAgW2RvY0lkXT1cImZpbGVJZFwiXHJcbiAqICAgW2ZpbGVUaXRsZV09XCJmaWxlLnRpdGxlXCJcclxuICogPlxyXG4gKiA8L2FwcC1wZGZ0cm9uPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcGRmdHJvbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BkZnRyb24uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3BkZnRyb24uY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtTZWN1cmVQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmdHJvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVWaWV3ZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB2aWV3ZXJSZWY6IEVsZW1lbnRSZWY7XHJcblx0d2ViVmlld2VySW5zdGFuY2U7XHJcblx0LyoqIERpc2FibGUvRW5hYmxlIEFubm90YXRpb24gKi9cclxuXHRASW5wdXQoKVxyXG5cdGVkaXRNb2RlOiBib29sZWFuO1xyXG5cdEBJbnB1dCgpIGFjdGlvbkNsaWNrZWQgPSBmYWxzZTsgLy8gdXNlZCB0byBrbm93IGlmIHRoZXJlIGlzIGFjdGlvbiBjbGlja2VkIG91dHNpZGUgdG8gc3RhcnQgZWRpdCBtb2RlIG9yIG5vdFxyXG5cdGlzRG9jdW1lbnRMb2FkaW5nOiBib29sZWFuO1xyXG5cdGlzRmV0Y2hpbmc6IGJvb2xlYW47XHJcblx0LyoqIERvY3VtZW50IHRpdGxlICovXHJcblx0QElucHV0KClcclxuXHRmaWxlVGl0bGU6IHN0cmluZztcclxuXHQvKiogRG9jdW1lbnQgSUQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGRvY0lkOiBzdHJpbmc7XHJcblx0QElucHV0KClcclxuXHRET0NVTUVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3BkZic7XHJcblx0QElucHV0KClcclxuXHRmaWxlRGF0YTtcclxuXHRASW5wdXQoKVxyXG5cdGZpdE1vZGU6ICdGaXRXaWR0aCcgfCAnRml0UGFnZScgfCAnWm9vbScgPSAnRml0V2lkdGgnO1xyXG5cdEBJbnB1dCgpXHJcblx0YXV0aEhlYWRlcjogc3RyaW5nO1xyXG5cdEBJbnB1dCgpXHJcblx0ZmlsZVVSTDogc3RyaW5nO1xyXG5cdEBJbnB1dCgpXHJcblx0Y29ycmVzcG9uZGFuY2U7XHJcblxyXG5cdEBJbnB1dCgpIHNlY3JlY3lQcm9wZXJ0eTsgLy8gdXNlZCB0byBhZGQgd2F0ZXJtYXJrIGFjb3JkaW5nIGNlcnRhaW4gc2VjcmVjeSBsZXZlbFxyXG5cdEBJbnB1dCgpIGVkaXRpbmdUeXBlO1xyXG5cdEBJbnB1dCgpIHVzZXJTaWduYXR1cmVzO1xyXG5cdEBJbnB1dCgpIHNlYXJjaFN0cmluZyA9ICcnOyAvLyBzdHJpbmcgdG8gc2VhcmNoIGZvciBpdCBpbiB0aGUgZG9jdW1lbnRcclxuXHJcblx0QElucHV0KCkgdHJhY2tTaWduYXR1cmUgPSBmYWxzZTsgLy8gdG8gZW5hYmxlIHRyYWNraW5nIHNpZ25hdHVyZSBwb3NpdGlvbiBhbmQgZW1pdCBpdCBhZnRlciBldmVyeSBjaGFuZ2UgaXQgc2lnbmF0dXJlXHJcblx0QE91dHB1dCgpIG9uU2lnbmF0dXJlVHJhY2tpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIGV2ZW50IHRvIGVtaXQgc2lnbmF0dXJlIGNoYW5nZXNcclxuXHJcblx0QElucHV0KCkgdXNlT3V0c2lkZUFub3RhdGlvbnMgPSBmYWxzZTsgLy8gZmxhZ2UgdG8gaW5kaWNhdCBpZiB1c2luZyBvdXQgc2lkZSBhbm90YXRpb25zIG9yIG5vdFxyXG5cdEBJbnB1dCgpIGltcG9ydGVkQW5vdGF0aW9uczsgLy8gaW1wb3J0ZWQgYW5vdGF0aW9ucyBmcm9tIG91dHNpZGVcclxuXHRASW5wdXQoKSBhbGxvd0Rvd25sb2FkU2VjcmV0RmlsZSA9IHRydWU7IC8vIGFsbG93IG9yIHByZXZlbnQgZG93bmxvYWQgc2NyZWN0IGZpbGVzXHJcblx0QElucHV0KCkgYWxsb3dQcmludFNlY3JldEZpbGUgPSB0cnVlOyAvLyBhbGxvdyBvciBwcmV2ZW50IHByaW50IHNjcmVjdCBmaWxlc1xyXG5cdEBJbnB1dCgpIG5lZ2VsZWN0QWRkaW5nV2F0ZXJNYXJrID0gZmFsc2U7IC8vIGRvbid0IGFkZCB3YXRlcm1hcmsgaGVyZSB3aGF0ZXZlciBlYXMgdGhlIGNvbmRpdGlvbnMgKHdlIG1heSBhZGQgaXQgZnJvbSBvdXRzaWRlIG9yIG5vdCBhZGQgaXQgYXQgYWxsKVxyXG5cdEBJbnB1dCgpIGZsYXR0ZW5Bbm90YXRpb24gPSBmYWxzZTsgLy8gdXNlZCB0byBmbGF0dGVuIGFub3RhdGlvbiBpbnRvIHRoZSBkb2N1bWVudCB0byBhdm9pZCBlZGl0aW5nIG9uIHRoZW0gYWZ0ZXIgc2F2aW5nXHJcblx0QElucHV0KCkgcmVjb2duaXplZEpzb247XHJcblx0QElucHV0KCkgaXNTaWduZWREb2N1bWVudCA9IGZhbHNlOyAvLyBmbGFnZSB0byBpbmRpY2F0ZSBpZiB0aGlzIGRvY3VtZW50IGlzIHNpZ25lZCB3aXRoIG91dHNpZGUgcGxhdGZvcm0gdG8gZW5hYmxlIGRpZmZyZW50IHdheSBvZiBkb3dubG9hZGluZyBpdFxyXG5cdEBJbnB1dCgpIGFsbG93UHJpbnRGcm9tT3V0U2lkZSA9IGZhbHNlOyAvL2ZsYWdlIHRvIGluZGljYXRlIGlmIHRvIHVzZSBwcmludCBvZiBwZGZ0cm9uIG9yIGVtaXQgdGhlIGV2ZW50IG91dHNpZGUgdG8gaGFuZGxlIHByaW50ZnJvbSBvdXRzaWRlXHJcblx0QE91dHB1dCgpIG9uRG93bmxvYWRpbmdTaWduZWREb2N1bWVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdXNlZCB0byB0ZWxsIG91dHNpZGUgd2UgbmVlZCBkb3dubG9hZCBzaWduZWQgZG9jdW1lbnQgdG8gZG93bmxvYWQgaXQgd2l0aCBwcm9wZXIgd2F5IGRpZmZyZW50IGZyb20gZXhwb3J0IG9mIHBkZnRyb25cclxuXHRAT3V0cHV0KCkgb25BZGRpbmdBbm90YXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHVzZWQgdG8gZXhwb3J0IGFsbCBhbm90YXRpb25zIHRvIG91dHNpZGVcclxuXHRAT3V0cHV0KClcclxuXHRldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIFNpZ25hdHVyZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyB1c2VkIHRvIGV4cG9ydCBzaWduYXR1cmUgdG8gb3V0c2lkZVxyXG5cdGZpcnN0VGltZUxvYWQgPSB0cnVlOyAvL2ZsYWdlIHRvIGNvbnRyb2wgaW1wb3J0aW5nIHNpZ25hdHVyZXMgaW4gdGhlIGZpcnN0IHRpbWUgbG9hZCBvbmx5XHJcblx0Zmlyc3RTaWduYXR1cmVMb2FkID0gdHJ1ZTsgLy8gZmxhZ2UgdG8gcGFzcyBmaXJzdCBsb2FkIG9mIGltcG9ydGVkIHNpZ25hdHVyZXMgd2l0aG91dCBlbWl0dGluZyB0aGUgZXZlbnRcclxuXHRuZXdTaWduQ3JlYXRpb24gPSBmYWxzZTsgLy8gZmxhZ2UgdG8gaW5kaWNhdGUgc2lnbmF0dXJlIGNyZWF0aW9uIGlzIGNyZWF0ZWQgb3IgY2hvb3NlZCBmcm9tIHN0b3JlZCBvbmVzXHJcblx0dHJhbnNlbGF0aW9uU3Vic2NyaXRpb246IFN1YnNjcmlwdGlvbjtcclxuXHRpc0FyYWJpYztcclxuXHJcblx0Ly9zaWxlbnQgcGRmVHJvblxyXG5cdHNpbGVudFBkZlRyb246IEhUTUxFbGVtZW50O1xyXG5cdG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XHJcblx0cmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHJpdmF0ZSBwZGZ0cm9uU2VydmljZTogUGRmdHJvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIG51eGVvOiBOdXhlb1NlcnZpY2UsXHJcblx0XHRASW5qZWN0KEFQUF9CQVNFX0hSRUYpIHByaXZhdGUgYmFzZUhyZWY6IHN0cmluZyxcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNpbGVudFBkZlRyb25TZXJ2aWNlOiBTaWxlbnRQZGZUcm9uU2VydmljZSxcclxuXHRcdEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudFxyXG5cdCkgeyB9XHJcblxyXG5cdGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkgPSB0aGlzLnNlYXJjaFN0cmluZy50cmltKCkgPyB0aGlzLnNlYXJjaFN0cmluZy5zcGxpdCgnLCcpIDogW107XHJcblx0XHRpZiAodGhpcy5maWxlVGl0bGUpIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcucHB0JykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcucHB0eCcpKSB7XHJcblx0XHRcdFx0dGhpcy5ET0NVTUVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcuZG9jJykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vbXN3b3JkJztcclxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmZpbGVUaXRsZS5lbmRzV2l0aCgnLmRvY3gnKSkge1xyXG5cdFx0XHRcdHRoaXMuRE9DVU1FTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5zaWxlbnRQZGZUcm9uU2VydmljZS5pc0VuYWJsZWQpIHtcclxuXHRcdFx0W3RoaXMuc2lsZW50UGRmVHJvbiwgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZV0gPSBhd2FpdCB0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmdldFdlYlZpZXdlcigpO1xyXG5cdFx0XHR0aGlzLiNhZnRlckxvYWRXZWJWaWV3ZXIodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSk7XHJcblxyXG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLiN1cGRhdGVTaWxlbnRQZGZUcm9uKCkpO1xyXG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcclxuXHJcblx0XHRcdHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy4jdXBkYXRlU2lsZW50UGRmVHJvbigpKTtcclxuXHRcdFx0dGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuXHRcdFx0dGhpcy4jdXBkYXRlU2lsZW50UGRmVHJvbigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0V2ViVmlld2VyKFxyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdHBhdGg6IHRoaXMuYmFzZUhyZWYgKyAnL2Fzc2V0cy9wZGZ0cm9ucycsXHJcblx0XHRcdFx0XHRmb3JjZUNsaWVudFNpZGVJbml0OiB0cnVlLFxyXG5cdFx0XHRcdFx0c3RyZWFtaW5nOiB0cnVlLFxyXG5cdFx0XHRcdFx0ZnVsbEFQSTogdGhpcy5pbXBvcnRGdWxsQXBpKCksXHJcblx0XHRcdFx0XHRsaWNlbnNlS2V5OiB0aGlzLmVudmlyb25tZW50LnBkZnRyb25MaWNlbmNlS2V5LFxyXG5cdFx0XHRcdFx0Y3NzOiB0aGlzLmlzQXJhYmljXHJcblx0XHRcdFx0XHRcdD8gdGhpcy5iYXNlSHJlZiArICcvYXNzZXRzL3N0eWxlcy9hci1teXBkZnRyb24uY3NzJ1xyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuYmFzZUhyZWYgKyAnL2Fzc2V0cy9zdHlsZXMvZW4tbXlwZGZ0cm9uLmNzcycsXHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uVXNlcjpcclxuXHRcdFx0XHRcdFx0dGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMuZmlyc3ROYW1lICsgJyAnICsgdGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMubGFzdE5hbWUsXHJcblx0XHRcdFx0XHRkaXNhYmxlZEVsZW1lbnRzOiBbJ2Rvd25sb2FkQnV0dG9uJywgJ3ByaW50QnV0dG9uJ11cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnRcclxuXHRcdFx0KS50aGVuKGFzeW5jIChpbnN0YW5jZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuI2FmdGVyTG9hZFdlYlZpZXdlcihpbnN0YW5jZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjdXBkYXRlU2lsZW50UGRmVHJvbigpIHtcclxuXHRcdGNvbnN0IHJlY3QgPSB0aGlzLnZpZXdlclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLnNpbGVudFBkZlRyb24uc3R5bGUsIHtcclxuXHRcdFx0cG9zaXRpb246ICdhYnNvbHV0ZScsXHJcblx0XHRcdHRvcDogYCR7cmVjdC50b3B9cHhgLFxyXG5cdFx0XHRsZWZ0OiBgJHtyZWN0LmxlZnR9cHhgLFxyXG5cdFx0XHR3aWR0aDogYCR7cmVjdC53aWR0aH1weGAsXHJcblx0XHRcdGhlaWdodDogYCR7cmVjdC5oZWlnaHR9cHhgLFxyXG5cdFx0XHR6SW5kZXg6ICc5OTknLFxyXG5cdFx0XHRkaXNwbGF5OiAnYmxvY2snXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCNhZnRlckxvYWRXZWJWaWV3ZXIoaW5zdGFuY2UpIHtcclxuXHRcdGluc3RhbmNlLkNvcmVDb250cm9scy5kaXNhYmxlRW1iZWRkZWRKYXZhU2NyaXB0KCk7XHJcblx0XHR0aGlzLmlzQXJhYmljID8gaW5zdGFuY2Uuc2V0TGFuZ3VhZ2UoJ2FyJykgOiBpbnN0YW5jZS5zZXRMYW5ndWFnZSgnZW4nKTtcclxuXHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlID0gaW5zdGFuY2U7XHJcblx0XHRpZiAodGhpcy5jb3JyZXNwb25kYW5jZS5mYWNldHMuaW5kZXhPZignY3RvY3InKSA+IC0xICYmIHRoaXMuY29ycmVzcG9uZGFuY2U/LnByb3BlcnRpZXM/LlsnY3RvY3I6cmVjb2duaXplZEpzb24nXSkge1xyXG5cdFx0XHR0aGlzLmZpbGVXaXRoT2NyID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5wYWdlcyA9IHRoaXMucmVjb2duaXplZEpzb24gPyBKU09OLnBhcnNlKHRoaXMucmVjb2duaXplZEpzb24pIDogSlNPTi5wYXJzZSh0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbJ2N0b2NyOnJlY29nbml6ZWRKc29uJ10pO1xyXG5cdFx0XHQvLyBvdmVycmlkZSBzZWFyY2ggZnVudGlvbiB0byB1c2Ugb3VyIHNlYXJjaCBpbiBvY3Igbm90IGRlZnVsdCBzZWFyY2hcclxuXHRcdFx0aW5zdGFuY2Uub3ZlcnJpZGVTZWFyY2hFeGVjdXRpb24odGhpcy5zZWFyY2hGbik7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBpZiBubyBvY3IgdGhlbiBhZGQgc2VhcmNoIGxpc25lciB0byBsaXNuZSB0byBpbnRlcm5hbCBzZWFyY2ggYW5kIGNhdGNoIHJlc3VsdHNcclxuXHRcdFx0dGhpcy5hZGRTZWFyY2hMaXN0bmVyKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmFkZFByaW50QnV0dG9uKCk7XHJcblx0XHR0aGlzLmFkZERvd25sb2FkQnV0dG9uKCk7XHJcblx0XHR0aGlzLmltcG9ydFNpZ25hdHVyZSgpO1xyXG5cdFx0dGhpcy5leHBvcnRpbmdTaWduYXR1cmUoKTtcclxuXHRcdHRoaXMuZGVsZXRlQW5ub3RhdGlvbigpO1xyXG5cdFx0dGhpcy5leHBvcnRpbmdTYXZlZFNpZ25hdHVyZSgpO1xyXG5cdFx0aWYgKHRoaXMudXNlT3V0c2lkZUFub3RhdGlvbnMpIHtcclxuXHRcdFx0dGhpcy5pbXBvcnRBbm90YXRpb25zRnJvbU91dHNpZGUoKTtcclxuXHRcdFx0dGhpcy5leHBvcnRBbm90YXRpb25zVG9PdXRzaWRlKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5zZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMoe1xyXG5cdFx0XHQvLyBzZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMgYWNjZXB0cyBib3RoIEFubm90YXRpb25zLkNvbG9yIG9iamVjdHMgb3IgJ3JnYmEnIHN0cmluZ3NcclxuXHRcdFx0c2VhcmNoUmVzdWx0OiBuZXcgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Bbm5vdGF0aW9ucy5Db2xvcigyNTAsIDIwNiwgMCwgMC41MDE5NiksXHJcblx0XHRcdGFjdGl2ZVNlYXJjaFJlc3VsdDogbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuQ29sb3IoMjUwLCAyMDYsIDAsIDAuNTAxOTYpXHJcblx0XHR9KTtcclxuXHRcdGlmICh0aGlzLnJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkubGVuZ3RoICE9PSAwKSB7XHJcblx0XHRcdHRoaXMuYXV0b21hdGljU2VhcmNoKHRoaXMucmVjaXZlZFNlYXJjaFN0cmluZ3NBcnJheSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxvYWREb2N1bWVudCgpO1xyXG5cdH1cclxuXHJcblx0Ly8gZnVudGlvbiB0byBjaGVjayB0byBpbXBvcnQgdGhlIGZ1bGwgYXBpIG9yIG5vdCBhY2NvcmRpbmcgdG8gYWN0aW9uIG9mIGFkZCBzdGlja2VyIGV4aXN0IG9yIG5vdFxyXG5cdGltcG9ydEZ1bGxBcGkoKSB7XHJcblx0XHRsZXQgdXNlRnVsbEFwaSA9IGZhbHNlO1xyXG5cdFx0Ly8gbGV0IGFjdGlvbkV4aXN0ID0gWydhZGRRcmNvZGUnICwgJ3NlbGVjdFFyY29kZSddLnNvbWUoaXRlbSA9PiB0aGlzLmNvcnJlc3BvbmRhbmNlLmNvbnRleHRQYXJhbWV0ZXJzLmFjdGlvbnMuaW5jbHVkZXMoaXRlbSkpO1xyXG5cdFx0bGV0IGxvY2tNb2RlRXhpc3QgPSB0aGlzLnBkZnRyb25TZXJ2aWNlLm1vZGUgPT09ICdhZGRRcmNvZGUnO1xyXG5cdFx0aWYgKHRoaXMuZmxhdHRlbkFub3RhdGlvbiAmJiBsb2NrTW9kZUV4aXN0KSB7XHJcblx0XHRcdHVzZUZ1bGxBcGkgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHVzZUZ1bGxBcGlcclxuXHR9XHJcblxyXG5cdGltcG9ydEFub3RhdGlvbnNGcm9tT3V0c2lkZSgpIHtcclxuXHRcdGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcblxyXG5cdFx0ZG9jdW1lbnRWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5pbXBvcnRBbm5vdGF0aW9ucyh0aGlzLmltcG9ydGVkQW5vdGF0aW9ucyk7XHJcblx0XHR9KTtcclxuXHRcdC8vIC50aGVuKGFubm90YXRpb25zID0+IHtcclxuXHRcdC8vICAgYW5ub3RhdGlvbnMuZm9yRWFjaChhbm5vdGF0aW9uID0+IHtcclxuXHRcdC8vICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24pO1xyXG5cdFx0Ly8gICB9KTtcclxuXHRcdC8vIH0pO1xyXG5cdH1cclxuXHJcblx0Ly8gZXhjdHJhY3QgYWxsIGFub3RhdGlvbnMgb24gdGhlIGZpbGUgYW5kIHNlbmQgaXQgb3V0IHNpZGUgdG8gYmUgc2F2ZWQgYW5kIGxlYXZlIHRoZSBmaWxlIGFzIGl0IGlzIHdpdGhvdXQgYW55IGFub3RhdGlvbnMgb24gaXRcclxuXHRleHBvcnRBbm90YXRpb25zVG9PdXRzaWRlKCkge1xyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIub24oJ2Fubm90YXRpb25DaGFuZ2VkJywgKGFubm90YXRpb25zLCBhY3Rpb24sIHsgaW1wb3J0ZWQgfSkgPT4ge1xyXG5cdFx0XHRpZiAoaW1wb3J0ZWQpIHJldHVybjtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZXhwb3J0QW5ub3RhdGlvbnMoKS50aGVuKChleGN0cmFjdGVkQW5vdGF0aW9ucykgPT4ge1xyXG5cdFx0XHRcdHRoaXMub25BZGRpbmdBbm90YXRpb24uZW1pdChleGN0cmFjdGVkQW5vdGF0aW9ucyk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHQvLyBpZiB0cmFja2luZyBzaWduYXR1cmUgbG9jYXRpb24gaXMgZW5hYmxlIHRoZW4gZW1pdCBzaWduYXR1cmUgb3V0c2lkZSB3aXRoIGV2ZXJ5IGNoYW5nZXMgaW4gaXRcclxuXHRcdFx0aWYgKHRoaXMudHJhY2tTaWduYXR1cmUpIHtcclxuXHRcdFx0XHR0aGlzLm9uU2lnbmF0dXJlVHJhY2tpbmcuZW1pdCh7IGFub3RhdGlvbnM6IGFubm90YXRpb25zLCBhY3Rpb246IGFjdGlvbiB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRpbXBvcnRTaWduYXR1cmUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3Qgc2lnbmF0dXJlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHJcblx0XHRkb2N1bWVudFZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCAoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmZpcnN0VGltZUxvYWQpIHtcclxuXHRcdFx0XHRzaWduYXR1cmVUb29sLmltcG9ydFNpZ25hdHVyZXMoWy4uLnRoaXMudXNlclNpZ25hdHVyZXNdKTtcclxuXHRcdFx0XHR0aGlzLmZpcnN0VGltZUxvYWQgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRleHBvcnRpbmdTYXZlZFNpZ25hdHVyZSgpIHtcclxuXHRcdGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcblx0XHRjb25zdCBTaWduYXR1cmVDcmVhdGVUb29sID0gZG9jdW1lbnRWaWV3ZXIuZ2V0VG9vbCgnQW5ub3RhdGlvbkNyZWF0ZVNpZ25hdHVyZScpO1xyXG5cdFx0U2lnbmF0dXJlQ3JlYXRlVG9vbC5vbignc2lnbmF0dXJlU2F2ZWQnLCAoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRpZiAoIXRoaXMuZmlyc3RTaWduYXR1cmVMb2FkKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3NpZ25hdHVyZSBzYXZlZCB0cmlnZXJlZCcpO1xyXG5cdFx0XHRcdHRoaXMubmV3U2lnbkNyZWF0aW9uID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmZpcnN0U2lnbmF0dXJlTG9hZCA9IGZhbHNlO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRleHBvcnRpbmdTaWduYXR1cmUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHRcdFNpZ25hdHVyZUNyZWF0ZVRvb2wub24oJ2Fubm90YXRpb25BZGRlZCcsIChhbm5vdGF0aW9uKSA9PiB7XHJcblx0XHRcdGlmIChhbm5vdGF0aW9uICYmIHRoaXMubmV3U2lnbkNyZWF0aW9uKSB7XHJcblx0XHRcdFx0dGhpcy5uZXdTaWduQ3JlYXRpb24gPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLmV4dHJhY3RBbm90YXRpb24oYW5ub3RhdGlvbiwgZG9jdW1lbnRWaWV3ZXIpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGFubm90YXRpb24pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGV4dHJhY3RBbm90YXRpb24oYW5ub3RhdGlvbiwgZG9jdW1lbnRWaWV3ZXIpIHtcclxuXHRcdGlmIChhbm5vdGF0aW9uWydpbWFnZSddKSB7XHJcblx0XHRcdC8vIGNvbnZlcnQgYmFzZTY0IHNpZ25hdHVyZSBpbnRvIGZpbGUgYW5kIGVtaXQgaXQgdG8gb3V0IHNpZGVcclxuXHRcdFx0bGV0IGJhc2U2NEltZyA9IGFubm90YXRpb25bJ2ltYWdlJ11bJ2N1cnJlbnRTcmMnXTtcclxuXHRcdFx0dmFyIGFyciA9IGJhc2U2NEltZy5zcGxpdCgnLCcpLFxyXG5cdFx0XHRcdG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuXHRcdFx0XHRic3RyID0gYXRvYihhcnJbMV0pLFxyXG5cdFx0XHRcdG4gPSBic3RyLmxlbmd0aCxcclxuXHRcdFx0XHR1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG5cdFx0XHR3aGlsZSAobi0tKSB7XHJcblx0XHRcdFx0dThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IG5hbWUgPSBtaW1lLnJlcGxhY2UoJy8nLCAnLicpO1xyXG5cdFx0XHRsZXQgbXlGaWxlID0gbmV3IEZpbGUoW3U4YXJyXSwgJ215U2lnbmF0dXJlLnBuZycsIHsgdHlwZTogbWltZSB9KTtcclxuXHRcdFx0dGhpcy5TaWduYXR1cmVFdmVudC5lbWl0KHsgZGF0YTogbXlGaWxlLCBldmVudE5hbWU6ICdleHBvcnQnIH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5leHRyYWN0QW5ub3RhdGlvblNpZ25hdHVyZShhbm5vdGF0aW9uLCBkb2N1bWVudFZpZXdlcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHRyYWN0QW5ub3RhdGlvblNpZ25hdHVyZShhbm5vdGF0aW9uLCBkb2NWaWV3ZXIpIHtcclxuXHRcdC8vIENyZWF0ZSBhIG5ldyBDYW52YXMgdG8gZHJhdyB0aGUgQW5ub3RhdGlvbiBvblxyXG5cdFx0Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcblx0XHQvLyBSZWZlcmVuY2UgdGhlIGFubm90YXRpb24gZnJvbSB0aGUgRG9jdW1lbnRcclxuXHRcdGNvbnN0IHBhZ2VNYXRyaXggPSBkb2NWaWV3ZXIuZ2V0RG9jdW1lbnQoKS5nZXRQYWdlTWF0cml4KGFubm90YXRpb24uUGFnZU51bWJlcik7XHJcblx0XHQvLyBTZXQgdGhlIGhlaWdodCAmIHdpZHRoIG9mIHRoZSBjYW52YXMgdG8gbWFkZWxldGVTYXZlZFNpZ25hdHVyZXRjaCB0aGUgYW5ub3RhdGlvblxyXG5cdFx0Y2FudmFzLmhlaWdodCA9IGFubm90YXRpb24uSGVpZ2h0O1xyXG5cdFx0Y2FudmFzLndpZHRoID0gYW5ub3RhdGlvbi5XaWR0aDtcclxuXHRcdGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cdFx0Ly8gVHJhbnNsYXRlIHRoZSBBbm5vdGF0aW9uIHRvIHRoZSB0b3AgVG9wIExlZnQgQ29ybmVyIG9mIHRoZSBDYW52YXMgaWUgKDAsIDApXHJcblx0XHRjdHgudHJhbnNsYXRlKC1hbm5vdGF0aW9uLlgsIC1hbm5vdGF0aW9uLlkpO1xyXG5cdFx0Ly8gRHJhdyB0aGUgQW5ub3RhdGlvbiBvbnRvIHRoZSBDYW52YXNcclxuXHRcdGFubm90YXRpb24uZHJhdyhjdHgsIHBhZ2VNYXRyaXgpO1xyXG5cdFx0Ly8gQ29udmVydCB0aGUgQ2FudmFzIHRvIGEgQmxvYiBPYmplY3QgZm9yIFVwbG9hZFxyXG5cdFx0Y2FudmFzLnRvQmxvYigoYmxvYikgPT4ge1xyXG5cdFx0XHQvLyBDYWxsIHlvdXIgQmxvYiBTdG9yYWdlIFVwbG9hZCBGdW5jdGlvblxyXG5cdFx0XHRsZXQgbmFtZSA9IGJsb2IudHlwZS5yZXBsYWNlKCcvJywgJy4nKTtcclxuXHRcdFx0bGV0IG15RmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgbmFtZSk7XHJcblx0XHRcdHRoaXMuU2lnbmF0dXJlRXZlbnQuZW1pdCh7IGRhdGE6IG15RmlsZSwgZXZlbnROYW1lOiAnZXhwb3J0JyB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZGVsZXRlQW5ub3RhdGlvbigpIHtcclxuXHRcdGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcblx0XHRjb25zdCBTaWduYXR1cmVDcmVhdGVUb29sID0gZG9jdW1lbnRWaWV3ZXIuZ2V0VG9vbCgnQW5ub3RhdGlvbkNyZWF0ZVNpZ25hdHVyZScpO1xyXG5cdFx0U2lnbmF0dXJlQ3JlYXRlVG9vbC5vbignc2lnbmF0dXJlRGVsZXRlZCcsIChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRjb25zb2xlLmxvZygndGhlcmUgd2VyZSBhbm5vdGF0aW9ucyBkZWxldGVkJyk7XHJcblx0XHRcdHRoaXMudXNlclNpZ25hdHVyZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0dGhpcy5TaWduYXR1cmVFdmVudC5lbWl0KHsgZGF0YTogeyBzaWduYXR1cmU6IGFubm90YXRpb24sIGluZGV4OiBpbmRleCB9LCBldmVudE5hbWU6ICdkZWxldGUnIH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhZGREb3dubG9hZEJ1dHRvbigpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5hbGxvd0Rvd25sb2FkU2VjcmV0RmlsZSB8fFxyXG5cdFx0XHQoIXRoaXMuYWxsb3dEb3dubG9hZFNlY3JldEZpbGUgJiZcclxuXHRcdFx0XHR0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSA9PT0gJ05vcm1hbCcpXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5zZXRIZWFkZXJJdGVtcygoaGVhZGVyKSA9PiB7XHJcblx0XHRcdFx0aGVhZGVyLnB1c2goe1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FjdGlvbkJ1dHRvbicsXHJcblx0XHRcdFx0XHRpbWc6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgY2xhc3M9XCJiaSBiaS1maWxlLWVhcm1hcmstYXJyb3ctZG93blwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj4gPHBhdGggZD1cIk04LjUgNi41YS41LjUgMCAwIDAtMSAwdjMuNzkzTDYuMzU0IDkuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMiAyYS41LjUgMCAwIDAgLjcwOCAwbDItMmEuNS41IDAgMCAwLS43MDgtLjcwOEw4LjUgMTAuMjkzVjYuNXpcIi8+IDxwYXRoIGQ9XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCIvPjwvc3ZnPicsXHJcblx0XHRcdFx0XHR0aXRsZTogdGhpcy5pc0FyYWJpYyA/ICfYqtmG2LLZitmEJyA6ICdEb3dubG9hZCcsXHJcblx0XHRcdFx0XHRvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGlmIHdhc24ndCBzaWduZWQgZG9jdW1lbnQgdGhlbiBkb3dubG9hZCBpdCB1c2luZyBwZGZ0cm9uIG5vcm1hbCBkb253bmxvYWRcclxuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLmlzU2lnbmVkRG9jdW1lbnQpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCB4ZmRmU3RyaW5nID0gYXdhaXQgdGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5hbm5vdE1hbmFnZXIuZXhwb3J0QW5ub3RhdGlvbnMoKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25zID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ZmlsZW5hbWU6IHRoaXMuY29ycmVzcG9uZGFuY2UudGl0bGUgPyB0aGlzLmNvcnJlc3BvbmRhbmNlLnRpdGxlIDogJ215RG9jdW1lbnQucGRmJyxcclxuXHRcdFx0XHRcdFx0XHRcdHhmZGZTdHJpbmcsXHJcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlQW5ub3RhdGlvbnM6IHRydWUsXHJcblx0XHRcdFx0XHRcdFx0XHRkb3dubG9hZFR5cGU6ICdwZGYnXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5kb3dubG9hZFBkZihvcHRpb25zKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmV2ZW50cy5uZXh0KCdkb3dubG9hZCcpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIGl0IHdhcyBzaWduZWQgZG9jdW1lbnQgdGhlbiBkb3dubG9hZCBpdCBieSBmdW5jdGlvbiBmcm9tIG91dHNpZGUgdG8gYXZvaWQgXHJcblx0XHRcdFx0XHRcdFx0Ly8gbG9vc2luZyBzaWduaW5nIGluZm9ybWF0aW9uIHRoYXQgaGFwcGVucyBpZiBpIGRvd25sb2FkIGl0IGZyb20gcGRmdHJvbiBpdHNlbGZcclxuXHRcdFx0XHRcdFx0XHR0aGlzLm9uRG93bmxvYWRpbmdTaWduZWREb2N1bWVudC5lbWl0KClcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Ly8gbGV0IHVybCA9IHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllcy5jb250ZW50LmRhdGE7XHJcblx0XHRcdFx0XHRcdC8vIGxldCBmaWxlTmFtZSA9IHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllcy5jb250ZW50Lm5hbWU7XHJcblx0XHRcdFx0XHRcdC8vIGlmICh1cmwgJiYgZmlsZU5hbWUpIHtcclxuXHRcdFx0XHRcdFx0Ly8gICBsZXQgc2FmZVVybCA9IHRoaXMuc2VjdXJlUGlwZS50cmFuc2Zvcm0odXJsKTtcclxuXHRcdFx0XHRcdFx0Ly8gICBzYWZlVXJsLnN1YnNjcmliZSgodXJsOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcblx0XHRcdFx0XHRcdC8vICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblx0XHRcdFx0XHRcdC8vICAgICBsaW5rLmhyZWYgPSB1cmwuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcblx0XHRcdFx0XHRcdC8vICAgICBsaW5rLmNsaWNrKCk7XHJcblx0XHRcdFx0XHRcdC8vICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgdGhpcy5ldmVudHMubmV4dCgnZG93bmxvYWQnKTtcclxuXHRcdFx0XHRcdFx0Ly8gICB9KTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFkZFByaW50QnV0dG9uKCkge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLmFsbG93UHJpbnRTZWNyZXRGaWxlIHx8XHJcblx0XHRcdCghdGhpcy5hbGxvd1ByaW50U2VjcmV0RmlsZSAmJlxyXG5cdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gJiZcclxuXHRcdFx0XHR0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldID09PSAnTm9ybWFsJylcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEhlYWRlckl0ZW1zKChoZWFkZXIpID0+IHtcclxuXHRcdFx0XHRoZWFkZXIucHVzaCh7XHJcblx0XHRcdFx0XHR0eXBlOiAnYWN0aW9uQnV0dG9uJyxcclxuXHRcdFx0XHRcdGltZzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2FiYjBjNDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmljb24gLSBoZWFkZXIgLSBwcmludCAtIGxpbmU8L3RpdGxlPjxwYXRoIGNsYXNzPVwiY2xzLTFcIiBkPVwiTTIwLDZIMThWMkg2VjZINEEyLDIsMCwwLDAsMiw4djlhMiwyLDAsMCwwLDIsMkg2djNIMThWMTloMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDIwLDZaTTgsNGg4VjZIOFptOCwxNkg4VjE2aDhabTQtM0gxOFYxNEg2djNINFY4SDIwWm0tNC03aDJ2MkgxNlptLTMsMGgydjJIMTNaXCI+PC9wYXRoPjwvc3ZnPicsXHJcblx0XHRcdFx0XHR0aXRsZTogdGhpcy5pc0FyYWJpYyA/ICfYt9io2KfYudipJyA6ICdQcmludCcsXHJcblx0XHRcdFx0XHRvbkNsaWNrOiAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLmFsbG93UHJpbnRGcm9tT3V0U2lkZSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXZlbnRzLm5leHQoJ3ByaW50Jyk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5wcmludCgpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXZlbnRzLm5leHQoJ3ByaW50Jyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbJ3ByaW50TW9kYWwnXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhZGRXYXRlcm1hcmsoKSB7XHJcblx0XHRjb25zdCB1c2VyaW5mbyA9IHRoaXMubnV4ZW8ubnV4ZW9DbGllbnQudXNlci5wcm9wZXJ0aWVzO1xyXG5cdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5hZGRXYXRlcm1hcmsoXHJcblx0XHRcdGAke3VzZXJpbmZvLnVzZXJuYW1lfSAgICBgXHJcblx0XHRcdC8vIGAke3VzZXJpbmZvLmZpcnN0TmFtZX0gJHtcclxuXHRcdFx0Ly8gICB1c2VyaW5mby5sYXN0TmFtZVxyXG5cdFx0XHQvLyB9IGBcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQjZG9jTG9hZGVkID0gKCkgPT4ge1xyXG5cdFx0bGV0IGZpdE1vZGUgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLkZpdE1vZGUuRml0V2lkdGg7XHJcblx0XHRpZiAodGhpcy5maXRNb2RlID09PSAnRml0UGFnZScpIHtcclxuXHRcdFx0Zml0TW9kZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuRml0TW9kZS5GaXRQYWdlO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLmZpdE1vZGUgPT09ICdab29tJykge1xyXG5cdFx0XHRmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLlpvb207XHJcblx0XHR9XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEZpdE1vZGUoZml0TW9kZSk7XHJcblx0fTtcclxuXHRsb2FkRG9jdW1lbnQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMud2ViVmlld2VySW5zdGFuY2UgfHwgKCF0aGlzLmZpbGVEYXRhICYmICF0aGlzLmZpbGVVUkwpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHsgZG9jVmlld2VyLCBhbm5vdE1hbmFnZXIsIEFubm90YXRpb25zIH0gPSB0aGlzLndlYlZpZXdlckluc3RhbmNlO1xyXG5cdFx0ZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsIHRoaXMuI2RvY0xvYWRlZCk7XHJcblx0XHRpZiAoIXRoaXMuZWRpdE1vZGUpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcblx0XHRcdC8vIGluc3RhbmNlLmVuYWJsZVRvb2xzKFtdKTtcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmZpbGVVUkwgJiYgdGhpcy5maWxlVVJMLmxlbmd0aCkge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmxvYWREb2N1bWVudCh0aGlzLmZpbGVVUkwsIHtcclxuXHRcdFx0XHR4b2RzdHJlYW1pbmc6IHRydWUsXHJcblx0XHRcdFx0Y3VzdG9tSGVhZGVyczoge1xyXG5cdFx0XHRcdFx0QXV0aG9yaXphdGlvbjogdGhpcy5hdXRoSGVhZGVyXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmxvYWREb2N1bWVudChuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkodGhpcy5maWxlRGF0YSldLCB7IHR5cGU6IHRoaXMuRE9DVU1FTlRfVFlQRSB9KSwge1xyXG5cdFx0XHRcdGZpbGVuYW1lOiB0aGlzLmZpbGVUaXRsZVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuXHRcdC8vIGlmIG5vdCBuZWdlbGN0aW5nIGFkZGluZyB3YXRlciBtYXJrIHRoZW4gY2hlY2sgY29uZGl0aW9ucyBmb3IgYWRkaW5nIGl0XHJcblx0XHRpZiAoIXRoaXMubmVnZWxlY3RBZGRpbmdXYXRlck1hcmspIHtcclxuXHRcdFx0aWYgKHRoaXMuY29ycmVzcG9uZGFuY2UgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdC8vIGlmIHdlIG5lZWQgdG8gY2hlY2sgb24gc2VjcmVjeSBsZXZlbCBmb3IgYWRkaW5nIHdhdGVyIG1hcmsgb3Igbm90XHJcblx0XHRcdFx0aWYgKHRoaXMuZW52aXJvbm1lbnQuZW5hYmxlVmlld2VyV2F0ZXJNYXJrICYmIHRoaXMuc2VjcmVjeVByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHQvLyBjaGVjayBmb3Igc2VjcmVjeSBsZXZlbCBiZWZvciBhZGRpbmcgd2F0ZXJtYXJrXHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gJiZcclxuXHRcdFx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAhPT0gJ05vcm1hbCdcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmFkZFdhdGVybWFyaygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5lbnZpcm9ubWVudC5lbmFibGVWaWV3ZXJXYXRlck1hcmsgJiYgIXRoaXMuc2VjcmVjeVByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHR0aGlzLmFkZFdhdGVybWFyaygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZXhwb3J0QXNCbG9iKCk6IFByb21pc2U8QmxvYj4ge1xyXG5cdFx0Y29uc3QgZG9jID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0RG9jdW1lbnQoKTtcclxuXHRcdGNvbnN0IHhmZGZTdHJpbmcgPSBhd2FpdCB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5leHBvcnRBbm5vdGF0aW9ucygpO1xyXG5cdFx0Y29uc3QgZGF0YSA9IGF3YWl0IGRvYy5nZXRGaWxlRGF0YSh7XHJcblx0XHRcdC8vIHNhdmVzIHRoZSBkb2N1bWVudCB3aXRoIGFubm90YXRpb25zIGluIGl0XHJcblx0XHRcdHhmZGZTdHJpbmdcclxuXHRcdH0pO1xyXG5cdFx0Y29uc3QgYXJyID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7XHJcblx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoW2Fycl0sIHsgdHlwZTogdGhpcy5ET0NVTUVOVF9UWVBFIH0pO1xyXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShibG9iKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZUVkaXQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuYWN0aW9uQ2xpY2tlZCkge1xyXG5cdFx0XHQvLyBhY3Rpb24gY2xpY2tlZCBpcyBub3QgY2xpY2tlZCB0aGVuIG5vIHVwZGF0ZSBtb2RlIG9wZW5lZFxyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbXHJcblx0XHRcdFx0J3Rvb2xiYXJHcm91cC1TaGFwZXMnLFxyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtRWRpdCcsXHJcblx0XHRcdFx0J3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtQW5ub3RhdGUnXHJcblx0XHRcdF0pO1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5zZXRSZWFkT25seSh0cnVlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIGVkaXQgbW9kZSBvcGVuZWQgYW5kIG11c3QgYmUgd2hlbiBhY3Rpb24gaXMgY2xpY2tlZFxyXG5cdFx0XHRpZiAodGhpcy5lZGl0aW5nVHlwZSkge1xyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZGlzYWJsZUVsZW1lbnRzKFtcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtU2hhcGVzJyxcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtRWRpdCcsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUluc2VydCcsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUFubm90YXRlJ1xyXG5cdFx0XHRcdF0pO1xyXG5cdFx0XHRcdGxldCBncm91cDtcclxuXHRcdFx0XHRpZiAodGhpcy5lZGl0aW5nVHlwZSA9PT0gJ3NpZ25Eb2MnKSB7XHJcblx0XHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmVuYWJsZUVsZW1lbnRzKFsndG9vbGJhckdyb3VwLUluc2VydCddKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuZWRpdGluZ1R5cGUgPT09ICdhbm5vdGF0ZScpIHtcclxuXHRcdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZW5hYmxlRWxlbWVudHMoWyd0b29sYmFyR3JvdXAtU2hhcGVzJywgJ3Rvb2xiYXJHcm91cC1FZGl0JywgJ3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZSddKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLVNoYXBlcycsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUVkaXQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZSdcclxuXHRcdFx0XHRdKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5zZXRSZWFkT25seShmYWxzZSk7XHJcblx0XHRcdC8vIHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0VG9vbGJhckdyb3VwKCd0b29sYmFyR3JvdXAtQW5ub3RhdGUnKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLndlYlZpZXdlckluc3RhbmNlKSB7XHJcblx0XHRcdHRoaXMudG9nZ2xlRWRpdCgpO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0Y2hhbmdlcy51cmxGaWxlQ29udGVudCAmJlxyXG5cdFx0XHRcdGNoYW5nZXMudXJsRmlsZUNvbnRlbnQucHJldmlvdXNWYWx1ZSAmJlxyXG5cdFx0XHRcdGNoYW5nZXMudXJsRmlsZUNvbnRlbnQucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlcy51cmxGaWxlQ29udGVudC5jdXJyZW50VmFsdWVcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy5uZ09uRGVzdHJveSgpO1xyXG5cdFx0XHRcdHRoaXMubmdPbkluaXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwZGZUcm9uRXZlbnQoZXZlbnQpIHtcclxuXHRcdGlmICh0aGlzW2V2ZW50LmFjdGlvbl0pIHtcclxuXHRcdFx0Ly8gbWV0aG9kIGV4aXN0cyBpbiB0aGUgY29tcG9uZW50XHJcblx0XHRcdC8vICB0aGlzW2V2ZW50LmFjdGlvbl0oZXZlbnQucGFyYW1zKTsgLy8gY2FsbCBpdFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzZWFyY2ggcmVzdWx0cyBzZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRwYWdlczogYW55O1xyXG5cdHN0YW5kYXJkSGVpZ2h0O1xyXG5cdHN0YW5kYXJkV2lkdGg7XHJcblx0cGFnZUhlaWdodDtcclxuXHRwYWdlV2lkdGg7XHJcblx0c2F2ZWRBbm90YXRpb25zID0gW107XHJcblx0ZmlsZVdpdGhPY3IgPSBmYWxzZTtcclxuXHRuZXdBbm5vdGF0aW9ucyA9IFtdO1xyXG5cdG15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdO1xyXG5cdHJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkgPSBbXTtcclxuXHJcblx0Ly8gYWRkaW5nIHNlYXJjaCBsaXNuZXIgdG8gbGlzZW4gdG8gaW50ZXJuYWwgc2VhcmNoIGZyb20gdWkgYW5kIHdpdGhvdXQgb2NyXHJcblx0YWRkU2VhcmNoTGlzdG5lcigpIHtcclxuXHRcdGNvbnN0IHsgYW5ub3RNYW5hZ2VyLCBkb2NWaWV3ZXIsIEFubm90YXRpb25zIH0gPSB0aGlzLndlYlZpZXdlckluc3RhbmNlO1xyXG5cdFx0Y29uc3Qgc2VhcmNoTGlzdGVuZXIgPSAoc2VhcmNoUGF0dGVybiwgb3B0aW9ucywgcmVzdWx0cykgPT4ge1xyXG5cdFx0XHR0aGlzLm15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdO1xyXG5cdFx0XHRpZiAodGhpcy5zYXZlZEFub3RhdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2F2ZWRBbm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5IaWRkZW4gPSB0cnVlO1xyXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHJlZHJhdyBhbm5vdGF0aW9uIGlmIHJlbmRlcmluZyB3YXMgdXBkYXRlZFxyXG5cdFx0XHRcdFx0YW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbik7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gZG9uJ3QgZG8gYW55IHNlYXJjaCB1bnRpbCB0aGVyZSBpcyBhIHNlYXJjaCBwYXR0ZXJuXHJcblx0XHRcdGlmIChzZWFyY2hQYXR0ZXJuLnRyaW0oKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0Ly8gYWRkIHJlZGFjdGlvbiBhbm5vdGF0aW9uIGZvciBlYWNoIHNlYXJjaCByZXN1bHRcclxuXHRcdFx0XHR0aGlzLm5ld0Fubm90YXRpb25zID0gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5RdWFkcyA9IHJlc3VsdC5xdWFkcy5tYXAoKHF1YWQpID0+IHF1YWQuZ2V0UG9pbnRzKCkpO1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5QYWdlTnVtYmVyID0gcmVzdWx0LnBhZ2VOdW07XHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uLlN0cm9rZUNvbG9yID0gbmV3IEFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uQXV0aG9yID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTtcclxuXHRcdFx0XHRcdHJldHVybiBhbm5vdGF0aW9uO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuc2F2ZWRBbm90YXRpb25zLnB1c2goLi4udGhpcy5uZXdBbm5vdGF0aW9ucyk7XHJcblx0XHRcdFx0YW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb25zKHRoaXMubmV3QW5ub3RhdGlvbnMpO1xyXG5cdFx0XHRcdGFubm90TWFuYWdlci5kcmF3QW5ub3RhdGlvbnNGcm9tTGlzdCh0aGlzLm5ld0Fubm90YXRpb25zKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRkb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0ZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hZGRTZWFyY2hMaXN0ZW5lcihzZWFyY2hMaXN0ZW5lcik7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIHBlcmZvcm0gYXV0b21hdGljIHNlYXJjaCB3aGVuIGludGVyaW5nIHRoZSBwYWdlXHJcblx0YXV0b21hdGljU2VhcmNoKHNlYXJjaFRleHRBcnJheSkge1xyXG5cdFx0Y29uc3QgeyBhbm5vdE1hbmFnZXIsIGRvY1ZpZXdlciwgQW5ub3RhdGlvbnMgfSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2U7XHJcblx0XHRsZXQgc2VhcmNoT3B0aW9ucztcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uub3BlbkVsZW1lbnRzKFsnc2VhcmNoUGFuZWwnXSk7XHJcblx0XHRkb2NWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBtb2RlID1cclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLkNvcmVDb250cm9scy5TZWFyY2guTW9kZS5QQUdFX1NUT1AgfFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzLlNlYXJjaC5Nb2RlLkhJR0hMSUdIVCB8XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuQU1CSUVOVF9TVFJJTkc7XHJcblx0XHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzID0gW107IC8vIGVtcHR5IG15IHNlYXJjaCByZXN1bHQgd2hlbiBzdGFydGluZyBuZXcgc2VhcmNoXHJcblx0XHRcdGlmICh0aGlzLmZpbGVXaXRoT2NyKSB7XHJcblx0XHRcdFx0Ly8gYWRkIHJlZGFjdGlvbiBhbm5vdGF0aW9uIGZvciBlYWNoIHNlYXJjaCByZXN1bHRcclxuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uID0gbmV3IEFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRcdFx0c2VhcmNoVGV4dEFycmF5Lm1hcCgoc2VhcmNoVGV4dCkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IG15U2VhcmNoID0gc2VhcmNoVGV4dC5zcGxpdCgnICcpO1xyXG5cdFx0XHRcdFx0aWYgKG15U2VhcmNoLmxlbmd0aCA+IDEpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgd29yZFxyXG5cdFx0XHRcdFx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYWdlSGVpZ2h0ID0gcGFnZS5wYWdlX2hlaWdodDtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBhZ2VXaWR0aCA9IHBhZ2UucGFnZV93aWR0aDtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhbmRhcmRXaWR0aCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHRcdHBhZ2Uuem9uZXMuZm9yRWFjaCgoem9uZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0em9uZS5wYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhZ3JhcGgubGluZXMuZm9yRWFjaCgobGluZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsaW5lLnRleHQuaW5jbHVkZXMoc2VhcmNoVGV4dCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuU2VhcmNoRm9yV29yZEluTGluZShteVNlYXJjaCwgbGluZSwgaW5kZXggKyAxLCBwYWdlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG9ubHkgb25lIHdvcmRcclxuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hGb3JXb3JkSW5BbGxQYWdlcyhzZWFyY2hUZXh0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRkb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHRcdFx0dGhpcy5kaXNwYWxheVNlYXJjaFJlc3VsdHMoZG9jVmlld2VyKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzZWFyY2hPcHRpb25zID0ge1xyXG5cdFx0XHRcdFx0Ly8gSWYgdHJ1ZSwgYSBzZWFyY2ggb2YgdGhlIGVudGlyZSBkb2N1bWVudCB3aWxsIGJlIHBlcmZvcm1lZC4gT3RoZXJ3aXNlLCBhIHNpbmdsZSBzZWFyY2ggd2lsbCBiZSBwZXJmb3JtZWQuXHJcblx0XHRcdFx0XHRmdWxsU2VhcmNoOiB0cnVlLFxyXG5cdFx0XHRcdFx0Ly8gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHNlYXJjaCByZXR1cm5zIGEgcmVzdWx0LlxyXG5cdFx0XHRcdFx0b25SZXN1bHQ6IChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gd2l0aCAnUEFHRV9TVE9QJyBtb2RlLCB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZCBhZnRlciBlYWNoIHBhZ2UgaGFzIGJlZW4gc2VhcmNoZWQuXHJcblx0XHRcdFx0XHRcdGlmIChyZXN1bHQucmVzdWx0Q29kZSA9PT0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLlJlc3VsdENvZGUuRk9VTkQpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uID0gbmV3IEFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbi5RdWFkcyA9IHJlc3VsdC5xdWFkcy5tYXAoKHF1YWQpID0+IHF1YWQuZ2V0UG9pbnRzKCkpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFubm90YXRpb24uUXVhZHMpO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uUGFnZU51bWJlciA9IHJlc3VsdC5wYWdlTnVtO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uU3Ryb2tlQ29sb3IgPSBuZXcgQW5ub3RhdGlvbnMuQ29sb3IoMjUwLCAyMDYsIDAsIDAuNTAxOTYpO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uQXV0aG9yID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKGFubm90YXRpb24pO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9ucyhbYW5ub3RhdGlvbl0pO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90TWFuYWdlci5kcmF3QW5ub3RhdGlvbnNGcm9tTGlzdChbYW5ub3RhdGlvbl0pO1xyXG5cdFx0XHRcdFx0XHRcdGRvY1ZpZXdlci5kaXNwbGF5QWRkaXRpb25hbFNlYXJjaFJlc3VsdHMoW3Jlc3VsdF0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZWFyY2hUZXh0QXJyYXkubWFwKChzZWFyY2hlZFRleHQpID0+IHtcclxuXHRcdFx0XHRcdGRvY1ZpZXdlci50ZXh0U2VhcmNoSW5pdChzZWFyY2hlZFRleHQsIG1vZGUsIHNlYXJjaE9wdGlvbnMpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIHNlYXJjaCBmb3Igc2luZ2xlIHdvcmQgaW4gYWxsIHBhZ2VzXHJcblx0c2VhcmNoRm9yV29yZEluQWxsUGFnZXMoc2VhcmNoZWRXb3JkKSB7XHJcblx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdHRoaXMucGFnZVdpZHRoID0gcGFnZS5wYWdlX3dpZHRoO1xyXG5cdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0Y29uc3QgeCA9IHRoaXMucGFnZVdpZHRoIC8gdGhpcy5zdGFuZGFyZFdpZHRoOyAvLyB3aWR0aCByYXRpb1xyXG5cdFx0XHRjb25zdCB5ID0gdGhpcy5wYWdlSGVpZ2h0IC8gdGhpcy5zdGFuZGFyZEhlaWdodDsgLy8gaGVpZ2h0IHJhdGlvXHJcblx0XHRcdHBhZ2Uuem9uZXMuZm9yRWFjaCgoem9uZSkgPT4ge1xyXG5cdFx0XHRcdHpvbmUucGFyYWdyYXBocy5mb3JFYWNoKChwYXJhZ3JhcGgpID0+IHtcclxuXHRcdFx0XHRcdHBhcmFncmFwaC5saW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XHJcblx0XHRcdFx0XHRcdGxpbmUud29yZHMuZm9yRWFjaCgod29yZCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh3b3JkLnRleHQuaW5jbHVkZXMoc2VhcmNoZWRXb3JkKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gYW5ub3RhdGlvbi5QYWdlTnVtYmVyID0gaW5kZXgrMTtcclxuXHRcdFx0XHRcdFx0XHRcdGxldCBxdWFkcyA9IFtcclxuXHRcdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHgxOiB3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueCAvIHgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eDI6IHdvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnggLyB4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHgzOiB3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4NDogd29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHkxOiB3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eTI6IHdvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC55IC8geSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR5Mzogd29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueSAvIHksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eTQ6IHdvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhpZ2xpZ2h0VGV4dChxdWFkcywgaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY29uc3RydWN0U2VhcmNoUmVzdWx0KHNlYXJjaGVkV29yZCwgaW5kZXggKyAxLCBxdWFkcywgbGluZS50ZXh0KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBzZWFyY2ggZm9yIHdvcmQgaW4gc2luZ2xlIGxpbmVcclxuXHRTZWFyY2hGb3JXb3JkSW5MaW5lKGxpc3RPZlNlYXJjaGVkV29yZHMsIGxpbmUsIHBhZ2VudW1iZXIsIHBhZ2UpIHtcclxuXHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHR0aGlzLnBhZ2VXaWR0aCA9IHBhZ2UucGFnZV93aWR0aDtcclxuXHRcdHRoaXMuc3RhbmRhcmRIZWlnaHQgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlSGVpZ2h0KHBhZ2VudW1iZXIpO1xyXG5cdFx0dGhpcy5zdGFuZGFyZFdpZHRoID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZVdpZHRoKHBhZ2VudW1iZXIpO1xyXG5cdFx0Y29uc3QgeCA9IHRoaXMucGFnZVdpZHRoIC8gdGhpcy5zdGFuZGFyZFdpZHRoOyAvLyB3aWR0aCByYXRpb1xyXG5cdFx0Y29uc3QgeSA9IHRoaXMucGFnZUhlaWdodCAvIHRoaXMuc3RhbmRhcmRIZWlnaHQ7IC8vIGhlaWdodCByYXRpb1xyXG5cdFx0Ly8gZmluZCBvbmx5IHdvcmRzIHJlbGF0ZWQgdG8gbXkgc2VhcmNoIGZvcm0gdGhlIGxpbmVcclxuXHRcdGxldCBteUZvdW5kZWRSZXN1bHRzID0gW107XHJcblx0XHRsZXQgY29ycmVjdFJlc3VsdHMgPSBbXTtcclxuXHRcdGxpbmUud29yZHMuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XHJcblx0XHRcdGlmIChsaXN0T2ZTZWFyY2hlZFdvcmRzLmluZGV4T2Yod29yZC50ZXh0KSA+IC0xKSB7XHJcblx0XHRcdFx0bXlGb3VuZGVkUmVzdWx0cy5wdXNoKHsgd29yZDogd29yZCwgd29yZEluZGV4OiB3b3JkSW5kZXggfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIGZpbmQgb25seSB3b3JkcyBleGlzdCBpbiBteSBzZWFyY2ggc2VudGVuY2UgYW5kIG5vdCBzaW5nbGUgYW5kIHJlcGVhdGVkIHdvcmRcclxuXHRcdG15Rm91bmRlZFJlc3VsdHMubWFwKChyZXN1bHQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRteUZvdW5kZWRSZXN1bHRzW2luZGV4XVsnd29yZEluZGV4J10gLSAxID09PVxyXG5cdFx0XHRcdChteUZvdW5kZWRSZXN1bHRzW2luZGV4IC0gMV0gJiYgbXlGb3VuZGVkUmVzdWx0c1tpbmRleCAtIDFdWyd3b3JkSW5kZXgnXSkgfHxcclxuXHRcdFx0XHQobXlGb3VuZGVkUmVzdWx0c1tpbmRleCArIDFdICYmXHJcblx0XHRcdFx0XHRteUZvdW5kZWRSZXN1bHRzW2luZGV4ICsgMV1bJ3dvcmRJbmRleCddIC0gMSA9PT0gbXlGb3VuZGVkUmVzdWx0c1tpbmRleF1bJ3dvcmRJbmRleCddKVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRjb3JyZWN0UmVzdWx0cy5wdXNoKHJlc3VsdCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIGhpZ2hsaWh0IHRoZXNlIHdvcmRzIGFmdGVyIGVsZW1pbmF0aW5nIGFsbCByZXBlYXRlZCBhbmQgcmVsYXRlZCB3b3Jkc1xyXG5cdFx0Ly8gbXVzdCBiZSBmb3IgbG9vcCBzcCBpIGNhbiBjb250cm9sIHRoZSBzdGVwIGluIGVhY2ggbG9vcFxyXG5cdFx0bGV0IHF1YWRzID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvcnJlY3RSZXN1bHRzLmxlbmd0aDsgaSA9IGkgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCkge1xyXG5cdFx0XHRxdWFkcy5wdXNoKHtcclxuXHRcdFx0XHR4MTogY29ycmVjdFJlc3VsdHNbaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoIC0gMV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdHgyOiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHR4MzogY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueCAvIHgsXHJcblx0XHRcdFx0eDQ6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC54IC8geCxcclxuXHRcdFx0XHR5MTogY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5LFxyXG5cdFx0XHRcdHkyOiBjb3JyZWN0UmVzdWx0c1tpICsgbGlzdE9mU2VhcmNoZWRXb3Jkcy5sZW5ndGggLSAxXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0eTM6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5LFxyXG5cdFx0XHRcdHk0OiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5oaWdsaWdodFRleHQocXVhZHMsIHBhZ2VudW1iZXIpO1xyXG5cdFx0XHR0aGlzLmNvbnN0cnVjdFNlYXJjaFJlc3VsdChsaXN0T2ZTZWFyY2hlZFdvcmRzLmpvaW4oJyAnKSwgcGFnZW51bWJlciwgcXVhZHMsIGxpbmUudGV4dCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RTZWFyY2hSZXN1bHQoc2VhcmNoZWRUZXh0LCBwYWdlTnVtLCBxdWFkcywgbGluZSkge1xyXG5cdFx0bGV0IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggPSBsaW5lLmluZGV4T2Yoc2VhcmNoZWRUZXh0KTtcclxuXHRcdGxldCBteVNlZWFyY2hlZFRleHRFbmRJbmRleCA9IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggKyBzZWFyY2hlZFRleHQubGVuZ3RoO1xyXG5cdFx0bGV0IHNlYXJjaFJlc3VsdE9iamVjdCA9IHtcclxuXHRcdFx0YW1iaWVudFN0cjogbGluZSxcclxuXHRcdFx0cmVzdWx0U3RyOiBzZWFyY2hlZFRleHQsXHJcblx0XHRcdHJlc3VsdFN0clN0YXJ0OiBteVNlYXJjaFN0YXJ0VGV4dEluZGV4LFxyXG5cdFx0XHRyZXN1bHRTdHJFbmQ6IG15U2VlYXJjaGVkVGV4dEVuZEluZGV4LFxyXG5cdFx0XHRwYWdlTnVtOiBwYWdlTnVtLFxyXG5cdFx0XHRyZXN1bHRDb2RlOiAyLFxyXG5cdFx0XHRxdWFkczogW1xyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdGVhOiBxdWFkc1swXVsneTMnXSxcclxuXHRcdFx0XHRcdGZhOiBxdWFkc1swXVsneTQnXSxcclxuXHRcdFx0XHRcdGhhOiBxdWFkc1swXVsneDEnXSxcclxuXHRcdFx0XHRcdGlhOiBxdWFkc1swXVsneDInXSxcclxuXHRcdFx0XHRcdHBCOiBxdWFkc1swXVsneDMnXSxcclxuXHRcdFx0XHRcdHFCOiBxdWFkc1swXVsneDQnXSxcclxuXHRcdFx0XHRcdHJCOiBxdWFkc1swXVsneTEnXSxcclxuXHRcdFx0XHRcdHNCOiBxdWFkc1swXVsneTInXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XVxyXG5cdFx0fTtcclxuXHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzLnB1c2goc2VhcmNoUmVzdWx0T2JqZWN0KTtcclxuXHRcdGNvbnNvbGUubG9nKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuXHR9XHJcblxyXG5cdGRpc3BhbGF5U2VhcmNoUmVzdWx0cyhkb2NWaWV3ZXIpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRkb2NWaWV3ZXIuZGlzcGxheUFkZGl0aW9uYWxTZWFyY2hSZXN1bHRzKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuXHRcdH0sIDUwMCk7XHJcblx0fVxyXG5cclxuXHQvLyBkcmF3IGhpbGlndGhpbmcgYXJvdW5kIGNlcnRhaW4gY2hhcmF0YWN0ZXJzXHJcblx0aGlnbGlnaHRUZXh0KHF1YWRzLCBwYWdlTnVtYmVyKSB7XHJcblx0XHRjb25zdCBoaWdobGlnaHRpbmdBbm5vdCA9IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRoaWdobGlnaHRpbmdBbm5vdC5TdHJva2VDb2xvciA9IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LlF1YWRzID0gcXVhZHM7XHJcblx0XHRoaWdobGlnaHRpbmdBbm5vdC5QYWdlTnVtYmVyID0gcGFnZU51bWJlcjtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKGhpZ2hsaWdodGluZ0Fubm90KTtcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb24oaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cclxuXHRcdC8vIG5lZWQgdG8gZHJhdyB0aGUgYW5ub3RhdGlvbiBvdGhlcndpc2UgaXQgd29uJ3Qgc2hvdyB1cCB1bnRpbCB0aGUgcGFnZSBpcyByZWZyZXNoZWRcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoRm4gPSAoc2VhcmNoVmFsdWUsIG9wdGlvbnMpID0+IHtcclxuXHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzID0gW107XHJcblx0XHRpZiAodGhpcy5zYXZlZEFub3RhdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5tYXAoKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0XHRhbm5vdGF0aW9uLkhpZGRlbiA9IHRydWU7XHJcblx0XHRcdFx0Ly8gQWx3YXlzIHJlZHJhdyBhbm5vdGF0aW9uIGlmIHJlbmRlcmluZyB3YXMgdXBkYXRlZFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbik7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly8gZG9uJ3QgZG8gYW55IHNlYXJjaCB1bnRpbCB0aGVyZSBpcyBhIHNlYXJjaCBwYXR0ZXJuXHJcblx0XHRpZiAoc2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsZVdpdGhPY3IpIHtcclxuXHRcdFx0XHQvLyBhZGQgcmVkYWN0aW9uIGFubm90YXRpb24gZm9yIGVhY2ggc2VhcmNoIHJlc3VsdFxyXG5cdFx0XHRcdC8vIGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuXHRcdFx0XHRsZXQgbXlTZWFyY2ggPSBzZWFyY2hWYWx1ZS5zcGxpdCgnICcpO1xyXG5cdFx0XHRcdGlmIChteVNlYXJjaC5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHQvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggbW9yZSB0aGFuIG9uZSB3b3JkXHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdFx0XHRcdHRoaXMucGFnZVdpZHRoID0gcGFnZS5wYWdlX3dpZHRoO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0cGFnZS56b25lcy5mb3JFYWNoKCh6b25lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0em9uZS5wYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYWdyYXBoLmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxpbmUudGV4dC5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsIGxpbmUsIGluZGV4ICsgMSwgcGFnZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggb25seSBvbmUgd29yZFxyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hGb3JXb3JkSW5BbGxQYWdlcyhzZWFyY2hWYWx1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHRcdHRoaXMuZGlzcGFsYXlTZWFyY2hSZXN1bHRzKHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmlzRW5hYmxlZCkge1xyXG5cdFx0XHR0aGlzLiNyZXNldCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMud2ViVmlld2VySW5zdGFuY2UpIHtcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmNsb3NlRG9jdW1lbnQoKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdkb2N1bWVudCBjbG9zZWQhJyk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24gPyB0aGlzLnRyYW5zZWxhdGlvblN1YnNjcml0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0I3Jlc2V0KCkge1xyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5jbG9zZURvY3VtZW50KCkudGhlbigoKSA9PiB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdkb2N1bWVudCBjbG9zZWQhJyk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UgPSBudWxsO1xyXG5cdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA/IHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcblxyXG5cdFx0dGhpcy5zaWxlbnRQZGZUcm9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblx0XHR0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcblx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEhlYWRlckl0ZW1zKChoZWFkZXIpID0+IHtcclxuXHRcdFx0aGVhZGVyLmhlYWRlcnMuZGVmYXVsdCA9IGhlYWRlci5oZWFkZXJzLmRlZmF1bHQuZmlsdGVyKChxKSA9PiAhcS5pbWc/LmluY2x1ZGVzKCc8c3ZnJykpO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5vZmYoJ2RvY3VtZW50TG9hZGVkJywgdGhpcy4jZG9jTG9hZGVkKTtcclxuXHRcdC8vIG1heWJlIHdpbGwgbmVlZCB0byByZXNldCBzaWduYXR1cmUgJiBhbm5vdGF0aW9uc1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2ICNmaWxlVmlld2VyIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIj48L2Rpdj5cclxuIl19
|
|
@@ -67,6 +67,7 @@ _SilentPdfTronService_webViewerInstance = new WeakMap(), _SilentPdfTronService_w
|
|
|
67
67
|
disabledElements: ['downloadButton', 'printButton']
|
|
68
68
|
}, __classPrivateFieldGet(this, _SilentPdfTronService_webViewerElement, "f"))
|
|
69
69
|
.then((instance) => {
|
|
70
|
+
instance.CoreControls.disableEmbeddedJavaScript();
|
|
70
71
|
__classPrivateFieldSet(this, _SilentPdfTronService_webViewerInstance, instance, "f");
|
|
71
72
|
__classPrivateFieldSet(this, _SilentPdfTronService_isInitialized, true, "f");
|
|
72
73
|
})
|
|
@@ -91,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
91
92
|
type: Inject,
|
|
92
93
|
args: ['environment']
|
|
93
94
|
}] }, { type: i2.NuxeoService }]; } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lsZW50LXBkZnRyb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9zaWxlbnQtcGRmdHJvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFRaEMsWUFDZ0MsUUFBZ0IsRUFDdkMsa0JBQXNDLEVBQ2YsV0FBVyxFQUNsQyxLQUFtQjtRQUhJLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWM7O1FBWDVCLDBEQUF3QjtRQUN4QixpREFBd0MsSUFBSSxFQUFDO1FBQzdDLDhDQUFpQixLQUFLLEVBQUM7UUFDdkIsc0RBQStDLElBQUksRUFBQztRQUNwRCxpREFBbUI7UUFDbkIsa0RBQW9CO0lBT2hCLENBQUM7SUFFTCxJQUFJLFNBQVM7UUFDWixPQUFPLHVCQUFBLElBQUksdUNBQVcsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNKLHVCQUFBLElBQUksbUNBQWMsSUFBSSxNQUFBLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsRCx1QkFBQSxJQUFJLGtDQUFhLEdBQUcsTUFBQSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx1QkFBQSxJQUFJLDhDQUFr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QUFDLENBQUM7UUFDeEQsdUJBQUEsSUFBSSwrQ0FBMEIsSUFBSSxNQUFBLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxNQUFBLENBQUM7SUFFSixPQUFPLHVCQUFBLElBQUksbURBQXVCLENBQUM7QUFDcEMsQ0FBQztrSEFqRVcsb0JBQW9CLGtCQVN2QixhQUFhLCtDQUViLGFBQWE7c0hBWFYsb0JBQW9CLGNBRnBCLE1BQU07NEZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBVUUsTUFBTTsyQkFBQyxhQUFhOzswQkFFcEIsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0JBU0VfSFJFRiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgV2ViVmlld2VyIGZyb20gJ0BwZGZ0cm9uL3dlYnZpZXdlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWxlbnRQZGZUcm9uU2VydmljZSB7XHJcblx0I3dlYlZpZXdlckluc3RhbmNlOiBhbnk7XHJcblx0I3dlYlZpZXdlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblx0I2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHQjaW5pdGlhbGl6YXRpb25Qcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XHJcblx0I2lzQXJhYmljOiBib29sZWFuO1xyXG5cdCNpc0VuYWJsZWQ6IGJvb2xlYW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdChBUFBfQkFTRV9IUkVGKSBwcml2YXRlIGJhc2VIcmVmOiBzdHJpbmcsXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50LFxyXG5cdFx0cHJpdmF0ZSBudXhlbzogTnV4ZW9TZXJ2aWNlXHJcblx0KSB7IH1cclxuXHJcblx0Z2V0IGlzRW5hYmxlZCgpIHtcclxuXHRcdHJldHVybiB0aGlzLiNpc0VuYWJsZWQ7XHJcblx0fVxyXG5cclxuXHRzdGFydCgpIHtcclxuXHRcdHRoaXMuI2lzRW5hYmxlZCA9IHRydWU7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLiNpc0FyYWJpYyA9IHJlcztcclxuXHRcdFx0aWYgKCF0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50KSB7XHJcblx0XHRcdFx0dGhpcy4jd2ViVmlld2VyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG5cdFx0XHRcdHRoaXMuI3dlYlZpZXdlckVsZW1lbnQuaWQgPSAnc2lsZW50LXZpZXdlcic7XHJcblx0XHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50LnN0eWxlLCB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiAnbm9uZScsXHJcblx0XHRcdFx0XHR3aWR0aDogJzEwMCUnLFxyXG5cdFx0XHRcdFx0aGVpZ2h0OiAnMTAwJSdcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuI3dlYlZpZXdlckVsZW1lbnQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuI2luaXRpYWxpemVXZWJWaWV3ZXIoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0I2luaXRpYWxpemVXZWJWaWV3ZXIoKTogUHJvbWlzZTx2b2lkPiB7XHJcblx0XHRpZiAodGhpcy4jaXNJbml0aWFsaXplZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG5cdFx0aWYgKHRoaXMuI2luaXRpYWxpemF0aW9uUHJvbWlzZSkgcmV0dXJuIHRoaXMuI2luaXRpYWxpemF0aW9uUHJvbWlzZTtcclxuXHJcblx0XHR0aGlzLiNpbml0aWFsaXphdGlvblByb21pc2UgPSBXZWJWaWV3ZXIoXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwYXRoOiBgJHt0aGlzLmJhc2VIcmVmfS9hc3NldHMvcGRmdHJvbnNgLFxyXG5cdFx0XHRcdGZvcmNlQ2xpZW50U2lkZUluaXQ6IHRydWUsXHJcblx0XHRcdFx0c3RyZWFtaW5nOiB0cnVlLFxyXG5cdFx0XHRcdGxpY2Vuc2VLZXk6IHRoaXMuZW52aXJvbm1lbnQucGRmdHJvbkxpY2VuY2VLZXksXHJcblx0XHRcdFx0Y3NzOiBgJHt0aGlzLmJhc2VIcmVmfS9hc3NldHMvc3R5bGVzLyR7dGhpcy4jaXNBcmFiaWMgPyAnYXInIDogJ2VuJ30tbXlwZGZ0cm9uLmNzc2AsXHJcblx0XHRcdFx0YW5ub3RhdGlvblVzZXI6IGAke3RoaXMubnV4ZW8ubnV4ZW9DbGllbnQudXNlci5wcm9wZXJ0aWVzLmZpcnN0TmFtZX0gJHt0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcy5sYXN0TmFtZX1gLFxyXG5cdFx0XHRcdGRpc2FibGVkRWxlbWVudHM6IFsnZG93bmxvYWRCdXR0b24nLCAncHJpbnRCdXR0b24nXVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50XHJcblx0XHQpXHJcblx0XHRcdC50aGVuKChpbnN0YW5jZSkgPT4ge1xyXG5cdFx0XHRcdGluc3RhbmNlLkNvcmVDb250cm9scy5kaXNhYmxlRW1iZWRkZWRKYXZhU2NyaXB0KCk7XHJcblx0XHRcdFx0dGhpcy4jd2ViVmlld2VySW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuXHRcdFx0XHR0aGlzLiNpc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBpbml0aWFsaXplIFdlYlZpZXdlcjonLCBlcnJvcik7XHJcblx0XHRcdFx0dGhpcy4jaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gbnVsbDtcclxuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy4jaW5pdGlhbGl6YXRpb25Qcm9taXNlO1xyXG5cdH1cclxuXHJcblx0Z2V0V2ViVmlld2VyKCk6IFByb21pc2U8W0hUTUxFbGVtZW50LCBhbnldPiB7XHJcblx0XHRpZiAodGhpcy4jaXNJbml0aWFsaXplZCAmJiB0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50ICYmIHRoaXMuI3dlYlZpZXdlckluc3RhbmNlKSB7XHJcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoW3RoaXMuI3dlYlZpZXdlckVsZW1lbnQsIHRoaXMuI3dlYlZpZXdlckluc3RhbmNlXSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy4jaW5pdGlhbGl6ZVdlYlZpZXdlcigpLnRoZW4oKCkgPT4ge1xyXG5cdFx0XHRpZiAoIXRoaXMuI2lzSW5pdGlhbGl6ZWQgfHwgIXRoaXMuI3dlYlZpZXdlckVsZW1lbnQgfHwgIXRoaXMuI3dlYlZpZXdlckluc3RhbmNlKSB7XHJcblx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignV2ViVmlld2VyIGluaXRpYWxpemF0aW9uIGZhaWxlZC4nKSk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIFt0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50LCB0aGlzLiN3ZWJWaWV3ZXJJbnN0YW5jZV07XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9tb2RlbHMvZGV0YWlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRGaWx0ZXJNb2RlLFxyXG5cdFRhYmxlQ29sdW1uQ29uZmlnLFxyXG5cdFRhYmxlRXhwb3J0Q29uZmlnLFxyXG5cdFRhYmxlU29ydENvbmZpZyxcclxuXHRUYWJsZVNvcnRPcHRpb25zLFxyXG59IGZyb20gJy4uLy4uLy4uL3RhYmxlcy9uZGYtdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgRXZhbHVhdGVkU3RyaW5nIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgTmRmUmVwb3J0c0ZpbHRlcnMgfSBmcm9tICcuL25kZi1yZXBvcnRzLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5kZlJlcG9ydHNSZXF1ZXN0IH0gZnJvbSAnLi9yZXF1ZXN0JztcclxuXHJcbmV4cG9ydCB0eXBlIFJlcG9ydERldGFpbHNDb25maWcgPSB7XHJcbiAgZW5hYmxlZDogYm9vbGVhbjtcclxuICBzb3VyY2U6IFJlcG9ydERldGFpbHNLZXkgfCBSZXBvcnRDb25maWdPcHRpb25zO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUmVwb3J0RGV0YWlsc0tleSA9IHN0cmluZztcclxuXHJcbmV4cG9ydCB0eXBlIE5kZlJlcG9ydERldGFpbHNGaWx0ZXJzID0gT21pdDxcclxuICBOZGZSZXBvcnRzRmlsdGVycyxcclxuICAncGF5bG9hZCcgfCAncGFyYW1zJyB8ICd0b2dnbGVQYW5lbCcgfCAnbW9kZSdcclxuPiAmXHJcbiAgRmlsdGVyTW9kZTtcclxuXHJcbmV4cG9ydCB0eXBlIFJlcG9ydENvbmZpZ09wdGlvbnMgPSB7XHJcbiAgcmVxdWVzdD86IFBhcnRpYWw8TmRmUmVwb3J0c1JlcXVlc3Q+ICYge1xyXG4gICAgYWN0aW9ucz86IHtcclxuICAgICAgYmVmb3JlU3VibWl0PzogRXZhbHVhdGVkU3RyaW5nPCdwYXlsb2FkJz47XHJcbiAgICB9O1xyXG4gIH07XHJcbiAgY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXTtcclxuICBmaWVsZHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByZWZpeD86IHN0cmluZztcclxuICBxdWlja0ZpbHRlcnM/OiBzdHJpbmc7XHJcbiAgY29sdW1uc09wdGlvbnM/OiB7XHJcbiAgICB0b2dnbGU/OiBib29sZWFuO1xyXG4gICAgc29ydGFibGU/OiBUYWJsZVNvcnRDb25maWc7XHJcbiAgfTtcclxuICBzb3J0aW5nQnk/OiBUYWJsZVNvcnRPcHRpb25zO1xyXG4gIGV4cG9ydD86IFRhYmxlRXhwb3J0Q29uZmlnO1xyXG4gIGZpbHRlcnM/OiBOZGZSZXBvcnREZXRhaWxzRmlsdGVycztcclxufTtcclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9tb2RlbHMvZ3JhcGgtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDaGFydERhdGFzZXQsIENoYXJ0VHlwZSwgUGx1Z2luIH0gZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQgeyBDdXN0b21DaGFydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jaGFydHMnO1xyXG5cclxuaW1wb3J0IHsgRXZhbHVhdGVkU3RyaW5nIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgQ0hBUlRTX1RZUEVTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmFzZVJlcG9ydENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XHJcbmltcG9ydCB7IENoYXJ0T3B0aW9uc0J5VHlwZSB9IGZyb20gJy4vY29tbW9uJztcclxuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZSB9IGZyb20gJy4vcmVwb3J0LWRhdGEtc291cmNlJztcclxudHlwZSBjaGFydFR5cGVzID0gT21pdDx0eXBlb2YgQ0hBUlRTX1RZUEVTLCAnbGluZSc+O1xyXG5leHBvcnQgdHlwZSBBbGxvd2VkQ2hhcnRUeXBlID0gY2hhcnRUeXBlc1trZXlvZiBjaGFydFR5cGVzXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRUeXBlQ29uZmlnIHtcclxuXHRlbmFibGVkOiBib29sZWFuOyAvLyBDYW4gdXNlciBzd2l0Y2ggY2hhcnQgdHlwZXM/XHJcblx0YWxsb3dlZFR5cGVzPzogQWxsb3dlZENoYXJ0VHlwZVtdOyAvLyBPcHRpb25hbDogcmVzdHJpY3QgdG8gc3BlY2lmaWMgdHlwZXNcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGRpYWxvZyBkaXNwbGF5IGluIGdyYXBoIHJlcG9ydHNcclxuICovXHJcbmV4cG9ydCB0eXBlIEdyYXBoRGlhbG9nQ29uZmlnID0ge1xyXG5cdGFjdGl2ZTogYm9vbGVhbjtcclxuXHRwYW5lbENsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XHJcblx0d2lkdGg/OiBzdHJpbmc7XHJcblx0aGVpZ2h0Pzogc3RyaW5nO1xyXG5cdG1pbldpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xyXG5cdG1pbkhlaWdodD86IG51bWJlciB8IHN0cmluZztcclxuXHRtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZztcclxuXHRtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmc7XHJcblx0cG9zaXRpb24/OiBEaWFsb2dQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIENhbGxiYWNrRGVmaW5pdGlvbiA9IHsgcGF0aDogc3RyaW5nOyBjYWxsYmFjazogRXZhbHVhdGVkU3RyaW5nPCdjYWxsYmFjayc+IH1cclxuXHJcbi8qKlxyXG4gKiBEZWZpbml0aW9uIG9mIGNoYXJ0IG9wdGlvbnMgd2l0aCBwbHVnaW5zIGFzIHN0cmluZ3MgKHVzZWQgaW4gY29uZmlndXJhdGlvbilcclxuICovXHJcbmV4cG9ydCB0eXBlIEdyYXBoQ2hhcnRPcHRpb25zRGVmaW5pdGlvbjxUVHlwZSBleHRlbmRzIENoYXJ0VHlwZSA9IENoYXJ0VHlwZT4gPSB7XHJcblx0dHlwZTogVFR5cGU7XHJcblx0b3B0aW9ucz86IEN1c3RvbUNoYXJ0T3B0aW9uczxUVHlwZT47XHJcblx0ZGF0YXNldHM/OiBPbWl0PENoYXJ0RGF0YXNldDxUVHlwZT4sICdkYXRhJz5bXTtcclxuXHRvdmVycmlkZXM/OiBDaGFydE9wdGlvbnNCeVR5cGU7XHJcblx0cGx1Z2lucz86IHN0cmluZ1tdO1xyXG5cdGNhbGxiYWNrcz86IEFycmF5PENhbGxiYWNrRGVmaW5pdGlvbj47XHJcblx0Y29sb3JzPzogc3RyaW5nW107XHJcblx0ZGlyZWN0aW9uPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJzsgLy8gT25seSBmb3IgYmFyIGNoYXJ0c1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENoYXJ0IG9wdGlvbnMgd2l0aCBwbHVnaW5zIGFzIFBsdWdpbiBvYmplY3RzICh1c2VkIGluIGltcGxlbWVudGF0aW9uKVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgR3JhcGhDaGFydE9wdGlvbnM8VFR5cGUgZXh0ZW5kcyBDaGFydFR5cGUgPSBDaGFydFR5cGU+ID0gT21pdDxcclxuXHRHcmFwaENoYXJ0T3B0aW9uc0RlZmluaXRpb248VFR5cGU+LFxyXG5cdCdwbHVnaW5zJ1xyXG4+ICYge1xyXG5cdHBsdWdpbnM/OiBQbHVnaW48VFR5cGU+W107XHJcbn07XHJcblxyXG4vKipcclxuICogQ29tcGxldGUgZGVmaW5pdGlvbiBvZiBhIGdyYXBoIGNoYXJ0ICh1c2VkIGluIGNvbmZpZ3VyYXRpb24pXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBHcmFwaENoYXJ0RGVmaW5pdGlvbjxUVHlwZSBleHRlbmRzIENoYXJ0VHlwZSA9IENoYXJ0VHlwZT4gPSBCYXNlUmVwb3J0Q29uZmlnICYge1xyXG5cdG1vZGU6ICdncmFwaCc7XHJcblx0ZGF0YXNvdXJjZTogUmVwb3J0RGF0YVNvdXJjZVtdO1xyXG5cdGNoYXJ0OiBHcmFwaENoYXJ0T3B0aW9uc0RlZmluaXRpb248VFR5cGU+O1xyXG5cdHByZWZpeD86IHN0cmluZztcclxuXHRwcmludD86IGJvb2xlYW47XHJcblx0dHlwZUNvbmZpZz86IENoYXJ0VHlwZUNvbmZpZztcclxuXHRkaWFsb2c/OiBHcmFwaERpYWxvZ0NvbmZpZztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDb21wbGV0ZSBncmFwaCBjaGFydCB3aXRoIHByb2Nlc3NlZCBwbHVnaW5zICh1c2VkIGluIGltcGxlbWVudGF0aW9uKVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgR3JhcGhDaGFydDxUVHlwZSBleHRlbmRzIENoYXJ0VHlwZSA9IENoYXJ0VHlwZT4gPSBPbWl0PEdyYXBoQ2hhcnREZWZpbml0aW9uPFRUeXBlPiwgJ2NoYXJ0Jz4gJiB7XHJcblx0Y2hhcnQ6IEdyYXBoQ2hhcnRPcHRpb25zPFRUeXBlPjtcclxufTtcclxuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Utils } from 'formiojs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class CheckConditionPipe {
|
|
5
5
|
transform(activeQuery, condition, config) {
|
|
6
6
|
if (condition) {
|
|
7
|
-
return
|
|
7
|
+
return Utils.evaluate(condition, { activeQuery, config }, 'show');
|
|
8
8
|
}
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
17
17
|
name: 'checkCondition',
|
|
18
18
|
}]
|
|
19
19
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stY29uZGl0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvcGlwZXMvY2hlY2stY29uZGl0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFNakMsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixTQUFTLENBQ1AsV0FBZ0MsRUFDaEMsU0FBaUIsRUFDakIsTUFBd0I7UUFFeEIsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztnSEFWVSxrQkFBa0I7OEdBQWxCLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUg5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ2Zvcm1pb2pzJztcclxuaW1wb3J0IHsgTmRmUmVwb3J0c0NvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2NoZWNrQ29uZGl0aW9uJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrQ29uZGl0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybShcclxuICAgIGFjdGl2ZVF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgY29uZGl0aW9uOiBzdHJpbmcsXHJcbiAgICBjb25maWc6IE5kZlJlcG9ydHNDb25maWdcclxuICApOiBib29sZWFuIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuIFV0aWxzLmV2YWx1YXRlKGNvbmRpdGlvbiwgeyBhY3RpdmVRdWVyeSwgY29uZmlnIH0sICdzaG93Jyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIl19
|