@firestitch/filter 13.3.0 → 13.4.0
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/app/components/filter/filter.component.d.ts +4 -3
- package/app/components/saved-filter/index.d.ts +3 -0
- package/app/components/saved-filter/saved-filter-edit/index.d.ts +1 -0
- package/app/components/{saved-filter-edit → saved-filter/saved-filter-edit}/saved-filter-edit.component.d.ts +2 -2
- package/app/components/saved-filter/saved-filter-manage/index.d.ts +1 -0
- package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +16 -0
- package/app/components/saved-filter/saved-filters-menu/index.d.ts +1 -0
- package/app/components/{saved-filters-menu → saved-filter/saved-filters-menu}/saved-filters-menu.component.d.ts +7 -5
- package/app/fs-filter.module.d.ts +37 -35
- package/esm2020/app/components/filter/filter.component.mjs +7 -6
- package/esm2020/app/components/saved-filter/index.mjs +4 -0
- package/esm2020/app/components/saved-filter/saved-filter-edit/index.mjs +2 -0
- package/esm2020/app/components/{saved-filter-edit → saved-filter/saved-filter-edit}/saved-filter-edit.component.mjs +1 -1
- package/esm2020/app/components/saved-filter/saved-filter-manage/index.mjs +2 -0
- package/esm2020/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +40 -0
- package/esm2020/app/components/saved-filter/saved-filters-menu/index.mjs +2 -0
- package/esm2020/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +52 -0
- package/esm2020/app/fs-filter.module.mjs +10 -3
- package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +6 -6
- package/esm2020/public_api.mjs +2 -2
- package/fesm2015/firestitch-filter.mjs +60 -15
- package/fesm2015/firestitch-filter.mjs.map +1 -1
- package/fesm2020/firestitch-filter.mjs +58 -15
- package/fesm2020/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -1
- package/esm2020/app/components/saved-filters-menu/saved-filters-menu.component.mjs +0 -44
|
@@ -23,6 +23,7 @@ export declare class FilterComponent implements OnInit, OnDestroy {
|
|
|
23
23
|
private _filterItems;
|
|
24
24
|
private _actions;
|
|
25
25
|
private _savedFiltersController;
|
|
26
|
+
private _externalParamsController;
|
|
26
27
|
set setConfig(config: any);
|
|
27
28
|
set setFilter(config: any);
|
|
28
29
|
showSortBy: any;
|
|
@@ -47,7 +48,7 @@ export declare class FilterComponent implements OnInit, OnDestroy {
|
|
|
47
48
|
private _hasFilterChips$;
|
|
48
49
|
private _keyword$;
|
|
49
50
|
private _destroy$;
|
|
50
|
-
constructor(_defaultConfig: FsFilterConfig, _filterOverlay: FsFilterOverlayService, _zone: NgZone, _externalParams: ExternalParamsController, _filterItems: FsFilterItemsStore, _actions: ActionsController, _savedFiltersController: SavedFiltersController);
|
|
51
|
+
constructor(_defaultConfig: FsFilterConfig, _filterOverlay: FsFilterOverlayService, _zone: NgZone, _externalParams: ExternalParamsController, _filterItems: FsFilterItemsStore, _actions: ActionsController, _savedFiltersController: SavedFiltersController, _externalParamsController: ExternalParamsController);
|
|
51
52
|
get config(): FsFilterConfig;
|
|
52
53
|
get filterParams(): Record<string, unknown>;
|
|
53
54
|
get filterParamsQuery(): Record<string, unknown>;
|
|
@@ -62,7 +63,7 @@ export declare class FilterComponent implements OnInit, OnDestroy {
|
|
|
62
63
|
get actionsVisible$(): Observable<boolean>;
|
|
63
64
|
get actions$(): Observable<import("../../models/action.model").Action[]>;
|
|
64
65
|
get menuActions$(): Observable<import("../../models/action.model").Action[]>;
|
|
65
|
-
set activeSavedFilter(
|
|
66
|
+
set activeSavedFilter(savedFilter: IFilterSavedFilter);
|
|
66
67
|
get activeSavedFilter(): IFilterSavedFilter;
|
|
67
68
|
get savedFilters(): IFilterSavedFilter[];
|
|
68
69
|
ngOnInit(): void;
|
|
@@ -198,6 +199,6 @@ export declare class FilterComponent implements OnInit, OnDestroy {
|
|
|
198
199
|
private _initOverlay;
|
|
199
200
|
private _listenWhenFilterReady;
|
|
200
201
|
private _updateChipsVisibility;
|
|
201
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FilterComponent, [{ optional: true; }, null, null, null, null, null, null]>;
|
|
202
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterComponent, [{ optional: true; }, null, null, null, null, null, null, null]>;
|
|
202
203
|
static ɵcmp: i0.ɵɵComponentDeclaration<FilterComponent, "fs-filter", never, { "setConfig": "config"; "setFilter": "filter"; "showSortBy": "showSortBy"; "showFilterInput": "showFilterInput"; }, { "closed": "closed"; "opened": "opened"; "ready": "ready"; }, ["statusBar"], never>;
|
|
203
204
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './saved-filter-edit.component';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MatDialogRef } from '@angular/material/dialog';
|
|
2
|
-
import { IFilterExternalParams } from '
|
|
3
|
-
import { IFilterSavedFilter } from '
|
|
2
|
+
import { IFilterExternalParams } from '../../../interfaces/external-params.interface';
|
|
3
|
+
import { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class FsFilterSavedFilterEditComponent {
|
|
6
6
|
data: any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './saved-filter-manage.component';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
3
|
+
import { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class FsFilterSavedFilterManageComponent {
|
|
6
|
+
data: any;
|
|
7
|
+
private _cdRef;
|
|
8
|
+
savedFilters: IFilterSavedFilter[];
|
|
9
|
+
private _savedFiltersController;
|
|
10
|
+
private _filterRemoteOrder;
|
|
11
|
+
constructor(data: any, _cdRef: ChangeDetectorRef);
|
|
12
|
+
remove(savedFilter: IFilterSavedFilter): void;
|
|
13
|
+
drop(event: CdkDragDrop<any[]>): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FsFilterSavedFilterManageComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsFilterSavedFilterManageComponent, "ng-component", never, {}, {}, never, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './saved-filters-menu.component';
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
2
3
|
import { Observable } from 'rxjs';
|
|
3
|
-
import { IFilterSavedFilter } from '
|
|
4
|
-
import { ExternalParamsController } from '
|
|
5
|
-
import { SavedFiltersController } from '
|
|
6
|
-
import { FsFilterItemsStore } from '
|
|
4
|
+
import { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';
|
|
5
|
+
import { ExternalParamsController } from '../../../services/external-params-controller.service';
|
|
6
|
+
import { SavedFiltersController } from '../../../services/external-params/saved-filters-controller.service';
|
|
7
|
+
import { FsFilterItemsStore } from '../../../services/items-store.service';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export declare class FsSavedFiltersMenuComponent {
|
|
9
10
|
private _itemsStore;
|
|
10
11
|
private _externalParams;
|
|
11
12
|
private _savedFilters;
|
|
13
|
+
private _dialog;
|
|
12
14
|
clear: EventEmitter<void>;
|
|
13
|
-
constructor(_itemsStore: FsFilterItemsStore, _externalParams: ExternalParamsController, _savedFilters: SavedFiltersController);
|
|
15
|
+
constructor(_itemsStore: FsFilterItemsStore, _externalParams: ExternalParamsController, _savedFilters: SavedFiltersController, _dialog: MatDialog);
|
|
14
16
|
get filters$(): Observable<IFilterSavedFilter[]>;
|
|
15
17
|
get activeFilter$(): Observable<IFilterSavedFilter>;
|
|
16
18
|
selectFilter(savedFilter: IFilterSavedFilter): void;
|
|
@@ -23,46 +23,48 @@ import * as i19 from "./components/filters-item/select/backdrop/backdrop.compone
|
|
|
23
23
|
import * as i20 from "./components/filter-chip/filter-chip.component";
|
|
24
24
|
import * as i21 from "./components/filter-chip-content/filter-chip-content.component";
|
|
25
25
|
import * as i22 from "./components/filter-drawer-actions/filter-drawer-actions.component";
|
|
26
|
-
import * as i23 from "./components/saved-filter-edit/saved-filter-edit.component";
|
|
27
|
-
import * as i24 from "./components/saved-filters-menu/saved-filters-menu.component";
|
|
26
|
+
import * as i23 from "./components/saved-filter/saved-filter-edit/saved-filter-edit.component";
|
|
27
|
+
import * as i24 from "./components/saved-filter/saved-filters-menu/saved-filters-menu.component";
|
|
28
28
|
import * as i25 from "./components/actions/actions.component";
|
|
29
29
|
import * as i26 from "./components/action-button/action-button.component";
|
|
30
30
|
import * as i27 from "./components/action-kebab-actions/action-kebab-actions.component";
|
|
31
|
-
import * as i28 from "./
|
|
32
|
-
import * as i29 from "./directives/
|
|
33
|
-
import * as i30 from "./
|
|
34
|
-
import * as i31 from "
|
|
35
|
-
import * as i32 from "@angular/
|
|
36
|
-
import * as i33 from "@angular/
|
|
37
|
-
import * as i34 from "@angular/
|
|
38
|
-
import * as i35 from "@angular/
|
|
39
|
-
import * as i36 from "@angular/material/
|
|
40
|
-
import * as i37 from "@angular/material/
|
|
41
|
-
import * as i38 from "@angular/material/
|
|
42
|
-
import * as i39 from "@angular/material/
|
|
43
|
-
import * as i40 from "@angular/material/
|
|
44
|
-
import * as i41 from "@angular/material/
|
|
45
|
-
import * as i42 from "@angular/material/
|
|
46
|
-
import * as i43 from "@angular/material/
|
|
47
|
-
import * as i44 from "@
|
|
48
|
-
import * as i45 from "@
|
|
49
|
-
import * as i46 from "@firestitch/
|
|
50
|
-
import * as i47 from "@firestitch/
|
|
51
|
-
import * as i48 from "@firestitch/
|
|
52
|
-
import * as i49 from "@firestitch/
|
|
53
|
-
import * as i50 from "@firestitch/
|
|
54
|
-
import * as i51 from "@firestitch/
|
|
55
|
-
import * as i52 from "@firestitch/
|
|
56
|
-
import * as i53 from "@firestitch/
|
|
57
|
-
import * as i54 from "@firestitch/
|
|
58
|
-
import * as i55 from "@firestitch/
|
|
59
|
-
import * as i56 from "@firestitch/
|
|
60
|
-
import * as i57 from "@firestitch/
|
|
61
|
-
import * as i58 from "@firestitch/
|
|
62
|
-
import * as i59 from "@
|
|
31
|
+
import * as i28 from "./components/saved-filter/saved-filter-manage/saved-filter-manage.component";
|
|
32
|
+
import * as i29 from "./directives/status-bar/status-bar.directive";
|
|
33
|
+
import * as i30 from "./directives/focus-to-item/focus-to-item.directive";
|
|
34
|
+
import * as i31 from "./pipes/remove-isolate-value.pipe";
|
|
35
|
+
import * as i32 from "@angular/common";
|
|
36
|
+
import * as i33 from "@angular/router";
|
|
37
|
+
import * as i34 from "@angular/forms";
|
|
38
|
+
import * as i35 from "@angular/cdk/drag-drop";
|
|
39
|
+
import * as i36 from "@angular/material/icon";
|
|
40
|
+
import * as i37 from "@angular/material/input";
|
|
41
|
+
import * as i38 from "@angular/material/select";
|
|
42
|
+
import * as i39 from "@angular/material/chips";
|
|
43
|
+
import * as i40 from "@angular/material/checkbox";
|
|
44
|
+
import * as i41 from "@angular/material/autocomplete";
|
|
45
|
+
import * as i42 from "@angular/material/button";
|
|
46
|
+
import * as i43 from "@angular/material/dialog";
|
|
47
|
+
import * as i44 from "@angular/material/tooltip";
|
|
48
|
+
import * as i45 from "@angular/material/slide-toggle";
|
|
49
|
+
import * as i46 from "@firestitch/chip";
|
|
50
|
+
import * as i47 from "@firestitch/common";
|
|
51
|
+
import * as i48 from "@firestitch/store";
|
|
52
|
+
import * as i49 from "@firestitch/datepicker";
|
|
53
|
+
import * as i50 from "@firestitch/label";
|
|
54
|
+
import * as i51 from "@firestitch/autocomplete";
|
|
55
|
+
import * as i52 from "@firestitch/autocomplete-chips";
|
|
56
|
+
import * as i53 from "@firestitch/scroll";
|
|
57
|
+
import * as i54 from "@firestitch/menu";
|
|
58
|
+
import * as i55 from "@firestitch/skeleton";
|
|
59
|
+
import * as i56 from "@firestitch/form";
|
|
60
|
+
import * as i57 from "@firestitch/file";
|
|
61
|
+
import * as i58 from "@firestitch/selectbutton";
|
|
62
|
+
import * as i59 from "@firestitch/clear";
|
|
63
|
+
import * as i60 from "@firestitch/popover";
|
|
64
|
+
import * as i61 from "@angular/cdk/portal";
|
|
63
65
|
export declare class FsFilterModule {
|
|
64
66
|
static forRoot(config?: FilterConfig): ModuleWithProviders<FsFilterModule>;
|
|
65
67
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsFilterModule, never>;
|
|
66
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FsFilterModule, [typeof i1.BaseItemComponent, typeof i2.FilterComponent, typeof i3.FilterItemComponent, typeof i4.FsFilterChipsComponent, typeof i5.SelectComponent, typeof i6.SelectGroupsComponent, typeof i7.SelectSimpleComponent, typeof i8.SelectMultipleComponent, typeof i9.ChipsComponent, typeof i10.TextComponent, typeof i11.WeekComponent, typeof i12.RangeComponent, typeof i13.AutocompleteComponent, typeof i14.AutocompletechipsComponent, typeof i15.DateComponent, typeof i16.DateRangeComponent, typeof i17.CheckboxComponent, typeof i18.FilterDrawerComponent, typeof i19.SelectBackdropComponent, typeof i20.FsFilterChipComponent, typeof i21.FsFilterChipContentComponent, typeof i22.FsFilterDrawerActionsComponent, typeof i23.FsFilterSavedFilterEditComponent, typeof i24.FsSavedFiltersMenuComponent, typeof i25.FsFilterActionsComponent, typeof i26.FsFilterActionButtonComponent, typeof i27.FsFilterActionKebabActionsComponent, typeof i28.
|
|
68
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FsFilterModule, [typeof i1.BaseItemComponent, typeof i2.FilterComponent, typeof i3.FilterItemComponent, typeof i4.FsFilterChipsComponent, typeof i5.SelectComponent, typeof i6.SelectGroupsComponent, typeof i7.SelectSimpleComponent, typeof i8.SelectMultipleComponent, typeof i9.ChipsComponent, typeof i10.TextComponent, typeof i11.WeekComponent, typeof i12.RangeComponent, typeof i13.AutocompleteComponent, typeof i14.AutocompletechipsComponent, typeof i15.DateComponent, typeof i16.DateRangeComponent, typeof i17.CheckboxComponent, typeof i18.FilterDrawerComponent, typeof i19.SelectBackdropComponent, typeof i20.FsFilterChipComponent, typeof i21.FsFilterChipContentComponent, typeof i22.FsFilterDrawerActionsComponent, typeof i23.FsFilterSavedFilterEditComponent, typeof i24.FsSavedFiltersMenuComponent, typeof i25.FsFilterActionsComponent, typeof i26.FsFilterActionButtonComponent, typeof i27.FsFilterActionKebabActionsComponent, typeof i28.FsFilterSavedFilterManageComponent, typeof i29.FilterStatusBarDirective, typeof i30.FocusToItemDirective, typeof i31.FsFilterIsolateValues], [typeof i32.CommonModule, typeof i33.RouterModule, typeof i34.FormsModule, typeof i34.ReactiveFormsModule, typeof i35.DragDropModule, typeof i36.MatIconModule, typeof i37.MatInputModule, typeof i38.MatSelectModule, typeof i39.MatChipsModule, typeof i40.MatCheckboxModule, typeof i41.MatAutocompleteModule, typeof i42.MatButtonModule, typeof i43.MatDialogModule, typeof i44.MatTooltipModule, typeof i45.MatSlideToggleModule, typeof i46.FsChipModule, typeof i47.FsCommonModule, typeof i48.FsStoreModule, typeof i49.FsDatePickerModule, typeof i50.FsLabelModule, typeof i51.FsAutocompleteModule, typeof i52.FsAutocompleteChipsModule, typeof i53.FsScrollModule, typeof i54.FsMenuModule, typeof i55.FsSkeletonModule, typeof i56.FsFormModule, typeof i57.FsFileModule, typeof i58.FsSelectButtonModule, typeof i59.FsClearModule, typeof i60.FsPopoverModule, typeof i61.PortalModule], [typeof i2.FilterComponent, typeof i29.FilterStatusBarDirective, typeof i24.FsSavedFiltersMenuComponent]>;
|
|
67
69
|
static ɵinj: i0.ɵɵInjectorDeclaration<FsFilterModule>;
|
|
68
70
|
}
|
|
@@ -33,7 +33,7 @@ import * as i15 from "@angular/forms";
|
|
|
33
33
|
import * as i16 from "@firestitch/form";
|
|
34
34
|
import * as i17 from "../../models/filter-config";
|
|
35
35
|
export class FilterComponent {
|
|
36
|
-
constructor(_defaultConfig, _filterOverlay, _zone, _externalParams, _filterItems, _actions, _savedFiltersController) {
|
|
36
|
+
constructor(_defaultConfig, _filterOverlay, _zone, _externalParams, _filterItems, _actions, _savedFiltersController, _externalParamsController) {
|
|
37
37
|
this._defaultConfig = _defaultConfig;
|
|
38
38
|
this._filterOverlay = _filterOverlay;
|
|
39
39
|
this._zone = _zone;
|
|
@@ -41,6 +41,7 @@ export class FilterComponent {
|
|
|
41
41
|
this._filterItems = _filterItems;
|
|
42
42
|
this._actions = _actions;
|
|
43
43
|
this._savedFiltersController = _savedFiltersController;
|
|
44
|
+
this._externalParamsController = _externalParamsController;
|
|
44
45
|
this.showSortBy = true;
|
|
45
46
|
this.showFilterInput = true;
|
|
46
47
|
this.closed = new EventEmitter();
|
|
@@ -124,8 +125,8 @@ export class FilterComponent {
|
|
|
124
125
|
get menuActions$() {
|
|
125
126
|
return this._actions.menuActions$;
|
|
126
127
|
}
|
|
127
|
-
set activeSavedFilter(
|
|
128
|
-
this.
|
|
128
|
+
set activeSavedFilter(savedFilter) {
|
|
129
|
+
this._externalParams.setActiveSavedFilter(savedFilter);
|
|
129
130
|
}
|
|
130
131
|
get activeSavedFilter() {
|
|
131
132
|
return this._savedFiltersController.activeFilter;
|
|
@@ -544,7 +545,7 @@ export class FilterComponent {
|
|
|
544
545
|
this._hasFilterChips$.next(hasFilterChips);
|
|
545
546
|
}
|
|
546
547
|
}
|
|
547
|
-
FilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FilterComponent, deps: [{ token: FS_FILTER_CONFIG, optional: true }, { token: i1.FsFilterOverlayService }, { token: i0.NgZone }, { token: i2.ExternalParamsController }, { token: i3.FsFilterItemsStore }, { token: i4.ActionsController }, { token: i5.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Component });
|
|
548
|
+
FilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FilterComponent, deps: [{ token: FS_FILTER_CONFIG, optional: true }, { token: i1.FsFilterOverlayService }, { token: i0.NgZone }, { token: i2.ExternalParamsController }, { token: i3.FsFilterItemsStore }, { token: i4.ActionsController }, { token: i5.SavedFiltersController }, { token: i2.ExternalParamsController }], target: i0.ɵɵFactoryTarget.Component });
|
|
548
549
|
FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FilterComponent, selector: "fs-filter", inputs: { setConfig: ["config", "setConfig"], setFilter: ["filter", "setFilter"], showSortBy: "showSortBy", showFilterInput: "showFilterInput" }, outputs: { closed: "closed", opened: "opened", ready: "ready" }, host: { properties: { "class.filters-open": "this.showFilterMenu", "class.window-desktop": "this.windowDesktop", "class.fs-filter": "this.fsFilterClass", "class.has-keyword": "this.hasKeyword" } }, providers: [
|
|
549
550
|
FsFilterOverlayService,
|
|
550
551
|
ExternalParamsController,
|
|
@@ -572,7 +573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
572
573
|
}, {
|
|
573
574
|
type: Inject,
|
|
574
575
|
args: [FS_FILTER_CONFIG]
|
|
575
|
-
}] }, { type: i1.FsFilterOverlayService }, { type: i0.NgZone }, { type: i2.ExternalParamsController }, { type: i3.FsFilterItemsStore }, { type: i4.ActionsController }, { type: i5.SavedFiltersController }]; }, propDecorators: { setConfig: [{
|
|
576
|
+
}] }, { type: i1.FsFilterOverlayService }, { type: i0.NgZone }, { type: i2.ExternalParamsController }, { type: i3.FsFilterItemsStore }, { type: i4.ActionsController }, { type: i5.SavedFiltersController }, { type: i2.ExternalParamsController }]; }, propDecorators: { setConfig: [{
|
|
576
577
|
type: Input,
|
|
577
578
|
args: ['config']
|
|
578
579
|
}], setFilter: [{
|
|
@@ -610,4 +611,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
610
611
|
type: HostBinding,
|
|
611
612
|
args: ['class.has-keyword']
|
|
612
613
|
}] } });
|
|
613
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUN2RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUN6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LFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCO21QQXBEM0IsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxRQUFRO2dCQU1KLFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsUUFBUTtnQkFLQyxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1csTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLEtBQUs7c0JBQXJCLE1BQU07Z0JBR0EsU0FBUztzQkFEZixZQUFZO3VCQUFDLHdCQUF3QjtnQkFJL0IsZUFBZTtzQkFEckIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBSXpDLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlwQyxjQUFjO3NCQURwQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFJMUIsYUFBYTtzQkFEbkIsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBSTVCLGFBQWE7c0JBRG5CLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUluQixVQUFVO3NCQURwQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWN0aW9uc0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2FjdGlvbnMtY29udHJvbGxlcic7XG5pbXBvcnQgeyBvYmplY3RzQXJlRXF1YWxzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jb21wYXJlJztcbmltcG9ydCB7IElGaWx0ZXJTYXZlZEZpbHRlciwgSVNvcnRpbmdDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNGaWx0ZXJBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBGaWx0ZXJTb3J0LCBJRmlsdGVyQ29uZmlnSXRlbSwgU29ydEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVVwZGF0ZUZpbHRlckl0ZW1Db25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3VwZGF0ZS1maWx0ZXItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuaW1wb3J0IHsgVGV4dEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvdGV4dC1pdGVtJztcbmltcG9ydCB7IEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3BlcnNpc3RhbmNlLXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVyLW92ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBGb2N1c0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9jdXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmUgfSBmcm9tICcuLy4uLy4uL2RpcmVjdGl2ZXMvc3RhdHVzLWJhci9zdGF0dXMtYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGU19GSUxURVJfQ09ORklHIH0gZnJvbSAnLi8uLi8uLi9pbmplY3RvcnMvZmlsdGVyLWNvbmZpZyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsdGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlLFxuICAgIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlcixcbiAgICBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgUXVlcnlQYXJhbXNDb250cm9sbGVyLFxuICAgIEZvY3VzQ29udHJvbGxlclNlcnZpY2UsXG4gICAgRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICAgQWN0aW9uc0NvbnRyb2xsZXIsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCdjb25maWcnKVxuICBwdWJsaWMgc2V0IHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLl9pbml0RmlsdGVyV2l0aENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgQElucHV0KCdmaWx0ZXInKVxuICBwdWJsaWMgc2V0IHNldEZpbHRlcihjb25maWcpIHtcbiAgICB0aGlzLl9pbml0RmlsdGVyV2l0aENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgQElucHV0KCkgcHVibGljIHNob3dTb3J0Qnk6IGFueSA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93RmlsdGVySW5wdXQgPSB0cnVlO1xuICBAT3V0cHV0KCkgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoRmlsdGVyU3RhdHVzQmFyRGlyZWN0aXZlKVxuICBwdWJsaWMgc3RhdHVzQmFyOiBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgna2V5d29yZE1hdElucHV0JywgeyByZWFkOiBNYXRJbnB1dCB9KVxuICBwdWJsaWMga2V5d29yZE1hdElucHV0OiBNYXRJbnB1dDtcblxuICBAVmlld0NoaWxkKCdyZWxvYWRFbCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwdWJsaWMgcmVsb2FkRWw6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5maWx0ZXJzLW9wZW4nKVxuICBwdWJsaWMgc2hvd0ZpbHRlck1lbnUgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndpbmRvdy1kZXNrdG9wJylcbiAgcHVibGljIHdpbmRvd0Rlc2t0b3AgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWZpbHRlcicpXG4gIHB1YmxpYyBmc0ZpbHRlckNsYXNzID0gdHJ1ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy1rZXl3b3JkJylcbiAgcHVibGljIGdldCBoYXNLZXl3b3JkKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy5oYXNLZXl3b3JkO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG4gIHB1YmxpYyBrZXl3b3JkID0gJyc7XG4gIHB1YmxpYyBhdXRvUmVsb2FkID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgX2NvbmZpZzogRnNGaWx0ZXJDb25maWcgPSBudWxsO1xuXG4gIHByaXZhdGUgX3NvcnQ6IEZpbHRlclNvcnQ7XG4gIHByaXZhdGUgX2ZpbHRlcnNCdG5WaXNpYmxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHByaXZhdGUgX2tleXdvcmRWaXNpYmxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHByaXZhdGUgX2hhc0ZpbHRlckNoaXBzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9rZXl3b3JkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0ZJTFRFUl9DT05GSUcpIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzRmlsdGVyQ29uZmlnLFxuICAgIHByaXZhdGUgX2ZpbHRlck92ZXJsYXk6IEZzRmlsdGVyT3ZlcmxheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2V4dGVybmFsUGFyYW1zOiBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfZmlsdGVySXRlbXM6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBY3Rpb25zQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9zYXZlZEZpbHRlcnNDb250cm9sbGVyOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyLFxuICApIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5maWx0ZXIgPSB0aGlzO1xuICAgIHRoaXMuX2xpc3RlbldoZW5GaWx0ZXJSZWFkeSgpO1xuICAgIHRoaXMuX3VwZGF0ZVdpbmRvd1dpZHRoKCk7XG5cbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmF0dGFjaCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlck1lbnUgPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmRldGFjaCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlck1lbnUgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbGlzdGVuV2luZG93UmVzaXplKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGc0ZpbHRlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyUGFyYW1zUXVlcnkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXNBc1F1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy5pdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52aXNpYmxlSXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleXdvcmRJdGVtKCk6IFRleHRJdGVtIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckl0ZW1zLmtleXdvcmRJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtc1JlYWR5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMucmVhZHkkO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNGaWx0ZXJDaGlwcyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0ZpbHRlckNoaXBzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDAgfHwgISF0aGlzLl9maWx0ZXJJdGVtcy5zb3J0QnlJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzQnRuVmlzaWJsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnNCdG5WaXNpYmxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5d29yZFZpc2libGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9rZXl3b3JkVmlzaWJsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGlvbnNWaXNpYmxlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy52aXNpYmxlJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aW9ucyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuYWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVBY3Rpb25zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5tZW51QWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjdGl2ZVNhdmVkRmlsdGVyKHNhdmVGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcikge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKHNhdmVGaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVTYXZlZEZpbHRlcigpOiBJRmlsdGVyU2F2ZWRGaWx0ZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnNDb250cm9sbGVyLmFjdGl2ZUZpbHRlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzKCk6IElGaWx0ZXJTYXZlZEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zYXZlZEZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgLy8gQXZvaWQgbmdDaGFuZ2VzIGVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcuYXV0b2ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2luaXRBdXRvUmVsb2FkKCk7XG4gICAgdGhpcy5fbGlzdGVuSW5wdXRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fbGlzdGVuSW50ZXJuYWxJdGVtc0NoYW5nZSgpO1xuICAgIHRoaXMuX2luaXRPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveUZpbHRlckRyYXdlcigpO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgdGhpcy5rZXl3b3JkTWF0SW5wdXQ/LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydChzb3J0OiBJU29ydGluZ0NoYW5nZUV2ZW50KSB7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMudXBkYXRlU29ydChzb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBEbyB1cGRhdGUgdmFsdWUgb2Ygc29tZSBmaWVsZFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVzIC0gdmFsdWVzIGZvciB1cGRhdGVcbiAgICpcbiAgICogVG8gdXBkYXRlIHRleHQgdmFsdWUganVzdCBwYXNzIG5ldyB0ZXh0IHZhbHVlXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVTZWxlY3RWYWx1ZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGtleXdvcmQ6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgc2VsZWN0IG9yIG9ic2VydmFibGUgc2VsZWN0IHlvdSBjb3VsZCBwYXNzIHN1aXRhYmxlIHZhbHVlXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVTZWxlY3RWYWx1ZSh2YWw6IG51bWJlcikge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgc2ltcGxlX3NlbGVjdDogdmFsIH0sIHsgb2JzZXJ2YWJsZV9zZWxlY3Q6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgY2hlY2tib3ggdmFsdWUganVzdCBwYXNzIHRydWUvZmFsc2UgYXMgdmFsdWVcbiAgICpcbiAgICogcHVibGljIHVwZGF0ZUNoZWNrb3godmFsOiBib29sZWFuKSB7XG4gICAqICAgdGhpcy5maWx0ZXJFbC51cGRhdGVWYWx1ZXMoeyBjaGVja2JveDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqIFRvIHVwZGF0ZSByYW5nZSB2YWx1ZSBqdXN0IHBhc3Mgb2JqZWN0IHdpdGggbWluJm1heCBvYmplY3Qgb3IganVzdCB3aXRoIG9uZSBvZiB0YXJnZXRzXG4gICAqXG4gICAqIEV4LjogeyBtaW46IDEwLCBtYXggMTUgfSwgeyBtaW46IDUgfSwgeyBtYXggNSB9XG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVSYW5nZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IHJhbmdlOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIGF1dG9jb21wbGV0ZSBqdXN0IHBhc3Mgb2JqZWN0IHdpdGggbmFtZS92YWx1ZSBmaWVsZHNcbiAgICpcbiAgICogRXguOiB7IG5hbWU6ICdKb2huIERvZScsIHZhbHVlOiAxIH1cbiAgICpcbiAgICogcHVibGljIHVwZGF0ZUF1dG9jb21wbGV0ZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGF1dG9jb21wbGV0ZV91c2VyX2lkOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIGF1dG9jb21wbGV0ZWNoaXBzIGp1c3QgcGFzczpcbiAgICpcbiAgICogMSkgb2JqZWN0IHdpdGggbmFtZS92YWx1ZSBmaWVsZHMgLSB3aWxsIGJlIGFwcGVuZGVkIHRvIGV4aXN0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICpcbiAgICogeyBuYW1lOiAnSm9obiBEb2UnLCB2YWx1ZTogMSB9XG4gICAqXG4gICAqIDIpIGFycmF5IG9mIG9iamVjdHMgLSB3aWxsIGJlIGFwcGVuZGVkIHRvIGV4aXN0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICpcbiAgICogW3sgbmFtZTogJ0pvaG4gRG9lJywgdmFsdWU6IDEgfSwgeyBuYW1lOiAnRGFyeWEgRmlsaXBvdmEnLCB2YWx1ZTogMiB9XVxuICAgKlxuICAgKiAzKSBudWxsIC0gY2xlYXIgZXhpc3Rpbmcgc2V0IG9mIHZhbHVlc1xuICAgKlxuICAgKiBwdWJsaWMgdXBkYXRlQXV0b2NvbXBsZXRlKHZhbCkge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgYXV0b2NvbXBsZXRlY2hpcHNfdXNlcl9pZDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmFsdWVzKHZhbHVlcykge1xuICAgIE9iamVjdC5rZXlzKHZhbHVlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gdGhpcy5pdGVtc1xuICAgICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBrZXkpO1xuXG4gICAgICBpZiAoIWZpbHRlckl0ZW0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaWx0ZXJJdGVtLm1vZGVsID0gdmFsdWVzW2tleV07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGlkZSgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3coKSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVZpc2liaWxpdHlDbGljayh2YWx1ZSwgZXZlbnQgPSBudWxsKSB7XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1WYWx1ZXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbm9uRW1wdHlJdGVtVmFsdWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0l0ZW1WYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5zb21lKChpdGVtKSA9PiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbmQoKF9pdGVtKSA9PiBfaXRlbS5uYW1lID09PSBuYW1lKTtcblxuICAgIHJldHVybiBpdGVtPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93SXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW0uaGlkZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVJdGVtc1Zpc2libGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlSXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXRlbS5oaWRlID0gdHJ1ZTtcblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnVwZGF0ZUl0ZW1zVmlzaWJsaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJJdGVtKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW0obmFtZSk7XG5cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpdGVtLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSXRlbUNvbmZpZyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBJVXBkYXRlRmlsdGVySXRlbUNvbmZpZyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbShuYW1lKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGl0ZW0ubGFiZWwgPSBwYXJhbXMubGFiZWwgPz8gaXRlbS5sYWJlbDtcbiAgICBpdGVtLmNoaXBMYWJlbCA9IHBhcmFtcy5jaGlwTGFiZWwgPz8gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVJdGVtc1Zpc2libGl0eSgpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZUNoYW5nZSQobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZmluZCgoaSkgPT4gaS5uYW1lID09PSBuYW1lKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm1vZGVsO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuXG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eShzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmIChzdGF0ZSA9PT0gdGhpcy5zaG93RmlsdGVyTWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3lGaWx0ZXJEcmF3ZXIoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9saXN0ZW5Fc2NCdXR0b24oKTtcblxuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgIHRoaXMuX2ZpbHRlck92ZXJsYXkub3BlbigpO1xuICB9XG5cbiAgcHVibGljIGluaXQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICB0aGlzLl9zb3J0ID0gdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmluaXQpIHtcbiAgICAgIHRoaXMuY29uZmlnLmluaXQoZGF0YSwgdGhpcy5fc29ydCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ2hpcHNWaXNpYmlsaXR5KCk7XG5cbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmluaXQoaXRlbSwgdGhpcyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihldmVudCA9IG51bGwpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmZpbHRlcnNDbGVhcigpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmNsZWFyKSB7XG4gICAgICB0aGlzLmNvbmZpZy5jbGVhcigpO1xuICAgIH1cblxuICAgIHRoaXMua2V5d29yZCA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGZpbHRlciB3aW5kb3cgYW5kIGRvIGNoYW5nZSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHNlYXJjaChldmVudCkge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eUNsaWNrKGZhbHNlLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKGV2ZW50ID0gbnVsbCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXNBc1F1ZXJ5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLnJlbG9hZEVsPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYoZWwpIHtcbiAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDAuNzVzIDAuMHMnO1xuICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3JvdGF0ZSgzNjBkZWcpJztcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSBudWxsO1xuICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBudWxsO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlbG9hZCkge1xuICAgICAgdGhpcy5jb25maWcucmVsb2FkKGRhdGEsIHRoaXMuX2ZpbHRlckl0ZW1zLmdldFNvcnQoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEl0ZW0obmFtZSk6IEJhc2VJdGVtPGFueT4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaFF1ZXJ5UGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLmZldGNoUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGNoYW5nZSBjYWxsYmFjayBhbmQgYXBwbHkgbmV3IGZpbHRlciB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICBjb25zdCBzb3J0ID0gdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpO1xuXG4gICAgY29uc3Qgc29ydGluZ0NoYW5nZWQgPSAoKCFzb3J0IHx8ICF0aGlzLl9zb3J0KSAmJiBzb3J0ICE9PSB0aGlzLl9zb3J0KVxuICAgICAgfHwgKHNvcnQgJiYgdGhpcy5fc29ydCAmJiAhb2JqZWN0c0FyZUVxdWFscyh0aGlzLl9zb3J0LCBzb3J0KSk7XG5cbiAgICBpZiAoc29ydGluZ0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3NvcnQgPSBzb3J0O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuc29ydENoYW5nZSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5zb3J0Q2hhbmdlKGRhdGEsIHNvcnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29uZmlnLmNoYW5nZShkYXRhLCBzb3J0KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKTtcblxuICAgIC8vIHZpc2liaWxpdHkgZm9yIGFjdGlvbnMgY2FuIGRlcGVuZCBvbiBmaWx0ZXJzIHN0YXRlXG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVBY3Rpb25zVmlzaWJpbGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmaWx0ZXIgYWN0aW9ucyBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBY3Rpb25zKGFjdGlvbnM6IEZzRmlsdGVyQWN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zLmluaXRBY3Rpb25zKGFjdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgXCJGaWx0ZXJzXCIgYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgc2hvd0ZpbHRlcnNCdG4oKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyc0J0blZpc2libGUkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBcIkZpbHRlcnNcIiBidXR0b25cbiAgICovXG4gIHB1YmxpYyBoaWRlRmlsdGVyc0J0bigpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJzQnRuVmlzaWJsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBcIktleXdvcmRcIiBmaWVsZCBpZiBpdCBwcmVzZW50XG4gICAqL1xuICBwdWJsaWMgc2hvd0tleXdvcmRGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXl3b3JkVmlzaWJsZSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIFwiS2V5d29yZFwiIGZpZWxkIGlmIGl0IHByZXNlbnRcbiAgICovXG4gIHB1YmxpYyBoaWRlS2V5d29yZEZpZWxkKCk6IHZvaWQge1xuICAgIHRoaXMuX2tleXdvcmRWaXNpYmxlJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0aHJvdWdoIGFjdGlvbnMgYW5kIGNoZWNrIHNob3coKSBjYWxsYmFjayBhbmQgdXBkYXRlIHZpc2libGUgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZUFjdGlvbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGlvbnMudXBkYXRlQWN0aW9uc1Zpc2liaWxpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0aHJvdWdoIGFjdGlvbnMgYW5kIGNoZWNrIGRpc2FibGVkKCkgY2FsbGJhY2sgYW5kIHVwZGF0ZSBkaXNhYmxlZCBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbXMoaXRlbXM6IElGaWx0ZXJDb25maWdJdGVtW10pIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5kZXN0cm95SXRlbXMoKTtcblxuICAgIHRoaXMuY29uZmlnLml0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMuc2V0Q29uZmlnKHRoaXMuX2NvbmZpZyk7XG4gICAgdGhpcy5fZXh0ZXJuYWxQYXJhbXMuaW5pdEl0ZW1zKCk7XG5cbiAgICB0aGlzLl9zeW5jU2VhcmNoSW5wdXRXaXRoS2V5d29yZCgpO1xuICB9XG5cbiAgcHVibGljIGtleXdvcmRDaGFuZ2Uoa2V5d29yZCkge1xuICAgIHRoaXMuX2tleXdvcmQkLm5leHQoa2V5d29yZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydGluZ3MoaXRlbXM6IFNvcnRJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVTb3J0aW5nSXRlbXNWYWx1ZXMoaXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEZpbHRlcldpdGhDb25maWcoY29uZmlnOiBGaWx0ZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmRlc3Ryb3lJdGVtcygpO1xuICAgIH1cblxuICAgIGNvbmZpZyA9IHtcbiAgICAgIC4uLih0aGlzLl9kZWZhdWx0Q29uZmlnIHx8IHt9KSxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9O1xuXG4gICAgdGhpcy5fY29uZmlnID0gbmV3IEZzRmlsdGVyQ29uZmlnKGNvbmZpZyk7XG4gICAgdGhpcy5fYWN0aW9ucy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcblxuICAgIHRoaXMuX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucmVsb2FkV2hlbkNvbmZpZ0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveUZpbHRlckRyYXdlcigpIHtcbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVXaW5kb3dXaWR0aCgpIHtcbiAgICB0aGlzLndpbmRvd0Rlc2t0b3AgPSB3aW5kb3cuaW5uZXJXaWR0aCA+IDEyMDA7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Fc2NCdXR0b24oKSB7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAna2V5dXAnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBldmVudC5jb2RlID09PSAnRXNjYXBlJyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xvc2VkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlV2luZG93V2lkdGgoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QXV0b1JlbG9hZCgpIHtcbiAgICBpZih0aGlzLmNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICBpbnRlcnZhbCh0aGlzLmNvbmZpZy5hdXRvUmVsb2FkLnNlY29uZHMgKiAxMDAwKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5hdXRvUmVsb2FkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVsb2FkKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JbnB1dENoYW5nZXMoKSB7XG4gICAgdGhpcy5fa2V5d29yZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXdvcmRJdGVtID0gdGhpcy5fZmlsdGVySXRlbXMua2V5d29yZEl0ZW07XG4gICAgICAgIGtleXdvcmRJdGVtLm1vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk6IHZvaWQge1xuICAgIGNvbnN0IGtleXdvcmRJdGVtID0gdGhpcy5fZmlsdGVySXRlbXMua2V5d29yZEl0ZW07XG4gICAgaWYgKGtleXdvcmRJdGVtKSB7XG4gICAgICB0aGlzLmtleXdvcmQgPSBrZXl3b3JkSXRlbS5tb2RlbDtcbiAgICAgIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgPSBrZXl3b3JkSXRlbS5sYWJlbCBhcyBzdHJpbmcgfHwgJ1NlYXJjaCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuSW50ZXJuYWxJdGVtc0NoYW5nZSgpIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtc1xuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2UoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE92ZXJsYXkoKSB7XG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5zZXRDbGVhckZuKHRoaXMuY2xlYXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5zZXREb25lRm4odGhpcy5oaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLy8gV2UgbWF5IG5lZWQgc29tZSB0aW1lIHRvIHJlY2lldmUgZXh0ZXJuYWwgcGFyYW1zIGFuZCBhZnRlciB0aGF0IHJlYWR5IGNhbiBiZSBlbWl0dGVkXG4gIHByaXZhdGUgX2xpc3RlbldoZW5GaWx0ZXJSZWFkeSgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgW1xuICAgICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5wZW5kaW5nJCxcbiAgICAgICAgdGhpcy5pdGVtc1JlYWR5JCxcbiAgICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChbcGVuZGluZ1BhcmFtcywgaXRlbXNSZWFkeV0pID0+ICFwZW5kaW5nUGFyYW1zICYmIGl0ZW1zUmVhZHkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB0aGlzLl9zeW5jU2VhcmNoSW5wdXRXaXRoS2V5d29yZCgpO1xuXG4gICAgICAgIHRoaXMucmVhZHkuZW1pdCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKSB7XG4gICAgY29uc3QgaGFzRmlsdGVyQ2hpcHMgPSB0aGlzLl9maWx0ZXJJdGVtcy5pdGVtc1xuICAgICAgLnNvbWUoKGl0ZW06IEJhc2VJdGVtPGFueT4pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXNDaGlwVmlzaWJsZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faGFzRmlsdGVyQ2hpcHMkLm5leHQoaGFzRmlsdGVyQ2hpcHMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWlubmVyLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzS2V5d29yZDsgZWxzZSBmaWx0ZXJLZXl3b3JkXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyU3RhdHVzQmFyQ2hpcHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJUb29sYmFyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJBY3Rpb25zXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNLZXl3b3JkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclN0YXR1c0JhckNoaXBzXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyU3RhdHVzQmFyQ2hpcHM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0dXNCYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXN0YXR1cy1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdoYXMtc3RhdHVzJzogISFmaWx0ZXJTdGF0dXMudGV4dENvbnRlbnQgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1zdGF0dXNcIiAjZmlsdGVyU3RhdHVzPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzQmFyLnRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5jaGlwcyAmJiBoYXNGaWx0ZXJDaGlwcyQgfCBhc3luY1wiPlxuICAgIDxmcy1maWx0ZXItY2hpcHNcbiAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBzXCJcbiAgICAgIFtmaWx0ZXJzXT1cIml0ZW1zXCI+XG4gICAgPC9mcy1maWx0ZXItY2hpcHM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmaWx0ZXJLZXl3b3JkPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWtleXdvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGtleXdvcmRWaXNpYmxlJCB8IGFzeW5jKSAmJiAha2V5d29yZEl0ZW0/LmhpZGUgXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICBbZmxvYXRMYWJlbF09XCInbmV2ZXInXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtcGFkbGVzc1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwic2VhcmNoXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICA8c3BhbiBtYXRQcmVmaXg+XG4gICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNrZXl3b3JkTWF0SW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFsobmdNb2RlbCldPVwia2V5d29yZFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwia2V5d29yZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBuYW1lPVwiZmlsdGVyLWlucHV0XCJcbiAgICAgICAgICBbZnNDbGVhcl09XCJ0cnVlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmaWx0ZXJBY3Rpb25zPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWFjdGlvbnNcIj5cbiAgICA8ZnMtZmlsdGVyLWFjdGlvbnNcbiAgICAgICpuZ0lmPVwiYWN0aW9uc1Zpc2libGUkIHwgYXN5bmNcIlxuICAgICAgW2FjdGlvbnNdPVwiYWN0aW9ucyQgfCBhc3luY1wiXG4gICAgICBba2ViYWJBY3Rpb25zXT1cIm1lbnVBY3Rpb25zJCB8IGFzeW5jXCI+XG4gICAgPC9mcy1maWx0ZXItYWN0aW9ucz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlclRvb2xiYXI+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItdG9vYmFyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcnNCdG5WaXNpYmxlJCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmdcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVycy1idXR0b25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnbWF0LXJhaXNlZC1idXR0b24nOiBjb25maWcuYnV0dG9uLnN0eWxlID09PSAncmFpc2VkJyAmJiBjb25maWcuYnV0dG9uLmxhYmVsLFxuICAgICAgICAgICAgICAnbWF0LWZsYXQtYnV0dG9uJzogY29uZmlnLmJ1dHRvbi5zdHlsZSA9PT0gJ2ZsYXQnICYmIGNvbmZpZy5idXR0b24ubGFiZWwsXG4gICAgICAgICAgICAgICdtYXQtc3Ryb2tlZC1idXR0b24nOiBjb25maWcuYnV0dG9uLnN0eWxlID09PSAnc3Ryb2tlZCcgJiYgY29uZmlnLmJ1dHRvbi5sYWJlbCxcbiAgICAgICAgICAgICAgJ21hdC1idXR0b24nOiBjb25maWcuYnV0dG9uLnN0eWxlID09PSAnYmFzaWMnICYmIGNvbmZpZy5idXR0b24ubGFiZWwsXG4gICAgICAgICAgICAgICdtYXQtaWNvbi1idXR0b24nOiBjb25maWcuYnV0dG9uLnN0eWxlID09PSAnaWNvbicgfHwgIWNvbmZpZy5idXR0b24ubGFiZWxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVZpc2liaWxpdHlDbGljayghc2hvd0ZpbHRlck1lbnUsICRldmVudClcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImNvbmZpZy5idXR0b24uY29sb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb25maWcuYnV0dG9uLmljb25cIj57e2NvbmZpZy5idXR0b24uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICB7eyBjb25maWcuYnV0dG9uLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPiAgICBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnJlbG9hZFwiPlxuICAgICAgPGFcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwicmVsb2FkKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwicmVsb2FkXCI+XG4gICAgICAgIDxtYXQtaWNvbiAjcmVsb2FkRWw+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5hdXRvUmVsb2FkXCI+XG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcbiAgICAgICAgICBuYW1lPVwiYXV0b1JlbG9hZFwiIFxuICAgICAgICAgIGNsYXNzPVwiYXV0by1yZWxvYWRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYXV0b1JlbG9hZFwiPlxuICAgICAgICBBdXRvIHJlZnJlc2hcbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
614
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUN2RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUN6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QkFBaUI7cUJBQ2xCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkF5RDVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCOzBSQXBEM0IsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxRQUFRO2dCQU1KLFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsUUFBUTtnQkFLQyxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1csTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLEtBQUs7c0JBQXJCLE1BQU07Z0JBR0EsU0FBUztzQkFEZixZQUFZO3VCQUFDLHdCQUF3QjtnQkFJL0IsZUFBZTtzQkFEckIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBSXpDLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlwQyxjQUFjO3NCQURwQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFJMUIsYUFBYTtzQkFEbkIsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBSTVCLGFBQWE7c0JBRG5CLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUluQixVQUFVO3NCQURwQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWN0aW9uc0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2FjdGlvbnMtY29udHJvbGxlcic7XG5pbXBvcnQgeyBvYmplY3RzQXJlRXF1YWxzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jb21wYXJlJztcbmltcG9ydCB7IElGaWx0ZXJTYXZlZEZpbHRlciwgSVNvcnRpbmdDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNGaWx0ZXJBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBGaWx0ZXJTb3J0LCBJRmlsdGVyQ29uZmlnSXRlbSwgU29ydEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVVwZGF0ZUZpbHRlckl0ZW1Db25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3VwZGF0ZS1maWx0ZXItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuaW1wb3J0IHsgVGV4dEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvdGV4dC1pdGVtJztcbmltcG9ydCB7IEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3BlcnNpc3RhbmNlLXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVyLW92ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBGb2N1c0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9jdXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmUgfSBmcm9tICcuLy4uLy4uL2RpcmVjdGl2ZXMvc3RhdHVzLWJhci9zdGF0dXMtYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGU19GSUxURVJfQ09ORklHIH0gZnJvbSAnLi8uLi8uLi9pbmplY3RvcnMvZmlsdGVyLWNvbmZpZyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsdGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlLFxuICAgIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlcixcbiAgICBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgUXVlcnlQYXJhbXNDb250cm9sbGVyLFxuICAgIEZvY3VzQ29udHJvbGxlclNlcnZpY2UsXG4gICAgRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICAgQWN0aW9uc0NvbnRyb2xsZXIsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCdjb25maWcnKVxuICBwdWJsaWMgc2V0IHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLl9pbml0RmlsdGVyV2l0aENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgQElucHV0KCdmaWx0ZXInKVxuICBwdWJsaWMgc2V0IHNldEZpbHRlcihjb25maWcpIHtcbiAgICB0aGlzLl9pbml0RmlsdGVyV2l0aENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgQElucHV0KCkgcHVibGljIHNob3dTb3J0Qnk6IGFueSA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93RmlsdGVySW5wdXQgPSB0cnVlO1xuICBAT3V0cHV0KCkgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoRmlsdGVyU3RhdHVzQmFyRGlyZWN0aXZlKVxuICBwdWJsaWMgc3RhdHVzQmFyOiBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgna2V5d29yZE1hdElucHV0JywgeyByZWFkOiBNYXRJbnB1dCB9KVxuICBwdWJsaWMga2V5d29yZE1hdElucHV0OiBNYXRJbnB1dDtcblxuICBAVmlld0NoaWxkKCdyZWxvYWRFbCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwdWJsaWMgcmVsb2FkRWw6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5maWx0ZXJzLW9wZW4nKVxuICBwdWJsaWMgc2hvd0ZpbHRlck1lbnUgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndpbmRvdy1kZXNrdG9wJylcbiAgcHVibGljIHdpbmRvd0Rlc2t0b3AgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWZpbHRlcicpXG4gIHB1YmxpYyBmc0ZpbHRlckNsYXNzID0gdHJ1ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy1rZXl3b3JkJylcbiAgcHVibGljIGdldCBoYXNLZXl3b3JkKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy5oYXNLZXl3b3JkO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG4gIHB1YmxpYyBrZXl3b3JkID0gJyc7XG4gIHB1YmxpYyBhdXRvUmVsb2FkID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgX2NvbmZpZzogRnNGaWx0ZXJDb25maWcgPSBudWxsO1xuXG4gIHByaXZhdGUgX3NvcnQ6IEZpbHRlclNvcnQ7XG4gIHByaXZhdGUgX2ZpbHRlcnNCdG5WaXNpYmxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHByaXZhdGUgX2tleXdvcmRWaXNpYmxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHByaXZhdGUgX2hhc0ZpbHRlckNoaXBzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9rZXl3b3JkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0ZJTFRFUl9DT05GSUcpIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzRmlsdGVyQ29uZmlnLFxuICAgIHByaXZhdGUgX2ZpbHRlck92ZXJsYXk6IEZzRmlsdGVyT3ZlcmxheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2V4dGVybmFsUGFyYW1zOiBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfZmlsdGVySXRlbXM6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBY3Rpb25zQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9zYXZlZEZpbHRlcnNDb250cm9sbGVyOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX2V4dGVybmFsUGFyYW1zQ29udHJvbGxlcjogRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyLFxuICApIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5maWx0ZXIgPSB0aGlzO1xuICAgIHRoaXMuX2xpc3RlbldoZW5GaWx0ZXJSZWFkeSgpO1xuICAgIHRoaXMuX3VwZGF0ZVdpbmRvd1dpZHRoKCk7XG5cbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmF0dGFjaCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlck1lbnUgPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmRldGFjaCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlck1lbnUgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbGlzdGVuV2luZG93UmVzaXplKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGc0ZpbHRlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyUGFyYW1zUXVlcnkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXNBc1F1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy5pdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52aXNpYmxlSXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleXdvcmRJdGVtKCk6IFRleHRJdGVtIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckl0ZW1zLmtleXdvcmRJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtc1JlYWR5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMucmVhZHkkO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNGaWx0ZXJDaGlwcyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0ZpbHRlckNoaXBzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDAgfHwgISF0aGlzLl9maWx0ZXJJdGVtcy5zb3J0QnlJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzQnRuVmlzaWJsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnNCdG5WaXNpYmxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5d29yZFZpc2libGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9rZXl3b3JkVmlzaWJsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGlvbnNWaXNpYmxlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy52aXNpYmxlJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aW9ucyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuYWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVBY3Rpb25zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5tZW51QWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjdGl2ZVNhdmVkRmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpIHtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zZXRBY3RpdmVTYXZlZEZpbHRlcihzYXZlZEZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVNhdmVkRmlsdGVyKCk6IElGaWx0ZXJTYXZlZEZpbHRlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnMoKTogSUZpbHRlclNhdmVkRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAvLyBBdm9pZCBuZ0NoYW5nZXMgZXJyb3JcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5pdEF1dG9SZWxvYWQoKTtcbiAgICB0aGlzLl9saXN0ZW5JbnB1dENoYW5nZXMoKTtcbiAgICB0aGlzLl9saXN0ZW5JbnRlcm5hbEl0ZW1zQ2hhbmdlKCk7XG4gICAgdGhpcy5faW5pdE92ZXJsYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95RmlsdGVyRHJhd2VyKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpIHtcbiAgICB0aGlzLmtleXdvcmRNYXRJbnB1dD8uZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTb3J0KHNvcnQ6IElTb3J0aW5nQ2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVTb3J0KHNvcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIERvIHVwZGF0ZSB2YWx1ZSBvZiBzb21lIGZpZWxkXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZXMgLSB2YWx1ZXMgZm9yIHVwZGF0ZVxuICAgKlxuICAgKiBUbyB1cGRhdGUgdGV4dCB2YWx1ZSBqdXN0IHBhc3MgbmV3IHRleHQgdmFsdWVcbiAgICpcbiAgICogcHVibGljIHVwZGF0ZVNlbGVjdFZhbHVlKHZhbCkge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsga2V5d29yZDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqIFRvIHVwZGF0ZSBzZWxlY3Qgb3Igb2JzZXJ2YWJsZSBzZWxlY3QgeW91IGNvdWxkIHBhc3Mgc3VpdGFibGUgdmFsdWVcbiAgICpcbiAgICogcHVibGljIHVwZGF0ZVNlbGVjdFZhbHVlKHZhbDogbnVtYmVyKSB7XG4gICAqICAgdGhpcy5maWx0ZXJFbC51cGRhdGVWYWx1ZXMoeyBzaW1wbGVfc2VsZWN0OiB2YWwgfSwgeyBvYnNlcnZhYmxlX3NlbGVjdDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqIFRvIHVwZGF0ZSBjaGVja2JveCB2YWx1ZSBqdXN0IHBhc3MgdHJ1ZS9mYWxzZSBhcyB2YWx1ZVxuICAgKlxuICAgKiBwdWJsaWMgdXBkYXRlQ2hlY2tveCh2YWw6IGJvb2xlYW4pIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGNoZWNrYm94OiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIHJhbmdlIHZhbHVlIGp1c3QgcGFzcyBvYmplY3Qgd2l0aCBtaW4mbWF4IG9iamVjdCBvciBqdXN0IHdpdGggb25lIG9mIHRhcmdldHNcbiAgICpcbiAgICogRXguOiB7IG1pbjogMTAsIG1heCAxNSB9LCB7IG1pbjogNSB9LCB7IG1heCA1IH1cbiAgICpcbiAgICogcHVibGljIHVwZGF0ZVJhbmdlKHZhbCkge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgcmFuZ2U6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgYXV0b2NvbXBsZXRlIGp1c3QgcGFzcyBvYmplY3Qgd2l0aCBuYW1lL3ZhbHVlIGZpZWxkc1xuICAgKlxuICAgKiBFeC46IHsgbmFtZTogJ0pvaG4gRG9lJywgdmFsdWU6IDEgfVxuICAgKlxuICAgKiBwdWJsaWMgdXBkYXRlQXV0b2NvbXBsZXRlKHZhbCkge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgYXV0b2NvbXBsZXRlX3VzZXJfaWQ6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgYXV0b2NvbXBsZXRlY2hpcHMganVzdCBwYXNzOlxuICAgKlxuICAgKiAxKSBvYmplY3Qgd2l0aCBuYW1lL3ZhbHVlIGZpZWxkcyAtIHdpbGwgYmUgYXBwZW5kZWQgdG8gZXhpc3Rpbmcgc2V0IG9mIHZhbHVlc1xuICAgKlxuICAgKiB7IG5hbWU6ICdKb2huIERvZScsIHZhbHVlOiAxIH1cbiAgICpcbiAgICogMikgYXJyYXkgb2Ygb2JqZWN0cyAtIHdpbGwgYmUgYXBwZW5kZWQgdG8gZXhpc3Rpbmcgc2V0IG9mIHZhbHVlc1xuICAgKlxuICAgKiBbeyBuYW1lOiAnSm9obiBEb2UnLCB2YWx1ZTogMSB9LCB7IG5hbWU6ICdEYXJ5YSBGaWxpcG92YScsIHZhbHVlOiAyIH1dXG4gICAqXG4gICAqIDMpIG51bGwgLSBjbGVhciBleGlzdGluZyBzZXQgb2YgdmFsdWVzXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVBdXRvY29tcGxldGUodmFsKSB7XG4gICAqICAgdGhpcy5maWx0ZXJFbC51cGRhdGVWYWx1ZXMoeyBhdXRvY29tcGxldGVjaGlwc191c2VyX2lkOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZXModmFsdWVzKSB7XG4gICAgT2JqZWN0LmtleXModmFsdWVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlckl0ZW0gPSB0aGlzLml0ZW1zXG4gICAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGtleSk7XG5cbiAgICAgIGlmICghZmlsdGVySXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGZpbHRlckl0ZW0ubW9kZWwgPSB2YWx1ZXNba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlKCkge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgc2hvdygpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eUNsaWNrKHZhbHVlLCBldmVudCA9IG51bGwpIHtcblxuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXRlbVZhbHVlcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBub25FbXB0eUl0ZW1WYWx1ZXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzSXRlbVZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLnNvbWUoKGl0ZW0pID0+IGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbVZhbHVlKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zXG4gICAgICAuZmluZCgoX2l0ZW0pID0+IF9pdGVtLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIGl0ZW0/LnZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNob3dJdGVtKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW0obmFtZSk7XG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgaXRlbS5oaWRlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnVwZGF0ZUl0ZW1zVmlzaWJsaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhpZGVJdGVtKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW0obmFtZSk7XG5cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpdGVtLmhpZGUgPSB0cnVlO1xuXG4gICAgdGhpcy5fZmlsdGVySXRlbXMudXBkYXRlSXRlbXNWaXNpYmxpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckl0ZW0obmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbShuYW1lKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGl0ZW0uY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtQ29uZmlnKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwYXJhbXM6IElVcGRhdGVGaWx0ZXJJdGVtQ29uZmlnLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXRlbS5sYWJlbCA9IHBhcmFtcy5sYWJlbCA/PyBpdGVtLmxhYmVsO1xuICAgIGl0ZW0uY2hpcExhYmVsID0gcGFyYW1zLmNoaXBMYWJlbCA/PyBpdGVtLmNoaXBMYWJlbDtcblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnVwZGF0ZUl0ZW1zVmlzaWJsaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbVZhbHVlQ2hhbmdlJChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKChpKSA9PiBpLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubW9kZWw7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VWaXNpYmlsaXR5KHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKHN0YXRlID09PSB0aGlzLnNob3dGaWx0ZXJNZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy5fZGVzdHJveUZpbHRlckRyYXdlcigpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5oYXNWaXNpYmxlSXRlbU9yU29ydGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xpc3RlbkVzY0J1dHRvbigpO1xuXG4gICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5vcGVuKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZmlsdGVySXRlbXMudmFsdWVzQXNRdWVyeSgpO1xuICAgIHRoaXMuX3NvcnQgPSB0aGlzLl9maWx0ZXJJdGVtcy5nZXRTb3J0KCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuaW5pdCkge1xuICAgICAgdGhpcy5jb25maWcuaW5pdChkYXRhLCB0aGlzLl9zb3J0LCB0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKTtcblxuICAgIHRoaXMuaXRlbXNcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uaW5pdChpdGVtLCB0aGlzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKGV2ZW50ID0gbnVsbCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fZmlsdGVySXRlbXMuZmlsdGVyc0NsZWFyKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuY2xlYXIpIHtcbiAgICAgIHRoaXMuY29uZmlnLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5rZXl3b3JkID0gJyc7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgZmlsdGVyIHdpbmRvdyBhbmQgZG8gY2hhbmdlIGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoKGV2ZW50KSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5Q2xpY2soZmFsc2UsIGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWQoZXZlbnQgPSBudWxsKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICBjb25zdCBlbCA9IHRoaXMucmVsb2FkRWw/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZihlbCkge1xuICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMC43NXMgMC4wcyc7XG4gICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKDM2MGRlZyknO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9IG51bGw7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IG51bGw7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcucmVsb2FkKSB7XG4gICAgICB0aGlzLmNvbmZpZy5yZWxvYWQoZGF0YSwgdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbShuYW1lKTogQmFzZUl0ZW08YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGZldGNoUXVlcnlQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZXh0ZXJuYWxQYXJhbXMuZmV0Y2hRdWVyeVBhcmFtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgY2hhbmdlIGNhbGxiYWNrIGFuZCBhcHBseSBuZXcgZmlsdGVyIHZhbHVlc1xuICAgKi9cbiAgcHVibGljIGNoYW5nZSgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZmlsdGVySXRlbXMudmFsdWVzQXNRdWVyeSgpO1xuICAgIGNvbnN0IHNvcnQgPSB0aGlzLl9maWx0ZXJJdGVtcy5nZXRTb3J0KCk7XG5cbiAgICBjb25zdCBzb3J0aW5nQ2hhbmdlZCA9ICgoIXNvcnQgfHwgIXRoaXMuX3NvcnQpICYmIHNvcnQgIT09IHRoaXMuX3NvcnQpXG4gICAgICB8fCAoc29ydCAmJiB0aGlzLl9zb3J0ICYmICFvYmplY3RzQXJlRXF1YWxzKHRoaXMuX3NvcnQsIHNvcnQpKTtcblxuICAgIGlmIChzb3J0aW5nQ2hhbmdlZCkge1xuICAgICAgdGhpcy5fc29ydCA9IHNvcnQ7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5zb3J0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNvcnRDaGFuZ2UoZGF0YSwgc29ydCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmNoYW5nZSkge1xuICAgICAgdGhpcy5jb25maWcuY2hhbmdlKGRhdGEsIHNvcnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUNoaXBzVmlzaWJpbGl0eSgpO1xuXG4gICAgLy8gdmlzaWJpbGl0eSBmb3IgYWN0aW9ucyBjYW4gZGVwZW5kIG9uIGZpbHRlcnMgc3RhdGVcbiAgICB0aGlzLl9hY3Rpb25zLnVwZGF0ZUFjdGlvbnNWaXNpYmlsaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGZpbHRlciBhY3Rpb25zIGNvbmZpZ1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZUFjdGlvbnMoYWN0aW9uczogRnNGaWx0ZXJBY3Rpb25bXSk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGlvbnMuaW5pdEFjdGlvbnMoYWN0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBcIkZpbHRlcnNcIiBidXR0b25cbiAgICovXG4gIHB1YmxpYyBzaG93RmlsdGVyc0J0bigpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJzQnRuVmlzaWJsZSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIFwiRmlsdGVyc1wiIGJ1dHRvblxuICAgKi9cbiAgcHVibGljIGhpZGVGaWx0ZXJzQnRuKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlcnNCdG5WaXNpYmxlJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IFwiS2V5d29yZFwiIGZpZWxkIGlmIGl0IHByZXNlbnRcbiAgICovXG4gIHB1YmxpYyBzaG93S2V5d29yZEZpZWxkKCk6IHZvaWQge1xuICAgIHRoaXMuX2tleXdvcmRWaXNpYmxlJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgXCJLZXl3b3JkXCIgZmllbGQgaWYgaXQgcHJlc2VudFxuICAgKi9cbiAgcHVibGljIGhpZGVLZXl3b3JkRmllbGQoKTogdm9pZCB7XG4gICAgdGhpcy5fa2V5d29yZFZpc2libGUkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRocm91Z2ggYWN0aW9ucyBhbmQgY2hlY2sgc2hvdygpIGNhbGxiYWNrIGFuZCB1cGRhdGUgdmlzaWJsZSBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlQWN0aW9uc1Zpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVBY3Rpb25zVmlzaWJpbGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRocm91Z2ggYWN0aW9ucyBhbmQgY2hlY2sgZGlzYWJsZWQoKSBjYWxsYmFjayBhbmQgdXBkYXRlIGRpc2FibGVkIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlRGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJdGVtcyhpdGVtczogSUZpbHRlckNvbmZpZ0l0ZW1bXSkge1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmRlc3Ryb3lJdGVtcygpO1xuXG4gICAgdGhpcy5jb25maWcuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5pbml0SXRlbXMoKTtcblxuICAgIHRoaXMuX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk7XG4gIH1cblxuICBwdWJsaWMga2V5d29yZENoYW5nZShrZXl3b3JkKSB7XG4gICAgdGhpcy5fa2V5d29yZCQubmV4dChrZXl3b3JkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTb3J0aW5ncyhpdGVtczogU29ydEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnVwZGF0ZVNvcnRpbmdJdGVtc1ZhbHVlcyhpdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0RmlsdGVyV2l0aENvbmZpZyhjb25maWc6IEZpbHRlckNvbmZpZykge1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5fZmlsdGVySXRlbXMuZGVzdHJveUl0ZW1zKCk7XG4gICAgfVxuXG4gICAgY29uZmlnID0ge1xuICAgICAgLi4uKHRoaXMuX2RlZmF1bHRDb25maWcgfHwge30pLFxuICAgICAgLi4uY29uZmlnLFxuICAgIH07XG5cbiAgICB0aGlzLl9jb25maWcgPSBuZXcgRnNGaWx0ZXJDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9hY3Rpb25zLnNldENvbmZpZyh0aGlzLl9jb25maWcpO1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnNldENvbmZpZyh0aGlzLl9jb25maWcpO1xuICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLnNldENvbmZpZyh0aGlzLl9jb25maWcpO1xuXG4gICAgdGhpcy5fc3luY1NlYXJjaElucHV0V2l0aEtleXdvcmQoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5yZWxvYWRXaGVuQ29uZmlnQ2hhbmdlZCkge1xuICAgICAgdGhpcy5jaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95RmlsdGVyRHJhd2VyKCkge1xuICAgIHRoaXMuX2ZpbHRlck92ZXJsYXkuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVdpbmRvd1dpZHRoKCkge1xuICAgIHRoaXMud2luZG93RGVza3RvcCA9IHdpbmRvdy5pbm5lcldpZHRoID4gMTIwMDtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkVzY0J1dHRvbigpIHtcbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdrZXl1cCcpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5jbG9zZWQpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5XaW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVXaW5kb3dXaWR0aCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRBdXRvUmVsb2FkKCkge1xuICAgIGlmKHRoaXMuY29uZmlnLmF1dG9SZWxvYWQpIHtcbiAgICAgIGludGVydmFsKHRoaXMuY29uZmlnLmF1dG9SZWxvYWQuc2Vjb25kcyAqIDEwMDApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmF1dG9SZWxvYWQpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWxvYWQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbklucHV0Q2hhbmdlcygpIHtcbiAgICB0aGlzLl9rZXl3b3JkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3Qga2V5d29yZEl0ZW0gPSB0aGlzLl9maWx0ZXJJdGVtcy5rZXl3b3JkSXRlbTtcbiAgICAgICAga2V5d29yZEl0ZW0ubW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2UoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY1NlYXJjaElucHV0V2l0aEtleXdvcmQoKTogdm9pZCB7XG4gICAgY29uc3Qga2V5d29yZEl0ZW0gPSB0aGlzLl9maWx0ZXJJdGVtcy5rZXl3b3JkSXRlbTtcbiAgICBpZiAoa2V5d29yZEl0ZW0pIHtcbiAgICAgIHRoaXMua2V5d29yZCA9IGtleXdvcmRJdGVtLm1vZGVsO1xuICAgICAgdGhpcy5zZWFyY2hQbGFjZWhvbGRlciA9IGtleXdvcmRJdGVtLmxhYmVsIGFzIHN0cmluZyB8fCAnU2VhcmNoJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JbnRlcm5hbEl0ZW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zXG4gICAgICAuaXRlbXNDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0T3ZlcmxheSgpIHtcbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LnNldENsZWFyRm4odGhpcy5jbGVhci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LnNldERvbmVGbih0aGlzLmhpZGUuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvLyBXZSBtYXkgbmVlZCBzb21lIHRpbWUgdG8gcmVjaWV2ZSBleHRlcm5hbCBwYXJhbXMgYW5kIGFmdGVyIHRoYXQgcmVhZHkgY2FuIGJlIGVtaXR0ZWRcbiAgcHJpdmF0ZSBfbGlzdGVuV2hlbkZpbHRlclJlYWR5KCkge1xuICAgIGNvbWJpbmVMYXRlc3QoXG4gICAgICBbXG4gICAgICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLnBlbmRpbmckLFxuICAgICAgICB0aGlzLml0ZW1zUmVhZHkkLFxuICAgICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKFtwZW5kaW5nUGFyYW1zLCBpdGVtc1JlYWR5XSkgPT4gIXBlbmRpbmdQYXJhbXMgJiYgaXRlbXNSZWFkeSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIHRoaXMuX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk7XG5cbiAgICAgICAgdGhpcy5yZWFkeS5lbWl0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNoaXBzVmlzaWJpbGl0eSgpIHtcbiAgICBjb25zdCBoYXNGaWx0ZXJDaGlwcyA9IHRoaXMuX2ZpbHRlckl0ZW1zLml0ZW1zXG4gICAgICAuc29tZSgoaXRlbTogQmFzZUl0ZW08YW55PikgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5pc0NoaXBWaXNpYmxlO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9oYXNGaWx0ZXJDaGlwcyQubmV4dChoYXNGaWx0ZXJDaGlwcyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItaW5uZXItY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNLZXl3b3JkOyBlbHNlIGZpbHRlcktleXdvcmRcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJTdGF0dXNCYXJDaGlwc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlclRvb2xiYXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlckFjdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0tleXdvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyU3RhdHVzQmFyQ2hpcHNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNmaWx0ZXJTdGF0dXNCYXJDaGlwcz5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXR1c0JhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItc3RhdHVzLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ2hhcy1zdGF0dXMnOiAhIWZpbHRlclN0YXR1cy50ZXh0Q29udGVudCB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXN0YXR1c1wiICNmaWx0ZXJTdGF0dXM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNCYXIudGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmNoaXBzICYmIGhhc0ZpbHRlckNoaXBzJCB8IGFzeW5jXCI+XG4gICAgPGZzLWZpbHRlci1jaGlwc1xuICAgICAgY2xhc3M9XCJmaWx0ZXItY2hpcHNcIlxuICAgICAgW2ZpbHRlcnNdPVwiaXRlbXNcIj5cbiAgICA8L2ZzLWZpbHRlci1jaGlwcz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlcktleXdvcmQ+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXIta2V5d29yZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoa2V5d29yZFZpc2libGUkIHwgYXN5bmMpICYmICFrZXl3b3JkSXRlbT8uaGlkZSBcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgIFtmbG9hdExhYmVsXT1cIiduZXZlcidcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJzZWFyY2hcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgIDxzcGFuIG1hdFByZWZpeD5cbiAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI2tleXdvcmRNYXRJbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJrZXl3b3JkXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJrZXl3b3JkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIG5hbWU9XCJmaWx0ZXItaW5wdXRcIlxuICAgICAgICAgIFtmc0NsZWFyXT1cInRydWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlckFjdGlvbnM+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItYWN0aW9uc1wiPlxuICAgIDxmcy1maWx0ZXItYWN0aW9uc1xuICAgICAgKm5nSWY9XCJhY3Rpb25zVmlzaWJsZSQgfCBhc3luY1wiXG4gICAgICBbYWN0aW9uc109XCJhY3Rpb25zJCB8IGFzeW5jXCJcbiAgICAgIFtrZWJhYkFjdGlvbnNdPVwibWVudUFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICA8L2ZzLWZpbHRlci1hY3Rpb25zPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyVG9vbGJhcj5cbiAgPGRpdiBjbGFzcz1cImZpbHRlci10b29iYXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyc0J0blZpc2libGUkIHwgYXN5bmNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWaXNpYmxlSXRlbU9yU29ydGluZ1wiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXJzLWJ1dHRvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdtYXQtcmFpc2VkLWJ1dHRvbic6IGNvbmZpZy5idXR0b24uc3R5bGUgPT09ICdyYWlzZWQnICYmIGNvbmZpZy5idXR0b24ubGFiZWwsXG4gICAgICAgICAgICAgICdtYXQtZmxhdC1idXR0b24nOiBjb25maWcuYnV0dG9uLnN0eWxlID09PSAnZmxhdCcgJiYgY29uZmlnLmJ1dHRvbi5sYWJlbCxcbiAgICAgICAgICAgICAgJ21hdC1zdHJva2VkLWJ1dHRvbic6IGNvbmZpZy5idXR0b24uc3R5bGUgPT09ICdzdHJva2VkJyAmJiBjb25maWcuYnV0dG9uLmxhYmVsLFxuICAgICAgICAgICAgICAnbWF0LWJ1dHRvbic6IGNvbmZpZy5idXR0b24uc3R5bGUgPT09ICdiYXNpYycgJiYgY29uZmlnLmJ1dHRvbi5sYWJlbCxcbiAgICAgICAgICAgICAgJ21hdC1pY29uLWJ1dHRvbic6IGNvbmZpZy5idXR0b24uc3R5bGUgPT09ICdpY29uJyB8fCAhY29uZmlnLmJ1dHRvbi5sYWJlbFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eUNsaWNrKCFzaG93RmlsdGVyTWVudSwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiY29uZmlnLmJ1dHRvbi5jb2xvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImNvbmZpZy5idXR0b24uaWNvblwiPnt7Y29uZmlnLmJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgIHt7IGNvbmZpZy5idXR0b24ubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+ICAgIFxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucmVsb2FkXCI+XG4gICAgICA8YVxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJyZWxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJyZWxvYWRcIj5cbiAgICAgICAgPG1hdC1pY29uICNyZWxvYWRFbD5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmF1dG9SZWxvYWRcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFxuICAgICAgICAgIG5hbWU9XCJhdXRvUmVsb2FkXCIgXG4gICAgICAgICAgY2xhc3M9XCJhdXRvLXJlbG9hZFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhdXRvUmVsb2FkXCI+XG4gICAgICAgIEF1dG8gcmVmcmVzaFxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './saved-filter-edit';
|
|
2
|
+
export * from './saved-filter-manage';
|
|
3
|
+
export * from './saved-filters-menu';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYXZlZC1maWx0ZXItZWRpdCc7XG5leHBvcnQgKiBmcm9tICcuL3NhdmVkLWZpbHRlci1tYW5hZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYXZlZC1maWx0ZXJzLW1lbnUnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './saved-filter-edit.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1lZGl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NhdmVkLWZpbHRlci1lZGl0LmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
47
47
|
type: Inject,
|
|
48
48
|
args: [MAT_DIALOG_DATA]
|
|
49
49
|
}] }, { type: i1.MatDialogRef }]; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NhdmVkLWZpbHRlci9zYXZlZC1maWx0ZXItZWRpdC9zYXZlZC1maWx0ZXItZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1lZGl0L3NhdmVkLWZpbHRlci1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFhaEQsTUFBTSxPQUFPLGdDQUFnQztJQVUzQyxZQUNrQyxJQUFJLEVBQzVCLFVBQTBEO1FBRGxDLFNBQUksR0FBSixJQUFJLENBQUE7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBZ0Q7UUFUN0QsaUJBQVksR0FBK0IsS0FBSyxDQUFDO1FBRWpELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBR3BCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBVWpDLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDakIsTUFBTSxXQUFXLEdBQXVCLElBQUksQ0FBQyxZQUFZLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ25FO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDMUIsTUFBTSxFQUFFLElBQUk7b0JBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtpQkFDMUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0YsR0FBRyxJQUFJLENBQUMsWUFBWTtnQkFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTthQUMxQixDQUFDO1lBRUosT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztpQkFDbkMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCLENBQUM7UUFDTixDQUFDLENBQUM7UUF0QkEsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlDLENBQUM7OzZIQWhCVSxnQ0FBZ0Msa0JBV2pDLGVBQWU7aUhBWGQsZ0NBQWdDLG9EQ3RCN0Msc3NDQXdDQTsyRkRsQmEsZ0NBQWdDO2tCQUo1QyxTQUFTO3NDQUVTLHVCQUF1QixDQUFDLE1BQU07OzBCQWE1QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRmlsdGVyUmVtb3RlU2F2ZSxcbiAgSUZpbHRlclNhdmVkRmlsdGVyLFxufSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3NhdmVkLWZpbHRlci1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyU2F2ZWRGaWx0ZXJFZGl0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgZmlsdGVyUGFyYW1zOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXM7XG4gIHB1YmxpYyBzYXZlQXNGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlciB8ICduZXcnID0gJ25ldyc7XG4gIHB1YmxpYyBzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdO1xuICBwdWJsaWMgc2F2ZWRGaWx0ZXJOYW1lID0gJyc7XG5cbiAgcHJpdmF0ZSBfc2F2ZUNhbGxiYWNrOiBGaWx0ZXJSZW1vdGVTYXZlO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhLFxuICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEZzRmlsdGVyU2F2ZWRGaWx0ZXJFZGl0Q29tcG9uZW50PixcbiAgKSB7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnMgPSB0aGlzLmRhdGEuc2F2ZWRGaWx0ZXJzO1xuICAgIHRoaXMuX3NhdmVDYWxsYmFjayA9IHRoaXMuZGF0YS5zYXZlQ2FsbGJhY2s7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSA9ICgpID0+IHtcbiAgICBjb25zdCBzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyID0gdGhpcy5zYXZlQXNGaWx0ZXIgPT09ICduZXcnID8gXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMuc2F2ZWRGaWx0ZXJOYW1lLFxuICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuZGF0YS5wYXJhbXMsXG4gICAgICB9IDoge1xuICAgICAgICAuLi50aGlzLnNhdmVBc0ZpbHRlcixcbiAgICAgICAgZmlsdGVyczogdGhpcy5kYXRhLnBhcmFtcyxcbiAgICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5fc2F2ZUNhbGxiYWNrKHNhdmVkRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKGZpbHRlcik7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKTtcbiAgfTtcblxufVxuIiwiPGZvcm0gZnNGb3JtIFtzdWJtaXRdPVwic2F2ZVwiPlxuICA8aDEgbWF0LWRpYWxvZy10aXRsZT5cbiAgICBTYXZlIGZpbHRlclxuICA8L2gxPlxuICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPlNhdmUgYXM8L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwic2F2ZUFzRmlsdGVyXCIgbmFtZT1cInNhdmVBc1wiPlxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIm5ld1wiPk5ldyBmaWx0ZXI8L21hdC1vcHRpb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzYXZlZEZpbHRlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1vcHRncm91cCBsYWJlbD1cIlNhdmVkIGZpbHRlcnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBzYXZlZEZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZpbHRlclwiPnt7IGZpbHRlci5uYW1lIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJyPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInNhdmVBc0ZpbHRlciA9PT0gJ25ldydcIj5cbiAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJmaWx0ZXItbmFtZVwiIFsobmdNb2RlbCldPVwic2F2ZWRGaWx0ZXJOYW1lXCIgcmVxdWlyZWQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAge3sgc2F2ZUFzRmlsdGVyID09PSAnbmV3JyA/ICdDcmVhdGUnIDogJ1NhdmUnIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIFxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './saved-filter-manage.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQnO1xuIl19
|
package/esm2020/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, } from '@angular/core';
|
|
2
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
3
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@firestitch/chip";
|
|
6
|
+
import * as i2 from "@angular/material/button";
|
|
7
|
+
import * as i3 from "@angular/material/dialog";
|
|
8
|
+
import * as i4 from "@angular/cdk/drag-drop";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
import * as i6 from "@firestitch/form";
|
|
11
|
+
export class FsFilterSavedFilterManageComponent {
|
|
12
|
+
constructor(data, _cdRef) {
|
|
13
|
+
this.data = data;
|
|
14
|
+
this._cdRef = _cdRef;
|
|
15
|
+
this._savedFiltersController = this.data.savedFiltersController;
|
|
16
|
+
this.savedFilters = [...this._savedFiltersController.savedFilters];
|
|
17
|
+
}
|
|
18
|
+
remove(savedFilter) {
|
|
19
|
+
this._savedFiltersController.delete(savedFilter)
|
|
20
|
+
.subscribe(() => {
|
|
21
|
+
this.savedFilters = [...this._savedFiltersController.savedFilters];
|
|
22
|
+
this._cdRef.markForCheck();
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
drop(event) {
|
|
26
|
+
moveItemInArray(this.savedFilters, event.previousIndex, event.currentIndex);
|
|
27
|
+
this._savedFiltersController.order(this.savedFilters)
|
|
28
|
+
.subscribe();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
FsFilterSavedFilterManageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterSavedFilterManageComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
FsFilterSavedFilterManageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsFilterSavedFilterManageComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n Manage saved filters\n</h1>\n<div mat-dialog-content>\n <div\n cdkDropList \n [cdkDropListData]=\"savedFilters\"\n cdkDropListOrientation=\"vertical\"\n (cdkDropListDropped)=\"drop($event)\"> \n <ng-container \n *ngFor=\"let savedFilter of savedFilters\">\n <div class=\"chip-container\">\n <fs-chip \n cdkDrag\n (removed)=\"remove(savedFilter)\">\n {{savedFilter.name}}\n </fs-chip>\n </div>\n </ng-container>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-button\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>\n", styles: [".chip-container{padding:5px 0}.chip-container fs-chip{cursor:move}.cdk-drag-preview{box-sizing:border-box}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "icon", "image", "selected", "size", "backgroundColor", "borderColor", "color", "outlined"], outputs: ["selectedToggled", "removed"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i6.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "form"] }, { type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterSavedFilterManageComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>\n Manage saved filters\n</h1>\n<div mat-dialog-content>\n <div\n cdkDropList \n [cdkDropListData]=\"savedFilters\"\n cdkDropListOrientation=\"vertical\"\n (cdkDropListDropped)=\"drop($event)\"> \n <ng-container \n *ngFor=\"let savedFilter of savedFilters\">\n <div class=\"chip-container\">\n <fs-chip \n cdkDrag\n (removed)=\"remove(savedFilter)\">\n {{savedFilter.name}}\n </fs-chip>\n </div>\n </ng-container>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-button\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>\n", styles: [".chip-container{padding:5px 0}.chip-container fs-chip{cursor:move}.cdk-drag-preview{box-sizing:border-box}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
36
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
37
|
+
type: Inject,
|
|
38
|
+
args: [MAT_DIALOG_DATA]
|
|
39
|
+
}] }, { type: i0.ChangeDetectorRef }]; } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBVzNELE1BQU0sT0FBTyxrQ0FBa0M7SUFPN0MsWUFDa0MsSUFBSSxFQUM1QixNQUF5QjtRQURELFNBQUksR0FBSixJQUFJLENBQUE7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFFakMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDaEUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBK0I7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLElBQUksQ0FBQyxLQUF5QjtRQUNuQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDbEQsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7K0hBNUJVLGtDQUFrQyxrQkFRbkMsZUFBZTttSEFSZCxrQ0FBa0Msb0RDbkIvQyxxckJBNkJBOzJGRFZhLGtDQUFrQztrQkFMOUMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzswQkFVNUMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZpbHRlclJlbW90ZU9yZGVyLCBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9leHRlcm5hbC1wYXJhbXMvc2F2ZWQtZmlsdGVycy1jb250cm9sbGVyLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NhdmVkLWZpbHRlci1tYW5hZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQge1xuXG4gIHB1YmxpYyBzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdO1xuXG4gIHByaXZhdGUgX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXI6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2ZpbHRlclJlbW90ZU9yZGVyOiBGaWx0ZXJSZW1vdGVPcmRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnNDb250cm9sbGVyID0gdGhpcy5kYXRhLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXI7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnMgPSBbLi4udGhpcy5fc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zYXZlZEZpbHRlcnNdO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKSB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5kZWxldGUoc2F2ZWRGaWx0ZXIpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSBbLi4udGhpcy5fc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zYXZlZEZpbHRlcnNdO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLnNhdmVkRmlsdGVycywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcblxuICAgIHRoaXMuX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXIub3JkZXIodGhpcy5zYXZlZEZpbHRlcnMpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+XG4gIE1hbmFnZSBzYXZlZCBmaWx0ZXJzXG48L2gxPlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXZcbiAgICAgIGNka0Ryb3BMaXN0IFxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJzYXZlZEZpbHRlcnNcIlxuICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+ICBcbiAgICA8bmctY29udGFpbmVyIFxuICAgICAgICAqbmdGb3I9XCJsZXQgc2F2ZWRGaWx0ZXIgb2Ygc2F2ZWRGaWx0ZXJzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgPGZzLWNoaXAgXG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmUoc2F2ZWRGaWx0ZXIpXCI+XG4gICAgICAgICAge3tzYXZlZEZpbHRlci5uYW1lfX1cbiAgICAgICAgPC9mcy1jaGlwPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgPGJ1dHRvbiBcbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgIERvbmVcbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './saved-filters-menu.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlcnMtbWVudS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYXZlZC1maWx0ZXJzLW1lbnUuY29tcG9uZW50JztcbiJdfQ==
|