@skyux/tabs 9.22.0 → 9.23.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/documentation.json +879 -813
- package/esm2022/lib/modules/vertical-tabset/vertical-tab.component.mjs +24 -25
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-adapter.service.mjs +56 -2
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-group-message.mjs +2 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +66 -22
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-group.service.mjs +17 -0
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset.component.mjs +24 -9
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset.service.mjs +33 -2
- package/fesm2022/skyux-tabs.mjs +205 -55
- package/fesm2022/skyux-tabs.mjs.map +1 -1
- package/lib/modules/vertical-tabset/vertical-tab.component.d.ts +6 -2
- package/lib/modules/vertical-tabset/vertical-tabset-adapter.service.d.ts +4 -0
- package/lib/modules/vertical-tabset/vertical-tabset-group-message.d.ts +3 -0
- package/lib/modules/vertical-tabset/vertical-tabset-group.component.d.ts +6 -5
- package/lib/modules/vertical-tabset/vertical-tabset-group.service.d.ts +11 -0
- package/lib/modules/vertical-tabset/vertical-tabset.component.d.ts +7 -0
- package/lib/modules/vertical-tabset/vertical-tabset.service.d.ts +4 -0
- package/package.json +9 -9
|
@@ -32,10 +32,10 @@ export class SkyVerticalTabsetComponent {
|
|
|
32
32
|
#_ariaRole;
|
|
33
33
|
#resources;
|
|
34
34
|
#changeRef;
|
|
35
|
-
#tabIdSvc;
|
|
36
35
|
constructor(adapterService, tabService, resources, changeRef, tabIdSvc) {
|
|
37
36
|
this.adapterService = adapterService;
|
|
38
37
|
this.tabService = tabService;
|
|
38
|
+
this.tabIdSvc = tabIdSvc;
|
|
39
39
|
/**
|
|
40
40
|
* Whether the vertical tabset loads tab content during initialization so that it
|
|
41
41
|
* displays content without moving around elements in the content container.
|
|
@@ -48,15 +48,11 @@ export class SkyVerticalTabsetComponent {
|
|
|
48
48
|
*/
|
|
49
49
|
this.activeChange = new EventEmitter();
|
|
50
50
|
this.isMobile = false;
|
|
51
|
+
this.tablistHasFocus = false;
|
|
51
52
|
this.#ngUnsubscribe = new Subject();
|
|
52
53
|
this.#_ariaRole = 'tablist';
|
|
53
54
|
this.#resources = resources;
|
|
54
55
|
this.#changeRef = changeRef;
|
|
55
|
-
this.#tabIdSvc = tabIdSvc;
|
|
56
|
-
this.#tabIdSvc.ids.pipe(takeUntil(this.#ngUnsubscribe)).subscribe((ids) => {
|
|
57
|
-
this.ariaOwns = ids.join(' ') || undefined;
|
|
58
|
-
this.#changeRef.markForCheck();
|
|
59
|
-
});
|
|
60
56
|
}
|
|
61
57
|
ngOnInit() {
|
|
62
58
|
this.tabService.maintainTabContent = this.maintainTabContent;
|
|
@@ -101,8 +97,27 @@ export class SkyVerticalTabsetComponent {
|
|
|
101
97
|
this.#ngUnsubscribe.next();
|
|
102
98
|
this.#ngUnsubscribe.complete();
|
|
103
99
|
}
|
|
100
|
+
tabsetFocus() {
|
|
101
|
+
this.tabService.focusActiveTab(this.tabGroups);
|
|
102
|
+
}
|
|
103
|
+
tabGroupsFocusIn() {
|
|
104
|
+
// This will set the tab index of the the vertical tabset element to -1
|
|
105
|
+
// while focus is inside the tab list, allowing Shift+Tab to move
|
|
106
|
+
// to the next element above the tab list element. Otherwise focus would
|
|
107
|
+
// be trapped on the currently focused tab.
|
|
108
|
+
this.tablistHasFocus = true;
|
|
109
|
+
}
|
|
110
|
+
tabGroupsFocusOut() {
|
|
111
|
+
this.tablistHasFocus = false;
|
|
112
|
+
}
|
|
113
|
+
tabGroupsArrowDown() {
|
|
114
|
+
this.adapterService.focusNextButton(this.tabGroups);
|
|
115
|
+
}
|
|
116
|
+
tabGroupsArrowUp() {
|
|
117
|
+
this.adapterService.focusPreviousButton(this.tabGroups);
|
|
118
|
+
}
|
|
104
119
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyVerticalTabsetComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }, { token: i4.SkyTabIdService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SkyVerticalTabsetComponent, selector: "sky-vertical-tabset", inputs: { showTabsText: "showTabsText", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", maintainTabContent: "maintainTabContent" }, outputs: { activeChange: "activeChange" }, providers: [SkyTabIdService, SkyVerticalTabsetService], viewQueries: [{ propertyName: "tabGroups", first: true, predicate: ["groupContainerWrapper"], descendants: true }, { propertyName: "content", first: true, predicate: ["skySideContent"], descendants: true }, { propertyName: "contentWrapper", first: true, predicate: ["contentContainerWrapper"], descendants: true }], ngImport: i0, template: "<div
|
|
120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SkyVerticalTabsetComponent, selector: "sky-vertical-tabset", inputs: { showTabsText: "showTabsText", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", maintainTabContent: "maintainTabContent" }, outputs: { activeChange: "activeChange" }, providers: [SkyTabIdService, SkyVerticalTabsetService], viewQueries: [{ propertyName: "tabGroups", first: true, predicate: ["groupContainerWrapper"], descendants: true }, { propertyName: "content", first: true, predicate: ["skySideContent"], descendants: true }, { propertyName: "contentWrapper", first: true, predicate: ["contentContainerWrapper"], descendants: true }], ngImport: i0, template: "<div\n class=\"sky-vertical-tabset\"\n [tabIndex]=\"tablistHasFocus ? -1 : 0\"\n (focus)=\"tabsetFocus()\"\n>\n <!--\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\n However, the markup for each sky-vertical-tab component includes both the tab button\n and its panel, making the panel element a child of its tablist. Moreover, our\n sky-vertical-tab components can be grouped within collapsible containers, which also\n violates accessibility rules because only tab buttons can be children of a tablist.\n To address this, we create an empty tablist element with an aria-owns attribute,\n pointing to each tab element individually. That way, we don't have to worry about the\n structure for each sky-vertical-tab component in order to satisfy accessibility\n guidelines.\n -->\n <span\n aria-orientation=\"vertical\"\n class=\"sky-vertical-tabset-tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"(tabIdSvc.ids | async)?.join(' ') || undefined\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n ></span>\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n class=\"sky-vertical-tabset-group-container\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n (keydown.arrowdown)=\"tabGroupsArrowDown(); $event.preventDefault()\"\n (keydown.arrowup)=\"tabGroupsArrowUp(); $event.preventDefault()\"\n (focusin)=\"tabGroupsFocusIn()\"\n (focusout)=\"tabGroupsFocusOut()\"\n #groupContainerWrapper\n >\n <ng-content />\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n type=\"button\"\n >\n <sky-icon icon=\"chevron-left\" />\n {{ showTabsText }}\n </button>\n </div>\n</div>\n", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content)>.sky-vertical-tabset{margin:-15px}:host-context(.sky-theme-modern) .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}.sky-theme-modern .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){.sky-theme-modern :host .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: [
|
|
106
121
|
trigger('tabGroupEnter', [
|
|
107
122
|
transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [
|
|
108
123
|
style({ transform: 'translate(-100%)' }),
|
|
@@ -132,7 +147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
132
147
|
animate('150ms ease-in'),
|
|
133
148
|
]),
|
|
134
149
|
]),
|
|
135
|
-
], template: "<div
|
|
150
|
+
], template: "<div\n class=\"sky-vertical-tabset\"\n [tabIndex]=\"tablistHasFocus ? -1 : 0\"\n (focus)=\"tabsetFocus()\"\n>\n <!--\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\n However, the markup for each sky-vertical-tab component includes both the tab button\n and its panel, making the panel element a child of its tablist. Moreover, our\n sky-vertical-tab components can be grouped within collapsible containers, which also\n violates accessibility rules because only tab buttons can be children of a tablist.\n To address this, we create an empty tablist element with an aria-owns attribute,\n pointing to each tab element individually. That way, we don't have to worry about the\n structure for each sky-vertical-tab component in order to satisfy accessibility\n guidelines.\n -->\n <span\n aria-orientation=\"vertical\"\n class=\"sky-vertical-tabset-tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"(tabIdSvc.ids | async)?.join(' ') || undefined\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n ></span>\n <div\n *ngIf=\"maintainTabContent || tabService.tabsVisible()\"\n class=\"sky-vertical-tabset-group-container\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n (keydown.arrowdown)=\"tabGroupsArrowDown(); $event.preventDefault()\"\n (keydown.arrowup)=\"tabGroupsArrowUp(); $event.preventDefault()\"\n (focusin)=\"tabGroupsFocusIn()\"\n (focusout)=\"tabGroupsFocusOut()\"\n #groupContainerWrapper\n >\n <ng-content />\n </div>\n <div\n *ngIf=\"maintainTabContent || tabService.contentVisible()\"\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #contentContainerWrapper\n >\n <div #skySideContent></div>\n <button\n *ngIf=\"!tabService.tabsVisible()\"\n (click)=\"tabService.showTabs()\"\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n type=\"button\"\n >\n <sky-icon icon=\"chevron-left\" />\n {{ showTabsText }}\n </button>\n </div>\n</div>\n", styles: [":host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #cdcfd2}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:10px 0 0 10px;flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:10px}.sky-vertical-tabset-group-container{flex-basis:25%;overflow-y:auto}:host-context(sky-modal-content)>.sky-vertical-tabset{margin:-15px}:host-context(.sky-theme-modern) .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){:host-context(.sky-theme-modern) :host .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-theme-modern) :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}.sky-theme-modern .sky-vertical-tabset-content{margin:15px}@media (min-width: 768px){.sky-theme-modern :host .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:20px 30px}.sky-theme-modern :host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,.sky-theme-modern :host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:1px solid #d2d2d2}\n"] }]
|
|
136
151
|
}], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }, { type: i4.SkyTabIdService }]; }, propDecorators: { showTabsText: [{
|
|
137
152
|
type: Input
|
|
138
153
|
}], ariaLabel: [{
|
|
@@ -155,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
155
170
|
type: ViewChild,
|
|
156
171
|
args: ['contentContainerWrapper']
|
|
157
172
|
}] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixhQUFhLEdBQ2QsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUF1Qm5DLE1BQU0sT0FBTywwQkFBMEI7SUE0QnJDOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBNkJELGNBQWMsQ0FBdUI7SUFDckMsVUFBVSxDQUFhO0lBRXZCLFVBQVUsQ0FBeUI7SUFDbkMsVUFBVSxDQUFvQjtJQUM5QixTQUFTLENBQWtCO0lBRTNCLFlBQ1MsY0FBK0MsRUFDL0MsVUFBb0MsRUFDM0MsU0FBaUMsRUFDakMsU0FBNEIsRUFDNUIsUUFBeUI7UUFKbEIsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBQy9DLGVBQVUsR0FBVixVQUFVLENBQTBCO1FBcEM3Qzs7OztXQUlHO1FBRUksdUJBQWtCLEdBQXdCLEtBQUssQ0FBQztRQUV2RDs7O1dBR0c7UUFFSSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFhMUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUN4QixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDckMsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQWFyQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUUxQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUM7WUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO2FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDN0Q7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlO2FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsR0FBRyxhQUFhLENBQUM7WUFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNoQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxVQUFVO2lCQUNaLFNBQVMsQ0FBQyxvQ0FBb0MsQ0FBQztpQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDdEIsa0JBQWtCO2dCQUNsQiwwQkFBMEI7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztpQkFDOUI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBakpVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLDZQQWpCMUIsQ0FBQyxlQUFlLEVBQUUsd0JBQXdCLENBQUMsc1ZDaEN4RCx3OERBaURBLHM0SERmYztZQUNWLE9BQU8sQ0FBQyxlQUFlLEVBQUU7Z0JBQ3ZCLFVBQVUsQ0FBQyxHQUFHLFlBQVksT0FBTyxhQUFhLEVBQUUsRUFBRTtvQkFDaEQsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxlQUFlLENBQUM7aUJBQ3pCLENBQUM7YUFDSCxDQUFDO1lBQ0YsT0FBTyxDQUFDLGNBQWMsRUFBRTtnQkFDdEIsVUFBVSxDQUFDLEdBQUcsWUFBWSxPQUFPLGFBQWEsRUFBRSxFQUFFO29CQUNoRCxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztvQkFDdkMsT0FBTyxDQUFDLGVBQWUsQ0FBQztpQkFDekIsQ0FBQzthQUNILENBQUM7U0FDSDs7MkZBRVUsMEJBQTBCO2tCQXJCdEMsU0FBUzsrQkFDRSxxQkFBcUIsYUFHcEIsQ0FBQyxlQUFlLEVBQUUsd0JBQXdCLENBQUMsbUJBQ3JDLHVCQUF1QixDQUFDLE1BQU0sY0FDbkM7d0JBQ1YsT0FBTyxDQUFDLGVBQWUsRUFBRTs0QkFDdkIsVUFBVSxDQUFDLEdBQUcsWUFBWSxPQUFPLGFBQWEsRUFBRSxFQUFFO2dDQUNoRCxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLGVBQWUsQ0FBQzs2QkFDekIsQ0FBQzt5QkFDSCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLFVBQVUsQ0FBQyxHQUFHLFlBQVksT0FBTyxhQUFhLEVBQUUsRUFBRTtnQ0FDaEQsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUM7Z0NBQ3ZDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtnUUFTTSxZQUFZO3NCQURsQixLQUFLO2dCQVVDLFNBQVM7c0JBRGYsS0FBSztnQkFXQyxjQUFjO3NCQURwQixLQUFLO2dCQWNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQVFDLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsU0FBUztzQkFEZixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJM0IsT0FBTztzQkFEYixTQUFTO3VCQUFDLGdCQUFnQjtnQkFJcEIsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRhYklkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC90YWItaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgSElEREVOX1NUQVRFLFxuICBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gIFZJU0lCTEVfU1RBVEUsXG59IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lUYWJJZFNlcnZpY2UsIFNreVZlcnRpY2FsVGFic2V0U2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndGFiR3JvdXBFbnRlcicsIFtcbiAgICAgIHRyYW5zaXRpb24oYCR7SElEREVOX1NUQVRFfSA9PiAke1ZJU0lCTEVfU1RBVEV9YCwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCcxNTBtcyBlYXNlLWluJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdjb250ZW50RW50ZXInLCBbXG4gICAgICB0cmFuc2l0aW9uKGAke0hJRERFTl9TVEFURX0gPT4gJHtWSVNJQkxFX1NUQVRFfWAsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCcxNTBtcyBlYXNlLWluJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBvbiB0aGUgc2hvdyB0YWJzIGJ1dHRvbiBvbiBtb2JpbGUgZGV2aWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VGFic1RleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSByb2xlIGZvciB0aGUgdmVydGljYWwgdGFic2V0XG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSlcbiAgICogYnkgaW5kaWNhdGluZyBob3cgdGhlIHRhYnNldCBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICogYW4gQVJJQSByb2xlIGluZGljYXRlcyB3aGF0IGFuIGl0ZW0gcmVwcmVzZW50cyBvbiBhIHdlYiBwYWdlLCBzZWUgdGhlXG4gICAqIFtXQUktQVJJQSByb2xlcyBtb2RlbF0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhLyNyb2xlcykuXG4gICAqIEBkZWZhdWx0IFwidGFibGlzdFwiXG4gICAqIEBkZXByZWNhdGVkIEFueSBvdGhlciB2YWx1ZSB0aGFuIGB0YWJsaXN0YCBjb3VsZCBsZWFkIHRvIGEgcG9vciB1c2VyIGV4cGVyaWVuY2UgZm9yIHVzZXJzIHdpdGggYXNzaXN0aXZlIHRlY2hub2xvZ3kuXG4gICAqIEluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24sIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byBgdGFibGlzdGAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGFyaWFSb2xlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhUm9sZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhUm9sZSA9IHZhbHVlID8/ICd0YWJsaXN0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCB0YWJzZXQgbG9hZHMgdGFiIGNvbnRlbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgaXRcbiAgICogZGlzcGxheXMgY29udGVudCB3aXRob3V0IG1vdmluZyBhcm91bmQgZWxlbWVudHMgaW4gdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1haW50YWluVGFiQ29udGVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIEVtaXRzIHRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHRhYi4gVGhlXG4gICAqIGluZGV4IGlzIGJhc2VkIG9uIHRoZSB0YWIncyBwb3NpdGlvbiB3aGVuIGl0IGxvYWRzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAVmlld0NoaWxkKCdncm91cENvbnRhaW5lcldyYXBwZXInKVxuICBwdWJsaWMgdGFiR3JvdXBzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3NreVNpZGVDb250ZW50JylcbiAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudENvbnRhaW5lcldyYXBwZXInKVxuICBwdWJsaWMgY29udGVudFdyYXBwZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFyaWFPd25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGlzTW9iaWxlID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI19hcmlhUm9sZSA9ICd0YWJsaXN0JztcblxuICAjcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlO1xuICAjY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3RhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFkYXB0ZXJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyB0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gICAgcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgdGFiSWRTdmM6IFNreVRhYklkU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jcmVzb3VyY2VzID0gcmVzb3VyY2VzO1xuICAgIHRoaXMuI2NoYW5nZVJlZiA9IGNoYW5nZVJlZjtcbiAgICB0aGlzLiN0YWJJZFN2YyA9IHRhYklkU3ZjO1xuXG4gICAgdGhpcy4jdGFiSWRTdmMuaWRzLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGlkcykgPT4ge1xuICAgICAgdGhpcy5hcmlhT3ducyA9IGlkcy5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFiU2VydmljZS5tYWludGFpblRhYkNvbnRlbnQgPSB0aGlzLm1haW50YWluVGFiQ29udGVudDtcblxuICAgIHRoaXMudGFiU2VydmljZS5pbmRleENoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGluZGV4OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zY3JvbGxUb0NvbnRlbnRUb3AodGhpcy5jb250ZW50V3JhcHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2Uuc3dpdGNoaW5nTW9iaWxlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IG1vYmlsZTtcbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy50YWJTZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgdGhpcy50YWJTZXJ2aWNlLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd1RhYnNUZXh0KSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdmVydGljYWxfdGFic19zaG93X3RhYnNfdGV4dCcpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RhYnNUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUYWJzVGV4dCA9IHJlc291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuY29udGVudCA9IHRoaXMuY29udGVudDtcbiAgICB0aGlzLnRhYlNlcnZpY2UudXBkYXRlQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXRcIj5cbiAgPCEtLVxuICAgIEFSSUEgcnVsZXMgZG8gbm90IGFsbG93IHRhYnBhbmVsIGVsZW1lbnRzIHRvIGJlIGNoaWxkcmVuIG9mIGEgdGFibGlzdCBlbGVtZW50LlxuICAgIEhvd2V2ZXIsIHRoZSBtYXJrdXAgZm9yIGVhY2ggc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnQgaW5jbHVkZXMgYm90aCB0aGUgdGFiIGJ1dHRvblxuICAgIGFuZCBpdHMgcGFuZWwsIG1ha2luZyB0aGUgcGFuZWwgZWxlbWVudCBhIGNoaWxkIG9mIGl0cyB0YWJsaXN0LiBNb3Jlb3Zlciwgb3VyXG4gICAgc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnRzIGNhbiBiZSBncm91cGVkIHdpdGhpbiBjb2xsYXBzaWJsZSBjb250YWluZXJzLCB3aGljaCBhbHNvXG4gICAgdmlvbGF0ZXMgYWNjZXNzaWJpbGl0eSBydWxlcyBiZWNhdXNlIG9ubHkgdGFiIGJ1dHRvbnMgY2FuIGJlIGNoaWxkcmVuIG9mIGEgdGFibGlzdC5cbiAgICBUbyBhZGRyZXNzIHRoaXMsIHdlIGNyZWF0ZSBhbiBlbXB0eSB0YWJsaXN0IGVsZW1lbnQgd2l0aCBhbiBhcmlhLW93bnMgYXR0cmlidXRlLFxuICAgIHBvaW50aW5nIHRvIGVhY2ggdGFiIGVsZW1lbnQgaW5kaXZpZHVhbGx5LiBUaGF0IHdheSwgd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGVcbiAgICBzdHJ1Y3R1cmUgZm9yIGVhY2ggc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnQgaW4gb3JkZXIgdG8gc2F0aXNmeSBhY2Nlc3NpYmlsaXR5XG4gICAgZ3VpZGVsaW5lcy5cbiAgLS0+XG4gIDxzcGFuXG4gICAgYXJpYS1vcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtdGFibGlzdFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuYXJpYS1vd25zXT1cImFyaWFPd25zXCJcbiAgICBbYXR0ci5yb2xlXT1cImlzTW9iaWxlID8gdW5kZWZpbmVkIDogYXJpYVJvbGVcIlxuICA+PC9zcGFuPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtYWludGFpblRhYkNvbnRlbnQgfHwgdGFiU2VydmljZS50YWJzVmlzaWJsZSgpXCJcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtY29udGFpbmVyXCJcbiAgICBbQHRhYkdyb3VwRW50ZXJdPVwidGFiU2VydmljZS5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlXCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktdmVydGljYWwtdGFic2V0LWhpZGRlbic6ICF0YWJTZXJ2aWNlLnRhYnNWaXNpYmxlKCkgfVwiXG4gID5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwibWFpbnRhaW5UYWJDb250ZW50IHx8IHRhYlNlcnZpY2UuY29udGVudFZpc2libGUoKVwiXG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWNvbnRlbnRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWNvbnRlbnQtaGlkZGVuJzogIXRhYlNlcnZpY2UuY29udGVudFZpc2libGUoKVxuICAgIH1cIlxuICAgIFtAY29udGVudEVudGVyXT1cInRhYlNlcnZpY2UuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZVwiXG4gICAgI2NvbnRlbnRDb250YWluZXJXcmFwcGVyXG4gID5cbiAgICA8ZGl2ICNza3lTaWRlQ29udGVudD48L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiF0YWJTZXJ2aWNlLnRhYnNWaXNpYmxlKClcIlxuICAgICAgKGNsaWNrKT1cInRhYlNlcnZpY2Uuc2hvd1RhYnMoKVwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5IHNreS12ZXJ0aWNhbC10YWJzZXQtc2hvdy10YWJzLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8c2t5LWljb24gaWNvbj1cImNoZXZyb24tbGVmdFwiIC8+XG4gICAgICB7eyBzaG93VGFic1RleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixhQUFhLEdBQ2QsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUF1Qm5DLE1BQU0sT0FBTywwQkFBMEI7SUE0QnJDOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBZ0NELGNBQWMsQ0FBdUI7SUFD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R3BCLENBQUMsZUFBZSxFQUFFLHdCQUF3QixDQUFDLG1CQUNyQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DO3dCQUNWLE9BQU8sQ0FBQyxlQUFlLEVBQUU7NEJBQ3ZCLFVBQVUsQ0FBQyxHQUFHLFlBQVksT0FBTyxhQUFhLEVBQUUsRUFBRTtnQ0FDaEQsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7Z0NBQ3hDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQzt3QkFDRixPQUFPLENBQUMsY0FBYyxFQUFFOzRCQUN0QixVQUFVLENBQUMsR0FBRyxZQUFZLE9BQU8sYUFBYSxFQUFFLEVBQUU7Z0NBQ2hELEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2dDQUN2QyxPQUFPLENBQUMsZUFBZSxDQUFDOzZCQUN6QixDQUFDO3lCQUNILENBQUM7cUJBQ0g7Z1FBU00sWUFBWTtzQkFEbEIsS0FBSztnQkFVQyxTQUFTO3NCQURmLEtBQUs7Z0JBV0MsY0FBYztzQkFEcEIsS0FBSztnQkFjSyxRQUFRO3NCQURsQixLQUFLO2dCQWVDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFRQyxZQUFZO3NCQURsQixNQUFNO2dCQUlBLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBSTNCLE9BQU87c0JBRGIsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSXBCLGNBQWM7c0JBRHBCLFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUYWJJZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvdGFiLWlkLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEhJRERFTl9TVEFURSxcbiAgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICBWSVNJQkxFX1NUQVRFLFxufSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXZlcnRpY2FsLXRhYnNldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC10YWJzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC10YWJzZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5VGFiSWRTZXJ2aWNlLCBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3RhYkdyb3VwRW50ZXInLCBbXG4gICAgICB0cmFuc2l0aW9uKGAke0hJRERFTl9TVEFURX0gPT4gJHtWSVNJQkxFX1NUQVRFfWAsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoLTEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicpLFxuICAgICAgXSksXG4gICAgXSksXG4gICAgdHJpZ2dlcignY29udGVudEVudGVyJywgW1xuICAgICAgdHJhbnNpdGlvbihgJHtISURERU5fU1RBVEV9ID0+ICR7VklTSUJMRV9TVEFURX1gLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFic2V0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgb24gdGhlIHNob3cgdGFicyBidXR0b24gb24gbW9iaWxlIGRldmljZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1RhYnNUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsYCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWxsZWRieSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgcm9sZSBmb3IgdGhlIHZlcnRpY2FsIHRhYnNldFxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIGJ5IGluZGljYXRpbmcgaG93IHRoZSB0YWJzZXQgZnVuY3Rpb25zIGFuZCB3aGF0IGl0IGNvbnRyb2xzLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAqIGFuIEFSSUEgcm9sZSBpbmRpY2F0ZXMgd2hhdCBhbiBpdGVtIHJlcHJlc2VudHMgb24gYSB3ZWIgcGFnZSwgc2VlIHRoZVxuICAgKiBbV0FJLUFSSUEgcm9sZXMgbW9kZWxdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS8jcm9sZXMpLlxuICAgKiBAZGVmYXVsdCBcInRhYmxpc3RcIlxuICAgKiBAZGVwcmVjYXRlZCBBbnkgb3RoZXIgdmFsdWUgdGhhbiBgdGFibGlzdGAgY291bGQgbGVhZCB0byBhIHBvb3IgdXNlciBleHBlcmllbmNlIGZvciB1c2VycyB3aXRoIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICAgKiBJbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHRhYmxpc3RgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfYXJpYVJvbGU7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXJpYVJvbGUgPSB2YWx1ZSA/PyAndGFibGlzdCc7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmVydGljYWwgdGFic2V0IGxvYWRzIHRhYiBjb250ZW50IGR1cmluZyBpbml0aWFsaXphdGlvbiBzbyB0aGF0IGl0XG4gICAqIGRpc3BsYXlzIGNvbnRlbnQgd2l0aG91dCBtb3ZpbmcgYXJvdW5kIGVsZW1lbnRzIGluIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYWludGFpblRhYkNvbnRlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWN0aXZlIHRhYiBjaGFuZ2VzLiBFbWl0cyB0aGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuIFRoZVxuICAgKiBpbmRleCBpcyBiYXNlZCBvbiB0aGUgdGFiJ3MgcG9zaXRpb24gd2hlbiBpdCBsb2Fkcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZ3JvdXBDb250YWluZXJXcmFwcGVyJylcbiAgcHVibGljIHRhYkdyb3VwczogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdza3lTaWRlQ29udGVudCcpXG4gIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXJXcmFwcGVyJylcbiAgcHVibGljIGNvbnRlbnRXcmFwcGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhcmlhT3duczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCB0YWJsaXN0SGFzRm9jdXMgPSBmYWxzZTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNfYXJpYVJvbGUgPSAndGFibGlzdCc7XG5cbiAgI3Jlc291cmNlczogU2t5TGliUmVzb3VyY2VzU2VydmljZTtcbiAgI2NoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFkYXB0ZXJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyB0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gICAgcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHRhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcbiAgICB0aGlzLiNjaGFuZ2VSZWYgPSBjaGFuZ2VSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJTZXJ2aWNlLm1haW50YWluVGFiQ29udGVudCA9IHRoaXMubWFpbnRhaW5UYWJDb250ZW50O1xuXG4gICAgdGhpcy50YWJTZXJ2aWNlLmluZGV4Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zY3JvbGxUb0NvbnRlbnRUb3AodGhpcy5jb250ZW50V3JhcHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2Uuc3dpdGNoaW5nTW9iaWxlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IG1vYmlsZTtcbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy50YWJTZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgdGhpcy50YWJTZXJ2aWNlLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd1RhYnNUZXh0KSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdmVydGljYWxfdGFic19zaG93X3RhYnNfdGV4dCcpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RhYnNUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUYWJzVGV4dCA9IHJlc291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuY29udGVudCA9IHRoaXMuY29udGVudDtcbiAgICB0aGlzLnRhYlNlcnZpY2UudXBkYXRlQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWJzZXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuZm9jdXNBY3RpdmVUYWIodGhpcy50YWJHcm91cHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhYkdyb3Vwc0ZvY3VzSW4oKTogdm9pZCB7XG4gICAgLy8gVGhpcyB3aWxsIHNldCB0aGUgdGFiIGluZGV4IG9mIHRoZSB0aGUgdmVydGljYWwgdGFic2V0IGVsZW1lbnQgdG8gLTFcbiAgICAvLyB3aGlsZSBmb2N1cyBpcyBpbnNpZGUgdGhlIHRhYiBsaXN0LCBhbGxvd2luZyBTaGlmdCtUYWIgdG8gbW92ZVxuICAgIC8vIHRvIHRoZSBuZXh0IGVsZW1lbnQgYWJvdmUgdGhlIHRhYiBsaXN0IGVsZW1lbnQuIE90aGVyd2lzZSBmb2N1cyB3b3VsZFxuICAgIC8vIGJlIHRyYXBwZWQgb24gdGhlIGN1cnJlbnRseSBmb2N1c2VkIHRhYi5cbiAgICB0aGlzLnRhYmxpc3RIYXNGb2N1cyA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGFiR3JvdXBzRm9jdXNPdXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsaXN0SGFzRm9jdXMgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWJHcm91cHNBcnJvd0Rvd24oKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c05leHRCdXR0b24odGhpcy50YWJHcm91cHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhYkdyb3Vwc0Fycm93VXAoKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c1ByZXZpb3VzQnV0dG9uKHRoaXMudGFiR3JvdXBzKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXRcIlxuICBbdGFiSW5kZXhdPVwidGFibGlzdEhhc0ZvY3VzID8gLTEgOiAwXCJcbiAgKGZvY3VzKT1cInRhYnNldEZvY3VzKClcIlxuPlxuICA8IS0tXG4gICAgQVJJQSBydWxlcyBkbyBub3QgYWxsb3cgdGFicGFuZWwgZWxlbWVudHMgdG8gYmUgY2hpbGRyZW4gb2YgYSB0YWJsaXN0IGVsZW1lbnQuXG4gICAgSG93ZXZlciwgdGhlIG1hcmt1cCBmb3IgZWFjaCBza3ktdmVydGljYWwtdGFiIGNvbXBvbmVudCBpbmNsdWRlcyBib3RoIHRoZSB0YWIgYnV0dG9uXG4gICAgYW5kIGl0cyBwYW5lbCwgbWFraW5nIHRoZSBwYW5lbCBlbGVtZW50IGEgY2hpbGQgb2YgaXRzIHRhYmxpc3QuIE1vcmVvdmVyLCBvdXJcbiAgICBza3ktdmVydGljYWwtdGFiIGNvbXBvbmVudHMgY2FuIGJlIGdyb3VwZWQgd2l0aGluIGNvbGxhcHNpYmxlIGNvbnRhaW5lcnMsIHdoaWNoIGFsc29cbiAgICB2aW9sYXRlcyBhY2Nlc3NpYmlsaXR5IHJ1bGVzIGJlY2F1c2Ugb25seSB0YWIgYnV0dG9ucyBjYW4gYmUgY2hpbGRyZW4gb2YgYSB0YWJsaXN0LlxuICAgIFRvIGFkZHJlc3MgdGhpcywgd2UgY3JlYXRlIGFuIGVtcHR5IHRhYmxpc3QgZWxlbWVudCB3aXRoIGFuIGFyaWEtb3ducyBhdHRyaWJ1dGUsXG4gICAgcG9pbnRpbmcgdG8gZWFjaCB0YWIgZWxlbWVudCBpbmRpdmlkdWFsbHkuIFRoYXQgd2F5LCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZVxuICAgIHN0cnVjdHVyZSBmb3IgZWFjaCBza3ktdmVydGljYWwtdGFiIGNvbXBvbmVudCBpbiBvcmRlciB0byBzYXRpc2Z5IGFjY2Vzc2liaWxpdHlcbiAgICBndWlkZWxpbmVzLlxuICAtLT5cbiAgPHNwYW5cbiAgICBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC10YWJsaXN0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwiKHRhYklkU3ZjLmlkcyB8IGFzeW5jKT8uam9pbignICcpIHx8IHVuZGVmaW5lZFwiXG4gICAgW2F0dHIucm9sZV09XCJpc01vYmlsZSA/IHVuZGVmaW5lZCA6IGFyaWFSb2xlXCJcbiAgPjwvc3Bhbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwibWFpbnRhaW5UYWJDb250ZW50IHx8IHRhYlNlcnZpY2UudGFic1Zpc2libGUoKVwiXG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWNvbnRhaW5lclwiXG4gICAgW0B0YWJHcm91cEVudGVyXT1cInRhYlNlcnZpY2UuYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZVwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LXZlcnRpY2FsLXRhYnNldC1oaWRkZW4nOiAhdGFiU2VydmljZS50YWJzVmlzaWJsZSgpIH1cIlxuICAgIChrZXlkb3duLmFycm93ZG93bik9XCJ0YWJHcm91cHNBcnJvd0Rvd24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgIChrZXlkb3duLmFycm93dXApPVwidGFiR3JvdXBzQXJyb3dVcCgpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgKGZvY3VzaW4pPVwidGFiR3JvdXBzRm9jdXNJbigpXCJcbiAgICAoZm9jdXNvdXQpPVwidGFiR3JvdXBzRm9jdXNPdXQoKVwiXG4gICAgI2dyb3VwQ29udGFpbmVyV3JhcHBlclxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1haW50YWluVGFiQ29udGVudCB8fCB0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKClcIlxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1jb250ZW50XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXZlcnRpY2FsLXRhYnNldC1jb250ZW50LWhpZGRlbic6ICF0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKClcbiAgICB9XCJcbiAgICBbQGNvbnRlbnRFbnRlcl09XCJ0YWJTZXJ2aWNlLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGVcIlxuICAgICNjb250ZW50Q29udGFpbmVyV3JhcHBlclxuICA+XG4gICAgPGRpdiAjc2t5U2lkZUNvbnRlbnQ+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhdGFiU2VydmljZS50YWJzVmlzaWJsZSgpXCJcbiAgICAgIChjbGljayk9XCJ0YWJTZXJ2aWNlLnNob3dUYWJzKClcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeSBza3ktdmVydGljYWwtdGFic2V0LXNob3ctdGFicy1idG5cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPHNreS1pY29uIGljb249XCJjaGV2cm9uLWxlZnRcIiAvPlxuICAgICAge3sgc2hvd1RhYnNUZXh0IH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
2
|
import { SkyMediaBreakpoints } from '@skyux/core';
|
|
3
3
|
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
|
|
4
|
+
import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@skyux/core";
|
|
6
7
|
export const VISIBLE_STATE = 'shown';
|
|
@@ -9,10 +10,12 @@ export const HIDDEN_STATE = 'void';
|
|
|
9
10
|
* @internal
|
|
10
11
|
*/
|
|
11
12
|
export class SkyVerticalTabsetService {
|
|
13
|
+
#groups;
|
|
12
14
|
#contentAdded;
|
|
13
15
|
#tabsVisible;
|
|
14
16
|
#isMobile;
|
|
15
17
|
#mediaQueryService;
|
|
18
|
+
#adapterSvc;
|
|
16
19
|
constructor(mediaQueryService) {
|
|
17
20
|
this.activeIndex = undefined;
|
|
18
21
|
this.hidingTabs = new BehaviorSubject(false);
|
|
@@ -23,9 +26,11 @@ export class SkyVerticalTabsetService {
|
|
|
23
26
|
this.tabs = [];
|
|
24
27
|
this.tabAdded = new Subject();
|
|
25
28
|
this.tabClicked = new ReplaySubject(1);
|
|
29
|
+
this.#groups = [];
|
|
26
30
|
this.#contentAdded = false;
|
|
27
31
|
this.#tabsVisible = false;
|
|
28
32
|
this.#isMobile = false;
|
|
33
|
+
this.#adapterSvc = inject(SkyVerticalTabsetAdapterService);
|
|
29
34
|
this.#mediaQueryService = mediaQueryService;
|
|
30
35
|
this.#mediaQueryService.subscribe((breakpoint) => {
|
|
31
36
|
const nowMobile = breakpoint === SkyMediaBreakpoints.xs;
|
|
@@ -82,6 +87,15 @@ export class SkyVerticalTabsetService {
|
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
89
|
}
|
|
90
|
+
addGroup(group) {
|
|
91
|
+
this.#groups.push(group);
|
|
92
|
+
}
|
|
93
|
+
destroyGroup(group) {
|
|
94
|
+
const groupIndex = this.#groups.indexOf(group);
|
|
95
|
+
if (groupIndex >= 0) {
|
|
96
|
+
this.#groups.splice(groupIndex, 1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
85
99
|
activateTab(tab) {
|
|
86
100
|
// deactivate active tab
|
|
87
101
|
const activeTab = this.tabs.find((t) => t.index === this.activeIndex);
|
|
@@ -132,6 +146,23 @@ export class SkyVerticalTabsetService {
|
|
|
132
146
|
this.animationContentVisibleState = HIDDEN_STATE;
|
|
133
147
|
this.showingTabs.next(true);
|
|
134
148
|
}
|
|
149
|
+
focusActiveTab(tabGroups) {
|
|
150
|
+
let focused = false;
|
|
151
|
+
const activeTab = this.tabs.find((tab) => tab.active);
|
|
152
|
+
if (activeTab) {
|
|
153
|
+
const parentGroup = this.#findParentGroup(activeTab);
|
|
154
|
+
const buttonToFocus = parentGroup && !parentGroup.open
|
|
155
|
+
? parentGroup.groupHeadingButton
|
|
156
|
+
: activeTab.tabButton;
|
|
157
|
+
focused = this.#adapterSvc.focusButton(buttonToFocus);
|
|
158
|
+
}
|
|
159
|
+
if (!focused) {
|
|
160
|
+
this.#adapterSvc.focusFirstButton(tabGroups);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
#findParentGroup(tab) {
|
|
164
|
+
return this.#groups.find((group) => group.tabs?.some((groupTab) => tab === groupTab));
|
|
165
|
+
}
|
|
135
166
|
#destroyContent() {
|
|
136
167
|
if (this.content) {
|
|
137
168
|
this.content.nativeElement.innerHTML = '';
|
|
@@ -166,4 +197,4 @@ export class SkyVerticalTabsetService {
|
|
|
166
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{
|
|
167
198
|
type: Injectable
|
|
168
199
|
}], ctorParameters: function () { return [{ type: i1.SkyMediaQueryService }]; } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUF3QixNQUFNLGFBQWEsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUkvRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7QUFFbkM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBeUJuQyxhQUFhLENBQVM7SUFFdEIsWUFBWSxDQUFTO0lBRXJCLFNBQVMsQ0FBUztJQUVsQixrQkFBa0IsQ0FBdUI7SUFFekMsWUFBWSxpQkFBdUM7UUFoQzVDLGdCQUFXLEdBQXVCLFNBQVMsQ0FBQztRQVE1QyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsaUJBQVksR0FBc0MsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsdUJBQWtCLEdBQXdCLEtBQUssQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbEQsU0FBSSxHQUFtQyxFQUFFLENBQUM7UUFFMUMsYUFBUSxHQUFxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTNELGVBQVUsR0FBMkIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENB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QUNWLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVuRSxJQUFJLGFBQWEsSUFBSSxTQUFTLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRTtnQkFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDcEUsU0FBUyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQztZQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsWUFBWSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBbE1VLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cywgU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFiLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBWSVNJQkxFX1NUQVRFID0gJ3Nob3duJztcbmV4cG9ydCBjb25zdCBISURERU5fU1RBVEUgPSAndm9pZCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2Uge1xuICBwdWJsaWMgYWN0aXZlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhpZGluZ1RhYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgaW5kZXhDaGFuZ2VkOiBSZXBsYXlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICBwdWJsaWMgbWFpbnRhaW5UYWJDb250ZW50OiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgcHVibGljIHNob3dpbmdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIHN3aXRjaGluZ01vYmlsZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIHRhYnM6IEFycmF5PFNreVZlcnRpY2FsVGFiQ29tcG9uZW50PiA9IFtdO1xuXG4gIHB1YmxpYyB0YWJBZGRlZDogU3ViamVjdDxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyB0YWJDbGlja2VkOiBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cbiAgI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuXG4gICN0YWJzVmlzaWJsZSA9IGZhbHNlO1xuXG4gICNpc01vYmlsZSA9IGZhbHNlO1xuXG4gICNtZWRpYVF1ZXJ5U2VydmljZTogU2t5TWVkaWFRdWVyeVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IobWVkaWFRdWVyeVNlcnZpY2U6IFNreU1lZGlhUXVlcnlTZXJ2aWNlKSB7XG4gICAgdGhpcy4jbWVkaWFRdWVyeVNlcnZpY2UgPSBtZWRpYVF1ZXJ5U2VydmljZTtcbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS5zdWJzY3JpYmUoKGJyZWFrcG9pbnQpID0+IHtcbiAgICAgIGNvbnN0IG5vd01vYmlsZSA9IGJyZWFrcG9pbnQgPT09IFNreU1lZGlhQnJlYWtwb2ludHMueHM7XG5cbiAgICAgIGlmIChub3dNb2JpbGUgJiYgIXRoaXMuI2lzTW9iaWxlKSB7XG4gICAgICAgIC8vIHN3aXRjaGluZyB0byBtb2JpbGVcbiAgICAgICAgdGhpcy5zd2l0Y2hpbmdNb2JpbGUubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAoIXRoaXMuI3RhYnNWaXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5oaWRpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIW5vd01vYmlsZSAmJiB0aGlzLiNpc01vYmlsZSkge1xuICAgICAgICAvLyBzd2l0Y2hpbmcgdG8gd2lkZXNjcmVlblxuICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KGZhbHNlKTtcblxuICAgICAgICBpZiAoIXRoaXMuI3RhYnNWaXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5zaG93aW5nVGFicy5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2lzTW9iaWxlID0gbm93TW9iaWxlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoO1xuICAgIHRhYi5pbmRleCA9IGluZGV4O1xuXG4gICAgdGhpcy50YWJzLnB1c2godGFiKTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgfVxuXG4gICAgdGhpcy50YWJBZGRlZC5uZXh0KHRhYik7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveVRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZih0YWIpO1xuICAgIGlmICh0YWJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm1haW50YWluVGFiQ29udGVudCAmJlxuICAgICAgdGFiLmNvbnRlbnRSZW5kZXJlZCAmJlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5jb250YWlucyh0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5yZW1vdmVDaGlsZCh0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJzLnNwbGljZSh0YWJJbmRleCwgMSk7XG4gICAgLy8gdXBkYXRlIHRhYiBpbmRpY2VzXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHRhYkl0ZW0sIGluZGV4KSA9PiAodGFiSXRlbS5pbmRleCA9IGluZGV4KSk7XG5cbiAgICBpZiAodGFiLmFjdGl2ZSkge1xuICAgICAgaWYgKCF0aGlzLm1haW50YWluVGFiQ29udGVudCkge1xuICAgICAgICB0aGlzLiNkZXN0cm95Q29udGVudCgpO1xuICAgICAgfVxuICAgICAgLy8gVHJ5IHNlbGVjdGluZyB0aGUgbmV4dCB0YWIgZmlyc3QsIGFuZCBpZiB0aGVyZSdzIG5vIG5leHQgdGFiIHRoZW5cbiAgICAgIC8vIHRyeSBzZWxlY3RpbmcgdGhlIHByZXZpb3VzIG9uZS5cbiAgICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMudGFic1t0YWJJbmRleF0gfHwgdGhpcy50YWJzW3RhYkluZGV4IC0gMV07XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3QWN0aXZlVGFiKSB7XG4gICAgICAgIG5ld0FjdGl2ZVRhYi5hY3RpdmF0ZVRhYigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZVRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgLy8gZGVhY3RpdmF0ZSBhY3RpdmUgdGFiXG4gICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQoKHQpID0+IHQuaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgIGlmIChhY3RpdmVUYWIgJiYgYWN0aXZlVGFiLmluZGV4ICE9PSB0YWIuaW5kZXgpIHtcbiAgICAgIGFjdGl2ZVRhYi5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIGFjdGl2ZVRhYi50YWJEZWFjdGl2YXRlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0YWIuaW5kZXg7XG4gICAgdGhpcy50YWJDbGlja2VkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy4jdXBkYXRlVGFiQ2xpY2tlZCgpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRhYigpOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5maW5kKCh0KSA9PiB0LmluZGV4ID09PSB0aGlzLmFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jaXNNb2JpbGU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuI2NvbnRlbnRBZGRlZCAmJiB0aGlzLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgLy8gY29udGVudCBuZWVkcyB0byBiZSBtb3ZlZFxuICAgICAgICB0aGlzLiNtb3ZlQ29udGVudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLiNjb250ZW50QWRkZWQgJiYgIXRoaXMuY29udGVudFZpc2libGUoKSkge1xuICAgICAgICAvLyBjb250ZW50IGhpZGRlblxuICAgICAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICBpZiAoIXRhYi5jb250ZW50UmVuZGVyZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoXG4gICAgICAgICAgICB0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRhYi5jb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFic1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTW9iaWxlKCkgfHwgdGhpcy4jdGFic1Zpc2libGU7XG4gIH1cblxuICBwdWJsaWMgY29udGVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTW9iaWxlKCkgfHwgIXRoaXMuI3RhYnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIHNob3dUYWJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgIHRoaXMuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZSA9IEhJRERFTl9TVEFURTtcbiAgICB0aGlzLnNob3dpbmdUYWJzLm5leHQodHJ1ZSk7XG4gIH1cblxuICAjZGVzdHJveUNvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY29udGVudCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gICNtb3ZlQ29udGVudCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuI2NvbnRlbnRBZGRlZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5hY3RpdmVUYWIoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUNvbnRlbnQgPSBhY3RpdmVUYWIgPyBhY3RpdmVUYWIudGFiQ29udGVudCA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGFjdGl2ZUNvbnRlbnQgJiYgYWN0aXZlVGFiICYmIGFjdGl2ZUNvbnRlbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChhY3RpdmVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBhY3RpdmVUYWIuY29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy4jY29udGVudEFkZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdXBkYXRlVGFiQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcbiAgICAgIHRoaXMuI3RhYnNWaXNpYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgICAgdGhpcy5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlID0gSElEREVOX1NUQVRFO1xuICAgICAgdGhpcy5oaWRpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmRleENoYW5nZWQubmV4dCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgfVxufVxuIl19
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBd0IsTUFBTSxhQUFhLENBQUM7QUFFeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFHcEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBRW5DOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQXlCbkMsT0FBTyxDQUF5QztJQUVoRCxhQUFhLENBQVM7SUFFdEIsWUFBWSxDQUFTO0lBRXJCLFNBQVMsQ0FBUztJQUVsQixrQkFBa0IsQ0FBdUI7SUFDekMsV0FBVyxDQUEyQztJQUV0RCxZQUFZLGlCQUF1QztRQW5DNUMsZ0JBQVcsR0FBdUIsU0FBUyxDQUFDO1FBUTVDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxpQkFBWSxHQUFzQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RSx1QkFBa0IsR0FBd0IsS0FBSyxDQUFDO1FBRWhELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsb0JBQWUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVsRCxTQUFJLEdBQW1DLEVB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QjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQTlPVSx3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cywgU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgVklTSUJMRV9TVEFURSA9ICdzaG93bic7XG5leHBvcnQgY29uc3QgSElEREVOX1NUQVRFID0gJ3ZvaWQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIHtcbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoaWRpbmdUYWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGluZGV4Q2hhbmdlZDogUmVwbGF5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cbiAgcHVibGljIG1haW50YWluVGFiQ29udGVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93aW5nVGFicyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBzd2l0Y2hpbmdNb2JpbGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyB0YWJzOiBBcnJheTxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gPSBbXTtcblxuICBwdWJsaWMgdGFiQWRkZWQ6IFN1YmplY3Q8U2t5VmVydGljYWxUYWJDb21wb25lbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgdGFiQ2xpY2tlZDogUmVwbGF5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICNncm91cHM6IFNreVZlcnRpY2FsVGFic2V0R3JvdXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICNjb250ZW50QWRkZWQgPSBmYWxzZTtcblxuICAjdGFic1Zpc2libGUgPSBmYWxzZTtcblxuICAjaXNNb2JpbGUgPSBmYWxzZTtcblxuICAjbWVkaWFRdWVyeVNlcnZpY2U6IFNreU1lZGlhUXVlcnlTZXJ2aWNlO1xuICAjYWRhcHRlclN2YyA9IGluamVjdChTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcihtZWRpYVF1ZXJ5U2VydmljZTogU2t5TWVkaWFRdWVyeVNlcnZpY2UpIHtcbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZSA9IG1lZGlhUXVlcnlTZXJ2aWNlO1xuICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLnN1YnNjcmliZSgoYnJlYWtwb2ludCkgPT4ge1xuICAgICAgY29uc3Qgbm93TW9iaWxlID0gYnJlYWtwb2ludCA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcblxuICAgICAgaWYgKG5vd01vYmlsZSAmJiAhdGhpcy4jaXNNb2JpbGUpIHtcbiAgICAgICAgLy8gc3dpdGNoaW5nIHRvIG1vYmlsZVxuICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLmhpZGluZ1RhYnMubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghbm93TW9iaWxlICYmIHRoaXMuI2lzTW9iaWxlKSB7XG4gICAgICAgIC8vIHN3aXRjaGluZyB0byB3aWRlc2NyZWVuXG4gICAgICAgIHRoaXMuc3dpdGNoaW5nTW9iaWxlLm5leHQoZmFsc2UpO1xuXG4gICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLnNob3dpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jaXNNb2JpbGUgPSBub3dNb2JpbGU7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFicy5sZW5ndGg7XG4gICAgdGFiLmluZGV4ID0gaW5kZXg7XG5cbiAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xuXG4gICAgaWYgKHRhYi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVUYWIodGFiKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYkFkZGVkLm5leHQodGFiKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95VGFiKHRhYjogU2t5VmVydGljYWxUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRhYik7XG4gICAgaWYgKHRhYkluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMubWFpbnRhaW5UYWJDb250ZW50ICYmXG4gICAgICB0YWIuY29udGVudFJlbmRlcmVkICYmXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRhYi50YWJDb250ZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYnMuc3BsaWNlKHRhYkluZGV4LCAxKTtcbiAgICAvLyB1cGRhdGUgdGFiIGluZGljZXNcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiSXRlbSwgaW5kZXgpID0+ICh0YWJJdGVtLmluZGV4ID0gaW5kZXgpKTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICAgIHRoaXMuI2Rlc3Ryb3lDb250ZW50KCk7XG4gICAgICB9XG4gICAgICAvLyBUcnkgc2VsZWN0aW5nIHRoZSBuZXh0IHRhYiBmaXJzdCwgYW5kIGlmIHRoZXJlJ3Mgbm8gbmV4dCB0YWIgdGhlblxuICAgICAgLy8gdHJ5IHNlbGVjdGluZyB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgY29uc3QgbmV3QWN0aXZlVGFiID0gdGhpcy50YWJzW3RhYkluZGV4XSB8fCB0aGlzLnRhYnNbdGFiSW5kZXggLSAxXTtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdBY3RpdmVUYWIpIHtcbiAgICAgICAgbmV3QWN0aXZlVGFiLmFjdGl2YXRlVGFiKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEdyb3VwKGdyb3VwOiBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy4jZ3JvdXBzLnB1c2goZ3JvdXApO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lHcm91cChncm91cDogU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwSW5kZXggPSB0aGlzLiNncm91cHMuaW5kZXhPZihncm91cCk7XG5cbiAgICBpZiAoZ3JvdXBJbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLiNncm91cHMuc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZVRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgLy8gZGVhY3RpdmF0ZSBhY3RpdmUgdGFiXG4gICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQoKHQpID0+IHQuaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgIGlmIChhY3RpdmVUYWIgJiYgYWN0aXZlVGFiLmluZGV4ICE9PSB0YWIuaW5kZXgpIHtcbiAgICAgIGFjdGl2ZVRhYi5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIGFjdGl2ZVRhYi50YWJEZWFjdGl2YXRlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0YWIuaW5kZXg7XG4gICAgdGhpcy50YWJDbGlja2VkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy4jdXBkYXRlVGFiQ2xpY2tlZCgpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZVRhYigpOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5maW5kKCh0KSA9PiB0LmluZGV4ID09PSB0aGlzLmFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jaXNNb2JpbGU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFpbnRhaW5UYWJDb250ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuI2NvbnRlbnRBZGRlZCAmJiB0aGlzLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgLy8gY29udGVudCBuZWVkcyB0byBiZSBtb3ZlZFxuICAgICAgICB0aGlzLiNtb3ZlQ29udGVudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLiNjb250ZW50QWRkZWQgJiYgIXRoaXMuY29udGVudFZpc2libGUoKSkge1xuICAgICAgICAvLyBjb250ZW50IGhpZGRlblxuICAgICAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICBpZiAoIXRhYi5jb250ZW50UmVuZGVyZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoXG4gICAgICAgICAgICB0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRhYi5jb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFic1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTW9iaWxlKCkgfHwgdGhpcy4jdGFic1Zpc2libGU7XG4gIH1cblxuICBwdWJsaWMgY29udGVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTW9iaWxlKCkgfHwgIXRoaXMuI3RhYnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIHNob3dUYWJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgIHRoaXMuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZSA9IEhJRERFTl9TVEFURTtcbiAgICB0aGlzLnNob3dpbmdUYWJzLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXNBY3RpdmVUYWIodGFiR3JvdXBzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgbGV0IGZvY3VzZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMudGFicy5maW5kKCh0YWIpID0+IHRhYi5hY3RpdmUpO1xuXG4gICAgaWYgKGFjdGl2ZVRhYikge1xuICAgICAgY29uc3QgcGFyZW50R3JvdXAgPSB0aGlzLiNmaW5kUGFyZW50R3JvdXAoYWN0aXZlVGFiKTtcblxuICAgICAgY29uc3QgYnV0dG9uVG9Gb2N1cyA9XG4gICAgICAgIHBhcmVudEdyb3VwICYmICFwYXJlbnRHcm91cC5vcGVuXG4gICAgICAgICAgPyBwYXJlbnRHcm91cC5ncm91cEhlYWRpbmdCdXR0b25cbiAgICAgICAgICA6IGFjdGl2ZVRhYi50YWJCdXR0b247XG5cbiAgICAgIGZvY3VzZWQgPSB0aGlzLiNhZGFwdGVyU3ZjLmZvY3VzQnV0dG9uKGJ1dHRvblRvRm9jdXMpO1xuICAgIH1cblxuICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclN2Yy5mb2N1c0ZpcnN0QnV0dG9uKHRhYkdyb3Vwcyk7XG4gICAgfVxuICB9XG5cbiAgI2ZpbmRQYXJlbnRHcm91cChcbiAgICB0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50LFxuICApOiBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jZ3JvdXBzLmZpbmQoKGdyb3VwKSA9PlxuICAgICAgZ3JvdXAudGFicz8uc29tZSgoZ3JvdXBUYWIpID0+IHRhYiA9PT0gZ3JvdXBUYWIpLFxuICAgICk7XG4gIH1cblxuICAjZGVzdHJveUNvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY29udGVudCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gICNtb3ZlQ29udGVudCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuI2NvbnRlbnRBZGRlZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5hY3RpdmVUYWIoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUNvbnRlbnQgPSBhY3RpdmVUYWIgPyBhY3RpdmVUYWIudGFiQ29udGVudCA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGFjdGl2ZUNvbnRlbnQgJiYgYWN0aXZlVGFiICYmIGFjdGl2ZUNvbnRlbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChhY3RpdmVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBhY3RpdmVUYWIuY29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy4jY29udGVudEFkZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdXBkYXRlVGFiQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjb250ZW50QWRkZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcbiAgICAgIHRoaXMuI3RhYnNWaXNpYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgICAgdGhpcy5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlID0gSElEREVOX1NUQVRFO1xuICAgICAgdGhpcy5oaWRpbmdUYWJzLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmRleENoYW5nZWQubmV4dCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgfVxufVxuIl19
|