@datorama/core 22.9.9-rc.2 → 22.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/datorama-core.umd.js +62 -91
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +16 -16
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.d.ts +0 -1
- package/datorama-core.metadata.json +1 -1
- package/esm2015/datorama-core.js +1 -2
- package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
- package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm2015/lib/grid-v2/grid-column-cell-components/grid-status-cell/grid-status-cell.component.js +10 -6
- package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +2 -5
- package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +3 -2
- package/esm2015/lib/grid-v2/grid-settings.js +2 -2
- package/esm2015/lib/grid-v2/grid-store/grid.service.js +2 -3
- package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
- package/esm2015/lib/loaders/page-loader/page-loader.component.js +2 -7
- package/esm2015/lib/rich-text/rich-text.directive.js +38 -20
- package/esm2015/lib/select/select.component.js +9 -4
- package/esm2015/lib/version.js +2 -2
- package/esm5/datorama-core.js +1 -2
- package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
- package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm5/lib/grid-v2/grid-column-cell-components/grid-status-cell/grid-status-cell.component.js +10 -6
- package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +2 -5
- package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +5 -2
- package/esm5/lib/grid-v2/grid-settings.js +2 -2
- package/esm5/lib/grid-v2/grid-store/grid.service.js +2 -3
- package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
- package/esm5/lib/loaders/page-loader/page-loader.component.js +2 -7
- package/esm5/lib/rich-text/rich-text.directive.js +39 -21
- package/esm5/lib/select/select.component.js +9 -4
- package/esm5/lib/version.js +2 -2
- package/fesm2015/datorama-core.js +60 -83
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +63 -91
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/grid-v2/grid/grid-v2.types.d.ts +4 -3
- package/lib/grid-v2/grid-column-cell-components/grid-status-cell/grid-status-cell.component.d.ts +6 -1
- package/lib/grid-v2/grid-settings.d.ts +2 -2
- package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
- package/lib/loaders/page-loader/page-loader.component.d.ts +0 -1
- package/lib/rich-text/rich-text.directive.d.ts +6 -4
- package/package.json +2 -2
- package/esm2015/lib/rich-text/rich-text.service.js +0 -50
- package/esm5/lib/rich-text/rich-text.service.js +0 -51
- package/lib/rich-text/rich-text.service.d.ts +0 -10
|
@@ -91,10 +91,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
|
|
|
91
91
|
.pipe(switchMap(function () {
|
|
92
92
|
_this.gridOptions = _this.normalizeOptions();
|
|
93
93
|
agGrid.gridOptions = _this.gridOptions;
|
|
94
|
-
var
|
|
95
|
-
var settingsLoader = _this.gridOptions.saveSettings === false
|
|
96
|
-
? of(null)
|
|
97
|
-
: _this.storageAPI.get(_this.gridOptions.gridName, isGlobal);
|
|
94
|
+
var settingsLoader = _this.gridOptions.saveSettings === false ? of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
|
|
98
95
|
return combineLatest([agGrid.gridReady, settingsLoader]);
|
|
99
96
|
}), untilDestroyed(this))
|
|
100
97
|
.subscribe(function (_a) {
|
|
@@ -519,4 +516,4 @@ var DatoGridControllerComponent = /** @class */ (function () {
|
|
|
519
516
|
return DatoGridControllerComponent;
|
|
520
517
|
}());
|
|
521
518
|
export { DatoGridControllerComponent };
|
|
522
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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VztnQkFDYixTQUFTO2dCQUNkLGlCQUFpQjtnQkFDUixZQUFZO2dCQUNmLG9CQUFvQjtnQkFDekIsVUFBVTtnQkFDTixRQUFRO2dCQUNSLHdCQUF3QjtnQkFDekIsV0FBVztnREFDM0IsTUFBTSxTQUFDLHFCQUFxQjs7SUFsRHFCO1FBQW5ELGVBQWUsQ0FBQyxpQ0FBaUMsQ0FBQztrQ0FBeUIsU0FBUzsrRUFFbkY7SUFFUTtRQUFULE1BQU0sRUFBRTs7cUVBQW9EO0lBQ3BEO1FBQVIsS0FBSyxFQUFFOzttRUFBOEI7SUFDN0I7UUFBUixLQUFLLEVBQUU7O29FQUFnQztJQUMvQjtRQUFSLEtBQUssRUFBRTs7O2tFQVlQO0lBcEJVLDJCQUEyQjtRQVR2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFFBQVEsRUFBRSxxQ0FFVDtZQUVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDOztTQUMvQyxDQUFDO1FBb0RHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7eUNBVFYsV0FBVztZQUNiLFNBQVM7WUFDZCxpQkFBaUI7WUFDUixZQUFZO1lBQ2Ysb0JBQW9CO1lBQ3pCLFVBQVU7WUFDTixRQUFRO1lBQ1Isd0JBQXdCO1lBQ3pCLFdBQVc7T0FsRG5CLDJCQUEyQixDQWtmdkM7SUFBRCxrQ0FBQztDQUFBLEFBbGZELElBa2ZDO1NBbGZZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZ0dyaWROZzIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7XG4gIEJvZHlTY3JvbGxFdmVudCxcbiAgQ2VsbENsaWNrZWRFdmVudCxcbiAgQ2VsbEV2ZW50LFxuICBDZWxsTW91c2VPdXRFdmVudCxcbiAgQ29sdW1uUmVzaXplZEV2ZW50LFxuICBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCxcbiAgRGV0YWlsR3JpZEluZm8sXG4gIEdyaWRBcGksXG4gIFJvd0dyb3VwT3BlbmVkRXZlbnRcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgR3JpZFF1ZXJ5IH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcbmltcG9ydCB7IEdyaWRTdG9yZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZSc7XG5pbXBvcnQgeyBEYXRvR3JpZFNldHRpbmdzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQXBpIH0gZnJvbSAnLi9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBbGlnbm1lbnQsIERhdG9HcmlkT3B0aW9ucywgRGF0b0dyaWRTb3J0LCBHcmlkQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9kZWVwLW1lcmdlJztcbmltcG9ydCB7IERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtY3VzdG9tLWhlYWRlci9jdXN0b20taGVhZGVyLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgR3JpZEFjdGlvbiwgUm93QWN0aW9uIH0gZnJvbSAnLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERBVE9fR1JJRF9TVE9SQUdFX0FQSSwgR3JpZFN0b3JhZ2VBUEkgfSBmcm9tICcuLi9ncmlkLXNldHRpbmdzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGFwcGVuZENoaWxkLCBxdWVyeSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAndG9vbHRpcC5qcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYW5ndWxhci9keW5hbWljLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1vbi1ob3Zlci9ncmlkLW9uLWhvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0RnJvbVRyZWVEYXRhLCBkZWZhdWx0R3JpZE9wdGlvbnMsIGRlZmF1bHRUcmVlT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi5jb25maWcnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBEYXRvSG90a2V5cyB9IGZyb20gJy4uLy4uL2hvdGtleXMvaG90a2V5cy5zZXJ2aWNlJztcbmltcG9ydCBET01QdXJpZnkgZnJvbSAnZG9tcHVyaWZ5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbR3JpZFF1ZXJ5LCBHcmlkU2VydmljZSwgR3JpZFN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCkgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogUXVlcnlMaXN0PFxuICAgIERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudFxuICA+O1xuXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRDaGFuZ2VFdmVudD4oKTtcbiAgQElucHV0KCkgcm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgZ3JpZE9wdGlvbnMoZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucykge1xuICAgIHRoaXMuX2dyaWRPcHRpb25zID0gZ3JpZE9wdGlvbnM7XG4gICAgdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YSA9IGdyaWRPcHRpb25zLnRyZWVEYXRhO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuaXNQaXZvdE1vZGUgPSBncmlkT3B0aW9ucy5waXZvdE1vZGU7XG5cbiAgICBpZiAodGhpcy5hZ0dyaWRFbCkge1xuICAgICAgaWYgKGdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICAgICF0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLnRyZWVHcmlkQ2xhc3MpICYmIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCh0aGlzLnRyZWVHcmlkQ2xhc3MpO1xuICAgICAgfSBlbHNlIGlmICghZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMSkge1xuICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZ3JpZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250ZW50SW5pdCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgdG9vbHRpcDtcbiAgcHJpdmF0ZSBfZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucztcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQ7XG4gIGFnR3JpZEVsOiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIHJvd0hvdmVyQ29tcG9uZW50OiBDb21wb25lbnRSZWY8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBsYXN0SG92ZXJlZFJvdzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgZ3JpZEVsZW1lbnRzID0ge1xuICAgIGNlbnRlclZpZXdwb3J0OiBudWxsLFxuICAgIGNlbnRlckNvbnRhaW5lcjogbnVsbCxcbiAgICBib2R5Vmlld3BvcnQ6IG51bGxcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmVlR3JpZENsYXNzID0gJ3RyZWUnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHVibGljIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaG90a2V5czogRGF0b0hvdGtleXMsXG4gICAgQEluamVjdChEQVRPX0dSSURfU1RPUkFHRV9BUEkpIHByaXZhdGUgc3RvcmFnZUFQSTogR3JpZFN0b3JhZ2VBUElcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29udGVudEluaXQuY29tcGxldGUoKTtcbiAgICB0aGlzLnRvb2x0aXAgJiYgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ICYmIHRoaXMucm93SG92ZXJDb21wb25lbnQuZGVzdHJveSgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBudWxsO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuY29udGVudEluaXQubmV4dCgpO1xuICAgIHRoaXMuY29udGVudEluaXQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBfaW5pdGlhbGl6ZUdyaWQoYWdHcmlkOiBBZ0dyaWROZzIsIGFnR3JpZEVsOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuYWdHcmlkRWwgPSBhZ0dyaWRFbDtcbiAgICB0aGlzLmNvbnRlbnRJbml0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB0aGlzLm5vcm1hbGl6ZU9wdGlvbnMoKTtcbiAgICAgICAgICBhZ0dyaWQuZ3JpZE9wdGlvbnMgPSB0aGlzLmdyaWRPcHRpb25zO1xuICAgICAgICAgIGNvbnN0IGlzR2xvYmFsID0gdGhpcy5ncmlkT3B0aW9ucy5pc0dsb2JhbFNldHRpbmdzO1xuICAgICAgICAgIGNvbnN0IHNldHRpbmdzTG9hZGVyID1cbiAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2F2ZVNldHRpbmdzID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IG9mKG51bGwpXG4gICAgICAgICAgICAgIDogdGhpcy5zdG9yYWdlQVBJLmdldCh0aGlzLmdyaWRPcHRpb25zLmdyaWROYW1lLCBpc0dsb2JhbCk7XG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2FnR3JpZC5ncmlkUmVhZHksIHNldHRpbmdzTG9hZGVyXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3sgYXBpLCBjb2x1bW5BcGkgfSwgc2F2ZWRTZXR0aW5ncyA9IHt9XTogW0RldGFpbEdyaWRJbmZvLCBQYXJ0aWFsPERhdG9HcmlkU2V0dGluZ3M+XSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSkge1xuICAgICAgICAgIGFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMuc3RhdHVzQmFyKSB7XG4gICAgICAgICAgLyoqIEZpeCBhZy1ncmlkIGJ1ZyB0aGF0IGRvZXNuJ3QgYWRkIGFnLWhpZGRlbiBjbGFzcyB0byB0aGUgc3RhdHVzIGJhciwgd2hpY2ggb25seSBnZXQgZml4ZWQgaW4gbGF0ZXIgdmVyc2lvbnMgKi9cbiAgICAgICAgICBjb25zdCBlbCA9IGFnR3JpZEVsLnF1ZXJ5U2VsZWN0b3IoJy5hZy1zdGF0dXMtYmFyJyk7XG5cbiAgICAgICAgICBhZGRDbGFzcyhlbCwgJ2FnLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyaWRBcGk6IERhdG9HcmlkQXBpID0geyBncmlkOiBhcGksIGNvbHVtbnM6IGNvbHVtbkFwaSB9O1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5ncmlkUXVlcnkuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuXG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuaW5pdFNldHRpbmdzKHNhdmVkU2V0dGluZ3MgfHwge30pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckdyaWRMaXN0ZW5lcnMoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5ncmlkUXVlcnkuX2dyaWRSZWFkeS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKCd0cmVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKGByb3ctaGVpZ2h0LSR7dGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHR9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVPcHRpb25zKCkge1xuICAgIC8qKlxuICAgICAqIFdoZW4gdHJlZURhdGEgaXMgZW5hYmxlZCwgUGFnaW5hdGlvbiBtdXN0IGJlIHR1cm5lZCBvZmZcbiAgICAgKi9cbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgICAgcGFnaW5hdGlvbjogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGdyaWRPcHRpb25zOiB0aGlzLmdyaWRPcHRpb25zLFxuICAgICAgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogdGhpcy5jdXN0b21IZWFkZXJzVGVtcGxhdGVzLFxuICAgICAgcm93QWN0aW9uczogdGhpcy5yb3dBY3Rpb25zXG4gICAgfTtcblxuICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ncmlkU2VydmljZS5ub3JtYWxpemVPcHRpb25zKHBhcmFtcyk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMsXG4gICAgICAuLi4odGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSA/IGRlZmF1bHRUcmVlT3B0aW9ucyA6IHt9KSxcbiAgICAgIGljb25zOiB0aGlzLmdldEdyaWRJY29ucygpXG4gICAgfTtcbiAgICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRzLCBub3JtYWxpemVkKTtcbiAgfVxuXG4gIHNldEdyaWRSb3dzPFQ+KGRhdGE6IFRbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0Um93czxUPihkYXRhKTtcbiAgfVxuXG4gIHNldEdyaWRGaWx0ZXJzKGZpbHRlcnM6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZEZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRHcmlkU29ydChzb3J0OiBEYXRvR3JpZFNvcnQpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRTb3J0KHNvcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSWNvbnMoKTogSGFzaE1hcDxzdHJpbmc+IHtcbiAgICBjb25zdCBtb3ZlQ29sdW1uSWNvbiA9IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgJ21vdmUtY29sdW1uJ1xuICAgICl9PC9zcGFuPmA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwRXhwYW5kZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWV4cGFuZGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGdyb3VwQ29udHJhY3RlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtY29udHJhY3RlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlUGluOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggcHJpbWFyeS0zMDAtZmlsbCBjb2x1bW4tbW92ZS1waW5cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ3BpbidcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlSGlkZTogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlLWhpZGVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2V5ZS1oaWRlJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVNb3ZlOiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVMZWZ0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVSaWdodDogbW92ZUNvbHVtbkljb24sXG4gICAgICByb3dEcmFnOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZHJhZyBkLWZsZXhcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZygnZHJhZy0wMScpfTwvc3Bhbj5gXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMubGlzdGVuVG9Db2x1bW5SZXNpemUoYXBpLCBhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZCk7XG4gICAgdGhpcy5saXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvQ29sdW1uUmVzaXplKGFwaTogRGF0b0dyaWRBcGksIHsgY29sdW1uUmVzaXplZCB9OiBBZ0dyaWROZzIpIHtcbiAgICBsZXQgb2JzZXJ2YWJsZSA9IGNvbHVtblJlc2l6ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVPbkhvdmVyUG9zKCkpXG4gICAgICApO1xuICAgIH1cbiAgICBvYnNlcnZhYmxlXG4gICAgICAucGlwZShcbiAgICAgICAgYXVkaXRUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoeyBmaW5pc2hlZCwgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gZmluaXNoZWQgJiYgc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1uXSA9IGUuY29sdW1ucztcbiAgICAgICAgbGV0IGNvbHVtbnNTaXplcyA9IHsgLi4udGhpcy5ncmlkUXVlcnkuZ2V0Q29sdW1uU2l6ZXMoKSB9O1xuICAgICAgICBpZiAoY29sdW1uc1NpemVzKSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzW2NvbHVtbi5nZXRDb2xJZCgpXSA9IGNvbHVtbi5nZXRBY3R1YWxXaWR0aCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnVwZGF0ZVNldHRpbmdzKHsgZ3JpZEFsaWdubWVudDogRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NLCBjb2x1bW5zU2l6ZXMgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkLCBmaWx0ZXJDaGFuZ2VkIH0gPSBhZ0dyaWQ7XG4gICAgbWVyZ2UoY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCwgZmlsdGVyQ2hhbmdlZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvKiBTa2lwIHRoZSBpbml0aWFsIHNvcnRpbmcgZXZlbnQgZmlyZWQgYnkgdGhlIGdyaWQgd2hlbiBhZGRpbmcgcm93cyAqL1xuICAgICAgICBza2lwKDEpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyhzZXR0aW5nc0RpZmYpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcmlkRGF0YSgpO1xuICAgICAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICBmaWx0ZXI6IHRoaXMuZ3JpZFF1ZXJ5LmdldEV4dGVybmFsRmlsdGVyKCksXG4gICAgICAgICAgc29ydDogdGhpcy5ncmlkUXVlcnkuZ2V0U29ydCgpLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0RpZmYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldFNldHRpbmdzRGlmZigpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVTZXR0aW5nc1RvU2VydmVyKHNldHRpbmdzRGlmZik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGFwaTogRGF0b0dyaWRBcGksIGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgdGhpcy5ncmlkRWxlbWVudHMgPSB7XG4gICAgICBjZW50ZXJDb250YWluZXI6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtY29udGFpbmVyJywgdGhpcy5hZ0dyaWRFbCksXG4gICAgICBjZW50ZXJWaWV3cG9ydDogcXVlcnkoJy5hZy1jZW50ZXItY29scy12aWV3cG9ydCcsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgYm9keVZpZXdwb3J0OiBxdWVyeSgnLmFnLWJvZHktdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKVxuICAgIH07XG4gICAgdGhpcy5yZWdpc3RlckdyaWRDbGlja0xpc3RlbmVyKGFwaS5ncmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEdyb3VwTGlzdGVuZXJzKGFnR3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcihhcGkpO1xuICAgIHRoaXMucmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIC8qIE1ha2UgZ3JvdXAgZXhwYW5kL2NvbGxhcHNlIG9uIGEgc2luZ2xlIGNsaWNrIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgZG91YmxlIGNsaWNrICovXG4gICAgYWdHcmlkLmNvbHVtblJvd0dyb3VwQ2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeyBjb2x1bW5zIH06IENvbHVtblJvd0dyb3VwQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbHVtbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IEVNUFRZXG4gICAgICAgICAgICA6IGFnR3JpZC5jZWxsQ2xpY2tlZC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoeyB2YWx1ZSwgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5vZGUuZ3JvdXAgPT09IHRydWUpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHtcbiAgICAgICAgbm9kZS5zZXRFeHBhbmRlZCghbm9kZS5leHBhbmRlZCk7XG4gICAgICB9KTtcbiAgICAvKiBXaGVuIGNsb3NpbmcgYSBncm91cGVkIHJvdyB3ZSB3YW50IHRvIGhpZGUgdGhlIG9uIGhvdmVyIGFjdGlvbnMgKi9cbiAgICBpZiAodGhpcy5vbkhvdmVyRW5hYmxlZCgpKSB7XG4gICAgICBhZ0dyaWQucm93R3JvdXBPcGVuZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCh7IG5vZGUgfTogUm93R3JvdXBPcGVuZWRFdmVudCkgPT4gbm9kZS5leHBhbmRlZCA9PT0gZmFsc2UpLFxuICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBjbGljayB3YXMgcGVyZm9ybWVkIG9uIHRoZSBncmlkcyBib2R5IGFuZCBub3QgYSByb3csIGNsZWFyIHRoZSByb3dzIHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRDbGlja0xpc3RlbmVyKGFwaTogR3JpZEFwaSkge1xuICAgIGNvbnN0IHsgYm9keVZpZXdwb3J0LCBjZW50ZXJWaWV3cG9ydCB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgZnJvbUV2ZW50KGJvZHlWaWV3cG9ydCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChldmVudC50YXJnZXQgPT09IGJvZHlWaWV3cG9ydCB8fCBldmVudC50YXJnZXQgPT09IGNlbnRlclZpZXdwb3J0KSAmJiBhcGkuZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID4gMDtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IGFwaS5kZXNlbGVjdEFsbCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Ib3ZlckVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMuaG92ZXJDb25maWcuZW5hYmxlZCAmJiB0aGlzLnJvd0FjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBsZXQgbGFzdEhvdmVyZWRDZWxsO1xuICAgIGNvbnN0IG9uSG92ZXJFbmFibGVkID0gdGhpcy5vbkhvdmVyRW5hYmxlZCgpO1xuICAgIGlmIChvbkhvdmVyRW5hYmxlZCkge1xuICAgICAgZnJvbUV2ZW50KGNlbnRlckNvbnRhaW5lciwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKHRoaXMubGFzdEhvdmVyZWRSb3cpO1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgICBsYXN0SG92ZXJlZENlbGwgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIG1lcmdlKFxuICAgICAgICBhZ0dyaWQuYm9keVNjcm9sbC5waXBlKGZpbHRlcigoeyBkaXJlY3Rpb24gfTogQm9keVNjcm9sbEV2ZW50KSA9PiBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykpLFxuICAgICAgICBhZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIClcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuYWRkT25Ib3ZlckVsZW1lbnQoKTtcbiAgICB9XG4gICAgYWdHcmlkLmNlbGxNb3VzZU92ZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgbm9kZSwgY29sdW1uIH0pID0+IGxhc3RIb3ZlcmVkQ2VsbCAhPT0gYCR7bm9kZS5pZH0tJHtjb2x1bW4uZ2V0Q29sSWQoKX1gKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDZWxsTW91c2VPdXRFdmVudCkgPT4ge1xuICAgICAgICBsYXN0SG92ZXJlZENlbGwgPSBgJHtldmVudC5ub2RlLmlkfS0ke2V2ZW50LmNvbHVtbi5nZXRDb2xJZCgpfWA7XG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZXZlbnQpO1xuICAgICAgICBjb25zdCByb3cgPSAoZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAob25Ib3ZlckVuYWJsZWQgJiYgKGV2ZW50Lm5vZGUuZ3JvdXAgPT09IGZhbHNlIHx8IGlzTmlsKGV2ZW50Lm5vZGUuZ3JvdXApKSAmJiB0aGlzLmxhc3RIb3ZlcmVkUm93ICE9PSByb3cpIHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c05vZGUgPSB0aGlzLmxhc3RIb3ZlcmVkUm93O1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSByb3c7XG4gICAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKFtwcmV2aW91c05vZGUsIHRoaXMubGFzdEhvdmVyZWRSb3ddKTtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZSh0cnVlLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGNvbnN0IG9uVG9vbHRpcE91dCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KGJvZHlWaWV3cG9ydCwgJ3Njcm9sbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuYWdHcmlkRWwsICdtb3VzZWxlYXZlJyksXG4gICAgICBhZ0dyaWQuY2VsbE1vdXNlT3V0XG4gICAgKTtcbiAgICBvblRvb2x0aXBPdXRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIWlzTmlsKHRoaXMudG9vbHRpcCkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwb3NlIHRoZSB0b29sdGlwXG4gICAqL1xuICBjbGVhclRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwLmRpc3Bvc2UoKTtcbiAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9vbHRpcChldmVudDogQ2VsbEV2ZW50KSB7XG4gICAgY29uc3QgY2VsbDogSFRNTEVsZW1lbnQgPSBldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dE92ZXJmbG93ID0gY2VsbC5vZmZzZXRXaWR0aCA8IGNlbGwuc2Nyb2xsV2lkdGg7XG4gICAgaWYgKHRleHRPdmVyZmxvdykge1xuICAgICAgY29uc3QgcGFyYW1zID0geyBjZWxsLCB2YWx1ZTogY2VsbC5pbm5lclRleHQgfTtcbiAgICAgIGlzTmlsKHRoaXMudG9vbHRpcCkgPyB0aGlzLmNyZWF0ZUFuZFNob3dUb29sdGlwKHBhcmFtcykgOiB0aGlzLnVwZGF0ZVRvb2x0aXAocGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFuZFNob3dUb29sdGlwKHsgY2VsbCwgdmFsdWUgfSkge1xuICAgIHRoaXMudG9vbHRpcCA9IG5ldyBUb29sdGlwKGNlbGwsIHtcbiAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICBjb250YWluZXI6IGRvY3VtZW50LmJvZHksXG4gICAgICB0cmlnZ2VyOiAnbWFudWFsJyxcbiAgICAgIHRpdGxlOiBET01QdXJpZnkuc2FuaXRpemUodmFsdWUpLFxuICAgICAgaHRtbDogdHJ1ZSxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgcHJldmVudE92ZXJmbG93OiB7IGVuYWJsZWQ6IGZhbHNlIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlOlxuICAgICAgICAnPGRpdiBjbGFzcz1cInRvb2x0aXAgZGF0by10b29sdGlwIGNvbW1vbi10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+J1xuICAgIH0pO1xuXG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHRvb2x0aXAgZWxlbWVudCByZWYgYW5kIGNvbnRlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pOiB2b2lkIHtcbiAgICBpZiAoY2VsbCAhPT0gdGhpcy50b29sdGlwLnJlZmVyZW5jZSkge1xuICAgICAgdGhpcy50b29sdGlwLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAucG9wcGVySW5zdGFuY2UucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC51cGRhdGVUaXRsZUNvbnRlbnQodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPbkhvdmVyRWxlbWVudCgpIHtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50PERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD4oe1xuICAgICAgY29tcG9uZW50OiBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQsXG4gICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgIHJlc29sdmVyOiB0aGlzLnJlc29sdmVyXG4gICAgfSk7XG4gICAgY29uc3QgeyBpbnN0YW5jZSwgaG9zdFZpZXcgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaW5zdGFuY2UuY29uZmlnID0geyAuLi50aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLCBhY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnMuc2xpY2UoKSB9O1xuICAgIGhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmdyaWRFbGVtZW50cy5jZW50ZXJDb250YWluZXIsIHRoaXMucm93SG92ZXJFbCk7XG4gIH1cblxuICBwcml2YXRlIGdldCByb3dIb3ZlckVsKCkge1xuICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldE9uSG92ZXJTdGF0ZSh2aXNpYmxlOiBib29sZWFuLCBldmVudD86IENlbGxNb3VzZU91dEV2ZW50KSB7XG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgaW5zdGFuY2Uuc2hvdyhldmVudCk7XG4gICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT25Ib3ZlclBvcygpIHtcbiAgICBjb25zdCB7IGNlbnRlclZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGNvbnN0IHRhcmdldCA9IGNlbnRlckNvbnRhaW5lci5jbGllbnRXaWR0aCA+IGNlbnRlclZpZXdwb3J0LmNsaWVudFdpZHRoID8gY2VudGVyVmlld3BvcnQgOiBjZW50ZXJDb250YWluZXI7XG4gICAgY29uc3QgeyBjbGllbnRXaWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGFyZ2V0O1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQuaW5zdGFuY2UudXBkYXRlU2Nyb2xsUG9zKGNsaWVudFdpZHRoICsgc2Nyb2xsTGVmdCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVJvd0hvdmVyQ2xhc3Mocm93czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKSB7XG4gICAgY29lcmNlQXJyYXkocm93cykuZm9yRWFjaChyb3cgPT4gcm93ICYmIHJvdy5jbGFzc0xpc3QudG9nZ2xlKCdhY3Rpb25zLWhvdmVyZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoeyBncmlkLCBjb2x1bW5zIH06IERhdG9HcmlkQXBpKSB7XG4gICAgdGhpcy5ob3RrZXlzXG4gICAgICAuYWRkU2hvcnRjdXQoe1xuICAgICAgICBlbGVtZW50OiB0aGlzLmFnR3JpZEVsLFxuICAgICAgICBrZXlzOiAnbWV0YS5hJyxcbiAgICAgICAgaWdub3JlSW5FZGl0YWJsZTogdHJ1ZVxuICAgICAgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgIT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZml0VG8gPSB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5GSVRfVE9fQ09OVEFJTkVSID8gJ2NvbnRhaW5lcicgOiAnY29udGVudCc7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZml0R3JpZChmaXRUbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZERhdGEoKSB7XG4gICAgY29uc3QgZ3JpZE1vZGVsID0gdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5nZXRNb2RlbCgpIGFzIGFueTtcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgY29uc3QgZ3JpZERhdGEgPSBncmlkTW9kZWwucm93c1RvRGlzcGxheS5tYXAoKHsgZGF0YSB9KSA9PiBkYXRhKTtcbiAgICAgIHJldHVybiBjb252ZXJ0RnJvbVRyZWVEYXRhKGdyaWREYXRhLCB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IGV2ZW50cyQgPSB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGVcbiAgICAgID8gbWVyZ2UoYWdHcmlkLnNvcnRDaGFuZ2VkLCBhZ0dyaWQuZmlsdGVyQ2hhbmdlZClcbiAgICAgIDogYWdHcmlkLmZpbHRlckNoYW5nZWQ7XG4gICAgKGV2ZW50cyQgYXMgT2JzZXJ2YWJsZTxhbnk+KS5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGlmICghdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFnR3JpZC5wYWdpbmF0aW9uQ2hhbmdlZC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3ModHJ1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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TixRQUFRO2dCQUNSLHdCQUF3QjtnQkFDekIsV0FBVztnREFDM0IsTUFBTSxTQUFDLHFCQUFxQjs7SUFsRHFCO1FBQW5ELGVBQWUsQ0FBQyxpQ0FBaUMsQ0FBQztrQ0FBeUIsU0FBUzsrRUFFbkY7SUFFUTtRQUFULE1BQU0sRUFBRTs7cUVBQW9EO0lBQ3BEO1FBQVIsS0FBSyxFQUFFOzttRUFBOEI7SUFDN0I7UUFBUixLQUFLLEVBQUU7O29FQUFnQztJQUMvQjtRQUFSLEtBQUssRUFBRTs7O2tFQVlQO0lBcEJVLDJCQUEyQjtRQVR2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFFBQVEsRUFBRSxxQ0FFVDtZQUVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDOztTQUMvQyxDQUFDO1FBb0RHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7eUNBVFYsV0FBVztZQUNiLFNBQVM7WUFDZCxpQkFBaUI7WUFDUixZQUFZO1lBQ2Ysb0JBQW9CO1lBQ3pCLFVBQVU7WUFDTixRQUFRO1lBQ1Isd0JBQXdCO1lBQ3pCLFdBQVc7T0FsRG5CLDJCQUEyQixDQStldkM7SUFBRCxrQ0FBQztDQUFBLEFBL2VELElBK2VDO1NBL2VZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZ0dyaWROZzIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7XG4gIEJvZHlTY3JvbGxFdmVudCxcbiAgQ2VsbENsaWNrZWRFdmVudCxcbiAgQ2VsbEV2ZW50LFxuICBDZWxsTW91c2VPdXRFdmVudCxcbiAgQ29sdW1uUmVzaXplZEV2ZW50LFxuICBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCxcbiAgRGV0YWlsR3JpZEluZm8sXG4gIEdyaWRBcGksXG4gIFJvd0dyb3VwT3BlbmVkRXZlbnRcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgR3JpZFF1ZXJ5IH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcbmltcG9ydCB7IEdyaWRTdG9yZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZSc7XG5pbXBvcnQgeyBEYXRvR3JpZFNldHRpbmdzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQXBpIH0gZnJvbSAnLi9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBbGlnbm1lbnQsIERhdG9HcmlkT3B0aW9ucywgRGF0b0dyaWRTb3J0LCBHcmlkQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9kZWVwLW1lcmdlJztcbmltcG9ydCB7IERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtY3VzdG9tLWhlYWRlci9jdXN0b20taGVhZGVyLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgR3JpZEFjdGlvbiwgUm93QWN0aW9uIH0gZnJvbSAnLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERBVE9fR1JJRF9TVE9SQUdFX0FQSSwgR3JpZFN0b3JhZ2VBUEkgfSBmcm9tICcuLi9ncmlkLXNldHRpbmdzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGFwcGVuZENoaWxkLCBxdWVyeSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAndG9vbHRpcC5qcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYW5ndWxhci9keW5hbWljLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1vbi1ob3Zlci9ncmlkLW9uLWhvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0RnJvbVRyZWVEYXRhLCBkZWZhdWx0R3JpZE9wdGlvbnMsIGRlZmF1bHRUcmVlT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi5jb25maWcnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBEYXRvSG90a2V5cyB9IGZyb20gJy4uLy4uL2hvdGtleXMvaG90a2V5cy5zZXJ2aWNlJztcbmltcG9ydCBET01QdXJpZnkgZnJvbSAnZG9tcHVyaWZ5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbR3JpZFF1ZXJ5LCBHcmlkU2VydmljZSwgR3JpZFN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCkgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogUXVlcnlMaXN0PFxuICAgIERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudFxuICA+O1xuXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRDaGFuZ2VFdmVudD4oKTtcbiAgQElucHV0KCkgcm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgZ3JpZE9wdGlvbnMoZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucykge1xuICAgIHRoaXMuX2dyaWRPcHRpb25zID0gZ3JpZE9wdGlvbnM7XG4gICAgdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YSA9IGdyaWRPcHRpb25zLnRyZWVEYXRhO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuaXNQaXZvdE1vZGUgPSBncmlkT3B0aW9ucy5waXZvdE1vZGU7XG5cbiAgICBpZiAodGhpcy5hZ0dyaWRFbCkge1xuICAgICAgaWYgKGdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICAgICF0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLnRyZWVHcmlkQ2xhc3MpICYmIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCh0aGlzLnRyZWVHcmlkQ2xhc3MpO1xuICAgICAgfSBlbHNlIGlmICghZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMSkge1xuICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZ3JpZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250ZW50SW5pdCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgdG9vbHRpcDtcbiAgcHJpdmF0ZSBfZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucztcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQ7XG4gIGFnR3JpZEVsOiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIHJvd0hvdmVyQ29tcG9uZW50OiBDb21wb25lbnRSZWY8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBsYXN0SG92ZXJlZFJvdzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgZ3JpZEVsZW1lbnRzID0ge1xuICAgIGNlbnRlclZpZXdwb3J0OiBudWxsLFxuICAgIGNlbnRlckNvbnRhaW5lcjogbnVsbCxcbiAgICBib2R5Vmlld3BvcnQ6IG51bGxcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmVlR3JpZENsYXNzID0gJ3RyZWUnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHVibGljIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaG90a2V5czogRGF0b0hvdGtleXMsXG4gICAgQEluamVjdChEQVRPX0dSSURfU1RPUkFHRV9BUEkpIHByaXZhdGUgc3RvcmFnZUFQSTogR3JpZFN0b3JhZ2VBUElcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29udGVudEluaXQuY29tcGxldGUoKTtcbiAgICB0aGlzLnRvb2x0aXAgJiYgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ICYmIHRoaXMucm93SG92ZXJDb21wb25lbnQuZGVzdHJveSgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBudWxsO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuY29udGVudEluaXQubmV4dCgpO1xuICAgIHRoaXMuY29udGVudEluaXQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBfaW5pdGlhbGl6ZUdyaWQoYWdHcmlkOiBBZ0dyaWROZzIsIGFnR3JpZEVsOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuYWdHcmlkRWwgPSBhZ0dyaWRFbDtcbiAgICB0aGlzLmNvbnRlbnRJbml0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB0aGlzLm5vcm1hbGl6ZU9wdGlvbnMoKTtcbiAgICAgICAgICBhZ0dyaWQuZ3JpZE9wdGlvbnMgPSB0aGlzLmdyaWRPcHRpb25zO1xuICAgICAgICAgIGNvbnN0IHNldHRpbmdzTG9hZGVyID1cbiAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2F2ZVNldHRpbmdzID09PSBmYWxzZSA/IG9mKG51bGwpIDogdGhpcy5zdG9yYWdlQVBJLmdldCh0aGlzLmdyaWRPcHRpb25zLmdyaWROYW1lKTtcbiAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbYWdHcmlkLmdyaWRSZWFkeSwgc2V0dGluZ3NMb2FkZXJdKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbeyBhcGksIGNvbHVtbkFwaSB9LCBzYXZlZFNldHRpbmdzID0ge31dOiBbRGV0YWlsR3JpZEluZm8sIFBhcnRpYWw8RGF0b0dyaWRTZXR0aW5ncz5dKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5yb3dEYXRhKSB7XG4gICAgICAgICAgYXBpLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5zdGF0dXNCYXIpIHtcbiAgICAgICAgICAvKiogRml4IGFnLWdyaWQgYnVnIHRoYXQgZG9lc24ndCBhZGQgYWctaGlkZGVuIGNsYXNzIHRvIHRoZSBzdGF0dXMgYmFyLCB3aGljaCBvbmx5IGdldCBmaXhlZCBpbiBsYXRlciB2ZXJzaW9ucyAqL1xuICAgICAgICAgIGNvbnN0IGVsID0gYWdHcmlkRWwucXVlcnlTZWxlY3RvcignLmFnLXN0YXR1cy1iYXInKTtcblxuICAgICAgICAgIGFkZENsYXNzKGVsLCAnYWctaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ3JpZEFwaTogRGF0b0dyaWRBcGkgPSB7IGdyaWQ6IGFwaSwgY29sdW1uczogY29sdW1uQXBpIH07XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG5cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5pbml0U2V0dGluZ3Moc2F2ZWRTZXR0aW5ncyB8fCB7fSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyR3JpZExpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fZ3JpZFJlYWR5Lm5leHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoJ3RyZWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoYHJvdy1oZWlnaHQtJHt0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodH1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU9wdGlvbnMoKSB7XG4gICAgLyoqXG4gICAgICogV2hlbiB0cmVlRGF0YSBpcyBlbmFibGVkLCBQYWdpbmF0aW9uIG11c3QgYmUgdHVybmVkIG9mZlxuICAgICAqL1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAuLi50aGlzLmdyaWRPcHRpb25zLFxuICAgICAgICBwYWdpbmF0aW9uOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZ3JpZE9wdGlvbnM6IHRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICBjdXN0b21IZWFkZXJzVGVtcGxhdGVzOiB0aGlzLmN1c3RvbUhlYWRlcnNUZW1wbGF0ZXMsXG4gICAgICByb3dBY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnNcbiAgICB9O1xuXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLmdyaWRTZXJ2aWNlLm5vcm1hbGl6ZU9wdGlvbnMocGFyYW1zKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLih0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhID8gZGVmYXVsdFRyZWVPcHRpb25zIDoge30pLFxuICAgICAgaWNvbnM6IHRoaXMuZ2V0R3JpZEljb25zKClcbiAgICB9O1xuICAgIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdHMsIG5vcm1hbGl6ZWQpO1xuICB9XG5cbiAgc2V0R3JpZFJvd3M8VD4oZGF0YTogVFtdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRSb3dzPFQ+KGRhdGEpO1xuICB9XG5cbiAgc2V0R3JpZEZpbHRlcnMoZmlsdGVyczogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRHcmlkRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHNldEdyaWRTb3J0KHNvcnQ6IERhdG9HcmlkU29ydCkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZFNvcnQoc29ydCk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWRJY29ucygpOiBIYXNoTWFwPHN0cmluZz4ge1xuICAgIGNvbnN0IG1vdmVDb2x1bW5JY29uID0gYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAnbW92ZS1jb2x1bW4nXG4gICAgKX08L3NwYW4+YDtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBFeHBhbmRlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtZXhwYW5kZWQtaWNvblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnYXJyb3ctcmlnaHQnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgZ3JvdXBDb250cmFjdGVkOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBncm91cC1jb250cmFjdGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVQaW46IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBwcmltYXJ5LTMwMC1maWxsIGNvbHVtbi1tb3ZlLXBpblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAncGluJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVIaWRlOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggY29sdW1uLW1vdmUtaGlkZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnZXllLWhpZGUnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZU1vdmU6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgY29sdW1uTW92ZUxlZnQ6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgY29sdW1uTW92ZVJpZ2h0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIHJvd0RyYWc6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBkcmFnIGQtZmxleFwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKCdkcmFnLTAxJyl9PC9zcGFuPmBcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGFwaTogRGF0b0dyaWRBcGksIGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgdGhpcy5saXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGksIGFnR3JpZCk7XG4gICAgdGhpcy5saXN0ZW5Ub0dyaWRFdmVudHMoYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvU3RvcmVTZXR0aW5nc0NoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9Db2x1bW5SZXNpemUoYXBpOiBEYXRvR3JpZEFwaSwgeyBjb2x1bW5SZXNpemVkIH06IEFnR3JpZE5nMikge1xuICAgIGxldCBvYnNlcnZhYmxlID0gY29sdW1uUmVzaXplZC5hc09ic2VydmFibGUoKTtcbiAgICBpZiAodGhpcy5vbkhvdmVyRW5hYmxlZCgpKSB7XG4gICAgICBvYnNlcnZhYmxlID0gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKSlcbiAgICAgICk7XG4gICAgfVxuICAgIG9ic2VydmFibGVcbiAgICAgIC5waXBlKFxuICAgICAgICBhdWRpdFRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCh7IGZpbmlzaGVkLCBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBmaW5pc2hlZCAmJiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgIGNvbnN0IFtjb2x1bW5dID0gZS5jb2x1bW5zO1xuICAgICAgICBsZXQgY29sdW1uc1NpemVzID0geyAuLi50aGlzLmdyaWRRdWVyeS5nZXRDb2x1bW5TaXplcygpIH07XG4gICAgICAgIGlmIChjb2x1bW5zU2l6ZXMpIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXNbY29sdW1uLmdldENvbElkKCldID0gY29sdW1uLmdldEFjdHVhbFdpZHRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzID0gZ2V0Q29sdW1uc1NpemVzKGFwaS5jb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3MoeyBncmlkQWxpZ25tZW50OiBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00sIGNvbHVtbnNTaXplcyB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0dyaWRFdmVudHMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCB7IGNvbHVtblZpc2libGUsIHNvcnRDaGFuZ2VkLCBjb2x1bW5Sb3dHcm91cENoYW5nZWQsIGNvbHVtblBpbm5lZCwgZHJhZ1N0b3BwZWQsIGZpbHRlckNoYW5nZWQgfSA9IGFnR3JpZDtcbiAgICBtZXJnZShjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkLCBmaWx0ZXJDaGFuZ2VkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8qIFNraXAgdGhlIGluaXRpYWwgc29ydGluZyBldmVudCBmaXJlZCBieSB0aGUgZ3JpZCB3aGVuIGFkZGluZyByb3dzICovXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IHR5cGUgfSkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0RpZmYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldFNldHRpbmdzRGlmZigpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnVwZGF0ZVNldHRpbmdzKHNldHRpbmdzRGlmZik7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEdyaWREYXRhKCk7XG4gICAgICAgIHRoaXMub25HcmlkQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIGZpbHRlcjogdGhpcy5ncmlkUXVlcnkuZ2V0RXh0ZXJuYWxGaWx0ZXIoKSxcbiAgICAgICAgICBzb3J0OiB0aGlzLmdyaWRRdWVyeS5nZXRTb3J0KCksXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvU3RvcmVTZXR0aW5nc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZVNldHRpbmdzVG9TZXJ2ZXIoc2V0dGluZ3NEaWZmKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmdyaWRFbGVtZW50cyA9IHtcbiAgICAgIGNlbnRlckNvbnRhaW5lcjogcXVlcnkoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGNlbnRlclZpZXdwb3J0OiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbCksXG4gICAgICBib2R5Vmlld3BvcnQ6IHF1ZXJ5KCcuYWctYm9keS12aWV3cG9ydCcsIHRoaXMuYWdHcmlkRWwpXG4gICAgfTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpLmdyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKGFwaSk7XG4gICAgdGhpcy5yZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEdyb3VwTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgLyogTWFrZSBncm91cCBleHBhbmQvY29sbGFwc2Ugb24gYSBzaW5nbGUgY2xpY2sgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBkb3VibGUgY2xpY2sgKi9cbiAgICBhZ0dyaWQuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh7IGNvbHVtbnMgfTogQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gRU1QVFlcbiAgICAgICAgICAgIDogYWdHcmlkLmNlbGxDbGlja2VkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh7IHZhbHVlLCBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgbm9kZS5ncm91cCA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4ge1xuICAgICAgICBub2RlLnNldEV4cGFuZGVkKCFub2RlLmV4cGFuZGVkKTtcbiAgICAgIH0pO1xuICAgIC8qIFdoZW4gY2xvc2luZyBhIGdyb3VwZWQgcm93IHdlIHdhbnQgdG8gaGlkZSB0aGUgb24gaG92ZXIgYWN0aW9ucyAqL1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIGFnR3JpZC5yb3dHcm91cE9wZW5lZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHsgbm9kZSB9OiBSb3dHcm91cE9wZW5lZEV2ZW50KSA9PiBub2RlLmV4cGFuZGVkID09PSBmYWxzZSksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNsaWNrIHdhcyBwZXJmb3JtZWQgb24gdGhlIGdyaWRzIGJvZHkgYW5kIG5vdCBhIHJvdywgY2xlYXIgdGhlIHJvd3Mgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpOiBHcmlkQXBpKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlclZpZXdwb3J0IH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnY2xpY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGV2ZW50LnRhcmdldCA9PT0gYm9keVZpZXdwb3J0IHx8IGV2ZW50LnRhcmdldCA9PT0gY2VudGVyVmlld3BvcnQpICYmIGFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gYXBpLmRlc2VsZWN0QWxsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhvdmVyRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZy5lbmFibGVkICYmIHRoaXMucm93QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgYm9keVZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGxldCBsYXN0SG92ZXJlZENlbGw7XG4gICAgY29uc3Qgb25Ib3ZlckVuYWJsZWQgPSB0aGlzLm9uSG92ZXJFbmFibGVkKCk7XG4gICAgaWYgKG9uSG92ZXJFbmFibGVkKSB7XG4gICAgICBmcm9tRXZlbnQoY2VudGVyQ29udGFpbmVyLCAnbW91c2VsZWF2ZScpXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3ModGhpcy5sYXN0SG92ZXJlZFJvdyk7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUoZmFsc2UpO1xuICAgICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIGFnR3JpZC5ib2R5U2Nyb2xsLnBpcGUoZmlsdGVyKCh7IGRpcmVjdGlvbiB9OiBCb2R5U2Nyb2xsRXZlbnQpID0+IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSksXG4gICAgICAgIGFnR3JpZC5yb3dEYXRhQ2hhbmdlZFxuICAgICAgKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRPbkhvdmVyRWxlbWVudCgpO1xuICAgIH1cbiAgICBhZ0dyaWQuY2VsbE1vdXNlT3ZlclxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBub2RlLCBjb2x1bW4gfSkgPT4gbGFzdEhvdmVyZWRDZWxsICE9PSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENlbGxNb3VzZU91dEV2ZW50KSA9PiB7XG4gICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IGAke2V2ZW50Lm5vZGUuaWR9LSR7ZXZlbnQuY29sdW1uLmdldENvbElkKCl9YDtcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcChldmVudCk7XG4gICAgICAgIGNvbnN0IHJvdyA9IChldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmIChvbkhvdmVyRW5hYmxlZCAmJiAoZXZlbnQubm9kZS5ncm91cCA9PT0gZmFsc2UgfHwgaXNOaWwoZXZlbnQubm9kZS5ncm91cCkpICYmIHRoaXMubGFzdEhvdmVyZWRSb3cgIT09IHJvdykge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTm9kZSA9IHRoaXMubGFzdEhvdmVyZWRSb3c7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IHJvdztcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3MoW3ByZXZpb3VzTm9kZSwgdGhpcy5sYXN0SG92ZXJlZFJvd10pO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKHRydWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgY29uc3Qgb25Ub29sdGlwT3V0ID0gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnc2Nyb2xsJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5hZ0dyaWRFbCwgJ21vdXNlbGVhdmUnKSxcbiAgICAgIGFnR3JpZC5jZWxsTW91c2VPdXRcbiAgICApO1xuICAgIG9uVG9vbHRpcE91dFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhaXNOaWwodGhpcy50b29sdGlwKSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2UgdGhlIHRvb2x0aXBcbiAgICovXG4gIGNsZWFyVG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXAuZGlzcG9zZSgpO1xuICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKGV2ZW50OiBDZWxsRXZlbnQpIHtcbiAgICBjb25zdCBjZWxsOiBIVE1MRWxlbWVudCA9IGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB0ZXh0T3ZlcmZsb3cgPSBjZWxsLm9mZnNldFdpZHRoIDwgY2VsbC5zY3JvbGxXaWR0aDtcbiAgICBpZiAodGV4dE92ZXJmbG93KSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNlbGwsIHZhbHVlOiBjZWxsLmlubmVyVGV4dCB9O1xuICAgICAgaXNOaWwodGhpcy50b29sdGlwKSA/IHRoaXMuY3JlYXRlQW5kU2hvd1Rvb2x0aXAocGFyYW1zKSA6IHRoaXMudXBkYXRlVG9vbHRpcChwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5kU2hvd1Rvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KSB7XG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoY2VsbCwge1xuICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keSxcbiAgICAgIHRyaWdnZXI6ICdtYW51YWwnLFxuICAgICAgdGl0bGU6IERPTVB1cmlmeS5zYW5pdGl6ZSh2YWx1ZSksXG4gICAgICBodG1sOiB0cnVlLFxuICAgICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsgZW5hYmxlZDogZmFsc2UgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGU6XG4gICAgICAgICc8ZGl2IGNsYXNzPVwidG9vbHRpcCBkYXRvLXRvb2x0aXAgY29tbW9uLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPjxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj48L2Rpdj4nXG4gICAgfSk7XG5cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdG9vbHRpcCBlbGVtZW50IHJlZiBhbmQgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwKHsgY2VsbCwgdmFsdWUgfSk6IHZvaWQge1xuICAgIGlmIChjZWxsICE9PSB0aGlzLnRvb2x0aXAucmVmZXJlbmNlKSB7XG4gICAgICB0aGlzLnRvb2x0aXAucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC5wb3BwZXJJbnN0YW5jZS5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnVwZGF0ZVRpdGxlQ29udGVudCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZE9uSG92ZXJFbGVtZW50KCkge1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBjcmVhdGVDb21wb25lbnQ8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50Pih7XG4gICAgICBjb21wb25lbnQ6IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCxcbiAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgcmVzb2x2ZXI6IHRoaXMucmVzb2x2ZXJcbiAgICB9KTtcbiAgICBjb25zdCB7IGluc3RhbmNlLCBob3N0VmlldyB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpbnN0YW5jZS5jb25maWcgPSB7IC4uLnRoaXMuZ3JpZE9wdGlvbnMuaG92ZXJDb25maWcsIGFjdGlvbnM6IHRoaXMucm93QWN0aW9ucy5zbGljZSgpIH07XG4gICAgaG9zdFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGFwcGVuZENoaWxkKHRoaXMuZ3JpZEVsZW1lbnRzLmNlbnRlckNvbnRhaW5lciwgdGhpcy5yb3dIb3ZlckVsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJvd0hvdmVyRWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T25Ib3ZlclN0YXRlKHZpc2libGU6IGJvb2xlYW4sIGV2ZW50PzogQ2VsbE1vdXNlT3V0RXZlbnQpIHtcbiAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICBpbnN0YW5jZS5zaG93KGV2ZW50KTtcbiAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPbkhvdmVyUG9zKCkge1xuICAgIGNvbnN0IHsgY2VudGVyVmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgY29uc3QgdGFyZ2V0ID0gY2VudGVyQ29udGFpbmVyLmNsaWVudFdpZHRoID4gY2VudGVyVmlld3BvcnQuY2xpZW50V2lkdGggPyBjZW50ZXJWaWV3cG9ydCA6IGNlbnRlckNvbnRhaW5lcjtcbiAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBzY3JvbGxMZWZ0IH0gPSB0YXJnZXQ7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5pbnN0YW5jZS51cGRhdGVTY3JvbGxQb3MoY2xpZW50V2lkdGggKyBzY3JvbGxMZWZ0KTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUm93SG92ZXJDbGFzcyhyb3dzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pIHtcbiAgICBjb2VyY2VBcnJheShyb3dzKS5mb3JFYWNoKHJvdyA9PiByb3cgJiYgcm93LmNsYXNzTGlzdC50b2dnbGUoJ2FjdGlvbnMtaG92ZXJlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcih7IGdyaWQsIGNvbHVtbnMgfTogRGF0b0dyaWRBcGkpIHtcbiAgICB0aGlzLmhvdGtleXNcbiAgICAgIC5hZGRTaG9ydGN1dCh7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuYWdHcmlkRWwsXG4gICAgICAgIGtleXM6ICdtZXRhLmEnLFxuICAgICAgICBpZ25vcmVJbkVkaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCkge1xuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCAhPT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaXRUbyA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkZJVF9UT19DT05UQUlORVIgPyAnY29udGFpbmVyJyA6ICdjb250ZW50JztcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKGZpdFRvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkRGF0YSgpIHtcbiAgICBjb25zdCBncmlkTW9kZWwgPSB0aGlzLmdyaWRTZXJ2aWNlLmFwaS5ncmlkLmdldE1vZGVsKCkgYXMgYW55O1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICBjb25zdCBncmlkRGF0YSA9IGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5Lm1hcCgoeyBkYXRhIH0pID0+IGRhdGEpO1xuICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tVHJlZURhdGEoZ3JpZERhdGEsIHRoaXMuZ3JpZFNlcnZpY2UudHJlZUNvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBncmlkTW9kZWwucm93c1RvRGlzcGxheTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgZXZlbnRzJCA9IHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZVxuICAgICAgPyBtZXJnZShhZ0dyaWQuc29ydENoYW5nZWQsIGFnR3JpZC5maWx0ZXJDaGFuZ2VkKVxuICAgICAgOiBhZ0dyaWQuZmlsdGVyQ2hhbmdlZDtcbiAgICAoZXZlbnRzJCBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmRlc2VsZWN0QWxsUm93cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgaWYgKCF0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWdHcmlkLnBhZ2luYXRpb25DaGFuZ2VkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cyh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -16,6 +16,7 @@ import { isNil } from '../../utils/validators';
|
|
|
16
16
|
import { DecimalPipe } from '@angular/common';
|
|
17
17
|
import { GridService } from '../grid-store/grid.service';
|
|
18
18
|
import { tapOnce } from '../../rx/tap';
|
|
19
|
+
import { merge } from 'rxjs';
|
|
19
20
|
var DatoGridPaginationV2Component = /** @class */ (function () {
|
|
20
21
|
function DatoGridPaginationV2Component(cdr, translate, gridQuery, gridService, controller, decimalPipe) {
|
|
21
22
|
this.cdr = cdr;
|
|
@@ -79,7 +80,9 @@ var DatoGridPaginationV2Component = /** @class */ (function () {
|
|
|
79
80
|
DatoGridPaginationV2Component.prototype.ngOnInit = function () {
|
|
80
81
|
var _this = this;
|
|
81
82
|
this.gridQuery
|
|
82
|
-
.waitForGrid(function () {
|
|
83
|
+
.waitForGrid(function () {
|
|
84
|
+
return merge(_this.gridQuery.gridRef.filterChanged, _this.gridQuery.gridRef.rowGroupOpened, _this.gridQuery.gridRef.expandOrCollapseAll);
|
|
85
|
+
})
|
|
83
86
|
.pipe(untilDestroyed(this))
|
|
84
87
|
.subscribe(function () {
|
|
85
88
|
_this.gridApi.paginationGoToPage(0);
|
|
@@ -322,4 +325,4 @@ var DatoGridPaginationV2Component = /** @class */ (function () {
|
|
|
322
325
|
return DatoGridPaginationV2Component;
|
|
323
326
|
}());
|
|
324
327
|
export { DatoGridPaginationV2Component };
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBU3ZDO0lBdURFLHVDQUNVLEdBQXNCLEVBQ3RCLFNBQStCLEVBQy9CLFNBQW9CLEVBQ3BCLFdBQXdCLEVBQ3hCLFVBQXVDLEVBQ3ZDLFdBQXdCO1FBTHhCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBNkI7UUFDdkMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE1Q2xDLDJGQUEyRjtRQUMzRixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQiw2RkFBNkY7UUFDN0YsaUJBQVksR0FBbUIsSUFBSSxDQUFDO1FBS3BDLHFDQUFxQztRQUNyQyx1QkFBa0IsR0FBRztZQUNuQixXQUFXLEVBQUUsQ0FBQztZQUNkLEtBQUssRUFBRSxFQUFFO1lBQ1QsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO1FBRUYsZ0VBQWdFO1FBQ2hFLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQVVuQiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFdkMsNkZBQTZGO1FBQzVFLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUM1Qyw2RkFBNkY7UUFDNUUsb0JBQWUsR0FBVyxHQUFHLENBQUM7UUFDOUIsdUJBQWtCLEdBQVcsR0FBRyxDQUFDO0lBUy9DLENBQUM7SUF2REosc0JBQUksa0RBQU87UUFOWDs7OztXQUlHO2FBRUgsVUFBWSxPQUFtQjtZQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO1lBQ2pDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNoQztRQUNILENBQUM7OztPQUFBO0lBb0RELHNCQUFJLDJEQUFnQjthQUFwQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwyREFBZ0I7YUFBcEI7WUFDRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqRSxDQUFDOzs7T0FBQTtJQUVELGdEQUFRLEdBQVI7UUFBQSxpQkE4QkM7UUE3QkMsSUFBSSxDQUFDLFNBQVM7YUFDWCxXQUFXLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBcEMsQ0FBb0MsQ0FBQzthQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQztZQUNULEtBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsS0FBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO2FBQ3RCLElBQUksQ0FDSCxHQUFHLENBQUM7WUFDRixJQUFNLGVBQWUsR0FBRyxLQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUV4RSxLQUFJLENBQUMsT0FBTyxHQUFHLEtBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN2QyxLQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztZQUM3RSxLQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQztZQUNSLEtBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUMxRCxPQUFPLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDekcsQ0FBQyxDQUFDLEVBQ0YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixPQUFPLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLEVBQUUsRUFBckIsQ0FBcUIsQ0FBQyxFQUNwQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQ3JCO2FBQ0EsU0FBUyxDQUFDLFVBQUMsRUFBZ0Q7Z0JBQTlDLHNCQUFrQixFQUFsQix1Q0FBa0I7WUFDOUIsK0VBQStFO1lBQy9FLEtBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMERBQWtCLEdBQWxCLFVBQW1CLFNBQWlCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNEQUFjLEdBQWQsVUFBZSxVQUFjO1FBQWQsMkJBQUEsRUFBQSxjQUFjO1FBQ3JCLElBQUEsb0NBQXdELEVBQXRELHdCQUFTLEVBQUUsb0JBQTJDLENBQUM7UUFDL0QsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU87UUFDeEMsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQywrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3ZDLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFPRCxzQkFBSSxzREFBVztRQUxmOzs7O1dBSUc7YUFDSCxVQUFnQixnQkFBd0I7WUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDN0QsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7OztPQUFBO0lBRUQsaURBQWlEO0lBQ2pELCtEQUF1QixHQUF2QjtRQUNFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNwRixJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzFELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDMUMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtvQkFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2lCQUM3QzthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2lCQUN4QzthQUNGO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0RBQVksR0FBWixVQUFhLFVBQWtCO1FBQzdCLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMscURBQXFEO1lBQ3JELElBQU0sYUFBYSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7WUFFcEQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDOUQ7WUFFRCxnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQseURBQWlCLEdBQWpCO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsd0RBQWdCLEdBQWhCO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHdEQUFnQixHQUFoQjtRQUNFLGlGQUFpRjtRQUNqRixJQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxxREFBYSxHQUFiO1FBQ0UsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDeEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILHlEQUFpQixHQUFqQjtRQUNFLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtREFBVyxHQUFYLFVBQVksS0FBYSxFQUFFLElBQVk7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseURBQWlCLEdBQWpCO1FBQ0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsbURBQVcsR0FBWCxVQUFZLElBQTZCO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtREFBVyxHQUFYLGNBQXFCLENBQUM7SUFFdEI7Ozs7T0FJRztJQUNLLDJEQUFtQixHQUEzQixVQUE0QixhQUFhO1FBQ3ZDLGlFQUFpRTtRQUNqRSxJQUFNLFVBQVUsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4RCxJQUFNLE9BQU8sR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BELElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVM7WUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUM7Z0JBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFO29CQUMxQyxLQUFLLEVBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFHO29CQUNuRyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQkFDbEQsQ0FBQztnQkFDSixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxnREFBUSxHQUFoQixVQUFpQixNQUFjO1FBQzdCLElBQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQix5RkFBeUY7UUFDekYsa0ZBQWtGO1FBQ2xGLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpHLHVDQUF1QztRQUN2QyxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0Qsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLGNBQWMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDaEYsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDOUM7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSywwREFBa0IsR0FBMUIsVUFBMkIsTUFBYztRQUN2QyxJQUFJLFdBQVcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QyxzRUFBc0U7UUFDdEUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDOUIsV0FBVyxHQUFHLE1BQU0sQ0FBQzthQUN0QjtTQUNGO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRTtZQUNyRCxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUU7WUFDaEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLHdEQUFnQixHQUF4QixVQUF5QixVQUFrQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQzs7Z0JBeFBjLGlCQUFpQjtnQkFDWCxvQkFBb0I7Z0JBQ3BCLFNBQVM7Z0JBQ1AsV0FBVztnQkFDWiwyQkFBMkI7Z0JBQzFCLFdBQVc7O0lBdERsQztRQURDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQ3JCLFVBQVU7eUNBQVYsVUFBVTtnRUFLOUI7SUFaVSw2QkFBNkI7UUFQekMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQywyNUlBQStDO1lBRS9DLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQzs7U0FDekIsQ0FBQzt5Q0F5RGUsaUJBQWlCO1lBQ1gsb0JBQW9CO1lBQ3BCLFNBQVM7WUFDUCxXQUFXO1lBQ1osMkJBQTJCO1lBQzFCLFdBQVc7T0E3RHZCLDZCQUE2QixDQWlUekM7SUFBRCxvQ0FBQztDQUFBLEFBalRELElBaVRDO1NBalRZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEFwaSwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IHRhcE9uY2UgfSBmcm9tICcuLi8uLi9yeC90YXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtcGFnaW5hdGlvbi12MicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZFBhZ2luYXRpb25WMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGlzIHNldHRlciBpcyB1c2VkIHRvIGFzc2lnbiB0aGUgbmF2aWdhdGlvbiBlbGVtZW50IHJlZiBhbmQgdG8gc2V0XG4gICAqIHRoZSBwYWdpbmF0aW9uIHNpemUgd2hlbiB0aGUgY29tcG9uZW50IHN0YXJ0c1xuICAgKiBAcGFyYW0ge0VsZW1lbnRSZWZ9IGNvbnRlbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ25hdmlnYXRpb24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZXQgY29udGVudChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uRWxlbWVudCA9IGNvbnRlbnQ7XG4gICAgaWYgKGNvbnRlbnQgJiYgdGhpcy5zbWFsbFZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTmF2aWdhdGlvblNpemUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGVcbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgcm93c1BlclBhZ2U6IG51bWJlcjtcbiAgLy8gd2hlbiB0aGUgd2lkZ2V0J3Mgd2lkdGggaXMgc21hbGxlciB0aGFuIFhTX0RJU1BMQVlfU0laRSBkaXNhYmxlIGdvIHRvIGZpcnN0L2xhc3QgYnV0dG9uc1xuICBkaXNhYmxlQnV0dG9uczogYm9vbGVhbiA9IG51bGw7XG4gIC8vIHdoZW4gdGhlIHdpZGdldCdzIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBTTUFMTF9ESVNQTEFZX1NJWkUgY2hhbmdlIHRvIHNtYWxsIHBhZ2luYXRpb24gdmlld1xuICBzbWFsbFZlcnNpb246IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgLy8gbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0YWJsZVxuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIC8vIFRoZSBkaXNwbGF5IHJvd3MgcmFuZ2VcbiAgcm93c1JhbmdlOiBzdHJpbmc7XG4gIC8vIG1hbmFnaW5nIG9iamVjdCBmb3IgdGhlIG5hdmlnYXRpb25cbiAgcGFnZU51bWJlcnNEaXNwbGF5ID0ge1xuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIHBhZ2VzOiBbXSxcbiAgICBzaG93Rmlyc3RFbGxpcHNpczogZmFsc2UsXG4gICAgc2hvd0xhc3RQYWdlOiBmYWxzZVxuICB9O1xuXG4gIC8vIFNob3cgZml0IGNlbGwgY29udGVudCBhbmQgY29sbGFwc2UvZXhwYW5kIHJvdyBncm91cHMgY29udHJvbHNcbiAgc2hvd0JvdHRvbUNvbnRyb2xzID0gZmFsc2U7XG4gIGlzRXhwYW5kZWQgPSB0cnVlO1xuICBoYXNSb3dHcm91cENvbHVtbnMgPSBmYWxzZTtcblxuICAvLyBob3cgbWFueSBudW1iZXJzIGFyZSBzaG93aW5nIG9uIHRoZSBzYW1lIHRpbWUgYmVzaWRlcyB0aGUgbGFzdCBwYWdlIG51bWJlclxuICBwcml2YXRlIF9wYWdlc0luVmlldzogbnVtYmVyO1xuICAvLyBUaGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBvbiBlYWNoIHNpZGUgb2YgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gIHByaXZhdGUgcGFnZXNPblNpZGVzOiBudW1iZXI7XG4gIC8vIGlmIHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIHRhYmxlIGZpdHMgdGhlIG51bWJlciBvZiBkaXNwbGF5aW5nIHBhZ2VzXG4gIHByaXZhdGUgcGFnZXNGaXRWaWV3OiBib29sZWFuO1xuICAvLyBob3cgbWFueSBudW1iZXJzIHRvIHNob3cgb24gZWFjaCBzaWRlIGJlc2lkZXMgdGhlIHNlbGVjdGVkIG51bWJlclxuICBwcml2YXRlIG5hdmlnYXRpb25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGlzU2VydmVyU2lkZVBhZ2luYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSBncmlkQXBpOiBHcmlkQXBpO1xuICAvLyBUaGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lbCBmb3IgZWFjaCB2aWV3IGFzIGRlZmluZWQgYnkgcHJvZHVjdC5cbiAgcHJpdmF0ZSByZWFkb25seSBNSU5JX0RJU1BMQVlfTEVOR1RIOiBudW1iZXIgPSAyO1xuICBwcml2YXRlIHJlYWRvbmx5IERJU1BMQVlfTEVOR1RIOiBudW1iZXIgPSA1O1xuICAvLyBXaWRnZXQncyB3aWR0aCB0aGUgZGV0ZXJtaW5lcyB0aGUgcGFnaW5hdGlvbiB2aWV3IHR5cGUgWyBzbWFsbCwgeHNdIGFzIGRlZmluZWQgYnkgcHJvZHVjdC5cbiAgcHJpdmF0ZSByZWFkb25seSBYU19ESVNQTEFZX1NJWkU6IG51bWJlciA9IDE2MDtcbiAgcHJpdmF0ZSByZWFkb25seSBTTUFMTF9ESVNQTEFZX1NJWkU6IG51bWJlciA9IDM5MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JpZFF1ZXJ5OiBHcmlkUXVlcnksXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sbGVyOiBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGVcbiAgKSB7fVxuXG4gIGdldCBwcmV2UGFnZURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9PT0gMTtcbiAgfVxuXG4gIGdldCBuZXh0UGFnZURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLmZpbHRlckNoYW5nZWQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9QYWdlKDApO1xuICAgICAgICB0aGlzLmluaXRQYWdpbmF0aW9uKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd0dyb3VwQ29sdW1ucyA9IHRoaXMuZ3JpZFF1ZXJ5LmFwaS5jb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuXG4gICAgICAgICAgdGhpcy5ncmlkQXBpID0gdGhpcy5ncmlkUXVlcnkuYXBpLmdyaWQ7XG4gICAgICAgICAgdGhpcy5zaG93Qm90dG9tQ29udHJvbHMgPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpLnNob3dCb3R0b21Db250cm9scztcbiAgICAgICAgICB0aGlzLmhhc1Jvd0dyb3VwQ29sdW1ucyA9IHJvd0dyb3VwQ29sdW1ucyAmJiByb3dHcm91cENvbHVtbnMubGVuZ3RoID4gMDtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1NlcnZlclNpZGVQYWdpbmF0aW9uID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlO1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gPyB0aGlzLmdyaWRRdWVyeS5zZXJ2ZXJEYXRhTG9hZGVkJCA6IHRoaXMuZ3JpZFF1ZXJ5LnJvd0RhdGFDaGFuZ2VkJDtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSgxMDApLFxuICAgICAgICB0YXBPbmNlKCgpID0+IHRoaXMuaW5pdFBhZ2luYXRpb24oKSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IHBhZ2luYXRpb25QYWdlID0gMSB9OiBEYXRvR3JpZERhdGFDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgLyoqICBBZyBncmlkIGluZGV4IGlzIGZyb20gMCwgYnV0IHRoZSBpbmRleCBmaXJlZCBmcm9tIHRoZSBldmVudCBzdGFydCBmcm9tIDEqL1xuICAgICAgICB0aGlzLmluaXRQYWdpbmF0aW9uKHBhZ2luYXRpb25QYWdlIC0gMSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNhbGN1bGF0ZSB0aGUgcm93IGNvdW50IGFuZCBwYWdlIGxlbmd0aHNcbiAgICovXG4gIGNhbGN1bGF0ZVJvd3NDb3VudCh0b3RhbFJvd3M6IG51bWJlcikge1xuICAgIHRoaXMudG90YWxQYWdlcyA9IHRvdGFsUm93cyA/IE1hdGguY2VpbCh0b3RhbFJvd3MgLyB0aGlzLnJvd3NQZXJQYWdlKSA6IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0VG90YWxQYWdlcygpO1xuICAgIHRoaXMucm93Q291bnQgPSB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFJvd0NvdW50KCk7XG4gICAgdGhpcy5zZXRSb3dzRGlzcGxheVJhbmdlKHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpbml0UGFnaW5hdGlvbihwYWdlTnVtYmVyID0gMCkge1xuICAgIGNvbnN0IHsgdG90YWxSb3dzLCBlbmFibGVkIH0gPSB0aGlzLmdyaWRRdWVyeS5zZXJ2ZXJTaWRlQ29uZmlnO1xuICAgIGlmIChlbmFibGVkICYmIGlzTmlsKHRvdGFsUm93cykpIHJldHVybjtcbiAgICAvKiogcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBwYWdlcyBzdGFydGluZyBmcm9tIDEgKi9cbiAgICB0aGlzLnJvd3NQZXJQYWdlID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlUm93c0NvdW50KHRvdGFsUm93cyk7XG4gICAgLyoqIHNldCB0aGUgaW5pdCB2YWx1ZSBvZiB0aGUgcGFnaW5hdGlvbiB2aWV3IHRvIG5vcm1hbCBzaXplICovXG4gICAgdGhpcy5wYWdlc0luVmlldyA9IHRoaXMuRElTUExBWV9MRU5HVEg7XG4gICAgLyoqIGN1cnJlbnQgcGFnZSBpbmRleCBzdGFydHMgZnJvbSAwICovXG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UocGFnZU51bWJlcik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBudW1iZXIgb2YgcGFnZSBudW1iZXJzIHNob3dpbmcgYXQgdGhlIHNhbWUgdGltZSBpbiB0aGUgbmF2aWdhdGlvblxuICAgKiBwYW5lbCAmIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBvbiBlYWNoIHNpZGUgb2YgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdOdW1iZXJzTGVuZ3RoIC0gVGhlIG5ldyBsZW5ndGggb2YgdGhlIGRpc3BsYXlpbmcgbnVtYmVyc1xuICAgKi9cbiAgc2V0IHBhZ2VzSW5WaWV3KG5ld051bWJlcnNMZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VzSW5WaWV3ID0gbmV3TnVtYmVyc0xlbmd0aDtcbiAgICB0aGlzLnBhZ2VzT25TaWRlcyA9IE1hdGguZmxvb3IodGhpcy5fcGFnZXNJblZpZXcgLyAyKTtcbiAgICB0aGlzLnBhZ2VzRml0VmlldyA9IHRoaXMuX3BhZ2VzSW5WaWV3ICsgMSA+PSB0aGlzLnRvdGFsUGFnZXM7XG4gICAgLy8gaW52YWxpZGF0ZSBkaXNwbGF5aW5nIHBhZ2VzIHVwb24gcmVzaXplXG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSBbXTtcbiAgfVxuXG4gIC8qKiBUT0RPIFRoaXMgaXMgbm90IGxpc3RlbmluZyB0byBzaXplIGNoYW5nZXMgKi9cbiAgY2FsY3VsYXRlTmF2aWdhdGlvblNpemUoKSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHRoaXMubmF2aWdhdGlvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucyA9IGVsZW1lbnRXaWR0aCA8IHRoaXMuWFNfRElTUExBWV9TSVpFO1xuICAgICAgaWYgKGVsZW1lbnRXaWR0aCA8IHRoaXMuU01BTExfRElTUExBWV9TSVpFKSB7XG4gICAgICAgIGlmICh0aGlzLl9wYWdlc0luVmlldyAhPT0gdGhpcy5NSU5JX0RJU1BMQVlfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5zbWFsbFZlcnNpb24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMucGFnZXNJblZpZXcgPSB0aGlzLk1JTklfRElTUExBWV9MRU5HVEg7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9wYWdlc0luVmlldyAhPT0gdGhpcy5ESVNQTEFZX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuc21hbGxWZXJzaW9uID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wYWdlc0luVmlldyA9IHRoaXMuRElTUExBWV9MRU5HVEg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIGEgZ2l2ZW4gcGFnZS5cbiAgICogdXBkYXRlcyB0aGUgZGlzcGxheWluZyBwYWdlIG51bWJlcnMgYW5kIHRoZSBjdXJyZW50IG51bWJlci5cbiAgICogQHBhcmFtIHBhZ2VOdW1iZXIgLSBUaGUgcGFnZSBudW1iZXIgdG8gbmF2aWdhdGUgdG9cbiAgICovXG4gIG5hdmlnYXRlUGFnZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZU51bWJlciA+PSAwICYmIHBhZ2VOdW1iZXIgPD0gdGhpcy50b3RhbFBhZ2VzIC0gMSkge1xuICAgICAgdGhpcy5zaG91bGRTaG93TG9hZGVyKHBhZ2VOdW1iZXIpICYmIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UocGFnZU51bWJlcik7XG4gICAgICAvLyBBZGQgMSBiZWNhdXNlIGFnLWdyaWQgQVBJIHdvcmtzIHdpdGggZmlyc3QgaW5kZXggMFxuICAgICAgY29uc3QgZGlzcGxheU51bWJlciA9IHBhZ2VOdW1iZXIgKyAxO1xuICAgICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPSBkaXNwbGF5TnVtYmVyO1xuXG4gICAgICBpZiAodGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMubGVuZ3RoID09PSAwIHx8ICF0aGlzLnBhZ2VzRml0Vmlldykge1xuICAgICAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IHRoaXMuZ2V0UGFnZXMoZGlzcGxheU51bWJlcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCB0aGUgZGlzcGxheWluZyByb3dzIHJhbmdlXG4gICAgICB0aGlzLnNldFJvd3NEaXNwbGF5UmFuZ2UoZGlzcGxheU51bWJlcik7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVGaXJzdFBhZ2UoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UoMCk7XG4gIH1cblxuICBuYXZpZ2F0ZU5leHRQYWdlKCkge1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlKTtcbiAgfVxuXG4gIG5hdmlnYXRlUHJldlBhZ2UoKSB7XG4gICAgLyoqIGFnLWdyaWQgQVBJIHdvcmtzIHdpdGggZmlyc3QgaW5kZXggMCBzbyB3ZSBuZWVkIHRvIHJlZHVjZSAyIGluc3RlYWQgb2Ygb25lICovXG4gICAgY29uc3QgcHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSAtIDI7XG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UocHJldmlvdXNQYWdlSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZXMgdGhlIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIHRvIHNob3cgdGhlIG5leHQgbnVtYmVycyBzZXRcbiAgICovXG4gIHNob3dOZXh0QmF0Y2goKSB7XG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXNbMF0gKyB0aGlzLl9wYWdlc0luVmlldyArIHRoaXMucGFnZXNPblNpZGVzO1xuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gdGhpcy5nZXRQYWdlcyhhbmNob3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZXMgdGhlIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIHRvIHNob3cgdGhlIHByZXZpb3VzIG51bWJlcnMgc2V0XG4gICAqL1xuICBzaG93UHJldmlvdXNCYXRjaCgpIHtcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlc1swXSAtIHRoaXMuX3BhZ2VzSW5WaWV3ICsgdGhpcy5wYWdlc09uU2lkZXM7XG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSB0aGlzLmdldFBhZ2VzKGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRyYWNrQnkgZnVuY3Rpb24gZm9yIHRoZSBuZ0ZvclxuICAgKiBAcGFyYW0gaW5kZXggLSBjdXJyZW50IGl0ZW0gaW5kZXhcbiAgICogQHBhcmFtIHBhZ2UgLSB0aGUgY3VycmVudCBpdGVtJ3MgcGFnZSBudW1iZXJcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdHJhY2tCeVBhZ2UoaW5kZXg6IG51bWJlciwgcGFnZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICB0b2dnbGVHcm91cHNTdGF0ZSgpIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPyB0aGlzLmdyaWRBcGkuY29sbGFwc2VBbGwoKSA6IHRoaXMuZ3JpZEFwaS5leHBhbmRBbGwoKTtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICB9XG5cbiAgYXV0b0ZpdEdyaWQodHlwZTogJ2NvbnRhaW5lcicgfCAnY29udGVudCcpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmZpdEdyaWQodHlwZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJvd3MgZGlzcGxheSBzdHJpbmdcbiAgICogQHBhcmFtIGRpc3BsYXlOdW1iZXIgLSBUaGUgY3VycmVudCBwYWdlIG51bWJlciAoc3RhcnRpbmcgaW5kZXggMSlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0Um93c0Rpc3BsYXlSYW5nZShkaXNwbGF5TnVtYmVyKTogdm9pZCB7XG4gICAgLyoqIERlY3JlYXNlIGJ5IDEgYmVjYXVzZSBhZy1ncmlkIEFQSSB3b3JrcyB3aXRoIGZpcnN0IGluZGV4IDAgKi9cbiAgICBjb25zdCBwYWdlTnVtYmVyID0gZGlzcGxheU51bWJlciAtIDE7XG4gICAgY29uc3QgZmlyc3RSb3dJbmRleCA9IDEgKyBwYWdlTnVtYmVyICogdGhpcy5yb3dzUGVyUGFnZTtcbiAgICBjb25zdCBsYXN0Um93ID0gKHBhZ2VOdW1iZXIgKyAxKSAqIHRoaXMucm93c1BlclBhZ2U7XG4gICAgY29uc3QgbGFzdFJvd0luZGV4ID0gdGhpcy5yb3dDb3VudCA+IGxhc3RSb3cgPyBsYXN0Um93IDogdGhpcy5yb3dDb3VudDtcbiAgICB0aGlzLnJvd3NSYW5nZSA9XG4gICAgICB0aGlzLnJvd0NvdW50ID4gMFxuICAgICAgICA/IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5pdGVtc1JhbmdlJywge1xuICAgICAgICAgICAgcmFuZ2U6IGAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGZpcnN0Um93SW5kZXgpfSAtICR7dGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0obGFzdFJvd0luZGV4KX1gLFxuICAgICAgICAgICAgbnVtYmVyOiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh0aGlzLnJvd0NvdW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIDogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLm51bWJlck9mSXRlbXMnLCB7IG51bWJlcjogMCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgbnVtYmVyIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBkaXNwbGF5aW5nIG51bWJlcnMuXG4gICAqIEBwYXJhbSBhbmNob3IgLSBUaGUgbnVtYmVyIHRvIHVzZSBhcyBhbiBhbmNob3IgZm9yIHRoZSBjYWxjdWxhdGlvbnMuXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAtIEFuIGFycmF5IG9mIHRoZSBuZXcgbnVtYmVycyB0byBkaXNwbGF5XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldFBhZ2VzKGFuY2hvcjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHBhZ2VzVG9EaXNwbGF5ID0gW107XG4gICAgLy8gaW5kaWNhdGVzIHJhdGhlciB0aGUgdGFibGUgaGFzIG1vcmUgcGFnZXMgdGhhbiB0aGUgZGlzcGxheSBsZW5ndGgsIHdlIGFkZCAxIGJlY2F1c2Ugb2ZcbiAgICAvLyBhIGxvZ2ljIHRoYXQgc2F5cyB0aGF0IGlmIHlvdXIgY3VycmVudCB2aWV3IGlzIDEgbnVtYmVyIGF3YXkgZnJvbSB0aGUgbGFzdCBwYWdlXG4gICAgLy8gZGlzcGxheSBoaW0gYXMgd2VsbC5cbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93TGFzdFBhZ2UgPSAhdGhpcy5wYWdlc0ZpdFZpZXcgJiYgYW5jaG9yICsgdGhpcy5wYWdlc09uU2lkZXMgPCB0aGlzLnRvdGFsUGFnZXM7XG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0ZpcnN0RWxsaXBzaXMgPSAhdGhpcy5wYWdlc0ZpdFZpZXcgJiYgYW5jaG9yIC0gdGhpcy5wYWdlc09uU2lkZXMgPiAxO1xuXG4gICAgLy8gc2V0IHRoZSBmaXJzdCBudW1iZXIgdG8gYmUgZGlzcGxheWVkXG4gICAgY29uc3QgZmlyc3ROdW1iZXIgPSB0aGlzLmdldEZpcnN0UGFnZU51bWJlcihhbmNob3IpO1xuICAgIGNvbnN0IGxvb3BMZW5ndGggPSB0aGlzLnBhZ2VzRml0VmlldyA/IHRoaXMudG90YWxQYWdlcyA6IHRoaXMuX3BhZ2VzSW5WaWV3O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcExlbmd0aDsgaSsrKSB7XG4gICAgICBwYWdlc1RvRGlzcGxheS5wdXNoKGZpcnN0TnVtYmVyICsgaSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBsYXN0IGRpc3BsYXllZCBudW1iZXIgaXMgMSBudW1iZXIgYmVmb3JlIHRoZSBsYXN0IHBhZ2UgZGlzcGxheSBoaW0gYXMgd2VsbFxuICAgIGlmICghdGhpcy5zbWFsbFZlcnNpb24gJiYgcGFnZXNUb0Rpc3BsYXlbbG9vcExlbmd0aCAtIDFdICsgMSA9PT0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICBwYWdlc1RvRGlzcGxheS5wdXNoKHRoaXMudG90YWxQYWdlcyk7XG4gICAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93TGFzdFBhZ2UgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhZ2VzVG9EaXNwbGF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpcnN0IG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHBhZ2luYXRpb24gbmF2aWdhdGlvbiB2aWV3XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbmNob3IgLSBUaGUgYW5jaG9yIGZvciB0aGUgY2FsY3VsYXRpb25zXG4gICAqIEByZXR1cm4ge251bWJlcn0gLSBUaGUgZmlyc3QgbnVtYmVyIHRvIGJlIGRpc3BsYXllZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaXJzdFBhZ2VOdW1iZXIoYW5jaG9yOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBmaXJzdE51bWJlciA9IGFuY2hvciAtIHRoaXMucGFnZXNPblNpZGVzO1xuICAgIC8vIElmIGluIHNtYWxsIHZlcnNpb24gc2hvdyBvbmx5IG5leHQgcGFnZSBzbyBzZXQgZmlyc3QgcGFnZSB0byBhbmNob3JcbiAgICBpZiAodGhpcy5zbWFsbFZlcnNpb24gJiYgYW5jaG9yID4gMSkge1xuICAgICAgaWYgKGFuY2hvciAhPT0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgIGZpcnN0TnVtYmVyID0gYW5jaG9yO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dGaXJzdEVsbGlwc2lzKSB7XG4gICAgICBmaXJzdE51bWJlciA9IDE7XG4gICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0xhc3RQYWdlKSB7XG4gICAgICBmaXJzdE51bWJlciA9IHRoaXMudG90YWxQYWdlcyAtICh0aGlzLl9wYWdlc0luVmlldyAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gZmlyc3ROdW1iZXI7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFNob3dMb2FkZXIocGFnZU51bWJlcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZXJ2ZXJTaWRlUGFnaW5hdGlvbiAmJiBpc05pbCh0aGlzLmdyaWRBcGkuZ2V0Q2FjaGVCbG9ja1N0YXRlKClbcGFnZU51bWJlcl0pO1xuICB9XG59XG4iXX0=
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTN0I7SUF1REUsdUNBQ1UsR0FBc0IsRUFDdEIsU0FBK0IsRUFDL0IsU0FBb0IsRUFDcEIsV0FBd0IsRUFDeEIsVUFBdUMsRUFDdkMsV0FBd0I7UUFMeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsY0FBUyxHQUFULFNBQVMs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QStDO1lBRS9DLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQzs7U0FDekIsQ0FBQzt5Q0F5RGUsaUJBQWlCO1lBQ1gsb0JBQW9CO1lBQ3BCLFNBQVM7WUFDUCxXQUFXO1lBQ1osMkJBQTJCO1lBQzFCLFdBQVc7T0E3RHZCLDZCQUE2QixDQXVUekM7SUFBRCxvQ0FBQztDQUFBLEFBdlRELElBdVRDO1NBdlRZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEFwaSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IHRhcE9uY2UgfSBmcm9tICcuLi8uLi9yeC90YXAnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXBhZ2luYXRpb24tdjInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEZWNpbWFsUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRQYWdpbmF0aW9uVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhpcyBzZXR0ZXIgaXMgdXNlZCB0byBhc3NpZ24gdGhlIG5hdmlnYXRpb24gZWxlbWVudCByZWYgYW5kIHRvIHNldFxuICAgKiB0aGUgcGFnaW5hdGlvbiBzaXplIHdoZW4gdGhlIGNvbXBvbmVudCBzdGFydHNcbiAgICogQHBhcmFtIHtFbGVtZW50UmVmfSBjb250ZW50XG4gICAqL1xuICBAVmlld0NoaWxkKCduYXZpZ2F0aW9uJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2V0IGNvbnRlbnQoY29udGVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMubmF2aWdhdGlvbkVsZW1lbnQgPSBjb250ZW50O1xuICAgIGlmIChjb250ZW50ICYmIHRoaXMuc21hbGxWZXJzaW9uID09PSBudWxsKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU5hdmlnYXRpb25TaXplKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlXG4gIHJvd0NvdW50OiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIC8vIHdoZW4gdGhlIHdpZGdldCdzIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBYU19ESVNQTEFZX1NJWkUgZGlzYWJsZSBnbyB0byBmaXJzdC9sYXN0IGJ1dHRvbnNcbiAgZGlzYWJsZUJ1dHRvbnM6IGJvb2xlYW4gPSBudWxsO1xuICAvLyB3aGVuIHRoZSB3aWRnZXQncyB3aWR0aCBpcyBzbWFsbGVyIHRoYW4gU01BTExfRElTUExBWV9TSVpFIGNoYW5nZSB0byBzbWFsbCBwYWdpbmF0aW9uIHZpZXdcbiAgc21hbGxWZXJzaW9uOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIC8vIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgdGFibGVcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICAvLyBUaGUgZGlzcGxheSByb3dzIHJhbmdlXG4gIHJvd3NSYW5nZTogc3RyaW5nO1xuICAvLyBtYW5hZ2luZyBvYmplY3QgZm9yIHRoZSBuYXZpZ2F0aW9uXG4gIHBhZ2VOdW1iZXJzRGlzcGxheSA9IHtcbiAgICBjdXJyZW50UGFnZTogMSxcbiAgICBwYWdlczogW10sXG4gICAgc2hvd0ZpcnN0RWxsaXBzaXM6IGZhbHNlLFxuICAgIHNob3dMYXN0UGFnZTogZmFsc2VcbiAgfTtcblxuICAvLyBTaG93IGZpdCBjZWxsIGNvbnRlbnQgYW5kIGNvbGxhcHNlL2V4cGFuZCByb3cgZ3JvdXBzIGNvbnRyb2xzXG4gIHNob3dCb3R0b21Db250cm9scyA9IGZhbHNlO1xuICBpc0V4cGFuZGVkID0gdHJ1ZTtcbiAgaGFzUm93R3JvdXBDb2x1bW5zID0gZmFsc2U7XG5cbiAgLy8gaG93IG1hbnkgbnVtYmVycyBhcmUgc2hvd2luZyBvbiB0aGUgc2FtZSB0aW1lIGJlc2lkZXMgdGhlIGxhc3QgcGFnZSBudW1iZXJcbiAgcHJpdmF0ZSBfcGFnZXNJblZpZXc6IG51bWJlcjtcbiAgLy8gVGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgb24gZWFjaCBzaWRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlLlxuICBwcml2YXRlIHBhZ2VzT25TaWRlczogbnVtYmVyO1xuICAvLyBpZiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0YWJsZSBmaXRzIHRoZSBudW1iZXIgb2YgZGlzcGxheWluZyBwYWdlc1xuICBwcml2YXRlIHBhZ2VzRml0VmlldzogYm9vbGVhbjtcbiAgLy8gaG93IG1hbnkgbnVtYmVycyB0byBzaG93IG9uIGVhY2ggc2lkZSBiZXNpZGVzIHRoZSBzZWxlY3RlZCBudW1iZXJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBpc1NlcnZlclNpZGVQYWdpbmF0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgZ3JpZEFwaTogR3JpZEFwaTtcbiAgLy8gVGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWwgZm9yIGVhY2ggdmlldyBhcyBkZWZpbmVkIGJ5IHByb2R1Y3QuXG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOSV9ESVNQTEFZX0xFTkdUSDogbnVtYmVyID0gMjtcbiAgcHJpdmF0ZSByZWFkb25seSBESVNQTEFZX0xFTkdUSDogbnVtYmVyID0gNTtcbiAgLy8gV2lkZ2V0J3Mgd2lkdGggdGhlIGRldGVybWluZXMgdGhlIHBhZ2luYXRpb24gdmlldyB0eXBlIFsgc21hbGwsIHhzXSBhcyBkZWZpbmVkIGJ5IHByb2R1Y3QuXG4gIHByaXZhdGUgcmVhZG9ubHkgWFNfRElTUExBWV9TSVpFOiBudW1iZXIgPSAxNjA7XG4gIHByaXZhdGUgcmVhZG9ubHkgU01BTExfRElTUExBWV9TSVpFOiBudW1iZXIgPSAzOTA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udHJvbGxlcjogRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXG4gICkge31cblxuICBnZXQgcHJldlBhZ2VEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPT09IDE7XG4gIH1cblxuICBnZXQgbmV4dFBhZ2VEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPT09IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5maWx0ZXJDaGFuZ2VkLFxuICAgICAgICAgIHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYucm93R3JvdXBPcGVuZWQsXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5leHBhbmRPckNvbGxhcHNlQWxsXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UoMCk7XG4gICAgICAgIHRoaXMuaW5pdFBhZ2luYXRpb24oKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93R3JvdXBDb2x1bW5zID0gdGhpcy5ncmlkUXVlcnkuYXBpLmNvbHVtbnMuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG5cbiAgICAgICAgICB0aGlzLmdyaWRBcGkgPSB0aGlzLmdyaWRRdWVyeS5hcGkuZ3JpZDtcbiAgICAgICAgICB0aGlzLnNob3dCb3R0b21Db250cm9scyA9IHRoaXMuZ3JpZFF1ZXJ5LmdldEdyaWRPcHRpb25zKCkuc2hvd0JvdHRvbUNvbnRyb2xzO1xuICAgICAgICAgIHRoaXMuaGFzUm93R3JvdXBDb2x1bW5zID0gcm93R3JvdXBDb2x1bW5zICYmIHJvd0dyb3VwQ29sdW1ucy5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gPSB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNTZXJ2ZXJTaWRlUGFnaW5hdGlvbiA/IHRoaXMuZ3JpZFF1ZXJ5LnNlcnZlckRhdGFMb2FkZWQkIDogdGhpcy5ncmlkUXVlcnkucm93RGF0YUNoYW5nZWQkO1xuICAgICAgICB9KSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCksXG4gICAgICAgIHRhcE9uY2UoKCkgPT4gdGhpcy5pbml0UGFnaW5hdGlvbigpKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGFnaW5hdGlvblBhZ2UgPSAxIH06IERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAvKiogIEFnIGdyaWQgaW5kZXggaXMgZnJvbSAwLCBidXQgdGhlIGluZGV4IGZpcmVkIGZyb20gdGhlIGV2ZW50IHN0YXJ0IGZyb20gMSovXG4gICAgICAgIHRoaXMuaW5pdFBhZ2luYXRpb24ocGFnaW5hdGlvblBhZ2UgLSAxKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlIHRoZSByb3cgY291bnQgYW5kIHBhZ2UgbGVuZ3Roc1xuICAgKi9cbiAgY2FsY3VsYXRlUm93c0NvdW50KHRvdGFsUm93czogbnVtYmVyKSB7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdG90YWxSb3dzID8gTWF0aC5jZWlsKHRvdGFsUm93cyAvIHRoaXMucm93c1BlclBhZ2UpIDogdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRUb3RhbFBhZ2VzKCk7XG4gICAgdGhpcy5yb3dDb3VudCA9IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0Um93Q291bnQoKTtcbiAgICB0aGlzLnNldFJvd3NEaXNwbGF5UmFuZ2UodGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGluaXRQYWdpbmF0aW9uKHBhZ2VOdW1iZXIgPSAwKSB7XG4gICAgY29uc3QgeyB0b3RhbFJvd3MsIGVuYWJsZWQgfSA9IHRoaXMuZ3JpZFF1ZXJ5LnNlcnZlclNpZGVDb25maWc7XG4gICAgaWYgKGVuYWJsZWQgJiYgaXNOaWwodG90YWxSb3dzKSkgcmV0dXJuO1xuICAgIC8qKiByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHBhZ2VzIHN0YXJ0aW5nIGZyb20gMSAqL1xuICAgIHRoaXMucm93c1BlclBhZ2UgPSB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVSb3dzQ291bnQodG90YWxSb3dzKTtcbiAgICAvKiogc2V0IHRoZSBpbml0IHZhbHVlIG9mIHRoZSBwYWdpbmF0aW9uIHZpZXcgdG8gbm9ybWFsIHNpemUgKi9cbiAgICB0aGlzLnBhZ2VzSW5WaWV3ID0gdGhpcy5ESVNQTEFZX0xFTkdUSDtcbiAgICAvKiogY3VycmVudCBwYWdlIGluZGV4IHN0YXJ0cyBmcm9tIDAgKi9cbiAgICB0aGlzLm5hdmlnYXRlUGFnZShwYWdlTnVtYmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG51bWJlciBvZiBwYWdlIG51bWJlcnMgc2hvd2luZyBhdCB0aGUgc2FtZSB0aW1lIGluIHRoZSBuYXZpZ2F0aW9uXG4gICAqIHBhbmVsICYgdXBkYXRlIHRoZSBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIG9uIGVhY2ggc2lkZSBvZiB0aGUgc2VsZWN0ZWQgcGFnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG5ld051bWJlcnNMZW5ndGggLSBUaGUgbmV3IGxlbmd0aCBvZiB0aGUgZGlzcGxheWluZyBudW1iZXJzXG4gICAqL1xuICBzZXQgcGFnZXNJblZpZXcobmV3TnVtYmVyc0xlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZXNJblZpZXcgPSBuZXdOdW1iZXJzTGVuZ3RoO1xuICAgIHRoaXMucGFnZXNPblNpZGVzID0gTWF0aC5mbG9vcih0aGlzLl9wYWdlc0luVmlldyAvIDIpO1xuICAgIHRoaXMucGFnZXNGaXRWaWV3ID0gdGhpcy5fcGFnZXNJblZpZXcgKyAxID49IHRoaXMudG90YWxQYWdlcztcbiAgICAvLyBpbnZhbGlkYXRlIGRpc3BsYXlpbmcgcGFnZXMgdXBvbiByZXNpemVcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IFtdO1xuICB9XG5cbiAgLyoqIFRPRE8gVGhpcyBpcyBub3QgbGlzdGVuaW5nIHRvIHNpemUgY2hhbmdlcyAqL1xuICBjYWxjdWxhdGVOYXZpZ2F0aW9uU2l6ZSgpIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uRWxlbWVudCkge1xuICAgICAgY29uc3QgZWxlbWVudFdpZHRoID0gdGhpcy5uYXZpZ2F0aW9uRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zID0gZWxlbWVudFdpZHRoIDwgdGhpcy5YU19ESVNQTEFZX1NJWkU7XG4gICAgICBpZiAoZWxlbWVudFdpZHRoIDwgdGhpcy5TTUFMTF9ESVNQTEFZX1NJWkUpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhZ2VzSW5WaWV3ICE9PSB0aGlzLk1JTklfRElTUExBWV9MRU5HVEgpIHtcbiAgICAgICAgICB0aGlzLnNtYWxsVmVyc2lvbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wYWdlc0luVmlldyA9IHRoaXMuTUlOSV9ESVNQTEFZX0xFTkdUSDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhZ2VzSW5WaWV3ICE9PSB0aGlzLkRJU1BMQVlfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5zbWFsbFZlcnNpb24gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnBhZ2VzSW5WaWV3ID0gdGhpcy5ESVNQTEFZX0xFTkdUSDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBnaXZlbiBwYWdlLlxuICAgKiB1cGRhdGVzIHRoZSBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyBhbmQgdGhlIGN1cnJlbnQgbnVtYmVyLlxuICAgKiBAcGFyYW0gcGFnZU51bWJlciAtIFRoZSBwYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgbmF2aWdhdGVQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyID49IDAgJiYgcGFnZU51bWJlciA8PSB0aGlzLnRvdGFsUGFnZXMgLSAxKSB7XG4gICAgICB0aGlzLnNob3VsZFNob3dMb2FkZXIocGFnZU51bWJlcikgJiYgdGhpcy5ncmlkU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25Hb1RvUGFnZShwYWdlTnVtYmVyKTtcbiAgICAgIC8vIEFkZCAxIGJlY2F1c2UgYWctZ3JpZCBBUEkgd29ya3Mgd2l0aCBmaXJzdCBpbmRleCAwXG4gICAgICBjb25zdCBkaXNwbGF5TnVtYmVyID0gcGFnZU51bWJlciArIDE7XG4gICAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9IGRpc3BsYXlOdW1iZXI7XG5cbiAgICAgIGlmICh0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcy5sZW5ndGggPT09IDAgfHwgIXRoaXMucGFnZXNGaXRWaWV3KSB7XG4gICAgICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gdGhpcy5nZXRQYWdlcyhkaXNwbGF5TnVtYmVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHRoZSBkaXNwbGF5aW5nIHJvd3MgcmFuZ2VcbiAgICAgIHRoaXMuc2V0Um93c0Rpc3BsYXlSYW5nZShkaXNwbGF5TnVtYmVyKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZUZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLm5hdmlnYXRlUGFnZSgwKTtcbiAgfVxuXG4gIG5hdmlnYXRlTmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UodGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgbmF2aWdhdGVQcmV2UGFnZSgpIHtcbiAgICAvKiogYWctZ3JpZCBBUEkgd29ya3Mgd2l0aCBmaXJzdCBpbmRleCAwIHNvIHdlIG5lZWQgdG8gcmVkdWNlIDIgaW5zdGVhZCBvZiBvbmUgKi9cbiAgICBjb25zdCBwcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlIC0gMjtcbiAgICB0aGlzLm5hdmlnYXRlUGFnZShwcmV2aW91c1BhZ2VJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlcyB0aGUgZGlzcGxheWluZyBwYWdlIG51bWJlcnMgdG8gc2hvdyB0aGUgbmV4dCBudW1iZXJzIHNldFxuICAgKi9cbiAgc2hvd05leHRCYXRjaCgpIHtcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlc1swXSArIHRoaXMuX3BhZ2VzSW5WaWV3ICsgdGhpcy5wYWdlc09uU2lkZXM7XG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSB0aGlzLmdldFBhZ2VzKGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlcyB0aGUgZGlzcGxheWluZyBwYWdlIG51bWJlcnMgdG8gc2hvdyB0aGUgcHJldmlvdXMgbnVtYmVycyBzZXRcbiAgICovXG4gIHNob3dQcmV2aW91c0JhdGNoKCkge1xuICAgIGNvbnN0IGFuY2hvciA9IHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzWzBdIC0gdGhpcy5fcGFnZXNJblZpZXcgKyB0aGlzLnBhZ2VzT25TaWRlcztcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IHRoaXMuZ2V0UGFnZXMoYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhY2tCeSBmdW5jdGlvbiBmb3IgdGhlIG5nRm9yXG4gICAqIEBwYXJhbSBpbmRleCAtIGN1cnJlbnQgaXRlbSBpbmRleFxuICAgKiBAcGFyYW0gcGFnZSAtIHRoZSBjdXJyZW50IGl0ZW0ncyBwYWdlIG51bWJlclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0cmFja0J5UGFnZShpbmRleDogbnVtYmVyLCBwYWdlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gcGFnZTtcbiAgfVxuXG4gIHRvZ2dsZUdyb3Vwc1N0YXRlKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA/IHRoaXMuZ3JpZEFwaS5jb2xsYXBzZUFsbCgpIDogdGhpcy5ncmlkQXBpLmV4cGFuZEFsbCgpO1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBhdXRvRml0R3JpZCh0eXBlOiAnY29udGFpbmVyJyB8ICdjb250ZW50Jykge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuZml0R3JpZCh0eXBlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge31cblxuICAvKipcbiAgICogU2V0cyB0aGUgcm93cyBkaXNwbGF5IHN0cmluZ1xuICAgKiBAcGFyYW0gZGlzcGxheU51bWJlciAtIFRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIChzdGFydGluZyBpbmRleCAxKVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRSb3dzRGlzcGxheVJhbmdlKGRpc3BsYXlOdW1iZXIpOiB2b2lkIHtcbiAgICAvKiogRGVjcmVhc2UgYnkgMSBiZWNhdXNlIGFnLWdyaWQgQVBJIHdvcmtzIHdpdGggZmlyc3QgaW5kZXggMCAqL1xuICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBkaXNwbGF5TnVtYmVyIC0gMTtcbiAgICBjb25zdCBmaXJzdFJvd0luZGV4ID0gMSArIHBhZ2VOdW1iZXIgKiB0aGlzLnJvd3NQZXJQYWdlO1xuICAgIGNvbnN0IGxhc3RSb3cgPSAocGFnZU51bWJlciArIDEpICogdGhpcy5yb3dzUGVyUGFnZTtcbiAgICBjb25zdCBsYXN0Um93SW5kZXggPSB0aGlzLnJvd0NvdW50ID4gbGFzdFJvdyA/IGxhc3RSb3cgOiB0aGlzLnJvd0NvdW50O1xuICAgIHRoaXMucm93c1JhbmdlID1cbiAgICAgIHRoaXMucm93Q291bnQgPiAwXG4gICAgICAgID8gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLml0ZW1zUmFuZ2UnLCB7XG4gICAgICAgICAgICByYW5nZTogYCR7dGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZmlyc3RSb3dJbmRleCl9IC0gJHt0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShsYXN0Um93SW5kZXgpfWAsXG4gICAgICAgICAgICBudW1iZXI6IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHRoaXMucm93Q291bnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oJ2NvcmUubnVtYmVyT2ZJdGVtcycsIHsgbnVtYmVyOiAwIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBudW1iZXIgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIGRpc3BsYXlpbmcgbnVtYmVycy5cbiAgICogQHBhcmFtIGFuY2hvciAtIFRoZSBudW1iZXIgdG8gdXNlIGFzIGFuIGFuY2hvciBmb3IgdGhlIGNhbGN1bGF0aW9ucy5cbiAgICogQHJldHVybiB7bnVtYmVyW119IC0gQW4gYXJyYXkgb2YgdGhlIG5ldyBudW1iZXJzIHRvIGRpc3BsYXlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFnZXMoYW5jaG9yOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgcGFnZXNUb0Rpc3BsYXkgPSBbXTtcbiAgICAvLyBpbmRpY2F0ZXMgcmF0aGVyIHRoZSB0YWJsZSBoYXMgbW9yZSBwYWdlcyB0aGFuIHRoZSBkaXNwbGF5IGxlbmd0aCwgd2UgYWRkIDEgYmVjYXVzZSBvZlxuICAgIC8vIGEgbG9naWMgdGhhdCBzYXlzIHRoYXQgaWYgeW91ciBjdXJyZW50IHZpZXcgaXMgMSBudW1iZXIgYXdheSBmcm9tIHRoZSBsYXN0IHBhZ2VcbiAgICAvLyBkaXNwbGF5IGhpbSBhcyB3ZWxsLlxuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dMYXN0UGFnZSA9ICF0aGlzLnBhZ2VzRml0VmlldyAmJiBhbmNob3IgKyB0aGlzLnBhZ2VzT25TaWRlcyA8IHRoaXMudG90YWxQYWdlcztcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93Rmlyc3RFbGxpcHNpcyA9ICF0aGlzLnBhZ2VzRml0VmlldyAmJiBhbmNob3IgLSB0aGlzLnBhZ2VzT25TaWRlcyA+IDE7XG5cbiAgICAvLyBzZXQgdGhlIGZpcnN0IG51bWJlciB0byBiZSBkaXNwbGF5ZWRcbiAgICBjb25zdCBmaXJzdE51bWJlciA9IHRoaXMuZ2V0Rmlyc3RQYWdlTnVtYmVyKGFuY2hvcik7XG4gICAgY29uc3QgbG9vcExlbmd0aCA9IHRoaXMucGFnZXNGaXRWaWV3ID8gdGhpcy50b3RhbFBhZ2VzIDogdGhpcy5fcGFnZXNJblZpZXc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb29wTGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhZ2VzVG9EaXNwbGF5LnB1c2goZmlyc3ROdW1iZXIgKyBpKTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGxhc3QgZGlzcGxheWVkIG51bWJlciBpcyAxIG51bWJlciBiZWZvcmUgdGhlIGxhc3QgcGFnZSBkaXNwbGF5IGhpbSBhcyB3ZWxsXG4gICAgaWYgKCF0aGlzLnNtYWxsVmVyc2lvbiAmJiBwYWdlc1RvRGlzcGxheVtsb29wTGVuZ3RoIC0gMV0gKyAxID09PSB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgIHBhZ2VzVG9EaXNwbGF5LnB1c2godGhpcy50b3RhbFBhZ2VzKTtcbiAgICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dMYXN0UGFnZSA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gcGFnZXNUb0Rpc3BsYXk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlyc3QgbnVtYmVyIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcGFnaW5hdGlvbiBuYXZpZ2F0aW9uIHZpZXdcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFuY2hvciAtIFRoZSBhbmNob3IgZm9yIHRoZSBjYWxjdWxhdGlvbnNcbiAgICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBmaXJzdCBudW1iZXIgdG8gYmUgZGlzcGxheWVkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldEZpcnN0UGFnZU51bWJlcihhbmNob3I6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGZpcnN0TnVtYmVyID0gYW5jaG9yIC0gdGhpcy5wYWdlc09uU2lkZXM7XG4gICAgLy8gSWYgaW4gc21hbGwgdmVyc2lvbiBzaG93IG9ubHkgbmV4dCBwYWdlIHNvIHNldCBmaXJzdCBwYWdlIHRvIGFuY2hvclxuICAgIGlmICh0aGlzLnNtYWxsVmVyc2lvbiAmJiBhbmNob3IgPiAxKSB7XG4gICAgICBpZiAoYW5jaG9yICE9PSB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgZmlyc3ROdW1iZXIgPSBhbmNob3I7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0ZpcnN0RWxsaXBzaXMpIHtcbiAgICAgIGZpcnN0TnVtYmVyID0gMTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93TGFzdFBhZ2UpIHtcbiAgICAgIGZpcnN0TnVtYmVyID0gdGhpcy50b3RhbFBhZ2VzIC0gKHRoaXMuX3BhZ2VzSW5WaWV3IC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdE51bWJlcjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkU2hvd0xvYWRlcihwYWdlTnVtYmVyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1NlcnZlclNpZGVQYWdpbmF0aW9uICYmIGlzTmlsKHRoaXMuZ3JpZEFwaS5nZXRDYWNoZUJsb2NrU3RhdGUoKVtwYWdlTnVtYmVyXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export var DATO_GRID_STORAGE_API = new InjectionToken('
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export var DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_API');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUy9DLE1BQU0sQ0FBQyxJQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFpQix1QkFBdUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZFN0b3JhZ2VBUEkge1xuICBnZXQoZ3JpZE5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8UGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPj47XG4gIHNldChncmlkTmFtZTogc3RyaW5nLCBzdGF0ZTogUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBEQVRPX0dSSURfU1RPUkFHRV9BUEkgPSBuZXcgSW5qZWN0aW9uVG9rZW48R3JpZFN0b3JhZ2VBUEk+KCdEQVRPX0dSSURfU1RPUkFHRV9BUEknKTtcbiJdfQ==
|