igniteui-angular 18.2.11 → 18.2.12
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/esm2022/lib/action-strip/action-strip.component.mjs +1 -3
- package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +2 -3
- package/esm2022/lib/calendar/calendar.component.mjs +3 -3
- package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +2 -3
- package/esm2022/lib/calendar/months-view/months-view.component.mjs +12 -4
- package/esm2022/lib/calendar/years-view/years-view.component.mjs +11 -3
- package/esm2022/lib/dialog/dialog.component.mjs +2 -1
- package/esm2022/lib/drop-down/drop-down.component.mjs +2 -2
- package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +2 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +2 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-mrl-row.component.mjs +3 -6
- package/esm2022/lib/grids/pivot-grid/pivot-row-header-group.component.mjs +2 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +2 -3
- package/esm2022/lib/paginator/paginator.component.mjs +3 -5
- package/esm2022/lib/services/overlay/overlay.mjs +4 -2
- package/fesm2022/igniteui-angular.mjs +37 -21
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/calendar/months-view/months-view.component.d.ts +4 -0
- package/lib/calendar/years-view/years-view.component.d.ts +4 -0
- package/package.json +1 -1
|
@@ -387,6 +387,7 @@ export class IgxDialogComponent {
|
|
|
387
387
|
const eventArgs = { dialog: this, event: null, cancel: false };
|
|
388
388
|
this.opening.emit(eventArgs);
|
|
389
389
|
if (!eventArgs.cancel) {
|
|
390
|
+
overlaySettings = { ...{}, ...this._overlayDefaultSettings, ...overlaySettings };
|
|
390
391
|
this.toggleRef.open(overlaySettings);
|
|
391
392
|
this.isOpenChange.emit(true);
|
|
392
393
|
if (!this.leftButtonLabel && !this.rightButtonLabel) {
|
|
@@ -551,4 +552,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
551
552
|
}], titleId: [{
|
|
552
553
|
type: Input
|
|
553
554
|
}] } });
|
|
554
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQW1CLHNCQUFzQixFQUFFLGtCQUFrQixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUU5RCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Z0I7c0JBRHRCLE1BQU07Z0JBYUEsaUJBQWlCO3NCQUR2QixNQUFNO2dCQU1VLFlBQVk7c0JBQTVCLE1BQU07Z0JBMkNJLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBa0IzQixXQUFXO3NCQURyQixXQUFXO3VCQUFDLDBCQUEwQjtnQkFnQjVCLElBQUk7c0JBRGQsS0FBSztnQkF5QkssT0FBTztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlLCBJVG9nZ2xlVmlldyB9IGZyb20gJy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJZ3hCdXR0b25UeXBlLCBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MsIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksIE5vT3BTY3JvbGxTdHJhdGVneSwgUG9zaXRpb25TZXR0aW5ncyB9IGZyb20gJy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4Rm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZvY3VzL2ZvY3VzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hGb2N1c1RyYXBEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGZhZGVJbiwgZmFkZU91dCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmxldCBESUFMT0dfSUQgPSAwO1xuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBEaWFsb2cgV2luZG93KiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2RpYWxvZy5odG1sKVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgRGlhbG9nIFdpbmRvdyBwcmVzZW50cyBhIGRpYWxvZyB3aW5kb3cgdG8gdGhlIHVzZXIgd2hpY2ggY2FuIHNpbXBseSBkaXNwbGF5IG1lc3NhZ2VzIG9yIGRpc3BsYXlcbiAqIG1vcmUgY29tcGxpY2F0ZWQgdmlzdWFscyBzdWNoIGFzIGEgdXNlciBzaWduLWluIGZvcm0uICBJdCBhbHNvIHByb3ZpZGVzIGEgcmlnaHQgYW5kIGxlZnQgYnV0dG9uXG4gKiB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY3VzdG9tIGFjdGlvbnMuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiAoY2xpY2spPVwiZm9ybS5vcGVuKClcIj5TaG93IERpYWxvZzwvYnV0dG9uPlxuICogPGlneC1kaWFsb2cgI2Zvcm0gdGl0bGU9XCJTaWduIEluXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gKiAgIDxkaXY+XG4gKiAgICAgPGlneC1pbnB1dC1ncm91cD5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlneElucHV0Lz5cbiAqICAgICAgIDxsYWJlbCBpZ3hMYWJlbD5Vc2VybmFtZTwvbGFiZWw+XG4gKiAgICAgPC9pZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgIDwvZGl2PlxuICogICA8ZGl2PlxuICogICAgIDxpZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgaWd4SW5wdXQvPlxuICogICAgICAgPGxhYmVsIGlneExhYmVsPlBhc3N3b3JkPC9sYWJlbD5cbiAqICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAqICAgPC9kaXY+XG4gKiA8L2lneC1kaWFsb2c+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RpYWxvZy1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hUb2dnbGVEaXJlY3RpdmUsIElneEZvY3VzVHJhcERpcmVjdGl2ZSwgTmdJZiwgSWd4Rm9jdXNEaXJlY3RpdmUsIElneEJ1dHRvbkRpcmVjdGl2ZSwgSWd4UmlwcGxlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBJVG9nZ2xlVmlldywgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHByaXZhdGUgc3RhdGljIE5FWFRfSUQgPSAxO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERJQUxPR19DTEFTUyA9ICdpZ3gtZGlhbG9nJztcblxuXG5cbiAgICBAVmlld0NoaWxkKElneFRvZ2dsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgdG9nZ2xlUmVmOiBJZ3hUb2dnbGVEaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUuIElmIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbaWRdPVwiJ2lneC1kaWFsb2ctNTYnXCIgI2FsZXJ0IHRpdGxlPVwiTm90aWZpY2F0aW9uXCJcbiAgICAgKiAgbGVmdEJ1dHRvbkxhYmVsPVwiT0tcIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWRpYWxvZy0ke0RJQUxPR19JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBkaWFsb2cgc2hvdWxkIGJlIHNob3duIGFzIG1vZGFsLiBEZWZhdWx0cyB0byBgdHJ1ZWBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgW2lzTW9kYWxdPVwiZmFsc2VcIiA+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgaXNNb2RhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9kYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBpc01vZGFsKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLm1vZGFsID0gdmFsO1xuICAgICAgICB0aGlzLl9pc01vZGFsID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgY2xvc2Ugd2hlbiBgRXNjYCBrZXkgaXMgcHJlc3NlZC4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIFtjbG9zZU9uRXNjYXBlXT1cImZhbHNlXCIgPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZ2V0IGNsb3NlT25Fc2NhcGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uRXNjYXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgY2xvc2VPbkVzY2FwZSh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5jbG9zZU9uRXNjYXBlID0gdmFsO1xuICAgICAgICB0aGlzLl9jbG9zZU9uRXNjYXBlID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB3aGV0aGVyIHRoZSBUYWIga2V5IGZvY3VzIGlzIHRyYXBwZWQgd2l0aGluIHRoZSBkaWFsb2cgd2hlbiBvcGVuZWQuXG4gICAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBmb2N1c1RyYXA9XCJmYWxzZVwiXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBmb2N1c1RyYXAgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGl0bGUgb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgdGl0bGU9XCJOb3RpZmljYXRpb25cIiAjYWxlcnQgbGVmdEJ1dHRvbkxhYmVsPVwiT0tcIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRpdGxlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiAgU2V0cyB0aGUgbWVzc2FnZSB0ZXh0IG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIG1lc3NhZ2U9XCJZb3VyIGVtYWlsIHdhcyBzZW50IVwiICNhbGVydCBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGxhYmVsYCBvZiB0aGUgbGVmdCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25MYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGVmdCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYGNvbnRhaW5lZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgY29udGFpbmVkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvblR5cGU9XCJjb250YWluZWRcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsZWZ0IGJ1dHRvbiBgcmlwcGxlYC4gVGhlIGByaXBwbGVgIGFuaW1hdGVzIGEgY2xpY2svdGFwIHRvIGEgY29tcG9uZW50IGFzIGEgc2VyaWVzIG9mIGZhZGluZyB3YXZlcy5cbiAgICAgKiBUaGUgcHJvcGVydHkgYWNjZXB0cyBhbGwgdmFsaWQgQ1NTIGNvbG9yIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvblJpcHBsZT1cImdyZWVuXCIgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25SaXBwbGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBsYWJlbGAgb2YgdGhlIHJpZ2h0IGJ1dHRvbiBvZiB0aGUgZGlhbG9nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uTGFiZWwgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJpZ2h0IGJ1dHRvbiBgdHlwZWAuIFRoZSB0eXBlcyBhcmUgYGZsYXRgLCBgY29udGFpbmVkYCBhbmQgYGZhYmAuXG4gICAgICogVGhlIGBmbGF0YCB0eXBlIGJ1dHRvbiBpcyBhIHJlY3RhbmdsZSBhbmQgZG9lc24ndCBoYXZlIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGBjb250YWluZWRgIHR5cGUgYnV0dG9uIGlzIGFsc28gYSByZWN0YW5nbGUgYnV0IGhhcyBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgZmFiYCB0eXBlIGJ1dHRvbiBpcyBhIGNpcmNsZSB3aXRoIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZsYXRgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvblR5cGU9XCJmYWJcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uVHlwZTogSWd4QnV0dG9uVHlwZSA9ICdmbGF0JztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJpZ2h0IGJ1dHRvbiBgcmlwcGxlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25SaXBwbGU9XCJncmVlblwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25SaXBwbGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB3aGV0aGVyIHRoZSBkaWFsb2cgc2hvdWxkIGNsb3NlIG9uIGNsaWNrIG91dHNpZGUgdGhlIGNvbXBvbmVudC4gQnkgZGVmYXVsdCBpdCdzIGZhbHNlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBjbG9zZU9uT3V0c2lkZVNlbGVjdD1cInRydWVcIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJkaWFsb2cuY2xvc2UoKVwiXG4gICAgICogcmlnaHRCdXR0b25MYWJlbD1cIk9LXCIgcmlnaHRCdXR0b25SaXBwbGU9XCIjNENBRjUwXCIgKHJpZ2h0QnV0dG9uU2VsZWN0KT1cIm9uRGlhbG9nT0tTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgY2xvc2VPbk91dHNpZGVTZWxlY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uT3V0c2lkZVNlbGVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGNsb3NlT25PdXRzaWRlU2VsZWN0KHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSB2YWw7XG4gICAgICAgIHRoaXMuX2Nsb3NlT25PdXRzaWRlU2VsZWN0ID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcG9zaXRpb24gYW5kIGFuaW1hdGlvbiBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBkaWFsb2cuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbGV0IGN1cnJlbnRQb3NpdGlvbjogUG9zaXRpb25TZXR0aW5ncyA9IHRoaXMuYWxlcnQucG9zaXRpb25TZXR0aW5nc1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBwb3NpdGlvblNldHRpbmdzKCk6IFBvc2l0aW9uU2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25TZXR0aW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gc2V0dGluZ3MgdXNlZCBieSB0aGUgZGlhbG9nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBpbXBvcnQgeyBzbGlkZUluTGVmdCwgc2xpZGVPdXRSaWdodCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xuICAgICAqIC4uLlxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogIHB1YmxpYyBuZXdQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNsaWRlSW5Ub3AsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMjAwMG1zJyB9IH0pLFxuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihzbGlkZU91dEJvdHRvbSwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcyMDAwbXMnfSB9KSxcbiAgICAgKiAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuTGVmdCxcbiAgICAgKiAgICAgIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBob3Jpem9udGFsU3RhcnRQb2ludDogSG9yaXpvbnRhbEFsaWdubWVudC5MZWZ0LFxuICAgICAqICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBtaW5TaXplOiB7IGhlaWdodDogMTAwLCB3aWR0aDogMTAwIH1cbiAgICAgKiAgfTtcbiAgICAgKiB0aGlzLmFsZXJ0LnBvc2l0aW9uU2V0dGluZ3MgPSB0aGlzLm5ld1Bvc2l0aW9uU2V0dGluZ3M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBwb3NpdGlvblNldHRpbmdzKHNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgYHRhYmluZGV4YCBhdHRyaWJ1dGUgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGJlZm9yZSB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5pbmcpPVwib25EaWFsb2dPcGVuSGFuZGxlcigkZXZlbnQpXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5lZCk9XCJvbkRpYWxvZ09wZW5lZEhhbmRsZXIoJGV2ZW50KVwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYmVmb3JlIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAoY2xvc2luZyk9XCJvbkRpYWxvZ0Nsb3NlSGFuZGxlcigkZXZlbnQpXCIgdGl0bGU9XCJDb25maXJtYXRpb25cIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGNsb3NlZCk9XCJvbkRpYWxvZ0Nsb3NlZEhhbmRsZXIoJGV2ZW50KVwiIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgbGVmdCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGxlZnRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIiAjZGlhbG9nIGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgcmlnaHRCdXR0b25MYWJlbD1cIkNhbmNlbFwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSByaWdodCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKHJpZ2h0QnV0dG9uU2VsZWN0KT1cIm9uRGlhbG9nT0tTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgKiAjZGlhbG9nIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIlxuICAgICAqIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIGNsb3NlT25PdXRzaWRlU2VsZWN0PVwidHJ1ZVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2Ygc3RhdGUuIFBvc3NpYmxlIHN0YXRlIHZhbHVlcyBhcmUgXCJvcGVuXCIgb3IgXCJjbG9zZVwiLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nU3RhdGUgPSB0aGlzLmRpYWxvZy5zdGF0ZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW4gPyAnb3BlbicgOiAnY2xvc2UnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXRlIG9mIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGRpYWxvZ0lzT3BlbiA9IHRoaXMuZGlhbG9nLmlzT3BlbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1kaWFsb2cgW2lzT3Blbl09J2ZhbHNlJz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtZGlhbG9nIFsoaXNPcGVuKV09J21vZGVsLmlzT3Blbic+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVSZWYgPyAhdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkIDogZmFsc2U7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRpYWxvZy0taGlkZGVuJylcbiAgICBwdWJsaWMgZ2V0IGlzQ29sbGFwc2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSByb2xlIG9mIHRoZSBkaWFsb2cuIFRoZSB2YWxpZCB2YWx1ZXMgYXJlIGBkaWFsb2dgLCBgYWxlcnRkaWFsb2dgLCBgYWxlcnRgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nUm9sZSA9IHRoaXMuZGlhbG9nLnJvbGU7XG4gICAgICogfVxuICAgICAqICBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgcm9sZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGVmdEJ1dHRvbkxhYmVsICE9PSAnJyAmJiB0aGlzLnJpZ2h0QnV0dG9uTGFiZWwgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RpYWxvZyc7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLmxlZnRCdXR0b25MYWJlbCAhPT0gJycgfHxcbiAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25MYWJlbCAhPT0gJydcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FsZXJ0ZGlhbG9nJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnYWxlcnQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHRpdGxlIGlkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgQFZpZXdDaGlsZChcIk15RGlhbG9nXCIpXG4gICAgICogcHVibGljIGRpYWxvZzogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICAgbGV0IGRpYWxvZ1RpdGxlID0gdGhpcy5kaWFsb2cudGl0bGVJZDtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRpdGxlSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZUlkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIF9wb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAgICBvcGVuQW5pbWF0aW9uOiBmYWRlSW4sXG4gICAgICAgIGNsb3NlQW5pbWF0aW9uOiBmYWRlT3V0XG4gICAgfTtcblxuICAgIHByaXZhdGUgX292ZXJsYXlEZWZhdWx0U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncztcbiAgICBwcml2YXRlIF9jbG9zZU9uT3V0c2lkZVNlbGVjdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Nsb3NlT25Fc2NhcGUgPSB0cnVlO1xuICAgIHByaXZhdGUgX2lzTW9kYWwgPSB0cnVlO1xuICAgIHByaXZhdGUgX3RpdGxlSWQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbmF2U2VydmljZTogSWd4TmF2aWdhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fdGl0bGVJZCA9IElneERpYWxvZ0NvbXBvbmVudC5ORVhUX0lEKysgKyAnX3RpdGxlJztcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzID0ge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TZXR0aW5ncyksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IE5vT3BTY3JvbGxTdHJhdGVneSgpLFxuICAgICAgICAgICAgbW9kYWw6IHRoaXMuaXNNb2RhbCxcbiAgICAgICAgICAgIGNsb3NlT25Fc2NhcGU6IHRoaXMuX2Nsb3NlT25Fc2NhcGUsXG4gICAgICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0aGlzLmNsb3NlT25PdXRzaWRlU2VsZWN0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdENsb3NlRnJvbURpYWxvZyhldmVudEFyZ3MpKTtcbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50QXJncykgPT4gdGhpcy5lbWl0Q2xvc2VkRnJvbURpYWxvZyhldmVudEFyZ3MpKTtcbiAgICAgICAgdGhpcy50b2dnbGVSZWYub3BlbmVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50QXJncykgPT4gdGhpcy5lbWl0T3BlbmVkRnJvbURpYWxvZyhldmVudEFyZ3MpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IG9wZW5zIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRpYWxvZy5vcGVuKCkgaWd4QnV0dG9uPVwiY29udGFpbmVkXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRGlhbG9nQ2FuY2VsbGFibGVFdmVudEFyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IG51bGwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5vcGVuaW5nLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgaWYgKCFldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxlZnRCdXR0b25MYWJlbCAmJiAhdGhpcy5yaWdodEJ1dHRvbkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWYuZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IHRoYXQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiAgQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaWFsb2cuY2xvc2UoKSBpZ3hCdXR0b249XCJjb250YWluZWRcIj5UcmlnZ2VyIERpYWxvZzwvYnV0dG9uPlxuICAgICAqIDxpZ3gtZGlhbG9nICNkaWFsb2c+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgLy8gYGNsb3NpbmdgIHdpbGwgZW1pdCBmcm9tIGB0b2dnbGVSZWYuY2xvc2luZ2Agc3Vic2NyaXB0aW9uXG4gICAgICAgIHRoaXMudG9nZ2xlUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucy9jbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiB7QGxpbmsgSWd4RGlhbG9nQ29tcG9uZW50fVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGlhbG9nLnRvZ2dsZSgpIGlneEJ1dHRvbj1cImNvbnRhaW5lZFwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaWFsb2dTZWxlY3RlZChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbk91dHNpZGVTZWxlY3QgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoSWd4RGlhbG9nQ29tcG9uZW50LkRJQUxPR19DTEFTUylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxMZWZ0QnV0dG9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMubGVmdEJ1dHRvblNlbGVjdC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxSaWdodEJ1dHRvblNlbGVjdChldmVudCkge1xuICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uU2VsZWN0LmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdlNlcnZpY2UgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5uYXZTZXJ2aWNlLmFkZCh0aGlzLmlkLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5uYXZTZXJ2aWNlICYmIHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2U2VydmljZS5yZW1vdmUodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0V2ZW50c0FyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IGV2ZW50QXJncy5ldmVudCwgY2FuY2VsOiBldmVudEFyZ3MuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGRpYWxvZ0V2ZW50c0FyZ3MpO1xuICAgICAgICBldmVudEFyZ3MuY2FuY2VsID0gZGlhbG9nRXZlbnRzQXJncy5jYW5jZWw7XG4gICAgICAgIGlmICghZXZlbnRBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZWRGcm9tRGlhbG9nKGV2ZW50QXJncykge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudDogZXZlbnRBcmdzLmV2ZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50OiBldmVudEFyZ3MuZXZlbnQgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncyBleHRlbmRzIElEaWFsb2dFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3MgeyB9XG4iLCI8ZGl2XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAjZGlhbG9nXG4gICAgY2xhc3M9XCJpZ3gtZGlhbG9nXCJcbiAgICBpZ3hUb2dnbGVcbiAgICBbaWd4Rm9jdXNUcmFwXT1cImZvY3VzVHJhcFwiXG4gICAgKGNsaWNrKT1cIm9uRGlhbG9nU2VsZWN0ZWQoJGV2ZW50KVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjZGlhbG9nV2luZG93XG4gICAgICAgIGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93XCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRpdGxlSWRcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRpdGxlXCIgW2F0dHIuaWRdPVwidGl0bGVJZFwiIGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LXRpdGxlXCI+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwiIXRpdGxlXCJcbiAgICAgICAgICAgIHNlbGVjdD1cImlneC1kaWFsb2ctdGl0bGUsW2lneERpYWxvZ1RpdGxlXVwiXG4gICAgICAgID48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lc3NhZ2VcIiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1tZXNzYWdlXCI+e3tcbiAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIW1lc3NhZ2VcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwibGVmdEJ1dHRvbkxhYmVsIHx8IHJpZ2h0QnV0dG9uTGFiZWxcIlxuICAgICAgICAgICAgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctYWN0aW9uc1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImxlZnRCdXR0b25MYWJlbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2lneEZvY3VzXT1cImlzT3BlblwiXG4gICAgICAgICAgICAgICAgW2lneEJ1dHRvbl09XCJsZWZ0QnV0dG9uVHlwZVwiXG4gICAgICAgICAgICAgICAgaWd4UmlwcGxlPVwie3sgbGVmdEJ1dHRvblJpcHBsZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW50ZXJuYWxMZWZ0QnV0dG9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGxlZnRCdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaWdodEJ1dHRvbkxhYmVsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaWd4Rm9jdXNdPVwiaXNPcGVuXCJcbiAgICAgICAgICAgICAgICBbaWd4QnV0dG9uXT1cInJpZ2h0QnV0dG9uVHlwZVwiXG4gICAgICAgICAgICAgICAgaWd4UmlwcGxlPVwie3sgcmlnaHRCdXR0b25SaXBwbGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkludGVybmFsUmlnaHRCdXR0b25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcmlnaHRCdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCIhbGVmdEJ1dHRvbkxhYmVsICYmICFyaWdodEJ1dHRvbkxhYmVsXCJcbiAgICAgICAgICAgIHNlbGVjdD1cImlneC1kaWFsb2ctYWN0aW9ucyxbaWd4RGlhbG9nQWN0aW9uc11cIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
555
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQW1CLHNCQUFzQixFQUFFLGtCQUFrQixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUU5RCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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YixNQUFNO2dCQVdBLE1BQU07c0JBRFosTUFBTTtnQkFXQSxPQUFPO3NCQURiLE1BQU07Z0JBV0EsTUFBTTtzQkFEWixNQUFNO2dCQVdBLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFhQSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBTVUsWUFBWTtzQkFBNUIsTUFBTTtnQkEyQ0ksTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFrQjNCLFdBQVc7c0JBRHJCLFdBQVc7dUJBQUMsMEJBQTBCO2dCQWdCNUIsSUFBSTtzQkFEZCxLQUFLO2dCQXlCSyxPQUFPO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4TmF2aWdhdGlvblNlcnZpY2UsIElUb2dnbGVWaWV3IH0gZnJvbSAnLi4vY29yZS9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IElneEJ1dHRvblR5cGUsIElneEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlTZXR0aW5ncywgR2xvYmFsUG9zaXRpb25TdHJhdGVneSwgTm9PcFNjcm9sbFN0cmF0ZWd5LCBQb3NpdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMvZm9jdXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEZvY3VzVHJhcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgZmFkZUluLCBmYWRlT3V0IH0gZnJvbSAnaWduaXRldWktYW5ndWxhci9hbmltYXRpb25zJztcblxubGV0IERJQUxPR19JRCA9IDA7XG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIERpYWxvZyBXaW5kb3cqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvZGlhbG9nLmh0bWwpXG4gKlxuICogVGhlIElnbml0ZSBVSSBEaWFsb2cgV2luZG93IHByZXNlbnRzIGEgZGlhbG9nIHdpbmRvdyB0byB0aGUgdXNlciB3aGljaCBjYW4gc2ltcGx5IGRpc3BsYXkgbWVzc2FnZXMgb3IgZGlzcGxheVxuICogbW9yZSBjb21wbGljYXRlZCB2aXN1YWxzIHN1Y2ggYXMgYSB1c2VyIHNpZ24taW4gZm9ybS4gIEl0IGFsc28gcHJvdmlkZXMgYSByaWdodCBhbmQgbGVmdCBidXR0b25cbiAqIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBjdXN0b20gYWN0aW9ucy5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJmb3JtLm9wZW4oKVwiPlNob3cgRGlhbG9nPC9idXR0b24+XG4gKiA8aWd4LWRpYWxvZyAjZm9ybSB0aXRsZT1cIlNpZ24gSW5cIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAqICAgPGRpdj5cbiAqICAgICA8aWd4LWlucHV0LWdyb3VwPlxuICogICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWd4SW5wdXQvPlxuICogICAgICAgPGxhYmVsIGlneExhYmVsPlVzZXJuYW1lPC9sYWJlbD5cbiAqICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXY+XG4gKiAgICAgPGlneC1pbnB1dC1ncm91cD5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZ3hJbnB1dC8+XG4gKiAgICAgICA8bGFiZWwgaWd4TGFiZWw+UGFzc3dvcmQ8L2xhYmVsPlxuICogICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICogICA8L2Rpdj5cbiAqIDwvaWd4LWRpYWxvZz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneFRvZ2dsZURpcmVjdGl2ZSwgSWd4Rm9jdXNUcmFwRGlyZWN0aXZlLCBOZ0lmLCBJZ3hGb2N1c0RpcmVjdGl2ZSwgSWd4QnV0dG9uRGlyZWN0aXZlLCBJZ3hSaXBwbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIElUb2dnbGVWaWV3LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgTkVYVF9JRCA9IDE7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRElBTE9HX0NMQVNTID0gJ2lneC1kaWFsb2cnO1xuXG5cblxuICAgIEBWaWV3Q2hpbGQoSWd4VG9nZ2xlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyB0b2dnbGVSZWY6IElneFRvZ2dsZURpcmVjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZS4gSWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIFtpZF09XCInaWd4LWRpYWxvZy01NidcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIlxuICAgICAqICBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtZGlhbG9nLSR7RElBTE9HX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgYmUgc2hvd24gYXMgbW9kYWwuIERlZmF1bHRzIHRvIGB0cnVlYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbaXNNb2RhbF09XCJmYWxzZVwiID48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGdldCBpc01vZGFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNb2RhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGlzTW9kYWwodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MubW9kYWwgPSB2YWw7XG4gICAgICAgIHRoaXMuX2lzTW9kYWwgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgZGlhbG9nIHNob3VsZCBjbG9zZSB3aGVuIGBFc2NgIGtleSBpcyBwcmVzc2VkLiBEZWZhdWx0cyB0byBgdHJ1ZWBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgW2Nsb3NlT25Fc2NhcGVdPVwiZmFsc2VcIiA+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgY2xvc2VPbkVzY2FwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25Fc2NhcGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBjbG9zZU9uRXNjYXBlKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLmNsb3NlT25Fc2NhcGUgPSB2YWw7XG4gICAgICAgIHRoaXMuX2Nsb3NlT25Fc2NhcGUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHdoZXRoZXIgdGhlIFRhYiBrZXkgZm9jdXMgaXMgdHJhcHBlZCB3aXRoaW4gdGhlIGRpYWxvZyB3aGVuIG9wZW5lZC5cbiAgICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGZvY3VzVHJhcD1cImZhbHNlXCJcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGZvY3VzVHJhcCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICNhbGVydCBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGl0bGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqICBTZXRzIHRoZSBtZXNzYWdlIHRleHQgb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbWVzc2FnZT1cIllvdXIgZW1haWwgd2FzIHNlbnQhXCIgI2FsZXJ0IGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtZXNzYWdlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgbGFiZWxgIG9mIHRoZSBsZWZ0IGJ1dHRvbiBvZiB0aGUgZGlhbG9nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IHRpdGxlPVwiTm90aWZpY2F0aW9uXCIgIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkxhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsZWZ0IGJ1dHRvbiBgdHlwZWAuIFRoZSB0eXBlcyBhcmUgYGZsYXRgLCBgY29udGFpbmVkYCBhbmQgYGZhYmAuXG4gICAgICogVGhlIGBmbGF0YCB0eXBlIGJ1dHRvbiBpcyBhIHJlY3RhbmdsZSBhbmQgZG9lc24ndCBoYXZlIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGBjb250YWluZWRgIHR5cGUgYnV0dG9uIGlzIGFsc28gYSByZWN0YW5nbGUgYnV0IGhhcyBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgZmFiYCB0eXBlIGJ1dHRvbiBpcyBhIGNpcmNsZSB3aXRoIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGZsYXRgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uVHlwZT1cImNvbnRhaW5lZFwiIGxlZnRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uVHlwZTogSWd4QnV0dG9uVHlwZSA9ICdmbGF0JztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxlZnQgYnV0dG9uIGByaXBwbGVgLiBUaGUgYHJpcHBsZWAgYW5pbWF0ZXMgYSBjbGljay90YXAgdG8gYSBjb21wb25lbnQgYXMgYSBzZXJpZXMgb2YgZmFkaW5nIHdhdmVzLlxuICAgICAqIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uUmlwcGxlPVwiZ3JlZW5cIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblJpcHBsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGxhYmVsYCBvZiB0aGUgcmlnaHQgYnV0dG9uIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IHRpdGxlPVwiTm90aWZpY2F0aW9uXCIgIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25MYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcmlnaHQgYnV0dG9uIGB0eXBlYC4gVGhlIHR5cGVzIGFyZSBgZmxhdGAsIGBjb250YWluZWRgIGFuZCBgZmFiYC5cbiAgICAgKiBUaGUgYGZsYXRgIHR5cGUgYnV0dG9uIGlzIGEgcmVjdGFuZ2xlIGFuZCBkb2Vzbid0IGhhdmUgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGNvbnRhaW5lZGAgdHlwZSBidXR0b24gaXMgYWxzbyBhIHJlY3RhbmdsZSBidXQgaGFzIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGBmYWJgIHR5cGUgYnV0dG9uIGlzIGEgY2lyY2xlIHdpdGggYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmxhdGAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uVHlwZT1cImZhYlwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25UeXBlOiBJZ3hCdXR0b25UeXBlID0gJ2ZsYXQnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcmlnaHQgYnV0dG9uIGByaXBwbGVgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvblJpcHBsZT1cImdyZWVuXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblJpcHBsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgY2xvc2Ugb24gY2xpY2sgb3V0c2lkZSB0aGUgY29tcG9uZW50LiBCeSBkZWZhdWx0IGl0J3MgZmFsc2UuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGNsb3NlT25PdXRzaWRlU2VsZWN0PVwidHJ1ZVwiIGxlZnRCdXR0b25MYWJlbD1cIkNhbmNlbFwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCJcbiAgICAgKiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIiByaWdodEJ1dHRvblJpcHBsZT1cIiM0Q0FGNTBcIiAocmlnaHRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGdldCBjbG9zZU9uT3V0c2lkZVNlbGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25PdXRzaWRlU2VsZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgY2xvc2VPbk91dHNpZGVTZWxlY3QodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MuY2xvc2VPbk91dHNpZGVDbGljayA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2xvc2VPbk91dHNpZGVTZWxlY3QgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwb3NpdGlvbiBhbmQgYW5pbWF0aW9uIHNldHRpbmdzIHVzZWQgYnkgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZCgnYWxlcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYWxlcnQ6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBsZXQgY3VycmVudFBvc2l0aW9uOiBQb3NpdGlvblNldHRpbmdzID0gdGhpcy5hbGVydC5wb3NpdGlvblNldHRpbmdzXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHBvc2l0aW9uU2V0dGluZ3MoKTogUG9zaXRpb25TZXR0aW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblNldHRpbmdzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgcG9zaXRpb24gYW5kIGFuaW1hdGlvbiBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBkaWFsb2cuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGltcG9ydCB7IHNsaWRlSW5MZWZ0LCBzbGlkZU91dFJpZ2h0IH0gZnJvbSAnaWduaXRldWktYW5ndWxhcic7XG4gICAgICogLi4uXG4gICAgICogQFZpZXdDaGlsZCgnYWxlcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYWxlcnQ6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiAgcHVibGljIG5ld1Bvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICogICAgICBvcGVuQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oc2xpZGVJblRvcCwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcyMDAwbXMnIH0gfSksXG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNsaWRlT3V0Qm90dG9tLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzIwMDBtcyd9IH0pLFxuICAgICAqICAgICAgaG9yaXpvbnRhbERpcmVjdGlvbjogSG9yaXpvbnRhbEFsaWdubWVudC5MZWZ0LFxuICAgICAqICAgICAgdmVydGljYWxEaXJlY3Rpb246IFZlcnRpY2FsQWxpZ25tZW50Lk1pZGRsZSxcbiAgICAgKiAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LkxlZnQsXG4gICAgICogICAgICB2ZXJ0aWNhbFN0YXJ0UG9pbnQ6IFZlcnRpY2FsQWxpZ25tZW50Lk1pZGRsZSxcbiAgICAgKiAgICAgIG1pblNpemU6IHsgaGVpZ2h0OiAxMDAsIHdpZHRoOiAxMDAgfVxuICAgICAqICB9O1xuICAgICAqIHRoaXMuYWxlcnQucG9zaXRpb25TZXR0aW5ncyA9IHRoaXMubmV3UG9zaXRpb25TZXR0aW5ncztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHBvc2l0aW9uU2V0dGluZ3Moc2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb25TZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kgPSBuZXcgR2xvYmFsUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvblNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVmYXVsdCBgdGFiaW5kZXhgIGF0dHJpYnV0ZSBmb3IgdGhlIGNvbXBvbmVudFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gLTE7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYmVmb3JlIHRoZSBkaWFsb2cgaXMgb3BlbmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAob3BlbmluZyk9XCJvbkRpYWxvZ09wZW5IYW5kbGVyKCRldmVudClcIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJkaWFsb2cuY2xvc2UoKVwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb3BlbmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0NhbmNlbGxhYmxlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgb3BlbmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAob3BlbmVkKT1cIm9uRGlhbG9nT3BlbmVkSGFuZGxlcigkZXZlbnQpXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBiZWZvcmUgdGhlIGRpYWxvZyBpcyBjbG9zZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIChjbG9zaW5nKT1cIm9uRGlhbG9nQ2xvc2VIYW5kbGVyKCRldmVudClcIiB0aXRsZT1cIkNvbmZpcm1hdGlvblwiIGxlZnRCdXR0b25MYWJlbD1cIkNhbmNlbFwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0NhbmNlbGxhYmxlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAoY2xvc2VkKT1cIm9uRGlhbG9nQ2xvc2VkSGFuZGxlcigkZXZlbnQpXCIgdGl0bGU9XCJDb25maXJtYXRpb25cIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSBsZWZ0IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAobGVmdEJ1dHRvblNlbGVjdCk9XCJvbkRpYWxvZ09LU2VsZWN0ZWQoJGV2ZW50KVwiICNkaWFsb2cgbGVmdEJ1dHRvbkxhYmVsPVwiT0tcIiByaWdodEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxJRGlhbG9nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIHJpZ2h0IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAocmlnaHRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIlxuICAgICAqICNkaWFsb2cgdGl0bGU9XCJDb25maXJtYXRpb25cIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJkaWFsb2cuY2xvc2UoKVwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiXG4gICAgICogcmlnaHRCdXR0b25SaXBwbGU9XCIjNENBRjUwXCIgY2xvc2VPbk91dHNpZGVTZWxlY3Q9XCJ0cnVlXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBzdGF0ZS4gUG9zc2libGUgc3RhdGUgdmFsdWVzIGFyZSBcIm9wZW5cIiBvciBcImNsb3NlXCIuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeURpYWxvZ1wiKVxuICAgICAqIHB1YmxpYyBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgIGxldCBkaWFsb2dTdGF0ZSA9IHRoaXMuZGlhbG9nLnN0YXRlO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0YXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhdGUgb2YgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgZGlhbG9nSXNPcGVuID0gdGhpcy5kaWFsb2cuaXNPcGVuO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWRpYWxvZyBbaXNPcGVuXT0nZmFsc2UnPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1kaWFsb2cgWyhpc09wZW4pXT0nbW9kZWwuaXNPcGVuJz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZVJlZiA/ICF0aGlzLnRvZ2dsZVJlZi5jb2xsYXBzZWQgOiBmYWxzZTtcbiAgICB9XG4gICAgcHVibGljIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGlhbG9nLS1oaWRkZW4nKVxuICAgIHB1YmxpYyBnZXQgaXNDb2xsYXBzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZVJlZi5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHJvbGUgb2YgdGhlIGRpYWxvZy4gVGhlIHZhbGlkIHZhbHVlcyBhcmUgYGRpYWxvZ2AsIGBhbGVydGRpYWxvZ2AsIGBhbGVydGAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeURpYWxvZ1wiKVxuICAgICAqIHB1YmxpYyBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgIGxldCBkaWFsb2dSb2xlID0gdGhpcy5kaWFsb2cucm9sZTtcbiAgICAgKiB9XG4gICAgICogIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCByb2xlKCkge1xuICAgICAgICBpZiAodGhpcy5sZWZ0QnV0dG9uTGFiZWwgIT09ICcnICYmIHRoaXMucmlnaHRCdXR0b25MYWJlbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGlhbG9nJztcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMubGVmdEJ1dHRvbkxhYmVsICE9PSAnJyB8fFxuICAgICAgICAgICAgdGhpcy5yaWdodEJ1dHRvbkxhYmVsICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAnYWxlcnRkaWFsb2cnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdhbGVydCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgdGl0bGUgaWQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nVGl0bGUgPSB0aGlzLmRpYWxvZy50aXRsZUlkO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdGl0bGVJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlSWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX3Bvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgIG9wZW5BbmltYXRpb246IGZhZGVJbixcbiAgICAgICAgY2xvc2VBbmltYXRpb246IGZhZGVPdXRcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfb3ZlcmxheURlZmF1bHRTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzO1xuICAgIHByaXZhdGUgX2Nsb3NlT25PdXRzaWRlU2VsZWN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfY2xvc2VPbkVzY2FwZSA9IHRydWU7XG4gICAgcHJpdmF0ZSBfaXNNb2RhbCA9IHRydWU7XG4gICAgcHJpdmF0ZSBfdGl0bGVJZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuYXZTZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl90aXRsZUlkID0gSWd4RGlhbG9nQ29tcG9uZW50Lk5FWFRfSUQrKyArICdfdGl0bGUnO1xuXG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgR2xvYmFsUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvblNldHRpbmdzKSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgTm9PcFNjcm9sbFN0cmF0ZWd5KCksXG4gICAgICAgICAgICBtb2RhbDogdGhpcy5pc01vZGFsLFxuICAgICAgICAgICAgY2xvc2VPbkVzY2FwZTogdGhpcy5fY2xvc2VPbkVzY2FwZSxcbiAgICAgICAgICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IHRoaXMuY2xvc2VPbk91dHNpZGVTZWxlY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50QXJncykgPT4gdGhpcy5lbWl0Q2xvc2VGcm9tRGlhbG9nKGV2ZW50QXJncykpO1xuICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnRBcmdzKSA9PiB0aGlzLmVtaXRDbG9zZWRGcm9tRGlhbG9nKGV2ZW50QXJncykpO1xuICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnRBcmdzKSA9PiB0aGlzLmVtaXRPcGVuZWRGcm9tRGlhbG9nKGV2ZW50QXJncykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgb3BlbnMgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiB7QGxpbmsgSWd4RGlhbG9nQ29tcG9uZW50fVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGlhbG9nLm9wZW4oKSBpZ3hCdXR0b249XCJjb250YWluZWRcIj5UcmlnZ2VyIERpYWxvZzwvYnV0dG9uPlxuICAgICAqIDxpZ3gtZGlhbG9nICNkaWFsb2c+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuKG92ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0gdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncykge1xuICAgICAgICBjb25zdCBldmVudEFyZ3M6IElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncyA9IHsgZGlhbG9nOiB0aGlzLCBldmVudDogbnVsbCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLm9wZW5pbmcuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICBpZiAoIWV2ZW50QXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIG92ZXJsYXlTZXR0aW5ncyA9IHsgLi4ue30sIC4uLiB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLCAuLi5vdmVybGF5U2V0dGluZ3MgfTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW4ob3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGVmdEJ1dHRvbkxhYmVsICYmICF0aGlzLnJpZ2h0QnV0dG9uTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5lbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgdGhhdCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqICBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRpYWxvZy5jbG9zZSgpIGlneEJ1dHRvbj1cImNvbnRhaW5lZFwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICAvLyBgY2xvc2luZ2Agd2lsbCBlbWl0IGZyb20gYHRvZ2dsZVJlZi5jbG9zaW5nYCBzdWJzY3JpcHRpb25cbiAgICAgICAgdGhpcy50b2dnbGVSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IG9wZW5zL2Nsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaWFsb2cudG9nZ2xlKCkgaWd4QnV0dG9uPVwiY29udGFpbmVkXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRpYWxvZ1NlbGVjdGVkKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiAmJlxuICAgICAgICAgICAgdGhpcy5jbG9zZU9uT3V0c2lkZVNlbGVjdCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhJZ3hEaWFsb2dDb21wb25lbnQuRElBTE9HX0NMQVNTKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25JbnRlcm5hbExlZnRCdXR0b25TZWxlY3QoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5sZWZ0QnV0dG9uU2VsZWN0LmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25JbnRlcm5hbFJpZ2h0QnV0dG9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmlnaHRCdXR0b25TZWxlY3QuZW1pdCh7IGRpYWxvZzogdGhpcywgZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubmF2U2VydmljZSAmJiB0aGlzLmlkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdlNlcnZpY2UuYWRkKHRoaXMuaWQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdlNlcnZpY2UgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5uYXZTZXJ2aWNlLnJlbW92ZSh0aGlzLmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdENsb3NlRnJvbURpYWxvZyhldmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgZGlhbG9nRXZlbnRzQXJncyA9IHsgZGlhbG9nOiB0aGlzLCBldmVudDogZXZlbnRBcmdzLmV2ZW50LCBjYW5jZWw6IGV2ZW50QXJncy5jYW5jZWwgfTtcbiAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoZGlhbG9nRXZlbnRzQXJncyk7XG4gICAgICAgIGV2ZW50QXJncy5jYW5jZWwgPSBkaWFsb2dFdmVudHNBcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKCFldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdENsb3NlZEZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50OiBldmVudEFyZ3MuZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0T3BlbmVkRnJvbURpYWxvZyhldmVudEFyZ3MpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCh7IGRpYWxvZzogdGhpcywgZXZlbnQ6IGV2ZW50QXJncy5ldmVudCB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpYWxvZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICBldmVudDogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpYWxvZ0NhbmNlbGxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgSURpYWxvZ0V2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7IH1cbiIsIjxkaXZcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgICNkaWFsb2dcbiAgICBjbGFzcz1cImlneC1kaWFsb2dcIlxuICAgIGlneFRvZ2dsZVxuICAgIFtpZ3hGb2N1c1RyYXBdPVwiZm9jdXNUcmFwXCJcbiAgICAoY2xpY2spPVwib25EaWFsb2dTZWxlY3RlZCgkZXZlbnQpXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNkaWFsb2dXaW5kb3dcbiAgICAgICAgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3dcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGl0bGVcIiBbYXR0ci5pZF09XCJ0aXRsZUlkXCIgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCIhdGl0bGVcIlxuICAgICAgICAgICAgc2VsZWN0PVwiaWd4LWRpYWxvZy10aXRsZSxbaWd4RGlhbG9nVGl0bGVdXCJcbiAgICAgICAgPjwvbmctY29udGVudD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVzc2FnZVwiIGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LW1lc3NhZ2VcIj57e1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhbWVzc2FnZVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJsZWZ0QnV0dG9uTGFiZWwgfHwgcmlnaHRCdXR0b25MYWJlbFwiXG4gICAgICAgICAgICBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1hY3Rpb25zXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGVmdEJ1dHRvbkxhYmVsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaWd4Rm9jdXNdPVwiaXNPcGVuXCJcbiAgICAgICAgICAgICAgICBbaWd4QnV0dG9uXT1cImxlZnRCdXR0b25UeXBlXCJcbiAgICAgICAgICAgICAgICBpZ3hSaXBwbGU9XCJ7eyBsZWZ0QnV0dG9uUmlwcGxlIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JbnRlcm5hbExlZnRCdXR0b25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbGVmdEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInJpZ2h0QnV0dG9uTGFiZWxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtpZ3hGb2N1c109XCJpc09wZW5cIlxuICAgICAgICAgICAgICAgIFtpZ3hCdXR0b25dPVwicmlnaHRCdXR0b25UeXBlXCJcbiAgICAgICAgICAgICAgICBpZ3hSaXBwbGU9XCJ7eyByaWdodEJ1dHRvblJpcHBsZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW50ZXJuYWxSaWdodEJ1dHRvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyByaWdodEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cIiFsZWZ0QnV0dG9uTGFiZWwgJiYgIXJpZ2h0QnV0dG9uTGFiZWxcIlxuICAgICAgICAgICAgc2VsZWN0PVwiaWd4LWRpYWxvZy1hY3Rpb25zLFtpZ3hEaWFsb2dBY3Rpb25zXVwiXG4gICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -166,7 +166,7 @@ export class IgxDropDownComponent extends IgxDropDownBaseDirective {
|
|
|
166
166
|
* ```
|
|
167
167
|
*/
|
|
168
168
|
open(overlaySettings) {
|
|
169
|
-
const settings =
|
|
169
|
+
const settings = { ...{}, ...this.getDefaultOverlaySettings(), ...overlaySettings };
|
|
170
170
|
this.toggleDirective.open(settings);
|
|
171
171
|
this.updateScrollPosition();
|
|
172
172
|
}
|
|
@@ -569,4 +569,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
569
569
|
type: ViewChild,
|
|
570
570
|
args: ['scrollContainer', { static: true }]
|
|
571
571
|
}] } });
|
|
572
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFHVixLQUFLLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixNQUFNLEVBQ04sWUFBWSxFQUVaLGdCQUFnQixFQUNoQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUF1QixNQUFNLHVDQUF1QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFF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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVEaXJlY3RpdmUsIFRvZ2dsZVZpZXdFdmVudEFyZ3MgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneERyb3BEb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneERyb3BEb3duQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcC1kb3duLmJhc2UnO1xuaW1wb3J0IHsgRHJvcERvd25BY3Rpb25LZXksIE5hdmlnYXRlIH0gZnJvbSAnLi9kcm9wLWRvd24uY29tbW9uJztcbmltcG9ydCB7IElHWF9EUk9QRE9XTl9CQVNFLCBJRHJvcERvd25CYXNlIH0gZnJvbSAnLi9kcm9wLWRvd24uY29tbW9uJztcbmltcG9ydCB7IElTZWxlY3Rpb25FdmVudEFyZ3MgfSBmcm9tICcuL2Ryb3AtZG93bi5jb21tb24nO1xuaW1wb3J0IHsgSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wLWRvd24taXRlbS5iYXNlJztcbmltcG9ydCB7IElneEZvck9mVG9rZW4gfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MgfSBmcm9tICcuLi9zZXJ2aWNlcy9vdmVybGF5L3V0aWxpdGllcyc7XG5pbXBvcnQgeyBET0NVTUVOVCwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbmluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgRHJvcERvd24qKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcC1kb3duKVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgRHJvcCBEb3duIGRpc3BsYXlzIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIGl0ZW1zIHdoaWNoIG1heSBiZSB2aXN1YWxseSBncm91cGVkIGFuZFxuICogc3VwcG9ydHMgc2VsZWN0aW9uIG9mIGEgc2luZ2xlIGl0ZW0uIENsaWNraW5nIG9yIHRhcHBpbmcgYW4gaXRlbSBzZWxlY3RzIGl0IGFuZCBjbG9zZXMgdGhlIERyb3AgRG93blxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8aWd4LWRyb3AtZG93bj5cbiAqICAgPGlneC1kcm9wLWRvd24taXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIGRpc2FibGVkPXt7aXRlbS5kaXNhYmxlZH19IGlzSGVhZGVyPXt7aXRlbS5oZWFkZXJ9fT5cbiAqICAgICB7eyBpdGVtLnZhbHVlIH19XG4gKiAgIDwvaWd4LWRyb3AtZG93bi1pdGVtPlxuICogPC9pZ3gtZHJvcC1kb3duPlxuICogYGBgXG4gKi9cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZHJvcC1kb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElHWF9EUk9QRE9XTl9CQVNFLCB1c2VFeGlzdGluZzogSWd4RHJvcERvd25Db21wb25lbnQgfV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4VG9nZ2xlRGlyZWN0aXZlLCBOZ0lmXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEcm9wRG93bkNvbXBvbmVudCBleHRlbmRzIElneERyb3BEb3duQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIElEcm9wRG93bkJhc2UsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IElneERyb3BEb3duSXRlbUNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2hpbGRyZW46IFF1ZXJ5TGlzdDxJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRyb3AtZG93biAob3BlbmluZyk9J2hhbmRsZU9wZW5pbmcoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciB0aGUgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKG9wZW5lZCk9J2hhbmRsZU9wZW5lZCgkZXZlbnQpJz48L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKGNsb3NpbmcpPSdoYW5kbGVDbG9zaW5nKCRldmVudCknPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIGNsb3NlZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZHJvcC1kb3duIChjbG9zZWQpPSdoYW5kbGVDbG9zZWQoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgaXRlbXMgdGFrZSBmb2N1cy4gRGlzYWJsZWQgYnkgZGVmYXVsdC5cbiAgICAgKiBXaGVuIGVuYWJsZWQsIGRyb3AgZG93biBpdGVtcyBnYWluIHRhYiBpbmRleCBhbmQgYXJlIGZvY3VzZWQgd2hlbiBhY3RpdmUgLVxuICAgICAqIHRoaXMgaW5jbHVkZXMgYWN0aXZhdGluZyB0aGUgc2VsZWN0ZWQgaXRlbSB3aGVuIG9wZW5pbmcgdGhlIGRyb3AgZG93biBhbmQgbW92aW5nIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICAgKlxuICAgICAqIE5vdGU6IEtlZXAgdGhhdCBmb2N1cyBzaGlmdCBpbiBtaW5kIHdoZW4gdXNpbmcgdGhlIGlneERyb3BEb3duSXRlbU5hdmlnYXRpb24gZGlyZWN0aXZlXG4gICAgICogYW5kIGVuc3VyZSBpdCdzIHBsYWNlZCBlaXRoZXIgb24gZWFjaCBmb2N1c2FibGUgaXRlbSBvciBhIGNvbW1vbiBhbmNlc3RvciB0byBhbGxvdyBpdCB0byBoYW5kbGUga2V5Ym9hcmQgZXZlbnRzLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBkcm9wRG93bkFsbG93c0l0ZW1Gb2N1cyA9IHRoaXMuZHJvcGRvd24uYWxsb3dJdGVtc0ZvY3VzO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWRyb3AtZG93biBbYWxsb3dJdGVtc0ZvY3VzXT0ndHJ1ZSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBhbGxvd0l0ZW1zRm9jdXMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gW2xhYmVsbGVkYnldPVwibGFiZWxJZFwiPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBAQ29udGVudENoaWxkKElneEZvck9mVG9rZW4pXG4gICAgcHJvdGVjdGVkIHZpcnREaXI6IElneEZvck9mVG9rZW48YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoSWd4VG9nZ2xlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCB0b2dnbGVEaXJlY3RpdmU6IElneFRvZ2dsZURpcmVjdGl2ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIHNjcm9sbENvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBmb2N1c2VkSXRlbSgpOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRJdGVtICYmIHRoaXMuX2ZvY3VzZWRJdGVtLmluZGV4ICE9PSAtMSA/XG4gICAgICAgICAgICAgICAgKHRoaXMuY2hpbGRyZW4uZmluZChlID0+IGUuaW5kZXggPT09IHRoaXMuX2ZvY3VzZWRJdGVtLmluZGV4KSB8fCBudWxsKSA6XG4gICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNlZEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBmb2N1c2VkSXRlbSh2YWx1ZTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcihgJHt0aGlzLmlkfS1hY3RpdmVgKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWRJdGVtID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHZhbHVlLmluZGV4XG4gICAgICAgICAgICB9IGFzIElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KGAke3RoaXMuaWR9LWFjdGl2ZWAsIG5ldyBTZXQoW3RoaXMuX2ZvY3VzZWRJdGVtXSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KHZhbHVlLCB0aGlzLnNlbGVjdGlvbi5nZXQodGhpcy5pZCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcih0aGlzLmlkKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KHZhbHVlLCB0aGlzLnNlbGVjdGlvbi5nZXQoYCR7dGhpcy5pZH0tYWN0aXZlYCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcihgJHt0aGlzLmlkfS1hY3RpdmVgKTtcbiAgICAgICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogSWQgb2YgdGhlIGludGVybmFsIGxpc3Rib3ggb2YgdGhlIGRyb3AgZG93biAqL1xuICAgIHB1YmxpYyBnZXQgbGlzdElkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctbGlzdCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGN1cnJlbnRJdGVtID0gdGhpcy5kcm9wZG93bi5zZWxlY3RlZEl0ZW07XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZEl0ZW0oKTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0aW9uLmZpcnN0X2l0ZW0odGhpcy5pZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBpZiB0aGUgZHJvcGRvd24gaXMgY29sbGFwc2VkXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzQ29sbGFwc2VkID0gdGhpcy5kcm9wZG93bi5jb2xsYXBzZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb2xsYXBzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBzY3JvbGxDb250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGxDb250YWluZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbGxlY3Rpb25MZW5ndGgoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQgfHwgdGhpcy52aXJ0RGlyLmlneEZvck9mLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJvdGVjdGVkIF9zY3JvbGxQb3NpdGlvbjogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnksXG4gICAgICAgIHByb3RlY3RlZCBzZWxlY3Rpb246IElneFNlbGVjdGlvbkFQSVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBkb2N1bWVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGRyb3Bkb3duXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5kcm9wZG93bi5vcGVuKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIG9wZW4ob3ZlcmxheVNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gb3ZlcmxheVNldHRpbmdzIHx8IHRoaXMuZ2V0RGVmYXVsdE92ZXJsYXlTZXR0aW5ncygpO1xuICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5vcGVuKHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldERlZmF1bHRPdmVybGF5U2V0dGluZ3MoKTogT3ZlcmxheVNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IHRydWUsXG4gICAgICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQ29ubmVjdGVkUG9zaXRpb25pbmdTdHJhdGVneSgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkcm9wZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGUob3ZlcmxheVNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5pc0Nsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFuIGl0ZW0gYnkgaW5kZXhcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgaXRlbSB0byBzZWxlY3Q7IElmIHRoZSBkcm9wIGRvd24gdXNlcyAqaWd4Rm9yLCBwYXNzIHRoZSBpbmRleCBpbiBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmV3U2VsZWN0aW9uOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmlydERpci5pZ3hGb3JPZltpbmRleF0sXG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIH0gYXMgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgaXRlbSBvbiB0aGUgc3BlY2lmaWVkIGluZGV4XG4gICAgICogSWYgdGhlIGRhdGEgaW4gdGhlIGRyb3AtZG93biBpcyB2aXJ0dWFsaXplZCwgcGFzcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIHZpcnR1YWxpemVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3SW5kZXggbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEgfHwgaW5kZXggPj0gdGhpcy5jb2xsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaW5kZXggPiAodGhpcy5mb2N1c2VkSXRlbSA/IHRoaXMuZm9jdXNlZEl0ZW0uaW5kZXggOiAtMSkgPyBOYXZpZ2F0ZS5Eb3duIDogTmF2aWdhdGUuVXA7XG4gICAgICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IHRoaXMuaXNJbmRleE91dE9mQm91bmRzKGluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy52aXJ0RGlyLmlneEZvck9mW2luZGV4XSxcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICAgICAgaWYgKHN1YlJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0RGlyLnNjcm9sbFRvKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlydERpci5jaHVua0xvYWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBIZWFkZXIoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwSGVhZGVyKGRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZUl0ZW0oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsbG93SXRlbXNGb2N1cyAmJiB0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsVG8oMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhcmdldFNjcm9sbCA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleCh0aGlzLnNlbGVjdGVkSXRlbS5pbmRleCk7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgbG9naWMgX2Nhbm5vdF8gYmUgcmlnaHQsIHRob3NlIGFyZSBvcHRpb25hbCB1c2VyLXByb3ZpZGVkIGlucHV0cyB0aGF0IGNhbiBiZSBzdHJpbmdzIHdpdGggdW5pdHMsIHJlZmFjdG9yOlxuICAgICAgICBjb25zdCBpdGVtc0luVmlldyA9IHRoaXMudmlydERpci5pZ3hGb3JDb250YWluZXJTaXplIC8gdGhpcy52aXJ0RGlyLmlneEZvckl0ZW1TaXplO1xuICAgICAgICB0YXJnZXRTY3JvbGwgLT0gKGl0ZW1zSW5WaWV3IC8gMiAtIDEpICogdGhpcy52aXJ0RGlyLmlneEZvckl0ZW1TaXplO1xuICAgICAgICB0aGlzLnZpcnREaXIuZ2V0U2Nyb2xsKCkuc2Nyb2xsVG9wID0gdGFyZ2V0U2Nyb2xsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlT3BlbmluZyhlOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgPSB7IG93bmVyOiB0aGlzLCBldmVudDogZS5ldmVudCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLm9wZW5pbmcuZW1pdChhcmdzKTtcbiAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKGUuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsUG9zaXRpb24gPSB0aGlzLl9zY3JvbGxQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlQ29udGVudEFwcGVuZGVkKF9ldmVudDogVG9nZ2xlVmlld0V2ZW50QXJncykge1xuICAgICAgICBpZiAoIXRoaXMudmlydERpciAmJiB0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0l0ZW0odGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVPcGVuZWQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSXRlbUZvY3VzKCk7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblRvZ2dsZUNsb3NpbmcoZTogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncykge1xuICAgICAgICBjb25zdCBhcmdzOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzID0geyBvd25lcjogdGhpcywgZXZlbnQ6IGUuZXZlbnQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGUuY2FuY2VsID0gYXJncy5jYW5jZWw7XG4gICAgICAgIGlmIChlLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9uID0gdGhpcy52aXJ0RGlyLnNjcm9sbFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVDbG9zZWQoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZGVsZXRlKHRoaXMuaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5kZWxldGUoYCR7dGhpcy5pZH0tYWN0aXZlYCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGNhbGN1bGF0ZVNjcm9sbFBvc2l0aW9uKGl0ZW06IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSBpdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcGFyZW50UmVjdCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzY3JvbGxEZWx0YSA9IHBhcmVudFJlY3QudG9wIC0gZWxlbWVudFJlY3QudG9wO1xuICAgICAgICBsZXQgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgLSBzY3JvbGxEZWx0YTtcblxuICAgICAgICBjb25zdCBkcm9wRG93bkhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgc2Nyb2xsUG9zaXRpb24gLT0gZHJvcERvd25IZWlnaHQgLyAyO1xuICAgICAgICBzY3JvbGxQb3NpdGlvbiArPSBpdGVtLmVsZW1lbnRIZWlnaHQgLyAyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHNjcm9sbFBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmlkKSB7XG4gICAgICAgICAgICAvLyB0ZW1wIHdvcmthcm91bmQgdW50aWwgZml4IC0tPiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zNDk5MlxuICAgICAgICAgICAgdGhpcy50b2dnbGVEaXJlY3RpdmUuaWQgPSBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlydERpci5pZ3hGb3JJdGVtU2l6ZSA9IDI4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEtleWRvd24gSGFuZGxlciAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbkl0ZW1BY3Rpb25LZXkoa2V5OiBEcm9wRG93bkFjdGlvbktleSwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBzdXBlci5vbkl0ZW1BY3Rpb25LZXkoa2V5LCBldmVudCk7XG4gICAgICAgIHRoaXMuY2xvc2UoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZpcnR1YWwgc2Nyb2xsIGltcGxlbWVudGF0aW9uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZpZ2F0ZUZpcnN0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlSXRlbSgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlTGFzdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUl0ZW0odGhpcy52aXJ0RGlyLnRvdGFsSXRlbUNvdW50ID8gdGhpcy52aXJ0RGlyLnRvdGFsSXRlbUNvdW50IC0gMSA6IHRoaXMudmlydERpci5pZ3hGb3JPZi5sZW5ndGggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm5hdmlnYXRlTGFzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmF2aWdhdGVOZXh0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlSXRlbSh0aGlzLl9mb2N1c2VkSXRlbSA/IHRoaXMuX2ZvY3VzZWRJdGVtLmluZGV4ICsgMSA6IDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIubmF2aWdhdGVOZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZpZ2F0ZVByZXYoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVJdGVtKHRoaXMuX2ZvY3VzZWRJdGVtID8gdGhpcy5fZm9jdXNlZEl0ZW0uaW5kZXggLSAxIDogMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZVByZXYoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGBzZWxlY3Rpb25DaGFuZ2luZ2AgZW1pdCBhbmQgdGhlIGRyb3AgZG93biB0b2dnbGUgd2hlbiBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBwYXJhbSBuZXdTZWxlY3Rpb25cbiAgICAgKiBAcGFyYW0gZW1pdFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZWxlY3RJdGVtKG5ld1NlbGVjdGlvbj86IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUsIGV2ZW50PzogRXZlbnQsIGVtaXQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtO1xuICAgICAgICBpZiAoIW5ld1NlbGVjdGlvbikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gdGhpcy5mb2N1c2VkSXRlbTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3U2VsZWN0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1NlbGVjdGlvbiBpbnN0YW5jZW9mIElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUgJiYgbmV3U2VsZWN0aW9uLmlzSGVhZGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdTZWxlY3Rpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgaW5kZXg6IG5ld1NlbGVjdGlvbi5pbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3M6IElTZWxlY3Rpb25FdmVudEFyZ3MgPSB7IG9sZFNlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLCBjYW5jZWw6IGZhbHNlLCBvd25lcjogdGhpcyB9O1xuXG4gICAgICAgIGlmIChlbWl0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGlvblZhbGlkKGFyZ3MubmV3U2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldCh0aGlzLmlkLCBuZXcgU2V0KFthcmdzLm5ld1NlbGVjdGlvbl0pKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmlydERpcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAob2xkU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRTZWxlY3Rpb24uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJncy5uZXdTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubmV3U2VsZWN0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEaXJlY3RpdmUuY2xvc2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGRyb3AtZG93biBpdGVtIGZvciB0aGUgc2VsZWN0aW9uIScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGRyb3Bkb3duXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZHJvcGRvd24uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb246IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUgPSBudWxsO1xuICAgICAgICBjb25zdCBhcmdzOiBJU2VsZWN0aW9uRXZlbnRBcmdzID0geyBvbGRTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbiwgY2FuY2VsOiBmYWxzZSwgb3duZXI6IHRoaXMgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0gJiYgIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIHZhbGlkXG4gICAgICogYG51bGxgIC0gdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgZW1wdGllZFxuICAgICAqIFZpcnR1YWw/IC0gdGhlIHNlbGVjdGlvbiBzaG91bGQgYXQgbGVhc3QgaGF2ZSBhbmQgYGluZGV4YCBhbmQgYHZhbHVlYCBwcm9wZXJ0eVxuICAgICAqIE5vbi12aXJ0dWFsPyAtIHRoZSBzZWxlY3Rpb24gc2hvdWxkIGJlIGEgdmFsaWQgZHJvcC1kb3duIGl0ZW0gYW5kICoqbm90KiogYmUgYSBoZWFkZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNTZWxlY3Rpb25WYWxpZChzZWxlY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uID09PSBudWxsXG4gICAgICAgICAgICB8fCAodGhpcy52aXJ0RGlyICYmIHNlbGVjdGlvbi5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJiBzZWxlY3Rpb24uaGFzT3duUHJvcGVydHkoJ2luZGV4JykpXG4gICAgICAgICAgICB8fCAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50ICYmICFzZWxlY3Rpb24uaXNIZWFkZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzY3JvbGxUb0l0ZW0oaXRlbTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLmNhbGN1bGF0ZVNjcm9sbFBvc2l0aW9uKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c0l0ZW0odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX2ZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbS5mb2N1c2VkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlSXRlbUZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNJdGVtKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWxsb3dJdGVtc0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBza2lwSGVhZGVyKGRpcmVjdGlvbjogTmF2aWdhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW0uaXNIZWFkZXIgfHwgdGhpcy5mb2N1c2VkSXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gTmF2aWdhdGUuVXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlUHJldigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlTmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0luZGV4T3V0T2ZCb3VuZHMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiBOYXZpZ2F0ZSkge1xuICAgICAgICBjb25zdCB2aXJ0U3RhdGUgPSB0aGlzLnZpcnREaXIuc3RhdGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGwoKS5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IGl0ZW1Qb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleChpbmRleCwgZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duKTtcbiAgICAgICAgY29uc3QgaW5kZXhPdXRPZkNodW5rID0gaW5kZXggPCB2aXJ0U3RhdGUuc3RhcnRJbmRleCB8fCBpbmRleCA+IHZpcnRTdGF0ZS5jaHVua1NpemUgKyB2aXJ0U3RhdGUuc3RhcnRJbmRleDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsTmVlZGVkID0gZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duID8gY3VycmVudFBvc2l0aW9uIDwgaXRlbVBvc2l0aW9uIDogY3VycmVudFBvc2l0aW9uID4gaXRlbVBvc2l0aW9uO1xuICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IGluZGV4T3V0T2ZDaHVuayB8fCBzY3JvbGxOZWVkZWQ7XG4gICAgICAgIHJldHVybiBzdWJSZXF1aXJlZDtcbiAgICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtZHJvcC1kb3duX19saXN0XCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcbiAgICBpZ3hUb2dnbGVcbiAgICAoYXBwZW5kZWQpPVwib25Ub2dnbGVDb250ZW50QXBwZW5kZWQoJGV2ZW50KVwiXG4gICAgKG9wZW5pbmcpPVwib25Ub2dnbGVPcGVuaW5nKCRldmVudClcIiAob3BlbmVkKT1cIm9uVG9nZ2xlT3BlbmVkKClcIlxuICAgIChjbG9zaW5nKT1cIm9uVG9nZ2xlQ2xvc2luZygkZXZlbnQpXCIgKGNsb3NlZCk9XCJvblRvZ2dsZUNsb3NlZCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1kcm9wLWRvd25fX2xpc3Qtc2Nyb2xsXCIgI3Njcm9sbENvbnRhaW5lciBbYXR0ci5pZF09XCJsaXN0SWRcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbGxlZEJ5XCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgW3N0eWxlLm1heEhlaWdodF09XCJtYXhIZWlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
572
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFHVixLQUFLLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixNQUFNLEVBQ04sWUFBWSxFQUVaLGdCQUFnQixFQUNoQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUF1QixNQUFNLHVDQUF1QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFF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QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgUXVlcnlMaXN0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFRvZ2dsZURpcmVjdGl2ZSwgVG9nZ2xlVmlld0V2ZW50QXJncyB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wLWRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25CYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wLWRvd24uYmFzZSc7XG5pbXBvcnQgeyBEcm9wRG93bkFjdGlvbktleSwgTmF2aWdhdGUgfSBmcm9tICcuL2Ryb3AtZG93bi5jb21tb24nO1xuaW1wb3J0IHsgSUdYX0RST1BET1dOX0JBU0UsIElEcm9wRG93bkJhc2UgfSBmcm9tICcuL2Ryb3AtZG93bi5jb21tb24nO1xuaW1wb3J0IHsgSVNlbGVjdGlvbkV2ZW50QXJncyB9IGZyb20gJy4vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4U2VsZWN0aW9uQVBJU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VsZWN0aW9uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3AtZG93bi1pdGVtLmJhc2UnO1xuaW1wb3J0IHsgSWd4Rm9yT2ZUb2tlbiB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE92ZXJsYXlTZXR0aW5ncyB9IGZyb20gJy4uL3NlcnZpY2VzL292ZXJsYXkvdXRpbGl0aWVzJztcbmltcG9ydCB7IERPQ1VNRU5ULCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBEcm9wRG93bioqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wLWRvd24pXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBEcm9wIERvd24gZGlzcGxheXMgYSBzY3JvbGxhYmxlIGxpc3Qgb2YgaXRlbXMgd2hpY2ggbWF5IGJlIHZpc3VhbGx5IGdyb3VwZWQgYW5kXG4gKiBzdXBwb3J0cyBzZWxlY3Rpb24gb2YgYSBzaW5nbGUgaXRlbS4gQ2xpY2tpbmcgb3IgdGFwcGluZyBhbiBpdGVtIHNlbGVjdHMgaXQgYW5kIGNsb3NlcyB0aGUgRHJvcCBEb3duXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtZHJvcC1kb3duPlxuICogICA8aWd4LWRyb3AtZG93bi1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgZGlzYWJsZWQ9e3tpdGVtLmRpc2FibGVkfX0gaXNIZWFkZXI9e3tpdGVtLmhlYWRlcn19PlxuICogICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAqICAgPC9pZ3gtZHJvcC1kb3duLWl0ZW0+XG4gKiA8L2lneC1kcm9wLWRvd24+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kcm9wLWRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSUdYX0RST1BET1dOX0JBU0UsIHVzZUV4aXN0aW5nOiBJZ3hEcm9wRG93bkNvbXBvbmVudCB9XSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hUb2dnbGVEaXJlY3RpdmUsIE5nSWZdXG59KVxuZXhwb3J0IGNsYXNzIElneERyb3BEb3duQ29tcG9uZW50IGV4dGVuZHMgSWd4RHJvcERvd25CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgSURyb3BEb3duQmFzZSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gSWd4RHJvcERvd25JdGVtQ29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHB1YmxpYyBvdmVycmlkZSBjaGlsZHJlbjogUXVlcnlMaXN0PElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBiZWZvcmUgdGhlIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZHJvcC1kb3duIChvcGVuaW5nKT0naGFuZGxlT3BlbmluZygkZXZlbnQpJz48L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRyb3AtZG93biAob3BlbmVkKT0naGFuZGxlT3BlbmVkKCRldmVudCknPjwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRyb3AtZG93biAoY2xvc2luZyk9J2hhbmRsZUNsb3NpbmcoJGV2ZW50KSc+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciB0aGUgZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kcm9wLWRvd24gKGNsb3NlZCk9J2hhbmRsZUNsb3NlZCgkZXZlbnQpJz48L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciBpdGVtcyB0YWtlIGZvY3VzLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgICAqIFdoZW4gZW5hYmxlZCwgZHJvcCBkb3duIGl0ZW1zIGdhaW4gdGFiIGluZGV4IGFuZCBhcmUgZm9jdXNlZCB3aGVuIGFjdGl2ZSAtXG4gICAgICogdGhpcyBpbmNsdWRlcyBhY3RpdmF0aW5nIHRoZSBzZWxlY3RlZCBpdGVtIHdoZW4gb3BlbmluZyB0aGUgZHJvcCBkb3duIGFuZCBtb3Zpbmcgd2l0aCBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgICAqXG4gICAgICogTm90ZTogS2VlcCB0aGF0IGZvY3VzIHNoaWZ0IGluIG1pbmQgd2hlbiB1c2luZyB0aGUgaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbiBkaXJlY3RpdmVcbiAgICAgKiBhbmQgZW5zdXJlIGl0J3MgcGxhY2VkIGVpdGhlciBvbiBlYWNoIGZvY3VzYWJsZSBpdGVtIG9yIGEgY29tbW9uIGFuY2VzdG9yIHRvIGFsbG93IGl0IHRvIGhhbmRsZSBrZXlib2FyZCBldmVudHMuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGRyb3BEb3duQWxsb3dzSXRlbUZvY3VzID0gdGhpcy5kcm9wZG93bi5hbGxvd0l0ZW1zRm9jdXM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtZHJvcC1kb3duIFthbGxvd0l0ZW1zRm9jdXNdPSd0cnVlJz48L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGFsbG93SXRlbXNGb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBhcmlhLWxhYmVsbGVkYnkgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRyb3AtZG93biBbbGFiZWxsZWRieV09XCJsYWJlbElkXCI+PC9pZ3gtZHJvcC1kb3duPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBDb250ZW50Q2hpbGQoSWd4Rm9yT2ZUb2tlbilcbiAgICBwcm90ZWN0ZWQgdmlydERpcjogSWd4Rm9yT2ZUb2tlbjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChJZ3hUb2dnbGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIHRvZ2dsZURpcmVjdGl2ZTogSWd4VG9nZ2xlRGlyZWN0aXZlO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgc2Nyb2xsQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGZvY3VzZWRJdGVtKCk6IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNlZEl0ZW0gJiYgdGhpcy5fZm9jdXNlZEl0ZW0uaW5kZXggIT09IC0xID9cbiAgICAgICAgICAgICAgICAodGhpcy5jaGlsZHJlbi5maW5kKGUgPT4gZS5pbmRleCA9PT0gdGhpcy5fZm9jdXNlZEl0ZW0uaW5kZXgpIHx8IG51bGwpIDpcbiAgICAgICAgICAgICAgICBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2VkSXRlbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IGZvY3VzZWRJdGVtKHZhbHVlOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKGAke3RoaXMuaWR9LWFjdGl2ZWApO1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRJdGVtID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWRJdGVtID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbmRleDogdmFsdWUuaW5kZXhcbiAgICAgICAgICAgIH0gYXMgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXQoYCR7dGhpcy5pZH0tYWN0aXZlYCwgbmV3IFNldChbdGhpcy5fZm9jdXNlZEl0ZW1dKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBpZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXQodmFsdWUsIHRoaXMuc2VsZWN0aW9uLmdldCh0aGlzLmlkKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKHRoaXMuaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXQodmFsdWUsIHRoaXMuc2VsZWN0aW9uLmdldChgJHt0aGlzLmlkfS1hY3RpdmVgKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKGAke3RoaXMuaWR9LWFjdGl2ZWApO1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBJZCBvZiB0aGUgaW50ZXJuYWwgbGlzdGJveCBvZiB0aGUgZHJvcCBkb3duICovXG4gICAgcHVibGljIGdldCBsaXN0SWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy1saXN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY3VycmVudEl0ZW0gPSB0aGlzLmRyb3Bkb3duLnNlbGVjdGVkSXRlbTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkSXRlbSgpOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3Rpb24uZmlyc3RfaXRlbSh0aGlzLmlkKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGlmIHRoZSBkcm9wZG93biBpcyBjb2xsYXBzZWRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNDb2xsYXBzZWQgPSB0aGlzLmRyb3Bkb3duLmNvbGxhcHNlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlRGlyZWN0aXZlLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHNjcm9sbENvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcm9sbENvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29sbGVjdGlvbkxlbmd0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlydERpci50b3RhbEl0ZW1Db3VudCB8fCB0aGlzLnZpcnREaXIuaWd4Rm9yT2YubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcm90ZWN0ZWQgX3Njcm9sbFBvc2l0aW9uOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IGFueSxcbiAgICAgICAgcHJvdGVjdGVkIHNlbGVjdGlvbjogSWd4U2VsZWN0aW9uQVBJU2VydmljZSkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIsIGRvY3VtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB7IC4uLiB7fSwgLi4udGhpcy5nZXREZWZhdWx0T3ZlcmxheVNldHRpbmdzKCksIC4uLm92ZXJsYXlTZXR0aW5ncyB9O1xuICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5vcGVuKHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldERlZmF1bHRPdmVybGF5U2V0dGluZ3MoKTogT3ZlcmxheVNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IHRydWUsXG4gICAgICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQ29ubmVjdGVkUG9zaXRpb25pbmdTdHJhdGVneSgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkcm9wZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5jbG9zZShldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGUob3ZlcmxheVNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLnRvZ2dsZURpcmVjdGl2ZS5pc0Nsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFuIGl0ZW0gYnkgaW5kZXhcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgaXRlbSB0byBzZWxlY3Q7IElmIHRoZSBkcm9wIGRvd24gdXNlcyAqaWd4Rm9yLCBwYXNzIHRoZSBpbmRleCBpbiBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmV3U2VsZWN0aW9uOiBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmlydERpci5pZ3hGb3JPZltpbmRleF0sXG4gICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIH0gYXMgSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgaXRlbSBvbiB0aGUgc3BlY2lmaWVkIGluZGV4XG4gICAgICogSWYgdGhlIGRhdGEgaW4gdGhlIGRyb3AtZG93biBpcyB2aXJ0dWFsaXplZCwgcGFzcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIHZpcnR1YWxpemVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3SW5kZXggbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEgfHwgaW5kZXggPj0gdGhpcy5jb2xsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaW5kZXggPiAodGhpcy5mb2N1c2VkSXRlbSA/IHRoaXMuZm9jdXNlZEl0ZW0uaW5kZXggOiAtMSkgPyBOYXZpZ2F0ZS5Eb3duIDogTmF2aWdhdGUuVXA7XG4gICAgICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IHRoaXMuaXNJbmRleE91dE9mQm91bmRzKGluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy52aXJ0RGlyLmlneEZvck9mW2luZGV4XSxcbiAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICAgICAgaWYgKHN1YlJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0RGlyLnNjcm9sbFRvKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlydERpci5jaHVua0xvYWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBIZWFkZXIoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwSGVhZGVyKGRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZUl0ZW0oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsbG93SXRlbXNGb2N1cyAmJiB0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsVG8oMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhcmdldFNjcm9sbCA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleCh0aGlzLnNlbGVjdGVkSXRlbS5pbmRleCk7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgbG9naWMgX2Nhbm5vdF8gYmUgcmlnaHQsIHRob3NlIGFyZSBvcHRpb25hbCB1c2VyLXByb3ZpZGVkIGlucHV0cyB0aGF0IGNhbiBiZSBzdHJpbmdzIHdpdGggdW5pdHMsIHJlZmFjdG9yOlxuICAgICAgICBjb25zdCBpdGVtc0luVmlldyA9IHRoaXMudmlydERpci5pZ3hGb3JDb250YWluZXJTaXplIC8gdGhpcy52aXJ0RGlyLmlneEZvckl0ZW1TaXplO1xuICAgICAgICB0YXJnZXRTY3JvbGwgLT0gKGl0ZW1zSW5WaWV3IC8gMiAtIDEpICogdGhpcy52aXJ0RGlyLmlneEZvckl0ZW1TaXplO1xuICAgICAgICB0aGlzLnZpcnREaXIuZ2V0U2Nyb2xsKCkuc2Nyb2xsVG9wID0gdGFyZ2V0U2Nyb2xsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlT3BlbmluZyhlOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgPSB7IG93bmVyOiB0aGlzLCBldmVudDogZS5ldmVudCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLm9wZW5pbmcuZW1pdChhcmdzKTtcbiAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKGUuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsUG9zaXRpb24gPSB0aGlzLl9zY3JvbGxQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uVG9nZ2xlQ29udGVudEFwcGVuZGVkKF9ldmVudDogVG9nZ2xlVmlld0V2ZW50QXJncykge1xuICAgICAgICBpZiAoIXRoaXMudmlydERpciAmJiB0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0l0ZW0odGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVPcGVuZWQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSXRlbUZvY3VzKCk7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblRvZ2dsZUNsb3NpbmcoZTogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncykge1xuICAgICAgICBjb25zdCBhcmdzOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzID0geyBvd25lcjogdGhpcywgZXZlbnQ6IGUuZXZlbnQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGUuY2FuY2VsID0gYXJncy5jYW5jZWw7XG4gICAgICAgIGlmIChlLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9uID0gdGhpcy52aXJ0RGlyLnNjcm9sbFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ub2dnbGVDbG9zZWQoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZGVsZXRlKHRoaXMuaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5kZWxldGUoYCR7dGhpcy5pZH0tYWN0aXZlYCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGNhbGN1bGF0ZVNjcm9sbFBvc2l0aW9uKGl0ZW06IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSBpdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcGFyZW50UmVjdCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzY3JvbGxEZWx0YSA9IHBhcmVudFJlY3QudG9wIC0gZWxlbWVudFJlY3QudG9wO1xuICAgICAgICBsZXQgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgLSBzY3JvbGxEZWx0YTtcblxuICAgICAgICBjb25zdCBkcm9wRG93bkhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgc2Nyb2xsUG9zaXRpb24gLT0gZHJvcERvd25IZWlnaHQgLyAyO1xuICAgICAgICBzY3JvbGxQb3NpdGlvbiArPSBpdGVtLmVsZW1lbnRIZWlnaHQgLyAyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHNjcm9sbFBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmlkKSB7XG4gICAgICAgICAgICAvLyB0ZW1wIHdvcmthcm91bmQgdW50aWwgZml4IC0tPiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zNDk5MlxuICAgICAgICAgICAgdGhpcy50b2dnbGVEaXJlY3RpdmUuaWQgPSBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlydERpci5pZ3hGb3JJdGVtU2l6ZSA9IDI4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEtleWRvd24gSGFuZGxlciAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbkl0ZW1BY3Rpb25LZXkoa2V5OiBEcm9wRG93bkFjdGlvbktleSwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBzdXBlci5vbkl0ZW1BY3Rpb25LZXkoa2V5LCBldmVudCk7XG4gICAgICAgIHRoaXMuY2xvc2UoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZpcnR1YWwgc2Nyb2xsIGltcGxlbWVudGF0aW9uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZpZ2F0ZUZpcnN0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlSXRlbSgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5hdmlnYXRlTGFzdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUl0ZW0odGhpcy52aXJ0RGlyLnRvdGFsSXRlbUNvdW50ID8gdGhpcy52aXJ0RGlyLnRvdGFsSXRlbUNvdW50IC0gMSA6IHRoaXMudmlydERpci5pZ3hGb3JPZi5sZW5ndGggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm5hdmlnYXRlTGFzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmF2aWdhdGVOZXh0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0RGlyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlSXRlbSh0aGlzLl9mb2N1c2VkSXRlbSA/IHRoaXMuX2ZvY3VzZWRJdGVtLmluZGV4ICsgMSA6IDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIubmF2aWdhdGVOZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZpZ2F0ZVByZXYoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnREaXIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVJdGVtKHRoaXMuX2ZvY3VzZWRJdGVtID8gdGhpcy5fZm9jdXNlZEl0ZW0uaW5kZXggLSAxIDogMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5uYXZpZ2F0ZVByZXYoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGBzZWxlY3Rpb25DaGFuZ2luZ2AgZW1pdCBhbmQgdGhlIGRyb3AgZG93biB0b2dnbGUgd2hlbiBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBwYXJhbSBuZXdTZWxlY3Rpb25cbiAgICAgKiBAcGFyYW0gZW1pdFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZWxlY3RJdGVtKG5ld1NlbGVjdGlvbj86IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUsIGV2ZW50PzogRXZlbnQsIGVtaXQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtO1xuICAgICAgICBpZiAoIW5ld1NlbGVjdGlvbikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gdGhpcy5mb2N1c2VkSXRlbTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3U2VsZWN0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1NlbGVjdGlvbiBpbnN0YW5jZW9mIElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUgJiYgbmV3U2VsZWN0aW9uLmlzSGVhZGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmlydERpcikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdTZWxlY3Rpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgaW5kZXg6IG5ld1NlbGVjdGlvbi5pbmRleFxuICAgICAgICAgICAgfSBhcyBJZ3hEcm9wRG93bkl0ZW1CYXNlRGlyZWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3M6IElTZWxlY3Rpb25FdmVudEFyZ3MgPSB7IG9sZFNlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLCBjYW5jZWw6IGZhbHNlLCBvd25lcjogdGhpcyB9O1xuXG4gICAgICAgIGlmIChlbWl0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGlvblZhbGlkKGFyZ3MubmV3U2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldCh0aGlzLmlkLCBuZXcgU2V0KFthcmdzLm5ld1NlbGVjdGlvbl0pKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmlydERpcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAob2xkU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRTZWxlY3Rpb24uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJncy5uZXdTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubmV3U2VsZWN0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEaXJlY3RpdmUuY2xvc2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGRyb3AtZG93biBpdGVtIGZvciB0aGUgc2VsZWN0aW9uIScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGRyb3Bkb3duXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZHJvcGRvd24uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb246IElneERyb3BEb3duSXRlbUJhc2VEaXJlY3RpdmUgPSBudWxsO1xuICAgICAgICBjb25zdCBhcmdzOiBJU2VsZWN0aW9uRXZlbnRBcmdzID0geyBvbGRTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbiwgY2FuY2VsOiBmYWxzZSwgb3duZXI6IHRoaXMgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0gJiYgIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIHZhbGlkXG4gICAgICogYG51bGxgIC0gdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgZW1wdGllZFxuICAgICAqIFZpcnR1YWw/IC0gdGhlIHNlbGVjdGlvbiBzaG91bGQgYXQgbGVhc3QgaGF2ZSBhbmQgYGluZGV4YCBhbmQgYHZhbHVlYCBwcm9wZXJ0eVxuICAgICAqIE5vbi12aXJ0dWFsPyAtIHRoZSBzZWxlY3Rpb24gc2hvdWxkIGJlIGEgdmFsaWQgZHJvcC1kb3duIGl0ZW0gYW5kICoqbm90KiogYmUgYSBoZWFkZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNTZWxlY3Rpb25WYWxpZChzZWxlY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uID09PSBudWxsXG4gICAgICAgICAgICB8fCAodGhpcy52aXJ0RGlyICYmIHNlbGVjdGlvbi5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJiBzZWxlY3Rpb24uaGFzT3duUHJvcGVydHkoJ2luZGV4JykpXG4gICAgICAgICAgICB8fCAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50ICYmICFzZWxlY3Rpb24uaXNIZWFkZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzY3JvbGxUb0l0ZW0oaXRlbTogSWd4RHJvcERvd25JdGVtQmFzZURpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLmNhbGN1bGF0ZVNjcm9sbFBvc2l0aW9uKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c0l0ZW0odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX2ZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkSXRlbS5mb2N1c2VkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlSXRlbUZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNJdGVtKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWxsb3dJdGVtc0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBza2lwSGVhZGVyKGRpcmVjdGlvbjogTmF2aWdhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW0uaXNIZWFkZXIgfHwgdGhpcy5mb2N1c2VkSXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gTmF2aWdhdGUuVXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlUHJldigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlTmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0luZGV4T3V0T2ZCb3VuZHMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiBOYXZpZ2F0ZSkge1xuICAgICAgICBjb25zdCB2aXJ0U3RhdGUgPSB0aGlzLnZpcnREaXIuc3RhdGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGwoKS5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IGl0ZW1Qb3NpdGlvbiA9IHRoaXMudmlydERpci5nZXRTY3JvbGxGb3JJbmRleChpbmRleCwgZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duKTtcbiAgICAgICAgY29uc3QgaW5kZXhPdXRPZkNodW5rID0gaW5kZXggPCB2aXJ0U3RhdGUuc3RhcnRJbmRleCB8fCBpbmRleCA+IHZpcnRTdGF0ZS5jaHVua1NpemUgKyB2aXJ0U3RhdGUuc3RhcnRJbmRleDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsTmVlZGVkID0gZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duID8gY3VycmVudFBvc2l0aW9uIDwgaXRlbVBvc2l0aW9uIDogY3VycmVudFBvc2l0aW9uID4gaXRlbVBvc2l0aW9uO1xuICAgICAgICBjb25zdCBzdWJSZXF1aXJlZCA9IGluZGV4T3V0T2ZDaHVuayB8fCBzY3JvbGxOZWVkZWQ7XG4gICAgICAgIHJldHVybiBzdWJSZXF1aXJlZDtcbiAgICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtZHJvcC1kb3duX19saXN0XCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcbiAgICBpZ3hUb2dnbGVcbiAgICAoYXBwZW5kZWQpPVwib25Ub2dnbGVDb250ZW50QXBwZW5kZWQoJGV2ZW50KVwiXG4gICAgKG9wZW5pbmcpPVwib25Ub2dnbGVPcGVuaW5nKCRldmVudClcIiAob3BlbmVkKT1cIm9uVG9nZ2xlT3BlbmVkKClcIlxuICAgIChjbG9zaW5nKT1cIm9uVG9nZ2xlQ2xvc2luZygkZXZlbnQpXCIgKGNsb3NlZCk9XCJvblRvZ2dsZUNsb3NlZCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1kcm9wLWRvd25fX2xpc3Qtc2Nyb2xsXCIgI3Njcm9sbENvbnRhaW5lciBbYXR0ci5pZF09XCJsaXN0SWRcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbGxlZEJ5XCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgW3N0eWxlLm1heEhlaWdodF09XCJtYXhIZWlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Component, Input, booleanAttribute } from '@angular/core';
|
|
2
2
|
import { IgxIconComponent } from '../../../icon/icon.component';
|
|
3
|
-
import { IgxButtonDirective } from '../../../directives/button/button.directive';
|
|
4
3
|
import { NgIf, NgClass } from '@angular/common';
|
|
5
4
|
import { IgxIconButtonDirective } from '../../../directives/button/icon-button.directive';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
@@ -17,7 +16,7 @@ export class IgxExcelStyleHeaderComponent {
|
|
|
17
16
|
}
|
|
18
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxExcelStyleHeaderComponent, decorators: [{
|
|
19
18
|
type: Component,
|
|
20
|
-
args: [{ selector: 'igx-excel-style-header', standalone: true, imports: [NgIf,
|
|
19
|
+
args: [{ selector: 'igx-excel-style-header', standalone: true, imports: [NgIf, NgClass, IgxIconComponent, IgxIconButtonDirective], template: "<header *ngIf=\"esf.column\"\n class=\"igx-excel-filter__menu-header\">\n <h4>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n <button *ngIf=\"showSelecting\"\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onSelect()\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </button>\n <button *ngIf=\"showPinning\"\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.pinned ? 'unpin' : 'pin'\"></igx-icon>\n </button>\n <button *ngIf=\"showHiding\"\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.hidden ? 'show' : 'hide'\"></igx-icon>\n </button>\n </div>\n</header>\n" }]
|
|
21
20
|
}], ctorParameters: () => [{ type: i1.BaseFilteringComponent }], propDecorators: { showPinning: [{
|
|
22
21
|
type: Input,
|
|
23
22
|
args: [{ transform: booleanAttribute }]
|
|
@@ -28,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
28
27
|
type: Input,
|
|
29
28
|
args: [{ transform: booleanAttribute }]
|
|
30
29
|
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtc3R5bGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQUUxRjs7R0FFRztBQU9ILE1BQU0sT0FBTyw0QkFBNEI7SUFxQ3JDLFlBQW1CLEdBQTJCO1FBQTNCLFFBQUcsR0FBSCxHQUFHLENBQXdCO0lBQUksQ0FBQzs4R0FyQzFDLDRCQUE0QjtrR0FBNUIsNEJBQTRCLGdIQVVqQixnQkFBZ0IscURBWWhCLGdCQUFnQiw0Q0FZaEIsZ0JBQWdCLDZCQ2pEeEMsd2pEQStCQSw0Q0RsQmMsSUFBSSw2RkFBRSxPQUFPLG9GQUFFLGdCQUFnQiwyRkFBRSxzQkFBc0I7OzJGQUV4RCw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBRXRCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7MkZBYTNELFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYS9CLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYS9CLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZpbHRlcmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hJY29uQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9idXR0b24vaWNvbi1idXR0b24uZGlyZWN0aXZlJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB1c2VkIGZvciBwcmVzZW50aW5nIEV4Y2VsIHN0eWxlIGhlYWRlciBVSS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhjZWwtc3R5bGUtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXhjZWwtc3R5bGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ0NsYXNzLCBJZ3hJY29uQ29tcG9uZW50LCBJZ3hJY29uQnV0dG9uRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hFeGNlbFN0eWxlSGVhZGVyQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHdoZXRoZXIgdGhlIGNvbHVtbiBwaW5uaW5nIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBoZWFkZXIuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1leGNlbC1zdHlsZS1oZWFkZXIgW3Nob3dQaW5uaW5nXT1cInRydWVcIj48L2lneC1leGNlbC1zdHlsZS1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNob3dQaW5uaW5nOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSBjb2x1bW4gc2VsZWN0aW5nIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBoZWFkZXIuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1leGNlbC1zdHlsZS1oZWFkZXIgW3Nob3dTZWxlY3RpbmddPVwidHJ1ZVwiPjwvaWd4LWV4Y2VsLXN0eWxlLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgc2hvd1NlbGVjdGluZzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgY29sdW1uIGhpZGluZyBpY29uIHNob3VsZCBiZSBzaG93biBpbiB0aGUgaGVhZGVyLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhjZWwtc3R5bGUtaGVhZGVyIFtzaG93SGlkaW5nXT1cInRydWVcIj48L2lneC1leGNlbC1zdHlsZS1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNob3dIaWRpbmc6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZXNmOiBCYXNlRmlsdGVyaW5nQ29tcG9uZW50KSB7IH1cbn1cbiIsIjxoZWFkZXIgKm5nSWY9XCJlc2YuY29sdW1uXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtZXhjZWwtZmlsdGVyX19tZW51LWhlYWRlclwiPlxuICAgIDxoND57eyBlc2YuY29sdW1uLmhlYWRlciB8fCBlc2YuY29sdW1uLmZpZWxkIH19PC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWV4Y2VsLWZpbHRlcl9fbWVudS1oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1NlbGVjdGluZ1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGlneEljb25CdXR0b249XCJmbGF0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJlc2Yub25TZWxlY3QoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJlc2YuY29sdW1uLnNlbGVjdGVkID8gJ2lneC1leGNlbC1maWx0ZXJfX2FjdGlvbnMtc2VsZWN0ZWQnIDogJ2lneC1leGNlbC1maWx0ZXJfX2FjdGlvbnMtc2VsZWN0J1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImVzZi5jb2x1bW4uc2VsZWN0ZWQgPyBlc2YuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZXhjZWxfZGVzZWxlY3QgOiBlc2YuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZXhjZWxfc2VsZWN0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwic2VsZWN0ZWRcIj48L2lneC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dQaW5uaW5nXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgaWd4SWNvbkJ1dHRvbj1cImZsYXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVzZi5vblBpbigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZXNmLmNvbHVtbi5waW5uZWQgPyBlc2YuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZXhjZWxfdW5waW4gOiBlc2YuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZXhjZWxfcGluXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBbbmFtZV09XCJlc2YuY29sdW1uLnBpbm5lZCA/ICd1bnBpbicgOiAncGluJ1wiPjwvaWd4LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0hpZGluZ1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGlneEljb25CdXR0b249XCJmbGF0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJlc2Yub25IaWRlVG9nZ2xlKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJlc2YuY29sdW1uLmhpZGRlbiA/IGVzZi5ncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9leGNlbF9zaG93IDogZXNmLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX2hpZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWljb24gZmFtaWx5PVwiZGVmYXVsdFwiIFtuYW1lXT1cImVzZi5jb2x1bW4uaGlkZGVuID8gJ3Nob3cnIDogJ2hpZGUnXCI+PC9pZ3gtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2hlYWRlcj5cbiJdfQ==
|
|
@@ -4,7 +4,6 @@ import { IgxGridHeaderGroupComponent } from '../headers/grid-header-group.compon
|
|
|
4
4
|
import { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';
|
|
5
5
|
import { IgxHeaderGroupStylePipe } from '../headers/pipes';
|
|
6
6
|
import { IgxPivotResizeHandleDirective } from '../resizing/pivot-grid/pivot-resize-handle.directive';
|
|
7
|
-
import { IgxGridFilteringCellComponent } from '../filtering/base/grid-filtering-cell.component';
|
|
8
7
|
import { IgxColumnMovingDropDirective } from '../moving/moving.drop.directive';
|
|
9
8
|
import { IgxColumnMovingDragDirective } from '../moving/moving.drag.directive';
|
|
10
9
|
import { NgIf, NgClass, NgStyle } from '@angular/common';
|
|
@@ -122,7 +121,7 @@ export class IgxPivotRowDimensionHeaderGroupComponent extends IgxGridHeaderGroup
|
|
|
122
121
|
}
|
|
123
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxPivotRowDimensionHeaderGroupComponent, decorators: [{
|
|
124
123
|
type: Component,
|
|
125
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-row-dimension-header-group', standalone: true, imports: [IgxIconComponent, NgIf, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective,
|
|
124
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-row-dimension-header-group', standalone: true, imports: [IgxIconComponent, NgIf, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe], template: "<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon\n family=\"default\"\n [name]=\"column.expanded ? 'tree_collapse' : 'tree_expand'\">\n </igx-icon>\n</ng-template>\n\n<ng-container *ngIf=\"!column.columnGroup\">\n <span *ngIf=\"grid.hasMovableColumns\" class=\"igx-grid-th__drop-indicator-left\"></span>\n <igx-pivot-row-dimension-header\n role=\"columnheader\"\n class=\"igx-grid-th--fw\"\n [id]=\"grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"pointerdown($event)\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n (keydown)=\"grid.navigation.headerNavigation($event)\"\n >\n </igx-pivot-row-dimension-header>\n <span *ngIf=\"!column.columnGroup && column.resizable\" class=\"igx-grid-th__resize-handle\"\n [igxPivotResizeHandle]=\"column\"\n [igxPivotResizeHandleHeader]=\"this\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n <span *ngIf=\"grid.hasMovableColumns\" class=\"igx-grid-th__drop-indicator-right\"></span>\n</ng-container>\n" }]
|
|
126
125
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
127
126
|
type: Inject,
|
|
128
127
|
args: [IGX_GRID_BASE]
|
|
@@ -153,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
153
152
|
type: HostBinding,
|
|
154
153
|
args: ['class.igx-grid-th--active']
|
|
155
154
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvSixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRXhFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR3JGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJR1hfR1JJRF9CQVNFLCBQaXZvdEdyaWRUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEZpbHRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJpbmcvZ3JpZC1maWx0ZXJpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkSGVhZGVyR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXJzL2dyaWQtaGVhZGVyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hQaXZvdENvbHVtblJlc2l6aW5nU2VydmljZSB9IGZyb20gJy4uL3Jlc2l6aW5nL3Bpdm90LWdyaWQvcGl2b3QtcmVzaXppbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJUGl2b3REaW1lbnNpb24sIFBpdm90Um93SGVhZGVyR3JvdXBUeXBlIH0gZnJvbSAnLi9waXZvdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hQaXZvdFJvd0RpbWVuc2lvbkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElneEhlYWRlckdyb3VwU3R5bGVQaXBlIH0gZnJvbSAnLi4vaGVhZGVycy9waXBlcyc7XG5pbXBvcnQgeyBJZ3hQaXZvdFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSB9IGZyb20gJy4uL3Jlc2l6aW5nL3Bpdm90LWdyaWQvcGl2b3QtcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4R3JpZEZpbHRlcmluZ0NlbGxDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXJpbmcvYmFzZS9ncmlkLWZpbHRlcmluZy1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcmFnLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElNdWx0aVJvd0xheW91dE5vZGUgfSBmcm9tICcuLi9jb21tb24vdHlwZXMnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9waXZvdC1yb3ctZGltZW5zaW9uLWhlYWRlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4SWNvbkNvbXBvbmVudCwgTmdJZiwgSWd4UGl2b3RSb3dEaW1lbnNpb25IZWFkZXJDb21wb25lbnQsIE5nQ2xhc3MsIE5nU3R5bGUsIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUsIElneENvbHVtbk1vdmluZ0Ryb3BEaXJlY3RpdmUsIElneEdyaWRGaWx0ZXJpbmdDZWxsQ29tcG9uZW50LCBJZ3hQaXZvdFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSwgSWd4SGVhZGVyR3JvdXBTdHlsZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIElneFBpdm90Um93RGltZW5zaW9uSGVhZGVyR3JvdXBDb21wb25lbnQgZXh0ZW5kcyBJZ3hHcmlkSGVhZGVyR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBQaXZvdFJvd0hlYWRlckdyb3VwVHlwZSB7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS51c2VyLXNlbGVjdCcpXG4gICAgcHVibGljIHVzZXJTZWxlY3QgPSAnbm9uZSc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChJR1hfR1JJRF9CQVNFKSBwdWJsaWMgb3ZlcnJpZGUgZ3JpZDogUGl2b3RHcmlkVHlwZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGNvbFJlc2l6aW5nU2VydmljZTogSWd4UGl2b3RDb2x1bW5SZXNpemluZ1NlcnZpY2UsXG4gICAgICAgIGZpbHRlcmluZ1NlcnZpY2U6IElneEZpbHRlcmluZ1NlcnZpY2UsXG4gICAgICAgIHBsYXRmb3JtOiBQbGF0Zm9ybVV0aWwsXG4gICAgICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoY2RSZWYsIGdyaWQsIGVsZW1lbnRSZWYsIGNvbFJlc2l6aW5nU2VydmljZSwgZmlsdGVyaW5nU2VydmljZSwgcGxhdGZvcm0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb3dJbmRleDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbEluZGV4OiBudW1iZXI7XG5cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYXlvdXQ6IElNdWx0aVJvd0xheW91dE5vZGU7XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqIEBpbnRlcm5hbFxuICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFyZW50OiBhbnk7XG5cbiAgICBAVmlld0NoaWxkKElneFBpdm90Um93RGltZW5zaW9uSGVhZGVyQ29tcG9uZW50KVxuICAgIHB1YmxpYyBvdmVycmlkZSBoZWFkZXI6IElneFBpdm90Um93RGltZW5zaW9uSGVhZGVyQ29tcG9uZW50O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhlYWRlcklEKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5ncmlkLmlkfV8tMl8ke3RoaXMucm93SW5kZXh9XyR7dGhpcy52aXNpYmxlSW5kZXh9YDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGl0bGUnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5oZWFkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb3dTZWxlY3Rpb24gPT09ICdub25lJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5wYXJlbnQuZ2V0Um93RGltZW5zaW9uS2V5KHRoaXMuY29sdW1uIGFzIElneENvbHVtbkNvbXBvbmVudCk7XG4gICAgICAgIGlmICh0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5pc1Jvd1NlbGVjdGVkKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmRlc2VsZWN0Um93KGtleSwgZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Um93QnlJZChrZXksIHRydWUsIGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge30pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpc2libGVJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5ncmlkLmhhc0hvcml6b250YWxMYXlvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbEluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbHVtbi5maWVsZDtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ3JpZC5yb3dEaW1lbnNpb25zO1xuICAgICAgICBjb25zdCByb290RGltZW5zaW9uID0gdGhpcy5maW5kUm9vdERpbWVuc2lvbihmaWVsZCk7XG4gICAgICAgIHJldHVybiByb3dzLmluZGV4T2Yocm9vdERpbWVuc2lvbik7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tYWN0aXZlJylcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgbmF2ID0gdGhpcy5ncmlkLm5hdmlnYXRpb247XG4gICAgICAgIGNvbnN0IG5vZGUgPSBuYXYuYWN0aXZlTm9kZTtcbiAgICAgICAgcmV0dXJuIG5vZGUgJiYgIXRoaXMuY29sdW1uLmNvbHVtbkdyb3VwID9cbiAgICAgICAgICAgIG5hdi5pc1Jvd0hlYWRlckFjdGl2ZSAmJlxuICAgICAgICAgICAgbm9kZS5yb3cgPT09IHRoaXMucm93SW5kZXggJiZcbiAgICAgICAgICAgIG5vZGUuY29sdW1uID09PSB0aGlzLnZpc2libGVJbmRleCA6XG4gICAgICAgICAgICBmYWxzZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0IGFjdGl2ZU5vZGUoKSB7XG4gICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmlzUm93SGVhZGVyQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24uaXNSb3dEaW1lbnNpb25IZWFkZXJBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvdzogdGhpcy5yb3dJbmRleCwgY29sdW1uOiB0aGlzLnZpc2libGVJbmRleCwgbGV2ZWw6IG51bGwsXG4gICAgICAgICAgICBtY2hDYWNoZTogbnVsbCxcbiAgICAgICAgICAgIGxheW91dDogdGhpcy5sYXlvdXQgfHwgbnVsbFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZFJvb3REaW1lbnNpb24oZmllbGQ6IHN0cmluZyk6IElQaXZvdERpbWVuc2lvbiB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdyaWQucm93RGltZW5zaW9ucztcbiAgICAgICAgbGV0IHRlbXBSb3c7XG4gICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICByb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIHRlbXBSb3cgPSByb3c7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBSb3cubWVtYmVyTmFtZSA9PT0gZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcm93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wUm93ID0gdGVtcFJvdy5jaGlsZExldmVsO1xuICAgICAgICAgICAgfSB3aGlsZSAodGVtcFJvdylcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGUoKSB7XG4gICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmlzUm93SGVhZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24uc2V0QWN0aXZlTm9kZSh0aGlzLmFjdGl2ZU5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHBvaW50ZXJkb3duKF9ldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbk1vdXNlRG93bihfZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbHVtbj5cbiAgICA8c3BhbiBjbGFzcz1cImlneC1ncmlkLXRoX19ncm91cC10aXRsZVwiIFt0aXRsZV09XCJ0aXRsZVwiPnt7Y29sdW1uLmhlYWRlcn19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sbGFwc2VJbmRpY2F0b3I+XG4gICAgPGlneC1pY29uXG4gICAgICAgIGZhbWlseT1cImRlZmF1bHRcIlxuICAgICAgICBbbmFtZV09XCJjb2x1bW4uZXhwYW5kZWQgPyAndHJlZV9jb2xsYXBzZScgOiAndHJlZV9leHBhbmQnXCI+XG4gICAgPC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLmNvbHVtbkdyb3VwXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLmhhc01vdmFibGVDb2x1bW5zXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fZHJvcC1pbmRpY2F0b3ItbGVmdFwiPjwvc3Bhbj5cbiAgICA8aWd4LXBpdm90LXJvdy1kaW1lbnNpb24taGVhZGVyXG4gICAgICAgIHJvbGU9XCJjb2x1bW5oZWFkZXJcIlxuICAgICAgICBjbGFzcz1cImlneC1ncmlkLXRoLS1md1wiXG4gICAgICAgIFtpZF09XCJncmlkLmlkICsgJ18nICsgY29sdW1uLmZpZWxkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmhlYWRlckNsYXNzZXNcIlxuICAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uaGVhZGVyU3R5bGVzIHwgaWd4SGVhZGVyR3JvdXBTdHlsZTpjb2x1bW46Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgIFtpZ3hDb2x1bW5Nb3ZpbmdEcmFnXT1cImNvbHVtblwiXG4gICAgICAgIFtnaG9zdEhvc3RdPVwiZ3JpZC5vdXRsZXQubmF0aXZlRWxlbWVudFwiXG4gICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cInBvaW50ZXJkb3duKCRldmVudClcIlxuICAgICAgICBbaWd4Q29sdW1uTW92aW5nRHJvcF09XCJjb2x1bW5cIlxuICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgIChrZXlkb3duKT1cImdyaWQubmF2aWdhdGlvbi5oZWFkZXJOYXZpZ2F0aW9uKCRldmVudClcIlxuICAgID5cbiAgICA8L2lneC1waXZvdC1yb3ctZGltZW5zaW9uLWhlYWRlcj5cbiAgICA8c3BhbiAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXAgJiYgY29sdW1uLnJlc2l6YWJsZVwiIGNsYXNzPVwiaWd4LWdyaWQtdGhfX3Jlc2l6ZS1oYW5kbGVcIlxuICAgICAgICBbaWd4UGl2b3RSZXNpemVIYW5kbGVdPVwiY29sdW1uXCJcbiAgICAgICAgW2lneFBpdm90UmVzaXplSGFuZGxlSGVhZGVyXT1cInRoaXNcIlxuICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiZmFsc2VcIlxuICAgICAgICBbc3R5bGUuY3Vyc29yXT1cImNvbFJlc2l6aW5nU2VydmljZS5yZXNpemVDdXJzb3JcIj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJncmlkLmhhc01vdmFibGVDb2x1bW5zXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fZHJvcC1pbmRpY2F0b3ItcmlnaHRcIj48L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvSixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRXhFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR3JGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUc3RDs7R0FFRztBQVFI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bmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgTmdab25lLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IElHWF9HUklEX0JBU0UsIFBpdm90R3JpZFR5cGUgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4RmlsdGVyaW5nU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlcmluZy9ncmlkLWZpbHRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRIZWFkZXJHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlcnMvZ3JpZC1oZWFkZXItZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneFBpdm90Q29sdW1uUmVzaXppbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzaXppbmcvcGl2b3QtZ3JpZC9waXZvdC1yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElQaXZvdERpbWVuc2lvbiwgUGl2b3RSb3dIZWFkZXJHcm91cFR5cGUgfSBmcm9tICcuL3Bpdm90LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFBpdm90Um93RGltZW5zaW9uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9waXZvdC1yb3ctZGltZW5zaW9uLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4SGVhZGVyR3JvdXBTdHlsZVBpcGUgfSBmcm9tICcuLi9oZWFkZXJzL3BpcGVzJztcbmltcG9ydCB7IElneFBpdm90UmVzaXplSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vcmVzaXppbmcvcGl2b3QtZ3JpZC9waXZvdC1yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcmFnLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElNdWx0aVJvd0xheW91dE5vZGUgfSBmcm9tICcuLi9jb21tb24vdHlwZXMnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXItZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9waXZvdC1yb3ctZGltZW5zaW9uLWhlYWRlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4SWNvbkNvbXBvbmVudCwgTmdJZiwgSWd4UGl2b3RSb3dEaW1lbnNpb25IZWFkZXJDb21wb25lbnQsIE5nQ2xhc3MsIE5nU3R5bGUsIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUsIElneENvbHVtbk1vdmluZ0Ryb3BEaXJlY3RpdmUsIElneFBpdm90UmVzaXplSGFuZGxlRGlyZWN0aXZlLCBJZ3hIZWFkZXJHcm91cFN0eWxlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4UGl2b3RSb3dEaW1lbnNpb25IZWFkZXJHcm91cENvbXBvbmVudCBleHRlbmRzIElneEdyaWRIZWFkZXJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIFBpdm90Um93SGVhZGVyR3JvdXBUeXBlIHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnVzZXItc2VsZWN0JylcbiAgICBwdWJsaWMgdXNlclNlbGVjdCA9ICdub25lJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KElHWF9HUklEX0JBU0UpIHB1YmxpYyBvdmVycmlkZSBncmlkOiBQaXZvdEdyaWRUeXBlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgY29sUmVzaXppbmdTZXJ2aWNlOiBJZ3hQaXZvdENvbHVtblJlc2l6aW5nU2VydmljZSxcbiAgICAgICAgZmlsdGVyaW5nU2VydmljZTogSWd4RmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgcGxhdGZvcm06IFBsYXRmb3JtVXRpbCxcbiAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcihjZFJlZiwgZ3JpZCwgZWxlbWVudFJlZiwgY29sUmVzaXppbmdTZXJ2aWNlLCBmaWx0ZXJpbmdTZXJ2aWNlLCBwbGF0Zm9ybSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd0luZGV4OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sSW5kZXg6IG51bWJlcjtcblxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxheW91dDogSU11bHRpUm93TGF5b3V0Tm9kZTtcblxuICAgIC8qKlxuICAgICogQGhpZGRlblxuICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJlbnQ6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoSWd4UGl2b3RSb3dEaW1lbnNpb25IZWFkZXJDb21wb25lbnQpXG4gICAgcHVibGljIG92ZXJyaWRlIGhlYWRlcjogSWd4UGl2b3RSb3dEaW1lbnNpb25IZWFkZXJDb21wb25lbnQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaGVhZGVySUQoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdyaWQuaWR9Xy0yXyR7dGhpcy5yb3dJbmRleH1fJHt0aGlzLnZpc2libGVJbmRleH1gO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci50aXRsZScpXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmhlYWRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5ncmlkLnJvd1NlbGVjdGlvbiA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnBhcmVudC5nZXRSb3dEaW1lbnNpb25LZXkodGhpcy5jb2x1bW4gYXMgSWd4Q29sdW1uQ29tcG9uZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmlzUm93U2VsZWN0ZWQoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RSb3coa2V5LCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RSb3dCeUlkKGtleSwgdHJ1ZSwgZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmlzaWJsZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQuaGFzSG9yaXpvbnRhbExheW91dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sSW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29sdW1uLmZpZWxkO1xuICAgICAgICBjb25zdCByb3dzID0gdGhpcy5ncmlkLnJvd0RpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IHJvb3REaW1lbnNpb24gPSB0aGlzLmZpbmRSb290RGltZW5zaW9uKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHJvd3MuaW5kZXhPZihyb290RGltZW5zaW9uKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1hY3RpdmUnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aXZlKCkge1xuICAgICAgICBjb25zdCBuYXYgPSB0aGlzLmdyaWQubmF2aWdhdGlvbjtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5hdi5hY3RpdmVOb2RlO1xuICAgICAgICByZXR1cm4gbm9kZSAmJiAhdGhpcy5jb2x1bW4uY29sdW1uR3JvdXAgP1xuICAgICAgICAgICAgbmF2LmlzUm93SGVhZGVyQWN0aXZlICYmXG4gICAgICAgICAgICBub2RlLnJvdyA9PT0gdGhpcy5yb3dJbmRleCAmJlxuICAgICAgICAgICAgbm9kZS5jb2x1bW4gPT09IHRoaXMudmlzaWJsZUluZGV4IDpcbiAgICAgICAgICAgIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBnZXQgYWN0aXZlTm9kZSgpIHtcbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24uaXNSb3dIZWFkZXJBY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5pc1Jvd0RpbWVuc2lvbkhlYWRlckFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcm93OiB0aGlzLnJvd0luZGV4LCBjb2x1bW46IHRoaXMudmlzaWJsZUluZGV4LCBsZXZlbDogbnVsbCxcbiAgICAgICAgICAgIG1jaENhY2hlOiBudWxsLFxuICAgICAgICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCB8fCBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kUm9vdERpbWVuc2lvbihmaWVsZDogc3RyaW5nKTogSVBpdm90RGltZW5zaW9uIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ3JpZC5yb3dEaW1lbnNpb25zO1xuICAgICAgICBsZXQgdGVtcFJvdztcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgdGVtcFJvdyA9IHJvdztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBpZiAodGVtcFJvdy5tZW1iZXJOYW1lID09PSBmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByb3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRlbXBSb3cgPSB0ZW1wUm93LmNoaWxkTGV2ZWw7XG4gICAgICAgICAgICB9IHdoaWxlICh0ZW1wUm93KVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBvdmVycmlkZSBhY3RpdmF0ZSgpIHtcbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24uaXNSb3dIZWFkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5zZXRBY3RpdmVOb2RlKHRoaXMuYWN0aXZlTm9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcG9pbnRlcmRvd24oX2V2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uTW91c2VEb3duKF9ldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2YXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBzZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sdW1uPlxuICAgIDxzcGFuIGNsYXNzPVwiaWd4LWdyaWQtdGhfX2dyb3VwLXRpdGxlXCIgW3RpdGxlXT1cInRpdGxlXCI+e3tjb2x1bW4uaGVhZGVyfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb2xsYXBzZUluZGljYXRvcj5cbiAgICA8aWd4LWljb25cbiAgICAgICAgZmFtaWx5PVwiZGVmYXVsdFwiXG4gICAgICAgIFtuYW1lXT1cImNvbHVtbi5leHBhbmRlZCA/ICd0cmVlX2NvbGxhcHNlJyA6ICd0cmVlX2V4cGFuZCdcIj5cbiAgICA8L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXBcIj5cbiAgICA8c3BhbiAqbmdJZj1cImdyaWQuaGFzTW92YWJsZUNvbHVtbnNcIiBjbGFzcz1cImlneC1ncmlkLXRoX19kcm9wLWluZGljYXRvci1sZWZ0XCI+PC9zcGFuPlxuICAgIDxpZ3gtcGl2b3Qtcm93LWRpbWVuc2lvbi1oZWFkZXJcbiAgICAgICAgcm9sZT1cImNvbHVtbmhlYWRlclwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWdyaWQtdGgtLWZ3XCJcbiAgICAgICAgW2lkXT1cImdyaWQuaWQgKyAnXycgKyBjb2x1bW4uZmllbGRcIlxuICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uaGVhZGVyQ2xhc3Nlc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5oZWFkZXJTdHlsZXMgfCBpZ3hIZWFkZXJHcm91cFN0eWxlOmNvbHVtbjpncmlkLnBpcGVUcmlnZ2VyXCJcbiAgICAgICAgW2lneENvbHVtbk1vdmluZ0RyYWddPVwiY29sdW1uXCJcbiAgICAgICAgW2dob3N0SG9zdF09XCJncmlkLm91dGxldC5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cInRydWVcIlxuICAgICAgICAocG9pbnRlcmRvd24pPVwicG9pbnRlcmRvd24oJGV2ZW50KVwiXG4gICAgICAgIFtpZ3hDb2x1bW5Nb3ZpbmdEcm9wXT1cImNvbHVtblwiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgKGtleWRvd24pPVwiZ3JpZC5uYXZpZ2F0aW9uLmhlYWRlck5hdmlnYXRpb24oJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvaWd4LXBpdm90LXJvdy1kaW1lbnNpb24taGVhZGVyPlxuICAgIDxzcGFuICpuZ0lmPVwiIWNvbHVtbi5jb2x1bW5Hcm91cCAmJiBjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fcmVzaXplLWhhbmRsZVwiXG4gICAgICAgIFtpZ3hQaXZvdFJlc2l6ZUhhbmRsZV09XCJjb2x1bW5cIlxuICAgICAgICBbaWd4UGl2b3RSZXNpemVIYW5kbGVIZWFkZXJdPVwidGhpc1wiXG4gICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiY29sUmVzaXppbmdTZXJ2aWNlLnJlc2l6ZUN1cnNvclwiPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cImdyaWQuaGFzTW92YWJsZUNvbHVtbnNcIiBjbGFzcz1cImlneC1ncmlkLXRoX19kcm9wLWluZGljYXRvci1yaWdodFwiPjwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuIl19
|