@ethlete/core 2.4.3 → 2.5.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.
@@ -0,0 +1,82 @@
1
+ import { DOWN_ARROW, END, HOME, PAGE_DOWN, PAGE_UP, UP_ARROW } from '@angular/cdk/keycodes';
2
+ import { BehaviorSubject, of, switchMap, takeUntil, tap } from 'rxjs';
3
+ import { createDestroy } from './destroy.utils';
4
+ export class ActiveSelectionModel {
5
+ get selectionModel$() {
6
+ return this._selectionModel$.asObservable();
7
+ }
8
+ get selectionModel() {
9
+ return this._selectionModel$.value;
10
+ }
11
+ get activeOption$() {
12
+ return this._activeOption$.asObservable();
13
+ }
14
+ get activeOption() {
15
+ return this._activeOption$.value;
16
+ }
17
+ constructor() {
18
+ this._destroy$ = createDestroy();
19
+ this._selectionModel$ = new BehaviorSubject(null);
20
+ this._activeOption$ = new BehaviorSubject(null);
21
+ this._selectionModel$
22
+ .pipe(takeUntil(this._destroy$), switchMap((model) => model?.filteredOptions$ ?? of([])), tap(() => this._resetActiveOptions()))
23
+ .subscribe();
24
+ }
25
+ setSelectionModel(selectionModel) {
26
+ this._selectionModel$.next(selectionModel);
27
+ return this;
28
+ }
29
+ evaluateKeyboardEvent(event) {
30
+ const keyCode = event.keyCode;
31
+ const activeOption = this.activeOption;
32
+ if (!this.selectionModel || !activeOption)
33
+ return;
34
+ const currentIndex = this.selectionModel?.getOptionIndex(activeOption);
35
+ if (currentIndex === null)
36
+ return;
37
+ let newActiveOption = undefined;
38
+ switch (keyCode) {
39
+ case DOWN_ARROW:
40
+ {
41
+ newActiveOption = this.selectionModel?.getOptionByOffset(1, currentIndex);
42
+ }
43
+ break;
44
+ case UP_ARROW:
45
+ {
46
+ newActiveOption = this.selectionModel?.getOptionByOffset(-1, currentIndex);
47
+ }
48
+ break;
49
+ case PAGE_UP:
50
+ {
51
+ newActiveOption = this.selectionModel?.getOptionByOffset(-10, currentIndex);
52
+ }
53
+ break;
54
+ case PAGE_DOWN:
55
+ {
56
+ newActiveOption = this.selectionModel?.getOptionByOffset(10, currentIndex);
57
+ }
58
+ break;
59
+ case HOME:
60
+ {
61
+ newActiveOption = this.selectionModel?.getFirstOption();
62
+ }
63
+ break;
64
+ case END:
65
+ {
66
+ newActiveOption = this.selectionModel?.getLastOption();
67
+ }
68
+ break;
69
+ }
70
+ if (newActiveOption !== undefined) {
71
+ event.preventDefault();
72
+ }
73
+ if (newActiveOption !== activeOption && newActiveOption !== undefined) {
74
+ this._activeOption$.next(newActiveOption);
75
+ }
76
+ }
77
+ _resetActiveOptions() {
78
+ const firstOption = this.selectionModel?.getFirstOption();
79
+ this._activeOption$.next(firstOption ?? null);
80
+ }
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLXNlbGVjdGlvbi1tb2RlbC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL2FjdGl2ZS1zZWxlY3Rpb24tbW9kZWwudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2hELE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFHRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUdEO1FBbEJpQixjQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFRNUIscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBUXZFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVcsSUFBSSxDQUFDLENBQUM7UUFHcEUsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDekIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUF3QztRQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQW9CO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRWxELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZFLElBQUksWUFBWSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBRWxDLElBQUksZUFBZSxHQUF5QixTQUFTLENBQUM7UUFFdEQsUUFBUSxPQUFPLEVBQUU7WUFDZixLQUFLLFVBQVU7Z0JBQ2I7b0JBQ0UsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUMzRTtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYO29CQUNFLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUM1RTtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWO29CQUNFLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUM3RTtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaO29CQUNFLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztpQkFDNUU7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssSUFBSTtnQkFDUDtvQkFDRSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQztpQkFDekQ7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssR0FBRztnQkFDTjtvQkFDRSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDeEQ7Z0JBQ0QsTUFBTTtTQUNUO1FBRUQsSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ2pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtRQUVELElBQUksZUFBZSxLQUFLLFlBQVksSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET1dOX0FSUk9XLCBFTkQsIEhPTUUsIFBBR0VfRE9XTiwgUEFHRV9VUCwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJy4vZGVzdHJveS51dGlscyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJy4vc2VsZWN0aW9uLW1vZGVsLnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFjdGl2ZVNlbGVjdGlvbk1vZGVsPFQgPSB1bmtub3duPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIGdldCBzZWxlY3Rpb25Nb2RlbCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgc2VsZWN0aW9uTW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb25Nb2RlbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGlvbk1vZGVsPFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGFjdGl2ZU9wdGlvbiQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZU9wdGlvbiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IGFjdGl2ZU9wdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlT3B0aW9uJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVPcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgc3dpdGNoTWFwKChtb2RlbCkgPT4gbW9kZWw/LmZpbHRlcmVkT3B0aW9ucyQgPz8gb2YoW10pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX3Jlc2V0QWN0aXZlT3B0aW9ucygpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbk1vZGVsKHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbCQubmV4dChzZWxlY3Rpb25Nb2RlbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGV2YWx1YXRlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuYWN0aXZlT3B0aW9uO1xuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGlvbk1vZGVsIHx8ICFhY3RpdmVPcHRpb24pIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2VsZWN0aW9uTW9kZWw/LmdldE9wdGlvbkluZGV4KGFjdGl2ZU9wdGlvbik7XG5cbiAgICBpZiAoY3VycmVudEluZGV4ID09PSBudWxsKSByZXR1cm47XG5cbiAgICBsZXQgbmV3QWN0aXZlT3B0aW9uOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgICB7XG4gICAgICAgICAgbmV3QWN0aXZlT3B0aW9uID0gdGhpcy5zZWxlY3Rpb25Nb2RlbD8uZ2V0T3B0aW9uQnlPZmZzZXQoMSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVVBfQVJST1c6XG4gICAgICAgIHtcbiAgICAgICAgICBuZXdBY3RpdmVPcHRpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGVsPy5nZXRPcHRpb25CeU9mZnNldCgtMSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUEFHRV9VUDpcbiAgICAgICAge1xuICAgICAgICAgIG5ld0FjdGl2ZU9wdGlvbiA9IHRoaXMuc2VsZWN0aW9uTW9kZWw/LmdldE9wdGlvbkJ5T2Zmc2V0KC0xMCwgY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUEFHRV9ET1dOOlxuICAgICAgICB7XG4gICAgICAgICAgbmV3QWN0aXZlT3B0aW9uID0gdGhpcy5zZWxlY3Rpb25Nb2RlbD8uZ2V0T3B0aW9uQnlPZmZzZXQoMTAsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEhPTUU6XG4gICAgICAgIHtcbiAgICAgICAgICBuZXdBY3RpdmVPcHRpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGVsPy5nZXRGaXJzdE9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFTkQ6XG4gICAgICAgIHtcbiAgICAgICAgICBuZXdBY3RpdmVPcHRpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGVsPy5nZXRMYXN0T3B0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG5ld0FjdGl2ZU9wdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGlmIChuZXdBY3RpdmVPcHRpb24gIT09IGFjdGl2ZU9wdGlvbiAmJiBuZXdBY3RpdmVPcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fYWN0aXZlT3B0aW9uJC5uZXh0KG5ld0FjdGl2ZU9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRBY3RpdmVPcHRpb25zKCkge1xuICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gdGhpcy5zZWxlY3Rpb25Nb2RlbD8uZ2V0Rmlyc3RPcHRpb24oKTtcblxuICAgIHRoaXMuX2FjdGl2ZU9wdGlvbiQubmV4dChmaXJzdE9wdGlvbiA/PyBudWxsKTtcbiAgfVxufVxuIl19
@@ -1,3 +1,4 @@
1
+ export * from './active-selection-model.utils';
1
2
  export * from './animation.utils';
2
3
  export * from './clamp.util';
3
4
  export * from './clone.util';
@@ -12,4 +13,4 @@ export * from './scrollable.utils';
12
13
  export * from './selection-model.utils';
13
14
  export * from './smart-block-scroll-strategy.utils';
14
15
  export * from './viewport.util';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FuaW1hdGlvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYW1wLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG9uZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY29va2llLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUtZXJyb3IudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yeGpzLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsYWJsZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1tb2RlbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0LWJsb2NrLXNjcm9sbC1zdHJhdGVneS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0LnV0aWwnO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aXZlLXNlbGVjdGlvbi1tb2RlbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2FuaW1hdGlvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYW1wLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG9uZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY29va2llLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUtZXJyb3IudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yeGpzLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsYWJsZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1tb2RlbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0LWJsb2NrLXNjcm9sbC1zdHJhdGVneS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0LnV0aWwnO1xuIl19
@@ -184,13 +184,13 @@ export class SelectionModel {
184
184
  }
185
185
  return this.getOptionByIndex(newIndex);
186
186
  }
187
- getFirstOption(options = this.options) {
187
+ getFirstOption(options = this.getFilteredOptions()) {
188
188
  return this.getOptionByIndex(0, options);
189
189
  }
190
- getLastOption(options = this.options) {
190
+ getLastOption(options = this.getFilteredOptions()) {
191
191
  return this.getOptionByIndex(options.length - 1, options);
192
192
  }
193
- getOptionIndex(option, options = this.options) {
193
+ getOptionIndex(option, options = this.getFilteredOptions()) {
194
194
  const key = this.getKey(option);
195
195
  const index = options.findIndex((o) => this.getKey(o) === key);
196
196
  return index === -1 ? null : index;
@@ -289,4 +289,4 @@ export class SelectionModel {
289
289
  }
290
290
  }
291
291
  }
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGVsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2VsZWN0aW9uLW1vZGVsLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQW9DLEVBQUU7SUFDcEUsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBNEIsRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUN2RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTFDLElBQUksQ0FBQyxjQUFjO1FBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU5QixJQUFJLEtBQUssR0FBWSxHQUFHLENBQUM7SUFFekIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV2QyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFJRixNQUFNLE9BQU8sY0FBYztJQUEzQjtRQU9tQixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBUTNDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQVF6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QUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVsSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7YUFBTTtZQUNMLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFaEgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcblxuY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufTtcblxuY29uc3QgZ2V0T2JqZWN0UHJvcGVydHkgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcHJvcDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGhhc0RvdE5vdGF0aW9uID0gcHJvcC5pbmNsdWRlcygnLicpO1xuXG4gIGlmICghaGFzRG90Tm90YXRpb24pIHJldHVybiBvYmpbcHJvcF07XG5cbiAgY29uc3QgcHJvcHMgPSBwcm9wLnNwbGl0KCcuJyk7XG5cbiAgbGV0IHZhbHVlOiB1bmtub3duID0gb2JqO1xuXG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgIGlmICghaXNPYmplY3QodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgdmFsdWUgPSB2YWx1ZVtwcm9wXTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbnR5cGUgU2VsZWN0aW9uTW9kZWxUeXBlcyA9IHN0cmluZyB8IG51bWJlciB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsPFQgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbFR5cGVzID0gdW5rbm93bj4ge1xuICBnZXQgc2VsZWN0aW9uJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24kLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuXG4gIGdldCBvcHRpb25zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcblxuICBnZXQgdmFsdWVCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVCaW5kaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgdmFsdWVCaW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUJpbmRpbmckLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlQmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBrZXlCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fa2V5QmluZGluZyQsIHRoaXMudmFsdWVCaW5kaW5nJF0pLnBpcGUoXG4gICAgICBtYXAoKFtrZXlCaW5kaW5nLCB2YWx1ZUJpbmRpbmddKSA9PiBrZXlCaW5kaW5nIHx8IHZhbHVlQmluZGluZyksXG4gICAgKTtcbiAgfVxuICBnZXQga2V5QmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5QmluZGluZyQudmFsdWUgfHwgdGhpcy52YWx1ZUJpbmRpbmc7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfa2V5QmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBsYWJlbEJpbmRpbmckKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbEJpbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBsYWJlbEJpbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQmluZGluZyQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWxCaW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGFsbG93TXVsdGlwbGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd011bHRpcGxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgYWxsb3dNdWx0aXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dNdWx0aXBsZSQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWxsb3dNdWx0aXBsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgZmlsdGVyJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgZmlsdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXIkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0aW9uJCwgdGhpcy52YWx1ZUJpbmRpbmckLCB0aGlzLmFsbG93TXVsdGlwbGUkXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3Rpb24sIHZhbHVlQmluZGluZywgYWxsb3dNdWx0aXBsZV0pID0+IHtcbiAgICAgIGlmIChhbGxvd011bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24ubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB2YWx1ZUJpbmRpbmcpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW29wdGlvbl0gPSBzZWxlY3Rpb247XG5cbiAgICAgIGlmICghb3B0aW9uKSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB2YWx1ZUJpbmRpbmcpO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkT3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLmZpbHRlciQsIHRoaXMubGFiZWxCaW5kaW5nJF0pLnBpcGUoXG4gICAgbWFwKChbb3B0aW9ucywgZmlsdGVyXSkgPT4gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoZmlsdGVyLCBvcHRpb25zKSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zQW5kU2VsZWN0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX29wdGlvbnMkLCB0aGlzLl9zZWxlY3Rpb24kXSk7XG5cbiAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbjogVCB8IFRbXSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pKSB7XG4gICAgICBzZWxlY3Rpb24gPSBbc2VsZWN0aW9uXTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoc2VsZWN0aW9uKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VmFsdWVCaW5kaW5nKHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlQmluZGluZyQubmV4dChwcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRLZXlCaW5kaW5nKHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2tleUJpbmRpbmckLm5leHQocHJvcGVydHlQYXRoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TGFiZWxCaW5kaW5nKHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2xhYmVsQmluZGluZyQubmV4dChwcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IFRbXSkge1xuICAgIHRoaXMuX29wdGlvbnMkLm5leHQob3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEFsbG93TXVsdGlwbGUoYWxsb3dNdWx0aXBsZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2FsbG93TXVsdGlwbGUkLm5leHQoYWxsb3dNdWx0aXBsZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEZpbHRlcihmaWx0ZXI6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBzYW5pdGl6ZWRGaWx0ZXIgPSBmaWx0ZXI/LnRyaW0oKSB8fCAnJztcblxuICAgIHRoaXMuX2ZpbHRlciQubmV4dChzYW5pdGl6ZWRGaWx0ZXIpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtdKTtcbiAgICB0aGlzLl9vcHRpb25zJC5uZXh0KFtdKTtcbiAgICB0aGlzLl92YWx1ZUJpbmRpbmckLm5leHQobnVsbCk7XG4gICAgdGhpcy5fa2V5QmluZGluZyQubmV4dChudWxsKTtcbiAgICB0aGlzLl9sYWJlbEJpbmRpbmckLm5leHQobnVsbCk7XG4gICAgdGhpcy5fYWxsb3dNdWx0aXBsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBnZXRPcHRpb25CeVZhbHVlJCh2YWx1ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpKSk7XG4gIH1cblxuICBnZXRPcHRpb25CeUxhYmVsJChsYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNBbmRTZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuZ2V0T3B0aW9uQnlMYWJlbChsYWJlbCkpKTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5S2V5JChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5S2V5KGtleSkpKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSk7XG4gIH1cblxuICBnZXRMYWJlbCQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxCaW5kaW5nJC5waXBlKG1hcCgobGFiZWxCaW5kaW5nKSA9PiB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgbGFiZWxCaW5kaW5nKSkpO1xuICB9XG5cbiAgZ2V0VmFsdWUkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQmluZGluZyQucGlwZShtYXAoKHZhbHVlQmluZGluZykgPT4gdGhpcy5nZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHZhbHVlQmluZGluZykpKTtcbiAgfVxuXG4gIGdldEtleSQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5QmluZGluZyQucGlwZShtYXAoKGtleUJpbmRpbmcpID0+IHRoaXMuZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCBrZXlCaW5kaW5nKSkpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbih2YWx1ZSwgdGhpcy52YWx1ZUJpbmRpbmcpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlMYWJlbChsYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uKGxhYmVsLCB0aGlzLmxhYmVsQmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb25CeUtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbihrZXksIHRoaXMua2V5QmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb24odmFsdWU6IHVua25vd24sIHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIG9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCAuLi50aGlzLnNlbGVjdGlvbl0pIHtcbiAgICBpZiAoIXByb3BlcnR5UGF0aCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIGlmICghaXNPYmplY3Qob3B0aW9uKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gZ2V0T2JqZWN0UHJvcGVydHkob3B0aW9uLCBwcm9wZXJ0eVBhdGgpID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5SW5kZXgoaW5kZXg6IG51bWJlciwgb3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCkpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIG9wdGlvbnNbaW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBnZXRPcHRpb25CeU9mZnNldChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpLFxuICAgIGNvbmZpZzogeyBsb29wPzogYm9vbGVhbjsgY2xhbXA/OiBib29sZWFuIH0gPSB7IGNsYW1wOiB0cnVlIH0sXG4gICk6IFQgfCBudWxsIHtcbiAgICBjb25zdCB7IGxvb3AsIGNsYW1wIH0gPSBjb25maWc7XG5cbiAgICBjb25zdCBuZXdJbmRleCA9IGluZGV4ICsgb2Zmc2V0O1xuICAgIGNvbnN0IHJlbWFpbmluZ09mZnNldCA9IG5ld0luZGV4ICogLTE7XG5cbiAgICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICBpZiAobG9vcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeU9mZnNldChyZW1haW5pbmdPZmZzZXQsIG9wdGlvbnMubGVuZ3RoIC0gMSwgb3B0aW9ucywgY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNsYW1wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpcnN0T3B0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChuZXdJbmRleCA+PSBvcHRpb25zLmxlbmd0aCkge1xuICAgICAgaWYgKGxvb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uQnlPZmZzZXQocmVtYWluaW5nT2Zmc2V0LCAwLCBvcHRpb25zLCBjb25maWcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2xhbXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFzdE9wdGlvbigpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeUluZGV4KG5ld0luZGV4KTtcbiAgfVxuXG4gIGdldEZpcnN0T3B0aW9uKG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uQnlJbmRleCgwLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldExhc3RPcHRpb24ob3B0aW9ucyA9IHRoaXMub3B0aW9ucyk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeUluZGV4KG9wdGlvbnMubGVuZ3RoIC0gMSwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRPcHRpb25JbmRleChvcHRpb246IFQsIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShvcHRpb24pO1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IHRoaXMuZ2V0S2V5KG8pID09PSBrZXkpO1xuXG4gICAgcmV0dXJuIGluZGV4ID09PSAtMSA/IG51bGwgOiBpbmRleDtcbiAgfVxuXG4gIGdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb24oKTogVCB8IG51bGwge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uWzBdIHx8IG51bGw7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZVNlbGVjdGVkT3B0aW9uSW5kZXgoKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBvcHQgPSB0aGlzLmdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb24oKTtcblxuICAgIGlmICghb3B0KSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkluZGV4KG9wdCk7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZU9wdGlvbkJ5T2Zmc2V0RnJvbVNlbGVjdGVkKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGNvbmZpZzogeyBsb29wPzogYm9vbGVhbjsgY2xhbXA/OiBib29sZWFuIH0gPSB7IGNsYW1wOiB0cnVlIH0sXG4gICkge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5T2Zmc2V0KGluZGV4LCBvZmZzZXQsIHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCksIGNvbmZpZyk7XG4gIH1cblxuICBnZXRMYWJlbChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMubGFiZWxCaW5kaW5nKTtcbiAgfVxuXG4gIGdldFZhbHVlKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy52YWx1ZUJpbmRpbmcpO1xuICB9XG5cbiAgZ2V0S2V5KG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcbiAgfVxuXG4gIGdldE9wdGlvblByb3BlcnR5KG9wdGlvbjogVCwgcHJvcGVydHlQYXRoOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKCFwcm9wZXJ0eVBhdGggfHwgIWlzT2JqZWN0KG9wdGlvbikpIHJldHVybiBvcHRpb247XG5cbiAgICByZXR1cm4gZ2V0T2JqZWN0UHJvcGVydHkob3B0aW9uLCBwcm9wZXJ0eVBhdGgpO1xuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IFQpIHtcbiAgICBjb25zdCBvcHRpb25LZXkgPSB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbihvcHRpb25LZXksIHRoaXMua2V5QmluZGluZywgdGhpcy5zZWxlY3Rpb24pICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRGaWx0ZXJlZE9wdGlvbnMoZmlsdGVyID0gdGhpcy5maWx0ZXIsIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMpIHtcbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9wdGlvbnM7XG5cbiAgICBjb25zdCBzcGxpdEZpbHRlciA9IGZpbHRlci5zcGxpdCgnICcpLmZpbHRlcigoZikgPT4gZik7XG5cbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldExhYmVsKG9wdGlvbik7XG5cbiAgICAgIGlmICghbGFiZWwgfHwgdHlwZW9mIGxhYmVsICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBzcGxpdExhYmVsID0gbGFiZWwuc3BsaXQoJyAnKS5maWx0ZXIoKGwpID0+IGwpO1xuXG4gICAgICByZXR1cm4gc3BsaXRGaWx0ZXIuZXZlcnkoKGYpID0+IHNwbGl0TGFiZWwuc29tZSgobCkgPT4gbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVCkge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkgcmV0dXJuO1xuXG4gICAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoWy4uLnRoaXMuc2VsZWN0aW9uLCBvcHRpb25dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtvcHRpb25dKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb246IFQpIHtcbiAgICBjb25zdCBvcHRpb25LZXkgPSB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHJldHVybjtcblxuICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbHRlcigoc2VsZWN0ZWRPcHRpb24pID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRPcHRpb25Qcm9wZXJ0eShzZWxlY3RlZE9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgICAgICByZXR1cm4ga2V5ICE9PSBvcHRpb25LZXk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtdKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQWxsU2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCk7XG4gICAgY29uc3QgdW5zZWxlY3RlZE9wdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+ICF0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSk7XG5cbiAgICBpZiAodW5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB1bnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIoKG8pID0+ICF0aGlzLnNlbGVjdGlvbi5zb21lKChzKSA9PiB0aGlzLmdldEtleShzKSA9PT0gdGhpcy5nZXRLZXkobykpKTtcblxuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFsuLi50aGlzLnNlbGVjdGlvbiwgLi4uc2VsZWN0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcigocykgPT4gIWZpbHRlcmVkT3B0aW9ucy5zb21lKChvKSA9PiB0aGlzLmdldEtleShvKSA9PT0gdGhpcy5nZXRLZXkocykpKTtcblxuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KHNlbGVjdGlvbik7XG4gICAgfVxuICB9XG59XG4iXX0=
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGVsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2VsZWN0aW9uLW1vZGVsLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQW9DLEVBQUU7SUFDcEUsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBNEIsRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUN2RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTFDLElBQUksQ0FBQyxjQUFjO1FBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU5QixJQUFJLEtBQUssR0FBWSxHQUFHLENBQUM7SUFFekIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV2QyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFJRixNQUFNLE9BQU8sY0FBYztJQUEzQjtRQU9tQixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBUTNDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQVF6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QUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVsSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7YUFBTTtZQUNMLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFaEgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcblxuY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufTtcblxuY29uc3QgZ2V0T2JqZWN0UHJvcGVydHkgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcHJvcDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGhhc0RvdE5vdGF0aW9uID0gcHJvcC5pbmNsdWRlcygnLicpO1xuXG4gIGlmICghaGFzRG90Tm90YXRpb24pIHJldHVybiBvYmpbcHJvcF07XG5cbiAgY29uc3QgcHJvcHMgPSBwcm9wLnNwbGl0KCcuJyk7XG5cbiAgbGV0IHZhbHVlOiB1bmtub3duID0gb2JqO1xuXG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgIGlmICghaXNPYmplY3QodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgdmFsdWUgPSB2YWx1ZVtwcm9wXTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbnR5cGUgU2VsZWN0aW9uTW9kZWxUeXBlcyA9IHN0cmluZyB8IG51bWJlciB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsPFQgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbFR5cGVzID0gdW5rbm93bj4ge1xuICBnZXQgc2VsZWN0aW9uJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24kLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuXG4gIGdldCBvcHRpb25zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcblxuICBnZXQgdmFsdWVCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVCaW5kaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgdmFsdWVCaW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUJpbmRpbmckLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlQmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBrZXlCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fa2V5QmluZGluZyQsIHRoaXMudmFsdWVCaW5kaW5nJF0pLnBpcGUoXG4gICAgICBtYXAoKFtrZXlCaW5kaW5nLCB2YWx1ZUJpbmRpbmddKSA9PiBrZXlCaW5kaW5nIHx8IHZhbHVlQmluZGluZyksXG4gICAgKTtcbiAgfVxuICBnZXQga2V5QmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5QmluZGluZyQudmFsdWUgfHwgdGhpcy52YWx1ZUJpbmRpbmc7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfa2V5QmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBsYWJlbEJpbmRpbmckKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbEJpbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBsYWJlbEJpbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQmluZGluZyQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWxCaW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGFsbG93TXVsdGlwbGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd011bHRpcGxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgYWxsb3dNdWx0aXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dNdWx0aXBsZSQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWxsb3dNdWx0aXBsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgZmlsdGVyJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgZmlsdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXIkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0aW9uJCwgdGhpcy52YWx1ZUJpbmRpbmckLCB0aGlzLmFsbG93TXVsdGlwbGUkXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3Rpb24sIHZhbHVlQmluZGluZywgYWxsb3dNdWx0aXBsZV0pID0+IHtcbiAgICAgIGlmIChhbGxvd011bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24ubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB2YWx1ZUJpbmRpbmcpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW29wdGlvbl0gPSBzZWxlY3Rpb247XG5cbiAgICAgIGlmICghb3B0aW9uKSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB2YWx1ZUJpbmRpbmcpO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkT3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLmZpbHRlciQsIHRoaXMubGFiZWxCaW5kaW5nJF0pLnBpcGUoXG4gICAgbWFwKChbb3B0aW9ucywgZmlsdGVyXSkgPT4gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoZmlsdGVyLCBvcHRpb25zKSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zQW5kU2VsZWN0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX29wdGlvbnMkLCB0aGlzLl9zZWxlY3Rpb24kXSk7XG5cbiAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbjogVCB8IFRbXSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pKSB7XG4gICAgICBzZWxlY3Rpb24gPSBbc2VsZWN0aW9uXTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoc2VsZWN0aW9uKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VmFsdWVCaW5kaW5nKHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlQmluZGluZyQubmV4dChwcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRLZXlCaW5kaW5nKHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2tleUJpbmRpbmckLm5leHQocHJvcGVydHlQYXRoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TGFiZWxCaW5kaW5nKHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2xhYmVsQmluZGluZyQubmV4dChwcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IFRbXSkge1xuICAgIHRoaXMuX29wdGlvbnMkLm5leHQob3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEFsbG93TXVsdGlwbGUoYWxsb3dNdWx0aXBsZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2FsbG93TXVsdGlwbGUkLm5leHQoYWxsb3dNdWx0aXBsZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEZpbHRlcihmaWx0ZXI6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBzYW5pdGl6ZWRGaWx0ZXIgPSBmaWx0ZXI/LnRyaW0oKSB8fCAnJztcblxuICAgIHRoaXMuX2ZpbHRlciQubmV4dChzYW5pdGl6ZWRGaWx0ZXIpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtdKTtcbiAgICB0aGlzLl9vcHRpb25zJC5uZXh0KFtdKTtcbiAgICB0aGlzLl92YWx1ZUJpbmRpbmckLm5leHQobnVsbCk7XG4gICAgdGhpcy5fa2V5QmluZGluZyQubmV4dChudWxsKTtcbiAgICB0aGlzLl9sYWJlbEJpbmRpbmckLm5leHQobnVsbCk7XG4gICAgdGhpcy5fYWxsb3dNdWx0aXBsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBnZXRPcHRpb25CeVZhbHVlJCh2YWx1ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpKSk7XG4gIH1cblxuICBnZXRPcHRpb25CeUxhYmVsJChsYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNBbmRTZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuZ2V0T3B0aW9uQnlMYWJlbChsYWJlbCkpKTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5S2V5JChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5S2V5KGtleSkpKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSk7XG4gIH1cblxuICBnZXRMYWJlbCQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxCaW5kaW5nJC5waXBlKG1hcCgobGFiZWxCaW5kaW5nKSA9PiB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgbGFiZWxCaW5kaW5nKSkpO1xuICB9XG5cbiAgZ2V0VmFsdWUkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQmluZGluZyQucGlwZShtYXAoKHZhbHVlQmluZGluZykgPT4gdGhpcy5nZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHZhbHVlQmluZGluZykpKTtcbiAgfVxuXG4gIGdldEtleSQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5QmluZGluZyQucGlwZShtYXAoKGtleUJpbmRpbmcpID0+IHRoaXMuZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCBrZXlCaW5kaW5nKSkpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbih2YWx1ZSwgdGhpcy52YWx1ZUJpbmRpbmcpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlMYWJlbChsYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uKGxhYmVsLCB0aGlzLmxhYmVsQmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb25CeUtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbihrZXksIHRoaXMua2V5QmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb24odmFsdWU6IHVua25vd24sIHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIG9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCAuLi50aGlzLnNlbGVjdGlvbl0pIHtcbiAgICBpZiAoIXByb3BlcnR5UGF0aCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIGlmICghaXNPYmplY3Qob3B0aW9uKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gZ2V0T2JqZWN0UHJvcGVydHkob3B0aW9uLCBwcm9wZXJ0eVBhdGgpID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5SW5kZXgoaW5kZXg6IG51bWJlciwgb3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCkpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIG9wdGlvbnNbaW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBnZXRPcHRpb25CeU9mZnNldChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpLFxuICAgIGNvbmZpZzogeyBsb29wPzogYm9vbGVhbjsgY2xhbXA/OiBib29sZWFuIH0gPSB7IGNsYW1wOiB0cnVlIH0sXG4gICk6IFQgfCBudWxsIHtcbiAgICBjb25zdCB7IGxvb3AsIGNsYW1wIH0gPSBjb25maWc7XG5cbiAgICBjb25zdCBuZXdJbmRleCA9IGluZGV4ICsgb2Zmc2V0O1xuICAgIGNvbnN0IHJlbWFpbmluZ09mZnNldCA9IG5ld0luZGV4ICogLTE7XG5cbiAgICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICBpZiAobG9vcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeU9mZnNldChyZW1haW5pbmdPZmZzZXQsIG9wdGlvbnMubGVuZ3RoIC0gMSwgb3B0aW9ucywgY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNsYW1wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpcnN0T3B0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChuZXdJbmRleCA+PSBvcHRpb25zLmxlbmd0aCkge1xuICAgICAgaWYgKGxvb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uQnlPZmZzZXQocmVtYWluaW5nT2Zmc2V0LCAwLCBvcHRpb25zLCBjb25maWcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2xhbXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFzdE9wdGlvbigpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeUluZGV4KG5ld0luZGV4KTtcbiAgfVxuXG4gIGdldEZpcnN0T3B0aW9uKG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5SW5kZXgoMCwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRMYXN0T3B0aW9uKG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5SW5kZXgob3B0aW9ucy5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldE9wdGlvbkluZGV4KG9wdGlvbjogVCwgb3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShvcHRpb24pO1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IHRoaXMuZ2V0S2V5KG8pID09PSBrZXkpO1xuXG4gICAgcmV0dXJuIGluZGV4ID09PSAtMSA/IG51bGwgOiBpbmRleDtcbiAgfVxuXG4gIGdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb24oKTogVCB8IG51bGwge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uWzBdIHx8IG51bGw7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZVNlbGVjdGVkT3B0aW9uSW5kZXgoKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBvcHQgPSB0aGlzLmdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb24oKTtcblxuICAgIGlmICghb3B0KSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkluZGV4KG9wdCk7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZU9wdGlvbkJ5T2Zmc2V0RnJvbVNlbGVjdGVkKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGNvbmZpZzogeyBsb29wPzogYm9vbGVhbjsgY2xhbXA/OiBib29sZWFuIH0gPSB7IGNsYW1wOiB0cnVlIH0sXG4gICkge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5T2Zmc2V0KGluZGV4LCBvZmZzZXQsIHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCksIGNvbmZpZyk7XG4gIH1cblxuICBnZXRMYWJlbChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMubGFiZWxCaW5kaW5nKTtcbiAgfVxuXG4gIGdldFZhbHVlKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy52YWx1ZUJpbmRpbmcpO1xuICB9XG5cbiAgZ2V0S2V5KG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcbiAgfVxuXG4gIGdldE9wdGlvblByb3BlcnR5KG9wdGlvbjogVCwgcHJvcGVydHlQYXRoOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKCFwcm9wZXJ0eVBhdGggfHwgIWlzT2JqZWN0KG9wdGlvbikpIHJldHVybiBvcHRpb247XG5cbiAgICByZXR1cm4gZ2V0T2JqZWN0UHJvcGVydHkob3B0aW9uLCBwcm9wZXJ0eVBhdGgpO1xuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IFQpIHtcbiAgICBjb25zdCBvcHRpb25LZXkgPSB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbihvcHRpb25LZXksIHRoaXMua2V5QmluZGluZywgdGhpcy5zZWxlY3Rpb24pICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRGaWx0ZXJlZE9wdGlvbnMoZmlsdGVyID0gdGhpcy5maWx0ZXIsIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMpIHtcbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9wdGlvbnM7XG5cbiAgICBjb25zdCBzcGxpdEZpbHRlciA9IGZpbHRlci5zcGxpdCgnICcpLmZpbHRlcigoZikgPT4gZik7XG5cbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldExhYmVsKG9wdGlvbik7XG5cbiAgICAgIGlmICghbGFiZWwgfHwgdHlwZW9mIGxhYmVsICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBzcGxpdExhYmVsID0gbGFiZWwuc3BsaXQoJyAnKS5maWx0ZXIoKGwpID0+IGwpO1xuXG4gICAgICByZXR1cm4gc3BsaXRGaWx0ZXIuZXZlcnkoKGYpID0+IHNwbGl0TGFiZWwuc29tZSgobCkgPT4gbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVCkge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkgcmV0dXJuO1xuXG4gICAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoWy4uLnRoaXMuc2VsZWN0aW9uLCBvcHRpb25dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtvcHRpb25dKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb246IFQpIHtcbiAgICBjb25zdCBvcHRpb25LZXkgPSB0aGlzLmdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHJldHVybjtcblxuICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbHRlcigoc2VsZWN0ZWRPcHRpb24pID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRPcHRpb25Qcm9wZXJ0eShzZWxlY3RlZE9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgICAgICByZXR1cm4ga2V5ICE9PSBvcHRpb25LZXk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtdKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQWxsU2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCk7XG4gICAgY29uc3QgdW5zZWxlY3RlZE9wdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+ICF0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSk7XG5cbiAgICBpZiAodW5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB1bnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIoKG8pID0+ICF0aGlzLnNlbGVjdGlvbi5zb21lKChzKSA9PiB0aGlzLmdldEtleShzKSA9PT0gdGhpcy5nZXRLZXkobykpKTtcblxuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFsuLi50aGlzLnNlbGVjdGlvbiwgLi4uc2VsZWN0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcigocykgPT4gIWZpbHRlcmVkT3B0aW9ucy5zb21lKChvKSA9PiB0aGlzLmdldEtleShvKSA9PT0gdGhpcy5nZXRLZXkocykpKTtcblxuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KHNlbGVjdGlvbik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, assertInInjectionContext, DestroyRef, ElementRef, isDevMode, Directive, Injectable, Inject, Optional, NgZone, EventEmitter, Output, Injector, ViewContainerRef, Pipe, QueryList } from '@angular/core';
3
3
  import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
4
- import { Observable, combineLatest, Subject, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, shareReplay, skip, take, tap, debounceTime, merge, fromEvent, filter, switchMap, pairwise, finalize } from 'rxjs';
4
+ import { Subject, BehaviorSubject, takeUntil, switchMap, of, tap, Observable, combineLatest, startWith, map, distinctUntilChanged, shareReplay, skip, take, debounceTime, merge, fromEvent, filter, pairwise, finalize } from 'rxjs';
5
+ import { END, HOME, PAGE_DOWN, PAGE_UP, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
5
6
  import { coerceCssPixelValue, coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
6
7
  import { supportsScrollBehavior } from '@angular/cdk/platform';
7
8
  import { Overlay } from '@angular/cdk/overlay';
@@ -88,6 +89,96 @@ const Memo = (config = {}) => (_, __, descriptor) => {
88
89
  return descriptor;
89
90
  };
90
91
 
92
+ const createDestroy = () => {
93
+ assertInInjectionContext(createDestroy);
94
+ const destroy$ = new Subject();
95
+ const ref = inject(DestroyRef);
96
+ ref.onDestroy(() => {
97
+ destroy$.next(true);
98
+ destroy$.complete();
99
+ });
100
+ return destroy$.asObservable();
101
+ };
102
+
103
+ class ActiveSelectionModel {
104
+ get selectionModel$() {
105
+ return this._selectionModel$.asObservable();
106
+ }
107
+ get selectionModel() {
108
+ return this._selectionModel$.value;
109
+ }
110
+ get activeOption$() {
111
+ return this._activeOption$.asObservable();
112
+ }
113
+ get activeOption() {
114
+ return this._activeOption$.value;
115
+ }
116
+ constructor() {
117
+ this._destroy$ = createDestroy();
118
+ this._selectionModel$ = new BehaviorSubject(null);
119
+ this._activeOption$ = new BehaviorSubject(null);
120
+ this._selectionModel$
121
+ .pipe(takeUntil(this._destroy$), switchMap((model) => model?.filteredOptions$ ?? of([])), tap(() => this._resetActiveOptions()))
122
+ .subscribe();
123
+ }
124
+ setSelectionModel(selectionModel) {
125
+ this._selectionModel$.next(selectionModel);
126
+ return this;
127
+ }
128
+ evaluateKeyboardEvent(event) {
129
+ const keyCode = event.keyCode;
130
+ const activeOption = this.activeOption;
131
+ if (!this.selectionModel || !activeOption)
132
+ return;
133
+ const currentIndex = this.selectionModel?.getOptionIndex(activeOption);
134
+ if (currentIndex === null)
135
+ return;
136
+ let newActiveOption = undefined;
137
+ switch (keyCode) {
138
+ case DOWN_ARROW:
139
+ {
140
+ newActiveOption = this.selectionModel?.getOptionByOffset(1, currentIndex);
141
+ }
142
+ break;
143
+ case UP_ARROW:
144
+ {
145
+ newActiveOption = this.selectionModel?.getOptionByOffset(-1, currentIndex);
146
+ }
147
+ break;
148
+ case PAGE_UP:
149
+ {
150
+ newActiveOption = this.selectionModel?.getOptionByOffset(-10, currentIndex);
151
+ }
152
+ break;
153
+ case PAGE_DOWN:
154
+ {
155
+ newActiveOption = this.selectionModel?.getOptionByOffset(10, currentIndex);
156
+ }
157
+ break;
158
+ case HOME:
159
+ {
160
+ newActiveOption = this.selectionModel?.getFirstOption();
161
+ }
162
+ break;
163
+ case END:
164
+ {
165
+ newActiveOption = this.selectionModel?.getLastOption();
166
+ }
167
+ break;
168
+ }
169
+ if (newActiveOption !== undefined) {
170
+ event.preventDefault();
171
+ }
172
+ if (newActiveOption !== activeOption && newActiveOption !== undefined) {
173
+ this._activeOption$.next(newActiveOption);
174
+ }
175
+ }
176
+ _resetActiveOptions() {
177
+ const firstOption = this.selectionModel?.getFirstOption();
178
+ this._activeOption$.next(firstOption ?? null);
179
+ }
180
+ }
181
+
91
182
  const nextFrame = (cb) => {
92
183
  requestAnimationFrame(() => {
93
184
  requestAnimationFrame(cb);
@@ -330,17 +421,6 @@ const getDomain = () => {
330
421
  return hostname;
331
422
  };
332
423
 
333
- const createDestroy = () => {
334
- assertInInjectionContext(createDestroy);
335
- const destroy$ = new Subject();
336
- const ref = inject(DestroyRef);
337
- ref.onDestroy(() => {
338
- destroy$.next(true);
339
- destroy$.complete();
340
- });
341
- return destroy$.asObservable();
342
- };
343
-
344
424
  /* eslint-disable @typescript-eslint/no-explicit-any */
345
425
  /* eslint-disable no-var */
346
426
  /**
@@ -908,13 +988,13 @@ class SelectionModel {
908
988
  }
909
989
  return this.getOptionByIndex(newIndex);
910
990
  }
911
- getFirstOption(options = this.options) {
991
+ getFirstOption(options = this.getFilteredOptions()) {
912
992
  return this.getOptionByIndex(0, options);
913
993
  }
914
- getLastOption(options = this.options) {
994
+ getLastOption(options = this.getFilteredOptions()) {
915
995
  return this.getOptionByIndex(options.length - 1, options);
916
996
  }
917
- getOptionIndex(option, options = this.options) {
997
+ getOptionIndex(option, options = this.getFilteredOptions()) {
918
998
  const key = this.getKey(option);
919
999
  const index = options.findIndex((o) => this.getKey(o) === key);
920
1000
  return index === -1 ? null : index;
@@ -3465,5 +3545,5 @@ const Validators = {
3465
3545
  * Generated bundle index. Do not edit.
3466
3546
  */
3467
3547
 
3468
- export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AnimatableDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, BehaviorSubjectWithSubscriberCount, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_EMAIL, IsActiveElementDirective, IsArrayNotEmpty, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, Validators, ViewportService, clamp, clone, createDestroy, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isElementVisible, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, scrollToElement, setCookie, toArray, toArrayTrackByFn };
3548
+ export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ActiveSelectionModel, AnimatableDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, BehaviorSubjectWithSubscriberCount, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_EMAIL, IsActiveElementDirective, IsArrayNotEmpty, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, Validators, ViewportService, clamp, clone, createDestroy, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isElementVisible, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, scrollToElement, setCookie, toArray, toArrayTrackByFn };
3469
3549
  //# sourceMappingURL=ethlete-core.mjs.map